From 349e0ece9300b8cb6f1bedfbcd2ab828f20f147f Mon Sep 17 00:00:00 2001 From: Vladislav Vinogradov Date: Thu, 13 Jan 2011 13:48:58 +0000 Subject: [PATCH] added docs for GPU Filter Engine --- doc/gpu.tex | 318 ------------------------ doc/gpu_features2d.tex | 317 +++++++++++++++++++++++ doc/gpu_image_filtering.tex | 283 +++++++++++++++++++++ doc/imgproc_image_filtering.tex | 2 +- doc/opencv.pdf | Bin 6808536 -> 6896147 bytes doc/opencvref_body.tex | 2 + modules/gpu/include/opencv2/gpu/gpu.hpp | 2 +- modules/gpu/src/filtering.cpp | 4 +- 8 files changed, 606 insertions(+), 322 deletions(-) create mode 100644 doc/gpu_features2d.tex create mode 100644 doc/gpu_image_filtering.tex diff --git a/doc/gpu.tex b/doc/gpu.tex index 6fff09f544..ee6af3e8dc 100644 --- a/doc/gpu.tex +++ b/doc/gpu.tex @@ -556,322 +556,4 @@ Returns block descriptors computed for the whole image. \end{description}} \end{description} -\section{Feature detection and description} - -\cvclass{gpu::SURFParams\_GPU} -Various SURF algorithm parameters. - -\begin{lstlisting} -struct SURFParams_GPU -{ - SURFParams_GPU() : - threshold(0.1f), - nOctaves(4), - nIntervals(4), - initialScale(2.f), - - l1(3.f/1.5f), - l2(5.f/1.5f), - l3(3.f/1.5f), - l4(1.f/1.5f), - edgeScale(0.81f), - initialStep(1), - - extended(true), - - featuresRatio(0.01f) - { - } - - //! The interest operator threshold - float threshold; - //! The number of octaves to process - int nOctaves; - //! The number of intervals in each octave - int nIntervals; - //! The scale associated with the first interval of the first octave - float initialScale; - - //! mask parameter l_1 - float l1; - //! mask parameter l_2 - float l2; - //! mask parameter l_3 - float l3; - //! mask parameter l_4 - float l4; - //! The amount to scale the edge rejection mask - float edgeScale; - //! The initial sampling step in pixels. - int initialStep; - - //! True, if generate 128-len descriptors, false - 64-len descriptors - bool extended; - - //! max features = featuresRatio * img.size().srea() - float featuresRatio; -}; -\end{lstlisting} - -\cvclass{gpu::SURF\_GPU} -Class for extracting Speeded Up Robust Features from an image. - -\begin{lstlisting} -class SURF_GPU : public SURFParams_GPU -{ -public: - //! returns the descriptor size in float's (64 or 128) - int descriptorSize() const; - - //! upload host keypoints to device memory - static void uploadKeypoints(const vector& keypoints, - GpuMat& keypointsGPU); - //! download keypoints from device to host memory - static void downloadKeypoints(const GpuMat& keypointsGPU, - vector& keypoints); - - //! download descriptors from device to host memory - static void downloadDescriptors(const GpuMat& descriptorsGPU, - vector& descriptors); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - GpuMat& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, GpuMat& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - void operator()(const GpuMat& img, const GpuMat& mask, - std::vector& keypoints, - std::vector& descriptors, - bool useProvidedKeypoints = false, - bool calcOrientation = true); - - GpuMat sum; - GpuMat sumf; - - GpuMat mask1; - GpuMat maskSum; - - GpuMat hessianBuffer; - GpuMat maxPosBuffer; - GpuMat featuresBuffer; -}; -\end{lstlisting} - -The class \texttt{SURF\_GPU} implements Speeded Up Robust Features descriptor. There is fast multi-scale Hessian keypoint detector that can be used to find the keypoints (which is the default option), but the descriptors can be also computed for the user-specified keypoints. Supports only 8 bit grayscale images. - -The class \texttt{SURF\_GPU} can store results to GPU and CPU memory and provides static functions to convert results between CPU and GPU version (\texttt{uploadKeypoints}, \texttt{downloadKeypoints}, \texttt{downloadDescriptors}). CPU results has the same format as \hyperref[cv.class.SURF]{cv::SURF} results. GPU results is stored to \texttt{GpuMat}. \texttt{keypoints} matrix is one row matrix with \texttt{CV\_32FC6} type. It contains 6 float values per feature: \texttt{x, y, size, response, angle, octave}. \texttt{descriptors} matrix is \texttt{nFeatures} x \texttt{descriptorSize} matrix with \texttt{CV\_32FC1} type. - -The class \texttt{SURF\_GPU} uses some buffers and provides access to it. All buffers can be safely released between function calls. - -\cvclass{gpu::BruteForceMatcher\_GPU} -Brute-force descriptor matcher. For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. This descriptor matcher supports masking permissible matches between descriptor sets. - -\begin{lstlisting} -template -class BruteForceMatcher_GPU -{ -public: - // Add descriptors to train descriptor collection. - void add(const std::vector& descCollection); - - // Get train descriptors collection. - const std::vector& getTrainDescriptors() const; - - // Clear train descriptors collection. - void clear(); - - // Return true if there are not train descriptors in collection. - bool empty() const; - - // Return true if the matcher supports mask in match methods. - bool isMaskSupported() const; - - void matchSingle(const GpuMat& queryDescs, const GpuMat& trainDescs, - GpuMat& trainIdx, GpuMat& distance, - const GpuMat& mask = GpuMat()); - - static void matchDownload(const GpuMat& trainIdx, - const GpuMat& distance, std::vector& matches); - - void match(const GpuMat& queryDescs, const GpuMat& trainDescs, - std::vector& matches, const GpuMat& mask = GpuMat()); - - void makeGpuCollection(GpuMat& trainCollection, GpuMat& maskCollection, - const vector& masks = std::vector()); - - void matchCollection(const GpuMat& queryDescs, - const GpuMat& trainCollection, - GpuMat& trainIdx, GpuMat& imgIdx, GpuMat& distance, - const GpuMat& maskCollection); - - static void matchDownload(const GpuMat& trainIdx, GpuMat& imgIdx, - const GpuMat& distance, std::vector& matches); - - void match(const GpuMat& queryDescs, std::vector& matches, - const std::vector& masks = std::vector()); - - void knnMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, - GpuMat& trainIdx, GpuMat& distance, GpuMat& allDist, int k, - const GpuMat& mask = GpuMat()); - - static void knnMatchDownload(const GpuMat& trainIdx, - const GpuMat& distance, std::vector< std::vector >& matches, - bool compactResult = false); - - void knnMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, - std::vector< std::vector >& matches, int k, - const GpuMat& mask = GpuMat(), bool compactResult = false); - - void knnMatch(const GpuMat& queryDescs, - std::vector< std::vector >& matches, int knn, - const std::vector& masks = std::vector(), - bool compactResult = false ); - - void radiusMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, - GpuMat& trainIdx, GpuMat& nMatches, GpuMat& distance, - float maxDistance, const GpuMat& mask = GpuMat()); - - static void radiusMatchDownload(const GpuMat& trainIdx, - const GpuMat& nMatches, const GpuMat& distance, - std::vector< std::vector >& matches, - bool compactResult = false); - - void radiusMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, - std::vector< std::vector >& matches, float maxDistance, - const GpuMat& mask = GpuMat(), bool compactResult = false); - - void radiusMatch(const GpuMat& queryDescs, - std::vector< std::vector >& matches, float maxDistance, - const std::vector& masks = std::vector(), - bool compactResult = false); - -private: - std::vector trainDescCollection; -}; -\end{lstlisting} - -The class \texttt{BruteForceMatcher\_GPU} has the similar interface with class \hyperref[cv.class.DescriptorMatcher]{cv::DescriptorMatcher}. It has two groups of match methods: for matching descriptors of one image with other image or with image set. Also all functions have alternative: save results to GPU memory or to CPU memory. \texttt{BruteForceMatcher\_GPU} is templated on the distance metric as \hyperref[cv.class.BruteForceMatcher]{cv::BruteForceMatcher}, but supports only \texttt{L1} and \texttt{L2} distance types. - -\cvfunc{gpu::BruteForceMatcher\_GPU::match}\label{cppfunc.gpu.BruteForceMatcher.match} -Find the best match for each descriptor from a query set with train descriptors. This function is equivalent of \cvCppCross{DescriptorMatcher::match}. -\cvdefCpp{ -void match(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector\& matches, \par const GpuMat\& mask = GpuMat()); -} -\cvdefCpp{ -void match(const GpuMat\& queryDescs, \par std::vector\& matches, \par const std::vector\& masks = std::vector()); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::matchSingle}\label{cppfunc.gpu.BruteForceMatcher.matchSingle} -Find one best match for each query descriptor. Results stored to GPU memory. -\cvdefCpp{ -void matchSingle(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& distance, \par const GpuMat\& mask = GpuMat()); -} -\begin{description} -\cvarg{queryDescs} {Query set of descriptors.} -\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} -\cvarg{trainIdx} {One row \texttt{CV\_32SC1} matrix. Will contain best train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} -\cvarg{distance} {One row \texttt{CV\_32FC1} matrix. Will contain best distance for each query. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} -\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} -\end{description} - -\cvfunc{gpu::BruteForceMatcher\_GPU::matchCollection}\label{cppfunc.gpu.BruteForceMatcher.matchCollection} -Find one best match for each query descriptor from train collection. Results stored to GPU memory. -\cvdefCpp{ -void matchCollection(const GpuMat\& queryDescs, \par const GpuMat\& trainCollection, \par GpuMat\& trainIdx, \par GpuMat\& imgIdx, \par GpuMat\& distance, \par const GpuMat\& maskCollection); -} -\begin{description} -\cvarg{queryDescs} {Query set of descriptors.} -\cvarg{trainCollection} {\texttt{GpuMat} with train collection. It can be obtained from train descriptors collection that was set using \texttt{add} method by \hyperref[cppfunc.gpu.BruteForceMatcher.makeGpuCollection]{makeGpuCollection}. Or it can contain user defined collection. It must be one row matrix, each element is a \texttt{DevMem2D} that points to one train descriptors matrix (matrix must have \texttt{CV\_32FC1} type).} -\cvarg{trainIdx} {One row \texttt{CV\_32SC1} matrix. Will contain best train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} -\cvarg{imgIdx} {One row \texttt{CV\_32SC1} matrix. Will contain image train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} -\cvarg{distance} {One row \texttt{CV\_32FC1} matrix. Will contain best distance for each query. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} -\cvarg{maskCollection}{\texttt{GpuMat} with set of masks. It can be obtained from \texttt{std::vector} by \hyperref[cppfunc.gpu.BruteForceMatcher.makeGpuCollection]{makeGpuCollection}. Or it can contain user defined mask set. It must be empty matrix or one row matrix, each element is a \texttt{PtrStep} that points to one mask (must have \texttt{CV\_8UC1} type).} -\end{description} - -\cvfunc{gpu::BruteForceMatcher\_GPU::makeGpuCollection}\label{cppfunc.gpu.BruteForceMatcher.makeGpuCollection} -Make gpu collection of train descriptors and masks in suitable format for \hyperref[cppfunc.gpu.BruteForceMatcher.matchCollection]{matchCollection} function. -\cvdefCpp{ -void makeGpuCollection(GpuMat\& trainCollection, \par GpuMat\& maskCollection, \par const vector\& masks = std::vector()); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::matchDownload}\label{cppfunc.gpu.BruteForceMatcher.matchDownload} -Download \texttt{trainIdx}, \texttt{imgIdx} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.matchSingle]{matchSingle} or \hyperref[cppfunc.gpu.BruteForceMatcher.matchCollection]{matchCollection} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. -\cvdefCpp{ -static void matchDownload(const GpuMat\& trainIdx, \par const GpuMat\& distance, \par std::vector\& matches); -} -\cvdefCpp{ -static void matchDownload(const GpuMat\& trainIdx, \par GpuMat\& imgIdx, \par const GpuMat\& distance, \par std::vector\& matches); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatch}\label{cppfunc.gpu.BruteForceMatcher.knnMatch} -Find the k best matches for each descriptor from a query set with train descriptors. Found k (or less if not possible) matches are returned in distance increasing order. This function is equivalent of \cvCppCross{DescriptorMatcher::knnMatch}. -\cvdefCpp{ -void knnMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector< std::vector >\& matches, \par int k, \par const GpuMat\& mask = GpuMat(), \par bool compactResult = false); -} -\cvdefCpp{ -void knnMatch(const GpuMat\& queryDescs, \par std::vector< std::vector >\& matches, \par int k, \par const std::vector\& masks = std::vector(), \par bool compactResult = false ); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatch}\label{cppfunc.gpu.BruteForceMatcher.knnMatchSingle} -Find the k best matches for each descriptor from a query set with train descriptors. Found k (or less if not possible) matches are returned in distance increasing order. Results stored to GPU memory. -\cvdefCpp{ -void knnMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& distance, \par GpuMat\& allDist, \par int k, \par const GpuMat\& mask = GpuMat()); -} -\begin{description} -\cvarg{queryDescs} {Query set of descriptors.} -\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} -\cvarg{trainIdx} {Matrix \texttt{nQueries} x \texttt{k} with type \texttt{CV\_32SC1}. \texttt{trainIdx.at(queryIdx, i)} will contain index of i'th best trains. If some query descriptor masked out in \texttt{mask} it will contain -1.} -\cvarg{distance} {Matrix \texttt{nQuery} x \texttt{k} with type \texttt{CV\_32FC1}. Will contain distance for each query and i'th best trains. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} -\cvarg{allDist} {Buffer to store all distances between query descriptors and train descriptors. It have size \texttt{nQuery} x \texttt{nTrain} and \texttt{CV\_32F} type. \texttt{allDist.at(queryIdx, trainIdx)} will contain \texttt{FLT\_MAX}, if \texttt{trainIdx} is one from k best, otherwise it will contain distance between \texttt{queryIdx} and \texttt{trainIdx} descriptors.} -\cvarg{k}{Count of best matches will be found per each query descriptor (or less if it's not possible).} -\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} -\end{description} - -\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatchDownload}\label{cppfunc.gpu.BruteForceMatcher.knnMatchDownload} -Download \texttt{trainIdx} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.knnMatchSingle]{knnMatch} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. If \texttt{compactResult} is true \texttt{matches} vector will not contain matches for fully masked out query descriptors. -\cvdefCpp{ -static void knnMatchDownload(const GpuMat\& trainIdx, \par const GpuMat\& distance, \par std::vector< std::vector >\& matches, \par bool compactResult = false); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatch}\label{cppfunc.gpu.BruteForceMatcher.radiusMatch} -Find the best matches for each query descriptor which have distance less than given threshold. Found matches are returned in distance increasing order. This function is equivalent of \cvCppCross{DescriptorMatcher::radiusMatch}. Works only on device with Compute Capability \texttt{>=} 1.1. -\cvdefCpp{ -void radiusMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector< std::vector >\& matches, \par float maxDistance, \par const GpuMat\& mask = GpuMat(), \par bool compactResult = false); -} -\cvdefCpp{ -void radiusMatch(const GpuMat\& queryDescs, \par std::vector< std::vector >\& matches, \par float maxDistance, \par const std::vector\& masks = std::vector(), \par bool compactResult = false); -} - -\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatch}\label{cppfunc.gpu.BruteForceMatcher.radiusMatchSingle} -Find the best matches for each query descriptor which have distance less than given threshold. Results stored to GPU memory. Results are not sorted by distance increasing order. Works only on device with Compute Capability \texttt{>=} 1.1. -\cvdefCpp{ -void radiusMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& nMatches, \par GpuMat\& distance, \par float maxDistance, \par const GpuMat\& mask = GpuMat()); -} -\begin{description} -\cvarg{queryDescs} {Query set of descriptors.} -\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} -\cvarg{trainIdx} {\texttt{trainIdx.at(queryIdx, i)} will contain i'th train index \newline\texttt{(i < min(nMatches.at(0, queryIdx), trainIdx.cols)}. If \texttt{trainIdx} is empty, it will be created with size \texttt{nQuery} x \texttt{nTrain}. Or it can be allocated by user (it must have \texttt{nQuery} rows and \texttt{CV\_32SC1} type). Cols can be less than \texttt{nTrain}, but it can be that matcher won't find all matches, because it haven't enough memory to store results.} -\cvarg{nMatches} {\texttt{nMatches.at(0, queryIdx)} will contain matches count for \texttt{queryIdx}. Carefully, \texttt{nMatches} can be greater than \texttt{trainIdx.cols} - it means that matcher didn't find all matches, because it didn't have enough memory.} -\cvarg{distance} {\texttt{distance.at(queryIdx, i)} will contain i'th distance \newline\texttt{(i < min(nMatches.at(0, queryIdx), trainIdx.cols)}. If \texttt{trainIdx} is empty, it will be created with size \texttt{nQuery} x \texttt{nTrain}. Otherwise it must be also allocated by user (it must have the same size as \texttt{trainIdx} and \texttt{CV\_32FC1} type).} -\cvarg{maxDistance}{The threshold to found match distances.} -\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} -\end{description} - -\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatchDownload}\label{cppfunc.gpu.BruteForceMatcher.radiusMatchDownload} -Download \texttt{trainIdx}, \texttt{nMatches} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.radiusMatchSingle]{radiusMatch} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. If \texttt{compactResult} is true \texttt{matches} vector will not contain matches for fully masked out query descriptors. -\cvdefCpp{ -static void radiusMatchDownload(const GpuMat\& trainIdx, \par const GpuMat\& nMatches, \par const GpuMat\& distance, \par std::vector< std::vector >\& matches, \par bool compactResult = false); -} - \fi \ No newline at end of file diff --git a/doc/gpu_features2d.tex b/doc/gpu_features2d.tex new file mode 100644 index 0000000000..d6f928165e --- /dev/null +++ b/doc/gpu_features2d.tex @@ -0,0 +1,317 @@ +\section{Feature detection and description} + +\cvclass{gpu::SURFParams\_GPU} +Various SURF algorithm parameters. + +\begin{lstlisting} +struct SURFParams_GPU +{ + SURFParams_GPU() : + threshold(0.1f), + nOctaves(4), + nIntervals(4), + initialScale(2.f), + + l1(3.f/1.5f), + l2(5.f/1.5f), + l3(3.f/1.5f), + l4(1.f/1.5f), + edgeScale(0.81f), + initialStep(1), + + extended(true), + + featuresRatio(0.01f) + { + } + + //! The interest operator threshold + float threshold; + //! The number of octaves to process + int nOctaves; + //! The number of intervals in each octave + int nIntervals; + //! The scale associated with the first interval of the first octave + float initialScale; + + //! mask parameter l_1 + float l1; + //! mask parameter l_2 + float l2; + //! mask parameter l_3 + float l3; + //! mask parameter l_4 + float l4; + //! The amount to scale the edge rejection mask + float edgeScale; + //! The initial sampling step in pixels. + int initialStep; + + //! True, if generate 128-len descriptors, false - 64-len descriptors + bool extended; + + //! max features = featuresRatio * img.size().srea() + float featuresRatio; +}; +\end{lstlisting} + +\cvclass{gpu::SURF\_GPU} +Class for extracting Speeded Up Robust Features from an image. + +\begin{lstlisting} +class SURF_GPU : public SURFParams_GPU +{ +public: + //! returns the descriptor size in float's (64 or 128) + int descriptorSize() const; + + //! upload host keypoints to device memory + static void uploadKeypoints(const vector& keypoints, + GpuMat& keypointsGPU); + //! download keypoints from device to host memory + static void downloadKeypoints(const GpuMat& keypointsGPU, + vector& keypoints); + + //! download descriptors from device to host memory + static void downloadDescriptors(const GpuMat& descriptorsGPU, + vector& descriptors); + + void operator()(const GpuMat& img, const GpuMat& mask, + GpuMat& keypoints); + + void operator()(const GpuMat& img, const GpuMat& mask, + GpuMat& keypoints, GpuMat& descriptors, + bool useProvidedKeypoints = false, + bool calcOrientation = true); + + void operator()(const GpuMat& img, const GpuMat& mask, + std::vector& keypoints); + + void operator()(const GpuMat& img, const GpuMat& mask, + std::vector& keypoints, GpuMat& descriptors, + bool useProvidedKeypoints = false, + bool calcOrientation = true); + + void operator()(const GpuMat& img, const GpuMat& mask, + std::vector& keypoints, + std::vector& descriptors, + bool useProvidedKeypoints = false, + bool calcOrientation = true); + + GpuMat sum; + GpuMat sumf; + + GpuMat mask1; + GpuMat maskSum; + + GpuMat hessianBuffer; + GpuMat maxPosBuffer; + GpuMat featuresBuffer; +}; +\end{lstlisting} + +The class \texttt{SURF\_GPU} implements Speeded Up Robust Features descriptor. There is fast multi-scale Hessian keypoint detector that can be used to find the keypoints (which is the default option), but the descriptors can be also computed for the user-specified keypoints. Supports only 8 bit grayscale images. + +The class \texttt{SURF\_GPU} can store results to GPU and CPU memory and provides static functions to convert results between CPU and GPU version (\texttt{uploadKeypoints}, \texttt{downloadKeypoints}, \texttt{downloadDescriptors}). CPU results has the same format as \hyperref[cv.class.SURF]{cv::SURF} results. GPU results is stored to \texttt{GpuMat}. \texttt{keypoints} matrix is one row matrix with \texttt{CV\_32FC6} type. It contains 6 float values per feature: \texttt{x, y, size, response, angle, octave}. \texttt{descriptors} matrix is \texttt{nFeatures} x \texttt{descriptorSize} matrix with \texttt{CV\_32FC1} type. + +The class \texttt{SURF\_GPU} uses some buffers and provides access to it. All buffers can be safely released between function calls. + +\cvclass{gpu::BruteForceMatcher\_GPU} +Brute-force descriptor matcher. For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. This descriptor matcher supports masking permissible matches between descriptor sets. + +\begin{lstlisting} +template +class BruteForceMatcher_GPU +{ +public: + // Add descriptors to train descriptor collection. + void add(const std::vector& descCollection); + + // Get train descriptors collection. + const std::vector& getTrainDescriptors() const; + + // Clear train descriptors collection. + void clear(); + + // Return true if there are not train descriptors in collection. + bool empty() const; + + // Return true if the matcher supports mask in match methods. + bool isMaskSupported() const; + + void matchSingle(const GpuMat& queryDescs, const GpuMat& trainDescs, + GpuMat& trainIdx, GpuMat& distance, + const GpuMat& mask = GpuMat()); + + static void matchDownload(const GpuMat& trainIdx, + const GpuMat& distance, std::vector& matches); + + void match(const GpuMat& queryDescs, const GpuMat& trainDescs, + std::vector& matches, const GpuMat& mask = GpuMat()); + + void makeGpuCollection(GpuMat& trainCollection, GpuMat& maskCollection, + const vector& masks = std::vector()); + + void matchCollection(const GpuMat& queryDescs, + const GpuMat& trainCollection, + GpuMat& trainIdx, GpuMat& imgIdx, GpuMat& distance, + const GpuMat& maskCollection); + + static void matchDownload(const GpuMat& trainIdx, GpuMat& imgIdx, + const GpuMat& distance, std::vector& matches); + + void match(const GpuMat& queryDescs, std::vector& matches, + const std::vector& masks = std::vector()); + + void knnMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, + GpuMat& trainIdx, GpuMat& distance, GpuMat& allDist, int k, + const GpuMat& mask = GpuMat()); + + static void knnMatchDownload(const GpuMat& trainIdx, + const GpuMat& distance, std::vector< std::vector >& matches, + bool compactResult = false); + + void knnMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, + std::vector< std::vector >& matches, int k, + const GpuMat& mask = GpuMat(), bool compactResult = false); + + void knnMatch(const GpuMat& queryDescs, + std::vector< std::vector >& matches, int knn, + const std::vector& masks = std::vector(), + bool compactResult = false ); + + void radiusMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, + GpuMat& trainIdx, GpuMat& nMatches, GpuMat& distance, + float maxDistance, const GpuMat& mask = GpuMat()); + + static void radiusMatchDownload(const GpuMat& trainIdx, + const GpuMat& nMatches, const GpuMat& distance, + std::vector< std::vector >& matches, + bool compactResult = false); + + void radiusMatch(const GpuMat& queryDescs, const GpuMat& trainDescs, + std::vector< std::vector >& matches, float maxDistance, + const GpuMat& mask = GpuMat(), bool compactResult = false); + + void radiusMatch(const GpuMat& queryDescs, + std::vector< std::vector >& matches, float maxDistance, + const std::vector& masks = std::vector(), + bool compactResult = false); + +private: + std::vector trainDescCollection; +}; +\end{lstlisting} + +The class \texttt{BruteForceMatcher\_GPU} has the similar interface with class \hyperref[cv.class.DescriptorMatcher]{cv::DescriptorMatcher}. It has two groups of match methods: for matching descriptors of one image with other image or with image set. Also all functions have alternative: save results to GPU memory or to CPU memory. \texttt{BruteForceMatcher\_GPU} is templated on the distance metric as \hyperref[cv.class.BruteForceMatcher]{cv::BruteForceMatcher}, but supports only \texttt{L1} and \texttt{L2} distance types. + +\cvfunc{gpu::BruteForceMatcher\_GPU::match}\label{cppfunc.gpu.BruteForceMatcher.match} +Find the best match for each descriptor from a query set with train descriptors. This function is equivalent of \cvCppCross{DescriptorMatcher::match}. +\cvdefCpp{ +void match(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector\& matches, \par const GpuMat\& mask = GpuMat()); +} +\cvdefCpp{ +void match(const GpuMat\& queryDescs, \par std::vector\& matches, \par const std::vector\& masks = std::vector()); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::matchSingle}\label{cppfunc.gpu.BruteForceMatcher.matchSingle} +Find one best match for each query descriptor. Results stored to GPU memory. +\cvdefCpp{ +void matchSingle(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& distance, \par const GpuMat\& mask = GpuMat()); +} +\begin{description} +\cvarg{queryDescs} {Query set of descriptors.} +\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} +\cvarg{trainIdx} {One row \texttt{CV\_32SC1} matrix. Will contain best train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} +\cvarg{distance} {One row \texttt{CV\_32FC1} matrix. Will contain best distance for each query. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} +\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} +\end{description} + +\cvfunc{gpu::BruteForceMatcher\_GPU::matchCollection}\label{cppfunc.gpu.BruteForceMatcher.matchCollection} +Find one best match for each query descriptor from train collection. Results stored to GPU memory. +\cvdefCpp{ +void matchCollection(const GpuMat\& queryDescs, \par const GpuMat\& trainCollection, \par GpuMat\& trainIdx, \par GpuMat\& imgIdx, \par GpuMat\& distance, \par const GpuMat\& maskCollection); +} +\begin{description} +\cvarg{queryDescs} {Query set of descriptors.} +\cvarg{trainCollection} {\texttt{GpuMat} with train collection. It can be obtained from train descriptors collection that was set using \texttt{add} method by \hyperref[cppfunc.gpu.BruteForceMatcher.makeGpuCollection]{makeGpuCollection}. Or it can contain user defined collection. It must be one row matrix, each element is a \texttt{DevMem2D} that points to one train descriptors matrix (matrix must have \texttt{CV\_32FC1} type).} +\cvarg{trainIdx} {One row \texttt{CV\_32SC1} matrix. Will contain best train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} +\cvarg{imgIdx} {One row \texttt{CV\_32SC1} matrix. Will contain image train index for each query. If some query descriptor masked out in \texttt{mask} it will contain -1.} +\cvarg{distance} {One row \texttt{CV\_32FC1} matrix. Will contain best distance for each query. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} +\cvarg{maskCollection}{\texttt{GpuMat} with set of masks. It can be obtained from \texttt{std::vector} by \hyperref[cppfunc.gpu.BruteForceMatcher.makeGpuCollection]{makeGpuCollection}. Or it can contain user defined mask set. It must be empty matrix or one row matrix, each element is a \texttt{PtrStep} that points to one mask (must have \texttt{CV\_8UC1} type).} +\end{description} + +\cvfunc{gpu::BruteForceMatcher\_GPU::makeGpuCollection}\label{cppfunc.gpu.BruteForceMatcher.makeGpuCollection} +Make gpu collection of train descriptors and masks in suitable format for \hyperref[cppfunc.gpu.BruteForceMatcher.matchCollection]{matchCollection} function. +\cvdefCpp{ +void makeGpuCollection(GpuMat\& trainCollection, \par GpuMat\& maskCollection, \par const vector\& masks = std::vector()); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::matchDownload}\label{cppfunc.gpu.BruteForceMatcher.matchDownload} +Download \texttt{trainIdx}, \texttt{imgIdx} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.matchSingle]{matchSingle} or \hyperref[cppfunc.gpu.BruteForceMatcher.matchCollection]{matchCollection} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. +\cvdefCpp{ +static void matchDownload(const GpuMat\& trainIdx, \par const GpuMat\& distance, \par std::vector\& matches); +} +\cvdefCpp{ +static void matchDownload(const GpuMat\& trainIdx, \par GpuMat\& imgIdx, \par const GpuMat\& distance, \par std::vector\& matches); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatch}\label{cppfunc.gpu.BruteForceMatcher.knnMatch} +Find the k best matches for each descriptor from a query set with train descriptors. Found k (or less if not possible) matches are returned in distance increasing order. This function is equivalent of \cvCppCross{DescriptorMatcher::knnMatch}. +\cvdefCpp{ +void knnMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector< std::vector >\& matches, \par int k, \par const GpuMat\& mask = GpuMat(), \par bool compactResult = false); +} +\cvdefCpp{ +void knnMatch(const GpuMat\& queryDescs, \par std::vector< std::vector >\& matches, \par int k, \par const std::vector\& masks = std::vector(), \par bool compactResult = false ); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatch}\label{cppfunc.gpu.BruteForceMatcher.knnMatchSingle} +Find the k best matches for each descriptor from a query set with train descriptors. Found k (or less if not possible) matches are returned in distance increasing order. Results stored to GPU memory. +\cvdefCpp{ +void knnMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& distance, \par GpuMat\& allDist, \par int k, \par const GpuMat\& mask = GpuMat()); +} +\begin{description} +\cvarg{queryDescs} {Query set of descriptors.} +\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} +\cvarg{trainIdx} {Matrix \texttt{nQueries} x \texttt{k} with type \texttt{CV\_32SC1}. \texttt{trainIdx.at(queryIdx, i)} will contain index of i'th best trains. If some query descriptor masked out in \texttt{mask} it will contain -1.} +\cvarg{distance} {Matrix \texttt{nQuery} x \texttt{k} with type \texttt{CV\_32FC1}. Will contain distance for each query and i'th best trains. If some query descriptor masked out in \texttt{mask} it will contain \texttt{FLT\_MAX}.} +\cvarg{allDist} {Buffer to store all distances between query descriptors and train descriptors. It have size \texttt{nQuery} x \texttt{nTrain} and \texttt{CV\_32F} type. \texttt{allDist.at(queryIdx, trainIdx)} will contain \texttt{FLT\_MAX}, if \texttt{trainIdx} is one from k best, otherwise it will contain distance between \texttt{queryIdx} and \texttt{trainIdx} descriptors.} +\cvarg{k}{Count of best matches will be found per each query descriptor (or less if it's not possible).} +\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} +\end{description} + +\cvfunc{gpu::BruteForceMatcher\_GPU::knnMatchDownload}\label{cppfunc.gpu.BruteForceMatcher.knnMatchDownload} +Download \texttt{trainIdx} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.knnMatchSingle]{knnMatch} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. If \texttt{compactResult} is true \texttt{matches} vector will not contain matches for fully masked out query descriptors. +\cvdefCpp{ +static void knnMatchDownload(const GpuMat\& trainIdx, \par const GpuMat\& distance, \par std::vector< std::vector >\& matches, \par bool compactResult = false); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatch}\label{cppfunc.gpu.BruteForceMatcher.radiusMatch} +Find the best matches for each query descriptor which have distance less than given threshold. Found matches are returned in distance increasing order. This function is equivalent of \cvCppCross{DescriptorMatcher::radiusMatch}. Works only on device with Compute Capability \texttt{>=} 1.1. +\cvdefCpp{ +void radiusMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par std::vector< std::vector >\& matches, \par float maxDistance, \par const GpuMat\& mask = GpuMat(), \par bool compactResult = false); +} +\cvdefCpp{ +void radiusMatch(const GpuMat\& queryDescs, \par std::vector< std::vector >\& matches, \par float maxDistance, \par const std::vector\& masks = std::vector(), \par bool compactResult = false); +} + +\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatch}\label{cppfunc.gpu.BruteForceMatcher.radiusMatchSingle} +Find the best matches for each query descriptor which have distance less than given threshold. Results stored to GPU memory. Results are not sorted by distance increasing order. Works only on device with Compute Capability \texttt{>=} 1.1. +\cvdefCpp{ +void radiusMatch(const GpuMat\& queryDescs, \par const GpuMat\& trainDescs, \par GpuMat\& trainIdx, \par GpuMat\& nMatches, \par GpuMat\& distance, \par float maxDistance, \par const GpuMat\& mask = GpuMat()); +} +\begin{description} +\cvarg{queryDescs} {Query set of descriptors.} +\cvarg{trainDescs} {Train set of descriptors. This will not be added to train descriptors collection stored in class object.} +\cvarg{trainIdx} {\texttt{trainIdx.at(queryIdx, i)} will contain i'th train index \newline\texttt{(i < min(nMatches.at(0, queryIdx), trainIdx.cols)}. If \texttt{trainIdx} is empty, it will be created with size \texttt{nQuery} x \texttt{nTrain}. Or it can be allocated by user (it must have \texttt{nQuery} rows and \texttt{CV\_32SC1} type). Cols can be less than \texttt{nTrain}, but it can be that matcher won't find all matches, because it haven't enough memory to store results.} +\cvarg{nMatches} {\texttt{nMatches.at(0, queryIdx)} will contain matches count for \texttt{queryIdx}. Carefully, \texttt{nMatches} can be greater than \texttt{trainIdx.cols} - it means that matcher didn't find all matches, because it didn't have enough memory.} +\cvarg{distance} {\texttt{distance.at(queryIdx, i)} will contain i'th distance \newline\texttt{(i < min(nMatches.at(0, queryIdx), trainIdx.cols)}. If \texttt{trainIdx} is empty, it will be created with size \texttt{nQuery} x \texttt{nTrain}. Otherwise it must be also allocated by user (it must have the same size as \texttt{trainIdx} and \texttt{CV\_32FC1} type).} +\cvarg{maxDistance}{The threshold to found match distances.} +\cvarg{mask}{Mask specifying permissible matches between input query and train matrices of descriptors.} +\end{description} + +\cvfunc{gpu::BruteForceMatcher\_GPU::radiusMatchDownload}\label{cppfunc.gpu.BruteForceMatcher.radiusMatchDownload} +Download \texttt{trainIdx}, \texttt{nMatches} and \texttt{distance} matrices obtained by \hyperref[cppfunc.gpu.BruteForceMatcher.radiusMatchSingle]{radiusMatch} to CPU vector with \hyperref[cv.class.DMatch]{cv::DMatch}. If \texttt{compactResult} is true \texttt{matches} vector will not contain matches for fully masked out query descriptors. +\cvdefCpp{ +static void radiusMatchDownload(const GpuMat\& trainIdx, \par const GpuMat\& nMatches, \par const GpuMat\& distance, \par std::vector< std::vector >\& matches, \par bool compactResult = false); +} diff --git a/doc/gpu_image_filtering.tex b/doc/gpu_image_filtering.tex new file mode 100644 index 0000000000..29b56204de --- /dev/null +++ b/doc/gpu_image_filtering.tex @@ -0,0 +1,283 @@ +\section{Image Filtering} + +Functions and classes described in this section are used to perform various linear or non-linear filtering operations on 2D images. + +See also: \hyperref[section.cpp.cpu.ImageFiltering]{Image Filtering} + +\cvclass{gpu::BaseRowFilter\_GPU}\label{class.gpu.BaseRowFilter} +The base class for linear or non-linear filters that process rows of 2D arrays. Such filters are used for the "horizontal" filtering parts in separable filters. + +\begin{lstlisting} +class BaseRowFilter_GPU +{ +public: + BaseRowFilter_GPU(int ksize_, int anchor_); + virtual ~BaseRowFilter_GPU() {} + virtual void operator()(const GpuMat& src, GpuMat& dst) = 0; + int ksize, anchor; +}; +\end{lstlisting} + +\cvclass{gpu::BaseColumnFilter\_GPU}\label{class.gpu.BaseColumnFilter} +The base class for linear or non-linear filters that process columns of 2D arrays. Such filters are used for the "vertical" filtering parts in separable filters. + +\begin{lstlisting} +class BaseColumnFilter_GPU +{ +public: + BaseColumnFilter_GPU(int ksize_, int anchor_); + virtual ~BaseColumnFilter_GPU() {} + virtual void operator()(const GpuMat& src, GpuMat& dst) = 0; + int ksize, anchor; +}; +\end{lstlisting} + +\cvclass{gpu::BaseFilter\_GPU}\label{class.gpu.BaseFilter} +The base class for non-separable 2D filters. + +\begin{lstlisting} +class CV_EXPORTS BaseFilter_GPU +{ +public: + BaseFilter_GPU(const Size& ksize_, const Point& anchor_); + virtual ~BaseFilter_GPU() {} + virtual void operator()(const GpuMat& src, GpuMat& dst) = 0; + Size ksize; + Point anchor; +}; +\end{lstlisting} + +\cvclass{gpu::FilterEngine\_GPU}\label{class.gpu.FilterEngine} +The base class for Filter Engine. + +\begin{lstlisting} +class CV_EXPORTS FilterEngine_GPU +{ +public: + virtual ~FilterEngine_GPU() {} + + virtual void apply(const GpuMat& src, GpuMat& dst, + Rect roi = Rect(0,0,-1,-1)) = 0; +}; +\end{lstlisting} + +The class can be used to apply an arbitrary filtering operation to an image. It contains all the necessary intermediate buffers. Pointers to the initialized \texttt{FilterEngine\_GPU} instances are returned by various \texttt{create*Filter\_GPU} functions, see below, and they are used inside high-level functions such as \cvCppCross{gpu::filter2D}, \cvCppCross{gpu::erode}, \cvCppCross{gpu::Sobel} etc. + +By using \texttt{FilterEngine\_GPU} instead functions you can avoid unnessesary memory allocation for intermediate buffers and get much better performance: + +\begin{lstlisting} +while (...) +{ + cv::gpu::GpuMat src = getImg(); + cv::gpu::GpuMat dst; + // Allocate and release buffers at each iterations + cv::gpu::GaussianBlur(src, dst, ksize, sigma1); +} + +// Allocate buffers only once +cv::Ptr filter = + cv::gpu::createGaussianFilter_GPU(CV_8UC4, ksize, sigma1); +while (...) +{ + cv::gpu::GpuMat src = getImg(); + cv::gpu::GpuMat dst; + filter->apply(src, dst, cv::Rect(0, 0, src.cols, src.rows)); +} +// Release buffers only once +filter.release(); +\end{lstlisting} + +\texttt{FilterEngine\_GPU} can process a rectangular sub-region of an image. By default, if \texttt{roi == Rect(0,0,-1,-1)}, \texttt{FilterEngine\_GPU} process inner region of image (\texttt{Rect(anchor.x, anchor.y, src\_size.width - ksize.width, src\_size.height - ksize.height)}), because some filters doesn't check indexies outside the image for better perfomace. Which filters supports processing the whole image and which not and image type limitations see below. + +The GPU filters doesn't support the in-place mode. + +See also: \hyperref[class.gpu.BaseRowFilter]{BaseRowFilter\_GPU}, \hyperref[class.gpu.BaseColumnFilter]{BaseColumnFilter\_GPU}, \hyperref[class.gpu.BaseFilter]{BaseFilter\_GPU}, \hyperref[cppfunc.gpu.createFilter2D]{createFilter2D\_GPU}, \hyperref[cppfunc.gpu.createSeparableFilter]{createSeparableFilter\_GPU}, \hyperref[cppfunc.gpu.createBoxFilter]{createBoxFilter\_GPU}, \hyperref[cppfunc.gpu.createMorphologyFilter]{createMorphologyFilter\_GPU}, \hyperref[cppfunc.gpu.createLinearFilter]{createLinearFilter\_GPU}, \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \hyperref[cppfunc.gpu.createDerivFilter]{createDerivFilter\_GPU}, \hyperref[cppfunc.gpu.createGaussianFilter]{createGaussianFilter\_GPU} + +\cvfunc{gpu::createFilter2D\_GPU}\label{cppfunc.gpu.createFilter2D} +Create the non-separable filter engine with the specified filter. +\cvdefCpp{ +Ptr createFilter2D\_GPU(\par const Ptr\& filter2D, \par int srcType, int dstType); +} +Usually this function is used inside high-level functions, like \hyperref[cppfunc.gpu.createLinearFilter]{createLinearFilter\_GPU}, \hyperref[cppfunc.gpu.createBoxFilter]{createBoxFilter\_GPU}. + +\cvfunc{gpu::createSeparableFilter\_GPU}\label{cppfunc.gpu.createSeparableFilter} +Create the separable filter engine with the specified filters. +\cvdefCpp{ +Ptr createSeparableFilter\_GPU(\par const Ptr\& rowFilter, \par const Ptr\& columnFilter, \par int srcType, int bufType, int dstType); +} +Usually this function is used inside high-level functions, like \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}. + +\cvfunc{gpu::getRowSumFilter\_GPU}\label{cppfunc.gpu.getRowSumFilter} +Create horizontal 1D box filter. Supports only \texttt{CV\_8UC1} source type and \texttt{CV\_32FC1} sum type. +\cvdefCpp{ +Ptr getRowSumFilter\_GPU(int srcType, int sumType, \par int ksize, int anchor = -1); +} + +\cvfunc{gpu::getColumnSumFilter\_GPU}\label{cppfunc.gpu.getColumnSumFilter} +Create vertical 1D box filter. Supports only \texttt{CV\_8UC1} sum type and \texttt{CV\_32FC1} dst type. +\cvdefCpp{ +Ptr getColumnSumFilter\_GPU(int sumType, \par int dstType, int ksize, int anchor = -1); +} + +\cvfunc{gpu::createBoxFilter\_GPU}\label{cppfunc.gpu.createBoxFilter} +Create normalized 2D box filter. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type, dst type must be the same as source type. This filter doesn't check indexies outside the image. +\cvdefCpp{ +Ptr createBoxFilter\_GPU(int srcType, int dstType, \par const Size\& ksize, \par const Point\& anchor = Point(-1,-1)); +} +\cvdefCpp{ +Ptr getBoxFilter\_GPU(int srcType, int dstType, \par const Size\& ksize, \par Point anchor = Point(-1, -1)); +} + +\cvCppFunc{gpu::boxFilter} +Smooths the image using the normalized box filter. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type, dst type must be the same as source type. +\cvdefCpp{ +void boxFilter(const GpuMat\& src, GpuMat\& dst, int ddepth, Size ksize, \par Point anchor = Point(-1,-1)); +} +See \cvCppCross{boxFilter}, \hyperref[cppfunc.gpu.createBoxFilter]{createBoxFilter\_GPU}. + +\cvCppFunc{gpu::blur} +A synonym for normalized box filter. +\cvdefCpp{ +void blur(const GpuMat\& src, GpuMat\& dst, Size ksize, \par Point anchor = Point(-1,-1)); +} +See \cvCppCross{blur}, \cvCppCross{gpu::boxFilter}. + +\cvfunc{gpu::createMorphologyFilter\_GPU}\label{cppfunc.gpu.createMorphologyFilter} +Create 2D morphological filter. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. This filter doesn't check indexies outside the image. +\cvdefCpp{ +Ptr createMorphologyFilter\_GPU(int op, int type, \par const Mat\& kernel, \par const Point\& anchor = Point(-1,-1), \par int iterations = 1); +} +\cvdefCpp{ +Ptr getMorphologyFilter\_GPU(int op, int type, \par const Mat\& kernel, const Size\& ksize, \par Point anchor=Point(-1,-1)); +} +\begin{description} +\cvarg{op} {The morphology operation id. Only \texttt{MORPH\_ERODE} and \texttt{MORPH\_DILATE} are supported.} +\cvarg{type}{The input/output image type. Only \texttt{CV\_8UC1} and \texttt{CV\_8UC4} are supported.} +\cvarg{kernel}{The 2D 8-bit structuring element for the morphological operation. It must be continuous matrix.} +\cvarg{size}{The horizontal or vertical structuring element size for separable morphological operations} +\cvarg{anchor}{The anchor position within the structuring element; negative values mean that the anchor is at the center} +\end{description} +See \cvCppCross{createMorphologyFilter}. + +\cvCppFunc{gpu::erode} +Erodes an image by using a specific structuring element. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. +\cvdefCpp{ +void erode(const GpuMat\& src, GpuMat\& dst, const Mat\& kernel, \par Point anchor = Point(-1, -1), \par int iterations = 1); +} +See \cvCppCross{erode}, \hyperref[cppfunc.gpu.createMorphologyFilter]{createMorphologyFilter\_GPU}. + +\cvCppFunc{gpu::dilate} +Dilates an image by using a specific structuring element. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. +\cvdefCpp{ +void dilate(const GpuMat\& src, GpuMat\& dst, const Mat\& kernel, \par Point anchor = Point(-1, -1), \par int iterations = 1); +} +See \cvCppCross{dilate}, \hyperref[cppfunc.gpu.createMorphologyFilter]{createMorphologyFilter\_GPU}. + +\cvCppFunc{gpu::morphologyEx} +Applies an advanced morphological operation to the image. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. +\cvdefCpp{ +void morphologyEx(const GpuMat\& src, GpuMat\& dst, int op, \par const Mat\& kernel, \par Point anchor = Point(-1, -1), \par int iterations = 1); +} +See \cvCppCross{morphologyEx}. + +\cvfunc{gpu::createLinearFilter\_GPU}\label{cppfunc.gpu.createLinearFilter} +Create the non-separable linear filter. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. This filter doesn't check indexies outside the image. +\cvdefCpp{ +Ptr createLinearFilter\_GPU(int srcType, int dstType, \par const Mat\& kernel, \par const Point\& anchor = Point(-1,-1)); +} +\cvdefCpp{ +Ptr getLinearFilter\_GPU(int srcType, int dstType, \par const Mat\& kernel, const Size\& ksize, \par Point anchor = Point(-1, -1)); +} + +\cvCppFunc{gpu::filter2D} +Applies non-separable 2D linear filter to the image. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. +\cvdefCpp{ +void filter2D(const GpuMat\& src, GpuMat\& dst, int ddepth, \par const Mat\& kernel, \par Point anchor=Point(-1,-1)); +} +See \cvCppCross{filter2D}, \hyperref[cppfunc.gpu.createLinearFilter]{createLinearFilter\_GPU}. + +\cvCppFunc{gpu::Laplacian} +Applies Laplacian operator to the image. Supports \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source type. Supports only \texttt{ksize} = 1 and \texttt{ksize} = 3. +\cvdefCpp{ +void Laplacian(const GpuMat\& src, GpuMat\& dst, int ddepth, \par int ksize = 1, double scale = 1); +} +See \cvCppCross{Laplacian}, \cvCppCross{gpu::filter2D}. + +\cvfunc{gpu::getLinearRowFilter\_GPU}\label{cppfunc.gpu.getLinearRowFilter} +Create the primitive row filter with the specified kernel. +\cvdefCpp{ +Ptr getLinearRowFilter\_GPU(int srcType, \par int bufType, const Mat\& rowKernel, int anchor = -1, \par int borderType = BORDER\_CONSTANT); +} +Supports only \texttt{CV\_8UC1}, \texttt{CV\_8UC4}, \texttt{CV\_16SC1}, \texttt{CV\_16SC2}, \texttt{CV\_32SC1}, \texttt{CV\_32FC1} source type. There are two version of algorithm: NPP and OpenCV. NPP calls when \texttt{srcType == CV\_8UC1} or \texttt{srcType == CV\_8UC4} and \texttt{bufType == srcType}, otherwise calls OpenCV version. NPP supports only \texttt{BORDER\_CONSTANT} border type and doesn't check indexies outside image. OpenCV version supports only \texttt{CV\_32F} as buffer depth and \texttt{BORDER\_REFLECT101}, \texttt{BORDER\_REPLICATE} and \texttt{BORDER\_CONSTANT} border types and checks indexies outside image. + +See also: \hyperref[cppfunc.gpu.getLinearColumnFilter]{getLinearColumnFilter\_GPU}, \cvCppCross{createSeparableLinearFilter}. + +\cvfunc{gpu::getLinearColumnFilter\_GPU}\label{cppfunc.gpu.getLinearColumnFilter} +Create the primitive column filter with the specified kernel. +\cvdefCpp{ +Ptr getLinearColumnFilter\_GPU(int bufType, \par int dstType, const Mat\& columnKernel, int anchor = -1, \par int borderType = BORDER\_CONSTANT); +} +Supports only \texttt{CV\_8UC1}, \texttt{CV\_8UC4}, \texttt{CV\_16SC1}, \texttt{CV\_16SC2}, \texttt{CV\_32SC1}, \texttt{CV\_32FC1} dst type. There are two version of algorithm: NPP and OpenCV. NPP calls when \texttt{dstType == CV\_8UC1} or \texttt{dstType == CV\_8UC4} and \texttt{bufType == dstType}, otherwise calls OpenCV version. NPP supports only \texttt{BORDER\_CONSTANT} border type and doesn't check indexies outside image. OpenCV version supports only \texttt{CV\_32F} as buffer depth and \texttt{BORDER\_REFLECT101}, \texttt{BORDER\_REPLICATE} and \texttt{BORDER\_CONSTANT} border types and checks indexies outside image. + +See also: \hyperref[cppfunc.gpu.getLinearRowFilter]{getLinearRowFilter\_GPU}, \cvCppCross{createSeparableLinearFilter}. + +\cvfunc{gpu::createSeparableLinearFilter\_GPU}\label{cppfunc.gpu.createSeparableLinearFilter} +Create the separable linear filter engine. +\cvdefCpp{ +Ptr createSeparableLinearFilter\_GPU(int srcType, \par int dstType, const Mat\& rowKernel, const Mat\& columnKernel, \par const Point\& anchor = Point(-1,-1), \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.getLinearRowFilter]{getLinearRowFilter\_GPU}, \hyperref[cppfunc.gpu.getLinearColumnFilter]{getLinearColumnFilter\_GPU}, \cvCppCross{createSeparableLinearFilter}. + +\cvCppFunc{gpu::sepFilter2D} +Applies separable 2D linear filter to the image. +\cvdefCpp{ +void sepFilter2D(const GpuMat\& src, GpuMat\& dst, int ddepth, \par const Mat\& kernelX, const Mat\& kernelY, \par Point anchor = Point(-1,-1), \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \cvCppCross{sepFilter2D}. + +\cvfunc{gpu::createDerivFilter\_GPU}\label{cppfunc.gpu.createDerivFilter} +Create filter engine for the generalized Sobel operator. +\cvdefCpp{ +Ptr createDerivFilter\_GPU(int srcType, int dstType, \par int dx, int dy, int ksize, \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \cvCppCross{createDerivFilter}. + +\cvCppFunc{gpu::Sobel} +Applies generalized Sobel operator to the image. +\cvdefCpp{ +void Sobel(const GpuMat\& src, GpuMat\& dst, int ddepth, int dx, int dy, \par int ksize = 3, double scale = 1, \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \cvCppCross{Sobel}. + +\cvCppFunc{gpu::Scharr} +Calculates the first x- or y- image derivative using Scharr operator. +\cvdefCpp{ +void Scharr(const GpuMat\& src, GpuMat\& dst, int ddepth, \par int dx, int dy, double scale = 1, \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \cvCppCross{Scharr}. + +\cvfunc{gpu::createGaussianFilter\_GPU}\label{cppfunc.gpu.createGaussianFilter} +Create the Gaussian filter engine. +\cvdefCpp{ +Ptr createGaussianFilter\_GPU(int type, Size ksize, \par double sigma1, double sigma2 = 0, \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createSeparableLinearFilter]{createSeparableLinearFilter\_GPU}, \cvCppCross{createGaussianFilter}. + +\cvCppFunc{gpu::GaussianBlur} +Smooths the image using Gaussian filter. +\cvdefCpp{ +void GaussianBlur(const GpuMat\& src, GpuMat\& dst, Size ksize, \par double sigma1, double sigma2 = 0, \par int rowBorderType = BORDER\_DEFAULT, \par int columnBorderType = -1); +} +See \hyperref[cppfunc.gpu.createGaussianFilter]{createGaussianFilter\_GPU}, \cvCppCross{GaussianBlur}. + +\cvfunc{gpu::getMaxFilter\_GPU}\label{cppfunc.gpu.getMaxFilter} +Create maximum filter. Supports only \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source and dst type. +\cvdefCpp{ +Ptr getMaxFilter\_GPU(int srcType, int dstType, \par const Size\& ksize, Point anchor = Point(-1,-1)); +} + +\cvfunc{gpu::getMinFilter\_GPU}\label{cppfunc.gpu.getMinFilter} +Create minimum filter. Supports only \texttt{CV\_8UC1} and \texttt{CV\_8UC4} source and dst type. +\cvdefCpp{ +Ptr getMinFilter\_GPU(int srcType, int dstType, \par const Size\& ksize, Point anchor = Point(-1,-1)); +} diff --git a/doc/imgproc_image_filtering.tex b/doc/imgproc_image_filtering.tex index 2a18b54c95..ca3795855d 100644 --- a/doc/imgproc_image_filtering.tex +++ b/doc/imgproc_image_filtering.tex @@ -1,4 +1,4 @@ -\section{Image Filtering} +\section{Image Filtering}\ifCpp\label{section.cpp.cpu.ImageFiltering}\fi Functions and classes described in this section are used to perform various linear or non-linear filtering operations on 2D images (represented as \cvCppCross{Mat}'s), that is, for each pixel location $(x,y)$ in the source image some its (normally rectangular) neighborhood is considered and used to compute the response. In case of a linear filter it is a weighted sum of pixel values, in case of morphological operations it is the minimum or maximum etc. The computed response is stored to the destination image at the same location $(x,y)$. It means, that the output image will be of the same size as the input image. Normally, the functions supports multi-channel arrays, in which case every channel is processed independently, therefore the output image will also have the same number of channels as the input one. diff --git a/doc/opencv.pdf b/doc/opencv.pdf index 9d6090c3f7120fedc820e2b80a9ef95980bf8f87..b44b0c0d601a3eb234be4c5871bc9fdead969f59 100644 GIT binary patch delta 2508692 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�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

@VC~7KMwb_& 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

rn9)G8X=QRKKN`?t7uvIYkdz4m7fRPc zB$9&^bH5Tp$dc|X8?+pQAcpV9KFEJ4iN^*-CL<_eFO5JFR;c3;uE-!{O@ zBn<%xOgrQx8{`E_p|>b7P6Z5I9Ry_`V2DN+IC*fSfEO`hPd0oEQsr2le|6In(u=wq2Rif(0Uc)(BI?KeoA3ysmhY zzTuJlJX}zog?a`3dV9H^?p4%d*KB6ZYDBU61eM^{iQ?gKx4M$R1VYpqqZ&9=>zao0B^~9ZSl| zOVZh$3O5U=WsJzZKnmf!W8N9{Mf@uklY)Z1r4dzmdq-s|J-toJ>4UWjQcd zp6gsncbzy$cfy+%h3vVSubRL+P-$JC=S7`t-%jRhYww(t7uHa%`3<)OMD}SbIv0tX z|6m-hmU;hvSP3019P3fxO+5LLzWy!mL@zllTf%HL+zu z`ZQl%&xR0Gp$ySH{R!5_&^m-?$Q;p}=vCH0?&bZU`h-TMNpWPyz_-cr*4HHu8UlDc zLh*BV!!HU))3lV{?m+WgF4_tHk$YR|g``P<1}5VIwu%^9UE9d+062)~TRlj4_(}qGiMWnFFkAWQL zko-^qTNk{?eor1Fh};xGiU|-5K!Yg3O*OC_`fu3{R9TvWFFE|~KONIe!N+?g z=fGGy48xg+FsT`UM-O2Q7^cWQXcGp*T8D5O3`ZQo-(k4p5Ee5>uqQt}XnqZVki;Qe z3d0_U@G=aS9l|UYfNFtfGqnI^%ZFtt7T`Hq@(#urgv-qiVM0p)ryjy8Fg$b!--2P{ z{DbySU|8)C{szM#hp_Nv0Jj{%t}wiN2p7VzXu(0>1sGO?MLPK0B=HaRIu!i>k_Qjz z)nA8#|CSChK^k_9MIs6)#|jaNUYJqX@%7HBIIE5~kIW1TRz-9TOg#*+ao^6<9{oq`?UE&kFQ{Qj6$3794^4WT4uv4n>@|N0=<=Ac!dp9;)5S?C+fRq1Z z!`EX@^80TH#C*Hf+KL??-pLlQU2K}3McH2}660cCan%jYE*+Z69N4F4!9?#EsnA`+ z*iCpnTqfleXBYc@`~F+6WWwOJX+q@$jFMEv?{giSo}zq)!U|5^(`Pu!74b@2JLg?( z?;Tf3-MAu5Uj|t})rsp!;f_~IEi{j`r&GRq(Pr+laC6_S6ZCrSWxd4h^ z1kEpb81)ZcFg%Y;D;yQH(kq-sf498vbNSBYOh0B#QR{|$X@+j&pNGBG5%=Z{xrsh%cAukQ+LEl>p6v!6{VEPmu;(AhAWQ|mis zRxDtGKizZ@-{j^fnO{=>nX(9}A%~7CoyoO&FO#Lh;vdz}Ll)FbL((}@wXbNK^qx!? zVCIdJUn;S=6=6I`CLjFhv)y(1!jJ^d(?6K|rkA8U45}y5qI1r8Dup-0bGB9lLZk9# zbWTO+s~fL~MdLqFRf#Ooqp3Bhd{v_7p{ui#kG`m8Wv%DILz-CRt8ot-omBKz=3<{! zo(WGof%=cEMqB%ngQ6FR#;F6*UOnRD&ZJA{?;CiMciV0_Wp5+==stY5j%r3pjPn^k zfByly!QXMcnONeqa#{1o+S5Y!Q6{g~y|8HJ@e^OIYY{E3#5~i~B&MXj$YJKr(O56K3O$&Y*YCLdE>Z`@5r_`bZcAHR zP?N{KCE>muf{Wb|MKQT1DR!oH6`y>NT;s&60%6rvbqA+5#oDv0x7&WOM09Nt-)wNX z9z(<}zHv-z21_!~d=a z>D6>JU$Blx%~m_UTzQ#>=FJ*g5f5aujDE)XyrSZIYU?kX4pKcE1IE-j7bjSJM0wwv zs0(_aGkF#2Z=cvuRmU9V-9$G?F$^3k6#}t{kK{SwKd5JbN)M=KB>qHCh5s@`0Uz@N zVFN@S99oY|e^Rx+(7>dHVh0sjAay%L5(ZGZNHIw!otH;KtoDdRsJH--gy>-vKInx9 zJ`S{NkBBD+*P;JPU}3!rJJjWXAUXK*VObEj2pob%P!OdfplC`(;0Ov3Z5X+Eghawf z!x7R6BQ})?A_Oc@3WK&7PN0Oa_FpBEpaj?zem$DQjjzLvy^H_VxDqard~`VPDvWp? zAso)&91M4|bOxmrN2M7s^5F=110(E@4?B~&0Oax!q6s5+kC59iGIE5p!w6~BVV`{% z(KtfRx&oy62=RcCog<{o_2^NS;L=5Su}yiAL=yicOa5=^FH~M|o(g*ChNwYXkJ`7S zdluX~lfE#wLABELX=WW`5dV3(e6Hlh#nCI$9L_yrp(>^##%xZaUpJDTabJkKOy5ZQ za8qABc6jJSWLVLaw7zbm=V5O;KHKOHt!9tU1&<|R1>97}k8V3jQ7f;F={WP_OBfr6 zx~PRl)A1OU4PWht;g0oov)(_R$e^_oXF~9ZDR}LkirgobIJSV@yGKmAKqK5gh~o>L zkL=yIs9J0h@Yk<`$}{(RS(<8jyjmPixvd5n#(5#niO7AgkrB2!R!4x}?|t7{pRwrM zVgMxfCR6y9*@F3VrnkooggOFjKZ+Y=+xhHBr_FzJPdhWqR8Sy&@AbfJr2qx`n?WM$ zqX+vU&!C|f?Mjs<#t$OdABZr?z4fXzTYejLo8C)K|Kts~{(+4L-HY5!Hq6h$d|u7@ z)u+5;9%^q`8FR~|+W7iD?c6MF6Pd_ZA%poB4PC>D?CaA-`{|RHbO+};l#&|>vQo>j zvd>ggU**6t9HHu3-@J*!Sk_@wJBg0Hgk3_S2?r3@2NPboE(&K|yEXgV}dn>ZJ`yqW!MV zm4k?TsjGDCuUOAvIirnN&++MQQv5tsF>X;JOFu)>x^5d)#Sm7do4)Re ztuaozBnp&q^qH!KCEbDO((6s+jK$c_ZDb+kR3ATu##7m6Myxj4h1pzSb2=-l3ohZPJb%jJ{4t>kCws> z74dS=tG4OH@_jjON+#HeVBuxt;V3lDBFPU$4Hk=y%tlDg49shu&I>NBmVZHqN36TA z_FfiuI7G?}`%RG9v;VRQLS9q#*gf;ZKS z>rZ{74?}NG2fpNfmBkuL9)mvhG}8W6fx>#_;0xz_ngoI4CueOd`^t6^+Pt_k;vcK; z@5W5`5jog;#b(Ug%mk~?3N4!1hRv}&H+w~17N9or(f+N>x%kPbL#Fet8qlGsY7iO+ zYZ9o0fl=!>Q68jh0PfE~>-@Va0eGENpny~f!eR_XB|)+Y1#HON3yAP0HJ}t!PT;XZ z$u)pI04ZPYI+6_Nu~C4=ziPULArfW+c6bGf%B?yomGT8mJ{}?7Fv8t>*!dCM%;pGLg=_8| zAsl|7X6y*L><4Nn+7A2Ng%PbIWCTXSj}UTyfIK}y&ijJ_ejFjU;TrMw!vWgi8qXu- zJ6uzKgop(oSSf)sz#kUFJpiy=5n%cLeVs}UtKhxy>k=-3D(KtLU)&fh4D$_8a_RZM zO3XkB7#Vgl`L%oMVHJGn__b;X9;XQ2pHF&~5APTf|F6T!ACD(sOkIXQC|-JB!@PHs z0|~{W5fK=dYfjxn(BNRxVz8nQtq|Zgsx(3-YB7;R*Povbwr~B~WQXT+5iC^FoVIYu#=tB{i(A6n*isWO zV2WR*J-F9h&%J3>hB ziLg?E(8gayYPeV2OF~vkF_8m9>(BE*q+0AiTK)2`ZSeL4@j>I?{}SjeHXqQ7z$qht zU1dn;x-=W4w{Z}^r(;XR21NlFUe&m2VphoLwmyiFwv!}M{a*^CVql*Ghv>s^?2q3c zY&_zDE+*;|Lg$qQ5YUepL@lPSXiZ%#!W+LKEThdjvp3-}(*^Nx5BC7dqvR~`i1 zVKCT$He2K{%;n#9KM^SKl_ojVy#ch@WsDlYMFznQ4j!cP*wFVRL=1F$A3=0zg4KSG z4-at=W&YC|gP`wtJiu#24h*_KR{w;KeN;(!gtaAZ`3S03^pI$_AWw4kDcXT?O0#!ANcyz-pjJfCNWO z5ct}IWQCeD5TsbZ*$#S@0p3>%-b*g8@rhLam#pIFZG33;JlfR1Y3xH!AVF3nN(2(R zcNZ`Y&l;{wL>o4i?@BXdnGJ_zfQ5dgf0)~iQUv$_{=SXllDPkC8($sbJQzYi6^jNc zC&p)idb1I!P&EVcPz4Gy%z~I$aMa}dr$B%k?DaJ!*BTfkQVlL<))qGuW1h*%*h0E0aQ1SD@5lB*$N zfgZuoTS_Ld5nxBdUp@dZd_@ZINE1B>1N&w8Q&K=80}h;j=tPRp}NFy$1XdP=cXrn)@Usy8 zO;Q4XUtBw&-X?{xWN;R8Ed=~Z^uT%f*9XUYBLYZ+%)cHS<`xuUAQQ!}%MFo+;lY2z zfv5AY<6Nx)TkV`Qk_?`&br29Rv^4zHfmOz50`62Ga7|o+_W!~XMg)DblB0y8ixG7g zSv4vph#T10Qa()0P=y_m0#Z>0rn1xN8b=2d(L)F8pF}bcLlfvv02AWhxq~PqPzJnK z>ZCy;S2IRFJ}A2qkqXil{3>vQF%ELJdMSflFM4R!EC( zJ@8+oz)%(uD0>M*6_0^dolq4#aRmtt3uLN$v{Asot&K2G7CrFa{`WG2DvT(Qlp~}H z{Hp*-sY0+*iXNC2e{LoUtxy6t8Wa7aoh=G!KVV~rb^v~09DyI+6L5hPgQLG4L@FIf z6i}Gyze=(=C|RLQ!+({)TLa3|`Fq&FY?#T4{wD2!3EXPH`*9nBEda(Q%_jnqjOc;e z_^*$8AWdYP1MBTPO-%HEA+Zxd6=-=%NV{8v7oz78#f8Re5e67bH3D@ATO4dr-|BF9 zt58C-iGNNs3(NyL$m#ocXA&1MI@0~0(F3nj zgX6N(zq*jl)39O!XQEg;Zd%^|5-{@VLU!s2%d$N#yI7kh7e0Pp+Mqh|Z8usCN%u#=|orFHVAcqp~vik+m*` zcv+aNFQ)O05AJ^Q84gYK?x=#$j5^iqWy5=|$W8Zil4SIA(mX8)IVVa7bgEylYyES#bi0`5;HOZZ}(Vs7OIOTr466~_gBHRA%jKou} z&zEsWM&o#i`0+8$&xZG1fs8!0AC3Ir?57t>*iQKb32%h=(F<+l2}?*xO%`?gy`G@P zd#{R(pZ}gzB(buG%INCjL_}cTeUDYOvrJA`WHjsO7ksBKzj}ytm#mOLH!24hi)z-1 z`?tFI+c545aSxJh%$GiNG}87Dt~<_kW5RH-&ekE`HgYaGqI>S8sMPb=8@Z89 zPgin`Uh9#25_@^QMagScFkuJ!H4S%sJN?v3Co$=vU%z0sfo_ghMZtJ`1CMhuDvE8R zRg2F5e!`H%+A+ZnaoLNv2tY18F^k4WLuSqf{L`LWghk}ZO?i&;Sr^|sRXAk^)<<)B zZ0C6_w+1!pCXMPS-K4sZ)2+x?8J}ZD&eS|Hk0#D`do_A4u{ms(fTcIs1O@Qqu1+_}ikV9SeRqP^D<&vk%q6v6$ZQd0wa})%5!QjT zv${+#ll_?InQ66p^|I!D{t}fuVqK{K4o595vSF-FD>iz)Yh#6j7z)?xd7`=1?z(cM z`VA^?6P+8Vp7RVJ=-IaRrF+}MW32EY*Xu+lX~U>tFJMp$H2Wx%u`5Q-Z`wmtjuY&M@3a@#LKUAWSo@N8sjt&N zCP+3|-8jxIMCz5tITqe88gD%1Gs;Dna2ew+IUv{b3OI#AZJo`d)G+fEe-PqiQ+#uM z!fWHFnwKESXN!BTHG7f0kqwRW9JeCRySz8$bhAXNTi43oOtzi?M^luDqmZL0Wj*5; z#z+fhIX!tI`^Py<=_2o<2>mt+O^kF`lt$X(m}~qv@ONYcc5lwfn%Z`>k(pW7Y&AuZ zDtvXb(KY0-(WSCqOCEKqBe#%ZXgYD()#T(Q#D_iVwh@c543E`Drb$fngzc`}xU?^G z*#yzq!4lMpNG0wu84n42Ef+`4JI<`SH&NxsKL{-i+#?C%_m{+GOsTa!*QANE4zjr7 znkJcD$zD+Tti*MTe%Wy+tW(W(B_Oj(PuATL&-#r}_vIDS{Gb%4hX%J&j&;Wi_dCfU z{p|&L_@xZSqokFug+5}pMB9X-j1w@IT@`M6sC%2we=V1l7Je|i#nJz+laIfPO4CIL zQ%*nbgInyHzg}!Gg28@LM{Zz%=W)eb#`7N{s>k+-8%hx9)E}6w5QT(_V9hiOY9wZ| zenMYJTsVf^BxfeNSf!Y_hRLxZ^tN%a@+#We=9FJMQr4I*qSASi5p9tzfcrkI=PP;K zt&kV=MWO<6m3NygM*G!rd}EVB9h?jLUhySLWUA(plS$W@>jgPVWp`o-*VNZ3L|>wA z7(XS!5oR2=X_hV(<{W9YXfRIIPbG9QSZfS}u_pUwRX@?$qWux8@-cze8u$grO>#{i zpW1=GEO>n6>ourK1a~+;vO|(VS5N-s3@v(?)#GQ86r_g(A}RZyrHw=Fpcot<2dhs2 zXM{bLp>%VkCbX8Pc^rDshme76uY=R3nGBXJ#Mci{a$b-+3TVaa&j2GXqqY$AydNQZ zPzquC0O7@b?HmxxK_cp8Sz3etJpBH2!2Ox!0;vxrdX&zD?;JQTfCoH$QoeH_QVO2KMXZZ7Jjr|N$lb8UibMzfn=7R6; znwy$iTo?Ac_EvPOZ}rTN8))ftv!;7{(s#dGDcw=Y9qMrUVy$SYPQv>-&hS+D?CYg1 zW;xu9W+m)vlv%s+4k4H)Tk923+07Z6m{Z475b>`?amd0F4d1V^8=(z*JT4=5s9!f+ zXZBdZZ)+r0j16$;)c4-D6+fvr%X)s(`_ZLT&p0fcRlBLKc!qnVbfj;ep08|p+|9#$ zH!9$KBce;ocFoO%K8c`$EIH5A4E3QQPs@Von4X#JDrj6VnK``YPpjH;zNwlaem}pnpeN6I6RD#0Zh%|D$cc2`C}4BxbN?t$o&UbISA#VA#s0iq>B zjHvD=VHcBj68-9JjJvhkQ#LMdx{XKECo5HI)aP7yitD20^u7{)N?xB0X?R)ZCp38` zkNf+xj6@1NhJ6KU_BEG;vzM$wR=YI3ZB|{LZ=>GzhBx%1EWGO7-5FMtSnj&=W+`0aCDM-_E_nP%QD`jPyajv7DbvBmJ=NU}J^+UF;Jglt=iYj>FE`!3NtipR1Snpe#sTPgv(Q?zx zm^l3b4Q{>#-Tf|}L`}<6XNH@q&Xi9Y((;F^K0SpOqf~V@Bt$&4o8wYPwZ>^0G7aYA zs#iwqw%ON?>m&9{HYCxJ%k~}KvDCtN`4U~9FXsguSAL@Tx$Sso(c&c&az5S1S)c1J zi(O&-d<&^}QkrJVDdlPes|VfSvPe_T0IH!lx-js(zcypnm@PrkeVpgpO9`|e)jz*_ zjnR1Tb!hmYLVz<_0`>BxH{b1K3FmK-TU35@{&L)MJ)j{~PSrbgXbrtc6|!~a0a8CW z=@k)!E%X?RzK@x=Y$WlTzFZhr3y|pk=o->80%$cFl;d69!wFdP(m2*zJ8u4Pp#Wp45F&sHKtI zJEb^y53!n>jJB|mlWCZKX-`($`z;yaohTt9|7C@z zg+E+7v*c&RyAkIy(rs<%mVNiHUVD~Mp&0QQf4%!zI8%fM7$+3{QFqn zJ~ItK0%&lqBf~>7QHdU=RQj2UgNRuQ?*E|TAOiD{c>iVf0Y^mzTncCsCfgtZ5y;P> zg(Yk1j&Y`h7l>`q9AnYXZ0Dl23-x84JvyB zD+YiD+7uJkG#zL+emZA@E4ugJ06ooO5c1HFDhf)@jsQyp47mRV6peuR6}V(>1jPJ+ zppIlUTJ(RN!~Pe3CkHRicMfQ`z(f7bB7SBcLZI#_@zfFfIEpO+q1Sxc?yk_lJ2iS} zJObzm1_-#3kjw*Fo}^epT!?545rKAyRwREnbgcdu^wr02U@d)gzBjlXgSpXAw?p{O zWkGXIH?8H{ZbUg4MzobFd;7OPj=9f-+ZTtp5D>E@WmSvcxR<7sOj~}cIBlBVEcx`s zmYz-j0he5B9NNZf`|8yfGuBB~MJN_GuA~+dL+UJ+-NqZ+bOK+4BIMpg-TBIdeke{< z65*y56R_k-s%>&MZ=f_P%D~8J_*%{RVMk;-q`|uJgeZ7(ee15UIkJZ#u}Y(S{VYw+ z!{SQGf=VVdsfbI$LZ@W@?K>PXPfNMqr!cT1gY_@aJc<48W_!=A;@P6HXQ1N~Beo>Y zyE~9|#e{y8XDq_*wo!WHr;Xf#HS`O4E1F1U-s{Q*#$OT%Qk0#Y?O%&TaVvS=j0l@a zyBIlQ89Wvf5@og_yjk;%Ew;YCFUG+i#OqRLBO!u9Q&7`I}8&B!Awe z7?RkP=8;d7p;n(KmWSa=`9t^}Le;3~anT)W{vX~N=Z_IBYVn&#r%t0ZUNNkpFZ~D< z5T#l09i13u+ndqlwBu;&a_yj4Kl}aF#W!0@IR(1fPBUUBYtwEL*=$tS(>pSivKZDr z3gjvNQJTQn7d2jhloYZ!lVG5SQe6;yvg2!Yyoz7m+y<@X!%dQHRJ^)F;3^@tmSCCj z9&;>}mFt~;TgxpY_fK(g6kF4+E$G;*ifayq22$oHjN-4Q@OU|3mOaq5e;XQxM`=Cb zX_JEB6lW+|e{@0MbEV#NAb=tC87$Qx) z&8UmgHOEsg)l8;Txh5Z160dPG^wQy>v!A>l@iI2Zci8imy)W=QzZe~%@(~YBe9KEi z86zt9=_?f{<;|~qr~OyE4YA4}T-0D*sQg;pJ?O=d$0>f@Y(6Epc6(>b&Dl@tu|_c| zPk!1uqJewm+2ClHXj}R>DK5lVJhDU2I=m_CCi`bE3&oOiQe`=zQy6!95j(PHdrFp^ zxxMxGxHx4_XY762mwGo=R3Ro4gjV;*`53MI@wL99vBzh(S+%Lv&ei-7B939rId3+@ zs}KAbFt9$-1*l=2*D^P``{RUo$oPvN_<0%fv<0q@wtHoV$r#RBb2N1~_i;5C+kAUH zICIHoV})g)e~|vmPymjfz;+L<&;b93k*e5sk;1`Bi(74z_0ZdM0|;-yV>&8mJ<4je z`^t`^WpV0@YC|hMImtvC$rj)AUYN%}EN!5wtE28P&}8q&*QPs8PWSzbwzJgN3DOf1 z^#0@5lsE55$SdkIySOdiUj2N+xCJBGWp|sI>iq6vx#|nj4r>*Ip?50PcAwP4*ot?h z$8AixKQ&;9?jXnHnCWC2Bd$c9yNDjbVNPq1L*UEyOwi7dj;zg)ex;p>VJ! z%4F-j@|t1azFcZu-NQ8pghEmZ*>*@ob+YX0ghO;s&X}<6x7T7RvzCfDiXZ6HTPWU; zY-;8{`)N8*RWb|n6#%@O1^Pu4U^x&`0O6ry2Kqk_9RGuT?dRji|37YWfsI}C zfCJdK;Wz&DcGqA=ZFn(Voi_&p|yW{WsubDK-K{{_~5LJH4u{S(2@A#Cqz7? zmV%@`*sJZI5pf{({jUZw@K`U&fFIc7R3L0U*Z|AHoBh{v2tbn?@Nx)1R9_J6p!2UP zb5NrLY9Ptnf4bcHf)Indbix(mDey*2p!)AfhM)J@FY?X5<6I*uz)(N7LDuu&O+-9~ zdkys#;w1vB&RGL`TSrR{DV2j4fVT|gVJe`Xw+u)=ei5II>yHcgCx;-gkzQib9Ij*6 zJ|d0`zJlgwIWUNiUl=$mvAIO4ff9)0$3K>{dfZ-mE6dX5AH;2=ZMzXQ@&D zxC(t(_3Nv_RrR0>N_h&~lmwwo3?vE*F6F~SvSET7b{MloY5r46J&I30l0^TffB0v$ z#xGO`#UO?{x>y0IJbss1mH!Ti1}RNI)5APTpeYEJM*STG2n?tI`%4f87D_SHQAVb} z^eF$LPWhc+lM(Lm<0k8$<$|;!9z3WN3mJitQ*#y@*@Am&}g+kt1& zFP|$&;Rw7k|NOoFmBb2=qgJT{TJ^GBP7>0V6vlz(@sRP*w+@&@Vsj8eH-E6RK{fcu z3}~(sxQc*LnaF@^5CM`D3ndIvNfN;S3IN6l;C}@;v0YcA`A=&9%eVEXi1MRyY_9|f)VcY#-oq9H~?yM)LDjNzIXBBT>8b_he$o5SU;43$4(0Efx0 ze*T)Fw|czn$iF^jXs-)-8bpEe0-v5PaAbKROMRG<{K|hFqyDE2dZ11F`yGDSl7Bcx zK^O$2+*o2D%|IX-Aq5n464{K#x{{`Cdu~Ir=|!QR1DlVEeoj;BeHQI3DgXUex*KQj z`DgNrDNDT*U_)AGTQIvFD=-VXIi#I(f zY;?&S>eyqPO*?K|Hx$e6+&+GF;K7BfWU3-Vem<|-9c~v}C}MSB?21N4I-teLdA_Vz zn~WPYUJ}XaJM($gaz*rXp2;^OU5NJjnW+;GyUT7S=SDAyCb(CbqG)>jYV1!NnDH2% zZxt^^y*jCPV}Idk=dI+X^w)QgG(JMLC{||2J?0dh$w4hE4D1mkFAeHhN?$B;^xQ>V zmq=fY*qgnCM(xSj+$Ou<9=JV6W77CohHqAmo}cAP4??kjVA)d zdWA$!NW)b!cL_3IlIwRV_}yAq^%m=6pL@>L$Tm;To_RFj9CGzm(Jm*QkYQ`V%EqGv zEWrnlZrE9HQY8@BB0c{s^=shGmSDfgmFx;Mk< zhWYZh)Z}n*qYcg!wBMN2b)yJUa##}&B@0^We!V#ViB2k5T4x}Saj7{oXvdv0J>Rpi zU>kZ*O9TAw6gVW8mos^Ms!ZPPlrDGMecI8bGuO(^6x3293lsrpXMy2JQ<<%1S$r;(y;%y+``%M27(rR=tsl@!3=>k> zCmYsLR`*uA`d(_kWJm~Q%QZ5{)*U|ni< zwYv#+BrP~hH?<;0`7$BCYu~48ht-`@SPDx{ zZV@!DT`G~VkKTBcI(88)mUjnR(CKFDd)2Oo5}{QOPOZ1p2pG}1q#Cg~jJFo{NEXc^XSwe(aD zxscR;&Bai8o{($ZeK$imee~<#OSw6Ig$s?QbsnaW{V*q@Ywdpc#X$1HlkM$tBJcYi zh*1(gOy?|vn6WEhc_JnpHy=;QQ6XnKny3?=P>-V9vwl+C&w`u&#p4jk2s^rvp>7CSL zjMFFb)y01i`F`W!TKjgKP|v5uu1UuJXp-X#>tP1&DM{Zp>N!Q?1V7~LO?6y3A#M86 zdHwnF)OeGE`M1Rv_Xq3w&Ysw2)!n%j-0L%5{z$IAcJN0c>g9P{TAOT%bQWV{3bI|J zh|^)ZJJhQvQ`BpXZ<1NVCs`yD`B&}|)QV42SJxoI=8myupJ@619gEMk1LsH#kYYOG zQ-@J~zwjx6dRlf)G1TGRN&j|?MI9w;`pF9&db@{13y~xM=hSTmWD4Z)44i^0T!3d^ zHzSe^3nd~9O)>(hEEkkx0^|e}KxU2*Js6?wIjo6>5yKY1c$kuiw-0tLdJ3E{zpIOLL+cuH_|PabQWrh?_4|j-(cJj}&U0tqu^?E_ z+kJk&7c<(i`ZY1vNdD7TeSu^R7Z<+r>9nT$kN6FX7a+8$md&g5l?~LZ(dpr*x3Tli z*kq&6Q6yvQEJjzZap?0XUth=Nviu>!l(Klz*G*TQMgRB!P1C9G%U1Djh8AZiA_Z_m zgwp)3M^4VSqiH4>R2O;ttgr(VuWpVbC-17Y#a~y9H?{86XCt<)r_+m1l)m}E^o-^! zXW1b7uQG~>4CTSr^vCWl)sGC<3(=P4HK63)ZYdaiU8r|%vc0c#scP%0h_^(G>QxN} zYu(l^;YSxo1L9OOu0<BJB^w68^*-Yw%z$r{6Gu(ygt zq@nAzyp@uQuY3MHDS=Y_Y>0BX=N!b<8Kq^jeL@;SRO;?jmL+Mgt2cVD2fMkII#A^m zRXen;x%6Ejt5PWCu#s=ovygxFM6f6RTQz5Wq4S>cOD)#M>pDCS$&$|`xx9Xk(DiK^ z86y)9ys#p#hu-=Au&RSIA-8m8;6@Ric%g;8^gEW9>CcO^&rg1pmg+k(kcB_;MC-!p zEp9v7Roo6+Nvd^{-igbqa{?dY;#j)cd`t9Hs9{>PP1fNj_qJ+CxW5VdvPUALb2Drwu;y_MWFd=E>wFerV;t_>=2zk`B96s z;n>jF`;nA0jh?F`s(X%p&x^-pX+A3LcFEOzyutJFrBcr$4&yW%@{H4>l*l^2R@K*? z=HkQq0kyUHL1#{uZ(z8Pz7C*PP<(gs3G+H$oJLsc*Utrc;auZl^WI~Rr%OKMIbbbe zn6P6lNLyN^p=)Wq^54>*S)236e|*!D;~QIjNCT3)mS@XAne?k9@q=76n$zHeDG)GY@w2f#r9D%U5VfC9P! z@W4gosY6U{GyfWGh|Ycb?&O3okyFtOW-c5fVVzE(PUkn9e1 zc#q02%lPuF#D6R!nD0c&4Cxxbci5ZLd_^vAgJ1A?M^i zIqA+~JHL7p^yLVp(L#>RvE?n60UesQQ(+@?&z7z=FB{YfzHlz4_Ib)4IwL2Zp@#u2 zsj6$#WBX>_rOrK@R@~zd!)pq0DYst5HGjl+sgzIKVL$BnYQC9VYGHxKIj64d3D2#{ zn)~ZC%p6lmF3#4E8ZM4MXYWKSMi;iJ#yNlP-Xjg_%P@L-QE_d=l>mGzqax*pV} zhF8_@G5mOr9j(TvZ!K)Pym(cIt*Bh1^0mTctsUGs*Dt8v{t1q(y(iHzXmzX7Vfjau zLvwCBiMzA0KF>Z5b9kLnel{zS|HdSDDzVF6VLrXKQTgqx_v=yWyibB=NmVRHP0gKL z(c1XtAK5ccQ|rcz%V+NE-L>yfik|8ZxE(w*Eq~dfalfydZr>j(lMCzK#06tWQQj$z zU+tMPGG2VID#d+G7egUu0Rzq3|D~)K%Y;=C|HV576KmOk+%c29)6qfCzH?oy2(W7% z@sG~xY2gYcM^6UZ6XKj%x@sM4S?}|-M_;z?<1u7Rgt!Ym&ao+m7-H;WFLWoCv06w> z9FL`$nD=KAxA6L^(uY}Ryon|&&BReWt$b5iS-|!L-Oc1HO>QTG9HSHx&?`mDd@Whg zbxC1+z5}rYkI#}Y$wtcUyu^xQtR22BT=#^wMQE^=$g?5G(oXvn5VoU|M z5>h+&0Mse6z_%G$${z9B&0jMmkYp;on>!2w$P2d=BUg4YVlP@R%pD^cC*+XSjwNYj zW=&VkASmvzp-kN)u+gbD2}Aqb`Pd_VwkY}9MH7Y3rR0(q9p)YRd#QGc9yMra749XY zK6{uHeMXzgsmX=kas>pzKJ+*T!xdCNlafarQLImuM=9oifGOH^64)n(&u!=>Xa z}HL z*~ZeS&8#tp8*b!p>uzqo3_fX^M~S4&@XYrxvD}mAxaa%CR!z%^FrYZa9xZ*xpK)_( z^|r}4-hA7xYl52QHecIWu2Er91`~t(>!o|z!Z>v}*@e#)&UE29ahTt)E<$M-sc+alkm!B(k za~dVSjs-IB5zi-i7#}h!aA(sY%ZKC09{@Ef>L3>?-5=Tf(IsFI|8pcQ6wN8m50!q# zLqhdZ$U6|{z(HpLRvuR9!|;&{Jqq03nk0>6rG%4%|7;+Ds|KWD6)ga8WxyfK8|DPx zS#kbvlGMR=HI%Yj1PU6K}KSRD%M2EB4;qsFS;2uXQWuac#bv*)5v2N zXJp?#*V)H<`$vz)aat2M+-Kq^`i=S?MmcN-r-!QX&7hOjC0F;7u5T zCDPJQ*RiKCB|3aXWYK^5iUUHl=0$(j*6Psy^k#5c@f-5@tE+XUu`fOLHF*^YnI6(A zUkM7E>N;}{nU6k(QzO^*?II4(N_wM?kl5{;bUX`>IkqmnFnel8ZH(_f=CgbV0|W23YD_c zw}#J3w(39f9y61_Sdlu0*V&raGO(Y4?YfAmw-LHB!Lj~M4E^k}n&2Dg0{5-hnjT{- zve3O-Iw$I4#CK?nHQNkk)ShgX^)QO<+{1|LP?&tSHJy|>UQ zIW4_aLALb8yd8(gL?#(aB1jG^Oh9URC7r6p`f}$N7scxZmSWQ%qNJ6+GzSXE>jazD zKPmm(_YmV2!+l$H;H#D#gMxlNSLr9xC7MHc91pi>kpj0YKR+6Mxj=zjE>?Jcc1(s3 zXSOqJO@=7&*{OlTegywR=XzcC`R*N-C}+D>);0QX22Y%{%0;u45qa<1$;1|7o1UWB zKIY$R;f&GgHg)^Psn^@6Z|q-sSC4RJv$=?*hvAl`=o<5hMD*0B8QKXfYncpcC5(W-dnFcXkAb@!#Pva!1pdAa!~=CzNsh5aroXa;)u1tkV6 zztjFL>~WKDVAmpWfo#jcJgvl)32pNT}eJw3I}{P`oCC)?jtvI@QXFFCFjg zHjY)e+AvlVCIxuVB^MOmi}kX;`6O%H$t9%VM~7dxOH05$mT6mG^x>x&D4`C^kbgyn z=~`cN^>nwgz6QiXsCASWw(YNh+2CVBiekZlxXMABU*qlJs!|ms3p6tDmv!!_1Pu7w z#}BF&!8p*RNuZJe2$L$36@0N4)5Ns@X`=aA8vj{R|C7=M_91|?DEw@*_(k6Tmy!Q3 z_b$zo$kTutewrqxgo?xYxFLBp&sWsum2KRQ>l(i7X~E1C^^1#(*;Nd0Jvy3%Q;o37 z<1i(|(HKs_7I6mt6{9ag-yp?DRNtuTT%px8Ux*mv&3s{_wZnbd<<`Xz8Z^yB+1x4L`^=VSyT;PR{ zwW_g?Ir^I4@_q7M4=Y9=Ds6trwb7QW1h%m+V(+fZBM}06@|!cObqF~`d0WQPqW=dI zAIZymvL_E3@v!8w`yggtA*{uo<}sbd4Kh%c1uQz_s_c+Z>Dc|+!E zMFF_8maBHe_J)dIRyR4}XvQw|wj84{&h zN-XhLLQ^WPXvChgaS1KWb=Do4=CBF0!-xC(ponxh@PQ^i&E;$_Ph9b@mFpFTgn`%>)r@>X-d zrqASER&^dqzgIa6R4>(QP;Yhi2}c!58FChOm<>w84c>K>wgx23(wm0pfD0hmQobXW z0~`N8(%w3*if;P@ra2&ugmg)F9=fGNq@@w1yX%nBp~Of^Bi$e=Au8S7g3_rVA@UBQ z_g#2%=~(>#nj-w@_C6EB`2a3(=X;K{U8 zYJ$qh80*l;>mPSryh0~sm+lBkcA8HcF4r&}eq!<{lHfq)v^`qpZIFZ; zV?9ULASH$vt`O}+J2!tgKO>SFMeDsBb&3_FT%B8FoZ=V}O*F4a=IZJ&BZhc;o`~z+AmZt?oDU#)#nT!&(N+PQCnP=JH!X33>2>J0vUexyzRib` zR@&mG^j7Sku=eoP*}+b%Cnsu=dG^n$+5E^!^X6T;WcO2Z8kU(v&NKsPUAlX|UznL1 z`O_-S24Hh6_^iQ07L0}MYQ=!6eGvD;e+X8+I5MDtc&VSr=Re{xP+-`JltJnrZRu~e zSApM(vI4&qWd(i<$_o6XodyG4pkWOZ#Rqa`z)F~a0CgmwTmvErFcCh z0)X@hgg{jqLnJ_5bMW}SvtN)cklpG59s^*Z4I&;uO?ALa8w5IlI;ktJi2nnA@&~lx zf7#7H>uCOBH~&b7{HKNeZAE{Aq|?s9fYmi$5dsgWVRebg3=A2dp#gb1AZkPj;LwFQ zz=FOZK(T;l5dm+zsl$f0tud^c@7yB)ly)dn^~z2nf9?MLvIaJ>NX7-*VQryg)}}Ab zUMa%CKO`RdSm{sf;vHuVt3H<9{xnz2R9+&o&D(J1=CM_82^bkv%;l7ij`sEC^p3?W zS+$-O>t&(xDZ14v9zu^tMrF*~U$=;OZ^M#?<-rf-+ULCWBz@t|7JMpsZw*;^XVxCU zcMEHf;CZ(+;gPzHzYj8~dBgyE?oZBIz9 zV#TWP8^pcf7(}m{lq<*Yts{dc=3+ys{JxnJb9yNk>nNfktC!@OoVb%gMhbOXI~=em zS)X^6`==bFABTcj#SH_D~0ub|x$I+Ux-Xsez`RFbz1Hg0$nSejdM`=e!`1a8N zT6+OTDHnmhXY+&c;zwj`^itGUy3OW=@_@xwR& zneE+Xv@)wR_U8)+=?0K{W~pys{iw8-tY%2|%5}otaRAr6Hfmue=8Wceap8-#I9{{` zLb<}i!r%o2b?OA8RFti`zLP>~cm8L~S?$SBF{~{oF4dKMpyQ{Lwo}{QYG&%1I-khJ z?nula_P;BmNOyfti?|6N zG14!u?r4l6&r>xYm+rmrRf3N>9D3F82ya$l_q9jsJr|EF>ceF6Ln9)?k?pM?q~*=z z!jH@JzVi06RIZi^7PO=ahQlt27&(-g2+RTwC%2m~irA;86k)W*!u_scn24)PgOlMH?Pdvg|Vx{iVjv6;xFdKlv&QGu^SE67Y*9o z*fLOF@qRDZ@DI$XWh%D$?nPS{`MIyQ_-NGO>v!aXWHh*Op_fFI#P~eW?9=WaQ|$g9 z?a|_eD(^{N*#~CiO1|UCG?1F;Qfn5K-sU7D(IF@u64OnhjJO20MH|BYdW-oTo{2^&;Y`x$MA{?_t_{?_t_{z8rZnSZ7> z6~7G(4`Q+a?+wAg`ok~aM9o2@B6dA_-v{1aUlR_Zf)JpZ2F~;v#^79jpIAj5*fEAk zT~|N0A^k#3+L=HSZbSdZRtH`(bu9tN$88G10ry|#kz)W{Ou@`Hl#2@pHwC|}J|BT+ zR1v|%`mdizf0?BJnCk!heEMG#|9?*BzhQtk5W(M*J65hd-i;Ihs7noESkpl3*<++7F$RX zf^KTV13Sn|B&4^2L>#}yKY=_*^as6>=KQl$xqo)5_CI&(4G191o4rgvCi5t@2Bwh)l(4yFJJDba4| zqplUcufvM09@kHf8>l+R0*eGdozlNVFu+Yd9uSbEoqgS&xoOXXZSep9TAlzNP2>gcl|uFJOV$8afV`f6 z7TwXGO!;2Ndf3sz$c8L&35-Ts9OHlrw6in_klDuMl5Iq z;3&Zj0^ikCaDT9^eBGY7X@>=YF=Hr5vf2Tz1h-X55D@_q+NenXzv-y2Ps++b0KkGF z!Z6yqNr-xc)oBQLj``1Nd~oWcwW=)4dMbA+)V}q9kngmaE`1=lCV{!N`E50gpSB_7 z*;og5ZpTVQatKdqbz;IuqOPQJ4kHj5O}{4eQFGYTHYA+g-`~fJcP&UZ*Mn$Xr%QL5 zt_k{WedO*U7vZHp-*--Lm?w?h!;;ZddXT9hSGB0_1FuO(%x4i1t|m4D0kf({<6CcU zO~rY5$+b8rJ6q>j*~X;zF|Lvss$S|1A(%d!C^7AK)Aaos;+x5FR9*g5Liiw$*@2at zd4+?Tg?GW%AQS6@TWMXyyKfHKUfSzV^cI|+y*0S6WS0GEnH&0)LLMizyw6E=?S2(2 zOq4op2rwVkSSgIQ(mWY%0T$x3(*9&sLUcdJ-`;(ql{Xnb^iW{rqg1nwGCA&1ib|QmLmyZd!>A#>u1R zybC>>bsQVTMfb_K1QJ=#Jq0-4$%?`-U=v3C?q9U#zjVJ3xmqBavGE;U9@8>%aAM4f zJ#gnewQ0Zq+>wkiLq8Q=XRvd6dof|elz*2m)!Z+>91oL?O(F8orMkE0cJb(g*@ca+hIjINySja~<@4_|RQGVkm=O(rARn(;M&0FnN zRqXFQ^|S*~Q=UmP4367~6h*3e4UVe{ z(`vhlcMHJ1dmPz3Tbms0{Zy_qu(_e*9jbZ#F@+CE6tf`@8>_?Jp?+O#1x@)265!?e0FzyOS0$@~35-~MTT zjnlXD%O&HFcs;t(JJu+cd8jXUh1MLuJeGglF=jN!uh#9EoYa5`eF8t;nrTMyfiDrO zIqIY-XG*TK32IKwsN`DW<00@s3g$(V`dDa-U)3jUnpfR3Fj8$=-pjHuBNLgFeCVWR z`q9wkr4E1U!L;3yZ6w^cfjcIxsnmlk5@BLryY7wAb{y`q@0^MhBYMl5zWVq$c;leS zS%R}nz_LwCg|hoWDv2pVxRS2aorH%H>4+LkA*v;ss6wqhgnrMEJ-;tflB>h6Mp|D& zA5y#~mxG&|GT+*3k*G>sxfr;m#%L4Y)LLdrhvV3{O0oB?6`!fC>*Mwbohfc(f3n=z z`Zw{#Te5>EW3n26AuQfNUr0z^;U?AfVf&^$qKvV$& zW;9ZO^F9JMa1a4e0|0i=t_(J*hy&4)*Jzz-5ajdIH6Fe%gaS}UK@tEZR&W;%5f!oI zXov>z^m<9m8o~j@MT3^Vj14q)Al2x#S+|P0c5*>_KK~eSn%@Ao04ve__&{$A7`yS~ zL%X3f0}avjO5|8@B{@IZP0{%EQ5>9iH(T1Z!@tqOt%QaiHbwZm5ofAR)rMEX$sr#abZ{4K7u61&tLFB*;0+y(Uro ze5LdL{^vwz?l8|WSv9TLw)&jNH|pD&h!hjM0sC9-oa1)iYb!*XqC4-;Okh4iiL-Wr zYseeVw~?tF^Y9UP!PFvewFx&744-mp-YnDzrXc>-_=Zn}i-@-JzkfKr+M^w%Upb=E zrEFbEGb4lomMr=+>`of~2!A~EH9R?UMz4|0YSrU=^pqXLZ&oJ1Bjy^0@XiOMTu+sF`pa&sP0zY}*xw_bt zz!3`pG?TzDxK@5NWne1_9KZ$w;0tiDtHuLFCWD`Qe9-InVGNfJAORqmz~J?wV}TkU z0C@qC0xYD##Y%1!9zaY>6$QwA0Y?0AWmSH;%_J#cN={JbxBmwws#B@yf&G;0FdkSv zhM0OipuvV{Do7Iho);X@Y`Oec+W!r~_UDJ)KMd&qQm=Cp-}{gHF8Bg*0)QY5(h0*; z8She!vHYMHjrT5xx=TJ{S|g@{r|-Kn*Gpb6!G;1U3I8$rS%7$yGulOvn zn(ycvm2eOet23P&A9Zr1Qr!J$IwNk-`k9lgSx^YKSbjK`X1;x@DJzX2M%bwVOu+dr zV5jxp?G$;6OuR$QLjQn_DUs1u0iP}fNs(t76aNUqlFBqqR9&=3FjJlxH=>AvdxJdo zcCO(wY%K3+%3G!gb8zX?*$BD^s+G32K_PkN4?EoJf<*R`sP7|nU{gR8AwD#)*I(Cz z`%W;}XOPP02@H;0ZF@4SEUw_|ch=37PNLZ^O>I4dUkg8dxsNmzzDpkGW9;KyvJ$>g z%8GOkqdlYFn~2hhH}snWjVH3;=Ailj4ZAsUl;!wEU%tC;AMWb&rg3&+>DL4BVGRR% zKkP)pshKhfHbrjbV`HEp(LQ_42g|(>Tr;IP|HcEPp~l~%N}Kk@I&bHQWzLwM>k)i( z8kLPxE#Aa*^iJ)P=;NY>`(>%MA2L&;xJ#1aRwL|C^_B_? z!(e>piy>5Xw;9F!V#7L@#Hj>koB5r}(l3oZ_RM9@LKUK3{%mV+pVJ!Sxw$}TN|n=m z{rOs$zBIDrjrKZE+U~2=J#j*84s{QqFe>X8QNFt)#>lFNa2VtgQ{q2lZW<{*z0CZy zH9-~#_>BHwePd$8WbdU&jG!$HKF6TS{o&_jHMCihuY64j&RF+HT7+9fU-j>W+I1as zjZ?RmUUau1Cj~mJi;}H9DY40yFxaUl`&jkR{(CVcd(_w7ouVbFJ%cLZegc2L_aQN# z3|@?lGB>&fYnXm@uCmu;FIK2WTYGXMos{2wVz|n2++D$J_X(RxlB>X|05*GnJ-77f zWs2DRE#FQ5PfJF)TdtF0pRP7)CP_qJmgDh$6WDz}5p~aQ;rJ0E=HNq>5S#cx_QAJR zjdsXtF7NIAwE2uHKc{%Srq=g65~=-+)mP1^h`+sD>#-+eRrO(Om%k}wbH?-3T{IEj z4_%&&OPPAV%I+|o8Xd_<=36KXj|MkXZa|5N$T)5>4pAdT1|hwXsEAdPYfVLMt8eU! z2kN@qLwEv5n6{Ec;ipwe*w_lXoLen9HKevGLJ6-sQ6v^8CYub`l>>60d=hyMKD$-k z4dSI?{IW$SmOk>eNlvJg z_Y%b*2p&+|9!;^ExSR|`IVU~Q>2FA#5ZD^PKESX%#L<)5ZTB!s=?WwBb2G|A52 zF`==Z81?etfa^yi!#`7gOI5Hw$~YYl%k zS&FwpNwTsQ!E&o`3m?u9;OuHV7E&raDJy@!SN^4^E`x-qT^Fb+?RnDF^WJl`LR7i7 zF?4m$a=A*rgk_bKcARm60QMj$p|spB`PN3dfSb0#7ES-%k$18|n=r*LM?GePb)6|a zzVsl3FC@;k56MGUUg_M58GR#;*{D6Si-jUU3`JI-rKUfdwBH!WtRN6yKRTd6>gbEF zR%@M(uWQ>oYTm^>C4cx~U4~tlh#{MlGw_I7n@vIc(P#8inzyPA6-t>T9SCo&;B8k;^=O9dXX@9etbAdxJm9BnpEY z#ggZ1o++M&!BS|l_nW2R1QhqtZ)4=?1*{v8Y+QNeNab0UV|v(IDx(Owg^tWUthg}y zDg{4NW#vhpyqBobxZmC&t;FI2cyzaVeLrZyIk&D>=3X>qCP-4jo};&~NH9#HKg61; z9_VRmrfYnesG};;7cJ%dxt1@rGGJucKWSP!$yx<#8M%X{9#dpumif{42EiM7y3Hd+ z0jBLN9lDRV%TGHG+|a=+3Z~_T9RY1LkjQ!(hXkP~k3K|k=hoW`p{fjEG1mBwp8a%G zY?CZI$#U%S;rbULvFd2%w~iP|c(PLTbMXY6TD@|UIx$Z6ICszEBi`=Emy=IVoGwde zUByQ>{s?AC?(33G(Rp1*tNWFM_I0AsO?<539_UD3XZ=9@$=|&L0f4Ioje#6=4{o;o zM}YVSw0)h?3&g&K4@}E|j&MvH8Y&Qw3ufOuWI@yZ6H0xV3weeQhLOQP_#@T?NOCKI zr1N>#UabHWn9uuZ&Y=KdKIoqk-UH3~9=FnekKz7LV9Pa`-M`HF|BD3O-%E3G{!MXo z6NnKyzZ0j635P39waxFM>+6m+ z-k3}bTI$>9qlZ1sB|MLSf~CwE($>fOgRmx%6r+}A-;2xcuQ~%}AsOn15oSZIkBRR} z=_Sv2+as^$uo36DGE9kcnz|Ep-wzr^N>jnx)4UB@@>d9q>q?+NW0Ol`@vfe z5;gXcd{)Ejx&o=PjdQ}6$D7kXIvPM|I_P7{7y`4jOseTV%A4$MqLD$UpIY{|*aGlU zXgITB*;LercN8_yh3^syuPoeSet1}17tKVhdKN>B`aty+xz3PAy?H8xQyLce;>WK1 zv-l4E>|>i@Nu;|z?pF?2W^&}bn0LfwiPdW=4!z!=lD9l2eqGR>g!}eU7jgVpjfhNQ zpw*`8de=J(MuN@07$u5_4P`+x=tsi#l`Ph%jBu=EaRO0C^#)IrnqT+A<(kpF>)w}K zV|YQ;-K~CpI0T`X(T>{+uy^W$b#T@!YRjKV)u`>O>dH8ogGt9OxlKtbB7({t#%Z(1 z8i=}e7g=KH#~-P7VRLdhb{UI!~W#Y&|2$_O|hrB4ukoJ<(5 zksI!ha5^ z#^zR z6*6woBhOHgyQ0`cdXGDTj|^j%v`&|)nb_!ZfTnhxd*GtjyxQp4(eEHE8|QAKxU_ta zhp^3RV({{9ziyCAtj6X?XLp#lz4Gq#@`mxVHy3k^=Qy{NV^qJ%mfLJ}ZQGXP&uES6 zHF8H(CY%l*zz4fRLgzExja|!#u~s(}r^8 z&swnCy|Z$rLu0}CA?PeMDphSU`@LqZP8?dv)$|u=dzGRkaqS3FX)?xbo8PUybhtzA z#Jvc}yrYalF}ZDk)(#~^v+Z?Fk`q{-!n*(DXm7%kG8S_;`?it>-K%Ym{XPU%7D;`4 z)Y+jLXG4db*`CX}UJNJ|EZ{XoK^}$9k4HL^kFw@;D@tZc_L@hNSHvoYwqtx2rnQ#l zS!?E+nqRX|!Pd0Aw8X|8DzRECr0e%yAli;RwdxJI^Zl&>b@2%aS&TVz^f3GV3hMU9 zXW0->3rfvK@ugGspwh;NpS@T2$sZfyvNgQW7!&cK6_xHBYk8_3>Ih?-qUL%S_(l(^ zwPpKhKT_Nk!JA;}%ihz0LgA~*J&me&n-y8N6jzUOnYly5X9<36hQJXc;WuYDs6JF7 zs`Z-ab#Z+6J~@;krR%u?yAonR{AmpP-G}yH&R@rtH(LrGuC2d6Rdtn;P{@Hp4oHyW zq=;1LoMq$?W)pVpaV$}QaedDE@%56oT~olxq>uVV^=+nC$!rDd`{n*#K5pLQ89{KH z8N%zI#@v>1_`_DnRm|Rpu>d6fE%iL9V6*S9YF3e*0UZ2;A zHpD>J>21rqtedN2)UUk@`5TQ4e)zh(`JEUP;-QyUO}$4ZBaG2mv4(v|(b@8+JYmis zEUC0v*HUS#*V)#3ZRJ__5WiznzSod}*qK%*o-EzBT=L=0>mUR*U2FmLbP0wb)D`CC zOv&8YkFy^J-q*-kq@1)L|6K=06PO4OlPMkF40C`ePf#acI!R5R z7S7%au^|!66}FeP3rh=1i+fe(TAQJ?XZ=ySN-w0ECs6v>-+&|%CGtUD6}&Ws%Sn#N z$jcX8!^5?l>vBPX+zWRPOkYcxD6q~M#90)=nW$gH^@H~1D{YBZjl$x&dBL{QR_Ij- z*POkSJ41R(1?79#7CMqsYPF?y5B4Peg92_Xkb=)&{&rG@!k%k76lK_8G|UY5-Q!L+0Jy z4h8(3D!X>)2OCTQGp#Q@g?rsr1T3~&<|hk`hw+FLgD`o<6uWxg&$9kH`b zQAxi0;;a2B1t!V0!c0UkY-{6}?nmUs-w=09w_$p}pYWux3fZ>2Ppge-c}MM?fBq-R zvcplX0K2+Y!^ab4T-ZBHtkLs6Xdh0?nV)zWZo9Zi`w~6xE*Jy^yx*;wc(2BW{dn;~ zRrsKl(VobQU?}jaiT#8U=)x*$PKc>?+i|5VdMSZ<9u3Q-%0_T1eF~3}C0n%>Of2nq z96qu(D}wIce~*3wjO!$WIAmVWjks!9Tb61(YIV`_bKx2 zPN`!@s^G@`QB{27{xqx%!A(8n$4nn#KbMZxKKUJjkg{NFX435J@ zJrA7LDyUH3!{BJ!!}f37%4jJxGwi=Ojex2&8Zj_x36|jP9fA?Vs7go_fTf5g1gKX* zZ~-bs(C2fg0&6B(6v6$jlU4sU*Ze2D%%2|KpPA>saQ^(6Prjj(`5D{#M*uX%zxa{= zbT@y+l79MvKl6elpt5gBH3SM!tV*%Mw&0)~>0iikP$Ezp5JgTub;l8L7-gdKQxSJV z>4T%v0&@_H1ZkqN*~?Ku7UcW9WD1J80&jkNKMAAGhBiTcTz=R?a}?zq1{aRQ8VWF1 zH@ccvD2cB8ym~b=Scnj;?gXp%Y2uG*rnFC=;mu-ZTGYIOjf(iB z`5E!PF74Aqcj{1jw%)gCk%}#+{ED%eOUF(SGa@`7%_e~5J5t-pl;`L2Zo{o}j%o}4 zBq6is>n09~7Og^X!K!aM-Q(NXJ!I-aZupu^G6wIv<|SCH4zo` z?RzHo=k*YGGS-bA$#NeeY^jFP+wcyv6jp@9Mitnv&fQ;dzmMXVX%w8q8k>8IHvS!V zD#IZ4*m$w5IkJCdV}0K^ZgSMu+53_GhD2Y+pJh4i$&Y(9_G%|QQ%QcDYHVcTm8tqY zF-`L2{;1xJpHP@;&D`*#OF>mK81HviZ`1pTjo_B?1>H9(Y2*E${kSvKL{_*npyHVM zcOLV=;iXCXOA8+%u=gGc^vxvcVEYe@wct|Rk~`_OeUw2xTkg03ku7=5x$(U{4aMc? zK?3FR8`%3777y|fzRX_Z?;3#l#0ozQ3kgjB!m=_hXq!VoJWH3q5| zq`ia`3O7r2Tbv~ZN#m6{Wf2f*9t4`PXJi^1sEuwEJ=3^*>QDJdHa>v*b?t$Vhb;DRt51HM|0nF7{0* z=;%TZ4PDm@XceU=4~V(SOkl6^9u#^D?`ARnJ8CZyC&LKRu)>&))Kcen@)yw~^@0Q}{H(+@ zT%FMly|Z}al+v~)C(zB#0*wv)WwF3Jf#@C-)p2HdMf1_&pS>Z)x8z{aoG+Wjdex*x znI2c}JtvGY3!iDaO3S&cA+$(4Ky)Rb#ldZbkTro98Psjq8D{qs+X|aVj2>{R^LL{LRsD>_YOVCy%rGYhse_`Vmf5E-zZgcjrkdM*K<6p?D4L7E}^sFjp( zjw;7@G`I{AchJ$d7aiqcV@U2~ILyz6lQi)L4QQIC!kLfG8RIIsFNl@>g7Q8F+Txa( z%<((XiMaT7ZRf27QPFfWmai63*;!02>>(E$vj)whR!LJuclVZQK~Won_8GHF7NwrX zz~k5w)+Qr|BwBNTavhAAGb&UA_cUo#yCt=QTv16{vF^xsU>6&Kbp-M-(t7Wt`DRl) zI%U~MD!Laq=@5j8d*TZ@)u~^mB*m%RXwy@V$Z$p@RDuyi*?J^%Q`g|4ODz#}op^zH7i9mk$i2?h)>lrc)?I}zV*B{3L( z-U+@#itXJVVHMW&>G5dFO!@ezgHC76((_Q^X5pfwnWc1Sq|>gMNOMMBZb|baekF!U z?m732+dVywZ_yqerZVWDjEkp;KXw@zCV7!@+Z__eUNi3yL;|y{IR88|zL0Tw{s!OU ziGa)sm{W@J?~a#AS;9(GSJO0);#FJsYLf5Ut+V#Q4ewLHov&=(w9?bsr5prggKGf( zx#~C5G+4@*imWB7=I^)?NyEFjnJw#5h-t5&EJ}DHpAv0KQB-`B{GHBT4+Lvr+9F8j zuOGWZgSIZH;b6AI_h(>nR6UxsJS1>v?Ul3bXYB2$+PXOiSqER@^wPgbstjY5d22I= zlg5A662z{iMO_(2E;)!j1EE?QVCf4qMC+bJW-4kskd!0UQwB|;G z#h%ID4#x2xitU5(A&a#o38oWDu6i+P{lw!XZY7fqMkFxd0=qeOXAjSs4n-?*(=6R_ zA*&W076nS};$3Z$M@0{3x>zH_W*bh_yXs)^p>Sew>~0xgqAx z>5j^o1Y`+q_-E>l{Q@hVb0NF+2QM+Y*RoLTO{%1jO6Una`tQsT?S*y_d&&#FLfb-m zS1p(khG-5u!!ah8FC!rq&#w?Ncak$cL@c`7P;yMCtNc=wa14e(D6B4+Y+Zx(j!OoU zL50&FnU%oaKt6mrdv_yD+~cAR6T5b1S2(YGHgJu;zPhX=Z>kGdXQehb{{Bat_R()$ z47l3zbKK96m0riDU12BeUSZD};!o#N`hPfalPKDSk!(~Sq;4wM`mA;Kk$uLgwNFE{ zQSojZevc7X#E+Y&PZMq(vJ1bVk0m-kP~4pM<_Agpd-H9Q06Rm(+QtYGVF9!>@r=Wb z7w~6JecbTk{o;!aq98#AiRZArN0`Xl(I2>+vBLQS2~!N`(c5Dyw!#vAIiil68ZTY< z+m){BV8=y(<<5}G$B{IGIJdF;)JL?pZWFpcbnX)$pRR8$^2-?cl7JmLcWNVY_VrZW zqa`WSw}e&gzTSt1-lG?mA_cwG;uPcvir?7Kw&ex}=0dq7Yej}X@W&k%wL1wBK;6H+ zy(~8OrSYWDGKruI9$v#R-4$PT1d}5yUzp>rbYTb+PP_{J0IFqlZi#Jm`XJc^84_RZ z#G$Hmi&IX2W5aoKA>PU{&#;P}$q%O_xMV)Znu@IE;FKDC+L+KpX6*9v+MsPkmW`1d z5cXZF%KygxL6jX>BKW<+%qMz^SMWHxaEHrCy4QYwMwgyzG?h=_Ngol;!kr~U2L0f$ zCl(BPCp~Xe#P2lcw%N1}_}o70^f2}+aX+ZvN;Q~$e1(aklu92ej_k8$!r&U;XDxckXv-S*a*dh3q@U%t1BZ1v^t^LA7mgRar^r$$$qk{hJ-;>Infq+(^6 zK-D3~Pf!+hACv|JB}u;F#YcpK;mGTVCF-w;C6J|sMuIFu_3%1O$q%Lv`;$Qx)ZNDa z0S^5$Pxz;!`4`vnPj14$lS}?P1o@|Vmmlw7dr;pzR{<68X@ zPyyS3*&9$MHT>6FBAUBE*G>DU`q<_59`JJDaZvrA$NiLcbOzhNiaxlu>}Ksx4afDH z_D}UjnukC4=ECCuwSsTjKh;Xf9--X`=|Ken$zt#p(=E|%v`V3Z;O+m^Di!=m;rd62 z8k9m51&Onw4gO>24olp-z|kW#aIArcf&!)Vz!M8JFoq2-jW~k+m~DXuJ{UnDz!1F9 zd2r$9rjBjVy8zMSUrW#ALA5^(aOrx-5k+vvnBSXlLqHMB_rEq(8G)M+p8P&p3V2&0 z|5{??zYBQ$UV^hb?Z0O8{{S2R{vKQLLSqA{t-wLIHw5W`S8k{rhG-!pbvr$p z04Ty#iykSrK0}>4KbvJS{82#&Y;`n#ILy-698%71bR=>!51aI)1 z*K2;(OM#8wC?Ub$03yNP03yMkQi@;!6iBZPN)h4%lvd!^E~PuDA^~!>u>d?%APlt1 zM_L)6vgSYn2&N$-5FSo;9wsU=F#y{GO&6$|1`!k5wNki1sRsxkrJ8{RgHY&0Q5q6} z%9RERoXmhgj1W%{h!H&tc>o9pposzGb0ESf(hEG3aX5-tGJ^n8@;nGjIt)ko$r?lp z#LR;`6a@YP4}nj$j)xx5i~RMr2!ir}I1&s%(gKLN5aiN zVq*fB48##Y#UT{r{|SKq^X&k&r$EgsdZ^$H-_n0_5eoj4!n_{ezqzdd$t3C9fL9RM zs}$o396`RPTT}0*R>G|pV`BzRv1Svt%{mD#XK9!*L)CB0tjS|gBhRE6a#`}xuc6TXlxO%x5aEUh)*^M%;TAIIC zE^?Bi+^!IatXhVBybJ>?)|z#IJrj$)+RNRA?!Ds+k9G0Z#Y_7NU0m!f=Z13|*%f)5 z-DSpGa@nVqO-=NS@MokloN-cLtHy+=vZXvfZ%j>a3^JfCq4$THwW>*(GQ9{U6*r*R zZx&wQL%NJOADbg+nw9Si5)Y@t)@v%@KJ|S3obRsW$E^3TPb=|+Dwrg$LB4}`B}wnW z3x8ux5wUj}%d4vyo6p~iFBe3M{bm8Losl;mw_ zCtj8*%q*@MIYp{+Zm<?8O5J5hCMBb;QL* zeYjfNd*gC_KP%NFR3AO3CH`B!ux4emaK5Bv$?!WP363xAHtF~*$3GRUANCf7M?{wW zpvE@hxD)stmK^-9F8J*7Ia6`fc$Zxv#xQjBZ5oY`6oL{BeW-K2#iP7QKKljI>V*!L z!)JK!SwHeD#e)|Dp*vrdEfv(ln#5}4WhZn>{K-SMCJRMMr$`UV`BqjAotXnv# zw%AsG)?8couFHe^zC(zqbx#M+uAZhjc{nrand)>7H4J^gdpJi_+*;YJ5R+GynRO}sXH8&2ZeiZA!vBKnH6+w zO})wO9+{VRsP?I+-k)&kk*dj?>Tmxz8GPC^m(8j4&DB^tpXi$#Mn}N8v$<27{(-zX zW^>n*GC~+xr()fPPE^_P*!X~#1-6rUWW{T%@T+NFWv8^lF|kMU!IvAE>{3pM)X(TV z7x_DABQh#$h*{&W*7^(khkVpJRvBnup5I?WvQB8*c-aLhvtHw~=$G*r^|dygR6=#0Hz@d%gXs^80FwVb=eY~`e+R3h z1VJqfHw8wZ>HD=^5diwXgSAcIFUlo^0sQa4Wr>?&ng43b|G(OcKP~&8d5gbfDy}gs zIDh?u1V9g$6==LRD{NM15a7-a5Qa+IY88}0T&cE^{R88Q;-!k18pO7X;!x@-Cxq}L zafG_(jC0Pq7pr>b3kJ@}kJAs89QeI>=w>TPd}ENM#A@Ma!|5UjPO3Epb>Uq5*k7`a zZ;28@S)z*T6W$nz=~vVVQNY6^5gAGFviY1cG$S}89uE4}4entMg&_oH*bBoJMKg4c zd-}vP#XaaWS01GVdUEs{WSZbSpKrLgXoIS5P6L-}{RVw9Ov0kD;cpaa*A~xzZ54y!_lik|?xPs-^|4p^WZD^Zs$`{K#7u z70ed{eVx1Ns?8HL$UOM)io1NQfu~t$+YjrVl3G6#;6^IUe{6c5f^hf>>DddaA1&ka z6+3E%TO963&4Oi#6kh|NnJ6NvzP3OzHyc@N`PPYMBhwKD(~dFfCf_s?j5zpP4dGrQ z*+ZD2?fuxLw;!KL#I9S2deltKdRA8lpptE5C?ZlWk3FC_)XYDQpDc3LvPdhoMqD*u zC)xSBubjX>6)Zicx5B~a3rmyLCx1vAl)!mFAWzgj)i|Ca_~Etq-0hTGQl~XrR)%+6 z-kR1^rao3|M4TKsHkl;TR}x4nNx@Yr&sX*K-cn>S+tkFA3!EzRmuT-qV$o}yW{rAk zSkA4-_YsN$g{rZn*kr}pjUO5Day^xo?}(zIL(#K-!32@RwMj@Iw1!1f$;CUTscik= zr7~TEk>$Tvm+=atsDd_O&5{WaVR=1 zRrr0zkBfDcw1xBp6gdJm{8kK6m!q$9jbjQ7%Y3VqYB?UoZDfDMWiXmvAaJh{d42E- z%Y8aXKsD^GD}XhVJthQ0zq6XB6ij&Tr}{jL?sjwU@fU9dWLYJZn8i@8k4`19Z`H)y zA-%D8eSIiN05W8`3aU&Djr|6f9C}Zx52o?+ALX7E?O+|yo*SQyyyp^%w}%S8jjMP4 zV0VDuFX4JVfz|#E+TL})(HnV$ZSa{%NW?MbALzs-yt^)Zvkyvu@R+8^_HG}ZLCNmGNo>1R=Wx7uxZme^?`#3Qro07lD#O> z=k&1lSI6F zFprxLnz5(*OerLu`tY5U_m}6tm%dD|J5XhCnBNwd%wSs`9-C`0W+t{?6s_qij5BWG zY+)tc@jFT#*~i~Eq~hfJXvF+w(#0+Dvp#v@6K#ZLS;H8((FRse8s147r_lZFqG9`K zp8%)&#`w@?Y#1SbY2Ip`vJH{llzpdco<18@buDUc73vDi&yFFn%Z%68PVLoUqr<_h zs_TGM&z?;)zyAZht(b*Hlds5&JAxaB8S^#!x>Y`|d!H_vpB3zBiE#+5Hw})ix>ltY zF2&uQlWt-`N#xUxL_9?BI7Rg}yEpJ3%*a5g8Aw*raUu`WunGSDy#5awHZVw0eJ!>1 zPhX8dpgjRTz>)=8_{>uUOt5MSiw>YbK}!H;3x5@U2!fGYURp5jh=PWT051GMLA$om z+1+CQg9GjV`~ml;LH@sfYX4E--<}L!z4t3L41gS9MFV2@nVA792$~6uIJQmMUsMdg z)F%?}DRFFoyx+#!@#(jo%}*Z+C82bdYf6e?4EyYA&wlWF`4tmwr5R=Ty@sZ=czJO7 zUpzhn%(&W7Zad;y7x|yVGE`BnFd$^0S*MdGHbL)*r<+e>N7)j_Mvi zTvPfL8zRdu62v&}DGb7Ju#0f_9=GT-g;3-&W(BU}yXiXo&~*slAKxAPmRB0P#rE>n z?dLe`Ty(Ez29D5OLk=rR-ax%##my!CCkrJnCwnNLyC#1s5)*9|j4Sza?3+&Khzyi4 z362U^=B3@`QG&}RijSOG8atwnxS`^_d~nqXs4`L+ zxQEdud%#J-CGveS*OvAW)9PiXfTF(0S1!+9SN*k~mE~bVEFX;YEun`CQSTV>M3#lp zw0bjfjEL8}5};FQ#;}3bC~Su%icJfC8)zO&OlpuBYJ=ba}R^_AQLMyrruN6+f$KGlP9X>X|F;JBb|LA6R z`W4v+%~lF3&5GVScfQeS9*%;c?XoYr2Fbu=%?y#3F)gwj8AgI9kRrFGw!)FeMm6ob z`;mXFDmb^-H*AH04t*uO+o^i21Y##rJZhf^^yS!g_APME)Z|CQHK|eQd=X_;V3cup zCssmWd-ttojT$y>t>m84Hf`M_ePF{n^XZgVX%tcaxh$T7FR>D{KH0uSPjF=!n-!Pn z%;TQm1D@nssMx@BbZXLRm1LdR~R2Mf_ zpUGMmmXhj(!6A5;IRx^;Idsl=&RM2&JKRlBiAk z%;Oo5r9F%rDL-5y_+;C+sR%n8E~73`4uj}kjgFN)^O)C3MWjTL6(%892;T?ZuAQ{A zEY-4gt@`vQV@(I&d+stZN(bbj){DJkQ^ery zo-^+r?Z!-&9Cm(C786A+m)H>Kw<;mJjMpzMoELs8QAYQQj zNVjd}VSyQ@@4y|7Fp0i(m?bIG73^UgQHYBs(C0NF&^sOcfG4XiU5tWL4F7oX&{K@^ zj4Zv_o?Gy41|wJK)9OW*il}3e5gX64+uO-w2Al#bx-Fa~blM}8i{IOLmp;y`zaZ>p zz8_SV^5KQ6rx(Be2Q);6eT7ymx9NRG>J%5OZ~_ZG!_fof9PIq`A|6t+7=zAzDQ`wEhcw&-s`uD-d= zfyO&<6kAB=j0;v%zz}dXDGb=Xu@x53HJ*HEY&hpMHOCTNP*A7*N@(L~uO& zh#zzcl}P=8K>Z94$U{;m0xf-ri=-fA&ZR_si3ag|JhLc}%q9JA)YXbxfe2tO2k8@! zlh}1Yrk5K9cz_2<2DVB-J?y1CY=RFOuS7)z0S|l#3rJTPve~X=-+xbh_TLcK-(}d} zb)~D`Imw0%BoRPj5nncv5kh_-qcAEmKfTg1 zz)heauW^Z&`uEj<+e4ZE$ZLpPA)SIe%2hNgKv@dv45U<%|C1-+F_z;^}mj; z-YA2sK1f0E=!!ICPGE`xVg~DVJ+(XZ`(ZRVtQW4%VT>&|l-DDSzH6@x=vhQ2_piUj zi~NFno#%du+2eN6S|ZcBy3hAlW9lXn_9E&g-m~gMtwu@;-Y>m@#IRrc@Q5f^6j9YM zwe0#m+vU#*qUk18d%og^sJkOc>*X`<8Qi>C{l&bXb%v=~uw z6jg$g9JW`q?U8FSu6vaG=NZ#)IT;9XGZER)Zz0gv_{%-34}2&P>Q&YHk%GvvsWQj6 z-PockWm1(*%>ff_QLrbsbA~jE;6`Z5yaL3!^d6eUZA!>{suuo;NSIJV^Qxc8eC4cL z93L_CrmNkj5~Sw!1+8~#8J|So?G`@{AhArInhb65{+y`3Am%YS*uX}1NF;E4tM-IN zyS8oKt$IR&m%QtvQ{|FCsP)2-B)RiVje}hbH9fXRM?vO>e%C6TtIr!a>d?pvy>Nu@ zxinR)#e1`%c+0D9pL~GPf*PIsiaunTeJ3~aUqI>j@c71Ax_zT|&)hNJG0-u%y!-6> z#$cur*UfQ`GS$57q-6w9dVNlMqUEjILOCU(b6cVM*%+iM+j}?K1P>vA9jXLfP7V^P z)A|%_R_vyeZf1RN(7fus9dhC1{B)62ve;8XhiSJbq&XBs0S&{j{>lf39PvBDkp;p% z3#zl;Vl1>#Bj@}x$u+rhs1Y*_&SI={M=^`D#G#RQsER{){EZlxTWZbC{CB-rBM{64 z@$cIc+ai>DPEl2(>R#K8Ev4<6-oBsqenH3!qFcCWr+dHtg4{v1k3D9tKa08h)5lL- z?78U+c~OnmzlD@Pfvqs`;&ToU-oYUGM8W-OU0T%|nUJGnd3ba0zJtTZqAW5w&QKuW z)emt;)O{+(huSh&PC3$v?o3^nC)AzQgPtv46PtCFJhM zYwh)N-!$cl;7c)o?w-iNN0_8HPWrL_edg>~o0|kL2SwAAv^nhT?XG*@K;aygbyRx{EL%Xu>P9r0V-Fo0v4d+( ztD}o{PZL5m)ewSaEu$jF7tGt@0lGqdVhFcHs(aCyr zC*{3N4gI%M6?9Sn;m5!u_Ya0YP)iF!0sz_YGtYbo9S4vhA!Y&$=pgCDqP&+Va=)oz zfjp=bE5J+-7v{iAL5wQEoE}bsz}jtk2xv?Oozz7oNXb5|Eh$0Z8N1Tb?!m`O!>FX0}3`7oD#mOuOc<{Wa_ zm-(~rZ+KLfeUo4xkoe-4rx0+1Er+eYv}k}W@aO)`C*<<_82IR-P6#m)IKggsMX>*u zOV7C>LMWF5g?auedGSD);fq8N!3eS|plMg^-%Pvzo!R|YCWIax6Bm&m&^cfu2CiR+ zBq1>tH+Ei!dRS?zEM17 zH2`NJi1feok7*#O0}$bV?bm6-qP#+?%M^xW0A;V?{2~#m6hM!S4gumtAo9Q~Kp*r< zgM&Kah(a>JANJp|4CILVXTW=AJ97RvNh^Ny z1Nr@<{o^x%NsQx_N#Jam2o?trT8M)V(2GNok)mDzb>a{Ym?iQ;|1%cZm#IdiBXG0O73u`f19^%N`irfW{G% z5f*iKHWs{p(WmwjB4Si*Ty7Na*LNTQcrl>tteB$RqT%Xlxt6cB`L**POifuOr8zcW zhwJObayy;-t=4yN%`Y&BKeu;X#zH!-F&z z{>A3U!{q_MAvA;HD{A*6OgmLvg4O6Lg6j)JPII;QM|XwbZWF(!)aSKV8j0 z*^lrF7I`!|7rho^LF)?I6iwTodvU&-&yl>=IM!@5JIsJBNHFI+gX+63SL^d(KX5|p zV|ER6d56JldIvsVgu8O)E=YpR_x*E}?y1kR3(GojQcWJTE*Il-D;R!XRc2Tn{q zG-6VjObhH=XY|MN!xd&li9R)>YS4rs(uq88LUrsARbbx0C(Y~1;}`zq|w?GH#D0=7Hf=r@CejyUHedSerf zj1*JyDCbW$CqK`Y4@4_vT|_g=iIO={&X@1&KOo}Xyf@OdbMuUF`q8tRTiccL!u__! zFQV{c176udSZe~m1?7Bp4bsOQ)UJr{)2pOa*Pq99zr8cOKoW4zZr`+)BI7RK<`+5o zoq#+!*dST)yO!^{PUJfN0_AB@@kCFKy6Q{cY)8dOVa~9zpZPd(BPpn#Qbps-RNrU( z;HzW%=6?C|av;l_mD-qfk%^Uo#bzEHJCv1%AWg}e*%QsS|y(;RqN!4uk_*z;@ z=^RnQM67rXUOroERn4h#wL4#AK4;Zi8I%dtKZOMmSG_`&4`01;;;4oZ5jKIyY%=}> zpFhR{&l9(<(!`?;_u3Gh`8WLNg}!%^8T(f0D^P8-$&?O}h>{F%b`mtE{8vozB394t z^{2kVWV#O(MJhXnM`#yOq4ziUp9D@K`84t(#5y(>U^w_tTSNv10oF;v2HC(?&F zb5esO#l2BhNhe-{3_bfzkHfyD$`U6~X(m<)YbntE^xk*otY_`?lN}K+>UAQ)w4-Qj zHr!UsM{W&5IUfwLx>Kv2$bb00mmFQA)jr;j!Ls#3Om8%Po3!PoP9HWGllU|$;Kew# zFys4c&1M)R4x-}h&1E7alI{dzZ(@waoQ~K~Yrz9?i^PhbCAWNb2R{ZymfR;4M(tJd z6_!A&UK={a$#F;c^YpmyPJK{{&|C+XI-8WAN3+`$Yiz}mfGJ;*=^N>WYu9@$9d)>rP6okH8Ti}ZjV|1j3EW94WkgUDkGFnmRNWK zP29f!!uUY`6C4S{K zqO5s^Fh;gBwb}?Rsx#ZyM{3kk#&1OukqOXgcoiSMWFL$XTE8v6N;>@|NA%ilTfkSUgTTLfDpTv{bgk!TMtcAQ3BfiQq{mpJRpXNIZ zvg8L`d^Bep?)mDCFrUpRm(=azyV;zLi?_xsFDnUG!Kmb1?iUu|g=VcnZE{W!A0Qjm zE`AXokJ5Cb8-8BFN4NzGTi^L{#==H-X2UYwZ)QWZqwLUyi*k?`uy2C+h5iV3uzde3 zu~6MtKzglOxA!99I*e;r#$xBA>eNjF54VpoIo}b#$fZuiqDUS);R-HMBb5uhO+%wL zS2?y?Bp%;9pVO1BrwOjP0C5Li?!XxW65!DagzzUr0IE0shBXJ$#04D;R*)O~2k!_r zT`3_z3Ml|&&Oqo{z|xh10xbO1cj+dp3*O+T^C@^os|+w%aOpTi8W>=M1_72HpzVcK z0YU%-On@Y|!yHu_h*p3||HWjc%tB0n3w9PXfKw47f&ynC0Gk2(^<(0Wg&zLjQ40)tZM;0vAYZ zQb4XULpbsR5)w{sK1!2Mq##KMIML|$NQ z6P*~D4+NRcv!nod4t0nv;y~lFI%F6P#(Kor981qF`1bl+{8={?idtv6z)z*E`}C`; zUIH6jLF()u``!~4&1^F?c1~XH;yoPnGXd%(g(2{n5DNSKXc5u3ImNs$fmy zFXs#lwPm+6-*NaYlzb5B?v6`)Iu&Z&iP|&7;dA0p_WlsRPetS1d5t_lL5pC_7bepA zmn*6PG{-HsXFIvAO`T}1SoiV+rrs0uiWKAH#3T&Xh*Jf|6hx{^BFjU$o}9(+RZ=VB zyDLbmuh*q25kivD-I(~XfgJ1Hm--G~wc#25`G%kT6+ZRwi0^0Qr}f8TPvU>}Jg zD3p}${UwxuEjQpTq+fn%NdQ~m_x^{31CH*4kM8_-8J&P=1eW>tF3S?|vinupA1s5{ zU#5ipb<*(X*Z%B-3lD$q+y2@2r*~pA2JdgM|H~|G;4O-0psWSn_6fY=f{b|?3jt1@ z4|s13VFDyjerX{xxt!MDU2HE$YngzflhA${9s6_i-$17?NB4lE!56$lA^iJGoP*Z^ z#i*E<(-OG_R+Jv;|7TjaZ(Rz0-~=n+eb3-udgM&xfAYBgA7zTGgBJ9v{-@vhPc1Qs z?EbHTJ%5>jFOzuOBEZB0%nz_3fGejw2QXp^Nkfcmv@wH-p`r+}&G%jXCX$a;uOvuP z-hbjPfolWke1Wi2U8)m)Q8j?ecZp;QQUW;I5;1rjLF3UV0sK)gh$hAcR3BvEVNwIt zcvwt;wkPNpW@`&c0=B>z!DFAmi!QO2xa{Cc7hd4YAUi7%Lh{#F1HqSq?JmEu$UnXs z*w+a50bJ<6jQ$31X(I%`71+&f4^|F;Rvh6KDA83&Q|p2eRP zT?ep-hWP55M0k(U&q_bMC-r9q$q}rK{H#biUTz2Q@&52;PJD3b;b>9++jE`^KqSQ^ z0h)b4LD$j=Vh&SXgQSgQCVzPY6mfa?LaZS?f7%{>6zO^(4#h#WFmsSl) zk%!i{!r<1{)^0+o&&9&x@tnlDa_b`kbj&st$#*?IzK=&bhS*976m(ue5g#$A^2S-G zdDxrqSjQ2KBr`oyWN;=i8NSG(q%qS}>QQDZ4)%<9N|}ZgkPcUu6K6fZzuqZjcrIs0 z5^|obk|OLoHG7?Ps^6_lJIayJn%0~6hTHhe9lK71;4d|-Z)Oh3T06_L^J9;m;`pi2&IQ!l6XJ1fyiCd!xc%v0o4dJOgqAvcFj8*r`1GtL8dm+nYguZJEHw7E$Ic<;3xB~x z$81qvs&l)NQ}0`%ZmWe8Loyc-S*xd#rWl6ok;yjfrYYTHG9D#o-pFU7Broh|>-|jp z{OWhqEy?LIU$-R``_G(3WKoGyNiRR$I?w08&5enyj;3sS_18%o9=tcMqA z*|#=kjD_(WOx+w?YqpGfRv5+N_ioyq-$@68uy=QMcQjg3W?F8Ks^s=zIkLpLGXOal z95SajS#1dms0!*3qsaR(&rye8)0|4@nZkpQc32Q~f6e5+9pjFEZVyMBVd&1==QSIe9^ntW7-(G) zkM@gxxW0cuiB_GOM8ikTcXCZk=sr7Xn$&pBd+qJ%qgQJatxX!9Ll!N^_jecZKKmQ7 z9IyZA`pEvOVR4z@+c%7Wforx*pO#6!nO5PS1m9=Hr(}M_yyf%;pHdDMF5MCH2LB@K z4gN{$69zmfX%=qcJLhB*uDqL5do3@iNe1Qe5Jbi2eTxPx~1q@;7Z34$w7&Mg~avDsTWdy&-9^iD``C*ce3b@$ZkV z#DdzhLb7!5uf;Oo2Dyk2nvQTo|NM!~*8N&VLR~3bfG2(6$@liNdEk#$BS8;ZxdDON{ zl03?Hd5br?p0!3^hQ#pN;c{P4ur`K^@;z8IF>Lg?X8nMe*&UT(zp1w^ zhm6BBiRX?ohJmdgxi{sgaHS+e5boOrBAjL+`%rpUA9H-ETm7^vY$7CL?V>0aC|M?WpnfpT^lqv z?+%V6j)Xw4krfz>c|8KJ&w13&_dl@2wFoyM8uF?Y$;{()M2+K&P+o|}v9XqX8$dUn z>+0;l|K|If0dWdf*I^5w0tc(*bZf;=sM}2Nye~oXSjYuNQP`FjMor|Y@+rH!9rInH z>Raro%+^S2Ax5p!CZ!6s94oVTk8XURyw!qJ6j#T+Wg~#{FeUL|?5)hYoX1^n6_+Ci zzJYrgWhrw!F8vj%cd03=myqhRGaLNhZ;{4Q4Ls*>opL$om-TO7rYZK-J5J0Wn`@eE zrSlIP7}3^Dg_ULY>s2Ff``(UAbcdIaHgu5dseX8mcqdWpB zXg53XBp?@u2EF?CY&f1)aj5bpyzBh>%vv>`=v8jNg~1+h$AE(3wTy9aGM^70(fC@w z?>pP`J#)jF>O)4)vOC|n+bS;*_a{CR9x8^k4&@QP=Sa2WDDs%y$aJ6m_M`Hg#MkYV zZf)k<^5a9ydKS5e6D*Qm!aex0LIm*fVP4tBh@n@RkA9745CyzGqOq}wLZLsQ=Km{V zR22G`RS5c*RR{`lZ!REK<^y&V4Pf*R$ftSuLnM(zp+IsnDkVHC4=b?i4@m=3m_aTi zR}BlayWIiLr7eC;JQO%12UH)Tu>#rw5CRnN_QHT|0Ne@!1-_2SQ~h5UKyZL*2~1qz zi5VdV(ELD%6VMC` z!A*33Zdq6!?`c3JkBzF4t*?3rK-8Volwa3b1b)0Y`7gGnzcZr@zG?T4U8;*(hZtZJ0rw_Co_ zcO77%<$N*Xn^O8h8WUhJ)GKZ|nMuT^0h$_NDOK{OBTW%HA00w0_9s4V#^&7LCe_*0 zs?^-l3#47+Wjx3EKQoRK>vczag<0sabgG(?_d|j$=m2|Vm}LrUke`d?5+~9`eSn+( zR(a;<8~oi4*!{Y92wJiZ8fUsRJ~oJ!|4`|qTr_yiDasbm#XEdFFq)0gRrq|kXTvF= z(N&m1-a_F=-}E5wja2;i2csipQPo{XhMjckga)55wi%vQeD|-EL|eBHm?d3KRL)yA zXhZB+5zAQ*Y=m`RtUT$yVerQDZB9$&Vp-c5ZE}KlaU!9GgsVB8kH>z+lLjk)nTge) zcMj89ns!KutRXeUp1mTZOeR4s=oiJ`x=Sq+NIz0HFrhNcq@>*ZokW#Umx$@3*yQS@4@oy}b6C|>g#N^ISm zJwc6^Gz_7HWylyUvIcFxtxRq)0>OnR__lvx^TfpBHHIP5(O9MFX=l5Q9BRqaw7E{ z6p2+ylxxbHRwdpwa3p!LyKr6cd1*gyvq+7t=`-30kHB;+|841vc$^$cF7;|_XT`Qp z#7;E$KMltewi3p@6sBYSF$@7 zGviC?`yLFN?3DPXlCnsg^4Z}2^RNKh5VDF0+FVUdjWMyssb8@mCQu3UOVy7& z7p?D9FYt zkjRH+UJ)PP>ZBEO>a;hd;_Nq!lAerQ4ZmF#t0vhqTfJ(*U*;cub>x2*`+4M(La&ml z{dVMoIzYr(5*F4!ANoJdx=`p9UI2JHk3m63beIn0BR!VDcz;kzX90pkAppS64wqY_ zk)#02Fo+^(&h!#Mp#m&pp)9~^7$k)ld;r`e{Hv}6JnKtHSb(~4xF`?OjqhMetSte| zOLPlxIDixZ>OJekLGmFP0XM*cP5xlh<=9dZs{gH51s9O0h>3HR@IxpP(gr%`?L|U5 zP>^Yh5`eFEN<={Ns6GYoWd#$P6nbUz{(b5A00tv0R@y(2%ga=Mpt2jv2Y8`@$=Ut+ zK~h93h=K#W(7@&Za^gWJ2v!Mj#Vjfqt^@dZpfBU?1Taz{R{5uz1N9Th9P}%|0cMoIcL5WOLBNj;RafBv z3KAgwak}v{APw$G&NG?J0QJyjt zIf^MmJIF*(f$!^vRe z@g!0~EvJSa_1^U7(+CxGi~T|r`|zN=f>BYz{uIBYJkkUIn+ z6k0~#*mEfulx~DiMEYpOu{}sO>dLJ}VTH=mlzPZxl8~weMp>b;J@mOY{`O?mcX)Ce z&j{9t*wNAU-RMUx`nJve>iekM31^2o89v)*{I+z*%$g149XZ_+fxy`@OfXow`{Jy8 zR_^$2{N{S$X)hb$J?mbSc=G-3e~ZgTEbti(5UI$k|{W;8QgUU}eNj4CbQ zUiJ7rU~iXm8w^wX>{nB8fV_c$c?&ygc#0f0+><=~BWuj-{TeHku%e6bOnOMl(O&bp zDlC~Bkkx)btiI3;c}yMgg5_0yU9FqgKsFl2C_R^02hXgcv2m%N&a~#BqVLYbXbf(d ztw7Z91K;<=L>&D$suUUffwQ^3vG&aL^GADR|U)=U~~Q+`g3XvJnl!A4AK zBf*KUW?de)xS&%>EF6;GLYG3gA-=%YN!}iyK8k(Fpv$XG(jufwrt-4o`}MK)HN#nb z)nkyO%59l0R>O=JP2lD{d8gxxM4O=ild<%2t~ZH7X_vp)eo7EXq-uR_-E_6ZP+4c0Rcl8DVtvs>p9y>}G6TxGjc03B|r&*g8B&j7lqcG|c zTIvl~I;lkYQ!)Z-M#4Cvg_aLx29SGwk*=nCSWk)t$l0cj8o`t#Xf%*gwK47q6d&23l<%FFWDQ zN?*xqutl0%I{<7JZ?Tjt510xN&GJ}fRZPCq5MQ(M(Ymk5iq3pgx@O8k%~-$chMYl_ z|74?2ixIaO&t55KP?)*9+}#lQd4qP&V}l8H$OB0RGyG|Djx)@N^Svd2jO$kM|)x6wJoMGx~o$QN?cvxjy8ltA)og=9@zx7&uUHv z+-X?+@#f(hw-Jxqxa^OtR$46yT_1^N0UKKw9Zd1)lq<#MBS3Had970~l9A{K*@YfM zH}>EhF)nxh;LplY9^Yk-<70YY!t*A_?!FColg{7Zeq8m+t>}YBXJ}@Rjih#7PWlm3sj~LL8}bbc4W@O?!|R{)n1`?{a_s9J;xot0J*LOZ zJLiOFkQGhG9EJ~-TJ@|(ebK*@k=|2YWeq-eZ^gf}-XL0CuUDhw-btf%Y$Rdt*S$;Q zonSsqrFD$N$$Pd=bTMh~^|)}Q`|evVEgQ6s6ydr%cXfwguV%LD@D_7hcC@C#z6KS0 zy|-`R9W#5YxZGb%J@bQfhw&x$PU(U6r(L>EWBgZFMEvUs&XwE-X1=}D^Z!nXfaG^P zpl$X~l;|(lEGVB4fG7r9ohTK+Kc5uPIe^1dP&;HS2~wfl1YwYt!$r0?X^?ahQRrog z(cfq_ACTva&I075L-0X)jZXxqONZ;N;ic{LE6L4EN&0^XHUHfe>c4ZT|2>=>G@bsE z1mQ~Q^q0BgS4fk;j2I!eFzJCBcMf8pB@M)|Z8yAidq#=)?yBKd!P~gWpm%nB0iIbe znTtevm-0TZ$jV|lViKm4lCMr3mHR0^sIJ-ky5HsaTx@FBRC5%Gz(?|qG>vI+3bjr+ zQOXU0?1I=lUQ#&aqG;J;v!BM3>ubxrPR9yJ*}crf_2_H7`yzk3m11^v`DO66muGvE zupdI_!C&K)`*ovKJT*|*p36Z5^^q615agVaR>ojwA~fImb7hq96&d4D!sv-ZFhqI7O26eQ#tynaYpj+(4|1amS#ycXipF6}~Z#C*R3v*aG7SD3AcwKS^V zgDvDYwmqLcg;#VJi=0Gp+Jju^FxWKQ>MK&fC0QF+xg&ILq6uDD~ZTV zb!rs`c`i@0EpcJcXZI+!2bTgvcfw;acAbxco{2{b(G?ord_zEA5&AVIM!~jJTN0LS z(!(JrJW{Gg!tZcW{(+Rz)V1TOqP+)aQKM&nq2b#@rCWy0hHP{x!5+{&hQgZ|+DS#8 zxpYjF2>w#9R19y~S?o232#pWrIV3l4eDN6gzN&6M>!9NtL=K}#oS(LVFqVawH^%#L z{`iFP>C-XnSU-GVoa|)}j$<}oI5q%FTV%5>j@;=WNb5RxhzKGq2$6rT#CUI^S+4Ph zMuQ$g)eBREOm3oNPp(HkB{IHCflXSP@!a1L?!K#v+463IoKii1`cVUg+3HDYky+)v z;j;t*{_n;KZ(CmT=?OUOW#xuKxe8v*SaZFeFmU(s%q@(PchBb0XFW4}sf)fo5A!Ta za?xWa>NGQV-%RIx?DL$%q4Xxj-I516t`=D=kL2Ef2{8vKSZeMhUNAp$lKc=>V~j%u zXv)d&eOf3O-e@wUS#0*S60mYsk!OoCS8cnYOcXENFfJDtMQm1M*gE??rgp9|I+dB( zEMFcr@>c2ko7AC)PC6w9b9pI}`L(bCvVgBiS!Af|&)MeV$c}Df=+TSXhtpVj3B48- zSbOw*IQUqF65tsWXC6(RnU1_T* zlIfa!$oim6P5JPct$W4Wi2|ho{BIY}bZ>m zG5G}ka=Nsyq$%UfFOPILz0cW_tYDGGgxS5xJ=TvNtQmY*!0t2tEJE!AJ%kyMH*_K{wtnkUz_3{C|mM zR}Q=&0l0K!h07iMKV5U7{14&s-wRDl$}5+c@~nUHorMBWDK2$DJsS)Zy7ZP2)Wjrt zI4!{m%x6QgL0+Fg4%GBrrfwd70?~laI&T)D4%p{FbU=#ncN9Eu3UG?SO7wRZ1Sr1< zfR+nk2IUui5TXu;^8ZHJcWwkqB^7P55a7uRJPu$t7h;7-)2NdNK}AJb@ z0<3mFE#Of2B-lupfhMp84X%}i3IJiE*sMUDJ?3R5Zg>NtJPQlJ>hPZtP<;?~vhSA$ zS#enwz|Qf%o^rnde2UNwaDBFYka7RFf;u;__fC}<=qQK0K>W}MtAJD>qfE_}yI!$I zM&AFW-vC*Gzq_qLg@9yYP8JqX=oJ#ruZ{@ND{MXR*K!Gs2mWjTt9kH2t4`p=-S2|2 zbe89oOaM(Ski>;ZCfezr+LDYb(Ti}+f!q7nj=;f$50H6+1NDLMF$9@+A zY8F8)iL>)xD+)4V$5^bu5jb%~0iY%ehZ*3#4Sv|J+dM3Q3s?eMb)qOhACjvwgD3b= zGoOQjB~T#&p!zwe3xO9lo`dQUF(+^iaJR7kn_p3gFL*o9@dE?EeFLUI<(IC3!bS#_kH=GG3sjk4+H`y1W@8t|I2YkO7I(wgd*Ac%#VIbGH&d@?-Rpcw^8CIf ziH;NdXvQ^M0w3rJ^a*uN9fD5yH9{TYsvDoKQFv=mD0{`bOR633tAGD`Y+8LGl*2cq zf?_gMIf2L8`O;x(B7-iHws#_9KLobBKXE|Okbm5hVdj`&mi^H*yKhh1kQLZF7Iw3i z%QBqXJ2s8)7&dnB>BGQPaMY|ywVyBHa2jyVT~@S2TnYEbeUniBIz{3vNGUf)uDLaS-5pBT*bNVjJyKxL{Nhsv z+#mBTN*X5*yfYz5)Jr8UHPe6Q^qg^lWT#3qgJdQ)z)9_B%k+CTe&@5yu#sz2l<6YY zgio-sXy1?COGSA3Zg{yU!qzV5<~6Rqjt$A@AKh*-n(C`EG}DMVN9v$& zZYhmw*N)CR?pzd=Bi^93Rx1^B@Szz(h?vX!XyE-F`?%O`i_r1Si{|pC%#71&-P8oF z)*TiZrsk@Kf)b0_FAZC)6!V&}6bh6JzSm!Nd0tmfsy1-y9nTrJt2}F+oV->-SlK6Q zp4QMkrTRqLSZBq@cH~0M&_Xw}Wy)RPNY$!!pEo@yA#3sTOpzxb9CQbxj)fx2mskE8 z-uG9T^2Aw9xIJ+n6s>w^WVxSfR&!M7qZbxMwL}ye)$gOlX4S138y0N{!RVYg)L2#0 z-EJdj+$?!}Qa4?~>|>Uxvsx23nZC-i>f4Vk>stNbRO%@b^)?&oesU1Q*N~xe8YbmR zV-`a+xhYy2s>F|hh^4Bxw|6@pzG4jPdC*zKTuc8_F1p~!@yEvQUOhxqw&!X_J@$>NF8Iy zJNk8&gW{WRCL@QtUUlL%cuj0w3||D#Hr;Ic9a{9zg8Gv1&iAP9(O94$M7iiWy}w8< zoByEG;J`hY?`N~>6Quh-ff9!a_d9}`#bzC5N8OLmUCUh7s`r^uR{_Bh#aQ_@Rk3=6l7P?(Y)f1D4qO7H8EZ^;Y|ECmfXxrtHL>I& z{FMh$;y$>9q{T(%i7_5#4exZ@>1R~l9ZPxm4(DQ^CX3(sXf16Zc<=0G;?|Lv6;a?Q z-U!ZuUk=gvX^@|F&XeR2XIQ6t`S}Yojw9YUXO8YhjAf~Zp64fOEI9Xco5+qIPv$1X z-0d%nK-44WGxb5VU~)5ah)d90ejgZmVKe!mm8IT^ujzG@yIl-Sm~sw1&L!i>t|Gq2 zNEVqeg<>f3x_KB06A=Gt)^hoF2`7--yPDGxUWC;Y+kH?&X(3N@+ltJ{bwDggNxMeN9O(+g*ej&O6xb_ZL}z$=KT^MuCg7}8G9Y7QUNb6*ad;)4u~u; z1Ro-$D0&^h>jd@kO}?PGf9W#!u@gdw1kPx$6CwgKLJSWSi2&&rpgtXJb9ez^1<>J# zKj?aP<%y{Lul^vvc_RKz82>Gv{!(ne%B@Y|57Ja=YcUK!I$wqpu;>Ck3JV+eyC4rx zP+UvJ10lac>H*jC((4b-{{nEh0JwtM8ni-O z=5F-uhopiJfIeoU1U^CKSOC>mpc3B64}9lKK!M9NKJ>34_lTh)|FBeuTmcL$zlJZN z2ypTmA_D)C z9|xU==E6bVhM^v01M4Q>Oa{1muO{I80>oo*&h##B0Ar@{`m^m^9w2GX;L=_ZI@UfZo{6g@cJ;G(Q}Nks+t& zM#O^+h?um-qr#7p6?mWV@Ame9O5+OK}pU@(_k`PNB+KT&PrbIB3u$$OOn`hmytjsnUSpPOqR+v}!aS7NAc zgqw!O1ZlL7ojZ`B7X+>sR^*Zs@As6OXs%dhhH1pfh4UyMe3k2Fe#e1Q2{RF@X!UH8 zD%r##81NL3_KEStigM4cN??bLhp4~c_* z>*oD#cL!j;c2`AGy^i{E8s_j&O$#S2qiVoQWdQG99Hm*r_3u$ZLhqj8IyI}d(VjiI z`2@y@V(0g{$z!aPo!+$WhXOO~%UL!hgzQs?(y}*-(c03aCIJExXN~yKrVi4NK~2F3 zde~v3HqF3uG&6+l+VcJj>*rYwcFUW0XOJIA9Ov`Qkno}g3`#YKEU{g$nz24K`}D0K z!iOYaT$hFZBU5gSU`GoL&HXh2!BU(NEW7y_h+$z=p$IWDvs5!SDn<|=a9NI3C-N@MA*R+rXnl1E5s%E)9elbZfUYWp_!+V%Q%nf~G@-X;}$l-G2n zPKYTfORO2c-_(b+edvlY3(H#= zPn8`Hc&EUG)J+vbv%xQ82o66AP&Gw<5O%z8E$-vr@2LtU-sy{rq#}Q#A>pQw{c5ZL zG5)<}sP+4E?CKApi2beDXKL5_v8p$eJS1L_({;>7DTnc zdtpApkfbrr7>bxbX(b!^08<<@H<(0_Ss^9de&bcL$R*Zn0=d#Zf4X=%weXhX4k()@jeKm`lo5=Q$ruX1<2Wz?a z0#5M0VNa;)yWa6MSmGaI5;k)dQqFN(Nv(*p(QDrB3&NXo5-HC#g=Jo7^<+do4Y^mO z^x{T|E=_TW&-t+K#10p~*xS;l&&oFY-0;dRUWaK5{=if`TfSWbSevEK(US&_hupkx zJiqcr`)<(Qia06$e7bvmXl^zh`JwjB1l3n58{KajX_Cx^h57v@J|C+2C~Ln;f+6Zk z|G@eMQO*wN5XVCUDbZI(txHaUfaIU31Yo{~OH_jEe>}8*o`2w=zc>ZapN4th%Y_Uv zupR@KSJ9NO1D`NRPyntFP<$hph1>_oBjDu06NHt=f31ZIe4T}8!YQCEss@no0ipxs zilYAnnx#L&LI)V;APGQSBuEUpX)&3BME6OmIqd*D!H(K{Q zJ^SzI#2?Q4e>v{|5V~-cXat0<`MNJf0*HKsBq9nl_I-rRprH8T+{gl;&%t+j9|hX1 zbI$cKuPpg|f51iHyTV1_{S(Ff3m1X!FAq4rzdYdJSHV5tUc*=U5*Fdpu$~>tKI2{9&{ajJP-dzcFvWf0^IE z+Mld5K$id}7ZM*7sCi960;p|3IuN0akWI)D3d-4}+LNmVFL?wm_&kJ%gjkdhdKvQc ztBMW4ZxUu_73KS97$G0@GE{^fyy_>w0OcgXD28e%rm;2m`v>O-vwIA;#%IhIAIzmH zRb&WPecbnH)P%$753e=8cKq=OJ(iFFsVc-lc!AOB#*Fq zO`b+}>nc8UuRVSM*lV}q$R3r@wA1BrS`e;;Fr;vObJZw1YNC5;qt^CTSNqvIOn@_! z(teb7FYgh`$vtaA-PUa{^Wx`GcV5}wy=hC?M_C+@p?yHRS1PD4eE43%*~QLc@x4Z8 zuMHUH@w_;i8&A(=mj!l{+lr?-`^&vX6(Q3-EvgqooQ zZafmMtXdV+i@mp+{Ly`(FB%-7jjeZvVjIc%*XKJ?mUkOZA_JC79^ z_Uj3&eP;2y1q*UK5}FF?wHLIA_))}}TIbUBEQ7|vS!|WnJuI`>uG+vAW^^1tZp9cu z$N60%*GQpW?^yb!_EUpzoezJ^=C>pz;G8hJ>#Yjh-GIHGV&ToSwda`|sXDV@*Ke46 zj8e=v#3<-W_{rtflDYsS3xm4U(k;~z&*^p7}z=q`Il1(sYuCSiI@Ao@%a_II}D$gZvk2gpRA4d1-YzYbowKW8?px{o|R$DmTWA?%K9LTsf z-Q;KeQ1EuDZ9AX3@Dhn0`l9s{H`WcmEx~Z1SQzP;)#KTyk`42OA8KRyYOc4M6LO`K zS8t5cEf{~?{f3nrIC{pdo}~mW2$)N8J((JnV6F5`5`J6F6E@O`0z(dPLk18{8Hj+j z6p&?@*Fd@y90`c8U|W7Yra_|0aE%r8Dfr_-{geIR8% zAR{q`EeqP6U{ahw^(o{b5#J>u%&+ze@DOicX8~Ym5IF7YnnGs}B{2R7X^% zfM+sHn)^x}@vju^ZwKse3W(ni?LQsUmlO?XPXiw{!Yhe^B=|EX`iq7vCQQXngIrtc zv6F+Tc9u@&%ZdtGF)dtdMdPd+g=)HY_ow{H5SUZ!3AIz!A)k<@`(yB0)s@^K*Qy*k zc^saSnGlXR4q0nGbRonfREYO3edVp_E}?~*eHMm4zf4zEIkIBP>(Sg4>@RtwNFD&} zZr$;Va=8}(vv?!T1ru+7ULj&=mF+)r?oV_lb_Os35Ox0n;<>WQ} z9QrAFygV>YE-KX?C=#tD^dLp;$>h%$Yei*Yh)erMx|tjuhn!hhlj>&RFn9Peqf(7k zO;+Dtan*P;iCj%+XVXRq;zq1j^zJs#DCl{eYxBGTeP_>)UsVRC+AJmGcM)*WHRR@8 zOBy<+7ML)OWNVB;)Gzl45zFc=PecCjxdHB*W<>qeZg+}YN80Vz`$Sf0bv;C3*x!oP z&Mjz*sc}$nl0Nh@L5m(t9Fy}cWv_0uzQI}zG)Z?uddVlMfH+h`EFa%8N`F2-o0d@3 z@Jd~U{ZKV;>ru@R%;9-M!DnNEzZ|tmDIXbCRhn z_^t9=2Ko0lF9eM9GC4PcOx&O$!Yng)56EqXV)2Bj6)NLRmtYM>^b*F~bY%z_(eDak z9)&oLO~g<%tA!DX3pnXAv7{T*cM&8$S@;sTFNi=MHt+a{sy=^=r=UBLg?pZq=rb?Bs#?-Vw0n&sYlh2 zA?(iGb=S9$ns8t#1x=+BL_vWD+tStt-6u4pQ>jl)I< zvWNLmw?Ihb3<;<|d}nlv6r!!ZyKD7?g2?yt@won(*l=+P^sU6V{?fy!T!u{^q^~FW z@_ZX)IT7+n9`<+FtUFvkI#Eue2X~?-8BEp(WHhc{p+LUGlPk1JdzNt3VP_4g7`g&S`k7G^+alZx9q~}#=o%cibZEa_^BAD(wlesPgV`;=D&+ykn-v|s*l4%z; zbGn}ZF31pSl2=-tU$gD@9G;YF=Dr`Xa9lf=eFx-#EpSFnj1!5thUhTVPn&O%DBE-v z_1pX&E|kUZjS$iC_0aJ^}Px@ z34~T@ld=M(!^3A^hHmO$QTPH*?PYmz#4{=M2)~i5DV{s`Xi5s|ZXs59?A7YdDp0ug z+~|X-(=nX%Sc6lnsBZkxV$aXq9{2awZ8~)ni4vIvvAjAvnBIIeLBe7Fl_6s0?{-cp ztUGZ^--~9>e;W8gBi#LsEU{X{Qe2Zky!NYo;LG!mMa8%$Myrtyt0y!r`~qyc=3r;m0F43W=6J+oy@ff>pQ-Xo9kE_-|^i)+`e;VkAPtfmuc#R z;3<1bA?OW9i4+I@$p5C;1b!hj2>eDg0f_{4IEeuu4WTY0xOjmiUVKcT4i%CBsx1B> zEe#;C2O9%OMuSKLxCkY35h)Imt|dXy00MLf0DMn}5QDe%43%XezO;q@P=Fw^7&=50 z1=ONE7*~ItFd(de3Syu<3<#dle>6t^&~ks%fPeUz|D(=B5daUF5%_TOn2;pog4TIV z2r4F;Shuk4)vO`sQGt$lfh&T*zwHc=-9%YI=-7WT;V!utLI1nJ?^p?eOTNX+n%{E^ z6y;G}8g-Z9BX98`O5j}HQqk4~?h!zAfQpCUudm%!kOs&IFPmmJQGQKxEg?9~_54hK zby^4zLE-=?08TUP%7?88fa&)zegKCUr1cB|8xRF$M4{_fArw*g_N&m1Cy9o5Ie0|;$ zvnis=rfTot*Q(hcdhoy%`x=L?<;t1bO==mvXE`m6ysq81A+5hX!^P8;+0g;s~6wHos`7N)gyu93u)N@b&*5By97 z1_VCfW>xF@ShoAaGuPjKLctx4t8vqzVhc$pdB*l8^h;OU^Qzc9C`0LUgMi03Pd5Tu zn%!7B=G42r-q*S9K7HiD`z6A*w;yQ%b=#@8#k6LqM?T(>nJ~FpGQvN6#MAp(Xl6Zo zuK8}>h0672bEYk#t(U?#YNKAO6f{=jHptlP4oZydRkRF~sH^oq^2OVE>*Gb=#}F4R6@C1$%LG%uzc zmW`?rppkwz@Y5G?Pbf-Gv(8JQs4% z(r{)%dgEv`r2`+?_Zf}sk;@?vh|`{xo{oQJR?AE;FrN<7w~OT)2C1Cv&uX99uiTDG zT>7+F_SN3JBebR{d2+Sp?N7ZNKkD9=4rYuP%PEi){!rFwsBS(62T5J=sn_Ri;si3; zAY$EA+4mb1kL;OAmefh}l7c+eiCQ4#UQaDrNg&S@+uY!$=Dq6%J9jL+CmmL(@{DK` zf|AbW{Yu^qD(JZl+_P|w-iM>kL=1GY37A%lwb zsi7PF$mN59MSION8{XiscaGYmDB{Sr>g#P3)Y`bX>k;(Sj&<6_{oju(zmesJs9{B@ zUfafANF54;%XW-1zeY{G9;zWoDJ0$z{QX<$R|m`vnfY*`q{j;EMHLOY9X0CFjiI-% zOY&O1YwLeqoY`SpZERxO_UiRX+ihQs^1-9~_R)3FhaYAMsR~wL)8;w%Z_J+I%}NAd zv$AW`GZU{qBxYwGGa)0fZ})m+Y4D>=b!ta`=fS2y)CYJ>x?RN?yzq1yqoZ!Al_wL= zTIG>;=7WvL$Tb!Pe7Qfx_LkV1k|@~p_cF)Ym2uKXZnFKP3E%E>jLR@Iq-Kb8xHa}j z?#-f7>-0zACFv+f-=q0kgSSjvb#!wb6f}NVxMFVcX$}k%bJ))ah)EW6eQ=B<@14MG zVu@9WewOA0*R;NY%!k#KKN%zqS7`Q5n39-C3x6ukTXPsQoPgVNJ%<>jSc;M1vogK; zL|*)ho|b!goxUH1(I>|Q82egRH`V$AzK<7UOn&8ctgVxf4~*J4eCbUmiUDPN%4xQ% zB~p#5j-`UnRdfzn=AB#|o>K99EcJrcL@iwBn6%Q9 zGY4GJ?(S_3K*^)Jq3$RT0v?E-GV1f4GH%Z7N5$(zAVs~cKc;HA%ity{CRR{&jDq=n z^Ao++I|sO}?J~0Kvd0rN;`1ix_=`nr(|2DzR=+jIcGEu3Y!8NYphMRPn(p?#l_6P} zBzx-@>t0|Y;rGxfjBiB+|HTa#LBsdL6Vp044Ehf$7-bVIy4X9PoboHOcoFEobToSA zmBRv=A0iT|Zb$9cH(q;qAcCtNIkdL%XxI7GDh*dAU3A4ye!6H(*~+sw&K5kCylBeSrw{HyA_LWKfV-!I}^5YW?A zjRX+R0=Eu90E`z{rh()FmBrvXe=fy@n{iiI5a_1`6&`K{1k9kWr$z^C=pY)z0+&%~ zf2bdzC|iORct-~zL=_Mc1PD$ zl9+&R0yYmo$N;f~e|uzA+&V(8=iQ1-Zcs;12J4)%EI231gXeZ^Vd6d3H%1n9q?gXu zZzSoK79s9-a3C+JnJN~cuhHV&RDe5?5#UY7)P$sE}N=MZ;_VX0JD4C5h!T!qL$JoGhm4Q!< z@`u{$N+))^?{(B2!L)tp=||?`_#>X;ZzfbH6;o~MM>BjPB>X?p$4$6V`DYm)%QB+m1 zbgCLUOWdF@@UucRdkW&YV|LU7NcTQ^YUGV~NysXC4t9}v6r)W`6p0Br=_1imlt_jr zK+DX7lxz1RtP=*8rsk$pV(krcY8}5l_Lu6yLnhPHzBly7tUTpN{uuq0;hpzY#`az? z$y#PQ0Fzex$tvA6K&Gtw$n-WjuH=IS(s+?53lb)&K=}O=Rm+pH{ORmo{Borics1;bquhe+90zLOvC5$QAc>FV~~zf;{LQZ6UVz>Tlqievn= zQe*!CfV}5V zr`LK#PR;N~ZJX3I-K9uneCPbm%~2@~-}urCx8kIgzbuAKv+>0=P~eun!9pg-Slyb- zWOml^7^Yp+$Y?>fr|3Z)_8->ccIebDN0F_Lbz}&&MD(;>B>eS0rDH< zCUI%lX`oBTj9pvy@{e`N>1WO|Se(`L8REnR!P^V)$XlL|?VVHgNyY}mRJUym(V`D9L5ON}Y!1cP{V#bn#rk(#e*O~JR{d8ANOTo1H_=V@fu7)li6_s>!CZ|P%c+ZyC z_}4p_dGPqyR|YQ`h3j7Hq(0!>7ygNph5Bpg-vbStY(qn2T%r<6O+(yhl7L9zr(EWi1-yDqocv?(i_?@pa&-L^JR@94> zi*dpp(yq`G6{C}}Ru>BfxeWY(#U_|{r(~avIbR=3l1%L1}GL(JqK(}N>x?AyZn&X;z$M1oo%5$T~0rjN)wjE%kg$cE%ZZ^nCtTZ9&ny7z($8Xil)qlU_C(+k+@utNcWWaK0 zary1s<~s6G-{Tora1XglS3__4tAwa1S_&fSbk`{OqATXH;{6;cJx}VC?%11wpT|V) z-WgD43pF2;VNBu1N1mE9-rt#=s9E-{ns5qJ(cUw1h{8Qw7WbQ+wrOGsCb;c!{G!EZ zonv19+4Jn_n>c%`!iy^D?~+@wK@#oRhuF^Q0edH{+7_L+D*|!#*^`8yhTe;pxre*R z{dt{Vl{%Ze@EWFXCaN&HiY2bv&!$aj-*eeB%skB_++Wtzf*cs%F90sWe-BUw4}%a9 z=l||#y~OWB7*E3d2uCY1P*VZM@yoJ6`T*l{(C-SSae>L5tdJC-r5Y^WnCH6=K-nOm z4^ZA_U`+^%J#e0XZu^9?LJG;@mu#l0htS@k)s%|b$uBr zl!+vn?|&1hG;9r5qq6n~q8mG@DJFcCjk0fU zNwbrsb=6P3nsB9Ei&5lq|E?qa$@P6zL4x|X5ipP0Ug$V-_Zd9rruUxn0e=gE2^~t z?-OqhHud<&Hl`0{;g4=r;iBtV7zi%=&uH>@?WH}tIGU=zBW&KMSPx4^uQS+7M&s0AcVbE<1MJsABu-&|^aTao zQc_RT16#Ozx(SdjPIxZr=aPT2-^ZOKYJR)lfA%n!s=QO@6}%)TIrAe0aWhnGuTs(C zId}VW`42yc3vC(8gT*cRFG%3I=shEw>v{F~+gk47Zi5To99%5)r;dD9f+DDq=Q=%E zzgqP_6DwB>%=MFXUSX28d8VLr8;9yubxp2?Hdmsd!Hd_8S$W^-sn4ZRZw_A*X;qBz zR6ZD>m21u241ER~b^ruP2s|ECx1MAMv8%%=eGOyKcZ@)+JeD>MQzIEX9qEJZ|Axku8S47_i zhr6zhwhm{$Z9=WXg>^)=1GQ>1XS?V-bTW+TavTA_P)7UPa4cc@77L2zfIhQ`{k&rLz{`N*n$}lX2M`+Rk6Wir*Gt;vlchA$oQ`lT&f`8F8`!uL z6>JXDo^h+KUqi-$xy=T;t7ehR@YsVWzXNRZxD9gpi zMNlnH@W9B-+ec^W9#un8xRq1L8UIBE8Qaf`X4!j=nBKgtauL#~m5lQth}D}Eh;4=7 z0Pe^C6|T%#%87cwc6??ex z*19-vp58YUR&D3@d(+cMO<&2=USl?5Z_x}7jNeVLxce;^^sN!>s7Joy{rRN%)D|GK zdpk+A5KnJLti#eodM`kj;`K*qQ|@z90{@U}HZ&7h12>eOx)s5{i9XlFN{%gOFPVHf zP3&?Ab52#Je8&9n!3>3Rs{US^&sz5&icA!}*M{)Z!^4mKn{;Z_jO;8lSYye-8Xm}% z!if$X5v6RlsAD|tGPw8Q;v<%_r#|_Z*roWRF+?VMy8~yCGgSri#X7x|VT)>GNp8aU%)kLcAb0CI1ixOMtAU$3o7g3jBgGK9(6fCgOjQC`#&Rmt9iSf#_Sd9 z^HnD$A3;7ZXN~nLT-Dq6>({5s9Xgx@>xGgXdDK6j%J1!d5}=pA<=4?Ol(+LGdLdVmJ0gIDb@6aT33~vWp++25Zi@YwND$c9SsIS04SwyqhGcrr{wI6RtfYgGz zGLK!C#8Hf2SDi|XHFNpJZlUIEYAc1fGG*|D6Zq<({wmJ>9&A(nWI^C8a9X?j-gbY|k2qCvK`ci!bx}wPg|EC0yeW3|`ST)4wKYAB-BP=*`K4?p@oXf0VbtP)ILsS`Wq6gN(glzHtLX6^kTv|DKvEx_1w$W{&>~8o5 zRSOE!O@QfagQ#d*fu@_`CSeChLAitZBsbO*NB8fBaKKTrm?ud}3LmV*cW~thOc?Y< zadroC)ORYzY))D$e|>n^Cx$%g?Vc}kE1zcm^tcP}Q|Zi}yyTdOzxV`_ffW7#)sVe{ z!*cIid#v)vH>J?e&AaxIwDBZ*d~Fk}PbDW%goz6G*I42kC~r{-3FJq73Pnv!k&8-$ z96AjcwSI?t;5pLh@CzDKH_+F8CRdle$%H&7h=Em^Owy%1qf`1_QKbm+D66Qu+s7#1pX{Mom5ab~Q%6va&h8Ti z<=n4Yg=2l>>Ko%XgXZz`n`LoX)1{x z;z3qk>mkR(_YIelCaW zpxU`4whZk6!xllv4JA;^^>lz|U82ATC4`<61=y6Y{@N&mZIo&e;({12v|2L_mY^`iqE{F0~bGMVLE6Ou|I@DBzB z0Wh|j2x0kMMos@=`GNP?)Vgf?d)BT1*hHlbnt*bH;M5BMhG1+MDxxw8tOU!R-(;__ zPX5=hxyhfwAECJd#>`4vqF@3VI*t#wZ{Gh}$wZQ{;fVxdM58Eq$5o-&hi)9iK0nvj1S`Ukzx zu+#VJ%}ByS+{IivY6MHWK@+eI!d2NzLp9 zJVS7upJjX`RZLzdK*hn{ZuvRy)8xrfL9uCP`lFkhx_M&ODCyeu7(tf>y&6{`l-neW z{5f)3Z|{scCZXXhgjQk6N#Q!)V~f^o@N$XAdH!kito*!8b%o1Mu%4Q1g{evsZjJ5Q zRA0*Ngc3W5KKQ11)Zxk8S^a3gn&eH>st{A?H6=(Aox>p6J&Lb*0kO^@j@=xo{9bBA z*s@F(6dvxCJGf#w$t-oc0O6vxx}X^~(v)JMsctDbYB^!!&?J)EN|x$NAfu4q!{U14 z#=?lkG6pOy&W;GEkZ1|~QK>=>Cl)cZy9<9L=RdWTLJj-*tEX*2m3!RTCNl{Y7*V*l6x-m!pdLZZLrfd#EHfPaxcK5RNV)fsPc8 zrI@O=$%geTCAze6VSCZ^gmNK$294y)au2nV@pS6k1hodzA)naK@t=nMgae^6RXj+@ zscC9}aXohsazy$vl?@8})Qi{Cz5{evI*mosuU-yj%tZwd0oaEP&S57`*`;Z>e>mB) zG--{zSs=!{xL3PLlUmz|mjovn(EVJu)K8&$AccEx5^&r|v-H|mwhd1Zh^p1v=%o?& z;c}g(Bo#z*cQoj+H6Vn&1K!*0x7_18^fcUwULPh|P+aNPk!_#R3<~@v@`Nn@pFdMV7 z`jnz*-)PM2W5ghJ2{fPL>Dt&1Dn}|>9H+28b#_q8|H1FkNv+u8)Im{fz{oTzlE{b+ zK)&|zGmFhNdG)h1E14T4AI}drtS?tr^OWx*Gqt(=D3`3Hrec2(Q>N#-dl>u~s{Bk` zVksKcV}bUL&)v25I^9yZ)B5x5V%DO`{X1>s5DA7 z9`c+SV{8eI?;RVjQA$X+42>wh|IT48HfElbnlT@+y>@Mi5Vh1@2(uQpuomJWSg{`J@n&(y(R=p;q1CFjEhVb3byg=XbQy7CI@6;DZreUq7j4U7QT% zzr`Eqk19MlDIw2|LeXElZ&lVJVfyi@?YwRL9?#Poj*G@t)Oa(Hthkt@llf9}N@&b^ zafcwa-|H`57McZvcrZF{+sw~8lkK!Ni+_>-Zm~XTi=1A*;1&~a*2U2c+{8xD2CMel&1`dHD7&d|ra!VA z31}A%Qb{Gny*HG+)A^R{a4o>?`VG^sj6-PV(avETCM@N3ftBBK_bmC>xLWYOO5RXI z?ov2_-aqE#z1<_csOR43&i^Q2+uq}$^z;DqU92#A-5zdRPfct7?d|hzo>LLdE&COt z;1|jvOd&KB7X(N1r=wO{^JgOj7tohqty{&~4I8}EN%9heKujcLl|#HcSNWp06QG5R z$W|s1yks-|)7c8l=Hjt|Uh02wwTgkXstEtHUMt$KJPckFNIFn41Hrojb0*Bk1IcIv zFLPu5s$vB}&QT&$P{j&fvWWh@NfT@WgeO52%LhawWREL(5FtOglFt$H+bdbj43uw9 zUH11j1649&{2D|h#}KGSKX^0!4_lu<0;B$P)&6a>^9O^=!1NO2 z5*2#jQm^Ye5rIUfHz9m*QG%Z7+O1I+N-kzbhMR$hC!~%RzDrp&EvYnoPA(ic8o`t! zr+ck8@i8bQw0!jg>r%|t^?E=1+=;%sL$GuI>#2>e|1c9PL(q-XK2xr|XmO^uL49qF zqj~slvSVlSFDJK6M^u;_%@-SO;f|>pdcaM^ymE|x@$os!zb@PcycSh)Q>aSg0fUS zTHdQEf6}y|wvgl2{rg|19G?0Okodug;O&DiJM^%|4V3z1OFn41RAFzEJIf}f0wnds%HLUF1W zx+Ja%tW0e~>tn+`YImQVQtvcWG%xsS$%}A{=xNVF+vNP*v0mx-WNdmUK>3YUL&|LrGyKBeASzJ8vF6)7f); z@FcIEosmIB#W$r2&Ic^Mqcbm4?!-Zv#D^XDYQ;R^rB``e;OU%HFJ~eA#W|Jjz|7&P z@{MxM@P;WpgT;|Gst)qJhS+$oX@{9d562VQPrIK?)(G%cN({ENB{gTPCv6J zJqFG-)xP)Z7^HaXYPFBEd*Z}qI_@?+&)bYaX*i3D7E&9dblfq{Gzi~W5%2JLG8 zisp}9<8+Nvn^)jtAL_GejxAk@PcqEk+A6fxbCA8Ia5u45Nc)WM zgPgyAAzyN&vSS6~diLp4q%L`dv?4*_>d8${Iwl+=i(62G?2s>HLU;77wBHiew?^k@ zzJO61IONNFxSZgIIo6?)268BI9G6=UP7GEE#6l94*h6RGRyYh$R&fvc27Fq^y8Gqwt#JXf1j- z%(-;&!1MKMY;CF`u^Ve9#lfbxL~&;Q&pyOEV((Q5c?jPV?fT00I90YNEnAD{TJp)c z{6Tc4-7ax36n^$pD=gxfmfMu$6y|lnb=qEp!@lsOf4qSoziB@qH+|sa!;!|#gFME!1?hm`FKHMv%_G52$WpiyU*RJ_s z2mj*mIBo@?6vi6Du6y%#hW9DVt6_0}koDzjS$LQcYd!q9u+0dMod3T1&icOgdTSKJ z_yZ&==M!J82zrc=FQb!-?c(b6^10KAv_C@_v9Jwe8o1Lf@uO}h-phVHz57s&?dIcr zSD(Tul%U8M)zi32*+Y)cwET3c%0Z*9s`NI}Qy=Z@_wL|F(QZs{xO%um-`m=`FF@UH zz*o=*jjSJn@94(6DT*h_tI)m;N9&N-hRvCV3bN*C(J|V6H=rWN^AICOe(sifXwv?I zc*c_BV~Jl8547esw>L#^0P?-h%a5x9w!fezzD=Q57@log!@VH((4B9PV5_1}EV=Dc3p zgA>O{m?>_(p!mhzS`4S^jM${yKpy@xm`Yi*v3I;qY{oJIgUs!GO6QpP7 z*>jX@J*DtYkx13Xhp_=GqDS)4 z_@BqUHv6W!83%2#nr0}>MIS8()_v!WT$aRM`$@3hgDeK2P+_JI+Q1ZT2~Q+df-tBs zLr>E64$53DUQ1Ez>8$i%1t|aUcZs_$iE$QfbGL{y$W1q{_Z?YM1?$h?4Ff;Sw3ey@<0+P`EnO1chIR0)imIhVBHo z>j0)e>sZD`O9p7Lg(w1yf^yVg_>>T!YzMgk;7o&x-`!P98d$W0=mW}#B8apNGCm`- zVS#L55GkM@;Fboy*@I^Y-H28m8h#mI$pNAVd`A?gX!xZ8Z%2qe7^p3$$f*I4I6?Ff zvEp7JD;XaLNa9uI1bGN#Z~nsX5(M)$%`vV6cW;B|%7S1PaP)1&Mg$ZFZiBu7K_Dbr zkorHn1^$O!$X`!vFSieu`Jr%U$WyqZ=o95U8b00aYr^ZTey=uqr7-5pM>t>y(ni|O7ATw&{iqP(>gd^Q_J~XQdXQ!`SNRiXAj`kAZ8%dvjn?v@BQYU60 zKh~?Tr|1lDU&tBQ!h|W2-23LR`+~TRh+-rsU`H0N{(0$9{Oy5lU0tOchvefigR^Tw zYsE5$)-r2qns$Nn+9he^6c4h>jGdOy3nw4S_~Dp9FVYGzk%X_YmtAHxgPqr*e& z0+DH#^-^UpKX<#_k#%J4V3=4(`W!3LO0l17@N@cHBo!H5Vn{&2#owV{=+_%yc&BMn+HEwg$0*E)Tq`5 z+0?a@Rh`5AwxW3!VS$JsTEKKj}|sJt&wR{_y|Dtx4S`_{I*mhYj+QjF_yW)k&si~KOg zv*(2yFA0$?deXL@ZHAO^GI^Dqy*a4nj{I*d_I>!i%}Zj%DMf4E=}rD(6q97ON>g0oo}E!LpLs)}R_6O#)bvV}Do8U}iC z+PXP+#-T)W7DJu+1$tR4*(WPi$XG#fN&_4AAw*gBE|0?{XP%X ze7W~>8L7(zX<+5cp>K#`NONwafPCxw`M3Ppx9jODS8QxFjH+3CvQ^O>^_+BID6Xe8kqH)ddK(A$J_Ta(Bb9KV{&$R}7a z4lPb+)He)od90~S8SQH#-NEkE{)oYyB>+dx?PT~J5qmLX(Y>lt!=Bj(b=}Qu*Qrvw zyUpU%1_nEPg&s0EW1_!~c!Kfii{DyiHeRfOTCY`mK|w~9b|o4mJW)+N`S!xN=au1ZL#4-%TNQs0e!$uEo+VbzIu~)Y;b5RqgO_z5De4n>)#nLXu$rbW|ImB&!uipc+P6}Aa*(O7agjKxNFTd+Hv!kW9##}2|q1!%Mu5*HDu-RJ122b*V0S0G)2z^n$! zWylujM);S^VSwQpE9gcLyb4nKYs8iynCWz>&{OQ>HGnN;1x%pI3!)Batb=X|q89e+ zK;$}zeklYf-32ZB0k9U7LqM5W@E?HWf`AUGFbi-7UI6fGfFP$L8<&^zdxOv=cQ-CC zCA1;{F;#!nBal?zUCG&B@US5g7P9+r+yacBD!%raq5EOviq_=l| zp{5E7fKY3*xYtR*-}v`@AVHvxT$mLQ-}_77Z3_JB!1CL_)Of-{bWg>tUx=#UhC;3o zyaC61@TtLbrDkaszz&pwZ3=KGj#=>ZC}~v<3i?)r|IZS_eg&mnqD%kT+g2aKD=V#FdYrD6o?5!& z#75yco$k-4wg**ftQ5JW#7W5Vx%}goVC*+cpD-rg^z}clPlQ*N36%gwyu$2v0`q+( z*?;@g46L)_s54Qts3lIH~x_l+F9j-8tLknDw{g_tK(B{kR7_xURXC zX|@IpXTJHs;2;6NNZ)z6U=0=K)K@OkyoMJJ6=D6wh1P5i}wS5KGE&vhvaC_VOy9Mo{2{jTLD<1+Y>Esb zvd1#H=LM@dHCb=DCC=bMJ-}jzTC`d4P`kHpyI-cXP#FIXoC?_C;V1Xv4Rdc0dj8B9 z(~3T(DS$z2*C&zfFvDXf;4H%KwPxvqVUzT%*j~|@VAdczOI7!f<7O2&nvrGEOOUe(BYO5y*u4$1Uv+b$}Hk9=$jTMKN$_O ze)=F%)<4BSKQ#Ru!!~;MS^*B~j>_{})4W)Wy|r1q4fhZCDRvVcHo3FZyuVQzm^s8> ztZ)H`Co`urJW8BEf|#c3;8w^y>J`Z^s%{RK7I{eP4kutWIo-s**K~da($Z#N`}tlu zD7VU(u7Tg+CARV3oReGad~BeV@Gq;%Z-Q+>*e`qG#e2|R=!sV52i!xzojchs_yuU8 zfhK`YC`6xFQ0VV@c_8|7vmgs_c>J51ZnhbZ4e=O=aNR$a0&qFnq5{2<|Mhtbf$YUy zAiA&oG5Edq6A^&O%z{FHhYu74dtHL~?wtJo(l zVgdYr{9ZM{AyT@b*MU6nxbPCGSx^W-j)1Td3I2m*8{lihV+EQ~p;w&Kh`ZODvLn_u zaAEkz52^2Z*Ep%Omc;5*=MyUt-u$QXoGX@)UWZ)h-62gn^dJHG_BcqMqPE zZBSssfF(YZ5l~T}!~xRrp|U_~GH7JpA%KEF=_#NwI!g%B9%4~J@c{}V5Ydx96@tRNyGIMBsR}w}dDF z66&iW0YL9UKniI6SFx7`pByo=7~)z6pio|p3{^}}48S3RG68)81Yo2n=hZ`z0?E{p zV3GNEvDcIxajDqlLoonb=@1Gaj^^r-L4SY{J2}vL?e|lh_dqF81;vD~9JfTuSz+%Q&vxEM@MACdm`5rgBU zM1Yan4{a`eOt9asB>>r-hy(%32j$TO%qk!5M?RAe1p#fJKvaPo8E}Hm3src5k99C~;Mo&MCODIq zE+lJgLS~?-3Q`2btNosE5LZB49%Rm|2GcWOpyw#L8r+eNssCC-5jEq88Yhjv)L_(r zHPxDbsgbLJTqlM716T)fc_5;5fZSg?w}71iF-<7qsO_)@^jIOfanyp{2xP%$PmC4> zfp)+*{{Ib-e0R119#G>0W(n@pLgJ7YTkqCEI?&LpI*yzGT`BN8@8{rU0>5c+S?9L` zKSx_pQ5JCR09RBuD=0OHQW)Y5);_X=QUTU>BrE`V3;4or(_N!RWWO*22Q82sLf9q9 zz+V&!P%kRV29VwQrMh5(FkrbA{DHYPzvlt0A!-9pBVm_W5`VcAd=eO-dD--jJw2i+ z8f+qj!TzSffNe2RVqmTfLQV?1L`wMki05sHi3YD1Z3my@j>})3<1V5G;`*1G8bnQu z8x#)}#1R0Bq(w=AlXlR&`QiMRPRt#@Mzrie{PQpOK7YS!W(PRXnk$qT1-$b-SOEL| z9n%2uPUYB``^1VFBiR4AMho!u)x3sFuEW;@Q@U$WQ>u$ zA6p~A1L+LTgeqaO#iG>a4;Y=0Pu&UogUV-?)a;|x(QRWL!jcjwJpkJR^`-3o>qZ7` zONh9PVtUAx7#zt zUc8nwxiIk2XKq%fA*_s2PxuZeZP{%?<>s2)V#uMv>SRd+Oj|*|!2iO`-R3cM)Ihn& zV9ti~w9g#KqRSdSz)?8-z@dOMM1E5_bW4`qz}XvDYmeP^>zneP*;pVY6Uoz1Sj{>K zwx}Y?sub%@Olr)Y7yB8*R6{1w36+FG9C?Z4y!(W>_2G4Xcmhwt&fx(Q_)_J;`re+2 z6vm>~$W;9**Vox4DS27A+E{e0NcU>xN5414%v7oznE`IP}CBPp`Ykk)}r|vV$8^mYu|#UX_hj4?me+ z^pIpi&kOhBb}0?zuqOH@x+{_V>2ygQSO@RD#Y^Qf6BbaE7b%y5^Mx5`xdqnJT6>eG z@^h^!;Rwq-^2pPAue^O zD34<*yk`}7?r?s!o_>;Iy7I|@AN1vk%AY$1fWL#9l}!xxJE{G@sl8#p$%9~5Ru==< z3GmDZm*{uK;1Uc{n{Wf)`yhGXYEVC+DhV9g5@P|Y{g4EJaZ2lQIc5RM2OwF*u*+=4 zKh`3UgAFut?hS$)tXc~cHlPWVP+>waU~CXvp<;bOWdsAzhCsPG==T~2w#p14);LfI z0Gq%b$UbafuqCLQB>vNG>}rqoJM-<&*pA=ckjvf2rz}Y@C;usk--FRQ^b~S|jz(=S zPJcCpDt_S31aCo(lvE7%FPWME@}eRe*}qO980?B*d8G{o_gb@oONy>CKZYU^i*hJ0dljD0pyphXmgNo477qLh1yqB zznTJ0{YJ|b9w7l4O!S|LvY>H~NR$=(_kX}ICM?*mJV`N_=p~0e_%i?I27m#VF~hrI zpdLz^*8*7;Situ#VFi*2h^K&iInPyaSC^d*wr~>1$m4He=l88#PscjtuBtI zOOiCnk`oMPYWv-Y<%AI19*}Hd6)4TM z>bo~IEhyKZpIodxYMNNO&NnW%@guNN=uN){m$ILQ!JQYAQuq8>a4uwiw2bwlD)2tg z7b3CyT;ENiK2gne-U+vig({is_bdqeq?|g8*pGeH_c&;+fttA_Ql05J){CLl-@cIB z+#)8pkBQp-rDg0sZ*N`p{P2S#N>0o*IG%LtfT_0?^sKKy%YGU2@!iL|hk>1Wt?RZq z?E!2tHqJA1lq4TMyrURZD)904co8t)@oIHxk7eGLi`seP?ns4TzI;UTgsnp#TsH1D zdq~Eo?D~t<{rsQuBD>$^a}^uq9U1$Rkf$$x_`vt?6=Yl>`M6*LgfLcO0A32dnTRue zQlTq2>pzr)5YWHD&PxBUADGxL^ez}^o}GY4@=nE2>Wt5z)B4E{q!Pd^fl2{jUSt*! zS@~-X0o_0dN(mA%p??Ja2?2HY*;xVVhtMm|F|cc0E-nl3u?&1VWF}b_#6^F9D}{jM zb2e7M_7Rj6!L)&(#L5R{;N=4lLv(l-)GI=K{J`2S_#q+$(mn9w_Kf4FvHg!o*#9dx z(Qj3A831_s-lB?u*rEJP*T{g2JxCYa%ehHu=;^Fv(p36>c0_{3DE5*-!%}0zt|`8V zEm02Kt@gczgM6;N{X=rqhqVw+6=7;DF_qz5G^==J5~WPFm>ZAk;urgZdbsBTU%^aE z*A(^a%O2EHHG6e7!Hw>=CZvTa3LhW1C@MA@RrM_omwb;?G>Z9fi#@K6h{|ROF1pkd zH8V?j(64G+g~Wk5fyorJNF>D_l4YGRH?*T{bKP_Vx4EA#@Ks!0VzE*?#w{AXvM{eS zy@I>wB9r;-Dx)t8y5*d?nq9(PluqmrHiRneCy#zFNtv~@%a09-kD7Z$XwLOC-08`K z29y2CLLVE&@v3LSJe=d5i@w`LdvG2~`GXI`8W<~lj{T!CJynfzH|{k(JKN+Ja@)dO zZvK8x{3Os0Pmw@KO5qvSoNl4FSjV}_49;tC^Dmh=vtxEACS2fly{vJGjQKT`n<4Ew z6GBYvY-Exx%G!R$S=E6cq;!GK@yB&6i>TDP6FuJm+U1=RJBLG$$129-_C|06`><~t zALO`RF1SK-#JL2+nj`QlkLkX-q)<+W74v@G&~M)T60!E;#2e#_dc$+yx`^kc*h`WK z2p&mPPE`w!HmNMuc%666qSl@2Vtp3wG2V!)ALEDf2__{(Jb5;ko!J1J>i{U_ z@ByVp)ZLcwT z?7ns@70O@{k;3?s)p7dIN|6s^Z-$Qxqf6lxeFTXn{y)~BLfq0IB`F{slG2@$Qqqlp^t;gOdhW-&zVFBLi&<;!SZjbe=RD?^W0YrJ z_H#F$o2I{M2lE{&byO0+E8>{1@wQ*w_qP8q{-yh~)1cEPuWMYuUddXGhJKoss}cjk z=fgMYLLEB2G|WqInw%e3pQ4qVnR>e(*T6ubCSR zHvV`e<}H;PEF=0%fa@LSJ??&_EV1Cr(`u4yhj!PMK`J>I<b}P$?(WHAtE-3;GibSu>RCvsVi4}SO3v)qhH|Y}UU#<=`~n>%Sc#r9bPtPa zts(FmZC)J$WE*~QvG{(YTz|%Gu3woE-M6~j);!G#`bghG$hfnvu|Pi^5yt= zOdPT;uQe0HOBQSpHXYS>ZrYa_#&E{5CtF{d^Kj?{UL&&?KV!1vDzYh>%qHlyU5|-Q z4xT&#(_&M<3ltG9^mcUjb7E+)wPnZ_8^S+(O;IR5LeTa;2J5-$)yX!kW;#E^^0qWL zacOtjNSck3pD$G|<48u{*{;j90it@sCrT0}d=YeQR5T+p9I6kf5!2cm82biYNt5!j zfV!Kk(Wf>p`m~v=Szpg6ej>J#vYqe=q|whGo_Iq;u;mJf$V_tl7OXtnv zgW*Ak2Wtv#2Hv$0zQN`)A~i{T&o3T2Yor37pd%~4Q--nAt^R277%2O~s4r>wl?|4E zw^9m(VCZ94^g03gwO#B4R&MWGsF7(xP@vW z{hwK<(Tw&DI6cR{T-V&4td`+ct{6BnQegJ}Q*Y0c)I`#YZ&0G1t#x}6w*{{yGIi_?k{dIf##0RiNn(`>sNRqX=(=7*D4)>EhU!sqCPFwzH5&lyUqYc|v7wUbTW zG&LQ%1YFjy(_Mu2j+{bC^W~ppk+T|1`Oq~F1XwHJHxG0=8yN_84RGhBypBqVc;IJo z#E#_^oYubxnZ`#vP-$g;?td}SsG%*R_srTNwejIagu|Y!e^l)5{Ab1bQfpW6x=Dp? z-Iugmgs&1d0&O&y>ghXy^IIdTyqe6GJ9#HI*)&+zm_D0i@4Cw4@EERjHl-S1_EKiW zT61H%5Xlg=`Zz|G(+*362WG^rmvoalFmA|ohKiKFF_4`&w{W|BLhnS7U?NveUw&VG zXH0{eZv@Qxo<$`s3{xI-_vuC6zQ zW2yICp{rFn%<-4ladQ4oxtZ%!aIoJV*&^4Y)%%cg8D+!D{>0}A4^yi@db`Jync_{s z=7!o|dKK0?B%+KK6}@~9jXTk1Ef89Fm-O{eZT)lTb+3NG>a;U4y&{Ai8FQYav}{}$ zc}ouICYy2f%lNNA4bWAnZioS;C%%7Eya3X}$Kr+XzYo)Ym2LR`u2As(9-TsI@>r0t zc6kPD22q|sa!18PAsW{J7M>6bsN$N%N+Ur;Zh&p*?uW;)?16v=sl))$LcZLfq+;{^ z66pQkyGRJvxEKQja{CzB0rbD@_A#;p#^x=6vjDYifVlePKjzDS5Lf?<)4$^T@7>D(L0nR=;!s8_b5?ta773+asTiW6ZNBZQ!WEg@Zy7DrIIkv0^j|s zQ1ibzLwtYNZuo$)aX=9V;#?0@!LN{HQ6Y*Yz*nhtO8hl|`5YFM1`$rz28J@Wvx!62 z;6MtHs(O$L#1|f<2~lqV_V{fnfWOEQK#Gu~$HN)~;6i*OupS1N0xO;zA_xL`7y|vC z9|PRe0xM8>Kmq~I;^Bm_B7p#B0fr3{h#rOy;OWF85&z$dFA6+LIQ{-(_B2}cI$f(ezsjkbx4Xubc~lS&yn(jGf56y)_|^7e-x@iF5C zQ7Qt}*8R!!IaAg9t5PlDr>SI_t&JjC*=8o>CK;n(83LT$_q(5?Y;$*SP=$&@a%eTH zyiE3L$ebu_X$g^KzRC!hIqW_74HSdDTo~+VnOs4y-nIlQV23m(e9)hB-U5Tv?VzB9LFge{&mx|_I(s(m^qQrqrIDVs z0Uc#(BG~qXIw^jpSY{Q&Oe}C-mn3)Cq~t3`PiAplv~W7O%a1cnBKPpUon}r0z<`A6 zDy3nY)*h)u%y&ARC#w^Mvge*${KaeG&XeZK{&$BKZJ^l z;;s{7o28qT-()<=5Jt*ne=q;jR!d@7CrO=yn1LdBx@lYeEwf~RTWTtJ<;2mlt3&7^ zTDZnYt+Zrhg}<(;Dl~s)X`m1;xEvy5QZ5@g??8s@H$FcnT=D@e=1M?kL6_wdlBErH zUe_DVsqX_EUe1ol>)o!xB{i_ZpY+Pw#MlcM57)yB0)?^z-f+;b{Gr-?c z#L#x?W@%4WT)Cw_4*Zg>?JKhJX@PThqMw>{t{tG(g(!z2Y(nyNrJV-9)EH^2ujCbcQ*Egol$ zd3{TzW;DL?#RgP&2ww`Moa7lrakBOFCISez*GHjh+!yy-gP(RH7k@*mKlS>9;fN}&Gx4&W3eQRg>3W%2wDlFsx;$$r*7Zo+`4ZeHaRxl2$jNj zcY9=>p>gOD%FB+F?ZXCdNmiu4lkpwXdd?A!~*rDM|MJ~puVDsilFT6$C zSIf1{UOKzgf%!+xz>di;b?)+D2hNz4Kg9WVUun(N(=cUD4~z;0Jumj?Pq zw*G)--tC8fgObrU26cn;ONgkKlW=Jl)nku9b6C@2Rpn!@!F(jB0 znBpde1xkjHwg3Qct^+`DLIE}xFnl}^a%_;`<4=8TU;w<+X@k$f^bsz`Xi*Zh&ZX zh~hwWTY%-39S)E&InDzXMnz&!A|#*{*e+I?QPD$cTYnXEm`DIJ+zD_NDBA!w9VD9M z@yU5186?0H54QmK@HnmhKkF&}iOT&K{P@od#1i1#po=}!rJqTh zN1}<(lJ}mZEZ^B@j4+*OI!b7k>oz%&HU8k{0JH||AoHpYWCSj{ zI^_%H+`>JorbR9S)7dlb>3Vc^9`3ZS?08z<1-!~A7NmEp(v%fM`r!V-fFQRUYfBz` z2n-Y9@QT}QJ-nF5S;%`t*D{onNRw1{D6P5J!|fgQvkmX{nSAE-8JA4gk==R1FgwBy znTWok$UN(luqEgNiEeYzV$ZjH3|jc+uc<`BrM8@(hln4XZglHcYNNBAKgrciLgGC5 zILlm1fGN2W3?F#R>WBHGe!fe|_6XTR!3F%(=GbR#Wd+HSlVFT+^vTIRIZb5q=zM(V z35O@**BBR^ybKR9t9OV_D}}A}Czz87qTI!X^*(zS;^#}q4>#6XtOqp)x_g}wOWavJ zYtEa>etypm#zfS!E$MONpdy3SrUquLtIumrPRAur4H(EJ$=m58!sc}9S|^992GYS; zEUUtI2Sv3U_QQCgZCP`)A~C$N@L1-SP>iTW+rq8+c`v_Xg$o?HZbvQ}Qgczi$5j&C zj21J(mQ@eV3--iC;bBi~PZDf7GwGxxrxgT0y;x@l?bi_aR384&Z~El=QCQgck}DgN z<%;s~9r1|~s4;sO)3=+PD5`$+NjDCd^O7llOU(b`itZb%YY` z%&B-J_1$4kA9^TtqB>O{7p}8|UfxuNGPdh1LjD8`8oAEKsjySZCYRwyvF-UFpJEfy zjlkOB8#iX2*SfXrT8ws$lt%8bX${_vXgNkj-pjhpi(R?-Xj5Te)MS&wY9uW%_J#KP zWwK=dBpzJ1=$oZdh80iwtDomPQYY-HS_h`%H!WVSd*X#PV_ws7Rz$bjd+v;S*5hpp z1X0&Z4~(G{SG+%$I2={0n#oIE`RZ*P)N_2z-bxplUV$TbbDi!ew0kaY&|_T; z`ZQGdFvI__=2j`t2@#8(hR7dZKot13Ok!?)%oFgpLj}2`z@##3*!C z32Qm)_LE6+TM}omqZ1zm2UV|0F}?TlnwPmZhGs6KxW22o#D~`eE>;S_$Zj2?iP#7W z02HZGugv}M?PY`>E+Rh8O~Z>z4qTQBzy49L$<6PTM0@M~0SR}fWTnLce!N#d6i(;H zH(ozM3t9+(#zi!Ta3zcW-q+9xPy<2rw>bPC0T+@(j>|~#Z{zLnp)0_$1C+jjVhgaa zNR;x6KsbXH;UKEiz$S&|GZ07HP7t{uv^1bM5Y09q-U2V$lA_1?r9Jh(_k4T+!|GC! z0m4cP!h+=k_AO6oL64igjvK+>3P%6;V!(eOdjFeN`-=(W(+-qvVu*NIAzE~xWH8ox zIni^EAA4U?bfs!?dO>g?s}#(Ol7nufzyTHMT>K{6i&FdM_XADuE97Sal66v;cDgiA zL**l@2;9hIW7ey`zI#Ebx%u%@N44)~Ei?L;ftnwQuf&cq^po1s@= zoDUzG(!9&(tUVW>h&gL4K{k=G4@AJ4VnQ^~1p0C!E4efcm z2y^miHBcv>vW_Hsl{dYASM_-^T+GnYjH$<>I};&Gd=6kVJgFqldA-{S~RVc zPC9F|j>cNpP|$KxtG#G!GD?uLU3}G&^}2;I`!y?4grqBz#3Q9ent^Bo@YxV)4(aT` zM~T?YT)Rw00~ucB$*JLYFu9%JVV$4v_MAo($ZuXr=+MsUYJ_{iWrl-2n## ze~bOGgL)d=638d~a<(~taj|>8Pj5IrV`7s;VADl`CzH#m#bn2UPcib1jlib0i>pTQZ|lff*6V2Syseipbc2ApR>jSYJ$?(Wjt^sIU@;6`*MTHeKiDhaJxVRQO%#XE zVP^!nj{Da#Wm_kc^Lnt%cjg@fa+EJ!+C>j+81Ugmu|K#lE(af|VE5SIx()6-)Un@9 z2tLo#iLK2vQ?@Eu{NYvgi6)7wLf!kW``OEHG+on|v|I$#%9KeA3aCZMdg9bEjj9$X zZr_j92}-Tdk05r(Eft24PDm6%4qlHYt%Xy30_y6Wv^plyHu?(KIazL$v_o!3I>DT> zTW?}*v=HtyHbLQaA|XFT_)G$lLk1?pL}(P(>$ccien;{9xXc^>JtImy?TK#PCs>(I zmuMV`RO6-nJacakUEtXp|gZ1@5z z1H%a8H~N^juU#t*2M&%~VN*F4Qlp7@(VjSpjQ-5- zb==mxP+IwE%}DHGe93e^d(<0W1w*|V?F|=e&G}R+hGmBOM%K43+#I`&>;gvMplYsF z`LxQRZ+j}?fqOC{Kdqixgi_A0^b*nYO7D1>J4r@FYw9y=6puR{FF*_Ar{mJ8htqt~ zPRC)dqMk4fG@L$)q18K<8ZF^2NKeF|sUw=}W}0)Cc@Zr0VZOzhr@qji6wR&sMf0;% zZ3+Q$upmvVHkm3B#ww|cM^vLGcxL*_68e~VcUt9eg(f82H#1**riB-n60|TbLd3mR z9;NKpRG;muQ|+XZO@5xBc+`yw&kE-QF1)Ty_Ix2wJ=~U6wmKrCA2ErBK$TqqO;O;1`7j_ z4Rg3~U9{4$FHnXeEGzg6P%53Wt((X{()+A$^7>;+P-xto4?->7Bvm4ed(AxC-{DP7 z<6P32v}~MuVNwepP}ze7J|*hl_IPcn%}Swnj&FcC&6_@~EbCc(HZ@1z6vWNoa6qX< zYH43BKkyd4@Ss=hG$-8GmqLov2H^`Av@TvSK9yw`dajcx$xx)zAm)v|?N*z0tXLpy zi#~k(=UEwqOLfe0r8sCYHjlHqIIkKp4(D=BWcLu9Y+_sQ%h%qKU;!L5;mRR}X7K(~ zo;Sf(;n@3!hP0Z3Q{k-DF1o#k~ z=00*^nKOUgT$WQx>faQ5RwUKR5T26azoS#dJlTp?eAGx0ePnzSXTiR(LEP{fp&O09 z49#w__^9b;imfX^oG>6J+R~fCg zL(FZw!($C#ud1!l58hmo40K!AulWVXTL@!R3NE%l$BctnQo(5#_RUyRgSzaEFB_J5 zZi-@;Q}hGVBIrg53`qUdajRUJs|C@jP~VGEm%gx;(ZpO@Vg7!uyC;?#Fm&$=o8#`lBd~GCtdUVEy%1ytWkFOLe zEQL~}GE>&8A|RO6sk1UPk!fSGIJY(|xr=&#MWWA!z4;qyU>pUa)&0@mWIjG1!2Ao^ zzz<2pWuYhkx9KncUt~T$$haavYV{cb0^-AW2~LPTFDT_P&wauy3K8K065q^GAo1mg zRILHn!rUkTH1P96DEI*c0%r^$zXJz`{2+cRzz|Dqm3Ik0z0-z3<)SUVbK~NkV93NcW$Zt=% z)2RKf>*MkLB5?jQBs2a*7?7Cd`%P;6qbl;Nmkv-(0rGejUVx=Lp^f)TDVoO{j9e^`3LJI>2&y>fHDqrbKx!<+mFXdL6Chj|0baap)`h zSPn*~I!~AXsL2*;735L^L~(s(J-pUGCz4~afy0YI zTX5gM_lcoTnJr743&UYVL^SYW_nG_k_4N4Q%vuHbUXy;0&=8krJ#4Hrvvmj4t^ZdvS%-Nv<7@&-Mj#g%AvF*yUAD;O8&Y_Bte zrXOAf_IOeAjiqcr1zO|iooL&(!f_1tM7nrT4gpMXzAnsHss@w2aIRQM;$@{329^X6 zZlWC{CkNZmOKOAJ>?+FFugn-!d}zLMTwfp#@Je7we~rEqL>dt^L-KlZY&)^P1&tMS zKP=rapMK(@8j)S_>c-3j{H|(b@H|)kx;berVVWk81`yuLfr-fFbollSXL)e{{f?Xa zzCgNzNs596eZAF>6>(H8xEqDW(p{(X_MxNdJNh~M%X`8xj7vDbw;u%_I40KpsZE@? z$8cA%Xy4f}H|MC6#nOMnoAv(E`l<9&R|(3ghia8dVxaS^XXFn7J+SVrkbn!}&J>!1 zeh(@SF7i$ed8(+Ck|iydyYO3-UcQwtV!UkhobMpBvJjHwiOxB`7t_>pbUjxK?Njux zXr!sdSVzkGFP>XGd%lysOB{XIQf1}bWdk5+-#-g}o)RDh!8uw&1s`;>D<2{$!^|#O8VAovXt9wo49-i5HNl63b~K6*Wcp z!BTylL~ud;vU&=)K{Ci`c?`>+qwEPD$r^4sdy2GE1UVAB6?20TWTKT<)EP-AbLX&& z13j#%7xqAxq=6^%qblU!)qq5UP(to6E(9X zt|oe=7QW;kJiG{x>wm*A!pAB1>g2-Dx>}*n8g6 zYb`Dy_2uc3q)zle3&0A^#`w8@ugoQ7zrM!Ts-~5eKz*jt#FNwRf~=7`oDf&++?np= z>X`5{SDaF^q@Rl~mYjjqKf+ECWjAkI^ucPCV4{29^6;cQGpQ zUE4QGlkU`Dd0Y*Y2}>q~{`RhzXOu8i(Ly0{s>tE_lu7nD?e%xj7~vpa(vg$Z)eKJMvo=+jYiYVaejaEU+M9yUj4uvKMw!mUF6 zHU%d+T2i5Gt;pN^-0iqj<&wIqsv}|_`WS9qvZZ~%bo`zcb{<@O2;nnOB6vRRSbKK* z@KMM2%pZ9MExmNrm+0JRn<~UskrmsU$ho)f$BW>*t(EH0l3(3+V@Eo#$(t7+p)Oe0 z`7Bb}lWNUde;@d~-6uDQ=eqb(SHY@4V76Jg3g?;1%Y?X`JPBK1sED@8g~8B`oc~a; zL>bR_FySZf6oK^S(Q!_cw&(GoNJX3G=mF}95I*(uo9I_h_wBRK()LzW_=aS5#jwBW zL|_Rd<@J#kO_6>_srIh*gR0Zqy6)8e>O_V8Wfw{pw|#R!Ov!6SUHyjKOd!!c$CbLHzL zi^VLl%wEd)_l_QD^XaIBskx2Jr@NLPW}8WshJ9jBoO^pb-ldW>jAK}&U)2b`QLzE4 zY5C|jOD4NZ=RLTwG}^TwJs&Be06b7JV!fI)v}RLgCb(l6Wz+1#SZ|_Ffsb?Ug-$E} zGPrrp=nPM}y;&WDlsNwiRX%^}t|tJ_adPfM$Fkn2=v}S>Zz1uSbp^}8u0^%xq0tki zdZUIo)xej87f5al1Vrf*GCSRNTblD5{I%9x-X8kLHnnOe zz;{~;aKHN*uj`vJ6_NBIK9+696;kBkYdY2#r;kCYL?e;u6y410VWo$~bG zWdMISIPm@5;K28{>^z^~U+u1ZzuPD%p8$=h#6Z)*#ACVRvAH2b0i*$`G6Av#pt(T^ zBCH4;s!Re)J)lxA2KlN8(t<=k9#-Jdi$i>sKpMbZRvD|RKnRq7*@-XEL?MOBK#6O2 z3P>w7QMu_M9x9K89zjT?3XqIFnF8Kz!Uhz2{v(~_zob!rW&?l9%m0QG|E6F6Q)%Z9 z;PF?!f$^WY6lGhF5A4o`2zjRp>H}xk74z)(K!-}U?aE#5ZS8#$A3=&#suq;w2DMN+)JJ%-!`xR}vPjon7|cmVS?*jjKboByPedS(Weq+**+xbY zk1Idk{QhNlq29_d6T@ER)5P_yH`&Kn2w{t=ss0qHiJrdlxam-;DIGgjNB4`xFjIo! za9zsQfy-tY%klm7Fa_H8hKHGWs}@Gmx$?R&6kLUY4*QODUgHD;SStoP*y#<6Dz?&a zJK32`p0=b^s4f{AvGV#IYu#XjHnrHhCgo3f-CiF;VU{oUd~Msr)QXYT&c(*Fx%CTA zm`B%Y51cSYd9~e7&6g7;tKCPTA7bP)SDtok1jD}2SK1I}kqj62!PV3helm>yie#~$ z=?Hyc68;L2IHUWe7#%6ovdMD~{V3VMY_Oy>&B>T}X6lRkD;wJxCcJ2{$0jlnCz*aT z5*AZWx`m*i)cMCUlaEEXmep@Lb5mIr_Za$o!wGpzRfk=jYuS&mZzfP&=TMH;e1mea zHTs=`5-a30-kGx3TRUhW;4tem)E5MXS&RxshI}tAY);Y0I`3% z=}r$9gQGcdhKrR9uXl(8w_o}w%otS=qU_yXOfHta=`DGOq$0VA9ri5We%iHdy&qc$ z9KtO_W zhv+4?aPV5hond#yRkAR8C*RC4kGJL3rdC>QjfkLZQzkd*#-5iL{ONO7jMuGa`4q3! zX5pWv7oOWl1ipg$P_>==+N1+L0tL* zh#sr@kzVZKoR_HCemF_bPKubmKtCffIhU#IhZL*YfDln+8=)h1&Rm(UOE4T=U`8=A zQdc(hT^oI_dCO|xVTG-#(cIv|jZaoo>~CV7lUSGBE{zrn!FK3!A(oCgFW~)}2MH2X zItHFP!I-6DfssQBRi82=zER*p*OVZ5yUHX_*5wc}RX6=v3xP2NLEq{t?lJ5Kimc&1 z9Em1{HRajP=ysuA>+?b$ZRxNH7&?}^7m2LSTbPEGlD+26^3G~Bty?iCeDwJ()l{OXqnAMyj!Il z{L0Qpa9(&DJ#a%UUY8{M*4BENN`Q0mdyvNURIf(f3|hnfa3oMSID}!Ys zXb0%Ay?Gnv>m{)^O_7LOKTmhSIz{*>d?O^>$l1KVl;RM@Y;P>^c^V?s zN_{gDfly2Sdg&E#{pJNR(aZEMDFmT7AmQ})oj&U4oUgS2TGw&__tTxzeIt2Ao z>Uy*R{H#aj8BG7nWtq>*uGO7)CeYLZl&w?!Dtd^ zTLOQoR5PiiMzEWnm}yiE%wS7Gq}OnbV~mi@jpXL-vCz^Y%WN#|sfvEtjs9J1dPllG zP|?sTznt|tU{fE)h7q+9!cC#Qh$x4HQKhY2;UO`uhtw$9(DTX8cX$^pUpsLGQ+hleJ=;cKf=c7frbH&p?dkQ^)=Nbl}%vYkZV@dN+Ln@3_#J)>GdlHARKtOr)Jc9zo9S8ZkXTD7X*6lHwCz(28V&+e;$kD zA06s^PyQ~I{OWN1g?gRbKmAo-*BC-nhMbxKJl^qsfcg7tAZ~;?fPrPMJ?5`Z5dR`X z>so-`K|0s}=3_BfKC*g&sRkmJkGL0Lcv}K+*X-k)9vNBxF>U?R8~+XN`m?O^r>FkO zi+^x_f2FjKDmZ`}VE}2R@p=(Fh@Tax13IK$!m;lb=Xc1t2t;#+cL(G={CpP7k}A6C1VFY=mT5?J116tk@3 z3a@pA(IPTf)wL^sSCZK17=Y!BNLvt;p2m9nm8dPK)q!7UsiCpO@JOJ5riO`N zGcB{9cpZ%Pt~Qy)wI3aOAV{AD<TQ%e@Lu~n)^h@ zcgxAae64}MU0Hh%(`{lZw@|_;dLb^T=d!CR!5d4dj8-vU2Nl|H3Zf)@?+al$m?&VF zo87iCKXQGRJBCIjVZJ;N zR7COL#~U)`umKNqdQApf$T4Ga!omy)d{Q&Bs|>&T27_{$4Ojox0oDZJ?U7BA22MTr4 zR;)(;&Xq#5&SJvz37Q~(gMH`Em6@K7x^Hs%#=bsj6HbR>h$uTb^Zwy#&T(vtvLyV& ztIjZN*v*t4h20b`c3#!mHk74uDthMwS<#(sDAxsAC842?O9@O|E_6+pj?v5aUogM( zyMVt>55LTGtTLd63bCM=UW#n zF3ccf5|nL@)S=XEp59OjUdV+<&vcB_DqKNo)>z4=WL6MQ_$Od}_UjAbjd* z>^>idwehYVTgVAQOwLx-C8Y~Od(6vwrEak2>TEcj(+?QVP<2ilp`bpJcBpW%4-D*C zVdz5WZK|hXMk}Y=R_*eu9ac|g2~_1jP|&UF3G&ovN`4HGR`m8g6N;?NL9@Nsmmmo; za$@Aio~&;ItJSB#~ zdFssB>yW~S&In{Y3OA$;jkxZM(JLb(4%{D?0u-f7Unuo0tkn;VxjfB^T7|2=P>JJ7 zM5A|V-XFzMT9V+E)*%IXw(dP>Uk4CN-2^vWZ}n`ZTaz6cmXKP}P z+3aZVeOG^__JP~@>yTH?yX>xBS9|ybB0mUoPexAHccBDMFf1iYAt%nHN{J)#Y0RvLy0aR>mAA^5wx<4|G(1qpV9iiM&v)nng1?h{G+M^159J5vPZ^+ zD7k{-ps65VT|wzE5^MEdZlEAo*pfanh(tFvusZQWs7ka6Ajg|1sCfLp+b{q0Ed)AO zh5G*0|E3Z#3D}#2O@d#SN;R(uo1xlzMA`& z+#MGGZ#wor>R=GGGeD;e@fuM3Tss50c#dPxX(9VT04x>q1EdNW2HH{}IOo8HU*iFd zgF(qS{J`@1r?Lh=gt7(?knQ~aH}r>Bxw#->A%G)Aw*L~R;RnvVcs%pz5@0)XL24fD zgWvYiqs{p9*Lmhpz_$8rTR+-azwMkyd+xWr5DKuPaj$;89xn_yulCzk4}1J&0bdmR zx6%E0wbD-Hw<6*HjXvAE8{mJ(gj@s#f?15t45>swhXdDP2VH(#$qS%=?@sm9@^+(8 zH7#p$P{EU2NTEn7IbjG{Mu^tB_uxlcwh1d^;+tp96*oE1?ne7T&F!Y$p*roM^$g!w zRY#Wl1XoyjhmOswP%W{xX;B*ELS@JUGEU^P@0)(!@4rgwvJM?o=Z4i@ESddga@*1X zOduw3=UxY|?iho({O=}j1`{IjznM%R#*fdYKivKFJ2@<(;J80?IRTNocZ%q_#dfMW z6}Aq3>4)H;59+tWvPmHXIM_(yGf32lb(}D29k3cUp;RZZ#0pn;x0;YfqFQQ;&sEm~rs z*48Eq