From 4d2a81f34b3ae0c0d1410c69f24dddf4e708a5a7 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 7 Nov 2018 16:14:33 +0300 Subject: [PATCH 1/2] viz: move to opencv_contrib https://github.com/opencv/opencv/commit/787f5236a95f9669ea9ebde11888b3ac2216b535 --- modules/viz/CMakeLists.txt | 38 + modules/viz/doc/images/cpw1.png | Bin 0 -> 4321 bytes modules/viz/doc/images/cpw2.png | Bin 0 -> 3548 bytes modules/viz/doc/images/cpw3.png | Bin 0 -> 17724 bytes modules/viz/doc/images/cube_widget.png | Bin 0 -> 6507 bytes modules/viz/include/opencv2/viz.hpp | 84 ++ modules/viz/include/opencv2/viz/types.hpp | 387 ++++++ modules/viz/include/opencv2/viz/viz3d.hpp | 353 ++++++ modules/viz/include/opencv2/viz/vizcore.hpp | 226 ++++ .../include/opencv2/viz/widget_accessor.hpp | 89 ++ modules/viz/include/opencv2/viz/widgets.hpp | 850 +++++++++++++ modules/viz/src/clouds.cpp | 530 ++++++++ modules/viz/src/precomp.hpp | 343 +++++ modules/viz/src/shapes.cpp | 1107 +++++++++++++++++ modules/viz/src/types.cpp | 228 ++++ modules/viz/src/viz3d.cpp | 156 +++ modules/viz/src/vizcore.cpp | 352 ++++++ modules/viz/src/vizimpl.cpp | 622 +++++++++ modules/viz/src/vizimpl.hpp | 146 +++ modules/viz/src/vtk/vtkCloudMatSink.cpp | 174 +++ modules/viz/src/vtk/vtkCloudMatSink.h | 88 ++ modules/viz/src/vtk/vtkCloudMatSource.cpp | 286 +++++ modules/viz/src/vtk/vtkCloudMatSource.h | 96 ++ modules/viz/src/vtk/vtkCocoaInteractorFix.mm | 226 ++++ modules/viz/src/vtk/vtkImageMatSource.cpp | 143 +++ modules/viz/src/vtk/vtkImageMatSource.h | 82 ++ modules/viz/src/vtk/vtkOBJWriter.cpp | 270 ++++ modules/viz/src/vtk/vtkOBJWriter.h | 91 ++ modules/viz/src/vtk/vtkTrajectorySource.cpp | 110 ++ modules/viz/src/vtk/vtkTrajectorySource.h | 84 ++ modules/viz/src/vtk/vtkVizInteractorStyle.cpp | 1076 ++++++++++++++++ modules/viz/src/vtk/vtkVizInteractorStyle.hpp | 169 +++ modules/viz/src/vtk/vtkXYZReader.cpp | 107 ++ modules/viz/src/vtk/vtkXYZReader.h | 80 ++ modules/viz/src/vtk/vtkXYZWriter.cpp | 122 ++ modules/viz/src/vtk/vtkXYZWriter.h | 90 ++ modules/viz/src/widget.cpp | 352 ++++++ modules/viz/test/test_common.cpp | 27 + modules/viz/test/test_common.hpp | 87 ++ modules/viz/test/test_main.cpp | 6 + modules/viz/test/test_precomp.hpp | 10 + modules/viz/test/test_tutorial2.cpp | 58 + modules/viz/test/test_tutorial3.cpp | 64 + modules/viz/test/test_viz3d.cpp | 65 + modules/viz/test/tests_simple.cpp | 454 +++++++ 45 files changed, 9928 insertions(+) create mode 100644 modules/viz/CMakeLists.txt create mode 100644 modules/viz/doc/images/cpw1.png create mode 100644 modules/viz/doc/images/cpw2.png create mode 100644 modules/viz/doc/images/cpw3.png create mode 100644 modules/viz/doc/images/cube_widget.png create mode 100644 modules/viz/include/opencv2/viz.hpp create mode 100644 modules/viz/include/opencv2/viz/types.hpp create mode 100644 modules/viz/include/opencv2/viz/viz3d.hpp create mode 100644 modules/viz/include/opencv2/viz/vizcore.hpp create mode 100644 modules/viz/include/opencv2/viz/widget_accessor.hpp create mode 100644 modules/viz/include/opencv2/viz/widgets.hpp create mode 100644 modules/viz/src/clouds.cpp create mode 100644 modules/viz/src/precomp.hpp create mode 100644 modules/viz/src/shapes.cpp create mode 100644 modules/viz/src/types.cpp create mode 100644 modules/viz/src/viz3d.cpp create mode 100644 modules/viz/src/vizcore.cpp create mode 100644 modules/viz/src/vizimpl.cpp create mode 100644 modules/viz/src/vizimpl.hpp create mode 100644 modules/viz/src/vtk/vtkCloudMatSink.cpp create mode 100644 modules/viz/src/vtk/vtkCloudMatSink.h create mode 100644 modules/viz/src/vtk/vtkCloudMatSource.cpp create mode 100644 modules/viz/src/vtk/vtkCloudMatSource.h create mode 100644 modules/viz/src/vtk/vtkCocoaInteractorFix.mm create mode 100644 modules/viz/src/vtk/vtkImageMatSource.cpp create mode 100644 modules/viz/src/vtk/vtkImageMatSource.h create mode 100644 modules/viz/src/vtk/vtkOBJWriter.cpp create mode 100644 modules/viz/src/vtk/vtkOBJWriter.h create mode 100644 modules/viz/src/vtk/vtkTrajectorySource.cpp create mode 100644 modules/viz/src/vtk/vtkTrajectorySource.h create mode 100644 modules/viz/src/vtk/vtkVizInteractorStyle.cpp create mode 100644 modules/viz/src/vtk/vtkVizInteractorStyle.hpp create mode 100644 modules/viz/src/vtk/vtkXYZReader.cpp create mode 100644 modules/viz/src/vtk/vtkXYZReader.h create mode 100644 modules/viz/src/vtk/vtkXYZWriter.cpp create mode 100644 modules/viz/src/vtk/vtkXYZWriter.h create mode 100644 modules/viz/src/widget.cpp create mode 100644 modules/viz/test/test_common.cpp create mode 100644 modules/viz/test/test_common.hpp create mode 100644 modules/viz/test/test_main.cpp create mode 100644 modules/viz/test/test_precomp.hpp create mode 100644 modules/viz/test/test_tutorial2.cpp create mode 100644 modules/viz/test/test_tutorial3.cpp create mode 100644 modules/viz/test/test_viz3d.cpp create mode 100644 modules/viz/test/tests_simple.cpp diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt new file mode 100644 index 000000000..1f1e1af3b --- /dev/null +++ b/modules/viz/CMakeLists.txt @@ -0,0 +1,38 @@ +if(NOT HAVE_VTK) + ocv_module_disable(viz) +endif() + +set(the_description "Viz") +include(${VTK_USE_FILE}) + +if(NOT BUILD_SHARED_LIBS) + # We observed conflict between builtin 3rdparty libraries and + # system-wide similar libraries (but with different versions) from VTK dependencies + set(_conflicts "") + foreach(dep ${VTK_LIBRARIES}) + if(("${dep}" MATCHES "libz\\." AND BUILD_ZLIB) + OR ("${dep}" MATCHES "libjpeg\\." AND BUILD_JPEG) + OR ("${dep}" MATCHES "libpng\\." AND BUILD_PNG) + OR ("${dep}" MATCHES "libtiff\\." AND BUILD_TIFF) + ) + list(APPEND _conflicts "${dep}") + endif() + endforeach() + if(_conflicts) + message(STATUS "Disabling VIZ module due to conflicts with VTK dependencies: ${_conflicts}") + ocv_module_disable(viz) + endif() +endif() + +ocv_warnings_disable(CMAKE_CXX_FLAGS -Winconsistent-missing-override -Wsuggest-override) + +ocv_define_module(viz opencv_core WRAP python) +ocv_target_link_libraries(${the_module} LINK_PRIVATE ${VTK_LIBRARIES}) + +if(APPLE AND BUILD_opencv_viz) + ocv_target_link_libraries(${the_module} LINK_PRIVATE "-framework Cocoa") +endif() + +if(TARGET opencv_test_viz) + set_target_properties(opencv_test_viz PROPERTIES MACOSX_BUNDLE TRUE) +endif() diff --git a/modules/viz/doc/images/cpw1.png b/modules/viz/doc/images/cpw1.png new file mode 100644 index 0000000000000000000000000000000000000000..985b1eeaffbed1e207128eaa8167cde04d3dcf04 GIT binary patch literal 4321 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 literal 0 HcmV?d00001 diff --git a/modules/viz/doc/images/cpw2.png b/modules/viz/doc/images/cpw2.png new file mode 100644 index 0000000000000000000000000000000000000000..5733a6af6579373d6b9512b70cd5ada26b62db3d GIT binary patch literal 3548 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 literal 0 HcmV?d00001 diff --git a/modules/viz/doc/images/cpw3.png b/modules/viz/doc/images/cpw3.png new file mode 100644 index 0000000000000000000000000000000000000000..585b836b66ddfdbfa34219972f9c766eccb5f9d4 GIT binary patch literal 17724 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

gB=@dpOOp^?a9R9TDL$j)- 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 AnE(I) literal 0 HcmV?d00001 diff --git a/modules/viz/doc/images/cube_widget.png b/modules/viz/doc/images/cube_widget.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe56811aedb6fc57e77097e6b2840cdd6bb64e4 GIT binary patch literal 6507 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 V6?X0&0K6`tFw`^Ct<-jn{U22ce2xGB literal 0 HcmV?d00001 diff --git a/modules/viz/include/opencv2/viz.hpp b/modules/viz/include/opencv2/viz.hpp new file mode 100644 index 000000000..fc79b8b60 --- /dev/null +++ b/modules/viz/include/opencv2/viz.hpp @@ -0,0 +1,84 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_HPP +#define OPENCV_VIZ_HPP + +#include +#include +#include +#include + +/** + @defgroup viz 3D Visualizer + +This section describes 3D visualization window as well as classes and methods that are used to +interact with it. + +3D visualization window (see Viz3d) is used to display widgets (see Widget), and it provides several +methods to interact with scene and widgets. + + @{ + @defgroup viz_widget Widget + +In this section, the widget framework is explained. Widgets represent 2D or 3D objects, varying from +simple ones such as lines to complex ones such as point clouds and meshes. + +Widgets are **implicitly shared**. Therefore, one can add a widget to the scene, and modify the +widget without re-adding the widget. + +@code +// Create a cloud widget +viz::WCloud cw(cloud, viz::Color::red()); +// Display it in a window +myWindow.showWidget("CloudWidget1", cw); +// Modify it, and it will be modified in the window. +cw.setColor(viz::Color::yellow()); +@endcode + + @} +*/ + +#endif /* OPENCV_VIZ_HPP */ diff --git a/modules/viz/include/opencv2/viz/types.hpp b/modules/viz/include/opencv2/viz/types.hpp new file mode 100644 index 000000000..62068ac89 --- /dev/null +++ b/modules/viz/include/opencv2/viz/types.hpp @@ -0,0 +1,387 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_TYPES_HPP +#define OPENCV_VIZ_TYPES_HPP + +#include +#include +#include + +namespace cv +{ + namespace viz + { + +//! @addtogroup viz +//! @{ + + /** @brief This class represents color in BGR order. + */ + class Color : public Scalar + { + public: + Color(); + //! The three channels will have the same value equal to gray. + Color(double gray); + Color(double blue, double green, double red); + + Color(const Scalar& color); + + operator Vec3b() const; + + static Color black(); + static Color blue(); + static Color green(); + static Color cyan(); + + static Color red(); + static Color magenta(); + static Color yellow(); + static Color white(); + + static Color gray(); + + static Color mlab(); + + static Color navy(); + static Color olive(); + static Color maroon(); + static Color teal(); + static Color rose(); + static Color azure(); + static Color lime(); + static Color gold(); + static Color brown(); + static Color orange(); + static Color chartreuse(); + static Color orange_red(); + static Color purple(); + static Color indigo(); + + static Color pink(); + static Color cherry(); + static Color bluberry(); + static Color raspberry(); + static Color silver(); + static Color violet(); + static Color apricot(); + static Color turquoise(); + static Color celestial_blue(); + static Color amethyst(); + + static Color not_set(); + }; + + /** @brief This class wraps mesh attributes, and it can load a mesh from a ply file. : + */ + class CV_EXPORTS Mesh + { + public: + enum { + LOAD_AUTO = 0, + LOAD_PLY = 1, + LOAD_OBJ = 2 + }; + + Mat cloud; //!< point coordinates of type CV_32FC3 or CV_64FC3 with only 1 row + Mat colors; //!< point color of type CV_8UC3 or CV_8UC4 with only 1 row + Mat normals; //!< point normals of type CV_32FC3, CV_32FC4, CV_64FC3 or CV_64FC4 with only 1 row + + //! Raw integer list of the form: (n,id1,id2,...,idn, n,id1,id2,...,idn, ...) + //! where n is the number of points in the polygon, and id is a zero-offset index into an associated cloud. + Mat polygons; //!< CV_32SC1 with only 1 row + + Mat texture; + Mat tcoords; //!< CV_32FC2 or CV_64FC2 with only 1 row + + /** @brief Loads a mesh from a ply or a obj file. + + @param file File name + @param type File type (for now only PLY and OBJ are supported) + + **File type** can be one of the following: + - **LOAD_PLY** + - **LOAD_OBJ** + */ + static Mesh load(const String& file, int type = LOAD_PLY); + + }; + + /** @brief This class wraps intrinsic parameters of a camera. + + It provides several constructors that can extract the intrinsic parameters from field of + view, intrinsic matrix and projection matrix. : + */ + class CV_EXPORTS Camera + { + public: + + /** @brief Constructs a Camera. + + @param fx Horizontal focal length. + @param fy Vertical focal length. + @param cx x coordinate of the principal point. + @param cy y coordinate of the principal point. + @param window_size Size of the window. This together with focal length and principal + point determines the field of view. + */ + Camera(double fx, double fy, double cx, double cy, const Size &window_size); + + /** @overload + @param fov Field of view (horizontal, vertical) + @param window_size Size of the window. Principal point is at the center of the window + by default. + */ + Camera(const Vec2d &fov, const Size &window_size); + + /** @overload + @param K Intrinsic matrix of the camera with the following form + \f[ + \begin{bmatrix} + f_x & 0 & c_x\\ + 0 & f_y & c_y\\ + 0 & 0 & 1\\ + \end{bmatrix} + \f] + @param window_size Size of the window. This together with intrinsic matrix determines + the field of view. + */ + Camera(const Matx33d &K, const Size &window_size); + + /** @overload + @param proj Projection matrix of the camera with the following form + \f[ + \begin{bmatrix} + \frac{2n}{r-l} & 0 & \frac{r+l}{r-l} & 0\\ + 0 & \frac{2n}{t-b} & \frac{t+b}{t-b} & 0\\ + 0 & 0 & -\frac{f+n}{f-n} & -\frac{2fn}{f-n}\\ + 0 & 0 & -1 & 0\\ + \end{bmatrix} + \f] + + @param window_size Size of the window. This together with projection matrix determines + the field of view. + */ + explicit Camera(const Matx44d &proj, const Size &window_size); + + const Vec2d & getClip() const { return clip_; } + void setClip(const Vec2d &clip) { clip_ = clip; } + + const Size & getWindowSize() const { return window_size_; } + void setWindowSize(const Size &window_size); + + const Vec2d& getFov() const { return fov_; } + void setFov(const Vec2d& fov) { fov_ = fov; } + + const Vec2d& getPrincipalPoint() const { return principal_point_; } + const Vec2d& getFocalLength() const { return focal_; } + + /** @brief Computes projection matrix using intrinsic parameters of the camera. + + + @param proj Output projection matrix with the following form + \f[ + \begin{bmatrix} + \frac{2n}{r-l} & 0 & \frac{r+l}{r-l} & 0\\ + 0 & \frac{2n}{t-b} & \frac{t+b}{t-b} & 0\\ + 0 & 0 & -\frac{f+n}{f-n} & -\frac{2fn}{f-n}\\ + 0 & 0 & -1 & 0\\ + \end{bmatrix} + \f] + */ + void computeProjectionMatrix(Matx44d &proj) const; + + /** @brief Creates a Kinect Camera with + - fx = fy = 525 + - cx = 320 + - cy = 240 + + @param window_size Size of the window. This together with intrinsic matrix of a Kinect Camera + determines the field of view. + */ + static Camera KinectCamera(const Size &window_size); + + private: + void init(double fx, double fy, double cx, double cy, const Size &window_size); + + /** The near plane and the far plane. + * - clip_[0]: the near plane; default value is 0.01 + * - clip_[1]: the far plane; default value is 1000.01 + */ + Vec2d clip_; + + /** + * Field of view. + * - fov_[0]: horizontal(x-axis) field of view in radians + * - fov_[1]: vertical(y-axis) field of view in radians + */ + Vec2d fov_; + + /** Window size.*/ + Size window_size_; + + /** + * Principal point. + * - principal_point_[0]: cx + * - principal_point_[1]: cy + */ + Vec2d principal_point_; + /** + * Focal length. + * - focal_[0]: fx + * - focal_[1]: fy + */ + Vec2d focal_; + }; + + /** @brief This class represents a keyboard event. + */ + class CV_EXPORTS KeyboardEvent + { + public: + enum { NONE = 0, ALT = 1, CTRL = 2, SHIFT = 4 }; + enum Action { KEY_UP = 0, KEY_DOWN = 1 }; + + /** @brief Constructs a KeyboardEvent. + + @param action Signals if key is pressed or released. + @param symbol Name of the key. + @param code Code of the key. + @param modifiers Signals if alt, ctrl or shift are pressed or their combination. + */ + KeyboardEvent(Action action, const String& symbol, unsigned char code, int modifiers); + + Action action; + String symbol; + unsigned char code; + int modifiers; + }; + + /** @brief This class represents a mouse event. + */ + class CV_EXPORTS MouseEvent + { + public: + enum Type { MouseMove = 1, MouseButtonPress, MouseButtonRelease, MouseScrollDown, MouseScrollUp, MouseDblClick } ; + enum MouseButton { NoButton = 0, LeftButton, MiddleButton, RightButton, VScroll } ; + + /** @brief Constructs a MouseEvent. + + @param type Type of the event. This can be **MouseMove**, **MouseButtonPress**, + **MouseButtonRelease**, **MouseScrollDown**, **MouseScrollUp**, **MouseDblClick**. + @param button Mouse button. This can be **NoButton**, **LeftButton**, **MiddleButton**, + **RightButton**, **VScroll**. + @param pointer Position of the event. + @param modifiers Signals if alt, ctrl or shift are pressed or their combination. + */ + MouseEvent(const Type& type, const MouseButton& button, const Point& pointer, int modifiers); + + Type type; + MouseButton button; + Point pointer; + int modifiers; + }; + +//! @} viz + + } /* namespace viz */ +} /* namespace cv */ + +//! @cond IGNORED + +////////////////////////////////////////////////////////////////////////////////////////////////////// +/// cv::viz::Color + +inline cv::viz::Color::Color() : Scalar(0, 0, 0) {} +inline cv::viz::Color::Color(double _gray) : Scalar(_gray, _gray, _gray) {} +inline cv::viz::Color::Color(double _blue, double _green, double _red) : Scalar(_blue, _green, _red) {} +inline cv::viz::Color::Color(const Scalar& color) : Scalar(color) {} + +inline cv::viz::Color::operator cv::Vec3b() const { return cv::Vec3d(val); } + +inline cv::viz::Color cv::viz::Color::black() { return Color( 0, 0, 0); } +inline cv::viz::Color cv::viz::Color::green() { return Color( 0, 255, 0); } +inline cv::viz::Color cv::viz::Color::blue() { return Color(255, 0, 0); } +inline cv::viz::Color cv::viz::Color::cyan() { return Color(255, 255, 0); } +inline cv::viz::Color cv::viz::Color::red() { return Color( 0, 0, 255); } +inline cv::viz::Color cv::viz::Color::yellow() { return Color( 0, 255, 255); } +inline cv::viz::Color cv::viz::Color::magenta() { return Color(255, 0, 255); } +inline cv::viz::Color cv::viz::Color::white() { return Color(255, 255, 255); } +inline cv::viz::Color cv::viz::Color::gray() { return Color(128, 128, 128); } + +inline cv::viz::Color cv::viz::Color::mlab() { return Color(255, 128, 128); } + +inline cv::viz::Color cv::viz::Color::navy() { return Color(0, 0, 128); } +inline cv::viz::Color cv::viz::Color::olive() { return Color(0, 128, 128); } +inline cv::viz::Color cv::viz::Color::maroon() { return Color(0, 0, 128); } +inline cv::viz::Color cv::viz::Color::teal() { return Color(128, 128, 0); } +inline cv::viz::Color cv::viz::Color::rose() { return Color(128, 0, 255); } +inline cv::viz::Color cv::viz::Color::azure() { return Color(255, 128, 0); } +inline cv::viz::Color cv::viz::Color::lime() { return Color(0, 255, 191); } +inline cv::viz::Color cv::viz::Color::gold() { return Color(0, 215, 255); } +inline cv::viz::Color cv::viz::Color::brown() { return Color(42, 42, 165); } +inline cv::viz::Color cv::viz::Color::orange() { return Color(0, 165, 255); } +inline cv::viz::Color cv::viz::Color::chartreuse() { return Color(0, 255, 128); } +inline cv::viz::Color cv::viz::Color::orange_red() { return Color(0, 69, 255); } +inline cv::viz::Color cv::viz::Color::purple() { return Color(128, 0, 128); } +inline cv::viz::Color cv::viz::Color::indigo() { return Color(130, 0, 75); } + +inline cv::viz::Color cv::viz::Color::pink() { return Color(203, 192, 255); } +inline cv::viz::Color cv::viz::Color::cherry() { return Color( 99, 29, 222); } +inline cv::viz::Color cv::viz::Color::bluberry() { return Color(247, 134, 79); } +inline cv::viz::Color cv::viz::Color::raspberry() { return Color( 92, 11, 227); } +inline cv::viz::Color cv::viz::Color::silver() { return Color(192, 192, 192); } +inline cv::viz::Color cv::viz::Color::violet() { return Color(226, 43, 138); } +inline cv::viz::Color cv::viz::Color::apricot() { return Color(177, 206, 251); } +inline cv::viz::Color cv::viz::Color::turquoise() { return Color(208, 224, 64); } +inline cv::viz::Color cv::viz::Color::celestial_blue() { return Color(208, 151, 73); } +inline cv::viz::Color cv::viz::Color::amethyst() { return Color(204, 102, 153); } + +inline cv::viz::Color cv::viz::Color::not_set() { return Color(-1, -1, -1); } + +//! @endcond + +#endif diff --git a/modules/viz/include/opencv2/viz/viz3d.hpp b/modules/viz/include/opencv2/viz/viz3d.hpp new file mode 100644 index 000000000..1e6e9d5e5 --- /dev/null +++ b/modules/viz/include/opencv2/viz/viz3d.hpp @@ -0,0 +1,353 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_VIZ3D_HPP +#define OPENCV_VIZ_VIZ3D_HPP + +#if !defined YES_I_AGREE_THAT_VIZ_API_IS_NOT_STABLE_NOW_AND_BINARY_COMPARTIBILITY_WONT_BE_SUPPORTED && !defined CVAPI_EXPORTS + //#error "Viz is in beta state now. Please define macro above to use it" +#endif + +#include +#include +#include + +namespace cv +{ + namespace viz + { + +//! @addtogroup viz +//! @{ + + /** @brief The Viz3d class represents a 3D visualizer window. This class is implicitly shared. + */ + class CV_EXPORTS Viz3d + { + public: + typedef cv::viz::Color Color; + typedef void (*KeyboardCallback)(const KeyboardEvent&, void*); + typedef void (*MouseCallback)(const MouseEvent&, void*); + + /** @brief The constructors. + + @param window_name Name of the window. + */ + Viz3d(const String& window_name = String()); + Viz3d(const Viz3d&); + Viz3d& operator=(const Viz3d&); + ~Viz3d(); + + /** @brief Shows a widget in the window. + + @param id A unique id for the widget. @param widget The widget to be displayed in the window. + @param pose Pose of the widget. + */ + void showWidget(const String &id, const Widget &widget, const Affine3d &pose = Affine3d::Identity()); + + /** @brief Removes a widget from the window. + + @param id The id of the widget that will be removed. + */ + void removeWidget(const String &id); + + /** @brief Retrieves a widget from the window. + + A widget is implicitly shared; that is, if the returned widget is modified, the changes + will be immediately visible in the window. + + @param id The id of the widget that will be returned. + */ + Widget getWidget(const String &id) const; + + /** @brief Removes all widgets from the window. + */ + void removeAllWidgets(); + + /** @brief Removed all widgets and displays image scaled to whole window area. + + @param image Image to be displayed. + @param window_size Size of Viz3d window. Default value means no change. + */ + void showImage(InputArray image, const Size& window_size = Size(-1, -1)); + + /** @brief Sets pose of a widget in the window. + + @param id The id of the widget whose pose will be set. @param pose The new pose of the widget. + */ + void setWidgetPose(const String &id, const Affine3d &pose); + + /** @brief Updates pose of a widget in the window by pre-multiplying its current pose. + + @param id The id of the widget whose pose will be updated. @param pose The pose that the current + pose of the widget will be pre-multiplied by. + */ + void updateWidgetPose(const String &id, const Affine3d &pose); + + /** @brief Returns the current pose of a widget in the window. + + @param id The id of the widget whose pose will be returned. + */ + Affine3d getWidgetPose(const String &id) const; + + /** @brief Sets the intrinsic parameters of the viewer using Camera. + + @param camera Camera object wrapping intrinsic parameters. + */ + void setCamera(const Camera &camera); + + /** @brief Returns a camera object that contains intrinsic parameters of the current viewer. + */ + Camera getCamera() const; + + /** @brief Returns the current pose of the viewer. + */ + Affine3d getViewerPose() const; + + /** @brief Sets pose of the viewer. + + @param pose The new pose of the viewer. + */ + void setViewerPose(const Affine3d &pose); + + /** @brief Resets camera viewpoint to a 3D widget in the scene. + + @param id Id of a 3D widget. + */ + void resetCameraViewpoint(const String &id); + + /** @brief Resets camera. + */ + void resetCamera(); + + /** @brief Transforms a point in world coordinate system to window coordinate system. + + @param pt Point in world coordinate system. + @param window_coord Output point in window coordinate system. + */ + void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord); + + /** @brief Transforms a point in window coordinate system to a 3D ray in world coordinate system. + + @param window_coord Point in window coordinate system. @param origin Output origin of the ray. + @param direction Output direction of the ray. + */ + void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction); + + /** @brief Returns the current size of the window. + */ + Size getWindowSize() const; + /** @brief Sets the size of the window. + + @param window_size New size of the window. + */ + void setWindowSize(const Size &window_size); + + /** @brief Returns the name of the window which has been set in the constructor. + * `Viz - ` is prepended to the name if necessary. + */ + String getWindowName() const; + + /** @brief Returns the Mat screenshot of the current scene. + */ + cv::Mat getScreenshot() const; + + /** @brief Saves screenshot of the current scene. + + @param file Name of the file. + */ + void saveScreenshot(const String &file); + + /** @brief Sets the position of the window in the screen. + + @param window_position coordinates of the window + */ + void setWindowPosition(const Point& window_position); + + /** @brief Sets or unsets full-screen rendering mode. + + @param mode If true, window will use full-screen mode. + */ + void setFullScreen(bool mode = true); + + /** @brief Sets background color. + */ + void setBackgroundColor(const Color& color = Color::black(), const Color& color2 = Color::not_set()); + void setBackgroundTexture(InputArray image = noArray()); + void setBackgroundMeshLab(); + + /** @brief The window renders and starts the event loop. + */ + void spin(); + + /** @brief Starts the event loop for a given time. + + @param time Amount of time in milliseconds for the event loop to keep running. + @param force_redraw If true, window renders. + */ + void spinOnce(int time = 1, bool force_redraw = false); + + /** @brief Create a window in memory instead of on the screen. + */ + void setOffScreenRendering(); + + /** @brief Remove all lights from the current scene. + */ + void removeAllLights(); + + /** @brief Add a light in the scene. + + @param position The position of the light. + @param focalPoint The point at which the light is shining + @param color The color of the light + @param diffuseColor The diffuse color of the light + @param ambientColor The ambient color of the light + @param specularColor The specular color of the light + */ + void addLight(const Vec3d &position, const Vec3d &focalPoint = Vec3d(0, 0, 0), const Color &color = Color::white(), + const Color &diffuseColor = Color::white(), const Color &ambientColor = Color::black(), + const Color &specularColor = Color::white()); + + /** @brief Returns whether the event loop has been stopped. + */ + bool wasStopped() const; + void close(); + + /** @brief Sets keyboard handler. + + @param callback Keyboard callback (void (\*KeyboardCallbackFunction(const + KeyboardEvent&, void\*)). + @param cookie The optional parameter passed to the callback. + */ + void registerKeyboardCallback(KeyboardCallback callback, void* cookie = 0); + + /** @brief Sets mouse handler. + + @param callback Mouse callback (void (\*MouseCallback)(const MouseEvent&, void\*)). + @param cookie The optional parameter passed to the callback. + */ + void registerMouseCallback(MouseCallback callback, void* cookie = 0); + + /** @brief Sets rendering property of a widget. + + @param id Id of the widget. + @param property Property that will be modified. + @param value The new value of the property. + + Rendering property can be one of the following: + - **POINT_SIZE** + - **OPACITY** + - **LINE_WIDTH** + - **FONT_SIZE** + + REPRESENTATION: Expected values are + - **REPRESENTATION_POINTS** + - **REPRESENTATION_WIREFRAME** + - **REPRESENTATION_SURFACE** + + IMMEDIATE_RENDERING: + - Turn on immediate rendering by setting the value to 1. + - Turn off immediate rendering by setting the value to 0. + + SHADING: Expected values are + - **SHADING_FLAT** + - **SHADING_GOURAUD** + - **SHADING_PHONG** + */ + void setRenderingProperty(const String &id, int property, double value); + /** @brief Returns rendering property of a widget. + + @param id Id of the widget. + @param property Property. + + Rendering property can be one of the following: + - **POINT_SIZE** + - **OPACITY** + - **LINE_WIDTH** + - **FONT_SIZE** + + REPRESENTATION: Expected values are + - **REPRESENTATION_POINTS** + - **REPRESENTATION_WIREFRAME** + - **REPRESENTATION_SURFACE** + + IMMEDIATE_RENDERING: + - Turn on immediate rendering by setting the value to 1. + - Turn off immediate rendering by setting the value to 0. + + SHADING: Expected values are + - **SHADING_FLAT** + - **SHADING_GOURAUD** + - **SHADING_PHONG** + */ + double getRenderingProperty(const String &id, int property); + + /** @brief Sets geometry representation of the widgets to surface, wireframe or points. + + @param representation Geometry representation which can be one of the following: + - **REPRESENTATION_POINTS** + - **REPRESENTATION_WIREFRAME** + - **REPRESENTATION_SURFACE** + */ + void setRepresentation(int representation); + + void setGlobalWarnings(bool enabled = false); + private: + + struct VizImpl; + VizImpl* impl_; + + void create(const String &window_name); + void release(); + + friend class VizStorage; + }; + +//! @} + + } /* namespace viz */ +} /* namespace cv */ + +#endif diff --git a/modules/viz/include/opencv2/viz/vizcore.hpp b/modules/viz/include/opencv2/viz/vizcore.hpp new file mode 100644 index 000000000..85b75131d --- /dev/null +++ b/modules/viz/include/opencv2/viz/vizcore.hpp @@ -0,0 +1,226 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZCORE_HPP +#define OPENCV_VIZCORE_HPP + +#include +#include +#include + +namespace cv +{ + namespace viz + { + +//! @addtogroup viz +//! @{ + + /** @brief Takes coordinate frame data and builds transform to global coordinate frame. + + @param axis_x X axis vector in global coordinate frame. + @param axis_y Y axis vector in global coordinate frame. + @param axis_z Z axis vector in global coordinate frame. + @param origin Origin of the coordinate frame in global coordinate frame. + + @return An affine transform that describes transformation between global coordinate frame + and a given coordinate frame. + The returned transforms can transform a point in the given coordinate frame to the global + coordinate frame. + */ + CV_EXPORTS Affine3d makeTransformToGlobal(const Vec3d& axis_x, const Vec3d& axis_y, const Vec3d& axis_z, const Vec3d& origin = Vec3d::all(0)); + + /** @brief Constructs camera pose from position, focal_point and up_vector (see gluLookAt() for more + information). + + @param position Position of the camera in global coordinate frame. + @param focal_point Focal point of the camera in global coordinate frame. + @param y_dir Up vector of the camera in global coordinate frame. + + This function returns pose of the camera in global coordinate frame. + */ + CV_EXPORTS Affine3d makeCameraPose(const Vec3d& position, const Vec3d& focal_point, const Vec3d& y_dir); + + /** @brief Retrieves a window by its name. + + @param window_name Name of the window that is to be retrieved. + + This function returns a Viz3d object with the given name. + + @note If the window with that name already exists, that window is returned. Otherwise, new window is + created with the given name, and it is returned. + + @note Window names are automatically prefixed by "Viz - " if it is not done by the user. + @code + /// window and window_2 are the same windows. + viz::Viz3d window = viz::getWindowByName("myWindow"); + viz::Viz3d window_2 = viz::getWindowByName("Viz - myWindow"); + @endcode + */ + CV_EXPORTS Viz3d getWindowByName(const String &window_name); + + //! Unregisters all Viz windows from internal database. After it 'getWindowByName()' will create new windows instead of getting existing from the database. + CV_EXPORTS void unregisterAllWindows(); + + //! Displays image in specified window + CV_EXPORTS Viz3d imshow(const String& window_name, InputArray image, const Size& window_size = Size(-1, -1)); + + /** @brief Checks **float/double** value for nan. + + @param x return true if nan. + */ + inline bool isNan(float x) + { + unsigned int *u = reinterpret_cast(&x); + return ((u[0] & 0x7f800000) == 0x7f800000) && (u[0] & 0x007fffff); + } + + /** @brief Checks **float/double** value for nan. + + @param x return true if nan. + */ + inline bool isNan(double x) + { + unsigned int *u = reinterpret_cast(&x); + return (u[1] & 0x7ff00000) == 0x7ff00000 && (u[0] != 0 || (u[1] & 0x000fffff) != 0); + } + + /** @brief Checks **float/double** value for nan. + + @param v return true if **any** of the elements of the vector is *nan*. + */ + template inline bool isNan(const Vec<_Tp, cn>& v) + { return isNan(v.val[0]) || isNan(v.val[1]) || isNan(v.val[2]); } + + /** @brief Checks **float/double** value for nan. + + @param p return true if **any** of the elements of the point is *nan*. + */ + template inline bool isNan(const Point3_<_Tp>& p) + { return isNan(p.x) || isNan(p.y) || isNan(p.z); } + + + /////////////////////////////////////////////////////////////////////////////////////////////// + /// Read/write clouds. Supported formats: ply, xyz, obj and stl (readonly) + + /** + * @param file Filename with extension. Supported formats: PLY, XYZ and OBJ. + * @param cloud Supported depths: CV_32F and CV_64F. Supported channels: 3 and 4. + * @param colors Used by PLY format only. Supported depth: CV_8U. Supported channels: 1, 3 and 4. + * @param normals Used by PLY and OBJ format only. Supported depths: CV_32F and CV_64F. + * Supported channels: 3 and 4. + * @param binary Used only for PLY format. + */ + CV_EXPORTS void writeCloud(const String& file, InputArray cloud, InputArray colors = noArray(), InputArray normals = noArray(), bool binary = false); + + /** + * @param file Filename with extension. Supported formats: PLY, XYZ, OBJ and STL. + * @param colors Used by PLY and STL formats only. + * @param normals Used by PLY, OBJ and STL formats only. + * @return A mat containing the point coordinates with depth CV_32F or CV_64F and number of + * channels 3 or 4 with only 1 row. + */ + CV_EXPORTS Mat readCloud (const String& file, OutputArray colors = noArray(), OutputArray normals = noArray()); + + /////////////////////////////////////////////////////////////////////////////////////////////// + /// Reads mesh. Only ply format is supported now and no texture load support + + CV_EXPORTS Mesh readMesh(const String& file); + + /////////////////////////////////////////////////////////////////////////////////////////////// + /// Read/write poses and trajectories + + /** + * @param file Filename of type supported by cv::FileStorage. + * @param pose Output matrix. + * @param tag Name of the pose in the file. + */ + CV_EXPORTS bool readPose(const String& file, Affine3d& pose, const String& tag = "pose"); + /** + * @param file Filename. + * @param pose Input matrix. + * @param tag Name of the pose to be saved into the given file. + */ + CV_EXPORTS void writePose(const String& file, const Affine3d& pose, const String& tag = "pose"); + + /** takes vector> with T = float/dobule and writes to a sequence of files with given filename format + * @param traj Trajectory containing a list of poses. It can be + * - std::vector, each cv::Mat is of type CV_32F16 or CV_64FC16 + * - std::vector, std::vector + * - cv::Mat of type CV_32FC16 OR CV_64F16 + * @param files_format Format specifier string for constructing filenames. + * The only placeholder in the string should support `int`. + * @param start The initial counter for files_format. + * @param tag Name of the matrix in the file. + */ + CV_EXPORTS void writeTrajectory(InputArray traj, const String& files_format = "pose%05d.xml", int start = 0, const String& tag = "pose"); + + /** takes vector> with T = float/dobule and loads poses from sequence of files + * + * @param traj Output array containing a lists of poses. It can be + * - std::vector, std::vector + * - cv::Mat + * @param files_format Format specifier string for constructing filenames. + * The only placeholder in the string should support `int`. + * @param start The initial counter for files_format. It must be greater than or equal to 0. + * @param end The final counter for files_format. + * @param tag Name of the matrix in the file. + */ + CV_EXPORTS void readTrajectory(OutputArray traj, const String& files_format = "pose%05d.xml", int start = 0, int end = INT_MAX, const String& tag = "pose"); + + + /////////////////////////////////////////////////////////////////////////////////////////////// + /** Computing normals for mesh + * @param mesh Input mesh. + * @param normals Normals at very point in the mesh of type CV_64FC3. + */ + CV_EXPORTS void computeNormals(const Mesh& mesh, OutputArray normals); + +//! @} + + } /* namespace viz */ +} /* namespace cv */ + +#endif /* OPENCV_VIZCORE_HPP */ diff --git a/modules/viz/include/opencv2/viz/widget_accessor.hpp b/modules/viz/include/opencv2/viz/widget_accessor.hpp new file mode 100644 index 000000000..7b4be543f --- /dev/null +++ b/modules/viz/include/opencv2/viz/widget_accessor.hpp @@ -0,0 +1,89 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_WIDGET_ACCESSOR_HPP +#define OPENCV_VIZ_WIDGET_ACCESSOR_HPP + +#include +#include +#include + +namespace cv +{ + namespace viz + { + +//! @addtogroup viz_widget +//! @{ + + class Widget; + + /** @brief This class is for users who want to develop their own widgets using VTK library API. : + */ + struct CV_EXPORTS WidgetAccessor + { + /** @brief Returns vtkProp of a given widget. + + @param widget Widget whose vtkProp is to be returned. + + @note vtkProp has to be down cast appropriately to be modified. + @code + vtkActor * actor = vtkActor::SafeDownCast(viz::WidgetAccessor::getProp(widget)); + @endcode + */ + static vtkSmartPointer getProp(const Widget &widget); + /** @brief Sets vtkProp of a given widget. + + @param widget Widget whose vtkProp is to be set. @param prop A vtkProp. + */ + static void setProp(Widget &widget, vtkSmartPointer prop); + }; + +//! @} + + } +} + +#endif diff --git a/modules/viz/include/opencv2/viz/widgets.hpp b/modules/viz/include/opencv2/viz/widgets.hpp new file mode 100644 index 000000000..469107981 --- /dev/null +++ b/modules/viz/include/opencv2/viz/widgets.hpp @@ -0,0 +1,850 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_WIDGETS_HPP +#define OPENCV_VIZ_WIDGETS_HPP + +#include + +namespace cv +{ + namespace viz + { + +//! @addtogroup viz_widget +//! @{ + + ///////////////////////////////////////////////////////////////////////////// + /// Widget rendering properties + enum RenderingProperties + { + POINT_SIZE, + OPACITY, + LINE_WIDTH, + FONT_SIZE, + REPRESENTATION, + IMMEDIATE_RENDERING, + SHADING, + AMBIENT, + LIGHTING + }; + + enum RepresentationValues + { + REPRESENTATION_POINTS, + REPRESENTATION_WIREFRAME, + REPRESENTATION_SURFACE + }; + + enum ShadingValues + { + SHADING_FLAT, + SHADING_GOURAUD, + SHADING_PHONG + }; + + ///////////////////////////////////////////////////////////////////////////// + + /** @brief Base class of all widgets. Widget is implicitly shared. + */ + class CV_EXPORTS Widget + { + public: + Widget(); + Widget(const Widget& other); + Widget& operator=(const Widget& other); + virtual ~Widget(); + + /** @brief Creates a widget from ply file. + + @param file_name Ply file name. + */ + static Widget fromPlyFile(const String &file_name); + + /** @brief Sets rendering property of the widget. + + @param property Property that will be modified. + @param value The new value of the property. + + Rendering property can be one of the following: + - **POINT_SIZE** + - **OPACITY** + - **LINE_WIDTH** + - **FONT_SIZE** + + REPRESENTATION: Expected values are + - **REPRESENTATION_POINTS** + - **REPRESENTATION_WIREFRAME** + - **REPRESENTATION_SURFACE** + + IMMEDIATE_RENDERING: + - Turn on immediate rendering by setting the value to 1. + - Turn off immediate rendering by setting the value to 0. + + SHADING: Expected values are + - **SHADING_FLAT** + - **SHADING_GOURAUD** + - **SHADING_PHONG** + */ + void setRenderingProperty(int property, double value); + /** @brief Returns rendering property of the widget. + + @param property Property. + + Rendering property can be one of the following: + - **POINT_SIZE** + - **OPACITY** + - **LINE_WIDTH** + - **FONT_SIZE** + - **AMBIENT** + + REPRESENTATION: Expected values are + - **REPRESENTATION_POINTS** + - **REPRESENTATION_WIREFRAME** + - **REPRESENTATION_SURFACE** + + **IMMEDIATE_RENDERING**: + - Turn on immediate rendering by setting the value to 1. + - Turn off immediate rendering by setting the value to 0. + + SHADING: Expected values are + - **SHADING_FLAT** + - **SHADING_GOURAUD** + - **SHADING_PHONG** + */ + double getRenderingProperty(int property) const; + + /** @brief Casts a widget to another. + + @code + // Create a sphere widget + viz::WSphere sw(Point3f(0.0f,0.0f,0.0f), 0.5f); + // Cast sphere widget to cloud widget + viz::WCloud cw = sw.cast(); + @endcode + + @note 3D Widgets can only be cast to 3D Widgets. 2D Widgets can only be cast to 2D Widgets. + */ + template _W cast() const; + private: + class Impl; + Impl *impl_; + friend struct WidgetAccessor; + }; + + ///////////////////////////////////////////////////////////////////////////// + + /** @brief Base class of all 3D widgets. + */ + class CV_EXPORTS Widget3D : public Widget + { + public: + Widget3D() {} + + /** @brief Sets pose of the widget. + + @param pose The new pose of the widget. + */ + void setPose(const Affine3d &pose); + /** @brief Updates pose of the widget by pre-multiplying its current pose. + + @param pose The pose that the current pose of the widget will be pre-multiplied by. + */ + void updatePose(const Affine3d &pose); + /** @brief Returns the current pose of the widget. + */ + Affine3d getPose() const; + + /** @brief Transforms internal widget data (i.e. points, normals) using the given transform. + + @param transform Specified transformation to apply. + */ + void applyTransform(const Affine3d &transform); + + /** @brief Sets the color of the widget. + + @param color color of type Color + */ + void setColor(const Color &color); + + }; + + ///////////////////////////////////////////////////////////////////////////// + + /** @brief Base class of all 2D widgets. + */ + class CV_EXPORTS Widget2D : public Widget + { + public: + Widget2D() {} + + /** @brief Sets the color of the widget. + + @param color color of type Color + */ + void setColor(const Color &color); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Simple widgets + + /** @brief This 3D Widget defines a finite line. + */ + class CV_EXPORTS WLine : public Widget3D + { + public: + /** @brief Constructs a WLine. + + @param pt1 Start point of the line. + @param pt2 End point of the line. + @param color Color of the line. + */ + WLine(const Point3d &pt1, const Point3d &pt2, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a finite plane. + */ + class CV_EXPORTS WPlane : public Widget3D + { + public: + /** @brief Constructs a default plane with center point at origin and normal oriented along z-axis. + + @param size Size of the plane + @param color Color of the plane. + */ + WPlane(const Size2d& size = Size2d(1.0, 1.0), const Color &color = Color::white()); + + /** @brief Constructs a repositioned plane + + @param center Center of the plane + @param normal Plane normal orientation + @param new_yaxis Up-vector. New orientation of plane y-axis. + @param size + @param color Color of the plane. + */ + WPlane(const Point3d& center, const Vec3d& normal, const Vec3d& new_yaxis, + const Size2d& size = Size2d(1.0, 1.0), const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a sphere. : + */ + class CV_EXPORTS WSphere : public Widget3D + { + public: + /** @brief Constructs a WSphere. + + @param center Center of the sphere. + @param radius Radius of the sphere. + @param sphere_resolution Resolution of the sphere. + @param color Color of the sphere. + */ + WSphere(const cv::Point3d ¢er, double radius, int sphere_resolution = 10, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines an arrow. + */ + class CV_EXPORTS WArrow : public Widget3D + { + public: + /** @brief Constructs an WArrow. + + @param pt1 Start point of the arrow. + @param pt2 End point of the arrow. + @param thickness Thickness of the arrow. Thickness of arrow head is also adjusted + accordingly. + @param color Color of the arrow. + + Arrow head is located at the end point of the arrow. + */ + WArrow(const Point3d& pt1, const Point3d& pt2, double thickness = 0.03, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a circle. + */ + class CV_EXPORTS WCircle : public Widget3D + { + public: + /** @brief Constructs default planar circle centered at origin with plane normal along z-axis + + @param radius Radius of the circle. + @param thickness Thickness of the circle. + @param color Color of the circle. + */ + WCircle(double radius, double thickness = 0.01, const Color &color = Color::white()); + + /** @brief Constructs repositioned planar circle. + + @param radius Radius of the circle. + @param center Center of the circle. + @param normal Normal of the plane in which the circle lies. + @param thickness Thickness of the circle. + @param color Color of the circle. + */ + WCircle(double radius, const Point3d& center, const Vec3d& normal, double thickness = 0.01, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a cone. : + */ + class CV_EXPORTS WCone : public Widget3D + { + public: + /** @brief Constructs default cone oriented along x-axis with center of its base located at origin + + @param length Length of the cone. + @param radius Radius of the cone. + @param resolution Resolution of the cone. + @param color Color of the cone. + */ + WCone(double length, double radius, int resolution = 6.0, const Color &color = Color::white()); + + /** @brief Constructs repositioned planar cone. + + @param radius Radius of the cone. + @param center Center of the cone base. + @param tip Tip of the cone. + @param resolution Resolution of the cone. + @param color Color of the cone. + + */ + WCone(double radius, const Point3d& center, const Point3d& tip, int resolution = 6.0, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a cylinder. : + */ + class CV_EXPORTS WCylinder : public Widget3D + { + public: + /** @brief Constructs a WCylinder. + + @param axis_point1 A point1 on the axis of the cylinder. + @param axis_point2 A point2 on the axis of the cylinder. + @param radius Radius of the cylinder. + @param numsides Resolution of the cylinder. + @param color Color of the cylinder. + */ + WCylinder(const Point3d& axis_point1, const Point3d& axis_point2, double radius, int numsides = 30, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a cube. + */ + class CV_EXPORTS WCube : public Widget3D + { + public: + /** @brief Constructs a WCube. + + @param min_point Specifies minimum point of the bounding box. + @param max_point Specifies maximum point of the bounding box. + @param wire_frame If true, cube is represented as wireframe. + @param color Color of the cube. + + ![Cube Widget](images/cube_widget.png) + */ + WCube(const Point3d& min_point = Vec3d::all(-0.5), const Point3d& max_point = Vec3d::all(0.5), + bool wire_frame = true, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget defines a poly line. : + */ + class CV_EXPORTS WPolyLine : public Widget3D + { + public: + WPolyLine(InputArray points, InputArray colors); + /** @brief Constructs a WPolyLine. + + @param points Point set. + @param color Color of the poly line. + */ + WPolyLine(InputArray points, const Color &color = Color::white()); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Text and image widgets + + /** @brief This 2D Widget represents text overlay. + */ + class CV_EXPORTS WText : public Widget2D + { + public: + /** @brief Constructs a WText. + + @param text Text content of the widget. + @param pos Position of the text. + @param font_size Font size. + @param color Color of the text. + */ + WText(const String &text, const Point &pos, int font_size = 20, const Color &color = Color::white()); + + /** @brief Sets the text content of the widget. + + @param text Text content of the widget. + */ + void setText(const String &text); + /** @brief Returns the current text content of the widget. + */ + String getText() const; + }; + + /** @brief This 3D Widget represents 3D text. The text always faces the camera. + */ + class CV_EXPORTS WText3D : public Widget3D + { + public: + /** @brief Constructs a WText3D. + + @param text Text content of the widget. + @param position Position of the text. + @param text_scale Size of the text. + @param face_camera If true, text always faces the camera. + @param color Color of the text. + */ + WText3D(const String &text, const Point3d &position, double text_scale = 1., bool face_camera = true, const Color &color = Color::white()); + + /** @brief Sets the text content of the widget. + + @param text Text content of the widget. + + */ + void setText(const String &text); + /** @brief Returns the current text content of the widget. + */ + String getText() const; + }; + + /** @brief This 2D Widget represents an image overlay. : + */ + class CV_EXPORTS WImageOverlay : public Widget2D + { + public: + /** @brief Constructs an WImageOverlay. + + @param image BGR or Gray-Scale image. + @param rect Image is scaled and positioned based on rect. + */ + WImageOverlay(InputArray image, const Rect &rect); + /** @brief Sets the image content of the widget. + + @param image BGR or Gray-Scale image. + */ + void setImage(InputArray image); + }; + + /** @brief This 3D Widget represents an image in 3D space. : + */ + class CV_EXPORTS WImage3D : public Widget3D + { + public: + /** @brief Constructs an WImage3D. + + @param image BGR or Gray-Scale image. + @param size Size of the image. + */ + WImage3D(InputArray image, const Size2d &size); + + /** @brief Constructs an WImage3D. + + @param image BGR or Gray-Scale image. + @param size Size of the image. + @param center Position of the image. + @param normal Normal of the plane that represents the image. + @param up_vector Determines orientation of the image. + */ + WImage3D(InputArray image, const Size2d &size, const Vec3d ¢er, const Vec3d &normal, const Vec3d &up_vector); + + /** @brief Sets the image content of the widget. + + @param image BGR or Gray-Scale image. + */ + void setImage(InputArray image); + + /** @brief Sets the image size of the widget. + + @param size the new size of the image. + */ + void setSize(const Size& size); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Compound widgets + + /** @brief This 3D Widget represents a coordinate system. : + */ + class CV_EXPORTS WCoordinateSystem : public Widget3D + { + public: + /** @brief Constructs a WCoordinateSystem. + + @param scale Determines the size of the axes. + */ + WCoordinateSystem(double scale = 1.0); + }; + + /** @brief This 3D Widget defines a grid. : + */ + class CV_EXPORTS WGrid : public Widget3D + { + public: + /** @brief Constructs a WGrid. + + @param cells Number of cell columns and rows, respectively. + @param cells_spacing Size of each cell, respectively. + @param color Color of the grid. + */ + WGrid(const Vec2i &cells = Vec2i::all(10), const Vec2d &cells_spacing = Vec2d::all(1.0), const Color &color = Color::white()); + + //! Creates repositioned grid + WGrid(const Point3d& center, const Vec3d& normal, const Vec3d& new_yaxis, + const Vec2i &cells = Vec2i::all(10), const Vec2d &cells_spacing = Vec2d::all(1.0), const Color &color = Color::white()); + }; + + /** @brief This 3D Widget represents camera position in a scene by its axes or viewing frustum. : + */ + class CV_EXPORTS WCameraPosition : public Widget3D + { + public: + /** @brief Creates camera coordinate frame at the origin. + + ![Camera coordinate frame](images/cpw1.png) + */ + WCameraPosition(double scale = 1.0); + /** @brief Display the viewing frustum + @param K Intrinsic matrix of the camera. + @param scale Scale of the frustum. + @param color Color of the frustum. + + Creates viewing frustum of the camera based on its intrinsic matrix K. + + ![Camera viewing frustum](images/cpw2.png) + */ + WCameraPosition(const Matx33d &K, double scale = 1.0, const Color &color = Color::white()); + /** @brief Display the viewing frustum + @param fov Field of view of the camera (horizontal, vertical). + @param scale Scale of the frustum. + @param color Color of the frustum. + + Creates viewing frustum of the camera based on its field of view fov. + + ![Camera viewing frustum](images/cpw2.png) + */ + WCameraPosition(const Vec2d &fov, double scale = 1.0, const Color &color = Color::white()); + /** @brief Display image on the far plane of the viewing frustum + + @param K Intrinsic matrix of the camera. + @param image BGR or Gray-Scale image that is going to be displayed on the far plane of the frustum. + @param scale Scale of the frustum and image. + @param color Color of the frustum. + + Creates viewing frustum of the camera based on its intrinsic matrix K, and displays image on + the far end plane. + + ![Camera viewing frustum with image](images/cpw3.png) + */ + WCameraPosition(const Matx33d &K, InputArray image, double scale = 1.0, const Color &color = Color::white()); + /** @brief Display image on the far plane of the viewing frustum + + @param fov Field of view of the camera (horizontal, vertical). + @param image BGR or Gray-Scale image that is going to be displayed on the far plane of the frustum. + @param scale Scale of the frustum and image. + @param color Color of the frustum. + + Creates viewing frustum of the camera based on its intrinsic matrix K, and displays image on + the far end plane. + + ![Camera viewing frustum with image](images/cpw3.png) + */ + WCameraPosition(const Vec2d &fov, InputArray image, double scale = 1.0, const Color &color = Color::white()); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Trajectories + + /** @brief This 3D Widget represents a trajectory. : + */ + class CV_EXPORTS WTrajectory : public Widget3D + { + public: + enum {FRAMES = 1, PATH = 2, BOTH = FRAMES + PATH }; + + /** @brief Constructs a WTrajectory. + + @param path List of poses on a trajectory. Takes std::vector\\> with T == [float | double] + @param display_mode Display mode. This can be PATH, FRAMES, and BOTH. + @param scale Scale of the frames. Polyline is not affected. + @param color Color of the polyline that represents path. + + Frames are not affected. + Displays trajectory of the given path as follows: + - PATH : Displays a poly line that represents the path. + - FRAMES : Displays coordinate frames at each pose. + - PATH & FRAMES : Displays both poly line and coordinate frames. + */ + WTrajectory(InputArray path, int display_mode = WTrajectory::PATH, double scale = 1.0, const Color &color = Color::white()); + }; + + /** @brief This 3D Widget represents a trajectory. : + */ + class CV_EXPORTS WTrajectoryFrustums : public Widget3D + { + public: + /** @brief Constructs a WTrajectoryFrustums. + + @param path List of poses on a trajectory. Takes std::vector\\> with T == [float | double] + @param K Intrinsic matrix of the camera. + @param scale Scale of the frustums. + @param color Color of the frustums. + + Displays frustums at each pose of the trajectory. + */ + WTrajectoryFrustums(InputArray path, const Matx33d &K, double scale = 1., const Color &color = Color::white()); + + /** @brief Constructs a WTrajectoryFrustums. + + @param path List of poses on a trajectory. Takes std::vector\\> with T == [float | double] + @param fov Field of view of the camera (horizontal, vertical). + @param scale Scale of the frustums. + @param color Color of the frustums. + + Displays frustums at each pose of the trajectory. + */ + WTrajectoryFrustums(InputArray path, const Vec2d &fov, double scale = 1., const Color &color = Color::white()); + }; + + /** @brief This 3D Widget represents a trajectory using spheres and lines + + where spheres represent the positions of the camera, and lines represent the direction from + previous position to the current. : + */ + class CV_EXPORTS WTrajectorySpheres: public Widget3D + { + public: + /** @brief Constructs a WTrajectorySpheres. + + @param path List of poses on a trajectory. Takes std::vector\\> with T == [float | double] + @param line_length Max length of the lines which point to previous position + @param radius Radius of the spheres. + @param from Color for first sphere. + @param to Color for last sphere. Intermediate spheres will have interpolated color. + */ + WTrajectorySpheres(InputArray path, double line_length = 0.05, double radius = 0.007, + const Color &from = Color::red(), const Color &to = Color::white()); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Clouds + + /** @brief This 3D Widget defines a point cloud. : + + @note In case there are four channels in the cloud, fourth channel is ignored. + */ + class CV_EXPORTS WCloud: public Widget3D + { + public: + /** @brief Constructs a WCloud. + + @param cloud Set of points which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param colors Set of colors. It has to be of the same size with cloud. + + Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + WCloud(InputArray cloud, InputArray colors); + + /** @brief Constructs a WCloud. + @param cloud Set of points which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param color A single Color for the whole cloud. + + Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + WCloud(InputArray cloud, const Color &color = Color::white()); + + /** @brief Constructs a WCloud. + @param cloud Set of points which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param colors Set of colors. It has to be of the same size with cloud. + @param normals Normals for each point in cloud. Size and type should match with the cloud parameter. + + Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + WCloud(InputArray cloud, InputArray colors, InputArray normals); + + /** @brief Constructs a WCloud. + @param cloud Set of points which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param color A single Color for the whole cloud. + @param normals Normals for each point in cloud. + + Size and type should match with the cloud parameter. + Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + WCloud(InputArray cloud, const Color &color, InputArray normals); + }; + + class CV_EXPORTS WPaintedCloud: public Widget3D + { + public: + //! Paint cloud with default gradient between cloud bounds points + WPaintedCloud(InputArray cloud); + + //! Paint cloud with default gradient between given points + WPaintedCloud(InputArray cloud, const Point3d& p1, const Point3d& p2); + + //! Paint cloud with gradient specified by given colors between given points + WPaintedCloud(InputArray cloud, const Point3d& p1, const Point3d& p2, const Color& c1, const Color c2); + }; + + /** @brief This 3D Widget defines a collection of clouds. : + @note In case there are four channels in the cloud, fourth channel is ignored. + */ + class CV_EXPORTS WCloudCollection : public Widget3D + { + public: + WCloudCollection(); + + /** @brief Adds a cloud to the collection. + + @param cloud Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param colors Set of colors. It has to be of the same size with cloud. + @param pose Pose of the cloud. Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + void addCloud(InputArray cloud, InputArray colors, const Affine3d &pose = Affine3d::Identity()); + /** @brief Adds a cloud to the collection. + + @param cloud Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param color A single Color for the whole cloud. + @param pose Pose of the cloud. Points in the cloud belong to mask when they are set to (NaN, NaN, NaN). + */ + void addCloud(InputArray cloud, const Color &color = Color::white(), const Affine3d &pose = Affine3d::Identity()); + /** @brief Finalizes cloud data by repacking to single cloud. + + Useful for large cloud collections to reduce memory usage + */ + void finalize(); + }; + + /** @brief This 3D Widget represents normals of a point cloud. : + */ + class CV_EXPORTS WCloudNormals : public Widget3D + { + public: + /** @brief Constructs a WCloudNormals. + + @param cloud Point set which can be of type: CV_32FC3, CV_32FC4, CV_64FC3, CV_64FC4. + @param normals A set of normals that has to be of same type with cloud. + @param level Display only every level th normal. + @param scale Scale of the arrows that represent normals. + @param color Color of the arrows that represent normals. + + @note In case there are four channels in the cloud, fourth channel is ignored. + */ + WCloudNormals(InputArray cloud, InputArray normals, int level = 64, double scale = 0.1, const Color &color = Color::white()); + }; + + /** @brief Constructs a WMesh. + + @param mesh Mesh object that will be displayed. + @param cloud Points of the mesh object. + @param polygons Points of the mesh object. + @param colors Point colors. + @param normals Point normals. + */ + class CV_EXPORTS WMesh : public Widget3D + { + public: + WMesh(const Mesh &mesh); + WMesh(InputArray cloud, InputArray polygons, InputArray colors = noArray(), InputArray normals = noArray()); + }; + + /** @brief This class allows to merge several widgets to single one. + + It has quite limited functionality and can't merge widgets with different attributes. For + instance, if widgetA has color array and widgetB has only global color defined, then result + of merge won't have color at all. The class is suitable for merging large amount of similar + widgets. : + */ + class CV_EXPORTS WWidgetMerger : public Widget3D + { + public: + WWidgetMerger(); + + //! Add widget to merge with optional position change + void addWidget(const Widget3D& widget, const Affine3d &pose = Affine3d::Identity()); + + //! Repacks internal structure to single widget + void finalize(); + }; + + ///////////////////////////////////////////////////////////////////////////// + /// Utility exports + + template<> CV_EXPORTS Widget2D Widget::cast() const; + template<> CV_EXPORTS Widget3D Widget::cast() const; + template<> CV_EXPORTS WLine Widget::cast() const; + template<> CV_EXPORTS WPlane Widget::cast() const; + template<> CV_EXPORTS WSphere Widget::cast() const; + template<> CV_EXPORTS WCylinder Widget::cast() const; + template<> CV_EXPORTS WArrow Widget::cast() const; + template<> CV_EXPORTS WCircle Widget::cast() const; + template<> CV_EXPORTS WCone Widget::cast() const; + template<> CV_EXPORTS WCube Widget::cast() const; + template<> CV_EXPORTS WCoordinateSystem Widget::cast() const; + template<> CV_EXPORTS WPolyLine Widget::cast() const; + template<> CV_EXPORTS WGrid Widget::cast() const; + template<> CV_EXPORTS WText3D Widget::cast() const; + template<> CV_EXPORTS WText Widget::cast() const; + template<> CV_EXPORTS WImageOverlay Widget::cast() const; + template<> CV_EXPORTS WImage3D Widget::cast() const; + template<> CV_EXPORTS WCameraPosition Widget::cast() const; + template<> CV_EXPORTS WTrajectory Widget::cast() const; + template<> CV_EXPORTS WTrajectoryFrustums Widget::cast() const; + template<> CV_EXPORTS WTrajectorySpheres Widget::cast() const; + template<> CV_EXPORTS WCloud Widget::cast() const; + template<> CV_EXPORTS WPaintedCloud Widget::cast() const; + template<> CV_EXPORTS WCloudCollection Widget::cast() const; + template<> CV_EXPORTS WCloudNormals Widget::cast() const; + template<> CV_EXPORTS WMesh Widget::cast() const; + template<> CV_EXPORTS WWidgetMerger Widget::cast() const; + +//! @} + + } /* namespace viz */ +} /* namespace cv */ + +#endif diff --git a/modules/viz/src/clouds.cpp b/modules/viz/src/clouds.cpp new file mode 100644 index 000000000..c9a13fcfe --- /dev/null +++ b/modules/viz/src/clouds.cpp @@ -0,0 +1,530 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Point Cloud Widget implementation + +cv::viz::WCloud::WCloud(InputArray cloud, InputArray colors) +{ + WCloud cloud_widget(cloud, colors, cv::noArray()); + *this = cloud_widget; +} + +cv::viz::WCloud::WCloud(InputArray cloud, const Color &color) +{ + WCloud cloud_widget(cloud, Mat(cloud.size(), CV_8UC3, color)); + *this = cloud_widget; +} + +cv::viz::WCloud::WCloud(InputArray cloud, const Color &color, InputArray normals) +{ + WCloud cloud_widget(cloud, Mat(cloud.size(), CV_8UC3, color), normals); + *this = cloud_widget; +} + +cv::viz::WCloud::WCloud(cv::InputArray cloud, cv::InputArray colors, cv::InputArray normals) +{ + CV_Assert(!cloud.empty() && !colors.empty()); + + vtkSmartPointer cloud_source = vtkSmartPointer::New(); + cloud_source->SetColorCloudNormals(cloud, colors, normals); + cloud_source->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, cloud_source->GetOutput()); + mapper->SetScalarModeToUsePointData(); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->SetScalarRange(0, 255); + mapper->ScalarVisibilityOn(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCloud cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Painted Cloud Widget implementation + +cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud) +{ + vtkSmartPointer cloud_source = vtkSmartPointer::New(); + cloud_source->SetCloud(cloud); + cloud_source->Update(); + + Vec6d bounds(cloud_source->GetOutput()->GetPoints()->GetBounds()); + + vtkSmartPointer elevation = vtkSmartPointer::New(); + elevation->SetInputConnection(cloud_source->GetOutputPort()); + elevation->SetLowPoint(bounds[0], bounds[2], bounds[4]); + elevation->SetHighPoint(bounds[1], bounds[3], bounds[5]); + elevation->SetScalarRange(0.0, 1.0); + elevation->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput())); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->ScalarVisibilityOn(); + mapper->SetColorModeToMapScalars(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud, const Point3d& p1, const Point3d& p2) +{ + vtkSmartPointer cloud_source = vtkSmartPointer::New(); + cloud_source->SetCloud(cloud); + + vtkSmartPointer elevation = vtkSmartPointer::New(); + elevation->SetInputConnection(cloud_source->GetOutputPort()); + elevation->SetLowPoint(p1.x, p1.y, p1.z); + elevation->SetHighPoint(p2.x, p2.y, p2.z); + elevation->SetScalarRange(0.0, 1.0); + elevation->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput())); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->ScalarVisibilityOn(); + mapper->SetColorModeToMapScalars(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WPaintedCloud::WPaintedCloud(InputArray cloud, const Point3d& p1, const Point3d& p2, const Color& c1, const Color c2) +{ + vtkSmartPointer cloud_source = vtkSmartPointer::New(); + cloud_source->SetCloud(cloud); + + vtkSmartPointer elevation = vtkSmartPointer::New(); + elevation->SetInputConnection(cloud_source->GetOutputPort()); + elevation->SetLowPoint(p1.x, p1.y, p1.z); + elevation->SetHighPoint(p2.x, p2.y, p2.z); + elevation->SetScalarRange(0.0, 1.0); + elevation->Update(); + + Color vc1 = vtkcolor(c1), vc2 = vtkcolor(c2); + vtkSmartPointer color_transfer = vtkSmartPointer::New(); + color_transfer->SetColorSpaceToRGB(); + color_transfer->AddRGBPoint(0.0, vc1[0], vc1[1], vc1[2]); + color_transfer->AddRGBPoint(1.0, vc2[0], vc2[1], vc2[2]); + color_transfer->SetScaleToLinear(); + color_transfer->Build(); + + //if in future some need to replace color table with real scalars, then this can be done usine next calls: + //vtkDataArray *float_scalars = vtkPolyData::SafeDownCast(elevation->GetOutput())->GetPointData()->GetArray("Elevation"); + //vtkSmartPointer polydata = cloud_source->GetOutput(); + //polydata->GetPointData()->SetScalars(color_transfer->MapScalars(float_scalars, VTK_COLOR_MODE_DEFAULT, 0)); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, vtkPolyData::SafeDownCast(elevation->GetOutput())); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->ScalarVisibilityOn(); + mapper->SetColorModeToMapScalars(); + mapper->SetLookupTable(color_transfer); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WPaintedCloud cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Cloud Collection Widget implementation + +cv::viz::WCloudCollection::WCloudCollection() +{ + vtkSmartPointer append_filter = vtkSmartPointer::New(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(append_filter->GetOutputPort()); + mapper->SetScalarModeToUsePointData(); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->SetScalarRange(0, 255); + mapper->ScalarVisibilityOn(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetNumberOfCloudPoints(1); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +void cv::viz::WCloudCollection::addCloud(InputArray cloud, InputArray colors, const Affine3d &pose) +{ + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetColorCloud(cloud, colors); + + vtkSmartPointer polydata = VtkUtils::TransformPolydata(source->GetOutputPort(), pose); + + vtkSmartPointer actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Correctness check." && actor); + + vtkSmartPointer producer = actor->GetMapper()->GetInputConnection(0, 0)->GetProducer(); + vtkSmartPointer append_filter = vtkAppendPolyData::SafeDownCast(producer); + VtkUtils::AddInputData(append_filter, polydata); + + actor->SetNumberOfCloudPoints(std::max(1, actor->GetNumberOfCloudPoints() + polydata->GetNumberOfPoints()/10)); +} + +void cv::viz::WCloudCollection::addCloud(InputArray cloud, const Color &color, const Affine3d &pose) +{ + addCloud(cloud, Mat(cloud.size(), CV_8UC3, color), pose); +} + +void cv::viz::WCloudCollection::finalize() +{ + vtkSmartPointer actor = vtkLODActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Incompatible widget type." && actor); + + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + CV_Assert("Need to add at least one cloud." && mapper); + + vtkSmartPointer producer = mapper->GetInputConnection(0, 0)->GetProducer(); + vtkSmartPointer append_filter = vtkAppendPolyData::SafeDownCast(producer); + append_filter->Update(); + + vtkSmartPointer polydata = append_filter->GetOutput(); + mapper->RemoveInputConnection(0, 0); + VtkUtils::SetInputData(mapper, polydata); +} + +template<> cv::viz::WCloudCollection cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Cloud Normals Widget implementation + +cv::viz::WCloudNormals::WCloudNormals(InputArray _cloud, InputArray _normals, int level, double scale, const Color &color) +{ + Mat cloud = _cloud.getMat(); + Mat normals = _normals.getMat(); + + CV_Assert(cloud.type() == CV_32FC3 || cloud.type() == CV_64FC3 || cloud.type() == CV_32FC4 || cloud.type() == CV_64FC4); + CV_Assert(cloud.size() == normals.size() && cloud.type() == normals.type()); + + int sqlevel = (int)std::sqrt((double)level); + int ystep = (cloud.cols > 1 && cloud.rows > 1) ? sqlevel : 1; + int xstep = (cloud.cols > 1 && cloud.rows > 1) ? sqlevel : level; + + vtkSmartPointer points = vtkSmartPointer::New(); + points->SetDataType(cloud.depth() == CV_32F ? VTK_FLOAT : VTK_DOUBLE); + + vtkSmartPointer lines = vtkSmartPointer::New(); + + int s_chs = cloud.channels(); + int n_chs = normals.channels(); + int total = 0; + + for(int y = 0; y < cloud.rows; y += ystep) + { + if (cloud.depth() == CV_32F) + { + const float *srow = cloud.ptr(y); + const float *send = srow + cloud.cols * s_chs; + const float *nrow = normals.ptr(y); + + for (; srow < send; srow += xstep * s_chs, nrow += xstep * n_chs) + if (!isNan(srow) && !isNan(nrow)) + { + Vec3f endp = Vec3f(srow) + Vec3f(nrow) * (float)scale; + + points->InsertNextPoint(srow); + points->InsertNextPoint(endp.val); + + lines->InsertNextCell(2); + lines->InsertCellPoint(total++); + lines->InsertCellPoint(total++); + } + } + else + { + const double *srow = cloud.ptr(y); + const double *send = srow + cloud.cols * s_chs; + const double *nrow = normals.ptr(y); + + for (; srow < send; srow += xstep * s_chs, nrow += xstep * n_chs) + if (!isNan(srow) && !isNan(nrow)) + { + Vec3d endp = Vec3d(srow) + Vec3d(nrow) * (double)scale; + + points->InsertNextPoint(srow); + points->InsertNextPoint(endp.val); + + lines->InsertNextCell(2); + lines->InsertCellPoint(total++); + lines->InsertCellPoint(total++); + } + } + } + + vtkSmartPointer polydata = vtkSmartPointer::New(); + polydata->SetPoints(points); + polydata->SetLines(lines); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCloudNormals cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Mesh Widget implementation + +cv::viz::WMesh::WMesh(const Mesh &mesh) +{ + CV_Assert(mesh.cloud.rows == 1 && mesh.polygons.type() == CV_32SC1); + + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetColorCloudNormalsTCoords(mesh.cloud, mesh.colors, mesh.normals, mesh.tcoords); + source->Update(); + + Mat lookup_buffer(1, (int)mesh.cloud.total(), CV_32SC1); + int *lookup = lookup_buffer.ptr(); + for(int y = 0, index = 0; y < mesh.cloud.rows; ++y) + { + int s_chs = mesh.cloud.channels(); + + if (mesh.cloud.depth() == CV_32F) + { + const float* srow = mesh.cloud.ptr(y); + const float* send = srow + mesh.cloud.cols * s_chs; + + for (; srow != send; srow += s_chs, ++lookup) + if (!isNan(srow[0]) && !isNan(srow[1]) && !isNan(srow[2])) + *lookup = index++; + } + + if (mesh.cloud.depth() == CV_64F) + { + const double* srow = mesh.cloud.ptr(y); + const double* send = srow + mesh.cloud.cols * s_chs; + + for (; srow != send; srow += s_chs, ++lookup) + if (!isNan(srow[0]) && !isNan(srow[1]) && !isNan(srow[2])) + *lookup = index++; + } + } + lookup = lookup_buffer.ptr(); + + vtkSmartPointer polydata = source->GetOutput(); + polydata->SetVerts(0); + + const int * polygons = mesh.polygons.ptr(); + vtkSmartPointer cell_array = vtkSmartPointer::New(); + + int idx = 0; + size_t polygons_size = mesh.polygons.total(); + for (size_t i = 0; i < polygons_size; ++idx) + { + int n_points = polygons[i++]; + + cell_array->InsertNextCell(n_points); + for (int j = 0; j < n_points; ++j, ++idx) + cell_array->InsertCellPoint(lookup[polygons[i++]]); + } + cell_array->GetData()->SetNumberOfValues(idx); + cell_array->Squeeze(); + polydata->SetStrips(cell_array); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetScalarModeToUsePointData(); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + //actor->SetNumberOfCloudPoints(std::max(1, polydata->GetNumberOfPoints() / 10)); + actor->GetProperty()->SetRepresentationToSurface(); + actor->GetProperty()->BackfaceCullingOff(); // Backface culling is off for higher efficiency + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->EdgeVisibilityOff(); + actor->GetProperty()->ShadingOff(); + actor->SetMapper(mapper); + + if (!mesh.texture.empty()) + { + vtkSmartPointer image_source = vtkSmartPointer::New(); + image_source->SetImage(mesh.texture); + + vtkSmartPointer texture = vtkSmartPointer::New(); + texture->SetInputConnection(image_source->GetOutputPort()); + actor->SetTexture(texture); + } + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WMesh::WMesh(InputArray cloud, InputArray polygons, InputArray colors, InputArray normals) +{ + Mesh mesh; + mesh.cloud = cloud.getMat(); + mesh.colors = colors.getMat(); + mesh.normals = normals.getMat(); + mesh.polygons = polygons.getMat(); + *this = WMesh(mesh); +} + +template<> CV_EXPORTS cv::viz::WMesh cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Widget Merger implementation + +cv::viz::WWidgetMerger::WWidgetMerger() +{ + vtkSmartPointer append_filter = vtkSmartPointer::New(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(append_filter->GetOutputPort()); + mapper->SetScalarModeToUsePointData(); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + mapper->SetScalarRange(0, 255); + mapper->ScalarVisibilityOn(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +void cv::viz::WWidgetMerger::addWidget(const Widget3D& widget, const Affine3d &pose) +{ + vtkActor *widget_actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(widget)); + CV_Assert("Widget is not 3D actor." && widget_actor); + + vtkSmartPointer widget_mapper = vtkPolyDataMapper::SafeDownCast(widget_actor->GetMapper()); + CV_Assert("Widget doesn't have a polydata mapper" && widget_mapper); + widget_mapper->Update(); + + vtkSmartPointer actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + vtkSmartPointer producer = actor->GetMapper()->GetInputConnection(0, 0)->GetProducer(); + vtkSmartPointer append_filter = vtkAppendPolyData::SafeDownCast(producer); + CV_Assert("Correctness check" && append_filter); + + VtkUtils::AddInputData(append_filter, VtkUtils::TransformPolydata(widget_mapper->GetInput(), pose)); +} + +void cv::viz::WWidgetMerger::finalize() +{ + vtkSmartPointer actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + vtkSmartPointer producer = actor->GetMapper()->GetInputConnection(0, 0)->GetProducer(); + vtkSmartPointer append_filter = vtkAppendPolyData::SafeDownCast(producer); + CV_Assert("Correctness check" && append_filter); + append_filter->Update(); + + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + mapper->RemoveInputConnection(0, 0); + VtkUtils::SetInputData(mapper, append_filter->GetOutput()); + mapper->Modified(); +} + +template<> CV_EXPORTS cv::viz::WWidgetMerger cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} diff --git a/modules/viz/src/precomp.hpp b/modules/viz/src/precomp.hpp new file mode 100644 index 000000000..9596b96f0 --- /dev/null +++ b/modules/viz/src/precomp.hpp @@ -0,0 +1,343 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __OPENCV_VIZ_PRECOMP_HPP__ +#define __OPENCV_VIZ_PRECOMP_HPP__ + +#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 +#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 +#include +#include +#include +#include +#include +#include +#include +#include "vtkCallbackCommand.h" + +#if !defined(_WIN32) || defined(__CYGWIN__) +# include /* unlink */ +#else +# include /* unlink */ +#endif + +#include "vtk/vtkOBJWriter.h" +#include "vtk/vtkXYZWriter.h" +#include "vtk/vtkXYZReader.h" +#include "vtk/vtkCloudMatSink.h" +#include "vtk/vtkCloudMatSource.h" +#include "vtk/vtkTrajectorySource.h" +#include "vtk/vtkImageMatSource.h" + + +#include +#include +#include +#include + + +namespace cv +{ + namespace viz + { + typedef std::map > WidgetActorMap; + + struct VizMap + { + typedef std::map type; + typedef type::iterator iterator; + + type m; + ~VizMap(); + void replace_clear(); + }; + + class VizStorage + { + public: + static void unregisterAll(); + + //! window names automatically have Viz - prefix even though not provided by the users + static String generateWindowName(const String &window_name); + + private: + VizStorage(); // Static + + static void add(const Viz3d& window); + static Viz3d& get(const String &window_name); + static void remove(const String &window_name); + static bool windowExists(const String &window_name); + static void removeUnreferenced(); + + static VizMap storage; + friend class Viz3d; + + static VizStorage init; + }; + + template inline _Tp normalized(const _Tp& v) { return v * 1/norm(v); } + + template inline bool isNan(const _Tp* data) + { + return isNan(data[0]) || isNan(data[1]) || isNan(data[2]); + } + + inline vtkSmartPointer getActor(const Widget3D& widget) + { + return vtkActor::SafeDownCast(WidgetAccessor::getProp(widget)); + } + + inline vtkSmartPointer getPolyData(const Widget3D& widget) + { + vtkSmartPointer mapper = getActor(widget)->GetMapper(); + return vtkPolyData::SafeDownCast(mapper->GetInput()); + } + + inline vtkSmartPointer vtkmatrix(const cv::Matx44d &matrix) + { + vtkSmartPointer vtk_matrix = vtkSmartPointer::New(); + vtk_matrix->DeepCopy(matrix.val); + return vtk_matrix; + } + + inline Color vtkcolor(const Color& color) + { + Color scaled_color = color * (1.0/255.0); + std::swap(scaled_color[0], scaled_color[2]); + return scaled_color; + } + + inline Vec3d get_random_vec(double from = -10.0, double to = 10.0) + { + RNG& rng = theRNG(); + return Vec3d(rng.uniform(from, to), rng.uniform(from, to), rng.uniform(from, to)); + } + + struct VtkUtils + { + template + static void SetInputData(vtkSmartPointer filter, vtkPolyData* polydata) + { + #if VTK_MAJOR_VERSION <= 5 + filter->SetInput(polydata); + #else + filter->SetInputData(polydata); + #endif + } + template + static void SetSourceData(vtkSmartPointer filter, vtkPolyData* polydata) + { + #if VTK_MAJOR_VERSION <= 5 + filter->SetSource(polydata); + #else + filter->SetSourceData(polydata); + #endif + } + + template + static void SetInputData(vtkSmartPointer filter, vtkImageData* polydata) + { + #if VTK_MAJOR_VERSION <= 5 + filter->SetInput(polydata); + #else + filter->SetInputData(polydata); + #endif + } + + template + static void AddInputData(vtkSmartPointer filter, vtkPolyData *polydata) + { + #if VTK_MAJOR_VERSION <= 5 + filter->AddInput(polydata); + #else + filter->AddInputData(polydata); + #endif + } + + static vtkSmartPointer FillScalars(size_t size, const Color& color) + { + Vec3b rgb = Vec3d(color[2], color[1], color[0]); + Vec3b* color_data = new Vec3b[size]; + std::fill(color_data, color_data + size, rgb); + + vtkSmartPointer scalars = vtkSmartPointer::New(); + scalars->SetName("Colors"); + scalars->SetNumberOfComponents(3); + scalars->SetNumberOfTuples((vtkIdType)size); + scalars->SetArray(color_data->val, (vtkIdType)(size * 3), 0, vtkUnsignedCharArray::VTK_DATA_ARRAY_DELETE); + return scalars; + } + + static vtkSmartPointer FillScalars(vtkSmartPointer polydata, const Color& color) + { + return polydata->GetPointData()->SetScalars(FillScalars(polydata->GetNumberOfPoints(), color)), polydata; + } + + static vtkSmartPointer ComputeNormals(vtkSmartPointer polydata) + { + vtkSmartPointer normals_generator = vtkSmartPointer::New(); + normals_generator->ComputePointNormalsOn(); + normals_generator->ComputeCellNormalsOff(); + normals_generator->SetFeatureAngle(0.1); + normals_generator->SetSplitting(0); + normals_generator->SetConsistency(1); + normals_generator->SetAutoOrientNormals(0); + normals_generator->SetFlipNormals(0); + normals_generator->SetNonManifoldTraversal(1); + VtkUtils::SetInputData(normals_generator, polydata); + normals_generator->Update(); + return normals_generator->GetOutput(); + } + + static vtkSmartPointer TransformPolydata(vtkSmartPointer algorithm_output_port, const Affine3d& pose) + { + vtkSmartPointer transform = vtkSmartPointer::New(); + transform->SetMatrix(vtkmatrix(pose.matrix)); + + vtkSmartPointer transform_filter = vtkSmartPointer::New(); + transform_filter->SetTransform(transform); + transform_filter->SetInputConnection(algorithm_output_port); + transform_filter->Update(); + return transform_filter->GetOutput(); + } + + static vtkSmartPointer TransformPolydata(vtkSmartPointer polydata, const Affine3d& pose) + { + vtkSmartPointer transform = vtkSmartPointer::New(); + transform->SetMatrix(vtkmatrix(pose.matrix)); + + vtkSmartPointer transform_filter = vtkSmartPointer::New(); + VtkUtils::SetInputData(transform_filter, polydata); + transform_filter->SetTransform(transform); + transform_filter->Update(); + return transform_filter->GetOutput(); + } + }; + + vtkSmartPointer vtkCocoaRenderWindowInteractorNew(); + } +} + +#include "vtk/vtkVizInteractorStyle.hpp" +#include "vizimpl.hpp" + +#endif diff --git a/modules/viz/src/shapes.cpp b/modules/viz/src/shapes.cpp new file mode 100644 index 000000000..399106dd3 --- /dev/null +++ b/modules/viz/src/shapes.cpp @@ -0,0 +1,1107 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// line widget implementation +cv::viz::WLine::WLine(const Point3d &pt1, const Point3d &pt2, const Color &color) +{ + vtkSmartPointer line = vtkSmartPointer::New(); + line->SetPoint1(pt1.x, pt1.y, pt1.z); + line->SetPoint2(pt2.x, pt2.y, pt2.z); + line->Update(); + + vtkSmartPointer polydata = line->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WLine cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// sphere widget implementation + +cv::viz::WSphere::WSphere(const Point3d ¢er, double radius, int sphere_resolution, const Color &color) +{ + vtkSmartPointer sphere = vtkSmartPointer::New(); + sphere->SetRadius(radius); + sphere->SetCenter(center.x, center.y, center.z); + sphere->SetPhiResolution(sphere_resolution); + sphere->SetThetaResolution(sphere_resolution); + sphere->LatLongTessellationOff(); + sphere->Update(); + + vtkSmartPointer polydata = sphere->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WSphere cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// plane widget implementation + +cv::viz::WPlane::WPlane(const Size2d& size, const Color &color) +{ + vtkSmartPointer plane = vtkSmartPointer::New(); + plane->SetOrigin(-0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint1( 0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint2(-0.5 * size.width, 0.5 * size.height, 0.0); + plane->Update(); + + vtkSmartPointer polydata = plane->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->GetProperty()->LightingOff(); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WPlane::WPlane(const Point3d& center, const Vec3d& normal, const Vec3d& new_yaxis, const Size2d& size, const Color &color) +{ + Vec3d zvec = normalize(normal); + Vec3d xvec = normalize(new_yaxis.cross(zvec)); + Vec3d yvec = zvec.cross(xvec); + + WPlane plane(size, color); + plane.applyTransform(makeTransformToGlobal(xvec, yvec, zvec, center)); + *this = plane; +} + +template<> cv::viz::WPlane cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// arrow widget implementation + +cv::viz::WArrow::WArrow(const Point3d& pt1, const Point3d& pt2, double thickness, const Color &color) +{ + vtkSmartPointer arrow_source = vtkSmartPointer::New(); + arrow_source->SetShaftRadius(thickness); + arrow_source->SetTipRadius(thickness * 3.0); + arrow_source->SetTipLength(thickness * 10.0); + + Vec3d arbitrary = get_random_vec(); + Vec3d start_point(pt1.x, pt1.y, pt1.z), end_point(pt2.x, pt2.y, pt2.z); + + double length = norm(end_point - start_point); + + Vec3d xvec = normalized(end_point - start_point); + Vec3d zvec = normalized(xvec.cross(arbitrary)); + Vec3d yvec = zvec.cross(xvec); + + Matx33d R = makeTransformToGlobal(xvec, yvec, zvec).rotation(); + Affine3d transform_with_scale(R * length, start_point); + + vtkSmartPointer polydata = VtkUtils::TransformPolydata(arrow_source->GetOutputPort(), transform_with_scale); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WArrow cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// circle widget implementation + +cv::viz::WCircle::WCircle(double radius, double thickness, const Color &color) +{ + vtkSmartPointer disk = vtkSmartPointer::New(); + disk->SetCircumferentialResolution(30); + disk->SetInnerRadius(radius - thickness); + disk->SetOuterRadius(radius + thickness); + disk->Update(); + + vtkSmartPointer polydata = disk->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->LightingOff(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCircle::WCircle(double radius, const Point3d& center, const Vec3d& normal, double thickness, const Color &color) +{ + Vec3d arbitrary = get_random_vec(); + Vec3d zvec = normalized(normal); + Vec3d xvec = normalized(zvec.cross(arbitrary)); + Vec3d yvec = zvec.cross(xvec); + + WCircle circle(radius, thickness, color); + circle.applyTransform(makeTransformToGlobal(xvec, yvec, zvec, center)); + *this = circle; +} + +template<> cv::viz::WCircle cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// WCone widget implementation + +cv::viz::WCone::WCone(double length, double radius, int resolution, const Color &color) +{ + vtkSmartPointer cone_source = vtkSmartPointer::New(); + cone_source->SetCenter(length*0.5, 0.0, 0.0); + cone_source->SetHeight(length); + cone_source->SetRadius(radius); + cone_source->SetResolution(resolution); + cone_source->Update(); + + vtkSmartPointer polydata = cone_source->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCone::WCone(double radius, const Point3d& center, const Point3d& tip, int resolution, const Color &color) +{ + Vec3d arbitrary = get_random_vec(); + Vec3d xvec = normalized(Vec3d(tip - center)); + Vec3d zvec = normalized(xvec.cross(arbitrary)); + Vec3d yvec = zvec.cross(xvec); + + WCone circle(norm(tip - center), radius, resolution, color); + circle.applyTransform(makeTransformToGlobal(xvec, yvec, zvec, center)); + *this = circle; +} + +template<> cv::viz::WCone cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// cylinder widget implementation + +cv::viz::WCylinder::WCylinder(const Point3d& axis_point1, const Point3d& axis_point2, double radius, int numsides, const Color &color) +{ + vtkSmartPointer line = vtkSmartPointer::New(); + line->SetPoint1(axis_point1.x, axis_point1.y, axis_point1.z); + line->SetPoint2(axis_point2.x, axis_point2.y, axis_point2.z); + + vtkSmartPointer tuber = vtkSmartPointer::New(); + tuber->SetInputConnection(line->GetOutputPort()); + tuber->SetNumberOfSides(numsides); + tuber->SetRadius(radius); + tuber->Update(); + + vtkSmartPointer polydata = tuber->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCylinder cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// cylinder widget implementation + +cv::viz::WCube::WCube(const Point3d& min_point, const Point3d& max_point, bool wire_frame, const Color &color) +{ + double bounds[6]; + bounds[0] = std::min(min_point.x, max_point.x); + bounds[1] = std::max(min_point.x, max_point.x); + bounds[2] = std::min(min_point.y, max_point.y); + bounds[3] = std::max(min_point.y, max_point.y); + bounds[4] = std::min(min_point.z, max_point.z); + bounds[5] = std::max(min_point.z, max_point.z); + + vtkSmartPointer cube; + if (wire_frame) + { + cube = vtkSmartPointer::New(); + vtkOutlineSource::SafeDownCast(cube)->SetBounds(bounds); + } + else + { + cube = vtkSmartPointer::New(); + vtkCubeSource::SafeDownCast(cube)->SetBounds(bounds); + } + cube->Update(); + vtkSmartPointer polydata =cube->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCube cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// coordinate system widget implementation + +cv::viz::WCoordinateSystem::WCoordinateSystem(double scale) +{ + vtkSmartPointer axes = vtkSmartPointer::New(); + axes->SetOrigin(0, 0, 0); + axes->SetScaleFactor(scale); + axes->Update(); + + vtkSmartPointer colors = vtkSmartPointer::New(); + colors->SetNumberOfComponents(3); + colors->InsertNextTuple3(255, 0, 0); + colors->InsertNextTuple3(255, 0, 0); + colors->InsertNextTuple3(0, 255, 0); + colors->InsertNextTuple3(0, 255, 0); + colors->InsertNextTuple3(0, 0, 255); + colors->InsertNextTuple3(0, 0, 255); + + vtkSmartPointer polydata = axes->GetOutput(); + polydata->GetPointData()->SetScalars(colors); + + vtkSmartPointer tube_filter = vtkSmartPointer::New(); + VtkUtils::SetInputData(tube_filter, polydata); + tube_filter->SetRadius(axes->GetScaleFactor() / 50.0); + tube_filter->SetNumberOfSides(6); + tube_filter->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetScalarModeToUsePointData(); + VtkUtils::SetInputData(mapper, tube_filter->GetOutput()); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCoordinateSystem cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// polyline widget implementation + +cv::viz::WPolyLine::WPolyLine(InputArray points, InputArray colors) +{ + vtkSmartPointer cloud_source = vtkSmartPointer::New(); + cloud_source->SetColorCloud(points, colors); + cloud_source->Update(); + + vtkSmartPointer polydata = cloud_source->GetOutput(); + + vtkSmartPointer cell_array = vtkSmartPointer::New(); + cell_array->Allocate(cell_array->EstimateSize(1, polydata->GetNumberOfPoints())); + cell_array->InsertNextCell(polydata->GetNumberOfPoints()); + for(vtkIdType i = 0; i < polydata->GetNumberOfPoints(); ++i) + cell_array->InsertCellPoint(i); + + polydata->SetLines(cell_array); + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + mapper->SetScalarRange(0, 255); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WPolyLine::WPolyLine(InputArray points, const Color &color) +{ + WPolyLine polyline(points, Mat(points.size(), CV_8UC3, color)); + *this = polyline; +} + +template<> cv::viz::WPolyLine cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// grid widget implementation + + +cv::viz::WGrid::WGrid(const Vec2i &cells, const Vec2d &cells_spacing, const Color &color) +{ + vtkSmartPointer grid_data = vtkSmartPointer::New(); + + // Add 1 to dimensions because in ImageData dimensions is the number of lines + // - however here it means number of cells + grid_data->SetDimensions(cells[0]+1, cells[1]+1, 1); + grid_data->SetSpacing(cells_spacing[0], cells_spacing[1], 0.); + + // Set origin of the grid to be the middle of the grid + grid_data->SetOrigin(cells[0] * cells_spacing[0] * (-0.5), cells[1] * cells_spacing[1] * (-0.5), 0); + + // Extract the edges so we have the grid + vtkSmartPointer extract_edges = vtkSmartPointer::New(); + VtkUtils::SetInputData(extract_edges, grid_data); + extract_edges->Update(); + + vtkSmartPointer polydata = extract_edges->GetOutput(); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WGrid::WGrid(const Point3d& center, const Vec3d& normal, const Vec3d& new_yaxis, const Vec2i &cells, const Vec2d &cells_spacing, const Color &color) +{ + Vec3d zvec = normalize(normal); + Vec3d xvec = normalize(new_yaxis.cross(zvec)); + Vec3d yvec = zvec.cross(xvec); + + WGrid grid(cells, cells_spacing, color); + grid.applyTransform(makeTransformToGlobal(xvec, yvec, zvec, center)); + *this = grid; +} + +template<> cv::viz::WGrid cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// text3D widget implementation + +cv::viz::WText3D::WText3D(const String &text, const Point3d &position, double text_scale, bool face_camera, const Color &color) +{ + vtkSmartPointer textSource = vtkSmartPointer::New(); + textSource->SetText(text.c_str()); + textSource->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(textSource->GetOutputPort()); + + if (face_camera) + { + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->SetPosition(position.x, position.y, position.z); + actor->SetScale(text_scale); + WidgetAccessor::setProp(*this, actor); + } + else + { + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->SetPosition(position.x, position.y, position.z); + actor->SetScale(text_scale); + actor->GetProperty()->LightingOff(); + WidgetAccessor::setProp(*this, actor); + } + + setColor(color); +} + +void cv::viz::WText3D::setText(const String &text) +{ + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support text." && actor); + + // Update text source + vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer()); + CV_Assert("This widget does not support text." && textSource); + + textSource->SetText(text.c_str()); + textSource->Modified(); + textSource->Update(); +} + +cv::String cv::viz::WText3D::getText() const +{ + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support text." && actor); + + vtkPolyDataMapper *mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + vtkVectorText * textSource = vtkVectorText::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer()); + CV_Assert("This widget does not support text." && textSource); + + return textSource->GetText(); +} + +template<> cv::viz::WText3D cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// text widget implementation + +cv::viz::WText::WText(const String &text, const Point &pos, int font_size, const Color &color) +{ + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetDisplayPosition(pos.x, pos.y); + actor->SetInput(text.c_str()); + + actor->GetProperty()->SetDisplayLocationToForeground(); + + vtkSmartPointer tprop = actor->GetTextProperty(); + tprop->SetFontSize(font_size); + tprop->SetFontFamilyToCourier(); + tprop->SetJustificationToLeft(); + tprop->BoldOn(); + + Color c = vtkcolor(color); + tprop->SetColor(c.val); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WText cv::viz::Widget::cast() const +{ + Widget2D widget = this->cast(); + return static_cast(widget); +} + +void cv::viz::WText::setText(const String &text) +{ + vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support text." && actor); + actor->SetInput(text.c_str()); +} + +cv::String cv::viz::WText::getText() const +{ + vtkTextActor *actor = vtkTextActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support text." && actor); + return actor->GetInput(); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// image overlay widget implementation + +cv::viz::WImageOverlay::WImageOverlay(InputArray image, const Rect &rect) +{ + CV_Assert(!image.empty() && image.depth() == CV_8U); + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetImage(image); + Size sz = image.size(); + + // Scale the image based on the Rect, and flip to match y-ais orientation + vtkSmartPointer transform = vtkSmartPointer::New(); + transform->Scale(sz.width/(double)rect.width, sz.height/(double)rect.height, 1.0); + transform->RotateX(180); + + vtkSmartPointer image_reslice = vtkSmartPointer::New(); + image_reslice->SetResliceTransform(transform); + image_reslice->SetInputConnection(source->GetOutputPort()); + image_reslice->SetOutputDimensionality(2); + image_reslice->InterpolateOn(); + image_reslice->AutoCropOutputOn(); + image_reslice->Update(); + + vtkSmartPointer image_mapper = vtkSmartPointer::New(); + image_mapper->SetInputConnection(image_reslice->GetOutputPort()); + image_mapper->SetColorWindow(255); // OpenCV color + image_mapper->SetColorLevel(127.5); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(image_mapper); + actor->SetPosition(rect.x, rect.y); + actor->GetProperty()->SetDisplayLocationToForeground(); + + WidgetAccessor::setProp(*this, actor); +} + +void cv::viz::WImageOverlay::setImage(InputArray image) +{ + CV_Assert(!image.empty() && image.depth() == CV_8U); + + vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support overlay image." && actor); + + vtkImageMapper *mapper = vtkImageMapper::SafeDownCast(actor->GetMapper()); + CV_Assert("This widget does not support overlay image." && mapper); + \ + Vec6i extent; + mapper->GetInput()->GetExtent(extent.val); + Size size(extent[1], extent[3]); + + // Create the vtk image and set its parameters based on input image + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetImage(image); + Size sz = image.size(); + + // Scale the image based on the Rect, and flip to match y-ais orientation + vtkSmartPointer transform = vtkSmartPointer::New(); + transform->Scale(sz.width/(double)size.width, sz.height/(double)size.height, 1.0); + transform->RotateX(180); + + vtkSmartPointer image_reslice = vtkSmartPointer::New(); + image_reslice->SetResliceTransform(transform); + image_reslice->SetInputConnection(source->GetOutputPort()); + image_reslice->SetOutputDimensionality(2); + image_reslice->InterpolateOn(); + image_reslice->AutoCropOutputOn(); + image_reslice->Update(); + + mapper->SetInputConnection(image_reslice->GetOutputPort()); +} + +template<> cv::viz::WImageOverlay cv::viz::Widget::cast() const +{ + Widget2D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// image 3D widget implementation + +cv::viz::WImage3D::WImage3D(InputArray image, const Size2d &size) +{ + CV_Assert(!image.empty() && image.depth() == CV_8U); + + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetImage(image); + + vtkSmartPointer texture = vtkSmartPointer::New(); + texture->SetInputConnection(source->GetOutputPort()); + + vtkSmartPointer plane = vtkSmartPointer::New(); + plane->SetOrigin(-0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint1( 0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint2(-0.5 * size.width, 0.5 * size.height, 0.0); + + vtkSmartPointer textured_plane = vtkSmartPointer::New(); + textured_plane->SetInputConnection(plane->GetOutputPort()); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection(textured_plane->GetOutputPort()); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + actor->SetTexture(texture); + actor->GetProperty()->ShadingOff(); + actor->GetProperty()->LightingOff(); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WImage3D::WImage3D(InputArray image, const Size2d &size, const Vec3d ¢er, const Vec3d &normal, const Vec3d &up_vector) +{ + CV_Assert(!image.empty() && image.depth() == CV_8U); + + // Compute the transformation matrix for drawing the camera frame in a scene + Vec3d n = normalize(normal); + Vec3d u = normalize(up_vector.cross(n)); + Vec3d v = n.cross(u); + Affine3d pose = makeTransformToGlobal(u, v, n, center); + + WImage3D image3d(image, size); + image3d.applyTransform(pose); + *this = image3d; +} + +void cv::viz::WImage3D::setImage(InputArray image) +{ + CV_Assert(!image.empty() && image.depth() == CV_8U); + + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("This widget does not support 3D image." && actor); + + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetImage(image); + + vtkSmartPointer texture = vtkSmartPointer::New(); + texture->SetInputConnection(source->GetOutputPort()); + + actor->SetTexture(texture); +} + +void cv::viz::WImage3D::setSize(const cv::Size& size) +{ + vtkSmartPointer actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + vtkSmartPointer textured_plane; + vtkSmartPointer plane; + #if VTK_MAJOR_VERSION <= 5 + textured_plane = vtkTextureMapToPlane::SafeDownCast(mapper->GetInputConnection(0,0)->GetProducer()); + plane = vtkPlaneSource::SafeDownCast(textured_plane->GetInputConnection(0,0)->GetProducer()); + #else + textured_plane = vtkTextureMapToPlane::SafeDownCast(mapper->GetInputAlgorithm()); + plane = vtkPlaneSource::SafeDownCast(textured_plane->GetInputAlgorithm()); + #endif + plane->SetOrigin(-0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint1( 0.5 * size.width, -0.5 * size.height, 0.0); + plane->SetPoint2(-0.5 * size.width, 0.5 * size.height, 0.0); +} + +template<> cv::viz::WImage3D cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// camera position widget implementation + +namespace cv { namespace viz { namespace +{ + struct CameraPositionUtils + { + static vtkSmartPointer createFrustum(double aspect_ratio, double fovy, double scale) + { + vtkSmartPointer camera = vtkSmartPointer::New(); + camera->SetViewAngle(fovy); + camera->SetPosition(0.0, 0.0, 0.0); + camera->SetViewUp(0.0, 1.0, 0.0); + camera->SetFocalPoint(0.0, 0.0, 1.0); + camera->SetClippingRange(1e-9, scale); + + double planes_array[24]; + camera->GetFrustumPlanes(aspect_ratio, planes_array); + + vtkSmartPointer planes = vtkSmartPointer::New(); + planes->SetFrustumPlanes(planes_array); + + vtkSmartPointer frustumSource = vtkSmartPointer::New(); + frustumSource->SetPlanes(planes); + + vtkSmartPointer extract_edges = vtkSmartPointer::New(); + extract_edges->SetInputConnection(frustumSource->GetOutputPort()); + extract_edges->Update(); + + return extract_edges->GetOutput(); + } + + static Mat ensureColorImage(InputArray image) + { + Mat color(image.size(), CV_8UC3); + if (image.channels() == 1) + { + Vec3b *drow = color.ptr(); + for(int y = 0; y < color.rows; ++y) + { + const unsigned char *srow = image.getMat().ptr(y); + const unsigned char *send = srow + color.cols; + for(;srow < send;) + *drow++ = Vec3b::all(*srow++); + } + } + else + image.copyTo(color); + return color; + } + }; +}}} + +cv::viz::WCameraPosition::WCameraPosition(double scale) +{ + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, getPolyData(WCoordinateSystem(scale))); + mapper->SetScalarModeToUsePointData(); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCameraPosition::WCameraPosition(const Matx33d &K, double scale, const Color &color) +{ + double f_x = K(0,0), f_y = K(1,1), c_y = K(1,2); + + // Assuming that this is an ideal camera (c_y and c_x are at the center of the image) + double fovy = 2.0 * atan2(c_y, f_y) * 180 / CV_PI; + double aspect_ratio = f_y / f_x; + + vtkSmartPointer polydata = CameraPositionUtils::createFrustum(aspect_ratio, fovy, scale); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCameraPosition::WCameraPosition(const Vec2d &fov, double scale, const Color &color) +{ + double aspect_ratio = tan(fov[0] * 0.5) / tan(fov[1] * 0.5); + double fovy = fov[1] * 180 / CV_PI; + + vtkSmartPointer polydata = CameraPositionUtils::createFrustum(aspect_ratio, fovy, scale); + VtkUtils::FillScalars(polydata, color); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, polydata); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCameraPosition::WCameraPosition(const Matx33d &K, InputArray _image, double scale, const Color &color) +{ + CV_Assert(!_image.empty() && _image.depth() == CV_8U); + Mat image = CameraPositionUtils::ensureColorImage(_image); + image.at(0, 0) = Vec3d(color.val); //workaround of VTK limitation + + double f_y = K(1,1), c_y = K(1,2); + // Assuming that this is an ideal camera (c_y and c_x are at the center of the image) + double fovy = 2.0 * atan2(c_y, f_y) * 180.0 / CV_PI; + double far_end_height = 2.00 * c_y * scale / f_y; + double aspect_ratio = image.cols/(double)image.rows; + double image_scale = far_end_height/image.rows; + + WImage3D image_widget(image, Size2d(image.size()) * image_scale); + image_widget.applyTransform(Affine3d().translate(Vec3d(0, 0, scale))); + vtkSmartPointer plane = getPolyData(image_widget); + + vtkSmartPointer frustum = CameraPositionUtils::createFrustum(aspect_ratio, fovy, scale); + + // Frustum needs to be textured or else it can't be combined with image + vtkSmartPointer frustum_texture = vtkSmartPointer::New(); + VtkUtils::SetInputData(frustum_texture, frustum); + frustum_texture->SetSRange(0.0, 0.0); // Texture mapping with only one pixel + frustum_texture->SetTRange(0.0, 0.0); // from the image to have constant color + + vtkSmartPointer append_filter = vtkSmartPointer::New(); + append_filter->AddInputConnection(frustum_texture->GetOutputPort()); + VtkUtils::AddInputData(append_filter, plane); + + vtkSmartPointer actor = getActor(image_widget); + actor->GetMapper()->SetInputConnection(append_filter->GetOutputPort()); + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WCameraPosition::WCameraPosition(const Vec2d &fov, InputArray _image, double scale, const Color &color) +{ + CV_Assert(!_image.empty() && _image.depth() == CV_8U); + Mat image = CameraPositionUtils::ensureColorImage(_image); + image.at(0, 0) = Vec3d(color.val); //workaround of VTK limitation + + double fovy = fov[1] * 180.0 / CV_PI; + double far_end_height = 2.0 * scale * tan(fov[1] * 0.5); + double aspect_ratio = image.cols/(double)image.rows; + double image_scale = far_end_height/image.rows; + + WImage3D image_widget(image, Size2d(image.size()) * image_scale); + image_widget.applyTransform(Affine3d().translate(Vec3d(0, 0, scale))); + vtkSmartPointer plane = getPolyData(image_widget); + + vtkSmartPointer frustum = CameraPositionUtils::createFrustum(aspect_ratio, fovy, scale); + + // Frustum needs to be textured or else it can't be combined with image + vtkSmartPointer frustum_texture = vtkSmartPointer::New(); + VtkUtils::SetInputData(frustum_texture, frustum); + frustum_texture->SetSRange(0.0, 0.0); // Texture mapping with only one pixel + frustum_texture->SetTRange(0.0, 0.0); // from the image to have constant color + + vtkSmartPointer append_filter = vtkSmartPointer::New(); + append_filter->AddInputConnection(frustum_texture->GetOutputPort()); + VtkUtils::AddInputData(append_filter, plane); + + vtkSmartPointer actor = getActor(image_widget); + actor->GetMapper()->SetInputConnection(append_filter->GetOutputPort()); + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WCameraPosition cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// trajectory widget implementation + +cv::viz::WTrajectory::WTrajectory(InputArray _path, int display_mode, double scale, const Color &color) +{ + vtkSmartPointer append_filter = vtkSmartPointer::New(); + + // Bitwise and with 3 in order to limit the domain to 2 bits + if (display_mode & WTrajectory::PATH) + { + Mat points = vtkTrajectorySource::ExtractPoints(_path); + vtkSmartPointer polydata = getPolyData(WPolyLine(points, color)); + VtkUtils::AddInputData(append_filter, polydata); + } + + if (display_mode & WTrajectory::FRAMES) + { + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetTrajectory(_path); + + vtkSmartPointer glyph = getPolyData(WCoordinateSystem(scale)); + + vtkSmartPointer tensor_glyph = vtkSmartPointer::New(); + tensor_glyph->SetInputConnection(source->GetOutputPort()); + VtkUtils::SetSourceData(tensor_glyph, glyph); + tensor_glyph->ExtractEigenvaluesOff(); // Treat as a rotation matrix, not as something with eigenvalues + tensor_glyph->ThreeGlyphsOff(); + tensor_glyph->SymmetricOff(); + tensor_glyph->ColorGlyphsOff(); + + append_filter->AddInputConnection(tensor_glyph->GetOutputPort()); + } + append_filter->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, append_filter->GetOutput()); + mapper->SetScalarModeToUsePointData(); + mapper->SetScalarRange(0, 255); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WTrajectory cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// WTrajectoryFrustums widget implementation + +cv::viz::WTrajectoryFrustums::WTrajectoryFrustums(InputArray _path, const Matx33d &K, double scale, const Color &color) +{ + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetTrajectory(_path); + + vtkSmartPointer glyph = getPolyData(WCameraPosition(K, scale)); + VtkUtils::FillScalars(glyph, color); + + vtkSmartPointer tensor_glyph = vtkSmartPointer::New(); + tensor_glyph->SetInputConnection(source->GetOutputPort()); + VtkUtils::SetSourceData(tensor_glyph, glyph); + tensor_glyph->ExtractEigenvaluesOff(); // Treat as a rotation matrix, not as something with eigenvalues + tensor_glyph->ThreeGlyphsOff(); + tensor_glyph->SymmetricOff(); + tensor_glyph->ColorGlyphsOff(); + tensor_glyph->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, tensor_glyph->GetOutput()); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +cv::viz::WTrajectoryFrustums::WTrajectoryFrustums(InputArray _path, const Vec2d &fov, double scale, const Color &color) +{ + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetTrajectory(_path); + + vtkSmartPointer glyph = getPolyData(WCameraPosition(fov, scale)); + VtkUtils::FillScalars(glyph, color); + + vtkSmartPointer tensor_glyph = vtkSmartPointer::New(); + tensor_glyph->SetInputConnection(source->GetOutputPort()); + VtkUtils::SetSourceData(tensor_glyph, glyph); + tensor_glyph->ExtractEigenvaluesOff(); // Treat as a rotation matrix, not as something with eigenvalues + tensor_glyph->ThreeGlyphsOff(); + tensor_glyph->SymmetricOff(); + tensor_glyph->ColorGlyphsOff(); + tensor_glyph->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + VtkUtils::SetInputData(mapper, tensor_glyph->GetOutput()); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WTrajectoryFrustums cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// WTrajectorySpheres widget implementation + +cv::viz::WTrajectorySpheres::WTrajectorySpheres(InputArray _path, double line_length, double radius, const Color &from, const Color &to) +{ + CV_Assert(_path.kind() == _InputArray::STD_VECTOR || _path.kind() == _InputArray::MAT); + CV_Assert(_path.type() == CV_32FC(16) || _path.type() == CV_64FC(16)); + + Mat path64; + _path.getMat().convertTo(path64, CV_64F); + Affine3d *traj = path64.ptr(); + size_t total = path64.total(); + + vtkSmartPointer append_filter = vtkSmartPointer::New(); + + for(size_t i = 0; i < total; ++i) + { + Vec3d curr = traj[i].translation(); + + vtkSmartPointer sphere_source = vtkSmartPointer::New(); + sphere_source->SetCenter(curr.val); + sphere_source->SetRadius( (i == 0) ? 2 * radius : radius ); + sphere_source->Update(); + + double alpha = static_cast(i)/total; + Color c = from * (1 - alpha) + to * alpha; + + vtkSmartPointer polydata = sphere_source->GetOutput(); + polydata->GetCellData()->SetScalars(VtkUtils::FillScalars(polydata->GetNumberOfCells(), c)); + VtkUtils::AddInputData(append_filter, polydata); + + if (i > 0) + { + Vec3d prev = traj[i-1].translation(); + Vec3d lvec = prev - curr; + + if(norm(lvec) > line_length) + lvec = normalize(lvec) * line_length; + + Vec3d lend = curr + lvec; + + vtkSmartPointer line_source = vtkSmartPointer::New(); + line_source->SetPoint1(curr.val); + line_source->SetPoint2(lend.val); + line_source->Update(); + vtkSmartPointer polydata_ = line_source->GetOutput(); + polydata_->GetCellData()->SetScalars(VtkUtils::FillScalars(polydata_->GetNumberOfCells(), c)); + VtkUtils::AddInputData(append_filter, polydata_); + } + } + append_filter->Update(); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetScalarModeToUseCellData(); + VtkUtils::SetInputData(mapper, append_filter->GetOutput()); + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + WidgetAccessor::setProp(*this, actor); +} + +template<> cv::viz::WTrajectorySpheres cv::viz::Widget::cast() const +{ + Widget3D widget = this->cast(); + return static_cast(widget); +} diff --git a/modules/viz/src/types.cpp b/modules/viz/src/types.cpp new file mode 100644 index 000000000..65571a192 --- /dev/null +++ b/modules/viz/src/types.cpp @@ -0,0 +1,228 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +//////////////////////////////////////////////////////////////////// +/// Events + +cv::viz::KeyboardEvent::KeyboardEvent(Action _action, const String& _symbol, unsigned char _code, int _modifiers) + : action(_action), symbol(_symbol), code(_code), modifiers(_modifiers) {} + +cv::viz::MouseEvent::MouseEvent(const Type& _type, const MouseButton& _button, const Point& _pointer, int _modifiers) + : type(_type), button(_button), pointer(_pointer), modifiers(_modifiers) {} + +//////////////////////////////////////////////////////////////////// +/// cv::viz::Mesh3d + +cv::viz::Mesh cv::viz::Mesh::load(const String& file, int type) +{ + vtkSmartPointer reader = vtkSmartPointer::New(); + switch (type) { + case LOAD_AUTO: + { + CV_Error(Error::StsError, "cv::viz::Mesh::LOAD_AUTO: Not implemented yet"); + } + case LOAD_PLY: + { + vtkSmartPointer ply_reader = vtkSmartPointer::New(); + ply_reader->SetFileName(file.c_str()); + ply_reader->Update(); + reader = ply_reader; + break; + } + case LOAD_OBJ: + { + vtkSmartPointer obj_reader = vtkSmartPointer::New(); + obj_reader->SetFileName(file.c_str()); + obj_reader->Update(); + reader = obj_reader; + break; + } + default: + CV_Error(Error::StsError, "cv::viz::Mesh::load: Unknown file type"); + } + + vtkSmartPointer polydata = reader->GetOutput(); + CV_Assert("File does not exist or file format is not supported." && polydata); + + Mesh mesh; + vtkSmartPointer sink = vtkSmartPointer::New(); + sink->SetOutput(mesh.cloud, mesh.colors, mesh.normals, mesh.tcoords); + sink->SetInputConnection(reader->GetOutputPort()); + sink->Write(); + + // Now handle the polygons + vtkSmartPointer polygons = polydata->GetPolys(); + mesh.polygons.create(1, polygons->GetSize(), CV_32SC1); + int* poly_ptr = mesh.polygons.ptr(); + + polygons->InitTraversal(); + vtkIdType nr_cell_points, *cell_points; + while (polygons->GetNextCell(nr_cell_points, cell_points)) + { + *poly_ptr++ = nr_cell_points; + for (vtkIdType i = 0; i < nr_cell_points; ++i) + *poly_ptr++ = (int)cell_points[i]; + } + + return mesh; +} + +//////////////////////////////////////////////////////////////////// +/// Camera implementation + +cv::viz::Camera::Camera(double fx, double fy, double cx, double cy, const Size &window_size) +{ + init(fx, fy, cx, cy, window_size); +} + +cv::viz::Camera::Camera(const Vec2d &fov, const Size &window_size) +{ + CV_Assert(window_size.width > 0 && window_size.height > 0); + setClip(Vec2d(0.01, 1000.01)); // Default clipping + setFov(fov); + window_size_ = window_size; + // Principal point at the center + principal_point_ = Vec2f(static_cast(window_size.width)*0.5f, static_cast(window_size.height)*0.5f); + focal_ = Vec2f(principal_point_[0] / tan(fov_[0]*0.5f), principal_point_[1] / tan(fov_[1]*0.5f)); +} + +cv::viz::Camera::Camera(const cv::Matx33d & K, const Size &window_size) +{ + double f_x = K(0,0); + double f_y = K(1,1); + double c_x = K(0,2); + double c_y = K(1,2); + init(f_x, f_y, c_x, c_y, window_size); +} + +cv::viz::Camera::Camera(const Matx44d &proj, const Size &window_size) +{ + CV_Assert(window_size.width > 0 && window_size.height > 0); + + double near = proj(2,3) / (proj(2,2) - 1.0); + double far = near * (proj(2,2) - 1.0) / (proj(2,2) + 1.0); + double left = near * (proj(0,2)-1) / proj(0,0); + double right = 2.0 * near / proj(0,0) + left; + double bottom = near * (proj(1,2)-1) / proj(1,1); + double top = 2.0 * near / proj(1,1) + bottom; + + double epsilon = 2.2204460492503131e-16; + + principal_point_[0] = fabs(left-right) < epsilon ? window_size.width * 0.5 : (left * window_size.width) / (left - right); + principal_point_[1] = fabs(top-bottom) < epsilon ? window_size.height * 0.5 : (top * window_size.height) / (top - bottom); + + focal_[0] = -near * principal_point_[0] / left; + focal_[1] = near * principal_point_[1] / top; + + setClip(Vec2d(near, far)); + fov_[0] = atan2(principal_point_[0], focal_[0]) + atan2(window_size.width-principal_point_[0], focal_[0]); + fov_[1] = atan2(principal_point_[1], focal_[1]) + atan2(window_size.height-principal_point_[1], focal_[1]); + + window_size_ = window_size; +} + +void cv::viz::Camera::init(double fx, double fy, double cx, double cy, const Size &window_size) +{ + CV_Assert(window_size.width > 0 && window_size.height > 0); + setClip(Vec2d(0.01, 1000.01));// Default clipping + + fov_[0] = atan2(cx, fx) + atan2(window_size.width - cx, fx); + fov_[1] = atan2(cy, fy) + atan2(window_size.height - cy, fy); + + principal_point_[0] = cx; + principal_point_[1] = cy; + + focal_[0] = fx; + focal_[1] = fy; + + window_size_ = window_size; +} + +void cv::viz::Camera::setWindowSize(const Size &window_size) +{ + CV_Assert(window_size.width > 0 && window_size.height > 0); + + // Get the scale factor and update the principal points + float scalex = static_cast(window_size.width) / static_cast(window_size_.width); + float scaley = static_cast(window_size.height) / static_cast(window_size_.height); + + principal_point_[0] *= scalex; + principal_point_[1] *= scaley; + focal_ *= scaley; + // Vertical field of view is fixed! Update horizontal field of view + fov_[0] = (atan2(principal_point_[0],focal_[0]) + atan2(window_size.width-principal_point_[0],focal_[0])); + + window_size_ = window_size; +} + +void cv::viz::Camera::computeProjectionMatrix(Matx44d &proj) const +{ + double top = clip_[0] * principal_point_[1] / focal_[1]; + double left = -clip_[0] * principal_point_[0] / focal_[0]; + double right = clip_[0] * (window_size_.width - principal_point_[0]) / focal_[0]; + double bottom = -clip_[0] * (window_size_.height - principal_point_[1]) / focal_[1]; + + double temp1 = 2.0 * clip_[0]; + double temp2 = 1.0 / (right - left); + double temp3 = 1.0 / (top - bottom); + double temp4 = 1.0 / (clip_[0] - clip_[1]); + + proj = Matx44d::zeros(); + proj(0,0) = temp1 * temp2; + proj(1,1) = temp1 * temp3; + proj(0,2) = (right + left) * temp2; + proj(1,2) = (top + bottom) * temp3; + proj(2,2) = (clip_[1]+clip_[0]) * temp4; + proj(3,2) = -1.0; + proj(2,3) = (temp1 * clip_[1]) * temp4; +} + +cv::viz::Camera cv::viz::Camera::KinectCamera(const Size &window_size) +{ + Matx33d K(525.0, 0.0, 320.0, 0.0, 525.0, 240.0, 0.0, 0.0, 1.0); + return Camera(K, window_size); +} diff --git a/modules/viz/src/viz3d.cpp b/modules/viz/src/viz3d.cpp new file mode 100644 index 000000000..62e570e65 --- /dev/null +++ b/modules/viz/src/viz3d.cpp @@ -0,0 +1,156 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +cv::viz::Viz3d::Viz3d(const String& window_name) : impl_(0) { create(window_name); } + +cv::viz::Viz3d::Viz3d(const Viz3d& other) : impl_(other.impl_) +{ + if (impl_) + CV_XADD(&impl_->ref_counter, 1); +} + +cv::viz::Viz3d& cv::viz::Viz3d::operator=(const Viz3d& other) +{ + if (this != &other) + { + release(); + impl_ = other.impl_; + if (impl_) + CV_XADD(&impl_->ref_counter, 1); + } + return *this; +} + +cv::viz::Viz3d::~Viz3d() { release(); } + +void cv::viz::Viz3d::create(const String &window_name) +{ + if (impl_) + release(); + + if (VizStorage::windowExists(window_name)) + *this = VizStorage::get(window_name); + else + { + impl_ = new VizImpl(window_name); + impl_->ref_counter = 1; + + // Register the window + VizStorage::add(*this); + } +} + +void cv::viz::Viz3d::release() +{ + if (impl_ && CV_XADD(&impl_->ref_counter, -1) == 1) + { + delete impl_; + impl_ = 0; + } + + if (impl_ && impl_->ref_counter == 1) + VizStorage::removeUnreferenced(); + + impl_ = 0; +} + +void cv::viz::Viz3d::spin() { impl_->spin(); } +void cv::viz::Viz3d::spinOnce(int time, bool force_redraw) { impl_->spinOnce(time, force_redraw); } +void cv::viz::Viz3d::setOffScreenRendering() { impl_->setOffScreenRendering(); } +void cv::viz::Viz3d::removeAllLights() { impl_->removeAllLights(); } +void cv::viz::Viz3d::addLight(const Vec3d &position, const Vec3d &focalPoint, const Color &color, + const Color &diffuseColor, const Color &ambientColor, const Color &specularColor) +{ impl_->addLight(position, focalPoint, color, diffuseColor, ambientColor, specularColor); } +bool cv::viz::Viz3d::wasStopped() const { return impl_->wasStopped(); } +void cv::viz::Viz3d::close() { impl_->close(); } + +void cv::viz::Viz3d::registerKeyboardCallback(KeyboardCallback callback, void* cookie) +{ impl_->registerKeyboardCallback(callback, cookie); } + +void cv::viz::Viz3d::registerMouseCallback(MouseCallback callback, void* cookie) +{ impl_->registerMouseCallback(callback, cookie); } + +void cv::viz::Viz3d::showWidget(const String &id, const Widget &widget, const Affine3d &pose) { impl_->showWidget(id, widget, pose); } +void cv::viz::Viz3d::removeWidget(const String &id) { impl_->removeWidget(id); } +cv::viz::Widget cv::viz::Viz3d::getWidget(const String &id) const { return impl_->getWidget(id); } +void cv::viz::Viz3d::removeAllWidgets() { impl_->removeAllWidgets(); } + +void cv::viz::Viz3d::showImage(InputArray image, const Size& window_size) { impl_->showImage(image, window_size); } + +void cv::viz::Viz3d::setWidgetPose(const String &id, const Affine3d &pose) { impl_->setWidgetPose(id, pose); } +void cv::viz::Viz3d::updateWidgetPose(const String &id, const Affine3d &pose) { impl_->updateWidgetPose(id, pose); } +cv::Affine3d cv::viz::Viz3d::getWidgetPose(const String &id) const { return impl_->getWidgetPose(id); } + +void cv::viz::Viz3d::setCamera(const Camera &camera) { impl_->setCamera(camera); } +cv::viz::Camera cv::viz::Viz3d::getCamera() const { return impl_->getCamera(); } +void cv::viz::Viz3d::setViewerPose(const Affine3d &pose) { impl_->setViewerPose(pose); } +cv::Affine3d cv::viz::Viz3d::getViewerPose() const { return impl_->getViewerPose(); } + +void cv::viz::Viz3d::resetCameraViewpoint(const String &id) { impl_->resetCameraViewpoint(id); } +void cv::viz::Viz3d::resetCamera() { impl_->resetCamera(); } + +void cv::viz::Viz3d::convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord) { impl_->convertToWindowCoordinates(pt, window_coord); } +void cv::viz::Viz3d::converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction) { impl_->converTo3DRay(window_coord, origin, direction); } + +cv::Size cv::viz::Viz3d::getWindowSize() const { return impl_->getWindowSize(); } +void cv::viz::Viz3d::setWindowSize(const Size &window_size) { impl_->setWindowSize(window_size); } +cv::String cv::viz::Viz3d::getWindowName() const { return impl_->getWindowName(); } +cv::Mat cv::viz::Viz3d::getScreenshot() const { return impl_->getScreenshot(); } +void cv::viz::Viz3d::saveScreenshot(const String &file) { impl_->saveScreenshot(file); } +void cv::viz::Viz3d::setWindowPosition(const Point& window_position) { impl_->setWindowPosition(window_position); } +void cv::viz::Viz3d::setFullScreen(bool mode) { impl_->setFullScreen(mode); } +void cv::viz::Viz3d::setBackgroundColor(const Color& color, const Color& color2) { impl_->setBackgroundColor(color, color2); } + +void cv::viz::Viz3d::setBackgroundTexture(InputArray image) { impl_->setBackgroundTexture(image); } +void cv::viz::Viz3d::setBackgroundMeshLab() {impl_->setBackgroundMeshLab(); } + +void cv::viz::Viz3d::setRenderingProperty(const String &id, int property, double value) { getWidget(id).setRenderingProperty(property, value); } +double cv::viz::Viz3d::getRenderingProperty(const String &id, int property) { return getWidget(id).getRenderingProperty(property); } + +void cv::viz::Viz3d::setRepresentation(int representation) { impl_->setRepresentation(representation); } + +void cv::viz::Viz3d::setGlobalWarnings(bool enabled) { vtkObject::SetGlobalWarningDisplay(enabled ? 1 : 0); } diff --git a/modules/viz/src/vizcore.cpp b/modules/viz/src/vizcore.cpp new file mode 100644 index 000000000..a0ca4980a --- /dev/null +++ b/modules/viz/src/vizcore.cpp @@ -0,0 +1,352 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +cv::Affine3d cv::viz::makeTransformToGlobal(const Vec3d& axis_x, const Vec3d& axis_y, const Vec3d& axis_z, const Vec3d& origin) +{ + Affine3d::Mat3 R(axis_x[0], axis_y[0], axis_z[0], + axis_x[1], axis_y[1], axis_z[1], + axis_x[2], axis_y[2], axis_z[2]); + + return Affine3d(R, origin); +} + +cv::Affine3d cv::viz::makeCameraPose(const Vec3d& position, const Vec3d& focal_point, const Vec3d& y_dir) +{ + // Compute the transformation matrix for drawing the camera frame in a scene + Vec3d n = normalize(focal_point - position); + Vec3d u = normalize(y_dir.cross(n)); + Vec3d v = n.cross(u); + + return makeTransformToGlobal(u, v, n, position); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// VizStorage implementation + +#if defined(_WIN32) && !defined(__CYGWIN__) + + #include + + static BOOL WINAPI ConsoleHandlerRoutine(DWORD /*dwCtrlType*/) + { + vtkObject::GlobalWarningDisplayOff(); + return FALSE; + } + + static void register_console_handler() + { + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + CONSOLE_SCREEN_BUFFER_INFO hOutInfo; + if (GetConsoleScreenBufferInfo(hOut, &hOutInfo)) + SetConsoleCtrlHandler(ConsoleHandlerRoutine, TRUE); + } + +#else + + void register_console_handler(); + void register_console_handler() {} + +#endif + + +cv::viz::VizStorage cv::viz::VizStorage::init; +cv::viz::VizMap cv::viz::VizStorage::storage; + +void cv::viz::VizMap::replace_clear() { type().swap(m); } +cv::viz::VizMap::~VizMap() { replace_clear(); } + +cv::viz::VizStorage::VizStorage() +{ + register_console_handler(); +} +void cv::viz::VizStorage::unregisterAll() { storage.replace_clear(); } + +cv::viz::Viz3d& cv::viz::VizStorage::get(const String &window_name) +{ + String name = generateWindowName(window_name); + VizMap::iterator vm_itr = storage.m.find(name); + CV_Assert(vm_itr != storage.m.end()); + return vm_itr->second; +} + +void cv::viz::VizStorage::add(const Viz3d& window) +{ + String window_name = window.getWindowName(); + VizMap::iterator vm_itr = storage.m.find(window_name); + CV_Assert(vm_itr == storage.m.end()); + storage.m.insert(std::make_pair(window_name, window)); +} + +bool cv::viz::VizStorage::windowExists(const String &window_name) +{ + String name = generateWindowName(window_name); + return storage.m.find(name) != storage.m.end(); +} + +void cv::viz::VizStorage::removeUnreferenced() +{ + for(VizMap::iterator pos = storage.m.begin(); pos != storage.m.end();) + if(pos->second.impl_->ref_counter == 1) + storage.m.erase(pos++); + else + ++pos; +} + +cv::String cv::viz::VizStorage::generateWindowName(const String &window_name) +{ + String output = "Viz"; + // Already is Viz + if (window_name == output) + return output; + + String prefixed = output + " - "; + if (window_name.substr(0, prefixed.length()) == prefixed) + output = window_name; // Already has "Viz - " + else if (window_name.substr(0, output.length()) == output) + output = prefixed + window_name; // Doesn't have prefix + else + output = (window_name == "" ? output : prefixed + window_name); + + return output; +} + +cv::viz::Viz3d cv::viz::getWindowByName(const String &window_name) { return Viz3d (window_name); } +void cv::viz::unregisterAllWindows() { VizStorage::unregisterAll(); } + +cv::viz::Viz3d cv::viz::imshow(const String& window_name, InputArray image, const Size& window_size) +{ + Viz3d viz = getWindowByName(window_name); + viz.showImage(image, window_size); + return viz; +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Read/write clouds. Supported formats: ply, stl, xyz, obj + +void cv::viz::writeCloud(const String& file, InputArray cloud, InputArray colors, InputArray normals, bool binary) +{ + CV_Assert(file.size() > 4 && "Extension is required"); + String extension = file.substr(file.size()-4); + + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetColorCloudNormals(cloud, colors, normals); + + vtkSmartPointer writer; + if (extension == ".xyz") + { + writer = vtkSmartPointer::New(); + vtkXYZWriter::SafeDownCast(writer)->SetFileName(file.c_str()); + } + else if (extension == ".ply") + { + writer = vtkSmartPointer::New(); + vtkPLYWriter::SafeDownCast(writer)->SetFileName(file.c_str()); + vtkPLYWriter::SafeDownCast(writer)->SetFileType(binary ? VTK_BINARY : VTK_ASCII); + vtkPLYWriter::SafeDownCast(writer)->SetArrayName("Colors"); + } + else if (extension == ".obj") + { + writer = vtkSmartPointer::New(); + vtkOBJWriter::SafeDownCast(writer)->SetFileName(file.c_str()); + } + else + CV_Error(Error::StsError, "Unsupported format"); + + writer->SetInputConnection(source->GetOutputPort()); + writer->Write(); +} + +cv::Mat cv::viz::readCloud(const String& file, OutputArray colors, OutputArray normals) +{ + CV_Assert(file.size() > 4 && "Extension is required"); + String extension = file.substr(file.size()-4); + + vtkSmartPointer reader; + if (extension == ".xyz") + { + reader = vtkSmartPointer::New(); + vtkXYZReader::SafeDownCast(reader)->SetFileName(file.c_str()); + } + else if (extension == ".ply") + { + reader = vtkSmartPointer::New(); + CV_Assert(vtkPLYReader::CanReadFile(file.c_str())); + vtkPLYReader::SafeDownCast(reader)->SetFileName(file.c_str()); + } + else if (extension == ".obj") + { + reader = vtkSmartPointer::New(); + vtkOBJReader::SafeDownCast(reader)->SetFileName(file.c_str()); + } + else if (extension == ".stl") + { + reader = vtkSmartPointer::New(); + vtkSTLReader::SafeDownCast(reader)->SetFileName(file.c_str()); + } + else + CV_Error(Error::StsError, "Unsupported format"); + + cv::Mat cloud; + + vtkSmartPointer sink = vtkSmartPointer::New(); + sink->SetInputConnection(reader->GetOutputPort()); + sink->SetOutput(cloud, colors, normals); + sink->Write(); + + return cloud; +} + +cv::viz::Mesh cv::viz::readMesh(const String& file) { return Mesh::load(file); } + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Read/write poses and trajectories + +bool cv::viz::readPose(const String& file, Affine3d& pose, const String& tag) +{ + FileStorage fs(file, FileStorage::READ); + if (!fs.isOpened()) + return false; + + Mat hdr(pose.matrix, false); + fs[tag] >> hdr; + if (hdr.empty() || hdr.cols != pose.matrix.cols || hdr.rows != pose.matrix.rows) + return false; + + hdr.convertTo(pose.matrix, CV_64F); + return true; +} + +void cv::viz::writePose(const String& file, const Affine3d& pose, const String& tag) +{ + FileStorage fs(file, FileStorage::WRITE); + fs << tag << Mat(pose.matrix, false); +} + +void cv::viz::readTrajectory(OutputArray _traj, const String& files_format, int start, int end, const String& tag) +{ + CV_Assert(_traj.kind() == _InputArray::STD_VECTOR || _traj.kind() == _InputArray::MAT); + + start = max(0, std::min(start, end)); + end = std::max(start, end); + + std::vector traj; + + for(int i = start; i < end; ++i) + { + Affine3d affine; + bool ok = readPose(cv::format(files_format.c_str(), i), affine, tag); + if (!ok) + break; + + traj.push_back(affine); + } + + Mat(traj).convertTo(_traj, _traj.depth()); +} + +void cv::viz::writeTrajectory(InputArray _traj, const String& files_format, int start, const String& tag) +{ + if (_traj.kind() == _InputArray::STD_VECTOR_MAT) + { +#if CV_MAJOR_VERSION < 3 + std::vector& v = *(std::vector*)_traj.obj; +#else + std::vector& v = *(std::vector*)_traj.getObj(); +#endif + + for(size_t i = 0, index = max(0, start); i < v.size(); ++i, ++index) + { + Affine3d affine; + Mat pose = v[i]; + CV_Assert(pose.type() == CV_32FC(16) || pose.type() == CV_64FC(16)); + pose.copyTo(affine.matrix); + writePose(cv::format(files_format.c_str(), index), affine, tag); + } + return; + } + + if (_traj.kind() == _InputArray::STD_VECTOR || _traj.kind() == _InputArray::MAT) + { + CV_Assert(_traj.type() == CV_32FC(16) || _traj.type() == CV_64FC(16)); + + Mat traj = _traj.getMat(); + + if (traj.depth() == CV_32F) + for(size_t i = 0, index = max(0, start); i < traj.total(); ++i, ++index) + writePose(cv::format(files_format.c_str(), index), traj.at((int)i), tag); + + if (traj.depth() == CV_64F) + for(size_t i = 0, index = max(0, start); i < traj.total(); ++i, ++index) + writePose(cv::format(files_format.c_str(), index), traj.at((int)i), tag); + return; + } + + CV_Error(Error::StsError, "Unsupported array kind"); +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// Computing normals for mesh + +void cv::viz::computeNormals(const Mesh& mesh, OutputArray _normals) +{ + vtkSmartPointer polydata = getPolyData(WMesh(mesh)); + vtkSmartPointer with_normals = VtkUtils::ComputeNormals(polydata); + + vtkSmartPointer generic_normals = with_normals->GetPointData()->GetNormals(); + if(generic_normals) + { + Mat normals(1, generic_normals->GetNumberOfTuples(), CV_64FC3); + Vec3d *optr = normals.ptr(); + + for(int i = 0; i < generic_normals->GetNumberOfTuples(); ++i, ++optr) + generic_normals->GetTuple(i, optr->val); + + normals.convertTo(_normals, mesh.cloud.type()); + } + else + _normals.release(); +} diff --git a/modules/viz/src/vizimpl.cpp b/modules/viz/src/vizimpl.cpp new file mode 100644 index 000000000..2c291c056 --- /dev/null +++ b/modules/viz/src/vizimpl.cpp @@ -0,0 +1,622 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::viz::Viz3d::VizImpl::VizImpl(const String &name) : spin_once_state_(false), + window_position_(Vec2i(std::numeric_limits::min())), widget_actor_map_(new WidgetActorMap) +{ + renderer_ = vtkSmartPointer::New(); + window_name_ = VizStorage::generateWindowName(name); + + // Create render window + window_ = vtkSmartPointer::New(); + cv::Vec2i window_size = cv::Vec2i(window_->GetScreenSize()) / 2; + window_->SetSize(window_size.val); + window_->AddRenderer(renderer_); + + // Create the interactor style + style_ = vtkSmartPointer::New(); + style_->setWidgetActorMap(widget_actor_map_); + style_->UseTimersOn(); + + timer_callback_ = vtkSmartPointer::New(); + exit_callback_ = vtkSmartPointer::New(); + exit_callback_->viz = this; + + offScreenMode_ = false; + + setBackgroundMeshLab(); +} + +cv::viz::Viz3d::VizImpl::~VizImpl() { close(); } + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::TimerCallback::Execute(vtkObject* caller, unsigned long event_id, void* cookie) +{ + if (event_id == vtkCommand::TimerEvent && timer_id == *reinterpret_cast(cookie)) + { + vtkSmartPointer interactor = vtkRenderWindowInteractor::SafeDownCast(caller); + interactor->TerminateApp(); + } +} + +void cv::viz::Viz3d::VizImpl::ExitCallback::Execute(vtkObject*, unsigned long event_id, void*) +{ + if (event_id == vtkCommand::ExitEvent && viz->interactor_) + { + viz->interactor_->TerminateApp(); + viz->interactor_ = 0; + } +} + +///////////////////////////////////////////////////////////////////////////////////////////// + +bool cv::viz::Viz3d::VizImpl::wasStopped() const +{ + bool stopped = spin_once_state_ ? interactor_ == 0 : false; + spin_once_state_ &= !stopped; + return stopped; +} + +void cv::viz::Viz3d::VizImpl::close() +{ + if (!interactor_) + return; + interactor_->GetRenderWindow()->Finalize(); + interactor_->TerminateApp(); // This tends to close the window... + interactor_ = 0; +} + +void cv::viz::Viz3d::VizImpl::recreateRenderWindow() +{ +#if !defined _MSC_VER && !defined __APPLE__ + //recreating is workaround for Ubuntu -- a crash in x-server + Vec2i window_size(window_->GetSize()); + int fullscreen = window_->GetFullScreen(); + + window_->Finalize(); + window_ = vtkSmartPointer::New(); + if (window_position_[0] != std::numeric_limits::min()) //also workaround + window_->SetPosition(window_position_.val); + + window_->SetSize(window_size.val); + window_->SetFullScreen(fullscreen); + window_->AddRenderer(renderer_); +#endif +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::spin() +{ + recreateRenderWindow(); +#if defined __APPLE__ + interactor_ = vtkCocoaRenderWindowInteractorNew(); +#else + interactor_ = vtkSmartPointer::New(); +#endif + interactor_->SetRenderWindow(window_); + interactor_->SetInteractorStyle(style_); + window_->AlphaBitPlanesOff(); + window_->PointSmoothingOff(); + window_->LineSmoothingOff(); + window_->PolygonSmoothingOff(); + window_->SwapBuffersOn(); + window_->SetStereoTypeToAnaglyph(); + window_->Render(); + window_->SetWindowName(window_name_.c_str()); + interactor_->Start(); + interactor_ = 0; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::spinOnce(int time, bool force_redraw) +{ + if (interactor_ == 0) + { + spin_once_state_ = true; + recreateRenderWindow(); +#if defined __APPLE__ + interactor_ = vtkCocoaRenderWindowInteractorNew(); +#else + interactor_ = vtkSmartPointer::New(); +#endif + interactor_->SetRenderWindow(window_); + interactor_->SetInteractorStyle(style_); + interactor_->AddObserver(vtkCommand::TimerEvent, timer_callback_); + interactor_->AddObserver(vtkCommand::ExitEvent, exit_callback_); + window_->AlphaBitPlanesOff(); + window_->PointSmoothingOff(); + window_->LineSmoothingOff(); + window_->PolygonSmoothingOff(); + window_->SwapBuffersOn(); + window_->SetStereoTypeToAnaglyph(); + window_->Render(); + window_->SetWindowName(window_name_.c_str()); + } + + vtkSmartPointer local = interactor_; + + if (force_redraw) + local->Render(); + + timer_callback_->timer_id = local->CreateRepeatingTimer(std::max(1, time)); + local->Start(); + local->DestroyTimer(timer_callback_->timer_id); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setOffScreenRendering() +{ + window_->SetOffScreenRendering(1); + offScreenMode_ = true; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::removeAllLights() +{ + renderer_->RemoveAllLights(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::addLight(Vec3d position, Vec3d focalPoint, const Color &color, const Color &diffuseColor, + const Color &ambientColor, const Color &specularColor) +{ + Color color_ = vtkcolor(color); + Color diffuseColor_ = vtkcolor(diffuseColor); + Color ambientColor_ = vtkcolor(ambientColor); + Color specularColor_ = vtkcolor(specularColor); + + vtkSmartPointer light = vtkSmartPointer::New(); + light->SetPosition(position.val); + light->SetFocalPoint(focalPoint.val); + light->SetColor(color_.val); + light->SetDiffuseColor(diffuseColor_.val); + light->SetAmbientColor(ambientColor_.val); + light->SetSpecularColor(specularColor_.val); + + renderer_->AddLight(light); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::showWidget(const String &id, const Widget &widget, const Affine3d &pose) +{ + WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + if (exists) + { + // Remove it if it exists and add it again + removeActorFromRenderer(wam_itr->second); + } + // Get the actor and set the user matrix + vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(widget)); + if (actor) + { + // If the actor is 3D, apply pose + vtkSmartPointer matrix = vtkmatrix(pose.matrix); + actor->SetUserMatrix(matrix); + actor->Modified(); + } + // If the actor is a vtkFollower, then it should always face the camera + vtkFollower *follower = vtkFollower::SafeDownCast(actor); + if (follower) + { + follower->SetCamera(renderer_->GetActiveCamera()); + } + + renderer_->AddActor(WidgetAccessor::getProp(widget)); + (*widget_actor_map_)[id] = WidgetAccessor::getProp(widget); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::removeWidget(const String &id) +{ + WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + CV_Assert("Widget does not exist." && exists); + CV_Assert("Widget could not be removed." && removeActorFromRenderer(wam_itr->second)); + widget_actor_map_->erase(wam_itr); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::viz::Widget cv::viz::Viz3d::VizImpl::getWidget(const String &id) const +{ + WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + CV_Assert("Widget does not exist." && exists); + + Widget widget; + WidgetAccessor::setProp(widget, wam_itr->second); + return widget; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setWidgetPose(const String &id, const Affine3d &pose) +{ + WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + CV_Assert("Widget does not exist." && exists); + + vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second); + CV_Assert("Widget is not 3D." && actor); + + vtkSmartPointer matrix = vtkmatrix(pose.matrix); + actor->SetUserMatrix(matrix); + actor->Modified(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::updateWidgetPose(const String &id, const Affine3d &pose) +{ + WidgetActorMap::iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + CV_Assert("Widget does not exist." && exists); + + vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second); + CV_Assert("Widget is not 3D." && actor); + + vtkSmartPointer matrix = actor->GetUserMatrix(); + if (!matrix) + { + setWidgetPose(id, pose); + return ; + } + Affine3d updated_pose = pose * Affine3d(*matrix->Element); + matrix = vtkmatrix(updated_pose.matrix); + + actor->SetUserMatrix(matrix); + actor->Modified(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::Affine3d cv::viz::Viz3d::VizImpl::getWidgetPose(const String &id) const +{ + WidgetActorMap::const_iterator wam_itr = widget_actor_map_->find(id); + bool exists = wam_itr != widget_actor_map_->end(); + CV_Assert("Widget does not exist." && exists); + + vtkProp3D *actor = vtkProp3D::SafeDownCast(wam_itr->second); + CV_Assert("Widget is not 3D." && actor); + + return Affine3d(*actor->GetUserMatrix()->Element); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::saveScreenshot(const String &file) { style_->saveScreenshot(file.c_str()); } + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::Mat cv::viz::Viz3d::VizImpl::getScreenshot() const +{ + vtkSmartPointer windowToImageFilter = + vtkSmartPointer::New(); + windowToImageFilter->SetInput(window_); + windowToImageFilter->ReadFrontBufferOff(); // read from the back buffer + windowToImageFilter->Update(); + + vtkImageData *resultImage = windowToImageFilter->GetOutput(); + int * dim = resultImage->GetDimensions(); + cv::Mat image(dim[1], dim[0], CV_8UC3); + + Vec3b* dptr = reinterpret_cast(resultImage->GetScalarPointer()); + size_t elem_step = resultImage->GetIncrements()[1]/sizeof(Vec3b); + + for (int y = 0; y < image.rows; ++y) + { + const Vec3b* drow = dptr + elem_step * y; + unsigned char *srow = image.ptr(image.rows - y - 1); + for (int x = 0; x < image.cols; ++x, srow += image.channels()) + { + srow[0] = drow[x][2]; + srow[1] = drow[x][1]; + srow[2] = drow[x][0]; + } + } + + resultImage = 0; + + return image; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::registerMouseCallback(MouseCallback callback, void* cookie) +{ style_->registerMouseCallback(callback, cookie); } + +void cv::viz::Viz3d::VizImpl::registerKeyboardCallback(KeyboardCallback callback, void* cookie) +{ style_->registerKeyboardCallback(callback, cookie); } + + +////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::removeAllWidgets() +{ + widget_actor_map_->clear(); + renderer_->RemoveAllViewProps(); +} +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::showImage(InputArray image, const Size& window_size) +{ + removeAllWidgets(); + if (window_size.width > 0 && window_size.height > 0) + setWindowSize(window_size); + + showWidget("showImage", WImageOverlay(image, Rect(Point(0,0), getWindowSize()))); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +bool cv::viz::Viz3d::VizImpl::removeActorFromRenderer(vtkSmartPointer actor) +{ + vtkPropCollection* actors = renderer_->GetViewProps(); + actors->InitTraversal(); + vtkProp* current_actor = NULL; + while ((current_actor = actors->GetNextProp()) != NULL) + if (current_actor == actor) + { + renderer_->RemoveActor(actor); + return true; + } + return false; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setBackgroundColor(const Color& color, const Color& color2) +{ + Color c = vtkcolor(color), c2 = vtkcolor(color2); + bool gradient = color2[0] >= 0 && color2[1] >= 0 && color2[2] >= 0; + + if (gradient) + { + renderer_->SetBackground(c2.val); + renderer_->SetBackground2(c.val); + renderer_->GradientBackgroundOn(); + } + else + { + renderer_->SetBackground(c.val); + renderer_->GradientBackgroundOff(); + } +} + +void cv::viz::Viz3d::VizImpl::setBackgroundMeshLab() +{ setBackgroundColor(Color(2, 1, 1), Color(240, 120, 120)); } + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setBackgroundTexture(InputArray image) +{ + if (image.empty()) + { + renderer_->SetBackgroundTexture(0); + renderer_->TexturedBackgroundOff(); + return; + } + + vtkSmartPointer source = vtkSmartPointer::New(); + source->SetImage(image); + + vtkSmartPointer image_flip = vtkSmartPointer::New(); + image_flip->SetFilteredAxis(1); // Vertical flip + image_flip->SetInputConnection(source->GetOutputPort()); + + vtkSmartPointer texture = vtkSmartPointer::New(); + texture->SetInputConnection(image_flip->GetOutputPort()); + //texture->Update(); + + renderer_->SetBackgroundTexture(texture); + renderer_->TexturedBackgroundOn(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setCamera(const Camera &camera) +{ + vtkSmartPointer active_camera = renderer_->GetActiveCamera(); + + // Set the intrinsic parameters of the camera + window_->SetSize(camera.getWindowSize().width, camera.getWindowSize().height); + double aspect_ratio = static_cast(camera.getWindowSize().width)/static_cast(camera.getWindowSize().height); + + Matx44d proj_mat; + camera.computeProjectionMatrix(proj_mat); + + // Use the intrinsic parameters of the camera to simulate more realistically + vtkSmartPointer vtk_matrix = active_camera->GetProjectionTransformMatrix(aspect_ratio, -1.0, 1.0); + Matx44d old_proj_mat(*vtk_matrix->Element); + + // This is a hack around not being able to set Projection Matrix + vtkSmartPointer transform = vtkSmartPointer::New(); + transform->SetMatrix(vtkmatrix(proj_mat * old_proj_mat.inv())); + active_camera->SetUserTransform(transform); + + renderer_->ResetCameraClippingRange(); + renderer_->Render(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::viz::Camera cv::viz::Viz3d::VizImpl::getCamera() const +{ + vtkSmartPointer active_camera = renderer_->GetActiveCamera(); + + Size window_size(renderer_->GetRenderWindow()->GetSize()[0], + renderer_->GetRenderWindow()->GetSize()[1]); + double aspect_ratio = window_size.width / (double)window_size.height; + + vtkSmartPointer proj_matrix = active_camera->GetProjectionTransformMatrix(aspect_ratio, -1.0f, 1.0f); + return Camera(Matx44d(*proj_matrix->Element), window_size); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setViewerPose(const Affine3d &pose) +{ + vtkCamera& camera = *renderer_->GetActiveCamera(); + + // Position = extrinsic translation + cv::Vec3d pos_vec = pose.translation(); + + // Rotate the view vector + cv::Matx33d rotation = pose.rotation(); + cv::Vec3d y_axis(0.0, -1.0, 0.0); // In Computer Vision Camera Y-axis is oriented down + cv::Vec3d up_vec(rotation * y_axis); + + // Compute the new focal point + cv::Vec3d z_axis(0.0, 0.0, 1.0); + cv::Vec3d focal_vec = pose * z_axis; + + camera.SetPosition(pos_vec.val); + camera.SetFocalPoint(focal_vec.val); + camera.SetViewUp(up_vec.val); + + renderer_->ResetCameraClippingRange(); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +cv::Affine3d cv::viz::Viz3d::VizImpl::getViewerPose() const +{ + vtkCamera& camera = *renderer_->GetActiveCamera(); + + Vec3d pos(camera.GetPosition()); + Vec3d view_up(camera.GetViewUp()); + Vec3d focal(camera.GetFocalPoint()); + + Vec3d y_axis = normalized(-view_up); // In Computer Vision Camera Y-axis is oriented down + Vec3d z_axis = normalized(focal - pos); + Vec3d x_axis = normalized(y_axis.cross(z_axis)); + + return makeTransformToGlobal(x_axis, y_axis, z_axis, pos); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord) +{ + Vec3d window_pt; + vtkInteractorObserver::ComputeWorldToDisplay(renderer_, pt.x, pt.y, pt.z, window_pt.val); + window_coord = window_pt; +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction) +{ + Vec4d world_pt; + vtkInteractorObserver::ComputeDisplayToWorld(renderer_, window_coord.x, window_coord.y, window_coord.z, world_pt.val); + Vec3d cam_pos(renderer_->GetActiveCamera()->GetPosition()); + origin = cam_pos; + direction = normalize(Vec3d(world_pt.val) - cam_pos); +} + +///////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::resetCameraViewpoint(const String &id) +{ + vtkSmartPointer camera_pose; + static WidgetActorMap::iterator it = widget_actor_map_->find(id); + if (it != widget_actor_map_->end()) + { + vtkProp3D *actor = vtkProp3D::SafeDownCast(it->second); + CV_Assert("Widget is not 3D." && actor); + camera_pose = actor->GetUserMatrix(); + } + else + return; + + // Prevent a segfault + if (!camera_pose) return; + + vtkSmartPointer cam = renderer_->GetActiveCamera(); + cam->SetPosition(camera_pose->GetElement(0, 3), + camera_pose->GetElement(1, 3), + camera_pose->GetElement(2, 3)); + + cam->SetFocalPoint(camera_pose->GetElement(0, 3) - camera_pose->GetElement(0, 2), + camera_pose->GetElement(1, 3) - camera_pose->GetElement(1, 2), + camera_pose->GetElement(2, 3) - camera_pose->GetElement(2, 2)); + + cam->SetViewUp(camera_pose->GetElement(0, 1), + camera_pose->GetElement(1, 1), + camera_pose->GetElement(2, 1)); + + renderer_->SetActiveCamera(cam); + renderer_->ResetCameraClippingRange(); + renderer_->ResetCamera(); + renderer_->Render(); +} + +/////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::resetCamera() +{ + renderer_->ResetCamera(); +} + +/////////////////////////////////////////////////////////////////////////////////// +void cv::viz::Viz3d::VizImpl::setRepresentation(int representation) +{ + vtkActorCollection * actors = renderer_->GetActors(); + actors->InitTraversal(); + vtkActor * actor; + switch (representation) + { + case REPRESENTATION_POINTS: + { + while ((actor = actors->GetNextActor()) != NULL) + actor->GetProperty()->SetRepresentationToPoints(); + break; + } + case REPRESENTATION_SURFACE: + { + while ((actor = actors->GetNextActor()) != NULL) + actor->GetProperty()->SetRepresentationToSurface(); + break; + } + case REPRESENTATION_WIREFRAME: + { + while ((actor = actors->GetNextActor()) != NULL) + actor->GetProperty()->SetRepresentationToWireframe(); + break; + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +cv::String cv::viz::Viz3d::VizImpl::getWindowName() const { return window_name_; } +void cv::viz::Viz3d::VizImpl::setFullScreen(bool mode) { window_->SetFullScreen(mode); } +void cv::viz::Viz3d::VizImpl::setWindowPosition(const Point& position) { window_position_ = position; window_->SetPosition(position.x, position.y); } +void cv::viz::Viz3d::VizImpl::setWindowSize(const Size& window_size) { window_->SetSize(window_size.width, window_size.height); } +cv::Size cv::viz::Viz3d::VizImpl::getWindowSize() const { return Size(Point(Vec2i(window_->GetSize()))); } diff --git a/modules/viz/src/vizimpl.hpp b/modules/viz/src/vizimpl.hpp new file mode 100644 index 000000000..b39bc4978 --- /dev/null +++ b/modules/viz/src/vizimpl.hpp @@ -0,0 +1,146 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __OPENCV_VIZ_VIZ3D_IMPL_HPP__ +#define __OPENCV_VIZ_VIZ3D_IMPL_HPP__ + +struct cv::viz::Viz3d::VizImpl +{ +public: + typedef Viz3d::KeyboardCallback KeyboardCallback; + typedef Viz3d::MouseCallback MouseCallback; + + int ref_counter; + + VizImpl(const String &name); + virtual ~VizImpl(); + + bool wasStopped() const; + void close(); + + void spin(); + void spinOnce(int time = 1, bool force_redraw = false); + void setOffScreenRendering(); + + void removeAllLights(); + void addLight(Vec3d position, Vec3d focalPoint, const Color &color, const Color &diffuseColor, + const Color &ambientColor, const Color &specularColor); + + void showWidget(const String &id, const Widget &widget, const Affine3d &pose = Affine3d::Identity()); + void removeWidget(const String &id); + Widget getWidget(const String &id) const; + void removeAllWidgets(); + + void showImage(InputArray image, const Size& window_size); + + void setWidgetPose(const String &id, const Affine3d &pose); + void updateWidgetPose(const String &id, const Affine3d &pose); + Affine3d getWidgetPose(const String &id) const; + + void setRepresentation(int representation); + + void setCamera(const Camera &camera); + Camera getCamera() const; + + /** \brief Reset the camera to a given widget */ + void resetCameraViewpoint(const String& id); + void resetCamera(); + + void setViewerPose(const Affine3d &pose); + Affine3d getViewerPose() const; + + void convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord); + void converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction); + + Mat getScreenshot() const; + void saveScreenshot(const String &file); + void setWindowPosition(const Point& position); + Size getWindowSize() const; + void setWindowSize(const Size& window_size); + void setFullScreen(bool mode); + String getWindowName() const; + void setBackgroundColor(const Color& color, const Color& color2); + void setBackgroundTexture(InputArray image); + void setBackgroundMeshLab(); + + void registerKeyboardCallback(KeyboardCallback callback, void* cookie = 0); + void registerMouseCallback(MouseCallback callback, void* cookie = 0); + +private: + struct TimerCallback : public vtkCommand + { + static TimerCallback* New() { return new TimerCallback; } + virtual void Execute(vtkObject* caller, unsigned long event_id, void* cookie); + int timer_id; + }; + + struct ExitCallback : public vtkCommand + { + static ExitCallback* New() { return new ExitCallback; } + virtual void Execute(vtkObject*, unsigned long event_id, void*); + VizImpl* viz; + }; + + mutable bool spin_once_state_; + vtkSmartPointer interactor_; + + vtkSmartPointer window_; + String window_name_; + Vec2i window_position_; + + vtkSmartPointer timer_callback_; + vtkSmartPointer exit_callback_; + + vtkSmartPointer renderer_; + vtkSmartPointer style_; + Ptr widget_actor_map_; + + bool offScreenMode_; + + bool removeActorFromRenderer(vtkSmartPointer actor); + void recreateRenderWindow(); +}; + +#endif diff --git a/modules/viz/src/vtk/vtkCloudMatSink.cpp b/modules/viz/src/vtk/vtkCloudMatSink.cpp new file mode 100644 index 000000000..aa3d34ca4 --- /dev/null +++ b/modules/viz/src/vtk/vtkCloudMatSink.cpp @@ -0,0 +1,174 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkCloudMatSink); +}} + +cv::viz::vtkCloudMatSink::vtkCloudMatSink() {} +cv::viz::vtkCloudMatSink::~vtkCloudMatSink() {} + +void cv::viz::vtkCloudMatSink::SetOutput(OutputArray _cloud, OutputArray _colors, OutputArray _normals, OutputArray _tcoords) +{ + cloud = _cloud; + colors = _colors; + normals = _normals; + tcoords = _tcoords; +} + +void cv::viz::vtkCloudMatSink::WriteData() +{ + vtkPolyData *input = this->GetInput(); + if (!input) + return; + + vtkSmartPointer points_Data = input->GetPoints(); + + if (cloud.needed() && points_Data) + { + int vtktype = points_Data->GetDataType(); + CV_Assert(vtktype == VTK_FLOAT || vtktype == VTK_DOUBLE); + + cloud.create(1, points_Data->GetNumberOfPoints(), vtktype == VTK_FLOAT ? CV_32FC3 : CV_64FC3); + Vec3d *ddata = cloud.getMat().ptr(); + Vec3f *fdata = cloud.getMat().ptr(); + + if (cloud.depth() == CV_32F) + for(size_t i = 0; i < cloud.total(); ++i) + *fdata++ = Vec3d(points_Data->GetPoint((vtkIdType)i)); + + if (cloud.depth() == CV_64F) + for(size_t i = 0; i < cloud.total(); ++i) + *ddata++ = Vec3d(points_Data->GetPoint((vtkIdType)i)); + } + else + cloud.release(); + + vtkSmartPointer scalars_data = input->GetPointData() ? input->GetPointData()->GetScalars() : 0; + + if (colors.needed() && scalars_data) + { + int channels = scalars_data->GetNumberOfComponents(); + int vtktype = scalars_data->GetDataType(); + + CV_Assert((channels == 3 || channels == 4) && "Only 3- or 4-channel color data support is implemented"); + CV_Assert(cloud.total() == (size_t)scalars_data->GetNumberOfTuples()); + + Mat buffer(cloud.size(), CV_64FC(channels)); + Vec3d *cptr = buffer.ptr(); + for(size_t i = 0; i < buffer.total(); ++i) + *cptr++ = Vec3d(scalars_data->GetTuple((vtkIdType)i)); + + buffer.convertTo(colors, CV_8U, vtktype == VTK_FLOAT || VTK_FLOAT == VTK_DOUBLE ? 255.0 : 1.0); + } + else + colors.release(); + + vtkSmartPointer normals_data = input->GetPointData() ? input->GetPointData()->GetNormals() : 0; + + if (normals.needed() && normals_data) + { + int channels = normals_data->GetNumberOfComponents(); + int vtktype = normals_data->GetDataType(); + + CV_Assert((vtktype == VTK_FLOAT || VTK_FLOAT == VTK_DOUBLE) && (channels == 3 || channels == 4)); + CV_Assert(cloud.total() == (size_t)normals_data->GetNumberOfTuples()); + + Mat buffer(cloud.size(), CV_64FC(channels)); + Vec3d *cptr = buffer.ptr(); + for(size_t i = 0; i < buffer.total(); ++i) + *cptr++ = Vec3d(normals_data->GetTuple((vtkIdType)i)); + + buffer.convertTo(normals, vtktype == VTK_FLOAT ? CV_32F : CV_64F); + } + else + normals.release(); + + vtkSmartPointer coords_data = input->GetPointData() ? input->GetPointData()->GetTCoords() : 0; + + if (tcoords.needed() && coords_data) + { + int vtktype = coords_data->GetDataType(); + + CV_Assert(vtktype == VTK_FLOAT || VTK_FLOAT == VTK_DOUBLE); + CV_Assert(cloud.total() == (size_t)coords_data->GetNumberOfTuples()); + + Mat buffer(cloud.size(), CV_64FC2); + Vec2d *cptr = buffer.ptr(); + for(size_t i = 0; i < buffer.total(); ++i) + *cptr++ = Vec2d(coords_data->GetTuple((vtkIdType)i)); + + buffer.convertTo(tcoords, vtktype == VTK_FLOAT ? CV_32F : CV_64F); + + } + else + tcoords.release(); +} + +void cv::viz::vtkCloudMatSink::PrintSelf(ostream& os, vtkIndent indent) +{ + Superclass::PrintSelf(os, indent); + os << indent << "Cloud: " << cloud.needed() << "\n"; + os << indent << "Colors: " << colors.needed() << "\n"; + os << indent << "Normals: " << normals.needed() << "\n"; +} + +int cv::viz::vtkCloudMatSink::FillInputPortInformation(int, vtkInformation *info) +{ + info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData"); + return 1; +} + +vtkPolyData* cv::viz::vtkCloudMatSink::GetInput() +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput()); +} + +vtkPolyData* cv::viz::vtkCloudMatSink::GetInput(int port) +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput(port)); +} diff --git a/modules/viz/src/vtk/vtkCloudMatSink.h b/modules/viz/src/vtk/vtkCloudMatSink.h new file mode 100644 index 000000000..997e6984a --- /dev/null +++ b/modules/viz/src/vtk/vtkCloudMatSink.h @@ -0,0 +1,88 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkCloudMatSink_h +#define __vtkCloudMatSink_h + +#include +#include + +namespace cv +{ + namespace viz + { + class vtkCloudMatSink : public vtkWriter + { + public: + static vtkCloudMatSink *New(); + vtkTypeMacro(vtkCloudMatSink,vtkWriter) + void PrintSelf(ostream& os, vtkIndent indent); + + void SetOutput(OutputArray cloud, OutputArray colors = noArray(), OutputArray normals = noArray(), OutputArray tcoords = noArray()); + + // Description: + // Get the input to this writer. + vtkPolyData* GetInput(); + vtkPolyData* GetInput(int port); + + protected: + vtkCloudMatSink(); + ~vtkCloudMatSink(); + + void WriteData(); + int FillInputPortInformation(int port, vtkInformation *info); + + _OutputArray cloud; //!< point coordinates of type CV_32FC3 or CV_64FC3 with only 1 row + _OutputArray colors; //!< point color of type CV_8UC3 or CV_8UC4 with only 1 row + _OutputArray normals; //!< point normal of type CV_32FC3, CV_32FC4, CV_64FC3 or CV_64FC4 with only 1 row + _OutputArray tcoords; //!< texture coordinates of type CV_32FC2 or CV_64FC2 with only 1 row + + private: + vtkCloudMatSink(const vtkCloudMatSink&); // Not implemented. + void operator=(const vtkCloudMatSink&); // Not implemented. + }; + } // end namespace viz +} // end namespace cv + +#endif diff --git a/modules/viz/src/vtk/vtkCloudMatSource.cpp b/modules/viz/src/vtk/vtkCloudMatSource.cpp new file mode 100644 index 000000000..5f1cecbf2 --- /dev/null +++ b/modules/viz/src/vtk/vtkCloudMatSource.cpp @@ -0,0 +1,286 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkCloudMatSource); + + template struct VtkDepthTraits; + + template<> struct VtkDepthTraits + { + const static int data_type = VTK_FLOAT; + typedef vtkFloatArray array_type; + }; + + template<> struct VtkDepthTraits + { + const static int data_type = VTK_DOUBLE; + typedef vtkDoubleArray array_type; + }; +}} + +cv::viz::vtkCloudMatSource::vtkCloudMatSource() { SetNumberOfInputPorts(0); } +cv::viz::vtkCloudMatSource::~vtkCloudMatSource() {} + +int cv::viz::vtkCloudMatSource::SetCloud(InputArray _cloud) +{ + CV_Assert(_cloud.depth() == CV_32F || _cloud.depth() == CV_64F); + CV_Assert(_cloud.channels() == 3 || _cloud.channels() == 4); + + Mat cloud = _cloud.getMat(); + + int total = _cloud.depth() == CV_32F ? filterNanCopy(cloud) : filterNanCopy(cloud); + + vertices = vtkSmartPointer::New(); + vertices->Allocate(vertices->EstimateSize(1, total)); + vertices->InsertNextCell(total); + for(int i = 0; i < total; ++i) + vertices->InsertCellPoint(i); + + return total; +} + +int cv::viz::vtkCloudMatSource::SetColorCloud(InputArray _cloud, InputArray _colors) +{ + int total = SetCloud(_cloud); + + if (_colors.empty()) + return total; + + CV_Assert(_colors.depth() == CV_8U && _colors.channels() <= 4 && _colors.channels() != 2); + CV_Assert(_colors.size() == _cloud.size()); + + Mat cloud = _cloud.getMat(); + Mat colors = _colors.getMat(); + + if (cloud.depth() == CV_32F) + filterNanColorsCopy(colors, cloud, total); + else if (cloud.depth() == CV_64F) + filterNanColorsCopy(colors, cloud, total); + + return total; +} + +int cv::viz::vtkCloudMatSource::SetColorCloudNormals(InputArray _cloud, InputArray _colors, InputArray _normals) +{ + int total = SetColorCloud(_cloud, _colors); + + if (_normals.empty()) + return total; + + CV_Assert(_normals.depth() == CV_32F || _normals.depth() == CV_64F); + CV_Assert(_normals.channels() == 3 || _normals.channels() == 4); + CV_Assert(_normals.size() == _cloud.size()); + + Mat c = _cloud.getMat(); + Mat n = _normals.getMat(); + + if (n.depth() == CV_32F && c.depth() == CV_32F) + filterNanNormalsCopy(n, c, total); + else if (n.depth() == CV_32F && c.depth() == CV_64F) + filterNanNormalsCopy(n, c, total); + else if (n.depth() == CV_64F && c.depth() == CV_32F) + filterNanNormalsCopy(n, c, total); + else if (n.depth() == CV_64F && c.depth() == CV_64F) + filterNanNormalsCopy(n, c, total); + else + CV_Error(Error::StsError, "Unsupported normals/cloud type"); + + return total; +} + +int cv::viz::vtkCloudMatSource::SetColorCloudNormalsTCoords(InputArray _cloud, InputArray _colors, InputArray _normals, InputArray _tcoords) +{ + int total = SetColorCloudNormals(_cloud, _colors, _normals); + + if (_tcoords.empty()) + return total; + + CV_Assert(_tcoords.depth() == CV_32F || _tcoords.depth() == CV_64F); + CV_Assert(_tcoords.channels() == 2 && _tcoords.size() == _cloud.size()); + + Mat cl = _cloud.getMat(); + Mat tc = _tcoords.getMat(); + + if (tc.depth() == CV_32F && cl.depth() == CV_32F) + filterNanTCoordsCopy(tc, cl, total); + else if (tc.depth() == CV_32F && cl.depth() == CV_64F) + filterNanTCoordsCopy(tc, cl, total); + else if (tc.depth() == CV_64F && cl.depth() == CV_32F) + filterNanTCoordsCopy(tc, cl, total); + else if (tc.depth() == CV_64F && cl.depth() == CV_64F) + filterNanTCoordsCopy(tc, cl, total); + else + CV_Error(Error::StsError, "Unsupported tcoords/cloud type"); + + return total; +} + +int cv::viz::vtkCloudMatSource::RequestData(vtkInformation *vtkNotUsed(request), vtkInformationVector **vtkNotUsed(inputVector), vtkInformationVector *outputVector) +{ + vtkInformation *outInfo = outputVector->GetInformationObject(0); + vtkPolyData *output = vtkPolyData::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT())); + + output->SetPoints(points); + output->SetVerts(vertices); + if (scalars) + output->GetPointData()->SetScalars(scalars); + + if (normals) + output->GetPointData()->SetNormals(normals); + + if (tcoords) + output->GetPointData()->SetTCoords(tcoords); + + return 1; +} + +template +int cv::viz::vtkCloudMatSource::filterNanCopy(const Mat& cloud) +{ + CV_DbgAssert(DataType<_Tp>::depth == cloud.depth()); + points = vtkSmartPointer::New(); + points->SetDataType(VtkDepthTraits<_Tp>::data_type); + points->Allocate((vtkIdType)cloud.total()); + points->SetNumberOfPoints((vtkIdType)cloud.total()); + + int s_chs = cloud.channels(); + int total = 0; + for (int y = 0; y < cloud.rows; ++y) + { + const _Tp* srow = cloud.ptr<_Tp>(y); + const _Tp* send = srow + cloud.cols * s_chs; + + for (; srow != send; srow += s_chs) + if (!isNan(srow)) + points->SetPoint(total++, srow); + } + points->SetNumberOfPoints(total); + points->Squeeze(); + return total; +} + +template +void cv::viz::vtkCloudMatSource::filterNanColorsCopy(const Mat& cloud_colors, const Mat& mask, int total) +{ + Vec3b* array = new Vec3b[total]; + Vec3b* pos = array; + + int s_chs = cloud_colors.channels(); + int m_chs = mask.channels(); + for (int y = 0; y < cloud_colors.rows; ++y) + { + const unsigned char* srow = cloud_colors.ptr(y); + const unsigned char* send = srow + cloud_colors.cols * s_chs; + const _Msk* mrow = mask.ptr<_Msk>(y); + + if (cloud_colors.channels() == 1) + { + for (; srow != send; srow += s_chs, mrow += m_chs) + if (!isNan(mrow)) + *pos++ = Vec3b(srow[0], srow[0], srow[0]); + } + else + for (; srow != send; srow += s_chs, mrow += m_chs) + if (!isNan(mrow)) + *pos++ = Vec3b(srow[2], srow[1], srow[0]); + + } + + scalars = vtkSmartPointer::New(); + scalars->SetName("Colors"); + scalars->SetNumberOfComponents(3); + scalars->SetNumberOfTuples(total); + scalars->SetArray(array->val, total * 3, 0, vtkUnsignedCharArray::VTK_DATA_ARRAY_DELETE); +} + +template +void cv::viz::vtkCloudMatSource::filterNanNormalsCopy(const Mat& cloud_normals, const Mat& mask, int total) +{ + normals = vtkSmartPointer< typename VtkDepthTraits<_Tn>::array_type >::New(); + normals->SetName("Normals"); + normals->SetNumberOfComponents(3); + normals->SetNumberOfTuples(total); + + int s_chs = cloud_normals.channels(); + int m_chs = mask.channels(); + + int pos = 0; + for (int y = 0; y < cloud_normals.rows; ++y) + { + const _Tn* srow = cloud_normals.ptr<_Tn>(y); + const _Tn* send = srow + cloud_normals.cols * s_chs; + + const _Msk* mrow = mask.ptr<_Msk>(y); + + for (; srow != send; srow += s_chs, mrow += m_chs) + if (!isNan(mrow)) + normals->SetTuple(pos++, srow); + } +} + +template +void cv::viz::vtkCloudMatSource::filterNanTCoordsCopy(const Mat& _tcoords, const Mat& mask, int total) +{ + typedef Vec<_Tn, 2> Vec2; + tcoords = vtkSmartPointer< typename VtkDepthTraits<_Tn>::array_type >::New(); + tcoords->SetName("TextureCoordinates"); + tcoords->SetNumberOfComponents(2); + tcoords->SetNumberOfTuples(total); + + int pos = 0; + for (int y = 0; y < mask.rows; ++y) + { + const Vec2* srow = _tcoords.ptr(y); + const Vec2* send = srow + _tcoords.cols; + const _Msk* mrow = mask.ptr<_Msk>(y); + + for (; srow != send; ++srow, mrow += mask.channels()) + if (!isNan(mrow)) + tcoords->SetTuple(pos++, srow->val); + } +} diff --git a/modules/viz/src/vtk/vtkCloudMatSource.h b/modules/viz/src/vtk/vtkCloudMatSource.h new file mode 100644 index 000000000..56bd93e06 --- /dev/null +++ b/modules/viz/src/vtk/vtkCloudMatSource.h @@ -0,0 +1,96 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkCloudMatSource_h +#define __vtkCloudMatSource_h + +#include +#include +#include +#include +#include + +namespace cv +{ + namespace viz + { + class vtkCloudMatSource : public vtkPolyDataAlgorithm + { + public: + static vtkCloudMatSource *New(); + vtkTypeMacro(vtkCloudMatSource,vtkPolyDataAlgorithm) + + virtual int SetCloud(InputArray cloud); + virtual int SetColorCloud(InputArray cloud, InputArray colors); + virtual int SetColorCloudNormals(InputArray cloud, InputArray colors, InputArray normals); + virtual int SetColorCloudNormalsTCoords(InputArray cloud, InputArray colors, InputArray normals, InputArray tcoords); + + protected: + vtkCloudMatSource(); + ~vtkCloudMatSource(); + + int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); + + vtkSmartPointer points; + vtkSmartPointer vertices; + vtkSmartPointer scalars; + vtkSmartPointer normals; + vtkSmartPointer tcoords; + private: + vtkCloudMatSource(const vtkCloudMatSource&); // Not implemented. + void operator=(const vtkCloudMatSource&); // Not implemented. + + template int filterNanCopy(const Mat& cloud); + template void filterNanColorsCopy(const Mat& cloud_colors, const Mat& mask, int total); + + template + void filterNanNormalsCopy(const Mat& cloud_normals, const Mat& mask, int total); + + template + void filterNanTCoordsCopy(const Mat& tcoords, const Mat& mask, int total); + }; + } +} + +#endif diff --git a/modules/viz/src/vtk/vtkCocoaInteractorFix.mm b/modules/viz/src/vtk/vtkCocoaInteractorFix.mm new file mode 100644 index 000000000..b15316031 --- /dev/null +++ b/modules/viz/src/vtk/vtkCocoaInteractorFix.mm @@ -0,0 +1,226 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +// This workaround code was taken from PCL library(www.pointclouds.org) +// +//M*/ + +#import +#include +#include +#include +#include + +namespace cv { namespace viz { + vtkSmartPointer vtkCocoaRenderWindowInteractorNew(); +}} // namespace + +#if ((VTK_MAJOR_VERSION < 6) || ((VTK_MAJOR_VERSION == 6) && (VTK_MINOR_VERSION < 2))) + + +//---------------------------------------------------------------------------- +@interface vtkCocoaServerFix : NSObject +{ + vtkCocoaRenderWindow* renWin; +} + ++ (id)cocoaServerWithRenderWindow:(vtkCocoaRenderWindow*)inRenderWindow; + +- (void)start; +- (void)stop; +- (void)breakEventLoop; + +@end + +//---------------------------------------------------------------------------- +@implementation vtkCocoaServerFix + +//---------------------------------------------------------------------------- +- (id)initWithRenderWindow:(vtkCocoaRenderWindow *)inRenderWindow +{ + self = [super init]; + if (self) + renWin = inRenderWindow; + return self; +} + +//---------------------------------------------------------------------------- ++ (id)cocoaServerWithRenderWindow:(vtkCocoaRenderWindow *)inRenderWindow +{ + vtkCocoaServerFix *server = [[[vtkCocoaServerFix alloc] initWithRenderWindow:inRenderWindow] autorelease]; + return server; +} + +//---------------------------------------------------------------------------- +- (void)start +{ + // Retrieve the NSWindow. + NSWindow *win = nil; + if (renWin) + { + win = reinterpret_cast (renWin->GetRootWindow ()); + + // We don't want to be informed of every window closing, so check for nil. + if (win != nil) + { + // Register for the windowWillClose notification in order to stop the run loop if the window closes. + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:win]; + } + } + // Start the NSApplication's run loop + NSApplication* application = [NSApplication sharedApplication]; + [application run]; +} + +//---------------------------------------------------------------------------- +- (void)stop +{ + [self breakEventLoop]; +} + +//---------------------------------------------------------------------------- +- (void)breakEventLoop +{ + NSApplication* application = [NSApplication sharedApplication]; + [application stop:application]; + + NSEvent *event = [NSEvent otherEventWithType:NSApplicationDefined + location:NSMakePoint(0.0,0.0) + modifierFlags:0 + timestamp:0 + windowNumber:-1 + context:nil + subtype:0 + data1:0 + data2:0]; + [application postEvent:event atStart:YES]; +} + +//---------------------------------------------------------------------------- +- (void)windowWillClose:(NSNotification*)aNotification +{ + (void)aNotification; + + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + [nc removeObserver:self name:NSWindowWillCloseNotification object:nil]; + + if (renWin) + { + int windowCreated = renWin->GetWindowCreated (); + if (windowCreated) + { + [self breakEventLoop]; + + // The NSWindow is closing, so prevent anyone from accidentally using it + renWin->SetRootWindow(NULL); + } + } +} + +@end + +//---------------------------------------------------------------------------- + +namespace cv { namespace viz +{ + class vtkCocoaRenderWindowInteractorFix : public vtkCocoaRenderWindowInteractor + { + public: + static vtkCocoaRenderWindowInteractorFix *New (); + vtkTypeMacro (vtkCocoaRenderWindowInteractorFix, vtkCocoaRenderWindowInteractor) + + virtual void Start (); + virtual void TerminateApp (); + + protected: + vtkCocoaRenderWindowInteractorFix () {} + ~vtkCocoaRenderWindowInteractorFix () {} + + private: + vtkCocoaRenderWindowInteractorFix (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + void operator = (const vtkCocoaRenderWindowInteractorFix&); // Not implemented. + }; + + vtkStandardNewMacro (vtkCocoaRenderWindowInteractorFix) +}} + +void cv::viz::vtkCocoaRenderWindowInteractorFix::Start () +{ + vtkCocoaRenderWindow* renWin = vtkCocoaRenderWindow::SafeDownCast(this->GetRenderWindow ()); + if (renWin != NULL) + { + vtkCocoaServerFix *server = reinterpret_cast (this->GetCocoaServer ()); + if (!this->GetCocoaServer ()) + { + server = [vtkCocoaServerFix cocoaServerWithRenderWindow:renWin]; + this->SetCocoaServer (reinterpret_cast (server)); + } + + [server start]; + } +} + +void cv::viz::vtkCocoaRenderWindowInteractorFix::TerminateApp () +{ + vtkCocoaRenderWindow *renWin = vtkCocoaRenderWindow::SafeDownCast (this->RenderWindow); + if (renWin) + { + vtkCocoaServerFix *server = reinterpret_cast (this->GetCocoaServer ()); + [server stop]; + } +} + +vtkSmartPointer cv::viz::vtkCocoaRenderWindowInteractorNew() +{ + return vtkSmartPointer::New(); +} + + +#else + +vtkSmartPointer cv::viz::vtkCocoaRenderWindowInteractorNew() +{ + return vtkSmartPointer::New(); +} + +#endif diff --git a/modules/viz/src/vtk/vtkImageMatSource.cpp b/modules/viz/src/vtk/vtkImageMatSource.cpp new file mode 100644 index 000000000..d9de698df --- /dev/null +++ b/modules/viz/src/vtk/vtkImageMatSource.cpp @@ -0,0 +1,143 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkImageMatSource); +}} + +cv::viz::vtkImageMatSource::vtkImageMatSource() +{ + this->SetNumberOfInputPorts(0); + this->ImageData = vtkSmartPointer::New(); +} + +int cv::viz::vtkImageMatSource::RequestInformation(vtkInformation *, vtkInformationVector**, vtkInformationVector *outputVector) +{ + vtkInformation* outInfo = outputVector->GetInformationObject(0); + + outInfo->Set(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), this->ImageData->GetExtent(), 6); + outInfo->Set(vtkDataObject::SPACING(), 1.0, 1.0, 1.0); + outInfo->Set(vtkDataObject::ORIGIN(), 0.0, 0.0, 0.0); + + vtkDataObject::SetPointDataActiveScalarInfo(outInfo, this->ImageData->GetScalarType(), this->ImageData->GetNumberOfScalarComponents()); + return 1; +} + +int cv::viz::vtkImageMatSource::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector *outputVector) +{ + vtkInformation *outInfo = outputVector->GetInformationObject(0); + + vtkImageData *output = vtkImageData::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT()) ); + output->ShallowCopy(this->ImageData); + return 1; +} + +void cv::viz::vtkImageMatSource::SetImage(InputArray _image) +{ + CV_Assert(_image.depth() == CV_8U && (_image.channels() == 1 || _image.channels() == 3 || _image.channels() == 4)); + + Mat image = _image.getMat(); + + this->ImageData->SetDimensions(image.cols, image.rows, 1); +#if VTK_MAJOR_VERSION <= 5 + this->ImageData->SetNumberOfScalarComponents(image.channels()); + this->ImageData->SetScalarTypeToUnsignedChar(); + this->ImageData->AllocateScalars(); +#else + this->ImageData->AllocateScalars(VTK_UNSIGNED_CHAR, image.channels()); +#endif + + switch(image.channels()) + { + case 1: copyGrayImage(image, this->ImageData); break; + case 3: copyRGBImage (image, this->ImageData); break; + case 4: copyRGBAImage(image, this->ImageData); break; + } + this->ImageData->Modified(); +} + +void cv::viz::vtkImageMatSource::copyGrayImage(const Mat &source, vtkSmartPointer output) +{ + unsigned char* dptr = reinterpret_cast(output->GetScalarPointer()); + size_t elem_step = output->GetIncrements()[1]/sizeof(unsigned char); + + for (int y = 0; y < source.rows; ++y) + { + unsigned char* drow = dptr + elem_step * y; + const unsigned char *srow = source.ptr(y); + for (int x = 0; x < source.cols; ++x) + drow[x] = *srow++; + } +} + +void cv::viz::vtkImageMatSource::copyRGBImage(const Mat &source, vtkSmartPointer output) +{ + Vec3b* dptr = reinterpret_cast(output->GetScalarPointer()); + size_t elem_step = output->GetIncrements()[1]/sizeof(Vec3b); + + for (int y = 0; y < source.rows; ++y) + { + Vec3b* drow = dptr + elem_step * y; + const unsigned char *srow = source.ptr(y); + for (int x = 0; x < source.cols; ++x, srow += source.channels()) + drow[x] = Vec3b(srow[2], srow[1], srow[0]); + } +} + +void cv::viz::vtkImageMatSource::copyRGBAImage(const Mat &source, vtkSmartPointer output) +{ + Vec4b* dptr = reinterpret_cast(output->GetScalarPointer()); + size_t elem_step = output->GetIncrements()[1]/sizeof(Vec4b); + + for (int y = 0; y < source.rows; ++y) + { + Vec4b* drow = dptr + elem_step * y; + const unsigned char *srow = source.ptr(y); + for (int x = 0; x < source.cols; ++x, srow += source.channels()) + drow[x] = Vec4b(srow[2], srow[1], srow[0], srow[3]); + } +} diff --git a/modules/viz/src/vtk/vtkImageMatSource.h b/modules/viz/src/vtk/vtkImageMatSource.h new file mode 100644 index 000000000..a7a41e082 --- /dev/null +++ b/modules/viz/src/vtk/vtkImageMatSource.h @@ -0,0 +1,82 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +#ifndef __vtkImageMatSource_h +#define __vtkImageMatSource_h + +namespace cv +{ + namespace viz + { + class vtkImageMatSource : public vtkImageAlgorithm + { + public: + static vtkImageMatSource *New(); + vtkTypeMacro(vtkImageMatSource,vtkImageAlgorithm); + + void SetImage(InputArray image); + + protected: + vtkImageMatSource(); + ~vtkImageMatSource() {} + + vtkSmartPointer ImageData; + + int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*); + int RequestData (vtkInformation*, vtkInformationVector**, vtkInformationVector*); + private: + vtkImageMatSource(const vtkImageMatSource&); // Not implemented. + void operator=(const vtkImageMatSource&); // Not implemented. + + static void copyGrayImage(const Mat &source, vtkSmartPointer output); + static void copyRGBImage (const Mat &source, vtkSmartPointer output); + static void copyRGBAImage(const Mat &source, vtkSmartPointer output); + }; + } +} + + +#endif diff --git a/modules/viz/src/vtk/vtkOBJWriter.cpp b/modules/viz/src/vtk/vtkOBJWriter.cpp new file mode 100644 index 000000000..296b6eb06 --- /dev/null +++ b/modules/viz/src/vtk/vtkOBJWriter.cpp @@ -0,0 +1,270 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkOBJWriter); +}} + +cv::viz::vtkOBJWriter::vtkOBJWriter() +{ + std::ofstream fout; // only used to extract the default precision + this->DecimalPrecision = fout.precision(); + this->FileName = NULL; +} + +cv::viz::vtkOBJWriter::~vtkOBJWriter(){} + +void cv::viz::vtkOBJWriter::WriteData() +{ + vtkPolyData *input = this->GetInput(); + if (!input) + return; + + if (!this->FileName ) + { + vtkErrorMacro(<< "No FileName specified! Can't write!"); + this->SetErrorCode(vtkErrorCode::NoFileNameError); + return; + } + + vtkDebugMacro(<<"Opening vtk file for writing..."); + ostream *outfilep = new ofstream(this->FileName, ios::out); + if (outfilep->fail()) + { + vtkErrorMacro(<< "Unable to open file: "<< this->FileName); + this->SetErrorCode(vtkErrorCode::CannotOpenFileError); + delete outfilep; + return; + } + + std::ostream& outfile = *outfilep; + + //write header + outfile << "# wavefront obj file written by opencv viz module" << std::endl << std::endl; + outfile << "mtllib NONE" << std::endl << std::endl; + + // write out the points + for (int i = 0; i < input->GetNumberOfPoints(); i++) + { + Vec3d p; + input->GetPoint(i, p.val); + outfile << std::setprecision(this->DecimalPrecision) << "v " << p[0] << " " << p[1] << " " << p[2] << std::endl; + } + + const int idStart = 1; + + // write out the point data + vtkSmartPointer normals = input->GetPointData()->GetNormals(); + if(normals) + { + for (int i = 0; i < normals->GetNumberOfTuples(); i++) + { + Vec3d p; + normals->GetTuple(i, p.val); + outfile << std::setprecision(this->DecimalPrecision) << "vn " << p[0] << " " << p[1] << " " << p[2] << std::endl; + } + } + + vtkSmartPointer tcoords = input->GetPointData()->GetTCoords(); + if (tcoords) + { + for (int i = 0; i < tcoords->GetNumberOfTuples(); i++) + { + Vec2d p; + tcoords->GetTuple(i, p.val); + outfile << std::setprecision(this->DecimalPrecision) << "vt " << p[0] << " " << p[1] << std::endl; + } + } + + // write out a group name and material + outfile << std::endl << "g grp" << idStart << std::endl; + outfile << "usemtl mtlNONE" << std::endl; + + // write out verts if any + if (input->GetNumberOfVerts() > 0) + { + vtkIdType npts = 0, *index = 0; + vtkCellArray *cells = input->GetVerts(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { + outfile << "p "; + for (int i = 0; i < npts; i++) + outfile << index[i] + idStart << " "; + outfile << std::endl; + } + } + + // write out lines if any + if (input->GetNumberOfLines() > 0) + { + vtkIdType npts = 0, *index = 0; + vtkCellArray *cells = input->GetLines(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { + outfile << "l "; + if (tcoords) + { + for (int i = 0; i < npts; i++) + outfile << index[i] + idStart << "/" << index[i] + idStart << " "; + } + else + for (int i = 0; i < npts; i++) + outfile << index[i] + idStart << " "; + + outfile << std::endl; + } + } + + // write out polys if any + if (input->GetNumberOfPolys() > 0) + { + vtkIdType npts = 0, *index = 0; + vtkCellArray *cells = input->GetPolys(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { + outfile << "f "; + for (int i = 0; i < npts; i++) + { + if (normals) + { + if (tcoords) + outfile << index[i] + idStart << "/" << index[i] + idStart << "/" << index[i] + idStart << " "; + else + outfile << index[i] + idStart << "//" << index[i] + idStart << " "; + } + else + { + if (tcoords) + outfile << index[i] + idStart << " " << index[i] + idStart << " "; + else + outfile << index[i] + idStart << " "; + } + } + outfile << std::endl; + } + } + + // write out tstrips if any + if (input->GetNumberOfStrips() > 0) + { + vtkIdType npts = 0, *index = 0; + vtkCellArray *cells = input->GetStrips(); + for (cells->InitTraversal(); cells->GetNextCell(npts, index); ) + { + for (int i = 2, i1, i2; i < npts; ++i) + { + if (i % 2) + { + i1 = i - 1; + i2 = i - 2; + } + else + { + i1 = i - 1; + i2 = i - 2; + } + + if(normals) + { + if (tcoords) + { + outfile << "f " << index[i1] + idStart << "/" << index[i1] + idStart << "/" << index[i1] + idStart << " " + << index[i2]+ idStart << "/" << index[i2] + idStart << "/" << index[i2] + idStart << " " + << index[i] + idStart << "/" << index[i] + idStart << "/" << index[i] + idStart << std::endl; + } + else + { + outfile << "f " << index[i1] + idStart << "//" << index[i1] + idStart << " " << index[i2] + idStart + << "//" << index[i2] + idStart << " " << index[i] + idStart << "//" << index[i] + idStart << std::endl; + } + } + else + { + if (tcoords) + { + outfile << "f " << index[i1] + idStart << "/" << index[i1] + idStart << " " << index[i2] + idStart + << "/" << index[i2] + idStart << " " << index[i] + idStart << "/" << index[i] + idStart << std::endl; + } + else + outfile << "f " << index[i1] + idStart << " " << index[i2] + idStart << " " << index[i] + idStart << std::endl; + } + } /* for (int i = 2; i < npts; ++i) */ + } + } /* if (input->GetNumberOfStrips() > 0) */ + + vtkDebugMacro(<<"Closing vtk file\n"); + delete outfilep; + + // Delete the file if an error occurred + if (this->ErrorCode == vtkErrorCode::OutOfDiskSpaceError) + { + vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); + unlink(this->FileName); + } +} + +void cv::viz::vtkOBJWriter::PrintSelf(ostream& os, vtkIndent indent) +{ + Superclass::PrintSelf(os, indent); + os << indent << "DecimalPrecision: " << DecimalPrecision << "\n"; +} + +int cv::viz::vtkOBJWriter::FillInputPortInformation(int, vtkInformation *info) +{ + info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData"); + return 1; +} + +vtkPolyData* cv::viz::vtkOBJWriter::GetInput() +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput()); +} + +vtkPolyData* cv::viz::vtkOBJWriter::GetInput(int port) +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput(port)); +} diff --git a/modules/viz/src/vtk/vtkOBJWriter.h b/modules/viz/src/vtk/vtkOBJWriter.h new file mode 100644 index 000000000..7ad0f17b1 --- /dev/null +++ b/modules/viz/src/vtk/vtkOBJWriter.h @@ -0,0 +1,91 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkOBJWriter_h +#define __vtkOBJWriter_h + +#include + +namespace cv +{ + namespace viz + { + class vtkOBJWriter : public vtkWriter + { + public: + static vtkOBJWriter *New(); + vtkTypeMacro(vtkOBJWriter,vtkWriter) + void PrintSelf(ostream& os, vtkIndent indent); + + vtkGetMacro(DecimalPrecision, int) + vtkSetMacro(DecimalPrecision, int) + + // Description: + // Specify file name of data file to write. + vtkSetStringMacro(FileName) + vtkGetStringMacro(FileName) + + // Description: + // Get the input to this writer. + vtkPolyData* GetInput(); + vtkPolyData* GetInput(int port); + + protected: + vtkOBJWriter(); + ~vtkOBJWriter(); + + void WriteData(); + int FillInputPortInformation(int port, vtkInformation *info); + + int DecimalPrecision; + char *FileName; + + private: + vtkOBJWriter(const vtkOBJWriter&); // Not implemented. + void operator=(const vtkOBJWriter&); // Not implemented. + }; + } +} + +#endif diff --git a/modules/viz/src/vtk/vtkTrajectorySource.cpp b/modules/viz/src/vtk/vtkTrajectorySource.cpp new file mode 100644 index 000000000..d0e180a9c --- /dev/null +++ b/modules/viz/src/vtk/vtkTrajectorySource.cpp @@ -0,0 +1,110 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkTrajectorySource); +}} + +cv::viz::vtkTrajectorySource::vtkTrajectorySource() { SetNumberOfInputPorts(0); } +cv::viz::vtkTrajectorySource::~vtkTrajectorySource() {} + +void cv::viz::vtkTrajectorySource::SetTrajectory(InputArray _traj) +{ + CV_Assert(_traj.kind() == _InputArray::STD_VECTOR || _traj.kind() == _InputArray::MAT); + CV_Assert(_traj.type() == CV_32FC(16) || _traj.type() == CV_64FC(16)); + + Mat traj; + _traj.getMat().convertTo(traj, CV_64F); + const Affine3d* dpath = traj.ptr(); + size_t total = traj.total(); + + points = vtkSmartPointer::New(); + points->SetDataType(VTK_DOUBLE); + points->SetNumberOfPoints((vtkIdType)total); + + tensors = vtkSmartPointer::New(); + tensors->SetNumberOfComponents(9); + tensors->SetNumberOfTuples((vtkIdType)total); + + for(size_t i = 0; i < total; ++i, ++dpath) + { + Matx33d R = dpath->rotation().t(); // transposed because of + tensors->SetTuple((vtkIdType)i, R.val); // column major order + + Vec3d p = dpath->translation(); + points->SetPoint((vtkIdType)i, p.val); + } +} + +cv::Mat cv::viz::vtkTrajectorySource::ExtractPoints(InputArray _traj) +{ + CV_Assert(_traj.kind() == _InputArray::STD_VECTOR || _traj.kind() == _InputArray::MAT); + CV_Assert(_traj.type() == CV_32FC(16) || _traj.type() == CV_64FC(16)); + + Mat points(1, (int)_traj.total(), CV_MAKETYPE(_traj.depth(), 3)); + const Affine3d* dpath = _traj.getMat().ptr(); + const Affine3f* fpath = _traj.getMat().ptr(); + + if (_traj.depth() == CV_32F) + for(int i = 0; i < points.cols; ++i) + points.at(i) = fpath[i].translation(); + + if (_traj.depth() == CV_64F) + for(int i = 0; i < points.cols; ++i) + points.at(i) = dpath[i].translation(); + + return points; +} + +int cv::viz::vtkTrajectorySource::RequestData(vtkInformation *vtkNotUsed(request), vtkInformationVector **vtkNotUsed(inputVector), vtkInformationVector *outputVector) +{ + vtkInformation *outInfo = outputVector->GetInformationObject(0); + vtkPolyData *output = vtkPolyData::SafeDownCast(outInfo->Get(vtkDataObject::DATA_OBJECT())); + output->SetPoints(points); + output->GetPointData()->SetTensors(tensors); + return 1; +} diff --git a/modules/viz/src/vtk/vtkTrajectorySource.h b/modules/viz/src/vtk/vtkTrajectorySource.h new file mode 100644 index 000000000..f6c9c77b9 --- /dev/null +++ b/modules/viz/src/vtk/vtkTrajectorySource.h @@ -0,0 +1,84 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkTrajectorySource_h +#define __vtkTrajectorySource_h + +#include +#include +#include +#include +#include + +namespace cv +{ + namespace viz + { + class vtkTrajectorySource : public vtkPolyDataAlgorithm + { + public: + static vtkTrajectorySource *New(); + vtkTypeMacro(vtkTrajectorySource,vtkPolyDataAlgorithm) + + virtual void SetTrajectory(InputArray trajectory); + + static Mat ExtractPoints(InputArray trajectory); + + protected: + vtkTrajectorySource(); + ~vtkTrajectorySource(); + + vtkSmartPointer points; + vtkSmartPointer tensors; + + int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); + private: + vtkTrajectorySource(const vtkTrajectorySource&); // Not implemented. + void operator=(const vtkTrajectorySource&); // Not implemented. + + }; + } +} + +#endif diff --git a/modules/viz/src/vtk/vtkVizInteractorStyle.cpp b/modules/viz/src/vtk/vtkVizInteractorStyle.cpp new file mode 100644 index 000000000..e2d338066 --- /dev/null +++ b/modules/viz/src/vtk/vtkVizInteractorStyle.cpp @@ -0,0 +1,1076 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkVizInteractorStyle) +}} + +////////////////////////////////////////////////////////////////////////////////////////////// + +cv::viz::vtkVizInteractorStyle::vtkVizInteractorStyle() +{ + FlyMode = false; + MotionFactor = 10.0; + + keyboardCallback_ = 0; + keyboard_callback_cookie_ = 0; + + mouseCallback_ = 0; + mouse_callback_cookie_ = 0; + + // Set windows size (width, height) to unknown (-1) + win_size_ = Vec2i(-1, -1); + win_pos_ = Vec2i(0, 0); + max_win_size_ = Vec2i(-1, -1); + + stereo_anaglyph_redblue_ = true; + + //from fly + KeysDown = 0; + UseTimers = 1; + + DiagonalLength = 1.0; + MotionStepSize = 1.0/100.0; + MotionUserScale = 1.0; // +/- key adjustment + MotionAccelerationFactor = 10.0; + AngleStepSize = 1.0; +} + +cv::viz::vtkVizInteractorStyle::~vtkVizInteractorStyle() {} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::saveScreenshot(const String &file) +{ + FindPokedRenderer(Interactor->GetEventPosition()[0], Interactor->GetEventPosition()[1]); + + vtkSmartPointer wif = vtkSmartPointer::New(); + wif->SetInput(Interactor->GetRenderWindow()); + + vtkSmartPointer snapshot_writer = vtkSmartPointer::New(); + snapshot_writer->SetInputConnection(wif->GetOutputPort()); + snapshot_writer->SetFileName(file.c_str()); + snapshot_writer->Write(); + + cout << "Screenshot successfully captured (" << file.c_str() << ")" << endl; +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::exportScene(const String &file) +{ + vtkSmartPointer exporter; + if (file.size() > 5 && file.substr(file.size() - 5) == ".vrml") + { + exporter = vtkSmartPointer::New(); + vtkVRMLExporter::SafeDownCast(exporter)->SetFileName(file.c_str()); + } + else + { + exporter = vtkSmartPointer::New(); + vtkOBJExporter::SafeDownCast(exporter)->SetFilePrefix(file.c_str()); + } + + exporter->SetInput(Interactor->GetRenderWindow()); + exporter->Write(); + + cout << "Scene successfully exported (" << file.c_str() << ")" << endl; +} + +void cv::viz::vtkVizInteractorStyle::exportScene() +{ + // Export scene as in obj or vrml format + String format = Interactor->GetAltKey() ? "scene-%d.vrml" : "scene-%d"; + exportScene(cv::format(format.c_str(), (unsigned int)time(0))); +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::changePointsSize(float delta) +{ + vtkSmartPointer ac = CurrentRenderer->GetActors(); + vtkCollectionSimpleIterator ait; + + for (ac->InitTraversal(ait); vtkActor* actor = ac->GetNextActor(ait); ) + for (actor->InitPathTraversal(); vtkAssemblyPath* path = actor->GetNextPath(); ) + { + vtkActor* apart = vtkActor::SafeDownCast(path->GetLastNode()->GetViewProp()); + float psize = apart->GetProperty()->GetPointSize() + delta; + psize = std::max(1.f, std::min(63.f, psize)); + apart->GetProperty()->SetPointSize(psize); + } +} + +void cv::viz::vtkVizInteractorStyle::setRepresentationToPoints() +{ + vtkSmartPointer ac = CurrentRenderer->GetActors(); + vtkCollectionSimpleIterator ait; + for (ac->InitTraversal(ait); vtkActor* actor = ac->GetNextActor(ait); ) + for (actor->InitPathTraversal(); vtkAssemblyPath* path = actor->GetNextPath(); ) + { + vtkActor* apart = vtkActor::SafeDownCast(path->GetLastNode()->GetViewProp()); + apart->GetProperty()->SetRepresentationToPoints(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::printCameraParams() +{ + vtkSmartPointer cam = Interactor->GetRenderWindow()->GetRenderers()->GetFirstRenderer()->GetActiveCamera(); + + Vec2d clip(cam->GetClippingRange()); + Vec3d focal(cam->GetFocalPoint()), pos(cam->GetPosition()), view(cam->GetViewUp()); + Vec2i win_pos(Interactor->GetRenderWindow()->GetPosition()); + Vec2i win_size(Interactor->GetRenderWindow()->GetSize()); + double angle = cam->GetViewAngle () / 180.0 * CV_PI; + + String data = cv::format("clip(%f,%f) focal(%f,%f,%f) pos(%f,%f,%f) view(%f,%f,%f) angle(%f) winsz(%d,%d) winpos(%d,%d)", + clip[0], clip[1], focal[0], focal[1], focal[2], pos[0], pos[1], pos[2], view[0], view[1], view[2], + angle, win_size[0], win_size[1], win_pos[0], win_pos[1]); + + std::cout << data.c_str() << std::endl; +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::toggleFullScreen() +{ + Vec2i screen_size(Interactor->GetRenderWindow()->GetScreenSize()); + Vec2i win_size(Interactor->GetRenderWindow()->GetSize()); + + // Is window size = max? + if (win_size == max_win_size_) + { + Interactor->GetRenderWindow()->SetSize(win_size_.val); + Interactor->GetRenderWindow()->SetPosition(win_pos_.val); + Interactor->Render(); + } + // Set to max + else + { + win_pos_ = Vec2i(Interactor->GetRenderWindow()->GetPosition()); + win_size_ = win_size; + + Interactor->GetRenderWindow()->SetSize(screen_size.val); + Interactor->Render(); + max_win_size_ = Vec2i(Interactor->GetRenderWindow()->GetSize()); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::resetViewerPose() +{ + WidgetActorMap::iterator it = widget_actor_map_->begin(); + // it might be that some actors don't have a valid transformation set -> we skip them to avoid a seg fault. + for (; it != widget_actor_map_->end(); ++it) + { + vtkProp3D * actor = vtkProp3D::SafeDownCast(it->second); + if (actor && actor->GetUserMatrix()) + break; + } + + vtkSmartPointer cam = CurrentRenderer->GetActiveCamera(); + + // if a valid transformation was found, use it otherwise fall back to default view point. + if (it != widget_actor_map_->end()) + { + vtkMatrix4x4* m = vtkProp3D::SafeDownCast(it->second)->GetUserMatrix(); + + cam->SetFocalPoint(m->GetElement(0, 3) - m->GetElement(0, 2), + m->GetElement(1, 3) - m->GetElement(1, 2), + m->GetElement(2, 3) - m->GetElement(2, 2)); + + cam->SetViewUp (m->GetElement(0, 1), m->GetElement(1, 1), m->GetElement(2, 1)); + cam->SetPosition(m->GetElement(0, 3), m->GetElement(1, 3), m->GetElement(2, 3)); + } + else + { + cam->SetPosition(0, 0, 0); + cam->SetFocalPoint(0, 0, 1); + cam->SetViewUp(0, -1, 0); + } + + // go to the next actor for the next key-press event. + if (it != widget_actor_map_->end()) + ++it; + else + it = widget_actor_map_->begin(); + + CurrentRenderer->SetActiveCamera(cam); + CurrentRenderer->ResetCameraClippingRange(); + Interactor->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::toggleStereo() +{ + vtkSmartPointer window = Interactor->GetRenderWindow(); + if (!window->GetStereoRender()) + { + static Vec2i red_blue(4, 3), magenta_green(2, 5); + window->SetAnaglyphColorMask (stereo_anaglyph_redblue_ ? red_blue.val : magenta_green.val); + stereo_anaglyph_redblue_ = !stereo_anaglyph_redblue_; + } + window->SetStereoRender(!window->GetStereoRender()); + Interactor->Render(); + +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::printHelp() +{ + std::cout << "| Help:\n" + "-------\n" + " p, P : switch to a point-based representation\n" + " w, W : switch to a wireframe-based representation (where available)\n" + " s, S : switch to a surface-based representation (where available)\n" + "\n" + " j, J : take a .PNG snapshot of the current window view\n" + " k, K : export scene to Wavefront .obj format\n" + " ALT + k, K : export scene to VRML format\n" + " c, C : display current camera/window parameters\n" + " F5 : enable/disable fly mode (changes control style)\n" + "\n" + " e, E : exit the interactor\n" + " q, Q : stop and call VTK's TerminateApp\n" + "\n" + " +/- : increment/decrement overall point size\n" + " +/- [+ ALT] : zoom in/out \n" + "\n" + " r, R [+ ALT] : reset camera [to viewpoint = {0, 0, 0} -> center_{x, y, z}]\n" + "\n" + " ALT + s, S : turn stereo mode on/off\n" + " ALT + f, F : switch between maximized window mode and original size\n" + "\n" + << std::endl; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::zoomIn() +{ + FindPokedRenderer(Interactor->GetEventPosition()[0], Interactor->GetEventPosition()[1]); + // Zoom in + StartDolly(); + double factor = 10.0 * 0.2 * .5; + Dolly(std::pow(1.1, factor)); + EndDolly(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::zoomOut() +{ + FindPokedRenderer(Interactor->GetEventPosition()[0], Interactor->GetEventPosition()[1]); + // Zoom out + StartDolly(); + double factor = 10.0 * -0.2 * .5; + Dolly(std::pow(1.1, factor)); + EndDolly(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnChar() +{ + FindPokedRenderer(Interactor->GetEventPosition()[0], Interactor->GetEventPosition()[1]); + + String key(Interactor->GetKeySym()); + if (key.find("XF86ZoomIn") != String::npos) + zoomIn(); + else if (key.find("XF86ZoomOut") != String::npos) + zoomOut(); + + switch (Interactor->GetKeyCode()) + { +// // All of the options below simply exit +// case 'l': case 'L': case 'j': case 'J': case 'c': case 'C': case 'q': case 'Q': +// case 'f': case 'F': case 'g': case 'G': case 'o': case 'O': case 'u': case 'U': + case 'p': case 'P': + break; + + case '+': + if (FlyMode) + MotionUserScale = std::min(16.0, MotionUserScale*2.0); + break; + case '-': + if (FlyMode) + MotionUserScale = std::max(MotionUserScale * 0.5, 0.0625); + break; + + case 'r': case 'R': case 's': case 'S': + if (!Interactor->GetAltKey()) + Superclass::OnChar(); + break; + default: + Superclass::OnChar(); + break; + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::registerMouseCallback(void (*callback)(const MouseEvent&, void*), void* cookie) +{ + mouseCallback_ = callback; + mouse_callback_cookie_ = cookie; +} + +void cv::viz::vtkVizInteractorStyle::registerKeyboardCallback(void (*callback)(const KeyboardEvent&, void*), void *cookie) +{ + keyboardCallback_ = callback; + keyboard_callback_cookie_ = cookie; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +int cv::viz::vtkVizInteractorStyle::getModifiers() +{ + int modifiers = KeyboardEvent::NONE; + + if (Interactor->GetAltKey()) + modifiers |= KeyboardEvent::ALT; + + if (Interactor->GetControlKey()) + modifiers |= KeyboardEvent::CTRL; + + if (Interactor->GetShiftKey()) + modifiers |= KeyboardEvent::SHIFT; + return modifiers; +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnKeyDown() +{ + FindPokedRenderer(Interactor->GetEventPosition()[0], Interactor->GetEventPosition()[1]); + + String key(Interactor->GetKeySym()); + if (key.find("XF86ZoomIn") != String::npos) + zoomIn(); + else if (key.find("XF86ZoomOut") != String::npos) + zoomOut(); + else if (key.find("F5") != String::npos) + { + FlyMode = !FlyMode; + std::cout << (FlyMode ? "Fly mode: on" : "Fly mode: off") << std::endl; + } + + // Save the initial windows width/height + if (win_size_[0] == -1 || win_size_[1] == -1) + win_size_ = Vec2i(Interactor->GetRenderWindow()->GetSize()); + + switch (Interactor->GetKeyCode()) + { + case 'a': case 'A' : KeysDown |=16; break; + case 'z': case 'Z' : KeysDown |=32; break; + case 'h': case 'H' : printHelp(); break; + case 'p': case 'P' : setRepresentationToPoints(); break; + case 'k': case 'K' : exportScene(); break; + case 'j': case 'J' : saveScreenshot(cv::format("screenshot-%d.png", (unsigned int)time(0))); break; + case 'c': case 'C' : printCameraParams(); break; + case '=': zoomIn(); break; + case 43: // KEY_PLUS + { + if (FlyMode) + break; + if (Interactor->GetAltKey()) + zoomIn(); + else + changePointsSize(+1.f); + break; + } + case 45: // KEY_MINUS + { + if (FlyMode) + break; + if (Interactor->GetAltKey()) + zoomOut(); + else + changePointsSize(-1.f); + break; + } + // Switch between maximize and original window size + case 'f': case 'F': + { + if (Interactor->GetAltKey()) + toggleFullScreen(); + break; + } + // 's'/'S' w/out ALT + case 's': case 'S': + { + if (Interactor->GetAltKey()) + toggleStereo(); + break; + } + + case 'o': case 'O': + { + vtkSmartPointer cam = CurrentRenderer->GetActiveCamera(); + cam->SetParallelProjection(!cam->GetParallelProjection()); + Interactor->Render(); + break; + } + + // Overwrite the camera reset + case 'r': case 'R': + { + if (Interactor->GetAltKey()) + resetViewerPose(); + break; + } + case 'q': case 'Q': + Interactor->ExitCallback(); return; + default: + Superclass::OnKeyDown(); break; + } + + KeyboardEvent event(KeyboardEvent::KEY_DOWN, Interactor->GetKeySym(), Interactor->GetKeyCode(), getModifiers()); + if (keyboardCallback_) + keyboardCallback_(event, keyboard_callback_cookie_); + + if (FlyMode && (KeysDown & (32+16)) == (32+16)) + { + if (State == VTKIS_FORWARDFLY || State == VTKIS_REVERSEFLY) + StopState(); + } + else if (FlyMode && (KeysDown & 32) == 32) + { + if (State == VTKIS_FORWARDFLY) + StopState(); + + if (State == VTKIS_NONE) + StartState(VTKIS_REVERSEFLY); + } + else if (FlyMode && (KeysDown & 16) == 16) + { + if (State == VTKIS_REVERSEFLY) + StopState(); + + if (State == VTKIS_NONE) + StartState(VTKIS_FORWARDFLY); + } + + Interactor->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnKeyUp() +{ + KeyboardEvent event(KeyboardEvent::KEY_UP, Interactor->GetKeySym(), Interactor->GetKeyCode(), getModifiers()); + if (keyboardCallback_) + keyboardCallback_(event, keyboard_callback_cookie_); + + switch (Interactor->GetKeyCode()) + { + case 'a': case 'A' : KeysDown &= ~16; break; + case 'z': case 'Z' : KeysDown &= ~32; break; + } + + if (State == VTKIS_FORWARDFLY && (KeysDown & 16) == 0) + StopState(); + + if (State == VTKIS_REVERSEFLY && (KeysDown & 32) == 0) + StopState(); + + Superclass::OnKeyUp(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnMouseMove() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseMove, MouseEvent::NoButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + FindPokedRenderer(p[0], p[1]); + + if (State == VTKIS_ROTATE || State == VTKIS_PAN || State == VTKIS_DOLLY || State == VTKIS_SPIN) + { + switch (State) + { + case VTKIS_ROTATE: Rotate(); break; + case VTKIS_PAN: Pan(); break; + case VTKIS_DOLLY: Dolly(); break; + case VTKIS_SPIN: Spin(); break; + } + + InvokeEvent(vtkCommand::InteractionEvent, NULL); + } + + if (State == VTKIS_FORWARDFLY || State == VTKIS_REVERSEFLY) + { + vtkCamera *cam = CurrentRenderer->GetActiveCamera(); + Vec2i thispos(Interactor->GetEventPosition()); + Vec2i lastpos(Interactor->GetLastEventPosition()); + + // we want to steer by an amount proportional to window viewangle and size + // compute dx and dy increments relative to last mouse click + Vec2i size(Interactor->GetSize()); + double scalefactor = 5*cam->GetViewAngle()/size[0]; + + double dx = - (thispos[0] - lastpos[0])*scalefactor*AngleStepSize; + double dy = (thispos[1] - lastpos[1])*scalefactor*AngleStepSize; + + // Temporary until I get smooth flight working + DeltaPitch = dy; + DeltaYaw = dx; + + InvokeEvent(vtkCommand::InteractionEvent, NULL); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnLeftButtonDown() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; + MouseEvent event(type, MouseEvent::LeftButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + FindPokedRenderer(p[0], p[1]); + if (!CurrentRenderer) + return; + + GrabFocus(EventCallbackCommand); + + if (FlyMode) + { + if(State == VTKIS_REVERSEFLY) + State = VTKIS_FORWARDFLY; + else + { + SetupMotionVars(); + if (State == VTKIS_NONE) + StartState(VTKIS_FORWARDFLY); + } + } + else + { + if (Interactor->GetShiftKey()) + { + if (Interactor->GetControlKey()) + StartDolly(); + else + StartPan(); + } + else + { + if (Interactor->GetControlKey()) + StartSpin(); + else + StartRotate(); + } + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnLeftButtonUp() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseButtonRelease, MouseEvent::LeftButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + switch (State) + { + case VTKIS_DOLLY: EndDolly(); break; + case VTKIS_PAN: EndPan(); break; + case VTKIS_SPIN: EndSpin(); break; + case VTKIS_ROTATE: EndRotate(); break; + case VTKIS_FORWARDFLY: StopState(); break; + } + + if (Interactor ) + ReleaseFocus(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnMiddleButtonDown() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; + MouseEvent event(type, MouseEvent::MiddleButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + FindPokedRenderer(p[0], p[1]); + if (!CurrentRenderer) + return; + + GrabFocus(EventCallbackCommand); + StartPan(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnMiddleButtonUp() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseButtonRelease, MouseEvent::MiddleButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + if (State == VTKIS_PAN) + { + EndPan(); + if (Interactor) + ReleaseFocus(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnRightButtonDown() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent::Type type = (Interactor->GetRepeatCount() == 0) ? MouseEvent::MouseButtonPress : MouseEvent::MouseDblClick; + MouseEvent event(type, MouseEvent::RightButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + FindPokedRenderer(p[0], p[1]); + if (!CurrentRenderer) + return; + + GrabFocus(EventCallbackCommand); + + if (FlyMode) + { + if (State == VTKIS_FORWARDFLY) + State = VTKIS_REVERSEFLY; + else + { + SetupMotionVars(); + if (State == VTKIS_NONE) + StartState(VTKIS_REVERSEFLY); + } + + } + else + StartDolly(); +} + + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnRightButtonUp() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseButtonRelease, MouseEvent::RightButton, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + if(State == VTKIS_DOLLY) + { + EndDolly(); + if (Interactor) + ReleaseFocus(); + } + + if (State == VTKIS_REVERSEFLY) + { + StopState(); + if (Interactor) + ReleaseFocus(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnMouseWheelForward() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseScrollUp, MouseEvent::VScroll, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + if (Interactor->GetRepeatCount() && mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + if (Interactor->GetAltKey()) + { + // zoom + vtkSmartPointer cam = CurrentRenderer->GetActiveCamera(); + double opening_angle = cam->GetViewAngle(); + if (opening_angle > 15.0) + opening_angle -= 1.0; + + cam->SetViewAngle(opening_angle); + cam->Modified(); + CurrentRenderer->ResetCameraClippingRange(); + CurrentRenderer->Modified(); + Interactor->Render(); + } + else + { + FindPokedRenderer(p[0], p[1]); + if (!CurrentRenderer) + return; + + GrabFocus(EventCallbackCommand); + StartDolly(); + Dolly(pow(1.1, MotionFactor * 0.2 * MouseWheelMotionFactor)); + EndDolly(); + ReleaseFocus(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnMouseWheelBackward() +{ + Vec2i p(Interactor->GetEventPosition()); + MouseEvent event(MouseEvent::MouseScrollDown, MouseEvent::VScroll, p, getModifiers()); + if (mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + if (Interactor->GetRepeatCount() && mouseCallback_) + mouseCallback_(event, mouse_callback_cookie_); + + if (Interactor->GetAltKey()) + { + // zoom + vtkSmartPointer cam = CurrentRenderer->GetActiveCamera(); + double opening_angle = cam->GetViewAngle(); + if (opening_angle < 170.0) + opening_angle += 1.0; + + cam->SetViewAngle(opening_angle); + cam->Modified(); + CurrentRenderer->ResetCameraClippingRange(); + CurrentRenderer->Modified(); + Interactor->Render(); + } + else + { + FindPokedRenderer(p[0], p[1]); + if (!CurrentRenderer) + return; + + GrabFocus(EventCallbackCommand); + StartDolly(); + Dolly(pow(1.1, MotionFactor * -0.2 * MouseWheelMotionFactor)); + EndDolly(); + ReleaseFocus(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::OnTimer() +{ + if (State == VTKIS_FORWARDFLY || State == VTKIS_REVERSEFLY) + Fly(); + + Interactor->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::Rotate() +{ + if (!CurrentRenderer) + return; + + Vec2i dxy = Vec2i(Interactor->GetEventPosition()) - Vec2i(Interactor->GetLastEventPosition()); + Vec2i size(CurrentRenderer->GetRenderWindow()->GetSize()); + + double delta_elevation = -20.0 / size[1]; + double delta_azimuth = -20.0 / size[0]; + + double rxf = dxy[0] * delta_azimuth * MotionFactor; + double ryf = dxy[1] * delta_elevation * MotionFactor; + + vtkCamera *camera = CurrentRenderer->GetActiveCamera(); + camera->Azimuth(rxf); + camera->Elevation(ryf); + camera->OrthogonalizeViewUp(); + + if (AutoAdjustCameraClippingRange) + CurrentRenderer->ResetCameraClippingRange(); + + if (Interactor->GetLightFollowCamera()) + CurrentRenderer->UpdateLightsGeometryToFollowCamera(); + + Interactor->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::Spin() +{ + if (!CurrentRenderer) + return; + + vtkRenderWindowInteractor *rwi = Interactor; + + double *center = CurrentRenderer->GetCenter(); + + double newAngle = vtkMath::DegreesFromRadians( atan2( rwi->GetEventPosition()[1] - center[1], rwi->GetEventPosition()[0] - center[0] ) ); + double oldAngle = vtkMath::DegreesFromRadians( atan2( rwi->GetLastEventPosition()[1] - center[1], rwi->GetLastEventPosition()[0] - center[0] ) ); + + vtkCamera *camera = CurrentRenderer->GetActiveCamera(); + camera->Roll( newAngle - oldAngle ); + camera->OrthogonalizeViewUp(); + + rwi->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// +void cv::viz::vtkVizInteractorStyle::Pan() +{ + if (!CurrentRenderer) + return; + + vtkRenderWindowInteractor *rwi = Interactor; + + double viewFocus[4], focalDepth, viewPoint[3]; + double newPickPoint[4], oldPickPoint[4], motionVector[3]; + + // Calculate the focal depth since we'll be using it a lot + + vtkCamera *camera = CurrentRenderer->GetActiveCamera(); + camera->GetFocalPoint(viewFocus); + ComputeWorldToDisplay(viewFocus[0], viewFocus[1], viewFocus[2], viewFocus); + focalDepth = viewFocus[2]; + + ComputeDisplayToWorld(rwi->GetEventPosition()[0], rwi->GetEventPosition()[1], focalDepth, newPickPoint); + + // Has to recalc old mouse point since the viewport has moved, so can't move it outside the loop + ComputeDisplayToWorld(rwi->GetLastEventPosition()[0], rwi->GetLastEventPosition()[1], focalDepth, oldPickPoint); + + // Camera motion is reversed + motionVector[0] = oldPickPoint[0] - newPickPoint[0]; + motionVector[1] = oldPickPoint[1] - newPickPoint[1]; + motionVector[2] = oldPickPoint[2] - newPickPoint[2]; + + camera->GetFocalPoint(viewFocus); + camera->GetPosition(viewPoint); + camera->SetFocalPoint(motionVector[0] + viewFocus[0], motionVector[1] + viewFocus[1], motionVector[2] + viewFocus[2]); + camera->SetPosition( motionVector[0] + viewPoint[0], motionVector[1] + viewPoint[1], motionVector[2] + viewPoint[2]); + + if (Interactor->GetLightFollowCamera()) + CurrentRenderer->UpdateLightsGeometryToFollowCamera(); + + Interactor->Render(); +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::Dolly() +{ + if (!CurrentRenderer) + return; + + int dy = Interactor->GetEventPosition()[1] - Interactor->GetLastEventPosition()[1]; + Dolly(pow(1.1, MotionFactor * dy / CurrentRenderer->GetCenter()[1])); +} + +void cv::viz::vtkVizInteractorStyle::Dolly(double factor) +{ + if (!CurrentRenderer) + return; + + vtkCamera *camera = CurrentRenderer->GetActiveCamera(); + if (camera->GetParallelProjection()) + camera->SetParallelScale(camera->GetParallelScale() / factor); + else + { + camera->Dolly(factor); + if (AutoAdjustCameraClippingRange) + CurrentRenderer->ResetCameraClippingRange(); + } + + if (Interactor->GetLightFollowCamera()) + CurrentRenderer->UpdateLightsGeometryToFollowCamera(); + + Interactor->Render(); +} +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::Fly() +{ + if (CurrentRenderer == NULL) + return; + + if (KeysDown) + FlyByKey(); + else + FlyByMouse(); + + CurrentRenderer->GetActiveCamera()->OrthogonalizeViewUp(); + + if (AutoAdjustCameraClippingRange) + CurrentRenderer->ResetCameraClippingRange(); + + if (Interactor->GetLightFollowCamera()) + CurrentRenderer->UpdateLightsGeometryToFollowCamera(); +} + +void cv::viz::vtkVizInteractorStyle::SetupMotionVars() +{ + Vec6d bounds; + CurrentRenderer->ComputeVisiblePropBounds(bounds.val); + + if ( !vtkMath::AreBoundsInitialized(bounds.val) ) + DiagonalLength = 1.0; + else + DiagonalLength = norm(Vec3d(bounds[0], bounds[2], bounds[4]) - Vec3d(bounds[1], bounds[3], bounds[5])); +} + +void cv::viz::vtkVizInteractorStyle::MotionAlongVector(const Vec3d& vector, double amount, vtkCamera* cam) +{ + // move camera and focus along DirectionOfProjection + Vec3d campos = Vec3d(cam->GetPosition()) - amount * vector; + Vec3d camfoc = Vec3d(cam->GetFocalPoint()) - amount * vector; + + cam->SetPosition(campos.val); + cam->SetFocalPoint(camfoc.val); +} + +void cv::viz::vtkVizInteractorStyle::FlyByMouse() +{ + vtkCamera* cam = CurrentRenderer->GetActiveCamera(); + double speed = DiagonalLength * MotionStepSize * MotionUserScale; + speed = speed * ( Interactor->GetShiftKey() ? MotionAccelerationFactor : 1.0); + + // Sidestep + if (Interactor->GetAltKey()) + { + if (DeltaYaw!=0.0) + { + vtkMatrix4x4 *vtm = cam->GetViewTransformMatrix(); + Vec3d a_vector(vtm->GetElement(0,0), vtm->GetElement(0,1), vtm->GetElement(0,2)); + + MotionAlongVector(a_vector, -DeltaYaw*speed, cam); + } + if (DeltaPitch!=0.0) + { + Vec3d a_vector(cam->GetViewUp()); + MotionAlongVector(a_vector, DeltaPitch*speed, cam); + } + } + else + { + cam->Yaw(DeltaYaw); + cam->Pitch(DeltaPitch); + DeltaYaw = 0; + DeltaPitch = 0; + } + // + if (!Interactor->GetControlKey()) + { + Vec3d a_vector(cam->GetDirectionOfProjection()); // reversed (use -speed) + switch (State) + { + case VTKIS_FORWARDFLY: MotionAlongVector(a_vector, -speed, cam); break; + case VTKIS_REVERSEFLY: MotionAlongVector(a_vector, speed, cam); break; + } + } +} + +void cv::viz::vtkVizInteractorStyle::FlyByKey() +{ + vtkCamera* cam = CurrentRenderer->GetActiveCamera(); + + double speed = DiagonalLength * MotionStepSize * MotionUserScale; + speed = speed * ( Interactor->GetShiftKey() ? MotionAccelerationFactor : 1.0); + + // Left and right + if (Interactor->GetAltKey()) + { // Sidestep + vtkMatrix4x4 *vtm = cam->GetViewTransformMatrix(); + Vec3d a_vector(vtm->GetElement(0,0), vtm->GetElement(0,1), vtm->GetElement(0,2)); + + if (KeysDown & 1) + MotionAlongVector(a_vector, -speed, cam); + + if (KeysDown & 2) + MotionAlongVector(a_vector, speed, cam); + } + else + { + if (KeysDown & 1) + cam->Yaw( AngleStepSize); + + if (KeysDown & 2) + cam->Yaw(-AngleStepSize); + } + + // Up and Down + if (Interactor->GetControlKey()) + { // Sidestep + Vec3d a_vector = Vec3d(cam->GetViewUp()); + if (KeysDown & 4) + MotionAlongVector(a_vector,-speed, cam); + + if (KeysDown & 8) + MotionAlongVector(a_vector, speed, cam); + } + else + { + if (KeysDown & 4) + cam->Pitch(-AngleStepSize); + + if (KeysDown & 8) + cam->Pitch( AngleStepSize); + } + + // forward and backward + Vec3d a_vector(cam->GetDirectionOfProjection()); + if (KeysDown & 16) + MotionAlongVector(a_vector, speed, cam); + + if (KeysDown & 32) + MotionAlongVector(a_vector,-speed, cam); +} + +////////////////////////////////////////////////////////////////////////////////////////////// + +void cv::viz::vtkVizInteractorStyle::PrintSelf(ostream& os, vtkIndent indent) +{ + Superclass::PrintSelf(os, indent); + os << indent << "MotionFactor: " << MotionFactor << "\n"; + os << indent << "MotionStepSize: " << MotionStepSize << "\n"; + os << indent << "MotionAccelerationFactor: "<< MotionAccelerationFactor << "\n"; + os << indent << "AngleStepSize: " << AngleStepSize << "\n"; + os << indent << "MotionUserScale: "<< MotionUserScale << "\n"; +} diff --git a/modules/viz/src/vtk/vtkVizInteractorStyle.hpp b/modules/viz/src/vtk/vtkVizInteractorStyle.hpp new file mode 100644 index 000000000..c9458ae06 --- /dev/null +++ b/modules/viz/src/vtk/vtkVizInteractorStyle.hpp @@ -0,0 +1,169 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __OPENCV_VIZ_INTERACTOR_STYLE_H__ +#define __OPENCV_VIZ_INTERACTOR_STYLE_H__ + +#include + +namespace cv +{ + namespace viz + { + class vtkVizInteractorStyle : public vtkInteractorStyle + { + public: + static vtkVizInteractorStyle *New(); + vtkTypeMacro(vtkVizInteractorStyle, vtkInteractorStyle) + void PrintSelf(ostream& os, vtkIndent indent); + + virtual void OnChar(); + virtual void OnKeyDown(); + virtual void OnKeyUp(); + + virtual void OnMouseMove(); + virtual void OnLeftButtonDown(); + virtual void OnLeftButtonUp(); + virtual void OnMiddleButtonDown(); + virtual void OnMiddleButtonUp(); + virtual void OnRightButtonDown(); + virtual void OnRightButtonUp(); + virtual void OnMouseWheelForward(); + virtual void OnMouseWheelBackward(); + virtual void OnTimer(); + + virtual void Rotate(); + virtual void Spin(); + virtual void Pan(); + virtual void Dolly(); + + vtkSetMacro(FlyMode,bool) + vtkGetMacro(FlyMode,bool) + + + vtkSetMacro(MotionFactor, double) + vtkGetMacro(MotionFactor, double) + + void registerMouseCallback(void (*callback)(const MouseEvent&, void*), void* cookie = 0); + void registerKeyboardCallback(void (*callback)(const KeyboardEvent&, void*), void * cookie = 0); + + void setWidgetActorMap(const Ptr& actors) { widget_actor_map_ = actors; } + void saveScreenshot(const String &file); + void exportScene(const String &file); + void exportScene(); + void changePointsSize(float delta); + void setRepresentationToPoints(); + void printCameraParams(); + void toggleFullScreen(); + void resetViewerPose(); + void toggleStereo(); + void printHelp(); + + // Set the basic unit step size : by default 1/250 of bounding diagonal + vtkSetMacro(MotionStepSize,double) + vtkGetMacro(MotionStepSize,double) + + // Set acceleration factor when shift key is applied : default 10 + vtkSetMacro(MotionAccelerationFactor,double) + vtkGetMacro(MotionAccelerationFactor,double) + + // Set the basic angular unit for turning : default 1 degree + vtkSetMacro(AngleStepSize,double) + vtkGetMacro(AngleStepSize,double) + + private: + Ptr widget_actor_map_; + + Vec2i win_size_; + Vec2i win_pos_; + Vec2i max_win_size_; + + void zoomIn(); + void zoomOut(); + + protected: + vtkVizInteractorStyle(); + ~vtkVizInteractorStyle(); + + virtual void Dolly(double factor); + + void Fly(); + void FlyByMouse(); + void FlyByKey(); + void SetupMotionVars(); + void MotionAlongVector(const Vec3d& vector, double amount, vtkCamera* cam); + + private: + vtkVizInteractorStyle(const vtkVizInteractorStyle&); + vtkVizInteractorStyle& operator=(const vtkVizInteractorStyle&); + + //! True for red-blue colors, false for magenta-green. + bool stereo_anaglyph_redblue_; + + void (*keyboardCallback_)(const KeyboardEvent&, void*); + void *keyboard_callback_cookie_; + + void (*mouseCallback_)(const MouseEvent&, void*); + void *mouse_callback_cookie_; + + bool FlyMode; + double MotionFactor; + + int getModifiers(); + + // from fly + unsigned char KeysDown; + double DiagonalLength; + double MotionStepSize; + double MotionUserScale; + double MotionAccelerationFactor; + double AngleStepSize; + double DeltaYaw; + double DeltaPitch; + }; + } // end namespace viz +} // end namespace cv + +#endif diff --git a/modules/viz/src/vtk/vtkXYZReader.cpp b/modules/viz/src/vtk/vtkXYZReader.cpp new file mode 100644 index 000000000..57726eae9 --- /dev/null +++ b/modules/viz/src/vtk/vtkXYZReader.cpp @@ -0,0 +1,107 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkXYZReader); +}} + + +cv::viz::vtkXYZReader::vtkXYZReader() +{ + this->FileName = 0; + this->SetNumberOfInputPorts(0); +} + +cv::viz::vtkXYZReader::~vtkXYZReader() +{ + this->SetFileName(0); +} + +void cv::viz::vtkXYZReader::PrintSelf(ostream& os, vtkIndent indent) +{ + this->Superclass::PrintSelf(os,indent); + os << indent << "FileName: " << (this->FileName ? this->FileName : "(none)") << "\n"; +} + +int cv::viz::vtkXYZReader::RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector* outputVector) +{ + // Make sure we have a file to read. + if(!this->FileName) + { + vtkErrorMacro("A FileName must be specified."); + return 0; + } + + // Open the input file. + ifstream fin(this->FileName); + if(!fin) + { + vtkErrorMacro("Error opening file " << this->FileName); + return 0; + } + + // Allocate objects to hold points and vertex cells. + vtkSmartPointer points = vtkSmartPointer::New(); + vtkSmartPointer verts = vtkSmartPointer::New(); + + // Read points from the file. + vtkDebugMacro("Reading points from file " << this->FileName); + double x[3]; + while(fin >> x[0] >> x[1] >> x[2]) + { + vtkIdType id = points->InsertNextPoint(x); + verts->InsertNextCell(1, &id); + } + vtkDebugMacro("Read " << points->GetNumberOfPoints() << " points."); + + // Store the points and cells in the output data object. + vtkPolyData* output = vtkPolyData::GetData(outputVector); + output->SetPoints(points); + output->SetVerts(verts); + + return 1; +} diff --git a/modules/viz/src/vtk/vtkXYZReader.h b/modules/viz/src/vtk/vtkXYZReader.h new file mode 100644 index 000000000..13ae048ec --- /dev/null +++ b/modules/viz/src/vtk/vtkXYZReader.h @@ -0,0 +1,80 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkXYZReader_h +#define __vtkXYZReader_h + +#include "vtkPolyDataAlgorithm.h" + +namespace cv +{ + namespace viz + { + class vtkXYZReader : public vtkPolyDataAlgorithm + { + public: + static vtkXYZReader* New(); + vtkTypeMacro(vtkXYZReader,vtkPolyDataAlgorithm) + void PrintSelf(ostream& os, vtkIndent indent); + + // Description: + // Set/Get the name of the file from which to read points. + vtkSetStringMacro(FileName) + vtkGetStringMacro(FileName) + + protected: + vtkXYZReader(); + ~vtkXYZReader(); + + char* FileName; + + int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*); + private: + vtkXYZReader(const vtkXYZReader&); // Not implemented. + void operator=(const vtkXYZReader&); // Not implemented. + }; + } +} + +#endif diff --git a/modules/viz/src/vtk/vtkXYZWriter.cpp b/modules/viz/src/vtk/vtkXYZWriter.cpp new file mode 100644 index 000000000..cf95e3c6a --- /dev/null +++ b/modules/viz/src/vtk/vtkXYZWriter.cpp @@ -0,0 +1,122 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "../precomp.hpp" + +namespace cv { namespace viz +{ + vtkStandardNewMacro(vtkXYZWriter); +}} + +cv::viz::vtkXYZWriter::vtkXYZWriter() +{ + std::ofstream fout; // only used to extract the default precision + this->DecimalPrecision = fout.precision(); +} + +void cv::viz::vtkXYZWriter::WriteData() +{ + vtkPolyData *input = this->GetInput(); + if (!input) + return; + + if (!this->FileName ) + { + vtkErrorMacro(<< "No FileName specified! Can't write!"); + this->SetErrorCode(vtkErrorCode::NoFileNameError); + return; + } + + vtkDebugMacro(<<"Opening vtk file for writing..."); + ostream *outfilep = new ofstream(this->FileName, ios::out); + if (outfilep->fail()) + { + vtkErrorMacro(<< "Unable to open file: "<< this->FileName); + this->SetErrorCode(vtkErrorCode::CannotOpenFileError); + delete outfilep; + return; + } + + ostream &outfile = *outfilep; + + for(vtkIdType i = 0; i < input->GetNumberOfPoints(); ++i) + { + Vec3d p; + input->GetPoint(i, p.val); + outfile << std::setprecision(this->DecimalPrecision) << p[0] << " " << p[1] << " " << p[2] << std::endl; + } + + // Close the file + vtkDebugMacro(<<"Closing vtk file\n"); + delete outfilep; + + // Delete the file if an error occurred + if (this->ErrorCode == vtkErrorCode::OutOfDiskSpaceError) + { + vtkErrorMacro("Ran out of disk space; deleting file: " << this->FileName); + unlink(this->FileName); + } +} + +int cv::viz::vtkXYZWriter::FillInputPortInformation(int, vtkInformation *info) +{ + info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData"); + return 1; +} + +void cv::viz::vtkXYZWriter::PrintSelf(ostream& os, vtkIndent indent) +{ + this->Superclass::PrintSelf(os,indent); + os << indent << "DecimalPrecision: " << this->DecimalPrecision << "\n"; +} + +vtkPolyData* cv::viz::vtkXYZWriter::GetInput() +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput()); +} + +vtkPolyData* cv::viz::vtkXYZWriter::GetInput(int port) +{ + return vtkPolyData::SafeDownCast(this->Superclass::GetInput(port)); +} diff --git a/modules/viz/src/vtk/vtkXYZWriter.h b/modules/viz/src/vtk/vtkXYZWriter.h new file mode 100644 index 000000000..91d0c8f6b --- /dev/null +++ b/modules/viz/src/vtk/vtkXYZWriter.h @@ -0,0 +1,90 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef __vtkXYZWriter_h +#define __vtkXYZWriter_h + +#include "vtkWriter.h" + +namespace cv +{ + namespace viz + { + class vtkXYZWriter : public vtkWriter + { + public: + static vtkXYZWriter *New(); + vtkTypeMacro(vtkXYZWriter,vtkWriter) + void PrintSelf(ostream& os, vtkIndent indent); + + vtkGetMacro(DecimalPrecision, int) + vtkSetMacro(DecimalPrecision, int) + + // Description: + // Specify file name of data file to write. + vtkSetStringMacro(FileName) + vtkGetStringMacro(FileName) + + // Description: + // Get the input to this writer. + vtkPolyData* GetInput(); + vtkPolyData* GetInput(int port); + + protected: + vtkXYZWriter(); + ~vtkXYZWriter(){} + + void WriteData(); + int FillInputPortInformation(int port, vtkInformation *info); + + int DecimalPrecision; + char *FileName; + + private: + vtkXYZWriter(const vtkXYZWriter&); // Not implemented. + void operator=(const vtkXYZWriter&); // Not implemented. + }; + } +} +#endif diff --git a/modules/viz/src/widget.cpp b/modules/viz/src/widget.cpp new file mode 100644 index 000000000..b46d3d1ce --- /dev/null +++ b/modules/viz/src/widget.cpp @@ -0,0 +1,352 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#include "precomp.hpp" + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// widget implementation + +class cv::viz::Widget::Impl +{ +public: + vtkSmartPointer prop; + Impl() : prop(0) {} +}; + +cv::viz::Widget::Widget() : impl_( new Impl() ) { } + +cv::viz::Widget::Widget(const Widget& other) : impl_( new Impl() ) +{ + if (other.impl_ && other.impl_->prop) + impl_->prop = other.impl_->prop; +} + +cv::viz::Widget& cv::viz::Widget::operator=(const Widget& other) +{ + if (!impl_) + impl_ = new Impl(); + + if (other.impl_) + impl_->prop = other.impl_->prop; + return *this; +} + +cv::viz::Widget::~Widget() +{ + if (impl_) + { + delete impl_; + impl_ = 0; + } +} + +cv::viz::Widget cv::viz::Widget::fromPlyFile(const String &file_name) +{ + CV_Assert(vtkPLYReader::CanReadFile(file_name.c_str())); + + vtkSmartPointer reader = vtkSmartPointer::New(); + reader->SetFileName(file_name.c_str()); + + vtkSmartPointer mapper = vtkSmartPointer::New(); + mapper->SetInputConnection( reader->GetOutputPort() ); +#if VTK_MAJOR_VERSION < 8 + mapper->ImmediateModeRenderingOff(); +#endif + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->GetProperty()->SetInterpolationToFlat(); + actor->GetProperty()->BackfaceCullingOn(); + actor->SetMapper(mapper); + + Widget widget; + WidgetAccessor::setProp(widget, actor); + return widget; +} + +void cv::viz::Widget::setRenderingProperty(int property, double value) +{ + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget type is not supported." && actor); + + switch (property) + { + case POINT_SIZE: actor->GetProperty()->SetPointSize(float(value)); break; + case OPACITY: actor->GetProperty()->SetOpacity(value); break; + case LINE_WIDTH: actor->GetProperty()->SetLineWidth(float(value)); break; +#if VTK_MAJOR_VERSION < 8 + case IMMEDIATE_RENDERING: actor->GetMapper()->SetImmediateModeRendering(int(value)); break; +#else + case IMMEDIATE_RENDERING: std::cerr << "this property has no effect" << std::endl; break; +#endif + case AMBIENT: actor->GetProperty()->SetAmbient(float(value)); break; + case LIGHTING: + { + if (value == 0) + actor->GetProperty()->LightingOff(); + else + actor->GetProperty()->LightingOn(); + break; + } + case FONT_SIZE: + { + vtkTextActor* text_actor = vtkTextActor::SafeDownCast(actor); + CV_Assert("Widget does not have text content." && text_actor); + text_actor->GetTextProperty()->SetFontSize(int(value)); + break; + } + case REPRESENTATION: + { + switch (int(value)) + { + case REPRESENTATION_POINTS: actor->GetProperty()->SetRepresentationToPoints(); break; + case REPRESENTATION_WIREFRAME: actor->GetProperty()->SetRepresentationToWireframe(); break; + case REPRESENTATION_SURFACE: actor->GetProperty()->SetRepresentationToSurface(); break; + } + break; + } + case SHADING: + { + switch (int(value)) + { + case SHADING_FLAT: actor->GetProperty()->SetInterpolationToFlat(); break; + case SHADING_GOURAUD: + { + if (!actor->GetMapper()->GetInput()->GetPointData()->GetNormals()) + { + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + CV_Assert("Can't set shading property for such type of widget" && mapper); + + vtkSmartPointer with_normals = VtkUtils::ComputeNormals(mapper->GetInput()); + VtkUtils::SetInputData(mapper, with_normals); + } + actor->GetProperty()->SetInterpolationToGouraud(); + break; + } + case SHADING_PHONG: + { + if (!actor->GetMapper()->GetInput()->GetPointData()->GetNormals()) + { + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + CV_Assert("Can't set shading property for such type of widget" && mapper); + + vtkSmartPointer with_normals = VtkUtils::ComputeNormals(mapper->GetInput()); + VtkUtils::SetInputData(mapper, with_normals); + } + actor->GetProperty()->SetInterpolationToPhong(); + break; + } + } + break; + } + default: + CV_Assert("setRenderingProperty: Unknown property"); + } + actor->Modified(); +} + +double cv::viz::Widget::getRenderingProperty(int property) const +{ + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget type is not supported." && actor); + + double value = 0.0; + switch (property) + { + case POINT_SIZE: value = actor->GetProperty()->GetPointSize(); break; + case OPACITY: value = actor->GetProperty()->GetOpacity(); break; + case LINE_WIDTH: value = actor->GetProperty()->GetLineWidth(); break; +#if VTK_MAJOR_VERSION < 8 + case IMMEDIATE_RENDERING: value = actor->GetMapper()->GetImmediateModeRendering(); break; +#else + case IMMEDIATE_RENDERING: std::cerr << "this property has no effect" << std::endl; break; +#endif + case AMBIENT: value = actor->GetProperty()->GetAmbient(); break; + case LIGHTING: value = actor->GetProperty()->GetLighting(); break; + case FONT_SIZE: + { + vtkTextActor* text_actor = vtkTextActor::SafeDownCast(actor); + CV_Assert("Widget does not have text content." && text_actor); + value = text_actor->GetTextProperty()->GetFontSize();; + break; + } + case REPRESENTATION: + { + switch (actor->GetProperty()->GetRepresentation()) + { + case VTK_POINTS: value = REPRESENTATION_POINTS; break; + case VTK_WIREFRAME: value = REPRESENTATION_WIREFRAME; break; + case VTK_SURFACE: value = REPRESENTATION_SURFACE; break; + } + break; + } + case SHADING: + { + switch (actor->GetProperty()->GetInterpolation()) + { + case VTK_FLAT: value = SHADING_FLAT; break; + case VTK_GOURAUD: value = SHADING_GOURAUD; break; + case VTK_PHONG: value = SHADING_PHONG; break; + } + break; + } + default: + CV_Assert("getRenderingProperty: Unknown property"); + } + return value; +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// widget accessor implementation + +vtkSmartPointer cv::viz::WidgetAccessor::getProp(const Widget& widget) +{ + return widget.impl_->prop; +} + +void cv::viz::WidgetAccessor::setProp(Widget& widget, vtkSmartPointer prop) +{ + widget.impl_->prop = prop; +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// widget3D implementation + +void cv::viz::Widget3D::setPose(const Affine3d &pose) +{ + vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget is not 3D." && actor); + + vtkSmartPointer matrix = vtkmatrix(pose.matrix); + actor->SetUserMatrix(matrix); + actor->Modified(); +} + +void cv::viz::Widget3D::updatePose(const Affine3d &pose) +{ + vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget is not 3D." && actor); + + vtkSmartPointer matrix = actor->GetUserMatrix(); + if (!matrix) + { + setPose(pose); + return; + } + + Affine3d updated_pose = pose * Affine3d(*matrix->Element); + matrix = vtkmatrix(updated_pose.matrix); + + actor->SetUserMatrix(matrix); + actor->Modified(); +} + +cv::Affine3d cv::viz::Widget3D::getPose() const +{ + vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget is not 3D." && actor); + if (!actor->GetUserMatrix()) + { + return Affine3d(); // empty user matrix, return an identity transform. + } + return Affine3d(*actor->GetUserMatrix()->Element); +} + +void cv::viz::Widget3D::applyTransform(const Affine3d &transform) +{ + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget is not 3D actor." && actor); + + vtkSmartPointer mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper()); + CV_Assert("Widget doesn't have a polydata mapper" && mapper); + + mapper->Update(); // #10945 + VtkUtils::SetInputData(mapper, VtkUtils::TransformPolydata(mapper->GetInput(), transform)); + mapper->Update(); +} + +void cv::viz::Widget3D::setColor(const Color &color) +{ + // Cast to actor instead of prop3d since prop3d doesn't provide getproperty + vtkActor *actor = vtkActor::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget type is not supported." && actor); + + Color c = vtkcolor(color); + actor->GetMapper()->ScalarVisibilityOff(); + actor->GetProperty()->SetColor(c.val); + actor->GetProperty()->SetEdgeColor(c.val); + actor->Modified(); +} + +template<> cv::viz::Widget3D cv::viz::Widget::cast() const +{ + vtkProp3D *actor = vtkProp3D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget cannot be cast." && actor); + + Widget3D widget; + WidgetAccessor::setProp(widget, actor); + return widget; +} + +/////////////////////////////////////////////////////////////////////////////////////////////// +/// widget2D implementation + +void cv::viz::Widget2D::setColor(const Color &color) +{ + vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget type is not supported." && actor); + Color c = vtkcolor(color); + actor->GetProperty()->SetColor(c.val); + actor->Modified(); +} + +template<> cv::viz::Widget2D cv::viz::Widget::cast() const +{ + vtkActor2D *actor = vtkActor2D::SafeDownCast(WidgetAccessor::getProp(*this)); + CV_Assert("Widget cannot be cast." && actor); + + Widget2D widget; + WidgetAccessor::setProp(widget, actor); + return widget; +} diff --git a/modules/viz/test/test_common.cpp b/modules/viz/test/test_common.cpp new file mode 100644 index 000000000..ac0cea4b8 --- /dev/null +++ b/modules/viz/test/test_common.cpp @@ -0,0 +1,27 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "test_precomp.hpp" + +cv::String cv::Path::combine(const String& item1, const String& item2) +{ + if (item1.empty()) + return item2; + + if (item2.empty()) + return item1; + + char last = item1[item1.size()-1]; + + bool need_append = last != '/' && last != '\\'; + return item1 + (need_append ? "/" : "") + item2; +} + +cv::String cv::Path::combine(const String& item1, const String& item2, const String& item3) +{ return combine(combine(item1, item2), item3); } + +cv::String cv::Path::change_extension(const String& file, const String& ext) +{ + String::size_type pos = file.find_last_of('.'); + return pos == String::npos ? file : file.substr(0, pos+1) + ext; +} diff --git a/modules/viz/test/test_common.hpp b/modules/viz/test/test_common.hpp new file mode 100644 index 000000000..bfd6d13cd --- /dev/null +++ b/modules/viz/test/test_common.hpp @@ -0,0 +1,87 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2013, OpenCV Foundation, all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's 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. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express 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 the Intel Corporation or 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. +// +// Authors: +// * Ozan Tonkal, ozantonkal@gmail.com +// * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com +// +//M*/ + +#ifndef OPENCV_VIZ_TEST_COMMON_HPP +#define OPENCV_VIZ_TEST_COMMON_HPP + +#include + +namespace cv +{ + struct Path + { + static String combine(const String& item1, const String& item2); + static String combine(const String& item1, const String& item2, const String& item3); + static String change_extension(const String& file, const String& ext); + }; + + inline cv::String get_dragon_ply_file_path() + { + return Path::combine(cvtest::TS::ptr()->get_data_path(), "dragon.ply"); + } + + template + inline std::vector< Affine3<_Tp> > generate_test_trajectory() + { + std::vector< Affine3<_Tp> > result; + + for (int i = 0, j = 0; i <= 270; i += 3, j += 10) + { + double x = 2 * cos(i * 3 * CV_PI/180.0) * (1.0 + 0.5 * cos(1.2 + i * 1.2 * CV_PI/180.0)); + double y = 0.25 + i/270.0 + sin(j * CV_PI/180.0) * 0.2 * sin(0.6 + j * 1.5 * CV_PI/180.0); + double z = 2 * sin(i * 3 * CV_PI/180.0) * (1.0 + 0.5 * cos(1.2 + i * CV_PI/180.0)); + result.push_back(viz::makeCameraPose(Vec3d(x, y, z), Vec3d::all(0.0), Vec3d(0.0, 1.0, 0.0))); + } + return result; + } + + inline Mat make_gray(const Mat& image) + { + Mat chs[3]; split(image, chs); + return 0.114 * chs[0] + 0.58 * chs[1] + 0.3 * chs[2]; + } +} + +#endif diff --git a/modules/viz/test/test_main.cpp b/modules/viz/test/test_main.cpp new file mode 100644 index 000000000..656b1d4fe --- /dev/null +++ b/modules/viz/test/test_main.cpp @@ -0,0 +1,6 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "test_precomp.hpp" + +CV_TEST_MAIN("viz") diff --git a/modules/viz/test/test_precomp.hpp b/modules/viz/test/test_precomp.hpp new file mode 100644 index 000000000..954f03354 --- /dev/null +++ b/modules/viz/test/test_precomp.hpp @@ -0,0 +1,10 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "opencv2/ts.hpp" +#include "test_common.hpp" + +namespace opencv_test +{ +using namespace cv::viz; +} diff --git a/modules/viz/test/test_tutorial2.cpp b/modules/viz/test/test_tutorial2.cpp new file mode 100644 index 000000000..6b2972f0a --- /dev/null +++ b/modules/viz/test/test_tutorial2.cpp @@ -0,0 +1,58 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "test_precomp.hpp" + +namespace opencv_test { namespace { + +static void tutorial2() +{ + /// Create a window + viz::Viz3d myWindow("Coordinate Frame"); + + /// Add coordinate axes + myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem()); + + /// Add line to represent (1,1,1) axis + viz::WLine axis(Point3f(-1.0, -1.0, -1.0), Point3d(1.0, 1.0, 1.0)); + axis.setRenderingProperty(viz::LINE_WIDTH, 4.0); + myWindow.showWidget("Line Widget", axis); + + /// Construct a cube widget + viz::WCube cube_widget(Point3d(0.5, 0.5, 0.0), Point3d(0.0, 0.0, -0.5), true, viz::Color::blue()); + cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0); + + /// Display widget (update if already displayed) + myWindow.showWidget("Cube Widget", cube_widget); + + /// Rodrigues vector + Vec3d rot_vec = Vec3d::all(0); + double translation_phase = 0.0, translation = 0.0; + while(!myWindow.wasStopped()) + { + /* Rotation using rodrigues */ + /// Rotate around (1,1,1) + rot_vec[0] += CV_PI * 0.01; + rot_vec[1] += CV_PI * 0.01; + rot_vec[2] += CV_PI * 0.01; + + /// Shift on (1,1,1) + translation_phase += CV_PI * 0.01; + translation = sin(translation_phase); + + /// Construct pose + Affine3d pose(rot_vec, Vec3d(translation, translation, translation)); + + myWindow.setWidgetPose("Cube Widget", pose); + + myWindow.spinOnce(1, true); + } +} + + +TEST(Viz, DISABLED_tutorial2_pose_of_widget) +{ + tutorial2(); +} + +}} // namespace diff --git a/modules/viz/test/test_tutorial3.cpp b/modules/viz/test/test_tutorial3.cpp new file mode 100644 index 000000000..232130f0a --- /dev/null +++ b/modules/viz/test/test_tutorial3.cpp @@ -0,0 +1,64 @@ +// This file is part of OpenCV project. +// It is subject to the license terms in the LICENSE file found in the top-level directory +// of this distribution and at http://opencv.org/license.html. +#include "test_precomp.hpp" + +namespace opencv_test { namespace { + +/** + * @function main + */ +static void tutorial3(bool camera_pov) +{ + /// Create a window + viz::Viz3d myWindow("Coordinate Frame"); + + /// Add coordinate axes + myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem()); + + /// Let's assume camera has the following properties + Point3d cam_origin(3.0, 3.0, 3.0), cam_focal_point(3.0, 3.0, 2.0), cam_y_dir(-1.0, 0.0, 0.0); + + /// We can get the pose of the cam using makeCameraPose + Affine3d camera_pose = viz::makeCameraPose(cam_origin, cam_focal_point, cam_y_dir); + + /// We can get the transformation matrix from camera coordinate system to global using + /// - makeTransformToGlobal. We need the axes of the camera + Affine3d transform = viz::makeTransformToGlobal(Vec3d(0.0, -1.0, 0.0), Vec3d(-1.0, 0.0, 0.0), Vec3d(0.0, 0.0, -1.0), cam_origin); + + /// Create a cloud widget. + Mat dragon_cloud = viz::readCloud(get_dragon_ply_file_path()); + viz::WCloud cloud_widget(dragon_cloud, viz::Color::green()); + + /// Pose of the widget in camera frame + Affine3d cloud_pose = Affine3d().rotate(Vec3d(0.0, CV_PI/2, 0.0)).rotate(Vec3d(0.0, 0.0, CV_PI)).translate(Vec3d(0.0, 0.0, 3.0)); + /// Pose of the widget in global frame + Affine3d cloud_pose_global = transform * cloud_pose; + + /// Visualize camera frame + myWindow.showWidget("CPW_FRUSTUM", viz::WCameraPosition(Vec2f(0.889484f, 0.523599f)), camera_pose); + if (!camera_pov) + myWindow.showWidget("CPW", viz::WCameraPosition(0.5), camera_pose); + + /// Visualize widget + myWindow.showWidget("bunny", cloud_widget, cloud_pose_global); + + /// Set the viewer pose to that of camera + if (camera_pov) + myWindow.setViewerPose(camera_pose); + + /// Start event loop. + myWindow.spin(); +} + +TEST(Viz, tutorial3_global_view) +{ + tutorial3(false); +} + +TEST(Viz, tutorial3_camera_view) +{ + tutorial3(true); +} + +}} // namespace diff --git a/modules/viz/test/test_viz3d.cpp b/modules/viz/test/test_viz3d.cpp new file mode 100644 index 000000000..cdf8a00ad --- /dev/null +++ b/modules/viz/test/test_viz3d.cpp @@ -0,0 +1,65 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. + // Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's 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. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express 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 the Intel Corporation or 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. + // + //M*/ +#include "test_precomp.hpp" + +namespace opencv_test { namespace { + +TEST(Viz_viz3d, DISABLED_develop) +{ + cv::Mat cloud = cv::viz::readCloud(get_dragon_ply_file_path()); + + cv::viz::Viz3d viz("abc"); + viz.setBackgroundMeshLab(); + viz.showWidget("coo", cv::viz::WCoordinateSystem(1)); + viz.showWidget("cloud", cv::viz::WPaintedCloud(cloud)); + + //---->>>>> + //std::vector gt, es; + //cv::viz::readTrajectory(gt, "d:/Datasets/trajs/gt%05d.xml"); + //cv::viz::readTrajectory(es, "d:/Datasets/trajs/es%05d.xml"); + //cv::Mat cloud = cv::viz::readCloud(get_dragon_ply_file_path()); + //---->>>>> + + viz.spin(); +} + +}} // namespace diff --git a/modules/viz/test/tests_simple.cpp b/modules/viz/test/tests_simple.cpp new file mode 100644 index 000000000..12d696dfb --- /dev/null +++ b/modules/viz/test/tests_simple.cpp @@ -0,0 +1,454 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// + // + // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. + // + // By downloading, copying, installing or using the software you agree to this license. + // If you do not agree to this license, do not download, install, + // copy or use the software. + // + // + // License Agreement + // For Open Source Computer Vision Library + // + // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. + // Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. + // Third party copyrights are property of their respective owners. + // + // Redistribution and use in source and binary forms, with or without modification, + // are permitted provided that the following conditions are met: + // + // * Redistribution's of source code must retain the above copyright notice, + // this list of conditions and the following disclaimer. + // + // * Redistribution's 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. + // + // * The name of the copyright holders may not be used to endorse or promote products + // derived from this software without specific prior written permission. + // + // This software is provided by the copyright holders and contributors "as is" and + // any express 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 the Intel Corporation or 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. + // + //M*/ + +#include "test_precomp.hpp" + +namespace opencv_test { namespace { + +TEST(Viz, show_cloud_bluberry) +{ + Mat dragon_cloud = readCloud(get_dragon_ply_file_path()); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_cloud_bluberry"); + viz.setBackgroundColor(Color::black()); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("dragon", WCloud(dragon_cloud, Color::bluberry()), pose); + + viz.showWidget("text2d", WText("Bluberry cloud", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_cloud_random_color) +{ + Mat dragon_cloud = readCloud(get_dragon_ply_file_path()); + + Mat colors(dragon_cloud.size(), CV_8UC3); + theRNG().fill(colors, RNG::UNIFORM, 0, 255); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_cloud_random_color"); + viz.setBackgroundMeshLab(); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("dragon", WCloud(dragon_cloud, colors), pose); + viz.showWidget("text2d", WText("Random color cloud", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_cloud_masked) +{ + Mat dragon_cloud = readCloud(get_dragon_ply_file_path()); + + Vec3f qnan = Vec3f::all(std::numeric_limits::quiet_NaN()); + for(int i = 0; i < (int)dragon_cloud.total(); ++i) + if (i % 15 != 0) + dragon_cloud.at(i) = qnan; + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_cloud_masked"); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("dragon", WCloud(dragon_cloud), pose); + viz.showWidget("text2d", WText("Nan masked cloud", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_cloud_collection) +{ + Mat cloud = readCloud(get_dragon_ply_file_path()); + + WCloudCollection ccol; + ccol.addCloud(cloud, Color::white(), Affine3d().translate(Vec3d(0, 0, 0)).rotate(Vec3d(CV_PI/2, 0, 0))); + ccol.addCloud(cloud, Color::blue(), Affine3d().translate(Vec3d(1, 0, 0))); + ccol.addCloud(cloud, Color::red(), Affine3d().translate(Vec3d(2, 0, 0))); + ccol.finalize(); + + Viz3d viz("show_cloud_collection"); + viz.setBackgroundColor(Color::mlab()); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("ccol", ccol); + viz.showWidget("text2d", WText("Cloud collection", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_painted_clouds) +{ + Mat cloud = readCloud(get_dragon_ply_file_path()); + + Viz3d viz("show_painted_clouds"); + viz.setBackgroundMeshLab(); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("cloud1", WPaintedCloud(cloud), Affine3d(Vec3d(0.0, -CV_PI/2, 0.0), Vec3d(-1.5, 0.0, 0.0))); + viz.showWidget("cloud2", WPaintedCloud(cloud, Vec3d(0.0, -0.75, -1.0), Vec3d(0.0, 0.75, 0.0)), Affine3d(Vec3d(0.0, CV_PI/2, 0.0), Vec3d(1.5, 0.0, 0.0))); + viz.showWidget("cloud3", WPaintedCloud(cloud, Vec3d(0.0, 0.0, -1.0), Vec3d(0.0, 0.0, 1.0), Color::blue(), Color::red())); + viz.showWidget("arrow", WArrow(Vec3d(0.0, 1.0, -1.0), Vec3d(0.0, 1.0, 1.0), 0.009, Color::raspberry())); + viz.showWidget("text2d", WText("Painted clouds", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_mesh) +{ + Mesh mesh = Mesh::load(get_dragon_ply_file_path()); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_mesh"); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("mesh", WMesh(mesh), pose); + viz.showWidget("text2d", WText("Just mesh", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_mesh_random_colors) +{ + Mesh mesh = Mesh::load(get_dragon_ply_file_path()); + theRNG().fill(mesh.colors, RNG::UNIFORM, 0, 255); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_mesh_random_color"); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("mesh", WMesh(mesh), pose); + viz.setRenderingProperty("mesh", SHADING, SHADING_PHONG); + viz.showWidget("text2d", WText("Random color mesh", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_widget_merger) +{ + WWidgetMerger merger; + merger.addWidget(WCube(Vec3d::all(0.0), Vec3d::all(1.0), true, Color::gold())); + + RNG& rng = theRNG(); + for(int i = 0; i < 77; ++i) + { + Vec3b c; + rng.fill(c, RNG::NORMAL, Scalar::all(128), Scalar::all(48), true); + merger.addWidget(WSphere(Vec3d(c)*(1.0/255.0), 7.0/255.0, 10, Color(c[2], c[1], c[0]))); + } + merger.finalize(); + + Viz3d viz("show_mesh_random_color"); + viz.showWidget("coo", WCoordinateSystem()); + viz.showWidget("merger", merger); + viz.showWidget("text2d", WText("Widget merger", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_textured_mesh) +{ + Mat lena = imread(Path::combine(cvtest::TS::ptr()->get_data_path(), "lena.png")); + + std::vector points; + std::vector tcoords; + std::vector polygons; + for(size_t i = 0; i < 64; ++i) + { + double angle = CV_PI/2 * i/64.0; + points.push_back(Vec3d(0.00, cos(angle), sin(angle))*0.75); + points.push_back(Vec3d(1.57, cos(angle), sin(angle))*0.75); + tcoords.push_back(Vec2d(0.0, i/64.0)); + tcoords.push_back(Vec2d(1.0, i/64.0)); + } + + for(int i = 0; i < (int)points.size()/2-1; ++i) + { + int polys[] = {3, 2*i, 2*i+1, 2*i+2, 3, 2*i+1, 2*i+2, 2*i+3}; + polygons.insert(polygons.end(), polys, polys + sizeof(polys)/sizeof(polys[0])); + } + + cv::viz::Mesh mesh; + mesh.cloud = Mat(points, true).reshape(3, 1); + mesh.tcoords = Mat(tcoords, true).reshape(2, 1); + mesh.polygons = Mat(polygons, true).reshape(1, 1); + mesh.texture = lena; + + Viz3d viz("show_textured_mesh"); + viz.setBackgroundMeshLab(); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("mesh", WMesh(mesh)); + viz.setRenderingProperty("mesh", SHADING, SHADING_PHONG); + viz.showWidget("text2d", WText("Textured mesh", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_polyline) +{ + const Color palette[] = { Color::red(), Color::green(), Color::blue(), Color::gold(), Color::raspberry(), Color::bluberry(), Color::lime() }; + size_t palette_size = sizeof(palette)/sizeof(palette[0]); + + Mat polyline(1, 32, CV_64FC3), colors(1, 32, CV_8UC3); + for(int i = 0; i < (int)polyline.total(); ++i) + { + polyline.at(i) = Vec3d(i/16.0, cos(i * CV_PI/6), sin(i * CV_PI/6)); + colors.at(i) = palette[i & palette_size]; + } + + Viz3d viz("show_polyline"); + viz.showWidget("polyline", WPolyLine(polyline, colors)); + viz.showWidget("coosys", WCoordinateSystem()); + viz.showWidget("text2d", WText("Polyline", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_sampled_normals) +{ + Mesh mesh = Mesh::load(get_dragon_ply_file_path()); + computeNormals(mesh, mesh.normals); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + Viz3d viz("show_sampled_normals"); + viz.showWidget("mesh", WMesh(mesh), pose); + viz.showWidget("normals", WCloudNormals(mesh.cloud, mesh.normals, 30, 0.1f, Color::green()), pose); + viz.setRenderingProperty("normals", LINE_WIDTH, 2.0); + viz.showWidget("text2d", WText("Cloud or mesh normals", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_cloud_shaded_by_normals) +{ + Mesh mesh = Mesh::load(get_dragon_ply_file_path()); + computeNormals(mesh, mesh.normals); + + Affine3d pose = Affine3d().rotate(Vec3d(0, 0.8, 0)); + + WCloud cloud(mesh.cloud, Color::white(), mesh.normals); + cloud.setRenderingProperty(SHADING, SHADING_GOURAUD); + + Viz3d viz("show_cloud_shaded_by_normals"); + viz.showWidget("cloud", cloud, pose); + viz.showWidget("text2d", WText("Cloud shaded by normals", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_trajectories) +{ + std::vector path = generate_test_trajectory(), sub0, sub1, sub2, sub3, sub4, sub5; + int size =(int)path.size(); + + Mat(path).rowRange(0, size/10+1).copyTo(sub0); + Mat(path).rowRange(size/10, size/5+1).copyTo(sub1); + Mat(path).rowRange(size/5, 11*size/12).copyTo(sub2); + Mat(path).rowRange(11*size/12, size).copyTo(sub3); + Mat(path).rowRange(3*size/4, 33*size/40).copyTo(sub4); + Mat(path).rowRange(33*size/40, 9*size/10).copyTo(sub5); + Matx33d K(1024.0, 0.0, 320.0, 0.0, 1024.0, 240.0, 0.0, 0.0, 1.0); + + Viz3d viz("show_trajectories"); + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("sub0", WTrajectorySpheres(sub0, 0.25, 0.07)); + viz.showWidget("sub1", WTrajectory(sub1, WTrajectory::PATH, 0.2, Color::brown())); + viz.showWidget("sub2", WTrajectory(sub2, WTrajectory::FRAMES, 0.2)); + viz.showWidget("sub3", WTrajectory(sub3, WTrajectory::BOTH, 0.2, Color::green())); + viz.showWidget("sub4", WTrajectoryFrustums(sub4, K, 0.3, Color::yellow())); + viz.showWidget("sub5", WTrajectoryFrustums(sub5, Vec2d(0.78, 0.78), 0.15)); + viz.showWidget("text2d", WText("Different kinds of supported trajectories", Point(20, 20), 20, Color::green())); + + int i = 0; + while(!viz.wasStopped()) + { + double a = --i % 360; + Vec3d pose(sin(a * CV_PI/180), 0.7, cos(a * CV_PI/180)); + viz.setViewerPose(makeCameraPose(pose * 7.5, Vec3d(0.0, 0.5, 0.0), Vec3d(0.0, 0.1, 0.0))); + viz.spinOnce(20, true); + } + viz.resetCamera(); + viz.spin(); +} + +TEST(Viz, show_trajectory_reposition) +{ + std::vector path = generate_test_trajectory(); + + Viz3d viz("show_trajectory_reposition_to_origin"); + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("sub3", WTrajectory(Mat(path).rowRange(0, (int)path.size()/3), WTrajectory::BOTH, 0.2, Color::brown()), path.front().inv()); + viz.showWidget("text2d", WText("Trajectory resposition to origin", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_camera_positions) +{ + Matx33d K(1024.0, 0.0, 320.0, 0.0, 1024.0, 240.0, 0.0, 0.0, 1.0); + Mat lena = imread(Path::combine(cvtest::TS::ptr()->get_data_path(), "lena.png")); + Mat gray = make_gray(lena); + + Affine3d poses[2]; + for(int i = 0; i < 2; ++i) + { + Vec3d pose = 5 * Vec3d(sin(3.14 + 2.7 + i*60 * CV_PI/180), 0.4 - i*0.3, cos(3.14 + 2.7 + i*60 * CV_PI/180)); + poses[i] = makeCameraPose(pose, Vec3d(0.0, 0.0, 0.0), Vec3d(0.0, -0.1, 0.0)); + } + + Viz3d viz("show_camera_positions"); + viz.showWidget("sphe", WSphere(Point3d(0,0,0), 1.0, 10, Color::orange_red())); + viz.showWidget("coos", WCoordinateSystem(1.5)); + viz.showWidget("pos1", WCameraPosition(0.75), poses[0]); + viz.showWidget("pos2", WCameraPosition(Vec2d(0.78, 0.78), lena, 2.2, Color::green()), poses[0]); + viz.showWidget("pos3", WCameraPosition(0.75), poses[1]); + viz.showWidget("pos4", WCameraPosition(K, gray, 3, Color::indigo()), poses[1]); + viz.showWidget("text2d", WText("Camera positions with images", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_overlay_image) +{ + Mat lena = imread(Path::combine(cvtest::TS::ptr()->get_data_path(), "lena.png")); + Mat gray = make_gray(lena); + + Size2d half_lsize = Size2d(lena.size()) * 0.5; + + Viz3d viz("show_overlay_image"); + viz.setBackgroundMeshLab(); + Size vsz = viz.getWindowSize(); + + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("cube", WCube()); + viz.showWidget("img1", WImageOverlay(lena, Rect(Point(10, 10), half_lsize))); + viz.showWidget("img2", WImageOverlay(gray, Rect(Point(vsz.width-10-lena.cols/2, 10), half_lsize))); + viz.showWidget("img3", WImageOverlay(gray, Rect(Point(10, vsz.height-10-lena.rows/2), half_lsize))); + viz.showWidget("img5", WImageOverlay(lena, Rect(Point(vsz.width-10-lena.cols/2, vsz.height-10-lena.rows/2), half_lsize))); + viz.showWidget("text2d", WText("Overlay images", Point(20, 20), 20, Color::green())); + + int i = 0; + while(!viz.wasStopped()) + { + double a = ++i % 360; + Vec3d pose(sin(a * CV_PI/180), 0.7, cos(a * CV_PI/180)); + viz.setViewerPose(makeCameraPose(pose * 3, Vec3d(0.0, 0.5, 0.0), Vec3d(0.0, 0.1, 0.0))); + viz.getWidget("img1").cast().setImage(lena * pow(sin(i*10*CV_PI/180) * 0.5 + 0.5, 1.0)); + viz.spinOnce(1, true); + } + viz.showWidget("text2d", WText("Overlay images (stopped)", Point(20, 20), 20, Color::green())); + viz.spin(); +} + + +TEST(Viz, show_image_method) +{ + Mat lena = imread(Path::combine(cvtest::TS::ptr()->get_data_path(), "lena.png")); + + Viz3d viz("show_image_method"); + viz.showImage(lena); + viz.spinOnce(1500, true); + viz.showImage(lena, lena.size()); + viz.spinOnce(1500, true); + + cv::viz::imshow("show_image_method", make_gray(lena)).spin(); +} + +TEST(Viz, show_image_3d) +{ + Mat lena = imread(Path::combine(cvtest::TS::ptr()->get_data_path(), "lena.png")); + Mat gray = make_gray(lena); + + Viz3d viz("show_image_3d"); + viz.setBackgroundMeshLab(); + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("cube", WCube()); + viz.showWidget("arr0", WArrow(Vec3d(0.5, 0.0, 0.0), Vec3d(1.5, 0.0, 0.0), 0.009, Color::raspberry())); + viz.showWidget("img0", WImage3D(lena, Size2d(1.0, 1.0)), Affine3d(Vec3d(0.0, CV_PI/2, 0.0), Vec3d(.5, 0.0, 0.0))); + viz.showWidget("arr1", WArrow(Vec3d(-0.5, -0.5, 0.0), Vec3d(0.2, 0.2, 0.0), 0.009, Color::raspberry())); + viz.showWidget("img1", WImage3D(gray, Size2d(1.0, 1.0), Vec3d(-0.5, -0.5, 0.0), Vec3d(1.0, 1.0, 0.0), Vec3d(0.0, 1.0, 0.0))); + + viz.showWidget("arr3", WArrow(Vec3d::all(-0.5), Vec3d::all(0.5), 0.009, Color::raspberry())); + + viz.showWidget("text2d", WText("Images in 3D", Point(20, 20), 20, Color::green())); + + int i = 0; + while(!viz.wasStopped()) + { + viz.getWidget("img0").cast().setImage(lena * pow(sin(i++*7.5*CV_PI/180) * 0.5 + 0.5, 1.0)); + viz.spinOnce(1, true); + } + viz.showWidget("text2d", WText("Images in 3D (stopped)", Point(20, 20), 20, Color::green())); + viz.spin(); +} + +TEST(Viz, show_simple_widgets) +{ + Viz3d viz("show_simple_widgets"); + viz.setBackgroundMeshLab(); + + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("cube", WCube()); + viz.showWidget("cub0", WCube(Vec3d::all(-1.0), Vec3d::all(-0.5), false, Color::indigo())); + viz.showWidget("arro", WArrow(Vec3d::all(-0.5), Vec3d::all(0.5), 0.009, Color::raspberry())); + viz.showWidget("cir1", WCircle(0.5, 0.01, Color::bluberry())); + viz.showWidget("cir2", WCircle(0.5, Point3d(0.5, 0.0, 0.0), Vec3d(1.0, 0.0, 0.0), 0.01, Color::apricot())); + + viz.showWidget("cyl0", WCylinder(Vec3d(-0.5, 0.5, -0.5), Vec3d(0.5, 0.5, -0.5), 0.125, 30, Color::brown())); + viz.showWidget("con0", WCone(0.25, 0.125, 6, Color::azure())); + viz.showWidget("con1", WCone(0.125, Point3d(0.5, -0.5, 0.5), Point3d(0.5, -1.0, 0.5), 6, Color::turquoise())); + + viz.showWidget("text2d", WText("Different simple widgets", Point(20, 20), 20, Color::green())); + viz.showWidget("text3d", WText3D("Simple 3D text", Point3d( 0.5, 0.5, 0.5), 0.125, false, Color::green())); + + viz.showWidget("plane1", WPlane(Size2d(0.25, 0.75))); + viz.showWidget("plane2", WPlane(Vec3d(0.5, -0.5, -0.5), Vec3d(0.0, 1.0, 1.0), Vec3d(1.0, 1.0, 0.0), Size2d(1.0, 0.5), Color::gold())); + + viz.showWidget("grid1", WGrid(Vec2i(7,7), Vec2d::all(0.75), Color::gray()), Affine3d().translate(Vec3d(0.0, 0.0, -1.0))); + + viz.spin(); + viz.getWidget("text2d").cast().setText("Different simple widgets (updated)"); + viz.getWidget("text3d").cast().setText("Updated text 3D"); + viz.spin(); +} + +TEST(Viz, show_follower) +{ + Viz3d viz("show_follower"); + + viz.showWidget("coos", WCoordinateSystem()); + viz.showWidget("cube", WCube()); + viz.showWidget("t3d_2", WText3D("Simple 3D follower", Point3d(-0.5, -0.5, 0.5), 0.125, true, Color::green())); + viz.showWidget("text2d", WText("Follower: text always facing camera", Point(20, 20), 20, Color::green())); + viz.setBackgroundMeshLab(); + viz.spin(); + viz.getWidget("t3d_2").cast().setText("Updated follower 3D"); + viz.spin(); +} + +}} // namespace From 97a92e2d55cfac7df1b7d29ff8090f75ddd51521 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Wed, 7 Nov 2018 16:18:44 +0300 Subject: [PATCH 2/2] viz: move samples/tutorials to opencv_contrib --- modules/viz/CMakeLists.txt | 10 +- modules/viz/samples/creating_widgets.cpp | 122 + modules/viz/samples/data/bunny.ply | 5752 +++++++++++++++++ modules/viz/samples/histo3D.cpp | 188 + modules/viz/samples/launching_viz.cpp | 66 + modules/viz/samples/transformations.cpp | 112 + modules/viz/samples/widget_pose.cpp | 79 + .../creating_widgets.markdown | 55 + .../creating_widgets/images/red_triangle.png | Bin 0 -> 10489 bytes .../viz/tutorials/histo3D/histo3D.markdown | 51 + .../viz/tutorials/histo3D/images/histo50.png | Bin 0 -> 859428 bytes modules/viz/tutorials/images/facedetect.jpg | Bin 0 -> 17902 bytes .../viz/tutorials/images/image_effects.png | Bin 0 -> 28869 bytes modules/viz/tutorials/images/intro.png | Bin 0 -> 1145 bytes .../launching_viz/images/window_demo.png | Bin 0 -> 7519 bytes .../launching_viz/launching_viz.markdown | 64 + .../tutorials/table_of_content_viz.markdown | 42 + .../images/camera_view_point.png | Bin 0 -> 18439 bytes .../images/global_view_point.png | Bin 0 -> 13767 bytes .../transformations/transformations.markdown | 88 + .../widget_pose/images/widgetpose.png | Bin 0 -> 40892 bytes .../widget_pose/widget_pose.markdown | 85 + 22 files changed, 6713 insertions(+), 1 deletion(-) create mode 100644 modules/viz/samples/creating_widgets.cpp create mode 100644 modules/viz/samples/data/bunny.ply create mode 100644 modules/viz/samples/histo3D.cpp create mode 100644 modules/viz/samples/launching_viz.cpp create mode 100644 modules/viz/samples/transformations.cpp create mode 100644 modules/viz/samples/widget_pose.cpp create mode 100644 modules/viz/tutorials/creating_widgets/creating_widgets.markdown create mode 100644 modules/viz/tutorials/creating_widgets/images/red_triangle.png create mode 100644 modules/viz/tutorials/histo3D/histo3D.markdown create mode 100644 modules/viz/tutorials/histo3D/images/histo50.png create mode 100644 modules/viz/tutorials/images/facedetect.jpg create mode 100644 modules/viz/tutorials/images/image_effects.png create mode 100644 modules/viz/tutorials/images/intro.png create mode 100644 modules/viz/tutorials/launching_viz/images/window_demo.png create mode 100644 modules/viz/tutorials/launching_viz/launching_viz.markdown create mode 100644 modules/viz/tutorials/table_of_content_viz.markdown create mode 100644 modules/viz/tutorials/transformations/images/camera_view_point.png create mode 100644 modules/viz/tutorials/transformations/images/global_view_point.png create mode 100644 modules/viz/tutorials/transformations/transformations.markdown create mode 100644 modules/viz/tutorials/widget_pose/images/widgetpose.png create mode 100644 modules/viz/tutorials/widget_pose/widget_pose.markdown diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt index 1f1e1af3b..5ccca7c84 100644 --- a/modules/viz/CMakeLists.txt +++ b/modules/viz/CMakeLists.txt @@ -26,7 +26,15 @@ endif() ocv_warnings_disable(CMAKE_CXX_FLAGS -Winconsistent-missing-override -Wsuggest-override) -ocv_define_module(viz opencv_core WRAP python) +ocv_add_module(viz opencv_core WRAP python) +ocv_glob_module_sources() +ocv_module_include_directories() +ocv_create_module() + +ocv_add_accuracy_tests() +ocv_add_perf_tests() +ocv_add_samples(opencv_imgproc opencv_calib3d opencv_features2d opencv_flann) + ocv_target_link_libraries(${the_module} LINK_PRIVATE ${VTK_LIBRARIES}) if(APPLE AND BUILD_opencv_viz) diff --git a/modules/viz/samples/creating_widgets.cpp b/modules/viz/samples/creating_widgets.cpp new file mode 100644 index 000000000..37e959821 --- /dev/null +++ b/modules/viz/samples/creating_widgets.cpp @@ -0,0 +1,122 @@ +/** + * @file creating_widgets.cpp + * @brief Creating custom widgets using VTK + * @author Ozan Cagri Tonkal + */ + +#ifndef USE_VTK +#include +int main() +{ + std::cout << "This sample requires direct compilation with VTK. Stop" << std::endl; + return 0; +} +#else +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace cv; +using namespace std; + +/** + * @function help + * @brief Display instructions to use this tutorial program + */ +static void help() +{ + cout + << "--------------------------------------------------------------------------" << endl + << "This program shows how to create a custom widget. You can create your own " + << "widgets by extending Widget2D/Widget3D, and with the help of WidgetAccessor." << endl + << "Usage:" << endl + << "./creating_widgets" << endl + << endl; +} + +/** + * @class TriangleWidget + * @brief Defining our own 3D Triangle widget + */ +class WTriangle : public viz::Widget3D +{ + public: + WTriangle(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white()); +}; + +/** + * @function TriangleWidget::TriangleWidget + * @brief Constructor + */ +WTriangle::WTriangle(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color) +{ + // Create a triangle + vtkSmartPointer points = vtkSmartPointer::New(); + points->InsertNextPoint(pt1.x, pt1.y, pt1.z); + points->InsertNextPoint(pt2.x, pt2.y, pt2.z); + points->InsertNextPoint(pt3.x, pt3.y, pt3.z); + + vtkSmartPointer triangle = vtkSmartPointer::New(); + triangle->GetPointIds()->SetId(0,0); + triangle->GetPointIds()->SetId(1,1); + triangle->GetPointIds()->SetId(2,2); + + vtkSmartPointer cells = vtkSmartPointer::New(); + cells->InsertNextCell(triangle); + + // Create a polydata object + vtkSmartPointer polyData = vtkSmartPointer::New(); + + // Add the geometry and topology to the polydata + polyData->SetPoints(points); + polyData->SetPolys(cells); + + // Create mapper and actor + vtkSmartPointer mapper = vtkSmartPointer::New(); +#if VTK_MAJOR_VERSION <= 5 + mapper->SetInput(polyData); +#else + mapper->SetInputData(polyData); +#endif + + vtkSmartPointer actor = vtkSmartPointer::New(); + actor->SetMapper(mapper); + + // Store this actor in the widget in order that visualizer can access it + viz::WidgetAccessor::setProp(*this, actor); + + // Set the color of the widget. This has to be called after WidgetAccessor. + setColor(color); +} + +/** + * @function main + */ +int main() +{ + help(); + + /// Create a window + viz::Viz3d myWindow("Creating Widgets"); + + /// Create a triangle widget + WTriangle tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red()); + + /// Show widget in the visualizer window + myWindow.showWidget("TRIANGLE", tw); + + /// Start event loop + myWindow.spin(); + + return 0; +} +#endif diff --git a/modules/viz/samples/data/bunny.ply b/modules/viz/samples/data/bunny.ply new file mode 100644 index 000000000..7d3423339 --- /dev/null +++ b/modules/viz/samples/data/bunny.ply @@ -0,0 +1,5752 @@ +ply +format ascii 1.0 +comment zipper output +element vertex 1889 +property float x +property float y +property float z +property float confidence +property float intensity +element face 3851 +property list uchar int vertex_indices +end_header +-0.0369122 0.127512 0.00276757 0.850855 0.5 +-0.0457707 0.130327 0.00306785 0.900159 0.5 +-0.0708847 0.149834 0.0388672 0.398443 0.5 +-0.00331557 0.130403 0.0212208 0.85268 0.5 +-0.0211979 0.1272 0.00915278 0.675938 0.5 +-0.0265255 0.12592 0.00874866 0.711533 0.5 +0.0339261 0.112038 0.0269672 0.652757 0.5 +0.0376485 0.110455 0.0145481 0.708171 0.5 +-0.0259368 0.111118 0.0379115 0.454541 0.437538 +0.027952 0.120939 0.0215377 0.533079 0.5 +-0.0628308 0.155987 -0.0150105 0.404517 0.5 +0.0390029 0.106711 0.0215202 0.535542 0.5 +0.0447976 0.0950477 0.00866471 0.579563 0.425995 +-0.0330636 0.173619 -0.0031267 0.365607 0.5 +-0.0808069 0.136243 0.0495014 0.499575 0.5 +-0.0705086 0.12445 0.0526685 0.564827 0.5 +0.00874873 0.131225 0.0145345 0.748371 0.5 +0.0401015 0.106711 0.00874166 0.680399 0.5 +0.0379483 0.100145 -0.00827134 0.600054 0.5 +-0.0906538 0.137201 0.0207305 0.824561 0.5 +-0.0841655 0.110667 0.0275273 0.690889 0.5 +-0.0705214 0.156214 0.0144536 0.807492 0.5 +-0.083872 0.15212 0.0282652 0.248168 0.41865 +0.00305028 0.12432 0.0332425 0.555044 0.354559 +0.00870828 0.124165 0.0330348 0.653433 0.5 +-0.0328896 0.12613 0.00300653 0.898771 0.5 +-0.0506302 0.143065 0.0150611 0.691477 0.5 +-0.0757863 0.13637 0.050172 0.566256 0.5 +-0.0027191 0.128962 0.0264678 0.271491 0.462815 +-0.0460961 0.125118 0.0263142 0.539149 0.5 +-0.0785104 0.0942728 -0.0109192 0.710999 0.5 +0.0216915 0.125373 0.0211452 0.530957 0.5 +-0.0888469 0.124305 0.00237041 0.635593 0.5 +0.040386 0.100825 -0.00303043 0.574857 0.5 +-0.0884145 0.117791 0.00268555 0.487167 0.430737 +-0.0319074 0.177421 -0.00491879 0.269231 0.447035 +-0.0765825 0.143224 0.0455148 0.414139 0.5 +-0.0209748 0.112544 0.0388613 0.482541 0.5 +-0.020836 0.179425 -0.0221622 0.341071 0.440034 +-0.0377039 0.167987 -0.0130391 0.396317 0.473039 +-0.0331765 0.12681 0.00839958 0.896274 0.5 +0.00893926 0.127114 0.0292916 0.350014 0.41288 +-0.044944 0.131083 0.0147963 0.599596 0.5 +-0.0266041 0.12515 0.00282384 0.73687 0.5 +0.0144285 0.12328 0.0319185 0.625269 0.5 +0.019244 0.122284 0.0308314 0.611204 0.34486 +-0.0390225 0.167317 0.00215527 0.413994 0.469929 +-0.08808 0.129976 0.00206377 0.625486 0.5 +-0.0537203 0.142608 0.0266058 0.696873 0.5 +0.043095 0.0980072 0.0191617 0.665192 0.5 +0.0432138 0.100117 0.00866473 0.691828 0.5 +0.0415448 0.0944954 0.0275695 0.671611 0.5 +-0.0578726 0.155337 0.0149245 0.394763 0.437313 +-0.0231577 0.157375 -0.0046304 0.136389 0.380194 +-0.0683123 0.145735 0.0420568 0.751812 0.5 +-0.0708351 0.142847 0.0451248 0.627973 0.5 +-0.070664 0.0642894 0.0209789 0.413051 0.5 +-0.0761519 0.130581 0.0525324 0.629117 0.5 +-0.0640036 0.161784 -0.0208118 0.449093 0.5 +-0.0706461 0.155711 0.00252406 0.855717 0.5 +-0.0924366 0.118434 0.0399838 0.673877 0.5 +-0.0635349 0.156052 0.0148814 0.798496 0.5 +0.0282675 0.118192 0.0274382 0.635485 0.5 +0.0392736 0.0938857 -0.00915453 0.585857 0.459742 +-0.0695973 0.164844 -0.0174846 0.548789 0.5 +-0.00892354 0.123904 0.0330319 0.602316 0.374044 +0.0269099 0.0942476 0.0444911 0.649753 0.5 +-0.0146258 0.162377 -0.0144398 0.338176 0.5 +-0.0450983 0.167072 0.00289327 0.449091 0.5 +-0.0761536 0.172742 -0.0384391 0.256591 0.4298 +-0.0858274 0.105458 0.00472318 0.523819 0.297125 +0.0370431 0.110443 0.0207229 0.52623 0.448558 +0.0321593 0.0994027 0.0380657 0.733041 0.5 +-0.075287 0.146433 0.0428582 0.424358 0.5 +-0.0395145 0.171107 0.000531747 0.452893 0.5 +-0.0839586 0.11215 0.00148754 0.436727 0.419097 +0.0446848 0.0883378 0.0216285 0.487783 0.481728 +0.0161783 0.127819 0.0220535 0.481793 0.5 +-0.00251635 0.0397232 0.0474087 0.280725 0.5 +0.00303163 0.0406968 0.0460422 0.331809 0.5 +-0.0143059 0.128197 0.00333856 0.693854 0.5 +-0.0526117 0.155596 0.0109972 0.561042 0.5 +-0.0332043 0.17776 -0.00906223 0.212789 0.5 +0.0394391 0.106654 0.00306577 0.522321 0.489889 +-0.0923799 0.1249 0.0327641 0.848517 0.5 +0.0454681 0.0882959 0.0146642 0.575503 0.5 +-0.0274495 0.179802 -0.00925837 0.258799 0.457369 +-0.072504 0.146297 0.0429682 0.549207 0.5 +-0.0579959 0.129793 0.0383118 0.658867 0.444043 +0.043117 0.0923689 0.0251649 0.622686 0.5 +-0.00865718 0.130323 0.0149721 0.633691 0.5 +-0.0141304 0.129188 0.0147431 0.547632 0.5 +-0.0707877 0.15583 0.00921954 0.739059 0.5 +-0.00952731 0.127041 0.0281475 0.375412 0.377874 +-0.0646289 0.153404 0.0329146 0.855321 0.5 +-0.0706939 0.15347 0.0328596 0.444959 0.455263 +0.0208126 0.118434 0.0336393 0.519282 0.5 +-0.0396566 0.173008 -0.00299705 0.274377 0.177706 +-0.0442176 0.170815 -0.00391429 0.245926 0.5 +-0.0582565 0.0395149 0.0457796 0.417977 0.459314 +-0.0523033 0.0401501 0.04623 0.454776 0.456044 +-0.0760211 0.161274 -0.0145891 0.267801 0.372187 +-0.0693983 0.163016 -0.0140293 0.403228 0.45768 +0.0399663 0.106491 0.014952 0.713602 0.5 +0.041536 0.0950084 -0.00475737 0.490139 0.464008 +-0.0470079 0.163779 0.00528295 0.432857 0.486946 +-0.0402546 0.161678 0.00298655 0.447592 0.5 +-0.0386569 0.0389805 0.0441153 0.509262 0.5 +-0.0704175 0.166991 -0.0216976 0.332592 0.447054 +-0.0254201 0.0886622 0.0503827 0.608282 0.5 +-0.0886334 0.137429 0.00876953 0.549009 0.5 +-0.014179 0.12627 0.0266417 0.420759 0.5 +-0.0360017 0.17408 -0.0118959 0.409753 0.289042 +-0.0886251 0.0937834 0.00823534 0.753697 0.5 +-0.0648672 0.155874 -0.00891497 0.595216 0.5 +-0.0704508 0.137752 -0.00774011 0.446131 0.5 +-0.0750154 0.166247 -0.0219558 0.263106 0.5 +0.0299465 0.114869 0.0300239 0.642356 0.5 +0.0398138 0.0998788 0.0273101 0.51725 0.5 +-0.015242 0.111698 0.0407424 0.605597 0.5 +-0.0700387 0.118219 0.0524379 0.585543 0.5 +0.0149973 0.112399 0.0386082 0.669811 0.5 +-0.036487 0.171225 0.000545037 0.438578 0.5 +-0.0641664 0.118551 -0.00968333 0.569796 0.5 +-0.071817 0.166979 -0.0463822 0.381568 0.451091 +-0.0913559 0.14534 0.0246937 0.648478 0.5 +0.00903703 0.112569 0.0396571 0.549283 0.408623 +0.0324674 0.0997396 -0.0141603 0.732658 0.5 +0.0417911 0.101845 0.00188609 0.547756 0.5 +0.00302992 0.112517 0.0415434 0.592572 0.5 +-0.0650368 0.148485 0.0382561 0.62562 0.5 +-0.0706519 0.13063 0.0502497 0.563116 0.5 +-0.0144471 0.128935 0.00903509 0.682121 0.5 +0.00292575 0.131541 0.00912318 0.795238 0.5 +-0.0625682 0.151125 0.035875 0.463512 0.5 +0.0349829 0.113328 0.0214487 0.620597 0.5 +0.021327 0.0385664 0.0392992 0.259499 0.426724 +0.0145125 0.093771 0.0501571 0.654705 0.5 +-0.00923752 0.112849 0.0413907 0.615633 0.5 +0.0415329 0.100906 0.0210277 0.662312 0.5 +0.0422859 0.101486 0.0146614 0.569693 0.490777 +-0.0773783 0.112839 -0.00448759 0.505277 0.5 +-0.078035 0.137641 -0.00517379 0.466714 0.5 +0.00873437 0.106347 -0.0202193 0.792948 0.5 +0.0090324 0.13035 0.0211569 0.465873 0.5 +0.00301322 0.130902 0.0206741 0.592486 0.5 +-0.00286342 0.13115 0.0147367 0.587804 0.5 +-0.0391578 0.12569 0.0207996 0.438744 0.464814 +-0.0205725 0.123523 0.0265579 0.445477 0.415699 +-0.0644194 0.155634 0.00928477 0.611624 0.331941 +-0.0463385 0.131411 0.0207671 0.674928 0.5 +-0.0532034 0.0439067 0.044658 0.417403 0.440199 +-0.00297651 0.131046 0.00884967 0.738924 0.5 +-0.089664 0.137755 0.0263925 0.80362 0.5 +-0.00888731 0.124273 -0.00880284 0.767738 0.284429 +-0.0460971 0.0385107 0.0446891 0.654962 0.5 +-0.0649255 0.178874 -0.0579325 0.245129 0.411885 +-0.0329347 0.124601 0.0211235 0.32811 0.5 +-0.0831301 0.149901 0.0334123 0.331963 0.314683 +-0.0895652 0.093948 0.0149303 0.603378 0.5 +-0.0328901 0.124518 -0.00282055 0.63839 0.5 +-0.0845271 0.106161 0.00204328 0.338681 0.43162 +-0.0469341 0.155816 0.00872921 0.470367 0.484595 +0.0206202 0.123943 0.0267275 0.477255 0.5 +-0.026256 0.117499 0.0321672 0.543293 0.5 +-0.021392 0.118632 0.0336445 0.468887 0.429556 +-0.0195069 0.116132 0.0368525 0.534732 0.411301 +-0.0761618 0.118382 0.0520923 0.490413 0.5 +0.00889281 0.0395765 0.0451727 0.476347 0.38769 +-0.0534736 0.159548 0.00753828 0.476667 0.5 +-0.0469464 0.161226 0.00680216 0.495992 0.483766 +-0.0574886 0.154862 0.0204748 0.677314 0.5 +0.0317199 0.117635 0.0202007 0.579556 0.5 +0.0378683 0.105514 -0.00259159 0.588286 0.5 +-0.0811847 0.137693 -0.00253994 0.641736 0.5 +-0.0764348 0.124515 0.0528345 0.65366 0.5 +0.0343816 0.106104 -0.00900254 0.534403 0.5 +0.0457922 0.088316 0.00867097 0.586292 0.439394 +-0.0703288 0.0944195 -0.0159143 0.511499 0.5 +-0.0756048 0.0937947 -0.0135536 0.429902 0.5 +-0.058657 0.156369 0.0093256 0.31374 0.5 +-0.0637335 0.153848 0.00222718 0.478676 0.5 +-0.0777278 0.0960024 0.0363437 0.678588 0.5 +-0.0868519 0.136556 0.00309926 0.517441 0.5 +-0.0455299 0.0432404 0.0432162 0.712662 0.5 +-0.0402011 0.045749 0.0408051 0.669165 0.320516 +-0.0654123 0.160403 -0.0149066 0.335302 0.5 +-0.0318898 0.0387174 0.0510004 0.553401 0.5 +-0.0267997 0.0453977 0.0509311 0.501112 0.5 +-0.0271043 0.0396972 0.0535379 0.487956 0.5 +-0.0215575 0.0460868 0.0517209 0.709553 0.5 +-0.0143078 0.0445295 0.0504368 0.575852 0.5 +-0.00981594 0.043264 0.0493162 0.448927 0.393067 +-0.00348436 0.044054 0.0472086 0.598081 0.5 +0.009577 0.0458139 0.0465877 0.519814 0.433928 +0.02048 0.111086 0.0379569 0.681163 0.5 +-0.0141831 0.128547 0.0200007 0.293349 0.5 +-0.0526702 0.144108 0.0210347 0.639643 0.5 +-0.0634838 0.17384 -0.0527131 0.549906 0.5 +-0.0366553 0.171999 -0.0125745 0.436075 0.5 +-0.0525548 0.131228 0.0328277 0.727547 0.5 +-0.0659567 0.132023 0.0442925 0.724494 0.5 +-0.0921726 0.11832 0.0267606 0.794672 0.5 +0.0452792 0.0882737 0.00268175 0.507794 0.5 +-0.00305651 0.112889 0.0417789 0.635396 0.5 +-0.0451955 0.161396 -0.00871567 0.424682 0.5 +-0.0402914 0.160933 -0.0115368 0.411895 0.405943 +-0.0521414 0.0701165 0.0389584 0.682177 0.456916 +-0.0383315 0.093604 -0.0232581 0.72469 0.5 +-0.0690556 0.137374 0.046352 0.61723 0.5 +-0.0695996 0.167401 -0.0516299 0.518552 0.5 +-0.00246047 0.124102 0.0337609 0.444043 0.5 +-0.0398624 0.128204 0.00299348 0.864483 0.5 +-0.0753331 0.149032 0.0395625 0.432149 0.5 +-0.0701432 0.160618 -0.00917801 0.464361 0.5 +-0.0589378 0.0440425 0.0434222 0.437887 0.447715 +-0.0207164 0.126445 0.00312493 0.710427 0.5 +-0.00850666 0.0467286 0.0481052 0.613173 0.5 +0.00300323 0.0450308 0.0469911 0.464978 0.5 +-0.0802174 0.148665 0.0379438 0.47939 0.5 +-0.0819961 0.130698 0.0513437 0.54405 0.5 +0.00273088 0.106333 -0.0209927 0.733954 0.5 +-0.0757273 0.0885687 -0.0138399 0.397424 0.5 +-0.0698477 0.0882875 -0.0167823 0.420617 0.5 +-0.0668508 0.159243 -0.0102161 0.42216 0.440727 +-0.0226988 0.0885773 0.0536309 0.546444 0.5 +-0.00281419 0.0990077 0.0505614 0.455087 0.5 +0.0452902 0.0696213 0.0253974 0.33948 0.5 +-0.0525629 0.0472823 0.040482 0.279548 0.5 +-0.046959 0.0466581 0.0408127 0.43714 0.5 +-0.0691348 0.156682 -0.00276369 0.629099 0.5 +-0.0897599 0.150073 0.0220744 0.276354 0.5 +-0.0702883 0.155637 0.0263654 0.47565 0.441038 +-0.0765031 0.154893 0.0266005 0.799832 0.5 +-0.00804843 0.0987379 0.0505998 0.327523 0.438474 +0.0300791 0.11567 -0.00430465 0.66246 0.5 +-0.0923054 0.117757 0.0334441 0.476916 0.5 +-0.0331192 0.0449511 0.0462474 0.432059 0.466683 +-0.0337794 0.113308 0.034612 0.683562 0.5 +-0.0521291 0.113769 0.0349566 0.515399 0.5 +0.0437636 0.0825382 -0.0027974 0.568535 0.5 +-0.0202819 0.126016 0.0210507 0.374818 0.437592 +0.0327872 0.043925 0.0295904 0.650152 0.5 +-0.0453372 0.155266 -0.0075525 0.386286 0.5 +-0.0284609 0.173987 -0.0175958 0.379432 0.418735 +0.0268448 0.0881755 -0.0223077 0.715629 0.5 +-0.0308231 0.0923023 -0.0246377 0.474586 0.431409 +-0.0899732 0.149975 0.0141115 0.257143 0.5 +0.0381804 0.105121 0.0266947 0.534482 0.490368 +0.00842001 0.12907 0.0258154 0.374593 0.448613 +-0.0266549 0.0942999 -0.0265555 0.294426 0.332222 +-0.0279896 0.0475815 0.0485532 0.381268 0.5 +-0.0150037 0.048073 0.0483203 0.576068 0.5 +-0.00298993 0.0473817 0.0491102 0.446744 0.431743 +0.00376754 0.0477551 0.0502037 0.495901 0.44823 +0.00748504 0.0473851 0.0493363 0.494952 0.5 +-0.0581651 0.149751 0.032858 0.470966 0.5 +-0.0720688 0.136456 0.0490662 0.625357 0.5 +-0.0810638 0.0939541 -0.0082617 0.685573 0.5 +0.0380863 0.0458646 0.0307423 0.807573 0.5 +-0.0253234 0.182998 -0.0108168 0.245054 0.5 +-0.0230508 0.183235 -0.0110157 0.246322 0.458572 +0.00323317 0.129146 0.0263855 0.347796 0.441746 +-0.0626125 0.149788 -0.00343342 0.691705 0.5 +-0.0591471 0.0466998 0.0395843 0.0883466 0.213805 +-0.0353862 0.0471292 0.0414241 0.656538 0.5 +-0.0194948 0.0486404 0.0485565 0.373069 0.5 +-0.00849455 0.0521633 0.0517688 0.61481 0.5 +-0.00296485 0.051429 0.0527827 0.53012 0.5 +0.00279019 0.0517664 0.0528352 0.560812 0.423049 +0.00904034 0.0517165 0.051222 0.558244 0.5 +0.0443839 0.0943042 0.00268377 0.582116 0.455816 +-0.0886145 0.111113 0.0148415 0.604102 0.5 +-0.0885219 0.144027 0.0329221 0.623335 0.5 +0.0440719 0.0937787 0.0206165 0.493368 0.454688 +0.0436531 0.0980341 0.0146596 0.668233 0.5 +-0.0650976 0.153799 -0.00285808 0.715743 0.5 +-0.0517297 0.0490759 0.0371355 0 0 +-0.0331222 0.0518259 0.0385377 0.676102 0.5 +-0.0377352 0.127448 0.0152358 0.612182 0.5 +-0.00906608 0.100701 0.0460122 0.338462 0.5 +-0.0410683 0.128416 0.0134054 0.417331 0.5 +-0.0712056 0.158724 -0.00521868 0.246338 0.5 +-0.0266313 0.0501544 0.044695 0.182016 0.5 +-0.0211065 0.0519946 0.0455753 0.195646 0.404388 +-0.0168667 0.0505241 0.0476889 0.520032 0.5 +-0.0147601 0.0527687 0.050103 0.451613 0.5 +-0.0626395 0.149972 -0.00897733 0.363787 0.461156 +-0.090861 0.124732 0.00627835 0.587249 0.5 +-0.0255786 0.0923499 -0.0315595 0.294527 0.5 +-0.0709738 0.172947 -0.052768 0.460427 0.5 +-0.0588974 0.143232 -0.00327646 0.48145 0.5 +-0.0943643 0.12436 0.0216467 0.570519 0.5 +0.0337044 0.112449 -0.00269877 0.532211 0.5 +-0.0515051 0.136557 0.0263185 0.72719 0.5 +-0.00886593 0.121199 0.0360577 0.614897 0.5 +-0.061729 0.155665 -0.0259512 0.690546 0.5 +-0.0862637 0.10567 0.0206042 0.519516 0.5 +-0.0895584 0.138606 0.032689 0.685876 0.5 +-0.0268168 0.123904 0.0208113 0.428255 0.5 +0.0341937 0.0515433 0.033081 0.609925 0.5 +0.0401268 0.0512743 0.0322702 0.669803 0.5 +0.0449306 0.0526595 0.0319582 0.655209 0.5 +-0.0405348 0.117168 0.0319438 0.657986 0.5 +-0.0636902 0.155546 -0.0390642 0.523327 0.5 +0.0278663 0.100401 0.0410064 0.689793 0.5 +-0.0275828 0.179275 -0.0157605 0.314049 0.5 +-0.0758871 0.0942302 0.0383961 0.647987 0.457049 +0.0138371 0.129201 0.0203961 0.412341 0.5 +-0.0152723 0.0998429 0.0451638 0.271215 0.427554 +-0.00916763 0.129718 0.0206646 0.438679 0.430152 +-0.0512444 0.0516901 0.0334801 0.192432 0.5 +-0.0461563 0.0523184 0.0379981 0.311543 0.5 +-0.0410001 0.05272 0.0393793 0.629588 0.477809 +-0.0270993 0.0526642 0.0393104 0.155274 0.5 +0.0434924 0.0931097 -0.00154028 0.576953 0.480183 +-0.0823819 0.112683 0.045427 0.438131 0.5 +-0.092066 0.118055 0.00909937 0.325678 0.5 +-0.00448884 0.121713 0.0362976 0.591545 0.5 +0.0147346 0.129423 0.0143146 0.840212 0.5 +-0.0158113 0.161888 -0.00973584 0.202865 0.5 +-0.0778838 0.149704 -0.00337488 0.403345 0.5 +-0.0865357 0.12477 -0.00166991 0.677311 0.5 +0.0153656 0.126058 0.0275381 0.479299 0.429147 +-0.0388913 0.123761 0.0249778 0.514489 0.5 +-0.0390351 0.121238 0.0283673 0.510424 0.470651 +-0.0324963 0.120237 0.0283344 0.568849 0.348087 +-0.0149052 0.12311 0.0316417 0.446842 0.5 +-0.0582873 0.117688 0.0386719 0.634635 0.5 +-0.0626536 0.161861 -0.0264031 0.685413 0.5 +-0.0818147 0.141639 0.0444825 0.392929 0.5 +0.0350734 0.100071 0.0345975 0.716199 0.5 +0.0311856 0.11215 0.0310216 0.689434 0.5 +-0.0335778 0.11743 0.031458 0.525408 0.5 +-0.059637 0.153475 0.031348 0.93076 0.5 +-0.0481256 0.0536625 0.0362191 0.58186 0.5 +-0.059026 0.156388 0.00269852 0.133166 0.5 +-0.0211187 0.0578754 0.0461125 0.660553 0.5 +-0.082738 0.124721 0.050554 0.665202 0.5 +-0.0466997 0.11363 0.0348133 0.568902 0.5 +-0.0107262 0.179662 -0.0277472 0.400699 0.458536 +0.0347725 0.0894441 -0.0170339 0.702331 0.5 +-0.0891825 0.100351 0.0148945 0.574286 0.477791 +0.0257275 0.122894 0.0207337 0.498278 0.5 +-0.0883949 0.100277 0.00841226 0.477822 0.5 +-0.0649858 0.155518 0.0263367 0.864791 0.5 +-0.0768402 0.154073 0.00257877 0.57436 0.5 +-0.0576877 0.154146 0.0262123 0.402162 0.5 +-0.0266966 0.125729 0.0145923 0.393422 0.5 +-0.076376 0.155782 0.0208875 0.505065 0.5 +-0.0763295 0.167188 -0.039594 0.405226 0.426366 +-0.0771877 0.100229 -0.0103313 0.528684 0.5 +-0.0153681 0.0590839 0.0519909 0.652683 0.5 +-0.010206 0.0576345 0.0535443 0.781548 0.413019 +-0.00350044 0.0578672 0.0543757 0.774384 0.5 +0.00300818 0.0568916 0.0538692 0.704357 0.5 +0.0088308 0.0580497 0.0529859 0.692645 0.5 +0.0410915 0.0820775 -0.00893411 0.500391 0.430286 +0.0395449 0.0576373 0.0318985 0.612032 0.4505 +-0.0762443 0.139336 0.0484763 0.588653 0.42756 +-0.0324306 0.120379 -0.00955344 0.656019 0.5 +-0.0194451 0.0881559 0.0557639 0.449983 0.473992 +-0.074787 0.159471 -0.00898201 0.281303 0.5 +-0.0639935 0.15611 0.0210031 0.687157 0.5 +-0.0762438 0.153101 0.0322442 0.323875 0.45561 +-0.00876679 0.128727 0.025102 0.735708 0.5 +0.0282216 0.112237 -0.00983067 0.567922 0.385391 +-0.0451341 0.0593225 0.0387559 0.511245 0.5 +-0.0405005 0.0579499 0.040202 0.540369 0.5 +-0.033993 0.0584028 0.038704 0.646744 0.5 +-0.0272756 0.0585468 0.0382285 0.571263 0.5 +-0.0248608 0.122913 0.0245429 0.379391 0.5 +-0.0825276 0.154355 0.0206132 0.385494 0.444119 +-0.00884271 0.129403 0.00305159 0.702319 0.5 +0.0207587 0.126654 0.0147646 0.624434 0.5 +-0.0394868 0.173351 -0.00839443 0.199648 0.251821 +-0.028421 0.114019 0.0347746 0.603313 0.5 +-0.0193575 0.122009 0.0306737 0.55532 0.5 +-0.0691626 0.161675 -0.0514614 0.38665 0.5 +-0.0516736 0.15006 0.0148119 0.716684 0.5 +-0.0156325 0.120151 0.0349054 0.470635 0.336572 +0.0467454 0.0582319 0.0314404 0.576429 0.5 +-0.0770165 0.0685425 0.0147863 0.703257 0.5 +-0.00967101 0.173225 -0.0264945 0.379771 0.5 +-0.0213141 0.184813 -0.0151112 0.186313 0.403961 +-0.0766524 0.0882188 0.0382876 0.650646 0.5 +-0.0540219 0.0521463 0.0110698 0.270787 0.5 +-0.0219451 0.126821 0.0155536 0.534695 0.5 +-0.0820391 0.153392 0.0264506 0.292051 0.4047 +-0.0213183 0.124468 -0.00290836 0.782181 0.5 +-0.0268364 0.123465 -0.00321538 0.727949 0.5 +-0.0312035 0.177796 -0.0133521 0.371348 0.5 +-0.00749945 0.0598042 0.0553302 0.778631 0.5 +-0.00108951 0.0601245 0.0554892 0.776353 0.5 +0.00280202 0.0599746 0.0555283 0.768603 0.5 +-0.051797 0.118119 0.033678 0.677092 0.438456 +0.00302464 0.131618 0.0149353 0.692956 0.5 +0.0446005 0.0942619 0.0151198 0.554026 0.5 +-0.0880636 0.111855 0.00852285 0.304511 0.3924 +-0.0704321 0.144096 -0.0148369 0.130446 0.5 +-0.0820967 0.0943634 0.0322765 0.629357 0.5 +-0.0269642 0.120812 0.0275676 0.345323 0.386314 +-0.0540164 0.149968 0.0253393 0.49489 0.5 +-0.0800337 0.0995053 -0.00770139 0.499264 0.5 +0.00922138 0.12038 0.0360924 0.562107 0.5 +0.00286056 0.117968 0.0387331 0.649494 0.5 +-0.0936229 0.118494 0.0206524 0.664933 0.5 +-0.0409923 0.113229 0.035109 0.667726 0.5 +-0.0822185 0.154488 0.0146661 0.500539 0.5 +-0.0625956 0.155202 -0.0329876 0.814083 0.5 +-0.0462511 0.124621 -0.00898124 0.590842 0.5 +-0.0220336 0.160676 -0.00426008 0.309766 0.47069 +-0.065621 0.172767 -0.0466049 0.613718 0.5 +-0.0762614 0.155884 0.0148687 0.717415 0.5 +-0.0644988 0.149044 -0.0265159 0.690046 0.5 +-0.0581979 0.0593456 0.0210895 0.079935 0 +-0.0335439 0.122618 0.0254024 0.514037 0.5 +-0.0826578 0.153434 0.00921403 0.601617 0.5 +-0.049999 0.132417 0.0286961 0.650903 0.5 +0.0088217 0.131096 0.00864908 0.834131 0.5 +-0.0154842 0.0644282 0.0533754 0.608033 0.445048 +-0.00871951 0.065015 0.0556827 0.650491 0.470895 +-0.00324815 0.0640003 0.0562816 0.762387 0.5 +0.00292601 0.0643094 0.0563956 0.748671 0.5 +0.00738462 0.0651614 0.0553402 0.488299 0.46872 +-0.0143174 0.116971 0.037836 0.441459 0.5 +-0.00299223 0.118083 0.0390751 0.65526 0.5 +-0.00864301 0.117816 0.0385662 0.681198 0.5 +-0.0532884 0.0571719 0.0206631 0.106703 0 +-0.0882588 0.100387 0.0210097 0.535268 0.5 +-0.0324377 0.099703 -0.0227313 0.620611 0.5 +0.0425072 0.0603725 0.0302275 0.744481 0.5 +0.0523383 0.0580401 0.0290457 0.405493 0.41666 +0.0413612 0.0877503 -0.00929235 0.635782 0.5 +-0.0581547 0.0620148 0.0270981 0.448705 0.5 +-0.0530328 0.0590503 0.0266933 0.136202 0.5 +-0.0477227 0.135526 0.0148654 0.740469 0.5 +0.00323512 0.0983053 0.0504424 0.395048 0.366076 +0.0150627 0.119642 0.034806 0.696033 0.374342 +-0.0453373 0.0643061 0.0391142 0.587502 0.5 +-0.0394097 0.0644278 0.0414133 0.715885 0.5 +-0.033068 0.0642666 0.0396407 0.650585 0.5 +-0.0270237 0.0644489 0.0395335 0.617817 0.5 +-0.0881604 0.149479 0.0268507 0.265855 0.5 +-0.0640727 0.143434 -0.00894036 0.668887 0.5 +0.00286033 0.121151 0.036139 0.623932 0.5 +-0.0827306 0.138152 0.0466993 0.412428 0.5 +-0.00261511 0.127006 0.030132 0.335862 0.5 +0.0355841 0.108498 -0.00452523 0.461807 0.466834 +0.0219203 0.114136 0.0356941 0.554683 0.5 +-0.0379555 0.161954 -0.0128021 0.499753 0.5 +-0.0526362 0.0643632 0.0340621 0.277414 0.5 +0.025874 0.123374 0.0143811 0.506732 0.5 +-0.0451406 0.131184 0.00901599 0.493237 0.5 +-0.075778 0.155361 -0.00310678 0.708579 0.5 +-0.0739145 0.156437 -0.0274945 0.645327 0.5 +-0.0833056 0.100778 -0.00354288 0.490806 0.397415 +-0.0767099 0.173942 -0.0452732 0.259897 0.5 +0.00846106 0.116985 0.038033 0.66824 0.5 +-0.0200899 0.184788 -0.020546 0.237973 0.106197 +-0.046571 0.120413 0.0285524 0.752764 0.5 +-0.0515313 0.123718 -0.0088569 0.538005 0.5 +0.0212116 0.105804 -0.0171101 0.576137 0.468722 +-0.0938613 0.124487 0.0151416 0.737559 0.5 +0.0414591 0.064577 0.0290352 0.617794 0.5 +0.0466725 0.0643471 0.0285539 0.486488 0.5 +0.0526423 0.0634018 0.0283831 0.501229 0.5 +-0.0468141 0.168322 -0.00285433 0.371444 0.5 +-0.0869152 0.0944156 0.00293118 0.494536 0.346642 +-0.0773713 0.161559 -0.0267238 0.476378 0.5 +-0.0396095 0.126677 -0.00334699 0.853498 0.5 +-0.0271315 0.0764239 0.0455715 0.693464 0.5 +-0.0587953 0.107012 -0.0177177 0.484023 0.5 +-0.0748314 0.11156 -0.00720996 0.44421 0.5 +-0.0642623 0.0888181 -0.018733 0.676741 0.5 +-0.0325172 0.0881157 -0.0255424 0.370176 0.330832 +0.00325654 0.0700086 0.0561047 0.731659 0.5 +0.0103151 0.0636713 0.0537558 0.477793 0.458716 +0.0432701 0.0979967 0.00267804 0.544182 0.465461 +-0.0708223 0.156244 0.021207 0.768676 0.5 +-0.0584176 0.0702277 0.0384322 0.673529 0.5 +-0.0703207 0.112305 -0.00963846 0.530989 0.5 +-0.0581653 0.0881983 -0.0208369 0.619673 0.5 +-0.0443038 0.0877156 -0.0218942 0.693083 0.5 +-0.0488091 0.0660127 0.0373959 0.829801 0.5 +0.00269411 0.126911 0.030114 0.419275 0.5 +0.0239692 0.12105 0.0288706 0.523768 0.5 +-0.0469203 0.117468 0.0314407 0.649888 0.5 +-0.091552 0.143361 0.0201623 0.515231 0.5 +-0.0907563 0.143859 0.0263089 0.504684 0.469425 +-0.0495713 0.144022 0.00976642 0.636632 0.45621 +-0.0770934 0.15583 -0.0147903 0.519503 0.5 +-0.0868322 0.105634 0.00887573 0.731519 0.5 +-0.082848 0.131648 -0.00299747 0.386393 0.5 +-0.0384249 0.106407 -0.0201393 0.79815 0.5 +-0.0823953 0.118841 -0.00336022 0.540306 0.5 +-0.0102333 0.0876697 -0.0375101 0.564234 0.5 +-0.00789361 0.089842 -0.0363492 0.755212 0.5 +-0.0579097 0.111769 -0.0161856 0.463258 0.5 +0.0140074 0.105793 -0.0193841 0.554632 0.5 +-0.00328561 0.105435 -0.0225198 0.740261 0.5 +-0.0409613 0.070972 0.0419904 0.795206 0.5 +-0.033501 0.0710512 0.0409793 0.706864 0.5 +-0.0272732 0.0701361 0.0410332 0.726443 0.5 +-0.0161963 0.127121 0.0228897 0.305628 0.5 +-0.0190644 0.127936 0.0133818 0.519435 0.5 +-0.0149926 0.0694778 0.0545159 0.595577 0.5 +-0.00932719 0.0707313 0.0562936 0.785998 0.5 +-0.002994 0.0710941 0.0575426 0.779773 0.5 +0.00838831 0.0714267 0.0556585 0.671976 0.5 +0.0102531 0.0693533 0.0547665 0.525573 0.5 +-0.0323939 0.153399 -0.00240332 0.209483 0.5 +0.0435981 0.0881514 0.0254203 0.603121 0.478265 +-0.0586529 0.124882 -0.00781093 0.700525 0.5 +-0.0204287 0.107045 -0.022046 0.723165 0.5 +-0.0382961 0.0879422 -0.0229335 0.629507 0.5 +-0.081573 0.113394 -0.00173083 0.508624 0.426711 +-0.0380811 0.154778 -0.00889149 0.748063 0.5 +-0.00212588 0.0889926 -0.0354677 0.782073 0.5 +0.00904065 0.100193 -0.0222794 0.54652 0.5 +-0.0467068 0.0700493 0.0405769 0.710023 0.5 +-0.0779974 0.151244 0.0352264 0.347296 0.5 +0.0149019 0.116126 0.0367849 0.635361 0.5 +-0.07603 0.106301 -0.0087688 0.520423 0.5 +-0.0885261 0.137839 0.0393964 0.651389 0.5 +-0.0703112 0.131278 -0.00857724 0.737784 0.5 +0.0419377 0.0703605 0.0288832 0.54196 0.5 +0.0514194 0.0684326 0.0256968 0.512602 0.5 +-0.0922548 0.124813 0.0393757 0.806636 0.5 +0.0135035 0.128105 0.0250558 0.487288 0.424656 +-0.0704618 0.125421 -0.00881334 0.801453 0.5 +-0.0703931 0.118731 -0.00840961 0.381625 0.5 +-0.0719685 0.106305 -0.0114493 0.499561 0.5 +-0.0646972 0.161498 -0.0573125 0.41682 0.5 +0.0463693 0.0715128 0.0216754 0.461473 0.448797 +-0.0538246 0.153497 0.0152346 0.602795 0.402362 +-0.0142869 0.0724666 0.0554243 0.617853 0.5 +-0.0394057 0.118512 -0.01336 0.602235 0.5 +-0.0280509 0.0880065 -0.0330858 0.33771 0.5 +-0.00957701 0.168254 -0.0212321 0.359593 0.5 +-0.0445856 0.167324 -0.00782662 0.413138 0.327414 +-0.0513101 0.161594 -0.00355965 0.292939 0.5 +-0.0702356 0.179304 -0.0569867 0.253404 0.5 +-0.0644695 0.168402 -0.0398946 0.676128 0.5 +-0.0089459 0.130139 0.00911776 0.703889 0.5 +0.00219503 0.0880369 -0.0342201 0.75972 0.5 +-0.0268891 0.16726 -0.0174204 0.847505 0.5 +-0.0525985 0.155054 -0.00368706 0.37123 0.419006 +-0.0761618 0.131736 -0.00696723 0.42394 0.44361 +-0.0759576 0.07099 0.0265672 0.757943 0.5 +-0.00875341 0.10588 -0.02285 0.71177 0.5 +-0.0519242 0.1493 -0.00277595 0.483301 0.5 +-0.016371 0.18465 -0.0214272 0.271878 0.5 +-0.020548 0.0705632 0.0520411 0.601639 0.5 +-0.0813371 0.120073 0.049533 0.662828 0.5 +-0.0625087 0.149934 -0.0150319 0.415531 0.480025 +-0.0831098 0.10651 0.0273461 0.515033 0.5 +-0.011119 0.163582 -0.018751 0.17813 0.5 +-0.00291057 0.101147 0.0456419 0.307462 0.5 +-0.0635467 0.0660523 0.0318653 0.49936 0.45677 +-0.0511979 0.0873878 -0.0217212 0.75515 0.5 +-0.0530335 0.0740367 0.0417219 0.727079 0.5 +-0.0465007 0.0756701 0.0421325 0.696934 0.5 +-0.022314 0.0760359 0.0530306 0.607912 0.5 +-0.0151351 0.0764056 0.0563566 0.616605 0.5 +-0.00900601 0.0766621 0.0575852 0.791265 0.5 +-0.00299732 0.0767339 0.0584651 0.678647 0.450838 +0.00347424 0.0769755 0.0565905 0.523043 0.5 +0.00860763 0.0767538 0.0557293 0.612782 0.5 +-0.0271239 0.156216 -0.00302734 0.139755 0.329034 +-0.0633091 0.16738 -0.0580906 0.358909 0.45373 +-0.0873943 0.144225 0.00902371 0.583528 0.5 +-0.0626891 0.162297 -0.0470925 0.70746 0.5 +0.0370111 0.110397 0.00265294 0.516602 0.481774 +-0.0744006 0.144062 -0.00864565 0.417075 0.5 +-0.0244124 0.183841 -0.0135068 0.166659 0.5 +-0.0803381 0.0715473 0.0150483 0.5669 0.5 +-0.0644528 0.0761561 0.040638 0.610448 0.476331 +-0.0588413 0.0753794 0.0421022 0.634349 0.5 +-0.0524294 0.077372 0.0433357 0.774603 0.5 +-0.0484981 0.0769334 0.043281 0.674446 0.5 +-0.0414954 0.0773856 0.0429005 0.752035 0.5 +-0.0395008 0.0754808 0.0425134 0.72256 0.5 +-0.033488 0.0764759 0.0414605 0.748994 0.5 +-0.0627838 0.162163 -0.0530538 0.691143 0.5 +0.0381456 0.0881056 -0.0138675 0.676152 0.5 +-0.0642837 0.0396418 0.039624 0.532543 0.5 +-0.0526672 0.121335 -0.010917 0.523608 0.5 +-0.0738104 0.162942 -0.037093 0.458525 0.324439 +-0.0490869 0.13938 0.00889895 0.657159 0.5 +-0.0495771 0.166027 -0.00171113 0.322064 0.5 +-0.0709736 0.161609 -0.0450808 0.365011 0.420984 +0.0251847 0.12195 0.0254854 0.524179 0.5 +-0.0193615 0.0781018 0.0558163 0.595703 0.4544 +-0.0265458 0.120645 -0.00911332 0.52669 0.5 +-0.061796 0.155741 -0.0207923 0.443336 0.5 +-0.082476 0.110295 0.0324103 0.745977 0.5 +-0.0691674 0.156314 -0.050857 0.360984 0.5 +-0.0622848 0.16236 -0.0396288 0.427869 0.464762 +-0.088248 0.113803 0.0264606 0.595923 0.5 +-0.0575392 0.0787026 0.0436363 0.801201 0.5 +-0.0298439 0.0782596 0.0421168 0.771067 0.5 +-0.0677617 0.0876701 0.0434928 0.59211 0.5 +-0.0921939 0.131884 0.015227 0.781723 0.5 +-0.0878987 0.111742 0.0209206 0.698028 0.5 +-0.049353 0.139298 0.0147955 0.761861 0.5 +-0.0327071 0.173321 -0.0149209 0.384317 0.5 +-0.0866298 0.152851 0.0149144 0.267781 0.5 +-0.0779646 0.100025 0.035185 0.697079 0.5 +-0.0935537 0.118404 0.0151524 0.667612 0.5 +-0.084908 0.10801 0.0228537 0.694681 0.5 +-0.0210677 0.0821213 0.0562096 0.557699 0.5 +-0.0149957 0.082187 0.0572635 0.665194 0.5 +-0.00899671 0.0822178 0.0576875 0.71377 0.5 +-0.00299966 0.0822055 0.0574653 0.668024 0.472979 +0.0034748 0.0817533 0.0567544 0.69456 0.5 +0.00824833 0.082992 0.0556315 0.615627 0.5 +0.0102414 0.0812949 0.0546523 0.424956 0.485927 +-0.0398496 0.123966 -0.00878898 0.60318 0.5 +-0.092257 0.124769 0.00902091 0.309094 0.468872 +-0.0436728 0.126191 0.0209533 0.472028 0.413108 +-0.0820425 0.105873 -0.00271871 0.341089 0.347157 +-0.0663016 0.0807623 0.0424437 0.632223 0.5 +-0.0639939 0.0836688 0.0439754 0.778832 0.5 +-0.058539 0.0825906 0.0439671 0.770991 0.5 +-0.0521209 0.0822523 0.0446262 0.782751 0.5 +-0.0467559 0.0828569 0.0439458 0.699516 0.399968 +-0.0424962 0.0810729 0.0423266 0.617938 0.5 +-0.0404903 0.0830123 0.0430984 0.712874 0.5 +-0.0365108 0.0825773 0.0434355 0.675696 0.5 +-0.032204 0.0824171 0.0421121 0.529763 0.5 +-0.0864005 0.152981 0.0204492 0.250247 0.416029 +-0.0235661 0.115415 0.0353667 0.518805 0.471584 +-0.0764871 0.111685 0.0461598 0.498936 0.5 +-0.0763895 0.14977 -0.00829972 0.604451 0.5 +-0.0754801 0.161855 -0.0327796 0.39691 0.5 +-0.0285733 0.0828247 0.0462702 0.636794 0.5 +-0.0862819 0.100797 0.0028483 0.65379 0.5 +0.021088 0.08242 0.0504086 0.491924 0.475524 +-0.0801892 0.143128 -0.00230055 0.641961 0.5 +0.00844098 0.124407 -0.00878569 0.555015 0.5 +0.0147552 0.0825883 0.0529115 0.480476 0.5 +-0.061995 0.161169 -0.032654 0.499509 0.5 +-0.0807571 0.1525 0.0307996 0.295115 0.454522 +-0.00295953 0.130272 0.00279699 0.742188 0.5 +-0.0153619 0.0884791 0.0565599 0.818561 0.5 +-0.00899729 0.0878977 0.0570287 0.818958 0.5 +-0.00299611 0.0880658 0.0568489 0.695384 0.5 +0.00301457 0.0885291 0.0562756 0.81087 0.5 +0.00834267 0.0873808 0.0555541 0.577038 0.479545 +-0.00897481 0.0941651 -0.0338408 0.678465 0.5 +0.0314278 0.11673 0.0250113 0.597807 0.5 +-0.0760602 0.155337 0.0093949 0.68566 0.5 +0.0257808 0.116776 -0.00728909 0.54747 0.36626 +-0.0646577 0.0882843 0.0447113 0.69894 0.5 +-0.058996 0.0882997 0.0449149 0.778337 0.5 +-0.0529958 0.0883132 0.0451395 0.696869 0.45083 +-0.0465421 0.0881579 0.0443187 0.605881 0.5 +-0.0404961 0.0876863 0.0430941 0.556958 0.5 +-0.0331792 0.0885648 0.04366 0.668172 0.5 +-0.0280482 0.0879652 0.046363 0.699915 0.5 +0.0150626 0.0881784 0.0517745 0.702815 0.5 +0.0205955 0.087113 0.0492325 0.678548 0.5 +-0.0702712 0.0823874 0.0409431 0.628092 0.5 +-0.0296926 0.0896882 -0.0286839 0.317989 0.390463 +-0.0236137 0.179242 -0.0115629 0.264741 0.5 +-0.0809391 0.100029 0.0323433 0.683272 0.5 +-0.0928336 0.130683 0.0207107 0.62518 0.472282 +-0.0761771 0.156201 -0.0204165 0.612769 0.5 +0.0146577 0.129396 0.00843576 0.595962 0.5 +0.0104845 0.089766 0.0542005 0.46622 0.5 +-0.072579 0.161253 -0.0389447 0.482103 0.5 +-0.0322741 0.110391 -0.0184574 0.809584 0.5 +-0.0550172 0.150108 0.027792 0.412797 0.5 +-0.071635 0.0883254 0.0414652 0.604622 0.463567 +-0.0424904 0.0895336 0.0426086 0.959715 0.5 +0.0207945 0.0897491 0.0484315 0.669841 0.5 +0.0273189 0.118845 -0.00265658 0.615055 0.5 +0.0285218 0.121112 0.0162366 0.593248 0.434231 +-0.00899735 0.0930598 0.0559298 0.639163 0.5 +-0.00291176 0.118727 -0.0144021 0.826286 0.5 +-0.0885191 0.113233 0.0327948 0.447552 0.461926 +-0.0713744 0.0938304 0.0415269 0.544171 0.444972 +-0.0641029 0.0935514 0.0439488 0.597795 0.395518 +-0.0584965 0.0944146 0.0446213 0.678752 0.5 +-0.0515853 0.0939836 0.0442383 0.634435 0.477778 +-0.0465591 0.0937901 0.0436103 0.714507 0.5 +-0.0414914 0.0942416 0.0425268 0.490492 0.46307 +-0.0377723 0.0933327 0.0434889 0.620752 0.5 +-0.0332864 0.0945766 0.0443868 0.723538 0.5 +-0.0263807 0.094318 0.0450568 0.620324 0.5 +-0.0141606 0.0929618 0.0553898 0.503825 0.5 +-0.00319641 0.0930898 0.0557853 0.624082 0.5 +0.00150357 0.0931879 0.0551544 0.492015 0.5 +0.00367616 0.0950752 0.0535295 0.508462 0.5 +0.00915739 0.0941794 0.0519212 0.597357 0.452723 +0.0216553 0.0937794 0.0473202 0.671835 0.5 +-0.0702968 0.174481 -0.045888 0.43732 0.455145 +-0.0305889 0.168899 -0.00702359 0.59106 0.5 +-0.0528191 0.162649 0.00296711 0.343566 0.5 +-0.0890968 0.0940104 0.0208024 0.539357 0.478012 +-0.0626249 0.173112 -0.0586131 0.353011 0.447085 +-0.0443835 0.105923 -0.0201903 0.683228 0.5 +-0.0664958 0.0951776 0.0424531 0.672396 0.5 +-0.0324384 0.126415 0.0146752 0.445893 0.463327 +-0.0152469 0.0961657 0.0518098 0.323594 0.5 +-0.0097537 0.0960506 0.0535818 0.446732 0.426556 +-0.00304601 0.0963367 0.0537791 0.579525 0.5 +0.01642 0.0957081 0.0480381 0.687032 0.5 +-0.0876548 0.105191 0.0148253 0.774556 0.5 +-0.0699417 0.0763232 0.0381496 0.596573 0.5 +0.0358078 0.0958594 -0.0120328 0.738943 0.5 +0.0374966 0.100154 0.031249 0.720944 0.5 +-0.0530195 0.150059 0.0207323 0.696139 0.5 +-0.0905911 0.131765 0.0328667 0.816274 0.5 +-0.0709717 0.147309 -0.0268389 0.224341 0.389051 +-0.0443321 0.0935075 -0.0222668 0.709831 0.5 +-0.0400911 0.128618 0.00909496 0.81345 0.5 +-0.0710054 0.100275 0.0398128 0.481571 0.5 +-0.0653063 0.100124 0.0417262 0.670525 0.470095 +-0.0589969 0.0980495 0.0430328 0.779482 0.5 +-0.0529938 0.0980631 0.0432952 0.836255 0.5 +-0.0469951 0.0980659 0.043235 0.637806 0.5 +-0.0408476 0.100401 0.0414668 0.648927 0.395789 +-0.0323344 0.0988071 0.0435216 0.652032 0.5 +-0.0259464 0.0998425 0.0438947 0.737424 0.5 +-0.0212066 0.0999849 0.0444194 0.576924 0.5 +0.00749586 0.09835 0.0488255 0.46146 0.5 +0.0090271 0.101109 0.0469975 0.470012 0.5 +0.0153076 0.100008 0.0472449 0.600016 0.5 +0.0208175 0.100067 0.0453866 0.595024 0.46889 +-0.0648326 0.131509 -0.00838673 0.790869 0.5 +-0.0740297 0.150832 -0.0323367 0.406089 0.5 +-0.0932444 0.124885 0.026841 0.802537 0.5 +-0.0633239 0.169093 -0.0610358 0.362406 0.5 +-0.0771158 0.162488 -0.0202679 0.465605 0.5 +-0.0585669 0.0647555 0.0323611 0.494963 0.328305 +0.0377689 0.110383 0.00969065 0.710008 0.5 +-0.0503559 0.0935892 -0.0218956 0.807094 0.5 +-0.0589961 0.101543 0.042437 0.529374 0.5 +-0.0516647 0.101981 0.0417488 0.647378 0.5 +-0.0469248 0.101325 0.0421166 0.608323 0.5 +-0.0352173 0.101965 0.0413638 0.751982 0.5 +0.00285015 0.100935 0.0464433 0.395489 0.5 +-0.075479 0.150312 -0.0143808 0.730394 0.5 +-0.078936 0.108126 -0.00525459 0.540251 0.381971 +-0.0251472 0.168981 -0.0187156 0.757996 0.5 +-0.071457 0.113692 0.0499983 0.429195 0.5 +-0.0747771 0.0997536 0.0377868 0.551123 0.5 +-0.0902919 0.137212 0.0146286 0.495279 0.5 +-0.0264568 0.105883 0.0411765 0.58994 0.471484 +-0.0209966 0.1044 0.0429589 0.797197 0.5 +-0.0145208 0.105597 0.0430511 0.780555 0.5 +-0.00899316 0.10622 0.0435541 0.510194 0.5 +-0.00289533 0.105882 0.0438861 0.384284 0.5 +0.00245231 0.105621 0.0429868 0.332307 0.5 +0.00945613 0.104903 0.0439002 0.435482 0.5 +0.0149913 0.104769 0.0443348 0.548532 0.5 +-0.0772186 0.106139 0.0350601 0.430274 0.367589 +-0.0708601 0.106945 0.0381598 0.402417 0.5 +-0.0652985 0.106577 0.0390805 0.558067 0.398761 +-0.0583896 0.105623 0.0405326 0.594554 0.5 +-0.0529341 0.106445 0.0398435 0.644542 0.398207 +-0.0461638 0.105797 0.0404843 0.759883 0.5 +-0.0400204 0.106789 0.0388993 0.653599 0.5 +-0.03311 0.106322 0.0394461 0.532024 0.5 +0.0193026 0.10477 0.0431964 0.486674 0.480281 +-0.0501412 0.13774 0.00286739 0.569746 0.5 +0.0266104 0.105911 0.0384052 0.650339 0.5 +0.0438719 0.088439 -0.0031027 0.506353 0.478726 +-0.0590381 0.113203 0.0362299 0.87726 0.5 +-0.021499 0.107851 0.0414162 0.584043 0.5 +-0.0164951 0.107881 0.0420289 0.633836 0.5 +0.00450524 0.107918 0.0419336 0.79888 0.5 +0.00856234 0.108229 0.0410531 0.820786 0.5 +0.0149994 0.10779 0.0412845 0.598409 0.5 +0.0213049 0.106041 0.0409433 0.561561 0.479574 +-0.0336665 0.167843 -0.00338268 0.478764 0.5 +-0.0587789 0.131705 -0.00671001 0.673026 0.5 +-0.0443517 0.100306 -0.0215281 0.825942 0.5 +-0.0147306 0.179604 -0.0266222 0.40888 0.5 +0.0159582 0.108177 -0.0177822 0.564672 0.468958 +-0.0638447 0.138119 -0.00733006 0.633194 0.5 +-0.0330953 0.167861 -0.0155539 0.527374 0.428366 +-0.0643684 0.125359 -0.00876153 0.813046 0.5 +-0.032583 0.161992 -0.0142418 0.852313 0.5 +-0.068568 0.110392 0.0392194 0.353622 0.364353 +-0.0643494 0.112195 0.0388907 0.34696 0.5 +-0.0593722 0.112082 0.0373875 0.588374 0.5 +-0.0529986 0.110472 0.0373551 0.513233 0.408461 +-0.0468613 0.11028 0.0378862 0.569336 0.5 +-0.040984 0.110496 0.0370883 0.553647 0.5 +-0.0320055 0.110468 0.0370438 0.565129 0.5 +-0.0074871 0.110717 0.042649 0.617568 0.5 +-0.00449218 0.110714 0.0426582 0.621679 0.5 +0.0250033 0.110611 0.0368459 0.631257 0.5 +0.025919 0.0995286 -0.0189206 0.684181 0.5 +-0.06973 0.112153 0.0457184 0.746569 0.5 +-0.045604 0.148834 -0.00329924 0.521986 0.5 +-0.0653006 0.0947889 -0.0177657 0.582853 0.5 +-0.0906677 0.13318 0.0277848 0.773217 0.5 +-0.0331508 0.094474 -0.0237799 0.742 0.5 +-0.0575764 0.0941613 -0.0208023 0.703326 0.5 +-0.0200586 0.0397198 0.0532237 0.447203 0.5 +-0.0203685 0.0352888 0.051184 0.291685 0.457265 +-0.0764163 0.125947 -0.00745144 0.524375 0.5 +-0.0205906 0.167551 -0.0139677 0.809186 0.5 +0.025858 0.116851 0.0315289 0.660225 0.5 +-0.0139279 0.167191 -0.021044 0.669958 0.5 +-0.0587481 0.149802 -0.00133886 0.562881 0.5 +0.0144191 0.0395247 0.0443396 0.266796 0.5 +0.0332953 0.105473 0.0329627 0.721815 0.5 +-0.0647461 0.114313 -0.0115219 0.592211 0.5 +-0.0520818 0.0353771 0.0449331 0.341981 0.5 +-0.015004 0.0392095 0.0513548 0.312679 0.5 +-0.0094925 0.0384962 0.049554 0.302651 0.5 +-0.0638496 0.117631 0.0454477 0.559641 0.5 +-0.0573025 0.136864 0.033162 0.554568 0.5 +0.0189101 0.0400942 0.0428502 0.270107 0.5 +-0.0508192 0.124393 0.0332635 0.581555 0.5 +-0.0182623 0.180885 -0.017743 0.594618 0.5 +-0.0651271 0.150343 -0.0325707 0.505808 0.5 +0.0332966 0.0936886 0.0400216 0.637373 0.5 +-0.0463011 0.149493 0.00833001 0.611316 0.5 +0.00260773 0.0354887 0.0450013 0.261253 0.345588 +-0.0780807 0.10971 0.0423535 0.916894 0.5 +-0.0542262 0.124756 0.0369858 0.64506 0.5 +-0.0402584 0.0361447 0.0436625 0.193197 0.5 +-0.00317483 0.0942874 -0.0331049 0.71511 0.325502 +-0.0151032 0.179716 -0.0207621 0.731902 0.5 +0.026141 0.0403246 0.0327265 0.294647 0.339561 +-0.0640247 0.111376 -0.0136272 0.608847 0.5 +0.027817 0.112309 0.0339118 0.692282 0.5 +-0.0586332 0.142774 0.0334953 0.761767 0.5 +-0.0146622 0.167501 -0.0154455 0.61604 0.5 +-0.0270893 0.167298 -0.00866399 0.642638 0.5 +0.0152056 0.045813 0.0442638 0.487785 0.5 +0.0190988 0.0442996 0.0429 0.362689 0.463942 +0.0215694 0.0456112 0.041209 0.479281 0.5 +0.0257452 0.0459137 0.0381185 0.444171 0.5 +0.0387365 0.0944447 0.0327088 0.718127 0.5 +0.0287308 0.0456722 0.0347466 0.335561 0.431941 +-0.0151805 0.173809 -0.0213305 0.730436 0.5 +-0.0658903 0.118253 0.0498126 0.307185 0.5 +-0.0628345 0.093206 -0.0188544 0.659442 0.5 +-0.0643065 0.142451 0.0394123 0.621016 0.5 +-0.040079 0.150283 0.00280951 0.491474 0.5 +-0.026851 0.173268 -0.00983852 0.620534 0.5 +-0.0207913 0.173767 -0.0147826 0.653794 0.5 +-0.0582334 0.124238 0.0403406 0.70004 0.5 +-0.0683337 0.131545 0.0479709 0.732904 0.5 +-0.0693547 0.10637 -0.012803 0.472443 0.5 +-0.0428668 0.157627 0.0050419 0.670804 0.5 +-0.0476449 0.130368 0.0258834 0.623828 0.5 +0.0379451 0.0817167 -0.0141547 0.644934 0.5 +0.0312298 0.0470286 0.0324465 0.426433 0.5 +-0.0662284 0.138149 0.042896 0.72515 0.5 +-0.0644094 0.105575 -0.0158634 0.566501 0.5 +0.0411271 0.0443713 0.0285474 0.466284 0.5 +-0.0830031 0.0762361 0.0150296 0.67606 0.5 +-0.0660167 0.123488 0.0501643 0.718404 0.5 +-0.0416352 0.155329 0.00636435 0.466436 0.5 +-0.0388456 0.155994 0.00477206 0.438555 0.402124 +-0.0551732 0.116538 0.0359195 0.457649 0.5 +-0.0600069 0.134082 0.0369434 0.682472 0.5 +0.0452816 0.0453284 0.0263124 0.471094 0.5 +0.0513161 0.0463154 0.0204963 0.342211 0.398387 +-0.0106687 0.172847 -0.0215627 0.69267 0.5 +-0.0147735 0.18419 -0.0259341 0.309641 0.5 +0.0301064 0.106776 0.0358091 0.72383 0.5 +-0.063709 0.125122 0.0457451 0.712215 0.420475 +0.0473431 0.0499217 0.0295077 0.554948 0.5 +0.0497106 0.0482066 0.0259506 0.48379 0.5 +0.0518484 0.0518415 0.0267161 0.416499 0.5 +-0.0162732 0.172938 -0.0174582 0.719256 0.5 +0.0355097 0.107304 0.0291151 0.718782 0.5 +-0.0552656 0.143077 0.0300537 0.622521 0.5 +-0.0637191 0.136482 0.0388176 0.603354 0.5 +-0.0199086 0.161072 -0.00863325 0.350317 0.5 +-0.0209172 0.179282 -0.0148523 0.455842 0.5 +0.014511 0.0513519 0.0474271 0.589102 0.5 +-0.0610259 0.126912 0.0416133 0.698375 0.5 +0.0539905 0.0494141 0.0219114 0.418448 0.5 +0.00925922 0.118865 -0.0148674 0.54369 0.457314 +-0.0268384 0.162091 -0.00836699 0.546076 0.486591 +-0.0367024 0.163198 -0.00107067 0.680811 0.5 +-0.0336432 0.155948 0.00188963 0.445666 0.44081 +-0.0280966 0.159587 0.000483069 0.431301 0.5 +-0.026491 0.16163 -0.00321758 0.537982 0.323001 +0.0206613 0.0528733 0.0451655 0.647628 0.324331 +0.0231576 0.0513069 0.0414753 0.507052 0.5 +0.0266044 0.0526516 0.039853 0.635463 0.446542 +0.0309772 0.0527823 0.0371348 0.671735 0.5 +0.0239371 0.103424 0.0418106 0.654526 0.5 +0.0568895 0.0527484 0.0209204 0.474964 0.5 +-0.0664209 0.11329 0.0441331 0.212624 0.5 +-0.0326789 0.162384 -0.00243762 0.543585 0.5 +0.0145199 0.0932586 -0.026363 0.546403 0.5 +-0.0543983 0.119186 0.0365781 0.502204 0.44785 +-0.0564272 0.132376 0.0357966 0.720059 0.5 +-0.0501636 0.142911 0.00230897 0.376445 0.5 +-0.043714 0.147707 0.0038501 0.245798 0.5 +-0.0291346 0.177171 -0.00534178 0.371295 0.5 +0.0357304 0.100363 -0.0111604 0.61591 0.5 +0.0133943 0.0541536 0.0499521 0.532724 0.5 +0.0551089 0.0545007 0.0253961 0.545646 0.5 +0.0291033 0.0572886 0.0407089 0.633826 0.5 +0.0585723 0.0583402 0.0214893 0.549998 0.477428 +-0.0740322 0.0656952 0.0144875 0.594594 0.5 +-0.0749844 0.179305 -0.0518221 0.216638 0.5 +0.0145778 0.0585769 0.0501691 0.387785 0.5 +0.0214876 0.058332 0.0470549 0.596242 0.5 +0.0259507 0.0590004 0.0437762 0.663038 0.5 +0.032833 0.0585633 0.0387158 0.630786 0.5 +0.0358218 0.0578374 0.0350365 0.591179 0.5 +0.0360585 0.0951301 0.0364902 0.726421 0.5 +-0.0886806 0.118283 0.0459142 0.444358 0.5 +0.0562736 0.0586365 0.0253398 0.57284 0.5 +0.0303311 0.0951295 0.0419589 0.717458 0.5 +-0.0222315 0.167389 -0.0110472 0.688671 0.5 +-0.0543257 0.136577 0.0307959 0.688078 0.5 +-0.0500074 0.150447 0.0117579 0.563476 0.5 +-0.0616289 0.137406 0.0354744 0.592141 0.5 +-0.0319367 0.159507 0.00191749 0.44862 0.5 +-0.0634458 0.132148 0.0406867 0.731705 0.5 +0.0368678 0.0921989 0.0367449 0.708135 0.5 +-0.0728433 0.156137 -0.0339112 0.713518 0.5 +0.0389872 0.0640689 0.0330299 0.521361 0.5 +-0.0636611 0.1488 -0.0205996 0.618447 0.5 +0.0153938 0.0648444 0.0513036 0.554385 0.463079 +0.0213958 0.0645506 0.0473078 0.414803 0.412252 +0.0265105 0.0649235 0.0439721 0.611901 0.5 +0.0302364 0.0650657 0.0415975 0.600683 0.487653 +0.0331295 0.0642221 0.0397381 0.500385 0.490901 +0.0367885 0.065027 0.0366867 0.593561 0.5 +0.0563131 0.0650782 0.0252208 0.639437 0.5 +0.0591364 0.0644742 0.0211357 0.550839 0.448044 +-0.0110683 0.167098 -0.0167807 0.360187 0.5 +-0.0605202 0.146205 0.0366666 0.591479 0.5 +0.0194528 0.0665736 0.0491642 0.603282 0.5 +-0.0286777 0.158132 0.000508817 0.402765 0.431383 +0.0253025 0.0989569 0.0434277 0.623394 0.5 +-0.0349979 0.152158 8.20736e-05 0.217633 0.5 +0.014665 0.070627 0.0528306 0.52613 0.5 +0.0202908 0.071041 0.0498828 0.634288 0.435356 +0.0230702 0.0702991 0.0473835 0.571849 0.5 +0.0263693 0.0706238 0.0441789 0.622852 0.474797 +0.0328306 0.0707606 0.0401362 0.612279 0.409693 +0.0368832 0.070672 0.0365953 0.662199 0.5 +0.0398878 0.0705632 0.0325808 0.656566 0.5 +0.0579544 0.0694794 0.0198345 0.6125 0.5 +-0.0641704 0.063724 0.0268682 0.425507 0.418571 +-0.0919499 0.114216 0.0149265 0.530043 0.5 +0.0351624 0.0819076 -0.0172502 0.760295 0.5 +-0.0862408 0.119271 -0.00117534 0.455279 0.5 +-0.0294401 0.174958 -0.00579982 0.562984 0.5 +-0.0175288 0.165418 -0.0114925 0.675539 0.5 +-0.0617869 0.117789 0.0409144 0.40334 0.5 +0.0301891 0.0723658 0.0418804 0.606777 0.5 +-0.0822099 0.149486 0.00288044 0.385889 0.468811 +-0.0760271 0.175704 -0.0506937 0.340571 0.5 +-0.0652343 0.0614738 0.0211346 0.414933 0.425841 +-0.0266574 0.110394 -0.019007 0.783101 0.5 +-0.0813538 0.0779161 0.0268055 0.756683 0.5 +0.021417 0.118723 -0.00893569 0.549 0.5 +0.0149346 0.0759297 0.0536191 0.48671 0.476705 +0.0209886 0.0761609 0.0506055 0.575091 0.5 +0.0268396 0.0762089 0.0459193 0.572664 0.5 +0.0336785 0.0760737 0.0405166 0.630563 0.5 +0.0373422 0.0760306 0.0366776 0.505468 0.5 +0.0400324 0.0763062 0.0328345 0.645662 0.5 +0.0419048 0.076876 0.0296092 0.673034 0.5 +0.0438094 0.0763805 0.0258638 0.624347 0.5 +-0.0452412 0.118472 -0.0142046 0.833781 0.5 +0.0456773 0.0768089 0.0208187 0.458504 0.467907 +-0.050165 0.137714 0.0207618 0.606401 0.481088 +-0.00327054 0.111563 -0.0203549 0.551699 0.482404 +-0.0483236 0.145111 0.00757835 0.59165 0.5 +0.0310833 0.0775315 0.0432282 0.624343 0.5 +-0.046855 0.145222 0.00288431 0.195425 0.432502 +-0.0141716 0.10541 -0.0225802 0.672132 0.5 +0.0470348 0.0753979 0.0148736 0.455861 0.5 +-0.0611433 0.140542 0.0356184 0.646306 0.5 +0.0272779 0.0823714 0.0459243 0.61663 0.478488 +0.0309212 0.08255 0.0430252 0.611382 0.5 +0.0343037 0.0825412 0.0402907 0.613309 0.465282 +0.0370354 0.0824663 0.0369099 0.642585 0.5 +-0.0799946 0.147989 -0.000835337 0.484293 0.5 +-0.0774435 0.0690153 0.00961977 0.704234 0.277826 +0.0404363 0.0826995 0.0326021 0.686672 0.5 +0.0417479 0.0827335 0.0302524 0.63553 0.5 +0.0436887 0.0825508 0.0263844 0.61829 0.5 +0.0454407 0.0825465 0.0207137 0.601475 0.480065 +-0.0822812 0.116295 0.0482855 0.66926 0.5 +-0.0844726 0.0947391 -0.00345192 0.592061 0.5 +-0.020271 0.168003 -0.0193935 0.821267 0.5 +-0.0742716 0.0668501 0.0190414 0.706894 0.5 +0.026747 0.0882417 0.0458314 0.539865 0.389736 +0.0308722 0.0882572 0.0430146 0.948814 0.5 +0.0344922 0.0883047 0.0403697 0.638338 0.5 +0.0372481 0.0881263 0.0366393 0.643327 0.5 +0.039927 0.088094 0.0326668 0.711283 0.5 +0.0419027 0.0877782 0.0290815 0.667656 0.5 +0.00264738 0.112302 -0.019871 0.766242 0.5 +-0.0703315 0.1455 -0.0205576 0.136819 0.239158 +-0.0749446 0.137879 -0.00653312 0.459033 0.397283 +-0.0266967 0.114299 -0.0159903 0.856895 0.5 +-0.0869924 0.113518 0.00410409 0.344807 0.5 +-0.0142186 0.174013 -0.0259807 0.439072 0.5 +-0.0221564 0.157852 -0.00861651 0.254248 0.5 +-0.011587 0.164129 -0.0163045 0.228563 0.367524 +-0.00997381 0.169338 -0.0247765 0.42189 0.5 +-0.082875 0.143405 0.00186692 0.494272 0.5 +0.0203757 0.0354405 -0.00287175 0 0 +0.0191274 0.0363337 -0.00917714 0.174536 0.5 +0.0184456 0.036388 -0.013479 0.173751 0.5 +0.0149535 0.0347732 -0.0154937 0.144529 0.253209 +0.0221204 0.0372026 0.0342324 0.156956 0.287305 +0.039271 0.0382866 0.00854708 0.245023 0.5 +0.0397549 0.0398545 0.002614 0.276002 0.5 +0.0221892 0.0380614 -0.00446361 0.173629 0.5 +0.0179901 0.0369066 -0.0161835 0.336518 0.5 +0.0154148 0.0392444 -0.0212861 0.367832 0.5 +0.0208023 0.100118 -0.0213392 0.648293 0.46589 +0.0446004 0.0409064 0.00927401 0.208963 0.5 +0.0435625 0.0411355 0.00427044 0.357471 0.452104 +0.0381381 0.0411139 -0.00147908 0.514406 0.5 +-0.0478807 0.135207 0.00885778 0.482359 0.5 +0.0217274 0.0404287 -0.00964433 0.311593 0.5 +0.0206744 0.0405956 -0.0144437 0.473825 0.5 +0.0192578 0.0411681 -0.0195074 0.414351 0.5 +-0.0885736 0.112913 0.0395856 0.488806 0.5 +-0.026793 0.106457 -0.0218501 0.617481 0.5 +0.0481487 0.0428585 0.0145594 0.265572 0.5 +0.0521212 0.0461655 0.0089655 0.199267 0.5 +0.0480438 0.0430647 0.00724585 0.412258 0.5 +0.0460936 0.0434131 0.00284357 0.566688 0.5 +0.0285003 0.100485 -0.0168103 0.728425 0.5 +0.0269462 0.0395833 -0.00334578 0.464947 0.5 +-0.0907856 0.117838 0.00647331 0.421552 0.5 +-0.062721 0.167567 -0.0470628 0.645866 0.5 +-0.0799532 0.106813 0.0316838 0.420249 0.5 +0.0527437 0.0462125 0.0139554 0.286197 0.5 +0.0504533 0.0466263 0.00264513 0.57721 0.5 +-0.0322581 0.117324 -0.0133273 0.811815 0.5 +0.0272475 0.0455966 -0.00927071 0.533119 0.5 +-0.0146455 0.0942084 -0.0337341 0.520871 0.5 +-0.0411545 0.16722 -0.010818 0.48116 0.5 +-0.0721385 0.156112 -0.0384102 0.511983 0.468875 +0.0456803 0.0474217 -0.00311192 0.412576 0.5 +0.0239407 0.0433254 -0.00969837 0.651864 0.5 +0.021084 0.0462585 -0.0205303 0.476548 0.5 +-0.0348527 0.0351549 -0.0307351 0.16856 0.5 +-0.0699867 0.0663066 0.0259153 0.590849 0.43032 +-0.0747071 0.149891 -0.0201453 0.5851 0.5 +-0.0845448 0.13725 0.000743181 0.580039 0.5 +0.0549514 0.0484178 0.0163982 0.295573 0.5 +0.0264565 0.0466261 -0.0141039 0.515417 0.5 +0.0225276 0.0444655 -0.0157683 0.505631 0.5 +0.0330538 0.0938135 -0.0160538 0.699679 0.5 +0.0526476 0.0694992 0.00297306 0.629664 0.372945 +0.0528544 0.0581339 -0.00277966 0.592036 0.5 +-0.0571464 0.0671799 0.0361705 0.503626 0.472266 +-0.0651544 0.157167 -0.0515491 0.708429 0.5 +-0.0493189 0.133682 0.00119868 0.355836 0.438333 +-0.032962 0.10595 -0.0206729 0.810434 0.5 +-0.0649538 0.155656 -0.045631 0.820472 0.5 +-0.0390456 0.150445 -0.00354536 0.204281 0.5 +0.0574365 0.051618 0.0145183 0.351624 0.5 +0.0574129 0.0522531 0.00903377 0.511629 0.5 +0.0536112 0.0500965 0.00204174 0.768402 0.5 +0.0512204 0.0520121 -0.00218354 0.534755 0.5 +0.0471226 0.0515811 -0.00481298 0.434179 0.5 +0.033443 0.047576 -0.0063817 0.557462 0.465257 +0.00280933 0.118297 -0.0158208 0.570337 0.473222 +-0.0147841 0.10125 -0.0238408 0.771507 0.5 +-0.0620037 0.167422 -0.0527165 0.538383 0.466596 +0.0559147 0.0528382 0.00339683 0.824166 0.5 +0.0334801 0.0518506 -0.00825293 0.591066 0.5 +0.0287814 0.0501171 -0.0157926 0.574224 0.5 +0.0256197 0.0485542 -0.0190548 0.421586 0.5 +-0.00863537 0.118406 -0.0146114 0.827086 0.5 +-0.0148322 0.117675 -0.014701 0.559736 0.5 +-0.0615138 0.145712 -0.00481276 0.466074 0.5 +0.0232531 0.12083 -0.00456186 0.617393 0.5 +-0.0401535 0.0342718 -0.0275149 0.0979878 0.5 +0.0302657 0.0496868 -0.0107289 0.647285 0.5 +0.0320066 0.111334 -0.00737407 0.536101 0.5 +-0.0211003 0.120417 -0.0102482 0.732965 0.5 +-0.0204991 0.117125 -0.0140803 0.767014 0.5 +-0.00910263 0.0383602 -0.025776 0.274297 0.5 +-0.0525144 0.11229 -0.0171034 0.442719 0.484227 +0.0202353 0.123713 -0.00247094 0.59012 0.5 +-0.0701749 0.0347541 -0.0017891 0.135623 0.5 +-0.00340266 0.114844 -0.0176928 0.826111 0.5 +0.0310248 0.053713 -0.0140522 0.572913 0.5 +0.0268191 0.0528482 -0.020339 0.412387 0.455219 +-0.0147458 0.120673 -0.0105853 0.653192 0.5 +0.0270905 0.106214 -0.0146756 0.603346 0.5 +0.0465541 0.0697991 0.00228503 0.590477 0.5 +-0.00300122 0.100676 -0.0235814 0.77298 0.5 +-0.0755874 0.076212 0.033468 0.651011 0.5 +0.059738 0.0572998 0.0151736 0.624329 0.5 +0.0595394 0.0578717 0.00861672 0.650231 0.5 +0.0572091 0.0580526 0.00253507 0.577167 0.5 +-0.0142907 0.123147 -0.00746744 0.689207 0.5 +0.0211831 0.112303 -0.0140834 0.636933 0.5 +0.0347455 0.0565046 -0.010714 0.517615 0.5 +0.0249138 0.0825163 -0.0245877 0.759593 0.5 +-0.0382227 0.114521 -0.016178 0.845616 0.5 +-0.0819485 0.0761672 0.0208322 0.76776 0.5 +-0.0269557 0.0392251 -0.0293943 0.537642 0.5 +0.0377037 0.0593401 -0.00852013 0.537798 0.5 +0.0330295 0.0586306 -0.014729 0.60439 0.5 +0.0218121 0.0515865 -0.0236492 0.56032 0.5 +-0.0204953 0.0935908 -0.0331675 0.485557 0.5 +-0.0872217 0.113521 0.0440666 0.448078 0.427651 +-0.0271537 0.0351608 0.0509267 0.96808 0.5 +-0.0503825 0.106302 -0.0194598 0.649024 0.5 +0.0266611 0.0585067 -0.0219134 0.622435 0.5 +0.00975018 0.0945932 -0.0280451 0.504262 0.457756 +-0.0205524 0.122391 -0.00754739 0.498583 0.5 +-0.0668021 0.0909191 -0.0174744 0.566525 0.5 +-0.0856155 0.0942099 -0.00109094 0.420789 0.436678 +-0.0915274 0.11444 0.0204492 0.759207 0.5 +-0.0909048 0.131701 0.00809159 0.558083 0.5 +0.0404851 0.0578886 -0.0051698 0.425865 0.437223 +0.0295964 0.0580473 -0.0178274 0.608291 0.460655 +0.0266986 0.0941359 -0.0205949 0.662934 0.5 +-0.0677104 0.172869 -0.0572602 0.695141 0.5 +0.0142001 0.118043 -0.013917 0.45799 0.403894 +-0.0698171 0.0699687 0.0326375 0.529959 0.5 +0.0607097 0.0648802 0.0151632 0.434757 0.451533 +0.0609346 0.0630505 0.0131585 0.526971 0.5 +0.0602205 0.0643718 0.00864139 0.443146 0.456896 +0.0574055 0.0638877 0.00271573 0.413274 0.5 +-0.0797793 0.103858 -0.00660016 0.553637 0.5 +-0.0563867 0.137359 -0.00421998 0.659682 0.5 +0.0344512 0.0638263 -0.0152012 0.581486 0.5 +0.0307139 0.0605317 -0.0184589 0.617611 0.449874 +0.0185684 0.121789 -0.00725624 0.61441 0.349043 +-0.0456617 0.112414 -0.0169658 0.70381 0.5 +0.0456177 0.0644845 -0.00162168 0.572144 0.5 +-0.0584268 0.0349015 0.0441202 0.767369 0.5 +-0.0747982 0.0723674 0.0308514 0.656357 0.5 +-0.0699373 0.0621854 0.0151778 0.587415 0.5 +-0.052889 0.136519 -0.00170821 0.593683 0.5 +0.0410205 0.0644886 -0.00476733 0.363401 0.5 +0.0388712 0.0646166 -0.00976797 0.384344 0.5 +0.0514871 0.0637279 -0.00174794 0.518067 0.5 +-0.0787297 0.0744551 0.0267421 0.809934 0.5 +-0.0850281 0.144269 0.00618082 0.578063 0.5 +0.0313094 0.064487 -0.0188936 0.672704 0.5 +0.0267274 0.0646171 -0.0220842 0.752591 0.5 +0.0318737 0.0877439 -0.0192705 0.740422 0.5 +-0.0772455 0.143995 -0.00470939 0.452269 0.5 +0.0132576 0.110443 -0.0183541 0.539267 0.5 +-0.00289343 0.124723 -0.00863032 0.516883 0.5 +-0.0342868 0.038582 0.0485461 0.546061 0.5 +0.0200397 0.0876233 -0.0261205 0.735721 0.5 +0.0585453 0.0705354 0.0146976 0.608535 0.5 +0.0581405 0.0699819 0.00856199 0.483528 0.5 +0.056099 0.069436 0.00424359 0.385578 0.5 +0.0370479 0.0665186 -0.0132637 0.645736 0.5 +-0.062561 0.172971 -0.0616721 0.43069 0.5 +-0.0702718 0.15494 -0.0455472 0.29179 0.457421 +-0.0916259 0.130499 0.00930481 0.432982 0.472725 +-0.070021 0.148229 -0.0328231 0.322588 0.195946 +-0.0721274 0.0680183 0.0267753 0.656727 0.5 +-0.0745337 0.15067 -0.0264303 0.331486 0.5 +0.0431087 0.0713461 -0.002764 0.390428 0.45538 +0.0421659 0.0692525 -0.00466106 0.55545 0.5 +0.0345404 0.0699378 -0.0160391 0.727409 0.5 +-0.0342368 0.122912 -0.00708584 0.432969 0.5 +0.0401518 0.070932 -0.00951127 0.706551 0.5 +0.0370706 0.0707408 -0.013301 0.722628 0.5 +0.0310856 0.0702175 -0.0192905 0.761897 0.5 +0.0283004 0.0705453 -0.0222447 0.701199 0.5 +-0.00859023 0.101699 -0.0237897 0.731824 0.5 +-0.0328234 0.0400139 -0.029875 0.413461 0.5 +-0.0830588 0.11047 0.0397334 0.931001 0.5 +0.0142724 0.123237 -0.00806485 0.479991 0.484444 +-0.0760443 0.108637 0.0389078 0.769887 0.5 +-0.0732762 0.154939 -0.0321392 0.640327 0.5 +0.0160324 0.0889232 -0.0282477 0.595959 0.5 +-0.0901677 0.131361 0.0394374 0.633972 0.457764 +0.0455828 0.0768365 0.00270178 0.323813 0.5 +-0.0516717 0.0553965 0.014906 0.168077 0.5 +-0.0376545 0.121002 -0.0109724 0.599451 0.451266 +0.0466318 0.0762885 0.00910629 0.334003 0.5 +0.0437303 0.0769241 -0.00295564 0.541016 0.5 +0.0405043 0.0766784 -0.0084913 0.540094 0.5 +0.0369463 0.0762836 -0.0128837 0.716695 0.5 +0.0349351 0.0766648 -0.0155944 0.687304 0.5 +0.0319237 0.0763904 -0.0194186 0.722365 0.5 +0.0285208 0.0758075 -0.0225233 0.729644 0.5 +-0.0646857 0.068809 0.0348219 0.518098 0.396839 +-0.00335573 0.0986136 -0.0269283 0.762285 0.5 +-0.0383606 0.100112 -0.0217661 0.633523 0.5 +-0.0705433 0.149897 -0.0387319 0.143598 0.5 +-0.0247871 0.179215 -0.0188356 0.466421 0.5 +0.00339058 0.0937023 -0.0318365 0.697748 0.5 +-0.09099 0.142689 0.0226645 0.743514 0.5 +-0.0851088 0.102115 0.000391121 0.420019 0.403283 +0.00299202 0.124707 -0.00864775 0.631346 0.5 +-0.0649459 0.167336 -0.0329944 0.692397 0.5 +0.045975 0.0827243 0.0146716 0.494123 0.463874 +0.0461931 0.0827376 0.00867911 0.540283 0.443947 +0.0453461 0.0826602 0.00269811 0.520808 0.5 +0.032594 0.082231 -0.0190597 0.700575 0.5 +-0.0707752 0.142011 -0.00901143 0.440829 0.5 +-0.0396694 0.045239 -0.0210351 0.371561 0.5 +-0.0736488 0.145787 -0.0131048 0.298566 0.5 +-0.0661855 0.1779 -0.0529018 0.456268 0.5 +-0.0698006 0.179227 -0.0517285 0.330383 0.5 +-0.0719677 0.177848 -0.0474604 0.498199 0.393806 +-0.0131817 0.0974247 0.0509808 0.29677 0.5 +-0.0760529 0.177651 -0.0471457 0.200482 0.341482 +-0.0875274 0.149451 0.00937476 0.260452 0.5 +-0.0847504 0.149536 0.00652369 0.220089 0.5 +-0.0853843 0.0980412 -0.000554198 0.453316 0.5 +-0.070162 0.172945 -0.0393132 0.377002 0.42015 +-0.0669053 0.17136 -0.0404187 0.587367 0.5 +-0.0915765 0.114644 0.0108349 0.335405 0.476851 +0.0311175 0.116345 -0.00142056 0.524001 0.485056 +-0.09039 0.144074 0.0142555 0.571623 0.5 +0.0533752 0.0724173 0.00805773 0.504643 0.5 +0.0348115 0.113636 0.00289967 0.517745 0.5 +0.0321047 0.117128 0.00373672 0.512637 0.481334 +-0.0558554 0.16013 0.00226313 0.176407 0.35978 +0.0284127 0.12005 0.00266093 0.800124 0.5 +-0.0693417 0.151526 -0.0443255 0.162625 0.220555 +0.0509143 0.0733396 0.0112131 0.81315 0.5 +0.0485286 0.0726358 0.00856732 0.779683 0.5 +0.0251471 0.122517 0.00254898 0.804299 0.5 +-0.0684168 0.170157 -0.0319531 0.535557 0.5 +-0.071028 0.171274 -0.0325886 0.712016 0.5 +-0.0765634 0.155757 -0.00874762 0.256295 0.5 +0.0525206 0.0734678 0.0148876 0.468908 0.45355 +0.035521 0.113454 0.00908801 0.654915 0.5 +0.0208324 0.125627 0.00327965 0.76886 0.5 +-0.0476722 0.134348 0.0194434 0.579216 0.488505 +-0.0746083 0.171229 -0.0326516 0.439107 0.422901 +0.0322027 0.117616 0.0093642 0.646061 0.5 +0.0162523 0.127588 0.00132734 0.679655 0.445027 +-0.0914669 0.142805 0.0167223 0.344959 0.5 +0.0290775 0.120474 0.00686894 0.798143 0.5 +0.0135909 0.12914 0.00336546 0.632038 0.474565 +-0.0861635 0.100458 0.025719 0.514874 0.431291 +-0.0653051 0.165945 -0.0269849 0.665887 0.5 +-0.0698492 0.16889 -0.0268648 0.536219 0.5 +-0.07827 0.167473 -0.032496 0.259817 0.452429 +0.0215557 0.0945234 -0.0226594 0.630702 0.48336 +0.0260612 0.123082 0.00873766 0.803075 0.5 +0.00920342 0.130081 0.00248247 0.641161 0.5 +-0.0709934 0.170517 -0.0295248 0.566905 0.409383 +-0.0760202 0.167938 -0.0272636 0.242234 0.5 +0.0525229 0.0716654 0.0211203 0.349876 0.431389 +0.0207167 0.126566 0.00922145 0.763786 0.5 +-0.0746025 0.0998033 -0.0126456 0.503102 0.5 +-0.0864333 0.0890874 0.0257055 0.752441 0.5 +0.0354941 0.113435 0.0150848 0.708057 0.5 +0.0320737 0.117698 0.0146262 0.694886 0.5 +0.00294754 0.130714 0.00292443 0.849802 0.5 +-0.0256391 0.0823957 0.0519489 0.764034 0.5 +-0.0666258 0.165416 -0.0221631 0.534987 0.5 +-0.0804177 0.153092 0.00488677 0.321879 0.39417 +-0.0645623 0.0350017 0.0151892 0.352362 0.5 +-0.0627936 0.0352479 0.02012 0.616295 0.5 +-0.0642932 0.0349381 0.0264604 0.161121 0.384305 +-0.0642421 0.0397497 0.0267659 0.206373 0.5 +-0.0652419 0.0352202 0.0324357 0.167045 0.5 +-0.06432 0.0352261 0.0387914 0.349097 0.5 +-0.0869014 0.0944088 0.0260869 0.722262 0.5 +-0.026376 0.100403 -0.0237519 0.527518 0.47737 +-0.0704394 0.0348288 0.00888692 0.228898 0.5 +-0.0696375 0.039673 0.0091864 0.30841 0.5 +-0.0678064 0.035728 0.013362 0.509091 0.5 +-0.0778433 0.0819732 0.0354617 0.774608 0.5 +-0.0809318 0.0827942 0.0325 0.767831 0.5 +-0.0712316 0.038974 0.00275642 0.155719 0.237906 +-0.0616101 0.0379618 0.0219344 0 0 +-0.0653778 0.0407054 0.0323415 0.379158 0.5 +-0.0612949 0.040108 0.0438783 0.388361 0.5 +-0.0748891 0.0826916 0.0381154 0.772848 0.5 +-0.0841641 0.133769 0.0486564 0.546232 0.467433 +-0.0849106 0.0945271 0.0290479 0.754258 0.5 +-0.082994 0.144712 0.0404065 0.382972 0.420138 +-0.0265479 0.117619 -0.0132781 0.755106 0.5 +-0.0679678 0.0383221 0.0123903 0.271535 0.306541 +-0.0639259 0.0401146 0.0151101 0.258252 0.450399 +-0.0588527 0.0407802 0.0202136 0.51937 0.5 +-0.0869621 0.135589 0.0440584 0.520567 0.5 +-0.038827 0.0398484 0.042564 0.570175 0.5 +-0.0253238 0.0773437 0.0501603 0.646885 0.5 +0.00864855 0.111878 -0.0192252 0.821439 0.5 +-0.0625014 0.04424 0.0388616 0.455153 0.47063 +-0.088493 0.125258 0.0461673 0.674925 0.5 +0.0150785 0.10107 -0.0220372 0.749486 0.5 +-0.0810533 0.0876325 0.0334622 0.750019 0.5 +-0.0636602 0.0439221 0.0322355 0.437404 0.5 +-0.0823757 0.12585 -0.00459555 0.376136 0.464207 +-0.0374554 0.042873 0.0429512 0.492581 0.5 +-0.031328 0.0432863 0.0501185 0.483275 0.5 +-0.0841802 0.0875016 0.0285815 0.671149 0.464325 +-0.0690099 0.0427216 0.00298087 0.372436 0.5 +-0.0690323 0.0427133 0.00739115 0.277083 0.5 +-0.0642007 0.0449178 0.00895163 0.562755 0.5 +-0.0630005 0.0427497 0.0133004 0.520064 0.348086 +-0.0580777 0.0444032 0.0143596 0.493924 0.5 +-0.087476 0.130712 0.0458544 0.531379 0.477045 +-0.0837712 0.0999337 0.029339 0.668895 0.5 +-0.083719 0.0822846 0.0270932 0.660348 0.5 +-0.0209183 0.0934772 0.0512134 0.479975 0.5 +-0.0868983 0.142651 0.0383505 0.486766 0.469754 +-0.0588984 0.0467651 0.00989959 0.460736 0.319245 +-0.0529144 0.0464475 0.0158024 0.381525 0.5 +-0.0881654 0.0882094 0.0209192 0.624947 0.5 +-0.0494075 0.165901 0.000731671 0.369742 0.391777 +-0.0586114 0.0473978 0.0337061 0.152377 0.410418 +-0.05614 0.0517476 0.00835186 0.396733 0.5 +-0.0865231 0.148073 0.0321271 0.367072 0.452379 +-0.0308497 0.0493297 0.0429654 0.330168 0.454747 +-0.0769102 0.114994 0.0501188 0.653806 0.5 +-0.0209065 0.0959579 0.0474195 0.622864 0.5 +-0.0509947 0.0509637 0.0150799 0.759028 0.5 +0.00842415 0.0889657 -0.0320537 0.627702 0.5 +-0.0240561 0.0544386 0.0416973 0.433194 0.5 +-0.0510392 0.0524223 0.0203213 0.262945 0.5 +-0.0526208 0.0518271 0.027021 0.695325 0.5 +-0.0504022 0.0591186 0.0326891 0.768296 0.5 +-0.0478821 0.0590694 0.0363134 0.800191 0.5 +-0.0239128 0.0586553 0.0421308 0.768223 0.5 +-0.0759314 0.119228 -0.00697007 0.568703 0.5 +-0.0183181 0.0604564 0.0506182 0.70539 0.5 +-0.0298441 0.0972531 -0.0235715 0.830462 0.5 +-0.0241926 0.0628773 0.0422936 0.709715 0.5 +-0.0223998 0.06467 0.045979 0.606456 0.5 +-0.0192899 0.0641483 0.0503928 0.754401 0.5 +-0.0260109 0.172925 -0.0191453 0.51739 0.5 +-0.0265331 0.161574 -0.0144318 0.84044 0.5 +-0.0558556 0.15572 -0.00121016 0.41523 0.5 +-0.0599028 0.136466 -0.0064456 0.660892 0.5 +-0.063538 0.071665 0.0379463 0.556494 0.5 +-0.0200417 0.0869862 -0.0378876 0.500126 0.449734 +-0.0557176 0.105745 -0.0186241 0.707273 0.5 +-0.0530691 0.143914 -0.00100898 0.728895 0.5 +-0.0256688 0.0704637 0.0438935 0.717372 0.393932 +-0.0235577 0.0693774 0.0470203 0.657726 0.5 +-0.0525759 0.127247 -0.00521525 0.567734 0.5 +-0.0787859 0.131858 -0.00545913 0.44224 0.460808 +-0.0580212 0.120088 -0.0102747 0.564344 0.455328 +-0.0396294 0.110441 -0.0186258 0.62346 0.5 +-0.0210282 0.173113 -0.0214922 0.42389 0.352327 +-0.0547593 0.0563289 0.0107147 0.179388 0.5 +-0.0435534 0.0345758 -0.024752 0.176398 0.205782 +-0.0449833 0.0346921 -0.0207483 0.159962 0.261208 +-0.0443576 0.0390403 -0.0217491 0.178142 0.5 +-0.0462855 0.0345037 -0.0153112 0.189574 0.5 +-0.046619 0.0396457 -0.0141457 0.194812 0.5 +-0.00904923 0.0343826 -0.0246429 0.15305 0.5 +0.00311748 0.100303 -0.0227929 0.684313 0.5 +-0.0690809 0.0392217 -0.00181724 0.169982 0.409113 +-0.0920289 0.131041 0.0262349 0.856795 0.5 +-0.043414 0.0372487 -0.0253064 0.219927 0.5 +0.0280974 0.0818294 -0.0220931 0.752623 0.5 +-0.067702 0.169446 -0.0560134 0.487347 0.455218 +-0.0915377 0.129674 0.0312365 0.601516 0.48259 +-0.0663086 0.0411162 -0.00443149 0.346306 0.5 +-0.0731255 0.151935 -0.0368879 0.40925 0.5 +-0.0390145 0.0394889 -0.027598 0.3765 0.5 +-0.0637372 0.0437827 -0.00264533 0.37233 0.5 +-0.0605427 0.0425565 0.0246975 0.23689 0.5 +-0.0857603 0.130763 -0.000714461 0.66754 0.5 +-0.0520472 0.0403573 -0.0107411 0.62257 0.5 +-0.0568522 0.0434504 0.0224413 0.404188 0.5 +-0.043239 0.0429342 -0.0193166 0.339314 0.38382 +-0.0438787 0.0441322 -0.0144222 0.427488 0.468839 +-0.0457505 0.046486 -0.0105694 0.340556 0.5 +-0.0645938 0.0456897 0.00313082 0.3549 0.5 +-0.0525978 0.0464843 0.0207116 0.3335 0.5 +-0.0572578 0.0459489 0.026887 0.439332 0.5 +-0.0618962 0.0443648 0.0286813 0.302557 0.45843 +-0.0331467 0.0453179 -0.0267282 0.481653 0.5 +-0.0377669 0.0443547 -0.0252099 0.392631 0.5 +-0.0320922 0.114425 -0.0162304 0.853943 0.5 +-0.0578027 0.0470669 -0.0032674 0.530144 0.5 +-0.0914954 0.147994 0.0205137 0.478387 0.480384 +-0.0400067 0.0471536 -0.0151042 0.224844 0.33752 +0.00454895 0.121869 -0.0124797 0.622385 0.5 +0.0151282 0.112708 -0.0165496 0.634759 0.463552 +-0.0525787 0.0463291 -0.00775444 0.598118 0.5 +-0.0599276 0.0475112 0.00267117 0.286734 0.429608 +-0.0726458 0.147126 -0.0218625 0.235551 0.5 +-0.0740924 0.168686 -0.0440312 0.451963 0.347747 +-0.057494 0.0515426 0.00319413 0.311918 0.5 +-0.0536918 0.0483048 0.0264945 0.447469 0.5 +-0.0147156 0.114453 -0.0172255 0.634887 0.5 +-0.0335191 0.0480424 -0.021246 0.299501 0.5 +0.019461 0.0924333 -0.0244344 0.636237 0.5 +0.0169402 0.0952065 -0.0238278 0.793707 0.5 +0.0201047 0.104156 -0.0188197 0.859301 0.5 +-0.0319642 0.0516657 -0.0152509 0.265727 0.5 +-0.0368448 0.0488256 -0.0131071 0.109826 0.5 +-0.0391265 0.0518909 -0.0109467 0.555432 0.5 +-0.00892221 0.111576 -0.0202733 0.785262 0.5 +-0.0515659 0.0515158 -0.00751393 0.527245 0.5 +-0.0557028 0.05294 -0.00268598 0.514955 0.5 +-0.0293421 0.0526398 -0.0213991 0.356317 0.5 +-0.0314453 0.0496351 -0.0193539 0.306544 0.5 +0.0322381 0.10409 -0.0128482 0.653044 0.5 +-0.0261025 0.0525801 -0.0264669 0.366688 0.5 +-0.0583031 0.116733 -0.0130038 0.568329 0.5 +-0.014851 0.111599 -0.0191484 0.630253 0.463696 +-0.0521348 0.118189 -0.0137451 0.464136 0.474515 +-0.0517493 0.0582798 -0.00896954 0.683087 0.5 +-0.0561982 0.0582462 -0.00310645 0.618759 0.5 +-0.0587989 0.0586119 0.00276734 0.328771 0.427166 +-0.0585564 0.0578416 0.00857596 0.293131 0.5 +0.019026 0.11614 -0.0131686 0.497701 0.5 +-0.0211893 0.111662 -0.0190883 0.650648 0.5 +-0.0239176 0.0561149 -0.030057 0.484351 0.5 +-0.0272603 0.058548 -0.027478 0.457773 0.5 +-0.0295766 0.0582799 -0.0217551 0.550969 0.5 +-0.0320928 0.0589382 -0.0147618 0.534177 0.453646 +0.0073938 0.121789 -0.0126555 0.654152 0.5 +-0.0251946 0.0595227 -0.0308632 0.509396 0.5 +-0.0307167 0.06013 -0.0194181 0.549851 0.422118 +-0.0650113 0.0632174 -0.00293095 0.168435 0.5 +-0.0696479 0.065751 -0.00198101 0.165663 0.5 +-0.0699926 0.0635013 0.00374106 0.275779 0.5 +-0.0799435 0.0724812 0.0191514 0.599916 0.5 +-0.0676844 0.160922 -0.0559942 0.35716 0.5 +-0.0215435 0.0636559 -0.0350431 0.45692 0.5 +-0.0258325 0.0648252 -0.0322087 0.452259 0.5 +-0.028982 0.0636438 -0.0274997 0.410415 0.5 +-0.0304226 0.0629368 -0.0224261 0.908229 0.5 +-0.0319042 0.0651819 -0.0201942 0.518875 0.434998 +-0.0332741 0.0636337 -0.0160032 0.40837 0.447765 +-0.0205547 0.034111 -0.026401 0.174612 0.215481 +-0.0743367 0.0658286 0.00833126 0.649876 0.5 +0.016103 0.120745 -0.0103843 0.509865 0.5 +-0.0770212 0.0700544 0.00316631 0.305775 0.384345 +-0.0748219 0.06693 0.00451345 0.433069 0.463791 +-0.0306317 0.0657524 -0.025453 0.517895 0.5 +-0.0711433 0.0687078 -0.00390291 0.256016 0.135401 +-0.0762625 0.0716316 -0.00295918 0.293636 0.296358 +-0.0802204 0.0713935 0.00991267 0.507181 0.5 +-0.0913413 0.148143 0.0161458 0.474933 0.5 +-0.0273736 0.0700052 -0.0335323 0.445714 0.5 +-0.0300274 0.0692073 -0.0289677 0.511122 0.5 +-0.0316277 0.0711218 -0.0266514 0.502235 0.5 +-0.0330629 0.0699765 -0.0212743 0.929225 0.5 +-0.0353642 0.0705896 -0.0177097 0.263666 0.5 +-0.0587004 0.0391044 -0.0090027 0.295521 0.5 +-0.0697696 0.0703857 -0.00808666 0.238472 0.5 +-0.0804832 0.0726462 0.00472466 0.630221 0.5 +0.0151616 0.126104 -0.00266395 0.542796 0.5 +-0.0745721 0.072883 -0.00757069 0.303203 0.5 +-0.0823908 0.076277 0.00270117 0.615888 0.5 +-0.0912831 0.133698 0.0142161 0.68945 0.5 +0.00371049 0.0968817 -0.0280931 0.670854 0.5 +-0.0761392 0.0766258 -0.00859487 0.260107 0.5 +-0.0784749 0.0748827 -0.00523624 0.238143 0.440892 +-0.0806781 0.0771902 -0.00290803 0.36458 0.43512 +-0.0834622 0.0765209 0.00927112 0.562933 0.5 +0.00983826 0.11402 -0.0178612 0.519736 0.475688 +0.00210649 0.0981565 -0.0261244 0.689185 0.5 +-0.0285085 0.0757575 -0.0348118 0.64535 0.304239 +-0.0330874 0.0761249 -0.0270661 0.564742 0.5 +-0.0346568 0.0757906 -0.0215029 0.930953 0.5 +0.0231104 0.0892807 -0.0240236 0.697809 0.45449 +-0.0312132 0.0771357 -0.0320416 0.687582 0.5 +-0.0700425 0.0763633 -0.0141464 0.485274 0.5 +-0.0861137 0.0814707 0.00908143 0.590509 0.5 +-0.086319 0.08152 0.0149936 0.698173 0.5 +-0.0208042 0.0963182 -0.0270563 0.75553 0.5 +-0.0211078 0.114391 -0.0171285 0.793027 0.5 +-0.0746162 0.0828529 -0.0139325 0.683447 0.5 +-0.077295 0.081216 -0.0100568 0.47673 0.5 +-0.0800127 0.0821605 -0.00722237 0.637376 0.5 +-0.0826334 0.0820868 -0.00324616 0.569954 0.5 +-0.0844667 0.0817669 0.00249573 0.601403 0.5 +-0.0860445 0.0832591 0.0203255 0.630527 0.5 +-0.084816 0.0816746 0.0219849 0.638209 0.5 +0.0545549 0.0661692 0.000765649 0.628404 0.43579 +-0.0331604 0.0828369 -0.0270493 0.417784 0.5 +-0.0358028 0.0829047 -0.0227723 0.112354 0 +-0.0861942 0.0842505 0.00298565 0.418742 0.5 +-0.0287072 0.0827267 -0.0349537 0.48086 0.471486 +-0.0311601 0.0822387 -0.0315627 0.627475 0.5 +-0.085403 0.141865 0.00516647 0.463398 0.5 +-0.0785169 0.0885628 -0.0107607 0.69884 0.5 +-0.0807046 0.0887676 -0.00826584 0.689404 0.5 +-0.0843972 0.0878743 -0.00349923 0.402052 0.5 +-0.0855708 0.0882073 -0.00109946 0.425364 0.422235 +-0.0876157 0.0881286 0.00369184 0.414972 0.435161 +-0.0885339 0.0876942 0.00897158 0.630733 0.5 +-0.0885791 0.0877213 0.0149616 0.665472 0.5 +-0.0643854 0.0348576 -0.00775085 0.279509 0.5 +-0.0512932 0.034227 -0.0129013 0.159841 0.5 +-0.0266839 0.0458556 -0.027274 0.610127 0.5 +-0.0146368 0.0981541 -0.0264318 0.44201 0.5 +-0.0213468 0.10077 -0.0239588 0.58675 0.5 +0.020932 0.0825954 -0.0267347 0.750174 0.5 +0.00759225 0.0928541 -0.0309237 0.580726 0.5 +-0.0144478 0.0879274 -0.0380297 0.689122 0.5 +-0.00859724 0.11451 -0.0173132 0.77831 0.5 +0.0264818 0.109935 -0.0126182 0.652634 0.5 +-0.0145855 0.0385179 -0.0267991 0.230538 0.5 +-0.0330054 0.0337044 -0.0272991 0.262513 0.5 +-0.0267872 0.0340475 -0.0271901 0.244173 0 +-0.00849157 0.0985859 -0.0270535 0.53889 0.411612 +-0.0110954 0.120824 -0.0120135 0.770076 0.5 +0.0367379 0.0925992 -0.0129888 0.684003 0.5 +-0.0571635 0.0435755 -0.00717607 0.581004 0.404197 +-0.0193328 0.0979251 -0.024792 0.661276 0.5 +-0.0203798 0.0385467 -0.0283088 0.392689 0.5 +-0.0587681 0.0337133 -0.00871891 0.1361 0.5 +-0.0517919 0.100655 -0.0213258 0.798237 0.5 +0.00702627 0.0978418 -0.0246055 0.732067 0.326346 +-0.0148892 0.126068 -0.00252126 0.467449 0.5 +0.0307578 0.092446 -0.0188519 0.704525 0.5 +0.0211049 0.0578126 -0.0266116 0.685576 0.5 +-0.0169237 0.0970481 -0.0278718 0.775366 0.5 +0.0460004 0.0581866 -0.00508589 0.612698 0.5 +-0.00944331 0.0822271 -0.0381067 0.670336 0.467319 +-0.0635881 0.0392124 -0.00717766 0.572252 0.5 +0.00864227 0.0386371 -0.0233053 0.540697 0.5 +0.0252935 0.0769557 -0.0248407 0.75695 0.5 +-0.0229653 0.0895159 -0.036199 0.454072 0.467569 +-0.0523791 0.0341193 -0.00994653 0.132813 0.5 +0.0211693 0.0643935 -0.0268578 0.690366 0.5 +-0.0515867 0.13164 -0.0028092 0.545448 0.5 +-0.0149669 0.0345529 -0.0254273 0.17846 0.5 +-0.0161167 0.127288 0.00169291 0.694465 0.5 +-0.0469232 0.128515 -0.00163965 0.389857 0.5 +-0.00961381 0.127158 -0.00378809 0.714685 0.5 +-0.0074566 0.128562 -0.00130751 0.72817 0.5 +-0.00304493 0.128909 -0.00174857 0.778769 0.5 +0.0028379 0.129022 -0.00194723 0.574275 0.5 +0.00903363 0.128674 -0.00165013 0.617309 0.5 +-0.0561607 0.131588 -0.00571429 0.687735 0.5 +-0.0457551 0.127167 -0.00484962 0.645893 0.5 +-0.00304746 0.127678 -0.00456004 0.562309 0.5 +0.00303811 0.12768 -0.00442 0.624596 0.5 +0.0101526 0.126812 -0.00466464 0.64326 0.5 +-0.0553259 0.126836 -0.00601308 0.517644 0.5 +0.00799473 0.034846 -0.0206913 0.278473 0.5 +0.0027179 0.0342191 -0.0204737 0.322372 0.5 +-0.00295804 0.0342418 -0.0216222 0.194059 0.5 +0.0134674 0.0353221 -0.0196961 0.466171 0.5 +0.00440963 0.0383063 -0.0240776 0.3469 0.5 +0.00140752 0.0383474 -0.0246147 0.361099 0.5 +-0.00309177 0.0383877 -0.0251866 0.314174 0.5 +-0.0575023 0.100661 -0.0195211 0.459895 0.452391 +-0.0485739 0.15316 -0.00547278 0.691758 0.5 +-0.0646573 0.0334831 -0.00296009 0.187639 0.5 +-0.0640796 0.100426 -0.0173936 0.44544 0.466101 +-0.0704415 0.100139 -0.0146037 0.499781 0.478548 +-0.0326376 0.155806 -0.00949884 0.828995 0.5 +0.0336094 0.0373624 0.00273412 0.290019 0.5 +0.0320943 0.0397885 -0.00195136 0.323719 0.5 +0.0158502 0.0449602 -0.0237212 0.910511 0.5 +0.00889467 0.0426449 -0.0242659 0.891863 0.5 +0.00312499 0.0452721 -0.026588 0.665265 0.460024 +-0.00298345 0.044686 -0.0272222 0.905955 0.5 +-0.00912346 0.0448524 -0.0280671 0.895801 0.5 +-0.0145351 0.0443266 -0.0277771 0.887903 0.5 +-0.0209223 0.0460913 -0.0281918 0.705844 0.5 +0.034052 0.0448434 -0.00540113 0.626363 0.5 +-0.0312646 0.158257 -0.01223 0.732334 0.5 +0.0401509 0.0448981 -0.00354586 0.446696 0.5 +0.0143253 0.0473484 -0.0251513 0.546545 0.456757 +0.00937888 0.0466526 -0.0261685 0.907397 0.5 +-0.0766531 0.0695423 0.0207982 0.774152 0.5 +0.0087246 0.0517916 -0.0291615 0.840924 0.5 +0.00299372 0.0506927 -0.0298557 0.901259 0.5 +-0.00164566 0.0489436 -0.0304144 0.872257 0.5 +-0.00321397 0.0522596 -0.0314075 0.634884 0.475184 +-0.00915341 0.0509217 -0.0318681 0.650022 0.5 +-0.0146018 0.0513752 -0.0319045 0.891033 0.5 +-0.0161558 0.0488543 -0.0303763 0.808351 0.5 +-0.0205843 0.0508011 -0.0296435 0.813106 0.5 +0.0405252 0.0518855 -0.00654453 0.65569 0.5 +0.0149309 0.0520772 -0.0273859 0.655547 0.5 +0.041884 0.0490868 -0.00604367 0.898378 0.5 +0.019962 0.0529908 -0.0261219 0.592286 0.5 +-0.0198501 0.0534234 -0.0312267 0.768335 0.5 +-0.0336273 0.0527187 -0.0106243 0.102172 0.5 +-0.0461112 0.0529158 -0.0101664 0.636429 0.372142 +-0.0204 0.161875 -0.014658 0.822907 0.5 +0.0449924 0.0530898 -0.00614891 0.575737 0.5 +0.00733679 0.0546532 -0.0305038 0.688621 0.5 +0.00283568 0.0546532 -0.0307468 0.611749 0.5 +-0.00302245 0.0577 -0.0331477 0.67582 0.5 +-0.00914668 0.0576676 -0.0341165 0.698389 0.5 +-0.01517 0.058199 -0.0349877 0.856637 0.5 +-0.0202707 0.0581031 -0.0333681 0.552506 0.5 +0.0140844 0.057965 -0.028983 0.564173 0.483714 +0.0103301 0.0588553 -0.0299472 0.602031 0.489059 +0.00732823 0.0588898 -0.0306117 0.710141 0.5 +0.0027369 0.0590151 -0.0321928 0.690932 0.5 +-0.0337187 0.0579742 -0.0115824 0.143826 0.5 +-0.0390711 0.0582467 -0.0115033 0.780735 0.5 +-0.0460474 0.0579124 -0.0115174 0.472305 0.5 +-0.00961439 0.0642168 -0.0358564 0.670518 0.457134 +-0.044157 0.0599825 -0.0123877 0.830365 0.5 +0.015251 0.0645803 -0.029567 0.626368 0.396114 +0.00839294 0.0649214 -0.0316957 0.79033 0.385997 +0.00325858 0.0643529 -0.0332439 0.728322 0.418376 +-0.00361257 0.0645861 -0.034907 0.670644 0.5 +-0.0144709 0.065006 -0.0371603 0.712311 0.5 +-0.0366623 0.060679 -0.0122791 0.525705 0.5 +-0.0526404 0.0636402 -0.0101297 0.452904 0.5 +-0.0381866 0.0648919 -0.0142073 0.543504 0.5 +-0.0452495 0.0647856 -0.0139819 0.883769 0.5 +-0.0599262 0.0622966 -0.00429285 0.195385 0.344922 +-0.0778641 0.117463 -0.00576778 0.523105 0.5 +-0.0187447 0.0664151 -0.0374779 0.820087 0.5 +-0.0577616 0.0644884 -0.00779097 0.472929 0.5 +-0.0625778 0.0655353 -0.00741131 0.379588 0.453283 +0.0251088 0.0710945 -0.0248604 0.704567 0.5 +0.021457 0.0702729 -0.0273415 0.740248 0.5 +0.0166747 0.0701586 -0.0297203 0.658948 0.5 +0.0132745 0.0702643 -0.0312074 0.651019 0.5 +0.00867525 0.0703509 -0.0324278 0.818076 0.5 +0.00229643 0.0708694 -0.0343123 0.73028 0.5 +-0.0030646 0.070381 -0.0353565 0.764349 0.5 +-0.00773679 0.0691749 -0.0362051 0.757441 0.5 +-0.0101988 0.0715122 -0.0373778 0.76291 0.5 +-0.0147454 0.0704429 -0.0382943 0.581028 0.470136 +-0.0203984 0.0706516 -0.038158 0.645161 0.5 +-0.0240967 0.0693418 -0.0362521 0.4533 0.5 +-0.0605175 0.0673597 -0.0108259 0.635082 0.5 +-0.0387293 0.0706355 -0.0168457 0.666323 0.5 +-0.0451347 0.0705064 -0.0164504 0.875899 0.5 +-0.0523435 0.0697862 -0.0145984 0.401473 0.5 +-0.0591515 0.0702891 -0.0147203 0.639534 0.5 +-0.0652515 0.0688492 -0.00993982 0.422384 0.422462 +-0.0247614 0.0719777 -0.0368317 0.497524 0.5 +-0.0637884 0.0712697 -0.0138535 0.437166 0.5 +0.0211454 0.0769268 -0.0268772 0.737516 0.5 +0.0162128 0.0765268 -0.0293784 0.712202 0.5 +0.0133247 0.0760196 -0.0306715 0.679361 0.5 +0.00907695 0.076038 -0.0330382 0.719764 0.5 +0.00245085 0.0760857 -0.0351615 0.721395 0.5 +-0.00176321 0.0762288 -0.0360688 0.799862 0.5 +-0.00476487 0.076286 -0.0369742 0.814155 0.377247 +-0.00962992 0.0765936 -0.0378651 0.627364 0.487104 +-0.0144481 0.0764118 -0.0385775 0.832444 0.5 +-0.021453 0.0763574 -0.038668 0.751656 0.5 +-0.024977 0.0762484 -0.0374518 0.39297 0.457854 +-0.0377453 0.0766164 -0.0189124 0.273711 0.5 +-0.0397395 0.0746623 -0.0180255 0.973337 0.5 +-0.0437423 0.0765905 -0.0187922 0.595439 0.440211 +-0.0466377 0.0744845 -0.0173668 0.538698 0.468502 +-0.0518623 0.0745812 -0.0175084 0.855826 0.5 +-0.0589866 0.0745368 -0.01766 0.879682 0.5 +-0.0644081 0.0756279 -0.0167529 0.562234 0.481782 +-0.0721295 0.0740256 -0.0105719 0.341576 0.432723 +-0.0615233 0.0354132 0.043881 0.499903 0.5 +-0.0524971 0.0769872 -0.0189536 0.873913 0.5 +-0.0587482 0.0767445 -0.0187462 0.882838 0.5 +0.013102 0.0809953 -0.0307917 0.69611 0.5 +0.00892296 0.0820652 -0.0325478 0.700162 0.5 +0.0022917 0.0820297 -0.0349279 0.829579 0.5 +-0.00177837 0.0804805 -0.0364471 0.647084 0.379833 +-0.00379684 0.0824193 -0.037328 0.824332 0.5 +-0.0142988 0.0820384 -0.0390211 0.832022 0.373406 +-0.0207708 0.0823862 -0.0387335 0.805306 0.5 +-0.0248089 0.0818968 -0.0377031 0.470046 0.439483 +-0.0735819 0.0777026 -0.0122023 0.445372 0.5 +0.015425 0.0831288 -0.0295207 0.735694 0.5 +-0.0383994 0.0817919 -0.0209596 0.290803 0.5 +-0.0451184 0.0815526 -0.020434 0.548777 0.45056 +-0.051814 0.0818472 -0.0211348 0.886135 0.5 +-0.0583689 0.0812724 -0.0202975 0.847354 0.5 +-0.063949 0.082768 -0.0188935 0.606874 0.5 +-0.0662709 0.080065 -0.0177832 0.593549 0.449354 +-0.0695594 0.0830593 -0.0170582 0.4495 0.5 +-0.00481814 0.086841 -0.0367951 0.827149 0.5 +-0.0248206 0.0867524 -0.0367639 0.487957 0.5 +0.0132046 0.0871602 -0.0305473 0.663835 0.5 +-0.0360837 0.0867076 -0.023791 0.366486 0.5 +-0.00877843 0.0340556 -0.0204927 0 0 +-0.0207128 0.0342382 -0.0208728 0.319674 0.5 +-0.0147915 0.0341096 -0.0207616 0.312592 0.5 +-0.0265767 0.0342963 -0.0210989 0.482378 0.5 +0.00282685 0.0351053 -0.0158136 0.508357 0.5 +0.00885967 0.034471 -0.0147487 0.490133 0.5 +-0.0390848 0.0337228 -0.0202617 0.628543 0.5 +-0.0326656 0.0345334 -0.0201874 0.788348 0.5 +-0.00224535 0.0351539 -0.0166234 0.756398 0.5 +-0.0149096 0.0357313 -0.0180956 0.933106 0.5 +-0.0114808 0.0353662 -0.0177045 0.933613 0.5 +-0.00921575 0.0380183 -0.0149732 0.909294 0.5 +-0.00282494 0.0382292 -0.0140636 0.920543 0.5 +0.00285919 0.0377324 -0.0134715 0.965028 0.5 +0.0159109 0.0347098 -0.00882204 0.420938 0.5 +-0.0306839 0.036693 -0.0184598 0.875112 0.5 +-0.0265216 0.0367471 -0.0188177 0.84266 0.5 +-0.0218341 0.0369718 -0.0184303 0.873319 0.5 +-0.0203027 0.0382765 -0.0152577 0.887215 0.5 +-0.0152596 0.0382328 -0.0156428 0.873575 0.5 +0.00738356 0.0366172 -0.0125003 0.962688 0.5 +0.00992361 0.0351979 -0.00924624 0.9642 0.5 +0.00702596 0.0378387 -0.00879015 0.927286 0.5 +-0.0396958 0.0342843 -0.014578 0.76643 0.5 +-0.0329517 0.0382154 -0.014678 0.654319 0.5 +-0.0263862 0.0385778 -0.0153644 0.924592 0.5 +0.00320835 0.0389424 -0.00953857 0.945732 0.5 +-0.0364387 0.0357946 -0.0155844 0.543249 0.5 +-0.00301526 0.0391061 -0.00886496 0.816802 0.5 +0.00831664 0.0348156 -0.00321961 0.671683 0.5 +0.0145039 0.0343685 -0.0028433 0.748562 0.5 +-0.0365752 0.0370276 -0.0136534 0.498247 0.5 +-0.0146234 0.0388055 -0.00887465 0.759701 0.5 +-0.00886749 0.0389394 -0.00890173 0.761944 0.5 +-0.0451032 0.0336721 -0.00848668 0.772585 0.5 +-0.040313 0.0350801 -0.00861758 0.462745 0.5 +-0.0206235 0.0386 -0.00878063 0.747754 0.5 +0.00267879 0.038424 -0.00319748 0.448355 0.5 +0.015044 0.0350517 0.00289039 0.579133 0.5 +0.0201479 0.0347806 0.00348327 0.403273 0.5 +0.027119 0.0353514 0.00366834 0.0909279 0.5 +0.0280785 0.0365531 0.000826759 0 0 +-0.0376066 0.0375692 -0.00942418 0.22755 0.5 +-0.0332748 0.0384549 -0.00855692 0.752109 0.5 +-0.0264541 0.0384497 -0.00886193 0.729343 0.5 +-0.00299262 0.0389582 -0.00292437 0.746846 0.5 +0.00451408 0.0356078 -0.00103635 0.413486 0.5 +0.00881079 0.0350428 0.00356828 0.588251 0.5 +0.0314184 0.0360255 0.00457907 0.187967 0.5 +-0.00888202 0.0387884 -0.00299409 0.73859 0.5 +0.00271787 0.0349091 0.00339755 0.645421 0.5 +-0.041199 0.0341471 -0.00327644 0 0 +-0.0205479 0.0384259 -0.00283766 0.741413 0.5 +-0.0146618 0.0385908 -0.00288739 0.718901 0.5 +0.00103528 0.0375917 0.000952222 0.441385 0.5 +0.0215747 0.0354906 0.0086194 0.395945 0.5 +0.0264794 0.0346514 0.00870654 0.414057 0.5 +0.0322391 0.0355412 0.00882378 0.515667 0.5 +-0.0521057 0.0334794 -0.00318207 0.614129 0.5 +-0.0455078 0.0336572 -0.00225818 0.757211 0.5 +-0.0334104 0.0383259 -0.00292317 0.611245 0.5 +-0.0265122 0.0383343 -0.00296504 0.763748 0.5 +-0.00224847 0.0383354 0.00320971 0.728422 0.5 +-0.0589386 0.0334143 -0.00291301 0.444064 0.5 +-0.00874044 0.0385976 0.00291227 0.735039 0.5 +0.00273457 0.0342734 0.0088248 0.796819 0.5 +0.00621941 0.0351341 0.00654928 0 0 +-0.080018 0.109279 0.0373655 0.503151 0.426569 +-0.0393178 0.0336443 0.00354096 0.266658 0.5 +-0.0213111 0.0382973 0.00334866 0.753895 0.5 +-0.0146196 0.0384265 0.00290922 0.762157 0.5 +-0.00353554 0.0379644 0.00874752 0.658939 0.5 +0.0276681 0.0349662 0.0149532 0.360666 0.5 +0.03282 0.0359255 0.0147037 0.719837 0.5 +0.0389763 0.0383079 0.0145025 0.635106 0.5 +-0.0523961 0.0335249 0.00326874 0.742717 0.5 +-0.0462346 0.0335696 0.00267776 0.743661 0.5 +-0.0277984 0.0382296 0.00286126 0.456211 0.5 +-0.000947006 0.0357374 0.0103469 0.779853 0.5 +0.0222276 0.0358262 0.0160256 0.180494 0.5 +0.0448051 0.0411192 0.0150961 0.294679 0.5 +-0.0581064 0.033504 0.00272997 0.775526 0.5 +-0.0352323 0.0337248 0.00491425 0.152905 0 +-0.0312985 0.0381858 0.00167702 0 0 +-0.0088641 0.03847 0.00876261 0.73345 0.5 +0.0028919 0.0342894 0.0147059 0.676527 0.5 +-0.0703332 0.0340583 0.00286723 0.639535 0.5 +-0.0648245 0.0334924 0.00301734 0.793089 0.5 +-0.0387963 0.034763 0.00935652 0.458758 0.5 +-0.0332327 0.0337932 0.00943608 0.151116 0.5 +-0.0203456 0.0382265 0.00836296 0.759992 0.5 +-0.0152156 0.0383161 0.00935801 0.755179 0.5 +-0.000385714 0.0351459 0.0134171 0.848157 0.5 +0.00663645 0.0342324 0.0159688 0 0 +0.0268074 0.0356469 0.0204126 0.619176 0.5 +0.0309391 0.0362152 0.0189937 0.762661 0.5 +0.0334119 0.0376179 0.0210082 0.70177 0.5 +-0.0515734 0.0338904 0.00817232 0.493124 0.5 +-0.0454999 0.0352808 0.00804865 0.53914 0.5 +-0.0263229 0.0380313 0.00871732 0.143858 0.5 +-0.0031858 0.0377098 0.014513 0.797449 0.5 +0.0211051 0.0351552 0.0207004 0.432057 0.5 +0.0391983 0.0395969 0.0205879 0.670001 0.5 +0.0441778 0.0418755 0.0204802 0.609797 0.5 +-0.0580282 0.0335624 0.00918162 0.776077 0.5 +-0.00922404 0.0383488 0.0150261 0.754001 0.5 +0.00313746 0.0352426 0.0204176 0.692001 0.5 +0.00877508 0.0346179 0.020856 0.290121 0.5 +0.0468489 0.0434226 0.0210936 0.239557 0.5 +-0.0648031 0.0337402 0.00884817 0.802283 0.5 +-0.0338156 0.0345063 0.0150293 0.572312 0.5 +-0.0149173 0.0382498 0.0147214 0.753708 0.5 +0.0146344 0.0345628 0.0222588 0.157065 0.5 +-0.0365655 0.0357926 0.0130139 0.391807 0.5 +-0.0262153 0.0376693 0.0148666 0.146481 0.5 +-0.0205165 0.0381248 0.0146779 0.715632 0.5 +-0.00229335 0.0382456 0.020565 0.923102 0.5 +0.014723 0.0347707 0.0263935 0.310145 0.5 +0.0210245 0.0353476 0.0265418 0.313898 0.5 +0.0250756 0.0364517 0.0246847 0.678097 0.5 +0.0273584 0.0381522 0.0267127 0.778478 0.5 +0.0321164 0.0401984 0.026762 0.778536 0.5 +-0.053829 0.0335431 0.0139547 0.458851 0.5 +0.00114114 0.037661 0.0223414 0.978558 0.5 +0.00915473 0.0353589 0.0262457 0.701449 0.5 +0.0380552 0.0412819 0.02589 0.374179 0.417844 +-0.0588034 0.0336951 0.0146283 0.798139 0.5 +-0.0339319 0.0346253 0.0202274 0.513983 0.5 +-0.0152545 0.0382629 0.0204704 0.75125 0.5 +-0.00888844 0.0384087 0.0207206 0.746481 0.5 +0.00307272 0.0384964 0.0264151 0.996029 0.5 +-0.0261643 0.0378491 0.0205422 0.603577 0.5 +-0.0205429 0.0381473 0.0213758 0.772551 0.5 +-0.0538188 0.0335608 0.0210581 0 0 +-0.00301594 0.03875 0.0263901 0.805634 0.5 +0.00756209 0.0380712 0.0285007 0.978659 0.5 +0.0143741 0.0348327 0.0331833 0.915728 0.5 +0.0198279 0.03555 0.0321213 0.749506 0.5 +0.0236875 0.0373106 0.0299772 0.517201 0.5 +-0.0588476 0.033906 0.020465 0.657735 0.5 +-0.00882687 0.0386047 0.0265705 0.756827 0.5 +0.00847025 0.0383344 0.0315598 0.739987 0.5 +0.0108958 0.035647 0.0330663 0.649316 0.5 +-0.0366651 0.0353042 0.023032 0.153172 0.5 +-0.0340084 0.0344659 0.0266224 0.263742 0.5 +-0.0270447 0.0379104 0.0270529 0.074682 0.5 +-0.0210471 0.0383013 0.026282 0.782021 0.5 +-0.0147317 0.0384888 0.0265233 0.791552 0.5 +-0.0712786 0.0733348 0.0355839 0.683322 0.427231 +-0.0388887 0.0346255 0.0265538 0.109729 0 +0.00290004 0.0393205 0.032168 0.626516 0.5 +0.0155389 0.0350901 0.0393977 0.759188 0.5 +0.0195159 0.0358111 0.0367948 0.405286 0.5 +-0.0589139 0.0341314 0.0264586 0.808252 0.5 +-0.052234 0.0340737 0.0268887 0.497915 0.5 +-0.0447866 0.0339274 0.0274346 0.154159 0.5 +-0.0310127 0.0369382 0.02848 0.240675 0.5 +-0.00908756 0.0390146 0.0330901 0.79352 0.5 +-0.00293287 0.039209 0.03365 0.804769 0.5 +0.00861952 0.0346654 0.0391536 0.125418 0.5 +-0.0149144 0.0388312 0.0324344 0.795183 0.5 +0.00392423 0.0347398 0.0399064 0.146347 0.5 +-0.0657827 0.0618455 0.00187562 0.442355 0.5 +-0.0640051 0.0606097 0.00361345 0.333039 0.5 +-0.0455164 0.0345095 0.0326748 0.510388 0.5 +-0.0385699 0.0344168 0.033204 0.485482 0.5 +-0.0342024 0.0351611 0.0325685 0.248514 0.5 +-0.0270303 0.0384799 0.0326469 0.783767 0.5 +-0.0209433 0.0387397 0.0332273 0.806699 0.5 +-0.0520994 0.0344582 0.0326775 0.466807 0.5 +-0.0313489 0.0377268 0.0321213 0.178238 0.5 +-0.00219023 0.0348305 0.0410082 0.139343 0 +0.00818206 0.0355366 0.0443043 0.642932 0.5 +0.014947 0.0361331 0.0431407 0.796588 0.5 +-0.0642564 0.0597236 0.0092932 0.716255 0.5 +-0.0584732 0.0343588 0.0331559 0.775713 0.5 +-0.0145859 0.0393004 0.0380317 0.483641 0.5 +-0.00937548 0.0394517 0.037871 0.328321 0.5 +-0.0588297 0.0579582 0.0145443 0 0 +-0.038732 0.0346956 0.0400227 0.628019 0.5 +-0.0331487 0.034492 0.0390527 0.154826 0.5 +-0.0201914 0.0391628 0.0381696 0.483919 0.5 +-0.00878985 0.0348233 0.0452949 0.139305 0.5 +-0.0031441 0.0351515 0.045825 0.295611 0.5 +-0.0701619 0.0622789 0.00863964 0.42197 0.408074 +-0.0451191 0.034688 0.0396457 0.766116 0.5 +-0.0256628 0.0389081 0.0373249 0 0 +-0.0146115 0.0348173 0.0458198 0.143796 0.5 +-0.0636462 0.0593677 0.014889 0.807508 0.5 +-0.0531671 0.0345191 0.0391729 0.74918 0.5 +-0.0595372 0.034497 0.0397515 0.783724 0.5 +-0.0329555 0.0349777 0.045552 0.474674 0.5 +-0.0262436 0.034809 0.0452831 0.162616 0.5 +-0.0215554 0.0348112 0.0459347 0.152356 0 +-0.0633407 0.0601272 0.0190813 0.939061 0.5 +-0.0471 0.0351015 0.0434178 0.627709 0.5 +-0.0120723 0.0353434 0.0494553 0.877126 0.5 +-0.016313 0.0351836 0.0504037 0.67915 0.5 +-0.0483699 0.146034 -0.00115148 0.583019 0.5 +-0.0264335 0.156562 -0.00835956 0.469485 0.437523 +-0.065003 0.144791 -0.0142909 0.400803 0.470167 +-0.066228 0.151547 -0.0394609 0.538048 0.5 +-0.0663323 0.145309 -0.018858 0.764025 0.5 +-0.0412403 0.152108 -0.00674014 0.633348 0.5 +3 4 132 80 +3 80 132 544 +3 373 80 544 +3 387 299 241 +3 859 1475 1474 +3 371 299 401 +3 401 326 333 +3 347 673 402 +3 1187 1354 386 +3 1221 457 69 +3 186 224 114 +3 1250 1256 116 +3 164 333 376 +3 19 488 1245 +3 749 19 1245 +3 667 19 749 +3 1040 412 543 +3 1359 1358 1500 +3 216 4 80 +3 152 544 146 +3 4 387 505 +3 543 1235 1205 +3 610 604 297 +3 250 801 1274 +3 504 148 111 +3 387 348 299 +3 401 333 164 +3 1484 1483 1110 +3 91 196 310 +3 90 91 310 +3 952 406 609 +3 1244 1247 1240 +3 93 327 65 +3 373 544 152 +3 373 152 644 +3 1321 158 22 +3 401 416 326 +3 644 152 1263 +3 276 59 181 +3 294 853 150 +3 308 249 529 +3 406 1124 604 +3 609 406 463 +3 146 3 145 +3 90 310 3 +3 58 186 10 +3 575 261 384 +3 25 40 43 +3 379 535 713 +3 348 704 157 +3 388 443 22 +3 396 146 145 +3 152 133 1263 +3 1830 1829 1812 +3 214 114 224 +3 157 147 324 +3 1335 430 1274 +3 282 230 214 +3 92 346 652 +3 1151 1012 1491 +3 571 1151 1491 +3 571 1491 183 +3 310 196 111 +3 91 4 505 +3 1250 116 108 +3 110 183 47 +3 1209 854 953 +3 132 4 91 +3 111 148 327 +3 93 111 327 +3 110 571 183 +3 713 171 402 +3 294 920 200 +3 81 180 52 +3 525 731 784 +3 347 256 673 +3 175 57 220 +3 338 175 220 +3 27 14 220 +3 57 27 220 +3 359 446 27 +3 359 36 446 +3 145 28 262 +3 133 16 419 +3 1447 576 1465 +3 1885 287 444 +3 133 396 16 +3 598 543 1205 +3 447 93 65 +3 73 213 36 +3 1236 1255 1250 +3 1235 1236 1250 +3 115 782 731 +3 28 93 447 +3 525 548 115 +3 299 416 401 +3 667 603 463 +3 292 667 463 +3 492 70 637 +3 133 146 396 +3 1166 1125 619 +3 1151 1219 959 +3 821 304 409 +3 1486 1487 1684 +3 15 175 167 +3 120 15 167 +3 15 131 57 +3 175 15 57 +3 57 131 27 +3 257 209 359 +3 27 257 359 +3 209 55 36 +3 359 209 36 +3 55 87 73 +3 36 55 73 +3 101 108 735 +3 108 101 64 +3 310 365 3 +3 576 859 1465 +3 262 28 447 +3 102 64 101 +3 544 91 90 +3 262 447 485 +3 485 447 211 +3 1443 1440 1442 +3 697 457 1221 +3 1008 383 1011 +3 451 435 1330 +3 129 405 426 +3 70 75 161 +3 648 693 692 +3 204 129 426 +3 812 481 123 +3 406 292 463 +3 878 1591 1009 +3 478 128 50 +3 900 979 977 +3 490 900 977 +3 241 299 371 +3 1164 701 734 +3 683 703 682 +3 719 718 682 +3 703 719 682 +3 760 759 718 +3 719 760 718 +3 137 729 728 +3 54 130 2 +3 302 358 301 +3 566 567 614 +3 1069 1103 1068 +3 1186 1190 1208 +3 4 348 387 +3 277 311 228 +3 707 226 706 +3 355 394 393 +3 773 129 755 +3 646 647 679 +3 356 355 269 +3 270 356 269 +3 424 394 356 +3 623 654 602 +3 654 683 602 +3 193 217 192 +3 1677 1676 1662 +3 1018 1019 1025 +3 597 1231 1165 +3 490 26 605 +3 299 157 416 +3 504 241 148 +3 84 528 714 +3 1247 669 1240 +3 683 719 703 +3 1886 1231 1066 +3 79 168 218 +3 211 318 426 +3 165 377 148 +3 91 505 387 +3 577 623 622 +3 692 693 707 +3 255 254 218 +3 194 270 255 +3 695 137 728 +3 1475 1498 1474 +3 67 808 1010 +3 1190 240 1208 +3 242 259 300 +3 476 509 567 +3 743 755 558 +3 1025 1024 1018 +3 194 255 218 +3 270 269 254 +3 203 271 12 +3 603 667 749 +3 1379 1395 1392 +3 783 546 1340 +3 578 600 577 +3 624 623 577 +3 600 624 577 +3 655 654 623 +3 684 683 654 +3 655 684 654 +3 720 719 683 +3 684 720 683 +3 720 739 719 +3 761 760 719 +3 739 761 719 +3 218 254 253 +3 694 695 437 +3 255 270 254 +3 1202 488 19 +3 412 1222 543 +3 60 528 84 +3 1352 494 702 +3 624 655 623 +3 1361 221 143 +3 755 129 204 +3 132 91 544 +3 543 1221 1235 +3 216 5 4 +3 1221 1236 1235 +3 754 755 204 +3 1169 732 715 +3 756 755 743 +3 1036 1035 1024 +3 728 756 743 +3 476 567 508 +3 4 5 348 +3 244 1339 546 +3 405 445 211 +3 254 269 268 +3 253 254 268 +3 381 358 302 +3 346 92 59 +3 517 450 1560 +3 1618 1333 141 +3 1498 1497 1474 +3 1231 597 1165 +3 228 264 215 +3 100 151 99 +3 151 215 99 +3 151 228 215 +3 1864 827 1870 +3 561 578 480 +3 207 561 480 +3 579 600 578 +3 561 579 578 +3 600 625 624 +3 656 655 624 +3 625 656 624 +3 685 684 655 +3 656 685 655 +3 685 721 720 +3 684 685 720 +3 721 740 739 +3 720 721 739 +3 739 740 761 +3 762 789 788 +3 761 762 788 +3 789 239 770 +3 788 789 770 +3 328 770 239 +3 423 424 476 +3 121 195 522 +3 423 476 422 +3 381 431 358 +3 148 371 401 +3 579 625 600 +3 465 464 431 +3 381 465 431 +3 464 465 227 +3 248 11 71 +3 548 142 1005 +3 740 762 761 +3 767 900 490 +3 728 743 437 +3 776 195 121 +3 1177 1176 1153 +3 1043 1034 1035 +3 137 708 729 +3 91 387 196 +3 1721 1729 1703 +3 728 729 756 +3 727 728 437 +3 196 387 241 +3 404 458 522 +3 355 354 268 +3 647 648 692 +3 979 846 901 +3 241 371 148 +3 142 1155 574 +3 269 355 268 +3 358 301 300 +3 301 358 300 +3 753 754 793 +3 184 229 228 +3 229 277 228 +3 312 311 277 +3 1845 1853 1831 +3 1523 1532 1153 +3 580 579 561 +3 1276 1280 1771 +3 580 626 625 +3 579 580 625 +3 626 657 656 +3 625 626 656 +3 656 657 685 +3 722 721 685 +3 741 740 721 +3 722 741 721 +3 740 763 762 +3 790 789 762 +3 763 790 762 +3 790 339 239 +3 789 790 239 +3 377 165 327 +3 476 508 422 +3 259 301 300 +3 162 170 169 +3 81 162 169 +3 580 561 562 +3 657 686 685 +3 229 312 277 +3 28 365 93 +3 1263 419 1254 +3 396 145 144 +3 685 686 722 +3 741 763 740 +3 133 152 146 +3 1263 133 419 +3 207 520 562 +3 520 562 580 +3 562 520 580 +3 562 626 580 +3 239 339 487 +3 597 1063 1066 +3 3 365 28 +3 649 648 615 +3 108 64 116 +3 571 1225 1218 +3 184 185 229 +3 313 312 229 +3 185 313 229 +3 439 501 520 +3 501 581 562 +3 520 501 562 +3 627 626 562 +3 581 627 562 +3 627 628 626 +3 658 657 626 +3 628 658 626 +3 658 675 657 +3 687 686 657 +3 675 687 657 +3 723 722 686 +3 687 723 686 +3 722 723 741 +3 741 723 763 +3 764 791 790 +3 763 764 790 +3 791 407 339 +3 790 791 339 +3 407 303 339 +3 303 487 339 +3 303 460 487 +3 303 325 460 +3 170 106 105 +3 105 106 68 +3 439 440 501 +3 723 764 763 +3 1 1027 453 +3 1067 511 942 +3 775 121 774 +3 1281 1270 1291 +3 368 440 439 +3 367 368 439 +3 582 581 501 +3 628 627 581 +3 658 688 687 +3 675 658 687 +3 1733 1562 1561 +3 757 775 756 +3 74 68 46 +3 398 1223 317 +3 631 607 231 +3 1465 859 1474 +3 1775 1784 1754 +3 204 138 793 +3 74 122 97 +3 584 533 570 +3 278 313 185 +3 265 278 185 +3 369 368 313 +3 278 369 313 +3 369 440 368 +3 502 501 440 +3 583 582 501 +3 502 583 501 +3 583 581 582 +3 629 628 581 +3 583 629 581 +3 629 659 658 +3 628 629 658 +3 658 659 688 +3 724 723 687 +3 688 724 687 +3 724 742 723 +3 742 765 764 +3 723 742 764 +3 764 238 791 +3 791 238 407 +3 407 238 303 +3 238 333 303 +3 333 325 303 +3 614 615 647 +3 46 122 74 +3 606 199 112 +3 441 440 369 +3 83 173 573 +3 775 776 121 +3 846 979 901 +3 441 502 440 +3 659 689 688 +3 84 714 1367 +3 535 52 171 +3 551 798 1883 +3 630 629 583 +3 629 630 659 +3 689 724 688 +3 792 238 764 +3 765 792 764 +3 1207 1208 177 +3 195 96 522 +3 122 13 97 +3 344 492 637 +3 1025 1036 1024 +3 775 774 756 +3 1012 1151 959 +3 1270 1372 1291 +3 145 3 28 +3 649 670 695 +3 517 1888 243 +3 444 399 1885 +3 370 369 278 +3 724 765 742 +3 376 333 238 +3 1372 1375 1291 +3 1060 1161 1162 +3 16 396 144 +3 369 442 441 +3 583 601 630 +3 690 689 659 +3 318 295 427 +3 138 204 427 +3 693 694 707 +3 310 111 365 +3 365 111 93 +3 636 660 659 +3 567 566 508 +3 426 405 211 +3 121 126 774 +3 471 601 583 +3 251 237 188 +3 1303 188 237 +3 278 314 370 +3 370 442 369 +3 442 503 502 +3 441 442 502 +3 503 471 583 +3 502 503 583 +3 858 302 259 +3 16 144 319 +3 660 690 659 +3 690 725 724 +3 689 690 724 +3 750 765 724 +3 725 750 724 +3 8 792 765 +3 750 8 765 +3 376 238 792 +3 8 376 792 +3 164 376 238 +3 376 164 238 +3 1381 1380 1375 +3 1135 1134 1103 +3 1104 1135 1103 +3 794 204 793 +3 447 65 211 +3 442 1347 503 +3 249 262 485 +3 1036 1043 1035 +3 522 96 438 +3 204 426 427 +3 188 283 251 +3 1235 1250 1205 +3 485 262 23 +3 597 1066 1165 +3 144 308 319 +3 1027 767 589 +3 648 649 694 +3 567 615 614 +3 821 409 304 +3 63 711 903 +3 8 164 376 +3 12 478 50 +3 171 347 402 +3 284 1327 314 +3 1447 1465 1459 +3 1456 1447 1459 +3 1329 1328 1380 +3 755 756 773 +3 756 774 773 +3 193 218 253 +3 648 694 693 +3 168 194 218 +3 190 188 189 +3 284 283 188 +3 190 284 188 +3 283 284 314 +3 262 485 23 +3 108 116 64 +3 751 750 725 +3 726 751 725 +3 751 771 750 +3 37 8 750 +3 771 37 750 +3 632 164 8 +3 569 53 411 +3 511 1560 1884 +3 386 1354 1320 +3 165 632 8 +3 37 165 8 +3 165 164 632 +3 662 661 638 +3 354 393 422 +3 401 165 148 +3 979 1883 798 +3 144 145 262 +3 413 408 349 +3 16 319 669 +3 318 211 295 +3 156 1213 198 +3 1153 1152 1119 +3 1225 1448 247 +3 190 266 284 +3 419 669 1247 +3 479 233 232 +3 166 165 37 +3 709 492 344 +3 567 568 615 +3 107 827 1864 +3 695 727 437 +3 485 211 23 +3 1254 419 1247 +3 419 16 669 +3 1884 1591 1009 +3 249 485 24 +3 41 249 24 +3 1103 1134 1133 +3 272 398 492 +3 754 204 794 +3 1498 159 113 +3 24 485 23 +3 1102 1103 1133 +3 308 144 249 +3 164 165 401 +3 692 707 706 +3 509 568 567 +3 191 252 190 +3 190 252 266 +3 252 285 284 +3 266 252 284 +3 285 286 284 +3 284 286 337 +3 144 262 249 +3 536 564 563 +3 563 564 593 +3 564 612 611 +3 593 564 611 +3 645 361 611 +3 612 645 611 +3 645 691 1313 +3 309 752 751 +3 726 309 751 +3 752 772 771 +3 751 752 771 +3 119 37 771 +3 772 119 771 +3 425 166 37 +3 119 425 37 +3 380 165 166 +3 425 380 166 +3 128 83 17 +3 50 128 17 +3 729 757 756 +3 394 423 422 +3 589 767 490 +3 424 509 476 +3 1374 1359 1531 +3 408 372 349 +3 679 692 706 +3 855 242 300 +3 766 757 730 +3 354 355 393 +3 79 218 193 +3 129 126 405 +3 126 458 405 +3 647 692 679 +3 757 766 775 +3 766 776 775 +3 1699 1014 1013 +3 393 394 422 +3 252 286 285 +3 752 119 772 +3 425 327 380 +3 696 730 729 +3 708 696 729 +3 649 695 694 +3 78 79 193 +3 1497 1498 113 +3 901 979 798 +3 404 24 445 +3 24 23 445 +3 776 795 195 +3 1340 1591 1884 +3 1035 1034 1024 +3 177 203 12 +3 380 327 425 +3 510 509 424 +3 477 510 424 +3 458 404 405 +3 192 217 252 +3 191 192 252 +3 217 267 286 +3 252 217 286 +3 286 267 352 +3 353 421 420 +3 352 353 420 +3 421 507 506 +3 506 507 536 +3 507 565 564 +3 536 507 564 +3 565 613 612 +3 564 565 612 +3 646 645 612 +3 613 646 612 +3 646 679 691 +3 645 646 691 +3 706 705 691 +3 679 706 691 +3 753 309 280 +3 138 119 752 +3 753 138 752 +3 427 425 119 +3 138 427 119 +3 295 380 425 +3 427 295 425 +3 65 327 380 +3 295 65 380 +3 769 104 315 +3 426 318 427 +3 568 616 615 +3 695 728 727 +3 404 445 405 +3 1635 1653 1453 +3 271 478 12 +3 839 136 830 +3 615 648 647 +3 311 277 228 +3 749 1245 1225 +3 353 392 421 +3 793 138 753 +3 315 104 33 +3 432 466 465 +3 381 432 465 +3 465 466 527 +3 1170 1190 1099 +3 754 794 793 +3 558 754 280 +3 193 253 217 +3 253 268 267 +3 217 253 267 +3 268 354 353 +3 267 268 353 +3 354 392 353 +3 422 421 392 +3 354 422 392 +3 422 508 507 +3 421 422 507 +3 508 566 565 +3 507 508 565 +3 614 613 565 +3 566 614 565 +3 614 647 646 +3 613 614 646 +3 168 810 194 +3 886 940 923 +3 946 945 930 +3 929 939 944 +3 940 569 887 +3 661 649 616 +3 320 919 878 +3 227 526 464 +3 882 873 866 +3 552 384 820 +3 464 927 358 +3 917 432 905 +3 879 829 820 +3 194 836 880 +3 935 466 432 +3 917 935 432 +3 1038 1725 1013 +3 1378 1391 1406 +3 173 448 293 +3 477 943 510 +3 616 568 617 +3 1405 550 980 +3 665 86 847 +3 891 906 912 +3 845 130 54 +3 999 925 822 +3 1885 928 555 +3 904 910 270 +3 315 33 478 +3 1033 1034 1042 +3 490 921 26 +3 850 257 131 +3 1070 1077 1034 +3 843 860 15 +3 120 843 15 +3 850 209 257 +3 914 913 300 +3 880 911 910 +3 641 661 616 +3 843 120 797 +3 860 870 15 +3 870 131 15 +3 870 850 131 +3 894 873 882 +3 811 248 875 +3 974 981 992 +3 850 201 131 +3 131 201 850 +3 850 201 209 +3 907 917 905 +3 694 437 226 +3 895 843 797 +3 870 860 843 +3 816 870 843 +3 870 201 850 +3 913 933 932 +3 968 969 986 +3 840 118 712 +3 816 843 895 +3 201 856 209 +3 856 845 55 +3 209 856 55 +3 931 930 911 +3 228 151 184 +3 1340 884 1884 +3 553 506 536 +3 539 867 842 +3 870 924 201 +3 977 823 490 +3 868 829 780 +3 999 1000 925 +3 198 701 156 +3 787 816 895 +3 924 877 856 +3 201 924 856 +3 877 845 856 +3 66 305 941 +3 769 203 1208 +3 848 847 919 +3 880 889 911 +3 1027 589 605 +3 957 816 787 +3 849 870 816 +3 957 849 816 +3 414 821 409 +3 1887 1004 928 +3 569 888 887 +3 459 384 552 +3 891 889 890 +3 839 892 891 +3 1080 1057 1051 +3 957 328 816 +3 328 957 816 +3 849 881 870 +3 881 849 870 +3 870 849 924 +3 481 531 123 +3 777 835 698 +3 891 892 906 +3 912 911 889 +3 891 912 889 +3 546 1339 746 +3 328 849 957 +3 849 88 924 +3 1043 1070 1034 +3 777 122 46 +3 477 929 943 +3 617 641 616 +3 822 915 72 +3 915 331 72 +3 834 806 956 +3 788 957 787 +3 770 788 787 +3 788 328 957 +3 864 877 924 +3 833 938 130 +3 845 833 130 +3 938 256 130 +3 1005 142 574 +3 661 676 137 +3 730 305 776 +3 1186 1208 1207 +3 1189 1186 1207 +3 798 1888 1067 +3 864 924 88 +3 864 922 877 +3 982 845 877 +3 922 982 877 +3 982 833 845 +3 894 905 873 +3 879 665 86 +3 879 665 847 +3 817 922 864 +3 833 982 922 +3 817 833 922 +3 894 907 905 +3 1562 1561 1038 +3 305 893 776 +3 899 864 88 +3 1071 1049 1072 +3 788 770 328 +3 776 768 795 +3 835 919 847 +3 817 864 899 +3 833 256 938 +3 1177 1195 1176 +3 1276 1771 1275 +3 155 100 813 +3 832 96 449 +3 879 384 665 +3 879 86 665 +3 834 956 320 +3 863 898 328 +3 826 849 328 +3 898 826 328 +3 849 826 88 +3 826 899 88 +3 1346 1883 900 +3 930 945 944 +3 939 930 944 +3 810 818 836 +3 838 836 837 +3 1077 1069 1034 +3 891 890 838 +3 1473 1680 1679 +3 44 24 438 +3 899 200 817 +3 1374 1391 1378 +3 466 935 527 +3 66 941 730 +3 913 906 912 +3 956 919 320 +3 662 676 661 +3 239 395 863 +3 395 898 863 +3 819 826 898 +3 826 200 899 +3 35 86 82 +3 880 270 194 +3 935 950 527 +3 670 661 695 +3 134 256 94 +3 818 837 836 +3 848 879 847 +3 395 819 898 +3 826 819 200 +3 200 920 817 +3 920 876 833 +3 817 920 833 +3 833 876 256 +3 1034 1069 1068 +3 932 933 947 +3 997 676 662 +3 836 889 880 +3 757 729 730 +3 956 806 919 +3 603 749 1460 +3 876 48 256 +3 827 107 155 +3 107 184 155 +3 830 855 841 +3 1042 1034 1068 +3 832 449 795 +3 997 662 638 +3 384 261 665 +3 997 696 676 +3 294 48 876 +3 920 294 876 +3 925 915 822 +3 1199 1231 1886 +3 941 305 730 +3 200 418 294 +3 569 940 886 +3 100 155 184 +3 840 712 331 +3 921 379 26 +3 1016 1014 1699 +3 776 766 730 +3 983 997 638 +3 676 696 137 +3 487 395 239 +3 487 819 395 +3 569 886 511 +3 940 887 923 +3 986 1000 985 +3 1125 110 47 +3 947 968 958 +3 842 874 834 +3 822 918 66 +3 985 999 998 +3 984 985 998 +3 999 822 998 +3 983 984 997 +3 984 998 997 +3 819 418 200 +3 177 85 1206 +3 12 275 397 +3 1231 1165 1066 +3 240 769 1208 +3 1000 999 985 +3 943 965 568 +3 906 913 932 +3 300 913 892 +3 997 998 66 +3 998 822 66 +3 478 33 128 +3 570 701 1076 +3 305 72 768 +3 72 811 768 +3 878 884 411 +3 878 835 884 +3 930 939 929 +3 968 978 967 +3 958 968 967 +3 946 958 967 +3 819 853 418 +3 510 943 509 +3 509 943 568 +3 151 100 184 +3 978 984 983 +3 967 978 983 +3 474 1122 799 +3 932 931 912 +3 487 460 819 +3 460 29 819 +3 819 29 853 +3 340 867 383 +3 1134 1135 1161 +3 947 946 931 +3 1411 1501 1408 +3 300 892 855 +3 356 910 929 +3 136 838 837 +3 1259 351 523 +3 887 896 923 +3 260 86 665 +3 774 129 773 +3 872 873 871 +3 906 932 912 +3 661 137 695 +3 511 886 942 +3 985 984 978 +3 968 985 978 +3 818 136 837 +3 1559 851 857 +3 872 871 865 +3 1222 1221 543 +3 548 1005 115 +3 430 1198 1065 +3 768 811 832 +3 945 967 944 +3 1132 1134 1160 +3 1019 1036 1025 +3 1134 1161 1160 +3 615 616 649 +3 1560 884 1884 +3 884 835 888 +3 214 230 114 +3 811 332 832 +3 878 411 53 +3 848 842 879 +3 842 829 879 +3 48 673 256 +3 869 811 768 +3 912 931 911 +3 935 936 950 +3 871 302 381 +3 972 991 971 +3 708 137 696 +3 1225 571 110 +3 847 955 13 +3 803 190 189 +3 865 871 858 +3 986 985 968 +3 929 944 943 +3 227 972 526 +3 888 835 896 +3 1001 1002 840 +3 1830 1841 1829 +3 50 140 275 +3 394 424 423 +3 411 884 888 +3 936 935 917 +3 907 936 917 +3 835 847 698 +3 811 6 332 +3 842 867 829 +3 1161 1060 1226 +3 1885 399 1887 +3 808 834 995 +3 1659 1658 1638 +3 65 295 211 +3 918 822 305 +3 302 871 381 +3 847 86 955 +3 1001 840 925 +3 1010 937 834 +3 1208 203 177 +3 1135 1162 1161 +3 921 81 379 +3 271 315 478 +3 948 969 947 +3 464 526 927 +3 834 848 806 +3 409 296 414 +3 302 873 432 +3 885 896 777 +3 841 892 839 +3 811 875 6 +3 1077 1104 1069 +3 1104 1103 1069 +3 68 106 46 +3 823 921 490 +3 162 81 921 +3 823 162 921 +3 989 1001 1000 +3 986 989 1000 +3 1000 1001 925 +3 888 896 887 +3 929 477 356 +3 974 972 534 +3 87 2 213 +3 915 840 331 +3 970 969 948 +3 965 641 568 +3 1207 177 1206 +3 1726 1725 1038 +3 1002 51 840 +3 814 191 803 +3 191 190 803 +3 855 892 841 +3 302 432 381 +3 173 293 573 +3 880 904 270 +3 871 873 302 +3 358 914 300 +3 239 863 328 +3 910 911 929 +3 331 712 811 +3 438 24 404 +3 892 913 906 +3 991 1002 990 +3 128 33 83 +3 810 836 194 +3 788 770 787 +3 814 803 804 +3 774 126 129 +3 242 855 830 +3 981 1189 1206 +3 927 934 914 +3 847 13 777 +3 301 358 300 +3 822 72 305 +3 641 617 568 +3 839 838 136 +3 904 880 910 +3 1850 1864 1870 +3 118 248 811 +3 949 970 948 +3 970 989 986 +3 1328 1325 1316 +3 358 927 914 +3 867 340 829 +3 943 944 966 +3 1100 221 1361 +3 530 805 525 +3 327 148 377 +3 1259 179 351 +3 1029 1028 1014 +3 969 968 947 +3 970 986 969 +3 832 795 768 +3 888 569 411 +3 342 344 113 +3 458 126 121 +3 943 966 965 +3 979 901 823 +3 823 861 162 +3 701 198 1076 +3 966 638 641 +3 769 315 271 +3 760 761 787 +3 965 966 641 +3 927 949 934 +3 949 948 934 +3 558 755 754 +3 919 835 878 +3 270 910 356 +3 852 162 861 +3 106 170 162 +3 852 106 162 +3 947 958 946 +3 815 192 191 +3 814 815 191 +3 820 384 879 +3 305 768 893 +3 698 847 777 +3 829 340 780 +3 534 972 227 +3 121 522 458 +3 1071 1077 1070 +3 846 823 901 +3 846 861 823 +3 918 305 66 +3 893 768 776 +3 1190 1186 1099 +3 67 1010 937 +3 925 840 915 +3 862 861 846 +3 862 852 861 +3 835 777 896 +3 946 945 944 +3 862 106 852 +3 1885 1887 928 +3 464 358 431 +3 526 949 927 +3 946 944 945 +3 890 889 838 +3 66 696 997 +3 1019 1561 1026 +3 1375 1380 1291 +3 1071 1061 1077 +3 712 118 811 +3 806 848 919 +3 971 990 970 +3 661 670 649 +3 971 970 949 +3 749 1225 110 +3 122 777 13 +3 35 13 955 +3 734 701 1164 +3 795 449 195 +3 874 842 848 +3 990 1002 989 +3 977 979 823 +3 526 971 949 +3 78 193 192 +3 815 78 192 +3 990 989 970 +3 834 539 842 +3 839 891 838 +3 1146 767 1064 +3 1002 1001 989 +3 840 51 118 +3 886 862 846 +3 280 754 753 +3 811 869 768 +3 906 913 912 +3 967 966 944 +3 931 946 930 +3 829 552 820 +3 886 106 862 +3 885 46 106 +3 1061 1104 1077 +3 320 67 834 +3 905 432 873 +3 874 848 834 +3 911 930 929 +3 1026 1572 1019 +3 972 974 992 +3 934 933 913 +3 914 934 913 +3 923 106 886 +3 777 46 885 +3 355 356 394 +3 449 96 195 +3 66 730 696 +3 807 96 832 +3 72 331 811 +3 896 106 923 +3 896 885 106 +3 1071 1070 1043 +3 932 947 931 +3 1049 1071 1043 +3 450 39 785 +3 946 967 945 +3 836 838 889 +3 787 761 788 +3 967 983 638 +3 966 967 638 +3 991 990 971 +3 597 1165 1231 +3 937 539 834 +3 934 948 947 +3 933 934 947 +3 886 846 942 +3 972 971 526 +3 1737 1762 1746 +3 1841 1851 1829 +3 417 1219 1218 +3 1166 110 1125 +3 159 342 113 +3 1065 1032 1274 +3 430 1065 1274 +3 1307 1320 1395 +3 767 1027 1 +3 846 798 1067 +3 735 1256 469 +3 1829 1850 1834 +3 398 317 1039 +3 288 32 34 +3 1051 1057 1058 +3 515 1684 1674 +3 1080 1079 1057 +3 1051 1058 1029 +3 1039 288 34 +3 1561 1726 1038 +3 1379 1307 1395 +3 304 642 409 +3 1396 1380 1381 +3 1030 1051 1029 +3 1219 1218 959 +3 598 1205 642 +3 1604 1615 1613 +3 1209 953 1193 +3 389 1521 1121 +3 398 75 70 +3 1314 273 524 +3 1022 1030 1021 +3 1022 1021 1016 +3 1030 1029 1021 +3 598 642 304 +3 528 1185 714 +3 1194 1209 1193 +3 177 12 397 +3 878 67 320 +3 1057 1045 1028 +3 1096 1095 1079 +3 1296 264 1319 +3 101 491 1237 +3 834 808 67 +3 1312 1484 1110 +3 963 1312 1110 +3 113 344 637 +3 1497 113 1496 +3 1119 1127 1113 +3 1312 1483 1484 +3 1799 1816 1812 +3 1079 1095 1057 +3 854 357 1191 +3 399 444 1210 +3 539 1011 383 +3 246 250 664 +3 1028 1038 1020 +3 1058 1057 1029 +3 311 1329 1396 +3 1260 1483 1312 +3 1187 1328 428 +3 1851 1864 1850 +3 317 609 619 +3 609 463 619 +3 1223 952 317 +3 603 1166 619 +3 1003 976 1094 +3 1248 556 297 +3 287 1885 555 +3 1138 1172 1163 +3 297 556 610 +3 1591 878 1009 +3 463 603 619 +3 749 110 1166 +3 1157 680 1081 +3 1886 304 409 +3 436 1027 605 +3 1015 1029 1014 +3 556 20 610 +3 20 604 610 +3 1099 1186 1189 +3 20 599 604 +3 1209 854 953 +3 1360 1550 1685 +3 492 398 70 +3 1172 1193 1192 +3 1175 1172 1192 +3 733 292 406 +3 202 733 406 +3 1010 834 67 +3 468 113 637 +3 154 1157 1081 +3 1172 1175 1163 +3 1193 854 1192 +3 953 854 1193 +3 1055 174 493 +3 1502 650 1046 +3 236 60 84 +3 1195 1194 1176 +3 85 177 397 +3 1163 1175 1148 +3 585 433 357 +3 1050 1045 1028 +3 1138 1148 1112 +3 1603 1402 1589 +3 1174 1192 1191 +3 1170 1174 1190 +3 1416 1417 1617 +3 398 1039 34 +3 75 398 1007 +3 1095 1107 1078 +3 1133 1134 1132 +3 1528 1022 1551 +3 1066 598 304 +3 292 733 667 +3 63 903 18 +3 619 1125 288 +3 1357 1355 1356 +3 733 1363 667 +3 470 1 212 +3 1017 830 136 +3 1119 1113 1095 +3 1387 231 247 +3 1107 1112 1078 +3 113 468 1496 +3 1028 1045 1050 +3 1014 1028 1013 +3 808 1011 539 +3 830 841 839 +3 12 50 275 +3 1344 1530 1115 +3 1363 153 19 +3 667 1363 19 +3 1103 1102 1068 +3 952 609 317 +3 1175 1174 1148 +3 1031 236 681 +3 595 10 555 +3 1119 1114 1587 +3 1114 1119 1096 +3 709 272 492 +3 451 736 434 +3 1174 1175 1192 +3 1380 1328 1316 +3 928 595 555 +3 153 489 1202 +3 572 598 1066 +3 19 153 1202 +3 1737 1746 1721 +3 1418 1417 1395 +3 1148 1147 1126 +3 488 1387 1448 +3 1245 488 1448 +3 1040 543 598 +3 572 1040 598 +3 1021 1029 1015 +3 1654 1653 1635 +3 329 58 595 +3 489 125 488 +3 1163 1148 1138 +3 1534 1687 1439 +3 342 709 344 +3 1112 1148 1126 +3 1202 489 488 +3 125 231 1387 +3 488 125 1387 +3 398 272 1223 +3 383 867 539 +3 414 296 928 +3 1176 1194 1172 +3 1028 1020 1013 +3 173 176 448 +3 1591 878 1009 +3 444 287 263 +3 1083 444 263 +3 272 952 1223 +3 1192 854 1191 +3 854 585 357 +3 1119 1152 1139 +3 1547 461 513 +3 296 329 595 +3 296 595 928 +3 603 749 1166 +3 1319 1329 1381 +3 1138 1152 1172 +3 63 18 33 +3 433 63 104 +3 769 433 104 +3 1174 1171 1147 +3 1372 1381 1375 +3 1613 1424 1603 +3 1113 1138 1107 +3 571 1218 1219 +3 1528 1551 1548 +3 1007 398 34 +3 1738 1737 1717 +3 1396 1329 1380 +3 1063 572 1066 +3 1153 1176 1152 +3 1139 1113 1127 +3 1119 1139 1127 +3 1191 357 1190 +3 357 240 1190 +3 1148 1174 1147 +3 29 460 325 +3 317 619 1039 +3 1754 1762 1737 +3 1329 311 1396 +3 1309 1380 1316 +3 1225 247 1218 +3 1448 1387 247 +3 1028 1045 1038 +3 1635 1453 1452 +3 116 1256 735 +3 514 1032 962 +3 1095 1078 1086 +3 1079 1095 1086 +3 357 433 240 +3 1174 1170 1171 +3 1218 1219 959 +3 1067 942 846 +3 1057 1095 1079 +3 10 114 287 +3 150 853 620 +3 555 10 287 +3 1152 1138 1139 +3 1052 1085 1370 +3 1704 1721 1703 +3 89 51 1002 +3 512 89 1002 +3 1152 1176 1172 +3 981 1206 992 +3 991 512 1002 +3 402 673 48 +3 1016 1551 1022 +3 1151 571 1219 +3 433 769 240 +3 1291 1380 1309 +3 1571 785 884 +3 589 490 605 +3 584 572 1063 +3 1057 1079 1045 +3 1138 1112 1107 +3 1045 1086 1078 +3 1095 1113 1107 +3 76 512 991 +3 1549 1552 1548 +3 203 769 271 +3 992 76 991 +3 274 89 512 +3 76 274 512 +3 274 51 89 +3 139 118 51 +3 274 139 51 +3 11 248 118 +3 139 11 118 +3 1056 1042 1068 +3 737 103 17 +3 871 302 858 +3 273 489 153 +3 1826 1835 1820 +3 197 48 294 +3 975 197 294 +3 197 713 402 +3 48 197 402 +3 584 1076 1040 +3 1079 1086 1045 +3 1029 1057 1028 +3 1139 1138 1113 +3 572 584 1040 +3 198 412 1040 +3 1076 198 1040 +3 298 273 153 +3 1500 1531 1359 +3 1096 1119 1095 +3 1194 1193 1172 +3 1560 785 1571 +3 882 866 894 +3 49 139 274 +3 1189 1207 1206 +3 1102 1133 1132 +3 1717 1721 1704 +3 1674 1487 1653 +3 584 570 1076 +3 894 1102 907 +3 821 1167 1199 +3 17 103 140 +3 50 17 140 +3 1042 1056 866 +3 1056 1068 894 +3 866 1056 894 +3 894 1068 1102 +3 1102 1132 936 +3 907 1102 936 +3 1160 950 936 +3 1132 1160 936 +3 1174 1191 1190 +3 1206 85 76 +3 992 1206 76 +3 397 274 76 +3 85 397 76 +3 275 49 274 +3 397 275 274 +3 140 139 49 +3 275 140 49 +3 103 11 139 +3 140 103 139 +3 409 642 329 +3 296 409 329 +3 436 975 1241 +3 436 605 975 +3 605 26 975 +3 26 197 975 +3 26 379 713 +3 197 26 713 +3 1010 539 937 +3 59 454 346 +3 652 408 413 +3 21 61 149 +3 171 345 347 +3 94 2 130 +3 130 256 134 +3 1004 1393 715 +3 313 368 367 +3 544 90 146 +3 81 535 379 +3 1257 527 950 +3 1257 950 1160 +3 302 301 259 +3 1004 414 928 +3 1160 1238 1257 +3 102 214 186 +3 1238 1160 1161 +3 1226 1238 1161 +3 1257 227 527 +3 95 233 364 +3 620 853 29 +3 1257 534 227 +3 282 454 230 +3 1453 1653 1452 +3 232 233 95 +3 821 1199 1886 +3 1232 1238 1226 +3 1238 981 1257 +3 1257 981 534 +3 417 408 652 +3 1233 1238 1232 +3 1027 436 42 +3 196 504 111 +3 169 180 81 +3 61 21 479 +3 631 231 388 +3 372 631 388 +3 1300 1382 1270 +3 1558 1559 857 +3 714 298 800 +3 298 153 800 +3 981 974 534 +3 704 348 5 +3 706 226 234 +3 388 231 443 +3 311 1330 1329 +3 1282 1300 1270 +3 1189 981 1238 +3 1233 1189 1238 +3 334 94 256 +3 1462 1672 1473 +3 895 786 787 +3 595 58 10 +3 1242 1251 1256 +3 489 231 125 +3 1236 1256 1250 +3 0 717 40 +3 470 212 0 +3 717 279 40 +3 276 230 59 +3 454 282 1237 +3 521 219 213 +3 417 652 346 +3 1266 417 346 +3 364 521 213 +3 171 363 345 +3 279 704 40 +3 470 0 160 +3 94 95 2 +3 42 281 717 +3 97 375 540 +3 61 479 363 +3 1216 705 706 +3 349 372 233 +3 453 42 717 +3 1241 975 150 +3 150 975 294 +3 214 362 282 +3 959 417 1266 +3 959 1219 417 +3 281 42 279 +3 408 607 372 +3 372 607 631 +3 0 40 25 +3 1221 69 1242 +3 287 114 263 +3 279 147 157 +3 704 279 157 +3 134 94 130 +3 81 52 535 +3 1265 58 329 +3 1249 1265 329 +3 82 97 13 +3 364 643 158 +3 82 375 97 +3 156 542 1214 +3 479 232 345 +3 35 82 13 +3 147 620 29 +3 102 186 58 +3 64 102 58 +3 363 479 345 +3 21 413 479 +3 652 413 21 +3 372 388 233 +3 216 43 5 +3 61 171 52 +3 413 349 479 +3 186 114 10 +3 619 288 1039 +3 697 1221 412 +3 171 61 363 +3 212 717 0 +3 1236 1242 1256 +3 607 408 417 +3 92 21 149 +3 279 42 147 +3 1221 1222 412 +3 697 1217 457 +3 156 1214 1213 +3 453 717 1 +3 552 829 868 +3 114 276 263 +3 570 734 701 +3 324 29 325 +3 1 717 212 +3 214 102 101 +3 2 364 213 +3 95 364 2 +3 74 97 68 +3 108 58 1265 +3 196 241 504 +3 416 325 326 +3 1346 900 767 +3 642 1205 1249 +3 71 135 6 +3 665 261 260 +3 389 43 216 +3 108 64 58 +3 1255 1236 1250 +3 7 1261 71 +3 1261 135 71 +3 83 737 17 +3 165 380 327 +3 147 29 324 +3 279 717 281 +3 417 1218 607 +3 1218 247 607 +3 83 573 737 +3 737 1239 7 +3 1239 1261 7 +3 42 620 147 +3 1215 697 1214 +3 1221 1242 1236 +3 1261 172 135 +3 651 62 6 +3 117 332 6 +3 62 117 6 +3 416 324 325 +3 157 324 416 +3 40 5 43 +3 1227 1239 737 +3 573 1227 737 +3 1261 1262 172 +3 172 651 6 +3 135 172 6 +3 62 807 117 +3 0 25 160 +3 364 388 643 +3 345 95 94 +3 1214 909 1215 +3 336 149 180 +3 233 388 364 +3 807 832 117 +3 1243 1262 1261 +3 1239 1243 1261 +3 42 150 620 +3 1215 1217 697 +3 1214 412 198 +3 1213 1214 198 +3 293 1227 573 +3 172 62 651 +3 878 1591 67 +3 1214 697 412 +3 1228 1243 1239 +3 1227 1228 1239 +3 96 45 438 +3 40 704 5 +3 59 92 181 +3 172 9 62 +3 643 22 158 +3 388 22 643 +3 92 149 181 +3 345 94 334 +3 652 21 92 +3 345 232 95 +3 214 101 362 +3 535 171 713 +3 1262 678 172 +3 678 9 172 +3 9 592 62 +3 479 349 233 +3 326 325 333 +3 117 832 332 +3 347 345 334 +3 234 1216 706 +3 486 62 592 +3 486 807 62 +3 884 1340 1884 +3 1270 1381 1372 +3 348 157 299 +3 1320 1418 1395 +3 1243 452 1262 +3 1262 452 678 +3 343 592 9 +3 149 61 52 +3 1224 1230 1228 +3 1246 1253 1243 +3 1243 1253 452 +3 163 486 592 +3 163 96 486 +3 2 87 54 +3 1474 1497 1496 +3 1488 1474 1496 +3 525 115 731 +3 1230 1246 1243 +3 1228 1230 1243 +3 452 343 9 +3 678 452 9 +3 31 592 343 +3 31 163 592 +3 743 226 437 +3 334 256 347 +3 149 52 180 +3 6 875 248 +3 1482 1474 1488 +3 1246 1230 1253 +3 452 31 343 +3 45 96 163 +3 364 158 521 +3 737 7 103 +3 213 73 87 +3 1063 533 584 +3 45 44 438 +3 42 436 150 +3 1244 1240 1092 +3 211 445 23 +3 1459 1465 1482 +3 1440 988 1442 +3 163 44 45 +3 1418 1354 1863 +3 436 1241 150 +3 453 1027 42 +3 108 1265 1249 +3 230 454 59 +3 1465 1474 1482 +3 311 1329 1319 +3 677 1234 1230 +3 1230 1234 1253 +3 452 374 31 +3 163 323 44 +3 282 214 230 +3 214 282 230 +3 1258 374 452 +3 1253 1258 452 +3 1215 909 1217 +3 1354 1418 1320 +3 1234 1240 1253 +3 294 418 853 +3 558 234 226 +3 11 103 71 +3 1240 1258 1253 +3 31 77 163 +3 77 323 163 +3 558 280 234 +3 214 224 186 +3 1205 1250 1249 +3 586 1296 1282 +3 1240 1234 677 +3 114 230 276 +3 1125 47 32 +3 308 77 31 +3 868 780 340 +3 1250 108 1249 +3 694 226 707 +3 288 1125 32 +3 319 31 374 +3 31 319 308 +3 529 323 77 +3 323 24 44 +3 280 309 234 +3 234 309 1216 +3 1491 1012 183 +3 77 308 529 +3 323 41 24 +3 225 361 1313 +3 6 248 71 +3 1258 669 374 +3 669 319 374 +3 249 41 323 +3 529 249 323 +3 115 444 782 +3 146 90 3 +3 309 705 1216 +3 669 1258 1240 +3 1264 109 636 +3 1302 185 1293 +3 1217 909 960 +3 237 265 1302 +3 337 1337 1336 +3 547 541 205 +3 1313 691 705 +3 286 352 337 +3 1327 1332 370 +3 798 846 901 +3 337 1338 1337 +3 361 225 611 +3 451 439 484 +3 677 1092 1240 +3 225 1313 109 +3 264 228 277 +3 352 1334 337 +3 785 783 1340 +3 309 1313 705 +3 674 683 682 +3 663 623 602 +3 622 663 710 +3 995 1591 806 +3 450 206 1047 +3 1283 99 215 +3 611 563 593 +3 475 246 664 +3 1294 1264 636 +3 442 1337 1347 +3 465 527 227 +3 659 630 636 +3 1454 1499 1527 +3 602 674 663 +3 107 1293 185 +3 1829 1851 1850 +3 109 690 660 +3 1313 690 109 +3 563 611 1264 +3 362 101 1237 +3 337 1334 1338 +3 206 450 517 +3 1347 471 503 +3 167 554 1323 +3 1468 1472 1489 +3 1091 1141 702 +3 471 563 1294 +3 715 1167 821 +3 1264 611 225 +3 1332 337 1336 +3 1004 1887 399 +3 586 1283 215 +3 1023 1252 1400 +3 1179 1370 1383 +3 1313 726 1324 +3 471 636 630 +3 352 420 1334 +3 1047 39 450 +3 99 1283 586 +3 237 1302 107 +3 14 446 330 +3 1313 361 645 +3 530 525 784 +3 1338 553 1348 +3 1337 1338 1348 +3 370 1332 442 +3 1332 1336 442 +3 715 821 414 +3 237 283 1322 +3 362 1237 282 +3 187 1303 237 +3 257 27 131 +3 801 430 1335 +3 1287 36 213 +3 554 167 338 +3 335 1331 1330 +3 311 335 1330 +3 1331 439 451 +3 506 420 421 +3 1330 1331 451 +3 663 674 1284 +3 674 385 1284 +3 184 107 185 +3 1322 283 314 +3 14 27 446 +3 439 520 484 +3 265 185 1302 +3 420 553 1338 +3 554 338 916 +3 1400 1298 1023 +3 553 563 471 +3 1324 726 1313 +3 1285 14 446 +3 434 435 451 +3 338 167 175 +3 277 311 1319 +3 546 783 244 +3 801 1335 1274 +3 338 1297 916 +3 1294 563 1264 +3 420 1338 1334 +3 783 606 244 +3 1337 1348 1347 +3 1313 1324 690 +3 311 312 335 +3 220 1285 1310 +3 1284 385 1278 +3 1128 1023 1252 +3 1285 220 14 +3 622 623 663 +3 109 660 636 +3 524 446 330 +3 1589 1402 1403 +3 338 220 1310 +3 674 682 385 +3 284 337 1332 +3 107 1302 1293 +3 663 1284 710 +3 1888 517 1067 +3 350 1251 69 +3 435 434 415 +3 435 415 428 +3 1297 338 1310 +3 682 307 385 +3 1306 1305 1280 +3 1276 1306 1280 +3 313 367 312 +3 1327 284 1332 +3 1336 1337 442 +3 1264 225 109 +3 180 169 1229 +3 475 801 246 +3 352 267 353 +3 1403 1404 1589 +3 1285 1292 1310 +3 307 682 748 +3 682 718 748 +3 1277 1276 1275 +3 1158 237 107 +3 1067 517 511 +3 1271 1282 1270 +3 489 125 443 +3 446 14 330 +3 586 1282 1271 +3 1292 1285 446 +3 446 330 1287 +3 443 125 489 +3 108 116 735 +3 813 100 99 +3 1276 1307 1306 +3 1483 1260 1317 +3 1272 586 1271 +3 1348 553 471 +3 1287 213 219 +3 330 446 1287 +3 443 231 489 +3 330 36 1287 +3 86 35 955 +3 450 785 1560 +3 1312 1304 1260 +3 1329 435 428 +3 1289 1276 1277 +3 1289 1290 1276 +3 1158 187 237 +3 1311 556 1248 +3 558 226 743 +3 1323 554 993 +3 1292 446 524 +3 273 443 489 +3 1290 1289 1277 +3 1290 1307 1276 +3 215 264 1296 +3 1304 1286 1273 +3 1260 1304 1273 +3 1311 1248 1273 +3 1286 1311 1273 +3 246 801 250 +3 1322 314 278 +3 1019 1572 1036 +3 307 748 608 +3 182 307 608 +3 1321 443 273 +3 471 1294 636 +3 215 1296 586 +3 1322 278 265 +3 542 701 1129 +3 1101 1284 1278 +3 39 783 785 +3 1304 400 1286 +3 400 1311 1286 +3 1339 244 1200 +3 1324 309 726 +3 674 602 683 +3 265 237 1322 +3 1653 1487 1470 +3 446 36 330 +3 1321 22 443 +3 1277 1267 1290 +3 1290 1308 1307 +3 1313 309 1324 +3 467 68 97 +3 1312 1279 1304 +3 367 1331 335 +3 524 330 1287 +3 1347 1348 471 +3 1308 1315 1307 +3 1365 1529 1108 +3 531 530 784 +3 123 531 784 +3 1041 556 1311 +3 666 1041 1311 +3 312 367 335 +3 1705 1707 1711 +3 690 1324 725 +3 1331 367 439 +3 710 1284 1101 +3 608 748 758 +3 170 699 169 +3 1308 1309 1315 +3 1368 1362 1371 +3 306 1200 244 +3 1279 1299 1304 +3 1304 1299 400 +3 666 1311 400 +3 251 283 237 +3 1853 1866 1871 +3 1312 963 1279 +3 1101 1279 963 +3 1314 1321 273 +3 699 1229 169 +3 1268 1290 1267 +3 1290 1309 1308 +3 386 1320 1315 +3 1320 386 1315 +3 314 1327 370 +3 542 156 701 +3 475 1486 1684 +3 1297 1185 528 +3 1031 916 60 +3 1297 1310 1185 +3 158 1321 1314 +3 1379 1305 1306 +3 553 420 506 +3 291 1342 782 +3 608 758 1041 +3 666 608 1041 +3 1635 1452 1453 +3 60 916 528 +3 916 1297 528 +3 1314 1287 158 +3 601 471 630 +3 1291 1290 1268 +3 1316 1315 1309 +3 1316 1320 1315 +3 400 608 666 +3 1292 524 1185 +3 187 189 188 +3 68 467 1318 +3 187 188 1303 +3 1281 1291 1268 +3 1290 1291 1309 +3 1320 1316 386 +3 1278 385 1299 +3 1279 1278 1299 +3 385 307 400 +3 1299 385 400 +3 307 182 400 +3 400 182 608 +3 801 208 430 +3 243 547 205 +3 1292 1185 1310 +3 1324 726 725 +3 699 170 105 +3 105 68 1318 +3 699 105 1318 +3 1316 1325 386 +3 1325 1187 386 +3 1096 1587 1114 +3 515 208 801 +3 1287 1314 524 +3 1287 219 158 +3 1541 1546 1545 +3 1540 1541 1545 +3 1361 519 1520 +3 570 1129 701 +3 785 1340 884 +3 176 903 127 +3 1232 1226 1233 +3 570 1366 1129 +3 1571 884 1560 +3 378 533 1432 +3 210 570 533 +3 378 210 533 +3 570 210 1366 +3 210 290 1129 +3 1366 210 1129 +3 1129 290 542 +3 290 909 542 +3 290 960 909 +3 124 697 290 +3 210 124 290 +3 697 457 290 +3 290 457 960 +3 960 457 1217 +3 378 124 210 +3 1477 1420 1006 +3 591 378 597 +3 1165 591 597 +3 378 591 124 +3 124 457 697 +3 124 1394 457 +3 1653 1470 1452 +3 1377 1378 1388 +3 1199 1048 1231 +3 124 350 1394 +3 1394 350 457 +3 1048 1165 1231 +3 1048 671 591 +3 1165 1048 591 +3 671 350 124 +3 591 671 124 +3 350 69 457 +3 98 467 97 +3 827 155 1880 +3 1544 1545 1157 +3 176 173 18 +3 1273 700 1260 +3 1369 1048 1199 +3 671 588 350 +3 1545 1546 1204 +3 1546 640 1204 +3 607 247 231 +3 1278 1279 1101 +3 154 1081 1513 +3 1777 1770 1785 +3 1295 499 143 +3 1850 1849 1834 +3 1199 732 1369 +3 732 1183 1369 +3 926 1048 1369 +3 1183 926 1369 +3 926 635 671 +3 1048 926 671 +3 671 635 588 +3 635 1251 350 +3 588 635 350 +3 1449 1472 1468 +3 1490 1489 1472 +3 1425 1074 1389 +3 1198 494 1065 +3 758 718 759 +3 1449 1468 1472 +3 1260 700 1317 +3 732 926 1183 +3 1449 1451 1468 +3 1468 1451 1472 +3 1490 538 1489 +3 272 406 952 +3 1183 926 732 +3 926 1183 635 +3 1426 1435 1434 +3 1449 1450 1451 +3 1421 1422 1426 +3 1426 1422 1435 +3 1469 1486 1490 +3 1472 1469 1490 +3 1183 455 635 +3 1435 1450 1449 +3 1434 1435 1449 +3 1451 1469 1472 +3 475 538 1490 +3 1486 475 1490 +3 475 664 538 +3 250 289 538 +3 664 250 538 +3 306 260 575 +3 455 1183 732 +3 1169 455 732 +3 455 469 635 +3 469 1256 1251 +3 635 469 1251 +3 1204 1389 1074 +3 1319 1381 1382 +3 1364 1370 1085 +3 1329 1396 1381 +3 1330 435 1329 +3 1444 1451 1450 +3 1435 1444 1450 +3 1520 519 1120 +3 1505 1120 1326 +3 640 883 1425 +3 1357 1364 1355 +3 1357 1370 1364 +3 1357 1211 1370 +3 1225 1245 1448 +3 1408 1423 1422 +3 1411 1408 1422 +3 1423 1436 1435 +3 1422 1423 1435 +3 1436 1437 1444 +3 1435 1436 1444 +3 1437 1452 1451 +3 1444 1437 1451 +3 1452 1470 1469 +3 1451 1452 1469 +3 1469 1470 1486 +3 1486 1674 1487 +3 1413 980 1420 +3 1470 1487 1486 +3 1537 154 1105 +3 1393 1054 1169 +3 668 455 1169 +3 1054 668 1169 +3 668 735 469 +3 455 668 469 +3 1455 1445 1446 +3 1185 524 298 +3 459 552 38 +3 1731 1739 1722 +3 1376 1211 1357 +3 1409 1408 1398 +3 1427 1437 1436 +3 1423 1427 1436 +3 1403 1388 1404 +3 84 1367 1363 +3 596 556 1041 +3 714 1185 298 +3 1004 1054 1393 +3 1210 574 399 +3 1320 1307 1315 +3 1635 1453 1438 +3 1359 1357 1356 +3 1358 1359 1356 +3 1377 1376 1357 +3 1359 1377 1357 +3 1388 1211 1376 +3 1377 1388 1376 +3 1402 1409 1398 +3 1388 1398 1211 +3 1402 1408 1409 +3 1402 1424 1423 +3 1408 1402 1423 +3 1423 1424 1427 +3 1424 1438 1437 +3 1427 1424 1437 +3 1438 1453 1452 +3 1437 1438 1452 +3 1197 828 650 +3 1111 1511 1510 +3 1300 1319 1382 +3 1010 808 539 +3 208 1198 430 +3 1200 459 38 +3 1539 1540 1544 +3 1507 1094 1405 +3 1094 976 1405 +3 475 515 801 +3 533 378 1432 +3 744 491 668 +3 1054 744 668 +3 491 101 735 +3 668 491 735 +3 384 459 1200 +3 306 384 1200 +3 1512 1197 650 +3 7 71 103 +3 1466 1295 1074 +3 1325 1328 1187 +3 1329 428 1328 +3 1507 1405 1397 +3 1120 897 1184 +3 1388 1403 1402 +3 1110 859 576 +3 1431 1110 576 +3 399 1212 744 +3 1363 800 153 +3 575 384 306 +3 1178 1100 1512 +3 1425 883 1074 +3 733 84 1363 +3 55 54 87 +3 1296 1300 1282 +3 1378 1377 1359 +3 1004 715 414 +3 1462 1479 1478 +3 1479 1492 222 +3 1478 1479 222 +3 1492 30 179 +3 222 1492 179 +3 30 351 179 +3 1544 1157 154 +3 429 297 709 +3 1110 1483 1475 +3 86 306 391 +3 700 159 1498 +3 1317 700 1498 +3 205 467 540 +3 828 518 650 +3 1672 1462 1473 +3 399 574 1212 +3 574 634 744 +3 1212 574 744 +3 634 1237 491 +3 744 634 491 +3 1367 714 1363 +3 375 606 112 +3 375 82 606 +3 82 86 391 +3 1457 1181 640 +3 1546 1457 640 +3 1479 1493 1492 +3 1493 258 30 +3 1492 1493 30 +3 429 1248 297 +3 39 375 199 +3 336 181 149 +3 1439 1511 1111 +3 1684 515 475 +3 1483 1317 1475 +3 1317 1498 1475 +3 429 342 159 +3 700 429 159 +3 1510 1052 1179 +3 1181 1130 883 +3 640 1181 883 +3 1405 980 1413 +3 1140 964 1181 +3 1509 1439 1517 +3 1479 1480 1493 +3 403 351 30 +3 258 403 30 +3 390 389 1121 +3 1400 897 1298 +3 604 272 709 +3 1460 749 603 +3 403 523 351 +3 1249 329 642 +3 1390 1466 883 +3 1382 1381 1270 +3 1363 714 800 +3 342 429 709 +3 540 375 1047 +3 297 604 709 +3 1467 1461 1201 +3 1130 1390 883 +3 1374 1454 1515 +3 1462 1480 1479 +3 1136 523 403 +3 964 1441 1181 +3 1059 1522 1128 +3 1003 221 500 +3 976 1003 500 +3 1100 1197 1512 +3 390 25 43 +3 1407 1416 1415 +3 1406 1407 1415 +3 1455 1446 1458 +3 1446 1463 1462 +3 1458 1446 1462 +3 1463 1464 1462 +3 1464 1481 1480 +3 1462 1464 1480 +3 1481 1494 1493 +3 1480 1481 1493 +3 1494 994 258 +3 1493 1494 258 +3 456 403 258 +3 994 456 258 +3 621 1136 403 +3 456 621 403 +3 621 523 1136 +3 621 745 523 +3 141 473 523 +3 745 141 523 +3 1516 1524 1476 +3 1128 245 1471 +3 1155 321 634 +3 574 1155 634 +3 599 681 202 +3 298 524 273 +3 681 236 202 +3 1368 1371 1527 +3 1263 1254 1540 +3 1502 1524 1476 +3 1476 1046 1115 +3 321 454 1237 +3 634 321 1237 +3 541 467 205 +3 467 97 540 +3 98 97 467 +3 236 84 733 +3 1446 1464 1463 +3 621 141 745 +3 1516 1476 1503 +3 1467 1201 828 +3 174 639 142 +3 202 236 733 +3 1686 1703 1702 +3 1494 1495 994 +3 1495 1123 994 +3 516 141 621 +3 1037 1059 1128 +3 590 467 541 +3 701 156 1164 +3 1398 1408 1383 +3 493 1301 322 +3 639 321 1155 +3 1429 1446 1445 +3 1481 1495 1494 +3 1220 456 994 +3 1123 1220 994 +3 954 322 495 +3 1373 493 322 +3 987 321 639 +3 260 306 86 +3 1370 1384 1383 +3 1280 1305 1362 +3 1305 1371 1362 +3 1305 1379 1371 +3 1392 1386 1371 +3 1392 1395 1386 +3 1395 1407 1386 +3 1395 1417 1416 +3 1407 1395 1416 +3 1703 1694 1704 +3 1428 1430 1429 +3 1430 1442 1446 +3 1429 1430 1446 +3 1442 1459 1464 +3 1446 1442 1464 +3 1459 1482 1481 +3 1464 1459 1481 +3 1482 1488 1481 +3 1488 1496 1495 +3 1481 1488 1495 +3 1496 468 1123 +3 1495 1496 1123 +3 637 1220 1123 +3 468 637 1123 +3 637 456 1220 +3 637 1203 456 +3 161 621 456 +3 1203 161 456 +3 75 516 621 +3 161 75 621 +3 1687 1694 1703 +3 75 34 495 +3 954 495 34 +3 34 32 322 +3 954 34 322 +3 32 47 322 +3 47 1373 322 +3 47 493 1373 +3 47 183 493 +3 183 1055 493 +3 1055 1012 174 +3 1012 639 174 +3 959 987 639 +3 1012 959 639 +3 959 321 987 +3 959 346 321 +3 346 454 321 +3 1341 1229 541 +3 1229 699 541 +3 699 1318 590 +3 541 699 590 +3 637 161 1203 +3 1615 1635 1438 +3 1300 1296 1319 +3 1379 1395 1392 +3 1615 1438 1424 +3 1613 1615 1424 +3 75 1007 34 +3 1229 1341 336 +3 700 1273 1248 +3 1392 1395 1379 +3 70 161 637 +3 183 1012 1055 +3 1673 1184 1504 +3 1159 1504 1184 +3 1266 346 959 +3 1604 1613 1603 +3 1459 1442 1456 +3 1075 1502 1503 +3 221 1100 500 +3 677 1084 1092 +3 1230 1224 677 +3 1537 1544 154 +3 1105 1097 1088 +3 1121 1105 1088 +3 1146 1346 767 +3 1087 293 176 +3 1100 1467 1197 +3 1154 585 1209 +3 962 1032 1065 +3 1765 1759 1024 +3 1408 1501 1383 +3 1516 1502 1524 +3 143 499 519 +3 1147 1142 1126 +3 1074 1094 680 +3 1399 897 1400 +3 1087 176 366 +3 235 1087 653 +3 897 1399 1184 +3 1149 1135 1061 +3 1685 1687 1360 +3 1379 1392 1371 +3 1810 259 242 +3 293 448 176 +3 1521 1537 1105 +3 235 653 677 +3 1100 1361 1467 +3 373 1538 1537 +3 1514 585 1059 +3 1059 585 341 +3 462 796 1023 +3 964 1106 1419 +3 1505 1326 1201 +3 711 63 1514 +3 964 1140 1092 +3 340 780 868 +3 796 1037 1128 +3 1037 127 796 +3 127 1037 796 +3 18 903 127 +3 1059 341 1522 +3 1508 366 1098 +3 1410 176 127 +3 293 1087 235 +3 1117 187 1876 +3 366 1508 1106 +3 1399 1159 1184 +3 1399 1400 1252 +3 1170 1099 1142 +3 1410 1037 1098 +3 903 18 127 +3 1383 1384 1211 +3 1522 341 1154 +3 1120 1505 1201 +3 1087 366 653 +3 1060 1135 1485 +3 964 1419 1130 +3 293 235 1224 +3 1244 1092 1457 +3 1545 1204 1157 +3 1252 1471 1399 +3 366 964 653 +3 1525 1126 1142 +3 160 360 1173 +3 366 176 1098 +3 499 1401 1298 +3 1539 1544 1537 +3 677 653 1084 +3 176 18 903 +3 199 375 112 +3 1520 1120 1461 +3 644 1539 1538 +3 80 1535 216 +3 176 1410 1098 +3 1140 1181 1457 +3 462 1098 796 +3 1541 1457 1546 +3 1361 1520 1467 +3 1467 1520 1461 +3 373 644 1538 +3 1106 462 781 +3 1591 834 67 +3 390 594 360 +3 160 390 360 +3 1254 1247 1541 +3 1075 1503 980 +3 903 711 127 +3 181 263 276 +3 444 1083 291 +3 1538 1539 1537 +3 1419 1106 1390 +3 519 1361 143 +3 216 1535 1521 +3 1094 976 680 +3 1441 1130 1181 +3 1006 672 1385 +3 1060 1485 1149 +3 43 389 390 +3 181 809 263 +3 1120 1201 1461 +3 1130 1419 1390 +3 1081 680 1507 +3 1231 1165 597 +3 809 1083 263 +3 964 366 1106 +3 809 181 336 +3 809 291 1083 +3 496 1506 1046 +3 650 496 1046 +3 390 1121 594 +3 1295 1003 1074 +3 1832 1845 1831 +3 1204 640 1389 +3 341 585 1154 +3 1081 1507 1082 +3 511 1884 569 +3 1197 1467 828 +3 1341 809 336 +3 1094 680 976 +3 1540 1545 1544 +3 1398 1388 1402 +3 594 1121 1088 +3 1233 1099 1189 +3 1502 1516 1503 +3 1506 1344 1115 +3 291 1137 1342 +3 1097 1513 1082 +3 1412 812 123 +3 498 831 812 +3 1412 498 812 +3 883 1466 1074 +3 1006 1420 962 +3 1399 1471 1159 +3 962 672 1006 +3 1118 1091 702 +3 1686 1687 1703 +3 653 964 1084 +3 1735 1756 1747 +3 1 470 1536 +3 127 1059 1037 +3 1046 1506 1115 +3 1288 1006 1385 +3 1044 1288 1385 +3 1147 1171 1170 +3 1170 1142 1147 +3 1137 291 1346 +3 808 1008 1011 +3 1159 245 1504 +3 672 962 1065 +3 1390 1106 781 +3 1390 1156 1466 +3 1466 1156 1295 +3 1015 1016 1021 +3 644 1540 1539 +3 1137 1533 1542 +3 1088 1089 1288 +3 594 1088 1288 +3 1721 1746 1729 +3 360 594 1044 +3 594 1288 1044 +3 245 1108 1504 +3 216 1521 389 +3 1370 1211 1384 +3 1089 1006 1288 +3 461 587 513 +3 513 587 1351 +3 1351 1414 1412 +3 1091 498 1412 +3 1414 1091 1412 +3 1115 1530 538 +3 1092 1140 1457 +3 1509 1090 1534 +3 1137 1146 1533 +3 1349 461 1547 +3 767 1 1064 +3 1529 1365 1195 +3 964 1130 1441 +3 1351 587 1414 +3 1115 538 289 +3 1405 1413 1397 +3 1513 1081 1082 +3 980 514 1420 +3 680 1094 1507 +3 461 1414 587 +3 1106 1508 462 +3 1052 1370 1179 +3 1457 1541 1247 +3 587 1414 461 +3 1420 514 962 +3 545 1201 1326 +3 63 585 1514 +3 1105 154 1097 +3 1064 1533 1146 +3 1414 587 461 +3 973 1414 587 +3 1414 973 587 +3 250 1476 289 +3 1157 1204 680 +3 1398 1383 1211 +3 1507 1397 1082 +3 1543 1349 1533 +3 1536 1543 1533 +3 1543 410 461 +3 1349 1543 461 +3 973 1141 1414 +3 1141 1091 1414 +3 1476 1115 289 +3 1084 964 1092 +3 373 1537 1521 +3 1521 1105 1121 +3 1476 250 1274 +3 1149 1525 1142 +3 1254 1541 1540 +3 1064 1 1533 +3 1082 1397 1089 +3 1088 1082 1089 +3 80 373 1521 +3 1535 80 1521 +3 1341 541 547 +3 39 199 783 +3 1536 1533 1 +3 973 1414 461 +3 410 973 461 +3 1397 1413 1420 +3 1089 1397 1420 +3 1111 1383 1501 +3 1503 1476 1274 +3 606 82 391 +3 780 38 868 +3 1135 1104 1061 +3 711 1514 1059 +3 1365 1194 1195 +3 1111 1510 1179 +3 1485 1135 1149 +3 796 1128 1252 +3 1228 293 1224 +3 644 1263 1540 +3 390 160 25 +3 63 33 104 +3 391 306 606 +3 306 244 606 +3 1097 154 1513 +3 494 672 1065 +3 1543 618 410 +3 537 973 410 +3 618 537 410 +3 1141 1352 702 +3 972 992 991 +3 1509 1534 1439 +3 1088 1097 1082 +3 1401 1023 1298 +3 53 569 1884 +3 1536 470 1543 +3 1410 127 1037 +3 1227 293 1228 +3 1128 1522 245 +3 1522 1154 245 +3 1850 1870 1849 +3 796 1252 1023 +3 173 83 33 +3 1543 470 618 +3 1242 69 1251 +3 1515 1527 1371 +3 1162 1135 1060 +3 1188 537 618 +3 1109 973 537 +3 1109 1141 973 +3 1109 1352 1141 +3 545 518 828 +3 1201 545 828 +3 1244 1457 1247 +3 1386 1515 1371 +3 1454 1518 1499 +3 1089 1477 1006 +3 462 1401 781 +3 1401 499 781 +3 63 433 585 +3 1886 1066 304 +3 1204 1074 680 +3 127 711 1059 +3 640 1425 1389 +3 1188 618 537 +3 499 1298 519 +3 1226 1060 1099 +3 1233 1226 1099 +3 1515 1454 1386 +3 1298 897 1120 +3 519 1298 1120 +3 1188 537 618 +3 1524 1502 1046 +3 1178 980 550 +3 1178 1512 1075 +3 1515 1386 1391 +3 1386 1454 1515 +3 1149 1142 1099 +3 1060 1149 1099 +3 1508 1098 462 +3 1401 462 1023 +3 1178 1075 980 +3 552 868 459 +3 1061 1525 1149 +3 1098 1037 796 +3 1524 1502 1476 +3 1476 1524 1046 +3 1828 1829 1834 +3 1089 1420 1477 +3 1352 672 494 +3 1502 1512 650 +3 1252 1128 1471 +3 1531 1518 1454 +3 1374 1531 1454 +3 1512 1502 1075 +3 1173 618 470 +3 160 1173 470 +3 1173 1188 618 +3 1173 360 1188 +3 1188 360 537 +3 360 1044 537 +3 537 1044 1109 +3 1044 1385 1109 +3 672 1352 1109 +3 1385 672 1109 +3 511 517 1560 +3 1390 781 1156 +3 223 222 178 +3 831 123 812 +3 141 1333 1618 +3 1812 1829 1828 +3 115 1005 1210 +3 1636 1637 1656 +3 1515 1454 1527 +3 1682 538 1530 +3 1637 1657 1656 +3 1072 1525 1061 +3 1071 1072 1061 +3 548 1350 142 +3 1072 1592 1525 +3 1487 1674 1684 +3 67 937 1010 +3 1754 1784 1762 +3 1462 1478 1473 +3 1137 1542 778 +3 1614 1637 1616 +3 1036 1572 1049 +3 1049 1584 1072 +3 1072 1584 1592 +3 1126 1525 1592 +3 1584 1126 1592 +3 199 606 783 +3 1499 1362 1368 +3 1680 1678 1679 +3 1049 1586 1584 +3 799 178 1558 +3 702 494 1198 +3 1499 1368 1527 +3 868 552 459 +3 1486 1487 1674 +3 1572 1584 1586 +3 1049 1572 1586 +3 779 702 1198 +3 1799 1812 1795 +3 1618 1333 141 +3 1662 1676 1675 +3 805 1350 548 +3 1026 1570 1572 +3 1572 1073 1584 +3 1073 1078 1584 +3 1112 1126 1584 +3 1078 1112 1584 +3 1617 1620 1416 +3 1676 560 483 +3 1675 1676 483 +3 1659 1678 1663 +3 1572 1570 1073 +3 1054 1004 399 +3 827 1880 1870 +3 1404 1590 1604 +3 1374 1515 1391 +3 1345 472 498 +3 802 1555 1519 +3 1655 1675 1674 +3 1416 1614 1415 +3 1407 1406 1386 +3 482 560 1676 +3 1678 1677 1663 +3 1146 1137 1346 +3 1026 1562 1570 +3 1562 1570 1572 +3 1570 1562 1572 +3 1677 482 1676 +3 547 1556 798 +3 701 734 570 +3 1589 1404 1603 +3 1641 1638 1634 +3 1639 1641 1634 +3 1657 1658 1662 +3 260 261 575 +3 156 701 1164 +3 1639 1634 1621 +3 1638 1658 1657 +3 1637 1638 1657 +3 1519 1118 702 +3 1415 1605 1590 +3 779 1519 702 +3 1406 1415 1590 +3 1663 1677 1662 +3 1641 1659 1638 +3 1658 1663 1662 +3 1635 1636 1654 +3 1562 1073 1570 +3 1687 1686 1439 +3 1047 375 39 +3 1621 1620 1617 +3 738 1519 779 +3 483 515 1674 +3 473 1333 531 +3 481 473 531 +3 1155 142 639 +3 1662 1675 1655 +3 1656 1662 1655 +3 1038 1045 1073 +3 1562 1038 1073 +3 222 179 178 +3 1428 1621 1617 +3 1675 483 1674 +3 1159 1471 245 +3 1365 245 1154 +3 1209 1365 1154 +3 245 1365 1108 +3 1637 1636 1616 +3 1416 1620 1614 +3 1638 1637 1614 +3 884 1340 1884 +3 1049 1043 1036 +3 1605 1616 1607 +3 1620 1638 1614 +3 1455 1428 1445 +3 1622 1529 1195 +3 1177 1622 1195 +3 550 976 500 +3 1587 1523 1119 +3 1428 1455 1639 +3 1096 1079 1080 +3 553 536 563 +3 1404 1604 1603 +3 1153 1622 1177 +3 641 638 661 +3 1013 1020 1038 +3 1051 1114 1096 +3 1080 1051 1096 +3 1114 1587 1096 +3 1556 243 798 +3 1532 1623 1622 +3 1153 1532 1622 +3 1642 1529 1622 +3 1623 1642 1622 +3 1642 1504 1108 +3 1529 1642 1108 +3 1378 1404 1388 +3 178 179 1559 +3 1455 1473 1641 +3 1653 1655 1674 +3 805 530 531 +3 33 18 173 +3 1605 1604 1590 +3 179 1259 1559 +3 1051 1587 1114 +3 1118 1345 1091 +3 851 523 532 +3 715 732 1167 +3 1636 1655 1654 +3 1621 1634 1620 +3 1093 1280 1362 +3 1051 1114 1587 +3 1604 1605 1607 +3 1022 1563 1051 +3 1030 1022 1051 +3 1563 1573 1114 +3 1051 1563 1114 +3 1573 1585 1587 +3 1114 1573 1587 +3 1585 1599 1523 +3 1587 1585 1523 +3 1599 1608 1532 +3 1523 1599 1532 +3 1608 1624 1623 +3 1532 1608 1623 +3 1643 1642 1623 +3 1624 1643 1623 +3 1643 1673 1504 +3 1642 1643 1504 +3 551 547 798 +3 1014 1016 1015 +3 1306 1307 1379 +3 805 548 525 +3 1656 1655 1636 +3 1333 805 531 +3 1683 1184 1673 +3 1608 1625 1624 +3 1644 1643 1624 +3 1625 1644 1624 +3 1664 1673 1643 +3 1644 1664 1643 +3 1023 1128 1252 +3 585 854 1209 +3 1351 1412 123 +3 322 1301 495 +3 799 844 474 +3 516 495 141 +3 1555 1345 1118 +3 495 1618 141 +3 1047 205 540 +3 141 1333 473 +3 1433 1426 1434 +3 597 378 1063 +3 1528 1564 1563 +3 1022 1528 1563 +3 1564 1574 1573 +3 1563 1564 1573 +3 1573 1574 1585 +3 1574 1576 1585 +3 1585 1576 1599 +3 1576 1600 1599 +3 1600 1609 1608 +3 1599 1600 1608 +3 1609 1626 1625 +3 1608 1609 1625 +3 1645 1644 1625 +3 1626 1645 1625 +3 1645 1665 1664 +3 1644 1645 1664 +3 1665 1673 1664 +3 1665 1326 1683 +3 1673 1665 1683 +3 1326 1184 1683 +3 1590 1404 1378 +3 1614 1616 1605 +3 1415 1614 1605 +3 495 1333 1618 +3 738 802 1519 +3 1473 1659 1641 +3 1301 805 1333 +3 205 206 517 +3 1405 976 550 +3 495 1301 1333 +3 1593 1601 1600 +3 1576 1593 1600 +3 1600 1601 1609 +3 716 208 515 +3 500 1178 550 +3 1259 523 851 +3 1559 1259 851 +3 831 481 812 +3 513 1349 1547 +3 1616 1636 1635 +3 222 223 1680 +3 1301 493 1350 +3 805 1301 1350 +3 1548 1552 1528 +3 1552 1565 1564 +3 1528 1552 1564 +3 1564 1565 1574 +3 1574 1565 1576 +3 1565 1577 1576 +3 1594 1593 1576 +3 1577 1594 1576 +3 1602 1601 1593 +3 1594 1602 1593 +3 1602 1610 1609 +3 1601 1602 1609 +3 1610 1627 1626 +3 1609 1610 1626 +3 1627 1646 1645 +3 1626 1627 1645 +3 1666 1665 1645 +3 1646 1666 1645 +3 1666 545 1326 +3 1665 1666 1326 +3 483 716 515 +3 547 243 1556 +3 221 1003 1295 +3 143 221 1295 +3 809 1341 547 +3 551 809 547 +3 782 1342 778 +3 731 782 778 +3 1458 1660 1455 +3 752 309 753 +3 1424 1402 1603 +3 1519 1555 1118 +3 1549 1553 1552 +3 1552 1553 1565 +3 1775 1799 1784 +3 1406 1590 1378 +3 493 174 142 +3 1350 493 142 +3 1656 1657 1662 +3 291 809 551 +3 731 778 513 +3 523 473 481 +3 1365 1209 1194 +3 1346 291 551 +3 784 731 513 +3 1550 1554 1553 +3 1549 1550 1553 +3 1566 1565 1553 +3 1554 1566 1553 +3 1566 1578 1577 +3 1565 1566 1577 +3 1578 1579 1577 +3 1577 1579 1594 +3 1579 1595 1602 +3 1594 1579 1602 +3 1595 1611 1610 +3 1602 1595 1610 +3 1628 1627 1610 +3 1611 1628 1610 +3 1628 1647 1646 +3 1627 1628 1646 +3 1647 1667 1666 +3 1646 1647 1666 +3 1667 1668 1666 +3 518 545 1666 +3 1668 518 1666 +3 1074 1003 1094 +3 1607 1616 1615 +3 123 784 513 +3 1499 1527 1454 +3 1604 1607 1615 +3 1566 1579 1578 +3 1628 1648 1647 +3 1648 1668 1667 +3 1647 1648 1667 +3 1681 518 1668 +3 778 1533 1349 +3 513 778 1349 +3 496 650 497 +3 1615 1616 1635 +3 1429 1445 1428 +3 718 758 748 +3 1678 1680 474 +3 1680 223 474 +3 778 1542 1533 +3 206 205 1047 +3 1478 222 1680 +3 1679 1678 1659 +3 857 831 498 +3 1386 1406 1391 +3 1360 1090 1554 +3 1550 1360 1554 +3 1567 1566 1554 +3 1090 1567 1554 +3 1567 1580 1579 +3 1566 1567 1579 +3 1580 1596 1595 +3 1579 1580 1595 +3 1596 1606 1611 +3 1595 1596 1611 +3 1606 1629 1628 +3 1611 1606 1628 +3 1629 1630 1628 +3 1630 1649 1648 +3 1628 1630 1648 +3 1649 1526 1668 +3 1648 1649 1668 +3 496 1681 1668 +3 1526 496 1668 +3 497 518 1681 +3 496 497 1681 +3 518 497 650 +3 1005 574 1210 +3 123 513 1351 +3 1877 1876 1865 +3 1558 1555 802 +3 799 1558 802 +3 472 857 498 +3 1455 1641 1639 +3 1634 1638 1620 +3 482 802 738 +3 1248 429 700 +3 1654 1655 1653 +3 1606 1630 1629 +3 1473 1478 1680 +3 1362 1499 1557 +3 1558 857 472 +3 1120 1184 1326 +3 857 851 831 +3 844 802 482 +3 474 844 482 +3 1555 1558 472 +3 844 799 802 +3 1342 1137 778 +3 1649 1669 1526 +3 1669 1506 496 +3 1526 1669 496 +3 1421 1411 1422 +3 851 532 481 +3 780 340 383 +3 1008 780 383 +3 1568 1567 1090 +3 1509 1568 1090 +3 1568 1581 1580 +3 1567 1568 1580 +3 1597 1596 1580 +3 1581 1597 1580 +3 1596 1597 1606 +3 1597 1612 1606 +3 1612 1631 1630 +3 1606 1612 1630 +3 1631 1650 1649 +3 1630 1631 1649 +3 1649 1650 1669 +3 1678 482 1677 +3 560 738 716 +3 1345 498 1091 +3 500 1100 1178 +3 1678 474 482 +3 1009 878 53 +3 1841 1855 1851 +3 1454 1527 1499 +3 827 107 1864 +3 495 516 75 +3 208 716 1198 +3 1428 1639 1621 +3 1771 1280 1093 +3 842 1008 808 +3 378 533 1063 +3 1582 1581 1568 +3 1659 1663 1658 +3 1865 1864 1851 +3 1503 514 980 +3 1583 1582 1568 +3 1588 1581 1582 +3 1583 1588 1582 +3 1598 1597 1581 +3 1588 1598 1581 +3 1433 1612 1597 +3 1433 1619 1612 +3 1632 1631 1612 +3 1619 1632 1612 +3 1651 1650 1631 +3 1632 1651 1631 +3 1651 1670 1669 +3 1650 1651 1669 +3 1670 1344 1506 +3 1669 1670 1506 +3 1660 1473 1455 +3 1353 842 808 +3 995 1353 808 +3 1353 1008 842 +3 1353 842 1008 +3 38 780 1008 +3 842 38 1008 +3 1517 1569 1568 +3 1509 1517 1568 +3 1569 1583 1568 +3 716 779 1198 +3 716 738 779 +3 560 482 738 +3 1360 1687 1534 +3 1353 38 842 +3 1111 1179 1383 +3 1598 1433 1597 +3 868 38 552 +3 1045 1078 1073 +3 1124 406 272 +3 1433 1632 1619 +3 474 223 1122 +3 1033 1765 1024 +3 1378 1359 1374 +3 1269 1270 1281 +3 291 782 444 +3 483 560 716 +3 1462 1473 1660 +3 499 1156 781 +3 1214 542 909 +3 1555 472 1345 +3 178 1559 1558 +3 851 481 831 +3 1269 1281 1268 +3 824 1856 1846 +3 53 1884 1009 +3 1439 1111 1517 +3 1111 1501 1569 +3 1517 1111 1569 +3 1411 1583 1569 +3 1411 1588 1583 +3 1411 1421 1588 +3 1421 1598 1588 +3 1421 1426 1598 +3 1426 1433 1598 +3 1434 1433 1598 +3 1433 1434 1598 +3 1633 1632 1433 +3 1434 1633 1433 +3 1633 1640 1632 +3 1652 1651 1632 +3 1640 1652 1632 +3 1671 1670 1651 +3 1652 1671 1651 +3 1671 1682 1344 +3 1670 1671 1344 +3 1274 1032 514 +3 1503 1274 514 +3 532 523 481 +3 1319 264 277 +3 546 806 1591 +3 546 995 806 +3 546 746 995 +3 1339 1353 995 +3 746 1339 995 +3 1339 1200 38 +3 1353 1339 38 +3 223 178 799 +3 1530 1344 1682 +3 1449 1633 1434 +3 399 744 1054 +3 831 812 123 +3 1122 223 799 +3 243 205 517 +3 1473 1679 1659 +3 1024 1034 1033 +3 1591 1340 546 +3 1501 1411 1569 +3 1156 499 1295 +3 1449 1640 1633 +3 1209 953 854 +3 1458 1462 1660 +3 1224 235 677 +3 1523 1153 1119 +3 1085 1355 1364 +3 1468 1652 1640 +3 1449 1468 1640 +3 1489 1671 1652 +3 1468 1489 1652 +3 1671 1489 1682 +3 1489 538 1682 +3 1836 1857 1844 +3 803 189 1117 +3 1685 1696 1695 +3 1785 1791 1801 +3 1808 1801 1791 +3 1791 1792 1815 +3 1751 1750 1735 +3 1843 1862 1842 +3 1210 444 115 +3 1800 1816 1799 +3 1803 1821 1802 +3 995 834 1591 +3 758 759 1182 +3 1836 1858 1857 +3 810 168 1857 +3 1858 810 1857 +3 1740 1757 1764 +3 873 872 865 +3 1808 1815 1801 +3 1815 1819 1801 +3 804 803 1117 +3 1741 1757 1740 +3 1793 865 1788 +3 1812 1816 1830 +3 804 1117 1878 +3 1561 1725 1726 +3 1857 168 824 +3 1757 1779 1764 +3 1764 1779 1786 +3 78 815 1868 +3 1822 1821 1803 +3 1717 1737 1721 +3 1844 1857 1846 +3 1725 1724 1013 +3 824 168 79 +3 1713 1718 1696 +3 1715 1714 1699 +3 1722 1730 1711 +3 1843 1842 1825 +3 1819 1843 1825 +3 1857 824 1846 +3 1821 1827 1826 +3 1809 1821 1826 +3 1815 1843 1819 +3 1821 1809 1802 +3 1548 1689 1549 +3 1733 1561 1562 +3 1733 1725 1561 +3 604 599 406 +3 406 599 202 +3 1822 1836 1821 +3 815 1881 1867 +3 1852 1855 1830 +3 1699 1706 1016 +3 54 55 845 +3 158 219 521 +3 1742 1741 1725 +3 1733 1742 1725 +3 1763 1777 1785 +3 1033 1788 1765 +3 1769 1776 1749 +3 1749 1755 1734 +3 1756 1769 1747 +3 1732 1751 1735 +3 1707 1714 1722 +3 1738 1754 1737 +3 1876 1864 1865 +3 1722 1714 1731 +3 865 1810 1787 +3 1788 865 1787 +3 1715 1732 1714 +3 1742 1757 1741 +3 1804 1803 1786 +3 1779 1804 1786 +3 1770 1791 1785 +3 1806 1810 242 +3 1722 1747 1730 +3 1705 1706 1707 +3 1804 1805 1803 +3 1835 1843 1815 +3 1346 551 1883 +3 1802 1809 1792 +3 1837 1836 1822 +3 1017 1837 1822 +3 1878 1117 1877 +3 1711 1730 1713 +3 1690 1706 1705 +3 1837 136 1836 +3 1830 1855 1841 +3 1868 1867 1856 +3 599 20 681 +3 136 1858 1836 +3 1791 1815 1808 +3 1024 1759 1018 +3 1730 1734 1713 +3 1785 1790 1756 +3 20 596 681 +3 1831 1830 1817 +3 1797 1802 1792 +3 1864 1876 827 +3 1881 815 814 +3 1787 1806 1781 +3 1116 916 1031 +3 814 1882 1872 +3 1711 1713 1697 +3 1110 1475 859 +3 1690 1705 1698 +3 1785 1801 1790 +3 1765 1787 1759 +3 596 20 556 +3 596 1180 681 +3 681 1180 1031 +3 1882 804 1872 +3 1698 1711 1697 +3 1759 1781 1758 +3 900 1883 979 +3 1696 1717 1704 +3 1026 1561 1562 +3 1769 1796 1776 +3 1013 1723 1715 +3 1734 1717 1718 +3 1832 1831 1813 +3 1180 316 1116 +3 1031 1180 1116 +3 1561 1742 1733 +3 1882 814 804 +3 1820 1835 1815 +3 1442 988 1447 +3 710 577 622 +3 1810 1806 1787 +3 596 1752 1180 +3 1180 316 1116 +3 316 1180 1116 +3 316 993 916 +3 1116 316 916 +3 1759 1787 1781 +3 1776 1800 1775 +3 1732 1735 1714 +3 1886 409 821 +3 1703 1729 1710 +3 1693 1685 1550 +3 1016 1706 1690 +3 1693 1689 1697 +3 1842 1862 1861 +3 1694 1695 1704 +3 1687 1685 1694 +3 988 382 1447 +3 1447 382 576 +3 747 797 120 +3 1776 1775 1755 +3 1199 1167 732 +3 1041 758 596 +3 596 758 1752 +3 1876 1158 107 +3 1685 1695 1694 +3 1858 818 810 +3 382 1431 576 +3 1693 1697 1696 +3 243 1888 798 +3 1117 189 187 +3 1823 1822 1803 +3 1805 1823 1803 +3 1442 1430 1443 +3 818 1858 136 +3 356 477 424 +3 382 1575 1431 +3 916 993 554 +3 467 590 1318 +3 1685 1693 1696 +3 1845 1866 1853 +3 1431 1575 1110 +3 1182 1752 758 +3 1182 1180 1752 +3 1182 825 1180 +3 1180 825 316 +3 1017 136 1837 +3 1430 1440 1443 +3 1440 908 988 +3 988 908 382 +3 1575 549 1110 +3 549 1150 963 +3 1110 549 963 +3 1825 1813 1814 +3 1796 1817 1800 +3 825 633 316 +3 1699 1714 1706 +3 633 993 316 +3 633 1323 993 +3 1430 1869 1440 +3 908 1575 382 +3 1101 963 1150 +3 1734 1738 1717 +3 1819 1825 1814 +3 1801 1819 1814 +3 633 825 1182 +3 1440 1869 908 +3 908 996 1575 +3 759 787 786 +3 1809 1826 1820 +3 1869 1145 908 +3 549 1101 1150 +3 1723 1732 1715 +3 1428 1847 1430 +3 1145 56 908 +3 908 56 996 +3 1144 1101 549 +3 1809 1820 1815 +3 1793 1788 1033 +3 797 633 1182 +3 759 797 1182 +3 1735 1750 1756 +3 996 56 1575 +3 56 549 1575 +3 1750 1763 1756 +3 1847 1848 1430 +3 1848 1859 1430 +3 1430 1859 1869 +3 56 1168 549 +3 1690 1689 1548 +3 1758 1779 1757 +3 786 797 759 +3 747 633 797 +3 633 747 1323 +3 1323 747 167 +3 865 866 873 +3 1778 1791 1770 +3 78 1868 824 +3 1805 1804 1779 +3 1428 1848 1847 +3 56 1053 1168 +3 1168 1131 1144 +3 549 1168 1144 +3 1877 1117 1876 +3 1707 1722 1711 +3 1731 1735 1739 +3 830 1823 1805 +3 830 1822 1823 +3 1859 1873 1145 +3 1869 1859 1145 +3 1131 1101 1144 +3 1814 1813 1790 +3 830 1017 1822 +3 207 562 561 +3 1772 1771 1093 +3 1557 1772 1093 +3 866 1033 1042 +3 1617 1417 1428 +3 1428 1417 1848 +3 1734 1755 1738 +3 1821 1836 1844 +3 1801 1814 1790 +3 895 797 786 +3 787 759 760 +3 1873 961 1145 +3 1145 961 56 +3 1053 1131 1168 +3 1833 1101 1131 +3 1833 710 1101 +3 1853 1871 1852 +3 1689 1690 1698 +3 1772 1275 1771 +3 1848 1417 1859 +3 242 830 1806 +3 1713 1734 1718 +3 1800 1799 1775 +3 1695 1696 1704 +3 1518 1557 1499 +3 1794 1275 1772 +3 1809 1815 1792 +3 1417 1418 1859 +3 961 951 56 +3 56 951 1053 +3 1833 1131 710 +3 1019 1742 1561 +3 1758 1757 1742 +3 1780 1779 1758 +3 1748 1557 1518 +3 1794 1277 1275 +3 1873 1879 961 +3 951 559 1053 +3 1053 559 1131 +3 1876 107 827 +3 1747 1769 1749 +3 1267 1277 1794 +3 1418 1863 1859 +3 1859 1863 1873 +3 1868 815 1867 +3 1766 1772 1557 +3 1748 1766 1557 +3 866 1793 1033 +3 559 1196 1131 +3 1196 1343 1131 +3 1131 1343 710 +3 1766 1794 1772 +3 180 1229 336 +3 415 1879 1873 +3 415 961 1879 +3 1343 577 710 +3 866 865 1793 +3 1362 1557 1093 +3 1789 1794 1766 +3 1873 1863 415 +3 1456 1442 1447 +3 1018 1742 1019 +3 1743 1748 1518 +3 1531 1743 1518 +3 1789 1267 1794 +3 434 961 415 +3 434 951 961 +3 1781 1779 1780 +3 1811 1267 1789 +3 1781 1805 1779 +3 404 522 438 +3 434 736 951 +3 736 559 951 +3 1743 1766 1748 +3 559 736 1196 +3 1722 1739 1747 +3 715 1393 1169 +3 1534 1090 1360 +3 1269 1271 1270 +3 604 1124 272 +3 1358 1531 1500 +3 1824 1268 1267 +3 1811 1824 1267 +3 155 813 1880 +3 736 480 1196 +3 1196 480 1343 +3 1343 480 577 +3 1790 1813 1796 +3 1782 1789 1766 +3 1760 1782 1766 +3 1803 1802 1797 +3 1777 1770 1785 +3 1719 1743 1531 +3 1760 1766 1743 +3 1838 1269 1268 +3 1824 1838 1268 +3 1750 1770 1777 +3 480 578 577 +3 1689 1693 1550 +3 1763 1750 1777 +3 1770 1777 1785 +3 1691 1358 1356 +3 1719 1531 1358 +3 736 1062 480 +3 1813 1831 1817 +3 1549 1689 1550 +3 1756 1763 1785 +3 1691 1356 1355 +3 1085 1691 1355 +3 1761 1760 1743 +3 1744 1761 1743 +3 1807 1811 1789 +3 1838 1271 1269 +3 78 824 79 +3 1876 187 1158 +3 1821 1844 1827 +3 1708 1719 1358 +3 1744 1743 1719 +3 1782 1807 1789 +3 1807 1824 1811 +3 1860 1271 1838 +3 736 451 1062 +3 1756 1790 1769 +3 1725 1740 1724 +3 1698 1705 1711 +3 1510 1691 1085 +3 1708 1358 1691 +3 1761 1782 1760 +3 1818 1824 1807 +3 1860 1272 1271 +3 1718 1717 1696 +3 451 207 480 +3 1062 451 480 +3 1817 1830 1816 +3 1796 1800 1776 +3 1510 1085 1052 +3 1818 1838 1824 +3 1875 1272 1860 +3 1813 1817 1796 +3 1720 1719 1708 +3 1736 1744 1719 +3 1839 1838 1818 +3 96 807 486 +3 1018 1758 1742 +3 1842 1861 1845 +3 1881 814 1872 +3 1781 1780 1758 +3 1867 1881 1872 +3 1692 1691 1510 +3 1720 1736 1719 +3 1783 1782 1761 +3 1839 1860 1838 +3 1875 1661 586 +3 1272 1875 586 +3 1806 1805 1781 +3 1712 1716 1708 +3 1727 1720 1708 +3 1716 1727 1708 +3 1854 1860 1839 +3 1143 1661 1875 +3 1661 99 586 +3 1143 99 1661 +3 1031 60 236 +3 1709 1708 1691 +3 1692 1709 1691 +3 1709 1712 1708 +3 1709 1716 1712 +3 1709 1727 1716 +3 1727 1728 1720 +3 1786 1803 1797 +3 747 120 167 +3 484 207 451 +3 1736 1753 1744 +3 1753 1761 1744 +3 1753 1783 1761 +3 1874 1860 1854 +3 1874 1875 1860 +3 1792 1791 1778 +3 824 1868 1856 +3 1817 1816 1800 +3 520 207 484 +3 1692 1700 1709 +3 1728 1727 1709 +3 1728 1745 1727 +3 1511 1688 1510 +3 1688 1692 1510 +3 1874 1143 1875 +3 1013 1715 1699 +3 1749 1776 1755 +3 1759 1758 1018 +3 1688 1701 1700 +3 1692 1688 1700 +3 1773 1783 1753 +3 1849 1854 1839 +3 813 1143 1874 +3 813 99 1143 +3 1842 1845 1832 +3 1710 1709 1700 +3 1701 1710 1700 +3 1872 804 1878 +3 1825 1842 1832 +3 1853 1852 1830 +3 1730 1749 1734 +3 1689 1698 1697 +3 1805 1806 830 +3 1710 1728 1709 +3 1840 1849 1839 +3 1831 1853 1830 +3 1724 1723 1013 +3 1729 1728 1710 +3 1849 1874 1854 +3 1849 1870 1874 +3 1741 1740 1725 +3 1755 1775 1754 +3 1731 1714 1735 +3 1747 1749 1730 +3 1706 1714 1707 +3 1729 1745 1728 +3 1767 1773 1753 +3 1880 813 1874 +3 1870 1880 1874 +3 865 858 1810 +3 1810 858 259 +3 1861 1866 1845 +3 1790 1796 1769 +3 1755 1754 1738 +3 1739 1735 1747 +3 1686 1688 1511 +3 1439 1686 1511 +3 1746 1745 1729 +3 1774 1773 1767 +3 1834 1849 1840 +3 1016 1690 1548 +3 1788 1787 1765 +3 1551 1016 1548 +3 1686 1702 1701 +3 1688 1686 1701 +3 1703 1710 1701 +3 1702 1703 1701 +3 1795 1798 1773 +3 1825 1832 1813 +3 1697 1713 1696 +3 1762 1745 1746 +3 1762 1768 1745 +3 1795 1773 1774 diff --git a/modules/viz/samples/histo3D.cpp b/modules/viz/samples/histo3D.cpp new file mode 100644 index 000000000..a3ef0aacb --- /dev/null +++ b/modules/viz/samples/histo3D.cpp @@ -0,0 +1,188 @@ +#include +#include +#include +#include + +using namespace std; +using namespace cv; + +#ifdef HAVE_OPENCV_VIZ + +#include + +const String keys = +"{Aide h usage ? help | | print this message }" +"{@arg1 | | Full path to color imag (3 channels)}" +; + + +struct Histo3DData { + Mat histogram; + int seuil; + double threshold; + Ptr fen3D; + int nbWidget; + bool status; + double maxH; + int code; +}; + +void DrawHistogram3D(Histo3DData &); +void AddSlidebar(String sliderName, String windowName, int sliderMin, int sliderMax, int valeurDefaut, int *sliderVal, void(*f)(int, void *), void *r); +void UpdateThreshold(int , void * r); +void KeyboardViz3d(const viz::KeyboardEvent &w, void *t); + + +void DrawHistogram3D(Histo3DData &h) +{ + //! [get_cube_size] + int planSize = (int)h.histogram.step1(0); + int cols = (int)h.histogram.step1(1); + int rows = (int)planSize / cols; + int plans = (int)h.histogram.total() / planSize; + h.fen3D->removeAllWidgets(); + h.nbWidget=0; + if (h.nbWidget==0) + h.fen3D->showWidget("Axis", viz::WCoordinateSystem(10)); + //! [get_cube_size] + //! [get_cube_values] + for (int k = 0; k < plans; k++) + { + for (int i = 0; i < rows; i++) + { + for (int j = 0; j < cols; j++) + { + double x = h.histogram.at(k, i, j); + if (x >= h.threshold) + { + double r=std::max(x/h.maxH,0.1); + viz::WCube s(Point3d(k - r / 2, i - r / 2, j - r / 2), Point3d(k + r / 2, i + r / 2, j + r / 2), false, viz::Color(j / double(plans) * 255, i / double(rows) * 255, k / double(cols) * 255)); + h.fen3D->showWidget(format("I3d%d", h.nbWidget++), s); + } + } + } + } + //! [get_cube_values] + h.status = false; +} +//! [viz_keyboard_callback] +void KeyboardViz3d(const viz::KeyboardEvent &w, void *t) +{ + Histo3DData *x=(Histo3DData *)t; + if (w.action) + cout << "you pressed "<< w.symbol<< " in viz window "<fen3D->getWindowName()<<"\n"; + x->code= w.code; + switch (w.code) { + case '/': + x->status=true; + x->threshold *= 0.9; + break; + case '*': + x->status = true; + x->threshold *= 1.1; + break; + } + if (x->status) + { + cout << x->threshold << "\n"; + DrawHistogram3D(*x); + } +} +//! [viz_keyboard_callback] + + +void AddSlidebar(String sliderName, String windowName, int sliderMin, int sliderMax, int defaultSlider, int *sliderVal, void(*f)(int, void *), void *r) +{ + createTrackbar(sliderName, windowName, sliderVal, 1, f, r); + setTrackbarMin(sliderName, windowName, sliderMin); + setTrackbarMax(sliderName, windowName, sliderMax); + setTrackbarPos(sliderName, windowName, defaultSlider); +} + + +void UpdateThreshold(int , void * r) +{ + Histo3DData *h = (Histo3DData *)r; + h->status=true; + h->threshold = h->seuil/1000000.0; + cout<<"Widget : "<nbWidget<<","<< h->threshold<<"\n"; +} + +int main (int argc,char **argv) +{ + //! [command_line_parser] + CommandLineParser parser(argc, argv, keys); + + if (parser.has("help")) + { + parser.printMessage(); + return 0; + } + String nomFic = parser.get(0); + Mat img; + if (nomFic.length() != 0) + { + img = imread(nomFic, IMREAD_COLOR); + if (img.empty()) + { + cout << "Image does not exist!"; + return 0; + } + } + //! [command_line_parser] + //! [synthetic_image] + else + { + img = Mat(512,512,CV_8UC3); + parser.printMessage(); + RNG r; + r.fill(img(Rect(0, 0, 256, 256)), RNG::NORMAL, Vec3b(60, 40, 50), Vec3b(10, 5, 20)); + r.fill(img(Rect(256, 0, 256, 256)), RNG::NORMAL, Vec3b(160, 10, 50), Vec3b(20, 5, 10)); + r.fill(img(Rect(0, 256, 256, 256)), RNG::NORMAL, Vec3b(90, 100, 50), Vec3b(10, 20, 20)); + r.fill(img(Rect(256, 256, 256, 256)), RNG::NORMAL, Vec3b(100, 10, 150), Vec3b(10, 5, 40)); + } + //! [synthetic_image] + //! [calchist_for_histo3d] + Histo3DData h; + h.status=true; + h.seuil=90; + h.threshold= h.seuil/1000000.0; + float hRange[] = { 0, 256 }; + const float* etendu[] = { hRange, hRange,hRange }; + int hBins = 32; + int histSize[] = { hBins, hBins , hBins }; + int channel[] = { 2, 1,0 }; + calcHist(&img, 1, channel, Mat(), h.histogram, 3, histSize, etendu, true, false); + normalize(h.histogram, h.histogram, 100.0/(img.total()), 0, NORM_MINMAX, -1, Mat()); + minMaxIdx(h.histogram,NULL,&h.maxH,NULL,NULL); + //! [calchist_for_histo3d] + //! [slide_bar_for_thresh] + namedWindow("Image"); + imshow("Image",img); + AddSlidebar("threshold","Image",0,100,h.seuil,&h.seuil, UpdateThreshold,&h); + waitKey(30); + //! [slide_bar_for_thresh] + //! [manage_viz_imshow_window] + h.fen3D = makePtr("3D Histogram"); + h.nbWidget=0; + h.fen3D->registerKeyboardCallback(KeyboardViz3d,&h); + DrawHistogram3D(h); + while (h.code!=27) + { + h.fen3D->spinOnce(1); + if (h.status) + DrawHistogram3D(h); + if (h.code!=27) + h.code= waitKey(30); + } + //! [manage_viz_imshow_window] + return 0; +} +#else + +int main(int argc, char **argv) +{ +cout << " you need VIZ module\n"; +return 0; +} +#endif diff --git a/modules/viz/samples/launching_viz.cpp b/modules/viz/samples/launching_viz.cpp new file mode 100644 index 000000000..630971066 --- /dev/null +++ b/modules/viz/samples/launching_viz.cpp @@ -0,0 +1,66 @@ +/** + * @file launching_viz.cpp + * @brief Launching visualization window + * @author Ozan Cagri Tonkal + */ + +#include +#include + +using namespace cv; +using namespace std; + +/** + * @function help + * @brief Display instructions to use this tutorial program + */ +static void help() +{ + cout + << "--------------------------------------------------------------------------" << endl + << "This program shows how to launch a 3D visualization window. You can stop event loop to continue executing. " + << "You can access the same window via its name. You can run event loop for a given period of time. " << endl + << "Usage:" << endl + << "./launching_viz" << endl + << endl; +} + +/** + * @function main + */ +int main() +{ + help(); + /// Create a window + viz::Viz3d myWindow("Viz Demo"); + + /// Start event loop + myWindow.spin(); + + /// Event loop is over when pressed q, Q, e, E + cout << "First event loop is over" << endl; + + /// Access window via its name + viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo"); + + /// Start event loop + sameWindow.spin(); + + /// Event loop is over when pressed q, Q, e, E + cout << "Second event loop is over" << endl; + + /// Event loop is over when pressed q, Q, e, E + /// Start event loop once for 1 millisecond + sameWindow.spinOnce(1, true); + while(!sameWindow.wasStopped()) + { + /// Interact with window + + /// Event loop for 1 millisecond + sameWindow.spinOnce(1, true); + } + + /// Once more event loop is stopped + cout << "Last event loop is over" << endl; + return 0; +} diff --git a/modules/viz/samples/transformations.cpp b/modules/viz/samples/transformations.cpp new file mode 100644 index 000000000..84a19854c --- /dev/null +++ b/modules/viz/samples/transformations.cpp @@ -0,0 +1,112 @@ +/** + * @file transformations.cpp + * @brief Visualizing cloud in different positions, coordinate frames, camera frustums + * @author Ozan Cagri Tonkal + */ + +#include +#include +#include + +using namespace cv; +using namespace std; + +/** + * @function help + * @brief Display instructions to use this tutorial program + */ +static void help() +{ + cout + << "--------------------------------------------------------------------------" << endl + << "This program shows how to use makeTransformToGlobal() to compute required pose," + << "how to use makeCameraPose and Viz3d::setViewerPose. You can observe the scene " + << "from camera point of view (C) or global point of view (G)" << endl + << "Usage:" << endl + << "./transformations [ G | C ]" << endl + << endl; +} + +/** + * @function cvcloud_load + * @brief load bunny.ply + */ +static Mat cvcloud_load() +{ + Mat cloud(1, 1889, CV_32FC3); + ifstream ifs("bunny.ply"); + + string str; + for(size_t i = 0; i < 12; ++i) + getline(ifs, str); + + Point3f* data = cloud.ptr(); + float dummy1, dummy2; + for(size_t i = 0; i < 1889; ++i) + ifs >> data[i].x >> data[i].y >> data[i].z >> dummy1 >> dummy2; + + cloud *= 5.0f; + return cloud; +} + +/** + * @function main + */ +int main(int argn, char **argv) +{ + help(); + + if (argn < 2) + { + cout << "Missing arguments." << endl; + return 1; + } + + bool camera_pov = (argv[1][0] == 'C'); + + /// Create a window + viz::Viz3d myWindow("Coordinate Frame"); + + /// Add coordinate axes + myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem()); + + /// Let's assume camera has the following properties + Vec3f cam_pos(3.0f,3.0f,3.0f), cam_focal_point(3.0f,3.0f,2.0f), cam_y_dir(-1.0f,0.0f,0.0f); + + /// We can get the pose of the cam using makeCameraPose + Affine3f cam_pose = viz::makeCameraPose(cam_pos, cam_focal_point, cam_y_dir); + + /// We can get the transformation matrix from camera coordinate system to global using + /// - makeTransformToGlobal. We need the axes of the camera + Affine3f transform = viz::makeTransformToGlobal(Vec3f(0.0f,-1.0f,0.0f), Vec3f(-1.0f,0.0f,0.0f), Vec3f(0.0f,0.0f,-1.0f), cam_pos); + + /// Create a cloud widget. + Mat bunny_cloud = cvcloud_load(); + viz::WCloud cloud_widget(bunny_cloud, viz::Color::green()); + + /// Pose of the widget in camera frame + Affine3f cloud_pose = Affine3f().translate(Vec3f(0.0f,0.0f,3.0f)); + /// Pose of the widget in global frame + Affine3f cloud_pose_global = transform * cloud_pose; + + /// Visualize camera frame + if (!camera_pov) + { + viz::WCameraPosition cpw(0.5); // Coordinate axes + viz::WCameraPosition cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum + myWindow.showWidget("CPW", cpw, cam_pose); + myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose); + } + + /// Visualize widget + myWindow.showWidget("bunny", cloud_widget, cloud_pose_global); + + /// Set the viewer pose to that of camera + if (camera_pov) + myWindow.setViewerPose(cam_pose); + + /// Start event loop. + myWindow.spin(); + + return 0; +} diff --git a/modules/viz/samples/widget_pose.cpp b/modules/viz/samples/widget_pose.cpp new file mode 100644 index 000000000..5de82bd38 --- /dev/null +++ b/modules/viz/samples/widget_pose.cpp @@ -0,0 +1,79 @@ +/** + * @file widget_pose.cpp + * @brief Setting pose of a widget + * @author Ozan Cagri Tonkal + */ + +#include +#include +#include + +using namespace cv; +using namespace std; + +/** + * @function help + * @brief Display instructions to use this tutorial program + */ +static void help() +{ + cout + << "--------------------------------------------------------------------------" << endl + << "This program shows how to visualize a cube rotated around (1,1,1) and shifted " + << "using Rodrigues vector." << endl + << "Usage:" << endl + << "./widget_pose" << endl + << endl; +} + +/** + * @function main + */ +int main() +{ + help(); + + /// Create a window + viz::Viz3d myWindow("Coordinate Frame"); + + /// Add coordinate axes + myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem()); + + /// Add line to represent (1,1,1) axis + viz::WLine axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f)); + axis.setRenderingProperty(viz::LINE_WIDTH, 4.0); + myWindow.showWidget("Line Widget", axis); + + /// Construct a cube widget + viz::WCube cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue()); + cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0); + myWindow.showWidget("Cube Widget", cube_widget); + + /// Rodrigues vector + Mat rot_vec = Mat::zeros(1,3,CV_32F); + float translation_phase = 0.0, translation = 0.0; + while(!myWindow.wasStopped()) + { + /* Rotation using rodrigues */ + /// Rotate around (1,1,1) + rot_vec.at(0,0) += (float)CV_PI * 0.01f; + rot_vec.at(0,1) += (float)CV_PI * 0.01f; + rot_vec.at(0,2) += (float)CV_PI * 0.01f; + + /// Shift on (1,1,1) + translation_phase += (float)CV_PI * 0.01f; + translation = sin(translation_phase); + + Mat rot_mat; + Rodrigues(rot_vec, rot_mat); + + /// Construct pose + Affine3f pose(rot_mat, Vec3f(translation, translation, translation)); + + myWindow.setWidgetPose("Cube Widget", pose); + + myWindow.spinOnce(1, true); + } + + return 0; +} diff --git a/modules/viz/tutorials/creating_widgets/creating_widgets.markdown b/modules/viz/tutorials/creating_widgets/creating_widgets.markdown new file mode 100644 index 000000000..934046f84 --- /dev/null +++ b/modules/viz/tutorials/creating_widgets/creating_widgets.markdown @@ -0,0 +1,55 @@ +Creating Widgets {#tutorial_creating_widgets} +================ + +Goal +---- + +In this tutorial you will learn how to + +- Create your own widgets using WidgetAccessor and VTK. +- Show your widget in the visualization window. + +Code +---- + +You can download the code from [here ](https://github.com/opencv/opencv_contrib/tree/master/modules/viz/samples/creating_widgets.cpp). +@include viz/samples/creating_widgets.cpp + +Explanation +----------- + +Here is the general structure of the program: + +- Extend Widget3D class to create a new 3D widget. + @code{.cpp} + class WTriangle : public viz::Widget3D + { + public: + WTriangle(const Point3f &pt1, const Point3f &pt2, const Point3f &pt3, const viz::Color & color = viz::Color::white()); + }; + @endcode +- Assign a VTK actor to the widget. + @code{.cpp} + // Store this actor in the widget in order that visualizer can access it + viz::WidgetAccessor::setProp(*this, actor); + @endcode +- Set color of the widget. + @code{.cpp} + // Set the color of the widget. This has to be called after WidgetAccessor. + setColor(color); + @endcode +- Construct a triangle widget and display it in the window. + @code{.cpp} + /// Create a triangle widget + WTriangle tw(Point3f(0.0,0.0,0.0), Point3f(1.0,1.0,1.0), Point3f(0.0,1.0,0.0), viz::Color::red()); + + /// Show widget in the visualizer window + myWindow.showWidget("TRIANGLE", tw); + @endcode + +Results +------- + +Here is the result of the program. + +![](images/red_triangle.png) diff --git a/modules/viz/tutorials/creating_widgets/images/red_triangle.png b/modules/viz/tutorials/creating_widgets/images/red_triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..7da6ad0602a974e00695f9c0aa698c5dc474b2be GIT binary patch literal 10489 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 Y2MLWci`MvfP>e97x{g}mO`E6x2cG-67XSbN literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/histo3D/histo3D.markdown b/modules/viz/tutorials/histo3D/histo3D.markdown new file mode 100644 index 000000000..3946c5ea8 --- /dev/null +++ b/modules/viz/tutorials/histo3D/histo3D.markdown @@ -0,0 +1,51 @@ +Creating a 3D histogram {#tutorial_histo3D} +================ + +Goal +---- + +In this tutorial you will learn how to + +- Create your own callback keyboard function for viz window. +- Show your 3D histogram in a viz window. + +Code +---- + +You can download the code from [here ](https://github.com/opencv/opencv_contrib/tree/master/modules/viz/samples/histo3D.cpp). +@include viz/samples/histo3D.cpp + +Explanation +----------- + +Here is the general structure of the program: + +- You can give full path to an image in command line + @snippet histo3D.cpp command_line_parser + + or without path, a synthetic image is generated with pixel values are a gaussian distribution @ref cv::RNG::fill center(60+/-10,40+/-5,50+/-20) in first quadrant, + (160+/-20,10+/-5,50+/-10) in second quadrant, (90+/-10,100+/-20,50+/-20) in third quadrant, (100+/-10,10+/-5,150+/-40) in last quadrant. + @snippet histo3D.cpp synthetic_image + Image tridimensional histogram is calculated using opencv @ref cv::calcHist and @ref cv::normalize between 0 and 100. + @snippet histo3D.cpp calchist_for_histo3d + channel are 2, 1 and 0 to synchronise color with Viz axis color in objetc cv::viz::WCoordinateSystem. + + A slidebar is inserted in image window. Init slidebar value is 90, it means that only histogram cell greater than 9/100000.0 (23 pixels for an 512X512 pixels) will be display. + @snippet histo3D.cpp slide_bar_for_thresh + We are ready to open a viz window with a callback function to capture keyboard event in viz window. Using @ref cv::viz::Viz3d::spinOnce enable keyboard event to be capture in @ref cv::imshow window too. + @snippet histo3D.cpp manage_viz_imshow_window + The function DrawHistogram3D processes histogram Mat to display it in a Viz window. Number of plan, row and column in [three dimensional Mat](@ref CVMat_Details ) can be found using this code : + @snippet histo3D.cpp get_cube_size + To get histogram value at a specific location we use @ref cv::Mat::at(int i0,int i1, int i2) method with three arguments k, i and j where k is plane number, i row number and j column number. + @snippet histo3D.cpp get_cube_values + +- Callback function + Principle are as mouse callback function. Key code pressed is in field code of class @ref cv::viz::KeyboardEvent. + @snippet histo3D.cpp viz_keyboard_callback + +Results +------- + +Here is the result of the program with no argument and threshold equal to 50. + +![](images/histo50.png) diff --git a/modules/viz/tutorials/histo3D/images/histo50.png b/modules/viz/tutorials/histo3D/images/histo50.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b4416ceecf98da47d7bb3678fb1c4664915705 GIT binary patch literal 859428 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�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

{8MW6+xLV+Vys7QM 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

DTdl`I??S_Eqcm??~e(0Kz_z> zmp4I+Oc8Mf80Y4`lliSdGWt10gB#tL{)|ROg``Mg0h^Mpa|XS$cT4Cb`>zCi9dLrNY=%M+$`WjHo|@4;o*H+MmA-y*wsBKsR`Cp-Jx8? z=h{i^cE=AC0^5v2-lPFrskYk~kUNXZo~x5LsNdi3@l$V``%j!mb|aXS+rP4Thn_7x z+kdQ4yY)9*=;O}s;in@U>Q5yF#8XC9Z_=IyzU7AF`%LRu?Y*#;^pblQ#Jh+)(@Dhi z^4u%}joa2F+;;V69kT(i-xBvRVO%|Pn!@`?x+#sdE=^9@*&Y;5>@Dlx3?vYy<81#* z1w-NHh~ma}$h+-nPd6`73eql~M|Oyn9QuG-&q<_j>FSCaBq2(iOKJO3jILObKcuz4H5 zn*TRp^e+du%4gHbLrk%0J^UKwcz$sOyqGB9HvM-rLYwRqy)8I6&rSen0mDi%y~}uG zJzG1L#qnAi{eY(C{~3dVIGCy@f2WgX)7HtKqN{dQ{{i8G4|V|r%RlnQw2u{f%aS!!SjmSOwtIN=xc#U$l@XxlwLO&gAEs3}g=IYix39CIKI*0Q1h6(ww;hL>f|) zHYi3RH(Lhe>G;~-KiIKylCWT0i$}E{I!91rekdfDNteV~LZ%SqQ$Lmj`;Z7ZI3XV& z$aI|3IMMQ&R`=pEW96=$knbb}Yi0phyC&lFaJfwma8kGwfr4(F7rKtaqsaJvPY6I; zp0<@WYAVMvsd3s$`y8OgVvfp>NjW*y%SrZ@`7QE(_{$_!naU+Ui>K1S6*926$AVi$ zp70=H7&D%Qt#}+8q7>HtJtu2&I-zqCJ76qIJ=aNNZXv9Mtf+;Su1Zo!A2fu|RusqP zFH2y&vtT_~j-JeF1rBNNk3T|$uj*ME;IxPS5!ErMbaD&7{%;i<)EpN|^wC-eS#?ZS z{?nMI%H^&#y%H)GGW;Xy9@g(#HaOliVwM1Z+De)BelV?2klbOvJy4q7?#q{tw(|q8 z#Dvki5l=clwX7%S3t00;r&dN>FLA{i+Rfyjmd$ZxTCuSf+PlZ%Z?ZmJDn^HuD))b8 zEN4l^1F!(w3Z`qo+P&e-HI&6vKdK!F2&*D&iAMEQ$|!(`_wFeP-}#xIs`@=|u=&=R z92l8A2a-#n#l3y%#JbI1*scMrt>cvA)%6y9K#{av2S7zJG$1q4dV)D|!OH?|RGQ%H zKWC@ON2$2JF0js-pQBc|_oDM8e=hUe>x1b)eSFd}TJQOyPBNm@FYZ^%#wSjH^mY72 zYR6^~$%Z1cdzkaqXAGNzigP@T9v97w_OJB*q4~!c8X!OUc;jDO{<-%{R<6O6b*ll- zEw)}u84WERiG>mSXGg3b=wTx1iY^>1`AoVoJA?mr26J5!p2pVXzs3QPv`M-l0(Lqz z9kB#~J87KZE@pSAr13viIz|tr(Z(K|;(|}PiPt9L7vyw10pLqmn-UI+UoW_1_?0N_ zUqP0~sWIUPIc&-zPS2dRKZ-mrbmg6dB|Q+Bi9jJse-|?ZS};xiX_pN8}sSRfo-5B^$gdt1dLQq}+9`J9EFHGzgfxCTQm$>%69%0*o%m4=p_i|?8Cg3Z* zduGgos-LOBQh`_r6qT^Ng;oASSMH_gx9Mx8ns9GpcrwXyJaMz?+#`0?#Q7hJyW2uZ z6!+aW(GsV3N*0P7xLu*e;C$2RKa3$p&+Qr><<@NrHQY!Wrm#*$D>(1=ElF_@rEm5T$7n{o_-KIM!iYyy zPaD^u8@`B3t#E7Z?`|;y=fKRu@sj2sC94w*rCaG~B%0`!bKO*#697kt30Kjl@bd`2S#^}mA?{X0Dc{y)=G zg39A0QPPfm!@Q9D)$GIc^5nmQpm-=6nnN%0rVlxk!-Jw!|GgIt9`KDW6=;f}6%I~Z z;TM=*<{QYD^M7p^dD^ditaz`}-<1784b_JfI-jYiW;j z*UtqBMc}TB^QfDN4`%2ly?nFpmjaYuK<=);G`$19l~%w<=g zzw`-ocAPS1N($so;Pk1#6;^F)={C%iP0f^$F<@mMu|ITx3H4zf^_ZCcrh)SztI1_P z{en2N>ckkG^pTT1v&vdyglf@(?_Whixb#V6Jzj^*tkEytj$T*al>Cm-pW5AjT<20e z7V4EX%vaOl#){gug1q%~H^e>-<|<71Vf{CP1P5E1+bkSpv6JlFxK-+)MW^Y-!kE8H zx$0T>*I3)l$~5zZ)`EXMNE(udz>}%8*jNswaO=->569onVU0?si%S&`qq5h92p9;vA{`> z%x2E9WY}D?H{S`5L2LNFEqyU8p)w6V{G+lvz;%}cr6a+zWN8-12k( zsr%XgcK8)e5@m}D6D&aKRva^A2%OVAqi9L;bhVTN(%V?YUt_3!!J&z>_KCb%a^{w3 zZjC4sYonO6F_)Y)N9LA-YS%BP^?|4HeCkg~S}l@ms^8A_$)cn1|6}T{0@_f!b?a}n zi&CIKafc$ogS)mxgS!?e?(V)SNN@wPbcL-{b0Wy~`! zgyzhI5)>7QwcthV^}e182OA=s&vvPS^IT@zS*mxI6jnqN&lx!+TeH%R+^4p+FGteS z!;2=odsTmL(639H|_@D`S@dE@as z@-Ca82Nc{-;?wU~m2fZ3y*)qi&;}o|T?{RBIItl7lx2UfKGTOFWsr)exy8d-{})}r z`T0?D5lkf@<7u1Nr67ltB3KJNkm#&^dKZgM7LX5#b3;q!tVTPjtWj_Q3?z{ z1{gKKdY(w6wE1 ze4Yy}pJGB^{-;N6$v0^WjnmjKUiH1GVlO;5A0-4ogNO_!kI-jvB^NL=-v4vFqtrn+ zt{c#+rgUG0UliS3R3xJmg60Cl313vg)DE7E3^I{0b!iEOrKazD>J&WHd8iy{73WGQ z_;M7ki|$m@^{dcY$uQ~G0w7;YWL{O*DcP){dk2s59?a3$7+ST>| z!CKNImhQ87jQGFl?eKfrw7G38!^d9c-W4@fz5b{I!EWM;GKuvdzTIW$u`=KHdkq}@ zWO@6l;|FDxSO3z1TBF(`GRcb=^Bin{w725eU%Z&ChmRi*mqnV(C5*%z^Mhig=L_zN z+U^LvPBlkOmXfUGFpXm2_r}&P`kCvDX#2(VrYDuH=-%hb{}&AO1p7{!ljJGe6t-8> zt926=_ti|fK zP+W=ANns5dF^UJC@1+*!c=2hoef8p;oOmNkQuf_2zcP^UR9}+h#s1+RVCz7@1XyZU zS+6Y3SbQkS# z{uI*HmsVIQWz5>^EKIk0YtvRh z!l>?q2U*w5S|}HdjpH}so(tF$Ok5epUa!=1WZMFNv(`?T2->yz1SdyW(#LGCTX{A-p&3Kkj?{!+ z>@O7i!iK(LxueY2Oqn+xx-_ysmkvnO*1D;mGNn_t^Q=f#tV5llOLYLlUH*ZPF1`6j$&HRmp5+BY#ozFR8Yp}RjUN0=Q|P^OK=xXm&goSt23f?pW9%2OBKS10Vde!(YW6C)AQ>a6f_P%o*p}&kpMn@-*(a9^iAfM%8YU*Mt ztBD!E&`JFYJD~A1ZNr8M{~eYf|2^&e_XER=oqhPREN^aXp>^)e*+JaJN;P^&>{m+u z-0<(*qMr+t7%a(7^q9U-QX$NiK0JO+JqgQYIGp?i<7gYk9h@C^gO^3(x=O`E0ZEPC znP|$|z>|yX>$6D0l1Y0;I%=%5b{dmHjrs6}^Y*6k`o9}QjN|qNR`l+WYK%Q4j0sXS zOoPa)IfFA3DFd26khU$9nWmS}JlnEohu~0>YE6l1&#CHZw>rVs+YKrP8^yHQCw~_B zrNt--sikI^WHjp9C$GKN8{}cDSpb)XAi;4m>b z>);b}yQFu`V`BUNj4S2>Ct1w)NdEkx1^QZkHvu#R=8#2lLxr$)D9!2#&Ga12Ix<0~ zH~J7a!_niUUEMkfd*6(YM(;gZB@@-V;rzBm+0e@^lkWt~AU&gsQ_j4leF@0c z(_>}r<*G%Y%!2^to{_lLA9DvX$~A9bW|XpD(_WrrDH6DnZin>2C>h0SczAPzn@ti| z;m-imWg?ZjdB7A6zQ&=E6pgaa>zT+Zs3ZG8-@8u(pS?J{sBdt1FI>CNfx)}pThM2M ztSaiY!)E4NB%z>VccEH7{Y+}$FSUH7i_QcV!4`O_%ZCzxSg!d%kHuISkBFUS4oN)< zXDGn2o|^Clw1MZybE!rch>)cyS5#XC_49pkc4yB3%mE85`V#d!dl^KdiU5=hHYc$2KvwM*=g$Ht>Cmm$4aZ=bIiC?#q30nM%%%^|AxZKaF?KZ#Ik4 zmV%0M5ez~e`>#fft77De$se=2&qNUsW^^83&_!=)BtWca-hv5zyC)oWV|2|=0*7C8 zD>`nm9sU5sePHcofVU$hX%P7E59--;a;et{QX1)`6M4n{P{QRa0$NsV>quuunXhr9 zUDIRhKcMx9DXnl1l=Gh+1myaj&;iNkjPh11tTaW+B{O`VtM#;G3{p9k(iZj0`F_M@ z#@beeF8o3vr5+x{l<_9`MUNujUg+lMok;#CW!a&LAmP=j+X9K;(z18B6CWGER>nH-LaU$2f05>vA*eLn|DuCMDm{(V_P&%ktY@-K z?0Fk-9(sKJu6U1vPo-fP?FdSGRF5m9`W$b}mKhm+a`Su?)3I<*A}nMXu~Pv%>3N5F zU075p5Ulq~kVfjQ`z2tjhsWlKkb6yLLU1_lbTyq$V4zMheDi?7MFy*2Y~h_ z5Af^)F;{G~#<)2w3jzlU>@*DYGq2`pmU!dL4o4I`qn`S{5rnf{e4JKO<`&CGd|Tw zQ`>&|lFf*JB+mo;ZX`z(9IJ@BS+BvA?D?XXyl2q(cI?3A>_W{FCX#&m||?O6XgA zLo=g^7u?@mp7kPT6K4L0NN?Zv)2Crp zUV0npI>D9`DMwaw|8q6MxM3Sdmf{yCsoc9c3vn)*WHwvc z2xK}c^L$%%(n}KkmMAp3C&d+>kq9QgF-UY*24A{;5>)_jKPb4) zH|8+O-I&`n-p=1LZ-|X6eknO^_RY+qa_5%DT4GcQHFcW)j^)G7P*hv*wnyOd zS@;L!qDV?Qs+x}LQfun{zV-suwmb#>>=AP-a< z7r7+M*))B`llIVzOFN1AM>!!k-v<~}8uwG4m)`Uhe7-nB4g z_d@>hfND=O%y7fcaoxb zp&9f|-A|D~*W6aOU`WsfR^m=O!eV*2Od{)Af}-Hyx#+N3J2=k)st8$fSdIwT{wCNb z@Y`Z1sn^uJ7bf63xABE>e&aDM1zs3^9uJr*;|-`(@-)mM0J7#&!8j62&?TFW}h zfg3bl_QaKRnd4H@A^n82&vvdU<`VWsuXvhG1(S}gxl9aMSzGT&&J+h$C(=89LOnOc z92u~W>z*@}NSqrc6!Yx#@n5?LNEaGcik6&M>-}MmE{(y?yb6qh zTA}(Df~Rb5rBZ}lE}?7maw5+M!#R6qe3%etG^prV*qQxkF0q+cQvT4rdQr3gRE>4Z z{D9s9qp~9-&$b`_A$YTUqkHIhI3~M4GFk3i$bKAnc0&oCU?jB^=fZ{tdI{+AKw zw2Z<8*_43@VyBR6Jtj;l(kmtbok_GpF709aH>_vFf6Obg^8fW|F;6`#ye$~%w^C0X z*8)>T81D>(WIC7!FPEHc@@A47=%&wqG{GM+*qnsuiV(NQd02?gGM0h2G`KK?ceayB z(@bcdv-oNoOxUXxjiFucJIXO@ur@Ek5Qg5N`Qz=*15FsHH(Z~z6{2x|)_y#h92j@| zAG+Q0AO~a%Z{SrE_D9>?nqALE&gNXBME$LBPU}&3$9R)NMo@|BYfpWsc>F^fGLo(&AVVFuyynaJ8l^u%4k4~!{@i5{H6VIcgiySg$>ROA!3WI% z99OXz*4DuU$(|ZF2cxi&D)wTNf~19_8MD7wDLr7g-3$|hTj`Ufr{bA4)Iim8B4AF)WTT3(e* zE)^H@9pR4*?rHgnjo}r*cj@3oXN^)VE$xv9(tx_C-DVJv8 z@sx^;ffP<8-Ao?ep($(xz;?B`<^YZWSds{+DG?a(n=alYBu*m?{7cAa$VJe8|Ax%= zgWt$%w>yD2P~?oGpb7#?*D0X4N)jEouJF=lb}%wA@+-+@Mbx@2>6O?4Q*}k~N65Am z64kn1D}YK5B-LCLB0SRcYJ6lr?M0ZT2GI+1%Yp9qScBE#u!p#Ei)e-pbFs?TW1yxo z%Hf=Ix!t)fOPimZdSIa5tY+&00AJW*EU18ER%uH)O4BG+UThCEXnx=lUy;F5pJA%2 zr(yo=Dd}j*U3vV14IQD(nNLH-LtLsutwoymzLKNwOubO>WCyF%@Tf#m=cw%T8((#J zHbaeIyu66J-Z?6y-f4bO&t7i}Ls2@*BQK0#FSK9t@AF@)ArW28c2V3aVE`NZwQ90L z`+C#v%O)KtjG!e-H0^)e%c zS|pv%+H}7&zueL}Y7c4dH$?m%cm1tDu|ItzQ}{8T5{Ay8I|h_2*N4|})r`r%9}chi z8QQ$k|Lp0hb+{vE)ait&Z`u^hI=2U*OCR=^?R`%(hS6n%Q4%AF1;d;xv~fizqtyOM z4>wl5OVaUCPyI}!_u?LqgrXjRs<5fZu?ZuE4x!5j5EKYE5+oFsr+OfTxBl1ErvAY*$8v}k}QN9<6BOH`+iS$;BXp3$iLr5l5E@`@KF*FvM+ue)9qO(*{ zL@q0zHhXz{dfDf%V=-7vX_uP)N$_6ucna}57=14%il~@yota7kmh|C*{G)u|^YA?X zVoXjeMl|Q>nJ(gN?L+b+QWF0Iof|8r;CKvGvqt>eUQ+U>*Y#?8xpPB;_-2$|s%lM#TOcs#?-YFIq1JUBzh?z#-(y^CSuY_+ z0}6fyDpj6(oQZ>86qE>gy`4+*B9nRT{0k>-jp<8bnDN#wUA z`E_^e&#gDr+&FQ5>!p0>$F=Oo>sIjng=+_k3>5!PDx>jEq%d>-_6IOd0ap>B0>bI# zIof=dGhr%nw#pci*H{-Q?DxTReN&r#08{nKe zjw105SB|HTZ0l8&HULKETE2d3Du%;>^;<-G_%dO3Q?dI#Z5&*jQ?0Z9j}2}qxU=I< z|07KL?~8Qn1~KURr<{7sjVCR?K2`I;tsrNA6iVS{5n)WjP-pqEKA{_!%s$`hY*-Q! z|E_D$Ru~Xr>}<x{vFu$W-i~cQ}=y$$7{*Viao#VIFZE)d640eKy{r?>X|Pz zSgg`VhV^9X4>uUbvKSO^))-|i*B>XQ4JzWuFtaW-Q!s>y<;auz-pRp@x71%KPGhfm zq##lXtq7IsVsraeYC>LHjwGAZU(E}=0nTy#23>t~8j!B`v9vX1(az?A0)y4o8;)Vc zb85B1nd7ttJ@y94>@)TPKT`9(B>O@V>Ad?Mv-e8=*g*JV=D|0~DH{mVanb**JGO-X zDy==!L6Az+B#u(2L=;-Bta4v4cG!m- zyVQ!Y^^sqocj~-!(oQg{Z?lqxTq2)i%n$-_O&139=H~DUbuEfSC11tQm0a_b{#1a@ zUyZjSHJP>mqqK1=LTJ0Pu^*H#gS`91PSSKQXGUfKCS+d6?XM(|D8DkG8Ua zOOz*k>~1ASAKVUT%Qvw^7oybX7AnMRm6YFCYH3c`Gq?Y0a~syo#GZDvA`0^NEqF14 zjS5-cy2YzPQF@F$@mrlr0b6ppDBcQ;2+nw(1Z!3-@p{?j-Ls4SA!p(eft60cm9&v{rc7 z6o^^2D^C_gE9C4;4GwDxxuPI6y{axjfrt%7dn7PzQylc{E57_bIPtVx@IPgU z|KK5j^u3|k2mDoa58ALUEC5y-(8HJ-(8d{z(r3641pkPjE#0pQLg`!-6pOOlqb&z$ z!?S|dJ?aG85{ANQj`9rd<;yr_<{v8Ux&qQMjVSw5|IXc8-K8~Y(jx*k74619kq}KG4_72p)oq}#^!c;kb=^2p z9@b0MW65NSh=MMs8v5_5!8@t2KQ+kU)VCV~nFq|9lA~`oaJYq9h3}s$1bNF04JR^I z{P9=+r%P)DMY;&T6Z&m$(?cwP`x}DwAI{(TUxIBHem?a5q)7XTvP*C+W4C*R3X?A5 z!c;uI^VMHvl_xKR4kz%0);wd^V5kkAs$y0XSN@k) zJWvK%HaR9%(QDote~&PtRGRLOyWRY`_o{=zxZ$fs@D53B+v6{=>&)iJyjvt)394cH zZ@%ILs~?y7l#daweKu%o5WL>&p)(4nR8Q`_!l=I4*GoWf!O=t$G~eGE`4!@aXI(Df zO&-fRbg!4aI^ze+4v12*S#}CWsRO?!?=0!>u(K%_7U^d#)ViLgrnZ>V2XV?2y=9VA zHJ4CNWME+mNp;xpZ=}P@llfZ-WncbYyQ?e<61!9RKlyPLrlOB5#Pc3+WqOnto&Gi# zUpRmDFq@2U9U;2;M&TIZzO!wI#*Q#~gJOa$KiLE=9GB6@LlfdWMLEwg``_CB6sg56 zo4*M5(v#DQ!$=99F7&F!b;6M|6%skWz>G63`rWYa=H~a1h^sRzMrfkx-1wJgJ?exOz)ESk4q(-y`b+kqE(`63y^rB!62cgq+lL_F>oxUB2Utf=M z(SE^g%9j()hXYW6*Fh%L56a7&a~Qi}V)QZ4N$Ni8e;d_^wUw(RyqpkE@ZM-TTT6=Y0 z7N@LEQpER78>qOPG#e-JlWCHt8;zVfl{9QK8Z&J2u*MU{SZYsQlE*?L3%)pw!Q8Sj z(p*EuJTtcVZS@XYOl;HWhbo1bx-~H3!P0pzVt<{rWQRx2`Tj>mhJVHKrwL zK&+PKdY>y>bY$`w*I8TYpKm2|QOWe)oA2MrVUE)mC}#1Ka!LW=!bad|L#l9c6Aiy= z4(>V=hK{}r2L5mQ?x`A1Zf%q~ZJCoZz~)~Zhp-V|fQ#Eq;I~;#HV$CA;-@ec9*)onwmr_P4=IOq*>_SwE;97lH+Q1gU{SS_m+0=MAA~x{D40*TYyXe`;nu* zBH5@PPUaN3G_BBSz@~K$4j8^&F;Y~G?|S*H=G;(YR`X+<>gdu$6V0A|en}k|r~LO) z8OTFS)6{Q1Yjjn-Tty4_?00lY=g|<>nnWtB_%st{B9S!ccCO11ie)?m zr+sD>^zj*!CLD=70F5@<$+H(dl}=A{E?mG)&}Y@dxx?%M6B-_lwNOa&)b8jKpAf09 z=3Eo-p0eecCJ$Khk&t)&&3W-CEQUXort6ItTE)Z_3tPR{^vrS<^vgFucnx`$;-Yk~ zdqDlGEl0h-=YBS&hj$A0#|%fKAoy}Iq5&U$4%iJb?m~}wRX?}Wqlw>tK24>O=zE7` zuKzJA(%+zuS}8uAn_%ox0r=rf`z8c!P`9@*rO_;E529%24uF4(1FPDvvWAF@8*Wl& z(AGYzf$)&^^1ZA_57W#^X**ngVT9yRBSzEaCkhm5#la*KD-@F9h7`?xikK`2qjEfd z9`FNLeeR!r*1Z!Z@1TH=9Ky?g*?T(NEo%^lHR|;!a{K+Wg(PwKOoz=NCLsXOK;rm9 z?A>Rjm_$xXyemc$@w9G2+|(ivT!+aUyVFwb#TB_9N2%p4tljMlS-xbn!uE_(uGR=( z4{ZYT41GwefgA~Kc%TA0B*W}LtOKEm-_uLpTUaU(k-D`YsR89@>Uk^am2ZcRv8gpL zy=T8Ub0wEW=rYMA$X@^B_d3Xn82n=8$Jwz%9_Bw$DWT{?CGf6)#oJ2f&?GgCE9rC* zy-JkM+ZN}GJQtEL9r;#tHStAv+++0GhAq-M%*98?UVG=#_p`ep|bKkI43zzLk zrA6QTOIReiCKEGIZX8FBg)6u2?_OYTmy$o4gZzoQQ|akuNyGEr`GE$k&ch;AFlmCZ z%1$6cZ}{tU&loxy(f|_ z5j{`x+JB@PaE~jcawaN-`4GosT8H&35-aY|ey zqvLgsg_p1YC6M2@p25q4Bpsln)q39Qrfg|tTcU$)q5_7HkGW-O!%Z6!e{cE1uuXkO zpo>{g;Pc&WA5X#d8ENuwB1RG1j|)GiT~7bS>ix_3_*f zlARp<{Tt$=$0p<(HaQFtR_`u*&%5{!uGpaOKIxRe9sH^CE&+3})>2pX9eq(TB{LbpJe!|DJX?o_ip;1Y zzD$ePBuV%#IObtFI+RE@M%&uL%H5r+=Ye^)z9M4`ywaMy(DH&2sL>t|Ee~6I4RZDi zxA&r0-q7&OqSJ1bxqCp3P(<@|?RXE|jK#x^wd9vzgBwT2@99amv}&>KN%|U(cqUCZ zdoWGu8?}329KS;y-7(NPEyI~bVvA|B>u398erJX)FgKTNPRBcA!gwu@ z9F7u;t&Rm(vxUA{BJfbiE`i%zF6lH;(%cst%24=PTn38=?ca4oS3wyW#{penKZN{K z$}5Vq?mm5oPtNt4GVMQ@4(-J_3d`u6A=A@+`kyp~og?@qhw3uz#r9RL;)9*{2Ui5A z>jv=+u=7;jLej?w00X%(lpPo6K$$ z^e)IEwRPYipvTEDBqoq@+tkRN0o&R2*D2-gAoWS=Z2N4$qoF1FV5 zc2uR2oK)p0%{N_q2e@F-7yuMOxif>poLf`iOJ{J66ANnx_aepNbOo0j>{qMPH~2y8 ztR-Gq9bfA(tqaDsj%-h6a6ytAdw3ySFQ*TBEp^Y`(K#J-fB|`*hySE0*~TjE_}_o+ z*7Df7BUg}j4Dga4M2b3e2UfewyqS#rbc|%ppRhkKbzCHkNa`E*PAlyFLA1^$9Fn)U zWbE}3>s7K;zM!v=xNf}c)NnWkNcHaz{~b`8Snxh#huILZTxNIbgMK*zEkOc4R`+aPS7jNggT)+4}@XMAh2nt6lx^{xvzcICCi{2+(c zZEOR+BKO3TVGZ!EbrpsO<|P>L?C>ai?P%wd`0&m6Wq=pIRu7w4m(mipyNjV6n1pbC z3dCmOvF4`y_RZ3R4+`0=#!f+ef=8KbcnJ1wS(U!Xgy;nb{&6LpL>!rfg7YyV)YkD6 zmK?2Jnk@4ck72-Md(NQupY2dZmD|i1Eq$i;0SzRuv5;y(;Cpi4Acl}N?CEM}%q$*w zV8I%@zJuTND8TPXqJFZPkQuWX%|}h6zC{g{VMOB;JRzocq%`Z8!M7WCvX61aF*8y9 zE(fFm8(0oS@^I*>Ev~j8&qEzjc8V-;VE>cE(RHlyS8#Y_jG#|q^d*#iWp#mA_3s9~ zwCoub)HeY?ldUis*ZXA7xPlvaOxc5cR{I*eO0q&EbGN+?(?FT5do#ov_|fSbm#7CzJ`Ww zC^&qsy`7LI4~v1T)m=`YV3ox1y3P-jkADFX@irKmm5#NmD^FGW^%5>Q2fGu1tjeNb z2>CRMvL0_T41MR<-!?Em?*x}hz^km-FJGgg@4zsqmCg^3qIZ!heyg9%=DXsz7S&x= z>SZI8(aS0$7orJg#!97*_DMY5A?Nnw3pG{ZZdMhb0EU2Xh z#CV-{+QPeA>)+D#Zq{R94Khm+`=h z8>}#iLjvFx7$0e+)6|2^Ir$$tULJN>>Y@e-HtbGZ0SfcoQ31%`T7fxGpX^&9;4dIa zNt3K4YdOUZ$_Qd3GtlZ(+14cLC}pCScWOX3aH!gelXfPPqp1I=1%z^jr_Iqzvx;uH z#D7?1(XO&6)Lr>RrXG|)WMvrG_!20XRW%8so>}?ZsYXrX@tJ2{0c)yiYI23{7-h7j zy=lX@$>X$H+Rqt$hV`S<%6aLADU!=F)-70ZxKOniO^bq<%_eM#Gdik*uaO5@@C`jf zSwtF=m|G1I%CvhtsY~9&qp=XtEO!51E*hZ2+X_0O#e8b%&Z;|&b64*e%d@n3=PZx` z|Dv?_?Sx&jl(&dVDt+cjCyU`3$EcJqo_RI)tDE6L&8gNd#hL=t+)V5=+J;?e)Re&) zib+*^UtU^RJJt+*h7v4m=&Jf-)pGfMi5+GveDrR!nG1Y9ztwsz`nGM#6oD-ahWAO_ zh5?G2F2ccP0r5434&Chp?j0jpCH{M3v^+k)fV%qd?6E;YAGIV4()p`15&Je}^fAkk z1J9OkRJnnvn@dV^+qY(!8nX%(!EDvK38Cq*H79%wslui`Z{ADB(Vc;4qa`+XAlS-z zQyg9*H&mmq^vgcS7o+~esd%8%pw518+uf%`T4}8k)|0SgXI?j~(LDN(po*YWOseZ9 zwQf#mQZVWtBS#MD7Rva&C%&zn>YZuLmcN%0Se~ zrs548;?gxYM@@eS7-GxMldgsSNqt359b@_xg#n|Fc4sC8Zd!ZUsljz7(XB>D1G-pd zQEfTbB92D=igedC4_Ay^iIU##6<1u&K<9vbH)t|DiyKqBjw;y*!2C(gEX zJYr&Z-uPP&u=!@!*Bs07;i-XjviQ>A<*>GL9|`rxE=cj1<@)r-sxG8Yon~p!u=EX4 zn)-TgmNCEMea`W;wGPx?*tWlz?`fmlL2g6p*v1R{(KMD^SaJ}WxHN27cP2bmA0Fct z#B?^HnNS=*6C=+?g{GTwC5Bw(_aWs=sAb-G>}U$Ho@%X%#|Dq+`7Z#L{o&w^p9`02px?-@D zfgk6+^E~Bg7QJ~Z$mGuuY0`KeyNCJgB`>_Ei8&Umk1^NBw#wP^Y=668OPbGA#n*n)YpF-GOei+EKn-J z3CXC0`78bBDBIH^w#>ExRO$Ie1T;`yX}lM3*saJOL^}}5XklX=|7bXwFBhio=bt)q zkW+YlUc%hw7sutzA9R{_0O)E+Bc}gB+pWTKsdL=$8;kN$KQ(t`~;qn?+YH$V!E_DsaWW^V0t>HopFv{Q z8`+x~f+MjfDsh~7GIP2N+(&*)G*C8sJdB&Ua5f-3pi}NKzQ3_&nC$7(`<5TTf~`4< zb)eJ8)ws+5W*cDG#b8Di=q<3+C3p&t&Jcc0lxwif<*=1w*`DOEVrM+_Mt7TcfRQ!B z=`tX0yoxAyv2QXjjCq>P{X5%_;R8 z;9-UKH&~K!w4*asdMANhusb?q+*Y-hUn9_o+Tu?x_;Btd;7DXyw4%vBz(oCCmv>~} zZp;GADcPdHYg%H*C)hA&n(dO(6kNcjdWwd1Sz24p;-&uUTg}EY=FDWV-w%}J&mpd9}`EP))+>vVG z>#hk0HU<(?Fy$bbwyTZ@E(N-$<3K%g3fH$L#&w*O1*;xH(5j+2pQ$YokJ2yhF`kT_+P&%?Y{_AY^ z0!gHX2&Wj8B5T~h_sy3EEB%H_96sR+b6;3;-%Zky+X5-w0y*xmf4|O49x7nn>So_P z<2=NcqzDe_2|{u|E(mkXPZyWYJm6wy2_dSWB&_cozJZ<Vx-wBW13jGThl&hOO%R zLW&E8CAPCBR{O=DVxbQb>eDFosh?z=Q*Dfo%%E``p;CDzyk13abOW?o98Ofgz89Xj zH_Tj9iu%S*Jlg$~d?-1MAOdR{rM@}S7rDQSO*kDi3H%V3r*j>d+`6B*riDlt2jZOb zwQt5RJjD_c+IJ2%jdOo(FG3j)vu(h_qapg-WrQW!lbGB@N8aHDMo)UB6 zCa2+9lv3R5phHuy7r1B;&(B2Xb#}u=y>MBP9u4GL4)-LQU~h*FxfZax&7J*{g0b_9 zwGyG*F4%^-&%=@3LuhEs+st_^VPfNP{|BSb>6zk2aL!Y@?-UR80N$6} z;Y=)8koFIK6PJCp8LIEr$=CYsWqr4XKN`U%=O{R&^_&mCVXJ7LVGJp|sUSiXmNSP` zQ1jr*!|t0O_Pxs@f1<+c&ScpXi;R#i4Ua*#8vt-+-c0XMol`%)6_u8ju;{f7;{C5M zhHzPr$A6)CA*AF-b{yUER8y?5Feru`pa@hTFh}G>yCeEbG ztY~PFm{$Jx!D*Dc_I~?rRUokmp!GH)fNWde_VhzeQ2}}2CgXo@Op3KNr%;)uV!qioGEkhRmypK8jhky zwnnv(Cbcqsng~bp_-2<4wnjUHHV6MiBM}vmJj4mh+DhWCEhjrrc|3xM!P)V z0$zJsJ6=Nd`&yU*B?OSx=csghGGpXjR*Q z;}X_h(w&pHWmX^B`V9WH|L0t9PbYetG{3>O{W47f$G# z0oc4BHEqk+$|+f+%&RfU9ptO;&rfKwt$3qrBWORX!!|eFr-B_PZN3isgY!(kxW*;H ziU>)!t2*8q+uVO==@{No6ppV`T&nZeBQ-{Cz@uRT>Oi@n&$GLMetAm1T0vs)*ue@` z3Mq#u3n)IEYtxwPOHHtiaz=iqt6X=VaUx|%^N+cz+F#G2(>CM5?b&r8D4xV>?afv;!@+y_Am9DV0BN9^nJ$$v%u8;X@fEZT7}MF z6|K=GO_6+(!ob*oBkw#5wHUpC)U*SB7mv!+CAhE_-fF!*ABwWT;yBL82^OFSMr=7l zdudH=x)ZDkB5B(4lR9Eg$xSsV4%PBw$Y@M?L|bd&mU>d6e)vPOV}fXzs~>oENFI|9 z(roO>dVa*(^bwy{qEV`7;?(n1EVA?Y@8KizXTOEy+hfLtWv70sOB6283^JzD$!X8l zE6H8cpPh|1chBcAN~up>5W4hqvpt~#qb+T0H=dvT9EGh)%`12moC%94TUC;FXst%3 zcIAnrqu?J@?AX^>4|`Rde+BB?^QZiOOuhFbn+^EB{dC|dMeR+E*rQ@^EvdaXrM36o z1XVR+?>%bos=X;pG9)%=QZ_K~T0_^P@Vg zzcZI~;Y8i`!~g?gERZHFk#OxyQ5B1c+FNj>#d+OmT#!6?q&Dt>8i0Ob)4gPe|FM*) zN8bO$HOen!L?5n_`mQeNN=gO8RXSd`EqkS1Bd=1i6MhJ~LwNcSib^5lh^KM&4|8zm zT+DfX5KA}#thnI$Jn)*R3N1D#w=@#pGo#W`_UwK%A&*JIBhTvm&1e!sBIZ^z6p}Ib zQ;E0`4Xr{u|JjM8d?G?%%h4$T4q`~o2Im;UxIs&YGyb@b3^&B5_7GF;p_p*Kxod`j z4;Ve_&mA-Wcx@!efuwv^L1Xth!z(%o1)*yKF|^)wVM_Ni*$vaX9Bj;SuKk7Ck%(Ky z@{Ie$Pv+I0HJ0}U<-euoxfqi1XpaG|hmpY$sfONRa}F@6>8_5cr-`V9ip@3%Sj?ta z+pe-25*81w-o6)`%CxgO$*>rp%ign<$Ju%%O(;MEj%$k5qkJ?m?qi5T+sbqKDyn}d zrSH=4+(2kb!4<*0Lb*(^BR4tTwJaqgAG|pcJ>V!<~j7+0L%b+BZ)rxN-)!wBfz3_UU^ofKq36~ zcRk1;1%yK{+Bin6-qO+{G$hNga4&t~jlnDr!fonl0;D(3D@|QeMNGS#==2TElA@i^ zr83^e_Y{66?n*2{`(yeRBw5fCsqc+{&JNVSHw+k+mGbhJ3$mB2HKhpUBEKLPn2Jxg zsUDPQnfWZg14|D%I5;lslPa_eS+2^OnQR2rm=~E+7e*YM%gR$wrK_X_fA)U~>nQDP z(G6%q3G%9PG}VMg6*~7>SdA_MbF^&pmRA<>x>x5(0%8K1q5$=V{Ka0)!~3hWDtD5# zc91UpBJREYJeKektYjTJOta;BvWH>r)J#Kq*5cf95^bXZ+2X2rc2bdpLFFH{>lJFX z>IlXQ!8AJg8iHs2qXd|b0+Vl)8rnkX?zzB_ZM#gD6-wVFaMk#ivQNWwUe5V07G%}H z;Vz8Uygtm>CkcQI9oEn|Vb+(Ag^H`wR&TD&p%@hD`cL3b~ zvVSty?FWw*Q?}Fi-|U)j@%V`qqD=~Kkwpos?un~%U~3^c=%b2VKqMPG^n-J;OF7?>=RI-`*Z8rsDpm>%$s6Z74Sm&iJ)H|( zk@m4tMdZtIM{646AvtYu(cguUsofNn&*2uT`K7FTfTdvBvBm@|q+oMlvEZ}Ak(cyv zz@O+n*H8B{&=+XJ3D>r_E+^Q7=lsc`VHRsHHrQGDA_lhX+h|bV};t7t%KY`&iG2YFNJd+_Y@^w=+_Oo+RF^gjVvs`w4m64xZJ} z#sJ5b{KXcNkOzbFL((RAaRf`X{opGiCeBt7vNbq^fjJ(XVBec$6wFalxIlGhWD{(s zj-|}?4c#56j(ei%Fm(B^bX5qUIxJ{M+lfJf$yoCVf@8{?dI`bFMXNt0dgbsi5XEYSzGfUI?@gG zztI9=Otb)L*d+^gd}3P$#cm#q)gOkZyK3gk$FT8Ra6$hP2e3@0ZvHHXW-3`#9&s&@ zoK5X8Nt~RfHUrZ4V)lvgjg#066YKM}#O(s|V{ch%{nAYXvc7%@0nU~1>>0%3V%0KU z{p*D|KgwIM#NSPs`70KE1X8{M&Q_dPiv&un^s+3GjAG|yQ4;O^y>jW-QPFY3b;|v|Ju-c?AN|2G zxhZ*nLEN|@BCA4^^nSun-AN>~-bAq2n|c&WTRktX%H$6VPk{zEeN1#OM`U{5E?0lA z#;6L|(JMBfZu8Ev?7Z&4u1Z7cUd-zj%zw=K6Y%JQfBE(N@zyIQ`Oi#VC1UI_m6%nd zT4Hn=kNEhMGKutbMDk$4Az`U%qL@piUnxb;6NIXq)u*VC00@_<6cu>69$xDZ!&R-4 zPK)BQvaqU*)8h_!Q+2T%9peFNcY`K=dO6A#SZq>kr^Q7gJ4Tg>LMkl9c*~6(xB&zk ze(%6rQ@uV1keD-JNBM>Gox$i#Xr7ppquKRu&13^>lNZx9om@St67%NkhOcT@xvQKf?C|7_ zUfYfZxTgc?u~H4wOe@LiH->UYld|hG8~zBAT=@ZbtA~Km#yea#S&QkCCbqr}eQ(0Y zX=!Sio>;PxH4o%AD8CMOqh8zn z2cQb)s`Vm=jtVJzdn7IPna*Wy`M#8*v|o1YA>-f-5AJ`twrOp`0$GN3l}&{7?Rk(x zVTO_)K_dOVboFt<=)>`Hq3b-YR6JP^X!c4n8sSg7wUn7&FJXz$8tzrMKWD_6PEd+{0JK9M zSRM$o@Viu}Lh`J(u>t5O3qlGNid#c4=XK*>XYuekWH9aYGyf0}s_hGvBp^699gz@# z8b+hjf511*6C*f=i9{36MSwEZx#7d;dsM`je17 za&y28tyVL`Xl&X0^Fv5B7$%sFW~wC0ay|Kn2X5}LY58lTf6%q-M7*LUhL@sZiEpO6ysV-i{+ZkKz2BoMYTcG!>r8`%!un=`8 zRBTO5ueq|HFu2t^FRGhFWaREE4%$}<->jd$3*?LP;VZi-fm$F#m@wh9-5^=deRWrb z8_bW&;H0BF2&J~j;s`?R3shjeH{WW+$8Ub?1FHYQtsuHbb2whueu;_WgXu}LtK|st z=-e!Q*ld_O2+yQ#_B~plvidS1Q11kSme!D;Z>xDAOX z?}9J|I7B_PpR+kchb-cR|DU8AVQX0%y-8{$B(K1KD|~GzXfj&^%t>|DGj09&IrS0h z$})J$V;?=gXv;cuic#tjqZ+qa$I_Z}-iSE8O+j!RsuVN~>ifQ8*n&FwN%_d|KW>pO zARXX8CJ(V}ANlzo>E3cY+!w6;zruyqaLj-^WTF!0;uod_9qc1gYe_4hRW%8%v+G|= z%owR1i;Y2~#j>ng1B(JIzr?jXA-d~Fbf0cj*K2t;Ercv|Vka7t-@Gu!6l&5N7LnG6Nj1hLwPz?c3yXy+R!;p`3`C(>!r$ntOoiK+Z$Cn#| zo=n4SLXZlmoY%9-Fp3xA<1Ed0!(P-|tDM%Jg}dRG-nB^7Nul@x{-ShL6{w`OTIqhf z0@IEkv}3RCmkXzw{h)izpJ6wjaLC)0O+$}EH_muT;d99GxH|5zf}!eF_~Q|BJhbSQm0vsTf^K>Rl-%nGTeT|8&w zL5L>@FCy%UlJe_n4HMnFC%DUgw)~i37aqS?BeuB~ezs`1h`MJF-z*pPqmbxgSd&7% zLGc3MMofE{-4Vu^P}f1ctTGf5{_dRm*UU5J{9@8!zEMiV%s|4Au7ryC-to&-jIfoO zZi~60he8Wm;}uO?C`ZuWLOGTo8D@$u&K8CuDp6VHb6U?mwhEk(cSC_;y0DM4UW8FE z&1_daA-QnM`faL)K9yw`i={>lQBm38?WT#H^h7a`HH`TP@vqLERV01XhHbsV=6jk| zHScZuF&F}qP*7f@7<6eRxB+ob(|hbKDc!s1`1Tr}o3hgNe5LpB{k&C#xo6uWS>oXs z)lan*c7CydTb$}P3s$=sp_yzRihQu%vq|pW{oP@uU)`7=Jc+zOyyxTg%lvmKx1{I< zdxCED)xe_G&YqSte5W0*-`$_v4}@>c>jyR-XahiP?u36++aq}sX}eWC&ZYmJ8>zNu zP^bA1TbV%$`EUM_^2cDzI`wzX!b{5y84 zQ{@x}5zpq(!X48a;b-*U?-(@Suk)Fl#h8lxV4I3^*<|A3SBc+(Ui2_gd#Dt2srbVL z+qEDGXlclH<9>g6_>yM@Z^TEYvygn$Du$j#iLYD?$PcOO;D(rr2E^R0ii`xH6=s*K zRbwJ*&&7y$8NiiA`5`QEnC+(K|6_K&9)b(1LHu<>!0(r6dr0VZq5qpG-Xk6CwUzL>hS6K;%N)jKB0MK6$9?|2nEF)Kx zW&dM=(;4P7$mxC@e8E7n!-nPZB8}p?TKl8X|CeJk`49Rr6_iusFduU2Z~^MpkLJXv z9*c2aJhhy~E;Y4tl<<7s(G68c=meO1w@0@9}RaesPal_k8Zsan=@K;B9tE&c`Sf@X0mse-JP@=W5q8|sx z<{Gi&J2Z^``7y3EhglslcUCxx+muWhQx(5`k^^1Nc>wU}Pd{a4M zTaXn{S9X_DHr6|%Qlm;{uO_lAN>coN;sQ_(2r`khUc2-KMrH?p5o6{P=1u-}EEry0 zlm@V0n%%VqyFhYQSUDQsz30L6C8IB}Z!{(05$DKa8<=wrbi|p8`8i=1z|WKOI+6T*jMJR{!QvgK!CE z&U!sA-NAH#+CiF-?!sj^Q2y$yFvmD0ZADmviq0n!YwUfk@5pJ1>8tOZMR82QJLOEr zf>Mn!c}06xl402mqc)8b8m)spdAcWLs@w zRN*?Ie~%;{g*@Ya-lN3o7qu|b=>d1+3#FnFS2Q{p55T;qcdJ`(|C93+ZXPGecEiAk zvGJl@>!*A_FGuVd7TXR^JwU(IeF~s2jEqmpS(bA&bYkdu>ukqhI?cuMV4!rn$t==A z!3>T)`l(RS7n3@`ph+n%w-^%fH}pz3@=TL&FA&2~e)O97`8JF9e2RhUxJz4d zR~sd#>0v|!+M)NEI}-Z}E|wa(OwBi>D#r!ol9vRKq)u4=F-zCIePqwu;9bg`CFRcZ z9G31wMZ%z%!JoY(GT-@W(nS+K^kaYj^&o{+-6{kL>K&P>E(@(`mCDTg9(TfhhgZtwC^AGx3N&c$T%FkAUYFfB4(%0asi?3Xp(7 zMI5I82q^+1DJtCdRg47j?J)QM<+75LDI;rBw?3umE(x4OV{uPg8}XHEEj`wiu-HI^ z8iw92jS`{)ZA#;$-Lk-T2+WP=>NaErgWg>K$KPCEaFnEc>|0J|5zy)1OlK6=dsujI z-n*bLVrikzpaJMZi+Kou{_rDS)eTG2Z-qO$+Q@yKJCG+_T;b0mVgdWEJuIN!$c5D zw==iDZ0q$A_=`T&{J*NyULG)zBR_9+Tg`4l)mp1ewT0Tqcr98mm0HK0PQiXA&v{;R zt;Euwyv2$`UPqoMCWK~V(AeJAN;lUIgGMSjaB4s~=G1jF6LeRS*%PCvNaJX!x)p`y ze$rHHX?EzwiI?R8Ql@5Am;H*V)r$LMYbF^6J8NRnvs7CGBsvW?tQv)eS2G6+?6Lj` zR6`d)WfoZ1hACy*HmoiefdT|V-9zNQ8Le7xDLOqJ!oO-URg0b|E+`pxYBpotN@O4M z+aEV(j8s|sfSd(I_^b9;3eWm~7)#oCtynD~yRwH`R(JPs>oeU*y$OGE3y2(l8WPH1 znfs~eRbhhh^{8^T_cNGO10N*^bHV9}1-}2fa&%($cz-h)3#h&xvP}x-lvk66E6g7i zjej(9tRyQ`y(@nxNtOG%-JR~XYmz69r{jJosQBu9Dkh&v0 zza~9ppt?kl{8)u@ji-|VP@biXDB_(0jFXFOv z(V<{(E43=i|K^|%87j6SNzkHju{`4TX<)jUnpYHBNv_h0Kh$KV;~WK~DyI8^)sarK zQ^G&wMO;h~U)!Oo7Fkuyl3ZLxJ1uq%F?or9OL#9*vp^(L+?*PX#I;wY%fuZ`TO~Y2 z<6SRwL>pq91cCcjXIO)>YEc^Xu}Dqw;6Il}Ki=1CegiyeRMJ5LBb_~@tWH10Ktbar zE2WNJq%q%C7>kzbuVY~==Bh(K_JhPxBpy9i@Oh%G{uUwPUmX9gse+;EHF}cMy;(UdaqlN*Nwt^-z1flFqt}lDCnFe z{AW;f*f9IucXJ%|(Jl(5dqVR-^`unk2wxF>I~f}o_w7$lRl;>vhAuV9bAsDYW~&JG zM9MBX^AjoZrEU%8Yqi)>k*vQbAVSo0Z&*a^)xVBbeAZh$xXc)s=)3mItx`te4xDK6 zVcsNaaKTBLLB(^887gpmCPL^s>A~rypnTh3RuUY3vOI1Vd@<-5H3pL)4Kq+|!x6(i z)1>zD?P3_Fm6n}r%~@DwNP0;-K)bB6ijc*0Yq)CEZF>H?db%35e45@!*`u@>Lgl^v zTxZ7snoxjepaA*$eXnMXc^dm;io4k`ZP$2%iALbVlibk_Sh0)gbuXaz(KfSBik*47 zo-`N_qb$h*|JgN?Fm`_C&o`m1?UU)m5OHAJD`k$k|rL3HFHsb&@ zKR1=#E;(lKbK4J1l*FCS4&AZoUx*+oV$3`XJq6j+Q}WtC{hl8WB$`V_xS4ksIwpOk(sI^TIlu_8<>0? zVX)ARQ>p%et@ozoJir7g&Fh>G!jIZ2I^6A8Q^mm~UDo9mJU=(MNlCdIG=*T>?*2Qr zO;y#?D@PIcE2vco+ZyFvm$-7BIJ`7|NA=*i`m7uzL2UA$@gqT=fsG@apwasQpzPS& zx8Cv4a5e?mR0kdghIK%L-;27&=Q91if0EXGNgWW^=5_%oLH7Rnzu5!9h7fMTnepzD zHavxu$IAP863#K~R$65xvr`Ob+N&PzO1Jj4@GKRlWLR1~A_T}G-Mq7T8^tznI%@7PF^RTzHzAo z!mU;c1p_0W7~AAkB{P`|uVlM4N(pP2WLehg56{pof?67dG60rKhS6fsNm3Q{&>Eex zZ{$b^zN9+s*zd2@mR0Ru3=L+~&?)>{sW{r zD{-Qjc1y=I{H_7orG0qiVtU{Q@%doedGp-c8p4*!yJHyhVOMF@K^?Wu;nNhJqerc* zfSe#{?x5VQBcDw41a?2;E6^02s}!d>`A{c)x88!Q*SMhanOD@g$I3@@9;5q&X2$a+ zldF%-<9V$=<7t*8`}I~Y$4R$yVibHvOEZb9R;)f%%RwhlQBCLIlO|R?*tG#Dk1p`o zSitwFl#J629sYVBA~0_=#9oM-5dn3HoJbQkc(Xw)-mj;7$CqV7|R~Yv~wEzVByfhT~MvtF-qP` zGN~nem^r7P+4%JyDQVIG@Tu@5P0_QMGl*-w&3GT`tsn1St^C$M8SBcO$stU;NsiI@ zld*;Qs`Vd;@SuENziwVM^9KceP@P0p9Pj91E2%^tc8eVsABsJIBB3KDFF;F_H!0p{ zaFM{dR*Bp6EzjhOEwSi+IK?%v#ck(IHN@CYJxe0ISIi5c@>xEuG&h!LJSl22DSKmz ze6}eEY}Rye^uF9adLv6dg{Phgy;`%=Opb}kRs7}#VoY^TB&Wlw4$3in!{YtcT8lan zrU7a8^*a1OC}^*P(dVe&w*@5UH}<072qRbM5Q6za9-NKj$Xe|1Ypmick-4#2#pKhL zZIQv^-mB{2rx&N0N4!}p+@1T)z@~&Rwla%9-5q+CD*VrguP`*BsG{{g%i@gnM6)eN ztyBWBpCU%pGkZ~>dAU{i=PVb0efVG6*A(FVLC8GIQjom6os3aI&U2ZVKOy-|2p*5% z*8IOF%PDXj4?=F*PL;W1dKW+Sp{|(jvzJGOYwVT`n*a7PdUkUoJ{JA%Rp7anY`*ZV zh=0Hezo>4KgnuH)E2Ui3kOrrGMHAPKc4CrsvvLTIaCG+mws-7|zeft25dj_JL8q$q zqOS&5Jbwd3ydzvpCCp#v46z8p$2 z!@h~BhvHm25{Bmf49g1sr%El))y-XzuN+UTSMwP@js1n~(?{pS-yF-xn=AVLJ1*L% zLb{aCD&Ui_k~Dt#I1D^9btv8{XGItT4J^*LH2=*%0`#gBKC9RaW9eENLHY{(&M1id zu8k`_Tm#4CvqgSyYH?alr!ch3siHXjt;{Ys1U#BrRiuw30Mk;fQG~%bTz=6}2&~=w z`zA0V>c#ZwtmE#IQpZ_nk|l-W{r4pN4d&B!wE!=MJ;oj0bHe^fGG*dtm$zC#4kx& z0(hhJUGQ8q%|brIsCNQk$Ekn_l}FcP`g;zlEji*oJYoccfRsmu7fi6l4oWShqz_g~ z$bU7t^?vIbJ0WmO?xLXR#Mik?R{y$|V5_j}EQ9jVvxsZQ;gl*m)I?NnSPL68oIfx@ z@E}otFE%^mXte}qrRjP*bdQ&tlwp?uXFEkFB9~1B7fltY0&pzBgi~!Mat}?g-zCc| zj_*ZV-bH3nbQbOG?c-qXN+A)vl4TJE8OUx<$DJo*Kjn-(;bUMKd4}MRyNwy`kb;z} zN4|!e?^*;O6YB{fQ=27%9SVzo?FF|8M@E(pkY+n@M<=S4HI3;1(`kg3Nqn#b*0)H` z1Rsf<0n$vnzqa88S$1T+G!TJ~sEO^DYfq@F^LNgk{bE5|y^|CsVg}Ni>$vIg@#l}C z%e+zEHC$gB1q~$S}j9r$a`sTcat;bPD0Sa~d3PvYci-#*EzRQ3c z{Aiw}WgqD}A+7b2vSdq6J;paC#ZF?nHCPdG)MPw^te!+t1!YD0nM-3Q+PJAsIkoDM z?Yc=(Y0QojI$92rmE5zKM=}Mk4c*1Cv4yDxfyBzbd$Iic6G{=T8eEO5te1@rY3lW3 z9exmei*jd!sA(HTDv*9Ir>8}AmCrJzk#*mPvbI{~Rei(g+H=(|*&%iTSKk1o>v#c$ zNsgF=7x~KR>_Z3P3{+hDpPXynj#pT)b2!!49^5NOQRvRRM*;i%E@{43`0osIZP-S1AiXzdiMM4iyF6VJmdS_7?)lCYIc;xq}y~v zsPQ!dzzVVc;Dtw zv#l0b?HebAtJMKO1$P}fwxdNtSAIbKh^h=|!K`ml1=Z8hZ7|I9omv_o{Jodi*VrG7o&`<0W%Z^h|-KZlN=IyN+NwM39Z_VP8Wa0#CFu&!S$4ECQy z$GNA|{nk}Ab=I87;#;$;Eevu>V1tSN1+gWwMRX0o5b<`X$0AQkqv|{GB1Su;oZf7c zEVH=bA#}9)r1}M<-C3k!OgvytDs{fnd&9v_3KK!cIJgme&j^~eXG zSRbsa4a#p&wTs5exc z_XAm^7`8|5o6y`;zU971;-e(nN=*80+gGLI11piZEQi}$(c8~H+irEd-oR^>lkFVC zzHvbuS0XCW_fAM^Z?seuNu<46E{nK(Gp1XL2^HUE_U*?3@5+vdW(1#k+D<{8404*qDlCYC?D#P;P7i$40N$q&DyIK>5;p5Zmk_Q zJh;gW%eNg>?dS~d1@WFsQ^8H==pmqOo`%hYike&TU-g76!dpaJk6((QCA6DyLMQaZ z9N>T1lH4Kg=fk8CXPW;86?9+-GfehjXRX^5KD2$jkKHTh1ACtHZmWR2+j6)UUGXzPmPEb71votOc&O*zXhQn zU#E1a#bjq&4J_`NXGeUa0?dj9QRHQCYeP2kEeD;V~o)i-Ni)t&I96g7ruUu5*q4XHcqX z0l}E|(B?+%CdN@+-}|ad$;`qizw50hQeyc#yqJ(5Ct)_x5EHk@t(#6-MdITY zyL7wGqT6WJL=17I6sGQVAcN)>7L8JF*=3!M!Lm-|_>%z%+p)B^CP-?5qWg($vXgo) zJCY)`Y4_PBGb5G$jb;1#)8|IL(0<>Xc5lLp0Bd?Q;n4^s)oh{IPH@r{L2c4~jbcGr z;OCQ{))#w4P#9}O;Hy7K1uy9LR11^CqUN|37Fl;RjIQcb7qJr;& z8PE@y+Pu&@Oxt+!Pbs^3DYq*=j1A$xant(-0{~5{P8Wi_(wT+v$IYFDL2vjqEITH4 z4}jG!llz8Ye|5ZD7xkgjntI|YxELK^tK1GRVJY$0NMXmA(cY_64CeTu~ zR9Co6oaI;h=1vsW@D4|NMtohvN+vVsX+gXZ2Htln?$h^%R9@5KSt#g@{*bHIi7E~3 zY_hForQ+fXYSq!O;uk*5B3avw=D9iuh;&x3#>&@rkj!V-SvqFf1(27xnxb4WD`OxX zYbTCf4?gk?=|&**wZtid9XGrc%dF{#OA;}J`?p83zQXtZ@tjnG#FaKkEH&4Gxg8+u5VCMGrhWoJfv|7zGNFLxPf zsA`c~7lXFWe{)r1<6sz&;a4*y+$pazeT7xrf3qOTVdAHu3t?AcO=XR7alShG0%e~r zGn2XyFKdYzj!mD?vi4Cvi7UfA|BV=w8Xa3kR2#;88Yg4ZU_mc{Jno}*)m}9OCL|z_ zq^I$-9MyzCkS6 z6_w%BoH6{^Ipa9iyCN?>OHOf}5003hI# zvAWMUS|_IFvtixv7&P%RD5mMqWPgZ2lLi^3drp^Z*~yWxo)NsoN^-{^E`)GD=3INE zn0bbA)s7tx*aj+jVE9Fz9~8D5{5A?x^XD6h?i+J-IM!Vxx(e&^`#h@lIW!?umZ#&Q zp_Zg_ha>n5OaSNFzL=8XX-o}w;j1=9R#YqdqZ~_^!f0HV8Vfl3dPF9Xup2_&qu~Jq z+@64w49^KBXVK@?14PfZ68X0V{yi;!70{l+t%|=%5$KCi+%PvdG9=TBzT-V-9i0s% z4NIu_`aSu&Crs?-iM{XeISd_7k0Kgde$kMhq4|)pOhqmc!JAY7&Knw$;?A-h@=Pu= zVPf@5X+n@!9Ue}E^CcSlz8?~Q$LXehW=fQQGe;kwKa?VDDYDFZLz#a?I^2`6=bu&u z&(UQIe!GSa!I<3@=0fP_JtI*tMhC|!ooqj~AsJO=KPSRd@~!xh4+bN*3Anv%qY*de z5eYNyDW}IDze!!t`XI3nw#BYTyXVfN69Ng6Y1-b2y}k;VHjnF_x*mCZ@>5P37_lc7 zCl#FK2gA7M_9**~`>z1I#k*VCt@iPGZy7q@O&+G3_-8F-Lb*{({R3iD^S^(SC5MvO z0f*-*auTK9yIj}(5Rp_FMSPY&#~y;cpqiKZdDY=|^|bapMzql2_uslog1lGwn{N?j zX_P%oK~u@Oeu_b0!upw@hR}KT%^WYb9wkXIne(o-c&MWjom3n-IDX<>Z}zV_vD`4b zVvSb;)NA`SW@IoGF4_5ML=9~+?LAO67KTkE(6RB|%@6T5yaLCi9v*i$F!N8NV{+l0 zsqdv_jnIW3Le#wOrT+BPS*orRspa?IoKk#*&r?c`H67wdKf<-BBzWBKUzzTf$Mwqc zT!$ika&~{>U+zc&Z#Whb?d(7Cjpy%8+y#$RA)XRV^Kl>vqiaJnCL0q1&Z}Vi)c)wL zk*j?&?t=TRXTu}N{ItxEBn)TDsIC4FA-N@oMDd8iiNNqosOYJLtUOqqFeGJv#Qb7F zZM*ls+;s2R|6RqQXwXuyo;bew@z`YAyj5B-EcH9 zhRg`)K{`nsf5U>sJT9P|(;=q7WMrA5UsRUnFK#>>KVi-RXi-_KG1{y5%QN&K5Lzs& zUdqb%J_h+N|Jm32CDw6;by^Bv>sp&YT>P{N-w5J^jKeL#i#BO(iINK4PuQ3DrX-n042C z$d^S%W=kWVP%BBUC7#p;ri4SFZfUIrY}qE)rzR}#Lz&(FEnQGn=E`94ufZi#t2hGC zg`9?9)`Gs_4{MiSiN|6`Y#|6{ESqHVgkd$0F<{3fnZ<>*elbCdUSBMx#fN*)FU_=G z@4_|GEyY4f<<)Gp)i0(s+YP8gc=N8pP_`wbOCza zJC+*$ z>2_7Bf&~XLjaTwkJq;!qCga+#)UWD+`~y6$yF-CQpj~vJiDONSAWYqQko@R)=ylRC z5l@zJlIn$fKDkuQ5>T?xa9KH{9MF>xQ|47~ZC0I_ZkREF-RMw`V89nD9<*tcQ}frh z(0k2yF_#NUZ_b4+JTMJN{nH{VXRqxERfkLybceI%HkY{a%=N#LDkn)$naJQj!8NZ{ z*6~vtCWrjNLX841R;brvISX=}w{>V=7OQ*sqz(TCDC;L7Ra*`Et*T8T*I}1pvrvLr zS-ssBt|Z2M$A&I%Dg~!IZQ~|dBXT+^=3w0NIbVIGwuNxsN-i`ww0>Xmn9PXnY^QcK zZx`)z03dhX;jm6$d7b^j&VGn)R=x`m3@PY{1yE~2rvZAquN~iHfMfCPeKP`+OnuUC zy|TM_?k>9GfEUuWGxSxD@FXe}wGbR1H#EnPz7^HaWrY(zclkhTxo38bF^OJE_Y*J- zUgVdNN~(*1H8&Z4()M6FfC_3YaTEj8wFovCsl~^^NXiy8iwXAG2u4v8_DZ5J2-ZWv zff2aT2W9oclwwEmO28or{2r10NFtl=P9>b_6ubgk4!?-3nND^&oE0Gy$=ra!>@(Ly z8ozLhbD#s#sDqhpb_kyMZ@0YnK5p8%G$~pwHxw_mYr2qNv>9`67^Vjvi>WYsg??Su zrIU(24N96iw>N(5-WT4q7@`Y2_ukp2v09X55%Y+3fr+c_47d{_XvLIg(G1Wb$C581 zmCt!cX(MM8%+f9}{)7Mn>0UVFp2Tobr-a0{Tymj`q2<;fRS<(Mw080#=#L|BGJbCV zzir-gA)l#5-_Cl5m7sZw9H)x#yVO7j?Ea7BYreTPfuHt~&I_}?)|(miT{3Jud*lzT zZcoeWhxlI9;qbE&YEkz@ocV{HWn-A1O(ys~b=K_1M7*vz`YuJw0g!em^Rnd@+fiUf z6&%>^?aQu=N(r0RxhNoWMv(?0^>%)jxLwQaJZG4>*|eVZ{ZfKRT|OtFLgYN%;Xx6{ zqn~6!WY~^76;?wclF`CGFbsK{FoE=rmZMN2=#mS5aQ0v>AE^~nbve;fE+)>|#!3z~ zPabE=F7cJ*dcdD|1bK2|x%pa^C z7?M*ATZYxOXu9Kt?-UPEpAVqNsZaS7*S}8B99yyF7n4c8T?%<2x10E~?V}$pF%LMQ ze_85cQ0-H}DFCg~v(|8MHi{gc16Hy~vf~?awi&{ZYwfvZaNcBCxDaAFD zhWL+Urfm|l8_zztD$2BO-rl2AN%=_k&HrcJ^*)qROF<7G*SR%D?;N-THi7 zMkNYOeGp+krb8V^m2zFip59Wuq)_lZDEF1d_k@&6PIS1Gn6|^9jtT zA#E$wS?}2G#KOCjMg4CYj^@8KoX_e|tPh7Hmd~=DagIZcYP&?0XX-9h{!G>LRN{Qa z82)ZKwww~{#nJM^A8{`|ZQ^V=HQr4U>r%gzFaLe_w0>on!|1Qsaji!O9JUBbxzT7=#CDXs%-x%XsDc^!^Esmi1#-u{_L`RZcToDb~e&QDkIf; z%;rGgyPh2@5T>krP-7l5n>Jbn=r{|(i@JGsgxv!37UozrU|DSRoD0dyvU}S$ z)~M9>BQ~OoZ(dO`_S&J2G}gdkb%u-7>SVfnP4fG`qJonVgODm!wNvdkF}>&u0`um9 zn@aL$jY6cQW3dmS-WTTY52jwY#uqk@nle9C5lkiePA{N;`|d+ufnAZ21XS24@`$=~ zJ`+D}-~`LK4_+AIVu>9hAG96uNn~|d z>CfX{X6Q5SdtUxSe+K7E;wj`-B0Un3DQCbhhvUw=Zrany5!d}y%q?*h8fX=SDO_>Y zq6>NEcn!KfHz8#sNHz(ia=vE2TW+-{=utCAsnv{Dv;3!Ukyzv!O}_e23}elIMmQP> z-%~v^*E(>;f?FVYi|-H^#{I7k#bLh-@ind%n!ag_N?0TP3VCMCR)E_yK zD13DJW@t=2g3|{^`FqBCZ0B&K#y@?1gwdE8UX1-QF_6tJA%B>l7c&qHoPtt}x24k& z|K34G0$)7VAaHb_F7Yd9q|j#|1}HR#;0T8riJmK#r=9#m`Q?AeJ}#lK?5C$ku@H@Y zjgiUlz|74DK~(G4tzN*fjI7gjNC~l|nhOeq%Z%yq#_^6QU=soxfP-kbyz;1ep*GNs zLDc7nLzDjbV4y_|xwN9gHTql2jS%@e-;r4K*O8g}&Hsn0vkYsx@BjXJ>WL@_NKRUW z(VZftba$uHjnd7j(#`0WmUg5tU`mf3-IEYTju>p@?p@dY{~yPFKlwe}!@ZC1=N+#J zZ!s)G+-b<>DD}%N!lh@g-o8Jy;$DB4p?uHacJg}V76m6-W$WJItOw(T0MU!KEPds# zblm~&dK0wmg!Ht*ligTD1_U;^eKQxQ5C&&Bi_ypE;%m(bAL}@me zQw5O1F8qrM7Zx+k5cI|tX$9|PI@~DhrV#c#lV-a2fp4&$o=$#Cwo1j?AT!~)-lN#3 zJ#QUO$kpHm6Cnv_zx%Amk0ntGrM4lKzB3GWJ;)Ox7aUpKRm0XlxcG@hCGN7_*bq-x z>y~1u7cp)(mobc9!Po3;^}W$xi%dv$2^5ci;ND_<|G1l5x}fAR;_aX`o29HyA7(*R#*^{3xt|bY7lIi!f5sPr zGj|V6>GWzuq9D#+nDrO{R#D6p%;AM~yRpvO;uAlgFa(J?)Qfd_r4|QLI$=xd+RNOT z0~1E_=<#n2oXh{F-{3ZRZbyDPy1n=_c|EP`R)~R(!Sm(M%G(dbW zLp)#R2WqV!&vY1q3gItkVK36J?2HK?VTpf{|04MH_b)qq!{~ooK%ej}pv>x*aXDK4 zKIw}s(;ELMClaNTKLlo0)wG^iI4B!tekfPv)96ra&< zqg88T;|}#~(_Th?9qcSONw zdi$hPIji9QX(^5+*slkukImE&a;>}Al zc!dF4C-$#-WF7ZBL*%aw6$u@(G9EID zarNOlN(i!0H!VqVl7+a=>+NbdBQ#YW@wRO&_xwLXlBQSYt!aE;pAgNE<0;kfy&{b z9i@kU;&C<>vyXhtX=kihcWhB#=aTEvYV-j7JS|FP1aa?G(7BZ1pv#vwaXY5@fr*hA zRzuumF8vQ!B8o!t*T|w|)BQ}h0`FR+W%%vnx8M{#qT@;=G+rjO)x=4X{)2{6XhIi8 z)NE2_)04vQx9mjpmZ37j-tkOwY|6uTGHA9$0^EfUNi+0&yJg&@q@%6+ybokTdgAuN zipzKX_An$*QG}djp0uEZ7I7v@dj2LKG<#IZjA9=lTpm9lU_Hom^9PsTjk^W$jyBxB zN%;^k)2oDh45%y$pKO`mSyrg}HbU{{;eh8~iV}(s2}J*;Ff*%WWmRyi_fu3>RNhzD z>->v~Zk!#iMJjnK>^2@DbRe-yJ9X%;Jwf-mz|}kL^1Xmh2&yM!aw!DyXJ?_I7@uH^ zp;%yag(H;C?;>rnoYf~TBW~fbJ2LA2SazXFO7DBjluU#|@HSs%44FDF^acHOVlb9J zu4Ffd)TUhg9+2@_VCMPjH>}sRK0TwRtO3<^5G9v01xFd?vVWi{l-+85H?P-zLqx-N z!FM-;$^v+TtcC}garPvoy5UNE?&Jy4mRy<;^AnYT>J-Z=idQ-u!O_dZ0^5=SpKeJE zaSl{*Wk`sQ#0SvoFkf&F$Mhs5<4%I}ieE2rU7;}WQ{^tDKD=xjsKOH%ZHc6WZTM}R zGer&KR0TuhRu`#Vdul~hCJdOmwcl?x!s_m5bCKa~q>R1fS`t?&xk-vN-4tV>7*Xb0}f;q9$`RzFXLny-}Of9y6wZAIOOGxnij(`v#%LO#@6CDkpn`O zu2kU{k6j7_rA=5$GO{`tsy2Uv?}#bU?!N5!t&;QUh5}(%^Qqan=-k<@@w?z9mq)DTIZm>)olUbIti1nQz+@fr{r2@p02Wq1ZjHvkN#xfXuYC{#^pGNWF`i7@UQy^ ztR0kaWXv=EO6_u^|p-5W^4nmwq~oC`71= za0e&hjG*PZVYf<$aFbzermP?zP~dNp)6**9p@s{nYIR}{*J~La3ATbHs2cxCS0YYg zbBMLS*DLLDPb^b7n{;vMZ*r6pf{H9uc|Jhd`-W@pr%~L7AT3TIm$Gq0`u^EUfacDe z61N?*9y*pCZZpLsgTd@RjBTKu-1t?B{p;aV!Jqig36wDk7nLweu(gD95t1%8&5-L1 z&-dPFci}u6DzU%_-Ob^uJ>c~$S7Zqr#W7;EI9vzkF%zk)1`emOMfY1yfJi~%_B_J$ zX+S`H@v~4ngDc_{(*OMQE%(Wl(kV&2l0;?Mc#HF5P*y7uaWzqtha||66h9G0Q?`Z> zg5b>*zr>dv_IVfPDV5D*ju2&?28nb6QJ*63CQZ$-c#wFMf$PPA!EO`rq1q1zeq%2C z-EYo+?zJ~u90)x;{#GiwX=+Yi3e11su^_6>84Vd;{hGBr{tc|iVqIF}w3Oy0;xX$o zkSAKlq|~gcI{u#C%G^K-UMQZYUy96F6lrGEIsj$vniw(qS!6{eDu};7&FIezIPlQ$ ztS~Kdto${RVZqw@R&9;{w3Th)QS#DPcV59<_a+VR;XGnzu+s9Nw2ViTAv=#<-PaYZ zohBn=;9y=y;kTAt5x~{%^@A0MP>otU2*lUG$WTf_XYac^>b+REy8aKp04;$kzM3a7 z){dWkAmLh$aU1|s^`p$tr}4QJ;nnG2U%EN&rgh6fHIrDg-gN!JvDc+08nOnni!w&# zC5?iORM$3tm3wPYMI~fqmK7A0rPrrtwPk94iWk%2&;wRT^Azit&(>2|7+n>-46g5l z#3eCU9Myy-o4rhd>LQQ1!)$D;1(g?>ZzmY{fFb1Y)swz;*i(pID)uU{Xp5u-K<<07@-h|Qf?0fUfCV>9Q6&NQ)#MoMg6}8;Ox7SkkJx0}@D}3kGL!g~! zoc=k&o3AKRxafA3F!rTMf2gkbw9r&X3}Su3ens(Exhg|Jks!x0Bku~MBG~MryMGS3 z)`Fylecgjg_oAxSr;<{mo9Rpb<#;ETHbvrsxkLOKHH*6U;e$4t$LzUqH|L_Dq=Lk%!LD5CU**W7!+AY?9t%*sY zS?Y(G^}PcQqEQ-axuI%^D9GIe>F1z`2 zO}nvMRUXZ3+t`7R93|Tng%rs)t4Y%1LGP~aG>jv+6E4eEjknof84`;fVKrLNBleR(}OO}ZTj-n(aFtX z+5%XGOcjA@67^P;=At%L0y*>I|AxFEj2dn(Pt&hj`_dV;Glw`}V5h{$RHeLcCQRfrvp{rO656b`v%S zs=aaRIF*~pUknKO@VloYhDXFGvJ7+N~lD%`XpGEZt0PSv_N5%(@`T zTD3^8Z5An1NDtHmYRN|=tJOxO!@g_P3JVBTZDU;DiskBvnN4TKYC~dt>Bc5IFFGJ+ znxNx0hf5@_xORZvm^O6KSGfD%Y9}+VZ0GSE)8c}vGXCEpofInh^_9wcXE68r(!u7I zNJxWTMY-|tYsuH38x*}qR(WwAR{?v7eG-M)+KWoRy&r^W>=vTiV&pcz+gpU`GZ@c0 z%0{zAl)OI%40+MYn6a0L=cEd0!oN8Lz#dO#T~b}Rw?bbW@((xaY{Q7193Tr3{`nRM ztKMuF-b;6lL2f&9I%V6;BjIQZ#43`xH;+|zg}q_|AEa=uW>Nq@Qrh#0G2WKkkm9)3 zBnC)Adgqtefun1T4e4VGiv_6#ktsWaOv#<;bxU6}GG2`Xi{LA_*Y1VUfi-yzmjQ3d z#!WY&qy%ArI#f6v?~JTp!_WF!r!G z&6iPSe_*e~jBO!7{JBR94Jp-P;VQRNs-i;aj1Q_AOS56?-sxX&EiR-0d!z-hj9uWCm?fF&2mYBd3hnH!MxiTaKELskW-my&Fr0Cf*xff z@>;spFlo=Xuq$vvNJJVaSrMtwzN*XBsyV_9)@aEAT}ndKBrH804H+No#c0nWQ^V$1e#=!Lw zDrrT@Q2bKD+G%IXHCDrY#W&3ZZen_B^R9N+p=mukE@(pUY?T8gqr&G~Wy8;Q+$|6E zeaaCUe~9!O`*|??V4?cP`qw2yDx6G@5f|CJ2z@DqmIb1oaF8=8+BM}j zq*+9e&O|gqAGR~R(p-)pTJcG0!zuY+TlX_`Dolsu>!Xck!Nk4~ora%w%iG=N^an>> zosc}8tS#r5v>WkR6N>Y?eE=T*d;e3dW~0<-yc2V493t&jJC&?QVGu*<+CwiIiX%HK zVb&PqP>X@;h=0hRSk$mD4H&+Grcleqb4w1%6ziE|C^v5W)ZHRfT{iQ_9v4S}C91C` z4U!mG0pUz*=du&X@SscfPRL)VprV#tj}glD8?lkr)AL@8-H6>Tc*v&zu_gI^xfhD7 zM!_r1EF}3e=Fy&*TpuYDKubsesdc8TO{KVZbjQiZEcWovtgF<6+IBadPcUbz*f4xs zRCtF=6w$7#l01{x!`p*p8vPVj{u!Zs3Wee=wuNH5347P6|X{*jZeaYcDR@OA@=iK2_pA&BsdB9LkVDvLFul-8U3*VW7?1H zT=cS=A;%w7o>ulZ?0S_rI`!~`k?vR=&yW=Gxe%j3*B;xu-phv!Lol z&{%m2FCYf)!#0erFKqhI@yfrxJns#F2M`*aX(|>CQ5``J2ADy1^BC3JuqR^Zs?AfK zrJmz&*sJJ3430|(`c~Lm@hm8+3srRDqZ)d}lnY12BCM>}zY61tVH+xS@hQujt)=MP zr>hkVR7{}_Ln!pY-a+YF9VXVc*FUo7g*Vbm zr;vv-@dV;gM_Taf(y_91UwIR?21>7Bx%5{(;{_(7*{7>{f96l@YRU+?ZV+#CyM|h} zJ6{ytblx`5^Tw0?_et{~m8nf_>ruD0RI)({wz6p5Gt<;2ob7K$tl!K1Op`Ng-a}w} zLvT-4qfYlm5CXBIZd^C{Hmk=G(aNP7Za(p#8^TGzD)a9M8#c$Cn}iL|J*xJ|5hxY! zlb&x!|9v?%J}9=K5}+q&nmM+0FT}$%gGT$~B}EOW9UcF49vur#G`-8_1iEEh1W|R5 zG;I5eyOF3rQ33kTN=+D z^MYjheBD1ujyr~pl-Nr5@mIw1haKzf8#>YPvhA=9lD?f=D|Anrai!2mBH)<}tyA}Q zO9yTI=4vz5qibnd6K!P&2PQfF2@`ktsv(=#+NrNB?rv72_~)S;kA?L z%cf-9N!J2_C6_PxADHL!X#;e)6N;=}Hu@rW%rhwcHm4`qJu<<$M`PbS++AwfmK6;& z?31V_X_sWll1x+bI)~-kdh5VnB6HtsQ?F;zS%;C%EpvrYbL|tOH$$eP8jnVZ_Ld}j zjED77@AoNix;^T^jpN^_X>Io*_43D_N96he-+@cV3j@Z}z3CfF$;*}5!g`TakxenK z)t~Y>b)R{zToc)3ow~WkKY^`Lk=5^O!NbzH2EJCS-wOM$*XgFn02fB>L4MxKX&L>c z&WvcoG%fG?R5Qm3K33tmaxvDf3ByIV*3;Zkdo-|;SZ2)B>NXo#-MW~i-pp_PPU-el zzAH%ksM2%S476C~q+jRb7PDgI@8&bM-DzK`|CCFd;EqXg3w8g$hy7jqCjkUs@H;tT<>smR(CN9EW zANV4jH^WZb9OIaBA0=$oQ~RWOz$6bfi%Okm3O)uj0$|)er55Srw2=LKKxED7g?+M8 zt{qp0Cy=hRN;x>VA>yl}<>o4|XQJY)w2X!6;E9*fe(zcnl4fB|Am13+NWlXm$eMvf z=D#G#c5}!C!q@rUr=N$%*kYdz{N}p4;s)YAp1F~Mp37=4@#T_ZbJWocQNw=|^*Mc0 z;@8L*F&xsKCdPwox?=VsqAa)naX=^~`e9(#$NI}Be-9$ngg<339ZN=&htmVkgfH_< zU`b3YG~Lm%zMq4UuRKsvzMt`g=QWNks5~E*yftkLJ`Q-_|8j@lB6#k$L+t28>o_N+~bv-f8#L#Q#Y^lC+lCI z;}_%73KXVsQ|IL>%4u<@1+){ervem{atr2+L=uHOv8%<3J3ULNYr zc4p6`DFv7j;RHawpkj!zo05~`_?rZa{l7;n?8 zO@(iqLMsJ>qa$~fU>4|9d|Z{3%Bibtp0H(SUwmr(?i*+jhHg zNwwT*rk_7UwRXK(>{dKq^iooMW$5rx72^IJ1AXR6zw2fbioy|dpJ}dzUK688PM~sm zBmC>w7^PE#&vF21K5S{*f1gZHqR?=?P$Re*bM1Et7yTj+xS&Vd*!*HAj6Hq0*=3%s zK09s?kA!aokAE0d@SR$1;&d#O6ViGOrn9PIgNE#za<#7xybNx7v&P-bZ{%1dt~1Yn zUT5~stXfxC%Jh^%#xL2WUd58R7XH6zo1SAq z12qiwU2N4e`IM97V4`p>LMsbSC5vxD_LrujZoF)3(=Yit^Uu*4w6Bjz zJz%w&jo;Us%@YDGgKE?4?3zj+R*-Nt;+ooSQwDr@?0(aG$ zG{<@0$2&TVzf;CG3vvg*o~iTf{z46>x10R5DF#%S>l!$QSGkgl3^Mmfz2Ccf5!bYTzj*NDMtCN;7fJOwfegAh&T)K)dlOEuCw zLgrd~RWOmf-bXXztx-oz!(0nQGmO1UuPe>%8q+JeWgA}km^LTm_-7S;K)?ZeL^w~$ z0td0lL-%wwi%`3`_Btl*ecDb6ABE-|P>H z9hCxUP?Huk2`j;eG}=(!U?~b8J9Fu}NdrxXrMx^=Jd#{yrTZe%Yu2xp}mQ%PhUzu@>! z;XLji0=6FACr@Mf^zU_4|Ct~shJL2&(clkd9Ppvw2u?HJCi+v7?)z{^D0)JlF-YDK z4KeH^{C1u4K4wy%I4qLxilB2>OB2UOlvYc1hXS34y>Uc}=)39YF?IZEo08ct$*wqJ zi7(RlRuGs5VS>muuMr8e9e%}zH=(YW{0!i&Y`Mxdr?oClx{zzUinoNKf z;=ulyP)&)y3>y)>ceBv)84!D;BgmZbLnc5shV*@uHgPhT^@Q^9=ilC*g>C`6kp5yu znS?DrGW{;iux;H4^3_x!BG&A0jS+<|lVKzGKHfMPZ+hk?ctnvV+B%}jXTc{iD}Xr* zCtHZDqWaP}b!t`q`!3NO&3irEt{S*4hOIK~DV}1G)Mg3(ve$}Hdkp9hYs8FtwWxTe zCoxqXOR7uy5__0p6W6N*PfI_9JOPIOu#uAjgi`YbE57QMpTPOBmH*9CgL;TkaCCbgP?KBixGcgltAyNI!>7U-EkSemA>ys`Q}O=FOWotU-SG@y#&_QP0Ev{$>XpZQK^&HXf8A92&Vf92B?9);&ynh(D!bll7_j zgxx%KEjc=r%j)-KhHQy{wEH6yjIpzb`!dngFzcmMwV z==py>Sd}toSrzMhPJ!3Z^$0I79^FM-T`DB(4{ovHL<%?a`N!*`cjCfxHqUWn7(y(R zlx_M-Csb6$xSb2Q3!jrb`-pj?8e>)!U(MI-E@mcn zIhF5m>1HON3MpxcBX2aAl`?EOI-D@tD-XH5-j-=r7V3B-wpLNcU&dqO(AZKaav(Y; zPTkR%W464+8-4yX9{zPlG&Uc&Gjm=(_F&&Iy)=)b&{-r?vnj6*G~&p~C0XMbWmq|C z-=$>f=awVz{a1afb)67?k2$zfNvJJ0uWo7%ayWkgGBLTX5pwvmluoU<9pGIKIE8_&FkKmrEMpK`obGyppC1rYkEVL#+Ft${=dibluMeaIH68pLP)PyZ`7BMjZMDc+ih%YZH6EM`1^E&K^hYMYvGl8?)+K0 zkkvC;^V|+IMx*K`yOBGJQh6yedr5E=G`8D9xd_5FsS|8*$JpfF9pWmu^z`IVJP!F_jcJDHEGq zc+$X0t?=N%9l`1`mWNl7EFIG=FXsCp!?L!yJ7j|iL`4%i9$#+&wdyC)U?W3p&P5#h=)$Nbd>pC#fZcT@6reutR z_?4HPN`nS3UUaOVg;@_gwxsYNd!HPt`tg>@b(=wQlA10}Ca1`!WhhyX4kvT^6VeNF zTHFF~1uIUT7AGJ`Pc@yHqgn;t6Iw-Bl``E+`q%}0OYCM3EmpL`i5sk2ly1DAE+flf z>PQervq&P$G&dmIH+FSkltvE+Qr+4jnoO5D>s}^8&F2dQa^2H^7I{4k^k!v#myFZB z_6_r4bi*F?v{$k+mpqYxi4mHS+5o$Epe(GCe?9{Sb^%M=OwBSw{ZM=+z#1ra&5kF# zssBQ-@~w)0-i^#AE|_`04DDP!P2dwj?VFdd*qL5mK zI0DCRz`z0rjPN+lI^bid06vMy=wsSq6JpqP_GXY=`-=(JKV*Weon$lvg#T3*{09du z^^Ay{*K9~By%oA(Zh$0g9@_>6cfWOLUR}v}@8&!cad!9@ZlSlaD&mWrfq%qC_kU%{ z1}F>V>~Yb^A8VOINLmOn9@-})TJJB^@b42;Zu;F5hy5*L<^Xq1HG%lfT9p?_KCN9w z_?hEZm@{(}G-j7d9jn>0VO2!4wzS~}9(WVPv}%GfzWu|~c3HpNH+63%SSPtxTyja8 znrk`z6J5FoBP|Pjm%-^1mAjw8W2letEsWbb5IrJukMLN z12BHysg5`}rS6@I^;vVUp$M&cHGj2lRMoh!6s1^AuYnoXdBu;R`3*bQ7Kg8RCuB|w z^JauUdFCtI*0|Gwsd9>crMx0y43t(WwNeT3lh82EPMl$pn0aa6ZZ;3dHFEX6Ae!0d z?zH+Tcrbh6z^zO>+92%p2gc#Ec=^EQW3cAFhkKmM7w1>Cv5vhiDlHb73%(`&>ZPy- zL$lw{bS?t5m#GV$LQBx!oO?a$IOvRoD6FPW#eKAk2s8#k{?R-9brM{z)VBFb+2LVc z0aZSQc}TS1RrkC;qvq)Q7-U(kWLt&*yTMA>px^%VZi8u5Q1@6OQkNX{yw|`STRQ;w zVCxs>@Top7InXN#R7sf-u-MwlYA4W4VKZ33rLIlF5QiIWHlj%ceVD4`#xPb4Ow_?V zSryEe<`5*f3;Dk-+@{CWp{Fm2{nL{5>>8Ui%^PYrmw>0kKbpt9D(N?GlxpS~DlH~u z(g1vrmc-XUk(9kGS2#q}vhZA3z*dUQztABhF1TsJF-W!|1DqKoykp&DZhgDz7-C!G z0^@>+Ey%Tqix^c^O^R@Y-Rfy})jJ{cAmDz~fzxZ=1i89xf5*DlA>*V_j{w!j+11tj ze-ytM2TKtICFRhHS66;8u&*7%uRgX|g+c?`#tg2RMpmZ#ftP1>&io&bMs|kFcb=zX z+v2O-e&vfkNck2$q5JqY_Vy$~#T_kr^^+0Qw_6>|k8z7$v2)@IX-uUJCmY3(cC>ow znTMn-BY8LvJna&Dls=-_91!8&MfA=al-nF+!t`A)C+`b7eoBeH^ePLoVUa^CxNebs zBV&Gh+O5KkW(?k7w!8M!d&1byRT&F1?3Axnr>**#!+H&oz=C13>GX)my^g-yWoCWS zf_DQEsZpOuwGJF2UVwvS&>JQ73jIm(E=F)*%3?oACxM+8=C37htU19lhDz+ z>bN6e<5)CBnnfx!sxw5;@i&!BJ3rPu;O{#IEqFWYfO(x>G9Xi{1fqdK0hb7xVCFxyWvV0-A~a=l6+d=rUkch>G1 z55?)~!zXWOmwu}lKFr?xM~QMnj5#%L4ZQxE$`rflq*`PQx) znH9$tenZ11RLWaTIwHFN+9WP%wPK6ub}uLvpMNGe)trd{08iMjT2rbM3$vtcYy;3> zXTL`)Atb=S1jTL2rzj1IVr(Eb_2lYx1-Sj@qPMn8g|l9c^Qy2y##`qH#bglEOe&`1 zw}X3R!s3a| zcftD@ihMNJ>f9GHu)KsEl=GhO|MB+o^|B7ImmQhAQngXgLu2x z>s;wWaq~8rokJO<_BLVV|K`u|_p?WMD+L7vxoi1yjn8wA@i&=CJ3-i| zis}bqVjAiK-#OqVuOa-H zGnZoiX`{SXm%<4%KE4K$`}3qtuprxNCfc${7Q6Zdi*nw8k77#d9vZ7g@iTn>V`!v9 zf^eJm3o~Fr!+YAGB8{x;)-0aAAm4!9VB2I8_2i=EKA3MVC6i zw-Mi@2q<9HSzjkFv4W23X;RHe(~7GuKuhH8d=QT`&@c0xAJ+0h3A~mw;8d4o7g3W) z7Hut1(`->ycNeQwRtTS;V>jy7WN}QN$c)>i-y|VsovBO<&8lpDV?3Fbv|#2Jf0)W( zsN(HM<~WxZS$9-ghE*x9s;g4V>1{U{NOlP1&IBAAb2?@N@0(6QtPOLf1=V^K-4Yf? zuSbNlT8EWA(hzWWX%~ft*5Oxv-nmTqK4Lwa^H38D#VrS3_&Yrt`<@@^$$>9R0J)&k zg-L&*B&9s_zeO@jkm2x>3G$SSeu&2lZu(;qkL0XiKZS*%FUr z_MafD&}q9~^9tt?OF;{^fthZPW+{AGWBsojCMIhH*y#v!~uo}ID2Kh=f8WJJ1x z|NT(2uuekxfQE998js0Kj`Ql5=dEsaAhCUrPE-Mg3W%`sE`qekFK~_2(n=!`8}&(H z@f4lPTI&mg0tP2mER^@;SHJ&8pGIO+i~;KSz>&PPx!UTg`vxmXj;si6Rk z!*dJzaP6j^duhYWx+H}!MS^l{w+VtSr3d)r%Kpf_(L3Xe^wK9?EhE1c(NDuCf5q}x zovQJrep*>|r*S=Vx8kbf2*R*CJ9SSr5*Gv=VgX^rgu%rQF6Q^b2th;S9lK1HSei8w zLe3yB)gmtqPYg__C@T;e#}rh2w&>CFTdF*iS^rX__@2@^&2B6uoQ$KX*b>Wdbs`b9 zWi#yyhy?EB>}K=_=?(tS6uOS?56V+Vz8EMe);*DZu^05S1tUfWf4IH+@Wq!Q)g;;e zr%?p;}mF=*9Vwxq|{j(lI1dPlQp0iHNv&LL)-(OL*C$FtHD>PFR3Fw8fTw;Oi$bhJ_TFzhei+#+X_#Qk?A%6eLbTcS(4(ZoaL@e5?!WG13 zLMw6*^ttu;bsOeIJdT>XEXASgpuhJ<=#E(k1^MNT)#6q#`KD7)`eWy@3!*rktc(5r z)#NQ!foRhzfV9=2$nf*cw`-i`?b%D((|6OTfGR(AeLMYna#T8cY63{Vph@|&bs1h2&xw+o6u6FqBq5uOt z)K{$j|9j_p{@WyO6LmkNbec;;eLjl!=6wXkowo7&nR~FMaIHB3SCRkZz5ZkMKgU}n z(zTi2`ibfcT-j#XyA?C}sy(PSwK|*6k;+jQ%hJ(3BQ5%DwNnBoBzwu$qj6%lq9r_np2bD7Ed;ab-(#Wwe-a#_h_g{r)s!+=)raK7wGXSxl9cr?&T7{w63kil zxA84c*y4Wb2W;4A7zq^wi9d;;?H;&ZdQjU57oeTV@hIgX5bj+o-S%*(9g}hhXT4wu zG3d>-cKBjd3W$hjEQQdHl27oCzS6pkH9j)TJ2Z@wE95emJ{ZgQB)NP&@0*YZo<`)Z zs$ZCnJJN#Mh`BIO;*k~+sa)gY_a;q)?$t4jHec-n%xEISW@VmN%OG2mlSZF)fH08@n1qktIZ$PY=m#HbiSHypJ#P) z5Q!%8^G@D4u^dexEI?BhZmv=%3ZdVSFuh>X)mMMQ7JM7A1KK%C#H- z*Gfw?H{&YwSFH!hll3P=dL0O63MlXFr7_PI_mnCJ&JE0&#?>x%XT0zLh_QIjOMcr^ zaU0=%HhWpWv7p{kACpj!j_=Lswx&yVURnOJuIAjHD?xDe1Emdjm8Sl3X$0u>e7edZ ztDl&U;nc|pp>2o6uPrGByOA1PSeJC%KRw6y4wG*G?ZrOyMTMXJO8G7mA>S7Pv6(Mv z-C=LG%ifE$euII+LQnkYSTU-JMWv#*IUvZ)s?WdbNFt?4*1BQ4rj7h>2kTjv(3GwD ziR93foni6=u-PPIA{YRRDdM2Mdo~l2<9HHw=qDj0->w=>rojw-7rrS}gKBi{ zl!}a*NVoP$9YfkNAV|Cw08@Pk6v}ZTXqDg^lY{vI$!XMoEW<`AtFVHJ{k;3Y@#OJ^ z9{`AmIkXIk_kUAF*7F6tL%N4_a_(W)y@WW(Poy$MWOsmlX62o@6m{PHQ>=@@V*zd{ z9I^Cw3Ni^LI3gZ4%wS4dT=ehqP)!_*8UWRWZ5{3c0PO9L^;H%DP6)4*nfx(pPf=t--=Lm80RZEC3eTG_tS;E znGDIu+m+=3Sq$KW2R2MxR3_DN$G_5!0aWdRr4jPLz`Xfwa{Z01oC8@lTFF>E@~Cb@ zin9#yz8UuePfXM3b>Q;NF2D?B{JH8x{mq9HJDn0r#4khRA{M9M|ar1!6PR2Z6Yd_z2 zy7@@J{r^`D+hs#rBG=NlwiZck>t)}}oc$SBtbQa=KcOR`aXhy_;@$f^Ub(~o&UNs< z%ywbZIP}x_Vk*{CSN9ITY_>-;8XN<@Cq+vewB7RO?+F)@wRD;gWbi(X=GNNdz%>qnN6#4qVOQg-v_hN^M z5j_!CVe3L6yW|1dB!K~q?Ib>Q2BUQ5aoTwOq&7y+oUj_^wsd1Tg&=knBdXNpYYYVA82qUJW>@bz!LJ z4c0hQrTTM48vL@aYmJ?+Ln4viM#LYSv8rZX-TZ>VIMeF(diLd2F2#($*%{Ya#{6b+ z`Tn6MU(>*dVD_+narL=Qc}l#PiotPq`gtfToUNGiE0cf&+K1}mbN#kq&Zb+%~4sF=MN+vO2J>q++)tmagZWY61KR)K_S4o0&5iF0b%9h0Sb6b%Pp#V83xDp1}tnn_u+Q z+Ln)O4`4o)4QPhGz11yc4Xc5P>f{2|tHtwup1`1k$Mr5$&AfMQaZaPJs)62r7#Gby zH4gibC~Rtvlk3$=vs#+>S}l+1tBUVQifOi!cCz@4oBp9aRa9U3<>McdDQ~``{-tjD zE9-KCV~sDpq|10#K393hZ&2%9GgE?1D1g2 zE+73N{f6(WoTsRYvog53a3mvmPhFWAL|jz%{Zh7bmzAhzC8H~ai(tLH#rQagU;jzZ zr1$SI?~R2It8`1BR%Ycsc>0C(h9Q?$XJYRULiFDs&ItAlUy?(d_YZ-skIrb2fG z2R%VWuM+k%!M$>Wmv=ONlTRGGbOe=|buVPf59Q>&^oy7wkra0&{TuUJ;U?E|Z|!`U z!6&j5>nUaoua#HM`S<)9(Hcgtwz9t^7ncg&5?vw#U<95eA&vMU7vPp0tZtVPy}{vo z3;1&<#EmbbDUpH0dkq6FwCc_QTSgtO|!Q<4-t^iWTuPr-Nofe<%?}CDkNyavy zj*@|ttfA!NI7*t{1!tA}JlhkJLnL+OXM9=osPDw4ldBXT?K7of$k#B&5G>fL%XZ<1`khaV?`7zR6M#qwkNIoXH85=L`Id4-M;oy31f+ zr$}BEFujkL-=<3d*#+zWAZALHmaW{#%AyU=EZ=?Ti_>aLw86gwizkLj>PmQee?ci3 zBgs%JIVH8_tWGYZcmMk1TO?Z%>|4xVCAsYq*9Mu9(+j&{yVn^g zEB=~D)V>)q6rgg9VwLcYZotZk-3ncApSLIghC>{9PgT}$C~5JuyD2#(`iSC0%;PMR zE|E@VE#F1tRY&3tdnS_4F?0wPq%+E}wqS$xmk+2`TKi(pTuNfaCKX&fHl^o!FTsYO zd@f8#Ov&Mrgm`ZrSV(^#yFZ^EfkQm(kxO3y=nj#R{J-9ZU77jq+I?x@|6%GZquScq zwtG%n+EXad;!X<$2wGeNEe^rmDeknm!=XTF@Zdp030Ay#@fHv6?obGB0fOesE6@1e zKN%Tg|K5A8b+7B1)3Zp0``+1N&hCGYA`g6+JA|J#Yk0dO^l;D4r}wNI&3YO8-l)>o z3Q#n~WLq{oGygQYom59HIm@X!qf)yXjwlyYo_8dHJZ%}K0VDBE&N&?e>G9I+A zsfL4V`v$|x_mmPU2}5OJpz%>2EKs>rm|KYLaQpj~lT9j7hnImo`pKY5z-Bxw=Yoom^{ex5zUl;yyeWBfs3g?G=DqnhGSHQ6mF z)n{qhv86lHFuA6EAbM%g1aAgrv{7OvSv;kzyyS*_>1!F{E6Lo{aMLnBEf)qv))%BW zbnn0f2|Re?5L<@)bo?Z~>ci(3t-VjDt#nG2q;L@V68`k>9|~3O!xdwY!uy^C=!j#V zi3+WD85!VMb#(Uuf7+IqwV}g&!zZ(R_=t9DNN(*mP}#hBz9@Y{zJntxHOhx&1V(O-8beiJ3^Qu2^{UAH8G2;~YbCgXf<)M;}*NBeQ`rx~=JPubB;2ioV zG(Og1l8~kvpSE#o-T`fxQ<}ef9%R);bMcrOV&A?ooF5CcgWtSN|wmEKixAT@%UbYXqUv zHlY5A9LWNc-S#^L$E?wqe3tWG5Sy5qHCtRE zBF*gl1|i&wAM_*<{ddM3K743A!FolGT2*^bJdlo6+18vl9j;Sg<-a_EZ!jKpWL18j z;&(!`J*Jn`b)3i;kZg$Zp2!bX5jf+g#|8FhmO4*5MpJfV`MY?lrOuufVHrI0YIT)3WLZ!<*_r$*k~Qhdn% ze9W@@3$T#aw{>6a7(t}Tc>7Y~QxZAW;w|HR6ty_6+nj(wMTRIR2casv{nS0g)Ml{4 z^LdTzs!PS2*NrxvAFE&Algr#HN2({I=@ibF`r=!oC?qw8LgUhotB^_|alalPKvwhV zLK5sS5+2w`C8sT9ky&Y1ZwuG2N)(rq=!^Sf;kaNZ<#gZ+`}=47N8rv;a^VC}5lv8( z6Y5Do=;=Kr%cBW>E6?81Z;@BfQ*6bjEr!2tc!Z9xka2X@PAK7-FPz_ zdyUdhK*L3ulWw~Mw;uZ%5t=cJ?9J3j{YxsUH0_(2+V6-wWr#z$T7`*}V9dXvI(m{! zM~S8765#n%l4`EQc+D%cDN!H6s;l`_%?Y?rv@cpp<%D(jB+Et-H%Rekx|T{f#EBHp zk0I9#$m;yg@xac_^Q|`De*9-~zjA92f@!TiI$EXU#T#;GxKl0eD@DY*%Qu*fC>r44i5Ip3xB9{_kd+oX%14GA|ty?>HIOCP?J_wfSB; zInYnK^M&;LIHec+RmqI2Y*K!&T@(Hx5~$y9IPs5d*rFtERp&f=?(d(Q>?abJ`;D#@ z95Sqo&(C`{E<4qQNWhG>xh3ElGcgt{z2#Tg=qu{T6Kan9(AbR@aNjKha*Vcf-O)Io zO|yH{2YuY3`DwqHjmftkN#_*H@QX%V&UWKTb+yJ=5V2BxX!Q0&Uk_SM6$Zu?@Hcw8 z4(K|REe|pr(3wNX$5dg9qDLbq?x(xm5*xX}EZvN|YdG865hd{BV8&>z{g!agsdc#g z>3_}^Ygo+pKM%W<=KqOgVTEwZ!%sfviLZq~YX1!gOPo!Z)4&^{+Fx}zeq`NzCcnEj z`G!hPt2tY~z5@!dp&!+d)aAUT6WOa8S?)ygiMU90$8kiIOLZCv6Z1Igba#u4ZXb%R zi7D0Eq{U%8xbyPto)>u(*f&dN4J7h63&sLoctQymjWbC0qbF=f8mgz|y}V%=LVXdj z>yTM?+epUsPYEl9u0D{V5glb8qujj-h!A!3^!Opi=0v6L;n;|)uvEUZ$aCtl{_>Nij52`=9;k3k!~s{lLxWb?*u=Ks$L;w-5g4C-e{oI9 zq+{>7BMk&}Pk-`$eTKV>ABG&~3!p+iRa^J2MM>C_Ib`Z3>Bq%7=%r#*Pvup6S76^y z{`e)7GX-;!n6S#e)?+Ij+H`1kaHv(=a9$wvxRHDgQv5ylegecY`Te|n0l_7%y08eO z8H~_v90}6Hl>K;}X{Y6V$>Qls#Y&e*m=J zsm(&TkTrNJautBv77DYA6UbFODpS7FoR2>Ni1qGwdm6zhR`wA&foppy7;~*bE(bl5 z5(VtZbQxwL4>wCKc zsbv&-_IRMfZvnC|#{+)6NtvykDaTSiCw=9_rl~v20VBmYLKKv-o#}Wq@kLOU6$%gH zDZRZ#xaZasdm2vGYL5(H7|Re<|BZcahhZsM^Uh=zQC5uqRv!FL3Uf>L=+<^6FmE-AMBGPD zoe=)ZHy}t8t_Qww<>`feQ!dn}q_Kpc0>y1G=!%^+pgq+^gWfG*i|Ql*OF8*mryTI} zx+q?2ye0YbW33l(779t6lg)PhwAhezbkaO9DSId5#1H!U(_sYBCGkJrtQuoP=GIbN zcTc2}?xgd69tq*g`o2|IWuXMHGEXBFteG@%d{SOA(Ew^UOc0-0c&^ ziK-P6YS)65)IvrSqzkq|8Y9@hKxnGK1194&djHVpAioUs7%dgN?0$kX=R_(A0Tu8u zHMjVE%3vL^Ia(5l3q?cXWvjFk?aQJ2R1dx-v8Jzxvr~NXjF!x(n`sD-#w1alijFhwqatMrxAVaAFL|o zK?n}giECA0JJIpTyVYfNd&_t&Cm2jAL5ag3yN; zh%WKct-Pm~81h0Bft@=vkfFMwK^A_WI{KRc?c#6DDS23r$B6ouPFs0BcLH^nXbz8l z7s?t$gg5qFeN=wf=^hl}Q)~zKfVyV_GjCAm6A2EaP3p{;C&O35^Zn1*!#V(r*Vf{+ z49SUNI}w#o!*lzLl`PbHi|D#9d!z+rr8z<{=u7F zYZ{uugamA;Kq;_d*`-UfnAsIyTtd@w9X)L~s~WRgj*Lc(RTGLMpEigqBAxi`^uOD2 zq--38WlJa(J9TTDaj0kcTSFVVMGAfADh%e{oL2O=d6deFEEnWY^#hvgHpyPPQ%k7As1hGFspDwKeHt<;bPmH?6+x_Vbaeq&h=Bb#}S8fJX} zJujlzqf<6s88BSRd|lQ;#V4UkJF3O!t2yoSLnp3UzT$_~T>0#|WRCL>1M}i?7PVlA zzeLn}e+I(L^sq)^K97wCrVlsvfXX3;U51#B(NxK&dimiTnRNhOy?rG&ZjvN}kcJVT zS|wI9yKt#4mw`7q5>I7+Xf|)P;CNcBL8r23jMa8JlU8;-g zN4XRZutJ#2X209j+Gw*%c=(MszFlFvZ; zD5nt^v{8t_@;7GB20(QjWD@uuDYD0!rR+=RqpmyhpNwjrN*5eriE`G#Hjh5)T(rfKh%1B~ znq|TV4WYS-R82~pL3op!X$hi$(I6Fpo3Bn=uj~75qpfd|7+yrIIrDCZvdE{L(yJ== zxDcga)LYn^5rxb%CA<(N+#+$_b<}zJ+==<4Wqfx28uacF@%Lu$s@WwQp@7t4#dfx9 zhCKQJ#$nHl%$<*#h}4&fSYfo&~-;!P%q;y98Xx+&;H!UCo$$1_s4>EcRP?(KtR$1&Cn#yOvowQV9#vj$Is~}A<)x#U zIPN@=NWwCHyIm=u@o>&(OlxJ#yZ%UEz=rAV#Vk_M!fwuA>B5PG!Bk|}CfM)7D`gyxj2 zJ*Q!2WB)QT4*U6Qs^17{FJ1A*f8_o%Ac%$=&3v%tI3YXxwzpEpeXuKnNM*#p@Sl~W zQ{E4d%K#LIK1y~V$=dP|Xcgk?d*xjBS;QgmC*|^fo z0lCVi#t#Ktodr$W0P&p+Ikm?S^_*mFAamDWbg;oC!PbTwuSUyb+v3GNUJ9H9(*Q(=y1^TSSA!*eWQr?t3E9PT^L30i$U9nP!Wd!BcX{9$09Epg>z%ROerYEUTWwMEgZR-oiE%YFxk=_&=5 zzUQ<*=(#C{G(62PM19hc zh^iIUJ?d(VO)UzH2gCd+<~RtH~5kyf#ybFR*9XY#jkLk{N8I)({@E=Js#z5lIo# z*P#}6TU0Z1j=thb>S0Q2Q01=voM~u-EJ+6QXj62M17@d77_^+@hdVF4dJCMzrlwe9 zCiFd*Wc6~bJd0kp4?`*A8*F{5IrnG$coESQvThI(`)8ZLEZEPMTNAHppG)GIDZ=D< z*dNE!o&aa^KCZ;LVS$R``IMEeUc=;7ZGJ>O2E=&}j@1~}opY-H6x+sSyKv9zUXBq~ z89_*PaILJqS6@UD0lwf+gU%tx3;8t;~RYQ}FSMx=i+JbMC5tcjY=sj$+>J@PZlfSwA72SLKz~u6s(f*bw z9UL(*2*cF2CaVIaG<@EwAaEw0TAlDoQc)Q^B6dvgl+5@c?t!5q@9Hfs@Oz$<&;L+` zl&c!Q$h8zdlln5cOnv|FpYg`qKOZ=lDUns7@AS_`zwqk(V`^i)Ccuv?q=YjIUF~Lh{9iooWo z9WwM^g%k0}3%1)o;S+haEPq05H#i*qD@87)Mz+LMubXIEhf=N{pUGC$a0aDlV|4K0 z!T0o-fRkJ(bzs&_^CSxTOcyZHg9^#a3+!ITvL}j`l2{0QQn+c4p?L5l36n*XoOGPx z>mdsT-1S9QG`K&#lf?eTdBYI--C@5)Mqy|_7Vc`- z_hhd-~CpE0(S;XY46zfwvAs->rwivV~j^qZeteooFTw6 zaF?4Uo2OtoD?}GAR;wE1oV-{5>ANssm5#btg^y1|yjD&acv>drqsFUE*)CGZk9hw# zXnuosm*jacwcg;G5*C6cF*{Y|wqSBAPa=;ebz+b|Tc{MLnwS-Ur1>EtVP!h6LRpH% zaR$rN3XaV7oL6ROaJ``qO^Q%UM@t~P5y_}-b@@}zq;MV@;3-GjE=M5x>15{>&$@$o zP@>0vRGFg-wW5gUP*#lBMG?j}-X;KQS2~brZmDu);s&Fr9W>}>wzW^)Ng>%!GD}M~ znu!siKRs1#P*xYsgd7&S@j%^)XLXxx3Ocg2ttEASeI4dwSy{+&%Qu#|wb-EQ6%Ztk z$(hIZ9{-uCs-wHN(L}`Q^S8u|rIfjK4$7EcVkm9%TbYGV5zC75u%MBC8lN4-S9@;Zeb8r*Q0<_mB>vs!371|mdgFoeCHH+xHYn7<>*E*~FBq2B zUy|j1j1|g35o?9pJH)mt`5Z3tuMDz$X$RYGkQqS$JJ$dL=&cJutD?_+qY{zDDIrMQD1@a9o^ z&A&-m@{j&5Pe%r}C+vpGIc~_FK|>>7`DYn#z3#av-u*H%dD;?Fhq(Ca$Nie&EIUuU zHFqU5p}O!e2qiGl&M64;Ma6ZfI(BiN?&8sGZfLA>$5wY4wm-wMiCvy|tVn;VCHtw; z;|X1wqjt)F#xgoNkzjIri?2S%eea=E*YWyP`rBGa9tmji>b<)u=0ym>)A?v(MfB+3`b#`k0Plh9J2~Ujs>8;4Uckv&Hsucg(~# zy^*`JLY142f2BChiJEgq8e*A(j%rF%}Wy4y>5XO_ON zuq}c%Bd|`(uE2Nbww}&0K-1Oy2d$w0949cNQ69S%nuZ_87P6Cx!+WIOL8RWD%JK_Nb$=~${*Plt9Z>=HofM)>y7_`14c)(%*3N3E9bl> zgqjEV!TPT(T8Cq`02Xe^brkbZ_8(geDkU>W>a*ITH0|B$-(GWh;w-Ux3(t!!N(&Fz zyIB%soY<-jV@~CuUxhW^Gz~H257ii1e>C0!J0-{G6c=Bf3|+B_Hx-6$=QdAOZS^dL9s>(eL6ta^c2^VTC}0P%ZzKWLx!{ zLm(*AIDFkO4xw*<>;e_5|BZmY$)Cv(&e}>6I1uzME#WG2f_PZLDlY)k9r3O$LY1E7 z1-?+#@*e`cO&WiYj&9WP@K&GiG~8(i!Y0;)bvBTcb~*hU9x#JhU?f7P59Y+TGZU7M z*&(}DWxgqv3wL*AYeUo7HOLxaN(;&aZI+@Z^ItDGDnR4|wH8MCNO`R@&s7WLWIdxW zj$w7(DX(%RDM!cqkD>NlnNC@H+%d@y_UMRP@_ZSq8z4S}gFqqK$x6bfwA(zNIs0eJ z!s6DS=?eJ=FJW0d$<|VejBy`Jmga*R7uB{w^+tH}qM{SLXu?uqx$CJjuQv$Hnc5|M zRr6t5OTJM_#yTs%R$a}q@LW~G6BA3HBnyw9f6ct0(Ze|v@ezCnVr~B#W1ymtMn3$_ zGKQyw;X*E+&?meNm{UHTxCAHRX{dd_o!bYu);Id~s$IlHoVJ3<|1`hltE)0meETmQ zBUmva7ifB{G=DHeG0%N|WCTm6_J$uiMJ6_J!GS96tY-QB4mHt5h01%>dp=kDt5o7={LeZjtG+31OS+z5baq&L(85y9$b8(Pio|9Nd=FIm<0v=^;wNPs zLw7_R-byv~M~UV|-7hzIBTb0gz@s3|sX%qVc}0+ymgr4K-c3T%i=bQ=wD-_j%-I1D z{fm_ASjw*T2!U~r?zHE?K+%nifPjor>?>DD8F#R47jI&0_B(={JQBZ{`4jghAE?zY zPzqXnrr&>~U86scg~C_$*m458U)S|fi#CAEozYfnL8O;BIidBvfM4pyiG_BO;e@qF zHFJ6fZ3y|anGz9w{$Yn4n+N0MExk4~Be*rUS^!hL#k%sU{o%{R$<>WSF#)tAImAty zK|+?(Bd!jeg`>`Ldciv9jH0cv%^jbdBN??$3D~+2e^7)p%pWIXTfYbeMay77y^pJ) zP%8Z7+{6peduU+K7*HEJ3sjXPJ6z3|I^&oh4-}kXC|qYq`%3X#6hR0{@-eZ&J zdd;l4i?{%5g0t2q(^dZXx&8X$*Wg?}HV1R&%D-+Bypk5w@s2StEA7OP9`sJ^jEH(% zE$fbXZ$E_fCiHdtLqw|gtnFRdM$h8GKf$c+{-0?=81*oF*Q*6WXVDn>RvIxDf4a1g z75Q8;izgZcJB(UHt>L6E+hi$GUwA)MH7V+CPh{_SpAG})uzFlr92!Nsu*S2~$ zQPjqeN7RLJNkbpf&s?+{^9s)SFX`|+!=jgEIlVIk8*010^X2O~aDsJ7LHaq8c%0+X zx;o$nWD$OlnI}6Z{eq8T$g^Wao{iB*-F~%EWiI-yqhJgRH$Vuj!?05Kc(unS?uPiVT)(P`)kp6g^UR z-*iOF;dw5STpxIJd_XVzy+<$%WS%&+nM-1py5 zp&1muPTD-uA(e>6zyU z&uQG0dD;f&gwJ!Gx|MQaT=zj`J_m6~N87_2nA{WMm?&1SGF%}7_oA%z{eU8Bv8Tx3 z%j5z?8zRLhSmKpWEqxo9@0yH9#z%e@ns7mEQ@=FJcr?hpznSB14b`iFHu#*xo)~68 z-MMw@vUUc2BAXqWgp3q()vKj|!4Q#!PRrl-+P30SrHdv1%tm8M zGpkNjo7K&GE7_Ll7pNN+xgRutVlq+2Q2TaPha#4Tt)#8jnf8m4$sQ3cOrzhyDVy{m zYTOV-nmd8Qu+-8TPLmIO%c){(3~x(@DGL`*4LF zK(Ukfa5TnBSu$N;zRECjevWAr7K89icQliv_4G}W&@CK2JW6L!P!M%JA#^sE9J7>n z9t=i~!mN4xo?9QRzTIhypbv@iLWy6WJfCn2-dN-0QkAj=yIQfq1MLz8AUDEuk?%k2J0FM2+HEx~-2xqtN&U^OE=(zTh%PBDD#pa9 zZ}F$c^t@IFJ?GPc%mc*c`Ve_y!elQ<8(Wha$J zh@7S0NB#-w*ct?6k4sQVUA-Q7HYKy#jlVl!@;}G=A z)%#PQrJ3n}zIVJcd*NSktsx-Po?wm=U6?Z=6ET%1XjieFw8keD8AtGHo#y0=KJ4f| zLd?%G?;+9|n&O$4rVG`ELP?!5QuNsU47f95@|NsL+v#kHpLxEh2i2k(`{hbu^Lpkd zpP1(3@DRe|%q>$|ak&L76s&K=vqIW>lS$g5KxB{+L9#1h1sVz~AeH0Ef6Wdu&1SPz<| ztl>;7SL}YHe1}c%edNy0J33X@in)l)dSIWNZ?L{D7fT54kb$S>ozY4m)*?TmR$1BF zT`GfLOLwS0YgsWAG(d5aJ~t12&An)5-2YBLIjXB&^lgO974G$$~-7vTcP zU#^&X$CzP#JD(7%^#7NUd#yEyz5G8(Cc6JhGPQ9Jx><+)bh2avlhxt(VCXCoDEl=y zZ5o>-k|iXw9DekZ#-;*%nAY+Bgs5p0@4*o&fwS_P{Q~ zM>5KX-5lx41>9d^m(k@!PU3yNQyeOY?u=Nd+E0R{qr7Mk4blv46B|EanUe+p2B+pc z^)F+>#nNSW@ig z%DDI{eAx?Bwl44qieh&UKFm(}yaufZ-Slm9wMQZ zE&6uig;u+OBHbLI1kz)mLSzL1b*Oe|oP)ca>s25}bm0-nc_nq4h1gaTlck0CljTYw z5=M1t>_$f0_CBW)1Bk83BH&>Is~S_SKkMe=d^yD@VznT36F|k~oE@*$OSQcTMUj=l z;%)XOTZI&k$a$U)=w6a%+T3e#QJ*#o8aB3thFGRkZ~mhOBG)oC?R{uHr^}QFS)4Gf z03l+J$s)~t(l~Cun`;mzNdP12t&6k<^&l1s3Z{Xytghbiha{tQTkUElubb)>=1nc7 za*FLr?rF}B@)G>5TVgwK9P$dLV_#eDBv_H3`q8euSN`wV>P`deBc>1|Nns73&}h6( znMJ#tP@2O$VEf`l5wrOZPeZ#H!rm817-+}=;Db-;*!Z+jay9Xx0nC_uBMH8V?$-WO z79ZGO$~tSzMMa-hw207Cu{x;XnYK}e6Kl+BT|DKSSPg)Y8mU<;IVSq(kM)QQ?>%ZT zd5~|-p{T6wY@)8R6q7%-pw{8G94RtNYN|6qCi1n%)0fae9CpRU3=*idZ)c4Vvu;-HNvA*di)EuNrB=1 zwy9!^udRGw2FutFKOp-p)alm^eG9;lszE9u!c$ozIA=nLl6X+o*_;H~e>IYGi#9u! zSDTiyTV+8v6cuCVTYZ&RzC|=)i-I!`)TyVlZ-aLnE}eCbyP}U|iGw;i9!rP>gl8VJ zkdL~?LU1|#sJFeBd3eV<1XABf?f{2tLTBy!F7)EDz~CXj6~!3If>$?E7uAzfZNBcE zipVeK?=K{asGAjdgDk8-YD2zs_RBygYlE>zxBUT9MKupN*sUoGeOnCwWkgX+#$MB# zQ?NSojwXT)kYG)@AW0iSQuvaS~DXFLb-=N?@WDisxd?UnOjoJ%Ul2 zUh1>37i8lkFe7YselN7JBOk;m3B(c9-OpCo~Ti@Qrc!WD#c0vq5w(2H_@$%4StDdvt#rkCgVS+eIzixuW>RW=*w+Fs7QuaLoSdNf zg%|;;?8W?D-fzY+ems^um)Z3(873;v6Of>fA$so1_7i1J8=9J_xBzCn5K7pUGcR}r z`Zd*U=5_49t+<+Ydu-WMXdsgWK53bHlu)7)C=e8zv_sK=Hu3@YJgHifi|1qGD~z)E zCVu%Ca>1nYyB2}fg6w?R^833dRC5FKcUyJLP*qd-`aMqoioLL3Z~Uh3?7)4G`6GT5 z@7TpkHv_15VlKpLW3&kS5~<}s6AIoQH*)k;lMIQQ!L+12ex^)>6G8UkL9YBy$71e{ z55!=(^=ri_(x~r|-L%lf3|VX{28+Pl5_)Xxw{|yqAGqSI^@72Q51Rt`jX;C& zU7ko?T2Q@QCs0#})1@vZhg@dP)_68%wGw0 ztw}MpQr@0x9(Gu*?y5PxCs-#8oL;7GkI3`F6lsyUQOs2~P~kie{4oc^^DOo? z=qY-1Ln_MQNTy0An6)cuzO#B!*BYdXqdMtZnU~bOuZx){*G>!cb5s^J{*Z2LHQ|Md zrVy)D{#~9#3i4qKbcr*$OIzXvczaB&Zu_MI+WO1&^Q}b2mm)t57YR;U^EJsSR#^6_ zH4N)hr#_G%Ecqr=ePW*Iur{0AE|)+dy!;<$$Fh0kCAhC=lmR$FVW!{^ot`r+9^FRg zjP#4COY-Emi&{B&q+Ab#??ILH93|-aj}VP+Z~x4^*LdDXq9K`fyi?;KI49Z`S5xO` zETlh-Q+S9-f%^3Gf2o!#OX__qyX;Po_^x(knAP8Z>xEs3h4!V~N}$aU*ZeKh@~Wp> zxXcW9?nHD&&4(+)IP&q~V#DZ)e;8xFcN!@L!NG>Aw)m#H%AAI0J97+xfG258Q!Ee?}Y~4|UJoEX7xXCO1=L8e; zf~axwht53I*X;>KPw_Y&xZ7}Zp@~Xe1qJ!|VOeEwr=HG+1qspi5DD!tkM)F|@%Ci7 zRxb%w$Yy2wv2+374fV(vGX{Gl|>e3bB40m7lgtmBrGoE?1k6Jiw z-m9NsLLRxX_R>AS6t^UO=V^kdZP9qmn~ME6JhfZcU=M5Jl4q+-^zDPHYYe-PTuc8^ z@a;L-tT`L0)cZkSgO$}H3P}~a0}4XlV!thxTDT6HiLzfQH~#9S<0@(9=GCX(k6M>) z;9!jK@QGGR-Yt8W=M>Yk@3BiVgba4>htCYh1u~L(Kgfp=bAF0aJ(03QlkbfmYZ14- zbKKw(!(LVQjeu{lpD*V?G;YYGF|lZP)P2spkw4ELG1(wALXx@q#l6tkiHnz{axby1;G>*dM|e;?K$5^pq(I*QPv z%hw40^W6+@@Bl`=qp04*ZL6wZnMVQ5>a_Lu7u?l(-X{N1NGWqvNjw7!eL&O_h7WoD z!Wi|KqdioeJHT*ZDW6R0%SPzCAQZ=+@vDf(km++JtB{;{hj}6k(xcHt*iWutvtpru zzibc9nxPgGgv-5j*VOS?{wASk-=7u`ALk+st03{dEF%IaSw%v4vSqs+6m?5*dwIg`bu3G=POznzKwxlo*Uy-DYo40T zU>$4D`iew4-i&R1B_=zc1f(*4%MTc(og+O4MVzk)IQqHcIB6{|Ea?=)X$KMDP}ecL~2 ze35UPh}M zjp~e3Pz$KIOi8dq7(5|N`=o^1!+N^;J+Y-97Th2y{Cv*w7tP(tUX;>?OhDMfO>+8j7PmehWFsNpML;L6HGoi6?R`_O8bZeqMRrq5}2lqNM%hv zxOzNu_k?HjkA7YGRwg{pRrLk;nO?A-Ft-`6nNM>&^UepGdfz%F&+gB8a3?z=_9!Ii z%tQyqv^n_gAYby%>-65F?Y;yzyYuLPb$@KQb9uw#OSeUS&(e&;+2D>@gPpiZ0OP#Z6RlT=QE z1W#pTz_k+dMS!LY4^|8J{bXnPJNNPTgS8n!nIH&W+B8iI=^)ovw`jO^)rzfk(BFDy zhpRBh_lC-I zf$0zWuC>aOZ-r>t%sM&Ye918po-Ib~`Y=ij7v-6Zgo?E};XgK{I%m0)TY7^@&|F_O zC$H>iOzUt%Cx?3Zo6QECkp2fdpR3Ql7r{rzmLVPB?Bh<$8>3UrLW`$%RSvhh19?dc zzl$PH9JsWSrN|1u2uLUzJ8O>j5KM#`dpZnPCVlE2wTl5(blY8NYBK-Uc8MR^=BOpH ze!nWOS7%{g`J?;-qf$O-?n-VZx|Eq|uP3>C)a*;lV@A2Cu54w@+df}83RWki@gWqN zW+~&XdHFF>U`O*|_27Os*~TDkg+SrUCvKU7ccouHd85TD>wSoGNZ#e?`s(>6tBKhp zbE{C6{>$M|Fk|c-N%l_WaU>3N+f!*bskGvJ6(1Kj+;uMzQX792`-(Uy>kVV(!wIaI zan-8g__l%i$7p=Lj_tsre1Z*lMxI^=9jw2*_H}jDK$JkDH`Uh{7lNyb&ESXjJ7;d-SV3E11`bOD5eJR3)jUEcpV3) zJ)%V3B;>1^q{_D}T*r3=~*Yvy3k@ja#a2h-uUVSUP%JR0db{VACwoU;fY%Ihw z)BG-TAT{W}mCED0{)^c!+g|cmbMXXU1#`=#5^8%OxIAu6rITJggH^aO%Wpj*O50%- z!a1N;OiZ-1NAnJ`=i$LAeA6AzY*k(gnz2s*0-P)mX`Nt zapv#no8$v;q;UA&Ow!eKT>4SiU3;Thk;hAS+b;njS)~Y1$_aSxd9(T<*1UK(lycBF z(G>I7{TQJ6w}hAd((qzd!E8>Rcyq1|szdu~kZOIg;1M>>1FfUdJ{p!v`B%{vBD>-${WBa~{s=zU(manWu2;cPdrya)72**KTv9 zs%H7{%lCg$8umpM-MUPgp!gL!xyE(iJM+W-0TB5lyY!xGj(WeGY8%q&%JDS5+Oy*v zr*Oa0gk-Zcx^|U!C2t*fVAG`;#yV$*)hMs)fXb+3o*E`GyJ-qzySV0V*bfdeZK3we zXdQh@2b5X^KBa|#ucZXQX`X98jy1EElr0rtOHrT}L+uL9D5}nIRxzb7_eaiuulaVV zSqmcRRd1M6b8(HU%F=syXYm`TM3=Pa);3~Zue@NM|E=kwos;T1cB@sjr`%daN*UMF z)05W{7y=AX4e-=8iDw$yn;TiZSt&krb0N@>h%f<7{z^NxE0UV)Hn3UBwmfMy(e5@( z5~TnFIpykdbnD3nRG|JKMR_l;!H|?3>6dZ%kFpF~BX+&!05?^DrRMd>-vsIH`iXu3 z-&!SpvsWMM=DzK^ki>};rqAc;?>f5j2SBou7*foQ#$sH+QhnPtsX^^s6oms{Z0I@L zhZ?QStdLc;I$q^F?J^o7{XMk^SofZ}cnKLxnmpYV(}-^R%B9pB@8{sU5>~mEAg$h4 zp(%?s3^wYJP_@>xa@4%G>*>5_f%d5OWW{gWs`C;&{VBbg4ajH5w*VT+bbd|i4SUdV z>!eMvRV0vEQLJHTDI3KE_qMq&e{K=V?inhd{9qhu1g;yFjA1?0*0-4H>0I-eEHdtH z7#tD@r!-b3CYlO61=o0jGt$&lHUd@-YRmU^3zzks!*;xk%8*jrM&O1dW}Z8_x)&Dd zLMHq)ssIz0RBzWs(11Rq6aDu>Sgq*j61B^gkmT_gO{fy`%GV}*)=_aJkx@d;@&NN8 zALs2$@_Rlv;==c6p6g#H$FpCJo@po8|rx^lq&#VwIV^ z{R{JH!{gbvGQJsEqD-qFbuOEV8?LIigULPb*o~)_P1_Xv0@IRqL@!W*TY!hUy6VS_ zgu=16`Kx)yVhR(U@pt|5b;x3twqt7ygH=?eWpmaY6r2L^;q=0_31zd95;l*CSsJd8 z&sLK&Mv{poStUF(R8N?IqdFX~kRU(V1tk+?9@pKLr2X4s25XI=fB8J3wotbu=Y&q{ z1QR=I<)^;v7zQX2Hf0O_iu%@jBkcdt^;S`Bt=;?fyW34^p}@wAw?J?y4uwFATS6hY zwm@)cac8#__aMRDr4)B46bl4**Fum2fzSjg`SPB9zjuuP$vR(Sto6)i&UxSW1tDPl zhX58){?;U)NtJtLI&T;ryV z>K~Nr%IR=Uz`sleyO8`*Z%YeFA&8o-Yyl@doc;o@)=EVE!Qwv7KQ@PQD6Nz?ine9J zBInd3J3oGIX^G9}L`qGMBjJ;XTu~WZ8S&lFU@O81kgRJZt59**bMucWa$@_%l z*A@#Mm(E+Vpch@e+R!7CtEm?R&hL>twrJj_Bsf3ipHMz3GrN78lVofK=w563x5W0z z-~NfX<;xeOJDXteu|C&_m8Tu{Hk7By_zx3WFdf-+bjL`G4;FXnzOcp6K2 z6>X#cK+4Z&2fA&o5Zgz=8=l`Fe#O*sYe{33SGs$fXj>-F&eox9+NF=}d4s@H9abJ& zZP4H+{-+xJqjXn143`>|0x(;9ItJ8}$bi&zB#D0tc&L5~UuK>xg*~gMB|!irCyh*^ zYU}rC9Bs2)bYT_fgKv5gcGN^L!!QNOnUXZ}fSz$f&&;Nl*mcnb%?@OiVR5y-E==Yq zQwZ8P;4`}}{`INk$<3+Cr)a(uLQY(*wt{6z?olx#`JsLunJ0gZajZ+4kJ&s6r+%b9 zmy&!g7nATycg!K+*lR~ie_t$UU0}<>f-Z;AN~Gf%IMSf_hk4cb@1-iF2}epbL`N_Q z)Rx^VJCXsqH(mxATMUk*k5r$Q*~E5O6c-8F@KrAvQvTo}RkKK+dsMb@u-wj7mDcx7 zpDv9qHcL=MevGU1&HU&LGBpa>{1M5X>qWQjsH-0!m(A0lVnKB(Iv3ApcHp!pfc-qe zXJtU5jUrp9q1%L9y3Ai-^bCBK$e(oTxNg{D?=F$DTCkKoSn|i6*a3)JJ0LCt@c-IQ#xIHVxs8x8al}|7M4-=nL2YL zTySEEwI3@mlwjA9tFP4+$z$ZW?<1%^VeaR75!3=J zplMGDKJHFqtrQs&p>22;ptr()Le8 zH=2}Is~Uql9Xi*Oypzg{YLZ3x1Y)sy8fl1u&M;9apE6`sO>fJBz0xa@if%UQd#Q3h zB;pn7s9Jl{C~87>XWqi=3m(=Svo8y*AhO8tiwroYGd=$g`cR5T?Q7w+&O2>9>}bxw zgVLAdj#~56>Yf~ZMM7J1(xliyXk=9=+cn~$zzv(t*G_dpwvp#PPkeIV9+$grrp#;Z z4{^rl%)h4IoJ=WI&8qRL;!Rh2HKmR$L;U|e!3>v#!Kcdd-Vycc0KK4Z!5qg5Iud@A z!@dcMD7iGmqIyl|r+xo;pFPM0N2td8i^r>fq$*V8i>P5sL*#ECTc-Q7>5{E~C(kEb z&iBvP2O0ezy8hvaNglH$^4YS9LwlAyyf8a|oP{ML`NYISjeYsKcZg)YNF4nl6HPj| zo-(rG`|^Q%a^9<0iK`@i43!=N=^zLTk4nih<_V zIr7>j7rEFjrBVE&=B;cR+xWep9nWar7q~))&}e_W*^V08?z^DP#g}$eXa65cfiuAN zHoi}9Pug=gl5?W9BEXU|m^CTdvam^4PVQ33XO9|#=I|PxNMh;bHEjo2gHtj;SoJVd z1}jhpCr~HK4W6HHi~J_C!@a7)X5sc(E6@n|`2Rn4*nmAU0B3P?D?e^}OfvJXLzUk}66)(X|vE7%+yrRdp z*DdR%sSef$vI92I2D>L?%PK$2-xWh_G%B@1h%im#LgOW6!f0-UWT+F(H1srPZ+E;U zs?_J3Y<96b#@K_TspbJ~t7Yp(vFki;*DtK85H>16-9!^G@c_i&Y`713Gg>;(s)AiQZhXD!94)x8hTbNpChv?@w)PpA4gjGT=B}u@rEfO zRaz>7GgBQWsb_)BL{A5Sl;&@!f9*F0AAw!I`S&;oHK;iLGr9`9WDlI9W7?5eSar+2 z63Rw0X3sy0L5e`7E3&G6v;Fwu-BSI) z7B0gIPG3lDc1;zn{7_g>8(?kB<1T6w_Bj%8%IqU8h?%vANqiDtJ3R@dk;Q4u>i`hrL+2Y#+`=MyP#w+rH&Lt7V)aHxZW57wZM=XpFqAD2*Q@f%BgzNm&DRI#xy{>(yC-^r7tBFH>B5X0Bisl;A3``o zgfWU-0?%Yz2odmSwds&Z`*Zd#p1GV6m>}aHv({mwZ@0n05}-a5`qXR(5{6G0y>W(3 zQZ{TT@qB{lKOE-Ku~2%F3w7PGxe&uf5$il1t(V?qvsMe4uqM!sRL-WbYid`apMf9K z`j_Z!AN10L^Q?)5s4tn>8KkwQ1Jht$ji=1R&XL!g&g8P+^y9Vihjw0JZ~gcW+WR=Ip~H? zr&4|9a!ZEO|UAWw5>5 znPMcp&&s`&h7qwnPJ5JTBeWhHR=Qd8Z(iU?LIoIW{tndwUDQ6ZDwgtp$c_1n)<5r( zZ7@Sl*=C3J$>y;O<)nT;{F^};&GX%O63M97|tb5<+;mjzzTm3iFWfF?U zj8DUhOTFP0QIY0uu>^w((coesb|iL~>9q1Jx^u1!uPL75eW)P(k+uIB{)-1r5M7G; znNFSMHR!u9?r$Y#YBbC&mNl$?=^Auk zQXl+kLfYFMW~fLWJLUwL?T^jOuSolZ{q&DC-6w+8GYi%tQZd2u>19>>hex28j;2<| zf&FZ+Cf1gLUdUlmD;;kIk#)2Cl|^`&4J*oms3tW14bcpbZ!^ zil+cM@kn zBnYSv)TdYr{G<`2CwL*~n)cB-;QE;qlq zNKPoN1|Vcdn$e-jl?~p`YPe-YW4)-S=+I|VMM_t@K{3x5rM`(qzItO=D1@I%%1Msn zRT*=56UuyHaiq#%f1GRi1cs~O&#BSaAPj$U^5Omv(OyGt{(M07uuyQa+gGkU$LM=W z(tVQqITA2mqGOcmGGDF!XWGU$Z}yL6L0*VKLVAsTYNkXwFTZe7V(T)WoI5=Wp+Oo` zj?GBk-h}cCRMOgsemxN7+#iH2r#mcixYiNEHvjw8+f}4p{q5)5M5*N}pCwpL14wR( zPS9SDHs(?W2F|X4Z4sg0kDN^L%|UAbJD+Ktxt&$1Aw#;&jN>jA7?0xuEii#YHDgoV zNW3~aOMrx2F+)~0#hcdNiOI6PQhebTIXbY)W22_tR-OQCohlQW&iBh-SmGV+xy1bG zEur*~qTehP5B}GBi)1C@>|LPHEZOFBsSBZib07xApxKwWM4to&TH%6`5eExl|(Q8qMfWRQ3_R=_SIgoDtYN2vorVC#WqK35JiPX9>dwg80vDw z^;u)cox+x~@YdfGHrI(ee%NC79`G8L#ff^c@@7++1yB2P>(=(J_XTx_;`sV&7WlLE z2B9A3r9QEy1)y?%kRpdi7If1LhIhnxw`Q^gYw`!==x;%C5EQ(A?(d1}-o`VRFiETY z@T8pgBnJ3B8@z1!aKX@isFtzI{jE%>@mU7}$Y(^gS-ltJwkej%y;&mjQTzT+#{fpX zO-{@I@}VdP+#zD)1sm=Y>SNXfj#nHnft>p5W?G3xweFiY637sgril5wG})J6d?wha zll4(wkyvuzq>ZLce6 zHF0uPO?AYlB=qI=+&Wudbl%6%Gv3E8ZHMhN79&+B-iLpUk=hu}N&w>=_4p5rGzst7mA+AGe(ub+YI@mmEN+$Y62q~(QZ z;o88GC;R6R^!O?j7T9plpUN2uxU2f$VRXlrXNu*u+xk+|H@t&2qZwGe9v@aYJ{a8G z{c0A`X=-_s{1!)5fOeZsZQyu1Z&3)D0>!R9YAZq(+fTRj28)_12RO;Q z2gFQ2RZVX(A;ej_2PGwjVe6&OKXztcm_$38eGPLJD%4tCj*GAF)&i}#No2cd0=2Z< z8;kCK4E>5)7!-LmkjsvLHE*M8J-rJ`Z2{@Ha*QuMHbSlmwC9fnA$?g$3}`XEnoqbZG0k5zxp&vE1f_-TKKFEYUgv0@3tEJ zDIawNChZ-EjCiWNvs9xk&@tz?v={xkl1A1-J=z*Kp=LXknah0|sPTYg*jRF>ZZ!?( zJ_%t_?>Yvg+$^iCOB%b1HiLGEp4JSsTHuzq7F>+zq6S?=4T&Ii7v@EphR)wA(h*g` zdT4>k3Ij(gt^&=TegaWCIbp>vxJzYv0^*@HQbOXQomL@3dIA#>uVw$(!F^4OR!mPl zZ+QM{FO5sH;m1Tf`xpXhy3d}xOgmjYn&r^6ZdsD#Y1O}kT3vN%baL3qB+9h$YEgAG zi?8CS=XJdEbhMk5pxcMPtdSH!D`}a%(~%pGGHV2KyQcWJ49JExyo$#>u%h3*YNA8f zres*a{hv0dCXZ9$FYSm8q}A<=l;JTb(=yxaxq;P$j*-TTPDjHf-k>&#lUD9kOsU0- zbh-%@wMLM<;rrqlZu{DA+`RR&!J1U~*7X?$J5ZOAU2%GuYr2E_8em%yWU^F0^iB-O z=Uhj*8vWw9)|%eG&$6g=?@{ST#+_glxpeBURi4!@Db1B8q%O2>y@1Oz@f8>>dbW(B ztwG;P=gso;ooyl4`m*G-5XTG95Jef>zj`?FM(Vo4FQ+NL@noL&VuUV1U8g;Jg4^L{ z5<=Re8ghbves;_HD_T~6*gctI)cts)h~Gw^J-@zXo7`g4k%U^OvI8pf`80Z^7jOo| zQIuD3yM3GYbo!v!^^e?Z?>&(}Qy)*ZTuC-2ZBIL!it^uL?w$GWX9=i;l4o}ehg*r? zx+8gXHaHmWyx!h+%3USxb!5+Ru)U2pe@-3zdh8M+y33aI``)N#%3Ze`hTT&l*=EzY zJuX?qgD?EFk+q?xy{gWm-8C04e~pmw?b>rja2pdcOmo^_dtV5#;BPrU-;UgFzD|=S zr4Ci{KjCv@$Y`(p0XwFw8A}CzdbiIHkFsvS1V=t`7>GAnYRa?t_~Y&-5;= zhR`epQr^_-m!2d&&JKlVv5(l2Gv$mlyk!RutvS>XpdKE%O+f2m*$2Ng?LC#6 z`e4*#;fgobO{n7lE} zuy8DEK7{iAvaq`U3L3*fpBdW~LFuPBELbS&5#4Y`mace!P{YG|u#d9vEFILXBSZ;$ z&lI>UrH5hoGl$5!lh#( z=Ce4+(~YE1Hh8^dAwy7uy9+u4T1;flO{^QB)^6ms}kuq^gEihkko-%O*bgf5oGoJ zc%hR5NaG4Fbn#2n!!&&eup`I`jVolB*5yU#vdFFE$70Dg$Z;HX#n>$vVU{$8UO*cm>TM;xL)K!X17 zgvdGy-+cZP^pRtJ2yAPj0OzWs%hWOC;iP{uoW+@90L$uc@e51UE2&9eF7rb1Ia=30 zN_U%?UiHdhbgpDJ?MQrIbMDeF=w6Q`1&6sI3tUSxXJ27vUMP z;e`1!WA!_x?NrC7Ka3e?u!u+ZQd>b2(+iJyYN|+^kSuacn_2>$isPn$921U=5gS(l zQGgBCICF>F7IN7|(%GS1bUZ`oBXrruK)pNww#rCW8mD$s9nJN`{{06NlqHASyq7w( z6FJ^$LVc>T~0y0eR;c6n}u_t;4Rjf zL+VW%J`(=B$}aeAom>GX15pDLGpd*{azIKTY{y(Ot7luEj%He5)?$qg8kbB>#alHv zeKc8V>FmuiBF+VZgx%`UU3vYMa6@XB0mcNko(%=G=Oxyq1xqnL#q#Dm^R@6NfV z{&|+Cl$l_bJjgSPkVzI1>NJ&LrQ`u)D+3d_a>*m=XV$ zYgRFZkE!!p3?%pYDbb_m_e`jbT~1ZYVySzP`9n`HB`L(UmbLo&~-(SaF>0v@HiuXHk)JC5rN!rP89hk9#6VyyT4l_NBIcq@Pq6;hoT#jD-nO<#@i`39wD>~@~A#WcIqCJ;-)GjQ% z$aCIc*I8V4glc-h!WVpiNg`PG00%XEWOOO~J3lhgeF}}Ym-J&T(C+5Aml-tN4D5f* z#v$b$+28SSPL;d>6ax0yv)RUwbbjtFV!H-hMNc|BI!z%xqo-Ie-ogKe`*{Zl`2D;` zgYSdIO>Z<^oA$?@f|@YW&%`^qfvJiL$>tM9I%o7&-7jP|O5_0b0odt}&W*&Zy4bGI zhcaN98~N*Vj-1MeMR+XY+C8QYta(T8NFaX$aQ`lJh#A}H@CN=)e!5XE_xtURjE2)b z2j8ikABvi98qa<+wnEYlcaksL0gAPqGy$(KwxAj&K?H$YHk~j%H$`zgslv`*t|zR` z(~&h_C`g1`)io{CqOG(xghTxycY*(pDbb`Wq189FeO0Qv?o{mVoTO=bGDpJcmBLc_ zz(+JOm(QA4<=(hXG%f%(lhyxP2?2l5&PQTi}bLYr?xH<%Q{Tc0|fu<=@ zrlrN+OYd5jvd^aHW`YJ?C|iA}Mt_e?bX*lw&&{hyG6?3)%ZihQU7^{Dg2UaMxSgZ9 zuJ#xMc$EzIg-ih?s_@EdfR6(yaB$BDYzrpR7gWwNv=j+jL8dzA!a+}bcRL44ItGNI?Ux1dFejLlGtC#gf?=SGx=?ZyoVYxvSk!RFvED)$l6Aam zOMh76`}P~-9d)g?srwF(mYn;d#(1lr<*%7IgQ!knF6+Q$YR}^aGneFc$x_l9V}lkZ z?}a8lGYM=emi?#;_d=Ju(#IH)VH=(juAkp!xyuk7pNeYHx@Ylq_B#eN{bGr6`cx?h z@M;_lz&1dpH%5LR+B0GXI0RL0n4tR?q?n)B4pb{gGu*ajgw0f9|4VDjt^IfB7ah=KX8xBa9@C+}Sc~K}ZOGlnh`^UFRWps$uNz`{! z@P+NkbNf>&@PLtKbb{P!iO@GKoDj+%?U&MYo~3azXy_xNd)Odh!CjTHM-9-^j2S05 zb~6Emf{i9-iXwE6B$i`+5<1$W@~Z3A`%%|+q7{d0J#H#q8KN)d>jPrqsKfgnK zBG$(kC}8OPA!FYh7+zR}a1g`;Rj$}LS>+VhLnCu-+^xaP_WmcHPdBq|3DKK7?MN3C zfklAV@Yp$c)>n)PT6Bnj)|~S);{g~1)83sMZyH=9JVB53qgGK@nApdNoHM=%`~wEx z#+QCkHxa@WL|+RcL%8en`kDXydo*x1H9R?cg=e_la-IXar?ALIQ%b8j-K1ky)f{I# zMHdZ_Q>y~t5#t_DTP~scqs|}NdxYqQI!(M->Vq>I|Ac8cuIW2NOXS82u>cxbKRT_O za>cq?#?IILA5#3bB)aA}{d z$ZMVYL-0?SGrPoP-}{=NgSl+ZIJSeMBMw+^ki#@`XURE1oXo5x%pu7M2T220|N3|- zM2~!INHIdVxAAtFfB)Shw)AuyoL9iy&S#Tj^Zr8AEQk$_Tr#U6g1T+m=n>#{d0p!E z>l!uRt%`~8aYbh@=f9gA*|6!xZBT;A-;y({Tw0V9NOUi}BAW22C|@nVQ2M}i`l4+? z^!JC`J0QLuE8SFcQ35w70dJHu!l2z6G+Z`2v#%h+B=bo~j#iOSR zIP&Kv^c?Z{)U^SK3qv^-og1g{y6@|YYe64e5)Ri2tKOsc%RRbL;ARaV<-Q{dusv5rgwY_mZY8+MbNrK2%7* z7D~R#D`IO?39(i%JZI(KxwU;Qp4#S`Nyw}j>PoD{Sy6vgu#vdQ9|>f8`;UUqwG~@e z*9WOvmNSc{DTxb+0%Gt1A7VdpQ!7r8=bxVO*>1204 zqUH;uf5a9=EZ=t#eGsJc61r|!L}h~l=1g%+LJGG} zNT?%l$Mdh=INB3f(yG}J-BEdy^#B991SjK42|{s8o?WA!Zh!O3&X=PLT7sDLMW9&d znngPSi8(zHl~NyeWIQxKf9Z%Smf~G9q5DOoH`7~7Ypg8@%af{f7Ji$)*@`@~RceR= zTG4=f2w=vEH7Zst&9@fCRaB$(il}{Lks0*5>8X1w zlw_+zqJg>HUX9L0e`1iWL+Vv3YAY&Vc70sv+ik<#t4RekPs{F^=k*_o*)a7z}@tx^6wgZtUez{#YX00Gz?@Yro&fZ0n zw}Z~7R`eAzXh+bFgGjo`U<@~cvx*=Fdn?L_vdcZ7Y4y3L>P)4}_9SbGZgpDK{JTY( z$1pv;eQ3c&#o9`x8Ng-2W-={mZ%B~(mSv69zvRza(VCm1MH1?zK0FlW+ECrZ=}Ch1 zNyD@}vV!Cnr=C(p2`0mXNYHohdOGwtZEFi3<1ZbVpgpSE`wlA>+f{>?hNKpLI$Vnb zo{m%zh?tsTcddkW6hN~uQ2)PfTA`%8`zSBW($=1%-5-#i4VG6sw`ozZY6w2YECK?R=twkl(6QyaqmJJZ2Y(X+bufWndZbQibrJ@4Aa z|94;&hr4F)Bm%_3DgWo+1U#0Ld!kTH0cv(m_w)P-T@ZZ*XpNAwn%;ta`G898oP8ec zDY_uDlebAY&^}vlNoFPmW?j2~xKpdRR!B477((BZg`ewuD-Tti_smpA1&{VI4HTbI zWy-0&KjGm$gDdrDSOtV!W)#^e6^&paQeM5*%1t zl=~?8oGB$bPQzdft=%v_XK+gvC1(Ft$)2aJyuZ}SejUOvxxTihraB}P&o<234U)o8 z4rQ1%-m>qHFd6SEB!`q&M3VnQ5vnS4v0s1;Ka`zx!43DH9ljy+<@U-@#r*vToye&$ z{UeZ;`@@@yo6j?-;hB4y^aFVVysoAVJuzIIjys|F@2}g+ZcpxYJZvI0+Ovp56Hag8 zH4$#3UBuIixd2MP{PfV?bMKtFIhAb`)@vc3i>)VG^qPHq+DMlh{1m)vBzFeO?NNT= z@o&=yqx?3I%>~~mrk6|X{_&uv+ReQL=`kUH9s6E2VfL{coz7apeqdVHfUUn32gj~7 zmC|(R(_tW*E!g6sEx~M9j>S(i5CcM@iN*WvzXk7zY?5h04m4EU^nPzrg;;T%0r`76 z!NZsCB3ufr=j-Qp%=Ww7sj6$#$Ha~`vSJR9jB6sYO%NlsyS2Ntii8&|2=hB{U>EP%kpP3um7^cJzl{uT+7AL$qUN=F}}lp0juAr z^+;{4XY{IM&S5PI^FdiyKIZ^ z2-hnYgY>1Mqou5gMLn&s8R|;}`Ot!-vrl-{?0ZwIA&slb48bhb@Og81oJkSau2VFX z8B)m3=`V=zjA)=h^_WZaVpPdK&xpH8>sN2hQeb{rc^&1=B(uK&fF z7B`T^CjzgSc?%6e6hggC8XEMk?g~y+O@<~08<2b;eS3PAMkR#>+mw1`B`H7|`DG@1 zN{8zE52G?VO4B9{Of)C7dc3i@c8@sb2jO(&agSJ3{9t#ol@gNW_$2?%i7LIaXUEnE zoY_^b168(&nf4$sS-i zYjmiw)?5`t&;fmItZM7cq}RFH>AZ;5;>BDujO!WWwIj7V1{+P|?e`ZmJbvrVjM;j! z!20bcnh?j1JC{Hz^n*rl{;vggjnd)YwPar16ZxjAj&4@{;y$qvwAPnUr}l$s*knUd zmV+t0%SvoI zupXlkA67Y1M$uRLk01-L6}{YP12N+dK&vIfSvB;h_u;r!q26EMh3oXaW6OYcEy0wJ zj5V!3u^VJg(YZCYr68YVi+YJXS~eHSnVK>ZWVQG2DEUL>l#jJxf|h(5Ukw`j?YdR9 zcnKP_23TvJL)31Z_Pj9)T2mK- z`RC?1$poMMF^INpLVYJ1b_p=3~(leAeLoKej@iQN6#H>p~TdyZnq;}`dx{n zZ#ebtv~tzVtLOlM(?MXFY(F1N_513UPb6K0fYny$!{8MW6z^_@-fsFa%=#uep&)w6 zjs58NRZJT;-bWqhfX!l~sN1y$UU;Pn0j!f>#Og1~Q&*^}z|Qtj>+|E#4XrTvL&tox zSG%N+xAc2!^dt}|L}G}t=Wcob4~ywtf?bV_k!p4UMVWJ+t^em>`r#=QUj9}N&**&j zU=n9l%8VmKQ=dJ$YHlnV4mcx5MxN>Z(`^(4&s_gz<)!e2`tINTz2Uhbf;t_yD(be@ zsDlA&&SSsWZ3WMKa^@*ydbaH>K(a`>JxiF(l~Uf3T7OcbTKuTDO>Db(#^&;PSdJJK zC!f~kHba}=tTv&Wf5S>N`9i-{vIWCS?AEx94aQ8XN%yeLV$8WD&`~RM(38was?Ioo zNS*dQ_fa1)Y}X$de^#i<3VFi(?&FEjHOk#Ff$be4@PX$#kdBK2#vG{BB+n%;uiD?5 zIJ)^uvx7mt{O@tKRei_Sudl@5D6sa-N=8D!< zV(9BMYcwPAGSo7)1aXt`%TE;$NYD)=-t?z zOSUOSAkXnhGVZjqf7&LG)Vz@HCO!@wESh&5HlxCTXq4gGVCxlGqxs)@uoEg6;!^0!NDx*oedRDIkBQJ%$l#Vq6csk>6%8BHXL;Ho}F*jzf- zNP`wUB(hBDi;b;cq?f)kYl;`>1hsPc#zJeuZQx5OnzJH|oV7v;4eDSkTbr)$H-6D9 z;e5>lqNJ4)F_reb8ml+I-7i0zlu=eUAST{|d`2b=cqX8ghomR7hZL>UwPdxC*@}gd-#cX$(r;t04 zlSHtklv&%A=tsBQw15cPs)}RFXicS1Cx_api8VKF%6FQVuBoiU5jr9%{lze(WvYsktyAN?(^myWug!=e$f;t&yGc zLA-nnSEa&bk9MsE0iekl7VK_P#xS|rOUE83aWuD?96e-220(JuSad}`8o}h7?^C9T z(nq=GtZjJ=E%Rv3IB>#6iQ5~fEZ=NisJ~v zg26TFMFu`Jt8;YM`ATt7>2=3Ehm%lpy^o$3Uq%?&xugk$n(i#-;0C6{u-4^>A?Njta zEFe2~h03r9B)?u_TSuuQh?dy?4vz5={k@=^{&kk}*D4I6)0Ov=X=c-2O96eX>c6m_ zWk25SH|JC!^PV1OGhyT76OeiXNF!*evU znk36at=UKfGIsaAOoL;#T+%4j2WX-N6{yu-iRe?G}+>CcLjeMPM>K)%5VY+#cOcs3YH#KB{p zh$r)LP-s67?7w!c>KTSj%8(>0ITSLLlqZZVS$#XX7L35Zk~rfpc}UQ6{z=WlzPK7u zp}J`2yElCrGN6cil7@h|Jh4bNqGX*=8>86^HI+R574^F6G{-;r?Hpwto&D0gM{9gQ+$F zdMVt83HN6-Tta#Y=G=#0Q@-8yZxz(k;W=&Ai=K7qhy@q~`9HRI*?jjy{wxq)X0@N% zp8YAFOK!#?Y&LB_hJ9Xd+^_00jHKI>>gugrbW1RS4?6>^!y1@&PwC3$~my82I&~@ zyAuAe07S5NbjN8rwWDsnMe-!jYp%|Q*W{*>m8e_CB)2^8gYfnVx?Gib-AS~vmI|DP zbLvv&YetsovB@^a2wMWm>6a??9l5JGVHWp1%Ujj;lJ)xO8$q$3TOw@cco@iKI^T?% zzc=ep(zI-1G62|ba7!kLhC8uvzB1FB8I(7Pb;u-Qw~H>b zgiBx4ls4L8_#kLNgJxdK-V$uHtcFN$RN=tiJGm4`!em3`+b~2|JD%=mbZ=q*#yZa^ zTaMeaBwk>acblshIbob8*#8DJrez7NT4C2+@1tUcAq03k<7(4Q+?VEd9rvLw5<PqHyk2ERe$8y7-5sF}D9rEK&D} zVfpY^KNeta8KAzd)u$+%VY&kmrOO2n0RY&Pj;95EOfrN;n5rAiF3ghJe9V9=ql{v1 zK(uWnfWatUurWzk)V}@dlx$jFO|&Pw&cQ&Efw4UYZ0H3>WMmn>k*I!V7oLIp@zP>L zY$t^=>(H{P{k4I&)DeHiVXj=A_`O2&xn~$XQ|+=v9N!~S&HNUCrC4B*H^@r>rtLTv z$EUTk_;uMD>V(u5uZw`td^k5N(yj&<>VF zr9bu8=JJ9m?(zMe6LdP|@^Vm^A9?7MeV?Uw4vaaLFB1>Qohu0}x_!BT3$_cZn|<1? zN|5!G1zr~ptfDQH5`&ZxzR`OFx<`3Nm2Pd|&_5e7jtwr*J|HuTfv_y0xd}Yjo)hP|zBkdigx&>_cQb%IXrWeQB zM<=|;wQjmc%tH+AIk%y@uZ9gLRz9M5AEglc;uBU#Wm2UoWP8@vbRTCfeb3T7A{f&% zjM|Cr1LWG~Z%}>REITA*9Cjy) zd^Fp?$(g|bwHa1}{R?8bOt(M+o3}Ij?4{B8m_y6ojMAF@Sdr=-rP*2r`D+puym!vO z1BARp+hX{)BDSe3OHMX#t%>qQGyp=8*C!t^kpqcAwjj?MH* z<_M%=w*PABj3;noAR+HLWeB_pS0dF&F^s4G0Yd+89k^fY|F1I{NxRe~G49fUkV+wG z){j&i75qqLAJ*de;muDM(ZpRhzhgSjLspeem1Q1^Bjd;h8B?dkJ@aVwwRg^4ibGWw zib3&p4zvs9TBs^bC1;p$GcU?@<+L;gjeK|M+c)#bJ3V)gs&qhz&nYvjeaHuz)>f}P z2E0Dw8o>oK^YmkZ8q+7&s5jHdK}}le5{+%s7o^YK%8@-~i~Dl_~rDa$;8XbOt~t?VT?*^{dpWGIJ|T4+`LlFS>?xisQwe%3@k zkfKL4OAM2 z%3P$D00DE%Sm>MV@aw0auE`ti!VhRt7|{7fcUg1_@?wiLItv4hW48OwF0>&w0Tw}q z1;@4yWG$OJ)k+OD(_GKa9fL9I^JiXg{F?tLZ<4w4L%nHDgrgU~5!G(Ls}C zh8j=QI=Umfcm5bIyuUmVx>*JohKH$gjm6=vn41C& zMAp4m-6(ECAIv?<9?Vbqt-wwjKn6UwA-N|_5)r7l-2R@KQ8DahCwW-Jy63 zL4vzWaVNM02$OH-pYLBYYt2bk4wBRCCwt%bb;%f~as*0JyMj7yg?9e>L`|Z2cTN+S zWYiRVV}}c-t_c*XQAk(SF$i&6497Vhr}Ia+7HdG*u50+kBU^53as5y_Q$})%bIV> zA{LVm0aJjZ&22j_aSGWFr&cxIpRd?us|6M1FO7g-SR=(zznt98VuzIH8a)#_Cw`yex77*npVHCbb~XtQ z3!5A|>~5?4T=4GxPd3_C6vWrdg?I8@2(Pn?|Mqq-2)<*%l{0~Tw44Y*#t-G75R z==-7cpKP(ug*MKyl7C72uOb$LF&1!9^~dNqp2r_EGd}3kH3@hQQJb{0UV6J7G2Fh9 z^>_Saor*BGFg;#ruW1t@bqY}x=0~;^P;PWY_0V1x-ygUsMhn?EyiEBQt=n2WkBW^C z`MUv=+RsOoe;>G0&UF?}1HSxv%|ri~9=O5j{$kWiO31~?onMmk5#7kvE<9*F`}tC= zV>p;IMCoZM^6U%JAZCIRxWUOV-ho)>>B}0W_&?Z1|Fe=H>WkVI`9Iu{8*CC?xL_^| zpX9h78CNKx6b7)=g-XWl7%C$3U}&}+<79CeUnxwh`8x_j@sisir973^k;gd(eG9>s zXkfrKtw-b()>bbos#jd?$pH}F9igKx0}gve{~QBIc@<25VIZooPdi6%lVV)WFNK@R z6f0927t^>2=Pv&-F5)ef=+rV}U>J{&hlB2|2g@CZ8h$5s{m8GHOmBecN`Xcxt&Xj< zIem=B^NPy-m1-u^*0o?wx!=!X)=I2W-dIYb;{BsTiF4iZy~3E;$5S(D_lN#DJ{5hH zP4cXDl8Xs^)?`*&tQU!HJp|Pkv^O?>Hgt!H=4noL7%Tz~fI}vH^PlDV-=s2%vMV)) zh^Kf4P|`Q`VsYL%de-cbccN&$ly(9$VdJd8ntU(N(B1G5z@UnatU+0Q5#~E7nXo>6 z%6RM^u3Zmx^Ch2Ml4DydPO^toFmB3&R;|#2I))(zq6T&!35?Ops%_N!*|!R3(Qdx? ziJjaS#Y#9;hbQjW(rTHCto6>cSya)b>YIACF)y)4R@-VzO@BZ10WGq|HONXGH5|Kp zYgchnp9g6enHzg65&2mh@2MV>H&|s^DhTmr?b(%aGof0cOhU}8^+27;@;ZsfT6_1> zBiaqKu&!oB>ZYhNg-Ycd`8jBEb_fieyGg~6tE!CbLO%m-l_;C5#>Pi`cX{6zi#x@- zz&p=MZhgwFa@v3))$hPAZ4_Y6qeY(?PdfYQ{dvH&ZbA@mByGdh2&vyF6Vdr*dWlaLSXlZv|I2fh%`qs#9@!VI=of5NYII6~lw zS-!vZuh4zQji$C*^e{#9aoWCGZhlOe)R?;EMG@^ZF4_oHjZ4~2KiVM;8atgnVz1=y z&T-@lNYEo%8egtc@_J%A95YFcV>2lKD*3CT_URdI_Kf2qiG4$n!ouak1nW@3fOD_# zXFCys|N9wPGol9K7bLahmGJ}4#OgKeamb}Gi6SZ0On?EW#aL74NbAh}0QVibY%)$q0W&5_K~^c8m3Fb%pXPd2PNIuJJzk+-9uMYFE zPh{Txdr@p>LA6&qz+P`_MzOdr2Sj=2!kj+HqaT=yk|e(`4~?6SMW&)a=u(q(g05lp zesWe&nwAgs(M)B~1hL`qR=}%;8YDtk~29LaQ zQn|9qB@-ngpG95txqiv=`=%Od-o>9+^kfhxdTg#?d=9jei%s2ou;`oShf@knTi5lC zn=IiyZ~Wi2wEqua#Jc)9!*#F-Sh(xpdg*xZAsUid02r@Vs7O**u-F^E%VyJ%CkX10 z*LO&eWlK`^g6L|Ec!$&&IDm&23Y%y*eM4B?lu)*@d-n{(GHLGXm+yI zX$ut89qR2XCq{-1%SaW9M=5A^1`oNlryPIouevvQ5L{C!&F1U7qvAugiA)U=iy&M( zHTCXr^OJ8mOZmln3zcmyGY9gD(Wg7P2Rwe)_<&tvVd`PucB#=rbx+R*;ch5oDju#h zH-e4{8mR5+Pi*)%Wk1iN(8-bT*?9Qk*gqn*E|P5c+k1B39te{g&#X}MS^a3~hwny$ zE+7s)sQUNh;U+Pqi^lf%oes9nRI73~y6TAJL<~G!Vh!z(`fZDY12I%@Mz4s9!D(16 z`(%2~tL__@-jF8j6O+-Tc!E!g1%(nL=1}J^LeH^9Kiw&L7L-!7Tt;She$x`+n|g3h z&}tYZYnJfu93+i>!^1?L&z6UIxG)=a38rDYTmt1N(%XgL-bGu9^&d>fWrP4ZvyQRK zO=}nL(8oF+2w(HNLS`$COiNaAjeQF*@a2^ws`V&ls=SV(Z==bySJio~!i&2YI!>&h z9QPUqyU`wl=(p^J(JV9wA?vHiUq!l-mqFC6JDNXh90)}KM##Zab*`14t7KEw3E?9r z9BKEj>{|Au}ZZ`|GuspIP#I)Gb3C<)L zAwf&UERRIeWOj~(+)ZL0fni}+Zd_sG7F4{yKHOyZWDGDhP|_dKG({CG(-g%~U8Y)Q zkNO5z0ivml*@ikWt-;>K(bc?*g3D%N?v)@43GEy-nK{evQe1~-pj5_D956FWAAw8u z%Ra*hVR_u)wNZ?oXoC=>-gsaP>{TH>+cX9kO8y)pj62Wxz=o|nuiY!d_?o-{Peh8^ zJ!}ptaj}76@iJl%fvxrdY~{1b=X# z{s`;u-B{x7aRHxCRLnDVd4gT(hKz-9&4ze zs8!zUFyTsYy!o$7Bdk67F-V%tU&-vA|L2(!6EaB?qJz3IK=@Bnb$sGFH(EGe={Oh1 znLe1%^ZJG!Uf~lbROqg`r60v5fQ&z%bV`l|rHr(BarCpRXCnRyctjt%d({Sh0QA0H za6G{G>Yeg>Gwc?6HKG-T?A7e)E@U*+eCg-_=VU;xe|zJkp6o-?^#q*jHrKdf8T~yj zTN4Db|NEvh;W-+LINC1o;t-~v47)}3vJsr8Ma609MqUKNL5A+$vXfq9g8n%-Z6)?D zDim>DDyD}YcJ^`P6U{9TDX%jyN|6}p$YtHGSB)!4XW)=RVYoV0SMXM+grGO5V_%(E zm~kbii2j5Oe&pUOQz~T%{(XCJzb1Bx4E5gzgn@b+J9u4Q!s}=_yyiq{I6dO4Z?$4P zB5G+;UALvsx8|X*bU6Bz6R->|8sIPV;EW%hA4bAWsCj%sGH*fNM@Cma31QxW(j17_ zG8ZFvYsA^cV+teJ` z!=GDF+=}V&6>d2-A>&;T!>>rXHC0|x2umPiq!af#4j?}_n!RQ^%_kT1_+xvakC`}agme=*fb#?;TAh-N1=^a$xA!;GGD`cpf~6J8~Y&kw$NR=i5&qhqUOG9(CT zQJV|+92g+0Jf}13C*_=;cr|Z9rtRWPo1f26pQqk=JTj!zO+(URXpgEkeg2<(Q*TCEdxE_05b8th}oKO*OVkTeYg$Qk^3#b2>@VKtM5DpkY0y_DM`pXG-ET` zrV$D`p{SfagYvP{8Nl+U3qn2#pZX`H>Wtd~B&t4i?5bU6fKh3K_I=8$U@`CWxs$rQ zy@ChFvDEiPA)lrm-fNcSYXQ_&!-T`lg65`ejXr^)&T3D0y4{|u+{P*?Y6Bd}j>Thg zwCts>rBge@R3@2WRV_8X`b`PXwx4jH!3b%1AAY50p`%Dk-C8pW&-%$Jm``DB^pKcp5FaKb;GNgD%^v1tzx6cQH=Mt+|8(B8{A(Bd_tL4uJ)6=R)cJ# z`>Q}!esVR0u0bg4_)?r|0HVH^+ul^KQ4wR~NR&xnqLP{}&z^UP-({+4lZEkEwo0GF zSewXrIXZ(*+43DPL7z9q#w>E3gt?K)wVT_{l zdD%E{n}BARkhVZ?v2KQ8o0$0H^AD{}?4~!-uCCG0^L?XS zv2VKPD+M!~{xsTKHg1of#%4Hn)dPus-;GoTiAyKFhF^l3`J0CQE0uUB%@jKN5Sm~q zkRbI+VI?qj>D!#Kxwgn9VBLx{nmRWl*{{_~!(ETgA+3~=)t+d5XPL_v6=?PLEvcNO zy;}U>%hdar{Vkv_~O0yDF^hQ5-v+OjvA#!D2YUvPmqkQ zuz5zM?4mC&hP!@AdiM?u@Yjb|S$I#pwo+{I7ulbAo8oS+Oyo#&lcN2jnoix?g53&V z!Uy;CKnFDw{cP%&WEO1xi72;f&K(95iHN1?Aww#hu53^NIFCc{;~C5Ek?Z@}hp@jW z{!s+YtNB{-+=QF;&ty;8_E!wCxBoOuW?A$&CEXxHGj%pmx&dfj!8x5b3 zx5qc#QN%tGKW-Th$}}3q*DYnP0^}2>dwRJyw$SfEEsO}|q+7#}tksa%wzS|=YTkhO zN~m7C_m30Di8satCqWU$e>eZWls2!eJLnqWlUVfvx&O6{ns(GnkJ#_R(CnOty$+P} zTdgUR9f_vCm6{iX90eR+EWYdf!E=$n%|wjO+jRCGkZ?59o2J$Y1V1ZHo;jRDEp6$~ zLvI=cJYr&>$qne(H9ob=%mslIw`njZn+^g3&RqYTcZZUTsEl5I{naKp?iQnGYq0L0 zS~cxugLY~bx-OHn&IQK~W4HSLKK4*ZY3xj~jG8nm437-k&0>c@N55 z(;#)V3JeVMyaFtq4NRS)|J;W&$SI<=gvJl&>~S3=yzQA+b6tBXln{k%-J>-z-cD%{ zxlL>7BclrkR3@`i>sFT5gCk~EhdJlTAgBE79N>H=1PXg?>O(%X62W+9Jn)`O=DIy? z#CQO!lUbmZ)+12C_wp@XzezsVHIrLHE(Epw^4yl$q&#oEr9vskOT(%suE`4a`Q=5t zjjsa3=Jx3|EslM4z28TrzL?bMAWZV{Tl11b1d4kd^Mp+tZ5H(|{PD98@22`+kyBCP z{~b9+zRlNvV*7rW^}M?NU&P&W>wg*v$DUnA|NQfOB_}DSDcp)_&L+X6XR2HWE81PC zwn}g2wD($apP?#V`V9nIGlH$-*mB+YXYSuP7??`J)LjYQl$hH!i|HNUXt=to`|yl5 z=>acoF1cq~J4@?;w9G10YFk8|P-Cqv64djhca|ZQgx0P?ncso@bEpvP#VmvQ|V++=2odIS=U1Ys+LLineP)L-#tBaS z5Cz#)1#MiQ_Mb8J)UM@OsdB4m3rMtWE3Mkn$nrRl1fEb!NNZ*EYgpl#OKOs*n5(p0 zE5;sFw2j`n$n*@Hv>M5gS^jC>qBlBd2t2L7vOOA32az`|as{*x@GN&00wpwDJUoY! zX1v8*wcICRhibEg>A4jNgli2DgXQCkj+m|f(oEXj5v{2P1si=6v$=cU4oSV;m|nCO={Y`t}_M@+!b(14wf5Q09iI4Xk9?U*ueI5b_RT;t~>`UJ}e4XcPn3wD14tA-W`SYF}zu_ydF>Qi=BDVn*ec(QA+5#SL zdedd{lpWs^6$U7EdpV!3Yq6-hZd9>>sjIrs{@mc@^0Q7M@0x|*{)2knUBim zYp1$H!QZJc4I1HG^9W_tOz$lBD}lp(MlSgK#*Aru>@KnI2&VhVdAWyi4$+H$&F<2E z3~&hzl>Vg1=XZVK@#w(xqJ?J2QoZZa9df&Wzp6mD{^$KFC6CLGW2ldOL5*BHHe*e< z7~KUL8r&4Pv5aS3ZTgG;kFfQdl1Z;Oxv0lfdAHtI7fAYr4U+Up9a!9IA%zRCq-dc) zCxx(Ui1yWs>pEVBSYwC?g3v-H4wFr%Qi+W6VZ_Te9Gr+rK}jg2pl4=-2$WajEA=); zwak9rK#4#H*6C}Px&?%9vJS!q#mo}0^-}z`o&%y#vHd$N$OEbx7bNbmorX$p$|pG` zT?Q}&toMV3B>55PkZn~mKSjq)QEcV2!wt~_93e$+-{`=7hs|KGFwt8yXo{G_K`V@; z6kMT+g2u|Q$KQ(dy=%7=!kUONw(z@RV11Tg(rDR_$%X)ZVjLz(7=kNM*icv-$spwC z#`F8E&f70xN$T5{^<653H?y+{E!;)Kn6|&we`v8X1hhP{QnBH3cVMb9*rY^doo<>S^9c^=eV_xK&yLZgf z6qDfnfU9Gy_oaKPTy#rOJ1cuX{%Z*rJD;_jd}Q6YWe6*MAjG^KeETeqc$D81pfN@o z%nTZB{B_$nE%rXLUNGN$J5DxISE4zEvgA@fiP9ZOcSKT(hLn(JAbk8q9aw(FJKXk?8laVrD3T>_euWOo0ck}gd8(?S(r()$3RctFrSLy(;i2>`%a4CM3o!oDJlKAml(bwqA^X3 zSG!DaABvA*L`5K0;B2l3Knus#|tB zykqB&UbTugEN8#J|H424iB6je z%L%0|rmavm=r>+dr{!dzua8*tCbu*mfG;p)_Qgz^FC8Q(S$(-2-aqHEYL?aNR{?qA z2V}$^?5^aSvRqWw%Nsax7I4?Hwm5pmS!P`7wfD-Fjbdy@L)PeP=%6i_BkmDo0JoVT zGm8h7sIGzr+Vi8A+_cQd;re7dAf-_8ijviNzjBeZTt}y#tvMg&xs!b3VC^4g-tFhe zdi8wf%l5QbHXBs>wnFQKA8_93Z|N8JUGXmQUiu2la--d1S<~Y2XPJ;mlNT_9A8J=%I|M%`~RY>PF6IKziTqa%4xyR?s$fHX|Ec&J)2;{;;aH~1|BUpn-;-hjl& z+e=}HWt+K@wn6t4gW`P9OnXcpr=oFZTV1@*<7urdWa2>oE_ioj@#>XVnn+WJ;#T>Y1Tu(n4lX{XxJAhKbvjQU%n zw*03B;IsPKV_u-|WH)xe@onj3QlU66!?b zkr^r5TM-ACFzO{O9BoFQ|3JA?8j>9kp5e40l z#~1p+?IG>zo7R`-r&a_d=Vxz4wZ$kVFN6zG+Pg(J(B^_|Y6$%zRd>pd2Q;^de+9cn|(F)E|tiLvD&^M%}t*u0gv>xL7$ie-cozK0Nzds;WMJJgK<<%8C!nW z=FdFCFrN=h<+f9f`R)z(M&E@oin75I`3I{jhRj>);*JCuj18*}`oVdbk5Xwb1+oO(BW%_ZEV%(1^aiYmL0EvB!@<|FvtU@KVQ)12ndjPw6 zOf(^M-Q(QPA3{YzaII6kWo31=IGIbfcNnf^}{bp{@+3HHc$J3 z{E`HTmL>d*XLN7p`~6q6^Z5K01x%gCRiZQZ;pwlB8A;_hL4RVU6C2Gh z;##!Obx-o~{B8@BPleg%uIgu0O$90&% zS;#ryv?%bE@toh&mS1vv(p1>DFtN~O>B>j{JRok;jPqF)<5W0Sgcs+stLhACHaBfI zfJ{>lc7|9!MQ@v9aJ?zXB#HSXti4C*(?6t&x-Cl>6eim?h#AnD+8oQ@!US0}p0VZZ zXv@!ygi01GOO3KEf?XO=l#Hp_?}gV~RSv_SKwL}OA=aE|T--lX_8b1x%jyH2x&~z1 zWSJK8@@`=^T8J_x-wr9NEc3O4dW+dR!Zs{Y@~ti9##Dk zVsE`lL?`Q%0X9XaLUUtMK=c9@S3t(m&h!Qrp_ICxRI~gW^x)!>_8sfY?JKg5zbsRV z?CM|UYzosPUqzd_5=MjYwF}|AvjWofvZIc2ei~d(wY*L8a#!aVEe;z()aP6&RO}X{ zU=N^;Hb~q)0j-5pJ}|*)3?G(Bu;U$3^M3DH-l?JGTb_;4Bx@f}XBe3Q73G>9A$Q8d> z{vK&;mD$?*!K13D**&)LaPEZdV{@wI8jsK9sQOAa(`JfL7B2gl(uO5d3yq6xS6ysn zGy&0h?_8lWXPqRBZTQprZ`Gx#0dcw0zx;pXsZ9o~K9BY^TlKP=Wzzyud8qpAZ zfnf4ZXB1+$! zep5#NW4$eW{Fj?)EjIxLIuv!qLBZ=9K_T08HHlcFP_S=SD<-`js!9ZO!LmE#mY+P@ z@A50%df>2T)4=|f_AeM!s&aB3ZY+GPnFjgCiC?|)lwn5+L=~nc&AI%6#c&N^K}((R zEkjkexY;gd#?g!W2`#3sw~cc~1DUPT9)}*luH_kjifLDsPL(HOw_fHcIM1>~i}Md1 z#(SrP#7_^%5U&1p=oM1itSeZ+CCTE<;X5*^vBVKWW@H=`#}{tqEov|4<&?<8a8Hx>)hY*-qSh`yO{d8r z)@ZhbzxrBG98A1T4)Ic@bEUR`3GY z<-tJf{WpTtB?sO&)7K^xGfmAuZefGEMf(!4t>ioClR`)|aQ)Tf7Pq>{2JamXEF;Y_ zHeiMt(l=r>GU1Y1vfaMN5d|;Y_s?8f@R0x002~WUrHjQFuK`jZ*6Rug7mkC{dak4Z zlgy0+Qt*A0xn`Mbb@*#oTH-Tc=Xbz{UL%RHit_Fv-TAhJ4#Vr3Z<5BihSZ!-xQQDr zZ<@}Jx*AH4*wt`@xW&CDdsXCAz$GFVI45;FjIr6j!H<+fh-gh2cw#Qn@S_o;`D;8EC6 z!i}WLP!n3_6~b3eYOBt%uKPwC&*(lIY^?{@n@t$?yIAk6Mf1s#n*FWRb|-sW64s1i z$VA9l23Vx8c>*na&;U56(kHlAhM>^EM1t!_bh7vv^+gjrJhPj(*R#FN|9|D$GpB0J z(^ur){`#|5&;yY4C>O|S+{^R4-~I6LzpvQm&w?n`0yxGpa+H7rmpkelV8ETC>;D$1 zi(~2d!h}UhW4uAeA-~AuqE2e4?sZnOfbU9`Qzz8(Hn~EZCW#4mipk$duZM?e;WXT* z`FEuddoii}vOKf_Up+&lS&ObnQ@3Q#W}J1CWBHgXab{DB$c^6DC803WTGHrm1#HjK z7&OktXT4Yye2}i} zg{)ev?c=H`@FmVG){FHGYH(sa=IfVytia}>U!ME%*sRF0Y#q`SZB;(RX8RCx#mI#C z+vp>*SZH4}NE$$lP@b6~j!I2I;zyl^S8wDoE|={qH0EFlPgjW=N#TqkpZwMC;Fld; zROZ^BRBRYvSed)ujxcumTmZ=jNYT?eNOxtc=w$iUu+60E~(0Z-J*pqO;BZYEISw*ED3l_

<&$Sn{oBqb&AXh)=~!-qZWaxCdP871Zxcoo)Mj=VVRp8eU;}WQ&wr2I26_K zO5Ct0l~r|4yCtS#V@s`$415RP<@Q1Jaffryd6voKmFTuRBcaLUbMdKSD{Y#2x~y5A zWfrB!j%Z=utopklbuUiA7U+D=@z-dGT0z?3M}=SX{SWopOSJU@xb?DG5xxX;Wk=*f`vqu zdiu3Z?3D7#=?{L*JGQo3#d{Zb&=MCTb4vwG>Jm;8e~|w^tvZqrRMW1)iXfQVub`PT zDFAdz^SFlh&^?Dd`?a@ik)1z{;%}rl+TZJWW3GSfOyx)c;9yw zNEyiPZPB=6IazM>_}j9BTOPo@1~>Lb*1eb6y4FzJ5%BgsUa!|LMW+HAm8ptneMEqq zn3uLOcA`^v%(^>qoR+ZAb->0pl^Cd@;0SYb)q1eGOL@UF8Cuv4Eg;urL~03&;5ir$ zu)0C@t5tEbdfK}GEMGHk+@VK7`OBBt+kBEH3OOyVf+*WWy!l;(@@Sur@%qaI)@0SLEGOfdBx=h(DT(_` zTH5|w>v5&?xj@w`QpF*SLV(OIV^;WcZZ2Zc^M8H>^#T>e7FCLhAX6*8N;$h>eC^NQ z0cL4Z`g#jUo(fx~mN50*JNA?YA3QKHva1cPHiDY8{=P?rp>~&wV z>B*Q9vCAXgV{z;G?eEI_39Z4gC?KzpinSJ z-7xIxTa+eE--?YW`8w%P0Ci8NGjqp|6ld>7AYL6O!Jyjv7}ZNUSf8tVcrS#zY1cP1 zvPO2)gpx{VRIOju@0FQK4t_PdZBRzo8v4C=tgN$PqkiFGO@fvJf}tSUsGy!r{R1D< z2T*@U&x3_uN;!K-Zx-ZZ>DKu&NWe}r84tssvi`=F;g8slIsk?^V?A5lY%YD0>^okR z9U;coBG&8+qkml96&7cC^EGP$o6BIUKMOkJNa{kkh49Z-8Y}WidnoHs&F{!w8CpXL zLRkRbs7{F6K4#y(&U1y>QkmeAMD>q53M$Tqi94qlS=qTC`}G7mxNzDiMh8VjAr_R zJD|8>JBDIw0-Wr}8!6-*R(Q(G2Mre=?(84is2qXw1Sm=R{RkZP`Zb%=?4Tppl1;gM zgO4`N4>Y1b&xlhy_I{mvO6}Uro<4hl)+N^>o3Yk!`b&AH9wYaJ{9I25w(o^IQ^uVa z2bdzGTfD)13MYL3JxC$$nvHuHZ769>y=kqad|gKI*5G(fgJCy%#7}$}=n0l)eFjVlOUqtj;%qfo6qnNK zfRjXc-xI?%xK{Fj_peQ#;%Ed!sVV}nYp&l>Zct7IzHUEd1(J2+uGdV?BQS$+Zp$*O zlM;1P+}A(WcMX3Su8Aa31{?_~u2J1I8RC$U4y+<2sEKkXa{2_HzC<19J+7Mko%fgQ zx<<#|7d4x?$&!X}FME>JAT{uYvn1&QWEHF1i%cqyw1yB#-gG93F38wgPhP1><2iTD z&2l7R5BWv^G$xskL2Q)h+jLvM@WP!$=d<|_2NVe|YA z#x?4q)?vvs-+y-lgfy^m=W_Ds>SRBuBz)-zFS#T=pTnlX^2;dhmVx?5$6I#WoP4$& z7V9YxEAF=Vqt0oPxZda+;Yuk|c5;J9UrG@KPKD@l0~=bp1n)2#!Z$Z45k=A_J2z^6{I4NGbb;DIyytnA$&1~{tWPi=CC=8EL)vH2W!gYMsF%&$xLmrvq*FY$nmAdNSZ?qa z#=XyuL5YRJ;d5Ek`wB@{eRYDUo1JCxJ(Z${^uBsHNraSuxLESnSjD{DjdY5VcJVm7 z7mh^MlEQf!!i^I-bOfZ5=c%Gtl?kK9zGX2gQ6BbzOz(KX7OpA+hJ%B(k+&X2kTikSBTei z|5j|`icv4xHI^+^sp`uvF+rsEO5CLYE{``Wd_S5yWdwR9W(454R`Z)lkR|~o`M81s z9(7B4l67(FuGr_b%tIs2Kh!+v>#XBrs2Pxi8AWuAXpAi}Mc%q}A_Be@ccirT!Nd(# zakYOo=%@^}3S6kbzzVXEn5faD)q)R03oqaw8_+j(zQhRX)9z3t^Owgwm{*>VQ5{Cs zP3Tc?4*k8Hf9Kb~f2*xatUvfG;NK{yO?b-?=>|28kp2mgYXS|MbtVT$p(XM22{G=P zf+i6b-r29aVt77mpw{L)(*;-(b^BpzqLVLn989zsH!ng92O7i%JWr%K}rO9TBT!GoS5 zVk$X+w)l2dZ3V(%iKASk$fr+D9#uafEUw07fId>pWa!henP!(BUz6K*x0$G`h|3xq zw)^*d$Hg1hVzyVPS4w=1SfX0e{HD&Ftp6no_L`NlauGDMyfNLq~i;*B2X z{7RWfkcBZN61B=X^1&9@Wz4j`vxliq!Q_ifm6zdWXJ(U#DD@37Ic=}3Q1E&NHH|L? zPG?NH;6&K^i^)?V(DgSOh2IH@cbKX-;qRk!txy;2nn)E`bht)gXhAw+onYf-!6Yfi z2Ge0w0jvca7XZUQrTcL^rE*aP#ZI>gaog=`f4R}rMgL zTjuIXBA?glqko-x_|EvQ8ivrI(yj zN!1$P+m%LqQ%Wiuvg83I!^@n z3+_s_0{G-j_JpT)N$?EV60_V>Do@`1x$*m;sO}XBhvcm*h+lqm=_P#apaUXWOKPpb z7*q5A%kmVCU8bMgTfsk^cV8Rh0*Jfu@)jIRm@=Z9_eowvDEu^96g!e*+SS-@!%`(M zKrc4HSIjiUk$g90-xk zw`Wc3J$5T`Q-R>h9o(rL9mYfU#JLWcN$;@84dQ}kR0TKf-4PG&eD3EwQTC2Cx^)D; z@p;9!R>=w1tj3*rix1W$w1Q@HMpsAG2{!m-iuVb=(a^@N^2T<$Y>eE);M61$y35~t zke^3)Z6cqm9y&)_WR8)A33=Eyw{jn1<%D9Rt;PT?{xMX|R{F|Glc3YabQL zcbV8YlSsiF?P)-T$+(50}`X9#*nbk9a_shHh>n5uwe7xmA@qQyfZZAz^ z?q4lzd2Tp;NxMqx);kyhNM(TRg0&m}6pNGQyi_qz?~3Ws6ZzG@9@pi{EPUH#Y>Cun~9LlpT*ec%jD;FM>!@%0OhJtqbQQV3*t za2q3L--O0NK-&4xuW%XrZ!Qfo9SfHrhd%UqGL@wM)N#1&E3e|l2#92J|4C@SC(ZJoz zIWgB=-ibiLF&!?Sv7^HFcHWK`i2Bw1XOjG9oZPX8h%PdoqC@Hk_pzlT+ki8^(vdz- z3x2rX9k|;mA2_&e$ufTL)ihY#{F4wFQO-H^s{ks?AV#T5llSYuMKfcU#DXfZfH%J2 zI8H+i&lL<@4Qz7s4plSxcWmObyz^_+uR;szdC{4?;n5aPC$&#w)~FLr+Q? z8pnq(94)>KHe`M#L>ek#rR}-({$OzV1o44&Q_u^KbNZ8UoOkoJ<$|jzz*xNyGq3k1 zHPNTeO=?)QB<~8mr!+f!tbV<5c~ikB+(6_KmQh2#|4H?eY*fJFOSf#=49-|yO)IJ| z(7YgWj6|Xy;OU1ET+CSxR)Z;Jg^_XkKURmeqGH+`%im)P&F_!qfU9BlFU z6biw>Xvw!v;QQ?WAC@sD#z{%4_@caI)xsc?FUxmMXfof@X~CpK*WK7qUX{`x%(`@V z6%G9weJlc`7ke=N0q2LF*PU9&-@Cg2I3U|0{@5wOh_}$VHRr@OLj_5B#nS7ECsU9g zT1m@T?b+e=>rVutOS6gGlfYNg8Wx=#lX-}L%3|47d$vA71v&d)fjjPqEdoDBno&^E zyN#oV!F;A6xx_Bx|6H%V+|Z5x`sJ(UCT}kXlm-5oKj?MI!lz_!sRFS>`52$gkS^Z- z4^E;Q{*2^j{DXtOMtcksxY@tgaQn&2a9#T>Ft4`&PqFu?;UcP$Er(b&ecV*httw() z83l+Y_E&^f?!BvM@Al9kZV#s}R(a=PocFzB_}lz@2A-*%mOg0+rz>g;cLgw4E@K53{+3-^yi;#ZPrhjJN}ylQEzy-!BjX?>)R~ z?q3sKk{x&@+P1MDIH2T{Zdvg+G8;n2BNyeb_SF&5xUkbK@2y4VvX z6(WMs!>EAoz#M|8xM~TAv753j563?9%uZ__pPCMg70Z}*LdAC;U${J>JuW=~#~FQD zWnhiDloo9YhJNq5kvJQFKRXUHQkm&Ym7e~3!pqesmb@fDTdq-~>z-v`RR7}7BxG1% z(ZTlQq&AgHX(l3B_Ansbc~-j1B6ishJZ*=%@5!dG(>va0Y95JYY*BGPk!%Z`CO9SC z3$Ek)ji~}idWu`#dkQNrIoH+M34VJtd8g~i={ALC8>IUSUu3l8oqp^`$96@?rNn0c zvZRNfMRiYWkkIiFRryH8gKpTs(8AO9VsaoiWpPys2N1b5RV~ zJqD-mz6A|X|0G-Z9&j2w*O|-}p(YUfapu%ch^Fkog6-&q`f9t}qR2oMT@km}J|WVs z%|O!OR`seT@#6y|oOAmscca0Gs(4-DcUyG%4qeyS{ClNE`fOyP^RU6p$YF4a6Y!hR zSnW0XIo9kN290Hm|B(|&rBzYBirwiheNnq^^@^!Mkx(`(4lvmvQ~QK#n5l5(6=mG$ z7pZiw*yw7o*`5|9R;3iwxuMdvWmP~PsOS~Zc#Szl<_G)krQy&`j|%?D?%{xT1{9|s zquO>~;`HXC1gA{Izr-51i~vi+7E5F59ALZTpRmj^h05E>^>cjN(LKBv3fV_2jeQ~J zqa70UlXiyaF>^>-sAq@`JmC9k1Q8FMU=`GL)lFd3C94~h*#&!e*XSRva2vdT1LPiU zw-5xEd|Qn$d;HkPLVPG94|!_n4=(XsHb!5H?)l>~1&H_;5ijp0&xK@*+W8c6(tg0( zDP6wv!`VgZ7-9G*B4+5GG8u@NF1#E5KZc2PjqO{`56sB_43n&>x*rFbWEWwkoW;#h zQCn2j7~{L}IqS$V`Q75ff4>%F@W{nTo}NR?RUux*-urL6{O{HA-^Xf@Y5{I1(Z0M0 zRle|Hqg1<)tJ^u%4y`u`z;ZY-c+!jcL1$=H5G?Um6}OAAZ7y_d*j_~ z25KMSip@DbIquGlb1)o#jm1$Nqq-jrEKDBc#~8`vP7_)G^gakv=JTJ!|3TGTMYYw2 zUAy%XN|E4h307Q+yCt|5hvHtKxJxMz+=>@>cb5Xe-6{G8ifeESY{vfn@84seth05t z#`COu&TGzF1%{9G(?`CLSs;?^B%3?sjNc#sW*(5}p3+W}!VghB9>c@{o|j%l)%A%g z46D)+r%>h17rV(aFj?zUG>rCR;~+WqVnr$e7Q?nHnkEsa*np%V&u|4NO=}n?r`2;% zZ=9C#JW@6y_(3GThFjWFsXs-TDXAx)PEHc@@KL<*CV`KPSZ<9!@wIiKG)=RqB=ZM& zN!W?A1WM|``c)v#p)U{J9o^vNosJbHXd{g4@Ivjw7O_j8ibbdn%_D~QKF070R4WL= z-3QzuivAiz{I;c%dE=!~yaGs;nonWY$Qac8B6J~UIj(5`S51&~?J(a=t}(EixvoR{ zVOkUzIf;vwbNz9WCd1;jPUHQE*^dI5k`&gO7Fm|K+)?8{I=P1<31?%p*#%bh zi%7@=*dh=QT#%J9Y|Ee|;ezk9Lxedu*k(IQC_0)6ND2n#M&M!k$7OGTxxFJPv}8@z7&r=K3LQA)6Up3+a#Yj6yV?+Lm3$&Yg_wa*4mGMR z)>`f_@glvE??Sc9q#&Na(X&G2y_$mhLH+U$Ft!=qPHbm#LWXQ%{p@W5ExhkhKrdo! zyJLiue>ZU!6CRyW$FbKc5v)~+wlzv}Ju+BBY0DgHD26}?R`W-gDS zS_i~zYsz^UF6FCPNpl2Sr^DCoRrpX7+Tx2ocuF;uSKILSZE{ys+?zv&ix z7CTadykqSK%!SC6Ijl709S?g=MIz+8lBs(+O!}*!rC>Tc*}?R2oOvT!oA&Spuju$& z?9L%0;AaDgDGE@2i$pEzjpn(yiGk6^^eTwL4ZWzW+mbuR(9aw~WI-^N%E`zIjQ>vYzu(!(xcne#t9 z#zKdzL}NQm%9Mmvkm$xE!g5K1pwZ;8{bTIv;!sTy>D()}<#e_<6?shL@Cs6DEp@)^gU|URCYo zMmi@|AE_5Ml>qM9ikH9Oa)?SUHb*pjWpB*J1Xqo0+}p#tcT5H})yPAg4wQj)evI~2 zahzRJvu??UW({^@fZV(5!KO?qbDzL?8Iyv0;lQL18j42hoU8d3KA|sKd+9Yp?jP%Yy$}9dNK8(JMG(G`BfWX&FZ+pyL=- zc0UERx|nigQ_rnxc&h{CK!iT0MRMxmbzJ2#UPWkdUaz+6KI`#jB8zDCsH4t<0F}^h zuuaRV2Nj|LddS@dYgivx^-?>2%1qn)B$QjDa}@QTNrzg|%o8&#mjb$OWj9h_b`7-stfScHil1#wqRcEobz7 zCEpn*iJ2~J%q|>qzmWAaMjn`H)~!xB`3~bQ=6{o=uDe*9yL>dxkH6qjm-n(Y*EF3_ z$~gANw|?h_Qzu3L1pH(hkzfCl3<@emenf0N6TVi{-+#s;sGzW4M$Ye~50T4C?8^^Y zaH-`-w_hU%Z*(UT8rG=nRImz!hXSm?B`pj~%WRGQa$lU|bt>G!hRIU?p~1;*CSB!# zyyvJ`mSOLE4Hv?`q#u#m-{MYu^ltd)6vBD`N9uw39|(LX2x<6X)TdEp4Yai=d{6I;LjJ$Bz39;j@=&0rcLA+lfjirOL4gh6^z5VC4y!meTVC#$fJBcN+Ro?DH6M?u|n z-t4ga!bqw|$ILSuLWe_7uU{Mr!5kz4)Ua$-s$nMYIz_BUy$665uGp<7hKP&URIVlylmS{qyaM@ zclondO9>y&YSR8A?Vc%OXKM~iVUy#|K0algp>O}CUm(+xYEvE}oI=ZV{#+l9jv!H8 zClWD_jkOE|)HKjDG~P2M{#5@_)RSF5VHs4O3HCzMfV^29jkOi=Pl}Asp4F3Z(%f|~ zegAcsNW`_t_oqpf26jO*lAB zI*99B3SIMyUlXFxdQn9$nYFn6#XT}K{$lyVC}wDiWmOG`Z_vuYko${8qXVWXg72+& zTzw=;3>2Y!SjklC(4$i?C0*f8S&BB`nskej0=tmeDK9Y?HXqEoMZj#IRcA zdBqmO4TPz5#?*Het2J0Y(6$~#X%6zqP66l*5#I}WN6jpM z>YKeNYWl+oR$>=`H}i(hBw*WnKw(K1_n}a^6+vNhguo|X{FNT4!MvHqM*4M_g%lPC zV)36G&tpO^#rP)vY@**6`7E7GabVAVn3ap7T?%8}G@Qo9GYQlH0qQYCo1n0p5F$LN zmp%!~h~wq}qw}4cXFJnmQ91jZE+=VXP(e6G{)y$hBAK{Wcp!FLkjB2Kq`pf|tS(D? zfIk1@$t3+CaWt?gv&XhA%;XLq#rbW{F-~kjPb$hGHq8xIx{dkm{CbvqAZ6YyQ-4`H z=;#E8(_gyJEi&MU&v<0#MqpfpqjN0ak+!yf!M}J zZVa{x7Vlv@WYHrs2#M{qYAJy3bD08^LEx)E(eX z*1PPK=(s~3l;$f{?f^``ATaEeFK*lINc#{BkIp|P!P#_<+`q=2rR*>D4NXyEiEvW8 z5tL~}5#c=B5L~FYamP&z+7qfgosiM*(RL&D?Z0i#Zn1er2#_Kge|^s=QXOTuNuOUY%V1;JYcC-A zrN6EztKagAZF3e5s{=aLz#fkQt<93O;~7hfd-yCURsQfY)elsTYJlHjgx@9yD{4U% zIwd;JF`N~yb(U%flM%v&2UtKHJQqs&uGN2bSva*FVpFwQ)sOAFTeJ^L*ARCh<-$!G zz!9;~YSB>2zm7*H%n=8o#2c&>QPAg0K4+e%Xvb@jp7~WNx~yL*oeE$43A(mAPhBI! zFA1PEEoPeTx<>Th1Y}+I528NfRKT0J6rXoZsQ;QUo{FqG7jc^^^`EB4TkfH{za z_r}Z@E=5Y6cbfY*%*cQ%Wb@x8(Ba$(wkeD_71<1-+^h46GP(|j|8tFR95Lf5GFu^q z>nUyGJ%;b!SrM{wUo(Uym2DWQ9e=ue2Ip3Bj`Zzjsg(6Hfte2Il2=xtnI2Y+M2Ti=dz8dsOju+-{k>^hr5Mgs&I?d0wF^IIhAjEwpdS&JU4L1bPii2|M8_ z$E64l(LAAX?8pVx5dDZ|F8B{^h8+43sFp|ZT~TMyPWg9YmyA2RoSkm4btTZaNH-cD zu^B$;1Z^2Q^rGIhGy`HcdN-7^W0 zIqG+P8-5hnPj-*|%$O}sUb4Y;X^x^jcHSYi@dL*Z*Z^iKVA26Xh#F>W#Mg~}8LNh{ z&Gb$Ys}<9<`xsG0+P5YrBrTu|vcf{(`w@C=qG*4iOr5=cEI8yqjc zk@q~>yzM)tdF%d*!`;AyZ)NeQbJ{SckBiy<-<%P!gB5Q*By}t8591Qs-8)Bq`Fe(* z?@WYyYPu-v$_61+$|C>bU9oeq(bW@pe#L7qf$5++?|mtFzNnUVgHYoIwVm6zFoNBW zW=PpNfjv!_qSA)8d8K=X347>(PC+i+2JLGMz7W`elzg{T9%v#+B}2kYBx1$+bm)O% zk5t2Cw%w*pC{-npC7Q`|f=K;mn{kT>IPKRJaZvv=;Cdevwnf!BuJ>=YmwkC+<6DPB z>n79IygR_w$a0Y3WQ+}Xa+6ezB+r%MDe;NX81TMPe9v&;56wN&lxXE;bUmc15`_$V zkT>1FpdNWy+PZ*d<-lGn$h^5?Ip`Ssaz-aU?L&SPWdgeoRNtMv&*ewj;~ShYV~f4# ztuRJFQqkVL4*Bj=!P>jte{KF>la7UcHe$i7%_&fxJ->}&r^!KuqCav4Wv8x)dkGp? zo9nqs1#Q-QOnrh=j%jcX#5tEHcH=n0Ta9oQ$f$~iL*%`IF-IbPC>9GnhfQ{0u{n=~ zu$2!DU64MHRKptnf+y^*EoO>y{Ge9fV7nbhy^{zdUTB%%LBsn&rA~z`1m}1(t&}Uh zN-HLNHosykiWPtL+jK~W#zj$BQwHtdGkl#fzwh%4KhIB6N{;&%juULNfUzPJ%bH)b zqk%j|^vtN91VdcPwf?F$@dn8|-K$*fW7P(f+Fb@M{Z&3oGNZMqG|N!j^a_YB%XHo- zZsFmBTF7;A!z$gk)?mx{R$SeiDO4u)m@G(v@YHIJ*8VZpYlkAfRT;kC0aS)X9WhTu zi<(Moh)hB@o@x<#<38_V9%hq46PEU@ zy;HH|eY>hk6QUj!%KvSXC!D+uxwj6^y~pd?cE2FGhOAV^O+JxGd;iSXQ%7D)uk@t1 z&WM_LsJnOs88^(gZ9}cyQz9R6ISZXVT&u!FDhF5AA(0|I4k8efe)*{PEQT|}Jrx5W zKYw~(w}iQ4aGrN?GlJ!nJta0Lis}HFt^cHIhqqo~`TSSV|M4VY(%_eNM}(H0%EA4P zS=5`Kd6D+X<*Jv}b6giqT`^r-*qE!<-;)w<@(l{k(IoBZ%@oNB<}VLL>H5m%wEovi z_a_12Vm%#RLaYQEuW-tr90M$BZdN85)pOP&LK>l2QKH^P((8%f3#<8=vcGV#GhI{WnhapQAgPoHlRes6U0L6y^PJE@L3X#oCl5C_0-%XjJzfifjnS-is@RFYkm z0mV&_`$JHkuM@glptyI9stJv0mAcE9RQzxpC;Hv<>o|ZV(rbVulu=ibXZt#eT^O&M zoUCxWlB-CIKliAinwC3NbOQlAK}0H$r3LD!lU8xCzuF zAJ;0l|A9wsjasd4TMZq|C?hj;lM6SsF*py8)B=$~;*+n<3&z{OCYAdJP&ml=#Bd#t z$#qi-&{)scI71`+zF*(S^!ep01!*~D+ZC30 zgY^0{>71Neb7#q3%Ebwcn2m$GK_bMwxZ@o1CfjMM#-j%yk_#A%NsPMPWpRN~uf+r*X2Wa3c@W@JQ2y=2F0Zb(M_1iS9Xm^*brqP5_NuX8Usw>8}(|+mBB+(^X9R z_rmz?obGBK#IY%tg5jes7dUR09IK?bRFXJmQZod*ss?CR$^;8>OusX>J&i%0bU`C^Z zH>FfTKg{hOPMzv7n{FB{+za7jc*NGR!ep^ThC~?k;~K-#dxD+K92*CV{PYUuf0U;h*W(t%#{LU zd=nRYi5tHptiikvT%e#UZ^exsDt}_>?Q&a(&+%nSD8Tnshlr08xHeC*L3?N%GsM6o_rZEH zdoq#zCW=Bk0kJ}qeNVrU8jp|k;2DiN%S7CaKFCgZl(wlm*cEeaQ4E|$?7B_(HfIUKf+LmE2TTGGL=PV!6&QZ9hGv6 z4U2AKBr)m*pZvaKbJXjin?KvZqZgI$ymv+HecconZ$DyJ8fk;uTb?$dlENPKe3BA4 zuLk}_6%DzxOV%7veb5d5(BRj0`$}ibyhhq&%?qsyN%E~1N_?PR+V75*E=}LBp8F#K zZ**tyc^s8l>-kgzuvr67-sPRTCWY-0l(9n7mKJN6GA~+#kYe^ZMn{OjjY|>KEyJQv zS4rxLZtF_^8L5ga2J6=sA@{G)E7hvW;gv~WYDxv#X|LT7N6lio_1jZNwANlhXS3&K zQqE8mztDz%4|)SK14b|2iuL|BUk`44~a_{iD0=L}nQHK`alji~Y) zImn;$a5tnW>JT5gc-L`vjizvGTXRA?HGbVQfFHE2HK+~3yt__^BLBxtf83F%xe=

v$oQNE1JgyqZX9{8B3Z>1^jE!!zSg;ce)ZiT)xO^GHL_^O zXqW0y1+9==|DcvkX6u5kxYL7=p+oOC{^7b3yx##jz8k#0s)Hv}Qz~+h3?i`b7R%?u zj#INqhSk5w5J%0TdB~X+tfmx+brwZW99uGQ_k1mu7)u2cLBF11u}>~cydLJ0s}5%4 zkm$O>#`H?folQAyPTfnF?=$$yr&6@c`^QY{_fXE;e0|e=a?PZ>^JW^?Z3d3%OmwhA zl2kL((a$1Cnv0N9)y-!+O0cOG?!=jJzh1(L4hPdChT8(#)YrGkUD3iS;N57PNHFXt z9hz*fhWSeQM6W)Aom6T1Xq<~H(WJdVbkNHpw5l zYdRl(eNLGwF6lK*I_CD~d|$@a$d(?HFtQrDi^HbbB%4#1K)#IzkuhkZMjhBdyuN;)AqPxMmIdcE_ z4-Mdtrw7^MiyGqS(VzOED^Td&xJY6{5--{7`bvG-i<@*C9gv&C9W3{zUPB2bi2tOtRE9$9-In_v^w zzsdC*<&z>k=A-6v7!hzaaJ>DvvhJ7wEK{tWB@p z!=PRc1${Kiv+`3m$fK|-o*(f`j#XlTeOJ5l3-9p7l3w<#tq3KyK@plQSH-fg{xKE` zG4hTsZgtjslDGDb$<`fNaU=;nGC)teXSkbCVYVSoNN;wfC${Yp?{|y40J*-ugyx2f zNGVXpvKv|!+BZc$y9YdqF4ggmam5;D& z=cb?#xmK9Vvn#!WrqC*$v&lB3-Gxm_VWFKz7nwy{(V@_FTdglBTYUa;&%dK4qTLSL zn|lDJD_U6ECRusFgtN@?T^%!STBMKpDB>c*Uwp>!tZ^A5W#T_}^8Df_J$(z9)(D`M ze5aV$0mp&=Q)fx2Q)kq=BX-*{$?bT;Kkj7J=M7s3bKQG!nxqlVbrG^xM(L;7t87j} z5Z`GEwZiL?MqkOHLb|3CY}=NoT-+}37o1f33KT}wZK2g+_3kG3-%52eMI&4*LHX~~ z95n}|Q$r>F{(S$qEl(Bi4rB~&Gj5~XMQKjhjFX*cDuAz-@%3|^x{kS3r_8G_S?)0Q zdt-SAciCc-7i#ww;5_%cw)_&SX8_`J{-Ayb#t+KWH6^9@DeYHid-Drux`qWsm+E)r zMu?ix#Z!hc0wlDj2SXxd)P%tq z7m)OPBwHWWRPik{EZP>s<=EJ50MH&%W+sLE>o_4dK^Dzw4TrKbuW6J2-DMW;ftRYw zMN9c#!Ki6gL{i?fg4MP3zvyr;?Jtjb;*f^X&&TkorvH?W!J9GDe?^i@$kS6QJrjq> zM@V7Ftj1ew&W97#fu$rXQ2$);z4G$oOW0&WRB-d1E>q`4oxO&K7a^BqfBKxrX!-H* zM5Fcp%NajE9&c}~)r3}ea{6%kcNC`AlLzM1P5#8?Qj89Fpi3KN_<@6!g#$Q%7HMUn zUu*y9D~Go{!#idfB47phZ)4{F%mbZM;v54a(}-fE_o6?3-VeU!lVg4+(|0Rt<}*RX z$Nyc;6Q9yE^xvftvt>iF!qZ$ZOJPVpRfjOC(qWC7G9VP&O;ZQE7}v>S^38x_gs-1B zz&*P^#WyIb?%fdMTbdjpVy!?qs*&LMf(hZs0j?f3^MHK8;qUG+#z&02@mG~%83@SR zB3kjaUj-z1n2DZdsOir{Ukl>tNyDdD7G8IzoU%jI7&)02oGU?yHNKKgkTr207pEAb zb{>$7W}h@)i^Vc$^q1cUB6POr&glZLGnZxaamTparYsyJFZe;D<8|a)XN_4qcSZH51}q zV8+F0>fltI1xzbnACi4o1x(3fICJ-s-TRnyaw>UKxNB5=%!;3Y0&{=5u7P+E9MtWy z`9~Q3X-?iD)n5M<(jFQSD-8yQ!gUPlpLl66`Daj=^dp@;ZXyS#uHl0&ZS~Tidi!HiWb@aJCUJE zEXLx?^f@)qyd|S;r}4LgHZwcRp@VCj27S7+gp<2gJu_~t8s#O)=6h!8=a3vvD9q*? zE{C7AgnxAG7FlI<8^+%Crp5uuLCk+~-W;3O5+Q6v)*a9sb5Wh6F0g64*kUzS)+KFx zKW#n>FGGD-bkU}KNJCqRc1*0buTj5{qK0>7&=qiK=p^B|T~hT4@Oag8-7<@>7G1a-=5`%j z;|YGl#uX)>H%eIW4OU*|FYgeypJt)CyM`=RV*hdj%#doh&=;VdQLvEeE6K#GbSe87 zbuP+0J3+9IKJKGG$b@gIxP{#QDWKY(l4HbGu2nv`UJGEws#>>VJxhdTWk^%t{UK&g z{-JOrUqB>w(Ps$)Z(WWVAu_^Atxu1?ijet>-GB#auPJ+^svDyZPIiDqh*I~S3^o1E z&i4-~JyLIPHA*A{RcZ4O%k73QXim)T7+WZ6q>2sai0vZWs0_T(b!*&eB77Jk|N`<@$3qW$Jp7Tr% zvD_^gQP~NEPSY)1$d*_=eMFQHrrHaR2OkUgrV&bEg~B4PXhI@#BkG=iP|VxQqVACV zztRaVyNB&P{l)EWu>F^z#3wKIDkn%uj+*qTcy6m5+mbVo=uni_1?k!!md=~{DvrD( ze3>>8u&D=S7P1-sR5|MUE7y%s`~b@&`C^U&E_^AkZ(#E`jZ2C<_viacxeSr#W=Q4; zBaRW$;HXe=qr-o(4Y+9+9|1>(CiA`+=!81yi}|7xqtGI>zgPbyU6RbUp#xGI)|qk3$^zDfrg(v zV@E{jMJfCPz3(>jasAWatOQ0@pk7U($(k?Ksg+lviWyJV5)aQYm!~e^=9Bl(spy~e zwlAGxRox{z;_HdXEc^feT+?j%B`Rz|yo9YUo2`#~f?e{MMnpN$8X+X!H(=%tYo&*+ zZ0@|HAGcMpbM{2VV18#vt57Q!35EZqK8B(Bb<>r^JIdbOJV19p9T= zc!aXQ*_{3L3=9(|f0`(+l9|@BnB-7c;u#PBL*`||BO&~Q(;b#UE2(iO5QHP~EpA^L_`xhw)Q*n$J=4v zsp5(HR^kDaQ*5kC77g+X9A2iXgzIujPp69``_Vi;T->TN3^A>(y+B2y9VCD)7~gI@ z`W3d6<>wj~hMF=Ue>V4>q~@S=`A}O6(tVaiyEZ>%vYBpI8s(RmCAN&?q!PjBkUrZ` zj`~>_nnD5Fa2d$|y|^)==28{sNKnXQ$-)cK^j zVInVPm}kS{MZCa3QYUy&ei{`^&?zf5gF?Kap7I$arUloOjiFN^~CYK@oFD+N!-Is)W-j)c1f68eVwqU z+VZJZeDx=r&t);sp0xjmAbcj^3=T|DD21Mqq9|XZF9aQD##(Oa8hUUYKeq}l_9VBw z$1h!Kg9}{6@A|}MAF1RCL2EaC-_>{Z*)K`|F1Oz?1d zuZrP)s^mq|cjHh(a)rw!Ecw?fYWPA@s=|^al(N4-ImVh&XA@to)%~=oUCCnlWv)Re zz|}8O@9yW^Ykoa8Z0o;lrZC0U2?pEF?5~eRSqR1NAx&W=0Er{5=H+PlteBdEPK%^V zJ{*+uw4W$Hid?O~$!QlembV@9?d;x6&mp0XoX*@UsdyV`ea=c2Rm*bks57TV$V)UI z5p!o5wu`CGlZoBcNn?z{$g(NhV!+`+vSvu@Dq&Bq^>cZ$#WhZxHtN%VTa8)p2=}_D zekD+&d@WEj|LINSI(Pgi=D}OMF+r1MYZ`L4jm!(dyS7f-!+G~~5x9du;DlFNzN3mp z%je%kc0QTG$XC)Gk$EVv+X$})-EaER;;ZK#%b0@??n7x+VU+I3CBq`_+uB7GH1F6|S6F}g#`~^;cgX5mh27_m zLNB?TLDq-$2^F5-wxFx`3fIu(W9*~H51fs-7iF%i4cCC>%DDLsco=dW&^3VO>MI5@ z(c@kPSv5n8QKrDw4>zvsstcXV#d{Q-C70D~I9$hl)_jtUo0v{V{7kF7sYR$yuL|pc zKk`6&(f=hkC(nLo$t_5H7V*J;#v|W?2zcfPf)limie8EBR$%+bFp~lEhsGa#4NZ;_ zQIC5&gN>A+0+b-J1L@BspoXX{@E!`HI)ObB52!&QHVk8%E0m8cWZ7 z;9a8GK?JCQaPR0QNgToWO$Z*aOK*M`AU-88?JU1hLbo~*x4R}eOGdisG1v_{|wIbP7 zQ6xZ;=fwQIRFM!g7lqmKOgHHH(d!bB58nWK?a_Z%aeQr;9P|oLEtE7lcPL3+d$d-2 zX!zey3ME0`Mue0EmWe%OJf*A6$I~o_o#Ryn_xrG~VI@l>bw!xG@mu@CmzPBVWXX}~ z=%Kcvmfl_r%&D*LEGtqc-mhlzb8Ra9a|k9&LNVi$I`8LLMWM?&`~PG6F8pa(s0Bj~A2gvhg^GruIN0N(&3}vHJD@g)XaQY0WiATBkW9bhL={J-%PUp2x z@bBRZ6~5-f<3DF}0d{N5tDSiAzeoU=Ulp%k^ofab{Q%qr*R46m@!J5RATRxyC1`Z> znKwi3pL2`_VI>XieNS?HVL+nz#-1`Q;aLuO4t--dCHR2C5>9AhNCl&g?Is?uBtt(BqK7jk{TmDzZd^S@VZqE1o@S6R^^r#s4Gsk4V&F>V-u#AUIkk%iC4jC zN@t1jpHR^lj8A-qF#q}IZO0?x%=E{_aS0xUD31Ny>%A*LQop>ypup~V8Q6j;cQ36xHStu>V(k!(XG&#F z9W<*~v>+U5z&BC)US*#(*D5A9fO#kd~wN zw}i=cYExmDk#j`#F^SVAz6H@*Q8wLBMN?SgI+a;ci+~chT#W|?+vaBtalAbg0&bOu}T>`<0mEV0ci4P@V$zg&7e11r8WIcXL1uzjUYlc zqVO6{HtP)FqI-0nt86f(Re6VH>z-|A44rjCJuE=-!fDfpz6^5YN}eXEEtr|`*?J{t zn?P7=B_tC<-7P*6jg%(Y2N=GsW%&xBu(X1#V{E0dk1{Uw#i^NK zb3O$r|CqJPb3AT;*g>G_Y*bO-K<}H6>j*9is={PG?KQfutrDXT^?55TTf3KM~-oCFn0lyNMirzC1>gSp^?69 z>Jd4>Ff7EgDnbxWId!#pA-`M==U8(3k%7e2>1D+`kI|6M64#LxpW&GrVPwih{7p&@ zE5!oS8Fkw}1|%MF`W=~1?JqEdBy21*2DLi(+`B%sIymhqMTo5DnF%UD4?k%8D;6I_ zJ37CyOm0<2edy`;j*>L)=)Wcf>pnC#oyz&-+Qb`d62m! zuY$WnP-$6DtZ3lCiL8@l>fY$)Sz(D_ME(P!Up!gbnri{KfQ&)Kxrn_lnR6nKf+&^t zACYm0Gex*5UXyQdaec+|hnvIK3R0X>LHw`ANfOLgTASt>e#D(654F96c=j_4NN8;6 zJY@QPKNebZB)J~t?udKwR|R0iAU>W)R}z}SQ5PnvW?Yy?6j@|;$du3nzME^^?R@!t z?fYgxuecGpzfq*f3Dxg$G(V$gKZoBs-JWlJY=n2waQty%T4_bnXb%sHs2*qAMf5X4 z)-_zLjYk)7o#Tqhld}Y;F)$D9FgG|#-6QOBJIrgEAxGdXvFIKv=Q@{ymNImk)T9Tz zJ_gs)s~%^Q&}{wHJer=rq(z?t*WMpOqj!~)OLF8MR%s6DCAVZpfLM{$?^gMGd-)7> zg1)7GQZZXRq1hddi-@d)_FsA7CYm3X1PXl6f2-DwgP;psCd8)*0SvqPa(Cmw#05A9 zA>|6C%EuA@LtU6(4PMdnvG+*bMP{IT4n^)k% zpR@VM7p6#6GGL6Mv@io#Fg;cKl6<~*9v(U16=!2FPrntFqRwGOU)e>=`@PGLTr6Y- z1SCa*iE$huHFrRG-X_M43`5u#PQO&Ghds@mMC9BLg(KieumgprIgZX{z?4dwmC>&h zy*ah0j4lbKy9r?Wr`#VYr<*W2jCNd)6@1Pdk32giRXf&;xnfAyZ6|QE8_)R{=kjkQ z{YO5F)Uu@ST)jN9A`2<>zA{Jql^3v(&)Z=Rc^%e0nXgC?CONy`e({P)Lpe8KlcW>a z1f2sup8aO4aD1!+?ZABAp=Ngl4@UL)n+Z3~nznnWchAMm2Mv9mFX3G*f#{W;H0JmE zQ(Ht7Q)75BO{#L1g;kM)d?CGBI22N^GnqVfcv0dyRcjc&HGIFP-b!Uy6G(3)UOZ!= z&Ed-QR-)p%?y&kJJisPb{<4Vm;Up%p5^(keJcZ-|%(UGo&=0xz%<y0tv$JjaJPTn>UE+V-l2Xu7 z_$z7a8@~=b5#Zwag!%QNN!Ig}3ANo$MWw@t^e$@p$0FA@Sc)i}wFpG6PPYH)Mc)m8 zxIsVkCf>S5to9tcw?BemJ_bqpGvc^o_EHqGEWh!T-n`s}BfJ}a5x z99=O*mrQ;mSQqZ=;NoTFKh4Rtr&-fv;F48knWoTo_{i$_6zyd}_#BY=b4{5k@7o!Q z8U$-#v^%mXynpmPB#hv2sS2$)w2?#!n`^zGP=sMOcA^k><3Q79{u5l64ag38nElsu zdqT9^4pn**#+eDlus(^v+NaLBA9P2>dmL~`RICsAxHFPe#^GY_|0V?NbrOnp_M7wf z2OMbzEuH7qwT({u(4~n`p*rzIu>M;x?9LMoYdT;JKjM{Y>+G?ANNYVt7a7qC7C2G0 zyN}P_`}}Qr2QGE}@@O4$2rg_i!m(eLhTdGcx6`J1>)d!mB_0<#UQ+z1phR%^M6{W9 zjk>3-9VavDuF=^FjQYS#buTg-4Ep(RlgfXXO3|P6E}%rH$BbVk#XuXLt2b2`H~tJdPLmhG=h6Tbr$bpl4I=2thkgcAbA;9!+2bipOVsD$>nH7zx{>vIB<`T zcB!42VW^bVd5t?b#a97DJ|vi-F)~ba`*l!p0R*P=8jupWqXS z`0>5M5s`V)Hx9R60ShH!yU1T7A}IPHM||Nl7Jr4vGAPn)10gzILD&2Af`@T!j=+2# z@78GnvhpXZMImCG#{K16EaMWr~KK)?3^H%w-? zVZj;+-#s3SJ>Rm{0%9<#9;&`|W{1j^)Uc<4fh2!ON=<8uikYlUa>(k0oS*N0=ilOL zIXV5u`}s!4mn>$GRn)$kt+y-yJdlDzL3OA%MB@)=>&l9>3^U6Q$#cNOf~>#oG^V?M z@91R%H^-1QNhFSYiDx9L4&><1JqNsr7`>o_k28@tWFoXPoKopai(Ttw;q&~Q15{kI zzyBR`epoTyP;D@5tv|nj8SzgWQmUK0-A9P)U-9LLr8ZYd_2U=HE-5PZ?OmE}=}Po7 z;i#VF|9JcGh}OG?7w(@DD3(#Z5Y%Dn82uDMeAnfc%Xbg%i$l*mMZ@PA`b5SJtXd=c(fzW0&3FYNuw@n! z9@!!0ag6gs3+zo*!usLH^HNZT1KYx~cvK-P#xwJ!*YD@H;J{dT$9@HlBSA6W=8g9N z$4%YEhig`tgW=(L1c3ySZ)o?0>7&5w9@_$0m#yzPgDL7AP(-entctK1x4e@ZfkSh+ z^h0GZhz`jaSRG?h9mJ*!+F^@TBtUv`j%rE-qa^uW$XJpH}4GN6)CVJ5S}Gj@%RZ*`sArVf!a)_QK+SFYs%wu90qJ-8uZS zqi1BOLN12iPvIUr__>AGyA2t1_N`*mF62eGG&5tAK&uwHr8EA_t4$F1!t+V1K5azx z^&wngdo}g$t()EWp-hd*n(@9ZQA#F*9wOU1`iAtkFj)+m;Z3A_NJrs!R^86h<&$9rmqx zrUY%v0_{(5d5q}nmT3L_B4%9hPx1*p{&)an7kE}$&o6eLUT^IgsdEV{kNV)X-K6kj z6P_d>0)v$({kI#;wqp#AG5a2JWmR@E96dv- zVoyN9rX6NP1 zT|IV4E>nD#Ma=kbo~apLe8tFGs~rL2%__!SHt2(cDo>_)wC=Tm$C<5?nhn477vJh^ zI@9Ho2w&OL21D?g6IzzNsNYNza8nOH_oTwU3Yxvd{}H0xcioX#|2#FW|CvM9p4Mh% zOZz&W3y7SPnw%JNrnSL~I;6WClTQSs)vkGO1X<&z$*GpSQc5)sXZ@vDJ>*^PIa*3~ zh$juG=>%At!jG3?V1;XRGmm5)EbdZzO^h!7l5)b zE_s&)wptGD+WNeA~WF*TAv&s6d{{=m_o&mQTJlQu@zG1B1FJlB{8rVh;`&pL-)H68x4U7*1 zv2nnXRD5Du+}-<`z^Sh!4%sq;I&f?j&fZT8hpO{SvNc`_8n3Lw135T_docvx?IO)f z1Ybv~kt)BBU=GJP3$TrB=8fUfrd>%lby}wi`GegpCR#H|CPM?*sC-!{AUC_JQ+UI9 z!T9#MzMvp?zTql*W|NqT@k;4Kq4vKo3=B5JF`lE}EmXX|W4z6?JN@;ym?FF6*zn7C zJOH2gyKD-O0dX~uTKaGDjk6Fobn276R|e|MDtJ2c#gAb$9-}mIho3H1u>?kM9W?Az zLsCym&6R`l4^bH2Oc;0P_08`Yz22j>$)Zh=nFkt?*TFe=(3F(Jb0|dL%D#$m4{kNG zbIB*UlI`Fy>9H2))88h~U)Re2uatdR9sgLCRPdIb48O3IYmvseSn5pbZkv-}n2U&E z;{$ArQ+bpUyrCETw~WF~*K)Dx{~_utquN@#txr#dQXGm~aVYM=TOd%pKyjBKh2R#n z#odcTiWGMV4h4b+cemgU!S&<4_Z|29xBqMzV~?@sn(LWs&VTB)j?nx!^hpPznO_^l zw`F0T`T=SuiAwR~0m%_F0#+lJD1ej`x}NwQ#J@$MB-xCbI;qO97U6qSYAR zlXUEqe*L9gc+p6FcLooVh!KodDB{_W$HT_3f8-jj9Hb-LAzrZzjRCnUdr%R9&nJ+S zT`Zz#KCVQUkw{b-V{Q`VX%MM~|9La(t3}`UMuCbhq2WwJ@3dk|tzgVP77>PCcSN{E zD}GoY5{XPDaNm%ARyx03Vh& z#+7B3hgS56hFMOlGH&%vlu$+Peatyl{~|5(rMa7Etm6{^_<<|L4&-kIP-2OTZ79ZJ zdq*E+pE>&r*YDpp3Q~8~>Cb;uoBdQj#B`NYt)~8-*rzG#yAKc9d@+^{pC_kaVzS8{ zF`_9=d@CDIpL@0>Oh&uOCU@X`UV>KdX|od$z@~~L81*ZanEY2={2$H~6D~CqT0X@N zUS;+auI!jch?9kOoZw0F}H0E0$ zfQz7OD;I_n^-I96XDAu-JI_H5dm~ZCUpe*tRoa#)>Fu@+Ld-0*m z%lzEkXIgT?Z9gTw-K=Tebj`Un@F)`m4KE~?p`qIht4$ly zd|w1U2m9nea3-*3PG$`W+Ht~1u1@Ba`LL;@+!ty7+$lHQDjaNaI-~|Q!^lmy(ckcC zeNpjIxLu()77y&b<%jG;I(t-#=Gqt-kvO{I?^l-NQz#gi@2_l@>BTnHbJ#7rM<&c` zC3r@iA{`OQgGnTL^T(rCewU3Dt`Xe}vdipI%e#O0cyQ^RF%?9DgP9>&ovk=Qm2Qz44D+ z<04#gZFv@q@S`!i9{m~duBwUqGA~d2r8Ja}LA| z2_-j75^87qEu;pstKGqsO1L*kEwU1W73P!*simp=~Y~5 zm(+T1`uNrRuwespm*m|9SMn)uM$hY{Py5FyCbw;=@BepNw(f^{O*t}d;~748_L}>b z_gT!$R9-_GCUm?l^ym`3X+ET~j`)8dsY^mG`00hg;gp12cu8m=EOtaZ#B7f&zYd4* zH)D76g8bl~_RN=*CzIu8Sn?7fLL{dvVHF-fq4GS~&Oh+#67iOR{>;`qzu^C`_IN() z-@GkiVk()Ux{$fuynXmu{)w%Fd`7WNtWjd`dy$1aE2*8tUr(-zHYH8X%`_}7E#5+s z)gmKJa4wPW;OM}KNXUjyp7N*$&2Ha7o$v&mM$6;p^{Q9mptm(@4ExWAE5+lfg}l8I zo#t8+FMs}Har{r$8oeV!w{7F}zFr5WS5SPe@)+{>7J_?ch_}lqf8(;>Cd|<_xy~%Z z7!Wa)+;ga+ie3^TRE*{=Lwbn%-GCvTfeL*S?9jZZn7T=`Rl4e0bkVy{FNq#(88t?r zEj^oQ9#o;MU=^sk3ysMm!47Nx`FbP3I%k=0>kGa+G~$zKsH%Oc%NLW($V?PaXPwk6 zwe^ci%csF(vvOV)xH{fKgyLbktl#fX^_&Q{KhUtRc+F;SlS^U>^&=qaight~?mhjN zkqM{Ku}QuYQXry+t@vN3UD;&LcQSA1LQbzi(I@|KJOSLcU*(o_zY!xH$a;|!YQSI_ zTd2N;znrrsDy|aUaGiL_9_xBbkNx`DYn&+f3=@F%_L}v)2^E;h{ja?LKq)hgk;LgI zl92jO%cP8d*x>C9`H ze{vy8oMk+q+5)`UaS8NzwkzH1SBqi{YurYCqF2eWCuFhD^!FmEsrexY_%fXS;p4*; z8V}{3RG>!?l{-m|)cVE98$2y)MC`x zbLleRJ?4wd(Vyhk2?#~rkTH0Se{V_r(6x@L+^HcOjE%&MxP0TtsD>H-n6WPVL9K%l zw=F2d#VIsyHPq_EXSH>Tm?Y_5ohpbnU~r5T`qJc2+<_(qIzB$K8$bO;F9|`M?-uY4 z8QQR0h?DKv`@$xvQcP*!!nn$HD(Q*ZnR2KYNY|W_$N^E%2!du?+pkn$~1rqFy)U670C zTQscXFn7OCs_n_YPyg-j-wuQ6)0?ymSZ!ZjD|vkhWd}a!geMq&7`xzhL^uxI-YL$C zGfg`EaOow0*A^7jul!kdBkXp2Q-ApSEGa!tm?L(~fPUHY^R3U15s%D{awB}+Oxj|f zsKUp8O^^)X`Id5S-k(bMIYV{)tF z(|RPE#)B(u6Tz#pb+dh;wJX@QU#kBNu2e!aE}x&|CqKoW8~-1>UIPZy@pgAfUy`pa znxvt=)T&)*(owxZD*+8I)NA95&&Hi`@eU~yOK^}laJGrM{=#6_J+64S4Zib_FH&!O z+uJO}S9Kk?iju&~j?cR)PHiRi5+&kcGRb z&bO#2_OMwm(_~A?DY;XHJW9z7a`KKt2nu#NsK!E9Ty$$)vAfT5BK?%T8=T zP5aavjt5F6W|xR)HYPc8iSLQoEGdQz+0#Zd-YTP)RN@O-c|hXNC2%z{uIUqQsv+O7 zO&rrJ&eM`b(l+9(;rK)$9?IS?%1sJWZn6h=yw#ln3ovRUgzvjxF?Qm9s z?Hhk{Ij%Lt9cq^ua5M03>;G*fyF__xeHWZ_S?%CMah&%uXQTo&l-V=pYSbeZXmH(c zeTnb)>7ZJi9a*#)JQ-kZ1h;SW_d5fAFAGVvxR&-!ptk&UCsKua$AJ*}kNEoke4CfD zzj>y9xi%3N*;-Aze3iO^@M}p%h$9YI6uu^``ThMi#HC*6YD+l>RSH)DLlKeDb^aPI zbq{8yi_=MeEC;Ts6V{#|=w8Q=!Vmhi<+T^%Ok6$kz)kw7UKn=TuHyUT)9kdXv6xUV z7^{45_VizE#B(}3)w6ctcwXp}TQ6W>>!v|QhDDTH@jUKxIBRceqb>hj9K(4eJ7X<` zJDQS}x!mZBsj)bQJ0^aAIRngzzh9PkZT=iLx{;jOUQcqnMkLI3R?_pqg0a0Rd=LJS zD4L!2`~=^rWag`v6MtAYE3;^0QeV=qJi!BV(|so=5u$i+4@xO&w(d3$syISd(Ggoq zV7)IgZF;>CqYpL(RLAlsZ@5%R`&D$IFr)%ZxlRY{vTmD7okglgk0fPBJ^_vWfEA2-*ub zBX^96iuLwn9|*8Xt+Ay^5G?IFJO3!Dm$a(g>@O6<+55OCFLPDVTkjdTXGWm7@BwCP zAi46$kSNGWTjNMR#m}?Vb1}GBo7I=AcUmzo^Hj}03pD`x-n~1+Da)o4p}q>}98zcP z8-gMZE)>GpR(_oAku|pcTx@zh87#1_$0KtY#GMgfb1K#vx)@*gD$DTaaYr|n#5;0< z@pkV-eJ8?4c8p5V>R{_G2qzqFX9B>^kbHHiP)1?fibwk zht#izvw8f)=uj};o7O2sFH=?m)>q`y>a$Jw3yXD%%hf5_fmSvXWN)xUvf3N>#gdz5WUk~atw3QODi?xJmgL!W< zSu5>HOs20XGVm8htFao4$a-K7H`@jpM&)h~#aFyS;%7F0@7RkBrdNIt$g9x9yftS@w${NM~z9Q$@BS+MaXGo#=)I z1qn!fA}3KXs!I(4XE|82)JB0`6ZrZSW!Ki;?5eWN}e0!|fA*Zus`%lmPH=3j~)$%n#-M7RI*+wI&Fv9!lLsgDl zDx_90|02xRycvwv>?(3oXd}i+mR!?&%XKxR=b_)6WfrWI!FOz)d+9jrE&;c0^vgw& zKIYg^Hb>fAXM)A*^M?E?%hoDu+bg_c-7#@ce{Z1+3X1pbga_bkx*wM!8sw>HbE}jwmHUWtN z@@b{TaeE8P1u0Sf8@%ZK853wz@Nuok>_pp7OW~wbFCSf;3jcE89pd+E+|I$qcJ$H5b} zdMq4tVuaA-1^r5jz)6Ph>twz9v$#V?A`+OB@qloaolY<6ki6Rt!vEmkzOUV-Gvu~B zdb|PYQd_RG-K<~~8)@f?MpZ4|Dg5F^zA@x2vna7(s<1X%15RLP!AgbESp`pO2o3u+t{MU%3u3$}X zb;1x>1W>Wk!wW8HEH~(62{TcmJH=Z%B=P~rrnLWF>0n^j4s;uh;r zMY(b82%wU7@s=m;wu85T(PZ1GDqpJO5pRFa{DTdnI)pBfuehLSKT}S>(!A`oG77ii zd%eSOQ}lkB$hAV)ou27&eVVI&Y>Jrq?C^>k=c>I6MuUYm!Y{tD-EOI~4aR=oczvQa zW9B_p74LJnFw0pb#^L5&HaA$3COd0y*vng%-mrAb+zfdg$R$CY}qKDn{Mz{sm|_*zD3fxEDq!$4EYHc*6x?q_6n+q^3XSR|I{9q z9Mr{{khRfZk$qAfCv_Ne8eq+#LS|mxpTnvX5EGUZ-7oy$*Eiq#(T5Xezu77mgYv&2 zU5>xFtk3CcAMZ=66GN;`gGFiDM6H)Qz+-3667h>$^8b2=o~~dGY$k`vY{)9z-M?W2 zzf^?sFwPj!LcNl*iu}?rpY8&$0leqVyT3R!4ANZ81h4(FFrf@79LEKHt!VSa_uMRx zP^PY@A1sI6GHUwW2P`jno+A8exwpJFpwC`&(%uVC@MQU$DL)UNuu6N%s*^2=#+CnD zuubk(NmvhvIJ>6O5B6F3P!vM6rVabCk?VX?nyLVrph&Dkkb0Q}0x^=1zI!x1#F6pK z+)xil;7)GD$+52dM%-&@!^O{=+3XF|9CWp2lwvBwG))dHFjqvsIDgN;U*=#@TK!5n$h|O#_7gbcMqilQ1Q?0_0*RUn`Zb5J@wLXkxf9q>jbC_$%G_H?{ zQ0qv=pQ~N4b}#V+3jV69S9AR7+{xQaA+)t6@^Oq1b0oF*lO1}|O$p19c7zv-A{=Lg z>3oCnyPhVVK}*_KD}r721-Wwl?nU+tMB=r3_N%{pwl z8Z=9djaSILS+#1mh*A9`dQtAn$XC(qrdz>(&cOzV@f+64tUB68o#R-n zJHEEDZBxz;;x%FSSy*uBvfSDd|2LxHjy6}UTq$x@P0lV2BV|U3jx)=o-UfTi#Ic#9&tKW?z`Y%4tsrX#J&FbCa2*d8u?2H+J0n+!}7 zN;Bj?poshSbrbm!ee}ud%28ET8z#cU&o}DHdmaia;z-Dxhk?!OD@=yRfsw6M*dv$1 zzaHyED;){D3Ca78^#f5wLxD-`meUc4UA?N{S$ylO)qfjd!62L7QwaemJSl|vU{-#2 zbBI}FruyUtt%x0;oNBJ;9K=fM;liCAA`tKA#&4z<*ba1tZ#U*?mH$5L6aGlB-^Zq} z=+gDk!qy`eZieA-uow!S^DItJHuK#v@yybdKM4Zb`hu|Fo$ymDPfr%Ba0_GdxnDDsb{sb7J*Sy_&E&t zex~e0g9U$_>?}93A$eLubd_cV!A!}0x_ZH0wxo2NVAKAAU-USo#$%5`iVMQfbyQa#wPEi|@~jVc z^Sb8?0$)WMgIBkHDY9t~^e{wJMGxEWtru1rtFheXx4QKIIM*w%!ZGuW;w zcK>li?p9Pr(h7crV*2Nv(0u`?VrPD8Yw9h9E*{^V*$#$>cUvTaC(&!xsg~&V7wHhC znjoLsx&uKl@@AScBeNxFX&!5Ftir_pPUgs^e8cXJNPHBGOlipyC`WQO3p&cygg+O$ zt&1a#mc{Cfh+x^9`W}$Cg?<<9>1LoS_tSi3)(B`=a3O0m(UKH&eSxP;;^t&nAJ{&|f$Wka z*Dg1LuaFt7fe<{{Dh7<=qHwSI-fIlR$49e$x)zXEEI5tuKFWlWGu6%EZ$prJk`mi9 zB6BRME!UK<5iSKBOdhY2@4F350~dMNOqxNI^|m;tNvEpVBrwOB+PLE;L1%f7TkkUp zjxb6u7jnRNk5EMCg=In((h;RuzLT{ceaKBkO#TFWP~~tD>%U3Lw0#fdND~NK=}b@s zjM}aHO^Njjht1g+l+uHI{GXT~^|{3Qs;AL}#BWF+T@k#4$t2#3u<$$lb}^ow;G{B4 zz4}wmsB}P{Q4dDa&^=Swg6pA$I6pW!#co?^Vj_cAyf0|@uw|w(b_QNAmJ|Y*hQ$gp zSVTmn-*lXFHD1FkI#_f&LcV=L!*O1hDS3OYc!Rpg=lfNvO(^0xP&aY^$kB(9g(r6O~*SP+^(8-CJ zeqCsAPVbm8^FU8cuElGo*B8S6+*g&hi#64?{Pqe&kfmy!Ulm5)9ADs|wA9_5w5Rt8 zI#Je9x4*6V{ia%f5hQG#=2$cMS^I<@FFZbb=UMz$_HhrzzPU#=9NP44XWb<17j1Ap zrr>Is*p--lXMNrqe*R4-P*eHdS9Uk!#W`AS|0vrXKbi4(!|tmz6V@i?Wyw;;^OJx# zz3}T12DpZzHR9i(F`xNsJr2={#+y*g^3EEE*Xl`ZG)+EK!|cvqz(xa|N^}5sj^8cL+->7B@dW89 zZB|&r&*sYF4T;&Znml|hk!Nt30nQ-?ana4OH0;SH5MS*zDuww4c@{J4<@d<&c3-eobAgCD{H7{ z%V}_+nSdH9czaVRWX*rt>DEwWGgNTAAc{w9eZB5>!dI!Ft1_YV8Rw{WqYRj#%429x zTMY-gh&G4cBIz2k7L@12KijTRRHtiY>r{unjw$b{1NrZ)Uqo^mb#~s6_lq?J&ks1t z2y&X4ZwH*0tw?7d6NG_WPCvO!orQ5kEz)We*^{mCXiXH9wo~CeeX-}gA`H`SN+zO5O zh(YL?N2WC^6M|}Z*yNXMxBcaQI8;5--2`IT>G+1;n899*sJit1W7W&Y9)G)c=P=JT(=_ zd_k0!a~L$71Zp6v_|R?{<2%Ir>3QOda}rh?d@ zG_S!s!OA+4FeZY7sGOm_O~!ahxGAZO7G_Ks;X9^Mf1R*W8#J3SL{CMQuVyr0291>MrLN+OQ*KhA@XE#s&-OK6}LH@oSLB#O!rW2SY5Iyf^yC&(9()E zIC+l{95P!w@f>H>;#EHf)S462$ujmG;;sk`_lj?uSe#cBY^vU1OSHXx%4OA&XbYTO zzd6S&&3jxYOI&>S&QxmUlCWXMuIqNxbWemh?3iv4&(80;xyCx|^0rwXNZ9(-Qf|;| z#vXI3xve%ln}lk-v5wxYcYxPMFJ+bpRp=nD*lj!z)vk~M0UIH1Z{wcCm=bfKALO5Y|V5iqJlO%L+&#ouLYmII{FL2^_yg2AZNq$p| z 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 z zw95_myvkQ8=McDjVz#H|zWP78St zk)jU8#F#PmDvIw*qkrgrO5kM0>WksgmPBDPBAg5lV>edwey9Kp{2Hx|xotAhSc<}b z@2&K3cywVjBEO^?)$b zj)?0k+DKGIMP`D1#2|X9J{zoU0=i&^ zXn6qGGmkCds`g*uVlI-!=(X;G2~1X{i=WMk4@5f*EI`07R5zuEe7u)lYTzHX7x6qS zJIb-CLH);?FGIx&7=7AE-f9<43e*c_kb#Jzzh-nypwhrP#&^^*2=3JBsudD3K~fJ^ z)Il;0y{>jv3dcybArV@pllaP4PEvn0vMAFB^}EVOfE*Xt1e|0XF0Sr2N*DbSUoIZe z)n4BIE9uCZn|IJ{y1f@$Ip7ev8_?TeEU35DMr+d!_<(=N)T%Jmr009ZV(MS(ebAwS z`WL(Ulb>`x{$Tla&DZ@o5Pmtw!r+O!tA$hn@68_lRE}@Z#CUJDl(@z%`xC> ze7Uj5&k^=|e5hI0tqP9+2XJizt@*h76_i64k%VKfW)Q#Wk#w7D9 z!Yof@&GZuohBBTiIhmp{agq@Z?hsIO z?%DR&h49&3%SSzoS1c6ee?8uDb`FILcrOoH=7+H1bL>^(YV|l)0qLtGdhC(WT%49i z#jPS`6oZxd#1zsI1FG}UF5lw?vb;L-8zlLr3D?lVhp*g-(4e_sw`E01x8R;ywJa8# z69o(n3J(n|K8+2Bg0tp$k$#?gA-0+XS}0eI)qQh*IB{ag_-CXU^1BHP&OasPBfvs0 zNI0!cvEZTAXS2fX`WTsNl^sedAbAm(zdB(4)tpdR zlU&ySj|iOT=z+6vgi!ZYCFN21h_#_sc9H&{>EgNR>c7%uB61zm^InJkMYTFP$r^dZ z`u)2qrJetiDzH4lq`C4g#`Mv^C<&uvpFW4D!Rc^_ae|GqLRyn+O$ zHu$X+dBEJU*!4pXum70(F7TNb#rl9rJx2)0EA7XWgu?Gg$KN8WocUkZM1A2FC9zrgd$}*M$Hlx*Ne#;1tu8Fed}L)M*@cmbqxH!~ zR1F_gLJu;z8dk7PEqEYj2mhdfrjF|KJ=^r4*af5Cwl)P(0w7eMK#sV@z z&hE`Pk8Lu~3fJwerfNtOso5T8h9*1k(L+%+RRsm+sO~-#qx;gV@lf2Ga*=o!F;3VW zea1-NM>lqN>9WpS)Or6%AnnLrEh9kH@NGEC7bte!!8aa*h)k~WEKrAjfpmnas<7H! z>U#Nyi(zW?L}}DduENTvmT`dP6UndCgaVy}%dF9%FD_fR-x$h_3w`u}e_`uYy=R`uu*B-GkK7!~6uM`o5@Zau@@~dw z+d;!*FeZxa=0Qk4Gg1TlrL#Wq&UG-4*kq41%Pmmj{b5?1bN*a^1Bhn{4p6Yv`d3|E zMtde9fpyU{GwrTcss58R<<_T1y1#}kHl$GQZ7}}Y1Y~f+Rpw+@z5e3!Q&OLSDk_yg zakiT|dxuS40ZO)4T$)@`LajaekJwLiX9Fx)q~-T9{g_C*;B+l=fb=YYCC)|BY%e?M zGXWj~dD;;H80v$SAU1FQAUz^51+Qv=$30V7gtpOn=3zB-Rl0xeW1X;~<|pq+=fHJo zguNLkl2Hdyy@d@=*o|3!PLqB>kJ%UPBhpKg4H*@XSBgnZl7utd zLrG@TW~lq#Nu#S&0aqDselkT}x%(JCSXoM>?F3HmH-d(=`WIP>Fu+XXAoTr4WXG7> z&&6n0?W1r+UOP`y8Rf0q8(x}VV6ltwi44Ga)}xKP6{JtTqsIBmPd;NC)SI4q-L1oV z@>Tk=ON&aBfU|XkD~DzNQm)}agmU4)hjZax3a~$q(_LNfrUdnG;u-&|p7Kp*=K;$j zc8SjTPy2(W&_Jz3KMPiZ_ynOUyPJzqvW48vQlhXs@BevHOhEAyur0%vM%}KNt00zG zFHgfKGS0^~@c)FTxD`D(trPMGDr5F(z@x+*64P^M!n!_f^~G_7UFJ~s`q;#xNr%Mf zvem6=KzklO_)JdbaF~389e+}?XNhEsh6&Ei$NEpeS8s3!X3vcAhrtlLgk~!>!ajq( z|DLo%@o?M#O`GgCkNxiEUVZnpyvi&REdo_DUUrFezDa2jWSNlMvt-&y?~oGVaI?QY zE^=V1_!YnqM`(QuT}l={;H)X{5Rp$1mYWSum^k(HL?X=)mSAnluIPj97pM$A$P8?U4XDB|A07(2-A>{cG}y=JV1|biuj%? z&WXMm=mXAo(3`sL%Ydw3ltIH~2bghDoOiNFU(Hc(j5z-!-8719S%$SGh@1%+FraCI z?Q61JngTpC%9_JclLOK3N}-2n>VPzJlbB>JB4J@mqzVcYHMol%-WZOhqE4dZ{5z3l z7Ta9$_m>C;x$@qaS}YpB6P4B>v>G|t!~3YqVm>7X`x*eO6uP2ll%JkQW2zq>*Gv}K z$Zl8eLi_v2YWA%!KOKZHmk3EK9MjL$=`1?}O5&oH*7%j^qDbV#%BwoLVwTeWsC<6E z7*>(a+?9StF5;2MK01zdM_xa@WH(53;k;=rwo-np8S~zI4s$R?LQ=BywO8|`12l(++f;Zp+6aVl0*AhNsF}Gnv0(wn{4tQi`kwbh z?3Ec@e3k75sl7h~jREg(HY20f0{Ci919*faPW++cmI0y45sjLq%TU4dQhxHnzm17| zx{;D;j(5*EbFAKa+&e%GzJXptB2vkeCvNm`ncy4CU{ciBuT%oIM6GH>u766}KK%`c za`;1qU{V|B1q?K>O~p;u%u09tB>}bU_syxN{qS2!1ToiJXKry(Bi=_S&HvJoSuZn`DS<&ihb3x! zv>(hfatfooXEA$GBH!5pxvXmsbrdPNsuN?KA~@nFxJhhn7wJ!#WieXu(D!}~6)?`) zssfDi&$}6F(|SAW#j2(d?KO*s4>7{q*##2xeQg)) zW$kb0gTyeiELu>fhhYU8r)-wAzoqd^ytC!sU>PGb%-Br$)UAYHCdhh!QAXdt&qY#> z*OA1|4PaIM#?f$@2pX80r-^0DhW*u4b(LU#vejTExD#WucdtsynSJnq*LYFMr}WKB zdCQZ)tU9m>z(Q|wWV;+O#oYy$7gf}dONn=~aC@mjNH-nORXP*a(}#0sC$fi| zp|oD@mXRopxaU>eCu#6(F}I91Y0>rh_Z_NR`)V!uUf>6c>T;iA9=0oHS53@KqDz}p zi;U5p77kSxtrHg$wGWkQG2PJ_^k70&>+SYkjglB@K+(;me+QXUMtgfN zRSRgZ6`HKT5dr^oIG0}*>E;9Ps6f=V)Fk5c3dR8Mzf#wY7%FKRi_Sa=Rx5uB)b&<1 z+m`PCL10ebYm!1$EHbLs-xk__jwDURZ1JHkCGN^IDpM~^9-0o;JJ{85*|4I{YokLp zUdR&E&)eIlPET*4d6B~b+E>OT@FJ{Q1Ug1{_j1783I!%vI{1gQOxF_y1!zz%RrJ)I z=?AKT;}K&6fKIMK3{5`cq{D-+6IZ=ltPdh1UNNXKNEy8*n%hsbP}7o!0;1Y{o?tH>XAM#4weZ5KhRD)y5T5(+APM_|$o)RBT=*lrrtj^#Dpv z_QjZK;EXxO|AbcVBn~Y)Cz${6qubZh#w}^s8a{8{KXN@^Q|#YX%DjP3F0YDeFZ`hP{L`c;_+jS-EO(Etm8OX)dME?^lN~cyrjAW;?+Yi< zzZhJ1NI&amt8zqd34h|!#8+YiDvHBN1hMu9`p3oBm-67ZtV(Hk^yW>Z? zAmde^C;O%YkK>f)!ajD`94-`p%vv(Su`)XQJ;BHQEVHJ`i`L`< z9q-)s^!2^97jrW8`irS7DRdVPSxVz;TEGR)cBhibi{M?eqkF6f(C)2m9D#%!ONTZK zx#wjA1Y}A_CVNCho+k$EDZJciz%n3*~^-qWSZjFn{ z1(UY>zY#ej0%B{i#DqJ0H0g4Abb|?1P^XVSHqjRqa}h&a!HPp#1b+D8(0w$uROYdEyF5l0>o!tDM9^j2#qG7@_R}@m0-p`XJ~1vF5@xwh6CYX?2Spx<5)_Ac9v#m#t76o%Y+5u;K^8(c zBc^+FMR)&n$G;|GYMBM1mXo1MkI$i@er3C=UnD3HO5OT{h~WTRUn_FZlDc5tEIF27 zL5j~jw4R?e^MdhZE{TbWd;EsnNxsumiKuWlSUQ^FY{xX;sKI+I4ZNE?v=Q1Xo+v3l zb&eEDPmRvZ`FU#jYj*r7GCf?LK`T%!uO@ZZ63KwWThC(ZLy>&+ow2(PhMl{)DAwx2LZR7YSLWwYZ%QcKmWOgOgGNWJdk(l6m4^XdCZZ{@@Knl z9_z=viUt`u!_#-#cj`IVr-`Qn@uDZx6GD{lGkNYSK(B{FZu zHoIENNvc}#Smcu&6XIQ_OgtUa*r7DY1GmTbhX4^&id&%-}NHif&5HrXYBD^w!I1n>PdG`LP%Sx1xesF*ua32)M|Id_q-I z5bA~@?bJlO{tfBbp9p@jymVK4xXO&@v&eIoL|>v|%|5qKsW6Ec5z) zrLY^bDZ9}yaIwffev3-fa79X}fCCT2B^{I#YW*GOcHG^1m^)MRqP=ipJN*-Tnh!6QM7D^+QqYW%aJ(i2{!KZ6@csA+dVv1?rSIbA6$Bg=U zs)ZkU9OmMaQLBTyE`jK34a}P)%VVB+B?wQq zLd5vn2v2Zvh-E<35uJy2lzjY1v6_=|?DKW}K2w(=>WWH+7i*p1c>9M%(XY)B7CJR* zP&q|ZMu4Q{7H9v&%8dR0nJ)WcpR$njI07Oas(<}iy1Z@W0AG-5M8uLlBo{%9o^?_BVVsq2pFg-d3UJV0y9(zvQZkt{!GW$z@ zWJyKt77v^pCVV|UD&Q`$I&Dv2vwG6yr6|6rM@!|G*{9lo_5ZBfHnz<%?mT58P7s9d zpf=SGjb*uD;K{I%kYTlwV@#8JHHe5vU8}L=!hCgDCnwb?ATA=$YY`cTC|?QA%}suP z@o90moY+~@6Pve0TA4yxayT*DHB-rY4TMceA9yU=h;Hp~sxd4lBUF`-X-jv-{HHp)}f;-ggOYTsGK@=QGIiX9hCz|02%F%W%` zv}|xJJQ-SgMbS~?|7>zM!KaGH-!J%Aqrk^jwJVbHJcD=KpuYuCr?N_@6ixLO{gdp! zepn!|#EY9ss!#o(66Tde@buKL@DzfI2oFQ_gim`o%{hf@wJ9X&e?@j&w2VnfFAsH& z`~dr|A#vF(2%MzE(L&R3OxDn|RAQrb{fKlA3YqWk{Qpe!S2Fe#ihB}GG-vn=Xy^9`MUXb4@j7 zQ;;S1?hxPpA5X)Weq7?T+5~p!B$f4g&{MpZ%N1*!$Fm%_ufpGo zMeh0f)?#ZHnPHe#7EO_H0}{!c!+AgBv?U|+LNn)k-?yawBiTchrYCXp$c>8JJJ?O_ z$+rfac+EoGirMTG%Pu?$4k1s^_Q2uuYzGq)T^8q|eg*J<>6#Lk99HOxG@93=$#!_X zK>}qA`AtW+JH+Y=er7lUlot0HUC8Y?>m+CL=89^E(qwd-YDbH%P@6I{^w>8)9^l?{ zaA#CrA~B6k7Gm-3uG^m99W&zbHBVStW5kduqZN|y!^l20g3ZiL5@OgBw;ORj5E};G z#T`NqFEy;tzxoNqS=eUuv8!Ci(+}ERq3V>nWTia`8ri~HW(d!#UJQReXQV&+&@i0f zhkA1{xWYA^5|I&W*JUT|Z}(|h>lpwY(S8+VDuEU&k7WUiVEZ+3b;8Y-WIu(yu2OyV zSEI99+NMZYa=Ml*zVyAAwy(F`xLeck2vcp|RJ0q=Bx(EVQF`l&0}uJ_>+xQ*ZAyd% zXBM96QH|T5zuMT$3A8`H<|Sz zuT&g=7M*;9FVnt>$$u{&fLyX{gAf=Y`5d;{XU*CdCJqn zXNKUI)zxw(R}meKPUm1wFkwQJcaZAYe$t%)zb1mquNXw-??cf={#J*CI@0zyNB{h) zO7fT8xfE<6G&u&U&{ywL$`Enqomktf#h7>g23y+}{Sg{fsN&Oa zSr;@l@~+hYkXGWeO#?$<-IwuSu@|A#qlS8CeYomye~6eK&!ni@MrH^W17$q9@ zd~~m!QU3Zz#_@S{&p2Byrs2mcoc;(gjrWgf8PD34AqnqIW`Pr=9Gq7_W3JWQ234K?#jwlOl`XHpK6$QZUU=?Kb5N9U z*rk>tnmu!d*-8?Qrd+%~U2qUx_+sAkXkBX>x4qFJZ2e!66|khF3g#~Zk)gt6Gn3nq z!mex4ySkUo&+D3QPj&%se&TMYAIaDl&X(_l54zp&kG;hGwozN8yAFQNHI+LHpRx^| zFLV4iNo>Ozo+RdKBIeiGb8(;-fPXXe@sDZi^zlgjvc5w&gkytTQ`HKu_d87Z+Fmp`vm?U>Yx zjhI$lpfz#E`U4Rv`B0k;2(JgcOnvjP?eUUezZEw#Rc+Oq+wP+QuaG|V8{{rXMe}(?wR6xBDACd6d&)D^1#N*^nlMtrMyQ_ygreo+jy?aw%DG6m4m6hEVi2bne9MLg! zQgW7(AcDZ()6uzy#V`-~T-{^i8}UIm!18CUugKUdA3C29(F~oSa&o8Vevs)M~R3muiB4-9kYC`<B{is`k%q|G;nP~kIR1XHvlpGpAzgkyeYfb6ZN zvcZzq@JJp4PBD(S?KA0(u!sHd;L-`PdHKqCRY>shyIE9}NvGy4o4kvLsk}1ky`pOb zl*Y|}x)9rr&W?*M$4Bq@_#GHdPgH$u(1rvKrW;HiI18p`4!jy_2IS*PBSOsZJ;T}N z4pFJK<>$CR9ML~P|5%o}FHeMPc#gXyX6uPfYz20ns@$QxxqAoP2>VtlbRs55)y2~Z z%pFn+u`Spc5D4!F@DR%ge8bA|vif*~e1@J~c{(zGt?ENNBg*9|Og;}T8zk^x7^&jxI#1p` z(0+<)E=DPrsae zaP#Vbr$a`Vg^FWz!(>eFekj|9PPSkT_9e3jgpCuzz02f?XW*lRvsK17>45bMY1gHW zfXGMgbfTPxhw5!H7rgAQsa-lTdeu`?cSa4dG^z+Ce{J|8qWJvadG)EE)-aN zp>t|jUAPH~{x1@q8T;^>AFKa_Kwosy4*1b+7p?u~RL((??k$(LKc6jWu<0?!?chI5 z2C&=zL7p^ZjlFD#wu$~C-x7=L?$t5>Q2y}i|Oc8MG! z2~Z#ca1OhS8HDT+d2VOsUqiUP#>I~jN!nAD2aDXSlw^k0#9b5{E@hUQ0q6uCMYREgl1XaQLm;nI$1+W~ z?sB=P)zA!W#E-*<<9MMyCV6}C*5SXhc3_5=z+&17vzb-jQRJI#e@%e6ZcU*Wz8eM0 zm20tkk{d9WTub#zIgv&)A`{Or8>?eUZx6<~%SyGiO~A#GfcHqmLR9GI^L-#%jcb{z z0fLD1$v(zo{eBE`jth1x`rl*F=Vftv&Kt%e?%!jcHZkJ{vpd%Tc`p{#KV|o}bWJv? zaW&}vYmw?*F%q@)+-is&K)(5P`)~sbUZ0Q-dT33RZ^h3s{10%RnXLiPJYfVts{TFJ zx#s0%htugMz=aD6jcNOLmP<rBTQ|_kNTw&Vt-*2c##sl7A`zi4 z8VUK6Kd5jE5pdZVNRR;V%AA^La_6gaGg+j&O< z^K%2_St5X<%Vwr`QvaT)W?2hhe^X74NsG+CCC5-P-9R71l-csj92%5y`Z;QtiJP8o zX_fL}@t;4dA7-KMf;iCBlvt`|SzQ1u=KAVV;ta_}K(T2{CAS@2{{h z-pPybC1kUGFiqGPOq-^BHADAQ7SN+`RWptM!woB@+AVhL&DPIGkX?`%Xb)pU5SvfL zH8?>#@f5Cz)Q4Jm6{t#ak`k3z(hkss<; zgFxD|XEcf4r6^lDdrQ@De9&tfXwto3!{cfQn5p;P zJb25{gQoboi9&>|q61C?G@}I0@)Llr!b>a3B~;rM$0-rOYuq?`el1as?7e_yLBGl@ zvOQz0h<+xDTN{e`*1+&aPvT(D@vavhPw0Vr#vuj%RQDOp$u%LThrvN~jK8jA4e@Q$ zEK!lKNp#gCt^*por*aol>!YsEq@3&@(APPo-R~J*>%Wk)zP$Z`G-2?A*1P zHdQl5H^jLIhMxN6C-(ABhu6Nk4Bjrk=TupVza1B#`OQfg$kqI6LO7CQCl2uy;$|Oz zhraM+$dfnXN|{(<1yxv!jen&M%BA8^#C9aM57bvTjzuXxK|`%)gIRd-4aZ+%F2@@R zX5bo_G|%|Vz-QmF3h5DL&$ISiOL~Db3W^5d4pF8bDA3hiR+-yzA%R?wR|PR+pClwr zW9Gs2y9U=Rge1WCzm+3QVffX6Mrt*>HB^rRDST&YAfira^ zH`jO5yG-kvvDe}a`E9A>A^S{mz3g$Rb|f% zuF_-x%gckt^tqot&XR@rIxFfW8Yg7CN=--`Ihz-~D4K8tPu9B)I^e?TsXNG5q-O6+#ZqAV%*by8 zG+~>a3sYOJ6u-vap{6{@*{Z+90b{2=$voVv6W~zCpEF9l#L&6){)%!@C)ro-7|tI4 zJ2xX>Hf9K5j&W7Qw#u(RmGlTNA6&%1mugr02CEsDHr(5#tBpfW+?H_(s`%5S`>%Py z_>f>?Hc1!`phWJ9Mw#Om9`u2wgT%}xm_Jp1ox}a2gp1`#SCA>jl#T0hJn5rqmCQpt z7l@&hJ`XcTn4!s49<~?093eZ-&*05fh|Jl*+Ar9VoIfJruaCW74$8l##@Jv=;MD)z zZv`sHDdp^~j&wHB%Q2{W|0~k}ZQ|(_x%a&> z-Y;N}L6WuCT;H5CG@)tNFR?N`6`geLU1AavTCkLs`6i5LjUD}MB=h-SH%~7?!?%^? z(kErH1bblG2=B){#))f#@(iQFr>!V~0QEHUbe_qL28A3Y^G<5>%ZA856NX#AzWr_1 z59z_(3#1l!{KZ7=e|_0_jN~kzv!Naeqptd_WKx)w`a2mN{3-?dW0fB%AN`Gh+hRK> z4}$?}_B2HZTjJ^`kKo-heRe+6&%_pAV(Tf*-)d$4iO9pis ziLUSX3Ji#J)u&r{t@b@{41^WAk8zA_Vi!w!|93l0fVs}u70~N}Ak6A9rQ)DSq3o~& zSPFEqkYRZEN|3<#xZJC@$10;B(5ULc*y3J2yAj;yT(ktWxQnE)=^tnhq^Yddy^oM; zq=1zU)pP2`W**j!tmJ1}J}8X*s%t6mOM`>i#B=ElyG+L!p7n*TOI|_|-oE6J+o-~$ z)(zMc4)YDMr6)9D;bhbB9pBE{8GQCOEV~k3;o~1y zZOL^rNiuoQfAuq7g$VI(hf-?63D*_y@-y|^M>KoN*EdAhkY;x?@f}HWAZJi0oGSB4 zGT)+HHP5i)t!03AOrQlhfeG@C*4lTw>1iiFl=XN&VD9BSQ55(yu;3svqJc=b5;~OQ zuIl@N=-xW%G#^|yeD-UOw~wy{&SGQIMO$qI6bb7$Ag_#6IH4R$pSr!ns2};G=r}nU z7?En8pMOq7a#D?dtm1W_;9CxE)a2a*JVb_})gT$QSDl`#&XFG%!K#j&*m@xvIKtHm zhHA&H-is>PoL}U6C7=cb)(}7Oml(H@ zeNJXuQjr7ZT*h=ht-_>kpRxox|_)K;jdZIoD?sbLPEoxw}u_7J4o{jKdekvB(*B@ z`jfrF&Bf3W{w|KtREh5wOWBzJu8Z&LA5Quf!#YRn*$uBFMQ)DI?T62@h#uo-{(cT( zO$kcT&Ho;q$P#ytRP2Q^G!otlU92Ma!g6SN@VR?6o)XtA~@tXCP)9~ zXv*S;oh9(J5swq)Ew4RE{YG6*rEiGg9jBpGx)FyJxa;phLK-+`QeOy8qRg~0++||_ zq8X%lqr`T8hP-$g1cA6Vy{!i`)t~hn3Nn}bqXRD)-c5l@wbn5c^=9aI$1DW^H=Qu`un8N zXkw_@qTfW(515sW5aBpd;3HVSn=!TO4Do z%Q!LN2FEJR)hBjY37b?$PM`|g9e=2m3ga^4`OW;Ir|?9z=G7FJ*2V1u62zL{ou2SL z2PHH%*?n4&5)pe+kY9>l7@CtTRA!`EX;hvnM+20liOaVU*{jbV=;-e2zBjpWKj~F+ zYmuq7dU@&=2A@CebxaHPRID{Ucn8IZtT1ZR2^L;n8)Qa|NT1Hw!Wl2ahnb-V(!V~- z?;Q{Xzwx^9^WzqF{(^b=CvU!_W81J)LSR~gyS+wyzAb5vF0nwVXJV2x$oR-g5<)|V=3WJYmzR;A#M_%6M@m01*!*l) zIzP#+$$*h^@bsNW2~6KBOkKl#%tK_A6;$eVlOQ9KAL&zDraTxOghlBX;o>Is zD9}nd!JXh#l&Rq$2Ku4~AotfzifMHc;edn4)-dSZCx z4Bq}bb zxdHso+}`~2o73Eb7{dwb8~R1eaM{gIp5InVBmM9r*(;I?y;&m(>ivd*Yevx{^&9)M z-AXqIS9f?`d^(T%rknD61p`5KP2O^OXuBxuOAVi!)5-8_ac;t{-t=+b>`>p-zIa26 zpWHvj9AcTt8`@!epFQLk7W0XV-#aA0z!Nx>P!6p<3^4zx)q@6(D1g5s*z25(N9*j!e5f%y zUO($V10^mTzJUmFU}Rx&8l*2o0C1u1Z|;n#?!$bcwsshqXBod;I6b-A3D#8kWz8tp<;fy zA?M3SuRD2shlapuHacUN90PauK3vt>HLg@Z!1|ZtqHN5_M1Y)V<64KlH&;}fGg9_v z`P{9sFSBX}%CM6fWv(?r+RupJQSa|F+XYvS%mZ3-{|2XrEYLUhQP$TbFSTKw;P~>j z{vrH$+h`-T2!G47`oV+n&uKQyQ?=cjldzBs)?9#C9iFyFA{DtPp-RSe%`9_m1(F_H1a-#bdgAjDNuN53HLDS?*d7+r*pFo63JMjKZrEG2 zQi90q>slTs(ETFavN6K8(Y7i>?c3gcCRr-YS=raA!2)BGJv1ZmmtNeTx6V%_-6w<#ReCz3~O*+vyy_Ls4HJ2 zZ@1N`lx<;ddmW6*<9AQhki`>JwR0q8MR7AZgANS|nyTMj%6fjoDCVT66)e&5X{ewL zU}B$Pi@nU);50i7@Sj6+W=@vg$J*49@lk_$T#`gaJP|exGoT8dhATM`y0*A<9o=}l z!i~8{A4Br(OquuBn(P?%IU*XX6GcKpa9LvK>0u!Kl{Xt5i4Rt)s_7j9G-z&ed9>x% zF4AY)J}Tc|@Tkz0L_r6@e{K@7V+d67da+kY{o_){=Ek3E^ol`p*xSw?8m1MIH)vQl z-uO?j&}rz1A$#@#C)>E}lQCpBoNu~ndIIBMh`YBsa!5fH06A&+Fs+EeUs)orgYW%Q zj<7P4t4uMOo#epYjh*HiOKi5pM@=|d3%X|`L}HUhD?q2h!91Z}8=H*9d27ejse!j+ z*cMjEMDZ{Y;BWMJ-7qYxn+{RPjIci*=&U7TFtXZ>l^!%9-vdq&GFS=LOi&MoCM4J< zcY?XbQ@AF%vnVaDUCHN)+PWBJ)N!Cs4M;PrIbZcHMrw%wnj#%VC|6k-euk--ua-|S zGWZ{5CKFgy-IU1pxp%g(OycFV->Yi-wo&gAEr(~$TRmlQjkb-W_S8(fYB_DkvoM2l z@dOF?$P#;OaJ?WrADt9S1a)hmaG7yLz$*d*^zIt3tGxLUC73}3&(t4pi0si_gmU-I z)!@4V;KUCl`6k_V6JJcEa`vV|($*m{c?(ID4Db0_5+A2?ur9?$y0cKZqQQ8!-ABS{ zUn?`2qMXb89|uEdO&;b(j)rAMVm3$zZ?F3J0|qcxxsK(_NzIF6~N2LWl| zZ#Ube@xyNsLe!2D0vwikd$cY%7X|H8N z{S@#hP^fSjJ3HadRZkxlc&}&p? z*@xX7dR|lM9bhW0wv6Ug^=hZl`Pf!?H|+1HH4s&cJG88*8N?V(Fb6t}tP2V|utGn_ zGuv)fPz`7z?7rryM$_x&vZ;SlJ!14Lj)2x1VE?MVyQNqou~(ZR80d*L2l$UXU+SH{ zihl|Qe@`|2cwBO^`H!w~2~u9YBASqOP)$9Oe!f=wzt8foU~d9e%rJFU6^lCW#;Euw z@;$gCCcr>gc=+~oI%8$S$|Aw9CtO z>0TXyC$$22b!@XJ;!l@sc&EnwaK8g)AloN+7yQ>olV&hK#ZS)c5=cgFbxQ;=7Ibvy zyJF+na2=YQxBV`zf4QbJkr+(=NB^5BoRouNi2#SW48>8A_*wCJQe4-2l849LQ?C+R z>`wlJszYkFH5!Ao`<2yPZw(4Q^LyTUF%}4#?<(d!;IMvM1$NDwmmH|dhWidUmW8_= zK|`hOtO9b@O_~EdN2LQsznD--cZ{f-tqj~BsiG^dl&c;ZfCd#kIVQV*#-(|YWZ%lh z?f``Th}l(P>H1Y~oM1OgPv5Uei;0-~_fJ(s=8=UXnYM(S4RhRCuzi$uXnZ#Qm7nRi z7YzN99JxGF5{yAU|T7_;Al9~Oq0TAZl8aggv!euztE^Wg#yQRLV_EeK$)-nEyD!H1ut{i9N?SoOvrlA<32sr* zJIco}>KXQaF`xC%3ye}nz4V*4m_ zT3y016(Pk!a$NY&KW!-N)W{AZ8Z4X z$Y>|vL@JSEX4q;_NU*}blU=jCX%g+#rb+~seY$EJAJPF_(D_8C6EOIwCeoXoK~l_P z+lu-ACGw10tfAKI4uwZk0z5;po&@9u?PG+7PmVw2>qrx66t$M4Uuo+^GYr|A`ip4* z_Wxb~05x&xW9_F1P2zkKA1QJb8e9>~Ot?5q^4GTB8}ApHv9-uagr$~<_aom47L%NUJ= zHS$8yiTST%b$o0rl^XghS}=AfMoNwr3`ZNEABcgU9ZZRczY@z;O4v} zj`uC1(j(cVC3QBC^GB#26@gqLoxKbW3?P`pqJgQ`qd00AK0i<;r)Npp#|-}f!6&wi zMXqvNxP<9^WyYn)BeVt2G@c#ll9lrw#^^u~5S*g?VZx0o$O^Y(aI|s_si)k-MOKU> zNPAMjAj^iJy^S8?t7EZ8p+^t#R^RFonTYgFvKhDNti8SpD9){A9pj=59L{CTqhME= z$rsaXP`;qK^b))0}9Kabk*Ch z$pKFtSo{E1k`TL7-=7|A*J6S-A4T&0tw@kusJ=<2)ln{`{3VBA;9K@blj?X9t`YRmrvBAKMLAW}gI^ zD6oV+xqu&+F(fN%NB>aQ2#9CpPmDF%zNjBS(V`+AEcas5Ixfqiq0NYqpQ_(<2_VsR zCY`9kg`NJdH?R}Jg~s)7MEST2rS(t%rBYRnp@ z+2JR`P_`L1)ElFMyN97p=V;@psHQ9LHJ%ImGvx`X3_Kc1rNAA((EOOEz4>4F>kLJ@tdI9#~N)33_`RYW07zlaDm`e&558xk_ulF+0+d)~e1pQG!jciTHWn zGX0Iec0JhL(KSm8L5#3%vCSWjcVhi~t>yolbh+UYh8BEYvXhIesHBHvCBwy~?an`V zd8zP)Hx?0cc*37o-5c|rT0;IJz^Q;$mu?01?aoIShn-0HW-}GlZO|x{ZtIt_tSvl3 zFI763X{BdO{;)o7z%;$QpO)UmxVeDsn;aCZ}_dz8Cf6G_cLVpk>jk*G^}MrM|)aHYN=bI zuukp5k{R#&KIg?pOC}jazZAJ~P9TOS=zYcu7CMy-YDn!1MtlNrEBU@0PDWlV=`vJ0 z2BYN98qJTyyI!sGe@Xs4EE^6_WU?fSP&^7Igh1zWS@?jT#eI$2In{G!UO=5 zNycG>6$a3`b6p+hnRPlH<*7bU{?l2!FA(YE=mw=mExHqRxV+11m~lzo_IoY^Z=jQs zNdTjh*2 zA#dUZwk`rp%UNa_5_aZ`9)tAgpNxe@ynh#x;@=b#SbsU+og3F+W1qN^k;xNIRozVd z_@sRVi4++{_PIJFph$1xB-dhi)W_RLi;HQavku2YR#lXHx+%uWOR*9xyujoDo-v2D2D4VS{{|Wu*2Z+6VfucK`|cBQTZt{AG-Tm_v?%LnMH}n$V4=1dc~*C zGL`Fk%__m%2zzV-0zBPr_Ey#ut4GPa1ERhG-Y1S_ZE`Wa*c(qz&3(s|?0KGq^p_`F zKxoJ{(oE$@wDumhg!KylmQ_XhXKHYo zBhCdqaua^b_6=2Pf9EZ|Sqtm^t(GD0^Na>^E^jI3bkdGpbTu1;lIud>GgSqo^L$Yk<0QJ!Wfs8y&p##~wd@;drgZ-!fFK1HED8E zV+Q}^<1eI<-?G;57vhOSZJ&9revF5f`le7I{}H85*wyoGV^RB*UjmZjn;!clJj2d) z<)D-CStn0kCaEx0q9KctzamMbWpp&ZVyI`JKi{Z=C#aAI_SjGdtKjud1@?){a+QuE z1!K`|{nFBb){9i<1Z}y=P^hbyLXw`0zfCAThMx74^!_W|)stIW#P?nHcTBq?<}Q{KdaYnj(;z|yrs^5KmB?X!OyXjT1Dn#&wh=rzF)ejVggTESgm4K z5@fBK3I9tKGn1|7Fl7lRFuPbX?Wfp#kh!8Cdmmoh)u>1eLD};@F@mX-|B))+X0Hx@ zJ&O6EAd2XYOVaa6ck&Pl=>xenad_%y4oiwhl)41_4Z$Iz8YrHdxJoKwl3HTK?ItWJ z!{uc0vjR?EhrY&kC2JVhqpnNwEvfj~KD?B%78x9PfD0EUbbDg_ssn|(fcK=Z-Uaf~ zF*}I^@?yS>Umec+oxZcOET_%-D`I(;>pv57O-bVPHX8GYEUUMsn+3Vg_=L#@kk31C zeu?c{bX|JaFO2n;eb;#phv@Lp5aZ(t3CuIGYyPJ-p^uFufD^^&gKYC^xVo8gojYys z`-t4E&X8O(U#~1yhq`q^0X*xj1!<*?3D|YwnUADH_}P{-^K*xo{0%7bZwMcH&Mmln zxxddH%gdyp{`8XaC6_IWedVy-sc_73rxy!H)RpO&>p(-wi&A3m`IkfI;F|C*)(_bY&f-VInh z3@qg%+5S-*l}E#N{7d&(Xp%=?vMP26=<#BEL)f;AZ>7hjthF&R?b_!!D)aUm6HQKX zariFyLUjqvYIXh0@^@$+eMm^$D!d<;fnk@fka=M9$Gg)d1_K*!&69ZWU1TO?0o@C6 z_f+Y*J|Q~C@~;EuQ~6CcVMe37TJ5N3HsD|XWL6DJNoUw~V>WSihz=W$FdX`A|Aloy zPxxk_SClbt@zm*+)d~QQ__%S-eWkBY;-XX5zR;S_EB-6bIw2eN;sRK9IPy6ueq}mIzFq}1mXR>)7Cq{^9$ZgIsf zhL>(}ZsQaJp%~Wo*WO9|u1rTUnmfd}L%t*6(cL^A%KQ@DZbEiFg=1+SvE`vOyW?L` z+lTN~Jsa8|b70`Gj9g*%OK5Y<2(}|P;bDy23K!Fo=F*s~&9|Cwxx79UB*TMi+@UMU z9v0qVt9hmJP1+*3?Oo8#nQ{awnv8M!Xex8{!D|`AzJ4NQ0M3PFh`D3WH!4@^f zIzuunUr7fzZ6`BbMB`t>Xc}s}2aBl0a?HT6GS6Y@^OOnh(WM8eotk8xA&!c+!htRlKVT(O%NzC2tF%D)d4KdFX zvR8aqX|y)g@)0PNziOcWqHMJ7mDC4W>Uj6 z6OlCC@1=74SN#bwf}j*sH9r1%$KEyl!AB;qv^aT#-Tf*}Xaq%xdPDzk=dkCT~!ZUyY)|Xe6}=nBbvI5!`j-$I zFer)Blh9ix*7?(4*gwLpf@@-R{O7jVm&&@Awn>`C{1FpKQQhdsl@$yieG*{cxil!& zHS zAHOcBZN#guwcdwqW=&QaX(>&Uh1GYH6nCt@N>BcEh_UbV#ESJ<)e}0Upif%JuSuB< z<#pWuotazrG;j%gs&V|E%UjCj1C|+EG{v~#3OQH9x?PdI>`cWD8xt3P+W9PaZgHR? zGX41dSR^L$P~4U{{A+z z&6#Di%L0&3;iUDQY&CF+A%c)adKJqJER0+1#PLN=?OWV?;pW(o@aA_B z=+AS|_SG~u^{v#xV~=><+Az8W1$5$p4e#~If7}6$h=r&sPlp*z+&>!TF-c0;uxuO` zhoeE_M!`~5*xkR$$t|ntq*WH&aQ$Umkf zKM!3zd**p1*8^-xt?>6pwtO}Wp5OJE?JxL-5-=;hkdv2{@m@*ta<`>^`taAt8SVzL zZLA^Z$DBrMkt&au6|e4em3WqQ5n!{K8#qv)KLCMWWhBA{g{@iN{B#;hBy{qH1a-j~ z{VONpQGJ_wv53R(bwNUpISzmYOp7QOz+Vy!UnO;G7$C9I>LKyW&joa(TT5kS#fYs* z4&1iWoHj@3lfXK_H>9jaXLdVN&mA(*6e!|28SEkbtuXh!NMPEFioX4z`w8YiApliU z@1zRdu7Rq3hMqB-Z<{5rlDr8#SsbH+1e!ol$B9KgEnfrnha+}{(v}UiZU``OTo;D(>FjQA@3$8BUSl>KiRtw@h#Oe#I z;1xg)DTTx64f~yl!{QI-NIjiIJF-O^d3;xXU=(CW&K^7eoZkNW^q!gbeSIDavKQS3 zOS^@Y#hR>9-vC=-@)Uz(#&eDX*$qI1)Uw*~2i*C)J8rBjWh`Q$k3jycHk|`VU}nBj zvPz=zaCs5&td2`5COt6n~|n6Isgix{>w*G6!ZE zaWN$8Q2jG=6Q4;HZY>yv4IoH7*C=zv`|k4is|uFsnK1D!6Ti%nxtO1=(6 zfDMDQpy5hUCe|L7v}yavGVHA7H;`Osij#_BFKcZEppt`yW%koN2Stf%pNT$WiFS-l z`Nlsi-6j=*Gbo8bo3nd1lyJ%F$;l@akq#k{xizb*+1*AXEq|23r;wV_!Me4TaSRXZ zrsI<^EHqQ3VDyGv$BUdL=7t~%H$fNv(cT~)x`@zSGUje%weN8?FLT9Gs(RVVHC%n& zxGgq{$Jqi)@D3fGf;sroi?IT!T;0_92K?r6gIF=#Re7ah#icXjQo;F{Z0}fzueP2(6o20m~@OkjdX@7CHFkdl^@;dDZJ=JO1wo z=wj+NK4v5kDur00)bxCXzpskWL6g)W(;aMgqgGQah+tx&+~CWe6?(khOH`EcIxY=} zxvH}&^0I=fj}vPdLmD+bOm}lJ>?(~6po+6^k{gF2L}3OqTIfZ?L(@M#<+2Rc!mHJm zg+l}U6q9iL;Imkf+ z&+tQ7*F^9_X^}ZA(ph_onA7J%%an*VR{w0Arxr!`4eXPBSFD>_Jo5nCu8bi=-zv~> zr#?aHZ`C{&lq+?gZ!`^rYVsqXTJumPSP?+*1O`mzW%@wM*22Z+;USxa`*iD~V+#Zo zWb4JG7czy$g#qFZ%_T?n;EN@k(hq!Ob$-f`Z{rmpcBvjplNXrLL9l#t4Mm3G`lp?n zsP!6XZ7hMoIufe3uQ@4Dkfa5Hy~ux7q_h7bC)kP^a%#(t$M#NOivw2T$g4?vJ2+ zcHeM!WSj{Rv#_)EiiS&F;PglqjFY5RYJ|K_JZ z%_oI0A#;O;``LgCfMu~kDgfC35+ME}`LVf?WR;-Vg@X{_+#fBJX0a2RnYSm~ERD^R zqX4#H84Hjl$c_lB4U=e&XCOrNU2z*%UH2idkB4nI0==RGKx#G;(KEI*I?2;fjJm(Z zp-yH$4(c&kR{?giCJru720o4X-^-#zY4~(INH^TMl^wHF$!a8Y!%PS_REf#{R)A5kJ~vOmGj z6z$~v%)Z7|38>(@g;7(v$mXAkey8ZoaZd&T8-v{?NKGxQRY!;Bpta$EKTdpP{0oWE zV5debZ&762*2M0d&G3#MF%Q3^kgoMJ0tNtSv52kgivwBODSy1g=XU_jYa$!M zw7WBC3l6ul5MHhOugov;?Lc01u)XB|c57~Kf8e^hIIA_gFe0l5{%KXce!VOlPX~+q z^tyo+cYQwuvN;ffyMdgg*0#cTWW9yJ&FstFY8X<5>9d)GKL43V7xs=NKj=E@XyZOO z&|a31)rkZB`95`Mkgqa3B#$cXj!>VdX_o7A>&#=A6Ka(xmqHAu@)R;6qBDAf(f(_m zdPbhhcRX?mdmB*){LV9lsFe;_igQENUF&M#aB$=Au! z%q}f2UH*(!{l#Z>3MDmz!|0A9-iKWgtKQQV@P#iw#)OSP6J_t;3Q9G-j5agJ-7NnU zoFNNUZ72HQ$*p+S|BOE`#R(0HYtVw^t@hn@f^B#a$eA&c)AfCn2#S7QT~~R9YRKdj zAQZ+O#G#=_v)@mXMlyc`(B$m2#*Ax#7iqk{pstk z8hum7hWM-xkk@F*$$vkBjME|QOA?aMeH_PcL1sJ9^#jhD36va-1XsoM{rn2|*CM9D z9R#9oDt8x&$rtZ&SeheevK=>prC6S}9LK~>C(M1;PCZDViE|;}|7tnMgP|z8>wX3L z0q-{1n06d%3JDgQ4Z(-S zdlEn!BQK~7LhYgwy;DtV*cC095?nNQ4kA(otL(&y`X;cN(&f?^T457VDhVppcc25z z)3Aznj}~a*b={ov6*Pfhx5dCH%#juu)zTEzb6b-Q&7nx8+et=ck)kuGmclnq&u_Lm z8EjXlK2wA}2DtQ0Q&-2qm|Kg(kMcx2RijVh?AL|F2UIdyTIMx(S-Xkk8hPn-0_?9n zbsW7n(YRZ4mVz{(cBY9L3jUj%%NL8>gd*SQ7n$iGDmMW={2i|YB3#ij*&;4VY#} zN6wACuB7`IsD8BD$t0CNKMsfs8A$<}GNW*_I&@c{a+eV9<;$DUY8yD|MS?2mGZw-h z!?&sFJf1qaqKx*SWUIJA^sgQCVp~{Z2TWnCoKTDdiQu6arQg)yVH(Cdg0jV?^mP48 zNdj-ljlF2~Vrr2-J#=oObYkL__bvt`P}aVM(%+`0i&mMbu?t!ve6lCB`dIh@)FLK$ zbk)sQ-`1Y;qj%xpT9p3h`nH2{c+~xJvt^O`h^;kv?Ix-;-eGGe@GKXw#2(Y&)JM8b zOR&;xew?rtlrY^qahf(=uji|II|cT(Ic7eK^MpcUcK#zmZY~7eG5=L;6@G57on>}u zX?`Oe@YK2?e68JXhTZT)n^S8Kwx?%JUQ++NHLCY-@%y(ic7p*KFSik84Q;EKYA$7Z zGv7m#RbC`dRY8RIw_wZBX&9^Lm(2EwTg)r=?yDm**!Nef#fF?c<2Zgk#(Gh%OcV>N zFUnt45>En?DiY55d@y(+&*DNpbS) zPqxkx-%=(Qs=zMGCprUIC#=Z>CZg{i>JY1g>hY?(BPO(L+l}SB(`3xhK0vB>CT;Rv z90p1G_+xn!$?EB+c^t30@zateVnA`lq@Hm)G~Y zpK6wba|A||Z(l@D$6zEZs8Y|Du?@7#{?~R-l^_(0hJ@bEgX48p{uq6qUW9g zX{j`-9OB$Nh42ujqne}45?!kQp6!2c^J6%W!6*QE z$-~cp&D;*v514`7-f3%Y)`QVCHLMtsOJ_6WFTtGpUBNeC=%z=Ml&AGjNw5_b5!@L=)2=jww#2vETIO!Da=o7Lt%{c)B;;9k+36>M0nwSb2#fMewIC& zto|N}`DJ9TN;+EO0gbIAzED5WIo^dgk91jmbaQAPE37J4lHF>UmbX7&x1jI6TI?As zTT%>HXJyp&#;(AHz5lCn@?JfH!f;ynlQb04z!xf!zE|fT-O{KK`0K_^68nHmB~6YF znGF_mRfK*O3E@yH2a6b=LnWhaVnw!o96=U>!UL9e(|o8TX6`~ij&+-W82Cg zhve7Ux}o^Ogys!_-aloNPHpbq1Y9gt;DAW=IOpff>SGZiot&Q_a;&|rh4#nqll?UF z97F~w>7JZ<$xx8m!H!OGvK)TvWBbxHz$!&9m0Zj$1^P?7ir?ycb_2)OkBCTx09xh& z5hFH%A8MBYQ89C=666aXpS-bA+_R9oi=(gADzrA(F>Y4-;b#;aHgrP~w%EvV>x0b5 zzG~Z9R!|Rl_5n*o#^vk?RGYS?clLIo1#D8iHnB-XVHI&*B9mx|$zUCW&S*xpinGp| zsq6E8o^)Q-Kpg;7{wl{U(MZnV2U!K@ZZxL1HbOVU4Ol64yB=00Q1Nk$jdUl%ju{Gj zfnY=7po$9N8vPw6wi6N8ImqnK3|W~$N#ZHxArGv{>|=L#m)O6T{f)H6q~@kI`Bua- zIAESvixN){|0WLefq%c|6q}uNlRep{Nql+x$$Mk&`Aw|vszs)gLK_eA6krjRpp-=` zj^irECgAf$a9I8~uEf*mD<^%zm>VqU6YxVopelN{CJPcc)jF&61F;xO)sA$dJl0$r zzO`Ul-ZrklHwLt*wmf`;vllaWZsh<}mM?Fc}Z9X+qgpes|>~qiy?V+`&~Z z=!%_e-zl%Q?kZT)rJU<#&>S&{q4BRzSj7ni?}zBTS}(_>uU&VWBm8!|5EvS1#LS#4?5B-w1VTh zM}oR3F%-65)^BB7n`q0c`d+DbR?rna?gzOuv*8-N?1G|mMA>aWAJojIK{eHgm$VBa}gMkTjdbU`YB7o}_OUpeR zE={O+UK>-N?T;Ved{(9xg0h^7b5HVZVG56k1{(=ye;o3|S|5*1W;07ExWV_86{!-W z2Tkb%v5e2i&|S8o0@n~V9ioH}@55Hl!CV|fc(os!J+fvuh#`5&VtmLH!Z^VXL@1sX zUUujY4Gdo`fRhnRR$qJg`)A3SABK$=1=a;U7DvL%lF8*#e9dx(2V~9h0UZMo-fQ1z z2yJFYImp1)OC}r(6lh-wu|tc)Ye__c93T$+ULi_uZzM}0@^?g+F- zQlftB1#ay_%b;mREf|rhOxPkZ^Zg5sy_*EFQ2+}g{G6{A57hDW3JuKcR77u1@Jf7i zit`NaF!;j?x-DKc!Q5&p{SdtTuB0lx$>QS@nI{q}@v7KCu{f2#=n>$i9&0IHnuud% zH3y{*;E>_hB}$!6e!I-Fh_MQk7c5sr>BgWhyp z+T`*NsBftKCEzsDmuOUW1v08G$lw4yb7;w00V>r0!u$o~lW!UAd)@;!i)_mVxkcWC zGRQ{!W`#Z)Krysv%+HXX1bM!ikEZ^lI+i0LEaLlWIfl?O>-!z9`tx~AqzJNEvr6+G zRwt@;?rGMsb(=;4Fa45?>b}4KH#F+=_AlaHh{09sxWhE9OcWg8apxk3!Qp6!oWIDz z2Om+^WvfmFt<57?sXg{f*{M8S`V=FUhICT%p^F;VC~loFAdz*5kio+%Pjf`jZw5)P zSgfQnmvk8wFgle4(;WIKoCbM+j_HHd7GLNGqiS?;o zF$f)z*+|e16DUNvjxNcrRe*(oDqojmT);IY2=_0kw1t#Pi}Y09UPi8sD-0nK=x791 zN4c2*=?c$x?4wx-#!okvd>^+6gxX4`ZrZ3N3|F4NJbGwl)3Y~TrmU&>12Td|M!hR{ zJGJp4e*Lob@&TIIJ5_7LN6`Y#qsE=gx2{TA+oHb(%(U@9WkQi^Lc`uNopSKqS`a9A z;`*}8zpctqPG%yiQbvx7ORTh3pE8h0^yI+F!RJ>zEfG3a$m)m&=flG|sd1VwNaFFq z!{=L%CZZsV_f6I19hJ-vv#}4P<+1K1EMx9jlo+2!9@WVY=97S8W~6)ZY}2E=@ECfJ zf~80DPDIctH-rNQ+{nZJrU~-=VuSUZigJfsJx?SY5doU@f#(D*qP8gL_G350{au0)a1zN$rew1 zO>@xzHJ8Wcjd&x<&$s_j3cA*#QMam*t}cdFG|Stf(A?EvhHF-kGXjE1i$-NoBf)<|2pd32s;|x$*qATh|G59 zoBxmS&)Z>^xe64ur~Z5Dcw`=B|HCmrS2uIY;R1b@_*6Dm4KotmZF`Z?$R@68dVMvy zX+HD5p312dFe>9nKYHvUES$6XR7m6%V+RoMKsI(a@ich*U+%0uv%;@llEq#1Y{{J!B+rP0;JMN=rYJTAiijwrBrx z?nylZ;-nRR^m>F_yddjKY@BluQcb8%f4P+%?{e}TAWuUJUs*ri6KhF!ED%}$^&b7% z;WqwZHv5yS+S-r{&+xVnh7yJ_L0~d+Oa=cVupbzQZ%Mn14EJ?N#Q?2{M=PNf*+{-QbMwG331pAW&TZiG2AiW zG)^NNidvU82@fW1V5+DLIEZk4>H0m@jm+QV%D&!@-c0ZBA$;n<$I!;GJkxGO?aju{ z3c$(6A-cbhQ-|@3zA-RQx41Cu9;8NMVBJ_pBRYDXlgL^~o`r!nN4@(;jPjL8sR7&+ z!xj-G^+H1`vIp60Otk~2ss!?r)U;m8l6njk@(kr1`k8x_zJhF6H=sA4`~ugssPimy z&ic2+LPq}&S7#N~X4J0RI#Ar*DefM$cyTE18r*^hZIR;cUfe0}?jGD7g1b8>{~r6_ z7w0w?>*^b05X ze7xQDqyKvjILTw)@g*(a#<*(C_g2-+kKyD5&nP${&v%PKP4+7?FCdl{JIw=W_XVg! zb;Fp9o8&%-Rn9-St>+k+J8@*?d10(h!{kFr7@^M%qlw=v<6&8wDbt2s+hi^&h5z2Q zQ%_SNx(-@cA>I8x4(TTZ&A}OS9!FNW4@;ehC*veV5yyQ|5BRXcVP$p&YlRGqagtt4 zQ$K6so+FHXTA*;W!E2~=?v#8Z=C=;=n<1%3Z!v)y`lhQ*2573-@kOPwrAc_{BXao# zVSg4}-d0~y>|YSt%rjEj5#|(6a|-r1wmoPST#!Px!Dn-lh}jw##&WAQt4JE){TFg+ z4tr+eSfqvdwwdXSz5d=@@#ja_Yq-PE!+XjJQ4MO+B(ZS!V_W1T8s>wR0y`s=&z0<5 z0I*;2Fw8Z*SH+N{TOxP)+w@NuqOq4$M%KE~QzNI8RA59yzzhE&I!PjqyCm^$S~a|K z1gTC!Mw$%b0GEhQE7{oOC7OAiekP9X*$|Dpe8SdK_c|itPfce#=1@Gx4+Gy+p1&V% zo79C(Un*xZxm{EXjALshMyo^0VIz-4dTR;Fc_0;pCKP`yF(nxjVlZ0()=J&{gC|UB z=DqKaPO2Veil64pPBfCpXW4djp{Ql|9H&nX#4 zBgS5Czr!FnyARWcy#F+y_pcuy&x@O9!)>iaL|gIW<6!h2<@~6{L)sd@tYFUW^h#fK zhr6UheGfJK_BN`XgM5+Gd3>;3;*Pdfd;^0NuK_-k*d=jbMo4Hfk5?JTP>Fwd1l#iR zKN(LX__gjU^B=x7Q$umhpGX-*TYr+6wz@}pRB0L{Y~eZzYjq8M47JoxGJQBPj*+Sh z(tv(U$83*6To!aB6;_6|+a7px2G7gr#ob(zNfT%siX6RoeZdxyT$i+)>>P?Lkq#n+ zn>tgB4bYd?y!uPuc%ZvAC{!yyqik?2pZ?=NnUfVI>PAY(7whbV0X6ispAR6~8ZTM( zjgOY`CaFjbSUzS@%gv;?FsPrKT5^^(241PIuJWII(fjnIya(N*EjKH|^@IR$n@#-F z2*$)y`Zl_g9EJGdcWCD@Zz9$?R59N%#NPg7SHwP z2hBT;!OQf{m|N)CBRm15xTQIArTt*N`@2fx_%jBtt0X@mTIZNq_Y`!#7UmEoO`E+P zifnUmcz|7M=T_r{MSzLlzskXjj@YJ$?=hGj7)MGwJHFWN;xW4}T|E-nvc64P=Xzum zLkNw7MLAvt$mhj;<0&O*H1R0RI9XvgI5>QyNzGsxivsuY7r5CzyWrqJZl;t)&{eJLsui{4{=WgN(f60j2@3a-{7TY9&FtD($=`_EfSB?ZZ_Z^~n}((Z;iZv{+L%@EjI#Zk znuP;H-~O@K^n~4TYabf>(&;E)iXQ{6AFchFT^Af}QV;Wla?OXpG^;P_iTqy{oE$Y5 zSd=(`=GKFu1@A6J;I z#upmR>E-l<1|7|R*|o&DbfF#P_}oT%?qj^#To4r5WB+3&U7psPsY_Y#WbA4eK}>K` zc3nZLG+XK2wL~lxldgAtIEcV<<3L>ZCs`_Jwyg6gVnAXybTmAOsN&q~GbGKEzGwCF z2;SU&Z#5--_zaMHkI0WG$-T46TmLm8{I;@=+$>oHE>btQ6=vT?uB&`h51yP7Z0 zlcWFj&WbZ<+QQV@NJXy47XgKO)Gz^Tx#N*f0J6)*qssG(clB&0VquBo~?73l6g+aHs zQ+0m_`sG%$CY8K=3YB;abj?%^pVB{tT4{XxONh4?Z_AE_Kl``sMH+QK)$#t!CN;F=t`y<`v|4` zSwdU5^PU8|Q5V}(^m=53sg;H4+zp1aR_6m}H>PQl0Dl~OtK#fQpBmy%rH!)gb_&pLdx@A4FROyjva5+uVV?E!(c!9U+I7`_ zI!2xi1GJqK37>*^g!b}jCpDu~mPnt!obZ`a0H%m54M$Wd2LBbT+qH=YJX`^9)lE~G z`$wJ0JuSAkhCC7todF%hK376SUyoh z$6Y?t*j41h9Y%AC>CwuLYM}CnWV$&2(MNkWB)5X`;G==NUC-DJDt7Wodi|*OIdclS zj{$0<2)W|2j4Yg$_KU?!`kY0RZ>Jmj&R(?-kbOw=4HYDgi6yZ3Pm8k zer_6PUi#^!E6^-;WY)~rH4SB^?tQN5{s%J?UWGCa*>g(UA^4sZQRu1w!0p439xImj z=+j_{-|pb}QY*p=cFKVnNjt{jE6T3*1~ngMnVw#HV)0Kbq@}B)Uy*%ic}dV$ zEK5ovOlxipvn{`g&Ki0K0|P9eD4@R-QSiz<-as|-(vN+3nU4oHjyXsrQK`j1aZCIr z(li z(~@)P^%IVBqwS4hUCA-tFCwRcM1R2)otN=xwo=DMfMD4@l1PpBGKHo4gn~*a? zN{QxFY0cN`<3?I)Vs;w}se8|6&)AvC;YuL*Wlmzu#_dQerhb~=IDc$5g5TaeYf|ni zJjx%LITiJ3k?FpK^dR@LG3Dlf46%Nx*b2UKBq7g*tha>ni+boY49jVvLN!cr#45PR zDBFWlzu4w1m3!?>b0Gbsb?Q2~+fZ|35&Ln7{FacttO*LdugsLs71EB(Tcmz;J6h#T z`ShkhD({VctLtdkWL&V!M&ZR}+#rQF9JomS=&FY@W$K_@Pc!JVX)vE2Qg`s4$i+w- z+24j<|Jl7$Bm&Tr4M4A=;(wIa(%9=?i zM7raT;sIEX#c&a;c&3Jacd?R$B|Sa%l*tY(=sVQ#9Od_C7v7rDq)D|Nlh#d>@8Uay z_el{Za0qkwd3)&L)`Z~g6+!K+3_Vz~(fQ89Dh z(;qc)dp1F?ymCkn-bnl}&iQ&otOJXH0`sWp(Yb(_lAQLR2)AMBe_UG@v$&LSS*xa* zoDZwegc8lCD<}M?dxsfBP$VRIlO3xm$T&~0st2fy@Ael7gC}B+vh{ZizgwJTqLcCm zeK>C0!O@jGz;3T#)6|T`cs#&k6O@2OB|fs7Ci z-N*5=&0^bTcGvvIsb%I;eP5fzv-7?^8~&oeIdpGWP|i|Nj&|Cs(IWP&co}RSld>&C zm?d4EULkWCITKf3nc*V4Sz?$1+23a z3CdZsKg$qq={5a^>w|!jOw~sZKl}^BQ((SvRL9=bL3~=I8F7^2_#uhC6}mJ+92iBq z|0P8&Z7=E))4+03dzAJ;`H-UPkmqm_ZYqAi4JAL|?XN}>o}&UVG+YJHkC_le zRa$N!ciq)4N$TTc5nN)FoL`pco>Sas%t+qXPmGC$!hLQcpz#GMXJ2i5>2uOC0PcD_4!RaB^!Gl}Wf2A=1NVeY z8*;VKJ|f?eAC98?RK-NwwS!M#6sR?_eqOStSB{r+)y z7)ViV^gNHg|D_u)Xkt%V-t@I7b3QcnXArpAgW#V!%NFWn`$Vq~`VmuhQ^@e3FMTK~ zije02UMyFBIZxuTxFuFbv$C5Gq!za*5;kk1V>n^+sfQyb{}9R zYJ13y@S#SxukiIv4W33Q=`(@iT3uW4+HDOCxb;S|Jj_$+DZ#IIV*Wbu4{RR3RK0r4 zxXkT~HIiieKTNE6rEX!W|3o`x79k2rF(>~1$H$IUOcsA94GqVJL~iBpK%F~zOZG;# zbDiX+5nLi1PdBbsS0ag65NVVa&4eRh%3_~~e^&W4j{27`u;AIKAb=lxj)<_ed$%a< z=?{~Q^uglZS^gUW;oLYDm($1iMYw&o+nV*g?0M++FPhQB-~?ig*5f9dt?z5S-YNRr z*GM&s$z~wl{zxC5qjLYUv#aceFBYfLIl?B!id}<=c7&-D@9xZAI1g_$$32u4;4HJg zR*sPx=`4x7?4!wgGZP_v)VcI1G4VjjteP|?{_C{T@2!P7OUZ3@3EN+ZxyQbrJMcc9 zg449UsM%AEub<|=eL7Lir#u#B7mtGs-9{(ftQr2a9;V(61*)^*O^ZFM07S$me57S~aZMrnUUO;)UDc-QBI@5Ur&nBM)pq;EVkib7Mvg@#~E=`#X#n0UR$%{j5so; z&z6-$OaoUWO})4?H~~lnLMfT~AU7b3?w;>uQRC#Ko-FRgN5uVJX3_cEl8-ETnoGjs zVi(=hKKw^2W}MQb$mGJO`7DG4z9SSI#tH%+Z6Eu3q_^1~s^XUO)K&5M z2uvwkTp5AB-{c)s@l8ZiHvUjR8cleiUuNQu_sA1+(I|@RKnFIPq_^H2KUFasrO3QX7$~DaoRkn%;y+$ ze7sud8|fQcP$0;M8r4ZJ(X4Dm>O1y8_Sl7MisAzNWwG{-Yz!9LawC)cg?xTOhgx$= zOd)S!^7gmMJyN=7ImAr;=!KL73Gp%zvw9v_#bnd11pc9fsDabx&u8J>!*>8!F|X8^ zDxO+MkF#GoJ80fTi$oW1Q#v26V^mR6RPNS8c&M_|c~JZUPIYPq z@9-bF&zczDC=J!j0A--7qEWJA(}(YbJ3%EM=!!FN1Gx1|gIOzToOCj<*q$2cyo4!G zqqUCrk{JgKzGl5ebcg7q?TJMsVL}y1lK$LR@^#L~!yLI?5FI`^vsGG_gV4RgsIZl$ zhs;Xl3G8|C7=sv{rVPqhWt0)7=N}etN7^(4v!dprBW^J9AqLU@h)Va_yY=GpFwIs@ zYs6LtXD1a0Z}Efe)e?9`1mX4AhkMn{T{duf-o~~Tx-SUst>^OkIr1^)Tdo|l>_zI* zz;+l%E2F!ooW+JwOgnEB=gl~svEqXNWX4(oXxj#D41&@iU9?W>6c%z3IAIpLq&iU z$?REOtE*h2Z@78df;<;Cxg0D8`;D!IZELufZ1j!~?xt*cIPgvk8+rzQvwbXGrLK>- zx8zx{P;ft}Thip-E?6@)H>d7hEAn40CKDvbEr~&ENz1J*Y+HaV6<>VPB;VCvi_hmi zGb^1{m=2^R_BKilDq{oz01mVvD|~}KI^j&kKHTGU-3a zI27j5>IB3X+-qN#_OqkpF}+3p8npRNa?^19IPA zpn3lBaG(fQBIafzBBkbB@~0%BUOF?DpOG+0i%3jPDsX41lM2P-ai(!E>RfJsXrdZM5{KTlGoK*ekR^Hx~I+%q9gz%>4F zaAReF6SH!iojD_;c}>3;Gekm|NC?TSsOF2MONxb4(*m_)E#SnsgMaXA)L=P-xTb^8 zMo!q;k7&J3qSB|JBB3laA>M=02TfZCcAKjjcI#ZV{o(;SUZUEX;mz#5;FvaiQsOpH zbAev%Kw##$ho!Y!&5-GK`wVM~+XE}E+mykO5z4?m3Ck;cZx?fRoBX6}eH7kq6w9LC z`SixvB*~@m6~L18W)jbJ8Y@_t@Vv@ea$mW(n$I{l+r3PIjPd@=d?D314$>!iu{3Ec z3e$`$?7OJUbceR0hYgIk83`^gJ=+k4R8bpc%kHbuxGyu*wo=9vvhCqIX)X$GnVC2y zA1ZUm_Icn3hv1@Ku-xkWDPv`x&{(Id zD>jG%mf8HdNbp_wa0@{?92Z-vkxu%`MJ>R9-dlhMbu;$MgCUN%Ec-ZChvqVNx@6*RnJSkJq8m_l+ zBJja*l1eyn;6dBPuW@AvwGM%Kh@zEo$v`uis%oO=30wa#o-JDbN>j@Zl?$C&wa>k9 zSYDNQw-73wsmnVw7HHJ_0qrUXtOg}->FkO=Kf(uMnJ-eUCys+e54%dgI*1+Y@i()& zm3)A0IE0a>>LU~jK1fOf znFu?(P!8G&8vgTy(POQPN}2i=C76&<*wC5c(LPB6}}Kpaf~KPb2q{9jt5bpNPH%<1Lh zjD55B{Oudg_3a8;;~T8G{QS~&7Pi%Ad>@@h+~WMMrgkqXbgOT5x4-%~7>TLDw@>oF z%QCTU7$9regm@*Fr`moguxnAWe7XNH5q??EE)jZMCWBlJG4A6$&S|TO8hd;v$PHu6 zqiQ?-lDFkfB(AHbnispm=XV(syGL|=WZ|Qeg;9LfgZ0e+92|ZHbsCvjr=`pVWJO@& z%;9{PX%d?O`rDl2F9=!zv-k&3#e5F=ka%Ggry!MmYA@9mT~0aPg~gmg4({)9J>uJ3 z3|xVX5p7~bm%#lKo@ra|Y9=CM;EaE{p{adT(#ami@c~NBI=X}!uDOb9^b3e`wNS5& z4L|1d)1o~=mqw-0%~G+@ZqG^B#yOrAd!o^Latid|9n-Wr%2=o-hCT|k$0p*)a=*HI zU@MhHhDVd}`p9JFn?P;L3(`Fk@1;+odH8XMVV6xqY(3mW*0IU5dpLo4e1QjLDe^~~ zt3x{egsxbHNf+&NUR)!wtSlyuFNvBt$)xa=h3ma-o4f@Mq*IjmTmC5Ad2Ng#OA}D3 z#xqktkF=~*YvyZL4$moOs~%GE?_m<~deaRA7-Eo6!(}7Bx6MIDMX!t@7a)X3(OHo@a1>oC2SKa+d^8DW!-N zP1(xwwy`3)=*YyoF%Gjwc8bi}w21eV-jS?aqQYY|0@p-1ONa8)K2+f@{UhU|e!IUC zc3<%bBOfOFUK)SerD7;_J+KBXr5{H$EkH@pKpw?})zxgm;$t?j#va;fYgj!8F-1Gs zQ98N+0;YeLh^w%Tv7$ZP)1iP(h?W-J)(W4{clm{3<|o#p$ft$)+MkIHO3T)!TBT`i znF`IeeR{i+spE*mcajTfGAjHVh7n`E-xVN-xneWpe3m50)#j!FW8R?FUGk;R>u`am z^~o*!Uq5T6xlIca<*gYN=F67VvC*U*NfvRKMk|1|KwSZXr^dd`f%^VIYaT2a{^;s9 zR};i_IfA(6wmLEnHfFOw;$KcoY_JKIkJxMYX&l%0F<+@QcUdYe+4~5hG%0a}`(vn< zY2cKDf&hl7Q}MMmYe3TsNY{p(Fx>bjUJc@HO!+^!*kGRuBnQ1svg|Mzx%_TBPVY)kyrt0NV(;ZFOZ8iR**t=37!;+Qw`5qB{KAA$QgQ_nLmOl>| zt5M@dSB%th3AQi(`K*#LQO-Ufk&tF@A<&xt!%;F7>Kh}~q{$tu#Wfb@h^mFI@xAx{ z@5VJ<`EODt#EZs_;}Yu5@Qr-;$=#M=y!pKM>^}+5h6>%aM;~NE0vA4DZXfc#$vJp? z8wLN<2u#)`$yF41vIeK7{p7KfPTu1ZImP8}?OwCKB$EpC6~+{3D?+~XXo^FuHqvJp z!I)Zb*S6f#(u-Ul`hZtQ-cIMmPx<_81pMWO1*!%DGSU9Mi6;$c9rSk?h6B*2k5WH1 z1Q^iFa960eG-;#n9xdVf4J-SQU0fCjNb8?&XN0y+1ncipcH;izR~%GHFAu-^Mb)X+ zq)E#6@0_R0+IX#_?9!o%er%vb*-TAgE%6Afg1-lz+{-VarOB7hOxS%8CEjcfKCq@3 z*CId&!VtPhqeKKLXg}=jriaR;?8Xr+ZTc1S_x1~?8&^O=2y4Ol$KPe&*M~#ey4~mBm ze-bXPy>haRTn+PUCA)l0+<3&-(qE82KhMEZ3H{W7+k0PWoJz>fzgH(sg6$<-UK4T? zzlk5>kNcnEeA9y{$p%M8RI7HG3;M|R6ek4XHER|LW0toGhSHM=JeMegEQg7%X&n0Y77BM)O<_Dp=&}Aw=0RD|SYTtwGs?y@r(3wl5B#6*o#Se^R9G+rFrIdOv zWF?~KsW@OWj= zwNEv;6Um}?ysfM|2@~_1aGr(x7@t&`C5BW4*U`{_pt-+0loaGxll1ky=`hTLpSEgT{^>Q9xvK5j02Joug0wUC&!1kFYnMvdpxSCnOR+_I;sPp+r4yO&|xKSJIoal6wlCl z&dNlrmK>d2#|IiXBo~xYKLaquis3!ykgI{bW2ezsbCn1wJTj2lWZ^?#i)FGP7*Xeo zfW;?VQ5{pcSm58QOM2){5d@Ks^1Lzjm47xPFtVv30!=3o{}6xbpcQyP;A> zx%e$5cbp%h0l5a__s$$|)?EGL=^@stz@2r8LP%(}y{)zt7#AeD^LpQCH!6Qrl(q_kgFM)!#*IH93O^0_*WyG` z;=>2Gd)xc~gNRNF8F>e9DP2zmN&fa>Gj6oH%i7kB2SfQqT3v+sHgx;yRT_Eiat9R++90#OhCGRx2+jnFjU@bg|(sXQ0gO zez-P!#IFooSU54tpO|mYCE;Gqa3&@BOJ_^D6{b|!P^oh6WWf4;pto{R<5xt=JMUcm z`cI5D$&NLa3nQt2lgtVcZ0URd7#W%WT#!pCMz=P<6UqLVmDGRYgYt*ynh)ukYOIXm z^+UFBXML`jI<;|`<5xl^^sa;uF>Zb?Y4o>7|Cd{z7+i+BFC6^+C!!-HYeh&V6MzR( z<@i!HPzC+gCn~Uh8T=KZ{4WCy(oMZt_$+#{^q4Q33KhNBPs;$$Wg2 zp@?Tqk}Z#fKnS*SE4B|w(GS*gq{|BCP9V_Fyfjw8AaOI|n~?te{g9QhuBv2Xj>37< zt?=n!TP~uL);)V$QD>fA0KoE3)UaM_(dCtsOJXJakS76R6obmOY!F!G(CFvv2n&pT za5VKSiN1Xih?zbm$x3G{P$Dy_d9afb`2H&_oUgaJ8O+$#qYbx?1rzNcWSvz)Ta~Q!@I;?{z_$rxkn5`+frn@T$ zs`A__(C42JG*lcXz?5R<2>P=OTbdPLUH%Ss(_W}kr%qOBzCY+@&Dxg)>)`I72PRxi zSqkZ~$|(qq&>R}Q`cn>j7xOSviVU#X)PHA38EBcK=&q!9j+KPRe9yah<{ zZ(SOW;-WO&p_UURWGNOvLX3R#GKxou2-{;2OP~KrqWa#ruY)Z5>EXK>bUBqVsdtax zFRr1NC<&VDCAEK4W)^O;bu*qrrV@*#v19a;BGH%r;{0EoWxJBxg@>BeD}1Usy{<0C z)hN7G>h+CquvAvq1SA$< z!f+U{z2iic?{fvD18MqoQJ5YEy{{Q^n}78t-m}zNlvnAC1Rpc4f0un3B)vH*BHix1 zWPbGg_ol4#-y_!pS#bOAJdkX-T&f#Dzg&bEj@b3^DEw`L`4@r2qE>gx+w4^VkrGqR`V zQ2vpgnba4e+E2wtTvasOgWg@VN4bE*f07F-=Mx&3c{~G*?Bsq^b-B#bvuCqXq^Qasxdk8+_(Eg-SyT zrm5$a1)Kp}*DGg#w_nNUkj)p)h>h0+Qu;YSry)z0(}kLQ^%H`Ig*7a&P~Z8$A=LtQ z9+12HwCs1qB$@~M`WLrfSwr+_y0aNF!z= zY*j!`xzxsXXzu4cdS4_=ns3Y9-`qu3$``Q`hgUF?Y<#w}@eJb9={8XfV|$8yvEf); zz-*Wn!UHDZE!*(?6f`#V?T#cj$(<$1=OGYJkTyz_2c1P{$onMWCFPk6N}L2|h_NM| zcVzX4<9qXoM|=})>yh*)@69y)Mc(ngl!>en%S*4O%CbI5+du6zFVN+}h}-;`Go4W% z<#3~O7R}p^!Lvj_riyKjCl&7p%EanX_N1BF>L?lvB2W(}Sa!F> zn>^$Qfoag}vWeNw>bX%f2D;0_P@F7Gqf2^W>Tjb-mSFb8!eJ{(Vy9fbjQ&&9Y0g9A zf9`Xuz<93=wMV99R!=@n+#bJv8h0M6lgT6*JcdjpL zmToOB$l~9igVX|~2xCQ6^Ij$r85Tyy^D@ps z%ijntesU>c>uM4(wbhQu=JZ*u9a71=+yuJQA3vQL3Y*Fh(9o+|a}cg3bEx9?eiYZN zl!Q9TCT6aWrN_Ym{zY8qop27&ucYg2Z1;SH^UWtVE3k>3cLA@d1@M+0P!`FtQOcj| z^&v$KbLe8Xeu@9=k-(9zoE9S83d1c?6^@^`a}SP%vSr3cT=j|KM#0|Xss%cq5~N|f zD}y$w(QPYK)M5%RS~tf!dO28GjP9Xv!#0%vD}ThLWe)5eYpZEp`{S9c@hBr&D|2vc zBJ`nvUQQRIyBztVb`%n31qVUY;bGVgkU&{OPk)s;HPOx-&=DMGNf6;Hm3oMn>Jpxf zbX0+E|CUfEQI?lp<23j8@S7q+U>fO=bZ;?&ji%vu zNm$GzbJ*_s?2><1#`CNa2S$3eORh1s@b+Lh;B~s2XYE~b3LD}4;ENn;8ZWtv-#e_7 zz?bJH0h(t#@_ae=e9Si#_zDP1^;JoKAA=*0qNVq9`NYOkGa02-HlRE!H|&yA`a@&s zb1$$EERVfIUL01OuP`2Zze;wKslO~7~WKA}VI#j~Ztj=L`z@&mi; zX}6@WVr(m}QP!_lzH4uH`%A*FL4NnJ7eOwl^?^m|lUUa8wI@sZWqBzrCKtkT1AK%3 z&TDR4Fz?Fjqmj1gn1w&HI`U0r&9t~lZ5UUi4>zs=C*SDI&7Xx$kn(!mUm>DwI@6u+ zQv>>8a5qra_#{SMPn#fB z@+=Je42p=<4L@-LaGST;aN!p_Jyx23ttB|dd$y~0k6lR{ue@`=a7W~M>QPsRG-=`D znZAf8BTwVVWs9K5eX)dXFIhh?y5>ZsrbjSI@-SHn!m)orx(%+x&+fwOVzue%fb@rCGe##fiaFp9J8qw>fQLKCK^KXH*!LLV!g6d=St0cCqu@b{^*Q4 znvZxUTEp9VWiHq-I%GACtr;w4L2dz5wvYBF?y=#+ps@|Q(=-euhS8kSZ0BQPBQGR86A%2>8xaNFEF{=P=F zz;{R6wl?rmi}s*OLG;}AA|CVb)p9W+83IcpbUt?X1xNQ}A*bYe5&q?mB7Axt&C6}a z!>FK*gLhBWJu7iX=&4`HW?PifStp<<(`?HM8v2S6Jfd1z#CQ3h;GV{8@VF+nPjkPW z0u`yc$I*oyt4N+d+HpsjYvLkLcz2J;D8>^&IA`ZR5hscy_A)gVAqH58{==Ve?|s= zwDVYWC?kS$gUHW%O-c4J`ymtJ6=r#u1vnlZ{Hx3(np7j1H}@Q*djJJwgmp}O14|1H z|C>RH3=={vjw?$t9ULS|*ER0bL*JeUB1Ec5Ruz}aS=_W%d}X7C<);m!%D$_TP-(Ub zsF2W*-(6BlWHw;gMV4gb(O>Bnf4wrjsP4O@vn!eEEyes~Dzc`m6q2M3#f6RD7iT~QWKjw^JROWHL! z3_!suY^oaVLmeSbS9wZ~<89Q`-zeY|R|f>jVitlerM2a zz3{ER%enyRYo*e_W5CA+wOkK z$k3@2tI8aBs{z&26aQ6|RGe0@wej<>a=fe)?n@_Bv%9&qkE+_cdb#_+w}RF^A>hnC zzs``PJ^Cpx#nyK6s*A|}u>rq0HtA6Ags^`MCSH2n-OFlV>e7PGzCO&s?gszp&MT-! z7_>=IX{GM7`sU+>dhtWz;9&OW67-7DCi(or<8RWhN^xX=`Fq{=K3l3odDXGEaUBr{ zz6ph6prRJ_HtIEMfT6OU~6d5M?EH5dGS2LGzEwJi6 z)iB5sX5y60oHc6#*vs8h_E&xWER@VMPAs2pDIuJT!83s4anBzSRZG$LIX}U=+YMZo zqPY9;U2ynCO*s>1-iNXF(PVRWSu_gK_@u!Fzso+=*tVEUHh{<3WM>byz$2zA!{Qrb zAU@XG&>Z5q@?J@lXv|IB@ar8Xq(`jjZdu;hZe{jz`_`;97_er}Un5ieK z*Mr8IxY2al$u=N!7TlDN9PEuRRm$7>((P7L{bAm!w=osJe>dtP+$=H0Drm5eVN0P> z9+v^PZ-h2CoPC&f`wsnS?!ltMD!HekgxID;7m|4rvQ99sG}&1nYJ0ry`AKZurEFP> z?M(1NXZ!V=j~=W9pcbSyMej4T!l8j>zew_CELTixXF%AeH5mx!+qsp zSwsCJA~V>wiI{}Yb6e1&$DcE5VNnPNn7ukOQ9MPSp22zFJAaDi;)B|vAZ3~AqP%Vo zgy3Ti8>jxU6lRD;@u*=l1qhEINvr>H+Fv@Z1&AIKMN}<9%}rRp>#c~a{_?jqd9M!V zsR{d)jo64R7I;O+60ynaNn|;9&(5h^S)Q?#RK1A`2df##>pxfNLQt9 zgr`E=xe7ppB};7aQFZ?CEx41(c#_Lx2}>r4g^%ehpkGzi&Wq=^M4hHb&3>kIJ438q zJu-729yjwP)rs=ZGUu#f$jsrw&N9baaE@-~nZO#_E2)BZ5q&Yn{-X7xc zRxkUBY1+V8W^2%U^no=)zf;xNNDz-suFw}$_}33wILOVDnNBrq#z5JcEEg2aG?ZW> zI9pEK=dvik!VJR}0mIa8*tQT_4tbKH+gzuN@2?oGk0(N?H&U|A$Tj2?TZbG@_CgTm zu4!(?0PnqwGDk_a+dCyLk{l+|Y`QZOiHVUZ6E=ca2{{sePZ?W~_J?Eas^h9gOL=}g znLsTN?Vwp)q*}I&WGQ!nO%4|ff-m08%@9jJ7F+!@q3mcQ>2I$rDf3OiU%w68V1ZnMur|wJB z6v;kn@gM&kitl&s61ABd8Fyttt})K=3iqb#G9mBxNefeuirsWTeJWhBfydGE6}5Cd@GQM!l1kAN!G5P>PN%_HaPF@<&?L>+` z={_>y7@hmyD?=Psxbu7b=T>1<(Cw9I;;kI^!9E#6`@^qtR{gxn#G7p;u&xn@01L}G zvP3wXi-_yoCwI;5&DyCk{;R&nW_TKBluQ-urZT#^o%1SBkw02Z8F2CX?UXQzq2+F} zKJUz8g2tFeCiK!UNIZDQOKk#9bNgE}TuJtBz%Tf$Cl zpzn^{3})(_F-?ixeaIi}BTQ8mD*AC%)-9n+LSA-W19K;SJN1^r*!k1j6Hnj6g?{!q z!Q^zK=N|({E7{OR7Ops0#Nj5CVnk6QeLX(PA!lwZ4KY_Yopgh#I1n=xZ(YSaMVYFR z{EodiDppD295F>JJ!x>Lc`Zo4Om3W5=&@>PglRQkVh9q3O};jH|4_?5o;EDj zsur^|=f?@LR&go^C@}tTlx7=2l@Lmr0qdgyVAKvLg`>^jjc0Xf4ZTpOsfm?0BzIY> zJ_ctdRjvC9?$Kq6LMeui&V#GHpWpUvTJz2?6tR^n5XbD*5K;GQ1ack6>p&@UIuA!B zNCUkK1K83e#RNN{ns*2h=V?p+`Nrx0ie$Z)#GXYlcRZ_CR#YZ60$A4KsoiZw($OVg zs9hvstSWtt<@?uXDqq@XSGlz@xJyphHI$^)bB3bZH8XHYgae z&F(9yK6Yjc)$J6AXcjIPg3!!vigrA%ko;Fvb%8+vsJ#vuVFGxX=2qSWP6oq)g&QnQ^ENJBtQxsCRid=x5d*SN6k@HcJDxrM?Q( zUHc z_};rHd)d$0JyK;jNnBujc|3((KL>OdT~pa9*geE2PfwZ{;sQJo=Z2`5Xe>?;0e;lxRq$JE&5jg`N( zO|wRSX2@r!7~WsZ2#4xvVdBgX`YSFXf6J`5b2Z4D@vdNDJ3P1Q3+wWB8O+0CZ~p(d zddr}=qHPN|IYEO5_u%dhO%psg1oz+&-05Hm?v1+ycWYb|prN60m*DR15?-Ho@2yw$ ze($RFXIHJc=A2`UFNpFd?yw>%o!n>{rkMey<9-mZdFk@Fj!}=m+s&DExGR9`NU?t> z{|zOO{I6QrVgPfWoNxI@s-jW+64++JI8a8uG_6>WxNr4MrKX?(EuF)~{X#l-! z7Ku-L=ooChg3Xk5Qv$qy5*5f(^pOEGu?xUm?E#*)<>=M2G z=DL?p$yW6=x1s**i(6*81Ahcdvr@JK$S@hdGj=u-qwZ6@=uS7o5PZxN(TXMap6$bR`-#Vy z>vZ-7Bvc^kq#VE<=uz$m!` zdZ$#1&wh(JVc-!VaN=<4Ip+VT&Ww9xw>313Wg{a%BJS(Kx&l{Lq7FMg=_4bGKJ(=o zXi$1sR)|AH$g?llp^MOLzA9zqDX2;@MBl$PJSU?_57sA6w2?*1_O9k58;3?}J5%e^ z6s|WqRqBG@!n2n_OVMJ&UYU{42{!%7Q@`iPE0bRCCRQ<*oRRU32ro~-8HEj z>xLd^uQq_o7sb|0TwvXYJmvliGr8ZDQv7cpsZ_>MU57uv(YDkN0trJ z(A4XTKhOMW1a<((8@>w6G}d5D-SF0`*!bFrI!%H8VP4|bj~JIRto^!;=rK$DPM~B3 z&)j({I)DM6)ThH80TqH$!B4^bLi624`UzX@z2g`VG&(qcVCD5?_R_d7p&3x!7u3}| z$|9SJs-y<{_Pnei;-j*&B?iF-@8@_NYCem(zA8NmpRs5Hc(_JzpiAQjp?g)tMJn&` z{ES_9EjbMb`Bt+iU|vYH9P{D_Cro-4&pNsAm!i9D6`nTcrR2c`97I}EhK)c=TPWjg zv`>xuf554&;3G&zZf2Isp0&=W?A_q{-O~m}OST z$lI&z^!uW@E)PfAI=pBL7?r?%j@7w;kRjg7Lpz!jJ_A>AMWk<3fI1`mOmSFmDgFfQi%{s#tZv~p{!%` zp!~5?^}Mr4t5aoE`~g8E|E|29JDsvL9uuEJ^q^+#wrF!%EX;T36Ha`P-yJ5iExD%PeHw#I8{?0 ze~jOqH_F_rrfexh=9NOpxODqPXbIifWNN%AOBIr~W2Sn<%&YlQ5VfDxP0IG6g^cg@ z*Cihfo0}o@GM#l~>k@OGEh>Bd-lw%URNm*=HDRv<NHdoJmgat>_q$VDDp)w{LF}&1{#%^>r$RC98xdQ6nhMqYmK&@w z^%_XfU;8>BEWP%Qgj|V3?Q~*=U*Yd&z^%@#MxffB(d6^6#c#~Q*6|MLKXODt!~EOu z+uiSfj%IS!YHb)u3ggl;Ho?}HVXCU86~oUL{b~&N%wCdY{XVsP2lEZX0LFZLfAM&T$~?Mbitm)np@v;7|1iffu;z1 z6B|k58_cK^6J`s~T1aiq7edn0yslfqv)t+d>X2dAF~plybN!JrO`HY2W5ZDW{`c{K z`ovrqHM$om3^lA&e^|c-E1!6TvW>>;|u>hT$P|c1r<-y z`2HR!*zRAYOt_fFi+AKc@tt)Lr6IK0GXAz8$piYQ#76;4GCYtIBth)mhA<#R)GZQy zwV8ueK;Lj6vqk%&K$lEzOZ?blFd^b(+fFcUahvR8K~nty>vUusG5xFzv#dc-9^F9m zg=A041cxBB-7aa}Dt@+4t~u^6RQ#qJt5 z(vxZq<3)(T0TBSB34+U4{vBv`i0Ux1TcX1@2z%1UALZS?nm|l8UF-7X(lR`C>P@kc z_09OEZ9N-UQmoCg5QcbSa({G+UM_Mc^lo>r+lXf!aeQn4<*`SN{Jth(M-JETbmn=B zFUN|Q5H5n!n)#mY&hV11x1y@8p#!AL(yC#yBZhRF{uirDLH930f>JLUT(RPeK^Eo` z6a?K|j|+)76GEq7H3yk)<XT?v@%+Mw|~~c-zZrfN8b@1*DBuoPP3LM z*UEr%6(rhQ2xrG(?FBH7yL~y^!K%&!6Do|^yLZyB1}dFy;PL!pam?2B5D9u@r!F^k zSDQ81A^jI1nL1A3nwx{T;c3S`9n+Kf|G2vmb0Or{$<`o5(r>^hn$WC?oGih*FVdSg zuh$APl3MI%gMJh#+ai@?S4@uwAn=c3%B!7L|*x5J_GbDr25aW}jC z7KF2KQd+DhZ`-geU{KGk3U;9iZFE&_wab|1!7D{nu3=b44JCee4&G|| zMw);uRay3WK|o?We@NwF(Rz)CtzA6d7o59s473^xA1L5#gt}1n{sbJFO4M_p;F&Bh zqnt+Hn{`NUs!RTm3LTyQwju?lpC=?;og*GpjOwKAyydtNPSY;N5u^pw!reVgV$fIk zITiHoreb z^F#HO1Syu9So+RFbZz1rdW#HDYoaCRq zL$#6g%jVb`*Q(G~r@$u= zK9I{u?CaZpKz3wfyb4=dd`mXou17VJuXd;D%+)mT88WbKy^=4?RZDw{u#L&jUgeW|a3Ic0tW5jnOw!Ny5J=Q6}9F8H4MawpsR z*Q{uG-KvG77t$HI8$sB#)^nJiW=jjrjr_>QY1zNjcMKQR-{Y@0CHm_kPRRDZ*CDzf+U!g<^N@;-+jD>pM6Do{U7B}7W;u$nVw;h5V8BJ_eUgT)C7l-pT%C$1c)#qic0I{WX=WB2t1^JA5(d<1H)`}* z*19$*CndMeDGmbIg9td?K5_L1iggLmQmd>@gALk$-XK2&J zbrZOJkdN#60ljcz1?n5?4RAYq#|hC~8jyWZW)dl92G(`V-o60(4K991gNZ8Di1WRb zjRTP3VJ@NfRc#U`h9jB>Ys)t635%QR%QthT>a#ORqXKP#e*ac(<)>7{LVuVJB_L#ED`>0d()yBCX z9L7fw;lK*z^UmhMMvrXLuB^A(nTExsV@>&O^`@F}W8x=Inae{eCunDiB_QLhP4krW zO4dFVg&<-AIwMX>8R0e9)g!l%C;F-e`9sYz%<)Co%k#$p9H6V!;Gs<~Vn}GEMYzqN z9U?^34>H`{^EoK@mJMnV=z)@#3g)#cZgT`q-OAg|oeM7G!Q)StSo=E-&}|qShWbNR@3X zR=x5_0rx3Nm=c13A0sb^54laJ2kzs>`mbg;_kOSsHgX~hh$J{i%ol5@+G1pXsHem; z!q#GlK%=6nAlp*O$(la=SX(JYkq`nhbqV~v4lImwM+EvOA)Bmz;Q3A0`d!L#^DmsA zZ}#o!XI=o)@VNNms|6^P68>hbjBF1%!}vU%Ad{YC3Mqr&(PUbr z-0OabSMwg5la+&hhO?w{6Uqu`MH)|{%>^@v{F`552Y*gNO#LF66Q5J)$6l+HFFA5T zH4o7lwalWTguNb^1L>dLN*Twz>i4=?5Lh=XjjD_Dss$UC2h70y?98XNci@Plyu)Vz z&CPjv$&4wmS2JY`!18>F;It;0cgtPeRA=JFp_zcAj7*5A?o%VSAbML-PR9s+Mfm@2 zs|sV*==8F{ej2#m?C9pJ-n-s$Pie>(ro{b9wg!98=0>nv%uzzm8C{10D_^%$gK}<@ z-dfo6Yww?K3lA;FuimrY+V>EKV_&2H>#$5C|J%K}87yv-nQz4h%gLkKR}%@UA?y3n zf9{%8F%3@{_>z?pgVD7j?;jpJ;O=yYXcitQs(79jP539wsjL^Q2i&>;Z0beq%7oo$ zz>L`9RKl~_hcXwen;U42MbRdqxjbBdF9YV9krvXLG$oSqZP=w=EQx-vKp%(RJcU1d zU?RKf2h++4_0b4L_o=qGS06{T?Y~D|Amg2!$ooaJ|MkINx{*}65oPMSXw(B?ZYGP+ zBt@I>S&AJuv)1e#PsC#*ryl&e53XMW4kmVUvjutG#ud9*((dQbd8mdRC&ywkZ86G3n95Y3V;yf+U#7qRAGcT8Z63ISf=>PhF}8d?u&j$zKPP&GUvv z=giYN@c8U;gh{S5_4d5X&Se+yJt1tH#bQpD2X7_r2567T(IDcYQUmGM7xiXDrjZk? zA4>b|iy5}9olK_5&6xT9SV;nN)MS)e$cb+J3&??1Ze?5*Ag9pe2tJS z1xFp22p0QehKe6key~@|THGWyu=Eq=^niE|^nLpF151ZV$>#W);;ODMmA<`4%^uJT ziJ@*9>N`~+&%$C%SPL+~0rfv}dijL!tB5XmL6uCO-e9=Pp;UJrk48P5pooTZq%Vtm zWS@Oa8y$*sVybTpZ>q-}P7>iSN4yTRkGpN9#dmF9LuAhZf9gup+BJlfu+STuN!Yru zD=1x2YCV4422>)N8#HH{Dur1p*O?Pv*aJ1U`;UZbB( z&l8P~P9??nm&U_f4(3AI zOf$A-kzL2id5g4oYS=73lJ9C%2g8c^o?)5H)OO-V74@6MJQS6zZk_=_?hwqtY8Dqc zLYe}!%lLqx(jx5K86@F?%kvX539!zdND--7E#Qyg70%|=+(Q=Do>qw(g$Sq=*U?AQN{#0N_iQS(v^3T-)_HD@Im zi!@H>p&<1HJWz;m!T3eymu(gwe~rx@yTy=o78rWZG>mq>wo-}O2uY+A(^ZFWsIhyH zX;u?JZ%&!;w~ayNs(t|WuHqx9e|B1N;WAefkLE^y)2|=Kz}}E=nfXhA`5C7T3~DvS zmmrvM>5RFAZ4Q8;o<~e#1dJf#=n?MdZ=Ash8kV)FHn8$vgO>mj6QK`^3a0rtEl4fS z2q>#1o)Ik=A+Z@d^aE6>o-6hAm44{?Ju$DZzs>;)(PhxV{`{XJZ4jp|pV53O@Z;rr zEw-D?@@wPyD~xtr*As7y?b)wj>@xj)?Iq|)U&ZMZcm9cWDw}Y*v+C~r=XsxiXL6w^ zQ(!*kB`76JMkS`N!qo{bb-mB)_X~Z>Aj?c=&g5y&%SFp_l&Vr!8PxEPhUUk zE;PXTKzX_9{X~h9i}89DJ4++idD#N^^_O>Q^ydFN2eeAQc#8RA_WY{J^E`i_CVTOs zjm59y^sj(>^{=OylhNHR`#VBMJ+|+5?WK1uyAKkmAQ$Mh8%rn`0u zk0SGHx%PvYq6Nyx0+tYc^UL~2hfJ@)Hz~s^Dm0(=e&u1k<*JkqWErXb#e4C{U>Xn4m52$_fw2^ z2j2{+`Zygs;yEduS0PocRWIwZK~Pl2ezI?=E+@=~$x}q4<7tGQ@@j&Dtl;HW_)038 z3X7P1*p^3*nuh* z$R&M(l8O?%fRf~a9WoK_=g?tmoi^W>iH>Rr>2t8>j!Ne{M!%lOxU8#L>x&-_5fy^& zMxu$Mqn;$-iZh5?I05we2JjL(hGDzGvZqv-4Hi}5bENpbC9zci!s4Elp#i;g)vPS! z@bL0x(Zv(KY5F?f2}WTT$PKV(rJh3U_+&=-9lr|t>#ieh7;P-2jt=ET-9cH}NqAVu z@2d3oJXPWB|KSnE!fuX3<<54g6G@li*|c=*QG87Yhwb7%F)H)#h17<6x1?Yb-282` z9~t`58t4um9wDIiY=N&lDl$zzk(5-3Uv2>H40M# zJX2Fh2go$5hzNCqlpQXDX^OPc!J*@r!Iw_1am|U6^lGvlyaTkgszx`1gk5w{!tZ(I z%Nl5(JVG1g#zj3B)~cDYnE}V6su^(unMB0!|M9d664EAG)uLW65QLF}!hUP}h?L!& zC-?R!_=i-&F=6(O%Bf2R`xF2}IyZG?7Zb|8c*fqIsp*|V+*&T?_%c^l1p)ZgcOg>! z{{&Bs-F@pnyK=+f+IP6Gq|MfVwHA0>#q`2_E9_L~@9UX^o*S==ns^71Rl;CrW4JXj z(et1I1i_-5Y^#bMDk2+YL5R{_8hM$``iHt=V9>5J1`$T9X!4!a-~1H)9K5%8uS~kh zFiJxFZ8>`a`Vh6$$D>`o_xHM`o@ey3UU(NnfI#LacEPvjHWfd-jKD&S(LB zkEFoK)W<>?DdE*?B;#lZJG61V#T0KdP@_L`hCmoG-IdGS#v$Ozop~61pXbMj#mCS} zG5vTS$vT1u3L1Xo1}k3PH-T#410eOJ9oe?5EC|0YlEk<@MW^1zM$G!Pqw6b!!jIRo z_Z#}j+Y;<(S7GU|X4QGp#l4+?K`?ZIG{5g91$%XBfMilkgkv*MmawN=-A8g~he2E8 zoP5LBIDtIHYoqIp>Gab@g>oko^&Xg@@R>;=>?tH17_a6AGNY)R>POxfWn$1Yil+w^ z@=D6>Y@F?ZzY_ifGL2rWFNf0{v;|9sTjD>9RXd*cWvbaDF$JXw%>rW{Nu1#*=sNwf z*>+<`jw2QF525U1@o>0+e(K+#Vdt_BBdb>Uxp%y5K0fOA*FA7)fPTid8j?5HaN@IO zIk+1zwgyKSzr_ch%*QDbBmHhf0;-1Hx&{VSR)p_{-viiv_|ev$EoS+t-;V`0eH`L5 ze_bJJlMt8aZG!{WjB)AoHVB@$Vw85b!bR(ewWYIhmzH&6-8E7+6uQz{w2*TNGS|Mu zAtZVKKL2m`lYFs8vqXe5LfGfaFzQp}e_tHjTHIyI8fBVIZgc!QvccR1yZL16x4`(T zeruKudKHevQTwyl+W!gsUMv5bi_4f4{FqPl_}$m;`tQR2A}nsqbmw5X=gR>H{R>}&b9jM|OXz_a&PRwl>;g8awWmSoPHMqlWGR5Xttxkh1HLStB3TCwCb1+*vS*^hPP}$T$77sK{T42M?@zXYQ~jwdeByl; z4y2@(Dbq}Djl6#RA#{{qW2K>#bv(8Wkj2B&LcW;tdg{?eaETZ&6?v-_j1~Z1&=VJi zPCav{O1p~6g)fo`6?ls*Izbw&KEf;fi1b~4?1c9&`dqpqaGPQ4@G(c99} z8$BNJMauJ{Khh}TPay*HXjsXBgHTFLP>OaGR(VL5&kHKUI6z-F=$zN;NA)?kcW`IwDoDt&0 zB~9Z!VQ+5N{eWliC_B>UcuYQi8G~4HH_{nRG3_U} z4t>VY)_!=%A5*KneiOcJ27utcq^Kq;;HDEx8X&_8SJGj9|Zvil4*%#!$ei0#ELfy zA=gE%u@d+^(8{1}9qRRs2N7(x0uLQ1X~MRT6#jZA>mN_YOnGSbof7OJl_XGcn?Tzp z-I!$EbwyaB;@0&G{>EF+_&Q!_M+!@T%iWuBrHjaifGOZKf#v~JhE3tw-FbZGr%H#kx>j$cny5^O?SV9#0eWY9je?(l@y4|hmKghSzk<+Q4?AjUUZe{X=S^NQ| zY!hsoeyX|KK{Nd!to;%d)tyYj-HaaJ3j~K7zo-5t`fgN?`>YV!e96zWtrK*qAy-V~ zG?eHk$Td9AM!SqaZ|XViNjnCS=EH^|XgKH`HEStWGTRrP+VSL301>?Ltt*UY2yY(^ z&#rG!7I7n<18qyXM+8&lsB+nr5#GJl-c~E;pTC3}%HQz8-}v||J{Wyy@78et;jNA5 zR5s;Di**sfI5bRqCU5_rPBxsnCe{Iqc3LiueJkZ}JHWQ^-&%4YgL8MKjIE<@X{|b6 z6(?a-c5zA{*uaQP^qTX<>7d{SGNDp!p5>qpXQj}*o9Ry0Q(wshE4lN3?M}&J+B5?< zcB%)RdRC;Whp_sCpb;&mhq#EVh3Ak7Aj~F3GPgQs1saN- zHy`7oL%z9l$X|HKE|C!9ruV^Id26HHjjVPPNlk$lP=R(88-A$swQDio6 zd84WZIa_wj={2X~a+1T zNi--pn02GO`792-;&}NWgj?1;YA%_wa9&_O%3|n3*!zLfL4eF|RF8zLr5?Ix;n*|W z%_1hICf_DxYcWY9lymDer*G7Fhq6FTcs7a&;cTY9nc*gfiXL5AXVSejI93((B2maj zn?CfY_pA6}$F4kXnXL0WCuKK4htUr+V`^sMUDXJt=Df{UT_E)Gg(d7#r}@}>!t0MB z&lZ%TzW%^AzB)YiIEQ3Aw;;=tc26e_D}$pa{{pG2{Eerv$)Wh$C8@5N*e5%HdH%)^ zX+M>^zTLucx&al^g>Pq;FB{BQ8zhuloO77hlhkS&Nszk959Z_PS-Tq4hm!#m@=5Gb z){D8L_5J{;dR7W{!dhZ-R!6Dt0ujGvg5X59o2#>^OfXG<^Q5GXX&wIR-=Wp1w*|CL zFk6I50h z^dKYQ3x2$yfFxl)A@p`rUfiGBad$bv5ik31juMdtsjnf!h#I=mcc_Uy7pWIZCn(6& z$qx-{_3iCHoqFZBRjU^Q%7#ylirW$Y9aw3Ms3k9%UO+w@j`o^+kS2i$R*YLO91v2G zysx)kf=5jX|E)4#(V~u}-32DxJr{C5DzEUPVtN!I^t0Btmgf9q()`gBX&ALPgp|S% z^J<-h!oU5g`gF1K7!GKl#Y8@Y4}jRW;CdsBaO;{o_JnhT1@&plNlTLJuO`YiA`g-Z zAFxJ->jz!rKDF$chsp(J&$c;{VZ#a3&p~IQL^E`(+&a(9I#q zWCg{m+{sQeyR0PMCc0+h05 z4V8qmqYnUtEyz|owIzi}RlDdx`hj0U%ewV9yiW=KQB8;XPbvH|cVz5oiJfbVn$Y#> z{^wjji+<*o0E-hR{PG7NOcQ!u!QWfG1gO;_xK}M7RrHL|^%SXzykqM3+tX&beB@r6 zOEplH@zE#TgH=#)4T=LQhuwa&_WC0fhOt4ZdZ-T7>)R(&CatK11rM8sVQ_+lf7qLdKbMAH&fA}BIXyW?+{{Z5n( z%!*;8y(?1i{#@HLYF^uH>`2;=6(dpvLZNHpqw@`S{>!so+9q(3I}O=8kkRkr>ukgX zV6^fPNg=_zeyVT!@(ow?Ssnr#Nxf^;_R+kpWa!FEHub3D*LmuM3e-)LyvG=SXCJ^c zUXI$|itbcq5o4>=zfNIVp0OQ8kK*<&knO5L1;P5*SVTN4Y$_?;)s{?&AH+)sc^KUQ z#m!f?+VN=>C+?vKuhooyuHH*b^P)29r+V*!5mk+0fD(^qS7DIRr-paLCh852F7ZBb zZU>9ogR4r2?w%}2>%-o72%_Hd&u?4!%xKDlng$?%XFnLBf1?O+FmjwDUM_D!C3A@$ zm(?lP@j?@9nh>e}DwodM$gA4@>4>$Q=KgI1{39qdMII_@(OY^K-TDvVf1qi~LruY_ zh}REA<(2B=Ui%`~S~PSn)H|IQr`&pb@lU%eT_Q+EfkeEOf_0>Af{bH3ttJnEEWpm3bJWJBgZAi+=Gw9sZ_qEv>M#$qKkPV&X$SV(gp z>n?gd-N7#!CrcG!=%1q4W*{Ak^iPz8=!4`ON=;6$#jaz!$ojF(;+Iastw?S|Wd%XY z6Mp541y6336ElpPU^5+JDG$A^nQ^285`M@ zgENAKRk2T{Jd$1GpJ7b!chMrT*ae9<=SBAQ#5I7IV&lFRih!OwzOzIUN?fDPjmLm$~y5`9XDq- zR@J5W@IB=xZJ{&k^iN9(Xf!9foNr8$mZXebd6MzD?Y3~1CmP=Ar*`Q*^GL4-(F z{Pb(q^k7^>tf+6u#3EXWc|?B#ZlHKz_Pix0C-ZY>t=rY;gQVQ7ozo1(I)h5g(IG+U zH8M~=?i>PFQ%$5V$)IOda*@rlfiR*d604QJ>nvb9?|nwvOV+9R#v8-@9{_@)p4}OE zda#<7;u@2pYLY51Tt&T$Y#hQwfJ`+FYs-&vQ^~Y8wMzW0LB01A4#3fsZ>u27|CRd( z=$zgFrytjTBGp#8Y{>ji+adc(iX=8G2K5~ky!|#T5jT_j{?~SQxo2586tO& zvFB7#2ps9F%G|a5CDtN26?=xAa!I7OFca^z%rE;33J-@{5}qm7X!LnG{YYiv8yxN8 zHuZ$vqV?_UfQV>}5bR6ZJWk9DNbjg;{+2(Sbl}@_5d*1pqf?Z&0z_M%YUb|)pH+Gb z0iNo6|Fvqe4T#=d>Hw_mi?h9d)Rk14QB&5PC0?%Xu8-#CUSn&ECfS}vM)3EZwY{K9 zXS)}K1Q1W1QCKSrx4ne4V&sB2s3Tawj4HV`T_?=P^mMm%YN-6dDR+{9WG1wglJ?tNZKyC^q)RhvA2`G`FG+QR=ISa^aLiS~sYW(l=QteWQA3WH z-p5lirdEfkjlJ_qT|3)i)&d|ZA#Whix7E(lO?Tm96OgQL71l!UYC=q<0(W25!=)|# zd|uBF?=#>s(awG`kF#gxvWQAv5CUSO8-vlQewVYKLk51TC2i(Ug^Nxh;gpRoSZZ8q zqf_CvQxJ$07n61~4Fp!achmQIK79VM&J43K?`D!cZt2e~4T+l%5qg#~Y=Fa6{4Wvp zN&f#6N8n!zj!!hpJa1^uesb5Q6eITL#LmZQTl~ZP@~!4Ut{XzML)J1cJtw z{g1j#37~<-1hth$EW4S{2qzW##S5V)32WveNNvw~+4TQPR_1?8*3Bo0)E*s!Wv@pp zl*3->s?lqRaHh38GxR@6$c8Qvqs74W2Eki;z`lx{7q*Y>@ZWA4q6sTnqLLT`bT5zDl2Yj-DC0guq5$%H(bw(9O|~9 zI2{pP4Ku3ZY1KQUE;(oo$9j0vbimKn0D8nhce4JF4nwue!fx30h!A(e8Cd2v6r1u8 z>Daexs=JDhJsf!xEsx|p58y{a%5%auG{T-M@#FW5d|>2gEb5#w@`6AtLd3&^m+j#V z{TXr@7W;UWjaX)f$e=^5r1RO$JbqtO6DQNi3zxvaR zxjnt9&Zjv<>2jdF8l_Zhw_H{mP97XTHfyR)>hN>Tbdd9k_Az|##oql^hvK5XZw_{v z9-Jv1a2p~%15@6|(AmHcW21a~O#4r@BgbGP@&Sk=olkN{;Zf%?1Ga*dW(ai8T1_-+oK+@oq$U@_I8O9MTdf)=a~2(rpQ5;#8{0Plc%v@ zk8JAPI}{y4|Lesk{SW&kO)#h&cmha~>H8QMOcTwURGM$PA4spV@*~Bn2CtEax=(}H zk&5n6J$p8&@?T6ec65#a@qdb7l*b-20wn~S8HqXt9fH!Y{*-V$AlElxO^jW;GSTyTyQ(p3RS%+lCo zoO_3EH@QXALW_y`d@+Lg8T_SM`2U7T7)Ju`T2~wt+7`DcZ90acER}r<#zPmi4>L~j z4D|GUr@{?)bA8Rdz5x3lLOE3r{EZM}8m13STnf?v&aBP7D?dM74b~+q5kx#txFR{I zJTgD?ORcjQ%Pfsk#mF_QgVC%Uw9Ct64q2pT=(37kNeb8-!P(C?#T`h)cTq+Uw}*cm zPcsNB!+&n8`lP)4l+Qa}2@M3t)`BYUck` zD*A^96yHT#llScdfb&#LNP=c=IDT^5M|pF@x;(IjJx<;c@pFqy+h6?T6E+BW_VzMy z5na&yH-CVLgp}NekBllVX8H2x+@txSum^SO?Nt5&1Ye|8H0-K|p9$)JHve8c#oDCu zV21^i=)FrUtVz0^-byq*us?-FI=}t!>9CLP?jnAm$F?8Ml+ZNL0H5}wumqxvGoqs#W$H+53u$2w7*CX4VEcSz)QjnwNHUo7N4(lrV*2y@-schh-@G2B0t6b$kSAg|_}(H6R2Hk(KBsKl7E za%AIW13Ui={jPS|Xd50C*`eo}i-~yF?4;YZD<5+0WF3P^&3Ca%INJ}jnv(C1C*!TA z5|hlwx=11N@~p$o>?w`3AB7Q;{^a(&LPEQe(D1RLKH5Fk_k?D-bM2&fB5CipIx72~ z>p2IC0zweY(`D0=E0vbzgQ);s&9F3p8O*1Dg8#4XYf9`z`|@~_8<#GjYXI{wTK9*T zD3a2YgEr|eN~lf1ii~xZlwh#7!s>_2*QN+xoy;w+{uh1EpGv$Ne0Y1m(|jIsBX)@0 z#DJdaMmS^s5m!IcpB$|sULg8TWxa^uCG#AHt0ex8!bWK27o0go)bYbhfa$?@8!~Br zY|^Xn_;~yPJa0bzp^R11QZfpa-w9i*E$>5!LBS#&0D4f1FygT`yHXvb4*+zVTeWeevPAF+wP57qkPX? z*K7BC-M|n3zto9<`2Y-oIGP##ca#=$ZU0$i4Ua6Ie5u4@bJ4luk?umy{Np4()={=q8Ryazskl_Up z--qpuR|1Rouf#E96$Z1D z-%N@)W%(L_zyc~y-EX|TMHW(`%mI_~4H1NS|Z#J?7s< zp9SbHo5NkH$s~^qWs2n$9 zc?sU**7Ki1=>CQstn%(NMJ43=%(&PP>hwe2hU&odmy3^?gdD+vkn&1 zEKC?-@&^h&=*1}dnZxzp>7lf`Tzzv$O*psQ>pW8~{GYRwd?u-_m7JArKi(?V#?~YU zJNkn#Rr&5t337>iONzf1&VTqob;(<2=wnpXwX2?O!&Z=;2z>~wumBW!xqnLC*;`^y zOSY4%q+Fh}^ie<9JA%;W*%h=F^K_SEx+?LGwO9gyI{gpoiT%Y2=aBCqcm2NeH|US_ z8UgA8sx5+l@Ejwm{6g%kVtyxKyXxS7ELOP0xkUOs^K`GCK~EcfaZo_-JZKS9{{Gn+ z;S?Hbkg=kvSN%z>^|r(^z^(nu_!$LhMyQy1E=DFdj_!a6A`QMubVSB8v*D26nVHfk zp`=ZXd^h1e7r2ZL%G%&pIM>s+dBb5GktUnFHmByUk+4zyu(dp)GF^Rs(MB6Bz5SAI z9+C_n663|e89X7FEi}?D2FYv#Dn>8r2lv{0`+VJqnOOVB<^63>?T+lM(ih?Sx$&hw zjZ3hO(P=oQJZowFephEj#MQ6fQTY#e?oD}O@Hb%Ftz})Fo}nfFGX*Yn z^}UCmyuIkg=^8x$qTI6OE2Ew_mL=18R<%$Mrcoa%SmCbPxk^z;=m+~olkV1LF-Zc5 z(PU)acuJ7{4(8p^W%euz=^T>?uoMpjOXZiM;DXg2aeTffFW={co$oYXi@ z{zhN$0K>1s)lKF8KevK3WK;7yv0?YlV^OD!Y1`goN+N0XBJ$8fU?vrxEvktm`dAa)PYhS*+FNNa zT-3L3y~%{eqwlD6+8?^vX*CBA;hbMQD^R zvcG3%UCEQo7K{8EzY2-i@yyRKlo(5*jY|t5=G3NGmn>hGwqIAt$U;3O`+t}^>%S)8 z?`^Aqh#=i5A>A<=q`Mg~QW~TgHCnnycZhUJ43L)Y?(Xhx@Y&~Eujdcge%#snocq46 zJgKdXXvq6E7CiEqZAeSKtQuA?mEjs@W8!O3cWA&9mQ*Y>IOUH#S4&Z92n1zAkIBNx zM{93Sty;xC>;+uS__d{%WflkW53KfF{Xcs^I5O$Yi(OG0eb`y$B8xA>8m~4kTW;mk zCBaq*GI=-1xL21WD);2rueDx8aWDSu;t{7&)RO_B4%=&L$}uhD$>Y0%&U-(Wh<{gn zFrBUm?|t6iN&ge}`wM8($6cGW$zL(ww$DpCbrfAf^Wkm|1@RyLWZlf2!7?*&jBOgy zdgPMUy)vHt^qw%RXkLI{@=w>`s$y6O6BfW@iVw$nIQWecIh)sF=mA;%Fl29gan%EinwTY^p2~wyrpKy=d}!+IQv3^VWYtCr)Bu%tSvQM3}O000QqI zo-w^}(2t@%Pmel+0x<#^W@p9GKy(5KEr@2)hyI}b6BWLs;bKig#HV!RLqCPG0 z^9sum9HHUgLZ5V)ohvQ~4=|4k_1%*D@}|$QF2>9jj8P}P6IuX^(%NF7vt%!ucZqx~ zTD;BAZnJ*`76^!bS$ysZ*(F@+a&mjGfi~>H9?^J5i!&X3a_rImHL|bM-ktcL8qP`R z$n{g^@$gN}b7Hh>+~<>4>)F%@G=Z*T*ZBoVx8hbn?*syn^lRW9WEUL&aLNh~bZycYUp&n$EeD(7L&Zf>skH)VJA&CCO#!Y#7u_7jM@_qdt8T{kb` z2Z)*_)Y;aWKp+~`?>cCn_%c#BF?WELn-`e31URA0||sz55IP=e;tklTq$6Z19JS%|?~L$dfuw3U24x zAg;zByB{?wM};yw!|t;N$3L%+qW{!RI%s>nrLs3JJEIzSyT|eiie@!P%Rg*sAWOE; zw$U-wHGg1lZ69rf@QY|KHda6#6}8suhsVkRoqOp*IHlZd^r+szq#cvG@Ukl|A@zfe zv~*v?;#+62oINbLu)lLrS7`#$sx8@Cv=34x_i$Rd43L#70(8p+C%UC>#dh~Xd8FDZ z1o`Gnc7CmnPy@wY_p?d=0Fjif^1Oit-?Vmi8$1KJYS?iOnGGR93x^*OYTFOMeiiyHGzOLr3qN z6tp+ldGEIGmYUQ>uLJetqAwHFa~lAobK4NslFsE~S?9k3ga3*LuUbUh?L+qZUDWwv^n(dScZy6W0ygmz zs#LuCd43bQ`HD=Fr$7DJ$a?Rky7##Et6|_;=l@cFUj9GoHNZWNdHD*@>XzAE{`o$? z=~vf$9(a4xksXYW+n}#2TrQe3K0h7@U60p zR(Sna?gE~a{mb(o)SqXKmqAWAkQK+3Da$s~M%36$0!Gq0FfuAakVP)2d(p(2ZR$nS z|2u%BPfSo^4re;FMN{UveB?`U^QQ5VWNNZzYI7&KfU}_%g-gx6`Omc^GdZe})`TtQ z8ZRp+{*r!OkWji=o?v%75m{g;Wkc1U z+z_qALGWbaMhsoBUP$O(cY_Jk=Ok6rkG!IlA>bc^jqA@MtE_1xmnP`FER;6y@Hqag z4dcTIOeY3~r8{1Ja7Pw(*{0V_P_S3+u77BL^d>CAh9~UUDV(SLR>MafzO|1lzf^g! zI4>k%)QqTp`;2A!cc4E;QCc6h8YW?-dOh{0C?nd9LeO4HC+!l(clu46bqKvVGD0zK zR1CQptaVEsGtRK9v!M2EM3%z6;CMNyddh`aDv+)FT#o698R0ksy$a$<2$|?CCFkwU z>SXK7D(7~q;n*z%bx-S5Rhe*0OSBKSCEyQhFmT?!IeF69Y-JzP7jttD3di^~u`Q=A znpAiq8Str|w0YP9H;Xbo0-zgD`<~)5f%V=ByQz|htA^r5F{#>7YjsabCgubtc-ctTg==}Nl z6r0B#wQXa`d`VW4KaZF|8)6Wx>X3>*AnNehQ!`wb;CTJyv6R?xR5udvchS6OJ1N{V zN!RiUlkRwk(e%G5da>p13(LeXh4<)oFU_z?`p>pApf z?w!fw#Cv$iY)22(Pc9^V+H;5UE{wmG6zJeYf3ty7U1 zPvA|g?3phf5W}dy@yHK~MC&?r;YyF(Ytv7VV$Q(4!2w`WhOwNa73N+cRevJQNS*)% z@(dPMU}&vLW)!>?1*CqK_u!^%A&O1qFB^_4W{t&qef$CFgW}m|&-6CZ-+}d_yktGL zg2GNpXUB}|(n6=j%cM|*u4)wFuW5T<#o@I+P4kE;)Zp2Ox99_f50V)>F})o}hghRS zoSg{dB1trj4#vsgN3=?~)|HSk>`j&xGPN zU*HuUDBt?O7~t7kw7@@Y^dWvk1)Uy#cS&o6g7a>Nyb&94W!4<<_k-xiE$A5D;+@v? zNN%IakUmqgABYfx&Gp+^+at-<|Lz$5BH`Do<&~pfZI-c~MG4Y=yd=;^YvR=|Uoe|{ zFoFvYaY?x3J|B5eSx-NHXrMn=d(%^w=6vS0E-Cj4+$p|p*2vU(o0ycv!D|Phh*U`h zRd*?7Q1%ao<>Xo;>-h-VULnnU%&7EP1+i4aIfRt>9`6s7Qgv`*s)tP5twyRw$Sj7! zjb{;uxwAi1Rr2(|o(OZNMl+L)U>+%}QC!uOfy&90G@!|Gq8aiJm1he!2KiIDs`wsKosRI==Za%^1Y}l`{zke^vMLNAnW{m@^!V#XR1}08t;t4T2OfU zz=x&LhdmLr`Bd~NIK>pI<8V|S9X%?RK850@Q*LF4aBZGtTi3iWlac?=QS_#S(1s3y zJLuU~{)sS?$m}32QmiaN=?THMj(8%S1^kjnVwu1UxaX+zJdnkxb_BGGD};=+vDRv! z-;!UBL)r&@Q!;*=2_ALp&q{_!Cqz~R44rJzmU@|%6B8AViVoM{a4dF#-b+tSyF}`T zh8%!p7N{?+KS<8=teb905}c|#ocNDk? zGFWlh-PvDQ!u~M8mwBte#0Bnej_W}-Ak@HOL^GW2@wqlTS*}|P=P|?6f6^hVh5?Q( zE7m%G!LV-8cdQ4!tnf`Uny1Ryn@j%gTY^@{cEj11re+(v#F^X*=ZVh88$@Y@j*4>W zd!c+F0G_!MbJwM{U=o^@6XJ=`dh#Q8*Lc)iuC;;DF z-$SWI$dx*qAEWzui_lQmtmIdc9dp;HymwvS*;u6#<aryDn(-} zgL8MF5nk}TwX;tXVA#pYu8^t|rxa1mi3MbE=#&NLcK19H3r;+6=}&ey{3PBIh6LaM zIU<_S=8$;T#t|FK!>>{oNA9{ar#5{n-4gebh*q_guiSvy1k-9FnEGwMudZTQN0}CJ zy)>~#6(U-66ZVqr11x!r?NPJOGzlA9*gFyi-|e}`VR^-!O-DJyZCq@L_@~<4_nO+@ zw6NB#XApU7iC)#ZeZ{bMlc$yPUHbES$F4pi_g!*9`_HC4sIwUTJ4_`S;bYIsCbUiE*Lancaaz9Dhi8PmQ=CT+Tz zN45W=foEzGD@SuavtE0d!80&S8p{(NkmAW9-Xxr70*JmNvj>)b3l(>m970Q>6Gv-* zzue551fbJMD-2Vl>KHEjOnBKC^`Zzj|;qMdZk zF>sR*l2o>lbs>MQi?dqR&QXMQ+!4LRp&B~M@833xq#AS{N*fzqc<8TRIXgoJX{_Z8 zqv~*Chn)=^A(9?jEF7oh^CWAkLHy9l2|0mo?BW4spf zz1Ik?Wuh@D)t)vZCz?V+C&}iTE!NPrceM&G7V9jcH4fOf5a-|SM`+t;ZznA`$KO@| zl5G<$swvtiZ{;%NvEo+)_^uj`PHz=^ z7JC(p*erl&1JxL#+|T-b)NmcjiY;w=h|}l1&W}YD9VJ@y(f<46TmLHIsr7qCZMr*h z^l|Iks-H!XWFX!OFQI;UWGZqZ6Ql7?t(?I6{2aK_{HeEVn#9ya`3@%X-AoQ3U&+<8 z*aF4tz$Cjh)(sH5g&;3@evf4t71K4LOcuzp{UkL{$XV0OH$0k;1?Cu4hQ*Cud=QLj zSm4<(`5`E-%_+BKOE&_KHBeyzknNVivd_k%*k<#m7B}PE&FJ?;R*~R2$M{d7RLl{# zQ+_QZ!3#2$rAf0Ox|paGAFAD1N8GyHgdJMZvPyodYDB9;fEoes)O60b0nIm&D}8P` z4I)&hPLd6l?DBtmdI#ZHo>j~t1Y>ayf|m*Q16%(j3zFz?Os|vovteGLdePjyEw=m? z--5#?@ZGC7*D>)Bx?FIFm+RPieRD95e3X-Swh&hWkR4Kk>)#$CXmyyTCgss;HLJT2 z_z+5xE_G2~r;##8r7pD24afMWeb-3!LIoVpQ4_v5nSXq5g%+g4!PzgLt7bYm${7ib z*?+SX0XqH7)?;C+#yB!sZg5U+?C?FT(2-y=5I_BWw}8n@$V)48HIWsgt`67IV11k6 zEm`&CrsL#wsZsa7WwW3EO+dwc?rBGBk6w5MVzhE7zS6p7bkkbR)r zcTy*TTLGOo0z+rWc#%&z(G6@U*8D)1B67ueHX9Q{+r>=5R8{uPBx6m^$~(-fi|Tjz zkLUsQp#*w&x@T^W7H-3j>jTZjM~-;}9ITGS3yF2?jtugF^McKhNbjLv7Kr54EhDEm z>7D6cFhar-kUABz3_eNC!=LHAshyd-mj-zQc=p3cEW z+?#RiqL8zP?lN##Q}V%ADv0ijZ?-C}SV}?hz%ZVbQA$2U4sQ>b6nM^)xtupmo&heIDeM@plYi_kesK5Qgf?nPYx z9rqyAw&XYD8k{qiVUFRovCT>=E-U%(aWED2MsuC>c7W70}O{ zD5X3I*AH%HCJ{WiJ7cI=VSCFE(ZThQabXW3G(E1s)C65oKchIxLPsYz->ALBsq6iS zWmVeyqX^te8)u;}IM2fvmlk%3EhdS`u5uBJgrSlmdu2UiXjwVhi5#oIsEY=w0e5rC z(@Lj{#P2~kp1fzpBemg;6xu=X%SsnR$BrH`#T|o%+((vE4V5rg*l@qP5bdR(GS+s; z`ksCTl#41{Q=!@M{vXVwVo%P zC@|DRVp8raV8GNF$B#AgGC)Y+PV=t@&U(zbnx%Ox%#$FmlVT4MgY82F=hca~4$hXG zPiEJQ+;G5N74wJ$YK;(mG`j}ThIv{XlgUV}0E3V~ul5brE36-;SNDT&0SzC+m{Bi}mgAdU}Dxyn>js8DQdS%t0oW5qw=gVio zh>gF!XN(bdnmo_aYTk44r;WevUnAa^<2^ZPUvsKXaBAcJGXN+5&k4%!2>w{ow>)eY z-ZnPxRQl&1$20KxlaDkp8UA}>AMR84Ja_b}I?Qh?iCN~epGP>DY+{h-w~2erBCDD- z!vyud*=UE58)bVY+`Dt(nJR?FDfLoCc4ywu9ot@|gLsTBPe6hdX*6OsiNae_T9V@B zF39tX*k(hCIdJ`M*<&Eu!WOsTdCh&Ij-dS}d0z0y1YcG%rjIbITT~k8@S~%4r;JZ$ z$QSys-)N)fM7MkJ(!w zh??a4_HF5h+9H{~mY4o<+J`EU6I{ss!D(%n4M=wkq82K|jjL~)CR;s8Vwy15{aYvM z(S%eO_SuaS-e%gob9`LFSdgC=8d9}7g(smau_ywYRP=P zIwsH>)2hhzsB@XYZpMFan1Xy)ylml`jmZtnXEJh&=#uu^;Wq}8=f$40QMEmefw2u*n^qHYdpLV*zrAu$3tmcQ3QS zEk|-6H5GuZO!-rd*K(-LehmlHZ-}=Qo6JEf3I{HEuHSN3uPnyWv$fma$g%u~9K4og z*N)NCAAA)>2-gl2y^a?CyS3*^i-XzJ_<&y0V_foMlIj|WrGHYMh>IM8#9QQxmO$ZL z5jQ^XZ{k8|vEmyG@~ zF|x5Y3sNsnE1#bLaktkY62)7&AEhV`Hq zk4VF6sE@6PNzum7IEh1g6>WhA6|&vvL&QqPtd=slOI5p|e>LqR7_|imd{^E|ceu2M+V893kzh@w3wLLVF)Q!PL^2CSu2FCVW+nW9qKDOyFFXtcMWB8saF7pp zRwdh(s|XDe7%2yg9euxO%Wvo1eQMCe+J64U{0FFIsKpolK_Bx@sF8k{MJga~5HkfA z%W#}*vn+yM1vqjETU0v@tzvNIXzo=m+54DQo*jJ?1;2}~{YD2DQK2vL zQH1Na0>x;r;jlMUQq_kv%_yz{<%`#6(zAWx7DKy@CZYDJLqrj|h@9C+$#QGfK~KoH zws95EcI@mJmR$t0CSVoY=^;@ryK*oVeiF%}7v{+Mtjpgskxn=#`AmWG+kQIe{`Ydf zB~^-E%_Ppbi2dM{zFN1_tS4Xb@MTNqNZf!szo~%)?4)+UGgD61guGrRsVKLcVcNcEFfoZlyotPc^I^ z7x4Y(cdkrT+6H~lwp4hEuiXz{tSf}lctZ~I*`Q!|Y|^qDXTz=CD4M>G!4F$hA#}m4 z(3#y-^+H1RAc#0it(p`B2KZVD7*J>e<$A@@(fF>$()4)0eHGi;kXoVdlW(0a=rp~= zRgs_6pNnkVkwPy^SjJp@u73WU(+_JY!hSAgS;l^T5zlEa3%@jl1eHxP7vaxCl<<4< z@4(`C?Rs$=+Ttk$1ig(F;THktYV!Aw9Jv=h0-~nkb24UmgxA)i%me3*=a9n1F$M9+ zgc`(u(jueCgP=|zr8>}Qqem@Uy|?i*H$Ua`dBP&@9u1_L4tqJ)4DSEPs2JQ-gP*Ce z*Uf<;HdJjYl7`TO-iPAv@eW!a92j4&kM#A`8yhP~_xi3npMRJHEK%L2Xd1stCSc7W z;F?+6&-C)CoA0HsDp&uae@@y7U1Xl3T02T&AjdySgDY%+p8ULQ|KJZBoc~+q`C0C- zV%|raG$>8d`Yw>rd_H-J{?*WWBJ>*3!KMm-C{<#-j`IJnm+G%8{G!yx_svwIGWe6h z%kOf~b|0UToku;57hrotVy?pM@4_BLnQdm& zFZY5)r_kLHlbH5py&)eku$9cc@!GPHCZ131lc_8BWx4Kfpcf@Gr3^WbyG|^zH(WYv8o(?fh zH995a7UoEz1>e~Y#>!A>jet)$YHosC+#b;`VR!D?Xc`n`g-m7^E3dduk#e^*EYlDT z7hKYEw`6otp2_`d*p;R~3o@0h$Z?Udow4~(^~Y&!>QYxkR7&B3x|)!z z9jk<1d(h}XuHCeLy8(o8<1Z%`5B9x=M%4CE7P z!@~e&w;VuKBjGoxGsF>EIH9o=UY|8#Zus|;g(f~~7+-p`0>Lo@77>5s&%wLs6d z?qMDw?{pA+Y(ITmyImT8GSKvDIVMMi(ad&<=UV?6_nRj*+xSY+H3f*12-`PCKEfc; zQ9ZV7?D#=-V39Mgpn%?EU5j{dgAU``Fm>uxnm7KYAP_#XQE1w(vZ6+pA#S`FU_85< z372)nMl2usm_U2g8=g#UIZ;%M*(e=!l`i44H3hx@W)2z`DSmTRD&3asbOm|(5C zSB8}A-ul9wOX;MQ131s(r(2;P>Fx%m zgbKNEX2`c=01PI~=T+Q*yXh0G#?U-sww$5f235SBqRB1NIrE1xJVT3XDdmBeZEkA# z_&kqRZziz&cKWRo4v>Ja71@TFE}K}p6YpOQfSE9pHfYcM*`QEMB@@{^A&u(M`pY6F zFVnlsgtTxg4IyC0#{4^syg_<7gZQI(ZinH>ONtvTL+yu$bd$tN*_M`~kB$-vRIEzF zH#VY`cjwfgAonDT(E*rA42SdL_43r91{HcG^YEv-NTV5I52^B(!my)antq`5L0wJ} zV#-|^j^YP0qbcZl>flf@bN>(?5!}b_2oe~X1B#s{70Lo1?gL8+k*ZHE#s4T=7WX^F z{+)z)7?SOFce0~^k{iamHM2JM1O$s1#mnQn8w>>NX|{{IjFx4RlR~)HCmcJ_xvl4zS1se zTQ9}M7$Gw|*bAanlswz(StN>c4?DUfMP~9o#`nA#a(+%&?$@k{ysDv5vFY`YC*O7i zChMHg8Qbi*yU@1-)45$DJo zQ-+A?v~h_z4B@eJ|US+iew!uMphfe79CSZy-Qe5BX-4^CG%(-lWGrVmXK9-U5 z@bNp>x-^By$+wwXiRdw{xy<7tYwgC6xBx(>YsZWvFt%7{@5~G(yX@kdrl*HG`5sWL z-&p=3PBm(r8U>ZD@uEbgf%dey1njIUGBW1E@v45@!xpi*`;XV_9~t?cYr(^>&u=x+ z-w<|Zf)QnD-qC#B*5}{L#Bu&MDn=tE|ErjpagUT`pvHVCK7q71cj=UytgzW~G>D69 ztQG7adY8Gj5-j4TVLI08H?oy2a?|&uIdgZ?daHZp$qUlCud2Toz?P@a{f~fnyujdyPy88`eHr) z>$v%!Z@8D(82xo`52kpM2;@fpG{I+O0l8xr<{%J^m*8Fsou5DbRyWZfk{?-5?F$$= zocCSs8Qnz`oYZRSb3M*-t?nbV1X6|bSXxRkhSAz=oqvnkea1vjfl5t@xmjxH#PH9H zSo|Eo$z|YB%vzJL>Qg*XjD18P2Q0h??HyP;bc~Sa5F{*h{0RTN6#BGpE$=jLZ>rtf zkNzjxLL=TDoG78iq_jW@nD-_XurN9LLC7S)JiV*Po$XZP(%rS{_%3>?n>H)E_Xnbv zdXKmzZk{Eg#0AQl1QviFnNU%8f%@6Nk1>b_&(fn?c`q^Y)<1`3K}4&PM~xTmwhziy zA}6pB3P>0d2|L6H(LWv%Y6S~J^g-C&~y z?m8F;X&a%zYt1$EYB|S7`$?I-VkCq9(YF2%deMMe zVhLM!v~j*!sb=1;*CRvpZXesTKh+#Z;+D5liKj(-sTpLQeP3WGx-pP_;X{l0w68?$ zlg^UmDW9f%rxlB&?rpeWt<-~$%E(Wx;*nF70Kv?1G8`{jho3Cig{#LumEk;u{Q_Q7 zleDF=T^;PHVjP1ivaZ;S+$l;o7n%9Ji0TWE81s(L$f&-=3CfGVQwgz%K}YP>qF-)h z#P>}KbFeygoI50@CUBJuDQ>{NiUD2H3YcqhBzmR{v)4=TFoyXVB}H@0)BZvIWa(Tr z-L}P1Dl|}lt$GxrF`&NrteN;y~mL0x>-;3DfH%XHU(xwU^V)5XJP^rVAxszyJc$d6wS>!OrAm%h?JTf&NpqJ%~)RxUo#PW z{#!iAReFAjP>?}q#(x@@!3X5;$`oi{xqOp@Lcs523p>?n)0Fm**EVa0s(6JG;+M*-kG ztaBjJ8AFr}x~WF!A#c7}5kY8*hm~F4e<7U)=;Wh1-%K&D8Ym5Tk7HNqam-a!SLe`$F zIcX6miwoxFwK}h#LBfuKUFLs|j=wLR4G*?R4jBv+f*K3ME}QyCpeZ!r*3xMP%$IC( zFhBE{P_sO5np06K?wi!GBk#0O(Fth}RV%pEy^G|MuafEInc_PJ1$wy} zXS-+22QR_NDIPVJPwS`A1^Zr`1J$rGaebS2vutYQvW#q!EE5*+P2WM-3< zXsHZ8KNX+KlDa7RpXrnvny0PCMhJT^)H!& zpf}Ogc^6vU@MQCM|I-MAD=UUI@vFhp%K2=gzpN5o3(AW}>PC&);wWDdRmD;KWS2qk z@cMz-Syi_1s_(55w902uVQhmv1LMX?dw#S~GE5qpHA5+?;Oq&wd9)VB`87mJgLwsG z+Wa|NWEr`l*nF=qcw*tfI+m@)cEZ3bOeBh&7dQ?f;xHjM4YCI9KC*1Udr5|#!O#&eH;na7-+Sa%8=GxnqlJS40Atk5=EM>Z~~wvJ(HakZg%D0}&kO&5~O_ zeN9dtCCnJ(;}=@Dlxdd&f0qAC*vw#OQlzKiv)UdLmJpX<=qV#?tCRuaJZb0JwoJ%P z5zBFHbH5w(@K@H$Yy(mF%J?^x=hUGfJhp@a;7N%NwMQ=e>wqokzcIA#{&6URf-!st z={R%B^9!X4)pH_I*RqKfrpmgD3ATjwA9D0>!Hug!wZ+6nXYM0*F z>)>FEWEQ(Eu(R5do<$MCh^S*W6m9}AjnE}<_pnUwDMm#-%$pyWRgd@3I{BDSk8C&w zv0$+|K!MZF8Cu}XC6G5hoV-_1Wri(pp?uj$J$NT6+ z^W$+vE9u{0?wf=qwG&GS9^{G>lAplsgbQ;cG3{wk71UOZ?NHU(Bdhtg7&}U*E*TRC24C~ zw^c-Mm7+N2c*chgso(eTY1ct{fm{0VkN4D#s3`&iergYdWp0;YoI@|)*^IucfTi#@ z$gI=vG{s_Mg@t}OI%$!7ZX6$3i6=eNrW;pCXi+oo`f~i51n8;djHsX;gbOjIl31l@ zIDA>_oD?|wG$u

ahuMEq*gzE+-CSYAan9a7)ROcdLo?FkKQ7071UxWP23bC~XEf zxj)fN*sdltc?RvQ6J>yg&JiftGqepL@+}#2F++{L#(KUH@FhKzr5daizfCuI{yeqs zSN~a2tK7Y;7yf$cb~3(8<0R3bdW{^Ux%+-OEKfE3{kfdL23pd`N68i&rv!&_Y-vK$ zEAevLDhDocHuj1S`7q$h38vtbr6erY2p$SNQ{QsM^9VpMM@gEWLEMIvRH|3mrAc{0 zzL2D@$rhee*dFfNRlLf|;&`C~zMj7t1PwLx{Sry`zo_~K2H*Tue|*rvvlKrx(>>kT zs`;?Tldz41K~eH+*PH@5v$jARbA6}?&&Z&3aq|e2#_Sbw8Nd8bV5O~X^Q5$`MN;h@ z^#7#rPED)DwbbB_`z{!g&)S~Ai^xIT^KZ~Ji4mqy7k zm1(s&CZ@_c+3O)+g|>Zk8EM=(RR zdV^PgwS1ZN1to1I3$&|2QcWZHc!TSwu$#xfMf^?dzW43H9gDazjN?;)s}TQtRNbe9 zm~b>%>iNe+JVHo|=OwxZ+twJO?kM=g&psm5N38kCKP&J532uY0_m7_o34JZqy!{?L z(a)ZWHt)_iz%Gd=zy6dbFV@_k-L78Y3I5lp`jU7a+6f64cyHD^ZdXw&!UJhld5j-%bClc4y~_+sZbg40B zlw7llUD;sOQsD>jemAvtOLpxX&2CAG*1}-9rAO{!MW1fwPd%`d;SLlb?s5Eezg-h- z@fTHzzVo*GZDP!uXd*TnJ1sXOlp4_d1YIB;OFDka?L@ya01r>&%h(>1u~s=v_NI&Q z&g8v4WI?}1Le8pqZ*s?XaJz88{W#BOS7f`~D^?kq9F-m7$b0mQ0l&x#ltFMMEQStR zrcy@sdeJ(pAqQCMAGg?A_I*t?=#}%N^<3Eas9vT}-6pDZQk=$VO7Q7H#CWW0l40Wy zOaH7dosyWaO*Ad>)cZkF95jlVDI;50Jn8oO!W+SIH@B18pD|HYT*qc(9->)9sLj%f z$IyMg@puyrzK-2$_7?;IdIOR>H7I#BgyX)o97}}!&{5UE(zGv_JuuK75GiyF=3`ho z$>m_>b3Z)bYS!Ud&pq;Aw_}WWUdLoX!oW95zmaAWcIr?t3j58$#*>TXh7k(lJvMRV zRvaSYIw}_IiO#;;xXq37w~wq5q>WRx zW03A9UzZqCS7X$pECkz8exht*v4c8wz+TY|&Npa>Y(l@W0d2c_N=}n!oO@;9t-Yuo z-B#`Lo~1+Ya4C*Sv?hLVS1+qf{Okhrr_Qkx0Eu0k@AoOgkQdte(0CWiirU?vl?mng zgRaCASJ<{QV%ZAQY_%!s`-P-S=Q*9IWP4;Uag$aoVI@OUSD4#k7lWsI4CEiW5$CvY zex5I9c-KOgh-uIY3R56C7s-;qf~UGn%7S9X%$R||nYRL!SG(9rgLPZq!zK>smi*M% zl{UgzCUqz8{j9J^JASnTI-=Kke$cBGeCNmi(9X%1M%prr`YiCubiLB*f@DZIFtw^7qN| z@u2>sFO9iwSLxH8EUu{vi*Nk$hA#uocaoR;G?MrYu`UeYkU*!#6kZ_F>m3s1X-WYE zMAHU(Z;C3rFVRgTSrDQgw~5p7@@FVP z2&l0hKRF;%%KhgH%$xD%+*nF?75OsWw-4f8Y&2t<1O8l?yE zFXlt4W+97mQg>|Ya9_??`6QNSKum=WZ`r*vPoSov?VJ>lsN=-a3 zkLLalf~M*J@n(`HJ$i`YZI}bq=gD>j;kBhn5E>o|HdXx{;vN{t~5g1#E2jd?eHEX`o;mzLZo7%NY=+!MEfCLb9*KVQWdsA6PqEG?RbIVQrJ= z7N|mE?tqojx79+`%{$F-nuPLCQdwCO2~t1VD?|0WVf>yYS4O2E*pv!xcQp0Z*gmWuf1)$_ zEn{V)e9y%Y&Y_yLt|^7-5RH`AJE}pos#a}yks`mA(8FgqoYg-B4IY^S5{-tnK31LI z<%j(ut6pl~_B0RNKk97C zcJydB9dkEDFgulay?Ki^ac~Y3CNTcjkj)a#&hmgM{7AS2qjcj}S(ZrP>75OOe$hf@qJFEj7`lM#II%C|zi{-HbE= zlIbcy&`gUkor5+tzhCf$W>W+^e@B*ZM2_OqDtSJ+pl?E8n{QTsbTp44(^5P@KwbKK zmtpx7)vbRL>)dCry=&W(1M?ma3cCl9!9tmZ9qx~#!nU4Yx4-pE_ze!e!jmH{@n$|b z(FoeiSHiVNH(DK$Vf;tmfWw0Z0XY&_$jH!7HJ4^#i(v#~NTOv@&nt5Y+-PYF!fD2p ze({E|44^f&Kyy~I6G?M4xtp|pt)<;`G~vOh0LYC}va(Mh!!I=}RGbvMx^_>$RuK*q z5wvpSFS(V`NdQbakM@0+AtsB8)*~AJ%L-jqsD)%bS0;z=#G7G&C}8yT`Ioivr_TWu?LJ(d4LR$)5v+8 ztHu;;DCM3|*br_BBd8^=8=9rdL8Se`%tn`zvU8C zR6~zWpLbF`=I5|*P#?z126-l>D|CYEC7C&`I~gkHHj!>;c-?Ai;AYk8AE9 zuxM!HQvlx(jZRC#RdiuzRq$f~ehj&wq>yMSGkzb8bPmx&{9r@-J2H_} z%viqhtEX}HQVri6{sW|Va6qny#;-JcSJFIY37dC{k;905>#Ts%zL@%1AA1K*!Ocm5 zplClrB(c^*O;(U+oUTojCGj_j9&lB((jN?ibt*Y~dGQT)rY_Z#H6I$ai8kz{QXS}b zKiIgos2lG>4iKRV*vA@Q8h+9{s_*WkaWdVN3Ad;NdcP=zaXC}SbhlV0S+7nKHhxw@ z`8%mN(0AW>iwo6ifaKdoOr@*6=5mgF0>&@tBBYr01wr{~OR>u}f}Q$Jp6eDB0y%rI zl0whQOb{b`UJlhVXEN`O#DHv57ntcVDCynv|G0Xqur|Y{ zZTD?UkwT#q_aY^@yB2pS?$7{110}fA;_mM5?p9hP2?W;$io3f@yYe0X_x{IPYd0I& zeCD2+YtFO$e8h${9UVF$9k9a^70A41qx0UPjpdih^h@n+ItBh0)Tv$Gtt^O5dr9ip z)OzMoF*E#)oUMwXXUu$-4FiznT@*AxDejJkBHx}qM_;6~ge5`$Kv5sm@q?)!kI-dBf+YBp;YM1(}$MK7uR^T~RO035Ch{HvI?DLN-ZseO1SiDo0U z{+nAjE1fk~6_v{URpW zZuIJ(xtom&SF%Z9@FHE97(qab)G8r*e5&W3yL(pwkIYBBnA64X_gF4ZWYNFzz!XE`r< z)Y(Bx05u9SVyhH)Xi`^pD}` zY$MdtqV;P=n7@dJy6{w<^HjE56N{ydEgM`SJU$j0Q~~Y(`z_X#o2J%O9{q^ECWn8L z^t{1$Tv{fO#=+;g#uXPe*DL#YTEy!BwE3h^{`=E$PW&qmyy-7VM8Z_9of1ZM@`i$& zbiPZ25|>Q$eZZTCq@xIfg<~v>gLCb4p2nd~DQfbKU$QA>5I}SpC7)`D?XZX;&yHod z(L|Oo-ZC)&Rw)aexqP$&DH$jEAaQS#5`$DKPL_AOCb7Nd4ZgU24R8% zQ^8;35Fmg+j>L5;|FWTVg3d1&I93XL2w$vJiD_WoDq3-{ocqq@AYuVNB=!94Z~d(a zb%=ybjUGh22rCAwh3^rc*HC3kiCUGHNysZ82l_TRF^bT;%HD&iJZ8i|{ajlXa~a`< ziCnJ+UZBW=Z~aB|2CrL;!xnhAN>|=nHZv+d?QJ?)*QVACr#6@Qc~`dH%`z2Gd8cw}h@|e!ssFyJ^I!##=CSXOsIn z8!wT+_Gwf~n}PMowNV^YUhOrsC5Jr{hlaF7d?9y!Q#Z=z^%C6JnJDsu2?ugO$#D|3 zVBj)8b`ui*BNu-<4b3>j^bfnBk4?~xC3Tv_7vlS?nbWfd(DcA}75NQRakn&k7zYV` zXyI|r&l}TYjZ1bCxm16M!{M2&w)tZl^jGJ7?%W7%pTaJ)WOyzvdHe%uCQh@Jw1TVi zH~&h)STZ~cRFCLtmIVgtg%M53mZH|(>0pn&+X&izT&AQ)C>ZxF1Tr*4;!VcxouA)04txXl*sxZMn;ez&kW z@tU$)2p%y*r^fa+jSg;}ewVOm<_?x)7)A>%-39Mb6{f2W(T-Vaa(hca9)5sXU5te; zy0D>Gjdt#{B2VkSIB4`e4^;dK`D*P-I6ka_fal5@|c}!JUt8 z2+a^&sF$nH@&c&NbnF-SJ(>4CCyj%RSA|za5$V6ivrByUl=!(98;F;uOsFUudWIHO zoD~_hURkH<5u^?aVw}2GVI4D}BVj#9wxTOPq#M@p0qcx?OsGAjImiLyv?yi-(c^_z^h37~l$u7CdN}WJIbxiZ&oUD4y?(L`K3e3m zrb2paFfC@vcJTC{!(ijpslfMgtEE_Z=^uxq98M!L%vf*VO?4@;V`(u>oCDs|aO=jE zZ*x$0u|kzlmvf4jOP@Qi^n`_rc+R8fMlpy2@^qpPQB%`7%wDweTkQP6va?B6zKdIa zNK&fV3ITVZ@!)O4+Iknypr(6Pd1`XZ?~;xR^|K-|)h3ZqKu|XUKOLSjP{sKw3I_G& z{wwb2kvCy^L3ujjLif*ZJW4EA%ZiL->8F+iVj!wu5;a;*N8an$Zhj@c>(D#d1TLV( zX1%Phrt>Q#CD{z=1zE4m%VMT_XC{UTqr6mw2sC|`X+Hz}PxTkgts+CS8#s7r-9ozD zaAsY-J=zh9=zhQMo?pQhCM|U1wHF(}42~1ice@m*E|NL&vS(JRu*<;9)5T3GsyRuC zdfLZJf9pYku0EZ}Y@CTMCc5#~uBOM7dfRDzH=f8c=bg70JIqXX=f0N?W}X&**>iTC zNRAy}sbTSX+uMMG#FqzFdhhq(93g)9=YLQZZvR_XQqDO4^OHHucqjj_z(#URgu~l^ z285?V|NcPI5*5yCFxQZ2)>h`@@L8;JWbJq(z!_uhZT+Hv7xYUxpUwDbKNFEp8N_-#Xp&RR2;aZ@H~qd ztgm2Tf7Q^pQ)tsKlRY-d^EIw)rR~1;CgLz$28ghro_`y8ioX8t7+3Vq1@&V1@lj+* zf-0br`k>^a_+VZ|lbzq%;K6>ghp6J&_Vg4%70aC$RRsAB{K*K24xjtCBGd?E6N zLvJ~%!M7k@MxhwYbFjc=RSpyyGWrnJ2iI^7R+9LU&PW&~zqnBa*dli=PAl@q z084zrNk?zq&aAgJ!WicHBOLAnvb3$yIrfk~EJN?JQ{DUFpeaLv7>qp+hCQrqTTfvF zA_2|pNY|k}>+o^;5pIlF2&ZptfSz~Mj~ca(_v!*!iwlQtjjCG(yAq<^57I}cjocQ~ zQ+@)n%iM{lf0-P9{NTG4Mv4Q!SPI3Ku8tGeXRE!yXrrY$EPq==`9F@z=^bX``ByEn z7~Jrhs|ivh1)ejqwiwit?r#}zfENFjnZUs~=Z@n6xx8OIzh8P8fw!NK@2G!Kb2v6l z?&9)+*m`dd)16BG#>BlDGOOGy9^nETMy&kD_@&fha!_Dj_G3%3KzICJMd;WIY+q>! z^zxTFYJUt4F{k!$o1o&uZI<+Op7da$9m1^U>5nb#PQMf#`&F(Z*7Uag^%?0pu9KTO zDlgwQ3edXQ|DGaNY_6Z{zp0s=IY$eJ1s|yiH*CpDxGRx|N|@Y=EaWzC^1T**=hozk zm>^znrv+Pvo1d*wWPaUjmOLzQL=5*0(A7goOsT7pcpg=Qixj*478-^^1`&;Pgac&G zQ}c%w75s?xPci)3PWI5=KdCM=d-mlJRp(T!H=@>k-zQ-W-}6U!#ZW7?0>*yX*2n_J zVY$@&-C1T;U96oJ2^W6h07f;Q>WERAqP>)E=zmhZV!YEgzn4bz%TiUVNg7!gvKTK*qdOG*AjFB0B(?(g!?V5TD z;w}onIr=DnQHAQ7X80X;WU`78#VNCCPC{s>+4iO;D1@YnQmi;{TPijE)=GFf>cdyv zP_NHOrklUL8XsXpY+`jTXCZ8epXMp0A0l03k2lWc@Q+fJBvJuTPhS#F-4d^#(?cbL za?0!5L5u_W%$HjZO+8G}Q?x>zrhZ!bBJ=?;#dq~ME`>{KX8V2SKsvyDK)rnmygJCw z{A4@)0_`hj6an!qDya6MJQjtPW%VMrls{Ro=^wrhwec>a8_9Rre3ENbJImfK5g5ZD z;%>q&TH<7ukjhyPX)+)kJIl4mrcjGIOu{5d6_$_Eh;fKJ?-Bc@@mfC}Rp@lf_t{lk zwRp#8nizuTm>G4M%Sh0@8cenn1qMW2Am+ezX2%rV%3y_*fE8mD#iHR~h+9%PU$IF7 z$&PWEAIp4zB9(O@NNVtO!>n;01G`@~#G_6bWfR$0C)>uVOVc<5*rURf+-0vN)2l4d zPA*&x_SW8V?+yl0u4)lSVEWQ1KJ|QHh7oNaZ}inh@wvK?1Oj$?7&kiDTzncuVC}5M zIq&WRl}9z029^l@dKp{J^>w`;Ser{mUM_KXo};{*&-PR^EQQ>$!6eo6J*A5H_~gFQ z0(}J07EkuTr0|kru|leCPLdd&4_AK1OWkFWye*^9cs>bgvxG0o2k?(q$PeIL!!<@j z;c?arC8v?#Q7p%0_RGuqG^-AU8u41U%bc^rBsN8#DTZC*EN{Qcx4Y8}w~^OymiLs* z*yrqp3%@~@ewt+K6>G=8rFR4A=QW}zW2=$|OYM5;`7U!>Dvk*`t2dX74z^V8h2T|J zVzgdV$v%UNv}P$n9Y2O(DKPq*#MqJkapv_)-hOxk--H?{2cnjcZ+~=otXntYh=!&Q z7@_kjkuFYpY3Ck;_mRMp7@E)gzpd8$zpvK>p=YA!+5LBt#L$0sN1sQg>QTW9wy1xW zKtHE|oVru9F1-jEu@QSa_CKMWJ^P+fsO~Z*dk`u5`@iKW(CH45yb+16ci_9{lD+Wf zi^ac$T>r#(7$WGEyctN)0Z7I-!qHmP-PLC?EOu#by>LAw5`7i3`n~#<2f$a94&1Z8 zQJazx1|C$#3#q-G+zhsT>D7{UL9(q;$=SriMWSllXpOO+ydm;u^rL^=F0 zOEawHE2FH*pKD|;FW<0@YWo~QRsOuhzrCJN8_h4zDRB5sRG$6_*I@y=*O7d2eE;3q#qG;UGI&kol z{?f2=eDa(;!Q-G&v>&5K$>45GaPT;3cNv@QOX~U1Wxi+!)@6Bte9s2jjlvaHKa@dt zIH72TTk&^G^Xcg*LjT37ieG#eW9|CRaXp;*| zE$WN=0+|gZ7{YE-{cV03uwVaq-V|_qK_f238y#XEEq~1S`Yrh2(9%J1kb(+Ui~=Mmo;-ka9cFOgUO1C2#MZI*W6j#qI>SEz?@_)+M=04X z4);qm+!=$dMfjD@-JpmQcJ)gUj|WR|{Nw)6-M;;J6V#!=T_aCXN5QZzIMqh{D5q_5 zm%;*dM=h@q;s_C>5`RURHPj$Tp7C!aC=6ve&=YKX;$tljX>-FTFE;Z)(Mc%S*iM_K z4_#0Ji^6#uP<4dAetNi6{^ZyBkMq~AUMxdt1h0;=POOb-Rijr`Y8}0LF`hp!j$A|_ z+pP(*<(sb}{Vh726bQzqT$`h>QnG9N1+zyKnirz2Wo^HV%2#}Fp@sm}!tB~QYze&= zndiHW-+!uaO=h`0j}jPGZ1j(0fRgEEvGNE87IL(0DV}x7`_02J(?vUVk~f#5G^MeR zmu8U}RUXmzFIGMqDCx*Hq?6s5kZs_%=C|{~?*df@OsZIjlLnqjrr*rr_m(QZPq7lJ zig7g}-+kd7r@$)RQ_As9&-lI(CMTV_{YnkB(Mf+rWLL)$_1YXSp9K3G$f>th>D-|; zz8$35R7I#!NiW85ynDBSxx<2I&eSt%3p-OHSTX?bDnwH*abmAkDV`^st;4kh36$~b zm6A+S7`=TG*JOD6YDV#*xXz>ggO3j0DPkG;f&J#`Grnu} zU<~k@2CvfZj?V`_J{&&F`=nc%t^`Wh1W9cm2)|a8d+G6p>L+ggK)mCuQd?rba5H(o zORts}vvyR&Hm*I*md>BN#7b~DG$sbv2&h(`a1A=VykJ8?ot}I{lWFXq{fuM$U8K^Y zFSr9L6)zgsc3RlR9=B=L^}Ft6#o=;l8Ieu+y}h3Yi`CzM#<-JOU}_I#)I*q<)C{>! z&{6!r{?P;25C>TJm>aHju*oaGUth@*i)Yk`rz zAO8`>oLBdTU|wG6V~4+jy^ZwNqmf$7?rTp}29jE@JM;Z!JrkXu@!6%Ii)bK=*CSXn z15ip9V3@gHc6LfzIA&3Q)s8k%9_kcOadug15tBb;NvT@CI4`jddclw@v8hu?>^)jb&{`^&=p229e zF3DZj+HwChDW|I(m64>=k)!WF}W36V^3!B+cr#2ie?8LK+nzl zn8bMC$b2A!f5TwOb{1|(Ew1W0t+rYb4Sj)O$|3l0&Na*-t~RrCKfu_%yuv^wwtbI}u-`V$I28^9fi~cT<5%i8!gMWi z3WoWuGY;-ET*n}$LyO-Xv14|x;=bgJ(e1D|hIH%}H?k|kXEC3jiE(#umfS~Se^*{) zsoy7>H#P9>lnsDD3P1DSMheB^ipr}riid^r8)E;7)>wq&ToFFYM26yO^3*nE zyxypj2gxvLdEDT18`_VpcfyAkuP`x!EXHUh9RSj76L$tHht|Ul!BWxb)_uTgdRUwt zMJzgY_$w)$$`7&X*mKQhF$DNV3a&L|?oEhYn7~pWObS07Ft~0>=AkZBNkIm@>}1Xg z>v4-Qwo}D(Y4|O5s)(s;s_49BZPSNf%qJ^`GrAA}S7j3xI}+6tC~L+Z?V27d)UenG zDX%E6rd`?O9JE8AVNBK27AwO-?qnq4qre;fJ*2>Tfu$_GE-0NJ5E2gYKcN@(bjS?w^3XzUZ)azD$5bC7`)ratHD=5q%K~1iLgeQ$@;2{HUc*ahEo&)IkT;l#8Jt=j2q%S>jYX4`ms| zb1-?*caOm)(ySOhmkCYv)Wv*MvAO%-N6^Ru5e!JrxO zPBsr~J_j>#5HDrA21H8&wh2;)%@XvO9Pd;ujd-#)Q{r_M)$P|`QKoeU2o0XM{GgozjZAZBv0&G*tbjt0`jTa@+Wx}-W@6xTkds(0r zd=vBt2ElD=Cw3Hreo)}^@#gUX7d?-p2DWS~exB}YFC_uQzdE9pW4IhT=y4Uq%;=pZ>cXhD3T*&&y;aD6VXAhHH(o3i@dj+R7A6uq(q&Z zu;?`D#7J^W)ek>rsx{qEP%qxIns5sP|8?VO=QSDgmWQP2@SmkkC{&tNWwV2A#gOcfwcQEn!pqjj*9P^OSIJy=0J1 zo`pOWoZi`7H^g<0wwE3Iod25i*7j1&G_klK^6YIR;08PPINiONM1tCsYalVbD!?>#4;eEk9bEu!60Cz;`DK28(I%l*?XEo18dQCeW~*>0#)2Qgqskb)lhm zc|{OZZu~~@w`_n71MYbG*acPN>R-jdK!2%k4oM$w9X2TE(Y&;U5gJz7V%-JE;-vw+ zIj6+m3^djLCNmLFsYG{)Z19ZP(I2{W@Qr7p!k_i2(a*Ge=ZzwLArZsc)*C&@Xpz{| zQ{|o>rmRCxXMmRJpayg&5jALo@mxVYVdHTRL{=WW1$_f!)wR4UN_ z$15=QP1A2X&_YCBH||Z7+SkILD2Z!wFuyg;9}HjQqP4WJ#9)+k3Uz&AVM}bTH)rg# z`aB3-IK{2GWO$&iB3!0fUN63LUu4rle@H6(_n7H-50Pt#hs|-z_A+J8O|piup_QOk zvg>;8#pH@jF+FkFaYQcFCU=a2G@sSrL$OQ^jc4Q1`?3i#;A2g6?xxhd`B~HOi5$&& zll-ntxc)>0Tq$#62)8*Bl~3mXp)R22!{xnnB;sV<-q%mwo$3C9>RN#}21f|Vy)&@5 z2#tCn34)t~duTVD4Gle!eFEI|&|PU^;=(x^%hilT5B-?LptDWYjB!#YFkewpVswQ!pi7NIWV{QR-d>y?JxSQo2;lId!E8b)9%blm_H;#AyR>SQ z!|fuyY~3j)^9d=bZ$EH%a|sj7V)Z`ud)yF8x4fCnZ7Xn~C}>;mU(1NBvv?%c&LIDZ z;gFqOyXhfvB`+eQu9xS*OL);x35<}FfdpyGdu)##(I_`BmD&U=IEz_sec_OD6_Hs8 zNjDY1t7f;md2Pw()ejcTtju*GP+lA@wg0NUqnwUl&xNL7&~Q! ze=q3EtwFK>`wv>Y#|`6A4Y>I;{l#LEQbDulG&zAcZnrJhVx>kV*>DM2$Ld5uYku1$ zx`29UVhly)j~(lL!wGAdykH5*Lu@Dc9GN5MU8E=DSYC8M8r4nX1WA$1o~!u^RG>bW zJ*e4ieKV~P%^0wJ1a5C+BmBg1(d7@0;K-)2{H12fNawO^<@q!I^$VKtsPNuJIckL< z@JN|0VOIkM_^1PHd0gWCmjv+V8a?Z+Hsy^dlANyrWq~OcmC;{;6|U$NDiwZgPhOmP zMX6|DxGX-1UL3F1#}y0}5Eh_++xPB$?wY`9$xq2&)TTMP5b;(`!9y4u7-xZ0_0H}% zLYviPT9~>BwRZJHP9UPq1n@!^vZ;zV4lVB!#SZbx?TCHnQqEkMAm2bhJYPUg2Ir$K z>CJ`^lNV05A&m!DDdjfmTICzh_~yY2>S?1pJCr>^hx#Il=~M+p2S3=#MrFTQrE|2@ zc$peq%tVJf5$|kLY2~ZwdTIp-^xr0?j-5w{jbwrZo-iCFX1Yxv(Q)6&*r#Mj>@OE#2RywDwKhv;^r~bT zn*c%ENG(k?(Y?)xNERi2 zmrD@bcKQp3q(~;CJF{W&ux^lZ-tg#WDUQIDDja2X1@bgO_j;v7`G|2iwl>P3w9XF- zDvqw9BxwxzoVw`^+_Z8}OAbmSQ+C$u4kZK-LdGlLirD`+^#(i3 z`}+=q;DGJdjI5SoA4bly+V0$3qne{p4iaT&>EvzkzRN~AZnLVmOLMDY%2Z@0ljs0M zDdM*dDtI90rKbJGVxM~)(Q`Lf{Nyqvgxnab`Dg_ zGDo4%Q6TwV#PISqbJ=UoeC%bhnk#2Rr}fv4DTf<>gM%DUt3EBc;h~o%y7#EZLO&qd zX1`*1s`Bkc;{;g#Wz@ez`)7Glam}SWVEvl*QHmD$XQ||@ks&P z6^McoY+nFB7t!B!i-7j<^cCafdQ z`J;Ub(?LV7VaD517YL;jqO3d?L5NP;X3fxqApfR`KGa)d&{Ze(sl2FT;R*bIw^b9Q z^2^0n$26dhe=DoL|9*xyUmo~zFID+I-L7yhKAuLe2NPX;v5Ge8v;~xMIV}*=n+RMP z-yt4sjfL-gkN^G)u5ZdS*nSa1)E#*G{NIFpeynKpM&a`EWv!;Y<*QkbKl{SvHrZpU z+CPK4yWA^ypKDw)_8Rt`(V{ij;Yc2$LV8Q!LPjuD1fx3p87Cy>s!SEE96$9Db~4<# zKqujFEU*|PAdn$;bawM4{?CGNnT_vsaQBLe_Ow*-^1w|T+HolL1I*$m^U7j86uJBk zs6RPgC`A#zdqgQ_4OHn@diEB5)bOr|7bWciOdxu)dpo(l8~kTPHs(0=-7^-=SRB5< z!dOO^X$|Y0p@XMpesqH*YQi+C;y9=>Kuho^R=y1>lakxqXmrUx1EYyM`8-`ILu&+F)9dP z-~~-E6)gk6@#tdFa1o#6l>Mso>FRI>RfL@Bi};D6x{frly0O{Lb=4`<+b1(m(POuh1?WhLT3<+#c}>OT*Q6D z)Ya*^@KA!KR%4A%h+P5UIl^$cY68|}MtyLqMhaiz?_kY_6CYJKS=rALE>uL_Wr;rW>KYiUXGM|K>j z;}!P!ZKx`rcUR+UQ_2V&t^62^OK*esh{+U4(}6Y3VKM%^n&FvsxB>IkeE}cLE;K)z zhqIky|G$((4z&K>2d zRVwN~XiNf9-O@U2_D^J)|?r9t0ziP7&WSrD#^n5brBMQ>1;bw0o1+_jTMK{jn; zC5mD7eVdaml$p?2x5Bc7i1x(LWG%`iC3~7lGHu&SaeG^%1b@XSV_OOo3s3=R_@*l3gi-p1A_><2}ooPy#Tr<3{^XQ`~dpR?+U~z+o;3n9*eqcbL_`-Idw^`@pCtCaPPK?p14{Y zPnhoDZP(ffuUyQ(f+$zb{mmJB3~u~WL*4KB_Rm7IA}2&f{s!-XTDiN>DyDzs7AcRq zWQBN=c-6(DOq5nEelb}7CiOQL(uUtKM*25gzr*3j-ltspC*hV!5 zSA1mGH|#^x!$Zm>HI42(b(!;$N5}q^N}c~gZmiec>ScE_koeYVIoG&5$1hEEoSmx` zR#!_`)1+eeT9NgZoh8j?-TMLaBsG0eTPVr@9`t^E;+0pB<25B>=c^;X`*HhEf$MURMy7pQX0j{=*=Yq0x#h3X8_<3q=h9o&P>9WLs<$X3FtFot;}rRi zrf=0dbJQL?Z+`Rt-)rSg4YUY}A~$fGW~_nxw1Tk#k`%{2BF&8Clpa~u4~F`Co8K13 z{uV^?D0~Z>=Q<7#=Gz{fg}-W%(>`iBSP)OK&R(AAJO9riMh`eb0qMpgb(9hhqZOwz zWnScjA*pyFTp%l%A!q|s?b(~vKbW>F_XREuZv!2tUxR$7!|XVEb7HIAE7o#oj;18V zdnb?3w{Dq^HQ2()Tjv=3^5|`CJ-uwzqpxop&O>sE1MzD6NV~Q0yK=Z&Y?d+r{*)eQ z3t6oYF01WN^N3Hh<0~)VD+xOn63qi zsHucDZTyz0zo?h^iHsaSwqZD~Rz6bFi5Zd&tHwuz&ydXqwVfnen#(ieT zb&BSu@zD!UW`@=W-S3EGX|@e*PZ_6Slrrno)70<5|I{t2)((S8?k{yj(-0Yqw7F@) z%+Fr3|HS}TH<&IyfaZ@i+fckgV~i{^$+OvSRPMPVIV>j+q!3aI0gUa!8*mj!UE~bh z+rRH@%uFR4ddy+@p5PP1#oe%1yT-#S&yh$8qA!0wMFgwA0=)`8YO?BZSQ`DsT}Tif ztk>w&%suX6gQ@0_mYd#fFg*n|C7`dty)&S9F<-SQg{~zjeVQkUC~Kc{1Vqy zkuKgU7SFt0U9jC1MvUWb@j5Z`o$1jIcqh#i)4A6V{E6R60=-9Ac7 ze|56Yj&*zcdI5OlB6MOMJ2uSHoPYN%mi+~%Wb*5b1ciGk!yG`VrC*uac^BO{zhTn9 zc)C%w)L@lGvT>DZKXYpv)$Lsj7Q8MN3g*;odJu=1HYy|LmgSJjeUdKfZ7hz65gSx$ zZTNWU;+ct;Zxtkn81PdeTYnpwM}i83sZy`0%B5UxYrc=doY2WF_)L%^i8)n_>D*d{ zjFX15>!zr0qbNIYFXgn|sL^0!iZ!*^Xmq8t3cj#jx)JkgiynZVm@d&y6Q7ipz(5XN zyb3qsXX= ziu9#NPh2E1z;9XK=G0<2%Vez=zNXEqi*lCU-o!V|>R}kY)y0xXc)0JOW4aqVQ-~s@ zm5T%7@3xFijLcc8{=RF}>HcK7{wGzct5v-ZlJJ-+MV*B1t?T@dIXLv2PYHbRQojX4 zUB`7Ou%;Z?btEr+IHV)@&DC--=$AxUlj1jzbm0Y1Ff`8QG@&7^yzVSWv{ScV+HZhi5-?Ct4Oh3e=;8fBg|3l=ny+ zcPZ|k6Ei(ZW|vl8q9DWylkBYcu=CN&AZhFCmQ&tupOAR!yyWQTk9^k-a^G)TEuUho zvfv>SGW{L~$7`hsocPF|<#&x%A1zj~VpodKE-LyJOp@1HkOQ;}gs-Y7HBv~T_k5h} zU;6n2Gs-^}YH9ZT?_}_={&$DgI~S&2s{>ZwfYWDDO|}rccIxu(qP!bj8PWg^V2=Tz zr(PRD>eavhi2$Ck#gM>Bus8oY+AY=E?5s|Z4BYPS*CXYO?}>ek#Y?`^-C0>#H>pa4V1nrLHWE>4pu)tB-aSky4SM@xuZE@c_( zTJbr)~qDhWW_qB%>)=6ukzpWIKvQ(!O7hl_-!87(-4OK zwkiCqntqb-`0j_=ig>)HKVQFC^$!N*Hq^&Y6M8f`vPpUB#f(@ZnU7kaCbJ?YH7wNV z!q$cIcO3$x1pr4IrNE%P;s5xW6608<9baZo9Wh)0|r&Cg4H5VGpthv^tc>%%63dxgQhvRN!?Yx85_ zlfPnoYeBih2ch>4C&IKBLPARB+;x8MYKMOXn1}3yL?Q(&7KUVVX=ApKoj>mk| zqp$soFTx?a!25f=7aXPMkhSwITTS70yIrAva{99;#iW{NlZ}A9!lG<;`LDHw7ldOR zT|Ln9+i)`SH}5hcnp{6ftEg(U|M;Xo3;k}X9%d>-i93i)Zu=~5WpVi|943b&YU<=+ zm|H`2HOWJUZ^S$CkIwF~BRDMPdulS)dVB6$UfM8Ay*5hx$L$!kv&^zhB&j$&Y>$|d z^8{y#_GZy(-~&0ZeK&+i=0l&m-M7GxnHv!-6Ry)}6LzpWlk7D+_c-hehFd+**+`O~ zUY@nI_11h4+o^78XQBF858XsDk<^Mw)`p_ow@o9AuPOKUpQ$z-lDJ%>=}l%!?i<8L zm$k5MQeNa~DRgQaLVLJ|iR9w4n?B4S2nDzC|Mv30+2wM~S$Vt&CCtphyM-TdPm)8u zq_Wo2mJrd(fQgikUM58Aq9FWncEw4p^<5QE)~Qb1`8Sb4QS7qJ>V{-|$f$1D9Ukh# zpG<^4@|WVXoT}Cx$6Ioly`cwl|Ota8SbZK+WJUL)~xYY-6sPcaQ#k z+jg1hyQOA%_+qQoOl!%o4lSy6Un9KsZD8K-K}^iQam>7mXCOP>KW}ji4rm= zF!D7|-0CL6m#A_%`^u6e_M_mJWQAK#Y1ZcYg;-!o>t)5HcIMg>erGyC71LDKhu;j= ze+@t%&A9t(qm=rkgF(^+6ZV@OARn{3#*5J=CJlC+^D-nJR8InBfV!x%O7g6_@G}Ii z>mM*kxrg|sDE&3t0#xF>c}tq9<1?&8>1V_}I+6u>lHP?V1rbQE?vjL}GB%kpJggU6 z>v;&JrT%uoG=^@Lb(s&+`@rNvp8nShq ztd~7ndF!1AqsN7X8UnZ-7H%!Y^cwgZfGCd|p=^$HVOIxTA=38PvTq)zh^5&;Id3!{fhDLcCDa zsIVF*_~?SVjCLw~_P7-IOV$;&^#3zdK#Tf1CY#o&%eyJ5QoYEE6RF5>aYatT6=jzw z+#9_SBM9GGHkA%!hGzpexkatuubqTY^!V6PYu0cX+AJPgk3-cZ{zGg1rEeQWp;Gw- zGa>noGQgYg2c)QtRXu65KT_RyH1yvdrl*>bq2$_^dWli;Mp#+^iSM7Vh4r}4J6w~3 z))tlw;m6b@^O`gx<6U-{n4f=34)q4bhoSg7GcU1NF`je5aY6==B{^-0A(r-F4r7|f zXAW}4SiTrvTWs<@B|_uY3?aTkn=dV1Ohu870lW^u@>vh!N3CcJ2~G}$c<9wt>WdiV#g)eMMAi>2KkIPXY?Oc zw#dVU6Ln`Vfx#PAEc+$;+01DFK1WK$>!~%4hKanLf{D?*kVGoF_`|Pg6>aDhu^D@c zFk4Xz%S&!RaOHo-c%i}Ev6O8O`}~;(Gn`Lv!i7^B8_NHD(shYgR%d%m2(|)jLFW6M{2j;W>^_f-Ea#A?*-yp{=qaZJ95jU zIy!1^KJ7_;5t#JXP!%$zuxk z^KsmRkZt>v72o9gWi!fDD7hnlGB&gI&chvOA38=w_uE*Mt!7l-b}vF(vbfxJT(uh# z@&itJM2g#d{w1di_CaPdoD6kQOhjtMME=XFY07zibO&G59bM9$8Q}X8f8M)h*5+0J z#D91iH9Rsmj>NJ{x$EIOlx6O)Uv0~;jxt-htgf|Eo!68~45$TM_hRy-3U7bRNQ+wh zbW~=DjJdZ}$0^8eZnhU1bZG<};6`&7t1mVYcWv0sN12?AQB;afY1H>Y{~7`uMCrjO zmsV`4-Tpz;I471YC^LNLWB z3}9}19O5Y!8P`C_-?zFY{Y<;ZVxsix7J)~=`s!I2g^g3U3zbFj*l^AhMaHo}Q6X&b zO_24puDW_8KM%;eXWL23h=zvU<=oOSjilv8uMUHEGtYpzo%;C(-K!H8il3kVc_XMMya>PV=W2QQG3 z0;*5EL*XJBkI-5&+xt~WzFQ-I6#E)|B`vh`>-Y4Z^--5GgX#*pjeC?^X{4gX>JXXD zjV6Ob-O6xQWxU&wq@0R3&Z?vLmZ{;*h{${DrF4F?-sZtjed=wu*7&U=v0YX=lM2Ln z0Yl#-ORmA{*unu9jeZ=Yo>BDcWzE_@!(paCtxRhJ_9sFUNqUX5D7KO0D%zzeN;oTz z82!%Zkn2*?7HWzpQKNM6AWbt-h4NE4W@KYuFL9D>zS5-;WR>Y*YUiztxQJjJFD6GN zGg_EoHOq^xFYbBT17wOx~l4E{D7 zW}LUtF&|YdGVG8lz+oTkr?R!j+jr^+Ww1fP@{M!WQ5<;ex#Zb5agy(Zy>u+rB%nfq zy25d6IfSP&B}Ci-Wl9$}MgOspbHWZ9IE=!g{tUQ#cqu8#mcM3$;Db9@91#WlQ@y*l zj1B)?!q{hM(fcD_O&2V#B^ELp{sZ=5KGxZYY%^p@zSpaxOaK;GDbe4Ziffj5$IP_3 zl%VROd$753fU}#bkdZX#tzoxLr5iyrgl&TF-JT-csh_vgvdGy|zMC|uYi^h$-?s^g zjgYe44&6w;(G6e>9Zy0qnJ3GVrGJbVh6|YzZ>I5$UZw(XQs500Iiqim15nT|3SH|u zy@yciv8U3>eus?}qRw>9!qjwD`X?Qhn>>*T{?yb7lyj_AY}`DhQ+7qc8`wwMzKuJL zc*z-&AwMEB`sVp`W~-BpFHnY<{=>~kv~+sCe#l+DO1Mzn8`t<`LgN-&gC;SUtu*cIj+g)ftZh=;;Foi`6piC zTwQ$)@aX41*4L=CA(Ud|_e@t+dg9;59XQ!wM_-ds4+sNFQYG(W6d&;ay(0FjHr6O! z_{Q@^KCiJ!yS(_ZAoL>&LUg^{vi)ec`c>gHdW^=Z^S7hTok0f75~cp=vKlPh{ z`DK8t0bSp6pMexV+JrD-7}Ew#kgys)GfL^?%Vs)$MGXY(z}VUdtPW9|@TiY{P%w2n z1h<5%;XJ;)lFeBHk@qK&Wl5e*2lm4PG%}v?Ia!y@aMgS&)Iba5M5nbPKE|VLnX0Z{ zbp790VMaef^9s>0tT7hI1scYwP}Od5$C^N9#**#SxtUjJ5ZIi!gHICfswb~Stydnz z7cF!kt!@@ivzY3~^K^F1Do8 z#>XeRqTiGswUCX1#djy{J6a#Gy=c=w8VXnz4^s_#@j|O&a%=ODevKU;4-|GNN-Sq(y#qszhd25X^}3GL zv!1L4I*Z({!VQyuH$%TzKB~qXM1;x!sB{3uDO7@uJ2kGot*XWhgC{}Zxi17?O_3fp zq2E9$!P)Lja$jv^?`Hj2ezl!rw#p|KGt+oRQXajfsPv5LiNoT^eyVAeGfcah-0_6` zs@p6$1Gx{vP8#3+nbE_g!Iv=VY0)sYrEF@vG;(3ZK1?2Oe9Ti|#?3ORwi&m#{bxvJ69uOZ?T@}YR;HGEjTZ8zZ! z0J+gHW+O%gp{<7Ik=fxJuNbMm+$lD2Rx@RTu)&H$(S8WN1BB)p&9003%W6mbG5mNo z3#XriRi%cWPe|If#zG^v$@$Y>MWwcL+U+ElQ2%#&^)M5k#bqFIH`|f&K4yrlS+D@P zTfctdpJP|0_25a*6}6wd@`p>bH$HCQ9Hj-SJi;$fmNOHLu=noUw^te;oyFt;@^T&)jO=CacvgA}0-asf?tg(SDas_#9Z+Hzcu#bVQQz zS0HONWN#5b7n9q|Z}V8DI)@><&rej6Po@+0>c9>P~*nDR=6O%*#4qQ~=WBEsTT7W7JvyrA?x9&mDd)(n zcIiATb+Q5(>Eom9?htdmv*PYCGhG<7tOIW3l`(PvviJiyS|2_o>};fUpkd?%1D%pS ztyca$ry<2KL4oHb7q_Z8dz;^p-K4bLdVtbbT$#yT&ipQFDP*I++q)UDH{&MQh%yT! zJjzKUt1Z|(K2@5la;OmMbbuPze#f!(b>?53D~(r8$z`)^55AFk^K0yUtAI7P>I=eS z99iYHjh~V=^foVUm=I9n&S#R6uS`y|+Ujjwby0|XMvCn0V!VchxzeP`o^I$^flLVC zR~2X*grIS5XM|HslyA!HpA`LVAa=0c2-hcj5VFkT>zn;HU6L?;6{mPVm{xmzH+eB{(rK(4 zXoJ1;TQ_REJ<@=K_yHcZEr;c4oK0i1C?)Mz99*Qwtg-OpXmezvUi&{_T(tiJ<62S! zm1~2|4RHn0DULe+Nyfgj!^WyV{ew22i@#vARu#GYN0H3dUF_nocscGZEO1TMYdr#T z2&~suJ9CeBoFJ26E^Nd${Nrk9D~z(lcT{3EGq&8$qmut&wD5JaH360i3KmK?j0gZNT^`*+=YOcS_RK}#U6a|0SXrHIv4m~wuxY#@izTvE!OS9cqZHe- zZjpi}7X5eABWH1)XrL$?sHo2$EC8Yy)No^ZYWwp5{7QC z7Y5(ig%{W1So6lB>iLVw_Dh&F`y^ITdp4|WS%07xaR;4SA+5CHdiZrN!$f8$iV1Lj znK>#I_5HZI&$}Ksw($${^c{Y|Foe2~n>h*1CAeU-NYVD!Vs6m}y9k9Rcrd9{(y9;1 ztsPawWgqH17Qr`Du#6W|2v^MutKkxl`H5$hFDb_N8prVQ7|oz8Pf#NTZQ92&#Jmf8 z?Z7a2`h zw{1jp4AsRy%1`)`w~$=Zt{AyPXbVoX>5O&4a_Pvx84}q;XI*Ih1|N2_9_HRwkiEY4^dBLL@Km%_dm=uIq|N`-cx+ zIokOBm8TPk^mpeWEiycw&DHOJ{L$*aPA%qy0+X~T>K^S20B6MXrC9}?bqD3XA;&#R z3Rn(y!t%kLh>v=fmWrBr{SPL_7i|Sm|Fk$oP`Ffu60&${mp3DBa+H&S9b;^GNVGV6 ze`!!UfKd&>UL8vTeU&!fcJ~IahdnA`QH)p18>G7$s3$t;MQR1ovftB=$;v|}tc;A0 z@pHHI6+>21^!YADCDmoybl=mOkne6~Zm09?WC9l1`~iA7=0Njg2mOEN`iO)FvUQ1F zo|Sxv(!>S>D=;q7>z=L#@lR7@-CCGNEQnQkhla5oLq_><)ylqP$H%(L5nCgj$cdJU z96Ym?SQpK8H~E&aJzQSA#j!I@ABNFYvVB7Xxl@-EmEo-=>6=Ly!u*)v&aw%_r<4>p z+taGn{jG&#kgouF04>!Hic0bWBYAhSeh9X3Y4PhCv<~J-R9&`CL|4C5JmUzb`(=dK z=TBD5_3lW-EM6fSbDUPl?Pr3$t764dolKEZw5>U6_|c)jhC0PvH*_eefn~Ciu#>~% zQaF-!d3P2-+Y0Iy8|6RbS!{&dd2*>$bgriEf{+NjaVVJ=w}7)UwIvefkmSlORr}fH ziz8hn#>EZrQQ3fWgCh=MH%MlYqRtEH4}+ow(s}SO-FE+~i%%dij3B%H(f)fB19d|? zOH?y=uN>;qt@Tq8-HC=6k;}p!o(Cf6EKzbXb_Qq)MjNgM8dL8(s)Q>L>33=n!Wn66 zM!!7fKp_3ZyvLZUM%t}y3cJV3BV=iEMoB4lCPvA-lcQ@$88JIqVbDG?Eg2`^L!+yq z9XxqzFc9AbKpW-Ux%%OD;_}DlHS=I8(qS^zx4-f!%Vt+Um!$>K2?FhQ(`mT*&noWJJFElu2n?@knyL-=>WXPK2&SI*)y9xmsE!E2mSRpAX1L*VafnVEZ2>{~H?)a7s zDS1#zC{ZL4Q%lxFpI2?}`gFd+#NhdJjcxxy#K z$;$ar6sL0ifqnAMb~s(nf8Z07@b3lwoa7itnS@O-ySc?#Yg!$vqAtr9w+Yn~t?(Rl z;fh~Lj0<@5C{m+b#ebHMtYv9-ru2eRS(y#jNSdh^XHz4-+CqmAfD)%}ItOT4kT-ruDFjZdwh`AmLVOh`wLTd@qe785dLmiab*Pe@4g>Ig6wv@6 zQNhpQ34=fIJwe91+15y?-f=p1ofNQOsMuywk(5G3rm@3+j0&^9n7tp`nGYeH*Z`SFZQvZtU z5jk&V3YiI#>614!oc#*b$%}as;_p}G<`jA}TE(Q};j{Gpu!Q|Me-9WWh$G=Y>v>q> zAo7p3d%nQCJv%{8M zQa=~VjN{LgYSt1mgp90o;$i!nk&SO~Tr5Xpsh*Z3f5wvqPfX{~$pokiiNAv-Bg?c2 zfhUZ;ZLPJKtp{XYbk3=g`N1~a~6KdQaABN4M5haDio z^n28$UUac2xR~{;TQss7r)&s(o%zN-M^P)VeC{U~kKq;Xkn3J_j00QL1n(C``P&g@ zed0}Z!U6jaK;LWrJD!U+8swr?D0f;-`HdPvgiV0Cd$CGbIQd>W;jpkW5btTkNrxhM z4s)#;Gsg+-sMYjnhnWC(k%7rcccl%f5(S4U+_gg{Wt5FNs|7C&tdhf5p-)z#-8xi# zg`O@wbg~_NBNr8b7AwznjUwAQ63jV}2}hK(anhEcM|hbllAD{h$SA4$?bz>wGS3GD zMu&cPEdU8f*Z~wNxtOGGr@SW=*5Z{+Ee5Gb%7giOg^{=-LlSsSC<(Il>bAVEzZf|h zqOK;jOEL&=0_fbvNSmKhcunTt-?FP@m!>k`wgdX#d&m!HIdBu~G_XN$h{#JqU(R%7 zK^psTkI=XkC=6XLArxDkYQLO~&H5 zH0a|hC;CMZ6U3%3PZ#N|wlq(qgV0B+V+;oK?|C}uhI~xg%oOW`&)}5~3Z8vpA3~vN zshH^mdk0bU4OMD0og%4Bnj~hjIooO}JDoaKU_i;YQ&84P@BHf=l6^y^dgArd36A8o zxt=ThLcT`|1~90&6eGVCE29AdW_1z>vlN7a7}N=@E^TD$&PO{pmJ4bL*&u|fpOV^3 z6p4(lK=DjTvvYMBKr-jv`GCICc{(`V5I<(nDkpb5H`rOWC#nWf>HE{K?vt1P3Cq%Uoy7R_Rw<)79*?ux~m$^%gOu8JT3_jlEXD` zyM9k%0&6J=4aPX!H%-cRqJ@SmlnKWc((itz`x=YUIYdnYA9sK>kEC`#E9oX$*n!#A zjr{o&mv$M$5gaV;e+cfe-D+-kd&1!fksLh>%if)Iaz@U)B^ldc-?(pdiE#l}1o+uG z6@M=|9sgYn;mZBGG|-BknD{|8KV^tm{gmWlwI<@+z@z#93mYr`cRkkmrr#0a&iDU< zVITv;SYdfkHWSb8v>?e!iO|@H1;!6y~Djbe`|=OUU9>oQh>KPEF=)* z6#QT8Zl9C_a>qI&BQL59O!xPH<1mBW(EF`WRO*YaB;@iLKa^sD8=jrEv%JWxX7}S&zObMhkPz1^NDHGB>(`pH8SNmjMe*?+&iLZ8P8hT0boX zG4z!XN-l^~RZ(MXqj%^@S?7=I`OT~-)~+j941DUBd5t5UP1!6`F8=-Zd-qvO@&bFY z4-0~Ir-@nbzjHshBkK*X>xCr7pviIfV5jC#&Bk_rvSp4xSmYeD>YhLQjfB zgIRu2Cmo*Myy3CUvd-ZhFzLwZzkgM|&T(|Yb;xN!Nf}+gvS|+Lh3d3KIf27H`V{)t zkfsf6hv8-Y_2r@X-oYA8b%R)OeH}c2$1VA1a@bKculs<~q}&@+x$Hqt(T>&EVkoE& z@=txuDUde-o{;{zSQLH!l2Yh)!Sxi{3G<3GGW@JGxFlg#$Yot1VV3U!l}?%-?dDfZ z;BUFb*|m^^^^>Hf$=HdnA8_QD^T)^wchQ13IYurmgM#C5G?*4vH>?UT8q%<>F}1lU ze7t^`Y{5&CW6Yy+m;&SFNch9<+wG`%8U`}0N+)GC^SlKImlh5zgLMba2$!LtB}beF zb{nfgw-7P&j&DpuHM|KO|7JlhB!y(3yrTnja76U-@Wdhp4~QRIWXu5)kkEdjl#T5BW3FK1e-WFHmUnk{ouT5c-TdCP39ZD@0XDZ$q$SGewHK z5#6B&q%muuAE~f?U*0jy^`5%I+DSkkqj z6eZQCl<+1@+SYM+sNEqo*jmD~YglvjXJy~G1r+UuIBJmi?k<>b(yqX-0PDhDF~nXQ z-6ZWAVcnFK42-5odF{m38Li`U`zd#~0Wg?FKqIAvgS49u`|@r0DaZc}Vo_k&S*=y# zsrZZ_M0Q~`(mu!V$snVv*V`<$BNBfr!GMMjV=m?|i^Q)lF^?ILEMD#0-5sEmV@gie z3;?x>`dQV$0c4(WhEG+C>`(;4g9pvc17k}`E{z(_Yp&J|^QrIcn2x^5*1FbUiQ}VHb5q*el^W&itPpT(XBt8WQTodz z;%fV>f0YG&1#W>9)0r)$oiKZ-6UF{4+~0OU$!N*|MoEk!l^1SZP{Pb zL0YbU!z;NX>Z$welCXlu#VS9vu7rW*#uzHMCG=kNe*;S|E*scJ)bndm z=ba=MCeHH#V^!x*^RBag7yk0Qhi)06i_mIBr)0y2K}-$O7ws|M0@vgb;Iwgy&9@(h z=K_818K`-5qeTE{+6+tH2*xjDv9jHsi*~m1Aw!z1!*{4_C*5(UCi&ijYeMND%6ih+ zct$6o9`3IU9Idy4!gYVg&GZ{#c zi?1gCIDWsA52!_Eo)rgjHO1~)eUe4(Xms~1 zR#V4$)mdGuuQ9szMc5yuko7GT-=w5cRry+2Mz{sQ08?s$_ZWy;L1~jR^vlqq-|=J= zx)k0N-Fk85r)CL=k0$qDktXH`U9_<`EJt@)pDv0FbfTrAl8df_VOYt}dOD7O%yBQ%Lv zX@g^z1zi2ICUO|>AB&^11b^c$%Bf;Kdtv8ai_qR3)pre^*Cp9l3XTFB643Rkh}hC` zhd8l=aDxMEW<5C1O!8H|h=ut|NZ!1d~{mHi2%dUJ*(bV;D+Wkm}m+|Uz5Ca+$kLFmiEHBGf{RW27R4aWPejFPI zweztH39sBXn~Af|dH$J?Bu`^^$gnKGn!lc!hi;eoS@! zDjZdfoBU)N9CpHda(wDl?=lm!3b(ePRq%(5^=kc#Z%E1xG@-mR5yKgrlFPvwZiA zjc8J^aKoislX9>+_?56l&U~c&G#!W2kiQYZxLqVjY;6I9)=jEe2tZ2|DWd32-qBpv zSqXiq>{mjNlS)_wJ5Zn5luq^rZSlnP&Nx2Pk}PqsgqU;;efm2Twj|7X`yMe%iz32f zB_qgIFK7>$VyH)&ag_2hFj|6ZLVkqGIO#OO^vR=Ud91AC^xRx{!rMpH`embYh5zBm zir@vTjp*QStg8~P;7}}WozD;uWh!ViBC~V$bh2l`?^1t0@U+y4Z z9JUkDFil}5#{%`S&%S!{G(f_8Z77EaMfLIc!PBJqC+RZT=%kKZ%vtg>SVl3kR{V9W zb~YQEcrpC1+1~ZBJXBYS07?AxY$+qayK{JseWUE5EjO8R$BC$>&~c%BI9F}j8*|dD zE^;AAFlF>g#!Fq6Kf17C95#4hKfi6$LR+M_A^eSn(yg(#qxKx+o>eN?LOPQ!zy~KC z=Cj=QUNafKAKF%;b|D7}YSAW0x;S-KqW#GS6BzoiE0JV>T?MD}JYQB|vQ)v;+MIJMy0m^|$*@cLCBAyY@=By0RvU^^ius zv2@qSyoE4P28un^9AqOGI@f^(fN`O%Sk0^o`$DNJE8RL7OsrmFkMY>VH^Qw&TL5Ko zaSZ7|o=6?8K7PyqDxIqzDg-nFDQhK1?UwKxFcM0kqyLVLae1VArJ!HWDP$y~wsG8C zoTU&Fr8voZ5F!hs{FS!0GF7)T^k-AT+^rR zphIc9#U`ufsu-~}__^L1X^cf9E*+}Cs)Z5#oUr(r$(R{#Ikrf;pLQlyP&b{k5A=XL zXRG9m^1qi2dT>UM5gJj~CTYHQyRA6NmP0y#4x#LfwYPqin<4&A5#6x8pit~ELw6p-PX1LFd(-@lbQgK>{GmpL{=(jC=a*`R z$e84eOxs+Qcsi=5?--J7`C!sliv$(2MQ<1q3F`{fR{}XFD*Su6e%hq9C1k3-$aB1q zRY7cc1Zn!e9@;;P=A|KThP)%>#dg(@XrsO*EB4x?dHmjcla}5PTebN?;<#~1Z+1QG ztTB{Ik{>-OYdjQ>!qF)xfrwt6!jMu@?4Q?}JNU~0ro(abFU$l2>0wLRh$%`8vp;xl z$3oQJ>q85Lp3BEf*QdPTNuWhF_aGZ@?L~Or4@*=XUva7l778p;e6{jWrI2@ddDlYd zi?#=^qhG&IlJ~^L1#iF$XiqG7hz6)R)=ZkgL&5`**#pnvDLEw{UiV}LR7MqpS%qRd z$}rMlw2)eWMmzpV|9f!5Sx8Qk4sK-@s$CsyiR04lQsjW@dtrUQvdq9I@c6`bYl?(U zf=x|c@EXo_$XH`G&&;FczgMSt5wj+lamv6a>1(-Q25ceEQc8|5OMfyiW&!wCYDmhE zCV4__R@ba5b-0h+*pfc}Wy1z}(dc`t2k#(Axo7)#D?19lX+Tnu2gjIDWsd4ayD*i7 z&GOiNSq4ayTLvk5AqnU*IH^X^Iv)|$w9PUhs^VFOM#_tNNpfVN)bH-X0ME$Uv>faP z#Xn$V)t1M4-^X(Q@sA-_p|3r6FJV=0+({*{M6#>KMQoR7Y!s&^do6HCskHwaUer{1O4?c*$<;ILM7oz?=W8qfss}^*%;@}X8+rW?i+lO!P zJUNu9cdwyWvYmrVjFKKpCDiUqx?R@D)HlBTv4rECSTp(@HmKH$lewU0_=J3>oC{x6Gr6> zJg%>!wYDi`aLsnDAF}>Md-!XG!fIZIq#4D6<7Q>a+H(p{-0s7%d$=7v+P_*;f6=d@ zjMtPyUhGwa+oZL%8#JL(MF%OpQq0v-LySGXQm}MUT?Fm>=m(Z0+_FEB!3CUh=ar2# zVlHnx$>5EuCY4<0k&+N|<4lB)RNTDyopn=KB_;--0(zMZ7%rWcl&m?wXcim#BA1(V zNJi`bzQ-y1LL<IZHLG9z@dBi=-NTGr|9PMe$7k)bV0 zrl~Jd8{w)T$pndYm8RJP`Dc4I@qgAP?9?#)1-4Eu)y9`B!@IC`=&X%(^Lr*zuzz~| zdbS-qBl9I?3qK`cXkIn9_9`)n6!eMQx)BPg%p@XhB)@M`m(&5>c7NKYl}n$+pr8`$ z2NZ|9>ZNXaX^A>%qYUfDxfqadqjZJQK;I4pB@I<*u4-F*%j549jEOI@?P;fYt8uv) zIzR3$BW)&jHM&J0C+T>pS)_<37i)tQAZFfB?y;IwMz}hdywBR)Y^>2e-`%R6C+w_J zo33<609CRV;SVCZ?N+s;=i2&-;7ge?mQMg}ez{66=@!^g(B@ig)~2`;v#7@pZuZs3 zZoQWVfOLMzFbx~sCuN%N$SKB6xreGPSyFNGXp{<?cX* z-d^*CuaehU?hhj3e70;KPl`lxbQ06mAjk6Z89f)THn1FuxByVZvC7|eLDeO{7KNA~ znY_zt<^9>o6t}WfPu|4?BTA$_rfFN);|#hXCSh^__|XtZ@y}fd*YMrl&cHV&5xVWH z6gX=IFuRj`gxD%_L;EfA5OK_2TYcsbi>oP*)!4*)w4c+@F zEf*Uj#NKTzGQFD__|ypP3#_@ml#dyRL80xYzkOVIj6YAFs^en6C5IcfqrusZJ55P< zY!2}hu69<54J0a6G|R$WRY>7h`45bDXkkq|M3y>V1X-W8vMcRfxw$b_p0y+g!rD3D zgSmy;in;2ctzX4|MKr>N5 zAsO{IQU06fuAS%lg4TSWo9{$}%73z22)*Pe$|LhdVQe_AW_D5{ zYt}!HHc)evi06ry{O7(3+v^3l@;0bPSWKrh{JeTTBE^Hf&ckE5oo_m($D3h1(4x>1 zA@=4!Je>HbIUwfi#uP`8xQ1BY4;LExUR9%uS1L=dlz&EZoQ*WxghvHm;4crY3V4F_ zkN$$)XFi%{MWx87z89xF&WW57Iw@f0|8m63o%N1hfC)<=1{JnAHF&we@=&NKltyi4 z`@YnrY8cWO##9)k?a3XZ!ylzwE&Hf?eY;(SC8kH{4j$dI9{>7tf{R96hT10zM{HZ7 zijs*TPXa=v>+K9HUtW zF0enb?qCT5oBYX-mEj}F4K5p6;W#5QzSD9KAJNigRilP&M&u|~ltWj|`2!MeE|poA zgRE2U$N#=(TxibFgHxFoE{1~`#(sQE*Cyl|YcprN)Dc3BX@msw#f0` zQ+@%n*$>83Sx>z$S=zH09pPD74MONJp9BR9*@p+1CI{ClabUu1-3^xZXnBxEYj{bkM_yeTh2JrcAKw%$5t5bo_Avp$ zW;Y$=X!<X zTXE|gcT()*r94Y`c<>t&LMoZpB$KjB@GoDtyz00KfO%_SGPj_ozdRIg=tvd9jpgzc zU;}T4kWhHKOHb@sA|iX5%jtReZ_t?7O%JV*Y~o*-Ox5^O8Gc)%8Y+xc#3{!2Pdkxy z+PK1KYetECP;TqM#3+;J&yI3&s`MQVD&9JAhRy&MNF?(kr85QW8#bS%=d_fy^;K0U zwp@N7*GJ_ErJ=IWfLR_2fcksXF$d-QkbPC39i1&jDUVMN{-+=;`7RbCV ze}|ASHU(Tu9b5a_|9evWl40&rKap*@f;89`Qj5{V@R)iZHi%6K3*b-aSl#(L{tHGh zxW1RNv6AW3u;1#a;5lOk^w~%t|sJg>*_T7o1xFPd;rt5ZNm!k z=WZd0RXt?qUL)?0fP%m*pgPXENa(l1^6+ZR8a*)q_#SJ6;BKE3*@`*$#`pl<$~R6^ zcKP^Ob2sh1UCrb*ZE@Jr;osGh9Nz9mkG%tULrT6CwSN+52~gWWri>s8-QYhdjFWnyd5oAZ6MMOKq)P!rg44QSnTc zh)f=}@a$);KZw}jjT*ItS=7NB>4~{JZ;u~xV^n)~ZBYu98ml$R=UT>zzsANpDp)2X zk^kZG@usXh<V?>vy~GU2~*dTyZF{~1T=>lu(xU( zsi3x+vGclRPCwE?ZhkkT+Y@+u=M(@!EEnGrBL8s6w^|Y5Y9J*4^$6eZ9T~n)fZq#N z*nls7P7J#k?)RgAR`CEW>`b69&c58m&=sQ{ysO!ZWh-zwu#ZoOnv;opA>zXamn|?nBy;>;c(52Jhz(% zk^H9f#`9g7uYY?~drRl>nyGWXtq}SRDb;0Nu(cbtrYC9F# z3(c;^f3~+5NSEA2(^_y9xqCzP_xN$&FqkC|c+j$RTH-e(Iw?gT6?L0SM-KZK3WJ$o zfjOzn`kjM*)+OW=cMmCwkK<-8&0E>D?3!;(ecg_7tsqcj7Si6UNK5Ia=Q& zH9n)sB=!(3@YVsQni^S)o;_<`fRFkxM2R$9)Cq5I{r)%2A4kd;l5?DXURU(Nq_$P> z0O8tW7c%dH8j~ZL%J5H>;{8F~-7wW<=eZW1+U)c7;RVEtI8!DjZ|$(Rp1EG^$ylcBB3(5rYnRxf#6bP$^**ZitO)feVA z+Lxi-hKeJ;5HiGcv4l&&3pDTjqzTPmNwzbqHr%_MkUa zuJ2&S0(F;+sF-1ZIie(ocG_v;VLXf#nC-!?ndERoQJQ1TE9InM_d$kt5;9e4t>hSA zW_)1MwG8fm+wGd<53-zpweCv$Pea=2J^%7<$~4^IN|wbZTDv z+c3l71$Q*W{7Pm?_G_%prnRp7*;;cKv5p7d9wkqOx9 zDm3?`iLTG@SFN4$&YS$ac*mn6P1-%da`l?|=^>Hw+{fjL)b@G_wiVtWD)FgQ?RH=n zN&4^mDqlr>YN0I@E=W~!C(DfBq+S?PaWHypNKblTcpOmxCGog4xRB~ zVD*@@q2pe7`b`6L+{&LaYz#sOWzijgc@cS9A4YXnM)S~P@)~6AE6QaCR%0T-nHrN$ zG-nYoJ_KQ>CdH=mvWv;o%E%&o+qSF864NZVE`U>inF(DQ$(A=~*wu z#z1O(PmGjVPL-Q|wzD|)a{L>2?c$(Fq07ZX#oNhIBY;uX&Q?2bZZ*|TTg9szWXRc= zVoNYIt@0i%&K6m~9OA-(b5S5RU@n)6Nw*)!zTl&nyID0hw2}!3tU$YvcFfj`8Bom0 zvk`ESOh4N?I;8xr9RgC`hqw7eDA;RK;=i1FSIq?#O$=GggSsm(E;aLeQ{Lx?ZNjyU zf7Bi#>5%q&M^G~1y+S}S`i0&+(b>X4o4S8E1@J@$5oA<}?WUi*huxH=AZtSF7>(O# zPOY)`nZx~j>l3#cyQW`>G9q!}Czx-r^iz^#{#iZ>dhXY^WQ$98N-CKJ;k?C(;olV6 z$^?1Joq39zrpxiE%aM{pC*}8}vA0Bu6P2Bx`@}bhmT`0=?%G+nxg%W^@ps~m9+4Kr z{X!p7xjhk6lk@?W)`v(oDCYK4Wuyh55ch(9jVQ1H4PmJ*>zt!N&@RF3-BFdrP;_%y zz%*W%`6_Q*?b6XW(k>>+M*HNL?%F4;@8k&962(mc4B%=y67bI2dFMvBt zxd#xBawluPS28nFNX(i`vT9VWc4@8sL-$Ap3EIyc8tha!+P3`r`nd}LDFmLC?lFUm z&o*NxM(v61sFU_?wGMWuw$2nREr{4qXzn={|4Mc`7i*2l)#3{Zmm21CTg zsq)u)h!CdpD0e~O7Y$^A1qJSIQjqy}m#S^SS_*j3`gq|omNf4fZm5DO(FTo%^->Kh znv}I2fzjI(MU$yWGExlg(I+C0u=JXgVcpU@ryTTMX=*~7y&4fzFJ)2myyssU=lRZ& z2s#(fA5j#TvK)H_-v6TvT0J7dsvj_%mNqHxGvfkJ(*x164)mirnaOVzATJdx0pEEa zO;!!bxQT0Jikmr*(~5c}yI>i+3yUk>dW(tOUxmP`@0gXZ9F;~E9SSznX7&r6sy)Em zEYq!JLIl;tQDvmtBXu%kaWq`UM@oXSilv49<-{c})P+!F97x}&gJtZc^M$lfDe8G~Pog)GWkN_K7JM2!+ z>&$(=j*Wg@V!h7fn-Ox@>6Vl-s0~Zm(wLqb&K&uG86>Z>*V#zbG82C}#Wy!ekQF@7 z?Jgr9CK9rQ&kEBjtID_E?opq&}{5#hU3!E z9&=V4(8n~%gL?8h!6x>Em*QP-{)qU;z}Bp_Ef&LUnJN`4Td+4QnQw|K<3KUO!$yAT z1P>t#IAz7{kYMt>eg^|s+kDu{JKE_Iuq@&=0|w9zrcS?J?qb6E8N+cAV%HM4)ud0h z?qpWX`ney3YXA7gJ?G4#a*b8wZ^H!3!X;|kOSsLcj<3bs;7mD7EH!<#M()JZcpf zAuo#)m)K6#dnws@Gx8oLh;RNO%^J}dtj)@f8!fivR9~lI>;2KY@uKX!@O-|zU+B30 z)dZrSW1K-hH(AfgJ>D4w_Q8ZS+FK-^x1q*8Nu0>qW@@6uQvP-*PBOWmV5yIw_vuML zZi+2hd}rsQWxA>+ZI4pHqq|60u3$;qtsy;s^7zV-3T!0 z0+!`FgVac`=r(@1|D13^r5gN@Wo<0b=4(gPZNz~BbD!zoA1T_D&F-OQ#|*~DA|-G* zBMpcsvWs<}W%iqKhp8fpvQDgB1OxtozI_R^PUh7QnT|yJZkG)x8ADV-pfrCN zx=q_9D!I?2#bnh*A-dYdLBFExuJF67c-%D8HoKPXxa|G>q)GOQ-?QWDh~Cvper#q^ zQYGJSG}smgI_Z$?cgYoYmZ+N5VqBKZ3~@I}cM76FlGS4)L4kVY+f`(FdCV@#$5Ito zyhWJ&I$7H?cSLe>A&7R4A^XDB3b31I>Sp2c+qk34&eDkUGOpig72B&*;^`IFz#43X zOIO-rg^XW;r;GNn1pme`KSqS|B?G==5K!fjp8>9vb{v0o z%q7@>zCM$~h8Ug8w#!eNc-ufOxpY3DKnWL@eO2U&HI^IWLe@C@rg5k>AB(5t{QRq2 z_z^H~N6_Utsc&NF5MY5EhFNI@ow2UQy8$M~znS*~71Q?F`69SS3LoV{)98VmGXAl; zDT=X`IRK4&#?a+)yLl{0?byCYH2BSrxQG(Hp@LX9`|dbJ|9JeEh_qzQ zY@*d1BA;g?%@4mu5dJFh)hU{kNX6604&I9*1Q8@Dfm?wzgnOIVXuRZ(XEOzA!$o?& z?hKZyBBD3psP|Yy?n!jRZByIzPS%{4&P}?zYnbU3bqrUi z05%>GHeyoMaQ$`dVCucX5Z=MS43p~)xZ;4L=q8?DgiMUYg$SM5_hVInANALg&&?9Q zqxB#U$@~p$Z&H>ua8Lhc(?}8Xl7vi}l#e7WfTSVWXq4FLCJz6Cq$ci)df!o@_rB0o1gYbkocazRq~Mgr*7s^y&7gzz0Z z{b=z_7;+6-{BL>izb=6#&KbGP%~nAJmm=%E%u-%swPySh!n#;zwd)dLsa7&%s5B4N zE(>c(pBpAN*nVzAnG!>k5z4%`9W~=!snz5OBfJ%s zatijhT&87o1x6a&UhA~3IUK3X=$uE@ zs|raTmojHrE~>v-QJ`{YhAc_#Sx(l4`QyAfQDl#?Fc-20uEJd#ob>!iFzX+_Cd+Nx zuZ2WqCXk5-G2w*Br%MqJBw^I|)7E!wOyn9dABl_eT#LdoPJq4n(hDHUDr&?|wvstT z8Vs~Nw4EF$!K_i$Nj8*t*~M2W_Wq_pXuotMjmWLAEIQzyLUZ|& z0uC3wJJj#{bTWr>j-`&xM)O_7{J0hv=>Nuw!o*IjWFVudIn>L1IzLgk z$7A1OUz@M4;Wy*POomgrJo-NBkbczms@R-|mgWF7RiL+ExXzYUx<#i*bFDN=k)`O z{c?i<(;{AeiHgiRPU_PO)tiT4NqGz|oKp{Qtyv**_v-yOsSBT59E0{+yuZpbQ=bda z<25(fjr7$3F)JT5{Kl{RZY{-~Qa^=3oBPw$v8;Q&t;w8zqnH&RQ-=u0sXCLzpS>nP)CWrq4 z7@X`hEwhknsjp9owdq*M&irh14os-k@$vpb@w@cqLfiOVDP)2!CMkY-g1w0lP!{8A zl(w%InuI_?lB&5NmGkIal?~ZtT<0ZhV+cV)ql`45!O^xxO6biTxycM^_~@lylhCM~ z+`n$^=rvG?XemM9LZnErn4+`ZW(AwP^zMUSbxfc-Av}!k`ADg^o^LXWSP^*mwp12t zCusDB4QP}O$In9@S=eh+r`jnJ8jfF>EL;YtvAA}sXTdYRF>_a}8WB^DX^GrQEMb|> zdy~zyq1*BMDUfekS$!Tz--+Kma|q4i*2%bQ?wmsg8VrNNxLKK6e{rtudm)I|$Rw0# zGQLIFkjl5!#GOZ!{4SlRH8C>VRvYjUCJhlObw;Amx5B6XPHGjeT(DYyi}d5*zd&Zt z(N%(Q8}&^VeMM^PFPuHzSI%%=Dktj5vz9S(v2H&$v5gPjx#T9ukyVat8UER+HlQK> z1_YF-CJ-4s>*a3h`^U$n5E@nFFqNuZ@yj#w zX7EA%M6qTu=JK%fE%zcZNaprM{jL?(KX?WGV9`LiQF(>7ft#Rh*;dYXo*#a&+eZmb zDMk(YnLb5)r*%qd!!TkvuYYki{>l_z(p#kpp;es*e;dfXfKoRn2Wqm8R%}wcWgl<( z#*k2I>fQ9)cl-FMv0xaP<651+Z7o6P(@xrrhMl3yy)SnPqLw?*>D-i|y+BEcaLIo$ zTt+(^4R*IanP#(xr%h?s zM_iBpFb&lCk9wHg+QQPk0h{!nef`ttQEdcT zJx{whjOJRgF-EKn**(H18SN?X@#r&!~ zF{cv_vL;yE!R!Y(FNK!*0Z4rvBRA!RJALpM?AQl+66NnuW7P8%`CVXivx>dGz{@LT z-G}E@&q;3e5E5nOYka(XRf%T1{JOc>{y+G{pl4IjEFaHFz zk0+}^h9l2qHX8@bby(2C*{_imyk3Bg7~wH=P{(=}p)Yk5uv`_8ca$A~{iNmYIHC58 z)6=IopQ3NH{T9V;k814^?N`7G)T%Z50s^B&EAk zhM^m2kdp2ZhEC}Qm1by=9zeQt=u*17yBWGW-`RQW_v7;io^`Byo!5C8n?J=8NiI{& zytn6*kq~z1Yj2wucVY~%tqinM@}Aqrs^&d5-^*gx3L37FWA_rKsffu;SfNTUI4m6% zm^Z$d)aRhqrN2(;WK;GeCQ&dFu`-|6iMWyu`_v(u29}w*Mefxl)K>z{?9gy8(#VB8 zUUmiV#dU#VU+<$x)SzdU?T1yjSOg|?zM#bgZH#NIr^k z3ldl9>TnR`4f79;NI@996DbOQ1-qmM6JRx=;n^_K*kZnOgocijkr*%5WU~AXc?~o# za*vtrm}Px$<%YJrz{z|4L7ym*?J(5S>c(p>g*zu4?Gpw&lu^R=CYt6ZeAHascC<;C zSYe!l*rYRzx~>+jwM)Qo7mf4B*X$J&i}5kk66t3lThT1l&{kExZ{uHlT>boEEPRs- zXlF3TpYATYpz`5!rJyu;t$15D*>-I4*pl5I;({((KD@4d>#4&Rt`u*c@04on37O*0x*#AgbOeZ=6_xzH$6F4)_*rZy%kFFScBfFiKF$JQS?rO|GbCg01CC7`0 zR8{tpQsH9s^O=^9f4>qoW@DVLv~VPCv4f^f?_})a&~N7X842OJ41?kCDOZcHoD_zh z6v|@p?&T>;<*7d@o=bZE3=F*r7VIAsB-O4(V0ZQ-+6{MMVCVsarhp}&Mg3@ zN4BV}DnUDA{LVsVi#BDRBn35t%H|ZKhno4Og+JWlE#Zl#hv%1sb@}PHA)2q*HS-#{ z#YWLSB%ds-taaF<77pNGrMv0Xo1{XG45Lcc+ zVU@Olp1f3k_i5s`f<7l*gw7Y>AbV@2h?oC|8!bbMq9X}MDe!w(1=h5OgLZENLV!}e zGHN!=|AW=t**L@GSiJD0XjvlsO=g09I^fIMFHXg1(SJn{?C4M;%GnTpjlJ~;njH(4 ziO0{|TZI#0nhE#vpVXAo|K3v z&V2Mxj^BbV4B$bqkv(I?Dx#fr((t`|J(adQX)~eTe|FOERB@fSR>zetYVTfWEwV+g zQ10yQzjd#{DZPiTiS-$-7g!|(5C+alN>t3cFoSRfqh@ovJtMhj+y3UA#vq!{lss6N zJbY^yXkxY)6L2UdrHJucf`fi2h^+k0iaISmofkpuVuSyIYW&Bd^b%&wCHA6^e1?0i zWtS{j#9_}P#>Y1^<^*YnAZ?)3h@Mxk|K|$U<#ZMhei!uZ#AL7WGMb=UfoQLdpKnC) zlK*v;Y<_k?&F2U6v*pC4-Oa8fm=ap9nkMBsZQaq{R zq{NQ%=m~O|jd3#N3%xgMQs}sQTMt=!JdHBR6|8^K2OyQINbC3v_0`48?+Y`eMvC)h zBs7Rwna&=w6D;DDijo;!)TFm5XkFt=Ai6i^t!hV>FIUt!fId_HydSdwX-3h#?Qyml z34G}h5j}I>U2-=Xac0jG!~0Cb;J;UB0J|I<-jAG?8^l8lD4n!^!3-_jLanwb)i9>y zEFc))hHjT1I20%MGpGvVpkUag@rfL7Hgf#ubm40z3yb-;Y?xLV*cV<%V zEsf9rM}^WX{g@Oq+T|@o&-n1P@x+DWCT&|vTsxLgRrQ=4P;QzG!kK+y^u-9Rt@F;d zbf=qRO0gOhn%`x*vLBsvMqCcLz{{$v56FL?1h9^dsnQ_IT9AwC{^Ty^%Ozt%uZ+G* z23imP$>E;DAbN4E&Q5W`R{KQ4mP-S-@idpQnQaR*`-mtlp@XQm{8Te~@z>RUGaco$ zn1Wck0@xQ-UV5kT^^@dyXJn3C9G0fvr{wE}M$EG`2WiE*)!A(k?iX^{q)@8KzsX)f z;L0vxOMya0^*GDjoF(U^73Y|fWz4Z79xKCR>8fdm$vLd(M@%;@yBodjk|v{v0m5In zAe=Mcm=Px(S~4MApmGtvuc~&=zdC8*Q6c(|Ix@ZFOBf$3ea6g=KvsN%CRZnxt6#)E z+qdGd3w6)H90(KN*5uZRf6X1^S{WfdF5r+Uu_DPjhy+1US)ZT9&3caDI)H^nEn2%CfLB# z;8Q;_axqQ3LTC_`a4*0bPc|-lm%7qRsaYVe{m{qU`k2Btg7ub9Of$JLr`AcGt4AZf zOSk=I(*NZm6{oF8(LpbM3%UKor1}jXzP#cW(ic^+f!S#{ua7|c-E5yf;p15s=aD2r z@}7{VH@(~JZK|Jc5lcPmrf?4C5Pr~d0`*FHgnFsU#UIfw=E$^MhJPnhrUI>0Blt=g zCswUc0)aeDc~MmoPZhjPX)}n}G>T`L;K-~snQ&J1nX`1DX+pZKYt%a8fLFlol;!8o z3VF+CX8a6FM{t<%tYV@ay|5%}NgsJ#>)1Ga(O3`VJz7xupIWU)-5f0EtS=i)8ytUW z&tK#KTJIGA$sP&tODSA(7oIg}PnKJ^(6Z{PmBwbuTI#>5Rc* zrfAevs`D1j_?;TTjt2-;z3c1tq@Xjeu&F0UigEfoxt;ZVJqJ}5EdbE*%k~a{8^@OB znDv}VWi@F#LbSJR;?qkL>fOT75+Gi5!gDuO+xl$gW<*~qne5B#y9`?oW~I+oM7kRtDR5N0oP)<9 z#{z*jiZ3&WMf<<5UMjy3c*upw^5G|pF>FK{EOI#&KlzW^nYKBmo8DXaT+&H^$%eq0nMzVH4RX;Muci1`KU9q!))qYKD;8lHF97 zboQpgj0HDv1c!~i%oQ)qB>I#E=Ev-eUm`N6C-}*)vD2>aEUSWa(k>?L`6@@vEi8uG z#RI}cCROV)oQ&QF?PgLK9TiHcGmSjXv+2{J@NS}plWXZk*vG0zEXVSD$tLHoQ+)_~ z+oTaPC)6eG9=aStTiQ(36UnG!M{K11Pr9=q`dJy>hQ=K8Z8f(d0i0sOa=2h`jxbm7 z$XH?FOEV9IH)DM*Ts2hztEEO~o&=M_@_i*M-p=#yU&mwiJ2$4gypfgk*5=&^NtTt+ z!H9*9n`1J5Cxw@wV(Ea4^l|H@nPh3B?Y~{ZOxa1A=#QlINC%9|7<3|sZZh+G_&)d% zYmtLE4m%VTA?Et2S)pOARj4^!x~a1FW6CK&vJWudp)RB-I#x-XIxi^O z0Y>$putYPrVy7o%SqfEp)+>FyC%HEMOgbMjZN@G#t}y zoSVSBk-lRAoO+!dZ|Jt3f=+RbLVg%S2NliwAu2amlgZP~L8?~X2&=vd4p;KVEhXlF z`DlUblMk@HZDEUDjb~K@yT%qW9qyv-NXUF2R$eLe+|O}QtRd2sTYsWIh?ppxWVwhx)W$sEIgM^RpBQ4paPJ=F9Z|;W+lrMOE#p+~g5obj-J()!&Z#AW# zD@Q`|24p}&19-KLO9`G%uDTRj-kvJ(9bgcCre25E_sx(2-RCmS5zUn7gJOQ|-@NQB zTrCVRY(2}h$OXF9iO4fEP5)#;gcPew7Q9sA#3w7I2u$e8L@i&z7udG;f0RuKfV=7{ zvpG0f`h|wDVxHxSsq6t{&B@UX!M`KiI$!n}^$MhHjfYMA2}MhXQYVJqu$) zDcgDQM0;+NM&a-UJi)|3)9fyctvhx>H%dd%p(#HA%`C#EHt&t6KbQZannEH@`;Gh+ zQ^BPl1>TEHle$Q!w?rE2{#!;V=#S#GwZx7-lzslB1GNZ^=(Ak*{)+@+cIHRu*OZ{| zQRgw7|5)#tDy9mO#~8x;z+E;-E<^bBy$$Tba{_if`H&Gi)|wTbDvrW{)saq;SAderFwprcEsK+m_jS=TDgp zDZ^AW!(`_TvX*j8hia$b-YeV}Rjz^F4!D?B;B5wr(&yV_Je(IT>6mZUCQ$82n7G4b zVh`61dO>F@zd+V1xg)#%tjui_zqc5HAgJ`3LpO7Wwrcgn8tkJq^p{x$;>;{M>DkDN zjt1zxO_}JRCHXrB1l}lQ>33Y91iFuoggfX8$+S2@ldLi03sc3_WE=8^&l-3?%?vuL z@+f@q*r*JB0S|lppNUnnhFFG*h$v!QxmftZXERn=AV~p4#cL6SK49aqQ z(@HO)vcY$Lz9o;K-`7O*xGAi`3e`v-x5*U;n&E3nM^BO29%y+T9)%D4O9!n7|24A^ z&ye&8RHLGXXih}nUtB)sb#vq#%JLyg>Ns+UE-~N4=AMP?T!+J0=f>}FBxWuo0ZRQ1 zVqRhV+z!Bw6!~HOP31%?6_dP6(3`n?$x>yh-NYeo(lZ}~107HWxhBp z6VnzNBK?F*&c*K5B=faNv0<6rpVoXv2^mg7(*$?$U*0s|NK&eC^N@ZNCAp8R>3TQ6 zpD=eUS2et6bX3_j!z@Odhho9NrbGMA%MNp)c98S&YTlnD=+)Sgx>j== z89m1nUO$~t4nK0jLAooM7(7N|^3d6l20nfcv8|DZ*&f90W;ksK?q)MnN_Y>9`c#BO z;rXR<%D?;InW+2dLN8(~w)LlROVc~_?zNCjv`5jNYqhPzPgjc&E4Dp62iW5&YLtoi zbp{dj;mrhaw=+4iTJ(3mie)RCiADWt*Zm~s^$tx9@&^r_xWm13MAm!ID=CTG#B)E| z!}8-@oxp-_Qhk*aiIIaIv?%P=Vt&33)OFkvQN+?S+O8#r?##}ck6Y85V~Zs-E~H-S zKr&BbHkaU3eQz2U6>l7DB6D0Aw{=NeJ`~@OEAOn8wgtx*J)U}CX5n(#dy~uUxH5@S zHO=TLLAXh;n=GOEld${NqJ*A(Uro3S?X-BN7vQRu{U(})u6$NVKvmm|$Rtj3pXs5b z*Tb)!Xmv*U{1;2FYir2h02-)><+Pwy9F$DBX?RB@YyHLdA0FBG7wC+s$6uO%@i!qJ zUsDJ+Klw1>iQ;ZjPHqcmZf@s4^8;95AFbnj@)(95z!hQ$8FZ6cwhlfmz&RfGEVEp} zXr_@rXZSqDClTwn07$Ku3F7OQAMM=C(&sFQHM`}HZWqc}3wr*XzJrp=@lGk$9UnRW z(l{dl`HxqeX?oWxr1lHnuL68sKeo0P6T28B^v4zuPxmC^f>(IzEPt|Xo0s%gtEb_s zCSAqAMV)Y0FL)G70~pNB>__GFXdW3^QF8H^!8_u<(|Z>u{7=ypGI$=bCe))nO+E4+ zM3Me&4Ka?xHH|? z$;24Ae}ED<^XE3F^@PMUZarEAKi5x4BaUt1(`d?x6iy{|;3Tu#tlQ_((;Zk72FTG( z1?}it>bEVE_3r4v?<-ol9@50?K?A~nvF}yFom~_>ZWHJ)&F@I zaRe#TN|iFirMzWv_wzeg>o!*^951*aGu$xd6F$NGN&OHX&t}UbdHu28U;X^Y$>95pO?BNtm69u^z4)Ce*olPnJ$nT-+xg5pV55%Vwvg5u0^vj6cUB@o za?$OBBmMlYuW8BsNSiNIvt?)%Fz0oDOi3s84njWv-tkY1+yl)t`nWKL=!hPtA6TrA zlA7Pplj`Tg4zU!go{g(+lxa(_5X#;ICYUYEChoBB5SzB&KgTrt++iTrfQif|-dEFSNU%V=305%WKeee#2sR7Y6B zMd5<;yc(vOaO^T)_Uqsc+p{KJDo?AvW?f2d)su@#t<%;?9I0^|<8KQp7oj0Cv67p% z8Or_2vf1I=&twYGUUT~wRYM!*!@tvZ5Czgm498-;pI003b9nk*XNH%KevbEz5&s57 z@hTnq&N0ThZL;j~^LgUap%sckHg#$gauC*qErcM2kaL`8Ld88ZNv1+dg{qH1CA3}V zCxd#T;gJMaRu0>7HdmZkwyTKh9)etx4^olo4&qfF<*P_r9^ z@}4aH5}$5C5!3|mC`uY)!|~*8q#w$sX#>A18OsANbl1hwkp@K*d@=B?6u(ceU_WsFK&bs+C=BUu2VkbEKzJAPUK)TnFRbSCqE3b^K=6ceT z<~5I1a4nF`8Vg{p@QIdYuDIi)8S~0Cqesg~``G|C<^G$?zG@5>iLH`ePg(V?Z&QLE za-to*5TcMRH@}xQI`hVal4>H^E60okl?!WE#*mN3&#q>P6^LJ-UecD$0M&D8>hbzQx{ zl#mF94r1S*Slyry7iCfAWq&Qy4+$xa;B8&sh`l@Uu^s*b{4=Y#mXdf6)ipHDBDhA&Zvn~@DRb!@DtiFt&tj6HasT&2o~gtoH1KW?=3bqQ(kdF5FWp8X(U>kPH8Z4G!A?%*He>9ffvumliAfA`NaQ;DNQs6yTGBx_gM3%CqNME8YN)zZ z=LgB2>0iGGw(v-=XraKpLJOugAC;A$T<=*exUE2Va{V+dG&M>kYFh{0hzc!b@JFegG!FxFxY&C`2!4ns z?3!sb{Awkk*;9}9%+K!ko;8*VT6zYdP1_$F3(2k1+_jUhzQ6uXMVv*Ad{#c*^bJaf z3VwFWO0$3?-!_d6sV2a2vL5OKwV%rcM-LMGqxHnB3?c5vnQJndi4h|s2!sB(VH!Lf z{1k5uF!zng4EJR~z9D4o5%1dkjcAX9hHy!gBwbpGmPB$D_aijOM`%?$u33X2sXxc4 zWqz2YerM@4wONAVpGCh{5o2}vTV8{T<#lGa^7sw1p$sSeUl`-1>s04BZbk30%>TAx zEv}Yp%+VC&id( zkup1*Xzf`d^ubPE%LB<4U10v!A=wS~y0a!E@pnqPi7GF7ZS_n01Q}O}Bs+lx*jDA1 zVU?Iu;b)}I$lS{NPyBgQk(5^tqY9-Tdijl< ztIe1`OaAMR>t`EO>E1gHfCBlXi$xBbd+PkhYUBQ7qW9O8-D^2* zeBy&mAd5ZuY1 zJu+_7&favwesKB8gM-!l?r4fJb;sUnk&~UIK&rHxs`mPo{&@g*6uK{&>P)@h9OF#$ z>OuDKk;S+w)`NTC9JYMbCp>UYBV}H5^hiv~r*yPbz1+r?wIfHd0ja3+nuJgB?3i7h z5-R8i2J`?7*ppgvq&gDhrVGX0)T7puX&#Zn&hz7hshP;De}8xN>lje6po-nhu@t)cjUnt;x@_d9?#P;0L-%xNv*ow2&%mZEUkcf*C!@TcAuU~lB zaEL_dVIS;BF(Tgs!#OvtOqw=)i2WKaame}3>bQQ~n5**JZneG3o8{a{H_710PsV}; zM~BV}^JbNm6Uj!~pJP5r048Hj>j3|n_Ndks<91?EFP7N_F;V!}TqpM&)XBrE6`;L# z&l4}n9L67rt;Ec;c>vs$@13=9HW=}#N3?!ZnD1@`EpUH>@(uJ}IQy{NIOGouk}DCY z=cR@E#S}~vP|PYhOCIb-L@%huZfohFeBtg)re=S9*3f3 zvPtFhQkH+T5JVRYFk`IIQzfmlyyn!gC|y=MPL_xHe%iBqmknAm=p;|NBU{b!B5ngG zg)mjj?A$5T2DtBw_%N_KfK-jDCwk?}x>P-*LW=1?ll*cl=|0-q@LIJj9g%K?Q2{6& zRbV6Gqd`iom)4ngxGh!I6Fk#?*NQ{0q+OH$#&&zcdU`Y8lV>ymdRF()eGmGkSMCO))|0W?~wuSnZ7Zx(#S zZ9|Rt3PF_^>*LwiblI(~9jK_dRsy({v$Lky1-9@@ztmTWa*J^qEn_T@p9bC0Fk!Rw z^pQ5z@i}r%EO+!m+7o>Ii7LXAFG75 zNVgFo!vbzJkp9=TT;+|NAexg@40VYI0OaE4_i4K9LCQhc3HH7D+Y?z0E779!3s>pH z*&5#KPpGkl&YaXWUL^~I+6M~ozQMoPz?ZKcR}uWHp)haFQdcEJRZQN+Wl0)hJ`w&e z_x{qqUezM!bub4f=!UVSHOtD$hpfX>H`rQz$*htmIbVr(Lu7)X9tCEjcrH`kNnHem0Ce@(`KMH9or zUD)J$-B+RGKm9nyv6F+rKf}|Dm?D2sUuQT@#4%Tzs>HO%i?eL7d#N-FcyKCRNs7)IS=uzSY15#J=Hy(@Up~oc zPc%*M?0@PNoaey(W7XB09T*CS27FkjI$)ILCnC!hO3$aA8x+sUEM)DXNsG;hK+?|) zGc?3;%ebthSu>Ac?DS2NsL5L*!#=Bl(<}0#ELLOAG;%Uw>01uu%@KxAE}NLC{|ztq z57A0Oevl8l?lG=29V!)L;di>52e~-^SQ+Unj12xGdCJIN9pUuPsK8ZF0tSmVM5auS z<%rC(*Xjwj9Q~pJtr@d-udGr450(Z58$_fM(AM^a6;#$#2zRLgji2$oV zChQ4eyHld^!|9CzGB!h1>vGB2qPlc!9V#dHz^*-`exp<RkWpai=Xlucv#9xjZPg$K!yR7Ad-oy_uhmP(EUBtn9ftF zGGyr7E*&u2e~$N>P2`sT061Lye6kyy#O~am>tm@7?dDmE0ZMo>@i3~$r)?w6!5WIU-xOIARt#X@|Rd12f zS-D_m-kmsTyj!4v-YUzn0H$L#K}!DG~_@x4z7&NOB985 z@Ya>iox=km2TR=JxFv#^7IWn-E%A`Jkjg(52 z#Jy>tj_)v|;-E#%9V2h>b@cQLb6x7&)vtseYKQJxU5_a5&)~T|132lilm|;)HMq#_ zCDP_82hO7OJF9Wsw{DT)xyhtylshpS97)A=JzMhU#YAvZ>U=Z#47En4DU`+>OegKV z4c8-nTF9RT;c6Im3_L=_kQ+85aGg1?3SqW;(?Ly zT4SGk?C26T=oG^(x?Q4B(;G3?r)()eO_7|VOsQcZ*>(+kuy&VkGjCrhL;Fjui+`qN zgyR0=qpf&M35k#jBpIZ-m{J;by1Bp>BK6!G1X#rdiBu?@|2gg5CgFRMfF<`G2;6bJ zTkka-5dM*chJz^QNpPgV6ZS23amp6_EEBs;tpt%Auwr1P!vtJHbS!QY2L@i~TYM1} zCv~Sr20nfUEq=0ToyAIOP{IvQ-&7cQRcK##1U)(dGGYSG?Cc1s(8j;pX%YU$S{ol5 zB2aqiRKU_#;})kKxC5}M&aDOYyaiD1

umIP0hH2%Q7ZK)*z@hOxp-^=LvlI_0HMz3 zW=e4Y1VWh}glrzfxI$<{nGR4nV)Es*~ zTJ{-wveFM&YJ8khKc+hB#8KEw0*}=Kw1sp~v>sWu8oTAwJ^+#v+Aa~Ca z^0Wz@5itgjUvZEl3tf;)YpGzs&LR?IU~}q2&EF0iy{05oMEip+V_a47gk;&c32m2> zBC7?~jAb2SH1kk?>UDD0@XvW6UXt3_v|vHhIca|VBdOt?WMsrS4`2N=92rR|BY;re zFde$!CDp{BU?Q~UdAxe(KSKY!6rvUk{AIp{lIN=pV$y1cDA_9BH~w85Zg2P%H2bNv z`M3C9U3JlDw_E($$YB?_KGao$tYP11839%<`TYoQbDCYmFRMgIvve zSrVMh<)Yfq*i-aHRC3Ymc*EHG7o?-!=`|0PMoP^I*qiu{OH_z-L=m9tfAYV2_#l0mz$)7iivKX)5JujV^B~#v`(D#Ku@w1D{SeAR3`)aXS*i87+;*X5mtIs!+BV3;`jB` z0#Z%Am2XG)dGK>;n`D5FMFcllT@|gdS-a`0gEnj)b=)WTgD#NZkG|!2L$7l4n!V&g z1Sh4benC=QZn|P+bV7Y=DUNfRGesSU^Wvvjph!A90eRgRb~OZslgF@=4LHvEE+}!J z88)L87Ag7U(jDNhjTi3yfxCe0a&D={y@20iis{n1>RYw3BNhx`l4~{79hcn2t`NsV zjlv31e%FC?2*9Z3+s&EZF+Ey)mB#*%^3syjZbf?_K`>Jzw?ued_0P=o`$Xp#8#3=1 z`SY*uI_Jd&-$`7CL3x$#b@fiibuLxK@GKrI6`|+=0JHzw-weuD^!7F;KF;ESw2)UP zMdm3p_l<=goFvz(iZLj3aq2mTJMsP6$}r9wggd79xmAjmTbhg@v^*xlAUqS9L^HJ% zxT9|<<32c$`*jDxs&oYuE$+Wa>1mhth5l+1w&?O&oo*5+9y&uZi|8L90u(_E%G{j| z;^B4dgZkhKKfDB>%C{l*q}U)3dm_b%4*B{zvSSp$>Eg!>g|SS+I;{AWw(Fz|6U~qYd{;X+C6>`s ziF`Zk3)Z)ZU=K;+ZKPqM?;4crq>wjB#s1K;l(i4Kp-Bn$qMCFK>LLTq#j0%90Lmf2 z#<&V+dFVx@a9@O=td>xJq;(jBZ))H`KU!XV0S^$Qz8#1u|C~3`o^z#)dEhMk?TDJ? zwz2p!rjV>aiE!O9Jw0mx$li}GjHsGU^f-B-IRP+P5UDdDTAx&Q@mh)$V#iWF)ON2+ z)jIS^x0}EpGg-PAT}3n0YU5*|9(9ha z6gtaI;g=hF9!%4z?}P`iBG*B7*WONP6x|FPAQRAx!1M2{7`bthh+l8v9OCN|EvQwc znAr|&Gq$&6Xfz;)YxqJdN;(a2O!5O|%kEK6`X}!h4;{Zg@kh}x zsxaqMC=r(i;kIv3SA2rjO0mM}iHoZJX!tpT$@#&`En0%^tQ)^!?;6Lf6qAIn`~3Cv zrJ|&jERNJuQixqRJ*Th|;kEq%`|rhQ;MM~2y#M4pr(c^Ao57kXv;*>B1H{gG`y5|g zhyvCr3A)Rsn`2Gw6bC|12Qi;zRE3wEpJtKIz7h7+oBpTKX$icVYs-f-k2%z-;&Yt* zUvk5NTgos59#|5AboilZZgF<7e1>ZHNI3#X`!qpiL(9%9GgKO;H=i0+X+PKXcz~Hm z&a0MmPIKS}JTn$D5QxQnpZjJn`T+;v}>(Zr)F}OX>MpyWJ!)mXw55 z$tb$G4%OQZzmd+Uq%*@)NvZG6yBg3zbJ{I-B$QVoXU zJSR<6b$8Gw6BGCfN2ljmEo-|`d{BmL0JuD9c^=V2ImCADUfpBYV|P>a7~19A&GCTs z8(sRM{+j4qS-W`Zk{;)t8F9wq`dI?Y0)CZcg_!#yS`tQj{CUEk`EFkQW^uN+7q*iFu?jt|fbjE2riR>H}3_abAi+5h!PJ zXlCe-u6^y7H4vlu_BQtmSP!11f)B5DgZLPdjdtWjFm*V$=3>qE+_epjD%wTmoLgZs z!495mSpe z$8$xM-!sy~H&PUU$fxWeoEVhW&MjF?PU>kJN@l?YSFcCHmf9*PXblhGscipLwlUu{ zsZtbOpHAvgjuw*{Oe4^JHGM3lD8gDdL2FK^Ms8T)gs{f`RjK@$UDb#QIv2FW;XG`i zySbWMrTg-$wVwHWp^UWzV2NhO1n*;l3v`IEv|Vy8Z~vkM+(5gg2+*4yn zKrek=frYU@RT$832aPvt$c3DzdO=AgayDtA_yRL~cshNkW{Ap!zBoSf*H2L#7jp3j zM$>>R3gErOCHN0an=RU#?M&cj!Ua|6LQYFLTD3d{?h>8HS2sBa%B>PTER|5QEfPXM@-^F-u5GejI;!^+k@VmSZ)RNI6%)$kd7lcyHRcpd10$*FtFOu1deLQ7PPVq%WLknSG=x9S2Kte5GYqZ zf5C5jk~-KKe~mLHLV#ee`;JLhS@=1|Y z)c>_P$$sYTD_jz|xqr!J0{M6P5Gou5%yk{WeVEXoM((H>v>ko{&bw=O{9&GfSW|9@^%;f8PGWS0->jx47?3fk!U`uukZ?h76 zm_XQtP^=uAbojWX(qu{O?^z+U`3i{td z1AgIXMWW~=gu{+2qw{e17R^g9DF}a@Nat`XAmp?M zcO5t^V{{xR+pjf}?S63_NZJe5H|bJ3!@zDa?|vj+wG#y(BoSU5edREU>qI?Sx_3p< zm}BNH)piqs502;$O)ZCqH=HlI(KD~b0%&$bvWNzkcxxQ7SUG{$=@%SZtd;cRJsm$| zV+%8-_bA+=yyry;%#V@-mgkvJ@(q_P>R<~{va zf-OQHojKROehPW;_lcgmPG&7djIpH9N(O6Vldm1-sIYlH`3qCZo2w61d^i@WBO`I* zl#BEzq_mhjy$0No&3lMHrjM|U4M*2!>%jL}iz{+JyJbh$NlR|eu>>~$d(6(WA%(VBd% zw(>%{%s%-fk?1SF+`WpqxXUgw$RTz15%b1c7EiWrbb*-?QxPfiOZ!=$(sOFDv%5vw z_i1G?FN5dO@GAO^d2bdxjf5ra_@!QA(u_-Py~ZHxg?;NfVs?&*ra?OWw;|-l=qRHC zmemV$t}@v`_Q$2foXOa&e>$N@vxhZ`vU}*B^W4_ZgOIjE%g>gCW;vm*tJLejER&E> z<0olSlu~xBrWUqO3ww&5RydyDtGxFv8?E*Zz#v(Sl=Tdi6Hj212Oss| zN4HKOw|NvD!pccL{Eo2(2*@*&X#z)-Isxqc3yQBna_1~^Y3?$_kl`dToC%t?WB{UB`Xe`lG73q*M=J(b=S{?uZ{I~k8! z-H!0~56Y})D{--7Ipneo-MBDMyysiZq})JHP-dS(p4W{xmm%N2amB^5W^~X%Y0Ppu zjT7w8Je>cl(dO8jmlBp(mfxK@O@z#>{HY{t`Wbk*)%DOaN-((JSH}g0~ z4g6;a>b~O*B32YVxIu>N3>cW;p6zWc96U?R{}(xcLCN~)qldR9ZWh5+4a}GdbuFRs zDRgks)ZHp-;{Fcd7uE7U1IS${`9g2HR*Fan30bmRG_225@wbd|ZqRgNO3rf()b2d$ zd526c{OM|t{b)wH^ka>hSh`EVf8C4YeRP@6a_%VXEn&hXpU$(`hp2rcg#2M@-tm@Z zQ8r)Jy`>?m(+COC-c~OQpV)ZAot|ct_B3Wj%ScQeN<7ZGfF` zn!ybq?X}5!RLarl)4;KNuu{xf6UPrWeh=-8wetKvg?r|eiYn(8(LsD^s9Q>sk!z|L zZp-7MUfAk%t^mE$gNdO(TCJ+(_C_oOn^^bvO)Wu2Atl@@)<%(MU>G95GTC#Rt@oJ1 z$ld(uGJQs0?mcLw@Y8u1Lq`K=2eBbwbRQWdl^(XpOp)cc;p(KS(B0xy2)ALaXR%b?_q#}@1)9$=ex(xx5Gro16^ktUjvN0dTa z`P|U%x9Sm7#b~&bWb7JG`_sV&40lzf|4qZR^m8$1bn8O@0iqn`J>V{gT699{4t-w! zz5m5Yq7Q?|fjX9xWX1-#n<-OMiodifz#8{&-xGD~nAXWgDQAC7_LPa(kir*MmBJQi z8SzID>S=Q^aD*M=phRe@MZVLtcH&YS{#Pr?QLpRL%`T=QoXcJH_V!@o5Fw6lpuHSL zQ_3WGiSkwU3$E%2&{OIO> zR&0O&yLXU`1_@g*{qia{diX#96;8)C7slYKdn`=frMLe$CR@}LCpOvkN!8%zg&q|5 zw$3duZX)UX!r6yPLY7)HvjjeJ9!ClOTpq+`n5@ldUER=8NiRX^V@7&anV&lX8*eFV z3@JwaX-aBrIhwB#++=U$5Rb}k5N69;%6ZN;$7N}$!YOI8DE*cZsTv)RCrHB*#pOvx zc<_Todc#}(V%xf-M@^S^@-?wiuPD4k0jUF1t-%^P`E|YjE+l*sCV`JfHvhQo&~;S2 zrpaa zSY`C_(d%hWECys4L=`Zf{V}ro*b5^mSAzPWy*xMTjp`mf%6;A$qOXLv$=FphSPnra zT^ae$N!ZWPR(FczX}-By;iB{LbT+I|J=lqP&2;lgL_VA;EaOk#jNcC3ZmvCPjrG@H zS=$F;==IvvW2E2&6hvo-=3<@0%Wnx?X1>IHZFxLmT>D4u>4<&Mb}Uk)otxL{SL3tc z%#imH(kX_{ftf?Ajk#$}y8j1kVKcGjn2&^nD5xgO$WHMnxgq$y z3{v4a-YODl_^g%28b8ErzY5@$!K{ne%&nno10QHW#N2(AClhY9V*~$ktIEv({_emp z3KEW0MY0!l0_dyoq6r_0lA6K6rGr6*aX|EvX19sIi}A zf1P#`n=WvX?0-;Q4pmbI_oT87KSksQ;}lhj5bgblXb{9MD8CWMEOf$0aqxO1l>ewl zoe8r+ulEv?i)RZe(A_2VOiFo9w0ml0M7{Kv$%t2Ugma;sAhUi|09lRfod~h;;!oFW z$7tfyF|Gwdy-1LcCh9R)QN5A{i+wHq_ccs3A`Q@?@F+?XEmaq7rpre9spl&JlZx?+ zIER!Y2(K=ltrJV9G<=Rg&_T*4Tk#dtq=p&Ww+L9Q%ms<#Lu-#%T~&M_a6k^`-UoNP zS)(NcurbcT&?j*(NPTCO@>PmZFGDIqSAiOL75Scu<98It96662qjJ|PJMAP?1AZ?L z5IwHodd|U?FZB?`as8^cbc9_)h?Y8e)x<@93YC+V>V+>J7yIFncRJhY55azu(=2VEy$iR2lG zbD&}%dIVtThCK$&DoPOSMD<3hox0W0_g_A7b-^9 zrZ?g0&PF-rwUtVcnpVI%F1$-f#LqC(N{4K3s*x)|pXE|YCMkTcWIHe^-oCJP0W_&A z1D3MgNmv|V!@5TKl`YqZXyq<95TKr?^&d++_Hs5@i{+&%{-Vn)s16JyuT}_}7A|7F z+Vw+apCFvWQ~gI#T)d*etrhUQ$n39|wv*3ZksrOEizb%2)`NKi`)J(&w(be35y1`+ zhnQ3&(^i)@1d|7iF{Tp^NJFpc_jTP$eU#XG&l0GEh5Z_Pp-YU@tyO%1(%q>^*NU?< z`BQoP*jS*^)2c#KFO@5gV7c2EXNzhrV-ujD?oF{3y)-~9rwz=T5AoJ9--*&Ya54_F zzA0}5{&7AG6}wf9VUBc$^b3C85mtO#k=RUb=d})X-oXANUJ&IbHxAZkaQ*!Hq%M=! zL7irOW6EyN<0tcAuedp8NAMLZ{=cpYp0K5- ztAnmUj&a|z12}3@vYavChuw#&vG73i)r&NNLGUxvC?cG@^~&-Bf!8>#V&^Op)HR7l zl>euPuwrqp+v|mYa2#)+rTMj;alPH)T}Ou3pZ~iWmi>koAl|k~cpA#-EdhqZz6F0s ziptoqEe4$$R6Y5B5eju?vw6PIu&CM|Ajm zDxPgszR?%fML5AuVy|h+OH%@1(!V3>IOO#unk<15bJjc452Q87rcFU@vuv%UCe=

x*tCRwLn2yv-wNXv>bG+XTN`=zfd{)IT*?8|3dN1Bt=JfJ+W1_mOfV7& z)KPiV7qZ!X@0Haa-rm|x*(&I~_r5#SqstUySBf`Ih7b-ugb@_cSz9ZKj2hSmyOfEUM@zuY5UPZ9}~oI!is4% z3hyyKk|F;?i|jn->pSa-eed%El4XktTq6JgC7as7Wl+Sd7Bz zfU~aw?#X^>?7wlybKgGkYOr(5TKrDfBH&}28stu)@|n<+OXNrXiIUi=*?yV?1y^{e zqwY>)oct=|;Hk1O3|j$PfW%^fh^5b5;uJ^Lz<7-sQS@&)>lxBt!YBZs^+P4EQe`$_ z37w7ULrS_>HqsOq$(RzrNx<21L>^5^K+>Lb=*NbNTs)Fyk3=->I%;(m8y8vt4q3J7 zUG_hOYfK`KSWc4$`aY9mc3Zw}&Yc@(Tl*+T(WRu7S$CkX%%e^fc~zNQ|Io<#7{eqm&3gggGAc^P>*_cDWxGfwM#E<8sIEu{GW)g$CRe^ccyxf1! zOJ4mGd$j@`WJIv5WSQ63guOA_+Gd=-rE$iH1V<*aRR1bKz7DJPlEB#v8Jsdc{upmV z2h^bTR!QC0)(;A7u*pe3-dQbYcF__XjLu@kTncMl{MuKMVXA1pzuL*$GWP4G5HN_- z6fpUz8&w-CfPTzHI(^$kDxn3Jio7xzKFKd?xhId7T`^B^g`1L%aKt){4#)OY) zO%DBXbYu>m^eDmbG=K&ceMHTsu!87J!H$+6uJ`$nh$NdiDvDWjPZ~;Ke;2lh&xudS z*7LwFjw{Y8kBh$u@4L!8uR4d9g0FK$Ah{)!e(lwf*J&EtepTT-iWK2+ZSRLiva!Gj zfg~n_r36sR8!Ro@gM_LiqDe+ub9X7<6t1Nbldn7E-PF?)k6?|&r$CM)_lntk~1mBe{f_U2XZyN2FB8mWW~@yNdh;9V}3R(ZKhmMI7Gnv%(&ykwb! z<)&5r^GNu2K|pXm2TAg(N%DT><~4(dS*2^reQ2qPt-Oo+?!lQ|0TR5;1e~WNiRyJS z2zCQzTocp8&(nh|n8)KiY{@_0pKJLr!Aty&*+AO9DQQpdIGD)fd;i2EAmz_nKNuGD zpi=7+RA5|}Fpu}$G6BEf4**fNzrcIDW`~8N)JY+f6p^dEV`e$Jl*-oXAk?d<*9 z;Wv|?YdOG_gI6D#eXxwG&cLIEM4XyCdqEGDY=xAC40)i@4lU!ILJ1>K0s&9!iv+@3 z^lww|O%jC58iIj0kg1<{IbJy=eO2TGPSewd{^z$(TOSU(>r{yr+3GfM`@5N={!{=X zUw@ChiJku@D%AERsyfCFjEUsJfEB)sok<}<1N|IEKP9OM>CRTCl8pcmb zt2l@Kib4VT@#ydQ`O$>y5Mv#{gHu@<*~Zo}m6Q4~UHJx2fU+Gw)6W>4v>IFS?$7>uavCs;_%W ztWTtlsk2&lc=kQ|)&&AAAsSAP?$1EO_MugETbEmkK~k~_iOa}c8$vwvGz@hHU_auj zg!d7yIRVIB>aBXGs+E&`)PmAnQc4a+?TL4_@1KYRwr2Ef8#r# zwivF#o8agaTt7WnP6Ct|bq?zfPL|7Te$4EC%uL-Pocjh?lxB4hJh!x+p8_Tp;U`ll z&5RE!a8$|t!^-Dtvtd4%5aAL%^L<^{tV}H4s=u$kIM}WxUaTOKtelV}en@aLs?K^; zdM$vzT^&va26=w!ULg~`kyBwM!VG~z0Ssd;%{Ds!~1ha}V^X(507$2xE zq_CzAS!Y7=4~5a~pQFn_HN?JNTO`CLg*Fw@n`r`<(cX(Z5jv7MIE)}<5O~e8G`5?m zeP3Y0tSYiayF`AjVrqvM-K!et?eX(u@R$vQp=q(Tg(Fks9kHfG{jV1ChdjOSPdG_p zd;sgh!%tik(c46x%fC*I_Hyi_8zv76o>MY!pD4S4IL|)6cuVAphU-{w&mh zJ3%BH*ooEiCF^M62R8wECB~j}vjmbIY65e(!4+Sut*}wxmK76ueM$(nJ67*xblRrR zQ4q<+pjZd;CO`*5$a`b?D&WS@huW z7`(DVU{rII(Q7#NMK_cp-@vSsYr+wNTcfMw2O-=evW)4NR|o1?fjfj$mD9GcRC3f~ zgV)=+*q7v2+4f^0vm!rLuOp1c7eYAsb_WdJzebD18IJoKB<^Ol51YW7RgIy3jRsTc z$D~+TLv$)B74?h?+Ckk87s;szf&$J#{J2=;n&U~8s35glMug1hMmRVzZ*OFow&p}5 zge3IM<2_KT_^})?OjMGed`nj+n?cZ|`O*ma7bx80=E1Z+Cj*wnw^H2NYcCzvjH;}4 z-Z3@~^Gd-ww~4rDR;GrK?XdUk#h;j2H0~J9?Rnb;v?XNkoDB-R)v-@RXNfq;BuX_& zJaqu^J5<&r+$(Z=pB{XHT?F*T||?JOs_{CNkn z3HyzbWQQy@(qw7*!37v(XbE0VjCXDHlm9t5QWA;}T!?Y40Yp0o#LNW^RbJ>q>Re=Z zulW)i#FGaE8C@Sr?P5-@9Yt!;uI39FhxnLG8K#&VgF3V&RFUKIwdFD(lNXEsFz_q{ zV5P^a;bKqO*XL9#TsN-vr5tmbZiOrC-mfsTgf4SpR^W6Nxq&3{w)G1p;7yj=rYB3( z)eQZeeofF7YVnq1$rx0!bvm&j3;izs?*67Qw0OHDQappvs5Ujol}L3qzJanC&f}|F zL3aFt+%UfnxUIBuMnqf(fpO95avonEd2$0MV85c_<)V#9($8;n8e`4|+2UgR~ z3@f~!vAeIEBQd)!j?5((YBimo+?No)BLe*m$zIFkRY^)U2J)|H0GsZhNxUR5nfCqaSC$r@W{b_XNhgiXa_}7e=%-cQQbO*XTf8PV&Md zqp-Eg>GcYfw8h+|U4I*`wrosh!5u4pZM5`XhO?x+Y&n%vg(us~PjS&=PKhF?and$o zRx;@>b3T-+?YNfdCT4T3*;PY9XwqvAAi*{&$NjMP6w$t`ykw*WbU0SejTe$f z=u|80v&WZouV|31&qt0$oB+><&eN36#!u@GvX~Xoruf-t4md)F*7daty9IN{yZcN? zW50sZf2KA+aFXG3obBkOdD9`z0s+8!O>2y4TU6|fyXlnJ`jr&3#PyzGK@NTtajy`% z#fVFiL0V-ZB;P?l2c}}!5rwJ5@L(xQe8k$&D2&w6is9tr2B3iM07e-dq61hKWrfER zNUvP4%W=uJXisG4+)2n*HAZK#2z(Tf%Jbkf@Ga{@`ES)lpym|A-#1X$j{6MrHjgp7 zX{P%O>rL}w-hh+a4DYeEe|vxPj&0h2nZqe)ON8j_TyZSPs5t(i`3*Rv>s+&&~ooG{io&cKv~LF)Xs2r_;wgPR%2Ly<&nk1HxPj z9TORN#U>Y}QAW2#exP1*xMQpv6YgL1vewv9zew{8;%SEES5er zvLhY;bAP1RSuF3S%>??{*-R~GbWU0I=~}vt5kk60N2Hsl-$l#>Wgb5C_VfZK{DYcy48aRxmj+HU$y;{*xY5jm=IHujHHt2sVtuK{?*eNk zuA*26L+D2vt{N|Rl+;PKgF5}#daONcqeg8jqp-{Nm%|?(3)=hR58~@(GDEqzLHDN6q`K*jg>i&|!wOYZo1TYZzQ^8e!cR);hK;eu^4DYFYXN1NgJlpT+eRz-yIor=591qNm4eK+H#K*IV)8B8a*V!StTNl>%g(sNbZ18v1T&?C)tP#-9|r zhg#-dspw>ppF;h{v8F(cu#mLDi%)<34#NKV11ACDwo7aO&?h)BPTZK%(hn&9{PL4t z07&xiM+Ovsu<-x)ALgH%`CO+TbOSZfS{6>}v<=S*oT$F6JZ2ZR&b{8O>UICs-$r6j zHX+XTMTh2Ro^X&u)`q^c4f}82IKw#lJU7vv*g(o-v8{Gl1H`_Wskc!c?X~j`xhzqE z{(dkgkW$|Kchrs6|6AeyXMDw)M~G^)osGQf(6n-Lhv^BK7R_K=OdoBg0g+H;b1KoF zIE`HDSeNDc0t{D8pL~V!i&m3&>C**L&mnbd>A5J+%xK$t#_p_?kQ=7w-I}-=aY9v~0+^ zfbYQk*OZjW@+7@)3VTC%6#|yh>_BxSl~ZG=ep2o19=s+S@Uhid0VDrjr9)HZQI<=+C2v^ygnW_Ugglpg3y(ZBvDmj? z?j(d{=z?;L16C({>pC%GGYjvuf2PkBWtwj3QP4r-;ESB^TtBp8v+I@K7s#w=0 z%c6u$)t^gpA(4DBW}tOX9eSd&Zuc=Nk4kI>K zGqV3e31Z#;S>*{?q2QLOEu(4$Od)yNqv6-@uj4~e!N?lE_BqK<{yhu)gf zowC%YO!QEY&eV1hd8edxw5F&7OW2_jM%|53PO1!&YyqsPY;E-rv*GJ%FhgQ7pPjVx zL@h0UZ?)b#kJYhljWpH7;4|vU>NAk!A6UoWxy$1a34^xIsE!>9R3XtJ#;rgPZsEZ;3k@>5a?+jtAl7(hzg69U zC_~_O4!5)|FzDb|DaU~I(mOXBURGE$4~v9oDvt(dSW0yL;*2vS-wxuQ%wLpkHN@LC zVWJ)6H5Vx)-pUPCh&xeioJ0k+(~n2DOT9D#d+Av&8xSd+7w`qk$6OjAFTCz4UKTR1 zUyinEv@`sS(`vb?_Z38bHh>J+F27CosS%J9xaD;I;J(b89INsu>V$U|1^UOShvr73 zv!81q3NU2j2DHM86u5Y6`fDI%ZHz1zWmoUG&Ttv#QC>^wClTt-jqPai8MhyruystY zL&1Po*)%IHw}>g3&Ke!L%b(QBwpSuW=q~DcyW6o?T{SM3QQV_~;5eM+&l@^V0|$hd z@X;>4`dm9RPM4beGh$1j=P11%cL`U&tCHGQfDg&01$=^25Jr zyJBtG`q~cFXM<9)@45J=?hp33Akn0Acp30BfU-)MA)hIEmD*K1tMI{wOloSfU0wJI zZ2;psgMCsC!R2bnwOjb&5CL~j(W;bpS3gIJEjgB8x75W2&Y8dn^M^NWvc7Vq%be!^ zj-czMCa!Z$I{EU#&eAKFDk=qq-2-ydKkOb7{R#UH#)%Ajrg6-ll!xb5na;&&Ub65F z+JA|uR?hSr^D)I~`@+}Fm(c2AKFd54WaF2T#VKES^h_o$9?%b#$=&vk(l*u@`Ugp8h20C2}^ThF-dqxySI@ z%>oZNx$qGTXI?Jda`jl6RYTtrho=}I3hUJ<7nPf0ONTwxC<)bhTa6HD$$g)xeda9dc@74NawT$D`P*$1$5Eggu39AzO$(ptImzr)zylk zYu2l0*O@J83MNBft5HQ}pA3hGX47 zdF&sSE+FoP#i8{NKh9kp@xK@!NW%SD`7)r%^>xb!LjtE?qc?`CPmy!CuP5{)tN)E! zOi6WAcBU0nW&Akt6jmBA^74rwuL<`o%FkW<>u?r5O-!`=I}r=;xOQ`A zMU)rYuuf`ruNCw3E&A*^**!K~KUuks^0dIMSHf+4;w$xFoU1yA_`fSI@BED(P8w$6 z%CGfcU)qcS2GhS&WZOQBm;+@37VD19F0m-4F?Be!2K}cIe-`M0$ zrX`$PBGF$39Mh|AgsUn^IcL*RXT|wK8u$m9^V3tyDPfXP3!(3xrLgM40;~Vr8nh5O zFAiH_*_&!yxcrV}+p_*)gd7*S>yTJzU=bbMBn5hi%c8*sH#hTSy5_>`xwWAMscNb^PZ4%=#~Gws$NSE-+5yApJg+CrV7GBd=QD7X#hviNXH z;^r285tx}`sp*NFKF}8zGi~pkaN8%5^_Lv&15i?j;dvW`ft&mBI!LY}`U5^vu$h$sOp-CAV7!mx7b)^0ask2xw8-}Q1 zNb}O31M3EnRfVvGomB`tso*>Gmo-wj?NN`SV=&eR32jv*xp?m6t4VLT%&usvLPUl? zTL0f0_fOR#h|8a>wlOG#5$*%^Pb?MbKx$HH)_4K*d+)`Z(abCALB`1z21mKRg||Lc z;m#v{B431iXdtYZHfGB9)TC9IiB++6y6W4){1)EYh5^(7g@8o#GWy@5{0I;F6P$kz zKPj($-pe!yuEi=WR@MAsCFoFQ!wrx=+!DOJ$@d=b(t`qnOejkeLG8N z&@z*dWiiq=B(MJ<$urD1gyXf$ghf3=sSjV4o zNS#?|M05zuBop@n5`%@0X}lo}kCkHM1zC*o04s3k@<^3p`X+yGM*A@4z{CBC-$RpJ zNFdRAGTlR}$nfQpi1UIhSd#scCh>$~5#i%oQIH(c)EMonQTBeB9Zw63^#Gx;TKcm` z1)86Upx{#Bo~}@&Neb$A6zR~s#Grj|XF+zx$=mstLBWQf@)8$;T6tUT%)>PmJTE^c z$EJ=8;U@GECF->3WmX&m7EILGzfGIxY&~BiFj|!2bKs?{$=laGAYxnA< zS2uJZ?Utr;9<|naD!Z$Y0SSW%&H;s%TpRVe7gHgjHWzSVPf#y+KMODF;=llrT(DnPpxPJV{GQA-EudL`;gO!~bJ>r}WpxA7l$j>2@ zukKR*Q;}Hjzucp$Ex~Dp@&B?9Kx_yPYQxV@k?oNjcva9j2|a3g8E3LQ8~P~Zgl!9| zY<3XK;zdhv`Ezf~BA_tx79N{V<4sR`#~A9m?hUShepSN=ODyrVNz*$t1StQWQmch{4=^y0T-Fu!K zVhelvo+Nc1$2ftpAyHO#aT%vibu*h*<@$vsyJnhS6X4##TLw}G60ZVr>)-r1#XRD_ z70U^V)`n#Lvt&m`*Xt-9HK~Yiu!R}?D&zX0M#>;1=FwN>ZpPHH)G^2eGmYP+1b>f7#u!oU;0W0=3NbdNc|KK73}$2- zO6FA)IEsCO5h^!K9+YuxTEiaSmBKjB+Qbl@S{lU9ibM}BL@0_z&aG=6L~{7*IycMq zeuT>$RIaXav%2mUgXm*=sAhH)r`-f6f~1qkMoe|cnt!Zg6$)AwmT#KJ&cuU<+SS;mhIsprYYrcGlS#!gK&9a3aUB*Ny{eXvanI6ibB23KY`adYCEZ=SxhSA#=@ ze7Oj)dDXJ@($%Bsb5`>pk%EuDpPpo(drB%86A2@{t!`{|QaR!rPDm+byIIbu#JOB2Wvp{59foA2 zvmx+%(3tLSeO^&^N-Npc8qjc1Td~bTD2dk zJi10vS+-U1g_3@%2SZg)9J0naE%!|`=zp^IBHpx=b!;zC{}NZbZ3dAh{=htX~h#m*XnEe1=H-;XHQ{0!epz;C*> zk2RySq}oUzj++Z(nII%f(5o~NbtmoQbrh(2!3xBy{1pyR(lMm2$=Y?g{iwF&JQen|ujcc3GIrS^A%A;_Lh@qUg` zCa8Yw9G4tgra*PPHbzXiIRejZ&Tn3C`^V;}ffJo31$9;4zMp^A(Q-uX$!>5M8WI7$ zgw-~?Wl|9Rq}26x&g?^`9bMs5^LHngc`>zf_bg>1S1RC}y(`GXIOm@C{UvNn;d==61Q_Wwxmu*Kv+Lru8SwSFp<P>L*@PFb6At3KR_rzPHe~N;Q?m-FDMX zD;i}z*q8HeWbWrU7-};T9r>kQ)LG9tKt}Bq2;-cLZh!Y@US$X04Lf?s8*G}!uZ=Q^ zVjSi!QP4;E2E^NqqK~px&vS#P+-cnJK_)ZC6Y`Va-IiOX?Q0is z!rBmLT#K=lq!bfpxxa=GzJ)MPmYJ=YD>8URUbdj*kvqv>$1(TC5BSL8%Vgl)Icq*g z9%84sn*uct+SsqJQ41c&sPml{Q(LP?u0MEu$H@X!+Y}LMAyk*k9i4o7vjt@azY&b<_?c2mv8FoFDIdw@JZARF_wl1 z!86TP)tq9#R^hKy=J~1nLYjpZ<1gU{spjG3jl<4l4fwvImXxW;#kkv1l@H}I_k4@s3O=9 zqt2Z3bGg(e(=`N)TT8mPR}q@2uO{Q`fP=gxJy{EIvxjmVPGh!IWudyYb=L{WR3nOW z{hXr70bvYig#QGHWHMpU7M+sZ6~xEY-pPL_55_dikG;zYT>}aG%lWgq9>FqMT8!)J zR3CKk)IOOQoi1h*jX&6`E+59q!lMSJ_Ue-2#n%4AgTx?%$ud zoNZ`-ufLC!fngzP<~k^L{3Q0`78RA(Jh-@}9LX$d<#yX;Q$n$R;7#+(rVK*Bk2e_YBW$h~p#w z0GVWrc?UK@m@7&2X>vK0(b0Ora4wq4ybRidq8Zt*>F9y@@h$8AWf@Jy?Qbbx6Jf(~ zW)XBa?2CBV?rMmFF7rL>t@)|%MTLVflv@xFL9K_;7O-6=7jupNU9VcH-4-sL*O|T% zdfjgxJXSiSjdMxdpy&&)mWhGd)^3jNB7GYRH5Up)hFFKGL76U1G&l%b3GwJEMUNCT z;|x!vU%M5p4R4-vY6s&l=G<^5P1Mpj?9-=bTZ~T}CwuBVR5jvtYIV3)a>(eBq12s( zTM4bv)u+6hIr@nXQLORp;zkN^L zB4is;SoB=h_u-T)t8HVnH{H@pF_vt}mZkGl)vt~C)w1`KphbLCrz0|;L%%=Q6xK>{ zk43}s3%k#psa@@^PVQlj6mw3IPOt>| zI*7hc#yG{^0}BY5x++wuFEd$}f448@0~hB?w#-sSu=HruA~R zdxbd8ACcy146Q%oF17rFkRaThWh$4YW635Gg?+|w%$p*nZ|mskIal;fF|?~s+Bc9A_~kJT@re(gn5|ZM z?3GnED6`kY?dTKv<1AMW{vkuVf?)%H0}C#&v}KN%#U)tRpYa7+4RH32{8R2fI_vAl zF(53}*olx5bQx8+f;0%WOR^XPsgO2i4KxSR6Ja<20^Geuk?K&18=n!)$m6@F%C9+!Ld7W&)aBn}*y+?h| zkitb?&hkYI(OctSmq|NAQYun7)iy3lP>w*BX&m(;z&L6*=qf`*!2`Gp4`#(Cix`Oa z>^-8yq4;+}6fX;F?=?%3lSKNWqp3SfYt6M<1vM#XnIFb}%C>3o40sfr6t=$dgoe)e zz`@T~t-Cq_UkG-Fnv!upV#Y`PN=j6EX_bATdU?)^cr>;Q3qGc7IA&B^LY`ov2W#%& z`5=RgLZmlp*d+L{t!OsW@8^>q;3dK&VbL~>fp|a={zP8?W!0ZbZ&h3TmFBnbTJh+L zYqYfbwGEH%|14whP3o0l=S1eRsT|A6-TQEUPYRr@ggnZ)Ym^g^ah5ZkJ$ zb)93MBtGnj4SbY=Qr9~Z-%MG@cf3uXo{5p1=~R=ORvGfPUK~2>2|60D~(r? zAu$|hn%CziJHJ{sHPYQiBX_F>clW0qaU#ina6k8|AApptoLeW)#L=Ap#%;hMo~WgC zlp7@pVWXLp55c>m^zB3eg!tbK1)~uJksdbHuI`xYeo;HINf|ijB$?9*EBo*;C1;zL za!4}H^%h}%9(m6OQrI{?U4(M#y(SxWIW69vg8mX^9ThyzQlUq$_uMv<1 zSKqGnplsgDc_R%BB!zp!lq5rbP*R|dJXWtd#koe*42@)nc!?1C?2i`2N`E50zIdHY!7h{IRvPcGcVfr}!qN?qf?fT|N13M=}UmIt0aRpta4>!&%UmJt>ExuL%1w&pG z5Y1_Lo#SS4<2W4%%sDb`SJ>eFN^>lNZCerH)s@L~UG)G-R>3VQzh%{isWEy5Gndt{ z&P}UsartX8iouj@Z7=#GQQ8?MKNvYt@pI<|o2X=mv6-C6%Wx~k1%h5>PloiK*WsVw$^i5?YTHFZ$x0F-#&Rb8isG$!7+HwCCbl`eENB*nUD@c zT5^@}jyiuFqzSw*yDRc~($l$`@f{qf&&mCsl6SwLu&zEB$ty3?Ry%Ae6ISaG!?#CAe2<{-bHcb8giU)UGDRnvYH*Z%96!hcND`NQRMK9-C8%WmQ>Q#Jd|We_|4 zOS(X5tZOOPg#Gqk|55nF$loF`h$OIhuXz0V$o0D?@LO`bK)Pjs7{R3&{mYn5Rp-Ly zeu` z-YRUIzRS@_9#BbkuurXhmrFdTc&{?Ga z*YUeNu>N`_#&yWW-z8!O3j0q+U&4kLN-uc@1S&o^TVhWQ&vgoO^i8<~x`b=`1w9^Z z`fL8KaOkve$Z|I&eK7JE~(7^!k2?^D#-M3YyL`Y`e{IAHga2Si$TjvJrCt1ee`Uw-(Vc7g3cwF^wbn`9 zI05TL=x%SFw3^Hek6~!Kq35qg4_8)>K>^xPwyE)$#58{N`#BH~;Lvrb+=T1p(X$=*tIu6olMd6ms7$nUFA2)%qh80kV!hWH0xNKhF2J(^bl#Z@``#shu^kVD zbLW?3iEQAXlmFA9{!ozyFHJ8snn7%f%-b%#;vR<*PN$O3JFkTQ_=j$2U~>V2mmg=6EZme7)^`_*4J<_VIpG+mA21ZoU%!r*G9<|J|*`ap2}cT`)#%gV)Eu zU&Z-l3Qqyvbwa-S8z*I=pRJcNIh*Rd<%N4B~|E`^;~I+4M*>i{oNHLmDAVq*yHSoX z{vaV_tmEX4XcP4if*<7OKmTmax|##1r^EfRa$(7oB{+ zEc4nN5)L~@sp}#AVZPV{lzT)@o^JHHIeqM(zc?-&IG z%_*6o3W;Nv*iTgA#zX`yr;~H19`&C61JsFq=;67mhn}_l$CiH;2-xJp^fxc&EL^7# zQ5%js<0o=GojPd-0WENyEj#;@tqx`cX_TnTS1mOHHTnva{JNexsn~;h{I`PWiYtBEp?TxeGfa%OU=k0; zb&T~)KOV=f;3B4SBOQ~@r<&)Cb|u%2c2E)JS2%eEnH|bre%GDjd%Qg9#?7E_i80js zF0fqTvb_2C-Xnd07Qv32W!My75vjehx|Z_A@4{qU`$4dV<&Kj|8%0~NDvWW?AoBi% zyORd>lEygct49=)yTq$1k(r6g_oFL`glPIUDP4BRfwzYJ9#w28jG2JP?9}**x=afN z<9IM*8o|3nb{j)KM~;NXNIiewa_bEboZ;1I`l_6{yAF|(c4E9xtdjmhl+VJQpY>-; zy)F0I@_pWHCb&@S_mGEeC&aaGy6SxK(-YVtl?+IXZ?4;cd}|wJBL0fY$`L zzB3%ZNH@sUd9aL4X5rg2D@zZ_xXwjD`DbsDE{m{b$r?_m%+m^c%!`00v^N1g zrqVdOdCZtzqprBASgL&Teg%<9_%DBBXQz;!5;fqvd(gln+m%+?y|S;|0C+HqS{=ecJ0;GV#OVb71!df zEn2)laVZHBC>kUYf$fWLPSs%x2>9lSK1k&y|j2~ZD|LxB&!w)tujzy0FhZ1zr+sNIzKE{iBblIv;& zkkG(NX5>``AI&Mn2WydTfccOid%Uwf_i+klLniH&c@5I7KBh#J}*olVYi- z`- ztWCctb4kIMj;`4;4b(pF_f1W{?G$fh&Kq_4^XJpbv@FQ$yJfj$3 zR6t~(R(61+)HHdN&rXpqMcYNq2di1kduU9slHyk6rbKMvPEb3;%z9c@zOJ$ij>2tu zUjBaTIXM8j(NZok;#DO&f;sqi-=Y zK2X7hsM>2LLm3O}w~{@$G+J7IRZ({Ll)(nClExd8=u|HG3 zJE)yUu&+}MX3YJls(MOJ1FR5SNyr&62)hCB579X9`RU<4t@dE%9e96w0CQiT77wE= z56zDkYjI(*rxZ~^hTi!E&7aayZ#GNBw5cG~i<_axc2j#)^ZXs*?}pVv_Fdp{Z5-<2 z5AM@_f#!OFL`NKvh-aoEvLa!lwALPfyQh-qab%SkgCLHS^{dfdhFNMZI`Fr(fQ|R{ z1K9}xz5Bx*erpK!mv{6$4W7OibuC5i_>dieYqPTYcl#dVayqy1ULO~1VT6JQ>%vDz*2W|8q= z>~`)5|J)neBf-IXT-28DPUt_gn)efSTEH~`b>ZQ$5l|}vnv_PI!9u`Ub;{DEap1PE z$wAl_k`>A)2VIz~ZiX({3?@k}H)ame$MBn*Pb}bClVJFrXJ!53GE>iOv!sUm_qIr| zv|}wpvB^U&{EuogiT)P-kz>_)qNIwR^dOpHa=zrCj*z2b9UrZ>noDIP`6rS_)0>h? z)e}FjRDa!gk4@WC55LIhuHk@B=n+E~CU)uD?hYRiCnrC{*UV9WA$I3k)1sjjrAsJ_#;X0C9uU4-(KJ%cl&g!A=R3I z*Y`NP#KpW*0-eneC&0rD(ex0TQxOxNOb_#xD9_C3$?2~Nlc=PhWBrffJRV$X;Ks53 z;Ca^eVH5_B+K24-L}^!6qEfn64A{;zf&6pc!*7-@fN4bB3|}_8j5`I~fUF?-gDo=LL4f~Yo4 z@ZLX~5$QY}rqtRbx8z+N7GITjR5si69u|JTj{iJ=8&?xP5foKAFPNt5ADKbPt-o+< zK-pLH@f^+|B9rA2I!>P4SQP2{94N^QxW>!fC$FRTjie69$2$Ea7n$0}6!tZUn$XBw zHf41)k;q>+dtY`M?{}PB2G$W#^%DEp^-e3!@hnK8B2eu$&62dtxW};64Dz>EW0}t! zNm#IkfBu+DId^Yb%nJ>!p_Amk(S=K_3SA`H3Rdg@K|^3HG^W8$15DB@nLw;D^0&UkbB=Z=!2g{A!R{J$Mw(uZuh znvVD2eL)M(Df#W}r>CWjcD%SpF={B1($KM!dHH$cehb1iwwJoX5gI`Ag|rV<1WqHQ zYeZ5(hV~o9#{njeH+`3tD>*(4e&ZJ+6=~u;i8QTGG5?z*Jb5NV<^8^FRl6oltLH6s zH~$1wq&GMGjS^o+5xp}%sHTse{v$DVYZG@f2Yfv(vjwzWRtj6_@%D>1&9im>%!xMYz)2{MsreVNTKmTv8G9{e_>rEciBr&_knx*=TFZ*BuzH0UpIdW z_0zsxRirYOn06zZc3YBqpVT|Pt|4Fq`j+B|F?``&?-^!GHCnTt4jtttE{*e~ z!<0g{*$=nuTwoyfDL3D*|8uB^U3%Ybz>PEMGSvy+)tX0dtu?&2<$%C^yLur$ks4u1 z1+w^~ke8)X+6;fVL*Tqk@lLAMpsfi(@d5>igy#`VnKqqZr3gZV*-v_1TD9uf$jtMQh zDHYWz&GW`g<327~J7&nm4W&wtEo{L+FMMK7KqYA=y4VCE!*Ua?azIm4HR=c)CX9dt zL~l375hlQ_bMqXuv)j5qh~wWIcn$WF<*YVIyk8ll7*_GpD?FeM|FKIg0L;KO$7z~d zi>z`-bPIp^o}G)i&+x(V@4}p*#fRr_&|Zvgx2RSgkN!ER^Mu4MN)*+|;)@_+XvmXo zVc=QtZgrDiw};)$anw!-f*1pR@S}RN-hGf6HleML zl{eHP@|i$dD-ZPO0XkSqKx~KW z@p@0YZ6ueqan7h#3e3{YkKnM#atwE_^R=-;T~P_;-)OieD(zeNstS!s)v>FTkjT~1 zU;Pc+#`Ac$=$GTon6Gq&qyi5HYwNb|IHi((`}0K8 zA}YX993FOJY9jyEGMrN*-DvHUkVHw9FmjOL)(8++%00ESRYN4dmq0+h1S1 z`v(IRxX+^7f|$Mz@_cUP3dxT=$*E(1N`a5w?-A$+mvffj6b?x>&uD32j!AYML4hN~ zf%`6N4^4e<@jok3=tiH>xGVRhY`XU{(R~FzwE73uo}5lSu(xwI%G3(V74wa>oNGsy zU`KP-xJq?6k&3k_jhyQn(ddb~D)noH zJ567e3U{S36pWKAeB5C=82Wcifp59IfoK*jJsCru8a;L}tFb72ZRBLTKVb29DsiJs8shxS7 zAldCx!lm34M^4@&#;$o*U>)cYa#T|yN}dAq{Q4`a^3pY}t1kzRF2-yx%|vct^`Zc& z;At$a{yud}*dbJ=LiMaEywrDMXKB4_56{M?YnL3r^Z3IS)OKh{tMqTUl9z3+NSKBhG5I)RD<;p;^E1AmClbDz zccOjHWwjT7=$alK%b7K|KoN z*!s!1Z!tZ{B|_~kP!`8;z%fOGGigBuC|w>b+0YVB?vYgbZcHSWsxVU4v5umB_v}Vj zf98h`rvo>HI8`0Ae3j`OP@a;`lf@TtG{pp|tW#wqSJ$ab!qLqLLHg=5^LTgAOScd? zYG-*H)Wk^GG__!VLHes!U4B;?9bw8lVR8l=5s=rBWQTv87I5tLoakTv5J4t~kJ3Jh zSnCX6pzk<~Pe}ahsY6-Tt?Y;ug3#h{{@FbesmucnJns95={G<21mKBMLPvNs<)jKY z!W9JsbHb}RbIhl)BHXoDeWE|yvC3!POL2)I#<%}6`QZB3XLC;qOvg=fOmg-)F60nZ zd)ulS&q1U|mJK-@C}Sr0UQY$3=ZdHK5On)H*Wv<1u?uAq$rEAAzMla zzbWTZ#?DT%MWq-gk7#n|c0piX71&bjn4R45>k0o6mCu`&28gd`%sW^VRl#9R$~X0g zz~m!N4PWiR7~q#^Px)*)7U69v`!Ur6ntE7u`nGjK=DRl8LR##1)}7Gq?q*dYZ_VV) zMKbT;Q&uNN*%qUql_BON{ep2Q*LI%)yJCzQ9O4a zhw^-L)tr?9Yr+n}g;bF@D8iDhg=9(ADyeRU#AmIeQf{z1Xp^;sx8IUI+v&u)72XX4 z9(A7yJ}VoqUie0grzn_}jJqi5rUn#-^Xu{u>WK9|V6NyFD71oI&LbJJ zc|j?t8gfiRick0`x#WOAmbO)sUd|@U3b0IUcl=33ey>Y%j$*s|D}Df@=9$Nt==f}Z zZ!0F~Opi7J*l-^Ql<%YEWvPdbdwBOxNGcfOn`nDzTMuJ;3Edc#ECi zNYM~RSf8g(>UNwE;lD!uv7cii?FgS#O%rPemV)ZG3S0Y|7~no?#K^$a4O;gM_7MHe z=@HEtu!=i9tv=aJ{ZucCq}1?+fm*xAvxB9(TjZ`$oxX3M=}A>CHq4FL z_^@U$I?Cj^D$%vF6UdgfWvK1i)}!N_4*|>X+^5MF_PZIjGn>gwGucjKghNOTp%LP%u)bW#w zMb6r{SlJI*Cue)Lz${F2Syi}*&U{q3 zVgtzJ?A!h>xa2P&a!oRqfd7l z9ws?L)I)9fTXx(q=DbGwjv@ehHzRJ=>Ic|8a{>v!dg-j3|Bmdn|D#F_bVLlRE47uS zow+LbKYD%}Mfo$0yX>hNsyVj`mFX<=T;toArR2y&s92>0^Z5@%k5Do$3)LLDD85nQ z&ZYWV`MAm0T&1@OKP~3FRpjE|*|NUVj+6pNT*-+Ek43u6%9Wjk?9}^AVzDg(AZlJs zy=1w0=A;(tf`$$^U9^rvUUT|_)xAhdz=v`Eg}0?k+|B(#T=f!jTK?K|G**XINw~y% zcpn`hO2D$=%j$R8=5`%vrhYnQ&hrNTQ|b#|oY-iE-qi)=i*fBc!0zPCEepraA4xF^ zFI$4F$)Z^d8GazVWNnHGer{yMwOL3*e)}!j3s#BSfDR{714xit6m{jXV6`-zIY^qp zWwp~5yPD4eAO|0J9+SN`BvfJ>No4Qr7#$|7OzWHD#rPKwqJfutAsVdLzw^;@m%^i} zaL3Ay;iGZa@E(w^dF3e9h#~s;vz=jTvG^p<@5A6S! z5luoO?D9ZEWznQ|g6TrgQoV{k{bwE1RTma^Tfgc742_qHSv(G5OC+4pFJ~{h2`C>| z&jAPH5yn}`11Hmy>goYky-NqAxAqc_c}qLMmVxs#N}2lwzcNh4oq)yB>=9n<{;-~A zYxHw(IE6qNNjtu0mz$SVnamnsDFlc3miPW0y|4ts4zb?>)IH)6P`E^HF+jDxZAOQ? z`wyx<0}WHJ6>Z~!C>fBzVFEkyPEo{;BhF1MeF@F%(w}c{v_YG)y3ze#c&;a$A`)nhFNyB#kGI;_0W1Vc7&B~O| z+r|5$&RpX5MX!t67PTZszi=}68d+`Jmk0)E)2u0-vGK4oMP8bre`ToU8W5PHSXVRs zzLD`N;4|^|^8}ga2ht68RIs?_JQ)%lKh%jK1YRzKxR{X^GM!JAE4v!Kdmy^TkGNFH zz%-m=8W+CtYGoNHR^$o2!Zj)O6HE7p;+t~U4{B?dM>(M z?c(y)9D~JPhL9POTR?dZa$6NOED6jS-}h!vE|+0}-INo8S2ur(_s{k59<#SfmVD$F z;1QT@xmUMJ#&-ADuuGEsl!*#51|vUv$#(gpT22x!oS;`8*CmOIEzYU;pP94uLc|O} zNFO0(LXTt%hWhR>f_GZ<{D0$>t{SeKzt}9)`aJwO#4Urx%t^HM9g;3TMBA(eBFKwaGpc9!J@ft=#f<$W+dvr!9830& z6kv#BH&i@`;ysR>#iwHVsQ>%sex4z0``!}>h`+W13x}ukl+rLf@m6B`Kf(A%_s=Li z1`o5y{THF&yYIdsg7}O|4zskB8o#8h9g`$cYop)RBfdNzylgdbN>N=XVw=npC+SaKXuBbua}DyB9n@H__eY~LSp zD%T3tA9?QJM6sE8rOq;|Z!1(s^e)Hfr@c3+Apa*G_#YkPHR`U+X$Ws}+19eHIIayW z0~Ka02XMYojlTkrQ=w-GhT+u4EKsWX81R{QN@nL=C)E0o`3rwgMGNbwi#3QyFxj) z2%)?Lf=qN-9P6MP)}UP zPoASm814m~J79nk;olIH(y4Jb%7Wfz20>S|7c&RB=7;r_MZpJ2jAJP$(X}tg*12Hm zh7!#79#(S(Zj=54YH3oz(;U^tF0io_bH9c(sX+kT7FMjj z?AD>(Q+oOF9^HVKqVUj-?mld~>{`Om%43R;VciM4TEGdYD;zrpTK_iK8|#@t+Uru9 z^v_E<;Z&K;pX~et+q)EP7`QmuH8uIGfQ@n%xO&S@=H*XFQ&kRTl?1S`!Gr++-gf2q zXGuc}?vJ-E8{K71tHAPw&hH!289ZWh8Sc}lo;KtbVeK}NM$~kH*rke_a5vUKT*Ag! z;dm&VReRGDT*TxxFEwtBd?f6#DxvT6MZI-jb^21ECVpw;mOq@iBvCpwc8~H6Va8OL zfuWj9)O7CVY5;WavB;s(;`+i zWr53I+LJyl`gV@a#|J^5m=^w(cEn7#9lNM@pNe5+In$4v1ddD`)%_Y*z5vnK;}x8w zJzQwMK{z9Zr+%j4wqw;Z;|k&_?ut+v{5YQ!wguk)pvI8Jg3!6}a-Fq_I(8~%U?FWB>GBt%w0&U)7KLk7?Yru zJemhCVQ`%14#gt7!%Tw0PAN`tswy8Jky)SK9n^|*DoBD<= z9;&{tN`*3(MC}{l_irkX!8g5riVs(NeP}O>IVsa)DEW9IW%W%)xA)d0%~DZfNGv8N z&xp=LZ@~-YBP3M_Rz4IQJ^SaHozW6SR-aKd`Lumg(Ki~9LbF-kcd@t@a-D2kvNLo@ z+hsy_ttH-60CxEZCA$LMK+02yYnaAuT_nq|TzfF!fjkb3hGJ7hGC0<@+vG3v_Up7QhShxW?!z-l{8XPPR1}ZUB1)W2(+;*s zpR@TC`j%%%HfyHuCRKP4TnE+3An_=UJ^!w;&RDHDgKNlb8|G=czq+(X!83~OYLv9a zr<>hRlGiGTDoNXIh^XN#jj-yTa}f!J5wI^q{ct3KOljhcw$!La%|Dv@Esad}WS_UjA=2<> zN_~vRU&F4Zrkm~x$-@~0_`^(Ne@Sk2XV^T1Njzl{EvAeI0}hgm2U#U}t{(|kX$-Tb zW3aMk)lZUt4Uh{7NWS%bFxe#+b0zp2+ysL_DrN>Pu&2A?-c}B=cxqW$qmuiLi^G<; z?3bZnoWOpU@3+fdM1@uw*+r2F#I9Lq;AP@l6mIV+yzwf8W60eqGH(C8)hKgK1|EAF zDEU%|NawP?seK8lOVs~n>A@i=?pk+UV!rEDe+YE;Z4EhCyA5Yn>Q3_L8rbqx-bM>XkPS&n&Z->8gZmKlzqzg}&;86Y%jTByp-M&>$dP zGdOkS)6H!fN(fNemQ_k5R;G@bGgR&nm|sU|U5Azshr_x*m5-VYd5_=rf0b%wgg2Y+ z91S*8fUPq6d!M}3c7)2YPQEGHn2{sD-*Gu%ADWU;FI9Xz3w?OoF!&(Jc0fxm-cmrj zQD-F6fZ9UJW-`d|bkW&PneMRP#l%asg~5IDgRib zBkg@&K>Xb3ZR+x*+^tx^j2Pbn-qhO1d+IzOZ&7xP+%dbZ9pwoq&*Trt#8yqUHP^^|ez4V_&LcC{Q7j3E z&R3?ur#ty@G((x;1rs+zUwgXrd>%UUj?Ld5^(G{cDiL$*TQg!~{P{V`lj>foe0G|= zuTwGAJJy>(9=kR@BXn7NWqeo{m4#>D@OHeslH{m59%pI(+xx=anpqA` z)Ibz*2>&H_m1iW}Rw}cPwMH0DxXLk%k!61Au>=$r_mp7k;i=sr0(=q+ask3jHDyuQ zIiTh_X%Z{fF7-^IfsfCaqm=mfLA1^Ge2~KRvK=gbXHmr|i4ojTHsdxF8Nz!`D$)A- z5Dk(Q;i`ie<_B2JR`?rP-_7yS=6m#wTeJUh9_p%Lgy6ku!?6O28i&oo#mO14xNfmIzct{wrM$YV+O7)Q{sw)71*UzDEilhYnER)NnQmC| zRV6piV_23wncamK)V{&3CLoMli957qT=6-WG~i>;5d>B_JnYOi)EA#r9t#kzi-ny> z4w&`@_O4qhG!?cj^wzx3xElFKYBtD#K?D84KQ+5{I-d?uH#c?#h=98SgoC-bs$1q< zZN42ggz;vUxk@c5$pS{2sPDCyev?ZlGP^yfWOt<(ncel(HhQ%cmTXFyM6r*opVVDDl_c)3||fabjP`pcI}5d{fl0 zs{6gS#xO0ohqB=1jX~Bfa$A<*y!ZtiPnk=`!ZK58paM*_kKbgw1DPVmuTtgb6*~Ai z$$B+KNcYYQzjR7^Z#c}iS*|vixQvq2M-Y_1p+=F`-5qo1m>T+!pXUg_?h_*rn3OmI ze%wSL8>$;g`b7yX&y&NJA~4In1gc?X^Y}h<99Nnx2+e(8@KrS4DUDU)cBtetokKEE zH+=#5`xd*G>v|X{`ROR&orjAoA#2G1ST=PPj?M{o4-V(=Y?)E0fQxymlWx&{)$#qA zaszS5Xm}HprPJS-$1%#YCC##zXfhG&YDlw<{LhNs2>L3Ol}^6yZJHWXhYE^d1EFto z_8ENH2#n%$)z`L-#qp6sgt4}alD{D5SznVmXXv?Y9ZX92T=k?omEFI|6wx9NZ@r{- zjGHQ8r)A>7O5|_<60Do1gdj;NEA&!)gvf(sz%CpsCY6V0A97c;Z^C(S&VpRD40Tq? zGuT+E&~N2wk?(XP$!8P;=S6Rg=qhcK7MY`5m1#CLgJU|rjyT)2_Y?+p46Dcp@XH*- zGjCJ5x}eRHUrQPTclu#z#STiElCr5AOphHHQWJs``Gbg}6 z!8wI9$~EUaXCNSSVegkOoR>vZ11#(8)iD%G@MG02nfQD|vYhR#EtEQLgl@yiFqZDG zQV8_z_3*G?V|Q>eq01Td?Hif)I|_@h5yLZvw8Ub2DQG?3(nosRUPj0)&R<`2n0RMA zd$L|7l@PJ+`F0&Kp`_s*#^eA?fWgh`YU@PTeq@lOmhq~;RXF))B7qp`vC_ngz1OeY zEvPF`U*F>`6E;1bwvq%Gh;*s~7te*z6ot&BQbhxrR4&ua#@ zq}~v(5G_h;iHv+Z*6Z=hnV4L$IMOr7!g6=g{c*D~uJmhKpX0 zkpan;FyNS;52*$X3sc~_7PJNz(L{4R$nGmhJ6!OWf={y~2bK1ekL)SdPtm-Ha9=#> z@eQSq4QHyP4a9}$yMK@-m`&{JAb00$H%VW$RKE>N;SE&)9~DKM0R0jtL&Cf?50Y57 z`qN48-*F3G)vg|~3NaG~G&y`q{W3810L;C)HuZ}{lGwHrhK>A7z&6Y-eIw`JZhS>aZjBTNOsi=SCfGv1JiK#4vi7IJp zc@eet?s5$?fom!uEJ$207)R*%U51^b+XpFL3b%RUPHbLQ4FW(>ox|(Oj3~pC8x1C( zuk^t3kGGkiMe3@MIjBob9^(L{Fs!et=Ppk}4|9b)st*4Edo9TqC;MZKm*nuC+ZzW+ z@;gF&&hd0Z5|D;R7QuoMk#vn9_Y2EQSut;c$*A8R%whQO}XzSXg|+GF=N+H!r{ zZ6?j@{!_5z|1TM53(v(Abp&k2?su_7%;XlxitD|uWZyexa-SN*3u0x+oy6Rskbp~1 zu$TOJsI&mOUm#&&&=@=2!h^psUXKBVNVNm%x-az~nj?~yIBUa|wSvQ{unI#Szg-55 zNEQ^pqt@)S`j3RHzDik=bB))~pP$`*S0?dLDQP@4j3$NGH8Vt;EQC=Sn?8?KS~n$y z%*U43@6$~cB1|EiQl0)8!8voDJei8Jf>bm;zi1V;$-K+-t~^cMl+eh%ILSH}q`^)d za=-=dmkxONw1X;6>?&caE>V>^x#>Upeg=gmy_oNQ$yJXq^ibK9`U)64^q=oz%3$Id zvha7D2U%D-Cx=XP8!2vxny_Seo4EC^zv|LMkF=gwmAe?}Lmb9c%_o`<|C|^P()$%= zVNdvg%NlL35{h`YzB?>txF{1XjVx^E8F8s3wxI8BZc(?VJFlMGwPZ`{F&8lx=csmL z>Kejg!X|c(=3G=W335tQT7Spzo6%Y55pRC@k@lnHpMWoE$X{yf+zOE<(3}pUO5|tu z>zII9K6K~MC$6pI!ahIrO%@m0K1fM9YXR|uJ246q0 z;SVHcX-kMzKsR|vK8(%&ZYqdPDE_fpd`Df$Mr4wpgo<;VTi2zerC2vxftM>|`QP<5 z3+ng^%5)LB2kN|`yS8E3Ej=ZkZ4P&BPICK+iYzMwYe>hS&X9%5wQ)vE@?ZS@sm0s@ z-U_ZW{2|G>cWi`O-kyq-Tm5Iem48`0-|r$Z{>6tQniw8Lo8FG9sz^CucbI)v@T`D@ z7g|b7GO&Vl`7}y>yRxHZUwKq6@^*3t=C$^9L+b$9Mb~Gt>haUMXl6R6r3X|;5j zd&IFfrCAAQBw}ggFK9dR*<&VB=&SZ(>ATbB#ldpmBmOIWkytK;3J*z#~y|3{+?#d9U@6?mlG#l z$5vhTSi3Xdf)g+*Bv=}y-DMpQu=*A>#H6<+S~=ABVS7y|_psp={z|#>`Aut(J@Hlc z=f2zT3?uuph0?jbd=A-~3TEx`q>ZZ4D6)mg`K7O_v!SEag;@|nM0SPzvn@(;*+3z| zIerqqn(zDZs5~(5e)yeD38VZT5SXK^HmLr9ky~eSDf+BOxNf>d=-+%orEuEtKb)nX zfdPG(VrD>Vg@^xqA@LQ5_Z^YzD_I+SQlT(*DHI*>_13SO?|VY&?ZWLQ|L2=$Zo%Py z&weU%=oa^!6@mX>ViStAB=TRZg4DL##(8pG*xc<+QXjCS`A)ag}KjnhF>GsE$A$-QK( zK3&q{#QtO<(FY!(wqpD}sQ|h=h=`A-*W`WBfmos?XmLC?KdPWCYIIw=o)X6Z)O{c< zTAe}^>`Q3GQa)gB=BUv$SGzQFRrCY?{nf&`*IH>98KF|tq%5qn2QT2;Sa_7PdALIZ zb7OHj$av&WXf1JJc*__S5bW|QZ?cc9C0)X@UxLg!iuL1kErwIe_Y@00GQ~jqO#W(} zNG-b=*n{~uNJreI#S3^7lOvY*#2%x4cqj$?#bmo(xV38RRp&qLDA0N}HBH|ONf@M_ zxg2NQDBXkY!?g3aZFT{&)7w6m&hse(nytb^7)u5>PL-@mb;-)WGMJSLDtC~5%I^u+ zJPr?WpA*&XWGjthK`enRuhB3L6T>tfc@LM!npxHCx#SIe*!rF}^dNU(wl#M){I>|- zh8XjboTYkRDtx1O8eD=mr>+|SViDx@0QBX7`(CdfdG^MKuLaQ*4lj3D9S#JWZQ{Hr z1{yzU-0ftm*MNJvS9jSQof12{-nP5M*?mdRoYE2pWicqxlC{VhxDZ0F77(Pwk`#vr zQX6@f^2z0#Regv}5(Cb?w&(*R&itc&xRQ+&+gY~rx|qH7 z5+BtgE&ddtKulK$ty9KRa!R?E41HWmW)>bq{GI(_xXZb7uuu?@gBOpT9E%a_$U)Q% zWkeVy<}1XflN$Eb-#*YFV;t+n4QWS?dz%!SBkU^YiLv#`e+#7XbK|S#s6fUn?`Lm$ z9h61vRPYpiy|d>0#T6XwiwUT3r0cV*)+o-g%ow>Y7pe?sxK40fhq18t(RiAJ%u<6} z7k6r_k4T1!Ic zd&~y88j1HqUx}c);%FU*p_n3}Qnk#oZY14hwdm~de#2b#qy$i-ekw~r_z7`LoJ@I) zt1jWDzhSH@2llZDx|lX{HGF9NzJ#yl(w~2bYcA9uZw5&@9o$&M``uW7Q(5;Pn0NHf z1CA407d1S%N&RpWZB%sXA#eTo>@7ZA@#Y%)Ur7^E2CnT^)?t@2>8_||5*df8^Iv^k z!FRlcTmD2P6y)2tVukEy=b;R}nSohmyhB1UIoGJRXNlZHHOGhc<-zU@!8EduzWFFB zCfSymRo1Mo7=KrPL$dJlEShNUiHorVx-z9zfq36a)XlifYofNjg4ag`AiHlCrF}((E#(m2NJ&M{B6r{@+1v-3f?CdodSF{wXFs1y8>M(JcLbA1~iGAtxe{UN>lS=|k z2p%N!ubjiU z>GVAgqoi$-L(sn%#q0kn0Yh=$F=Mga6_3d8?q!+5rmSE?lYo3~l@IKwS}+%!yI~7_ z?omSmMRm|{(fpZeuXFhaN;4$!BX6>`lW#cJ?ghG5h=B!_^mm*Co`7mJi(-~ps%9EK3l7ZU z^LR;_e9N4Muyx)Xb2W&i$L!u8;t4H_N0~E%QNg2<4X&u`@zd9~DB35yM)S3;Y+@f^7$-LHHMg{T2aO8DO0mT%sC#4_R^0bwLFPZ{QmHO3V#Z9-9mR^ z{==pEGX1;M*xO8dB5Zy_S=0-D5K%cFClvCMYMS;c#(*NS&tS=J?fsYRN2O6Nu9SNf zA6sa(mV;oG2-3o*sdwmeszcbuqVG_zY(h?`4ucZLw40_;@t%8)MAFYvl0vU3rSWe+ z9K1P=C0Xhr6hA}&01rfGwhoc4=C>^|3A=YM_$nR*?Oxulcl=i%i5rCBfQT`1efe^_&Z{uI5B5JSE~CwLo?r7!lXpr;pNtHURI`El=-Y)r>>&Fe1Q?5t^M7JEC z_rvg<+pm|_=EkF{P5}W9-zgr^iqrmjBTp&Z^9Y60jZn)%zM@7r1cA)whLT0J^t~Q9dU(U^X%Y?aSg^<-QPwIeLK>IJ+O;RYE6Pt@9 zitMM5v_&h2(p%AT@3OGZlJW|t-c*V8)pC!D?ERwFN@?<`FZ)5Y8c9EZq89}qY&PWN zQa}7gOJnG&-zMsq48Cck?=?opKNh+3T3Ovl_kF@vkMy|!jM=n4$V0aa0D%FzX`oj6 zesD^V4sb<}ZbP~)Oh4H++X?rqUAn7|g^toR&?AK&uarpADf~;e!@KDCy>U>q7GC zX)43`#|Iu84ukDNre{9d^6T?t$3Rv=f1+})WyhkEkmX@{*9@LFrrI4`$X+u;6o2=3 z6ghK$T*kRCOl+7(-i}qCk(@+1)=u>S!#yi*t1T{>ul=2v*{o)QKKgC@iMR4{3*01M zAG8Gy@ujngJR4cW5u5BJhN(~s2YV^%uR9JNCJ&8CjDDb}{#(HUOS)9mMN{=h7K5gt8$`>{ zyqUX)Fec6wxN+2s6Ho#}wTHLUIeNBI`TWa9o$Khwe)my06-Tz}^E_?O-Pm`MkSF^; zMf^RDw2@-<&w)347Eg{^z+gQ_CHNAfC-qr{HkUG_Mv{`K9t4I9?F#ARZw%y6yL5WH}uU{)JI35Gi_`1%KuK zqlo~j%%`3tkQ1;ZKK@7UIZgd^MW_$D4RW4wU^Sf`OlZ!fl;6J^6YRrx;&Al^e;ev7 zm4DWJ`1?r?SLpAjZq&q9$KLMX9J~O9z;zexukouFoC@tk2OZ!5HCqu3Uu*bWd6^7F z{?@1T+s+qyP0=_cI%Sv`2q{u)b@!`_;2bF|R#R!#sF4px7sk#PaRLE?BNeI;yigjO zjTho&?DhHHh=kWk^%y5cz=M;*9|DQM%j}h42}<4@6@+JPzGnKZ&OSD88O zS~eE5>-j2|x@0ZTrxW;%^B|BIoT{hxxA)V0SNV4cKc=2$z9__1JVb$yl*SE;?~L@~ zp;FU;^pvQ}BS)aievHb3hs?swZT3v_W5I-`nT(D4@Pwn6FH+Sdb}lt0bt%nJ&{_#>|N3JA z*z{)M`KS0R6hxJTE3x4RpdrckZ^Y!br4M}k&hpz#*FweaTN(^Yzr~(`;IsvnK(4yN zIRVrR&cmH0j}X}`klM8@9M@Db`6_U*q1W)2!{T?#rsdci;jJOFdP5INm}owvOV#*d zZ(X~EiV(8BalnQ*1)@bo>_!Ww=~FEi?XhnRfsr+A+;5aGYy1U!V=do=DD7omB}%Pm zLYJZ{Ez;G=1fuY9tHH8vo3S;&csny1qmFc5ki{79@HNjJ$5jJIl!v`I4=E+)wdl_8 zl|(&9dLHsq4qssSI1tW<3as<|SqI8L81gEaQf!@X-AhsA`PU}kG{n7`ThuilHV8ii z`BEdCECVFR3pU8S@#PWJLSR)%+3{Uz@wP54jsZuf$VX)nV_2;O*_5Hiii(@zi~OKJwBN(4nRB1tk|F0Q1TtI%u&rBZ9c z6`G7QSBIPBe3iazlcr==v&dA=S`7+riPGQGqLj9(Cn|X_EtYF8tW@1TBxlU@F3ALn^tJb#XLRVW>Stgx7SIXb+=vq%-U4KcUp}~ zlsx z$Or0<>!bOkIJ?nI!=3h~B}*&%l8|(D=vYMzt$$6{z6%f#6o0U_smBUfiL0fuO;i;1-Iz1_%zpy*vNjYyH<> zMwo{=q!T1*$~lbQNmtoY`^~OfYiDa9qF4kc`C7Z9bR|Kw0IsF)XhJ|Qs@)vr}L&=;K z9o0rtPKfh6J16xNa$nv?F!ft-s%_qpbvkjJ74dal7vTm%22o|UCtSuqu0N^&qlvh+ zh>5~NnfUYUHELTtKy>yiQJ|{%09kSbc;i}1HvFJ=hqfIZY&XKt5oJ&)L-u@#`KDk0y=ZL>N10c??w5UyX;k2rE~^vf7g6$5_9fkWN9JA zO%C8-@N46u`1i@(N4D<%`>KI`~#N!Mc8q&s3)!Bn={*6(c9BA)vM)(Z>{ z2O&}YOt-%Y5}z|CKI#em+-plc0&|y_6>yameBJDE4|P0@_ue6vTt1FeR^wfK{x;{r_B3(7ChEpIip0mhHUOS=9gP9MZib&V4n+O^ArK$8Bh_aF4~E z0$!Q7QdvfALFt7@*Eb|6ad%2HJ!_h$qAVIS8SyDAMDcF-$PPv{uBbgHbzPwWgZ-;U z!40iOkmVC3{JFHTytIAEy(sjxc4rXo`FmN8~FO<9aB<0K+~QA&%Qy zdd@U|;!zFCOmw6t7ixaNfgAJJthUB{Qr)+^r#2~55<#v@1+Tu#ii?@T&G1aKbqOPP ze=}ZcHZ(<6Us64A0*gaM@B{Y$ftZF0qwit2<+DWr`Q+ruW-pJWC8=X$v z{N7%nz`^To{!n0wnSw0*$V@pd%8Hk{{D}AJb(RR7Q%W|ri-OcBS8mj04s8Q<+?YV2 zmtLXuV~~JC_A)+sKKF)c^4wtlr)QaK-9NmusPj?&8~cae?B#eETU2renN+5T-FM1Y zNi~kwpsp?Ev;zy|pCGQlpGDNqcQWo>NfBfSLP$G%Z*g6m6+ur97tMX}_$s?vO3qNt zLdtrIZ5F5ASQ_K8u_(KtB)QNI6%|#&xrg@VwSvB&qq)~tcdAp6Z*^|Ulre`0rDgok zfM*zGknO$tv|>Q{^=XPvH09#HHx7-Hahjq>Chm_0y8&D?ijdB6WU6K&x`4ll+rhmp>(Olv|KDdjZ*7hKna&iSk9b@ zfLuag(QjY*i*Vbpz(8Us@fOVWtX-uA)`D z@*WaJs;4-zSs2Jrks=UiVI65$_L6zu?LjlMTPv5T@*K4k$`LoC?kc-^pI0_mb0@*v z_hhMzt0$Wz{YBne-c70k8wFv4-}>OCQo`B<*cE|>Tk^)?7&eA!DG$y3+Elp;AJ@H_Ew+Tkpj%ag%Ct*(T*w-~Dwor!2P*hfH=8t|-Y&cy zq~u5IyP1*JD?D6dfDhD727lmJs$m?&jwBn`Q;7Rag;!4P$K|)RqvtJ$K=P|bDv!}i zltsE$&9~;gQKFWWn4ubAe`sGI+6MZ6ud5u53T0uYkd>%RXW+VgDmp#ww0-mN)nvoY zF}8_qE~M)U%Rd`Nj`GpMI{0Cl`<6d+L?-aH=imC{xq#($e*tzYnMHzRZ+=57{EF8mtDpsIlHTvTMe7xzLasR)sue$lB_260c zLUnl%e*8?*0(X(lIt9PK;H{h_umS>n@vM@vYS*iTSGU zG1~ha8aAWQ<9;R2<7-@Z_j9x|x|-Iedml7GzKi_c7tL=i>p$JMxMo#m5D7hq!!sqM%**s%KkK}va9~(dIlTyl zFLp1%aY1f(sW7j9WFZ4U1pe1CMLllI?ir7m(!40@x(581?ho9fX!3LU)n|Pt!(uxCr z;;hSQMu@TLJ*8zWq#B~{U2;{STjsxJ5CE|@Gu`WfdBT`lHpBcWKGdBp?OF4QkABpK#Fi3RR-Wz#+zs?{|Ic#G%nJj5Vo!-gS zaScz>o2lF^(-{BYS3)%Qv7!r!`$g~stF6<3J6KRcBbFi8Fh^r5j=Zk<}_@%8jbgz1UNYQ^_lS{#|&HdT6DzEpePI%{RFQ#qiZBw^6KVW-Bp1X=7GI)kHcJRquHgqn@ zmF?0g=ZoA;9=u1xIO*V0bX8*j#nQvDe@11ORS3B{OW^Aj&mijPXHjR>dZ-rdrCbC( zd_ngosS=-oM%zj;(a0LAn6}@3Ok+4wWL&^{ube$m&ror{wry2HzOiLADD>I&pX}PT zaZmrxZXgYZt5g03>56NYxY=$Gs~_w!b~$=9n{gg80DK@^&}W|ciSv$VjaXV79b7IF z?=_H3aK`!vwn|~{n_VF=QMr0*6_v}G3cJmxXzYM>qOs|YVfcWUbSjP$z@BSVLgFm^ z_$AHUfVYuocP6YG#{*y}`?CZG;PCC%NH0D8-;tgV*uwLNiJ(|h9@}Z;?6~3nn-f<4 z`R(&YBs16~*~&;~6X=+QpPd?`8P^)JgcTA-I<3ehY(qZt`DpumKS)Kr3=h<}I5@NO z@)|R&YOdrag-@nbR6!};G$y~RKr``Y?-OW@%z0Gxv!BMQRxzNeZYG_*5;RmpM)@HE}0mDBMq9d(uOK9ah8?r{usr%Do|62>v2) zZyb~@YyK|-)|YG`I^_IQIUmaE@k{+ugR4%=Tjk=^r#Gh>xiH z8~qtD!$b(n1ZtGzVTEf4OOOp2Awc+>-vc-9i?f=2FUX%hoopfVD*_9y2Bq)9IEaTnp#08%I9*xZ>;JXLqqnosnjU~_RCU2(;m=8mBph(8$tYZ* zsKOX;zR{1+m?!oCPwR)#>(=?itG@w!ioV1B$1?2aY9jMVXSLlFh;?>H&HUBLU;NB^yEK98y+t8^&MqtHxJoXCa4$Thv?OO=butU{(eOKQ8NLG3e zIZ_OBEV}Mzz9(u^dhXR5k!`8CAXC^_0xfB4mYom)ig-H=>?F+uf3Gj)qkQ8e&+zm} z5EwT!621Vdj5MD0UGPs03+kY=ANR3s6&fWNI#4T!w@N7ZwhX`eoG{}_YR^VuejhXn z6ZG(@m>@mD7CQY{tcl7T%6ib`jB z5g^>k_xy0;rEh54A^N-N$2Sa2-O{d};LLL7zHbt=*fd=Tl@wPo;Tf&1eCZh>`Be!j z>(+v366XlMdRDAm^l@@ zAUIfo2=L4oX2Fg*HaFc%btLOCD;AN7hnwe(p;D-GM79XxYF= zjn~m25eDh&DI9x~Pd+t7+ks}KV zr#+7Sk`_=Jb^4ocFtxD-{E?c$GW@JaYAA$>rfLkm!@0l;C>upZ2q`NOGMALYQ$5er z-_ra2rrB_{3Z)Ua8!9~~%HWu%IBU~LMdZSx5Lz(=_6?JB-m!&wV$g+=a#cntZN}SV zzTRN?h%qNG&;bjiM!M;em`R%KdYrqBVD(60-zSI@O1}+|4T)OpSuPnq#SY2zB~nzX zFl&2F6IX7rC1__JL%TZl={5&Gt{Ne^Y_#4HDq@3^C^6xH6qQYD5`z6R$HXU+0%$5p z5y;l@b_GG9e(KvLe^fwmTq7~*p&s8~mGS2MjYIhvN8i_50jB!An>NVu?)YkEi2^G} z&VN@9rtUM~3F$T|2WEu{a#acylVxY`yy_vt_5X3A6fNy|afXpFg$SjS&JiCLSE>)gd_08?i%l^6e3=CEVn%kKa0^niIg6nkkttQ3c5e_i=}0g7)7@^IG24P4sA8 z8aOFQaL53{NNQc)YZioPsvqCWn$$ z4X5E^-Q1T3u@stF6HGUAn&qj2R!?7MsV75N$74=4+k=>k)Docu62(Jb_9e;Y#ds+5C~CoON4gOc^?xYPugybbnU zP9FCC?g}29Rl&e7A-CG1!xNz|2ecKyy17iu862arr`4xCUy&O?kI;J^u8qZE#nOWk zsM7M^=<{Ovi%Jy~JnNZrgy%gDFCbU&le{n-f8)x|I8>MjpjO`$F|O*CYo0~x7}^+| zYoVD+WBW$`QdH{O=d(Ys(WXW9QbzTfdYD#*2EgvuNqh#u_&DoXQ-3%4&}9BOqXu_uns=URJ(u!~AK}mSt=L<4BZ;gG@5R`;n{lM@j0P7QAyLS^ z)5PFG!jk`+&UwsXutXoC>|K>$^c!ic9J*Y{i5(VuAI#*b&02Z!3mxZ8hC*-5RvQyhVEdDR`w+MEuy*MZu#1x)92{YpozO zm_>_ie}$o+LJ4zS{y6GrX7RVbB5ZW|+jXtu{NU@77%N3=Wyj~b+LV(e5RRH9k=^i` z%Ri87L!Pg%Z89ES#1o0D^)4i1@$$?lm&^=v(qf=1d42AVAg$vgq3pbV8tnGW|51sY z6i;m;Oh-Ruj*lNFq)Wx6Ea&PxUus69<3`4N160Zi|VZ^=34LgEJS(t-a zdvTpJaHe1uz*Xh+CVq3X>$+S)^iqZ0+J^(n)7t!IO~9;DsG~K=p{i;3O-!}OyIy^? zd?QH_7z7yv7kSFG^c_b=1PHYfs3;v>pkA^Y15*~Qs-^~0G-@~xLivpyMy#6)%!?37 zQT4Jt?t`lxpTduS2i046jwU~At(6xV2wPyv;;5Maqkgy7D7vtRsuoHtlob6A>KeUk zi;CA^cbxh6VKAop%r@fDLh4~70D>j$NG;VeP{APv=-RxRBIBwta|jm+u+}<`>K$b{sW?aG@ zwE#k@q55LvmQyn#lDHFW4+H(E$_pUrQq!6Ntw#gtcOOE$eTQ&?#yA4<`xEpufuJX?0k8w zC}E${7^a|Bw2AFthu1%RjjYVeVPx(-FI&zWZA0!q2hqs6-Z8$uQe!Lj$> zuMyBZiOL0-g`YNY^~g3BGps&aOCx+=PQBAd!p;4Mt?h4;McGgv=|0tJF$4FkxVNuv zw6Bd7STCKyZjir-Syl35jUsR5_-&)8OyCib z9@47G(4wb=4YMjh>RSX4V~zB*M1MHbP+d!JRd8k$H1XjhK9c(ao{r(uVSDO2xBSwE zlCP~`5cHAq7c^-{X99+9XG?^_Br5n59K)fi=3@s55`UCkI&H62JyOou2n(QYH-flM zgHJX{%v5w5+#a;WcwO?Ach&A~wIO`ccaiA2UjFul|BrJV)|@F7zP#AMTb0wId0!3w z?)v>UuZ@36E~v^%*!dV%z{*z!23N_oFYB)=qV%@gq^5p7pht3u{}+uw|Jk4skucV? z&e-Ve>An+m=N5X*_LwPdDt8hlgkp3w&_0Q4QzFbp&I4@%i38>`y|1a_O)zKqwL1w$ zx|IWMVi0P#KkA(LYg!!LXE|@h=l%z~*yzMSA6K0q6Vee?|7CoDrQF~^KY(7UDsfwl zu;uC5Q4sw_%RNtv@r_#lE_)c+GQzAcJeQ<1^LUk`6|iqDGb`KZ|2?)XLZ^nMXFxKV zA$s}lYKAw>WH|a36B&grV?J}e5(;^| zD9mygLr;Jl!0&U5Ik)=65_;c-*RXC_=8c4*EAHpwf8VR5;U{L#T97x;)K4<`inDXI z1<+*r2fPlBA}+!lSpf>AavZkqT4_!89ckbhYO!AB;DUT-m9Gn<8WLQPgEgGyTMeHh zJs6q23JD-Fg?m|^6V5m_HiP}t7WB&o!?k9OK@E{{=tf(irT0yaVqy55R{XhW@(ut{zlw06un&o8NyYg<`)g> zs(ZzuWJw8K?l0w0yo7O?>v~v{#*{&0a19@lolwa?_rb-Tu!u|aEX>IQ& zgFx2%t%&NqpV$f}(USNW?S#CZp#_KJG^R^QF{%?hjuy|4M+cf_>`366hh?irfnvcs zO_}v_{Jas!^)EEo2>jXB{|;TjMI=CyFk|;vpHl2s`j&}zai7R|78k$_U7UIEC!!PE zndMH3SPmqe&_yd73%^~6307XEfw~pOMKMO0?)O}o48Xl|Ua4`!*39Q@yo*6hLOBuD zH_s^>VgnkoiT@#Zb#sR%4FFanpCgH_xPxFD!}j?bT7avtphIbA%X3R~bd1oSalx_f z?-Kj6f@7WPb?vcBnt$nkzUMNYFY_HZN61^nBW9?~R7+0HDA!YHN#Pb6Bwzn?kdo+c zu#9%JqRcD_IwS&+>U?y^O>3%uene0)HaV@}rJBnHm*<(*(rcPq-t8TO{=)>4 z-zd3R3bwxDx;76D7L1vx34HbbOtW=AW~X+LMP&~MX*o!8djjp!H#v>d)R8KvGM^;b zeUY^vfmO-hwO+(I~gEI)*w} zr28pHU_%jYwwMIAsxHMFm~o9nH!+nkVPaljmf=>5P~UbxnJ_U{1SdRc3tiuv<&cHW zlAJ*n2Z6F7*Y2Khy-c`AfZtbkbr!nlh_SGJx2$q?7uCdVPOBg4GiJBhbl*)fkx~(l zt4!Df$)fVajBked2sx!RL*L=;mf`pbTgfH#KrOQ7h(samyhYp_*@hdyWSS*MxhJ2L zt>xYAUtG!t#CgB#&qLXQ49$JoSx3&x{=>J*;m-Kkwy5d<+4hd7Eva(%J?~| zeLw49!F>4F&Wm$G@8V*AC>%iNJwQp*4Q&})}C zhGGR9WN;Ki$&A#Kkz_x13|1w}i)F+1o{nY~p&;#@V3DF>!Y_p^ijS4LnR|;23fiuf zyCA>(i1TpR0Bh+4@-lImzg3K{x1V$jiwh0Uw_J+El_gNkm54B2-h|GBYZ$rju+i<7 zTZq}7Hb~TYOZRx%ZpHF1Mwa^MaG|v%qsp108(oi`mK$+)j|W>|2I+y4L@72;QTC>i zterK3;#cBLvj`;d${!bU{A1;|rLXHhtZ7c{B_3SVG#-YpIjkZvC<&-aW8Y40-`e2F z922y+v&|KMWvbcbe@M68tSwggfu+2&HudsNxvym-LDer4V)u7ftbksE510Xpl;=d$BT`; zRhy>lY@h}1waAZN&Ym3IQ@8oX!UcK)!@g;?d7&_`y2ApUjXf=XOnI#Ef1WvdXt)30 zr>RoIG{QykK_=M`yLY+cq&4!67vqOAYt)qAAuR+G&idm<^^m#u$e;(ALA{lym6jmo&H(%9XL}J9N~gYdkx3>>@n->SJ&$t@P4IS6wPqko{quby5b4}qM#_H|B7PiEAx$fSDu$y9nZlzSVKLz)xttMXIiIzGF}?Q>^XJ4Vcp-Mz z^ZFelN+XY(+^MEBMej3J)P!{I$l7d6#%;{BCV$#}OIQNLd|}Sw5KFcSTkH8T`o8=S z=$WGol_D&8{Fs*0^^7`fj6>qE*C0h?X{9b^(IBJRTm+vv$&=?D8&uNH{1HXw#ia_h z&ks8`Px7?+r7hYsS^6>xg#S9$XSd^>*>+)2pBiQB&*u#yi30j((SzZiHk-JIy~7R_o>o0Xsb^>7O&CXsH8-queeb|PfGipJovhH!M4+FUnb z1o8L&^8F>AE#;1dNAHQz3UHewaRF8L47Di=j|88HFLMcPXFEiP>NhWpJlMWbXC37# zeQY`9G5pCjONHWLrnLFNAInDTL0C~y(d(jOWp|Ka{zEuczHZ72VBI_*lgj>HVsU=c ztyU870X(J<#T!1OTfAg}9-NXJFVGqhFJvp$mM2+G0Hqrvuf!zHT6`Tinhvcj7U6e_ z^j_Lq57GLz=NA)t(NNms;!FKtotgB_gagM8wb?K&2&dJ8Q*x6porBbY*;ul`JyXvz z2`^%_XdcWv+%nYz@rasT=7m@YWn={{OS1Qyd~0u8*k$}J*=u+iP)WADTvZlZLxzYP z90e@h#%O17CVB?%%uM;U13d_$qx2}E+s%j^1nuoiOXe3r+i?p4kl zGmGu8gARr_gjZF=p0=5?)Gx1M>H5Ydeh;Z^|HU-ltjGHd6>5mCv0nCSE_a-^6AZ!8Lw z&jtI_(RH8kPH&&x@6Rx*B$DCeV5E(wWb}ZbXR3@&IO#`vm{>ponoDQv2C2$*NQ?ha zpx%yz1a@2!oiqmD*7w>vDY=$!{p)iORuC{(7aX&=Bd`$&h>fghlj@3@eScD_Wt8Fd z&fX#zbjL&NpC$dpN_35CV60nm z+Il-y3;&vSkvgR-*Iz$MK!#6MWWU>F78p6e&l;wWs%&0?Wxu)T*WLe`9AI^fRP;#0 zmF!q>$Dg!6 zrRQJa|J_z$yv^OdU9%6rr|`6Jn3tF$s@g2Kr>|@jb+>VQ9TGHWL$QuV{7{TF>2aMc zR|lsas;Hn#WortAiLstz8BHg@NYG(-Yv9S(|3jUlr-~2PFulypgL@3}w_@{Ip0(0W z7T0hyk`go_9B)4ND;*x0DwUdzu2Kvtr8T++>wiH(3lFUW<``PdNm7Up59g76q|ga6 zVbDPDd*d3+>@Xup)*H9?doamkvsDdJ@ocjOWat77=9Ix{^?p;>61v2JsiN*a>yTwD zO?<FPc+blDPbTqZ)!e2P z*euvlp~Cjc(B);t^5V(wF$-&hiNV!`ppHktRgphraA_X=z9+@~*QI}eC!p%@&easT zI>CrI+5EdAF1>8Z$Q|JkwlM?s4&D8Vximx3T>T|>uh~6*Cf)*rfPCk(_$CG8t%`c9 z>DfF#(jPYGB((G`P~z5pndQE2-A1rbI*?q&iRo{suSYj8P*a%i{Yq_iH1o;gN=fNc zuZpNZaAjmae|%!(+-zF$_&Ei4Qj9SiQJT(G_JPBMn~?0k(j<&`5S4w zHPR#5vQ9#ZD;bqOcJ*(BOL@fmjoc%4mhRgfz(%ub3wv&2gIT*4kJ=vvI4E{i2gg0t zbg=_tScL%-^A+S6?0CUgR%nAdVyod}(u)w8*_=T{R%A7zKH^spf40EVD4z(y&8Ws& zliTn%?98noE=|s=sgRaTh1Sm}`xy$`e%113@-dn?+A7JUB z5IZ0!1k@@)Us48f{d1l|$+&F^+sp^!r%7)<#cwIe{tVk{KaXT_wykZOr!cF%>-uoX z%O&6=TFi+^C*G;%8n#EXd=*#tlSN=B&tMEe{NvPill>@(--`U!E@waIW2T2%S_t&s zN=eP#HjTgA%4mRj6cO6{r=`vW1kg5|RK$TwhkDZYvuAKLAQ?n70!- zv4?wj$lTYgwgrjNB2jWRmcAU=2xD?8VHrq5gJxa0?4@vW!WtEK?o1K*lTQ2%n~`=2 zxQ(mJ%rU&Ajun-?9m+LY&_ec4QE+Gk`q59FvP+N~rc;BG-C(bbI@br~5k_tYTPktU5!_|>R zy4k|T-tY*MjkTbd_zvswwvUXnS!gO3<>QxqOyU|+zO;KX@-B;|X=bZ0X6>Jf6krZ+ z)SP0`OLomE$414V^Fzfv2{UT01{*ti9%itXmoiqt2N}_)R4L2KS$3FOB#*{+C>L+F z@Tm%{*A%jT`bdkf+sF{~&x^e`51J>4m}1NtQQm-Wm?-xtvb6~@k#ZK72G+3{Fe`wt zy@Q29dA~?)m?}(1LrpL9l9QH8DPS!lb34$H3q@0h4ueWCXUc`;m)7x(EJgC9enq@2 zoV{jO@+*X&`^O}Q8J(G-qRuOnqx_{vm{qh7-UrMLUV}ta1DA;KUQ3t$59mkn^t{LUaavjMdkP}DW9s`C4g+yDY$dvTTtZJjCp_it8`qkV*x=R*5?a`I!^7EocWTV;*nsZc z?;D9!+|f!Vtk?R75zwLBe15Y09&@w6<=Cg%RJql6@%z+pVvN=Vz*Vfl-r&8#2`2PN zCB9u$THILZYX0XkSgK36(R6aSR+d&M`fmPR4V25w2DG3S$O_9*!;p=CJiPoW`WMkl zCRj6eY<(L+>xqtdv59~3WgI=W3~!$h7)dm@__}%inirRNKHj7DIxYQ0>eKn5eX8Ae z<2*7DL+*w>e#W+kuZM(ugUT8gd&P#7n3~u;5;{d5UTZ$uz2l*{WB6Z^g#03#eCU$u zs4#eUA=7*oeD1PQB{k|omuIAuouz7Ct`-?fop8va@y2BGi1Di6d# z+ihU>TV8OqY#;AVLGdgVh+b)r?zU20Bo%NR;Xy&Ya9mI%^>v0FJ6PYTftSwX4}96F zV{yQA8CE+%+kp4gKup)PM(3MhB)@d3Y4v)Kz^1wJyh7Yuu+_Kl+vlW|=yf0uSrMWv zWZl?PS1&X@P)g#wdXPAP-g@qtp)##!$>fC%!lArr{;*7Ha7x*b@3SvY_gQV&We8Pk zsI0r#;qHTze3s_8Uy@Q`$dYfLr%1S*TZCi63uC3yBR?Er@+td#iOyZr@jQm<6B}p>1ODsTLw(0gXxl)pwb>>jnLE zG`9XmyuqURIEX2EZ$h;loZL~(Y%qEpUZYS~Cjp<*X(V`b zee;h`bZQdoamoR)RXD#Ga&%?rdLK_i(;A%5IF>s@33l-O)kuWTNW=Ii3N9gl3hJjCx0N+Y@y6SuGt#!X{d9zoFApKymsPRn^P9-p;6MLJh2aK*TJ9J3rP=D#z-?yB+xUH1vdn_5X|4|KSKBjV zFWAJdv5~wU;R=*)SyQ**7Ov6u&}S!tajtQ_F3qmddkd~oi5ZeJnicjb>|gOxkwi8W z#pAoh-X`C`sSTfXvk{7pk-01qZ6>MPTp>{h32ToPiU5dmtzu?(#UHqoIx2x_NYdl^ zp?Q@o4WhLSVdU)UlG_2}zO-(@3da{yjN?Vr85PDYMbqo zZQ*0yzyCbEnwpg8_h)dj%023d|K8x4Cs?m4|WnN_F~1pS9nyaNvng{l@Vs z=&kRHb?E-=rjf&T^yc@6XA6&wXezL?k`?&>0vfV7forET#W!WuVPn?9udAY{L;N{T zFRQtzO}*ap^CR^sskXWI3}%NrdkwWcAitD$5Ta$N%?&cQJyJyfIpf219(v^*?_s-uK# zGM3_6cSn7i>(R!5=fWe8Sh}Q+kW-&MYN%W5#Bi-j3h^1L>`$0gf!VA9wZmB2U-6cC z|H9lEPw^{7N_%Ww6BYHB@GYnZy0Em@Il>!Nn!K zFP8Sfid5b=I$KSco$0XdRe=MycQYa>HGc0Ir!Idx40#mBcUVrgpc@fhh40kK9y5|? z**ef`6qnfSBz({JVp%BZ_t1{1dhf^&Cw`1}sjIg;`qD=qOfU-~$as?-9F!Qz*e>`i zsW%%wB(zD7h-GGqmJ%tu0ba8MIVztgfQ65cCA*YKX|drndO3aZWJ|G2d$|4c>{On~ z<#?Ealh#)?e5qE-#bQuNl}2{u>mj-&dSebdb(i1FT}LZ`|GZu;5W7H`<|A}3>I=C) zA)8V?0{9K-v2?G9^l5Nw^h6B2TVwJLfVd=^7bjHa2Jnvxs|vn>FJ*Z?WN+0uO)IP! zYy9^dFA4^(D`ugT|Hx6NxC+2)q-b~7cYttXRI6d^VP%TEt3{-qYY3-X2P_P5<%S5( zP-N{|=`8owN}9d?sEC_$H3^>VH}yzT{T&wz#BNoUN;zh)hLKokiKzMJh9#%G^e<6y zpU>uy-1#-n48^fRZ9h8B)|zWrLBFg~ zSA8Kv>Pt;KI?z*h^alE`Np&-s>e#KuzH5Lwp5aA@#D=?)n@4r~z(9v&z-;ek9d!&p zGonkt4%yQ$aw3!gE~V{y;o<4T)?N!Eac52*+F^k@4+CWo$X6brCS#>iX}qJ(IEtE) zFBv_)m|wen)Yy^n`01-H2S`Yh)?h*@a-j`*(c@SAj40_MO5_*gPY+w(YQzc4iJ$6T z!FQp-?!Z{Kkj|aAUgd0sNkA?Ed9doN(Kk4%qk90fNH^Cz$6Fu7zyI!p4eeKT6Q%9I zWmj&iq%JCSJBwoo9WMmX|7?9LvnYV2hNYK^Lmn_?z8S@oJ3n$7ISFg@z{*LY$RWtY zV|DyA6Oco)WV3x|vd39C^9p^?d8^Pc=;dw&giM2hDXkQVNje5<^{;Q@=|*%MBZiH{ z)xROql4OqURU?J6yvtE@$u~_My*g;)YvxCZ(n=R&O2lN=%YXemLp65-*LD5P3p{TqiAT6upwY3j_t3^( z-#WQZR}3JmD7sDGx*p2H92e3(S3{60i`+tw4 zg1#VtJdAwZ$H}>qY=KqUDap?o2tb_W?7e;z*P77^BB+B_2h0E@?fgTG0{wNu=gGiud~SMgDOMG zx4Zc&!o;HNHU|s+&jSRcd$lqoXapHW*?qt=x$EJR-D$<|FR@YaVshH#8;cyJVA*(+ zk>>V4pIue?IkL7yi!(MevSI>D*<56^pU_0b)c=pDcq6O+kX`Ie941V2w|M#ddI^n9 zWZH%P!+qrU^2wK3urvWFLo2H)KNW`kS?(phj`(NM}`7^G2{D)W3WWccJf+1FuX zVQcm16qiUH!Gf)(FmLoGU!0M~mxF^fbZC`ZdE zWCwNUG-DEWd!8RuulVR1R`NsnRlWY^vc zJe#I^3o*^RXjGz@Khv`FW`%)f&NzHBaC&%smuKk(fywmPalxww`LU)Kx(&qnkW>-j zZN9h61dtrId|R3&eQ^;=$t^g;1g{j(|`Or-pv2-N@&>MaV13dvg9*#>E?|G3!OPkTbVj1RZ^KC*$Z6~?tZ}KN z21A3U96Ur>J~8Pdum9@0S3`WRpX4^iSX*2p0P+NfF$xApI5m#b>VX2$;IdS41qM6| zX@6V{UpZ%S3$@Wi+6M2|JyoPFJDLH>w#|1fRfvv3VUG03P2!XKYlb=ISKx#&^n-x9 z**q3+edaxDa>cVXub%*7_lfRK*tI*sQGGQc;&f8hAx928uP~2>s@dKZ4`{E?c0cof zL0)Q?l#-MS%?IK3s=mjCj*fZ$Dcr2c2gfv*;ZRu$H?$=*Dk_=Jgt?Vy$K%*QKn&e=_|) zM4eSs8{oFBYZNHO-HW?B1SsxM+%>odcUs)t2~gbKA%zm$ixb@4DK5R)_wIYnOWrdw z#=kPxn)91u*Ri-{@c+l+r<9j01H z26IdDuO)5Mzyi-tnB(Ef_7B<(D&XT|-!!Ppu2j*5fg5>OCv zk=_`)B1+d=)G}1u@#&xV_7;Lvq|9;Lm47|RLODW#2p(aw9MA*9!@<`LBZJ6>L3~-! zkmAcA#{R(yq(HU2jm;8za>kDlmFf_>r!8A@HezbFU$NPZC2i(IYV+xfOE^0zygf2Y zpV*q?u7X$xaWx}>M-q@Sw~3gq-qk(5=o+eB)rwac_nD5LFdc3|hK5@MRn+k-cw2+e z9^evZd^0tOvGF-{UZsI!Kp~6LiTmMR_K1Vt+c?pyW+L+9y;98if<;^H6tuDt?b@d@ zyiskx6vwEGt)-?S2r!MYo9eA=RIPGVTZ|_L~;wiFxI$Thf%d9q%m zUXw<=o4mS?D1o+039ZjiKZtKV?>D+ATEBxZ^BUvi{4)*CZk-i+<%WnSQYh3()=iU8NL@jT>{+K0ExC1lOU8C>MXsMiFdquZK zzxdGc97hjWSo_TBUR=)?g*e2+D<5m2RUs~)g0qy&W)NRoRO|x>y1yejF^cLeya1^p zME6LpUXaY{#w{z=Tj-Y&ith<4UToXJ4fO%Bd)h3Jr13~m8bl9^c+P;P!;?LbP}GMn zh|9p0Bor=wfNVHS%Bo*7T_~c<%+zj;?vhUDEQ;N(HU1`&BJ7&>w$Gl~<0Ik3BEdy? zCUHxB*`Lw3(U~lX1knSlRkzw@qWfmC?px#3FYnMK!Z)zr=gT4yLtF^+!HoHqKN1lc@^3zv)wnHT3oMdX*x zXMrP{xLd!7ol7M6gM0vXYutY2*QYA9w?}E*H-F|8t5_a~F2*PpR zu1(Xm%aHGrxrY=m0=VWk2`y3#dilE(7fOkuA=5b9A`VHVL}m@VzgNSUC#?$r6uh}w zOAkLN1`V^Ao$TVT>ej}J!ze}k)7BX&S1gb?idoo;LD%??AKFXap^wF}!;>`r&B5yx zRgmd}ZG_n9!bfgx9Nk<^ytZ$o?bGbT*I}Pki}RucClHg)dv6>$8}1NeX=;uQ!PfE@ z6=w%y85wzVH0_;J;?`+amY<{a50iAbR@g3cRQtRecm@VLaAxEYYq?7W{-kUgNF?}X zfuBt!!aUu#leB~4@xmTrd6m?j0fo`da$G%p?%qaDaaX4gx=X~LAS*;WsXmAZN?E0$ z+u2bBGVYGKxB+V#I~TV8evTQxd4wd|+xs{+FR9=;G{I!&lbtA9s8A!efp#epFHL)S zt;lzdKJUo$lAh7Z#%b^j?0$dg^W6cKpUl0t{_$q@BfzPQi&_&i08VH6DH5fLzt1BT zxe$81KqTa?;vGT8 zUK)#_z?GeCIn5wVAGUbz&_hqf%;n|Du*K}B;GBJ<&GHO#JEG{c^sEg4ymu^Ks_e+u-wLf5^332elaeieYRJmh$l zs5N*{;Y!I!899(__$G{U{J7z4FzO3Bp`U>!f)~g!My9!!1gqvO^K@^$Npa{&rk!>F zQe86*UkWAN-4qLJGVzi9T;4w~8EpKG&P(6VuW0BZr09UI?vCo}F1@+R=(|$#4^ts3xL>GwF;stU{2w(HhygdCbKG?r`<{B< zJMr`fE)dk##C~4gaa;YfZq`sk?7D!vb>?Y#VZ2=P-`i97qCj;5X? z{j`;sg8{_v)o(LDZW_eL(O0)?txK-#%x+oY4;b3QL??zL z*rl%kUbJBh`zDUGBhv}l<9O(3z8}WB#C%G?{6K_`Esopt(?zJ3;EL)=9QPBa<3~Cl zUBLtkJDUjMRS@qGW4l5IS$T^ zQWg>u6+!9R-hRf?tV}{vKl1C8=%YT7?POkpA$nMfd4} z0_%+8M6nLqofTZjSof%e)t`82uSJm~ll@ET>}yjzbm?KucYOw?0_qL_Qo_f77~M*$ ze~>VWq*AV1j~2BpqGJ#oL2PHCwc^|^ZR8i%_l-ftB-V#dh0+3@Eio{@xcv>{0ogT| zFaL;u`-krQ-x7_LR7_C6m5dEDV2oV_sHP&xPak*3$RUI6NE}cYbs1Fv{c0FRB~N$9 z%b)SbynQKa=g0gT(b;gzEdR-acPn6Z(g%z^vD7^Ek9?E1?;$*a33-H^=Gky=lFp8o zYZ%IwUG~7F@xcqAEGCF`ICzQqj?jz*?_VB~IG3le_FmlOw4W%tEOUU=_q-O%2iYxt zZS9`&n9GELVY?CTbqyb+12z5>nmB8<=O2uUdd~(L1P^I~6Qfv@{%{l2lBzPFHu)97 zK5~6~OYv86;o-_K&KY@f+SK&FC;a4 ze8dH)WWMHu_7ESzd$!&K3Y|e}>ZaoMA`AxW%Nlz>N^rVUd1O+p+EktmI3kp!BJYlZ zAZ1D}{>m}iL@2eqDi>hN{+l!cbryIWEQG(JfKx&tgo;k;V=IXpQF zNvr$?b81X|iDW&sEuaYb%0N9%dp1e^+BE6LLVy@|jlD=8h%c2IOtPuxH?y#Lpx4#0V=`X4`E9@5+8b%&^M;ufI8 z;sx9S(M40zZ790r|KgOrrS3a{c?Ws&z5Ne#_WvfUKEd69#-|6C-tDpaOF1WO2!vPq zI!=OL!+k?qBt*3SE_0B<>3ehW=kQ(GGlifZ>rxUjUXI(Jow|)I<+{p+krHf%`8>`o zNUpg)?{BCbM-W|bQz&>=7+g|KHy$P{+6unl(ul18y=5_J%9evmzD%m@0pnyQP;RtX z>CdUh=%n+rN7g?eZ7~x_v}|4PTXKmpe5H;)N3R_U3B9k4=xJ#;r}$k)cwACusDRM%7GcZkxmh@D)FZFYTg=GS zQOljkW>~=phCw`leejEHZ*iLhDZZ{vNO`bJj5kgEBooQh6TOj>381L6cqHqppPh=( z&Ym52uR}Q2u(E0KWpVPA18$+-1kOrpTPMURGo8wnUTj&MW;mZ+HI(Vwm%J~N0W)K) zUt?J~4nOGHDEx8Di|%ju_w~;(xcoa;BCmE(!J&DVtv7mxqdpXlW}g`YOg&D65BQ=uX4=K^&N`|Ilj*2>nhTi zdh6MVE1mE9Pt~)i0y+i_bx$SP%2Qh%Kq)j5=Q=LS(q)aGGvq&O=zbJq&po-@tz6bJ4o^`--hWEg6J|FwJi>Ae$P8)oLimGjOfan z7IV`ugJt6J1*)dar|`blt>5KuT22$L@X3%s8_mpU(iDymmeH*oL>QNEG+yWMc6i^+ z=|zl5_(8-m)2+er&#+#&Gq=4}4<|PC$R&*=a6ojCxWh8Z`p%9+5vHh7+2PJlJB>{8cLT%dOuaL98s^GUBkHC#R9a_ zw*n&Xavw=RFk;7zPq{J=;4yvjm| zpi0*nqk`YG+D@m>r7=EbmE5)1&D+dJl6bg$s=fv_^z(=B#D02{Hte^Z3GBt~QM32*lcNBREGGG^2`UZ&eKw;{Te8ls8`1-v`>X%$8FO zdHxj}xIu`sjn(SWDP7td90PirTTV*yS19 zjwO4wZ;9@7*P7sc;;%*d_6_Ex(d43fNN0U<@d!ZQu6WZa*|?A@XJkjXZ5kY}{g*>T zBWM4*gj) zeS$o>MMQ87a=BO_v;wsk7iTBb=OY47qXKy11ye^75`#P(MhQNmRTI}oLG0)BRFI$L z7ZT++HlgabAMYg$!#XXCy~W*J^}JKqnglL!AK(`z;{RrrzV-f-yg*-n{$+XZwk>w1 z_IVf`-QSD2;D-{Y`U1czN`~Cr`)2mB)6SgbhKUogFD_lvfkN=(bJHL*33LBpcHA`Q+~m;=+Well4x+uAkE=bugSr1wkR|iT z#0y1>5nA0+UOvmIi8AHL(l*+&H~`z z^OpDV5jL9!lPvKlrLphaD1x9Qd#^#K>$4FXg%QXDTztU zRScuCis8;_YUEgo7d|QJWb13%nVD}-*D;QAV4ypW(>av2T-=YE+GB9mhmK^)e!hO- z>@?JEiG70Ue`=)K+ww>bmzK$Rbp;7vLse<|!%!^oh~HO@Axh4Wy6qz_(usJWX2Vh% zFDw)?<#q|2CNnMNb4)tsCUFfzncxBm?-`s&3N&kpU1$OsX@q*qrthrV(X~w*yzzGz z@rZF9A&BR-WN4DS5A6_F&f718jxaqU=i10!*ZIU0R6SAoM`bsL4Oc=SKjlCzJWzC^ z20*RQgnVq?{$H|OUjF-R+F?yX>f(6UK-ce`&AI`M$DQWuuD0Zpyi4_r@U$*zNwdJD zCk?NPL>Sd0J0Gg5V;LuSUXNdmG;j*T!fBg6{`mRxf&X)A{#bAYb$T<+@Z_MbA-I8e zL@6g4-BMu4`r1#BZcP0K_c@FpzSX>q!NbVfC1{JDeEjPAd&O_Q)Zi5Tq>#@DfRPWP za3FW?biWhvI5?Sr%qAwmAr4ePGa_X6uVTkX3A>L*VFcJMe(0kBm?FND61Pl6*QB} zj|7Dk{Msp6T?}x*lJ>oeW00!SO-~B&=Li>^+)W7M(>pI^1_jdAzwVyAb2@^6?Z>WD zD49VWUh1Tjj6AT?xQXYtJ7TFhokgs4pBY$@?nE63b|tEFI*XOHcU~4kuI+Qeoyx&0 z88lfoj1$kTJ$%Gm2C7fqGMl?)j02bwNg=oF_->|G1)b@{q|bK#Dar1RMz*Y%Ob$T| znnBS}*jbv~yCbmm*rcaa_PRQ?^L!}3fNu&PHw`P}Gh}hAXx4sEh;LxA+SKJE_M|lw zP$E1);~tW5;jCx1FOn1fRUIpvm-Ct&xz;)uQUgB)*Q3N}{_?n`C& zE^pV6%A`QC%pD!qDDZsmuL@?G@tFCFp zVL8ByHz;~~D^!i_h=2`KgKSL`dg_q>YN1!Fkk%(MlExN}`Nd&Eseg)G&y{dMD1% z`UaALw%%deyv)opZ4++j^NBQV?@>dcjU}^Sp!H!57fam>WkrV3RfjEljUj?8# z7YJ$+ApM*Bc}f5fL6>S8x*9cqY%;0KgopxUZs;gOS+wpR?KA3(Ox=4URANZ)Vn#>u zlMma%kYTLBj}0--7q)P0YS^0Dzljn2ORNKmJWocviRPOj<-t}d)7u2TZD4mOncFUy zA+T5|i)Lwgdz<54uXs<&{jeA?qT-vLSCbHV>Wwav9j;lzZ3z2BO!s{9c_<4`MOS$B z^$2ahkx!fJXRqW6UcqZ_^!URRdd5kq0_Lg3Pxuck*E3Ra%b8IWEImj-?6tkaC6f39!N`v}ypDuu^-Rax zCa_U5PmD>)5Y%n0j*4;5LMfLzGXYU?E6U$BI#Jd8+kedqnbVhGGoZ7v;SOxaz2$-e zJF3c}E+VTKQe^y>VWi%zZaSMSlab)wouWxH6I0f(Q(5v+whuOwADzis|D3Wn)R>rE zdc`~-Afhmtru7xrD@xXrMRA%PSy2NdTQBN+w#=@DDLih&ZHTW;;rFGoh`hQyAreAI z>{W7W>{DY8Gk0oTu%gMBkgnUraEB?~UP0n7L(AKp>n3vcY2Vq19!sm}xq*fdLzlZc zla--?CdBN~=z6N5iv#vnba`P)k~X)bxVzpWHiIY5;>hY;nefVVfJ z%AGs@YUqU8stLrH^=?p4()GHkh{yo4ma-qw@`y1;Ef$gA(G>)<& zbDfTc9iX)w9yv9$N#X)UV)V^UQY@06-1dHdnJ>70Z^|gSR#|{%YHO7$p?7Iz4E1Q$ixn z#{1<5rK~DRtMJ-Tm3qD(%c5oreZ&9nfYmIZ-E?wjvtvl z`A|y7y>qe7^1$hvrE1}x`*;jddu*Q&$u-Ga7$4hPeFocm`i*A?k$8mI<>NdjTdsf) z{;syl-@6kUuO}tr11a}622PMlv+Y+{mO6|RH(@0a;AjHlsMp%zc7Xz(%NB|OimBn% zg5p6grVuh}qOTk@9ru0| zpxZ&Ywxb5-0w#F9y&7q>{$p!#u|7K=zD2byL{ZTo!1<#=0CV@6Y&pi zZlKK}^7Q=V-#^4I;X%+s^`Kg7R#*Q(t)cpVjo|-Ow&9ggsPAcS(Gbh7ZyWh+`Zrco zDoexrVHhPx1_!-lc!q9ueJAGEn8b)^r3c6YI=(TH%z z#9uZD*b@YwkhC<2;F>=%P)Qsjx5RiaVhwK+a5hqJ6$6Kc-j#+b$w>SSGstN4cmx}D zC{x!Jt?H;d-hw@+MGk?dCPBM~$kO6s9^@CU3b66IljGLG#f+v#)_qe~&at#3*_1`r zkEAbuWfeyu$Xc=JfA%VQlc?;6mk7Y@uJEI*H( zGo}7<%Rr34j^7de(1Jr|-(E7k)m}FbLKr?WJA0-@uQON*{pnD61A78M^4aSU?NLXs z#k6`&Rm9Oem1!g>A#ZMtT0e(@7xsM8Jv!>=nn(%~JqA)}-BaHcWXH-p&&rHv2(DCB zd$EU}o?J@R=Uu>YM-z{xkqX=#Y=l-;@v-i#_?1_Vg1~^RG2O?~>d!H8Kb=~UOGS8N zmvjOJhd8^V{rSdDl)ZFwBI`V-`}cwp^=G!aCkM5nqjM0@D?8qu#1FI;g01{#hkIt! zM#T_w-V!rac%B+J)$7~-GS%ZwXmDM2j*3f)pP!>zrNLps);5#a!qYY{3mX1Uq3(cG|^aPSK6 z+X|pd``&lx4(Hu&Dwn@Z{J?k`D5#1=bKRE=<*`6tOHks*{V7bEbiIo)L8Vg^mOUcY z;S;9ocg?a8kJNxTgXrLu$><)^|nbpWd&~w(ydXnu@i?=G5bK!U0wM z!CdGkC#mtB*8v?$MtD)Lx0=K!0&Lm0;W~sj^#Y5djOFkOW%k~Jam`5TZ1RN0jo6C} z+EJMi_EJ=iu40xtwagv-qjwLw7Ob-tZN{Wj<&D?n6q6wLpyZLy=oJpnKWwA^(?n5* zZ03aIqKLnfsLRlmUv=T{o}p%!Ys>_1%aOlqneJ7Rh+;xjmF{1UJ_1ct&OCR*KxA2Y z8JWOWl$<x*Ut;FeKkB*P>IA^PA+3zcdYAw57jHyKseY zOkgYVc72o4&Cj8%B;9`NAHxtFt^JpREM?J1^{Gw4j-~?j+wA_3EhSVcK^=PRN`wy- zm!nBYPIk3<-QDDpSDbruk-Jp z{JPb14OnlLHOY-_x0)4reYolqXSqe;a1gup|TxLv+>-L;OI)10DOnN8wrcKDb6@ zT!5mqKihaj+{Y0OciT6baN4F_ZJRI;6qZL7kLuZ0g_w&?#a!}F4 zJD4x#IEIcLaFV3U8KlVYmwujNwqHTq#c4_!} z4JGWG<%Caa%5||#h|+j<)^H&k1wl$s{Tk_C;eFC6s?zX}OBE87{)?jlgvAQt1AT`c zpzo{aKuXkBXq01|27y5H&=@jI6rv6ZnXxmAVQo@)Smg;oG^_c#tXhTQnewmqdM#%Q zF)zwzfH6xzr=F;r;Ge_x2z_A;=Lr3FH(i%5&ic~Sh*oW6SOTt!$@d%vzDgD?kL9qb zN$Est*mM{a_2e_<#&gY@K|*b$Lxs4zGE}Z@}Ep{ z_LuMy4{~7mYClnT_%CcZw78{3|A|4CLgW_yFx^b&nbm`0Vd0S5x=69w^xZZ7PH|SE ztU>D`+Jl_H-l4 zCX&SF0?JA05Z6!Pljg6@jWXt?S2N(VOb}GQh#V15|5ZlK?_?T##pDW}$GjxkO6%oq zk%4{=m-o!;Tm*>xmNovqCSi$|CGppH%O1TQ<|o!SNB*13u2A5_te)qq%zO_Ef~YVi zlRh2Q=RKAa4DXxRMS}WRPUn%yaaP2St?0e=WVdZ*%=OWb0t&qF!9~7ZaeUCUs^T=G zm!1=;d0BO=a$%|iBE+8Tww}tw(k`DoySMkO5U+)lXU6W_Qi*a*YxIkdC5=bt>I!R< zzB{{Iw&)~l;^gTB4(V3byxPC}x=h?d{%mTxk1A2I$*Q)6cz81EZhB)R2j_(pStd`3 zUs@l-0Y<)oi;D@Jz@-Z2TN5` z=pvkKuWns`#){6DM}qMjwm3uooE1GozqLx@>D)OkX=R_mB8=6#ifJLi+FPATzxHCo zS^p)j9$=SMsG;*Ri!w2PE1-KySj=#2D$|;*Swc@W!EPwR=f8)kho*NBw`*OG9Ej?p z%gZ`XhC0nJ7y`gIw-}f#;h;MP2HU%RfQbTk=YOUSw7(%fcT(T zr!q{?4?L8MZxO~upOD1!~H{o^TPO9uwQ9x0dpk2R+MiuD zG50{4TFyt?{yl>ZSIpWxHlMEOYZ>=1J~`nudrU+$pJRi(LSNaK)I*s30A)DstX!B2 z@t{(XzTr=7-E3{X3PQhw6<#0}#CiwkFNqiPC`6d?Bk@HUrh0ialz;h)U9L-@z1vp= z#!TX1)hq!T@@)&uWnGDkd<(f(>FoV>`ADW_-H+x*XXW8nQo$_q8%XZP(#V)_Xas?5bmgO z>#j{HesaRi#Iys{%3TFU{EQ`0{$NT(i?AJp57xjsQfmZMpZudY~x6krBMNMJ?9fxN`ptNs|vy9Z; zJ6a|^WUuu{L^$&IzaxteKC-$kOcERezx%6+3SG0Jbr_s@4(h79!G(gvXh^o<3-YZ# z_6euJBIY^J8YAcue&48Xw!rCHDb&}~(F9THUMAFUPhDLqg4G4`vWLt@)CJjHoY7 zc13HcTGfkjx1XqBU*bHzUH1B^w$8X(x@oc@T_8UHKa2!Q`=?@rw>z&CDH z5Yv`(k~2De1Y+m5H&+0t`(Q#o~4Wgd2;ER^MjrU!63VM@mYN(65#|5aK+x>m(8s@BoXUXGM-|CNm7gFKGcScvsAfs~luJuE`EyX{R8~|0G`_ ze`S)m!>Bz_PzB$=^$2H)F<-S8ur)jG`*3ymd9Uctv2#{-1IK(U0S69N#$HvGb$o+z zmFs9#^!xM^?iM&g<6I2Sb2^ZI#AW}DFoNh_u$CY^SjLwPJ5gwaS4!N0Hl6ZE9WDv@ z+&?a6HUIhY%(qB85sM4M!+O{ik0H6PQ>fy|;H$SW4q6@rHz_aa?6;cb@v0HWa_&Ub zm$DD9 zM{88->k=We%I<|an637xl6OKd(?Y^vu(W+%8T92KsrllZ6+aG1g+7_&KYsozO2Aw8 z8<1${FD%@CZo3mlEq=qMh=o*FEa9~;h+~EJ97}D+T+(^a-s7b=$eKu{1EZrylxO`? zadt`1KY05zF9j2hdOaQZs%j=AOXR@UHt0Eq_5Y+sftX z{0F>GY3p;v555*jqwtInqXDEM!lij&@P&s0YYq!|^f}N#Xm~XYCvTWGL!;AMDs3~e z-_a~pSJ}?cpgeQ0Q&ViM{N}nNV%POoPLNs9ts44X$D6w&s|-xLXYwmba_#VTh10EA z3)Z;G6R_5Ydo_V!@^T;;3na{#x5MMD(MN`}(0{KvPO?pTHrV7?)xca^x$=3$Y^8h% zqXzq*GK;ILE?L1(whIZ1?{&08u|$_n+00P)ab|KYDK90wofTnkn|Hwy?9WK3S$& z^$dRr@Dt@4=pW*VivV5X52Q)B@RTcKJ%9TmDrTx=Iw; z*g!v+s=B86=+*C>z@_jGU`TOE)wBBDGO2q$^gga_4?h}AaI+04LAi+db5?vrZ+z_X zES^qLes|@3^T8^GRiye;GS;yui{B+vY9Cc}1LPb2K0*&H9#^hKW6#Ub`Khkr>sQec z;%F>C9qqm%rmKyDcj(%?-j}o-r5DqMQQV@5bp4C$cgTT$C3Rdi=pd~f{{}b<_oL|f zC^n>Q^y-X~>W*dnB93$P;fPzrKZ~zY;`wXx23u%e9Fw}AVfIejd~dKqNFb{Jvry`W z_Wo|N6dYx*a5bw$=k=8ZitJ%{YPs(V~6ed@3$gcesf15guR9qcp)1-q5L!PGu=Vn zTJywTqw8x1Qt{y#{ksOOe>z|8W{LP$LcgZoOyoP+AIR>}vA^{0wL7=-KiUdDtzQ4d zIN|j#czrB)AT8;!u{i$Cp6w!i6pYH8?K$H|`P-v2JvM+VXGSc>x6_7%+#+~T%AZl( zI6ZN1CLm0R)Qu!*kr7pO%E_$Xl(<^LhD6_Q_QnEs7Fp-BrmXNMta^4?uWH%+@08cX zSXx=KVX$x$S)|Js8{m0a{PMO~TI^uE`}9PYPC`prbPkMQH9W_jbn*{2dH#4#?~Zaq z5sQ+sc?_;+#({jewY;Ep)`j}{B`1O6A10RyPsByFrYSNc*X*4VJ673iuOE*x&sFjW zi-fn0MNDF=3E7&wqA&V0+_aS3IKfTmkN9UBq}4*yNI$!4BAum&7l|bLIk_E4}p<81aXG22<4D8o65{;~(x0p^&P0 z*Io>B2xo8N2#J7$dA^BH9&})Vhha_Q!+qdLFrfCv#Yr=R>j>TfNb5bu9_*H!em*?d zW{^Ym^D|IW`av;uZxW{wQW3eWs_ZIxx>LZ}&!GuE<`MY8%!elxIZG{2Q_oSY6x|Gg z=xkE9wGCB{8Yot0?7j!RtRK7sl;v$ZXeM1?u`Ss4avyC07`M8#g@+-4zG5Q2_{c>x zR(BVv-3^cho?Py4v!RQuu}OqPmC>X(Y|)Tzt$lBu%ngTK`txHTSYtQSSZ_x=dK_RP zi=koh5X#ukgE{EiL4jq9&34cTp}Xo}ydtVpyey4|*9ngW4i;c&yHki)yt~t&5oqS0 zEY_n7)H>Z@#XK+66p5>N2Pg+6O)FpL)Apzb6(a5m#KCF1odvVqt3A;{>685=;WrGd zC~M?3aiGHKf%ak>$dPVT1496vifsyh#k;Kz_JvvAfD-y|8cNr~aO5B3 zIy4xd;Qz}Qt0Ta8e?Ngz9=^A;6X%Pj=+D`D5t66l!x2N9vm8FYmXuVSjCeRV!rKeD z!Kp=>ptS%(3J54Q@OL99M&ODv&)V$14|1nL>m}`V5Hc`c`1od0BLnYMej~^uiEa+4 zc*GSm7XcDv3$HAsv?OLb27tfefXWKN3*lbUqe!(VxXY%Y%?xeeEjQ z_fq%gA!%bnQ#0;qr_caH#JidHcPbGZeh3|zngu;Q7Ff&IyOA zYzXz_ztkx>^`I_TWBW@L2<a;6<^o5SmSXk3R+C z@sdV2w9Lr9RAFELcoW=Da_ZS(jrL?SngPo_fTpsmdeR3Uwnh8svtv&A0 zkswJB=f2e^6g082`lH~)Fu@SYS9RT zT85|lBS&V__GUamDbW$D*Z6TUg^oWW!VVkj*0+FifiYTx7%Vp)yjBh?Th1W%t6By6NY9!xete|XlDG!7RgTEJvavIM3rVtMJsc(1kEH)2wm&%mME5dX&i5T1*|`- zk$W}(SD-AO#nuWkWtZuXS-uCceTSTahkrB6j~jlX4z~LXDhx6(F@+<-{_FzlMkk4E zLVhKM3+rODbTSW_y%m(_*rS;j_-J!*StmeJ!gm6+Xhk_J$U7@!WrQft>&DI+xYmh~ z7V+g+sgDgj`g5oau6PwtmQH+N(c(Kcp!%EU(~d5?;=wL0!98N4HfDEKzipO6iq{w+ zAe+2C`D&IB>w&VDf}&{|f%;xzmS@>H-eNHUmuy4|<~ZEYzX#;UEAXBe2$S&8yVla` zBysbMg3#ui0Cr7nx+7!J5S6wBb-AHKe&171v3kV=?;^CF{|{AX!PN$|uIUObTHGbL zYjCHyLvbh`T#J*SE$$SDV8yk#ODXP9+%>qn%jB*(_pF&evETLWS00kiL=m}Kk#PE5 z(6v0`b)Mfr|GVY*E7Z)8{TkWe%1e84JkqQ)%o;?enEQFRzCq<`1iP`j1&&N}{XTY| zeG{w4H%kH7hxG5=zFt}%X&=F9&-6H?{MlCepU?OROa_iYOO$-2Hbws^hKMU8ldAdk z#}*e3l&bj%`X-sdVg$Jod+kOwlQ^IL3DKD{_3YJ1O=Q(!rV_MCWtNlT8KsV@oz}ph zmsQO6W~z(h__uE)k0Hs~Rn;pvppG!#*fUVz+L*jni0qX(AR%RuhbC2Xi@(Sj*sQzB zruD=7y0)zZ08=QyNEeLOBiW9i>xnJn60T%8Lv{c7O)Jj)w@uD~=O3m%IQTtFUvq1V zGkgx$udkE_cuVQmOrz8w*o9$BBl<4{$p%}v^uonGF8H394`(m zzdIvPvxufM0~9U&bZJtuRugvkvqtmZ_{JB-Cv*8Ih$OTKx4>xY?do*jKp3f?u5C9w zNAcc0q8a+e66>|U-sXf07pzMgr+`7Dap)Mta6CHSq*RJ915&BuwQ0&Nt@~cuV7L#&fej4+DJHEe)%2yMH#9p zou$e=eiLIK8J8$ z%qgh}C}P;L)6~7Mn(kP}guQiMX?=G|%*Q_13;065yU{DK!;As~kaKa00f8?WJ`tfz zZ5hQXF0pLAs0TJNk!`B1Lz7h8&Ba*N16)48!q2jV|3>#>z33j(l|@`+h>mLvVY2Jo z%MD7lX>9C@x~FEBVrSqG8_zXE^sI0HP^x~>rYUkgulztShA%7%?-7%Ajz%k>cCggX zO$75(UOFrDjd*ji$A;gXXa_@-celJ35x96L|9q2kG1NF{cGx8{%nB=~;7{EllTKzc zOpg7evicj{)p>$)1dk1%)dFq+C01(Dov%`I$2dz^KTScAvoQVIHAK4M>snJGR0&7t=1vlGgyUgfK}Y;KNO1b1dEwJQy%(?s!&eJlA<>! zEg{-Ou-o7ifLgNvZJUAZF=s{QW};)nunSNnZnKSLB$!q_t~PK=VwgR#ix0H&b5UO6 zXf8z)owJ2o6=}61VlIsH?;M`Z3BJJp)GEq7LNw~x#}{N4gZkc= z{TEBMr`G?tQ)+!;rgE#E0;?RaO96L$sPK=z$ThD~|Csdwv(1#nNwSp=?>6qn%439+ z2rs2Fd)=j&aB|zlW`@%jR)t_^@9_eECx`z%zs$P%A~%;-+UxLIfTTRtTgBN9+FXa! z$X+mX?SdQEzpT#QEMo)3nX@8~x^rv2H*!CeJwMg9nONA(k2pC-vF*P(+;m)Izq7H; zHt!G0q&;~`%wb~>tTW?C*V}#uYn9d?fFKGRRa3H8Z|jB?=3tVX)YbC+ z8y^y<7sBx~5AB-nmsqxqHnAUqN6iR-8cc^il@pU&9=aud`oq7JL2bXbpMM{Pr`(#} zJN{_B=L}c6e(l)M_W&-w(U1kl_+qiWyg_@*-8hc)0Klx3y_@IKLh5xje}aju75wO0 zuizW&6dJWpb*mZL?Qi3fzWpBEG~Br(FJ!kPQZBHyIU9snFCeAJrrhGA++ zZt|Pzr*jT(dzl+DqRzcfu2t4Do~k9GcbLBu;0*zZqiiRqVSyZn>Xa7&lE-fR5D7*{ zLADCThlR|6DZLigRr(7Q1YIu7{9(?KhC8J6A~=bvelpFqN`%OK#R1LUCxR6>j871U ziVal+Ml=ElkA`661Y}>UAS%PL@qF@V^uM{mEasVvUivuYTrIl$BdDv&n)$5U%cn)A zUvh=^x-bW-`m?uh>fR5#MLdYu5MS^fbkh-!-I$~y)o`wx7YK}0#32|;wC21ZTttP& zM1}LHvFiujK3s@HdjUe2@f?M{{2MdZ@yIsI-3>~ZhMeC8@IdQs?CG>Z`W_#hVs{t3 zLbEfu&>cO(L^x8+I0y=-PPT5oBp z{NN_zWUD?CtIrABEo0&-gpU=1e@&&6Q7_a~io5D;ecISk?wqw;a`5_td?KtYfG3lX zedd*gG8LC`P67{$R6aX8fg1j9Sj{_)5bnGh+!Tdinds1NPz7p1sQHd>z zkyJL3m#(Kdp@tMg2VNFq>-BUKRbeNCeQ+@FVZ#gj-DaS_PSgq0pvoSfK?al$UZk`L zXEVObD04wwjSq-u#uw7Y(-fTW>E=n2WZMiR-4K%JN8m1GeRo z!aaGgQT|DXWrFC<_53KB zz=qj75J=W#m!z1E(pkPAR3KU-L-E|OIXl$CjPzeq6N|9R*94Oqx^99Q$Bi{okKmrP z7Gc#AL!UyWvkaCI+Ks~miAxwLI=duN*ka%;O0b_qOY}u2&bZ`QK6bVLHiahbU+l$C z;jtAjF){6r_z%nezmo{Hq#){NPoLd`A|)aTg8kXFq*Hag!ByIuZ{z&6@pcbDB;SZ= zvSwSFWP9$5)wk$s!@w}9`ps9ef&|a44>H^zM45Z3ZhGp@K4*9K0v!S*@k}|ra-#V~ zi_<_ApbRb$JDp<2L5;9o7!uj#(^vNM9I6pd#qoDvP)>D%I8b9--HFDEk0l7mgNNRp zXvz%i=e8LTth=VY@9>D4>&^1kPJo?9m^U*R{pVZnm6~$H_tX;wRy3ENdeZ!=-~WQY z>WO?~&}nSg@%_h4vi}!Cj40uTFPQA6#UL)eyE}VCxBr`QdT6!`1M=0@VW- zs85fN`-1b*Q{R&u7{$`#WwZrYk34Q_ea(Y@JMsyQbi2uGx3KUodgIvNe3q!;e)8SIp1<~AZ&wGgl@d}#HmhZv{>I!epV|I^tU z<46uo6JC^*zClKBRcTpR+{mTg$YDO(nr%XLEs7m04qSSsw#SB?xHS>tLmOIh-O%Xg z=XQSyniovjnHevS)?i_jb@?rN`wY0gZRs;0%o7cf8WW+PgLUz+>{-PV7eYZ*RXm^L{>BT zhG?j@Li4;Im4YYb$R8ChUwFXb<|c1!Nl(BgN5iSzm8qx24TA(kH>*ol-bfz=khq+p zb5xk$WA!arKdaunLK2bZ>sw$DdJk+6*|v&Y7>xkX>#OkZBjH)6Rn?rz1?_awEOC8+ zieQDnSJhHBydlSf#tI-KB-DNA=HBVjr0F{1 z2p8c2Slp7KC)0~?>vm1^N>|yzuOc{AT{*)F&sk;Y=`KlhwHS#*BXd_tIT>}v) zvo3wyv_4pd&e`yATb4({svum5$q-GO9?}HDZtWUR(1LB%!R?W>O|2O$y0U&kK0=6x z9@H~Y{-lJpe%y(p@cJwvVqIdx$=W7S75=>A97=JkoT$@+75F;0q1?StH7XuyBXy}J z@3@}#rD*;g41MoE@`+7HIcL{sx_#Ox8#zl#^;X&5$`Dn|=D)3*91|(U4NdfWF(RQd zNZ&zjPuWrr2h7ln53QK@KAe^o-4m2{8)yXG8<4>Ea$(C_NfPSO7X>c3>EfFLox_>+ z0-_p97om$)O@#v+P==x;BBL*skant`@1kQuJXk)&;h~2E~+gt-79GNN0j10p?d4uy!&?duQX@jOkdI`5ZyI^%w%7P)&X*z-{Z!KUjBs^s< z2?9uwy(0-Glea!Iw}`RZC!Y1XBomvfu~MOI-#ksxPhKj;=N8oVqC zyKY@XFy6aFeO~sbSzW8lT6dOCj+G)UvTfh8!|vJE$iR19)!N2?A%ZyqUuZWXnL`*w zu>=r!oJFTb&vFENjO}vUboO_Ggvab6+n%Jdsc0_*sW4osufC7c@{SFmv{}eStnpov zswtl*k1#h~xpe6A$-5}W$*GS z)5w$3Q8-S>JNAfic2?kpx$@6gEoVn-vgHy+7YiHc;Q>RxyV2@gL5^dDtlQLU2?GG# zzwtkA(a;_F8~HWwk*nqL`GJHrub1?nGJr=1;1l0o$=61>L_MtDA2&^sZRJGB>@cCb z)a1qn;vM3Tsm3hpGK8cUbqIX>uT1s9WvW18siD)5UMLV1S=Cxypnk{%LH#o-m%7l_#|RR#5Ml z4=bawrco$lAtje6TAYPS^ zr~#3k6nI=fx865GE4(d|1wvDg^PF%yZ7YA6>Y{OeFH*KRHcYp_oqOS3zkjPV@N3lvWZe1Kc5vq6=_Se$<`a!&=6lw~0U*%UEV| zn|Ji6ojov7^#8sg7nH90G1wC5fjnx*YQ#$(Syh+{+JC_!el(mG^exA3;nT%F!v1>9 zR!n6v>bR?P_qi7GkcB!2i82X<5J0NgnDxiBG z6A{J3qkx55L7q1wx^|kGA6?EKIjE_Z#I#!};~7G54aA@ZjdQQBZR(dY&8%{Nx3$6j8kdmc|q^%A6ysk{&mO zv<)Ko{WQJ7yHVxJP(8?Gmxm(Klvd~KK0+h@GB;^j{^D@v1BIwXs^=%73KCG; zZwx23>@7ygpm9w-BlWwxTwdC-4-j=MQ1K1_H+ENSZJE2cq5eTy?8^NvgUV6N38|)> zVJE4m?Bc=m?|tKx79qQ3fd&<6o6Ohz>`YUr$Ba=!?^K!9m-Sm{AqaA(`1DwRk` z&4@d)$e-=HOCaVri)U@sehu%KwzyBq{X54)DLNg+#oqVmPMM{%1(xC&QiP%jI3y?7 z^4-EofBMiZht618>zf>z&6!1h`ebutZTeog?+nBA_E`bEr%}^UvziN6mAAu4sBtOu8%f3rpX?p z6^0UiaQ_b6$P03eD5{eTLPM@#uOl5qs*Je^@9e%-z`{Gj*I?3m&fnXD-Ibux+4 zk15t!*VID&1eWpdc;+DJU*D)_5V;>qOLXaTi1$zV-ZUowFcSo>XM!W%TbAQ|0 z0n71>l|&$SO8>Y;Ga4g;Pdm;kL@sw=8a?`I{fw1<@^_STt#pZy4aSe1#s?dwz=$@q zrlgeE&s1RWuyK0cpkXkh}-M0LHIh_q@MG9b-?ebiN^X% z^MB;&IkWkHQ+nAb@RXkM>AvN7Rdzv+DY^=oNxtXL7i|)uXu4!~U7INM8b))oO6ND@ zA%u@DM{XJNRXkQXlq7i;it&M1s49hlTepMX7c_1NYw(D*Pr7@Eg(NBgq$S zL4|jH()Na1bfH(Zo^)LglK8w?H#NMQ(n1IMBF;aRr`nGMPjmYYL7w)X%gI6Yqp?79 z&{BRnn_`%QA6Hr1b6p>+{h*vZQY&!$!#wA4AvHmMZ$gg4S5ODnP|RdEeo=4BDhuDP zj2>@%_d4=FQOp9Hk=_?@&`DT0j|w8ILe6TB>btn$>&_AxcS%Qd*M0DVLY#g>}EO1?LTf))BYSn zqhTbnS&nFVzDE^WB97>P>!f`?BT=s4)U2vN?MtLa8J2Pn#QC4e^R46E4w9n8ZFF9U zwNXfH4ctXGtKSM@AmkFo&^S4m9QOmj2>!vP(EV@e2y|HRjRTIKW(D^Hj7!*rZ`I=> zH4FBQS7GcQib8(W!>|SFTw?M4rWYP`Y8<_ie7cF4D6QIDZko| z3L8JRbP^7c-D=j{a(jH@(0^|fQW$vTc~w0MgZ-Vr4HTtE42~%~iKrGL+xc9P-8aZ^ zT;L%j9p~Mr8t9%{a2be-0dOD()@Y+l%u?~=*j2VK4cAZ}O2nQnQ8V6*(Cwwxn6|hE zDL)(GtLjedyqoXwYK;DTL_|zx65HRKRoiuIge$*2mztn0ieAjK&9xahX+&f&GMfmNnPhqyy}xbqJs|jMBNvYtzj%kpK=n*3hh#5yL38pq`&p0Mo$> z)EIG%R*E*c}wg(|%FJI%V@J6tfMImzgQ)6yDW1Mok5T5`574X6tREeb>YQ z@{=c`%|pM)T9*21eVr2dewn%HiMi8EMnt})aG+_D`3_~GBt^Gy;9|}_Kr-j}{Q-h! z2}_1XY}mNuvZ2thvEBO-b!y24 z7H+ezI&8yP4?_rofm(%DbZ&N7M06omd$ zO;wJ{OuCAQi<4Z2IrmUxEjnym6^}S@%#C68S8bz&pd)-QC%A6*&SaD&O}QxObWfC zgc3g(;T^72Dx77kZ$#1c4TCUxwlCXsiFRjtyUnj5s|2gUtS*W(@R)Gs4z)YrH5ch+ zGDRLrHI90WqZRI=*7m=dI;%c^BivXmzLy3Dqb@$wwSum@^9MakuM>Un>nP;E`hyME zpKoW$i;ixS6EodR+3>YiW^YAS`FHppxPp7BgyzpuVeg%pNtD=bEQQO-8_gmJ7iM=Y zx=n=+bDbSUZF{$Xlcc2iwd-abif!c8Ib(M=imf)E&}+G9st1$$usK}H`bYbYC>jej z+(?tHp>EZi^KZ&r0fOb|j^(((w!bb&2RSEAOJPQCuX6eq^{&cKAtd+I1F|U}3lY?cMp9yIGb()rwWYabikx z?f|tJ==g{FH%CNwKLTns0>oQHYrOL{Qb7KrQu1%a<2o|lYBrGNU*53AQwvp=?>5|B z2k;(Mq>OeJSs#C*x%W_Ki#&N_63PJZ*#tzE#`$PmzU^WU#)T!tr^z$|dMU|iRT9bUL`C|;S zn;%nPj8e0%IdV%)o~KBcm9Qs7uHwxyZEo^w9O&q@>ldV`rlK+xNV3Wl8l9!whzp9X zkoZ{$3^$Su@|6%egf9(R9z|uaWO_O;(PHpaAYANXvn(z3ee4KSe#`zzRzcc;@00ou zcO0tZ9Lzw!aKJ`?@>_O3yv@31LwmGfXVfe&R$u$WsG8T(bRNdCft4}h?7*FB4#Z%L zMq}3+Zg!WXc+ymtDy}2YRGg_Jj~=j3g!}GjIk~Dv@~(Bk(F$gtG1kLzjU)3F<9dR$ zzFH4uVi{Iw#V_T}J@O+p30jLy271}?^_U&=TCj}xw;M+&x{>!y9n3~*(yy87zCeg* zsh%2is}r278%tzEGF~leDM_wU>$@0DO^~baR3peXD~D0-tG?&x`VX5AW`|n+6o0m5 z4Henv_`Pa`CYyUjcQM^3Rgv|ERfzVWf3jS_%3{1+x3O-=IeexY@G)LxvBgY6a)U(m zo#eh^nHsq}E5H%J1uRv$fC~Oyx?q7p8Ip$tUUDsCU|;FQG#~GCID5^8xGzf)RQGB# zm{x4c+|FtQN25miEZjpnbm$=MbUoP-W{d?Xk;HIzfDO7`mrn)DMM?R9PAS@WS>au= zWupBIzrPV4EZ#Jp*AUuY$C!n`Ypf=&g}gJh))183g)9FR5)33p)jSC;I6)#1AxaXZk40iJ8p6x;6Q;uw%dP?M&` z4$(H6j#m77Zqa>?hj%AmkT5kw z0gR3edchROI=n^bm*o*%twcu^i#`qG^ zAx5m*=m@neoVi%dUV%26QTGLI4W6kdgVWupuva}_C{97BsjVegHg4BgEBM}4KEpJ} zTQxegYTZp8I2v4vP$8Z7RK+xy7eWC$uyKT&W(;7@QXf>2B{BSm*I$BNfi-XVxT)n_ z2-ulvUrd}+8RN!ZOD-<9F5Zl@$UDmbyO4cTAr6U}T0hNdkjRIM?p)%|qP*hSd2BkP zQ(CncRSxnDW?%aen~i30@2L$#E}^*D2R=_Foqe}6ltvnT&8Dd^j4iAaEg7&X9t@tS zxMjbU>Gn*O0YfULpS@Rz&BDqgq6jaN|=xW*n;XZOdC(M3TQucNirj!L@evj zwplYc=~zHh*Inv3$DRWYLzyBCN`}sgzLI;g#+=FTv!f$;S{-&hWreL!b2n?J;{h%& zf6_^mPV29&@5)#N+0Cc`v;~{tPGXI&=Pc$1ZQP^h;X4YDx4uZH4v5_V`y7xU)YMIJ zK0<{vB}hO}&l}**h_Z+|PAI{@WmLfO zB}LCxsPFQ@SykDvq-%EAFjY)A|B{shT5ym1AMuB0WL^QYy2nvBPbnLh(EUu;nsx!& zO(mDl<<<6rBcp5>LNXt%52LG$E~b8-SV>lx)a$rL8RW1WOt!n&t(D7STi~aX8zILh|Lc~B|i!gAu@IAN6 z2W#FC4(0n2q4nL*Y^n~xzkP8?*APDa8W}+sQ(i~lWa>AwU0=j`f?88~OXq^4@{K0j#Ro6%Zko`vhS*w{`kE3NRuKBLg8`wNj`v!-%WdNKIw#<2wYgV~F zwo~NH5`JJF;68{u{K!Sv-zt?M+7LZY;MLFGKHR-%=Io(jA*~X41vb1wCt09#Y4w$} z=5j2Yv4eMy3#LT6R<$t@F_xMc?IcqeHsQXK(si}DaDPKpT25}}&9BgkUnwW>w0#Mt z_ebBRA{s|P{RB6t@YYBOQPz+YP2XB1)6(fALvtA`q0fY|mi!v3JT8m!xsi2*``&WoH{ zxpFJ586?IOOVv+^!{VG5l|6Wa-*X%8OJn=3QTr^5nt=3!Blpiweanwu z!c1@kW#jSFEU@8P{wgybK^FO{zsoHOOmxwt>kr1=u6}bJ|Na}LeCydV{US#t33gkF zBCv4a+`=JZdXp4`5%grOmdaN*5e%4GOCccALNY|7_Q{PsSGPzdKeQKC7wHNN!Bl0U z7H*Z>6lqV_!4oyoC*4_ra_}*QK%{}_Eov`%y$C7ry@H{b%LYza37n0($sf`w8`6?* zqT*J?a0p@1=UC3y{MEED2m5O)WBt1&8RN@+hTmIx4Tt)Clf!hK3I#Xl`wDM@mGV zGDXL0dDLPU&Dv_5cD(`~KXEPp9_BPWhM8veR0)ov)&Tv!5N&%IhP{oOdIYr_vkqN| zSj3w>Fj(QD??~CR51|NCdtQE*+017BbWWgcPs5mf)5V_Sca#TbI=ls z<XF$+nkjbW-R0)guV0zo3SDoO>F zBKF9f46=4FzkwO-y3~d(?9ji3N41!Zb5tz-NTW>xP>j{JktpYU znojh2>PWwVJEoO8e4!NJ*Fn_*u(P-J&ZClDw)Ur-s z44M7;%iU$}`hk-)^t4zJBk5DbGo^4D#^txNpwQlXS3KC0g8sUZ@8=Q9rvlFlsmxF@ zf~S}RSb$<@t4Bz+w5SpG{mbVOf=Me#u2%?i3u&xfe-ovPPmX2AV-my&Z&y@Dp!Y@T z66DSa#dIzeJo}1FJ^N|nXlBDmj6?UEgUBD zOyI7am4GO1#JC|w{w!pr6{g1535WOb+UGu~Cl&0=I;2j%&B#78p z>-mNPTk|;fN2Pi7Ui13zd35?0ZvCXAr|QlDdro})W>puhKc(_B2_J~`y5Ey^JTf`>6^%NGtT5Twflhx)LP-*SQH zC5MT^Z?M=~Pk8bU(W{1G=B+d!4wC9IG!Blv!kv7a=Dg@<9Fci5z^srGY1N~A7RMAn z%>36{@WP=b%qaYL1FdY_OThZvMW13I#w0ZdrqUANd&CB|c3IMOc7q!h5bOWsspy(1R()#IJPT#-0$LuxCjCZzfU|leUS&pA?=OitZ`&8`4i)XH`9u zPCu8%==B77|F)!Nj_ywyUP!cVP)MSOhh)C}YT)dpY*Sh&xL|RmmR415%hWBJ68OVB zwZR#cq^RBg@&xvoW=ymrQ0tt6IR-<`SnkW|$OPU+wP>7pdQ8<6*{(;b5*gR9ECNfgYRL&_vXY zha&>2;3zXlI>N4a8k2k%%Mlq0ls%BOyQP`4nHJt_1K!-(kLp0hH8+KS6MaXChD8&)+G{WEVZ zd+xa4RTL&mu%5$i3Y0scl(2sbxKroxqJjnEvIt@vWl)_78eobrn0|ohpKN)Du=K-; zhraF+`0mNIJkm1LMxv#e8;8BlSw{GvTDlR7v~aLtY9suQr;b5Nikz|}(p5oZknDit z)hKDbWr%h&b!UNzAeNo)JSXf>3+q+GmXDm#>`4NDlg&3k$Q_%UEo}!_y<=Lv!=smM zT&mFCL7!SaaGozZ`o8pCtW7`RB)vcm>9(`7ffM(TNIe9g8Rb0bl!_b}Ez8`;Pe1N# zfJ04{zIor`+{ex9M_YUOpLBP&+USO{I`^psF_5uflok;a zw(NPJ-{QRp{^hak%RgSf93#ZCIy>bE4tGpGLX;h(ONllrhR|Y(eS9j?u!(yia`-!^ zi8g=!6+)z(h=0a98*FSLQtjw4mp>_$ztU5UHNxW&NzubyuH!7|@C<=G7!u-H_8vFM z5m1TZEUO$cg%aL9gM4EAbse=?+8S#Y2Lkm@G;Dd*hl3VH0=i~n=9_2;7ieuh%#E#$H`JWqyJPee1o)g|7$Pvy!fg6p2rWZk0G1xc=fi+c|WC)M)W+ADgzXAYj99 zlS92($cnY|xix|3J-#+S_OhkYREEn$;#nT1S$d&^eJsB)?;|&R-~(TrLh6O7YTFOPEB4nC}#5j=tfu7Pd^D^sFT!S zJquz`x{y@uy5n ze{(&@@QV#WD>Ym4J*mCeaV{U8rF$qw61Bvdbv)h_egk@H6NGc%*pe?ANRo*mqic`z zlyL*X6V*%Ltd`%KT_h`bejC@(-}5J&B2$e|L|#m>%jl*kp78N;!JT0+O8`Tp8_+=P zYL8ppD^=bY9ON0y{?%%wF5{|d6_&q5XvQz}w@`rIuAL1Xt(EW!vJbsLsaWQ=QZ82@ z?J;~94hCXGf8cr`3SX*x(90tFwUXLJ!@owt{9NCS^ynq6QV?4I5K4$GAhZnR4az)X zTjYSBI_aKYb}y%Bz$beIm!a5hG_6hUU43u;Qv+VQc9C(hk3KD5CEgq zf;RHl{F(fiRx$Li?7~$pX;UpY)ITSZt( zd(0X$9$A?$>C}UK3gDyO2EC4&`6|bdZV8gD9I#NdZ#tg)ktq=MSRGIqZl<5HF7G_L zQVPc+Sl%bG^f1>jhTsaU{!>1Kj7vl>a#iGUzY^z*QkN)l+u*gH=DZr4>eF`tkqEa;k;3KSXDLadaLdP^_380% zE=~I;Pw}`*Hg8voix^SPoZSPX1g97Q9;NdL^NmvcWe7z!!!m07_(~)#0Iwwz=T!9| zK$!973Rx>mNYf153joVy?nHp%aUOsX7YK7@9TOT)Vy~1r|BWUTg{pT7HJ#$V9LOkX zEje8oJa9y}Ct@b+ zCp$u+v7RT$wOAe4xo0>m3Ta+BF|FkrY*FJI6%bomK|X+v5_X|`JU(CSksBhw>D#6*g1NdNvw=qShaZ-15_3AN>#gktnVRCpmWjssQSA7pyFBdXJk zz=wN^$9LF(P$K`%VMouOqbD?cpY*JUS{JH2(su|hmPu8s3>B)1x_ib<5;Nb@4=Z6g z?qAnH#yS_lU(W3NPe}?Z_lgSgi!2aenu%m3gu^YFbz~S-G^B+hE8|{vP?V0?Oh3Mc zu*?T|wjx$)Pb9%=z!rZQJ?wtD{2BvC-pi(WYGhP{`bd;hV%Jnizg5^i9C`GS^=LR` zzGY4Iv5i1g9bD8anZ1SY>izFg!+xM=VJ_ZkcaI}elyCSQ(Lv-}uUyIHSzF7MsFYb$ zKabI#J<>?iboa>vPn6erUC0odFqTPoeu`EFfIAD*u-%j?LX9{Yi#Jrbd|@BtOB2Ea z0EM2lGuq~zHYM@wtF;(*EvalIQF{=d9)Qd=K~rs+$`x-|ZGdBrmf34#Ls7ClINN^< zXj*HLiQ5?$4aKn%P|N0e|5&mw^+%HmlUhZ)XNR<23i#Oz(dO#b7#3b`b_?i^5N5ZdgXogL505sU z$xlmUA#kWhtow%;W0l@J$C$B<;B81iuqmaF#M~~*;$%=-83`y5KeWq6K>NZ>r=y7uf+BE1K-NY6&$~& zH3d|ruh*ASSY7KC+7&e^?r-Fm{=K(gWMjF3Y3dTqm^Z0z?f+J~_(9bbSjr;HR4bgr z;v%;L%b@JlsYeFrEDY=yK@@PdJ_U!8hYODlkv@G%-;T2-@0e`{uVTU|e`}OyZ%J0q z7HuwiO8H2-16MUv&cVtd#_)}UU!G2CTX)3`v8qA51wv=4Wt;}^1}=PfI}`y?14?Dg z7y>DE31UAi1S?rTOFP7iRS<8xxg*H$uO~49WeZ}xxz)0!ih@J1M0HxzxPzLQVnp&9 z&Qqy+c`~yVBZy8g`(HGL#6R zEOjA`lfB<95V}6xxyJyVv@&HZmt4a*gYLhkndkB<8JHD((OdV|!`(XXEkJB6Y&I6@ zPdGrTE=9YwZBv@=xsP*6cGOE$445h*CWjA#fD9rux-PTB1=vxIcY87}H=m97Hb;v4 zo4?|0*!3b&x`*(UPPJ*pZD?&Aw${T8IB58Dl+O}XoQjhW=QFDk}cA#|PY8@*l@Uq{HPi^&Y<35+)X_W1k%U&A{+Zg86VVMILY(QtDD=HpysxQH*D>7W(EZwQpY!@Ob(Egt5 zd((p@-=onG8}vo%#Un{E94p^dw%KU7vlM+3CRN_uGutfuXsEqtulHanGf(PP{ScLu zjuBnedn$z|H%T5dB}`&En2{FK7Pr#**3lud#&=dunW6g_i+!<*C}FVIEBj8Ez|v|M z=`ggrTrl2zH$QaSRdhD$ejzJK*W69xG>k=f;9{LN{6vzd1=SIHdfJ&(Rpr3{c`h|U zIX*}rYyEFfdedCr4JD#JfY=fq0kE?dcf3hC0ee;p#N|7GlQQ7?Tk$=*y@G+{>A8-U z)fyfRTtJ;x4VkyahnVLL$jDk__qW2Z8pfrYExNiF69D!L6f5)w%UNUv`>6w-Ba#E8 zf5}l@?KtHlXH-W``Iuv5=DE!*9*e_ZGCyOeRlcgo>@k8DOg;fOBdVCzI!x+T|f22l>NDC>e@U8v|y&gkY3B+==shK#w zniQbozip`^VLjq(ZEohH;pYLhF@Fcn3__=XAMfYs47;`M8byn1vEuFy0g5{mcW96RMN07C#e!2@f>Yexp|}NyAjMsa zJ8i!_-|YSD_XlJ$lgZrIeXVt#$5G3&mzOsbUc}ZD<|^fMiB#2`ET!}@W7`-fNtyJAU4>oX!r^kx`Uap*X~OT_Y@lLjMO zWQGCMJMdB?P;ZmP@%Dvr9hC=!LG-L{1~MQwFf28vNiG!XTY`$w5OrhXLBgSJah6P# zz|v96^~GlWWrSW-_=5q?FSsB=KC4B(f9*XLNQP%HGCUFHN9D07b4{WC2@hQF?v~aG zlBDc}G{uQ6-qodg?y7g`>_ZlD`-(M?q@8~1G2cwx{?>~6t8cV@ow^Wp@`RO6=AQz7 zAw%UzRU0O_!y*B-QIkshK_o9@1FZXDm0xt})`y{}578r-DQk{ zy>3IhV}U+EDpTXE?bO*5ys8l6-DOG_I%?lA8)<$gqIenaWFrV6ddHg`8+)$0nZ;KB zF4TQfd3%H3@}c;pOk(Nfm%Si)M?jc_QWfcrZ8r<37`^y0%u$SUUK|F-vk#)ipemZv zRxEpC`zFpJ*1|MXU%Ap*8K;KOM6z=1GJ|zMT$hGNKhyP+8}h)f&zjg#sNpJ;zV)!n z$Z3ziVoI_l)>r^w;cvGHzxphfac3|8P}AFs6q#tS0q9e#YMD*?iD z&0#bZk$CfOA>~M(Ha|~QL>lM3;tDYQGSoXGC&EDaR7d^T7r@0Ynm^*2Bj3*=A!aS2 zUhZqr`NCZ1zBQL5o3Qn71HT@1e#twqDr{TRJ&dgmD}e6#zG3+AWzQ;sidHmY_udVx zcW)6=&`bV=VqR^FB!R1(2i`vyzvo)V^B30A-f`dTl++RPQuJETO$8;&Z&Z;k69}(-V+Rsn_$8`Wd7k!{A zccRhn{F=w?wB&h-EYALmtU>-AI~`vZmANn8X5AyecK@K5_f4+<^RbHn)c*wUsCcIr zy#iwjJxC!D9`&K~W_0g{GEWXptdj|?3>U}t%*ch_2_H0&+l@dM_pxd$XVes0Qs1SZ z*<*NQ*x;W4jDOrHhI4p;{aAZH@(%9F&>-YGPgGi#=BR)NpI$^UsY1mj-+s*;uM)=2 zi3u}_EVGq#%z`wfP}!2*%}5^Sj){)$wQ5Z|2$?p~%aCMNj9gFKHrK8EX2=kzXLYcK zuFLzBep)&!kf6-JvJG;?rhbw=8Jl5b-=-2&g&b1dOwGdzZStW4l#Cw6at?l+h<(!& zvb*}Vlh67#X^s+X_C=>|(JChwVusd@JO{}JL@IU2;N8FlZUGa=oM-wHb-aPtF7Q`6 z%_BQ@(@p|~TmNB{SPR3EMUK!Yqjs8<4ZiENoTXwu%h`}Hb-}u&MZ22Cc0=M#9%t+4Zht2q0p7(N-d5_f|EH3h$WJCv2kMU$61kqSxX? zu0a1$Ao5L^(F42H?j56HqQ+-8!$Vl)6p4G?z&>aoDYz(}^r_FHtCXTLg}dDnIkux* ze4?$Wk33fBJc$Y6zCU%y27j(WN*8Qxx*2|+-l8>AG)=o8`i^L*Pvc)?fvLr`%~lHV zU)Q3Go>3s#bsu_S@s3onD&a+VSS*>TJwVizx99)A8)@8 z;e*IKRTgJcG>Wq@>f!MnhT4#=ZDSo*CNOT6&INBDBN5YY)v*)UMA1}J^U*!*M|(n=qilk&EAMdu3x;rXYp z7c=~a1w5?N&h)(#f6Y>gp63Q;PsHN4fBuk#rumqb7REu+ibBr!4!Lj9#f<%cO-5OZ z&!F2_gGHwMQ(*=dv^LUVLei63UV}C^z^1h>Fpz=nWfMyK;=c1{8t28?=Voy!Q_*qO z`28a#azufXe@U#1nf4A{AvBZyC)n@p9X@K@mrP6?sITtNZh8f+l&za1aO}|vytEk7 zv^+Um_h$Q%Th6o;$2EoEh&1kS@WGs@P}(`Vb{7~l`X;r^WUD0(oRumPniJ49+*^M{ z@ikJ!Oz#1rjkotMII-Ow`)!g`wrSGl4}iL&q?FX=4xZ`vnzlJqk)JsuTNKle_jHc2 zA>P?^?mRB<$-nA64BVib5e}WrhaQx2p0^BY{KVa;KVqh~_g&HaB1J>JP38CvGb3=A zq33SL!)Z?b!2}*kJ1Ec^b;dT^!K87XMjNhnxD}N5bEuAIaNg;+UUADh?!LEaq>3oH zh8=H*+4jCo8=n6Ujm!AKVS9I_E=$~w;eyQRhlhB;kX(GB^%K2f94A9Z9&a%OjzM0x>;* z`~euD6QJ@hyt|4742u(iiw2G*AR#1W41dR6nC|9&cqwXc)ChYR9`CZr#8=D0smljj z3>d(=JLkh&G})S{X}DLNT86o5LWAuBeH5v!5hV-~dNy7Sh!K=zVg1yNO!l$%QRXE% zi0`~em-d$-TK*h8IL9^UpS4_wIr}9qSA&&$FhCt(GIk{LF+r}MFb_MdHu{4znEJn=Jo*2u zo@PKmq}5^BkglE9uK|i`cLT9KIkR*uNZ;#-hrQNId0cVG=9m&bvD9u$yqU&3ipHnR z<{!`EJSrY{xG7pZZJdEHDyuLn-Zh}yM5l_scFF+xEYTHC4^^Dlg>w<+i=#(STE0G! zTv1Tqm;Kd(svQvM#Nz?sm5*ATbR+=3hw?fcd)Cw8=dN%6sAd{0>d1l3NC?XNIb_Aw zmw&f>atnM{0B+Nw(bITWvpaPG=;kl_1ATHoJ0`6pnbaC{*HBQsb#(saIessy%M99leuk3mI)|MlddkeE}aE@A!j`89{mD44WKKR>)vLVEOpsKmEbJeZzN+#M-21Sj9=IIU?Xr z(8Td?XwBCm27b&FYvI9uhLTT_oNYrsb{Oe~hnUlbsuPq z5S!S`vZ^sOVrud1uQdr!hbV&Dg*oDkY&!@G#R)9y`=soJ71a(^$nbKe(=Fqs+Scf5 zi;&7D%a>Y=n^6`obf@~%FCdj;;f&UVSB9lrb`Yp+)VWLhuL!3(sOPA@biO>!?&tVqPaB0wc}| zn{WwNt>!8-wJ5hg+f0mY9CVT@<96S90$^xSvJ&>v@}jXGoIWkkKgyTi>EzwAzWE-? z;6Z-8+DlC!SS#dPL7r+${CEm@pVx_7!~p1RdJtZV(o7k8b0<#K#84@#-m-+)E*9I( zFLn>v49N+`30)$=tQU7sc+J>be>(^3)q#WhN_yjeO9T8Uel$;nL_gbL+anR+p<-OJ;~k$^ZI z`GYCQeJiK5`u?_Ta{5B~Dxf6cKD12HXy>Zfn`FPij4GkEMVoTJji#@!4cvAFI=8p5 zPz{f2{2fY6<2jGKD^$2jQ`0a;&DMKGHXmDL61bX`qhIwYOZxkLdOo4v`~jc*6-g^p zh7ZVNB?=z*EmgZ}+1R4mePcfM%0v@%$lUl`5_w)E`c32X z?$^Nz7jX}lxqKms|GZiW-XQ2uvk#{ID)zO+<@p<+S35b;M5|c1Liw_6WxQkR7_-M+ z9&blYEk)&$dy)g=e1?|k>?q%aghCw&IbgA1ol_^k?=b&vO`2-l`iXK^CjQrds7c5% zluF)Y?eZ&0WL(9_KjHX`b6&e)Sx$KQ=0j2N>p z(Zq7?KHoiCNEbHW{;VoE!lq2VKHv7yYqMck)5u~oya&z}lxVKM=cPcsO$UkA7f8&U zlZEKzSkHahscE{lR!%V7TvCZd=VW8p9C&esvAIx2&xKGuZ}a!w9?|AW_QOM)(9&^n&$C%(x8#25_OanM^Su1pBdrlYcOV|EZ{$D&?5P1@Pea!uxLaC=GN-LttObXMnU8zH2c+ zP!wO)BoA&DOYfVC4- zap6^x!(Ico-%l}PBQF9RxcHrjZuRim5iR^OfMIPYKQ6v+su7^F3iS&dEWo>kB9)sr z^?)N;^2i!T#H7*4NXkn(R7!PkY0dX_>Z02$6@F%01e|(mp(Wj7AJtrOed1Dka)m*^ z`$?no#Q3E>>vMj&s3Qh^-G0TKkeDpP#vS6@TEx?G2Tp)}G?K^le_HB*f|HAjrz$f^ z6rW{&LIJ5(={_NXBeIJ0|?}Lf{w=FXju)8f}x|%MtT-@Dsyh3G4q~%CiPw2&`vJjrcKuTXk^+H z6Sa*^jelOwQ&l}D;%U`E5M@d1GaacX#-!rGiuz*+<9rG?sx&&H;nxxmL+vk0kg+!Y zteu!ouU%eo#Ht7Z61*EW_;fCZ6K9I{Rdpg=I z@^0GjD2*(zC}^6 zy9qs%*a2!ZP;2nh-=;;aIhPh{hQ%bLj^l0mH78@M1l|;&+IcAQ=hV+m!3ugD^Jmkf zlc_9Z+F%R(5`R5cnI%~p<)+ak*qB7B6wlLKVsom)!RBh2IQ*9IBR)(|a^praGfiuV zY|iK3MZ(>P{%{@d`|Qy^uww|*oO-tQor^&#efc$5k*tRycE3ERqsrxqm*LyA=OqPBF9mhL3RzBCEL}mlgUn@2~#;l7h#p zC3oT?;{G{$lwnY$wJQ43$~uf>&Wws*wiS7VC5etC1_f6m897LB(V4YBr`{e!74BIr zF}CntOtOj?faa^k7SR$!Usj)4M!FkiT?hrJ1ItugWx#3O+SXo144YNh7syngoptzA zvY9V$9#A(Hnp7w@m_;uT)ICE&jHENLZUb1ZF^&`AkzP3ntJaFhL^BE+#s+5AA+Ji- zQE<=rrk12r&*r}>33z)DRLG6StVHp=IuvI@H}pQgjUZLDuNtK|ok7pPC?@{94FrL^ zEszCWio{|u3}fP_$;N+pHgz{}227ldby8@DwwAz{@=2Mx=qK+Q`8t@lyldK033{0( zF|zkUtCZ9NJySqRx=&upUONeZQJcC~J#8;|;#KsKNl7^qNu8D!eUj}8R;C7=?Hj%JZaIohSAV@h)p8RuN&?0#Z1j7J#gU@k;Hr%Du6uYWq}t^f_Fjky`Ib^jX?kBC)<@eF zcY`mfudrCpJ_Konx?244ykQx%$D}Azbv4b}pFMhYHYew$*suK^xou3|>5%v-9u%w) zN+pTE=AAFSmBc&wu2umQawb`VYq{h9S4OSI*6 z#}_qMjiEta=tYs^SXH(0?|l11P5Ch8E>!IMRPR>rDi>1z|9jEJKhRlq!On0KzXm_y z#tGF2#ZN_PJU_lmYoWa&#F}t$+Jlo)(129IMM)o%uT9*Tb_y zi>Y2CB*oW0P|#DT-38dRS9!v!cwv@C5r1XWzEc&6o=Rd|YY^r`~8 zgJk-k$Ece2VDBT3`%|T!LdFKiBHs6)!vle|{dmo( zNbD6BCRv?T2_LVbzfCaH^3%-d^>erjTOxFuN>ZF=b#bVDJXp#3Y>XJ$`}4A`_{3qA z>yqf|45Mu+9ixup_mAyw^m|eMh!OnPcJVTcs>b}v3eD-uszIv{^kM~uCZSS#)}8G2 zEGrBxCcXy1QeBV&Qi7-?MA`Gg_=G2g!D1!3hTFEjeir%OdokI?J(GA-V|rfW#SX8l zSJ%{+tgPaGOy+!4kZwR%|2@%ei@j(lZU zjdz>8f+fr#h`nDzep!EYz>GPAe;4uSP3w2U^|+XzHl3zA^`Z4p<8g@qa~k&qIG#p( zc>qeBlo`@wQ`_c^3c=<;Z7(GeXvUCSF-NO$SWzq9D$=C_S_0&3xcg@kV*JZP+o_%F z*l;bRRFZspgYIer!wG<})hJ1c(Kj+1vubcTzzALhVAaA%AQzKOo=eLA4b_Kkp z#Hg|O1ZwXNXj=GFr5MQ2O2w|nHZGBFO1zmo@uA!UyN1P~;OIxt7#Z+M^$BLGjzINe z$3N~Y(9Zw59QPqTN>|C>j0C6!V*)Dk0Q70~VB3x{C%1GSMwT_4H#vCG8d z<4V#&@zOfp&sw(Y`t{)=j1gLaiLYP$pluqN+Q`!dMB~nV$49#taS#d6+b=er7kb*7 z+|IzAERhEpH=1aT0Sr$!&BtTT9XiuZ9J8tQNR;0DW>%2x{(1bcu4@f4cY6qz2+Y?% zKTH4^9v5qij}nC87ME`Wa&fe6ozJypg7%SJVf`Z6Q(hZcvu={1N&8nOu)~WAkMp#V ziQpq-A=LVujMnR&=5yF9CBJZ?8~?~6z|awq*=)!ITP4gvH%V14;U9C$-znVvPnGGY zGW?+HjjCQ91MI;=w9 zDhQzan||Gm7KNARPiP+jT-2PJ#)saig`ry}Ktm<$Zn$j(cr^dvo-KHbIDEP{RSScD z=@(A!?_N;7pyT;x*oWtDjO4yAYxM7Ikrd&@9`X9-jqy50*I5?fKtkb~v#Q21%lu$H`J5fiRwErQ*8R_ZhO&A8LwHGa8P#{0PNw!g(~{#AM?UP}9WO~^yF?`0Ru z^FxK5Ta$vX^1;27U#67qcOe}NuJjo~R^Ckhq6Wk2IWOFY zj{_2-5TKWnxk{MBukKm~%z*09WS2!>{hJ{qO+TFGbn}~{cbQYas@bqsofFdCE*eWB zxGEOr@r<6$ulj{4{ahs2N7FOkjSqM}?I7J}mHzB@&fzFM$2J%R@Rn7JvsKQY(5xl4 zMkX~SG7T+*>LH!_>6J~wTq5_FB%r8UGu*7psGH<%;fAB zDzk7at@Gvd>e9 zBjOq$>(z={>P?rOP5y5+EnV%xU_h{l)kwsc=I>O60gsOa+g^GT;BGzUzak9y{UZ`2 z;)Z$US6N}duF&^U(v(Wl#{{JJYuPTM?NHTdY16Y-!p3q}H3}yuuByPtcKy^w8!(KJ z!nxBBP1AR-D`!x16#V(OB=K~O%3Hzrq~k{o-RXZUr%H<|KB7JH3W1P9GvZ~LmBz`Q zlmt`-pO98mu|vRKF3Xn1h;yK+pW*u~r`zboR>?z9`}nwjcig)PimL6t6=Sp-B@=UR zx4@g!69-{}e2#6af^qqr@v%I4TGIyeS?&{DRK&{ z?Qf)SS$Z-m(gnn^pP@*&!`)2YVhP$?Lmmg~b=z>$RQ40_uTtT!1u}3SjoyJWXRgbV zxUO<+;wXD^2Pvb0Ol<44hX>Mjs_;6R&%m6?(aYEB%T`=>vKv2w?55HMz|$a3W2=yQPU(ha|>q`5-DsdH$H3UghmRY`k>}l zz(_yW5A_~>Mzbt|>C!?A7jSAn;9H#;eAnd^ig_*QjR_R=vTABybx`y%SfjM~iEnMA z@r@EZ=5QRR-VXia5jtSm>5#=cE4l?duEmAnFwac@P&j`rC8l!Yj0TBG9?JxE*Tgh3 zS-me3U0koMY2_NZrBfm%DX8$`{y6lP^cQyQX8VbS?Tp5{dXHwmMm?9(th1z;3{Z~( zYlicA#)T$~(>BkNUiIn+T%BQ1-Ze1UhCU@`&rXc6=u|eXD!q8NI&8^L+WD+D!jg~j zwZ!!R=@nDf+#YXQ0Tm*R&LI<{R@%9~lxt9Yjr3GW(sTdhdM958M{E(8v&5Wgzz#Dc zM#>H_>&@^Xg}wZ$)!l-p8|Mb@_vmge;yQ$wNGf6P48plN)Ypm;uMIrTiciW-vx1nsp^rdzFO zqGj!rTP5E_TT9NVbZW}ykY7c#Tyt`1Rk0W0EW%H+=LJNXYrJ0P$H5d?iTeV&Z{=V% zqiMUdNBmr64A~32!sf}lB92Li8EA2(QNsPLR*sQl?hIYUG4a)B+ZFPg9fInzx?6^R zX~vIOlIEZH?FxDo{k}8>+;MdF+kBA}5+I}E9|lxla|;y5sWeV6rTVQ+5kZu9bSl(b zRA&2LXW%|$5Yic?XF3H9Vf6t@#xD~i0XXvmUQIL~Ebi~gZ{UMYfeJSg5~ccRkvt^s zK4Gr3GK&))`?o;&+|)%iD&AKpcO6eGE=AyrY^cW!u`dh{)olNV0bY5O&H18iH$}a;iK{+dsmb@ZJa%+t};7c zqTYnaYuGc9%_=-(58owmj@aS-^JE0)u#CYT(e{sDKRbr@QucVl)AnE9pmCL3JlmT_ z*0w9JAc%y80@CP^CfZ3`d&SG&CZP&@tu4&_-Bsy(Gq0fcPa|V?c^6Q3smNZoueQ(9 z`?M%MmBq@NH6@!V8@cAYTc^vU8hSD3K6!n|k5bqel>dzGH!=m`0~xqX_7=1gXp{4d zAzXb{y1YYfhS{Zek$|j@%EXqk_j>}HFykZq>LcZ#W?>PvXsAFz<~(sL4M2pZ!|kKj zHjroiyHkk59M43=dx`R^OOD3S*8)_3rlF_;?+V1#lle{ zg~0uNo&g^hT6Gq&YbM_=qz$1~LrWJcV-*d|CSG30eKeiwe;DN--7nJ|!~&|5`K^?4 zUZ#u=**_wO1;k$ZL^~k4$kIpdv+&0*9hMb-X4wXj?5fDCR3qwcBBM^*XxCZhmW;!% zU!7f?icn%V4s8Djo1>c*w(%!6qDbI3`e`%xiV6+lVExmNITQ_@Y!s9z1t$yr*UMxs zDm@?bkBASp)v3$&w>{<}UG4U24Bw=RG;QF3cbD4azbBCLe@>t+3ASUVUk4}DKa;rY zf&G1^#MI@PFA>J5hM&S`YSpB>herHa`VpF_cY@fs6RZONnBn~L^f|y;s?ElzU&^rvWm1@xN*Ct< zXXqwOi_b|#gsPst5Mz0-7$$!et(sfD7&chXdt!`vA?jTb7S%lO^ zWglCxy<&0PACdZK;0hR>0oJE2sL-F;+`-2P#VpwGLhQustTjdz=8itE8c6!cs*}H# zFrvj+Rk!x2QiHO4SztW&Nj#!(kr(kfXq&)uaKV|Jf>h4aBFIQSWDngn;`>1F`;m#M z);FN$;pTww>|@~XtH)0;1_Y6JEfHOVr_zdKa-K+rl|6m0he&_jEU-d>CJkz=CDJFRnT;_) ztS6d+DpI1f!1qwTYqQ$$jt=$~2as|9$R}p?KdQg*TVbsV$gE<48#1N1d%^wPV>(;C zexV*`cIi#!P^ZB}%hK1o`eM^LkI&zei(fgYx4dEMC6K{~aY(g=4Kzl}oFCX+<$Zv4 z`2W`QZK1%pqXyS_LD(FJW>+LZmX(Bif4wqHO?iI9oO74Of}C1%p2CPk{eUSE$80AO z??XLP?oHe@PAzkI>mRtD89VC7$Yt4-R(9d_A7iKRYHE=Id6)WRdHe7faewJf5aQ-- zZ4&L4aQIDNzp_GzpavUxy@ydU)*UG5n#s?h>0#-xW=d=m$LNU+V5@|sbfj_|(vHi3j6%)M zjF3Wcqd!A|Ny&QUY$MW-#vSCNl%rV+3 z9r8VIwTQ2F7AttI@8$<>=O0D#(Fv;2!&}I*xd#STu$%Pa;J3RHIwboM804JpL8t=g zgL|>gYLamBvTem1-ey_OvpEJ~i*Oztyj`I|U>EN_M2}>b$1ocChp2BrXPBQw}xwi!f!XB zR}3j-9RF7`c5c}-QZR^Iu|Xf)lXJM5%5)z@L@7TIKaH%6Co9BO7+sgI`D)-vgr}P zq>C=!FP@5`Ve<~1(H$jQ$NIt5F$0wxH});#1=&1kPNJ;pbNmcRb8cIrXgFAXZUcBW6gHPo9UsZSzO#Nk|r7!oQQUqQA7 zOz6HW$cosrMy$;GvQz~$EAJHn3GIq1qj}(|$aWe2Bc(1RM6!Q*S`Do0b>>^y+gw%; zV80YavN@8^56RnTo1+b#FwWv&82OB-Bm&5G#p+jts!NmB7NoKNPVJ?9Bj?)e5=yF4 zS3&Gm`r06g^s!whJV(H)Rr_=guhu_Ey1Lj#=y9C>J)=m$)y2?zoB(|;K)L6|yT+KP zGB78y^kyF!O^Ruv9|!KS-6POVI+o6nETwq*3frn()cxYE(LEO7B<$a3 z2l6LCGZ&WZ2$CIerTEn^-2WpGTzCO`X7-g~bdq-kKY@;O= z#phIgpd-)lCyhXm`S(t3Uh;*J7S4M^PlEho$4Dtx6 z$eB`txY{W?PXwPz<3eoV&=#@jNzwXu#S2nTHK7luG=ky29t_rd&EAXgQPaML7Mc}t zYl$)yDSZ{_^oBeqHaQv~)9Il>^a!N&^ub1Y?u@$M!|Ho%Fh-b{WO=ZN$ABd%qd5N~ zgTsYX*=w4|A;OGMMxQ?X*fe-uJhLZemj{&wx`ZEXGjsc+w1e1bJ`;^=09+$ZV@Eh^ z_pdWor4-Iy1AIaT!v|X7CU2!zyyf5$y68j#e&abN&TIdg*!xQ2_J)PuLw51>z|xbq z|Bn_m`7#Hxmt-j91U$CN^z*=x*i2SqVdE%$gK2^H7LK7}Nt1yia){gJK$zM5w?gnOH7X0KoP;S}8_HX{>8Y@5npt z@8YhB6v*B_AJfm$WzuF=zA4--DN6^BzH?JY|67z`t|*BAkKdag)iS`kY4xrIJJ&oX zZKRNx;PUsOQ1>i=XpvxBI6nZB?Vx=4mcgkuF)ynoG$Jy5JD3O8N?6Wy9OL)-foqxj8!R%J&BwHaWiFX>sKXP{2JOpAphg3`DqYUa)Dn_5&gkOD`UEWNHEu=c7_#v? zI*^Hjmula>)BI#>1XJ-KD_K%|i5YL2uW8gHYqi_3^cy_XZLz_9xLaIUcG*Jmka~%} z$$eJevK#OmcQ1AM3gENyWojd6Z3c&%;r{;HBlp*Zus8b{sBV9r8$^3cN4ZJ*#U};c zpht>;mZzRuB_{3P^5K-YWX^{w*=WLe8_HG>a2&mq zTjiFliguPcxKEkd4y-~e13=3M&a`8auQRc@NG(=M;1~IVk+fcjIn)r;y37)Em*G!4 zW#`kcy{Y5ocOR6!Hp7M2D>N>cjtK2~uJ(gw&ki!*ly3o8F54=}wz=NiX+*x)h-&j+ z#QnhOD>3`;>9btgg1z{TeaHlBL@{!Sl})gp7iQUiEf;2QL4o_|%e@~y#iHCIIB6Gy zT*^tURiWpGyF07G?W3;kGKFO9GU69Q!~SkGQ#8K4?eGtB?hJmw#Pf!r8IE;m*t^9t=PowElBIql)HEMpjW~Z zqqSb)Y(*Tla}GV<+}RJah-uN8s8asnWhvbs{6{eF4HB^J6_aA3B zL7_}iU%!5T*C$ay!0Y3Jm$8)*sG>r|0;Jn7b^HT5-lvX;y`4RJS2tQ-1Db=6s^fTScuYwgS(I<&+gFp# zx<$9uWVN?3xYfSEjN(jjaGTwv`~d+dw@-=Sdd%)>8Fb9{E~C;`h->DGGc~ArO%-;) zlPw)4o(xRt>Kwd7jzZ3}geLq0aFJzYWIC};3s(tVZ-9J0FR*nae7-0dhA7@MI}QHU zKEMuHBte@M-07LC#C09C&1rI(l>JuOD=DT;gAjl$Hgv!|miV5mhvaR-iR14)tiLZu zXYH~ui49q&$kH2yfy{yqEf;F2v(^XX17hW3Dg2wGJ--BIiO~zHs;o$|faA_xG=5Ho zjS!~DhCupwh~d}!IS1BGQ?bU*EseH?Jd_sPusk{2PeK-W8DUF|fENGdVAFfw&-`O1 z)ydhJ{m)&(?M9){OMe6*p@)w&d+JJs+QU*xW1UBH>O7E|+|&%wpLLRk#v9N-nb2^q zqaPCbT7&|H4aToI7^q9|~u> z0h(3vxhf@Z;&c0YgZ+D9d$cP_Qhbwg!V3W^ zGr{|ZFws%Id9Z}8oJc-qy;Iy;a`-be@KkCmjw>O6T@mvs`OP*LR4MABY!7RL9dOd9s!dlk2ulPN`AxAh|F?jwqqvt-!IrYnU{-!y*rZSOsx)G;G^l>FKUXA$GWUeM< zHMw{pdqS!*w~L06fm-Esq$I*tH>~`TdlE77EKS15 zdGE0Rx;M$$n>{*k(0KY)RN%`{C9ZwC^-=DdD-k5S(*687GrjnCfysRGz2PYwQ{bxJ z?`HtL+hYV{Z*Vfo<26bwI<}-hORK2H7Fag~*-3L&VFE8Rdws?IOL#F+!ql3VdLMB< zA5#01PP(4&M!GDWs|zozsbo*VnlJU&{G%n);@Q+PBGmZxOx34b7g-yjJ{F zBsbRf^>e7i@I|`WW3Q`b-W9Ot!Lsd5>KBWSViz6|{&C)fl9J!2X!30inQZh~pc#MY zIl1&oo7kvS?Qbn2%`PD>_;%3jYzBV-8)Bq>Ioe=dJCh%!f4u{L6765g|1)^|AT2I* zq07IyY?QHz74S*m+#IYl&)3dlw)Q`PiR~P=t}YfQ(vv;2;}>@m*H*vDEfQ7o!Jh-O z65z47W_n)I6?Zq2T|ZnZeFEJPf}&vqi)pFu4_L>4Xxd%_jnsb`c8^7ib55UN)VT}~ z{V|IW&wDYxM4v(@B}j!+=d(P>tAg{I?@!F#o25kbdZYKb<%Gbz9c#PhoI!MI&(lO3 z1Srwevyo+CeoA4<7UCmnxatoW8 z-p7)h!f*7y04T&+ZuK)T;6Pg9K!JaXqQvbAR_!t#=%L5%v6nN$6)&Gd-9v%ld5s@N z-}6-^{1!cZe1KalE0}%ku9o$1%l`@2hrnznA<9vZOS$Z4O5)2VYPaxa*(nhDYi3v^RjTLBCXxBg zjDN|ySos{%^eMrAGuWf&ska2$NJm?(8pPq#->M{O9Gc>XApIl4mGTEHxI$(l)t-}V zNB#Pc+Z4P9a(b}4U^C5*HTD|1Y@SNM64=mLEee(n$wO;k|1^KHV!D`6phrNDF`JA%G+|Xry zh#@*Yo+xLuYzZOK$?v?d9* z22Qz(S<~&nQj*d%o6n-4gLO00#Bw&ao{`mUo9{^r74YmE|CM|waj5X|3GuDQpdq2Y zL2~k9&L>+3Jb`}k;Y~qrU;pL)W!I-L1KjgETlP`Yc;;iAo4U)L59NKp-*{^s-Gnyd zvhfoRpDIvM+dT&jzSP!!sY_I|#I7jbuDBj^dpmIRQqEWOzzu7f?%IU730%51sU3z} zZHr9*l5ghsD7ZOg+|5Zikd#2Fiq>`O}_6n*qX_FV}2;U zBG?L1A=vZtOQ1Uv?tIGxE!*xeASf(}bagZfgbmU|1>~wGUC-6szuW323Ei-Cm117x z>ur%+WRpbe`5S6(q^*rr&&f$tsa?j>OhAI+0l52H8SK@tglNRzQh^J&SWu;iX0ZK{ zS;M{nphaMTgv4!*zM#u^rCs!D!5troEB{e$lkE`eI`V0!ag<)4mG{SuzeFWFFNcel z4j<#*$VHzhD$dc2iSF2Qsi1VO)}D%cIM6i6Gg^uhKH{Q7caf{PMBZ|x;3 zIn4EjOF_*ndp-FVqq zm6NVfS{0UStFndiN`Mkw#}8_fHmie$9WUk7ZKYFYx}(7J%or`XSkL|y5>=#!h?IM3II(vzGj+;^RNg9=6VW8|2545v4kSVvM)R6Uc5`SNv`?*TJ z`)>$nv-&2NjTyX5<-%&7TO-YCLXSZt&*iez!1xTEBUWeME=wQREE0_pBeOdEvg1oy zzTjjxv03Nz#FH`@5pT%IdVJA=0x~FZ3S^^rdxA*WX0IpD^9SLD#WRaSP1(* zVNIo<*PrFW3hgA-u&EuXLf_`(oGMXQ_L+%N^VNU&TsUfz_Yfpo&=R0Pt9Yy_>6w*% zh|XDGwlw};BjjBu>0T_Z$_nT0yQjqy^g0Ayu1(RrOfK{tIx6f0^r&D_LHVxUu0N`g z6m%g&toIPMsDEN}!NTO8C#5$SR6)FtFgdg-7wbhtr;lHdI{y8Dh!BqAY*|YDZXjgv zf&0k1)iRueOtPFXq7#UE?8o!_{qN$Q{F-)ci}6oMd)vTUb&_;G{M{EK$rm6sj9+9KkcJ=uI5c`MvOgF&FUs3|klJnuX(hEjbH?$52A!N9+d!7#mqAdu zN(?iFv_e{>I{_8*?q*t>xppT!wQ^6YjVsJRl0}$oe1k%zZjB5$*2CV}*;!o%Jdt~Pq0*}xb_l+aMk(DrtQ zHU+v0)%$~UqeXf*^GuhmThBV}ix~g~@!xZv4Y#THn6)fqmP6>MDsf}{yCERdXD>P# z_$gWq8_+UQXc!^p^qW8g=iT5U_j_x1#1L<4VkmZmPb7~{-pkA$T(QKLw}Zj_S!AFq zoe;sivjlCbw-q%1A60J|)>gx^>llMA%zu)=(=Wo_rYtH)~V*y+Aph0huXFGp_sYY^Gyj?mv$zrz8^X-s> zJwZohboH1AO%l$SG*%g@yI76E~;n9g#`HS_qhibN>BWD0S1ob}SN+b6e8 zEhbcmrkDm#Ib@nyFjUwn&Twx#eRH@Tnz3Ia%0(Ox z_$qjF?UUH$himV!Vkf>^xPQC2HCF4Ic|Meu)4ua`SR$SaDUHd z9-aGGuB9k*Td4Sz(}H|!KHgOwU7t+YKThP#_X^ZIl=`9NZ^;5JIWBZg->d2Dc?Wil zhpbO*rT;-7CDpSm_lOP@mNM~1H zu@rrDgJ|!D@Peg1B6J(+jAu#jQ-H%Bl_BzeAOnL<8Qxn{qkn(!g@_n_Kj-)O(0|IL zeaKP<*h?60H<-IlEAB5;+%Cv?Md0$xZ>oXwP z=0ZpTzJn7k!m<}QN4^F2h+;XmGHxK>^VmUm(q?+6Znadc+oCQuE+_++oQXNN^^YH8 zL-W+kXg(f zwq}L|`!tzQB|V}oH<<`Pq=<1&;uqLv?)#&MCgutGVsU_0I8@8|s}Hz}jy59$GOv>0%z_18zx_F^Mxlj)v`6eAG+Drv%rhJu1U;k>9=g8c-~#1Q%<|KR+KI zlP+oD^1F3XRyVG8NvMu>HahL5cMY)a;c?PtmVIU{NM@oTZ2Q}ED=^7Pz7KbdAQN<1 zPjh0j!M^YV|2ugj5-`Vu!1#tVqHSC&!=4`_?lXCZdqBdt(1XVV=)nV z=bvIz)%r!D;GF$t`oR($y>)(+5SHyAnb4gZ)8cDmRclM*>~~gma^CeCds16>cjXM? zTnpQ?^98FF3HKViFEJ3TNeqy2xsG=wJ(B?b4W{ak63mM(;Q&>k@iE)b9|TlCjK1v$ zR>xfNYsRw|lXFKjp1XABjJ@R^(%$x}AfMGH`HMXIT-^UZ4O!+0RLQ@=`&K+|rwU;1 zRCar1U3UV4A$eaw)*AMYI(m_(D?nTI|IVV;P2?OOwc6POz!{1KY< zT2d@-amlw^#cgiD({W@%di0z)l`15`n|+sN5UO80wVo=V@i|K z!p*%Wd0?t1ESD*Ml~f-=XQs;-+@K;?JNQq9J)kf^!AuPpXVE)wlpEb8L$6i>^Y~7i z70w~RBz+Rmy0jBP6jivC#z&Nyz#I7_<|VSUuxB=;i06CyhW-c2geDq*WoUIQtcJSz zqnR6R|6@YtzlAyNSvtT)i4zdLt0H9ZiTu8x+q^?>Xt2`3_}vdxq5FQ zl3j(tfl7{5EFSC{g~nFq*<8W*2vl z;ozYGz^LKKokAmdr-18;5;9q5 z{Cf;VkBo122Cx<27NdQOA|^vedOgB%^8|sb)al;`eirU64(JJAWoXFE4G4#E$ph?$ ze4VLkF^tVlFh=ZE!)hN!H3iT(!?NJsey&`gXZC$UDo{QF+CJMrbyGusy2W{la(2uB7hvK! zzFMuoy0X%b3~K5p@J}1MLCpqwKXgt{4!O-33Nb>p4K_`FG7DEtp2tGzka|`TexV-z z;`j2}@2ckaAM)5HA|CPa(tDM4St2u^srZP!n~H~N9Kt@9i6`o(>#~K3n2)+4@uei@ zq=7~mcrof+wuJO0;uzW?WP(!Jb72o1y$H1iI@LL}#re%Wi5Gzq9G5t|RpsM+KZ9|% zcFVMVY+lg(15`?L8};D z0-Eo?&kNXNHN*R<^5WOb*E`TA+%8Cvy#TdZaagrZ+qG3muuCS)v15$0JAJNW9#)Y_ z;nmD=vfX}G5*s!dXN@nzbJgIy+FN}OSV+E4aV!QaW>6k6B9_Hr@7{D6bMxx_+Ib$2 z2F;87X<8p(M@AQpW#9`d4gYanF%RaHMm%aJS19}X+zV0Y04&Ep^$UYv$**eH$A+KNn*=cN1m1U8Dql{tp@$#KbQnqY z?$9r=I()5fRAdgdbk+VQIcuS)%lgGb1lKxv(H&J>F5Sx({wxjH4B{GZ*?ef9cl^>g zRmeP%n4hg%M)aI3w{19~>`TD%gUGPca@1LUPLN4BHo9Y-5KfImM0tXdCA2LWO#rtb z@%?cay`&HdbkaHI7{`>jGyKy8u_m(^9tIb}#!@_q{{1EN!~N$D)jcEslsiE>8dAYd zYxIi}H|Y-HSzIs~A-qUfD{*T}iCcw@ObwanuLS&3a!^=J+~0Y8k2isHr8zPF(Gon7 z+^4)SW=H~RgJh+jR!W*)M+wI7EQw0y91wNr^AENzbGUd!s)cv~GNIqTt8afR%Y~51 z)UUqWzHel8# zUu^p+Dv^sh2$@muMm2_$1iSm1J^mdf%YE3$m@fUFjfFI*tkGr+aPp~9goa2kt1>~| zmawDb%0)Jlu{u_R@Q%zK4LbYj8JT1Ie;cw9%h@a)($C+tI%9i&RY?k4zFpcRGlZmA z^xj?uN(deKp8;Z63;ypI3at813a+imk%A<&CpR-z3hT*N+}>Tk6hvutQyTr7i@*Ji z&h5ZB$J);!PgwM*B3V1^fhSgYDNA)K&9jD+rr0Yw8j+i7M8_g=_$q4&l%jIK$iHn` zwGnL2*8BUl8s$zvh7n&_!RrN7O-P@=y_mJR5pTCoJ0O_9 zKl@6=GmOFhR%9uI>@I~kBRD`O=hLF?M9nObG+E+eR%+=FM+=8>#g!yLHK&{bW7IEe z?o2GY-|UZizv68$+ZQvnA*WcbUhT;$L^Pr^{_fcFi%X})YoPwR^aY}*ai5idCK#H{ zs>$bv2rRcj)pDkcOl0yJp}Sg#Q~IQp1?K zi=doSUzrBj7jg|g0eSO^>*zK&n%h*L)=9qZ-|;X<-T0^gN|o~b-jyn2`w*Z`4#oF3>aJ~dFJ^3V0_0Z&+L0?({0Wh27;^$4B!9{K1 zMqjr`Jvmvww`k9Hrg77*zrY=I#G<1j^SaiQZP+t!EW-@l!0BtKBG%p0PQ$*m0PNvl zRqzTNoY*Msq#`{0SRivE#uEYBGPU6YH*S8GSsjW~jv54RC3^?OuE>lho}5JE?c5eG zrnpVCbc5W=I8z)QHKG7h)2We18gA+okbM<8Ctm9kll;=calzfEe@Ux} zQisM6Bk0Exs-7s+_9TK%YK0I=jG7Ije16{1s0Cxv?6}%>mW94`x&@kunwL++9DdEGK_E|-GI?n;i3yM z)VIvjx=ar49EVZV#gtpDS4LmiX;NK_R9U+jR>is*pKgh1>#hGR5mqPqD%N1Zqus!mK zJvkrxV59Q7nXMa-jsMxfBV}jaly4rFYmV54KMeYbZ0}cFuCQdkwL?TSG6vkB?iz-C z<&L|mDEpvDvXh9(U0tqWSbl!~jdeH)*oTG#cGLmCPoH_#V7j_|CZ3$zYyA)R`*8c6 zQHaGh{3rRQNMq(CMTMVE;=V`ENOBm8kf0u@4C5+deb6LQ6u0~ZJ_X}7)9_Z)-p$p2 z#3X@(1)YJDihz^ts68tG-8%@;4bi$+w)Z-ub>VN)ul+{t< zb@5FH{u2fIpE1khMt@jv?^puU?OKW|vpPTN1Qa@UUUSFSCieVOx^8@y41oGnkGn|zQ{ zrczv2t+|KvmO#kyRx#ah2q;c3bqnHZ-OfEgjXBs4}{=*YfB=(4&boUfS*^xYaao{ZI1%KeCi$LP*~9DAf+hk zq`1%z{GYufHpNF#hNaw5X<(Y^Bx}B3tn-X5j0+QEW^rdW^u64?T!?5>Ayfs7vz&Ay z;^XpeHFr9$^undCGm|L68z&UBK&^5feZWrI=5gG}WOKhh`3&Q|;n^>3-ao8s_|5Ko zuu?{zLFj7y&dS@Z;3HY6=6^j%B6Kr8o}My>RgU@1wt|R-*+A#jzmxdSZ)?{xQG5W8 zeLw#PEVKilLmq{?`kSL0*8_kdXnK3^@>#cc*QdEMs8pA+xF`nptJZ1v4ETKMjY60W zAsniEXkUWV(>)42k39Qb`uPM@*mrk1GBt5;aXvNx4hzN1Ef2i`!QpQjaM2(su~XYM z^>#Cemq>idXVY6|Cci(gI8)HaO6b$7GQJ~C6NjENKKY6IKT@j>(3>=bd~uf-UG;ZG zwu%_YEXQ((s~LLtDsW^LCiCNSbOM70bNfLC2~avfTz-VVp=F?ce)A+any|20qBrh4 z;~mYpX0znPx^vuwum4Gnug%DS9%c4tlbK!whS-D^%b`1|-Za^l0=>Q85{|#SK-~cr z=q0m#bpL6X;C%5;tFf%+vsRc5ux&CuNnd7dO!NUBL?H&wiX(>A{Z|5Jpcx;*vPI>DC3h8y0Y3@04RH(=1iu!)N`2 zt(xi1A0Mf#7I!h#DI0kOh%MK0Q?p;BpA!0~8Zxze-m5IBDw_irl=}}WfX5o{cA)w-?1^VxS~r=4_fABll07W&b86feB`u(#H?q6gzG5Kgsv&*6#D zSbg^E=vKelgYGxrLFU0N;;Atfxd}(B_=wYgH zTVKRKz8#d9^~N$NShMgFdaIOh?i(?m#eXBaNDI~z%BxwivEX467DL_{dq>w5Blmd4 zg1@~cO@hz8O=u{#zcwJWcOJDL4_P9Qs#_HKaF+zTv5cIT>1;TQ-hM}&&tPVu$QNT| zy_z~!EBM*eWNuVi&zt3_m(;y}*1^2`WX~O(!J=)$b&NcLoL?oC^+O%vosKn-NP$hk z8)P6AN|90u~zSR-o*}=>+R3-1a zPnF`OpG*hR7U=s=~O=cP@thBiTxsjxjV59U0o&nlQz8kO0K0s^WM`aiOg1l z(fxH-8TUoHOv76XPz7#WLg3^VslC^$%pdL+A~z|Cjann zm8?w_nLBEi_4~`nK{Y1_IM&fCrz6HH>tb(%oc$Cw1coMdIB-03nGqJfQz9q@LOyFX z6SvwBeUs%(J<*vLnA~`FM1_KUutOqoT7k%;*^X+Z3+tj_-8tjeTLfFxCOToL`{sse z=KC4UBflQ8f6Rw_OFQjPJfci~=Ue5qcu*qQNyZd9j4B*f*^=qmKfVegoiFpl5q9u4%rQF6_&&g;v31e_-)BU``u$p zpOTN*NTOb8=H3DvMF{NZwfFWug=_HLR?!e;2uzT_(oiD?W1X2T5ng@6r%kyd#k*kP zdYP?rt|d6=YxcWjz>ga}TXN<};iyj>lDPSE8Gpku;>yuKz98(C?tB1N;Rtf5nPK*xjP|&%V;;bAhic_O)$eS?j-ZqTvkI8&-=-2LL# zFT=Prw9e1f6lv$sI%OYtn3AR(KJc-CyLav36|#TSwSmbsBC|GLoGl^c%N5DwWDzg(BQ3R4?cENTkXibjB~(u=*iAqQz|X0T_{Fg#e`X|>`#&g^%H zb&hA<`f2|Hjm6kBN@kRQLz4Ka?}s_Eq{Xa6>qFdtCPI|rnz^(+fE?T)8;*n@a8;Jk00V(X3y$0fj$AA{b|XOGXw-?^UE-)U8vsm;N;O^yMW2$J_lV41) z0ZeN*MwoT8EzC(*Rr9WTQ0$0En__WmFUIl5(9mS5UG!ln5HUK}Q#^Ib^O`{C_|s`n zQwccc8owz7)>WDsG9bpQgQ+Ugje(*!_|H8eF;3-?8FPXcvc5$F=hr>iP9nktI68SQ#8y1Y#+dar7jG3#j#fug5wq`Dc}X zU2S8DrU^aEXJ}1;1~%pCZlpeJvioHn~~ii4}P^^cE2B%3GUi(NM{y|UFP{)57!{0^FereRUEH_f^#9T z+o4j{knC3z+t9|5t0D6J7?^Tz?h#^;;i5DTHJZShD^^oasNZTg6F%9@s;#|Kx zaW`igXRY}hX}lK*6je9~_WM$E@h{zot_Pj*bd*TrYd$&2>dYwdJk|4f$Fyc_DNyyq zWj1gu6Nj!!iv{_B?gOOziGPW|mxceZfA6w*u&rc~mI{u=E58!YrTMkiMj#h!3i{4= znE{%#(F`&nuiw2^>{1sQ4znje(69RfwU2Mt*ML30K+k zhZZ2>O(XAmcILL2S%og;UUU?;B(YCm#l=PT$iRkOcq^0blkEL3mCkSiBZ6jAY3Ho% z*Wdd1AF1#T3OblW`ZgOY)4*pRI zHbK-GJevQcvJ)D@Q+Mk?{fUhP>se&`Sy1RLMgD3j#yNEXtYvfaUlG)Asj0`kWXCZK z;zlHeCKAe3%mW7cc&uA1Xj-5+?P93z=}u3padtVy4htLiMf+eHzQ|w0if^f;h4)CX zuVP|48P3kCar{;i?|WBvT5YC>BRAA_t#m8xo;A1h??pTE7_?2c=@)@Wl2R)jidsr4!Z}f4cFw*FpwwCsqN# zSzjLT$7Zbk7MSl0wL3Vg;tJK8=Ay3m#N4DM)0nk)uSfXy3!GXfw8;>V$ue`|$pYDr zt3f22E#)SH(cai6^>N(wTeHbo`*shdO!KsF^XkNAELkn?%=InMgiJ9g^^B`oPPt zF+5Oa7*)vtN~vgcK68$l?|i)%<}W}+{Uv+0_xBdftvgmWBU+eNgkyLtLKW{0ERHfB zpi{(OajaHL``cpc9oaDoY$cSr9MiJx1gN8z#gRB$0f?<(uc*0Gh_NJa`uY7;dzC_k zxJ}6eB*;OLo026_puZB?KJ_8al1Wbe$?=Y!xCaK1_=q=)t~A_OZFymCYvf#l_0;9fG_+ zI-@x^r{rP4%5jH0d#^D1@NpF;a0qZr6KEU^TOAM|Z~pQA;LWShets~HrSvkuar|W7 z5Ql1g5xz*futJ!Vby~OSX}ibj6Utmm+K%vU{VN^fAO2SF@G3w1KqinrZhC#_QG@Vr zFwNVrHN&cNml9CV*>QoNo>#nqEoyyN_rnnfEVDygw|okT-JUKZpwX6Z6|L?*YXAjs z4aV56ULVTecd_*)w+SpE>y288d+J%^$q(uQg`)}8ldd{|J$nbzlIf39;~q<&Hnkn# z`$w0uW%BnL+}k>;mlX?ruM2w3lzdg5k!6e#Yy zMb}i=p*Ac^)JWXJD?~FanBEelJ#8nBt_SZ}LL9kp1jby+iwbQlJb2eMMLR9*^6HA* z8+k~Le;YK9Z`It{d7}a^AAFTK&-_=Ij|5e7)BfovCE8yNXL=z*%2rF`-O86{g}FD5Uhb<(AIU8 zrx;0jW!9qppspD6lgaV{+Dp83Db6hvOQ-IevOjN{O$kKcZjMz~hd56)_<8&^f1JGlI{dK=2` z!8f}splipJy&!w9k-1e=78GH%qi+;O&@;J1pQ9L@>QydnXrH$9zS(VV^YaJ0J<1Gh zNkQC;(B;twrF2$@NGEi>+ytoh>K)d%;|9=xpnrzYJjn6Dyd&@KB3fiiPx7UKFHT%& zG=y$4Sb8=wgO(eM6OhU9tYg6VU8MH_&e~F^ase7r>1fSB(+) zSN8tYE$;#g$7WfXH5)%eZ5#uskmZ5oZ2Qg=#8EKxJ|TC4$==F-#^pCIi}>cUUcYRX z$4*elzGLZt7__xYqV9XWAauu1PVu>QVqhj+2XExPfn33L=hl(n~~xtSFw`J%`;k>MPp-IrybfcAZ2$)*vvmX)KP?ftA?d<`*m1>5}+ z`B@+5ua1DpYB1WrGa$}Gy}LLFdMI?_`s^iIpy|ibY-6+X_S6*PJ#{Vpbht; zwTL)pK-`S@wppfTKC4w;wPe)O2f&D5{2xftTeT39*sUcXr!Px~eT#MRcIkQ0rhTAm zMB^<-Y(lt)nj9o0s#YJj7FiH7&e>cgu=sbXgP&?QdyDwkoNHOXuj1^~EWAFvSPKwM zEV&ZQ71#ON!6lb%nS7OKTb3FX|RU@&{c)Q7q*(3kL5##fa)@X@AufO@?Sz z1?!UDySqBu!c+8<3odW_Ld*@_HXM7h7^w#sKN<9CvIB% zdZqa;ujpkbT(CShG~!L|H`TM5d^V!va=oav>zxRbLR*o*EH|g~EP5kwiakBIZ*i7K z{v;~Rf#U;Ve}aIr&E`$T*rj{zn6}m;O)IhmvTG8dBPe#9##_k9CKhZXnIxONp_X+w zU-AA&o(;YX*O+5HqdV3n6lwMqVSkF|^IceKk+d}}nH~MmBekIzdTLh56@5=me#As| z#Xos$Hd&fH-#fV$mAdeCyyOU5SKu8;ht*JXVECxmyH0c%OE7?j|Luhx3&uim%Y5#+ zLt>)If_zJX;#Hx}c0n0^WEk?wx0s5Ag%X-emR?+>x|Q^&r3WnVb1%7{uOPc6c8)$G)*??)UW1(|@%j*cS5b1|cDnMWv-^P=7@`gD#_E=|3P>blz-hvwoA z=U4wqFyw?l!cZ9!>pKLM?7a*VXWUTsYn`=_GGPAe!$5@ zvVNjFV&gu$VTw1>PGHej!>(=OzRNt7a#w*#Km7s68VD#+At4?zc$`|F9u2jbhKS7>Ugv-5Z__buhGrxsM-5Jwcyx zrwk?Mota?{QBT3$RW{dv`F8e)`IzFWB{Ch-YcMmoG72~#?_pCl*CH~z$!HyO?yVBH z@x4#@8a2C$q(h4sTG^Ci9)><=c~F6SuIiB1+o7(ih0hCoY)tpxV~ToRc5#nOUyC(J^}y!ttF4!r5-VYMM5ObWG1ekz7@gs z-WCUGJ-VgfgY(2*H1`5#+we_nn7xheZzb}6H6uTkkLblk*33y6j-`}WQ0RBsmvv>{! zd$+>e2Y`MglovM=&nA;VM(~Lo#}Tr;r`o# zIU3xlOw2m_93s2iOhiO@7J@5-==DE%kC2j>nM0a~l3JO9Kj!Ln9?gQ9oLJL}gg<79?^oaYFX_k~F8<}nB>oNY1Qg;@He;>}blaELJ1 zb28RGr%{`K@813p(iIb1iMO;EIM?$?gN1xZh+&x$lF3+uIb$8s76R}L3IZ~UWyYgh ztldT`*p`;|RO?0GYMEZXk$541!NNgf>EkB;AE+F;()$lSU(1;mGTs{46{3Q{|A zBnBl~OGrU%6CW_M@&y^t0zch3t6ndw&|-i>~4LWJHS3pHHE`z@KFLR37AWuP%}S=&iMp58hSu|5#VQhb(T*aYxe^IEU3wMRv6t4oEx znEsmFnIN6mgQ?BB8O`QMt!{|G>VkwjQ+43Gds_&a{{cxTjwzmzBfoE)kKXAuA0%R1 zF(PM3T%gE|!|N7V#_DGCtCfp6y(_f*LDk|Lw$hR%mlGR%NRCJf#u?#Cp`x<9dM#$) z&?}G3a)K)=jkp#7F;kwj{VCQ-p}&P4%()sc(jS9OQ%r8^3WP^VozjY>*q_|iDu~6G zcgfo;dd)$R4otNH@^4m4?hh{UYUFUIZEmJ1ZcWoXcZ3Ox1NsL?uYibBruC|uOJ}6@ zO~odPgfFnV_5z?H;y9;#Zj{_RHvigK@Y#fW(a&&yzYsXA7(709!$c*>n>~e0bw{5+ zKjRD8J;Q-=+Y(&>uzka>EItD`Lht}=a`*(qlkz|(~Xg;`Z-2bo$PJIauLTY z)7I86PlD>=6bGQ}z2Dmh`xgvna0L{KbhETkr3!Kdl-0Scf8L587Bfk=losS@`IH8P zAXz?_Yqo%r8<6TeDztQc9E(|UgV@keFif~S=d%*!FAtS8d2Q4Hjk8_B9>sRv5n~lx zutfh82|*RPG*zYIrF(GJzBa+SE>zemDsk$*)hKKCw2Z#Q&VE(L;{F?X^J3CI%Okp1 z|Kw2lbFRuo%H|obe>~vlNXHkdEi^&ZfHKAN-45P=+IVq~w>xZNh`LxtC$9sHkq9%z z{a;PYqk?&dl=Rgy(qpOnjKkW+A;waKZ@*=3Zb85OePWYTi{LehSeDn)TNfnthRi)k zc);D38Lb+JpsPt+I6W6)gW|e#3>~Fjt|}zk7(F*kn%`h3po&CquVPpS*I;NXld&MF zA|~~a-MAm^Ht9a(;xMc=x9NhK_fJ^Fv_sv6mUgyFVt5I=wBhU^xsd4nx?$v1qey_! zyPYs#ccIjF@n{^_fkoYBh{?T6BXKK*ca+^LRPpDKcd>0$%=sK$-VUovfOPq}vPuxy zoMIREb6Vx4OFf8D;G3}CyDd)tl*A0eec4X3Ym7L=bsyQ!84AD#p}0wTH0E!ALt^93 zVz$d{+)jsL)rVllFTjczC+v465E#;yM$+@`-7Jw zlvDw}?-Zf1y~hV>p>CY5F_{|zgwDs_0d#fkvHJA4F zr-SwvwEtSjB~g*Hr$g}fm-@zV3mHQ8@Y}i@Ys%6ZihV;w<4${lR}w7BS4GIr9RJ~5+pWO-cEOWK^Hy+_xiviL3nytI;N>06)pB$s7> z0Qll2*U!OPap?=8+itxTTNK7G8nH8195X%=<>P2iHVr@){H@^&4R4HuC)(a%%sH}5 zpaMLM0>%sINU725&Pp>K0w}$}2^Hz%JfA$8?A`N zs|l#c1n)m%dx97DVyEC&Q{sE3R_oFmBOGf`fY^!;BIM0N1lX(H?k;HO5H1{b4$D&_j<;|K8=ag#h(LFoCx&v^|d~@oQ6l#_1F&D zHWOW7Pa_pfM|^?tOcJke!SD*|hH1JbJ?=O!A3|(4P?PvcF~Z8q1ElcO zgkP@41W6+KsR>+oN?1L`t8tkdDg)-}EvgxKksaS5D?S3oIW;pG{PnEAN&>}|vie3l zOewMOJZDHLzF6g?SMAv7+>WkVdDQQlB@OoJ=?_@~A#V=ERc`^8^?zzI|FxD>VjbO1 zl36Wr4s6E@bP7r4MSA7FS`_el(qPswP@Bch%A3%GGdX*+GiBWOf=+J6>@}!PK={SF zQKpk%YqqcfzuAfmXxR^z$qq-fJ;bY4m-GiqEU{{pdZUpVuB8cmudk<7JjaQAzv~0^ zIXf#FeV2|@rikMga~Hphomr^Q#7Q0Qb6vfPhTY*uV7sb`cdyr?T(HyJ#za!It=i`t z?KnP-kLk$RXAsj!ER1;`)B3B69T(Ejzv)>bGZK}v?;TsKf2baYgj#8?dVs=K2+Th0 zwg5@<{-$OA^7XU!56TSh#J(1NM{zT?$QtRfW#-$Ex=@qY1K$!r7~jJ(USPDhCxPTd)PqQ@jHU)V9ly!Yg>qJXzVetQZaKFn{49`&#mgFbQ`oZ$ar=z ziek|MOBcTa=oBlIns=1oIp?yCp}MH4@9eq`pa&LX@adoJ%a}*OVgo=tgTke%pXNUL zl`sz!JW@5go6`JjX|2L_sS;JLrALrG(pJBlS>@Y(mqo^`L-K1R?A4Hm=O7N|S>%=c zwH|1p-@C{&?W}z8zLIMgE$rJ;st8SGGPKq-C^Cv;aze#rjNDS8{M=q8h*FeWEy8;# zgYjY%J#pET=DYJ%3@?JZbKIO6k4Yseyo``a;NCLFtc&5uUv*cYXyUwUeGDMj?>$Yt z^_pNu$0&sbytaR|t*o<4j{ozt3}07E2N$T2gl+6M_{!wF98`vEThQU_nIOtx6(VA_ z(=XqHs1oDC-6N<_pAbISN`IbAH*8}b7My&$1SB(wY~>pN_Q0SLF{u@_Gy2N0=a=U8 z{Qw0ZeE-2)<@`CqWsfP%Cg=u3`s$w!;pT299K9~2F?9YBe^P5~^^;-;gwB>v?xC_} z|4k$8V}|(CJZjLqo+^2QxXt?uqrBNSZKlR#%gELcY=d&kS9?~R`|@$2W9}sJCNhJ7 zYaA!Shp3lbbG0neRjAN4*@5tH& zNc}SoALyzwdzB~rmU74VD)_HLfCDw>{#`(X*F2G*Mbf>VL(m+}?O%g3e@i!AQo8G;8_4is)R!Zxz6|5?>c)yyq zvk4a{X|S1E6wxA}U)kK-z;s%)H81coAq5e;z@u79seU z0SV`~dsxXpKPx3s!fCCRWc{=A-zj85?{`K}?g$Spx8?k^6npVEzz}q;g1cy({_-sI z-*{XOCNdru;3Y39=H*pCIzOZoDA^uHyzub0Mjvg-zNu#Q=NQoGD~_U=?+VF@xsDG~ z?0xL48OSBA=@(y|B>Q(u{OTXYroFe2bftP>!Y|>Ip_Z+gr%kF9p5ar`!X$JozD!sX zdi*zN|JbKEtm?XdhGS11#?z!n zdU$&ngY%i-XA|DO9*G8ooW^wER=m6~py^TCJ+`%l8*b^w+V{^$A0j52`jFNDlR#%u zoRgZ!EyF>ppXrv&wIW@?S#6qg@M($Ky|(_K7fASdOM%5wWZ1TZaxzb956M>M{q?z( zsV6Ew^`WoRnx8LZ%*Oqrr`&_Rh6~vHlIBm!9!JNnlErsi$46QB znj@W75sZ>jOzlUEIE!PD#}(_Wo8#dn&JCkC0nR z!*Y}Wx{V#6x-A$k2 zr>Yk=k+s4npYOh=`}Yvu4LhdLMAwO(m>PISH0}^eC=&RN_I4sr>I~(Vz&6+f{ep3I^vw9)eSGQ!@(mKHO9-=AfY;5~);gyWTMnn^d2G-cJiTb0VAXAv z!k8Qg?ZSiI_l*RE!$a=;PMROzDGca+;+X{Xbn1^c+87qM;ul=V2F>&TQS)8orLkeEU0>r7NVLI}ImRWR z0OwoPq%$OEfC02qj1pLMkyy^gqa!wp=pQq0qut;sd?=&qWqA};wY z^Kk6pU6qNBrGZAvi|JueA|@GRTmG8yAGcTOJY@aY-iM{9P=MdshIyArZx@P=6A1#d zs}&>CP_uusidRKWeUGJ2?j#-f7u#SKFZNVP{i_@pSs?4I12g){aE3gFjPuwfB#$Nd{a%2BEG8{}3 zftK`z;b$9z*A% z*_X|RQDTYD;pg`q&~w>7LWoFtE1p-0H-EPA8vo3EkZMd++!{c`-ieuy!NMDWRH@o5ap}^PePkv9+a_JS8QZOGlwoAa1#ZeX~UHcm5>6 z!UmSPo<}>T0s1|Px|nvorMhI(0G%pfdfxUcSp%P@qfq+kHL-gh6@Zqn=ty&PA&n)e zbV%gDCaqmGQxg(;yo1qjL4G_#;B#xGCt+#T&NBQ`iA1##B55_ilFo|5Z+hF=;M}5~363@N+cr26$9$C8H_3p7mj*b2DEE7^B{dUP-q-TstAF z#|6!fQ?Y5Fpn?)_D&4J?oj9LgVm1TZ>(|}8Ok@dcWdy1fEiDrEq~X-8lYGu}i||Dw zq1budWWry+VQad?89I=NnTchY0V_Ea;UA`9RXV0)$MR)p$ckU0;G6AY7{0{vyhZh^ z032J$@b;?)W`_l7&*7I8;9E@;;rlYU+=@Ct@@YKdm_nJQ*lw91DZm{X+#0z^vv;t1 zk5AU|(bLwkwT%bzN+O3Vho8$&2H!)if0Wh?Q}tx)T8kjH+Th|d?~t{3fM6rlCdD9` z9Py`r5bJ%czoXi$g&7-;sJ^U4BsWIM))O=M439OLv+7qD9bTSUX^+UK%JlPyIb%>$ zS{aufdDPNb7L5SRG?nt1HZ4n6Miv6dI8g!76*M~HghlF+HO0IA>nycEOG|a0k6t5v z%&?p=#dPDmG12f|9p5mcU|>c)!GdUSnuO`CIPIkZjwumHy|``;Eerx=zQ)7&vtwSd zF4;YE^_mnflDE&MA}*bqQo}ym*(FB=G3q8`@2JS1c4wZ<-y5uVz4aoEmUk*8`NH7% ztO;sjVbY1iG;T&eJ(XI(9jkbE<9Zj7#W_Thk?@)-T;?Q_og>N5z7`E4VY_b}9r~iW zHA`S|8=4nq-rG*lgM^_ziOLAXU^w7~PBVw60o?0#$BQV*F8DCsngjn2U2hfDRs*$v zwuP1g#VJmLOQE>yi-GXaz2-X&NDelEBNN}gP1QOic-2%ni$v5-==4RI1oQost z+?=)c*?T|F^MizoL*nu3cE6iK(0YuAUR1Rbuhyk_4XD*C*yg4#ZsJX`oEc|fxt;&O zhbjEz14P!ZS@cj**99TVTOIB6|{>f2_xH+_x;^_DN8kU+U(U$VU zVU+`Swg_A#@d*_lnrt32-zZm2Ido_4nVH6?4&ZxZZKyAn551I8`Dvz-Y;z4R@pRpi z=am^0vteW0Ix=6XC~YYmCH#VM_vv^qKs$2&gH<&`f}h*ZG~)kt1Dt-BjBNqTMJ zTz(dR&Ag4QMuIR;o_Tv2u@CkSsp-f#=X6*JvD#eRRhBQFE)I{H-O#7ZDWjTn@RI%} zDvOj+B^5Iua@^BvO-n(z(EY;o=Iz(nLGt+z9a`r*%bvWa!cQxD340BnHzzZ>0lZ;8 zwRJ+vK|84tmxCSX?fo5y1MF;moQpOl#H29hT6xo3XG_3b@m-a~AY*L2XqYQ^cRUI* zk#_)6#soO>25dA2RtxUjWi7peXTJMNhUL@1YElhHs%nQ!H-d8~{36CuS{MdXWyfwQ zhzHqDgeW!q8Lk6=(e+y#v1{V+)EtfZmtne0vqV2kcj#7L807ShjB=s0aXbYoNX`5k z2mY-Nj!}1Q*W8LYWTuF`I_0KK#S4WPa*ikp;MD6@Mvpt}&i-&5+BK~VVav?H(njQO z<;tI7Vt9Q0in9avxBSmfO?1D@@`wF0iM#Ow!K(gU;?2X88O+be(lLDfKHA$G4=W79 zn;DT|MHA+G*yNJH<5y3u8&_8yuYl!_R0Q*RGsC?#n1QB5`JKJd?#`(WCHQLg+x})) znuNz2ys`ba9|~hKvi({8FCiC8eZA2NM;cV9@6f^)oicoh&E6d`ATV% zRZg&%l3&V1(AP)(;IF(Bh2ncA)-5BV6@QI@2+Y{Yjda-hML>KYRcH7&L z)}i}IJ%yne);0XK_G0*@y-HMlCe8l7O{A7zzX7(}EQ723IiZBtmx)qggO8WZnN&5{ zxa*UcYM5O>5{Iiq;Xcbs(Dl6Uz=FEO%zGhY^8L)RZOmu$+#1fOW|d3JtD*l_5ZC=5 z!vm1u8~({=R7Esp1>i~h81r%c|5JXLZOzr9vl_)$QPb-BkNLIz%kXM$(&$$vnFWC& z{-^+c5yfLt;|yUF6limz!~MZMk19>{(PwJpE^7H@3C$qSpgAMTRyX8X%`_a z`yIVO+ktQX;6V9~EdqXzZ*6jjJYlg7LRNTBElv3bN9};v2E86FXeT86XKHU2GpRww zrr)dVxbr+qiX)Q-`v^$}q?Nvg1Yj^`f>epSlf*^q**)RcX}HtWNVjh0-=AI8wp)}7 z2jHpMp?fhoH#(FzXy6Y)ubXg1?bxi#-CGw^@LUkQUQMhVZL--aFENiB`rEv)`Jwna z?lA_8J%cZq=ajQgBVWK|1azn{>qbv4FN!kc{KP#<9{Q;|`PQ}zO~}n+$-0HktZhpK zz1!oN(qeaiCQ+XOl;cb6>J1n9t7~gF%+9q)MFFXcSxQ_7CwZsAfi)ZcrZqV#tUysz z%r`Mr^|i46u@Y3o*5*+=l!;Xl=ELcY3WGh3sYSh@nHMJD+WGPDH+594E&J~ZdLE|y zaS7q!Ix~!AJj`>Cheb;7S`NyBL!Wd%CtML!`Bb~N#q@Qdx|qs7wOA%6#SG874}a7n z{HgB|AgS^aFN=vi-FtaqepW4DLJiR*WuPI@)c?v67&Q*>c9Jddqxs>-J|>_5q-6eh z&79p*;+ye}N!Cyz&T6Ue;a7%J5b~i5-;mQr4=Ok~A&l`ci7D3Rh6{j->kvZglAk2dZ6nyA#ZWe_`z zsJE51W#zk2^;uk;h5h}m=`*AhY_##u^1QqI7%~;0rj^>@rs4AYO^kbLlI3FEE(4o` zBHR8&b#{`Q8ywTZG3F)O8)dF^Bg?W6zpy@NwA!E7d!KuF3Ax@L2EY%x#2;3c^F-4g z{s^sb9{~@Rj>FFr<{shqA?L`P!7={lF$|5DBukD$K_*X$G+C+`i)L68^w*QyqtgjU z+UOl_Sqy!@;gL7_@v%~P$SUcfXJ?W<A%znsx4|AjvD0>TR7#KQdzpG5_$Y=0L2)0aWB6 z95{cl&D^Fa@9@#T1h`ir07rhnK>NVVo2j^_-F{!oJrLp_h2ZZKtN5&*P%2!-aZ&%k zZ8E{snvZiS?wQVdN~ShTy(t`=M#`_gg|izCRG}iW2+SY5(96jy<55rt>|+)uo!e&n z*Kqf3`!c`gzI8W_Q9{1CgYv*S!?*}!;;?(+o~^Obqg(==(esx2xk>H!UF`Co(srWQ z;h23~q!qnJ37A?#LMUsz%I+R>6uMnT=)VQBZANXf(iJHU-d;)^YZL9k`{*`ulM2Nv zRpZq5QS?%W!TTI`xx=n2yJZ@3rw~nwp0u7m#zdJei2=W`WS`W{RJs9b<5Y6+4-}ma zq1$>_EAiW^=Th+Dg`{@uMFvl=wp{kmKntF>D=Kb%d)C>Sn6_Y+1U|y}SMFN~C$YXn zf}Aido5ob!MP4JhQBbghFXuYhl$ho|t<428!0NuiKONygD;=wtTONgs6B|KsiFB>{ zPG(9_6jzrnrXQ6Y!!Wug&K*pHMpl3T!>6+7of!#}HqPNRZCak7Tf?CBb~;3v&#iA& zv~xuHbQbs2psBw&J`gr*fdMoFz1307~9x2Y47Lp~j~}H%ho(b#qbJM(j$kuSwS>Xk{mnpm49CZ*~@P z2bBE_oVOxN1`DCY@MRN!=nJ~eVV_rs5qX*@pvRp!=ar9A60_LXgz2z%K$z0g=bRm8 zkW=P&z`AFB?^`Q=d+&g&1uVh&pF3*QxVSjE zhMrkfB8nzfy+d%j8d?8FV|^(56@)r$n9@dV0^KYc@352o&2V>PFZJ$Vk|It2a}9OF zU*d~XmCHApob5*PfT*kmM}S%3bPrk_nijbKJo33A7KLu9tFKsv4N8$7YXAfoS5IK~ zK3q!!Pg?I_eH`4({av-;)|Ih3%QP~HEH|Ab4|TZg0H9LqXn60*5)cS%2@@ zw6hn^&O(ZN?J~Iy%p4D+7>x>LuH;)p%(;XV+aOPB8Ohnd((M2HmL@RB%a?a#<*5hi z(~H=e-5>$*UZEs7WW1vP@ddpfeL61jR3^2Y6W+h5r&DG{`NX7vSe=uqRINJw%G2AI8PvT;ht{}zY7jkZ%nWDk8|Lk0^I-&R@J&?#bfbnbriGmP2?;U_=se7s z;PK2q=$TsLK~A}yFxZ2sos0~(zWKm>IHT8NX5jOtgLwsIlH_oJl;B{nl*koRTYT7_ z!Ty07g#JRHd4lnF zC;Pe$XuTmkR&&59!tJ4yn;R(f|FSJ$4xJ5tB6)c znqWiG>ibs;!j3Wy*LwdTgAPAwK)R^71Z|)RLEiGU^I3(PKW#L^SVS0t=_ER;`riyV;fwp&R|q`*hZ6yxYZ^Px)KAXs_jNCm^cq}Ym4`bdq%7a`1;5$ z+{eugq>l}99#1!5X2s9oY-^AVq`%!Wz_Y=zaJP6usu)#Yy0#6DltrA|S!JIKqzbwY zf#qWYDh0-daQYZzRnEp?NQ_who&9~M%O@hwD9W}MdA3ht6-afBez3~LLy*XjmHK(% z5uc0tB@KGMRiI^j-EcvSwN3BxUhK`mZ=CIhY@Cz?&t;FCxc^- zk6tjN=he*b^&<*bG!@01T-=q#2lEbjI?6vqyUP7l&DlMDAoQ+)JQ;Bh=sD%y^2sHt zB_z+$J%zP!A^L{u@D(bj`YXf1MWZnN{1JB?!udvh0Eq?f5vwz%A@qUahdeNk;>uFn zSrrp*5%pF+e?&8iIIpr$tW@=4@|C0@@$2gH!Mn0cF7V|Ob#Q-~0PWV>i%=#soN0ds zN5fhAB9ftdjK!D@7NL2yzt2}Ctz!MAm;lqs2Oqij%mrANB}_e)S2WW>^_Ib*sBI(s zh-?1HZAD!eY;<0rvb{yhBe_qx^`vzXP{BPWh}Dz9@uNy$;P`t`6;_oiK^s zN_lEaKGnWyvP94*Vg0U>?ZAF}fhsT({B_=@<)g=S$pz9tuLsc}h?$FWXTrMKglTRo42yM2D(?IY-iy zavc*=l}X=3r|hZ%AO1^d^b;>b7^(w#>PL5axB|ZKv2s%Ss|xsyGqg`#8%|R-WZ7cj zphW}2Sbl9GE>91IF{Ux7(wrHh(d_?ds_?-AN$mp-;Qt&6^5pQG;wIigS1l$|R~o!uV$|1g|iu>3d@A^63fU5p%rc;4~7{Ns&KJ z`g>-VP&i%xuwep#a%-*)U8$Q(T7q28X&j`@1+umr$3+*i>+4mnpd~xj`r*Nz@<2}s zUcbSQdVPUy)EA%p2&%M0EmH z2vHL}s-`_dhS}u~LuWTj`snQwB5R8+WhG93jqDHUb&*YNT7g%Tk%{l9N4Q`jDh&YD z+8(d(s?m|!bR|v>JX)s1n^6z8*bj%C5h5+we5BLYH<8&uz^}!9i*=9e)1DWU*n}8E zD5M*)`?l)bZqmsm4)g%Bf$DE$6nalkW>k&-Mt%bG!HuXs3a-{8_| z8~)=yQNH;-PHRG|iRf&%m_T)}_=YX(hO_4I#h=t>BepR(L$dD#V<13iy)>i{ zLz%-XYDoZV*#VfUH#;{3Pmf;%We3nko`3vwkz3&JD?F0L-}j_Lu-jJs8*=Bbu*qD3 zwW+1(Z+%tw0E_oR2a`PwQS_CUO@u8b^`2kA(L zLjCpgMFxUjAy74>g2hE+;VD>bRPO%mw_>3lrA8?UO>2~Ae={SD%A0ap`2dX=CvZ)7 z?-NVu-Pciqz)Izdui(!Vb8L4TKz1yGUPCRNlGEUl|oKj$zeK@BX58Rn!zBcgJ!2uZ!d4 zy+c(0O>f%DfS`dS0@fjB_|X-?r6{faOMkQE%kCEWsZd@;&QsPBizJa`O*ytK1@bAy zmrU{fP8sdkZ?VXX2V!!o+`a<9hYZsd*H3?c=a()2ZU_@HrB)% z{ad`Q%4GxDW0M42?WotkSkXdzzoqQ$Ma#y4og7I$#{drZ{;!R_@KJo=h=!OBa4Tnt z(6q9z$SvR4RA<&qvG0^G@ovBy$d2{2KyUnmG253`qgtx!_g}z_JZH4uhe;B zF1jW*kvIf@b(n;-N-k_2iyBzrSa|_hk(hFM6Z#=pSMQkjFoB-ZX}e7fR}5eIKZzL- zF@E$gbbjgHSkhl_k6{eL5i8`1G{68GZ0`?IsE4=VD`~6eevP^GS}mKXSF`;9CpyBf z52K5xjG-GM?z1OV*ZN<(m%IVha6K!6n-QrbYLaCy%b z9F3HYR*N(!3M~QZ#9r|()(%Vc7ru2@+9UFei^@#t?q~T%KuFRUd!^~5YFqldF|_OJ z*QkGW|EF#FaHsj-UASyj&GV)A|5JIizV!TCFS)~20y4$toMIS5-k~pWf`w;Jt(w>2 zLENGa&#I}-OkZ$;y$2Vd>qR|h9D*41MMCar9hRv?@*+`I355LO&vzDFt$JOOeS4Z5 zsg^4zp0Dk^ai+vX`lpDPC}PY3S3bfAhvxCb1;X|=N@KlC4e{fJ&X5e%oi19jR$`TK zV-I~aDrKB6z+2Y|0+2#KLZB4wdFMsemJ}}Ftapd6o^f~QzrkqnvtQl}Dyy3e$7q2f zA?F_f7%Jk0*UCP6Je298Ih~xl#r*Fr*5ioVPfY~cdi4g!uJPVYI%Cyc9nk*xfw{Yo`EWV8^u&6@UE#tU6KLpp86s6bE!NHvr23Z`aOTvrNa=8gi zhogFTtTqFAm*cV)c&EqbT#|PmpBjLuJbTl+&3^8);$q8^N(QL7t&Ku^67?F_avg2VG{F&!lphPOLlS(_^?tX@ zE#AR2VZf#rB0^;5zQoqzvVr$zVWWA1{ixo>GAh4T#&%>NzbNaka>S3I&?<#jkgsa> zmSaOv1Q?X3ULB=x4ynebmr0A)Pc8Q|UXAOh_swys_=&t0`t`dE==lWNs+SUp(yLf0etY#;78^X@$?hH9I7v`E&k9{$9=Q5K+77>k2GET_ zypp@MUb~i~8BK+f&nu%AJKSBm)EoN`EGWsJyLe{!uDVH8q>CYc??~tJ~^u}2a!n0 z;p|?U2+pIYY!q+qCn%dTQ*3A;T`<`WP~LcDV(~qiu6l^V%{@&>#DNK{Iri8*YhL0Z zB|&tV%dO|r>illM<6U=BDA;g&`;iX*t-?)HD@E-m28(GRSc>T~dlU}VPu?dsF-Zya z>45h;87B_O{^isP^^xVg6a`0FT0~?^pnOL7l4VNnI!}Qn{ig!xV1=wbqS&PFc^hFS z*j1b}nM2A%X@qF$g{xG`c0$+h(l)~88TB{{9)CI^sxtCT#o&}6gPjT`WO=P9+n_&3 z^Hr$oMRntabb$Yv_JjekGR=QCn&5yLLjla%>lU7NU-MQL+xP`I3W zFWi%mqc~jfM#i5;h?C`22mM}N;-imrA_}IxU%~VH_B9ZmNerx*7GsZ&%w%q-)b6GaPs+BN7}2jjA){B48HF`ORTUS6 zDz7htR^$|CHfk?~^OfD?TuhvKk@+H5k^%#o<)%9S)6)D;U-J)7Vd@VBbcw{j(eM&S z>_%be|L%5BHK*Il-%rzDQ&;kMo_vvq5xTT%5s;Pf8i8-b)}ZIQ;Y?X?`rsCj>{4h*C@{Gv2#?*s||FA|n)zKL>p$ zlSoTN^s*_#$uaA!Bw$Rn1|iG0n?Jf|_4fx2j0tbj@|J5O3TpoWzLuR-UGG;rwAHc& z*faHn_GN$+=tfoBLyNm!RM|-$18!^gJ|)j?6H;O`g`J?GBXLPoTgxZ~>K^spK9-qw zU{4do)`}9D+4PQ6AZW1Zblx$EE-N!BZ<7d6pID_x!kPT=HGAb@kPW8&5(N|jfS5=? zEd32EU>fb@Rz#ojr;yKNC{uPZBc<88*$?AW@LWky!=Ja#g*rL|PJE>uVl(F;s2wm1 zAuBAz3cX1rZV%ECVE~5v`q{5Gu>by;{BAPn?7BnS73DBCB4{Fr*;=4h6;bPS4E z@OBwI=t=%~_#L+HS+THA@{xeF&3+aqO3dN4>HETm!!X%WYsq0A-%DI#B)Vg9n8jP9 zNtz-Se3il%M5qfH4{XB6NAnY68SO+xnd#_AD6tKK96#zEd^B|t2G|TVWNcgpvo}5* z2p?KPH#&vWtaCWWD7c*!IQo|$vD7+}c&#$%Pv&Fwoe+{IL47$VnL@|LkVV=QwZ>BN zBe#0DsmPt%`mfh7C<&$ZFeSWB(%xFuom{kmzx<-#0A)<5woCR$Rmv@O(4F^5_YKxg zM5esajQBx|7mXJlA|d8THa^9)xF|$rhDr<1l>N?Vf^i%te*lfxPoq8&A$fnFb$HY? zxx)`V4T+Ha2twtIYGF-s6I!qk6)VPkh5G0{ChK8TUxh*l{_LPRLeX7Y#n?Y%cFLn> zS7XCor4vca%1Zax%-x}ng#~}0Zlb?JCSroehZtrS$(-_EP$Er8ggVQ5<(J?>`us;b zJ?6}h9F*WPON+??w`HRInxOtCJuQfSq?{tDUjX4Ut`a0VRG7xiSUbDm^V3NTu*hzB zpeG_e@R7g(xAf4hz4i^YM@gR}S#&MS$H^=;S0mvb2uCkz1$+3e{#YzwjlJ8GEMTWY zVBAM0#Gz5Ht5n%lf!f9(V@Gt9@0;DlCADX=Aw^`?XGu+db=>3a6%A3aoU?^S;tq;0 zS9JGOD~33ZVz)^lG_i`SIUu64+rW z<5`*eOf~(cwWQHq1+eMyj1FY0A0uOc>&V@=bp1YWq>UR1Lcg|idq7{jI&^JJ3+h#| zR!<;xNLooL9yzLiYGmqZe;~|@5+)6)VWx~0D;;-}JKVMl?RT_@q3ms9z~-LjQZ1M0 zRm_RDK!Nns_wGZPM(&TOy7^+<+L?x&^nXO~jN!fSGb$(YB1LauhwiO5rT~>ZroMGdj%`- zb6*FF-N+#t6zW}*fS;Viw3)Ln|Hg{-E!Pop z&fV?*wfep9mUkik84?(y871Ldp#V0aM4?S1r#j4YAz1F(B%7GC=r)wt1svQx4v}AX z`iN&3sjv&hih+AVV@+%%Ij_{Ie_Rl=wO;VAVOu=VO3?%77zFmd^;Q2+6s7+_o25w zXvnQ&eTn#=_Wv1}XSD1OZSfWjdk-eFUDq)Ph9(MvL2xYXe{5lz`UROU(X_myWB z@ve?HXXlqn0XKE2ojmBLXO}FsaACDOENtVi?jus~X;OcI{ z{_vO8M2~7(q_GL9=WaB+6K(3^mIpY%O4esPw#& z2lfavT#4dC&%0HLyi!=={w5B468 z?!?tI4xQqcgp}Ybq7Oe10Kd`9*m+3jQZa8=gINC=L!HiO_;La?f%_bA=7D(7FQW( zk_5B1acE@g$2*MYUC!#D1`po_7o7u^Jo93h0&J1ySOXN`L%$H8v6x11u1WI7&AH>R zR7@^QfZEM8naU-aTxL<%O1BW~aaJH#%ixaLI4Zuf!@nYK`=?FouXwi_6on>=E8ZT( zCE*_fl*#pX zO2>`O%X8TBFQnQu4*0HMNpCqTh3mk0Hr(0q3x2gF##y7&p7DhOY)rD}s1ovRDy^G= z#dQLI4^$P8^i-#6>tB(}$s5^$pO(#E+24m>J7P}SpXw*Fy8Xg~UN zcMV(Z3I%__o3|psJ)RaTq~1{uj?c5J6VrFtZZ%+5NMVJ~W8D4X7&0b!M8$@|?UkP7 znYoRrx2s2`KF=HneTbRG-@>U%nh(iqe}+qlGa#{fK^GC#ra{FNdo(8#5jNbzR=r{YH}Mt4+CqXAd;R#Ld&(YvJQW7>@GI zWzrzZK~J$8f0aDH*EDcDM=kBjbt1#izvZWI$Ta5Z;t)|0h^@>pk5I^SVL5$cd@?2C zPIJ$wz^m7_6=J{UE+=XvFu4D8LHtF|M|y_I1i1aa=iU{HTm6>f{4G3J!zU8vB-YN- z-?_waJ4%{!MEwL-;pD_}#-rqsHU#97cA2CoQrTU&$*KQ!Ge^&28qoz&Q{lUIb4kKI z`^a=dVk?*EYA}IAR*Vv9Di`wFnNli|HL?L~$&Ws=yE23Z|8mp4HAQDYj(m5UHNKp6OuN*i7%Rkv9FrH z{Gj4U&Rsvr3LQEq{E!XuTo`y@1!nR7ZB1INEGgt`rElP-Nq-%K8g(!oyd%2oBJHD5MsLZF8B&>?=(afb3u!E0eVD!|oSZadEbxL# zm(R_f%TkQD0jV*etzSVg7|a%q)Hl)l;qSt_6`*VD31(ASP zxL+#*n7_DNS~-I#X^0h9sB*j%vRfpwp8u5jraO@-FJgC?hLZiIz#9t>#)1Y$G(HTf zYk=aH#`Tf8Y4bUG4Dc`B|I*5C;`+F~;DZYRGm2(;p~0_tFB>qHoq6NZvph$n{>0w< zT>MNaaRJMSsJdHb2DoB>*tE%?=x$|mJ|z3F9F+*axAe1&IJ3(~3zyaQ{mzJ)czlqsu{`p(=|yFXs+aH^yJpX6 zfvrNj;XVz`?*d<=Fc?Uyydnqn5(3CMse9+EQOZIO{OJ~b+y4&ObIbxJ5xF5swkXID zrl6>7=bwS#lTibGTI!u2w&|%blerQVNOT5y6gUyghzq`gM8r+x*45h$#}9FjwUvec z`4rYv5dMe+JoqKCvx5%>4D7sHP@R_JGg4^O7p+on|ALLp#k!_n6U?bn`|;a-HAOM}uHDZVq14AeF1> zCtMa;H-^tBX}T4`q+*b_)qKO~d|amt$9C69+`=wSs=s169~o-Zpx*xXCC06dcDTOn z-8o;JTMMm#x9=acs{Y9e_J69o`@u`J&Vs}(kUzYZ!$k9V$WN!{@GdKh>=E!SzhAf1ppuTskFLv466M z`+2&!Q75L|@^}Qt_T80~)OH|*i$@Wu6rA$&b7{?hTr$X-x zL`UU36FPW$8)$jFdv=DRSNyA>m+Lc0RF#p)A0i|1=(lQb10|*(g>{cDbuJ!I%MHfM zvrKjvKNv+}vV&_YfE7<^7_aUkKMdArP5U#kT}6p8AMq-dOQ@u{#Z1@H%pXx1&8xV| zTkK;Tu`tP`m(B{W%|;l>0pe!{LY{@X6XjT0-H00jA`Yt^(+Q;vE%$zj>qMi(lKeh* zu^Z2d+5m-nrRdBTlI1X01KVOf(!Bw&YgYvxw+87xvVwv6nsA26M?rYl8=Vy6ra%J8 zL+t7Ll!*z)bn5zI$N*_Ter~mCb|f@R={L^FQotenR(yRKp+U#N=3=x9(lfz_GTr4y zAZsJe?LDz5+*a@r2yCZPS>=CS9g0=gSCHXn@_<|<2&aSQ)>W2#8=T*5;}8N5g^#8U zP98=y>_ldxvmfwx)hw@=#u~RQ;6^P!3KLw6)cy@ z@S&tPr0bQ9m)6h3f+)@VYzY|k2lPnSokaJKvr#dB)AekmGe(0 zkb|5HhQiOWR&@jh*#3_+P3>**u&&XnYY=7SfN9H{+<%1@|F3FIw5yY~tDz+=Hb-=^ zZCu4?4P_U_3JjAAW&B_!96gGg1GP&#%*iDr$149>m&ge(_p}rd3~P(;|&+ zSVQ5*+$4i&l0<6A8=-Wp+WXHTf6~*8WdxcYd>6R6hXWnLJ~FdID4~-i0(H&JS%Y0v zmCRJvKK|(@pX*n*tQ<=6a#pQl?$HgSIWmL98&s~L+c7E6lW*e^(`%h1Q=f&9Q@6L~Ml}cm4*2;{1@B0}4Q$qr`cyrxKW8c7h-!}Ta9 z0UH-MV&ENL4L(t_IiQZOp9O9HHwTaUj^;NqJjES}qlj%7C7@#?zCwzqdq91^5#aa{ zdLfTmeo#@PQh_j~dBEiOT1#-_Jr!FHhnL|iNAY#h`8cb6+w@#|60c15m3@_3CQ7T} z(|$&Y`9;vlN$s?U$e`4w-)egNW0;ELg@V4Dz<+rW&p(s`y>RdKfH$?11ZLV2a6ne< z*9@&>r=F?)7vox*{jW1qk!JltXzCQd$q1Pj|7b1BC8YrfDnG~<1 zkSep^$w!q|OLaS~E3q0d)$hgn`78TxrtpYuOi>Ivfy~$YVQ{i#wdI9?^0aDoAR8e^ zPfg^@=>9W(!Nx$*CKoa=!}qE8#o8|aHY_7liqZYXoGCzx0!o0U2!yzaBwqg$gaf?b z*U{e-Y)9g|>Imej)1LV{e(=JH{+Ul$1M(Ac60r~F;vSCkkAjQH@yQ^j5t0$eC z=H2sh^<{p~|9!vpaQ!=Awr!V#k>;D8Ogn^KA;wv;)j3Q0pf% zHw1R+F#DLM_0{}wGp5`@G)e$wlQ|WxFQ)u~^B(5#N)7*NxSKHna|x!qn&!?&?Vx3T z0jynYb}P)EZS1#Nin){Vm-Ar^WYR0saY(J!yz2r!M4DQHgK-R-1#!d6t}-=bo5aXK zCSB{%t5P}T#5VF=4TjbNPEbuG53BnIB;KuV4i>`>U!;iKrVBUJ=9b9L+k}8Z`cO`J z)D$dw!5LE@HY!SP~}T% z7=lQ9O}g%ozEQy>UnlUJlCIQm7stu-XDO_7!iqewhH~3ZCcC=~##89&?q?phPZE2X z%&w-#+i&4U`mYSWq4f?KBGF&ZPrj!6D4g#RNoH)6U;}o_kNl?jb+7CKsjU*hxvwO~ z(IRda;ihv+W1O-P8YXr=`=+&+!|xJ9-OBc6*9~ScL|6ZvJ#fiB9=9B&aH%AIPBtwTRGQxvPwWc zZt&f;umg9a@8#%v_ueNesm>t7n)=^!-xh2L(Z*kF6%gx&N(}9V3aKCOpTnxu>_bdE z8LM@`U~Pg;6bbIoEzeIoA*&#;M@|@(SI7C`vp)mn?&+hW82eQ^3AbbwE|S+u%l3nc zdd80Cz0iE+)RVmJeS^sGs==jl;&z)GS@@{h=b7_v{vscR^PTh$LkefJ3Y9$m zB}k;jDL2P)fih+B_-3JiZRc_gS*`~k{q%XKU zhQ=N%Y{z~loIYA-%kW7__j{E(y%TB&O&(ic!~Ea;88IFMFT`8KR^r?;a(O5}B%|qj z4)x2(RL2;MQ&q3r+X=g?Nn$sYtT<6Fg8|zK<4|n5FO?p%>7*ITxncSHT;Aq(f{ zi?+AzSNi<1O?dh5AKzp50L;GL342`(;aDVLL71r?8Fu!9^}7bi0px35YvC5Xu>mZ@&%rPEsG$=KpamNu0c?{B>1W5t0q*nb+Wmy^vmDI1`;~qr zZUZDWyM*mf5>~B{v&FtyLYHN$Tv!s*NPqQ^k(dVyJnUD}Umu+X%sQSui!>CMmCm({ zkL9U-krT6>o&(pa_ar)8Pn7CE>qz8=UF64U+RTSoh$?tNk|Pj^UHfeTL1G#c>?P^M zh==1$N-g>XL1Zju-%eX5bL}~nxl5xtbK>wi3&2y4X@oMb>PCpn%jf&#Yx<*Ti8?ja zGpksS{EH;uO}NzgBvg z29^?E&cWsPIed+iNWuD75alIVRcDf1Slwkpnv;&;tqMj4XN&#qpW5Edl1gGLKM{7H zNND?4e6{f4w)Fn*Dz@@bmkG>0YqAkNj%*llS&I^zX0WnQr^G-nL?%Pnp6^I= zR3=18WWuV`gCzW7KNJx@fW)MCh-2oC67jYM@nJq!#Xi_U&#iBZVmpd1YWh2UH%vgjU=psobsK;4GEnDqAL1M( z%FkGh;&^I>-Zj!9nA?a=4?Bz!A6tvgwqpu@8ykmVqN2g*2EvgT`vUrSx+!Y^J+jWk zTzyOBT!-M)HZ8$l$EL)43YcgpcF;ST%#SCez6YylZ|G-40xP0c)WPIgX$&9SuabF2 zv}ajvljRDKpT$ZdxKTiyLRYuOHH5^`nNa z3AgP9pKr`LDsYi4Jfp@bS$5hXWdaOWn67OCeE^jh0_~r8H{1nRRHS>QcLw{QmWtu& zOs>4Su`93OVDTIMY8aaG+hr-apG9@Qhepwz19B7c`(eI7-A21WqciL(rMK{og~mXM z1gi`P#ZCyvm__ERdAY!N)@|YnO)+{YclW6i|83KS zX=XCC^W&cB_>s@PQT%XaRHKB<=p8#Ynp6dJs+vQ zdA@lim)h1bQSv@~O3~6Jo9*Z=qM~o50`tmPy)+M-x>MtHD|>^khJ3T~0n>y~qT0St zdA#{Dzi03x^vq4#@87T7z3=e87W?n#qtRj&RE&&wpXWtd91~i~y@&^%=ix#f+z1E;@ zm+VHAGrfIP7M1Q8=17K(+ax6I$lrF5B$ggdy|PZ!!*mb55m_MnJehiKx!jNcyhoOG zg1MqDSXU0nq*lZYLu>f-+CYYIIlx2*k-5NhvS8D`knAP{7Iw6}3Dq zL1~pZ35#+Ty)_(vmyKI1x-;Y}^nKac3W}1LeMu01iK4}?`iK*@^XUAcKD6p&R?V4J zL!!_#@$y0*zeh&tX~RadI;u@{a6=9g!Vcc~*-}%2%sCLBFQ2}{U|}x_=39cRq?jKa zoin#-bqq(HR6y6U!izar8?Hn8|KwW}CQ_LOYF1jmenN=p;F_ARH8r znjR#t8s7V#xDGB%QdoeSLwD0K7PD(>+bykg5F>6q=DJKHCOwBGFlrA#Lwz92Fxpl? zo(yQUa2i5cyCn=NWTiHXF6-Gy&I=!KlQuv-kX(Zc?6iRGWok&WWRr2eU9Sh&IVY<7oO5CbU3lIg$|WY?1w5^JQj- zGs!t2QkgK-{dt%v)?+!AkNN6ajz|nYrncAUFHdg|C_0C~9A71u49!~fHYaXVh>?4J z-#WYu_NOEG%v{mM47AF~wp=QGG78r7AMR~S&eF+C?0gAiV;*OBA6Vo%Ggq+V#Ct7G zB}7&H!NMkuQ%b(WK}Zz7W|rKR932`M8Ca9UXaej+V`})>Ut$Y{5eW#0JLZaB2IP&z zxYPCiumCKDlAL{2`$FBAuR2iM@Y?pPqWhqm7P3N!uD z;m_WZd*4Go9u_#yA&sU6R(}ln^DAqKKomnR z$5%d}!Sl_cz>1oa*uV#<#F8k6uqn|NC?H|TgPW;=2o(r`tXqrjHczi1@y(cf@Xcjo+wr=}M}qiz>@*@7o$@f3>8iBCz-yTkyMxZY(L2z1boBau$4_ zBhafJnZHC>NuF#^zixe7)h2jKviUfCxTXCm21Z{D5*Wwo3y%5~pp%5f! zahFcs*?Z5-m-&)kkmI?Jwbpf=XL$%|m4cJ5(D=VHMNl5uZqPjn&PYV+ENESs5K=4L ze^`blVz5EnN&VP}6b2klXU5_33L{a6{# zYdks|BzwzAwmhClker3~R<@YWn3E2f#aFP!BpKoP+h$sCvsrYOh2Yyb?q0cNw&Zl) zszJDO@kSTXb!EAnw+iDK!Q3ZzEc`!%`N%-k&_V+#o?578{Tr4csb*>%XSo!75o+%u zOeZnKrt2CB;u6pI^COKZU)=Ywi*R!HH;9;U3j{baWt-I3?DMH{ewK>e9g0&r=^YBi z+(!%5_q(d%cVE4tE#|<_-MBmUc8RgT!EUDv5`{oI3FPM>nD6^3sL&B({V8)k28}}F zSyJFPqU^K9@ZBiI?f{qevt-)lJ_G6&myEC`&;u+yEbWtuX)Qo&XD~ZCifBbMq>o>P zPB@AlZg^H?@t9&O&i1!doZ9z1NFhyBygg%gK!8h!{I>!Zhq zBN&67{#~eK&owufj9|8@wHIZ7QW35($f5a40nePAM7WA}s(1#utv+fwaI);KP04w8 z3B%mgHSQ&{OoDNdHt&H03_au|qvPtY)SKGI5Ei;VJVC~xXCv>RdAR-H*_{FGQ?jN3 z%ojk4?ok$!#8SA>yIp@Q1U;V|sI@a&^Fp7xd~?cN&*i|eUAX*w1{B1Z<}IHH{(U60 z+2`7MVZvon@Lt7yN5h~BGmKA+Q7mEMJvtSpk2ec%X8{99H)BUeC4^unncmgn?(3q< z94$nbo8_Ddo-}seDf_ro`d-*N!1U7S?|$Cu?3-JOS*qfrUAY<-ib@5C%Hau{Ws(?m z3z?GQmSS0C&g_xre}^U-pnG#2!Na092aB+v6%CR;k*^yD#qW$tHY|49d>WJyttKbU#jOsW@_U6Mlk zjPgK$r<0G*91>rDbW`I5{2i@EdYv@wk{vy@SL^sCobA)Q>ZdQ+znf!3V=|)fsN0-{ z@9SP4F{WEO(Vo%;9EECIolES+OV|nvtat;69$wjw%0SOzY9XrdPG1TIs(IH=bbj+S zTi%R(6^EL&gKq;M;&PlqzKy6_=V1wp+6es=$r2n|EhK*1j8}4jiz9;yiROY}Cufo~ z82YEO!$-CHym1uhY@z%a#b%32&Q%Ej=h$SII4)`!bf4mzPYY_J`bKrqoTCWlYkZuv z5G~Kqq50;FF+O5uBGw3b(Z6!wpnu}FnU0g0^)qmpDKd=eRbo^1s(^QNZx?+Sem7Ev zF&8UvQlQu655$aE6w;EIjQm6aM#NM|a-dFQYfzx)v3e}2u^Tr7zNz$%lx<9|7N$q& zV+#^LIv-nOF$4KuQDV2!XrzgM#%Wt3R;(@K=y{#YRvth#G4;|dQ)U|AP~$Z#q08MZ z-u-g4@KXiMzR{d%_NE!3n19m-tM9@!Uc0B{CPZRF-}43;5qmn8KC$hgs% z)CV5bza1gld`<4ux(IixYvdh-Bm1fWLiOW|)##m?6leL2I!lL9-{dovxZa!l$y*ll z{YHL21Z)k`-`+3s?V9dXd$9KHH7zcEaHt(OkxX{1amvwpZ9;V4xT4*__50fUhXS4F zBriFMGiccse_Uz{%8Q%Jcld3LQs8e5xs4}`yt-)7%`x^)G|a9IOrA^A)+5P}Z~p-Y zeQn@zR^e_EWt7B3(Pi^x4H3A4fYj}{q1Hm8SBJ3O!v`vz;jkJyiKw3zA>aMB-1ifj zRx!o4;zh7(aXG{77^^geGQ87u6C8kq);7-Q^V3!0DdCJ!(Mt_Pm8L> z%y~f#W6NQU5ee_{GTpaHAKIK-gsS>al`fN+WqA-Z(PnF#b_A2_aC% zMnM9PWUwVy&uF2YIGq*5`7^t7*8%-9y|K9kvA3ts%bX1I@HEIo*fS-twbFK_8s129(XOjXwNS77 z6yD&@r11VacTlq2KvMjDE214VH+N|}0$9r=Aw|G3fn}0EYCw->;D|v>1Y;CsC3>X@ zA(xk8@4sf*M?T&68)tXus_-S+!U&UAPGSibFgR2|heGM|({?$`-w)@+nhv71cck&e zrg??VjX5qKg`PV>#ftf{QzM~U{Ubs@u2>v2z7L`FWxQlpM(j9iJ5-L1nC;Yii1bG^ z)-H-wKz-OqD8} zwQfB5sYW>%I6QK+R&t@KAJou^?yHWTC6b#PpyT|L_wlctb6lP}q!T)=O%Rj*B z`{_Bcn6-cp7uY~mx}DX@yNzWyrL{U#6pHB+oUzkD#dzMTrAgeESu%)#ZrEs~Z3mZ3 zgtY#eRERGo3lJ=yaMB_DCOi932Bfx*huVf~{@0r#`sP)?h4h?#U(2%o5=qs6;RKWb z$ncq;r5|dBJND#^XYBhrqWO<(Q^xhx1${lisY$yQ6-VRzR)0+Lg=S$?-y^xC^mxU& z51fV58{KBsiGEeF{jRMhLAY0c;|zOfCVj{Xjnv$pRZUk23w6` z*H|r&<@sVh%s3LYWz}y-*53xe-Ffs=qAvB^rgO+ln&jY356uZ#r2qSH; z^N`rQ5Qlf8YEs_05T87*~AMdwNu$ zZu)v=DBau;k|GD0;cje5B^ec1TxG2pvaz@W(h0?xldb0u#B(aq)i24@WFeP3R?J z%$DKS>N*3wmcUuKmU>~ejA777=)+WZzqlM{TG$l9RcgSGqlz=O^y@OD(GfxYfK>y zz-ZC!_BkfrGwdl-hFTVqTxKg{CB1FGNowmP;}JLNioc)BC7vr?BC%sg#i>TkyE5hz z6Mp*R*c8WPwV538G2U_n??=-vW`$21T|0c*%T>3umm3rlgT|O2e!@Ppo!G$TR*7(W z$a#+lfQsyzu1Nc@|B{>iEyKHkNGuyfuDYGi+4>oXPZrwlN*h=0sRuB*M6)La?sO1a zRvjrTxFT@Py|T6XNLZWV1FrpHB4*4~nm3>}QD< zi?J@WlLEB0Lo;Qm$|KqGhd>o!XS4B~F~h?tuRT4qb9SVtidbE>BU^D<^!;&qow4wd zZS(I*Z=QLK4r_&fD}V;_>QBXe(iy{1VCkF_Hnc2gE5&`Q?d-6XC@X+UP}*D{DZz3Jkm2vtg=XJ2-_CUI)l7XGPEu@yhK zAIUPTVwY*sb1g64q9B>NHSBo)Zbs11C-Kjo(4#!HcZqj<5!M+*Jk-!iw!P#!A~Qm; zFw|M{<1Q2!p^gVcn5pE`kxB8m5CG^sU;;K_jared`8rL zNF7f^xDm?-AVf|`usACs{ZVh_*V!9U)#Xn-oJ8aM`tqFpExH1uv6Mqyv;18h^v^5* z7gR%?Cz8E_%L>z}dppq`;peUQKm35O4P^cd6(-JkOls=Y+wWE$Hm5;%$Sh=gmF(s4 zuo!ny=dKk=T06x7r^Ls;__jKJ?GTx)8d%|o>eiJu?=Rsu{_{vDQz1Tw*@`T{h>R>; z=IHO|HkcznzOP$m^fv&H(-({y!GpXy5~E)*G4tWE&V)7F8xQHsdet`8Ve{{aPo#9~ z1rf~JtVpAnu~eX2N?e&%qJl7M1wFxtp7|&q-Gv3l>Pf?fqZgm4LY*&g@H#c?HH<|k zs7haw^3Di<63P8l{WWCzVFd z0&E*e(6x`D0_@-f&cVhy$AfWxZK_LE5djIQt`IODfgK(y>Z4=4|B4Tcs8NY#k#lOy z+Ar`S3-4MwA1iVh^4r?%dsWnH4!p+E#0I!&gjBDFqC26hTy}!SywV#!d>K|{ELCuH<&3ok`feDt1K}%*a zGYprV+8DKNi{Xt(P|bI^uY0hM8>7#@Z)ArCw}m)TIJk5W5$Z|=@0|LiY8YC9j(Qk) zy&zG``yInB*&oYO(nHy4{K}HYRoAM8p`OL1^;?gq&FC2a&`4#pVzQ($G)~gv6UDbN zJXARhxAZ^*ZEF&mu}QHl9L{CZUZ8kBlCA>yj&;%Jk9%@xtXGax zXK=W)*F%#N4r%Ib$2LNQSmUrB)MctDo(2la_bP9=W<{jT@jYwo>>}m>_LjBC{!ad{ zQ75H1xFpiDvM@k0{q|1LC;lHz-6@oR{2ks5ePN2p6##y)sD~M~)%s$9kWyGJ@-%Z^ zLiA+o+?$oSEE;bb(X4E^QB65mpaW-Ck7TqaW}OZ3kV1YKs#Q8;Pj`FH-#)R?c7&|B z(t5sk^sRE{C}ODjO0oHF6Co#_ijat$m4*BZtHaeviqr{{j z`-(bh@Mxw94*!stuPlO8DQY`{;E(o5j!bM&8c_|lH8KxHHiSI1lzlcVnbG5H=GC*= zK_-l4%tB`lm?-A^ZaXP^Z0#~rlB@t4#Gxb1s|f=&!>=+YfyiU}>Q~xkM$EHxAib?w zi*CxNyg`ShSa_>&zaMdCj&h8HmqGNOSu+x~6pvE-$ORi3`_NWj79MBYpIN04+HU8> zE&ryRgUt4V&yEHJTbjeX6eAa_PqV zp2(s>YA!bx`d5)J@_>B_=T6M8#4zdYtzu3y`jHqmAjE+F zkv{MC9T=e2cXx75l~Nv0u8wXOdbiMEA8lplZ748omm8!RXqUr2R7L2^GRMa|zqhT~ zK#9!=MB_H+D@`D=!g5rbh2ur#6eB1$!zUkq6vYUL+2nijARkHIBJxeosGI_8@(^Um z+`lWwl0&d;*g*`i-RBwRehBwwpBU1_G-;9a_|UK~ych_3sv0l%qil$?maYnfz2vyAFH znzuFXzYcXw`{xsdGx^=7|GPnx?DZXmEcx0Gd9{2J_|dclr=ZaM?{I)0)$MiB?c3t4 ztX%+ih>0Kx#rDgK7v&K^ewZ-f8yuV{{-r&fnoE!1@p)WboZH28H+biVf(y4$1>*Km z3bwOY!tIw9sZV#}P|~xSi`WG9=TCA`Rv+AH_c0cmMPkkKD>B>?qTX#XxfZ`-s^?$g z`e?DTL$etth?yYdQV?$2g=f;j`ekH_cLWF(#3jqKo0eJm_M9f#1P0)D?Ji9R%WE^%=fz4``>j z*RgO78pMDwrnr1!IP?(`uf zh?$Acp~5sqOgAY_QdUigdro`^mI^&ybJ(99*1Q`%?K<&Or<7FjN9HcLoS zT)(it zMxg9D2rRkx4#-yZUZ*Bq5kI8{3I7w#fQPk`uqY&lPRq*!5S0uAISX%)nH&eXoZXQF z&WRBr?>q$u?T?$RgpkU;$48g!2+USa)`b<1W!#;+WfBnh=hj7qARVT&S9Y(`m5OgU z+Ij2vxIQ=>^8f zkowl&$T|_ZAt8)P$w7;B8+nu;^?yNO1I_#jY_1fE1gpdKHyLv;9cADDE^*_?i*nKu z=<}lbJ2R(JY3WSmhNGE?KSA&Pm~-*wgz66~83vXmRePSpnPxbZc43yPxMJ@IgousP zky>kNqJ@W2uf0YK9~AREp$z}~0+2*w38HiBDTmmW@Cl{kvdaEil&b!=x%iBY@j^`* z(IU+H>40>LI!dCEVVK#~zXk%iF3D=I#5pC){i$UV9?Ku5Nw(1yy6RWNJDTCiqr~uP zH65|Fz>h=0Xs4&S2+=s@Df_UYC>}YYE?UG%tyhI}5yj9?T>Ij?b+|l+f)Mb)U5R59 zPdnPM%o&Ai#|>#ew>kcW!9jWJsh5r5X$7t8YQa^~0#4|sA3N4z0+{%zA6{qTc|OX{ zZk;Xv*jOLX9Hv5WxlySb8CZp$=jQ%SI0tca-O3C{6u450p#uJv4vq?kn~{o*_gtf&!Ovm@epS&N%--4a?>&mU`{E#^7_C@R zSS;Bp=FJPA&^z2Y7_A+oBK-z%H&lHBPs;Jh@j!xk3eI|D@S>8dxMiBUR`P|f^u9=I z!Yb|-diR2Y(G~?4Hvn(Ka25=aN!p=SM`;@FD>t?i(dOvEY(PGx(%$Nt|L;z%YsdfW z%~{IROZ$o;wjGbdnCQ~~y;=L^FY^9BEP)XN9-Gz*O9da!cRGukhb9B|j9HB@j+0+= zu8cyP__g<=t3T7#+=oW2#i5bq+jCpMY!hFRf554p$o{5p{o~2vH5M?BDdS__@K%xi zYTtosX!a7JLW(>SD9DQZz5a$C7%WUSTDS45dzz8xZ>LuIDVQXCD_e0n@bT^Hu zQ8^jV6;weP)(@gUeNCBcMx&9;gBp{hMS^Max2bM^E0^)4;K~S9Kbr(qYO8+RQ#;#j za{i;)TrinrXZO=jJ6FxjmmEMEPnnw`oxQW}fq!5(Ud4>P%EzXDw8f282K5WqdyR`=)61;uZ{Y8&EQ@S3{Ccx=WyeX z#%!ZD(zxrfjX;l9#HpRr`c3XIMeaVuH}!LUvCld;$j1b4ejv(L9&0m_4heNO9o&R> z8^_s+a*R~;NYZ!bY9&hEyaYwYtIn(9C z;s-W#pI$cXx7t2z(uY>WBdRO_66c!5q+esl#U4|f?o@x`F(y5E$ID3RBIur&C>W`x?S2ZdQy7q-L>Dc+?H*k)JCBfso{rW6G%;dk{xDmlyi?8hg zm+mzJBo=IYCfbzJCyKcq7+Lya~{(R_> z!@#;u5#Z!n)1Q)GZrW?leepy8Hv8<`vBPw7Q}uahOyQQW2Da4F@(R#;dF&yW({O)F zu!{M{O3_iBVEeost(X(m&MbE(7u0)o9-Paqppvr95fBnli#|Rm)Lu@q+uA76Hay00 zk3un6bgM;5_4T-qRq6cCp-;PBifPyMK!`eaW!Y=NB9_xqV9$fARkrdQwsPA?I&riv zb{He_3;vnP`KiFKKo+FKylENROusHv{sH07G}hes+YwJqg0CO7^>)>2|7QE8Z~5Rw z0rxPOERW%#nsW-@bD<RdV$N{FrterAx{Azl+b|}Z0CYR`X95HXj&4mDrSJPE-UH#6Z z#$d0LLD;>gO+Rg8Nrx=O2H6obN}nJkHE#W!gI0M`CUu6?h*%AJbOeO6*65w*rTRnPB5 z)j^GS3(T>EH3wETeVAFD2Hzre;R`$Ow8dKtZ_viy0PY(=MRO+YpPanJciuP1ooc(L z=V;QAR?1!|n)t(l31b-R^jehQ^?I{lH^K+uV-V?JoKE}V(ghR#EB9|7y=WH?%dK`&?}?eV{a){f#A1l(t*08OKlmNlf5x8w2?-!UHsK($+jR<`{{eRTS^sCy ziGE&VI{sjK{P&XrH-}BTetmxy^kcl%$zO{Uo^J6iQ5_B$EFU5l4pQzccN47JMON_Q z;dwRCzUL&oX4R;;d_rOCuf2wX4Aa%(A_>~mkznsMJ!6)po~^KH(ZsZzjbG-=p;7#d zjMqgpD+DjO$E2YOflDCrJm<;5mk}|?#8FTgkHsU9a8hHM5n)v9Ji{BYwa$;6M&zi5YCbC4*O)Vm@UV>cHJL&xmi&!`ca~$6yc_rj=L8t z@Q+8w6yGNDA#RX7q$l7l3eNl{NfrzB1Cq)HitA4ft&`cF0Ueo{Ac6amI5zHYmq^d5 z*}lPJS;ya6M9(Mo&WA=kjM}%Nq}a6jL%B2dF7Nl4{mzsRwtkeXwKhkU>UXyI?(1&h zk4f?<%;4iJ1wi**>R1~hTpQ68ezE|NPY!!#9;83A|D>S!ljE-@&Dl{2sb#RmVhqd2 zTn?K8*V%Dzi`24xdjNl$dCOGqPpJpC=P6ddjAl*hm=u@wtF|NIvMFkq{Ma0j)b+uxfRr&*b{N!^G) z;!iGE7pAFqdBWu|`q3;Ex6~tO-N2&oX3m!7_o@x%W3zwqks+hLk$K!taVTW{)Pl-{ zCj1{=?n4%tWscn6q5D$X4lgY_&yN^b{3se2$;6sgCMj6|UbM1pq%TF1k6fFMFdS_C zI)+BHW)2$ljFef11_+6-G8(3qymQXifJYi-iu%NsLMZaNzQ|SyYnJ`+#=F{&$u=j}fZy^kwb^DKCxn34QfA6@|b*Bgp1q(XCZSz{N6& zp9=8?ynVA}L@>r$tldy^U0&%zTs*X%YTQaa{1>w9$HY4s%~rwY1m*5kQ>Pu@7hhGC zx|2X4QmOhbFj$+)Yac0=v1rvJ|9wr^bdHKCCbWNc2LTI4*`YFy`W%tEx6i)f{sQMt zUde?2RM)>$oPl&ix@|Bh#{29m=aO|(3er@1r8VE&wXlrEeF&=y#`=C}tH&Km;-aFM ztTf6<qrf0yOyys)VJ_Ck3FMThff50MHC2kq1QQ2w49>+{Di+n1TA4<8!>EP78;0;_JW z9M|n*J!G)_*Jgv53tt*`>qluge9WS#XNY#qE3F^~sb}T#&aW zV6zRm2qfz{D&sm++dMhD=geKE^tJtr@ze*AJ#AIu8cVo0s+@h(Qq1H~v)sQg$pgZB z;Bt+3%+fMxC1)+;5TtAFqCR+T796P`+^=QtlL}{2!qjhPWIeBE=`InJQBCR24?C*{ zc9Z6o69*X-9U4F84-eZ=EeI?(YvBM?R#1o&rARes=|f#lOIdox4%k4h{uf*ZxqLh# zB_qyKh)u>IR1^b(bn^E#|Md2A^?e9;6&xgT;Mu1arQ8hjdj7?UqKX=r&sgTU6K5@c zQ>R{d3-v6c9C?i=JpAZ~vh8!R+pjwUZisg7D#r&*g3+m>GywDb9@<-*%r$^2>+^PX zI>%g)yzH&?*Eb%8{KH)YAm5Vl1kHyfM$U)yVJQQmji^>5;R>>cYnd~V=aiuTIpzHK zJcEIxboMmy^l7%DTCx~ASw^z$k->jj#uCX<=pF$Zu|FWVIS+Aot%g_j6Wf{2ycQ7? z9Dj~CUX}+44Y6Tv*=zJo*DKv=uUHkY9pv8l=h%T!1^ORtuY#>sK5lh8`(8&$SOP$` zw8vY&2XPhh6*KX8?9y;oJbR9=uJR)WmMk%Tv19nD2-x-9U|3*0QG=IPxpgpnm}IYz z0kR^^MJoWQX%^x3vvMG}X82Y1<*Hd04lQ_^XaLEF^du#Ts9hj2Y2)Z8 zDvz0;!PYq5-<<@J-A6`LtO;{pK}be>mvqh@ey_rwk=D|}mv7I3*E_IP9&__UO04Gxa|0Yq&2!~Q2zKn!t**BK;D>$*g#-Hh?sq2Qjdox z*t_zj8##B~=$hO^E@y_V!3UhwCA*ZxY>XNUrtw{RMy~I+c+F9@@Wan04Z5WSrPun<+9opgDE7C1rc&G$#B?CVYnznUT9Ga> zi~H_<+6VDk#|^nH%VYg+0s`^kmv8gPd5^kDt3jN~pM*&Ztt~^l9|%7C9R$!`()V55RUN;ay_|8C8}^rOWC`_e;Y^?J zwOr@=TD8NP*P=#_jQ>?0ij`A`wlO(gROHCV0B(cGaHCdgsn&<8~P(>p{oQo#_d zD!zrJ#;!h*B9>~IRU=wY1+wtDy83()~paK$g#Z&hWbQadCS_lXqG*X2r=W`XHNI`x3josT) z?(Q%8(OoKqcNS(}ZeyEEuqPV+dPpQ~s_Vxpabb_oO`Q9vC+0DX9K9lDoeOT!P1^XA z^x#$wkK`s4O@S4q!95g0FM^q7&PjMUjVgJ}Ar=OS?z6(r8ptk%r_n&{H*d#u%w;Cl z{d4bW++E9-ppf~24ktPMxRF0|DAgrQC=H-zS-h=!quB3Qw7_9vUuy!virVu9^_RY- z7pGcly!PPK3nWGcgH`IQi~+KsTTs-?*S&Ojr6{Z>Yf;P2qW(wc$I_rSo3`l{cJid;=BS(HWs+A9MM*&d1T3{vmX6HGw+0cw{}bM zH7nSc$7P^}_TajbdvGENo2I*~X14KdMVy zd_j>?a!O>&#yd-Cdt=K89KPb3V0wveKSV3}6%SCMaF#ngkgtvmQcI9jT%0CS4GE-U z{p-fvZn36QNmB40chuOvP2A|uk2p2*iGEV2G$r;FU)$scASZyrxR;K4=Q zpqcm2EXI2@dPsC4yOf)6T>JDOURq54)r`ls@N_tnA#zjU7V4;w9^wj8Nx(InoruM| z^7{JtY@!_(iL7|k;-`6r35cmtE}_K?1@loIJ!=t|dBlYcyi05Gt5ANf-487JcOp^A zYAGg2H*aZh`s}NpohQs(pSX!`hOgukSi%qUY5=WQIyslJ{61tC(TECR1q*8SdOpt= z-Jbk6H{ky~FC`oQJB?=e9(49&W?0OIST~EiwNdtn_r$!~1vCq>h zJ%Eoff*PQKl>tE(GR*k<9=^>gi!`%|+o=Ma~e|HVrp(-9XR)!WGFXPR<0RdKR4^@qqP~yj=+pe@&L{Jk*qOm&>}CPSz8|+uS-ppX^{wjFZLN^r;*nO zkK#gC;V609B{EQpm(W=BduXF5$5<}g2;gk$L-^Lk?qWt=-GcrXV!rV&EqxJlW4mFz zNGA(-0jl=QR?*yF;mLF&lE!^WT1@i4w+x=qvGUM(IUMc%L( ze)z?A(4Sm?wviZP(4E0O)psAbq1D^U6aR~2Y2*o#GU*b#W}Ib9Qd4KJ*FbGt+!qJm zXu(}e=tzYbxOq|?k=5a1O71Ip?v2YG)x6~^9wzwQ6gPRBTI$SB>)Ve7?g=L}DI=#d zvkFc!$W}+ft92j6)#Dk5&tNC*G;Svtu-{S0%}t?ptLhpPSwcQE!=EgAw` zsY!^QyuYSbh0cLwpwzR-qzI4eyCxz75J+-aBzNL1X7@_;GA>TJ#L)qH)n_S>0+wM= zM-1Zu({~%&_6ovGtM=5xp3%_MKWZy?vZF}M<*v4Ns???EIya3+8-FiO8LT~@%~=vO zyzma+oe=P<42?BHr=9V}c|m!jdU*t#)%!2+@+?!#fz|nAyTYdrS7qkh@P&EVESkbZ1i`e%e0NSLrD6RPOkY8}=#EMq`){YUw&hdy!eoeYgnT#T8_`V_cXnQXh_9(TsS`0xO&32YEz z27An6_*q!?MHz4NHE1_;wa-yp=QJJes{LiwIx`G{|7RwWqkQDtGAm>%NZTN;rJ08F ziURyh7o<3W-a*Sn?|qSn97N%vll?pg=y*zjiIgMMtt4IQ19#a>1DgIPO@|zUEWA0m z_br82&PWZKoL%Viy`T{cjbg}0o^>!!oxD#+M54q#QH~#nt{(KPw@0QOZo@8OqE6ke zLhGWOwV~r0JD`pqQ@%!(gCc?p5h?q)CDeT*pB1RYdIt81Ou0f|hu%0=43EE8(1NB2 z`c*Nbt*AWzxq8#>6_;bf)K0^BQO_{!3i_vb7q5he46wnxOTrvspUz&JMf*Y|X7g8- zR)=Sz@Vk&SG(9sK>PuY4rVPCFjy$EacH8)YHv`|TL-sXqNiFEFWy!d^4z-8X|B_g}2wF!wpeei;??U?E2CfMZ%T;AIrMJy_V?FKoXT#BE_ zNy4gs@0bQ8O7M{s)Daf?toGgq_Wqor@q!6IcO5+;-1U}{b|U=QHmNrTP2=S~PrgjP zKtab1{?v|svL(@re)6t8*Ig#Xls#?z!PN7lLzSL2NmezfK((}O#MSkt!uq0B>QCp> z-;Z5QKLPG8z8-!*8H7iFhB{wsdsXlu6xEM;^}PP+WxxK(^kB>`_kB_OLyV(l&vqXjdR9YV@%zT`6{{zn3BA%Xp&L(vU5Mjnq(9<60XMqxbozGyD)*M33T$83_r zfwzks1SWr$UOYUplYQjor(26OxN?9pj+d2^k8PRTM!~SO+ieApEsAG`gu8O`c^<0Y z=wn4KS-DBEfbq zi^0rb9!B$am!h7}RCw3HX4r3!k8ro<8%L-taI$LUi-drjq?^)G(VOL>%Q(vpt^klntcpr)?psBK|HqJHnt393T_8)p)a%YiA zihR$9nIkqH+2-@2H24^HxoZb@e=XTdX2q3^q%PVFSFi6C{__l1fEjTE^&({*xfS?G zNL-bLlDA?RCDhErk8>&0i^W%sKK|yy&E1L*sQfYdjcVXIg7RLCvNb_lvWOoIxK@vn zN1l0E1KZoI-Y6LVP(Vr0?>gOA)S;2v74p_FP+f&gYFCdF?Ws)_JGn66NEl(JJFAeh z5Y1v=#77JknH|VB2tzIm;!-C$2>T%#=2Elbe#+(x-mF{$s08vc9SRd}&&5I7- zmkF;m$6>?2Lgv(r+(HEFv*n!~7<%JMnQY7iP~op#u!?FTY515zK>9M%ZmWG?ii6hG z{I@dY#b#?~_`dvG;aELHX%Xml}FjS>f4x>ms&uzVhnK` z1D8fiE&9ms*cKZS|KJBmH;vEWd@2M~I4X$5Mt~N) zr7-N`M|U^ffp)yC$i#mCT@nAVnf}{|R0~xCctRPu#aGI|73gP`=D`&EdfrvQ(ehvv zyek^8ekRB+b#j`G7`%#O18-OTXr#+V=#UzBa zPo$qF@m6bh-}mzKM=e?-)&4ux_nRga87XgkRrWWHR2C)WcYkRw|Xhx zqWHV%!J#7M3QV0>56%DCOoCO_(S>Jr`6@0hQcL#pdL+J_Uiy=q;HGKg<8TiS6q`?cgq#rK7LQdG_% z^`kd*6z87Towc7QnE1x40(V95JKGBAojMsLi%USCD}5>) zoRvC4w9;Oixc-#sK9LJ&mQmK`WPEMWPGQ!d9P{v;GJid2 z>Tc_;w@q3?QD|A@F=>ccV9>Hp{!&!WZP+_7+E(@&5c(lnA6CxgH)xEhD zjP+(SB1h9SuvicoixAgx@HB{{Q8q!yJkeC4``9lG5y7mc$aovDeF|$O+ zic%9y@uWVaEm#c8+}P#Kn#*_^pSinZ0oZ)al~KV5Kbw@SjoHmjmR(oRC|W+<>SGKj zahxOewARh`%j(T95u?p$mxlSf#r`%PO_*%b&x8!>G8c8aaoNBgHJ-7LJx zNgEt3M#l%G)Ag?jSBS8s>I3;EPY_z}fzd`32V#-j|Jbs$S))vRJ@cs=>4%rSe|9>? zl#GdL_QK|0(mg%D&4+t6lWMS^S$7-&m=82%5l)nqNcr-pOVPPYZ-wpEqISpRZV~O^mrtQncm*Ji z-?B};{doy<=EMRqcS{!MHNG^V8mnE@!1Hm)5;xquX{zr!jjciy^+76=Ndc$!50}`M zBbm<`e<6R-ZxH2e-Jk0x$78OKZ-x z6vBz;z}bw>u?suWNxFBkNv~Zq+qwJ5g3;FCOB6Q7f|ks*1154 zRDwm(YM>-g;P(pBa2-lkmff#uERa5miW<{{t1O!SLTzm+V z@kwS?7wy#K?)$C|@&)dC%ZT*vACL%N(KHc)cWtQKmD4swm~qam)RS{q!cIA!P=1<0 z?DrG|p=hUpxxZr=B~SO{1vSjJ)aQCA<3!Vu}|QM z0GVS)1C7CmJHUeHo%GfY;sa`o`b7NHh-r$npyBRr%KeKbYh!PQY#+I_T_d|>?6arC zd&eT;{&G0l%NC{szS2ua?Os25*0W!!7Zibjuyf8DT8M8Unqw*dct<)YyK?X%n_=SQ zD@XlaPrKGJkl6)ND>&NFO1fTkdRE;%RF}l}zvz0asJ7R@U9;U4iWGN(JHcH7Y`nO; z6?ZQ#?Zyf24h4#9f_rgycL}b6P@FP3XXfI}f6d%*nYCCe$uHmczVGt{G1qjLjl#2> zV>q-tjPQ|P(^K%q?bEjD+r!m=+{2~~&v&$~B6m{7dP1_j2QuojI1fKxAUDsd<$=#? zY#!Rrfm-4drqMzsgdT_U>=f0L?i~udex4bZ!0Mc(WgmI+oeL;yx3=H|)`Cu+8euDI zz)kS>SrE?M0GMVf`teft!B;bRmqa~ZN4z{pi6V9dD0O{_Oak_0V=e~_v>EGhEbER2azf(wy2D1Ouvb<>92E) z|5w#j)i_j3IV-;sH#F?dV}Tp_qgH$-H1hP&M@fkK;^|)Net(Krf&!ZYfJvo@o?D=piw%hI(K$VIiVe#~-nJ7+sJ+{@CHFE!a{V> z*EvInks$7Z$==Y#K_Wh1u{n%%{(=AbXt_@hyL1K%T#)?Y+EjjmbD~&cjXhg?8KXn4 zm$9EjjH+B)^(c9`61{uq7;;6{RRlIx%`QKTMvfm4GQ~vxTPd4F< zl1nSA)2?);tiJ-nwQw1iQst7?oSB&E$k!>2%y);rYDoup&Dr0~5F{`Avkc4z=T}n< z?PedJ?+E@;p=A5OBQn(cEnJy*Fb*<7St<_d1-nsJ?yH|nqPPvy-1h#LJ)&Q6iT;zK z3F>qHx^OH zwe$g^MfA1n=D7B4R5!=0S9;s3B8qM3`DH)aor2w|Hv4)^e6N0wewI&^TO2uXeD5$T z;{h5TP5d-ABn?V@bjCBpq9NGMR%?ERtcv)l^Fk(m|eWVi=r)3~(08*jgaMM_=( z*ooH6>po&xP<)VLMB+Qcz|jQg9nDlO1Y?axrRg){im1T2eP#TkWClf#dIa#lzb)}0 zfAP;TY2`N9NjZjA9KEKO&H8Xn?up(Em5FB`9(~2G6;(#~l5J#~`KgTEgd!cN+<0Cs zdKQFjxhcmK&5*wH{W|z~TZ&S)Od%sr?=3UYA0%%SMtwVJD7a2;)-olns8k}p+eeK1 zI3~f5x*0=_a{A89;7lj0h;X-uf-8Poz~S%*P-csZj0|M1vNI>@Pvln?aeSlz;oww& zIf|pW_#8!Mkf`|BO}yva0+`m&mV*z=hi{Tj%@B?nUs4?cUGtZ8I=J^0T}BFb6f(w3M(TsLX_TN z(s{QuiIK4jCL$9x>{*vwGgMK6aoFwbgDbYN5LutEofDE{Jp8xCkH-oq$K+q8IoawD zlcGCqEOkt=ra57UDw^Vo9=J~IC_qCRKo)eCiFfsDEcEq}Go;#N$BfK3Iv(ARvb%mKwgEjaop4fWStS4iKtEC4 zn*4I)bQ$iY^ZQG&>ZI^s;>_>XIR-ln$zl8S6kW57Elyt&WR*`_gMzTI(+0B7U6MZ!)_m-@{dr<%bL zq*|@ifi|WR&{2)N+Dm%KWAF71iH~kX4JwP;)_CxhJcZqPdeyMY!$qayu%y}U*bs2# z){y3YQ0eGPfcE(T(JrE6b#S4Au6fMe@|&3R0$2$DZIDU!!8kXg%i`d0s`B+&5^pUt zUE#_5T8E+zR$gDNWLWk|&|u1kSt}J}_8(vhJII25(KSw(tN4UP-0^sxYB7159odPOWLR=*alYpEn$lk z96ArfI!_NWt>cC?e<`Kc=k{TRi$Vc>@(2BmE?Qg^xLmm5bfw?eDex(Lw!WHxQoj9n z=pdPXhqUd~+`1L=Pu_W=)*yX)W>(>bR$PguU_*kp>`Jwu0N*eRo)wvdnk`*+VunR}vAp{~{a&7+?vVq@H@Ig3W7J&+`7URcy*d z##Z)w#1X3zVQZ(6sKU1>X=!T253ikA_h{mL+{ZzmcADYj3c5SnT_YVvU!`OenYeBo z;SOU025Qi^PT^ss6P!^-IX=<>E7G&R?&>*ov8N&9vWa_`t@C~huQ9ovKqwEH52n#@ zEGmF?J=He}9y-;m4x8YI^!tLU%u)fWd#|pk=<>STLQ)1*$r!b$-;LCiuUgBNYUL4` z(+5?<%(}UjlFV0MilZ67$pjVrLA(+m@-<@6C!URP?p#O*!SqMoI|@vcCp)Id*NC;_qCV%635!Aj2dh(5@o-I4%)@}Q#9jcG z{xOmZ&>TAri>hA(&KO{DZ#P>cRyk67&*VhcKW4Nr$SkKcK%vHk1GF=)Y%va-{b_aS z=VBb*t1*s%^o-$0TS2ZEEB5iYw?x^|foJ*P`o`w?f_L0#Ud*Eo4imMJ4@Ll@)9IbxM;zqei6`sW%Y@uODAp1v1EK&kiDm zOVM1hp7uE>8HtTDDBdOSc-d~kK>{etYO*RSymQx_a=nu`yPP>qSuGUX{j z{MV)W%7~=wBV&>Ln?nVSh0Ed*(ZR?SiI*ts>Kd~w%yyEziRlziD6-@?NGReEh${j% z`A0&)8?|e-lTcWuL!^{&HC>u(6jQd{2vCPLOYy~ZJn!qsk3q!& z{gXN#KR$bBAH}rjubsnc>M|E0Oi|3@H3`{Gc(~r-Z7YP45N4Mm>*=YygHP23Kg+25 z?Y${co+Y!(;3qOzYvdAHgB>&~30Yq#+jI0W(W?0$+#T(j>z(S-(<{;iI^lYLF8B7V^ z$J-MzYo`F){^2+&9Ir^qXrR7eN4UA9j-M{j_RpJbR(M@$DW@1(eNZ`C.?9HbKF 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

RBO`1GUwvbx&bPb~k0SWA9vCTZh0V(9q(_H-T% z2$J56=={{nk2~8mERA=;%n|8CJSRk^ zFcf40d+O{*!%&j7P2Oc%U25kHhY1Z)Y^O9?TA=gTy;0JQP=;Hr(OlP4LcEBihhag` zHF+#fuI9&2v^F~_uvQyxW=3upQ{S=Mqmlj9RE|dNm3?-Oc4V4IWL^t>#8g??gX{(eYW1?ySv(P;*Vo$|6mc*J+3H< zt|MwWX>BGg(O3JF=HDwGfZ)~)Tp-abD}M!4Wa%` z*Y#3E>$I#2IvI0y4`TmP;qG2F-SdgWH(vuN{p*c*3C>lHEedvCm@#kNT8-uL4z@EJ z5u80O?yHi!p`rIxy&%59(=40tZsnImT{*~l_btR|C0UQX<=!pPPM7jjI1JO_C3{u@ zqE5a0w@BkMsGuJ_?#@!w|5?w*^_MN?dnn3jL7a$3SPdGuOF?e6Z(@`&u?^ zBSm7=LUg&6CH^X>O~6iX_F0Z@+rX3Mk8$F5xZs#h7DZGzfzEP;>0FDicXfJv6Z`!) z(9nA-HJUQ-^E|c*nS)>&y`cxC?H8ZGl!ZCqpPH=KC8VN%7#zF#9RohlGaLIZexD#f zL7NLpo$`Aa2i-l}0h8&TRRQIff}D5fV3*L0slA|C3jAyLYOLJug!qfR=F2HYgxKRN z8EwCZ4@MisT%$VWAo`Il8YhWZW&4(0E`|Eaw1A&3ve@j-*ohdH-4ey~VJ02M_lp+^GP>4-rJg92Cg5GO6;+ zJe9Vyk;NM?ZGK66iYI@KslUIc+x5|jyt?GEhPyph3e#{h{aL|M1Zv<#-u`srD@DS5!6#?0}J$2G|m|Nj?P11ZEIx8d# zh{)&esU=943Z%J5QN?EG)3xg+?PmI}0N>_ANvIO}uOR7MyB!Nh=InVk@yfXKa*89* z%*?Ac=+wZV8dHrySl5|jK8hWEA(eMfAol|wmhjK3&;k%K}(PK=zt%E%Hp?hC=t0j$=TAD`2 zTc)Pj?=$S79val}K(Levy{#(Q4(SpLBVccx#PqpF@xtoj?EgGwP^ZooN}p*?@@06} zW*Aw*d}4W}i=v9)3HPz3y~g2@JhKUr`bHu)<2$GNjW@p!N{eoqu&TWO@t@GXmJy$&UX+Zji(bpB?Xw{_=LFOp zmik3w$Mm=j!Wov|WHbwg2HUtr+px)e=;9kheydf;GB|)Cpx$Ok%1ub0bJHRREpF{V z;&=ad`Qt<%VUeD-l0y^YbUsh4%T*5ZWaAvY%oHa+c+t2}E@z>|1CUDJMEQ9Ep@-jNLCTDum{!96!w8X4yC9;!5l3y_99JvD>#=@d^${MT<=}P8 zPe?|Z53(Az#An;*y`HhUsdo_Uk8|j8pHqH%AaV(Dz{{?y)!uJe-?oa~a2x93yEXNm z(!y$BJi_GaVmlNQt*a6J4i|sQD)X z=H2V>aw6>$wQ^_sQcB-6qw}u5kG5C0w!wd;Z#gMr5))vN{eq+UmVyi@n(JM6RvLrm zyGakA7j4ICq{Stk4ST5O8tCR4x=)n&&)pTOZDu12_<4oG7nkR(B<`V*lUHJG1U`z< zQi474q6q&hY?@4iZE72eYf4SgG;yJYUXxg@+?m4GRf0XBSvL7@XsbDL&sshO87;_; z@>{ZQWjkqJemT&FidaAVCo>V>=rEX~&&L_qu|TuorjuC^4T}GzlI_6ZmNz(_?9Iuy zPuyWny{)~<^5uhFX2O$rITnh+B3`Zzs7??skr-XL0rKF^f_UMKz9&g|7B zBAg+n=^7V0dA~CsShk-Pol|I=FGMn7oPla^5dT`?85#tkAuQ(}y?{Kw)C;mdpDCvtM4Vk&BP!*}j z0c`*e=-RW%1j5GLh<{Z{aV8dv8N@L7NB90ZRC-7V7f@YM;;W~(k-{@vaY&(3RcZ!( zpw^?b)A_KXQ(UTc{$D0i25ViK+2fD)eOLWId%iA_LsUrtJon-i_?|!b#w`x8Np=Us zc@6`$$&tz;tfzW^^5s%@#~yhKdOt_#O0N-t9z)aL?viE@Jh=SAh}DhoRUsx_9-vIw z0UF8lNeW`$T{F@x3_TQ0-6XIv1|08Jt0IhCzJ9fWG6!Et`|i}pYJ&>M=*m&Wk@GLg zkQbAftuGdeqr$03B_rxwIHLqDg zB`j^xs=l6Wrw{m#F!mN49MuU&CKe*G0)VOq#~S`4H@=G776p=Mm4 zhZZ5?lY;;m6DHfYNKH{vDVleCiy!bBnn?25Kng=;g1mI(M=|-uv&;}Y^rh280Yw%+ znxN%LV?#+ts~451ZzDwLc&tX$7_;ekwKgl0hmkp9gzjHJDr()|FUpNIy%IsbrMo2uio5iQO9fjZdi=U$-$W?99HhIG8-s$_W=-`B#R@P-Lk$P_ej|z9}zbfvK6u9DZBl&zJ zd7Q`Z4VhY8Nds=uG%~h0=Xal-)wc~(Rcig=_<91GlfJ|zLqyIKE%s{Ei8fW0er@R* zdsP{4lvBs)4ansh>8_#yE{&R5ORnd&w#&V$-BGC_TV3_va?)7TMx{;h(ElV11Cy*H zeoe+fGHfWLPTA3cAH3?g80sJ^G5oxB{Gi@jp_j_Bp##3RhGtYd-^I86 zyCm>@eT&83+k~iJWc=;;1Mbo5RUveZn)u8;G!;mt=2M@o(bqb{rzL?~ak^wxphKsbA^*@mV zTG90;_q&_H!&>*&HOz`NJ-r?=FeR03NUw^mBgU+K#>6$pL_RDq+5NUy9;&pGp_3Fz zU0C!x`X--x(wrSXtS?v+eQY^U*sHx%0dl!~swm>3d676KEoVdhOE zs5n;iNgrQiXT@V1h^>Epd@NZXqO$OmiPBVe2u^4O=2qn20>YwT!8Pe#mRR)!^w<;K zx)G3rO^2W&34~N<48E7_@v;El&emCz05v~uTc zTeVCakjc9@s*=Rs-%!IeP&Fm^m{BJE7w1Yook^h0w8fTD*r(ggUReGuzV(|wa8Kq! zr{epXQI0RH?>&t4w>l-z*srzdD!4C_2U(EbDw>nygc-?uk=4UGSTeJoLIG7CZu;;| z{H#}JqXkxR+xM2>NPNX0dV{s31-c!B8%)4|u z6PXqK7W=dU%EXwyZI45GO!z*^X4CFYF6|#Mls2l0_T&v zx-&>dj&eAK@S|Z``r=k>ZN)+q=c$#G_|GYneVve6L`Q%Aj@ll`Unfi_Zyx9Qoy0DE z;p=JsH(Wx=O*-;|2-dXrmqwBZBQmdPBT<1b@e!Q>Nq<^RJoTqq@jhpaw?>;9`66+3 ztl)epL+hw9UX+cJ)3LNJ!pL7jKJW*=iNHW}3cPwXD9ukEit`q@pJsnFTs!Mnlt5fp zK<5L;Y~a$eerQs`0npQ~33NK}8@ESISGelO+V1n2EWsk{*10_-c6Tk?;p3FpPAuG= zn)p}Y6812z*-WerenVSurI4)yT)38nZ`#zzkd~l(%(WSBz(MNBQk=Yy)w;mMqh2zz zklz^`KQQ@yeC%5k0dJ=4bs`aUw52F*z11maos)R~XpEMqAFBj5-mzU^=)Wp&2amms zD=WLwECVePewmZE_c8jUjyubwTh6wWBHa^@HZ5;WaT}zl^8J4zc8_0CYse-As`$`S z+qU=o3`%?-GWmXf&jvoGY%woaASG+^vo}dDTt7aYm6iLcLDsJ!#QDy4F$r6U;7S0( z5zTx0eQ4h@eah#lG$aRzjkZH%GHJNqe)#)MptA?@R>H?+Pc*R9tD?T#!tl!Me zgt=1UJ2n**V4cAM4|u%m7pQlXrjK#BxINz1u-zgYS_?M4XQQ`!Q4e3G=L*bP^?e_U=<#3aMGQF zFbuMlUEX%%_cgINnc=M{uMtCUg-YzcE3u4BC8vC?xXF;V8 z8EDrSQtbnvH8-xF=6~}3Hcow<>C3WuRgfV=d@1~XQtfgvVCXnJI9-@neV@p*G|EE( z&RCF;APihvKz}ez-zHYfL`6>Tj{a5WVhx(fW-5;Ke1Cw1vW;3CF?DFu?=5WIJxNgi z%`a<|qTC}T+>QF?bNPlDJ0 z=dXwd)0{2*OZnq$0|H;ajCtjUZ%iY}hp!dAle!bwGZUj$t{HPH#|5iZFaB!zwyqOw zoG8g8m%rjK?WCE#hZwtVs`jz)4>Nxs@sLeLqWMORUDlS~P~dw3HAS~GToE4ac^ob8 z&UMBqb4dXf1b6gAb*{ppiMxd=QB;}-s{y(eBsX>t6SpT+wE1o~?cp6c3m^8mVRB5x zBg>taPtcmM$nO~>y{@AA4WNspsk^9{5 zqpZ?%YAXwc;ym|K+=t>UW9O(m_Su{`Wwp1P0p-B2l-*C)4$}H8EiM0T0W`9Y%6W#U zbRbTn!ODR2Fr`^Jc<9tdLMhTSGyeB72EC}=gDPyxu8o8r%bbsEtfOMWLqBa-Z!@HW zZDezqW#RA`R0JITLSpW#M7ITzk5r3Qs^-qWPq7UujCM2We=J*$VCm{!OMwSIy-*UK z8T5wWJ7FC=k>t+39>F^0f@w+@*Pkd(uo`-dd>*MDU| zngF+`Q$$Ap|G2fFE-?eBvP~yP*W9UP$#1zKb$Ye9OrvhKfbdS7*T+1U)Jv&ewSi1M z;o2!u5i4_Vn2tX`EP>-{=Z`HdB>H7PC3L-un|BJL18&&uqW)&m*@7dHe3Ki7pfC^35^X^-x0#u#8U#6Wiz{0bk3dF}0^xun_l^KZh zN)}?dPpm^$HDF_-aXFY|calb@pS8|Q9B8iV_+7zfOZ^EwBR!39T0DL;Ofj`=>F~jj z#-X?Nn39H0UeouD>A#HdxtZx4M}6>&11l3d3?*JFC)*D2G(BqD;So>c#~Q`%i?qj= zzm4oKY8jkLJUiik%4kef<-G=9m-GdRwm}=dPy|fV>a>_ zD8TQ1|B}1#KvHmQNG?q~h{?br0j-*VTFHgS$Iq5typr^>>Rra-irv;`V}I@nNA*`& zQ%N9nP|BGWw~n3Orkdg|uZ{!#35`dB>ZezK&&)hdRhm|_$&gX*4cPOIktM#{2eD7Rvaa#DWc$C*mVsy}w9s9)yp~PKKCm@L*`TYDA&!_Ew z(e;*HZLZN8?&>N~C=_=s?oM$jUVH&Xf)xlsiUw;a*5VK##VtT_cZwH^2KNHNNpN?k zJ=x=YIcJZt|3W^zGjl%oeO-Pnf;|H+-{h1Uj=e}9&aLKPAOM^`Pj1t;U`Z`*X!vVl zE=9@6;fXl-ySc58fvvf)cFEG%y6}sKFadsUi6yN24&};db)?Vo_&sN6$UL)lNLu)F z3{ErYGU{I3k2l!no83dH-t8Mz&$p-S8uYbvNRPf=w_FNP9qicROMF0x+>;f(@C$#A z0I_hC3u8mwMR}<(l`UG8wE`7{1GS>GwM&RjL=t5sO5xHMt8+q=~^Z$XkD`xG~MaViCkp~z3ZRG0#Y_Vadz)Ic| zc1|K%e_O1lii|&G607gCxm937QMjH;blqiRXIXwU$Mg3s-+4TBsZgELJ*q|_H>%b4 zI+<%+A_1$!Tb&%kVLb6aq?A=2gH#PsO3Kkp;*`|09IfA*E})CD&F^V)$Xf$Bj)N-| zS&9g}>Q={~Z@|@ipQWmp(D*v3)5}77yZ_35Fh}`+=9KtI7EqvhR=7H*lbv=lizCII zbgQbIUg0S!?D`F&9P;5!p{iA4DfbY4dBYey{%$H}ccJLCm#^A>Y8uPtQDDrojS zDva+}%jZP8SH|(bU)+T+A|`mDKdxy0K!+z<2dHas`E!lcZlMF@Yl9(=`U$Lp=Rx)2 z!=F;vSB==-iQ(%yyU@>RYQNOcE#)!8Is0haVP%Ls6df_YSf-!4_sg?~$1Zl~^0J@F z47@1UtT__;M5)p$uMSbkDxRd@(jYmh7|^J8Zh&Xet+)4xe)_0M@1B`oskcsgzx)+hy&kUVk=C|DZiWzcEBFgAf#fP%OTj<#SJ}cojj0HnkT}rka^DoT8Dng0irk$ zlpoLX!~~<-p7#*B&lle+#Rgg?Y`0B%TO`@)xh4!r1<6-wokow3&$MaCljlHmX0J>Z zxpK=85OX=>5>+e|fe}6^3uSb1T7fbM4eJ zP!6w1tgVl}Q{dAZ zZF+Z?SNg1Mym#rKhFeUlaAiBG;QSyLE08IOcX^#{_e+)?y zf&+|-5MIphocVq!hGqwKrTk!~dUEBskI}t0yDtNq?Zw_Ajs2jl>%EkT3nz3N%%5-_ z*fe(_xRyc~NC>{++-Rzy1`dLqV2E&ziLkyK1?>0XHHQtT=;}(3$is8~$>KTUy7zKv zC^SWD)-CQ8n4eE=a@CEjgVYx^ConXz`Cl>LvgOq9FUI5<32}tX+X1v5LewuCYzBtM z4dBnQ>9&>9w-B=Q$;-PBp^ZBBekz{%jiw75L{kp9o*s)VlK2e+?zUM|-Gfc!4?Q#y z_Ac~|QJ<@6O&Lgcrj317S7a^f>mXuEBQt-HzLeWJ|KbX^-o7w6)OB8-f614y6Qkzp%*e?yWsn7Zi(UE$aXFj)PYy7a$|3#64&;(dwl zlhqA$BV24UC;Xjc9qr%Kd*!~VZC%pS8dAz-?=$|3+y104UHtP<-U+y)Awh%}$Al!c zKJreEjC)4jDt6$d-$u%q+JfUWq`oT%^@rkou2ElLV*DjZVOO#q>@TD;Q3!kfRX-xK z#3@5l#H?{tV6;YZdPJZ*@B~j|mdO@8*BxLO@{{xMFhFcjP59W}{XfX`P(Jqyx)Ccv zdV+@kAUfQ#ZDrKzdki*Db!-m!l1@OZ+G?4oaa{WwNeM9F%@6ji39Udgis<=Di?lKT6P`vXdapfV;O#mAnuwhY{?@?ti(T0!`$R0HqXj+&lrA0 zi|$iP>|1o0qIa5De*Ms7+Rp@E@0~xsW7v9bnZD)}8Zf<%kl^e!`WcN`d)n^_5N|NC z=q*28_w9MFj>0YGoJn))U@n*r4LVbxk8@bEMCFg*&Spn)X~Q0{+r?*^nuApwMANRv@AjxlUVSpcZ%sKu3w;8Cws!xo6l^`^8~BN^w16C zmRvIav5bSkK+KFY^sJ?tURtqFu~wu&BeS#?h^66rIbRP621E1Fz+xWDe#uLFEY3^& zWGmm^V3uy(y|I909t%jzRD&m`UH|GcuYi-31E@okD=A3d21X z22>E&_&&OQ@*2!E@=y8T2xmu9uXC~>5I)#$Lz?em2=q#y%NBT$ku2+S1qO6+j}A#; z+pECMQI8Y*N#0H~DpvxXlUSJ7@7edM5f)RZ$!9ohhn)Vd7_(s%13@fq zdAKAWb$*6Agy#sp{3~y?=OZsMh#9tm(LjaD3DGhrSf5!|VEpF_n{4IiSumFhLtBCN zZ1SCLXZS-8(^}~Ow^J{icrk~3@yQstr4NYsfYxzU`+LXz5EfM-WB&EZ*iEnUUr_=a+%xjDN>@fe!>L%pMI;J{jY2p z&mWx)%$ymyC~%>@nymN##{WD8+lsfn!)osO#9{MoO!afjJto6(EaFThv{Fpf)WKs4 zjX(2wQP+HWVo{M(Mn|5ITBovhYvCAHU%%4-CmL_#1hv&2s4eC`{;o4fbSxIgZay@Oygz}qfzw}s3;w2Z2E zN>UD6=E+SV)JBj_Abi0WiAe3E)@s(cj4v{^A(~FXt>1*ixPnD1LZ0*afHJ6#fOqfH z$31e6@`Nh9oV1@2y$}E_h$RF6ObH!Ks4fVDNZw#Cq&8r*H@%xD#r!0oPu%??-D|#v zAx0S6i%6RgoTs6m%tlMPFQ+t`-~7BXi(o3#vo3E<=^!fixgYOE?kl0cJ+JxI@H=Bm z73lNX(;dD}3|-gv^={)bU`j!;*hmrA@2&M3g)%zsqZ(Ss?q|W#p(Tlp?+EW@(M#LZ;mbyj#pRo-j-u%>qWUOo||hgIWb>UI6&F0S&- zGc!50CMqR9unN*|airTN(=0dyB+TnyU}b#&(`C5LNk*p6HaG40v+fGkU;EY|<@fmb zaiQMQuUsx z94NEOysBa+GBf_d-k( z4&N>TZoD&>yGry)S{v#eUWCbSQeI{`vY%Bng_qP~@8ufzEe zp?>}1kA&awGOZf!xBmx4miU_0L`SUo0#J+28wCQyGc56n3?s5VyCxKen&%O7i zEliefgSmL{|8TaLP%(24+?#G7ggN^fR}qCxqu4$npALW>rQ@OnaYAK;(XyBYL9R!q zD!OcdV8=Po!bs~8pp(4R_FAF*l~;|F8o+gt zYE!i}sUb#EVn6h;Rs5H0_nKUuq6*p8D^LRGrN&Fty|qrnh$gQIIr}R44_~M=ZD=l9$oWG5Q?C6g%3ft{hF$BwDL#I4=weaSr(( zRTmM(v+<9ScU2+-?SC62ZqaRAf@PX^yhIw_q|G3GtBSN1-T-g&gzb`7U`C9PLF1OU zTz&umDEg^GtDX(5ZQ1_ehkd+j@dyH@!c^hbIzr>ibR{$%O;4}zH-0OKwcS>VV^$>i(W@Z!S!2o|^BR&JF-EKZjKtO6)Ry=rist`0 zi|nDN2vQIjP;+NlBHjWev|H}j8;A}7^2UB*&_X|~;`bBbjvm4O`j1TiN0@9)Tr{j~ zB1}r6CpC!9OI_9l?lHAWR`7$|?&587d>ml$P#`n@emBRvt{~agO=Pq>xvz6UC=^fT zIhnn7`0!GX@mFf+0zw?EXAuqoDo=#5(Zoj?PWOj2srHG7yxw(p9obu)7^@>AkSzmb zq-_f+fvy(j`X(S2TksCPM;Z+OPoj&LHh{{=p^$e`ft)jqVbd;a3^p3mJt53zatCUkdQ{Z8_|EI6 zf71Z{r~9uR$qSMT=XVE!=X5Jd8&*#24{V}WJECk?%SG?;pcy z_4zz5|F$r~GX0Ng&t1ToyRx=GbuMMC@e#s?l%oye-cHGpVZ6KqY=_w~@!$xzG+0g^ zE_CAF-h6`~73$rN9n8+FSzNuja zm80rTBsr$&kp`~qqGG-&GvB)1Mwoc_o@YrKzdo7r^XySQRlssu{tCIZyBcK6B|Q}q z)tzKN_rN0S`8nBV70b)PVpdPf<;@l{r~($pHKUyWv=&N#;Ei~;pIwIa4xncLE z>1CR2u4d>RKUYSwmvlADTr1gZ`Wd58_Q z35%Nl8(R4Zhk7_VJw?+DN}5$!$WW zYytfEJ!03of3)tyKlT2s9KqFtr<(eT54yES`>5lXO0ZXhX?8Eo{2aSrzpJUQdBuJ4 zbeRNHOogpWJ~+A`j|dT82?@D?484=zv}(395k08r9B>{r5+HYZAu83VhXmp=0f`ru zy^XrB>TioxJxJB*8m4n%>njn8OUWuQzpy8EPF7Lf#fV-PiBu#v1RzUcucP7tKeVYq zj(sf2NK3|+pNsHQJK5IIp-uCQqWWzU^nLVH)iN1zDZe_ceV#8qPH{)D#s#Oxd^wG> zHr*P`;er`=$k)icdaywQv zbT@B)$m$lE+=PB6`%s>w@}A?5r*3=+NQqA8D_W_fo@3BbHMw#Tp=y*I>jI}c7ZQ9~ z)hUYTACm$L%x-}z8Uo(u7Mjv+>g3H_T(FN1Kgu$<$RTBWzsdJexF#z&#s#pW?%zD) zz;ZY#L$u70qr5CLVOTd3bQk1V1`R$x*_%c4e8KO@sD6a`z4y4-UKVrM4C*N-pKm10 zF=E`&{}C?Z18|E1<~oXY6vUp}&#;|T{7XNxr3&YBFTH?dvb@F|KE1;9L8&FQIsw%L zUZ%TeL_ADuRrsO?tY`73A5^%{>i7^6JKOWtL)7vOkk8cuuqG#lnKMf#3GB~tN93*bav@jwchSr9ydZ6f-wRs|IGzj9+nkLKNfUG+QWl}1Wo zbK@jUH&_5+YWrE)!Q3W)`{8bx6_S<8EBnpyz>xiKQ}wJyZY6VC<9!UJb07-=!Sv zyV(jy4|})TWz`9MHkh2C{^(1<8ZrTieZ}IwWBRQMq3$H-l51IM zwL!X^?R)0Y(|;_iu-^ftO+W`}Y?8;$$k;nT*9JPH(z2044|3opJqmj�w%2^1ZhR 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%0AQt0Ec%I7BM{3s%$@6&f%Yy!2D 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 Y1y3f+JE}uyB>(^b07*qoM6N<$f^K&M2><{9 literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/images/intro.png b/modules/viz/tutorials/images/intro.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2dc1aa4c3d2d571e32953b813f8db890178a42 GIT binary patch literal 1145 zcmeAS@N?(olHy`uVBq!ia0vp^Q9xY5!3HFY&OEheU|@0Zba4!+xb^myuZKvY%<+%U zH#EPw_f1GvDQkDD3wK?B}Pa%caL3n|pKa)za_fKa8xc&#yC4E9rpAvGatwY1o7otOW)?-6EE1iy^x_4cUcbLWy&snyUL?O~re)v+b8G$C9Qr5J zo{Oa}{As^w<$dqY%e|a0=_g`n@gOWv)&QC`Qh`s3q^eZDfQtL`-0 zTuo|NF7@?u$ZiIIQ`^|Wwi#`ob}kQRI(qE>nT%-P?*1vx`A08h_-O6CoA*juQoP^$ zbl>Hhr?jd*|5JW@`~B2piR6+UPdF^+`t8hnZWpn3!;6fVqWEg&!%x0eb?P7f++DJB zUEiuz=K})+1!LFl_dBb*edX7G%&XR}6;1x}x#pzxx0E?~dta$-Tkfp$UswNh?#p8r z?MmwxK6;e2^WKdsD${Pw*z{>~(p+cz>YJM1uCALu-%J1Byyd&SRRdXNIvfvE#i@FVsZeUc7wUyXLD}x4uu>KGSt+Zt~psH7!Q+!6K~z z&zMaXF!nO=W;if2UTAP@U^7|J$dKWn?7%E_!GXbKf#3p0pd5qL1&#|qIVPw83sePA z5UgdhSyIm3TVc#4Y>mmxU)U6~r|!DjaL%M?+xa(Zn&iBiPHg|ZO~dRq*XEnAesJrF zFL>MH_tmtL_pP@e&xM9#E155d>F4c`xK;DZVAjGNdpB2x-8K}vpvG{vPnN0V)s3{{ zkGxg4{JbESwCV2YiK+{X8+OM@S|@z7_`cA%bxkb)*}mi))$)aBl|Bb|R6a;J!+YwK zRr24$@@7l+T(O(4a{Rtj9z7M&H{bYzb^FKRS zKhKzcmU{jC#nd}??%DEdg|{9)?{l9mYUkvRxl1bxuP1)ByLBqwVb=faYA=r(FSnPB zvOFs>m+#E9@Ape1cJZ3*F-YSt3ahV9KYsk<*?%|Yir#mZz8jnKMcwTWH}}3D?vT(X zGiuURw;X=R;IeF@Wc1vNtgImmyraXXoOpcW?a4{&gOl!gch>oGU5eYgTe~DWM4f_m><= literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/launching_viz/images/window_demo.png b/modules/viz/tutorials/launching_viz/images/window_demo.png new file mode 100644 index 0000000000000000000000000000000000000000..b853fe29da9b03ce7e606dae6aa743e3822df2df GIT binary patch literal 7519 zcmeHLi&v8A)~C~Sn@Z1|&eU`f&rGIsj<-@11(l{|GBR+o)GW~~l}y1DK@pXi>Eg_k z+IUR?sqw;i&l{$A8S_&^1xi9xKq^E6L{dUT0Y93v*7qNLYn`*!yz5=>yWaimXFb2Y zpZ)G<@83_~BK&uLyzgTG0I(Bw>gyl?;4cjTzy|8p%@&Cl=QP>!`Ura*c7Chn%GetH zqvd;V$~PBM&LzgCq(&vj08p4jbc{3hYH~~r274_rMYFNb4*)o@2>bf0^Jx^dn0P-H z^_6^4;;m^QcFFU%ea^BwW_P*p7UXaL`2OLMZChXNF24Q6S0hN*y2p37I&J##kju=^ z-ylOqldD3yzeuQgcR1DvDG_?F4GYDkcJ8I+k72;yxO8Pq zm&8x5&@Kyi^=iAh-ibIqsxiS|nsjm?>CON@d_AX0PU_L+Z3F=H*#gs2Q?*2c!eCsm zSZpbc7N}$8k=l?*BwKl-FmkOu5}rRljTct?aCI)bi^jO=es6W5YpjrJ4Mh{J|RVYP}L@ z?6%r3|BQrO$hxK6I*j#^m|U2^;Y5*m-T&2OB^ycqU2o2(^z4C#d@>F>jaN^y)zn)X*R>1R&^Nd7?5(zC|)To)`p+i!by zooQ<5^j`z^_P^+u9CPm?>T_VRi(n{}cKi12^ChIWH`OB}r?X4~$^Bi3$>yJ;0DxCB z9jTh$?$x7xl)=Hl^O~M{+i6hu>(JJ#!^>-HPb>;n%W5Glv~RBDTvKD?jAZyP0Dymc zTU(*hsO6wL5+(S&&DVsUaA74nHa>J(icB5nOw2ZDKx?h+g#O8SZtcZLeJDDiuO?|? zp}w~AG!;Qd1P9lsz-S@n-gdyTsbvlHJ|>^|S8{wa80`kkb1y}>QyKe@Oe)SR@L&aw z>F+yQi57;HFW)=Yr6hpPgXI%J;bfTA0_1_LnmlN8sr7~ks@6Qex&h#Y;2Y#rAx7Nwq$Wqmfb%@| z<_vk)M9MqL@p!zm)wn0GGH%=xUfYFGf`i4Zg{r6s-7h4z^FUm>$vpiTY@+yY_lBhJ z(|deOKWuNo%5%@q;nh5QxH}A)%2SL*O!TQ4nTB_thDQ4U=@M1L?b!AsoHQQ<{hYj8 z%i*#dpoihu*(6L4F3@lFMP7^t5Y;FNqzk=!uc3wYz)9N13Oj1&yvRE>Tbbxk*NN6# zudZ>MWE`UUctKaYN@QUU;biD~QyTkxV-4J(|&LZiv3xam7pW zT3kE&PCziw6giV$QqF^6I-Qy_2AM61DyQ8-)^#fkF=WQLh09`vv4%+|nW0C>8Ib~C z1|)~{YVLK0FL&C*adn*gzQ#FtAo!rrKHDv9nilKhqeOS5e<{Y74b$43 zHAZEFLYEH9XT-T3u)_9l3WPTaSU0>zQoua}4RK{T!e}=HQs8ZvElAe!1=WI5_I*!y z!E5F9^3^u2I}|keKVAhXU>w3*_I>B7GM=YS@hskU;9PJOCmC;>aV_gD%Yoi{<4OqB z)NiE8B35x^h0@M?rGJksyAKu6k`gnsB&Ts7z1A6)X28;>i1KyQFDmz%JC?uX(CFv@ zWG19;$6QwpNSL8lG<)pbxo7D&x!*yQYyCRVF1Uj>NTts)ZHZY~Z;u4~r4H_CZCa>2 z7u=dz9Gd*<_tVA2p{*@oR-3X?QX?q#3T#cj;l0JWAy)DHdU1(=*j_k~QBd#HF#GBe z->K=08;tr@lb=()U>M06UphQmSKy(jBxR!k-)TH5UZiQ=8(PEIN#%r*w`ODD{?Ov^VIoTqTpjiO{8Tamh2noIYV6`pH(^7yeQBH17d zjdm+Nuy`aq<;Cs2dBgjqq6{rt!61`*dX+jiqrh5*t;-wh#6qy~(}BGa3Fr3LJJ zlLV2o zIUiGiodf*d@u>ZpSTrPMdF-Kh&{&T)#@S2lSnxWYaXDD>Y}6Ke9oUQw=g2VY!x* z0?9l-;kVG`Z1ce7r(NW-%X{+2UG;F80ieb2+o?ubDLR2D@Q)dUPgVGNU6CO!`FjPjaZQH9>eutE>77 zn68M|PTxhGabt~tpR_wLBhAIA2$kP@QKzl03*ki*IfOR@$rnK|cg~ZA7}bgL`*Oc% zPjgCH${d1om9%om(5Z?jm6%KHO>srpJ#R~vy0)isJg*nbaNM=;_w?AKFvQF(1+pXh zan;qKPXWCr8sLcb;qG8qnZm=mtZsZq2@f$8=OCqMe^(P^SeIvHb6n~SR^335%JFhb zOk4+IN4D)3dJM=YexX&R2o%Z$;yJlEMSJXv1yiHl_9k{0l2-1i=5N(1rUedrbMAyq zw#49{hUPO$W22%zuXyog0n3i3s2{UzQA<}>dN#D6KC=mSvf?bGKBu*GIBTT=1Y(8G ztp79*%U1_J`^H)w9n(&Bckuy13T9VFwRz0CF`Fplm?g*D$qbJ!rzWVL{E9mF`lcbOcX>+X2G75Z^u{%^ z(}V>}Pc1%QVjKB&5fqxSbdP*6u@em6Oc1r&($rE#l=Q%}Em^Wdgnq6$!Vf|bV|BLX zE9L9En#L|Q!t%3#iE~UOH*CyAWrOnAhY^YAnTJql8@Ye^%Cm0W)%C&v+R|?nv8b5! zy$~bmsC5(E1H}fB8SvVK?t78J!G4QBIp(c4(3T3Zpkx~JwEH9)+>_GC^eM@dz6oD_I7lJB7|>3rro)pLChX8=wU{>6(1Y16 zoZGr))q;Coshy;ajk*$!jYpKE8s})Utrc0j)73*xs+CtB)}+BpOJ&2N2(q+prjWGG z3`Jp@iE9aOGH*C}zsW-_W8=w{(_W=@@Pf+JX>Y=f{Mk0+WTGi5YyO=WPbuEj#dc}| zov*RZ^j%NBx^yes?&e??nBSWr8zmOF2R<_{J1g4YwYsFxzWe&{PS=}gvFP2RwM{QaN`FHh`!0)?7q{bf{| zse_UIXD#H*_lMMXs(>I6J4 zhTw^qU?7n;)wR=h!OGR;Yrf-E^|21o?4L8e4q&=RCl+gXDsg^Z?^*!C%%v6?9K!SI zSs$)`8l2{mvdG?QQ52r-QG^C{xE@iVAa za;Pn3Hnlh7@Va6P?E!Xk1x0tyL7r2R`Gu=#VK9R`4Q6#IWo1=S%6501s*5wzv(|!B z9iL{vkbo@M;FER(O__pST+`cL*iVNe1+dt)F~106O1$g- zKzm+$QmvD-&E%vxjo*W@%382psyTs@b>D8)+GZu=*UPQ@9M(M*G0&L+NPAdyfem3O zz=iGI6Rp@qDwHtaOq>adS+67y4w{ExXL|<0k>*5bk*#-z&Gl3l$Zkk{9A08G`b(A{ zTX{Hp4#Cy?YQ~Mmf(|jg!fuyC6X9N8Z{Oh<+jH149(lQdx=v8?i~xy99;-On?aSzK3OQ(${ zQY$6Gd@!y{jKTEiik+OsP+)3xZP`m)0fOEe(8iguyNp-inVp6?GEbF~=Y>FWW4A$d zHC#)XaK>Kh0cRdTbO<44*@o6Fh5hdW3}n5eP+Lx1n$C=5LtL3I3hP++U({4=6KBF9 zqHIrw-l@97M|qnd)kK!r#bFGmW>&}=4!dXOq!WG*BYGHFertK_HiE0|D79B!!(D4P z^0f{zJkU(`61^F`F~O9r}{?SXbDf7653^v(;Jpi2xVdp>fw^o-DF?ns`c ze`#|5^g&Oq$fI>iAS)_*8C-N?baV={(NLc3Ir!T2O!& znHw(+m<&Vh>mXXM(L~TY^!*asNW zHG;85)5TEOCE0X*6FjJD;k;z}i)XQAC$dkLw!!!+l*&kT>3r$w-R3b?*)T3~dv+N- z*8lpG-bg2e88?*E5I?~eO7dSQ4!y# zxubCVTxfD^Dy0Eea1&0Ax9iKfgX~cy;C>f2=>#~@a)+sWu8BL3V0>#k9PCz?MU(!rFp=D;XFl(I}}Qq{3(#!>UZv< zAb7f#^AK36Zip1>mhawZq&>i`bO|bQcplUptJEFoJvoCLT8sVyuZFt;bFBB9%EK!@ z1$?(QFemv$wKZ07)+Q$7J+}Ghs!$7;lbK*~dE1{_=b+7SR4++|@${~q`sEmR`tSdy)U z=sXZi=Y3+qTL}Mvw;Mq(=yJTc0r2GofhD&Bs>sgPZ}A$96ae_HLYcyh{V+s6`oTVK zSqK2|vphfa|7?x_Fc={?)C2&0NezhDVDZTxqVj+1<30?R%PhY8d*bc} zSo*KafPV(ZJ9=qd^1l<_sH>tl?io&dnUL44hK{PGX~3r;>f A?*IS* literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/launching_viz/launching_viz.markdown b/modules/viz/tutorials/launching_viz/launching_viz.markdown new file mode 100644 index 000000000..9319251a2 --- /dev/null +++ b/modules/viz/tutorials/launching_viz/launching_viz.markdown @@ -0,0 +1,64 @@ +Launching Viz {#tutorial_launching_viz} +============= + +Goal +---- + +In this tutorial you will learn how to + +- Open a visualization window. +- Access a window by its name. +- Start event loop. +- Start event loop for a given amount of time. + +Code +---- + +You can download the code from [here ](https://github.com/opencv/opencv_contrib/tree/master/modules/viz/samples/launching_viz.cpp). +@include viz/samples/launching_viz.cpp + +Explanation +----------- + +Here is the general structure of the program: + +- Create a window. + @code{.cpp} + /// Create a window + viz::Viz3d myWindow("Viz Demo"); + @endcode +- Start event loop. This event loop will run until user terminates it by pressing **e**, **E**, + **q**, **Q**. + @code{.cpp} + /// Start event loop + myWindow.spin(); + @endcode +- Access same window via its name. Since windows are implicitly shared, **sameWindow** is exactly + the same with **myWindow**. If the name does not exist, a new window is created. + @code{.cpp} + /// Access window via its name + viz::Viz3d sameWindow = viz::getWindowByName("Viz Demo"); + @endcode +- Start a controlled event loop. Once it starts, **wasStopped** is set to false. Inside the while + loop, in each iteration, **spinOnce** is called to prevent event loop from completely stopping. + Inside the while loop, user can execute other statements including those which interact with the + window. + @code{.cpp} + /// Event loop is over when pressed q, Q, e, E + /// Start event loop once for 1 millisecond + sameWindow.spinOnce(1, true); + while(!sameWindow.wasStopped()) + { + /// Interact with window + + /// Event loop for 1 millisecond + sameWindow.spinOnce(1, true); + } + @endcode + +Results +------- + +Here is the result of the program. + +![](images/window_demo.png) diff --git a/modules/viz/tutorials/table_of_content_viz.markdown b/modules/viz/tutorials/table_of_content_viz.markdown new file mode 100644 index 000000000..fae1396de --- /dev/null +++ b/modules/viz/tutorials/table_of_content_viz.markdown @@ -0,0 +1,42 @@ +OpenCV Viz {#tutorial_table_of_content_viz} +========== + +- @subpage tutorial_launching_viz + + *Compatibility:* \> OpenCV 3.0.0 + + *Author:* Ozan Tonkal + + You will learn how to launch a viz window. + +- @subpage tutorial_widget_pose + + *Compatibility:* \> OpenCV 3.0.0 + + *Author:* Ozan Tonkal + + You will learn how to change pose of a widget. + +- @subpage tutorial_transformations + + *Compatibility:* \> OpenCV 3.0.0 + + *Author:* Ozan Tonkal + + You will learn how to transform between global and camera frames. + +- @subpage tutorial_creating_widgets + + *Compatibility:* \> OpenCV 3.0.0 + + *Author:* Ozan Tonkal + + You will learn how to create your own widgets. + +- @subpage tutorial_histo3D + + *Compatibility:* \> OpenCV 3.0.0 + + *Author:* Laurent Berger + + You will learn how to plot a 3D histogram. diff --git a/modules/viz/tutorials/transformations/images/camera_view_point.png b/modules/viz/tutorials/transformations/images/camera_view_point.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ac5b0f0de84aa88561e44b635c0b73fd68dab0 GIT binary patch literal 18439 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 literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/transformations/images/global_view_point.png b/modules/viz/tutorials/transformations/images/global_view_point.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6de2c1a1fa36ad56ad6ffb679eb20d5bf77609 GIT binary patch literal 13767 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 QpoJpyQt?HJgi-MS0}6qlQ~&?~ literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/transformations/transformations.markdown b/modules/viz/tutorials/transformations/transformations.markdown new file mode 100644 index 000000000..8bdd9ba3b --- /dev/null +++ b/modules/viz/tutorials/transformations/transformations.markdown @@ -0,0 +1,88 @@ +Transformations {#tutorial_transformations} +=============== + +Goal +---- + +In this tutorial you will learn how to + +- How to use makeTransformToGlobal to compute pose +- How to use makeCameraPose and Viz3d::setViewerPose +- How to visualize camera position by axes and by viewing frustum + +Code +---- + +You can download the code from [here ](https://github.com/opencv/opencv_contrib/tree/master/modules/viz/samples/transformations.cpp). +@include viz/samples/transformations.cpp + +Explanation +----------- + +Here is the general structure of the program: + +- Create a visualization window. + @code{.cpp} + /// Create a window + viz::Viz3d myWindow("Transformations"); + @endcode +- Get camera pose from camera position, camera focal point and y direction. + @code{.cpp} + /// Let's assume camera has the following properties + Point3f cam_pos(3.0f,3.0f,3.0f), cam_focal_point(3.0f,3.0f,2.0f), cam_y_dir(-1.0f,0.0f,0.0f); + + /// We can get the pose of the cam using makeCameraPose + Affine3f cam_pose = viz::makeCameraPose(cam_pos, cam_focal_point, cam_y_dir); + @endcode +- Obtain transform matrix knowing the axes of camera coordinate system. + @code{.cpp} + /// We can get the transformation matrix from camera coordinate system to global using + /// - makeTransformToGlobal. We need the axes of the camera + Affine3f transform = viz::makeTransformToGlobal(Vec3f(0.0f,-1.0f,0.0f), Vec3f(-1.0f,0.0f,0.0f), Vec3f(0.0f,0.0f,-1.0f), cam_pos); + @endcode +- Create a cloud widget from bunny.ply file + @code{.cpp} + /// Create a cloud widget. + Mat bunny_cloud = cvcloud_load(); + viz::WCloud cloud_widget(bunny_cloud, viz::Color::green()); + @endcode +- Given the pose in camera coordinate system, estimate the global pose. + @code{.cpp} + /// Pose of the widget in camera frame + Affine3f cloud_pose = Affine3f().translate(Vec3f(0.0f,0.0f,3.0f)); + /// Pose of the widget in global frame + Affine3f cloud_pose_global = transform * cloud_pose; + @endcode +- If the view point is set to be global, visualize camera coordinate frame and viewing frustum. + @code{.cpp} + /// Visualize camera frame + if (!camera_pov) + { + viz::WCameraPosition cpw(0.5); // Coordinate axes + viz::WCameraPosition cpw_frustum(Vec2f(0.889484, 0.523599)); // Camera frustum + myWindow.showWidget("CPW", cpw, cam_pose); + myWindow.showWidget("CPW_FRUSTUM", cpw_frustum, cam_pose); + } + @endcode +- Visualize the cloud widget with the estimated global pose + @code{.cpp} + /// Visualize widget + myWindow.showWidget("bunny", cloud_widget, cloud_pose_global); + @endcode +- If the view point is set to be camera's, set viewer pose to **cam_pose**. + @code{.cpp} + /// Set the viewer pose to that of camera + if (camera_pov) + myWindow.setViewerPose(cam_pose); + @endcode + +Results +------- + +-# Here is the result from the camera point of view. + + ![](images/camera_view_point.png) + +-# Here is the result from global point of view. + + ![](images/global_view_point.png) diff --git a/modules/viz/tutorials/widget_pose/images/widgetpose.png b/modules/viz/tutorials/widget_pose/images/widgetpose.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8a5937f9c3e18507acdefc758102919c2efdb8 GIT binary patch literal 40892 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 LUA9izJp6wE?|M7Z literal 0 HcmV?d00001 diff --git a/modules/viz/tutorials/widget_pose/widget_pose.markdown b/modules/viz/tutorials/widget_pose/widget_pose.markdown new file mode 100644 index 000000000..e161ab972 --- /dev/null +++ b/modules/viz/tutorials/widget_pose/widget_pose.markdown @@ -0,0 +1,85 @@ +Pose of a widget {#tutorial_widget_pose} +================ + +Goal +---- + +In this tutorial you will learn how to + +- Add widgets to the visualization window +- Use Affine3 to set pose of a widget +- Rotating and translating a widget along an axis + +Code +---- + +You can download the code from [here ](https://github.com/opencv/opencv_contrib/tree/master/modules/viz/samples/widget_pose.cpp). +@include viz/samples/widget_pose.cpp + +Explanation +----------- + +Here is the general structure of the program: + +- Create a visualization window. + @code{.cpp} + /// Create a window + viz::Viz3d myWindow("Coordinate Frame"); + @endcode +- Show coordinate axes in the window using CoordinateSystemWidget. + @code{.cpp} + /// Add coordinate axes + myWindow.showWidget("Coordinate Widget", viz::WCoordinateSystem()); + @endcode +- Display a line representing the axis (1,1,1). + @code{.cpp} + /// Add line to represent (1,1,1) axis + viz::WLine axis(Point3f(-1.0f,-1.0f,-1.0f), Point3f(1.0f,1.0f,1.0f)); + axis.setRenderingProperty(viz::LINE_WIDTH, 4.0); + myWindow.showWidget("Line Widget", axis); + @endcode +- Construct a cube. + @code{.cpp} + /// Construct a cube widget + viz::WCube cube_widget(Point3f(0.5,0.5,0.0), Point3f(0.0,0.0,-0.5), true, viz::Color::blue()); + cube_widget.setRenderingProperty(viz::LINE_WIDTH, 4.0); + myWindow.showWidget("Cube Widget", cube_widget); + @endcode +- Create rotation matrix from rodrigues vector + @code{.cpp} + /// Rotate around (1,1,1) + rot_vec.at(0,0) += CV_PI * 0.01f; + rot_vec.at(0,1) += CV_PI * 0.01f; + rot_vec.at(0,2) += CV_PI * 0.01f; + + ... + + Mat rot_mat; + Rodrigues(rot_vec, rot_mat); + @endcode +- Use Affine3f to set pose of the cube. + @code{.cpp} + /// Construct pose + Affine3f pose(rot_mat, Vec3f(translation, translation, translation)); + myWindow.setWidgetPose("Cube Widget", pose); + @endcode +- Animate the rotation using wasStopped and spinOnce + @code{.cpp} + while(!myWindow.wasStopped()) + { + ... + + myWindow.spinOnce(1, true); + } + @endcode + +Results +------- + +Here is the result of the program. + +\htmlonly +

+\endhtmlonly