diff --git a/docs/data/doxygenOutputs/geometric_augmentations_remap_img150x150.png b/docs/data/doxygenOutputs/geometric_augmentations_remap_img150x150.png new file mode 100644 index 000000000..823844a04 Binary files /dev/null and b/docs/data/doxygenOutputs/geometric_augmentations_remap_img150x150.png differ diff --git a/include/rppt_tensor_geometric_augmentations.h b/include/rppt_tensor_geometric_augmentations.h index 8e846a41b..a3e6d2d7f 100644 --- a/include/rppt_tensor_geometric_augmentations.h +++ b/include/rppt_tensor_geometric_augmentations.h @@ -584,10 +584,60 @@ RppStatus rppt_flip_voxel_host(RppPtr_t srcPtr, RpptGenericDescPtr srcGenericDes RppStatus rppt_flip_voxel_gpu(RppPtr_t srcPtr, RpptGenericDescPtr srcGenericDescPtr, RppPtr_t dstPtr, RpptGenericDescPtr dstGenericDescPtr, Rpp32u *horizontalTensor, Rpp32u *verticalTensor, Rpp32u *depthTensor, RpptROI3DPtr roiGenericPtrSrc, RpptRoi3DType roiType, rppHandle_t rppHandle); #endif // GPU_SUPPORT +/*! \brief Remap augmentation on HOST backend for a NCHW/NHWC layout tensor + * \details Performs a remap operation using user specified remap tables for a batch of RGB(3 channel) / greyscale(1 channel) images with an NHWC/NCHW tensor layout. For each image, the output(x,y) = input(mapx(x, y), mapy(x, y)) for every (x,y) in the destination image.
+ * - srcPtr depth ranges - Rpp8u (0 to 255), Rpp16f (0 to 1), Rpp32f (0 to 1), Rpp8s (-128 to 127). + * - dstPtr depth ranges - Will be same depth as srcPtr. + * \image html img150x150.png Sample Input + * \image html geometric_augmentations_remap_img150x150.png Sample Output + * \param [in] srcPtr source tensor in HOST memory + * \param [in] srcDescPtr source tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = U8/F16/F32/I8, layout = NCHW/NHWC, c = 1/3) + * \param [out] dstPtr destination tensor in HOST memory + * \param [in] dstDescPtr destination tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = U8/F16/F32/I8, layout = NCHW/NHWC, c = same as that of srcDescPtr) + * \param [in] rowRemapTable Rpp32f row numbers in HOST memory for every pixel in the input batch of images (Restrictions - rois in the rowRemapTable data for each image in batch must match roiTensorSrc) + * \param [in] colRemapTable Rpp32f column numbers in HOST memory for every pixel in the input batch of images (Restrictions - rois in the colRemapTable data for each image in batch must match roiTensorSrc) + * \param [in] tableDescPtr rowRemapTable and colRemapTable common tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = F32, layout = NHWC, c = 1) + * \param [in] interpolationType Interpolation type used in \ref RpptInterpolationType (Restrictions - Supports only NEAREST_NEIGHBOR and BILINEAR) + * \param [in] roiTensorSrc ROI data in HOST memory, for each image in source tensor (2D tensor of size batchSize * 4, in either format - XYWH(xy.x, xy.y, roiWidth, roiHeight) or LTRB(lt.x, lt.y, rb.x, rb.y)) + * \param [in] roiType ROI type used (RpptRoiType::XYWH or RpptRoiType::LTRB) + * \param [in] rppHandle RPP HOST handle created with \ref rppCreateWithBatchSize() + * \return A \ref RppStatus enumeration. + * \retval RPP_SUCCESS Successful completion. + * \retval RPP_ERROR* Unsuccessful completion. + * \ingroup group_tensor_geometric + */ +RppStatus rppt_remap_host(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32f *rowRemapTable, Rpp32f *colRemapTable, RpptDescPtr tableDescPtr, RpptInterpolationType interpolationType, RpptROIPtr roiTensorPtrSrc, RpptRoiType roiType, rppHandle_t rppHandle); + +#ifdef GPU_SUPPORT +/*! \brief Remap augmentation on HIP backend for a NCHW/NHWC layout tensor + * \details Performs a remap operation using user specified remap tables for a batch of RGB(3 channel) / greyscale(1 channel) images with an NHWC/NCHW tensor layout. For each image, the output(x,y) = input(mapx(x, y), mapy(x, y)) for every (x,y) in the destination image.
+ * - srcPtr depth ranges - Rpp8u (0 to 255), Rpp16f (0 to 1), Rpp32f (0 to 1), Rpp8s (-128 to 127). + * - dstPtr depth ranges - Will be same depth as srcPtr. + * \image html img150x150.jpg Sample Input + * \image html geometric_augmentations_remap_img150x150.jpg Sample Output + * \param [in] srcPtr source tensor in HIP memory + * \param [in] srcDescPtr source tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = U8/F16/F32/I8, layout = NCHW/NHWC, c = 1/3) + * \param [out] dstPtr destination tensor in HIP memory + * \param [in] dstDescPtr destination tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = U8/F16/F32/I8, layout = NCHW/NHWC, c = same as that of srcDescPtr) + * \param [in] rowRemapTable Rpp32f row numbers in HIP memory for every pixel in the input batch of images (Restrictions - rois in the rowRemapTable data for each image in batch must match roiTensorSrc) + * \param [in] colRemapTable Rpp32f column numbers in HIP memory for every pixel in the input batch of images (Restrictions - rois in the colRemapTable data for each image in batch must match roiTensorSrc) + * \param [in] tableDescPtr rowRemapTable and colRemapTable common tensor descriptor (Restrictions - numDims = 4, offsetInBytes >= 0, dataType = F32, layout = NHWC, c = 1) + * \param [in] interpolationType Interpolation type used in \ref RpptInterpolationType (Restrictions - Supports only NEAREST_NEIGHBOR and BILINEAR) + * \param [in] roiTensorSrc ROI data in HIP memory, for each image in source tensor (2D tensor of size batchSize * 4, in either format - XYWH(xy.x, xy.y, roiWidth, roiHeight) or LTRB(lt.x, lt.y, rb.x, rb.y)) + * \param [in] roiType ROI type used (RpptRoiType::XYWH or RpptRoiType::LTRB) + * \param [in] rppHandle RPP HIP handle created with \ref rppCreateWithStreamAndBatchSize() + * \return A \ref RppStatus enumeration. + * \retval RPP_SUCCESS Successful completion. + * \retval RPP_ERROR* Unsuccessful completion. + * \ingroup group_tensor_geometric + */ +RppStatus rppt_remap_gpu(RppPtr_t srcPtr, RpptDescPtr srcDescPtr, RppPtr_t dstPtr, RpptDescPtr dstDescPtr, Rpp32f *rowRemapTable, Rpp32f *colRemapTable, RpptDescPtr tableDescPtr, RpptInterpolationType interpolationType, RpptROIPtr roiTensorPtrSrc, RpptRoiType roiType, rppHandle_t rppHandle); +#endif // GPU_SUPPORT + /*! @} */ #ifdef __cplusplus } #endif -#endif // RPPT_TENSOR_GEOMETRIC_AUGMENTATIONS_H \ No newline at end of file +#endif // RPPT_TENSOR_GEOMETRIC_AUGMENTATIONS_H diff --git a/src/include/cpu/rpp_cpu_common.hpp b/src/include/cpu/rpp_cpu_common.hpp index 0445fea4d..9e599f06d 100644 --- a/src/include/cpu/rpp_cpu_common.hpp +++ b/src/include/cpu/rpp_cpu_common.hpp @@ -6444,4 +6444,21 @@ inline void reduce_max_i48_host(__m128i *pMaxR, __m128i *pMaxG, __m128i *pMaxB, result[0] = _mm_max_epi8(_mm_unpacklo_epi64(px[0], zero), _mm_unpackhi_epi64(px[0], zero)); } +inline void compute_remap_src_loc_sse(Rpp32f *rowRemapTablePtr, Rpp32f *colRemapTablePtr, Rpp32s *locArray, __m128 &pStride, __m128 &pWidthLimit, __m128 &pHeightLimit, const __m128 &pChannel = xmm_p1) +{ + __m128 pRowRemapVal = _mm_loadu_ps(rowRemapTablePtr); + pRowRemapVal = _mm_max_ps(_mm_min_ps(pRowRemapVal, pHeightLimit), xmm_p0); + __m128 pColRemapVal = _mm_loadu_ps(colRemapTablePtr); + pColRemapVal = _mm_max_ps(_mm_min_ps(pColRemapVal, pWidthLimit), xmm_p0); + __m128i pxRemappedSrcLoc = _mm_cvtps_epi32(_mm_fmadd_ps(pRowRemapVal, pStride, _mm_mul_ps(pColRemapVal, pChannel))); + _mm_storeu_si128((__m128i*) locArray, pxRemappedSrcLoc); +} + +inline void compute_remap_src_loc(Rpp32f rowLoc, Rpp32f colLoc, Rpp32s &srcLoc, Rpp32s stride, Rpp32f widthLimit, Rpp32f heightLimit, Rpp32s channels = 1) +{ + rowLoc = std::max(0.0f, std::min(rowLoc, heightLimit)); + colLoc = std::max(0.0f, std::min(colLoc, widthLimit)); + srcLoc = (rowLoc * stride) + colLoc * channels; +} + #endif //RPP_CPU_COMMON_H diff --git a/src/include/cpu/rpp_cpu_simd.hpp b/src/include/cpu/rpp_cpu_simd.hpp index 6c327fdd6..a5e83d1ff 100644 --- a/src/include/cpu/rpp_cpu_simd.hpp +++ b/src/include/cpu/rpp_cpu_simd.hpp @@ -3088,7 +3088,8 @@ inline void rpp_store24_f32pln3_to_u8pkd3_avx(Rpp8u* dstPtr, __m256* p) inline void rpp_store8_f32pln1_to_u8pln1_avx(Rpp8u* dstPtr, __m256 &p) { __m256i px1 = _mm256_permute4x64_epi64(_mm256_packus_epi32(_mm256_cvtps_epi32(p), avx_px0), _MM_SHUFFLE(3,1,2,0)); - _mm256_storeu_si256((__m256i *)(dstPtr), _mm256_packus_epi16(px1, avx_px0)); + px1 = _mm256_packus_epi16(px1, avx_px0); + rpp_storeu_si64((__m128i *)(dstPtr), _mm256_castsi256_si128(px1)); } inline void rpp_store24_f32pln3_to_u8pln3_avx(Rpp8u* dstRPtr, Rpp8u* dstGPtr, Rpp8u* dstBPtr, __m256* p) @@ -3253,7 +3254,7 @@ inline void rpp_store8_f32pln1_to_i8pln1_avx(Rpp8s* dstPtr, __m256 &p) { __m256i px1 = _mm256_permute4x64_epi64(_mm256_packus_epi32(_mm256_cvtps_epi32(p), avx_px0), _MM_SHUFFLE(3,1,2,0)); px1 = _mm256_sub_epi8(_mm256_packus_epi16(px1, avx_px0), avx_pxConvertI8); /* Pack and add I8 conversion param */ - _mm256_storeu_si256((__m256i *)(dstPtr), px1); /* store the 4 pixels in dst */ + rpp_storeu_si64((__m128i *)(dstPtr), _mm256_castsi256_si128(px1)); /* store the 4 pixels in dst */ } inline void rpp_store24_f32pln3_to_i8pln3_avx(Rpp8s* dstRPtr, Rpp8s* dstGPtr, Rpp8s* dstBPtr, __m256* p) @@ -3786,7 +3787,7 @@ inline void rpp_store24_i8pkd3_to_i8pln3_avx(Rpp8s* dstPtrR, Rpp8s* dstPtrG, Rpp rpp_storeu_si32((__m128i *)(dstPtrB + 4), _mm_shuffle_epi8(p128[1], xmm_char_maskB)); /* shuffle to get B05-B08*/ } -inline void rpp_store4_u8_to_u8(Rpp8u* dstPtr, __m128i &p) +inline void rpp_store12_u8_to_u8(Rpp8u* dstPtr, __m128i &p) { _mm_storeu_si128((__m128i *)(dstPtr), p); } @@ -3801,18 +3802,6 @@ inline void rpp_store24_i8_to_i8_avx(Rpp8s* dstPtr, __m256i &p) _mm256_storeu_si256((__m256i *)(dstPtr), p); } -inline void rpp_store8_u8pln1_to_u8pln1_avx(Rpp8u* dstPtr, __m256i &p) -{ - __m128i pTemp = _mm256_castsi256_si128(p); - rpp_storeu_si64((__m128i *)(dstPtr), pTemp); -} - -inline void rpp_store8_i8pln1_to_i8pln1(Rpp8s* dstPtr, __m256i &p) -{ - __m128i pTemp = _mm256_castsi256_si128(p); - rpp_storeu_si64((__m128i *)(dstPtr), pTemp); -} - inline void rpp_store12_u8pln3_to_u8pkd3(Rpp8u* dstPtr, __m128i *p) { __m128i px[4]; @@ -3844,7 +3833,9 @@ inline void rpp_store12_i8pkd3_to_i8pln3(Rpp8s* dstPtrR, Rpp8s* dstPtrG, Rpp8s* rpp_storeu_si32((__m128i *)(dstPtrB), _mm_shuffle_epi8(p, xmm_char_maskB)); /* Shuffle and extract the B pixels*/ } -inline void rpp_store4_i8_to_i8(Rpp8s* dstPtr, __m128i &p) + + +inline void rpp_store12_i8_to_i8(Rpp8s* dstPtr, __m128i &p) { _mm_storeu_si128((__m128i *)(dstPtr), p); } diff --git a/src/modules/cpu/host_tensor_geometric_augmentations.hpp b/src/modules/cpu/host_tensor_geometric_augmentations.hpp index 627e1b70e..cc7a22c8f 100644 --- a/src/modules/cpu/host_tensor_geometric_augmentations.hpp +++ b/src/modules/cpu/host_tensor_geometric_augmentations.hpp @@ -28,6 +28,7 @@ SOFTWARE. #include "kernel/crop.hpp" #include "kernel/crop_mirror_normalize.hpp" #include "kernel/flip.hpp" +#include "kernel/remap.hpp" #include "kernel/resize.hpp" #include "kernel/resize_mirror_normalize.hpp" #include "kernel/resize_crop_mirror.hpp" diff --git a/src/modules/cpu/kernel/remap.hpp b/src/modules/cpu/kernel/remap.hpp new file mode 100644 index 000000000..6b9e0a867 --- /dev/null +++ b/src/modules/cpu/kernel/remap.hpp @@ -0,0 +1,1986 @@ +/* +MIT License + +Copyright (c) 2019 - 2024 Advanced Micro Devices, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#include "rppdefs.h" +#include "rpp_cpu_simd.hpp" +#include "rpp_cpu_common.hpp" + +/************* NEAREST NEIGHBOR INTERPOLATION *************/ + +RppStatus remap_nn_u8_u8_host_tensor(Rpp8u *srcPtr, + RpptDescPtr srcDescPtr, + Rpp8u *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + + __m128 pSrcChannel = _mm_set1_ps(srcDescPtr->c); + __m128 pSrcStride = _mm_set1_ps(srcDescPtr->strides.hStride); + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + + Rpp8u *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage + (roi.xywhROI.xy.y * srcDescPtr->strides.hStride) + (roi.xywhROI.xy.x * layoutParams.bufferMultiplier); + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~3; // Align dst width to process 4 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 4; + Rpp32s vectorIncrement = 12; + Rpp32s remappedSrcLoc; + Rpp32s remapSrcLocArray[4] = {0}; // Since 4 dst pixels are processed per iteration + Rpp32f widthLimit = roi.xywhROI.roiWidth - 1; + Rpp32f heightLimit = roi.xywhROI.roiHeight - 1; + __m128 pWidthLimit = _mm_set1_ps(widthLimit); + __m128 pHeightLimit = _mm_set1_ps(heightLimit); + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8u *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_resize_nn_load_u8pkd3, srcPtrChannel, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_store12_u8pkd3_to_u8pln3, dstPtrTempR, dstPtrTempG, dstPtrTempB, pxRow); + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, srcDescPtr->c); + *dstPtrTempR++ = *(srcPtrChannel + remappedSrcLoc); + *dstPtrTempG++ = *(srcPtrChannel + 1 + remappedSrcLoc); + *dstPtrTempB++ = *(srcPtrChannel + 2 + remappedSrcLoc); + } + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8u *srcPtrRowR, *srcPtrRowG, *srcPtrRowB; + srcPtrRowR = srcPtrChannel; + srcPtrRowG = srcPtrRowR + srcDescPtr->strides.cStride; + srcPtrRowB = srcPtrRowG + srcDescPtr->strides.cStride; + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow[3]; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + rpp_simd_load(rpp_resize_nn_load_u8pln1, srcPtrRowR, remapSrcLocArray, pxRow[0]); + rpp_simd_load(rpp_resize_nn_load_u8pln1, srcPtrRowG, remapSrcLocArray, pxRow[1]); + rpp_simd_load(rpp_resize_nn_load_u8pln1, srcPtrRowB, remapSrcLocArray, pxRow[2]); + rpp_simd_store(rpp_store12_u8pln3_to_u8pkd3, dstPtrTemp, pxRow); + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + *dstPtrTemp++ = *(srcPtrRowR + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowG + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowB + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_resize_nn_load_u8pkd3, srcPtrChannel, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_store12_u8_to_u8, dstPtrTemp, pxRow); + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, srcDescPtr->c); + *dstPtrTemp++ = *(srcPtrChannel + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrChannel + 1 + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrChannel + 2 + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW for 1 channel and 3 channel) + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + Rpp8u *srcPtrTempChn, *dstPtrTempChn; + srcPtrTempChn = srcPtrChannel; + dstPtrTempChn = dstPtrTemp; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + + for (int c = 0; c < dstDescPtr->c; c++) + { + __m128i pxRow; + rpp_simd_load(rpp_resize_nn_load_u8pln1, srcPtrTempChn, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pxRow); + srcPtrTempChn += srcDescPtr->strides.cStride; + dstPtrTempChn += dstDescPtr->strides.cStride; + } + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + Rpp8u * dstPtrTempChannel = dstPtrTemp; + Rpp8u * srcPtrTempChannel = srcPtrChannel; + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + for (int c = 0; c < dstDescPtr->c; c++) + { + *dstPtrTempChannel = *(srcPtrTempChannel + remappedSrcLoc); + dstPtrTempChannel += dstDescPtr->strides.cStride; + srcPtrTempChannel += srcDescPtr->strides.cStride; + } + dstPtrTemp++; + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +RppStatus remap_nn_f32_f32_host_tensor(Rpp32f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp32f *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + + __m128 pSrcChannel = _mm_set1_ps(srcDescPtr->c); + __m128 pSrcStride = _mm_set1_ps(srcDescPtr->strides.hStride); + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + + Rpp32f *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage + (roi.xywhROI.xy.y * srcDescPtr->strides.hStride) + (roi.xywhROI.xy.x * layoutParams.bufferMultiplier); + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~3; // Align dst width to process 4 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 4; + Rpp32s vectorIncrement = 12; + Rpp32s remappedSrcLoc; + Rpp32s remapSrcLocArray[4] = {0}; // Since 4 dst pixels are processed per iteration + Rpp32f widthLimit = roi.xywhROI.roiWidth - 1; + Rpp32f heightLimit = roi.xywhROI.roiHeight - 1; + __m128 pWidthLimit = _mm_set1_ps(widthLimit); + __m128 pHeightLimit = _mm_set1_ps(heightLimit); + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp32f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128 pRow[3]; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_resize_nn_load_f32pkd3_to_f32pln3, srcPtrChannel, remapSrcLocArray, pRow); + rpp_simd_store(rpp_store12_f32pln3_to_f32pln3, dstPtrTempR, dstPtrTempG, dstPtrTempB, pRow); + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, srcDescPtr->c); + *dstPtrTempR++ = *(srcPtrChannel + remappedSrcLoc); + *dstPtrTempG++ = *(srcPtrChannel + 1 + remappedSrcLoc); + *dstPtrTempB++ = *(srcPtrChannel + 2 + remappedSrcLoc); + } + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp32f *srcPtrRowR, *srcPtrRowG, *srcPtrRowB; + srcPtrRowR = srcPtrChannel; + srcPtrRowG = srcPtrRowR + srcDescPtr->strides.cStride; + srcPtrRowB = srcPtrRowG + srcDescPtr->strides.cStride; + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128 pRow[4]; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + rpp_simd_load(rpp_resize_nn_load_f32pln1, srcPtrRowR, remapSrcLocArray, pRow[0]); + rpp_simd_load(rpp_resize_nn_load_f32pln1, srcPtrRowG, remapSrcLocArray, pRow[1]); + rpp_simd_load(rpp_resize_nn_load_f32pln1, srcPtrRowB, remapSrcLocArray, pRow[2]); + rpp_simd_store(rpp_store12_f32pln3_to_f32pkd3, dstPtrTemp, pRow); + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + *dstPtrTemp++ = *(srcPtrRowR + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowG + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowB + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + __m128 pRow; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_load4_f32_to_f32, (srcPtrChannel + *remapSrcLocArray), &pRow); + rpp_simd_store(rpp_store4_f32_to_f32, dstPtrTemp, &pRow); + dstPtrTemp += 3; + rowRemapTableTemp++; + colRemapTableTemp++; + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW for 1 channel and 3 channel) + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + Rpp32f *srcPtrTempChn, *dstPtrTempChn; + srcPtrTempChn = srcPtrChannel; + dstPtrTempChn = dstPtrTemp; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + + for (int c = 0; c < dstDescPtr->c; c++) + { + __m128 pRow; + rpp_simd_load(rpp_resize_nn_load_f32pln1, srcPtrTempChn, remapSrcLocArray, pRow); + rpp_simd_store(rpp_store4_f32_to_f32, dstPtrTempChn, &pRow); + srcPtrTempChn += srcDescPtr->strides.cStride; + dstPtrTempChn += dstDescPtr->strides.cStride; + } + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + Rpp32f * dstPtrTempChannel = dstPtrTemp; + Rpp32f * srcPtrTempChannel = srcPtrChannel; + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + for (int c = 0; c < dstDescPtr->c; c++) + { + *dstPtrTempChannel = *(srcPtrTempChannel + remappedSrcLoc); + dstPtrTempChannel += dstDescPtr->strides.cStride; + srcPtrTempChannel += srcDescPtr->strides.cStride; + } + dstPtrTemp++; + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +RppStatus remap_nn_i8_i8_host_tensor(Rpp8s *srcPtr, + RpptDescPtr srcDescPtr, + Rpp8s *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + + __m128 pSrcChannel = _mm_set1_ps(srcDescPtr->c); + __m128 pSrcStride = _mm_set1_ps(srcDescPtr->strides.hStride); + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + + Rpp8s *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage + (roi.xywhROI.xy.y * srcDescPtr->strides.hStride) + (roi.xywhROI.xy.x * layoutParams.bufferMultiplier); + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~3; // Align dst width to process 4 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 4; + Rpp32s vectorIncrement = 12; + Rpp32s remappedSrcLoc; + Rpp32s remapSrcLocArray[4] = {0}; // Since 4 dst pixels are processed per iteration + Rpp32f widthLimit = roi.xywhROI.roiWidth - 1; + Rpp32f heightLimit = roi.xywhROI.roiHeight - 1; + __m128 pWidthLimit = _mm_set1_ps(widthLimit); + __m128 pHeightLimit = _mm_set1_ps(heightLimit); + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8s *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_resize_nn_load_i8pkd3, srcPtrChannel, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_store12_i8pkd3_to_i8pln3, dstPtrTempR, dstPtrTempG, dstPtrTempB, pxRow); + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, srcDescPtr->c); + *dstPtrTempR++ = *(srcPtrChannel + remappedSrcLoc); + *dstPtrTempG++ = *(srcPtrChannel + 1 + remappedSrcLoc); + *dstPtrTempB++ = *(srcPtrChannel + 2 + remappedSrcLoc); + } + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8s *srcPtrRowR, *srcPtrRowG, *srcPtrRowB; + srcPtrRowR = srcPtrChannel; + srcPtrRowG = srcPtrRowR + srcDescPtr->strides.cStride; + srcPtrRowB = srcPtrRowG + srcDescPtr->strides.cStride; + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow[3]; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + rpp_simd_load(rpp_resize_nn_load_i8pln1, srcPtrRowR, remapSrcLocArray, pxRow[0]); + rpp_simd_load(rpp_resize_nn_load_i8pln1, srcPtrRowG, remapSrcLocArray, pxRow[1]); + rpp_simd_load(rpp_resize_nn_load_i8pln1, srcPtrRowB, remapSrcLocArray, pxRow[2]); + rpp_simd_store(rpp_store12_i8pln3_to_i8pkd3, dstPtrTemp, pxRow); + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + *dstPtrTemp++ = *(srcPtrRowR + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowG + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrRowB + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m128i pxRow; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit, pSrcChannel); + rpp_simd_load(rpp_resize_nn_load_i8pkd3, srcPtrChannel, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_store12_i8_to_i8, dstPtrTemp, pxRow); + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, srcDescPtr->c); + *dstPtrTemp++ = *(srcPtrChannel + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrChannel + 1 + remappedSrcLoc); + *dstPtrTemp++ = *(srcPtrChannel + 2 + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW for 1 channel and 3 channel) + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + Rpp8s *srcPtrTempChn, *dstPtrTempChn; + srcPtrTempChn = srcPtrChannel; + dstPtrTempChn = dstPtrTemp; + compute_remap_src_loc_sse(rowRemapTableTemp, colRemapTableTemp, remapSrcLocArray, pSrcStride, pWidthLimit, pHeightLimit); + + for (int c = 0; c < dstDescPtr->c; c++) + { + __m128i pxRow; + rpp_simd_load(rpp_resize_nn_load_i8pln1, srcPtrTempChn, remapSrcLocArray, pxRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pxRow); + srcPtrTempChn += srcDescPtr->strides.cStride; + dstPtrTempChn += dstDescPtr->strides.cStride; + } + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + Rpp8s * dstPtrTempChannel = dstPtrTemp; + Rpp8s * srcPtrTempChannel = srcPtrChannel; + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + for (int c = 0; c < dstDescPtr->c; c++) + { + *dstPtrTempChannel = *(srcPtrTempChannel + remappedSrcLoc); + dstPtrTempChannel += dstDescPtr->strides.cStride; + srcPtrTempChannel += srcDescPtr->strides.cStride; + } + dstPtrTemp++; + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +RppStatus remap_nn_f16_f16_host_tensor(Rpp16f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp16f *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + + __m128 pSrcChannel = _mm_set1_ps(srcDescPtr->c); + __m128 pSrcStride = _mm_set1_ps(srcDescPtr->strides.hStride); + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + + Rpp16f *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage + (roi.xywhROI.xy.y * srcDescPtr->strides.hStride) + (roi.xywhROI.xy.x * layoutParams.bufferMultiplier); + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + + Rpp32f widthLimit = roi.xywhROI.roiWidth - 1; + Rpp32f heightLimit = roi.xywhROI.roiHeight - 1; + // Remap with 3 channel inputs and outputs + if (srcDescPtr->c == 3 && dstDescPtr->c == 3) + { + Rpp16f *srcPtrRowR, *srcPtrRowG, *srcPtrRowB; + srcPtrRowR = srcPtrChannel; + srcPtrRowG = srcPtrRowR + srcDescPtr->strides.cStride; + srcPtrRowB = srcPtrRowG + srcDescPtr->strides.cStride; + Rpp16f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp16f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + Rpp32s remappedSrcLoc; + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit, layoutParams.bufferMultiplier); + *dstPtrTempR = (Rpp16f)*(srcPtrRowR + remappedSrcLoc); + *dstPtrTempG = (Rpp16f)*(srcPtrRowG + remappedSrcLoc); + *dstPtrTempB = (Rpp16f)*(srcPtrRowB + remappedSrcLoc); + dstPtrTempR = dstPtrTempR + dstDescPtr->strides.wStride; + dstPtrTempG = dstPtrTempG + dstDescPtr->strides.wStride; + dstPtrTempB = dstPtrTempB + dstDescPtr->strides.wStride; + } + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with single channel inputs and outputs + else + { + Rpp16f *srcPtrRow, *dstPtrRow; + srcPtrRow = srcPtrChannel; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp16f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + Rpp32s remappedSrcLoc; + compute_remap_src_loc(*rowRemapTableTemp++, *colRemapTableTemp++, remappedSrcLoc, srcDescPtr->strides.hStride, widthLimit, heightLimit); + *dstPtrTemp++ = (Rpp16f)*(srcPtrRow + remappedSrcLoc); + } + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +/************* BILINEAR INTERPOLATION *************/ + +RppStatus remap_bilinear_u8_u8_host_tensor(Rpp8u *srcPtr, + RpptDescPtr srcDescPtr, + Rpp8u *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); +#if __AVX2__ + __m256 pSrcChannel = _mm256_set1_ps(srcDescPtr->c); + __m256 pSrcStrideH = _mm256_set1_ps(srcDescPtr->strides.hStride); + __m256i pxSrcStridesCHW[3]; + pxSrcStridesCHW[0] = _mm256_set1_epi32(srcDescPtr->strides.cStride); + pxSrcStridesCHW[1] = _mm256_set1_epi32(srcDescPtr->strides.hStride); + pxSrcStridesCHW[2] = _mm256_set1_epi32(srcDescPtr->strides.wStride); +#endif + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi, roiLTRB; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + compute_ltrb_from_xywh_host(&roi, &roiLTRB); + + Rpp8u *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage; + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~7; // Align dst width to process 8 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 8; + Rpp32s vectorIncrement = 24; + +#if __AVX2__ + __m256 pBilinearCoeffs[4]; + __m256 pRoiLTRB[4]; + pRoiLTRB[0] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.x); + pRoiLTRB[1] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.y); + pRoiLTRB[2] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.x); + pRoiLTRB[3] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.y); + RpptBilinearNbhoodLocsVecLen8 srcLocs; +#endif + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8u *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_u8pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pkd3_to_pln3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, dstPtrTempG++, dstPtrTempB++, srcPtrChannel, srcDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_u8pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_u8pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8u *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp8u *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_u8pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle single channel (NCHW -> NCHW) + else if ((srcDescPtr->c == 1) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8u *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp8u *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[4], pDst; + compute_generic_bilinear_srclocs_1c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, pRoiLTRB); + rpp_simd_load(rpp_generic_bilinear_load_1c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_1c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store8_f32pln1_to_u8pln1_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +RppStatus remap_bilinear_f32_f32_host_tensor(Rpp32f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp32f *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + +#if __AVX2__ + __m256 pSrcChannel = _mm256_set1_ps(srcDescPtr->c); + __m256 pSrcStrideH = _mm256_set1_ps(srcDescPtr->strides.hStride); + __m256i pxSrcStridesCHW[3]; + pxSrcStridesCHW[0] = _mm256_set1_epi32(srcDescPtr->strides.cStride); + pxSrcStridesCHW[1] = _mm256_set1_epi32(srcDescPtr->strides.hStride); + pxSrcStridesCHW[2] = _mm256_set1_epi32(srcDescPtr->strides.wStride); +#endif + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi, roiLTRB; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + compute_ltrb_from_xywh_host(&roi, &roiLTRB); + + Rpp32f *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage; + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~7; // Align dst width to process 8 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 8; + Rpp32s vectorIncrement = 24; + +#if __AVX2__ + __m256 pBilinearCoeffs[4]; + __m256 pRoiLTRB[4]; + pRoiLTRB[0] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.x); + pRoiLTRB[1] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.y); + pRoiLTRB[2] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.x); + pRoiLTRB[3] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.y); + RpptBilinearNbhoodLocsVecLen8 srcLocs; +#endif + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp32f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pkd3_to_pln3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, dstPtrTempG++, dstPtrTempB++, srcPtrChannel, srcDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp32f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp32f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle single channel (NCHW -> NCHW) + else if ((srcDescPtr->c == 1) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp32f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp32f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[4], pDst; + compute_generic_bilinear_srclocs_1c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, pRoiLTRB); + rpp_simd_load(rpp_generic_bilinear_load_1c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_1c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store8_f32pln1_to_f32pln1_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + + +RppStatus remap_bilinear_i8_i8_host_tensor(Rpp8s *srcPtr, + RpptDescPtr srcDescPtr, + Rpp8s *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams , + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + +#if __AVX2__ + __m256 pSrcChannel = _mm256_set1_ps(srcDescPtr->c); + __m256 pSrcStrideH = _mm256_set1_ps(srcDescPtr->strides.hStride); + __m256i pxSrcStridesCHW[3]; + pxSrcStridesCHW[0] = _mm256_set1_epi32(srcDescPtr->strides.cStride); + pxSrcStridesCHW[1] = _mm256_set1_epi32(srcDescPtr->strides.hStride); + pxSrcStridesCHW[2] = _mm256_set1_epi32(srcDescPtr->strides.wStride); +#endif + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi, roiLTRB; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + compute_ltrb_from_xywh_host(&roi, &roiLTRB); + + Rpp8s *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage; + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~7; // Align dst width to process 8 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 8; + Rpp32s vectorIncrement = 24; + +#if __AVX2__ + __m256 pBilinearCoeffs[4]; + __m256 pRoiLTRB[4]; + pRoiLTRB[0] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.x); + pRoiLTRB[1] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.y); + pRoiLTRB[2] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.x); + pRoiLTRB[3] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.y); + RpptBilinearNbhoodLocsVecLen8 srcLocs; +#endif + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8s *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + compute_offset_i8_3c_avx(pDst); + rpp_simd_store(rpp_store24_f32pln3_to_i8pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pkd3_to_pln3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, dstPtrTempG++, dstPtrTempB++, srcPtrChannel, srcDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + compute_offset_i8_3c_avx(pDst); + rpp_simd_store(rpp_store24_f32pln3_to_i8pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + compute_offset_i8_3c_avx(pDst); + rpp_simd_store(rpp_store24_f32pln3_to_i8pkd3_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8s *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp8s *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + compute_offset_i8_3c_avx(pDst); + rpp_simd_store(rpp_store24_f32pln3_to_i8pln3_avx, dstPtrTempR, dstPtrTempG, dstPtrTempB, pDst); // Store dst pixels + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle single channel (NCHW -> NCHW) + else if ((srcDescPtr->c == 1) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp8s *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp8s *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[4], pDst; + compute_generic_bilinear_srclocs_1c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, pRoiLTRB); + rpp_simd_load(rpp_generic_bilinear_load_1c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_1c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + compute_offset_i8_1c_avx(pDst); + rpp_simd_store(rpp_store8_f32pln1_to_i8pln1_avx, dstPtrTemp, pDst); // Store dst pixels + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} + +RppStatus remap_bilinear_f16_f16_host_tensor(Rpp16f *srcPtr, + RpptDescPtr srcDescPtr, + Rpp16f *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + RppLayoutParams layoutParams, + rpp::Handle& handle) +{ + RpptROI roiDefault = {0, 0, (Rpp32s)srcDescPtr->w, (Rpp32s)srcDescPtr->h}; + Rpp32u numThreads = handle.GetNumThreads(); + +#if __AVX2__ + __m256 pSrcChannel = _mm256_set1_ps(srcDescPtr->c); + __m256 pSrcStrideH = _mm256_set1_ps(srcDescPtr->strides.hStride); + __m256i pxSrcStridesCHW[3]; + pxSrcStridesCHW[0] = _mm256_set1_epi32(srcDescPtr->strides.cStride); + pxSrcStridesCHW[1] = _mm256_set1_epi32(srcDescPtr->strides.hStride); + pxSrcStridesCHW[2] = _mm256_set1_epi32(srcDescPtr->strides.wStride); +#endif + +omp_set_dynamic(0); +#pragma omp parallel for num_threads(numThreads) + for(int batchCount = 0; batchCount < dstDescPtr->n; batchCount++) + { + RpptROI roi, roiLTRB; + RpptROIPtr roiPtrInput = &roiTensorPtrSrc[batchCount]; + compute_roi_validation_host(roiPtrInput, &roi, &roiDefault, roiType); + compute_ltrb_from_xywh_host(&roi, &roiLTRB); + + Rpp16f *srcPtrChannel, *dstPtrChannel, *srcPtrImage, *dstPtrImage; + srcPtrImage = srcPtr + batchCount * srcDescPtr->strides.nStride; + dstPtrImage = dstPtr + batchCount * dstDescPtr->strides.nStride; + srcPtrChannel = srcPtrImage; + dstPtrChannel = dstPtrImage; + + Rpp32f *rowRemapTableImage, *colRemapTableImage; + rowRemapTableImage = rowRemapTable + batchCount * remapTableDescPtr->strides.nStride; + colRemapTableImage = colRemapTable + batchCount * remapTableDescPtr->strides.nStride; + + Rpp32u alignedLength = roi.xywhROI.roiWidth & ~7; // Align dst width to process 8 dst pixels per iteration + Rpp32s vectorIncrementPerChannel = 8; + Rpp32s vectorIncrement = 24; + +#if __AVX2__ + __m256 pBilinearCoeffs[4]; + __m256 pRoiLTRB[4]; + pRoiLTRB[0] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.x); + pRoiLTRB[1] = _mm256_set1_ps(roiLTRB.ltrbROI.lt.y); + pRoiLTRB[2] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.x); + pRoiLTRB[3] = _mm256_set1_ps(roiLTRB.ltrbROI.rb.y); + RpptBilinearNbhoodLocsVecLen8 srcLocs; +#endif + + // Remap with fused output-layout toggle (NHWC -> NCHW) + if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp16f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp16f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + Rpp32f dstPtrTempR_ps[8], dstPtrTempG_ps[8], dstPtrTempB_ps[8]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pln3_avx, dstPtrTempR_ps, dstPtrTempG_ps, dstPtrTempB_ps, pDst); // Store dst pixels + for(int cnt = 0; cnt < vectorIncrementPerChannel; cnt++) + { + dstPtrTempR[cnt] = (Rpp16f) dstPtrTempR_ps[cnt]; + dstPtrTempG[cnt] = (Rpp16f) dstPtrTempG_ps[cnt]; + dstPtrTempB[cnt] = (Rpp16f) dstPtrTempB_ps[cnt]; + } + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pkd3_to_pln3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, dstPtrTempG++, dstPtrTempB++, srcPtrChannel, srcDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap with fused output-layout toggle (NCHW -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp16f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp16f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + Rpp32f dstPtrTemp_ps[25]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pkd3_avx, dstPtrTemp_ps, pDst); // Store dst pixels + for(int cnt = 0; cnt < vectorIncrement; cnt++) + dstPtrTemp[cnt] = (Rpp16f) dstPtrTemp_ps[cnt]; + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NHWC -> NHWC) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + Rpp16f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int dstLocRow = 0; dstLocRow < roi.xywhROI.roiHeight; dstLocRow++) + { + Rpp16f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + Rpp32f dstPtrTemp_ps[25]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, true); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pkd3_avx, dstPtrTemp_ps, pDst); // Store dst pixels + for(int cnt = 0; cnt < vectorIncrement; cnt++) + dstPtrTemp[cnt] = (Rpp16f) dstPtrTemp_ps[cnt]; + dstPtrTemp += vectorIncrement; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + { + compute_generic_bilinear_interpolation_pln3pkd3_to_pkd3(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp, srcPtrChannel, srcDescPtr); + dstPtrTemp += 3; + } + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle (NCHW -> NCHW) + else if ((srcDescPtr->c == 3) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp16f *dstPtrRowR, *dstPtrRowG, *dstPtrRowB; + dstPtrRowR = dstPtrChannel; + dstPtrRowG = dstPtrRowR + dstDescPtr->strides.cStride; + dstPtrRowB = dstPtrRowG + dstDescPtr->strides.cStride; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp16f *dstPtrTempR, *dstPtrTempG, *dstPtrTempB; + dstPtrTempR = dstPtrRowR; + dstPtrTempG = dstPtrRowG; + dstPtrTempB = dstPtrRowB; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[12], pDst[3]; + Rpp32f dstPtrTempR_ps[8], dstPtrTempG_ps[8], dstPtrTempB_ps[8]; + compute_generic_bilinear_srclocs_3c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, srcDescPtr->c, pRoiLTRB, false); + rpp_simd_load(rpp_generic_bilinear_load_3c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_3c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store24_f32pln3_to_f32pln3_avx, dstPtrTempR_ps, dstPtrTempG_ps, dstPtrTempB_ps, pDst); // Store dst pixels + for(int cnt = 0; cnt < vectorIncrementPerChannel; cnt++) + { + dstPtrTempR[cnt] = (Rpp16f) dstPtrTempR_ps[cnt]; + dstPtrTempG[cnt] = (Rpp16f) dstPtrTempG_ps[cnt]; + dstPtrTempB[cnt] = (Rpp16f) dstPtrTempB_ps[cnt]; + } + dstPtrTempR += vectorIncrementPerChannel; + dstPtrTempG += vectorIncrementPerChannel; + dstPtrTempB += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTempR++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRowR += dstDescPtr->strides.hStride; + dstPtrRowG += dstDescPtr->strides.hStride; + dstPtrRowB += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + + // Remap without fused output-layout toggle single channel (NCHW -> NCHW) + else if ((srcDescPtr->c == 1) && (srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + Rpp16f *dstPtrRow; + dstPtrRow = dstPtrChannel; + + for(int i = 0; i < roi.xywhROI.roiHeight; i++) + { + Rpp16f *dstPtrTemp; + dstPtrTemp = dstPtrRow; + + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTableImage; + colRemapTableTemp = colRemapTableImage; + + int vectorLoopCount = 0; +#if __AVX2__ + for (; vectorLoopCount < alignedLength; vectorLoopCount += vectorIncrementPerChannel) + { + __m256 pSrcX = _mm256_loadu_ps(colRemapTableTemp); + __m256 pSrcY = _mm256_loadu_ps(rowRemapTableTemp); + __m256 pSrc[4], pDst; + Rpp32f dstPtrTemp_ps[8]; + compute_generic_bilinear_srclocs_1c_avx(pSrcY, pSrcX, srcLocs, pBilinearCoeffs, pSrcStrideH, pxSrcStridesCHW, pRoiLTRB); + rpp_simd_load(rpp_generic_bilinear_load_1c_avx, srcPtrChannel, srcDescPtr, srcLocs, pSrcY, pSrcX, pRoiLTRB, pSrc); // Load input pixels required for bilinear interpolation + compute_bilinear_interpolation_1c_avx(pSrc, pBilinearCoeffs, pDst); // Compute Bilinear interpolation + rpp_simd_store(rpp_store8_f32pln1_to_f32pln1_avx, dstPtrTemp_ps, pDst); // Store dst pixels + for(int cnt = 0; cnt < vectorIncrementPerChannel; cnt++) + dstPtrTemp[cnt] = (Rpp16f) dstPtrTemp_ps[cnt]; + dstPtrTemp += vectorIncrementPerChannel; + rowRemapTableTemp += vectorIncrementPerChannel; + colRemapTableTemp += vectorIncrementPerChannel; + } +#endif + for (; vectorLoopCount < roi.xywhROI.roiWidth; vectorLoopCount++) + compute_generic_bilinear_interpolation_pln_to_pln(*rowRemapTableTemp++, *colRemapTableTemp++, &roiLTRB, dstPtrTemp++, srcPtrChannel, srcDescPtr, dstDescPtr); + + dstPtrRow += dstDescPtr->strides.hStride; + rowRemapTableImage += remapTableDescPtr->strides.hStride; + colRemapTableImage += remapTableDescPtr->strides.hStride; + } + } + } + + return RPP_SUCCESS; +} diff --git a/src/modules/cpu/kernel/resize.hpp b/src/modules/cpu/kernel/resize.hpp index 12ff039f6..3820b096a 100644 --- a/src/modules/cpu/kernel/resize.hpp +++ b/src/modules/cpu/kernel/resize.hpp @@ -182,7 +182,7 @@ RppStatus resize_nn_u8_u8_host_tensor(Rpp8u *srcPtr, __m128i pRow; compute_resize_nn_src_loc_sse(pDstLoc, pWRatio, pWidthLimit, srcLocationColumnArray, pWOffset, true); rpp_simd_load(rpp_resize_nn_load_u8pkd3, srcPtrTemp, srcLocationColumnArray, pRow); - rpp_simd_store(rpp_store4_u8_to_u8, dstPtrTemp, pRow); + rpp_simd_store(rpp_store12_u8_to_u8, dstPtrTemp, pRow); dstPtrTemp += vectorIncrementPkd; } for (; vectorLoopCount < dstImgSize[batchCount].width; vectorLoopCount++) @@ -222,7 +222,7 @@ RppStatus resize_nn_u8_u8_host_tensor(Rpp8u *srcPtr, { __m128i pRow; rpp_simd_load(rpp_resize_nn_load_u8pln1, srcPtrTempChn, srcLocationColumnArray, pRow); - rpp_simd_store(rpp_store4_u8_to_u8, dstPtrTempChn, pRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pRow); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } @@ -616,7 +616,7 @@ RppStatus resize_nn_i8_i8_host_tensor(Rpp8s *srcPtr, __m128i pRow; compute_resize_nn_src_loc_sse(pDstLoc, pWRatio, pWidthLimit, srcLocationColumnArray, pWOffset, true); rpp_simd_load(rpp_resize_nn_load_i8pkd3, srcPtrTemp, srcLocationColumnArray, pRow); - rpp_simd_store(rpp_store4_i8_to_i8, dstPtrTemp, pRow); + rpp_simd_store(rpp_store12_i8_to_i8, dstPtrTemp, pRow); dstPtrTemp += vectorIncrementPkd; } for (; vectorLoopCount < dstImgSize[batchCount].width; vectorLoopCount++) @@ -656,7 +656,7 @@ RppStatus resize_nn_i8_i8_host_tensor(Rpp8s *srcPtr, { __m128i pRow; rpp_simd_load(rpp_resize_nn_load_i8pln1, srcPtrTempChn, srcLocationColumnArray, pRow); - rpp_simd_store(rpp_store4_i8_to_i8, dstPtrTempChn, pRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pRow); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } diff --git a/src/modules/cpu/kernel/warp_affine.hpp b/src/modules/cpu/kernel/warp_affine.hpp index 9fd335c29..4150637a7 100644 --- a/src/modules/cpu/kernel/warp_affine.hpp +++ b/src/modules/cpu/kernel/warp_affine.hpp @@ -218,7 +218,7 @@ RppStatus warp_affine_nn_u8_u8_host_tensor(Rpp8u *srcPtr, __m128i pRow; compute_generic_nn_srclocs_and_validate_sse(pSrcY, pSrcX, pRoiLTRB, pSrcStrideH, srcLoc, invalidLoad, true); rpp_simd_load(rpp_generic_nn_load_u8pkd3, srcPtrChannel, srcLoc, invalidLoad, pRow); - rpp_simd_store(rpp_store4_u8_to_u8, dstPtrTemp, pRow); + rpp_simd_store(rpp_store12_u8_to_u8, dstPtrTemp, pRow); compute_warp_affine_src_loc_next_term_sse(pSrcY, pSrcX, pAffineMatrixTerm3Incr, pAffineMatrixTerm0Incr); dstPtrTemp += vectorIncrementPkd; } @@ -261,7 +261,7 @@ RppStatus warp_affine_nn_u8_u8_host_tensor(Rpp8u *srcPtr, { __m128i pRow; rpp_simd_load(rpp_generic_nn_load_u8pln1, srcPtrTempChn, srcLoc, invalidLoad, pRow); - rpp_simd_store(rpp_store4_u8_to_u8, dstPtrTempChn, pRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pRow); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } @@ -672,7 +672,7 @@ RppStatus warp_affine_nn_i8_i8_host_tensor(Rpp8s *srcPtr, __m128i pRow; compute_generic_nn_srclocs_and_validate_sse(pSrcY, pSrcX, pRoiLTRB, pSrcStrideH, srcLoc, invalidLoad, true); rpp_simd_load(rpp_generic_nn_load_i8pkd3, srcPtrChannel, srcLoc, invalidLoad, pRow); - rpp_simd_store(rpp_store4_i8_to_i8, dstPtrTemp, pRow); + rpp_simd_store(rpp_store12_i8_to_i8, dstPtrTemp, pRow); compute_warp_affine_src_loc_next_term_sse(pSrcY, pSrcX, pAffineMatrixTerm3Incr, pAffineMatrixTerm0Incr); dstPtrTemp += vectorIncrementPkd; } @@ -715,7 +715,7 @@ RppStatus warp_affine_nn_i8_i8_host_tensor(Rpp8s *srcPtr, { __m128i pRow; rpp_simd_load(rpp_generic_nn_load_i8pln1, srcPtrTempChn, srcLoc, invalidLoad, pRow); - rpp_simd_store(rpp_store4_i8_to_i8, dstPtrTempChn, pRow); + rpp_simd_store(rpp_storeu_si32, dstPtrTempChn, pRow); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } diff --git a/src/modules/cpu/kernel/water.hpp b/src/modules/cpu/kernel/water.hpp index 3f0b1c509..4aa43602a 100644 --- a/src/modules/cpu/kernel/water.hpp +++ b/src/modules/cpu/kernel/water.hpp @@ -281,7 +281,7 @@ RppStatus water_u8_u8_host_tensor(Rpp8u *srcPtr, { __m256i pRow; rpp_simd_load(rpp_generic_nn_load_u8pln1_avx, srcPtrTempChn, srcLocArray, invalidLoad, pRow); - rpp_simd_store(rpp_store8_u8pln1_to_u8pln1_avx, dstPtrTempChn, pRow); + rpp_storeu_si64((__m128i *)(dstPtrTempChn), _mm256_castsi256_si128(pRow)); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } @@ -965,7 +965,7 @@ RppStatus water_i8_i8_host_tensor(Rpp8s *srcPtr, { __m256i pRow; rpp_simd_load(rpp_generic_nn_load_i8pln1_avx, srcPtrTempChn, srcLocArray, invalidLoad, pRow); - rpp_simd_store(rpp_store8_i8pln1_to_i8pln1, dstPtrTempChn, pRow); + rpp_storeu_si64((__m128i *)(dstPtrTempChn), _mm256_castsi256_si128(pRow)); srcPtrTempChn += srcDescPtr->strides.cStride; dstPtrTempChn += dstDescPtr->strides.cStride; } diff --git a/src/modules/hip/hip_tensor_geometric_augmentations.hpp b/src/modules/hip/hip_tensor_geometric_augmentations.hpp index e64f3b21d..dcd890139 100644 --- a/src/modules/hip/hip_tensor_geometric_augmentations.hpp +++ b/src/modules/hip/hip_tensor_geometric_augmentations.hpp @@ -29,6 +29,7 @@ SOFTWARE. #include "kernel/crop_mirror_normalize.hpp" #include "kernel/warp_affine.hpp" #include "kernel/flip.hpp" +#include "kernel/remap.hpp" #include "kernel/resize.hpp" #include "kernel/resize_mirror_normalize.hpp" #include "kernel/resize_crop_mirror.hpp" diff --git a/src/modules/hip/kernel/remap.hpp b/src/modules/hip/kernel/remap.hpp new file mode 100644 index 000000000..daff9d922 --- /dev/null +++ b/src/modules/hip/kernel/remap.hpp @@ -0,0 +1,496 @@ +#include +#include "rpp_hip_common.hpp" + +__device__ float4 rpp_hip_load4(float *table, uint4 &tableValLoc) +{ + return make_float4(table[tableValLoc.x], table[tableValLoc.y], table[tableValLoc.z], table[tableValLoc.w]); +} + +__device__ void remap_srclocs_hip_compute(int4 *srcRoiPtr_i4, float *rowRemapTable, float *colRemapTable, int id_x, int id_y, int id_z, d_float16 *locSrc_f16) +{ + d_uint8 increment_ui8, locSrc_ui8; + + increment_ui8.ui4[0] = make_uint4(0, 1, 2, 3); // 8 element vectorized kernel needs 8 increments - creating uint4 for increments 0, 1, 2, 3 + increment_ui8.ui4[1] = make_uint4(4, 5, 6, 7); // 8 element vectorized kernel needs 8 increments - creating uint4 for increments 4, 5, 6, 7 + uint4 locSrc_ui4 = (uint4)(id_x); // getting current id_x into a uint4 + locSrc_ui8.ui4[0] = locSrc_ui4 + increment_ui8.ui4[0]; // computing vectorized locs (id_x + 0, id_x + 1, id_x + 2, id_x + 3) + locSrc_ui8.ui4[1] = locSrc_ui4 + increment_ui8.ui4[1]; // computing vectorized locs (id_x + 4, id_x + 5, id_x + 6, id_x + 7) + + locSrc_f16->f8[0].f4[0] = rpp_hip_load4(colRemapTable, locSrc_ui8.ui4[0]); // writes 4 src location col values + locSrc_f16->f8[0].f4[1] = rpp_hip_load4(colRemapTable, locSrc_ui8.ui4[1]); // writes 4 src location col values + locSrc_f16->f8[1].f4[0] = rpp_hip_load4(rowRemapTable, locSrc_ui8.ui4[0]); // writes 4 src location row values + locSrc_f16->f8[1].f4[1] = rpp_hip_load4(rowRemapTable, locSrc_ui8.ui4[1]); // writes 4 src location row values +} + +// -------------------- Set 2 - Nearest Neighbor Interpolation -------------------- + +template +__global__ void remap_nearest_neighbor_pkd_hip_tensor(T *srcPtr, + uint2 srcStridesNH, + T *dstPtr, + uint2 dstStridesNH, + uint2 dstDimsWH, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNH.x); + uint dstIdx = (id_z * dstStridesNH.x) + (id_y * dstStridesNH.y) + (id_x * 3); + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_nearest_neighbor_pkd3(srcPtr + srcIdx, srcStridesNH.y, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pkd3_and_store24_pkd3(dstPtr + dstIdx, &dst_f24); +} + +template +__global__ void remap_nearest_neighbor_pln_hip_tensor(T *srcPtr, + uint3 srcStridesNCH, + T *dstPtr, + uint3 dstStridesNCH, + uint2 dstDimsWH, + int channelsDst, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNCH.x); + uint dstIdx = (id_z * dstStridesNCH.x) + (id_y * dstStridesNCH.z) + id_x; + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float8 dst_f8; + rpp_hip_interpolate8_nearest_neighbor_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + + if (channelsDst == 3) + { + srcIdx += srcStridesNCH.y; + dstIdx += dstStridesNCH.y; + + rpp_hip_interpolate8_nearest_neighbor_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + + srcIdx += srcStridesNCH.y; + dstIdx += dstStridesNCH.y; + + rpp_hip_interpolate8_nearest_neighbor_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + } +} + +template +__global__ void remap_nearest_neighbor_pkd3_pln3_hip_tensor(T *srcPtr, + uint2 srcStridesNH, + T *dstPtr, + uint3 dstStridesNCH, + uint2 dstDimsWH, + int channelsDst, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNH.x); + uint dstIdx = (id_z * dstStridesNCH.x) + (id_y * dstStridesNCH.z) + id_x; + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_nearest_neighbor_pkd3(srcPtr + srcIdx, srcStridesNH.y, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pkd3_and_store24_pln3(dstPtr + dstIdx, dstStridesNCH.y, &dst_f24); +} + +template +__global__ void remap_nearest_neighbor_pln3_pkd3_hip_tensor(T *srcPtr, + uint3 srcStridesNCH, + T *dstPtr, + uint2 dstStridesNH, + uint2 dstDimsWH, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNCH.x); + uint dstIdx = (id_z * dstStridesNH.x) + (id_y * dstStridesNH.y) + (id_x * 3); + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_nearest_neighbor_pln3(srcPtr + srcIdx, &srcStridesNCH, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pln3_and_store24_pkd3(dstPtr + dstIdx, &dst_f24); +} + +// -------------------- Set 2 - Bilinear Interpolation -------------------- + +template +__global__ void remap_bilinear_pkd_hip_tensor(T *srcPtr, + uint2 srcStridesNH, + T *dstPtr, + uint2 dstStridesNH, + uint2 dstDimsWH, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNH.x); + uint dstIdx = (id_z * dstStridesNH.x) + (id_y * dstStridesNH.y) + (id_x * 3); + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_bilinear_pkd3(srcPtr + srcIdx, srcStridesNH.y, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pkd3_and_store24_pkd3(dstPtr + dstIdx, &dst_f24); +} + +template +__global__ void remap_bilinear_pln_hip_tensor(T *srcPtr, + uint3 srcStridesNCH, + T *dstPtr, + uint3 dstStridesNCH, + uint2 dstDimsWH, + int channelsDst, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNCH.x); + uint dstIdx = (id_z * dstStridesNCH.x) + (id_y * dstStridesNCH.z) + id_x; + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float8 dst_f8; + rpp_hip_interpolate8_bilinear_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + + if (channelsDst == 3) + { + srcIdx += srcStridesNCH.y; + dstIdx += dstStridesNCH.y; + + rpp_hip_interpolate8_bilinear_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + + srcIdx += srcStridesNCH.y; + dstIdx += dstStridesNCH.y; + + rpp_hip_interpolate8_bilinear_pln1(srcPtr + srcIdx, srcStridesNCH.z, &locSrc_f16, &srcRoi_i4, &dst_f8); + rpp_hip_pack_float8_and_store8(dstPtr + dstIdx, &dst_f8); + } +} + +template +__global__ void remap_bilinear_pkd3_pln3_hip_tensor(T *srcPtr, + uint2 srcStridesNH, + T *dstPtr, + uint3 dstStridesNCH, + uint2 dstDimsWH, + int channelsDst, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNH.x); + uint dstIdx = (id_z * dstStridesNCH.x) + (id_y * dstStridesNCH.z) + id_x; + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_bilinear_pkd3(srcPtr + srcIdx, srcStridesNH.y, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pkd3_and_store24_pln3(dstPtr + dstIdx, dstStridesNCH.y, &dst_f24); +} + +template +__global__ void remap_bilinear_pln3_pkd3_hip_tensor(T *srcPtr, + uint3 srcStridesNCH, + T *dstPtr, + uint2 dstStridesNH, + uint2 dstDimsWH, + float *rowRemapTable, + float *colRemapTable, + uint2 remapTableStridesNH, + RpptROIPtr roiTensorPtrSrc) +{ + int id_x = (hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x) * 8; + int id_y = hipBlockIdx_y * hipBlockDim_y + hipThreadIdx_y; + int id_z = hipBlockIdx_z * hipBlockDim_z + hipThreadIdx_z; + + if ((id_y >= dstDimsWH.y) || (id_x >= dstDimsWH.x)) + return; + + uint srcIdx = (id_z * srcStridesNCH.x); + uint dstIdx = (id_z * dstStridesNH.x) + (id_y * dstStridesNH.y) + (id_x * 3); + + int4 srcRoi_i4 = *(int4 *)&roiTensorPtrSrc[id_z]; + float *rowRemapTableTemp = rowRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + float *colRemapTableTemp = colRemapTable + id_z * remapTableStridesNH.x + id_y * remapTableStridesNH.y; + + d_float16 locSrc_f16; + remap_srclocs_hip_compute(&srcRoi_i4, rowRemapTableTemp, colRemapTableTemp, id_x, id_y, id_z, &locSrc_f16); + + d_float24 dst_f24; + rpp_hip_interpolate24_bilinear_pln3(srcPtr + srcIdx, &srcStridesNCH, &locSrc_f16, &srcRoi_i4, &dst_f24); + rpp_hip_pack_float24_pln3_and_store24_pkd3(dstPtr + dstIdx, &dst_f24); +} + +// -------------------- Set 3 - Kernel Executors -------------------- + +template +RppStatus hip_exec_remap_tensor(T *srcPtr, + RpptDescPtr srcDescPtr, + T *dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr remapTableDescPtr, + RpptInterpolationType interpolationType, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + rpp::Handle& handle) +{ + if (roiType == RpptRoiType::XYWH) + hip_exec_roi_converison_xywh_to_ltrb(roiTensorPtrSrc, handle); + + int globalThreads_x = (dstDescPtr->strides.hStride + 7) >> 3; + int globalThreads_y = dstDescPtr->h; + int globalThreads_z = handle.GetBatchSize(); + + if (interpolationType == RpptInterpolationType::NEAREST_NEIGHBOR) + { + if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + hipLaunchKernelGGL(remap_nearest_neighbor_pkd_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint2(srcDescPtr->strides.nStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint2(dstDescPtr->strides.nStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + hipLaunchKernelGGL(remap_nearest_neighbor_pln_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint3(srcDescPtr->strides.nStride, srcDescPtr->strides.cStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint3(dstDescPtr->strides.nStride, dstDescPtr->strides.cStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + dstDescPtr->c, + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + hipLaunchKernelGGL(remap_nearest_neighbor_pkd3_pln3_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint2(srcDescPtr->strides.nStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint3(dstDescPtr->strides.nStride, dstDescPtr->strides.cStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + dstDescPtr->c, + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + hipLaunchKernelGGL(remap_nearest_neighbor_pln3_pkd3_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint3(srcDescPtr->strides.nStride, srcDescPtr->strides.cStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint2(dstDescPtr->strides.nStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + } + else if (interpolationType == RpptInterpolationType::BILINEAR) + { + if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + hipLaunchKernelGGL(remap_bilinear_pkd_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint2(srcDescPtr->strides.nStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint2(dstDescPtr->strides.nStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + hipLaunchKernelGGL(remap_bilinear_pln_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint3(srcDescPtr->strides.nStride, srcDescPtr->strides.cStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint3(dstDescPtr->strides.nStride, dstDescPtr->strides.cStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + dstDescPtr->c, + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NHWC) && (dstDescPtr->layout == RpptLayout::NCHW)) + { + hipLaunchKernelGGL(remap_bilinear_pkd3_pln3_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint2(srcDescPtr->strides.nStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint3(dstDescPtr->strides.nStride, dstDescPtr->strides.cStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + dstDescPtr->c, + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + else if ((srcDescPtr->layout == RpptLayout::NCHW) && (dstDescPtr->layout == RpptLayout::NHWC)) + { + hipLaunchKernelGGL(remap_bilinear_pln3_pkd3_hip_tensor, + dim3(ceil((float)globalThreads_x/LOCAL_THREADS_X), ceil((float)globalThreads_y/LOCAL_THREADS_Y), ceil((float)globalThreads_z/LOCAL_THREADS_Z)), + dim3(LOCAL_THREADS_X, LOCAL_THREADS_Y, LOCAL_THREADS_Z), + 0, + handle.GetStream(), + srcPtr, + make_uint3(srcDescPtr->strides.nStride, srcDescPtr->strides.cStride, srcDescPtr->strides.hStride), + dstPtr, + make_uint2(dstDescPtr->strides.nStride, dstDescPtr->strides.hStride), + make_uint2(dstDescPtr->w, dstDescPtr->h), + rowRemapTable, + colRemapTable, + make_uint2(remapTableDescPtr->strides.nStride, remapTableDescPtr->strides.hStride), + roiTensorPtrSrc); + } + } + return RPP_SUCCESS; +} diff --git a/src/modules/rppt_tensor_geometric_augmentations.cpp b/src/modules/rppt_tensor_geometric_augmentations.cpp index d758aa676..6d573ffcc 100644 --- a/src/modules/rppt_tensor_geometric_augmentations.cpp +++ b/src/modules/rppt_tensor_geometric_augmentations.cpp @@ -1160,6 +1160,147 @@ RppStatus rppt_flip_voxel_host(RppPtr_t srcPtr, return RPP_SUCCESS; } +/******************** remap ********************/ + +RppStatus rppt_remap_host(RppPtr_t srcPtr, + RpptDescPtr srcDescPtr, + RppPtr_t dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr tableDescPtr, + RpptInterpolationType interpolationType, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + rppHandle_t rppHandle) +{ + RppLayoutParams layoutParams = get_layout_params(srcDescPtr->layout, srcDescPtr->c); + + if (interpolationType != RpptInterpolationType::NEAREST_NEIGHBOR && interpolationType != RpptInterpolationType::BILINEAR) + return RPP_ERROR_NOT_IMPLEMENTED; + + if(interpolationType == RpptInterpolationType::NEAREST_NEIGHBOR) + { + if ((srcDescPtr->dataType == RpptDataType::U8) && (dstDescPtr->dataType == RpptDataType::U8)) + { + remap_nn_u8_u8_host_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F16) && (dstDescPtr->dataType == RpptDataType::F16)) + { + remap_nn_f16_f16_host_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F32) && (dstDescPtr->dataType == RpptDataType::F32)) + { + remap_nn_f32_f32_host_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::I8) && (dstDescPtr->dataType == RpptDataType::I8)) + { + remap_nn_i8_i8_host_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + } + else if(interpolationType == RpptInterpolationType::BILINEAR) + { + if ((srcDescPtr->dataType == RpptDataType::U8) && (dstDescPtr->dataType == RpptDataType::U8)) + { + remap_bilinear_u8_u8_host_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F16) && (dstDescPtr->dataType == RpptDataType::F16)) + { + remap_bilinear_f16_f16_host_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F32) && (dstDescPtr->dataType == RpptDataType::F32)) + { + remap_bilinear_f32_f32_host_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::I8) && (dstDescPtr->dataType == RpptDataType::I8)) + { + remap_bilinear_i8_i8_host_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + roiTensorPtrSrc, + roiType, + layoutParams, + rpp::deref(rppHandle)); + } + } + + return RPP_SUCCESS; +} + /********************************************************************************************************************/ /*********************************************** RPP_GPU_SUPPORT = ON ***********************************************/ /********************************************************************************************************************/ @@ -2028,4 +2169,84 @@ RppStatus rppt_flip_voxel_gpu(RppPtr_t srcPtr, #endif // backend } +/******************** remap ********************/ +RppStatus rppt_remap_gpu(RppPtr_t srcPtr, + RpptDescPtr srcDescPtr, + RppPtr_t dstPtr, + RpptDescPtr dstDescPtr, + Rpp32f *rowRemapTable, + Rpp32f *colRemapTable, + RpptDescPtr tableDescPtr, + RpptInterpolationType interpolationType, + RpptROIPtr roiTensorPtrSrc, + RpptRoiType roiType, + rppHandle_t rppHandle) +{ +#ifdef HIP_COMPILE + if (interpolationType != RpptInterpolationType::NEAREST_NEIGHBOR && interpolationType != RpptInterpolationType::BILINEAR) + return RPP_ERROR_NOT_IMPLEMENTED; + + if ((srcDescPtr->dataType == RpptDataType::U8) && (dstDescPtr->dataType == RpptDataType::U8)) + { + hip_exec_remap_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + interpolationType, + roiTensorPtrSrc, + roiType, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F16) && (dstDescPtr->dataType == RpptDataType::F16)) + { + hip_exec_remap_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + interpolationType, + roiTensorPtrSrc, + roiType, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::F32) && (dstDescPtr->dataType == RpptDataType::F32)) + { + hip_exec_remap_tensor(reinterpret_cast(static_cast(srcPtr) + srcDescPtr->offsetInBytes), + srcDescPtr, + reinterpret_cast(static_cast(dstPtr) + dstDescPtr->offsetInBytes), + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + interpolationType, + roiTensorPtrSrc, + roiType, + rpp::deref(rppHandle)); + } + else if ((srcDescPtr->dataType == RpptDataType::I8) && (dstDescPtr->dataType == RpptDataType::I8)) + { + hip_exec_remap_tensor(static_cast(srcPtr) + srcDescPtr->offsetInBytes, + srcDescPtr, + static_cast(dstPtr) + dstDescPtr->offsetInBytes, + dstDescPtr, + rowRemapTable, + colRemapTable, + tableDescPtr, + interpolationType, + roiTensorPtrSrc, + roiType, + rpp::deref(rppHandle)); + } + + return RPP_SUCCESS; +#elif defined(OCL_COMPILE) + return RPP_ERROR_NOT_IMPLEMENTED; +#endif // backend +} + #endif // GPU_SUPPORT \ No newline at end of file diff --git a/utilities/test_suite/HIP/Tensor_hip.cpp b/utilities/test_suite/HIP/Tensor_hip.cpp index 604231e3c..62f777ae8 100644 --- a/utilities/test_suite/HIP/Tensor_hip.cpp +++ b/utilities/test_suite/HIP/Tensor_hip.cpp @@ -63,11 +63,11 @@ int main(int argc, char **argv) int decoderType = atoi(argv[13]); int batchSize = atoi(argv[14]); - bool additionalParamCase = (testCase == 8 || testCase == 21 || testCase == 23|| testCase == 24 || testCase == 40 || testCase == 41 || testCase == 49 || testCase == 54); + bool additionalParamCase = (testCase == 8 || testCase == 21 || testCase == 23|| testCase == 24 || testCase == 40 || testCase == 41 || testCase == 49 || testCase == 54 || testCase == 79); bool kernelSizeCase = (testCase == 40 || testCase == 41 || testCase == 49 || testCase == 54); bool dualInputCase = (testCase == 2 || testCase == 30 || testCase == 33 || testCase == 61 || testCase == 63 || testCase == 65 || testCase == 68); bool randomOutputCase = (testCase == 8 || testCase == 84 || testCase == 49 || testCase == 54); - bool interpolationTypeCase = (testCase == 21 || testCase == 23 || testCase == 24); + bool interpolationTypeCase = (testCase == 21 || testCase == 23 || testCase == 24 || testCase == 79); bool reductionTypeCase = (testCase == 87 || testCase == 88 || testCase == 89); bool noiseTypeCase = (testCase == 8); bool pln1OutTypeCase = (testCase == 86); @@ -312,6 +312,13 @@ int main(int argc, char **argv) input_second = static_cast(calloc(inputBufferSize, 1)); output = static_cast(calloc(outputBufferSize, 1)); + Rpp32f *rowRemapTable, *colRemapTable; + if(testCase == 79) + { + rowRemapTable = static_cast(calloc(ioBufferSize, sizeof(Rpp32f))); + colRemapTable = static_cast(calloc(ioBufferSize, sizeof(Rpp32f))); + } + // Run case-wise RPP API and measure time rppHandle_t handle; hipStream_t stream; @@ -356,6 +363,13 @@ int main(int argc, char **argv) if(testCase == 82) CHECK_RETURN_STATUS(hipHostMalloc(&roiPtrInputCropRegion, 4 * sizeof(RpptROI))); + void *d_rowRemapTable, *d_colRemapTable; + if(testCase == 79) + { + CHECK_RETURN_STATUS(hipMalloc(&d_rowRemapTable, ioBufferSize * sizeof(Rpp32u))); + CHECK_RETURN_STATUS(hipMalloc(&d_colRemapTable, ioBufferSize * sizeof(Rpp32u))); + } + Rpp32u boxesInEachImage = 3; Rpp32f *colorBuffer; RpptRoiLtrb *anchorBoxInfoTensor; @@ -1074,6 +1088,25 @@ int main(int argc, char **argv) break; } + case 79: + { + testCaseName = "remap"; + + RpptDesc tableDesc = srcDesc; + RpptDescPtr tableDescPtr = &tableDesc; + init_remap(tableDescPtr, srcDescPtr, roiTensorPtrSrc, rowRemapTable, colRemapTable); + + CHECK_RETURN_STATUS(hipMemcpy(d_rowRemapTable, (void *)rowRemapTable, ioBufferSize * sizeof(Rpp32f), hipMemcpyHostToDevice)); + CHECK_RETURN_STATUS(hipMemcpy(d_colRemapTable, (void *)colRemapTable, ioBufferSize * sizeof(Rpp32f), hipMemcpyHostToDevice)); + + startWallTime = omp_get_wtime(); + if (inputBitDepth == 0 || inputBitDepth == 1 || inputBitDepth == 2 || inputBitDepth == 5) + rppt_remap_gpu(d_input, srcDescPtr, d_output, dstDescPtr, (Rpp32f *)d_rowRemapTable, (Rpp32f *)d_colRemapTable, tableDescPtr, interpolationType, roiTensorPtrSrc, roiTypeSrc, handle); + else + missingFuncFlag = 1; + + break; + } case 80: { testCaseName = "resize_mirror_normalize"; @@ -1476,6 +1509,13 @@ int main(int argc, char **argv) free(inputu8); free(inputu8Second); free(outputu8); + if(testCase == 79) + { + free(rowRemapTable); + free(colRemapTable); + CHECK_RETURN_STATUS(hipFree(d_rowRemapTable)); + CHECK_RETURN_STATUS(hipFree(d_colRemapTable)); + } CHECK_RETURN_STATUS(hipFree(d_input)); if(dualInputCase) CHECK_RETURN_STATUS(hipFree(d_input_second)); diff --git a/utilities/test_suite/HIP/runTests.py b/utilities/test_suite/HIP/runTests.py index f62103091..b5b492f39 100644 --- a/utilities/test_suite/HIP/runTests.py +++ b/utilities/test_suite/HIP/runTests.py @@ -103,9 +103,12 @@ def run_unit_test(srcPath1, srcPath2, dstPathTemp, case, numRuns, testType, layo print(f"./Tensor_hip {srcPath1} {srcPath2} {dstPathTemp} {bitDepth} {outputFormatToggle} {case} {noiseType} ") result = subprocess.run([buildFolderPath + "/build/Tensor_hip", srcPath1, srcPath2, dstPathTemp, str(bitDepth), str(outputFormatToggle), str(case), str(noiseType), str(numRuns), str(testType), str(layout), "0", str(qaMode), str(decoderType), str(batchSize)] + roiList + [scriptPath], stdout=subprocess.PIPE) # nosec print(result.stdout.decode()) - elif case == "21" or case == "23" or case == "24": + elif case == "21" or case == "23" or case == "24" or case == "79": # Run all variants of interpolation functions with additional argument of interpolationType = bicubic / bilinear / gaussian / nearestneigbor / lanczos / triangular - for interpolationType in range(6): + interpolationRange = 6 + if case =='79': + interpolationRange = 2 + for interpolationType in range(interpolationRange): print(f"./Tensor_hip {srcPath1} {srcPath2} {dstPathTemp} {bitDepth} {outputFormatToggle} {case} {interpolationType}") result = subprocess.run([buildFolderPath + "/build/Tensor_hip", srcPath1, srcPath2, dstPathTemp, str(bitDepth), str(outputFormatToggle), str(case), str(interpolationType), str(numRuns), str(testType), str(layout), "0", str(qaMode), str(decoderType), str(batchSize)] + roiList + [scriptPath], stdout=subprocess.PIPE) # nosec print(result.stdout.decode()) @@ -143,7 +146,7 @@ def run_performance_test(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPa # Run all variants of noise type functions with additional argument of noiseType = gausssianNoise / shotNoise / saltandpepperNoise for noiseType in range(3): run_performance_test_cmd(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, noiseType, numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) - elif case == "21" or case == "23" or case == "24": + elif case == "21" or case == "23" or case == "24" or case == "79": # Run all variants of interpolation functions with additional argument of interpolationType = bicubic / bilinear / gaussian / nearestneigbor / lanczos / triangular for interpolationType in range(6): run_performance_test_cmd(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, interpolationType, numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) @@ -296,7 +299,7 @@ def rpp_test_suite_parser_and_validator(): subprocess.run(["make", "-j16"], cwd=".") # nosec # List of cases supported -supportedCaseList = ['0', '1', '2', '4', '8', '13', '20', '21', '23', '29', '30', '31', '32', '33', '34', '36', '37', '38', '39', '45', '46', '54', '61', '63', '65', '68', '70', '80', '82', '83', '84', '85', '86', '87', '88', '89', '90'] +supportedCaseList = ['0', '1', '2', '4', '8', '13', '20', '21', '23', '29', '30', '31', '32', '33', '34', '36', '37', '38', '39', '45', '46', '54', '61', '63', '65', '68', '70', '79', '80', '82', '83', '84', '85', '86', '87', '88', '89', '90'] # Create folders based on testType and profilingOption if testType == 1 and profilingOption == "YES": @@ -377,7 +380,7 @@ def rpp_test_suite_parser_and_validator(): # Run all variants of noise type functions with additional argument of noiseType = gausssianNoise / shotNoise / saltandpepperNoise for noiseType in range(3): run_performance_test_with_profiler(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, noiseType, "_noiseType", numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) - elif case == "21" or case == "23" or case == "24": + elif case == "21" or case == "23" or case == "24" or case == "79": # Run all variants of interpolation functions with additional argument of interpolationType = bicubic / bilinear / gaussian / nearestneigbor / lanczos / triangular for interpolationType in range(6): run_performance_test_with_profiler(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, interpolationType, "_interpolationType", numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) @@ -435,7 +438,7 @@ def rpp_test_suite_parser_and_validator(): fileCheck = case_file_check(CASE_FILE_PATH, TYPE, TENSOR_TYPE_LIST, new_file, d_counter) if fileCheck == False: continue - elif (CASE_NUM == "24" or CASE_NUM == "21" or CASE_NUM == "23") and TYPE.startswith("Tensor"): + elif (CASE_NUM == "24" or CASE_NUM == "21" or CASE_NUM == "23" or CASE_NUM == "79") and TYPE.startswith("Tensor"): INTERPOLATIONTYPE_LIST = [0, 1, 2, 3, 4, 5] # Loop through extra param interpolationType for INTERPOLATIONTYPE in INTERPOLATIONTYPE_LIST: diff --git a/utilities/test_suite/HOST/Tensor_host.cpp b/utilities/test_suite/HOST/Tensor_host.cpp index f85ea5704..566777fd5 100644 --- a/utilities/test_suite/HOST/Tensor_host.cpp +++ b/utilities/test_suite/HOST/Tensor_host.cpp @@ -64,10 +64,10 @@ int main(int argc, char **argv) int decoderType = atoi(argv[13]); int batchSize = atoi(argv[14]); - bool additionalParamCase = (testCase == 8 || testCase == 21 || testCase == 23 || testCase == 24); + bool additionalParamCase = (testCase == 8 || testCase == 21 || testCase == 23 || testCase == 24 || testCase == 79); bool dualInputCase = (testCase == 2 || testCase == 30 || testCase == 33 || testCase == 61 || testCase == 63 || testCase == 65 || testCase == 68); bool randomOutputCase = (testCase == 8 || testCase == 84); - bool interpolationTypeCase = (testCase == 21 || testCase == 23 || testCase == 24); + bool interpolationTypeCase = (testCase == 21 || testCase == 23 || testCase == 24 || testCase == 79); bool reductionTypeCase = (testCase == 87 || testCase == 88 || testCase == 89); bool noiseTypeCase = (testCase == 8); bool pln1OutTypeCase = (testCase == 86); @@ -316,6 +316,13 @@ int main(int argc, char **argv) input_second = static_cast(calloc(inputBufferSize, 1)); output = static_cast(calloc(outputBufferSize, 1)); + Rpp32f *rowRemapTable, *colRemapTable; + if(testCase == 79) + { + rowRemapTable = static_cast(calloc(ioBufferSize, sizeof(Rpp32f))); + colRemapTable = static_cast(calloc(ioBufferSize, sizeof(Rpp32f))); + } + // Initialize buffers for any reductionType functions (testCase 87 - tensor_sum alone cannot return final sum as 8u/8s due to overflow. 8u inputs return 64u sums, 8s inputs return 64s sums) void *reductionFuncResultArr; Rpp32u reductionFuncResultArrLength = srcDescPtr->n * 4; @@ -1053,6 +1060,23 @@ int main(int argc, char **argv) break; } + case 79: + { + testCaseName = "remap"; + + RpptDesc tableDesc = srcDesc; + RpptDescPtr tableDescPtr = &tableDesc; + init_remap(tableDescPtr, srcDescPtr, roiTensorPtrSrc, rowRemapTable, colRemapTable); + + startWallTime = omp_get_wtime(); + startCpuTime = clock(); + if (inputBitDepth == 0 || inputBitDepth == 1 || inputBitDepth == 2 || inputBitDepth == 5) + rppt_remap_host(input, srcDescPtr, output, dstDescPtr, rowRemapTable, colRemapTable, tableDescPtr, interpolationType, roiTensorPtrSrc, roiTypeSrc, handle); + else + missingFuncFlag = 1; + + break; + } case 80: { testCaseName = "resize_mirror_normalize"; @@ -1500,6 +1524,11 @@ int main(int argc, char **argv) free(outputu8); free(input_second); free(output); + if(testCase == 79) + { + free(rowRemapTable); + free(colRemapTable); + } if(reductionTypeCase) free(reductionFuncResultArr); if(testCase == 33) diff --git a/utilities/test_suite/HOST/runTests.py b/utilities/test_suite/HOST/runTests.py index f83f981fa..445c139f5 100644 --- a/utilities/test_suite/HOST/runTests.py +++ b/utilities/test_suite/HOST/runTests.py @@ -92,9 +92,12 @@ def run_unit_test(srcPath1, srcPath2, dstPathTemp, case, numRuns, testType, layo print(f"./Tensor_host {srcPath1} {srcPath2} {dstPathTemp} {bitDepth} {outputFormatToggle} {case} {noiseType} 0 ") result = subprocess.run([buildFolderPath + "/build/Tensor_host", srcPath1, srcPath2, dstPathTemp, str(bitDepth), str(outputFormatToggle), str(case), str(noiseType), str(numRuns), str(testType), str(layout), "0", str(qaMode), str(decoderType), str(batchSize)] + roiList + [scriptPath], stdout=subprocess.PIPE) # nosec print(result.stdout.decode()) - elif case == "21" or case == "23" or case == "24": + elif case == "21" or case == "23" or case == "24" or case == "79": # Run all variants of interpolation functions with additional argument of interpolationType = bicubic / bilinear / gaussian / nearestneigbor / lanczos / triangular - for interpolationType in range(6): + interpolationRange = 6 + if case =='79': + interpolationRange = 2 + for interpolationType in range(interpolationRange): print(f"./Tensor_host {srcPath1} {srcPath2} {dstPathTemp} {bitDepth} {outputFormatToggle} {case} {interpolationType} 0") result = subprocess.run([buildFolderPath + "/build/Tensor_host", srcPath1, srcPath2, dstPathTemp, str(bitDepth), str(outputFormatToggle), str(case), str(interpolationType), str(numRuns), str(testType), str(layout), "0", str(qaMode), str(decoderType), str(batchSize)] + roiList + [scriptPath], stdout=subprocess.PIPE) # nosec print(result.stdout.decode()) @@ -135,7 +138,7 @@ def run_performance_test(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPa # Run all variants of noise type functions with additional argument of noiseType = gausssianNoise / shotNoise / saltandpepperNoise for noiseType in range(3): run_performance_test_cmd(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, noiseType, numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) - elif case == "21" or case == "23" or case == "24": + elif case == "21" or case == "23" or case == "24" or case == "79": # Run all variants of interpolation functions with additional argument of interpolationType = bicubic / bilinear / gaussian / nearestneigbor / lanczos / triangular for interpolationType in range(6): run_performance_test_cmd(loggingFolder, logFileLayout, srcPath1, srcPath2, dstPath, bitDepth, outputFormatToggle, case, interpolationType, numRuns, testType, layout, qaMode, decoderType, batchSize, roiList) @@ -272,7 +275,7 @@ def rpp_test_suite_parser_and_validator(): subprocess.run(["make", "-j16"], cwd=".") # nosec # List of cases supported -supportedCaseList = ['0', '1', '2', '4', '8', '13', '20', '21', '23', '29', '30', '31', '32', '33', '34', '36', '37', '38', '39', '45', '46', '54', '61', '63', '65', '68', '70', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90'] +supportedCaseList = ['0', '1', '2', '4', '8', '13', '20', '21', '23', '29', '30', '31', '32', '33', '34', '36', '37', '38', '39', '45', '46', '54', '61', '63', '65', '68', '70', '79', '80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90'] print("\n\n\n\n\n") print("##########################################################################################") diff --git a/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeBilinear.bin b/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeBilinear.bin new file mode 100644 index 000000000..2413901b3 --- /dev/null +++ b/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeBilinear.bin @@ -0,0 +1,257 @@ ++f$7n-:q.Ey7E|8?v2@t2>q/o-Br4Y„LhŽ]oeu•lt•je„Xo[e„KnQh‹KgŠJ_ƒFZ€EYF\K]ƒJ#N LHJ +\4b!:h Hr(Lu)U}6a†A[}@mŒPs’Vk‰Km‹MoŒTx•ix“prpx˜qW|F[‚C\€@\€@XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK‚œuB]2Kg7$@ 4U9] Dj/Ho6U€HfŽZg‹]ndt•jp‘dn`d†SjSfŠJ^†@Y‚p)3f!4g%Br6T}C_‚Hip^ÉоÇÓ½ÂÒ¸ŒŸŸ·“Jg7Fi%Kr#Sz+V}.^ƒ5cˆ;hŠ@jŠAlŠBqIj‡Ek‰Ib‚C]€>f‹FgŒFc‡=c‡=XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKÛÑÇÐƼÚÒÅÒ˻Ŀ¬ÝÜÈ–œ‚•¢†”§‰wkk†]\|K_…La‹LO{Iw7hˆ=i‡?h†>g…;`€5[}1^ƒ6fŒAbˆ=a‡:a‡:XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKÕÀ¯ßʹß̽îÛÍãÑÅñãØØÐÃijØÝÉ‘›ƒx‰gQk>X{ALv4Dv-=r*0c!!U BCP #`;r/Jx8Vz<ÕÀ¯èÓÂåÔÄÞÐÅäÛÒ×ÔÍÍÑÃÁ϶YmJyfi„OdAh†>k‰?h‡;f„:d‚:`€5`€4Ty)^…4X2V0V€.V€.XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKßëàƯßıèοæËÀéÐÉßÍÃÙËÀÙÒÂÒÑ¿³¸¡“¤‚Fd2Dl-9k$,aND B + +AP%`=q/Iv5Qu7ßëäȲâÇ´ôÞÐéØÐéÞÚçäßÝàÙàëÝÉÖÂyŠj—hm†Lf€?eƒ=h…Ba€Tz/Ju#Eu9m9mDv!Dv!XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKá£äŨßÁ¥êÌ´æŲâñãÄ°ìлìÔ¼âͺÖüåÜӺ­‘¦‡0T(D?8 =$I7^/Fl9Ru?[yE]tFá£߽¡Þ¼¡éÍ·åμé×ÉæØÏëàÞêääÑÏÔ›œž™¡–ƒ‘xezS¥s˜³|‰¨lZ}=Mu.?k7h-c,c5i5iXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKÏ«“༤ݺ¤ØµŸíʴཧִ›èÆ«ä¦ݿ§ìÐÄéÕÎòëáçí߸˵c}`HcDHcDRkM^uXl„bn†bn„^q‚^n}^Ï«“ܶ¡ç¯äðäǵã̺åÒÃæÖÉïäÞðêìâáß²¸ªly[Qe4Ga"Tq/Zy6Wv:7^(SRV!X'\ '\ XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKÚ±ÞµŸÝ¸žÒ­“Û¶›×²—Ó®“Ӭܵ˜â½£ð̼åÊ¿ðáÚîëäçïäÀοar`hwddq]myev„m{‡oy…mz„lylÚ±Ö«˜íIJíȵæƱæÊ´ßÆ°ÚŲîÞÑëàÜíèäíïâÞèÏkzODY!H`&E^$=X#2P,RL ION +N +XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKê¼¢¯ƒfدͤ„Åž}¿˜wÁš{Ë¢†Öª‘øζèĬòÖÁõâÔêÝ×íêåèêå› ™godz€t…ˆ}‹‘ƒŽ’„ŠŽ€…‰{ƒ‡y꼢͠‰Ò¨’Ý´žÔ°šÛ¸¢Èª’¹ŸˆÙıãÒÈßÔÎçâÜèêÝ×ÜÈ´¾£›¦„_mIZjCK`5Jd7?_0<]0-Q%.R&.R&XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK±‚dµ‡f uS´Œi¸’n¸”rѪ‹ïƪʆá´Ù¶šåǯèÑÁìÚÐòçãóî븷³pqkkld|~s…‡|ƒ…z}~v{|t{}r±‚d°ƒf›oT±‰o¼—}ݹŸ×µšË­“âȱÛÅ·ëÚÒâ×ÓÙÑÎçäÝÝÝÑ£¤’”˜glNdnL]kJ^nQXlSNdME\BE\BXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK§{XoM§|Z°‡g®‹k¿ž¤e»–|ѧЧ‘×·žÜÀªÜïåÒÃñãÚòé⌅ZZRbdWsug{}py{ntvkrskwyn§{X¢wTzR/–rR¹–x¹˜yάƤˆÅ¥ŒÐµ¢âÌ¿èÖÒáÓÐÞÓÑåÜÕáÙÎÐÉ·§ š•€ktwflrfhpeVaSVaSXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKhDtL)½”t¶o¯ˆiÖ±”Áž‚°ŒrÉ£ŒÕ±™Ù»£Ç¬—Õ¿ªæÐÂáÐÆÜÒÉ’‡gg_lnasugsugqsfik`bdYfh[hDŽfBwQ-¿z«ŠkÅ¢„¼™{§‚eº–|½ ŽÏ·«áÎÈàÎÌàÎÊåÔÍãÒÈáÑÄÕȸÍÁ±’‰zzthwwouvpqtkqtkXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKŸ~[«Ši°Œl³Šl¢qS¾q²‹n·“y |dȦۿ§Ô¹¤×À®ØµéÕÎöç䊆fgaknedg\``TbbV_aTacVccWŸ~[“jJ|S3S.Y5’mSª‚h¢y]†aGÊ­³’ÓÀºßÌÆ×üк¯ÚĹØÅ·×ƶØȸ°£’zscsqdlnahj_hj_XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKŽoSš|`…cJŸu]ŒY>†S6¡x\‘lQ‡bHž†Ñ³™ÚÀ©ØÁ±âÌÁçÒÍíÞÛåÝÚ’‘Œjmdgj_oqfssgprertgii]ŽoS‚]C?<E&qN:’lU¬‚išu[Â¥•¢ŒÄ°§äÍÅò×ÌÚÀ³Ì´¨É±¥ÖÀ²ÓÀ±Â³ Ÿ–…[YJ\^QbdWbdWXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK•tcšyh©…wˆ^Pb2„R;žrWŽbG‚T:¿“zÁŸ„Ó·¡êÐÁéÓÈéÖÐåÖÓæÝؾµvsjee[eg\gi^fi^dhZoqd•tcsQE< 1 nR=y_¡d±•€˜~mÀ¦—Ô¸ªÖ»ªàĶջ®Ï·«Ó¼®Í·©»ªš£—‡ZXLPRGRTGRTGXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK©ˆªˆ~µ“Š‘lc¤zj‰^KZ@W>wJ3`K¼˜~ºšƒàõζ¬åÔÍáÔÎåÛÒâÙÐ¥Ÿ“wuiacXdg^be\cf[koa©ˆ•tmW>9eUU 7C% ´•yÃ¥ŒpZ½ž‰Ôµ¡Þ¿«Ï² ÝÁ³ãɼӹªÃ®Å´¤¬ ’SQE@B78:-8:-XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKвªº•£†€Ï²ªÖ¶§Œo]Y@,; G#iD4²Žv§„nã–Õº±è×Ïìß×àÒÉõéÝäÚΘ’†bbXVYPSTL[^Ufl^вªÎ°¨Òµ¯ÚÅÂp]YR92rVJq\rV>غ¢dD+²ŽviQµ’|ĤÞÁ¯ÛÀ¯Ô¹¦Ìµ£À­œ¸¬œTRFEG%Á”}Õ¯šçıè˹âǶßıӾ«Š}liaTupjXVJun^Š}js]H‡mTx[9fJ%–{]´œ€´ž‡ŸyÄ´¤¸«›¼«™hV>~kMs`@™‹n†l€mmn`__S``T\\P\\PXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK<8- =0'N<.†t¬z‚bK§„h²‹jɤ‡Ä¥éʶ¼š›v[c7¨z`µ‹sè­èȳγžØ«Ĵ‡ticUfcZ<8-]UJ|pbV@5\B5O6 X>%ƒiNœ‚g’z`‰q¶§”Ƚ«´©—ˆ€iypS{rSŒˆk}}crwaZaOZ^MW[JadQadQXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKC6.,6 pZE‚hO…gM}Z>À—w¿˜{ίšìлү™³‹q¬€e”fL§yaDžῦµ›„ñ™‘…o{tayvgvvj  ,5 ^E/rX?v]t^F¤“¶«™™”¤¢{z^{|]„f|…hp}cfrZcmT]gNbjRbjRXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK  +H/F(]C£~cž„³”Þ¿«Ó¯™¸w™mRcF¾u®€hÇ¢ˆ›h¿³™†‚i~|g}~nxxlJ2&0% <" °›ˆµ¨— Œ‚o}ƒiƒŒol{Ši|mt…egvUhwVq‚`q‚`XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK( , ' & iE+½˜~½™Ã¤×»¥ ~evQ6Ãœ}Ä›}ŒcE¥€cµš}ª›~Š‰k‰u…Št}‚n‡‹z( ( + ' wad >%Y?2E+4^@(iO6}e™“}’—‡“{‰˜{‰šx†›t…œršr€™qyf”i~•k~•kXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK_)6e0:†XXB5 + 0 _7]3¢}b¿¡‰Í³š§ŒndG%hG$ƒeC†lKž‹j™t¥€ˆ—v…˜z‰—~‰•}„‘w_)6`17Q*-”zy.iM?X<'hN3aF(z]?nW8d^<“šxŽŸ¥ƒŽ¤~Ž¥{§wŠ¦s‰§uƒ£q‚ lƒ¡k†¢o†¢oXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK¹„Ž‘Z`‹XT[/$J$@ <FX1³‘v·Ÿ‡¶¦Œ–‡f€rMŠ|UŒ€Xœ”m•—ožs‡žr‰£|‹¥‚¢ˆ›{‰z¹„Ž«z€šst_HB* ƒiXŒpZ‹rTŠrPuX:|hG‰Šb—¦{‘¬­~©xŒ©s‡¦k…©l„ªo€¦k¦g¥g…§j…§jXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK¾šœ¶ŽŒsE8c6#T.T/e9a8mQ¢ˆo©¡Š¢¤Œ•œ{š¤Ž›p•¥x•©xŒ¤r‹§t…¥sˆ¨wŠ§yŽ©|ª}‡¡t¾šœ§…„9~rf–ƒtžˆsˆmŠuXiO6™ˆj˜šr—©yŽ­t‰­o…¨f¦cxŸ\{¤b}§gx¢`w ZtžVx Yx YXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK„h\}YC†\C‚^>vR0wO,…\<‰gL³…Á»¥ÀÄ­¦°• ±‘’«Œ©yŽ®|Œ­x„¥p‡¨s’°|Œªv®u‰¨o„¥n O=1¤˜ŠŸ“ƒ¤•‚œŠt`L1ƒnQ†lQ‚rPŠb“¥q…¥fŠ¯i{¡VužRpšPv¡Yz¥^w¢[o™Ol–Jm–Jm–JXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK¤•€¢Œw†kNŽpNŽpJpI“pJ—uR¬q¬“}¶¥‘·¥·´¡ÂÇ°¢³ªªz‘¯}‰¥t† p… kŠ§m¡b†©g†ªj¤•€’‹qŒ…k ”|™sšs–‰i„qQyb@sY4q^4{zJ‘ iƒŸb¤_u›Nm˜Fk˜GqNuŸUwŸVl’EjCj“Gj“GXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK˜Œr§–|§qœ‚aœ€[ºšt£ƒ]…bB]>"z[F†mY£Ž}¹©š¾¹¦ÁƯž­–«Š³•¦„•¥€‰œo…œhbŒ¬m…¨h˜Œr‹m€{[xYŠ_‡|\‹~\|[lT0P4 yd9„€Pœf}—ZzYtQn™Ie•Ah˜Dl—Ep™JiŽAhŒBl”Kl”KXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK¥—|¤’zž†l–{`Ÿ‚d¡€aŸ~_S.e@&yU=’t\§Œw˜~q­™ØÎÅÓÐǾÁ¸µ»±ÝßÔÜÞÐÌѺž©‡ s—f‡›h¥—|’‡iqkIyuR€|YriH|mL‘}Zt\:`C#}gBŒ_ˆ’]}•Wr•QvžXt Ua’@d–?e“9i•>m“Fl‘KhJhJXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK’†p´¢Œ¹ Œ­’}¨Œt‹kRT0M(wO6zU;‘qZ”weƨܿ¹Êµ²ÞÎÎçÝÜçßÝÛÑÐãÚÕäàÔæåѾĨÁȧ½Ã¡’†pslRPO3Z_AmtU_bE.-4-<1E4OA$gh@ƒ‘\}—Vb†>p˜RsžVZ‹:`’;a5e‘:r›Or—TwšZwšZXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK" +N<.WB1P9'M4> +8‡^H{Y=€bH–yg¹ÊªŸ¾”ÝÀºÎµ°Ô¿ºÚÇÁÓ¿¶ÞÊÁèØËîâÔß×ÊÛÓÆàÔÈ" + +\gW.?/ +6#)%&5 8?-CK3~hz–\t˜PqšLp™MržQd“Ej™If‘?o˜Ip˜Op•Pz™]z™]XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK, 6K0eJ5G'ƒXEqG1rS6–{`£ˆu˜{m¬‹|Æ¢”ȦšÂ¢—Ô¶«Ø¼°Ó¶¦Ý±àÆ·çÑÄßÍÃæÓÌë×Ð =]RKqfS}qLxkF7"5ZI?[M¢»¥u”ho“Ss™LpšHqšNtœUo˜Ro™QiD}£XkKzž^|›`|›`XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKkQDH'dA.kH2„^G–iVƒVA£f°’v¾ ˆ¹–€¦‚j¼—}Ú´ŸÎ©–Ö±ŸÓ®œÜ¸¢â¿©Û»¦äųäʽçÐÂéÏÀFo_F…tG‡wLŠ{R€RŒ}X‘€Q†vJth7]D†±{^Š?a‹5eŒ9z[z›b¯s†¨kq‘N~ž[hŒN¢h®u®uXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKA8)ˆhYN+ƒ_IT0G"vL6•kU–t[®Žu­v·•|³t³ŽqÕ°•ÂƒÎ¥â¹£Ô¬“໡ݹ¡ß¼¨âñàñç˶A8)XwgQ†tN‡vUŽ{X|Q†tX{-]M#LfG(I( zU;”nW´’y¡jaL°{§‡nÒ°•È¦ŠÌ©È£ˆÔ¯”س™Þº Ö²šÌ§”Ù´¡Ýº§èȳqVCC7)>@2BQ>PhPb~enŒtkˆtek„š…$<m‹KjŠ?†¥_­m‘­z‹§w|šf®w®z°z…®tƒ¯t~£m~£mXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKpJ5X2@ š|brRtU6vR8¦‚j¥ƒj¡~h©†sà°y¬q­ŠnÆ¡„ɤ‡Ì§ŒÐ¬’Ï­”Э—Ò®˜å¿ªá»¦á½¥pJ59S9(_Q7niLjjNLR8`hPx€hjsXr~XxŽPv‘J…¢b~›a­{„¢p|d‡¨o“°€‹«zr›a€©m´~´~XƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKX0ƒVAd>+›{foS§ˆlœw]yP:´Žw²Žv¨‚oÀš‡¶’|¶’z³‹q¼“wͤˆÑ¬‘Ó°šÑ±œÖ¶¡Ø³ Ú´Õ­”Ò­“X0]B%x_AT1pM/gM2udHshJ‰„f—“z_cBVg0† _lŠN7X–¹ƒ°xaƒFt“X’¬}Š¤uj‹R| b°y°yXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKvN4h>(¨ƒq«Šw˜z`gE*lG,|R9žy_½—€®ˆsÅ¡‹®Œsµ‘w¼“w–{±ˆlÞ„ȥή™Ö¶¡Õ²œÖ°™Þ¶Î©vN4dI+cF$[2€U5wR5dG)aQ/‡[kfHœ }m~H€š]„¡inX§jvž_Qy3Or2‚œlŸ¹‰kŠN|Ÿ_Š©pŠ©pXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK‘oV™v`ƒgOqY¨‰mqN0yW4švT˜sV¢}c¬Šq«‹rw]<¸šx´n²‰m¿—}ß…Õ±›Ò¯™È¦È¦É¥Ì¦‘Ï«•‘oVV7rS4ŽoPW6W4{a>\S,./š¡x”Ÿtr‡O˜_˜³€”µ~Lv4Br(]‰>`ˆB†©oš»‚r–Va„BqTqTXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK‘oV™v`ƒgOqY¨‰mqN0yW4švT˜sV¢}c¬Šq«‹rw]<¸šx´n²‰m¿—}ß…Õ±›Ò¯™È¦È¦É¥Ì¦‘Ï«•‘oVV7rS4ŽoPW6W4{a>\S,./š¡x”Ÿtr‡O˜_˜³€”µ~Lv4Br(]‰>`ˆB†©oš»‚r–Va„BqTqTXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒKXƒK„ŒŒƒ†¥Ÿ£½¸¼ÅÀÄÁ½¾µ±°¡žƒz}‘„‹º£«É©®­‚VR‹G>ƒ9,Œ@0ˆ?,|5#7+…<39-x5,a(!G<48=>99:9%$<.-@65KBCNHHPGHQEIM:>G2/G2/D45@46;/15+,3*+7++G/+„Œˆy€hTVQ46V0/e77o:@|?G•HZ¥Te£Yh”R\yBH[33T=7cWKtg^e[QNA9J92S73U/,a0,p51w64w1/u1.o.*g*'e*&h((i)'j'!r/'ƒ@:‡JGyII`@AK;>B@A@AC:@@457+,.&*-+,0..0.,/,*-,*-S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62~ƒ‰}œ’“¸­±Å¼ÁËÅÅÆÂÁ§£¤‡~…v{²¢Á¤¨µ—b^ƒC:„<0A3…<+€7&ƒ9.†<37,u1(c,%I75:??:999$#:,+@65I@ANHHPGHQEGM:24:.05)+0'(5'&C+'~ƒ…rxmWYS55V.,oAAuCF}AIGUP`UaŽOWu>CZ01V;4eSIwf^n`WYHAQ<7U84V.,b/,q41x41w1/t0-m.)e*&c($e('j*(h'!r/'†A<‹KI{HGf?@R<>J@AHBBD@??678./4+,7-.9/08,.7+-7+-S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62‡nrkm”~€®šœÔÄÇóêëçãâľÀ›’•›Œ¸¥§äÏÎæÉÅЧ¡ŠSL‚<4Š=3…7*„6)ƒ3*†70…8.s/&`)"H859?@;987"!8((?33G?=LGDOGERDDM9:G/-E-+A11@22<..4((/%$4$$B)%‡nr„inw[Z[97[2,uEAwGEw@C@HŒFPJQƒFKn:<[/.Z73gJDu\WsZV`GCU75U/.U(%d-*r20y31v1,r1+j-(c)%_(#c)'i,)h'!s.'‰B’MH…ECs=;a78^<:`>=`=;a86`41_11]10]34[33Z22Z22S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62c•NH‡FBt?;\31X72Y75[84_62^3-_2/^2/Y11X12W01W01S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62Z:=Z87cA@}t\Z‡yxæáÞñìéîéæÐÈÅÌÅ¿ÕÌŵ¦Ÿ²š–wUSã·´ÅŒ†KC{8/}4-‚5-‚2+y.(b)"G44>CB;63113 5!"6$"8$%;!$?"DA?!#=#&>$%?%&>%(B$$Q%$Z:=W48Y55]42a.*c0,^1,X/-X00Y23W42W61Y83W85V75T45R44R44O11L*(N%#T#h-)s2.w2-t/(o0)i.(`+%^)#a'%h+(g's/&F=—RK‰JEr?<[52R51P40Q40R1,O,(O,(P.,P1/O11N00N00S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62P@ASA?•ƒùèá ‘Šujf‡}{Š€…„¨ Áº´âÙÔËÀºàÑÌÖÁ¾ôØÔÔ®«PK¦mf™ZQ}90ƒ6.v+&`%!I83>CB;74.-,-.04:@@;9": !;!";!"@ !R$$P@AO==W?=\=:`73b63[:5V:7R=:Q?=NA;OBQB?T@?S?>P<;M98K63I0,L)%S&!d-(q2-t1+r/)o0+i.(`+%_*&c($h)$h%t0'G?˜UMˆNJmA>T64G51A2/@2/@.*;)%<*(>/,C33C34B23B23S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62G>?PHEØÑËóêá‹‚yvmfvkg’³©§°¨¥¶±­ëäÞôéåÙËÈâÐÎɶ²Óº¶”nkÖ©¤Ò —}C8€70v-'_#"D92=BB=63+($#$(-4;:1////8M! G>?G=I?=F<;B86B41B/)E($M$`-)n1,q0,q-*n/*i.*b+(a*'d)%h)$h%u1(ŒH?—VP†QMiA?K31<1/6.,50-6.,2*(2,,822822822822822S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62713B=:ÐËÇâßØrne°¬£­¦ »´®Ä¼¹Ø×ÒÐÏËçßÜçÜÚÒÀ¾ÚÈÆÚËÆÚÈĨŽ°“Ï­¡wI5695476221/540/*&2%@'#G$`/+l2.s2.o+(m-+h,+_'&a)(a%$e(#e$q.&LD•VONKf@?F027-.1-.-+,/*.2-10.31/25124013/03/0S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6264543/ƒ‚}ÒÑÌnnfvsjÏËÂëäÞôíçóòíÉÈÄÙÔÑðæäÝËÉÑ¿»ØÍÇàÕÏÚÈÆÓ¾¹åÍÁº–ˆx?6p1,Z"!D526@A<73/   (0/#(D#645824?11G21Q/.V22N66G77A89?;<><=><=B9?A;=@:<>8<=8<;9::89645645S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62TVSX[TUXQ[]X[^Whkb¤¤š°§ Ÿ–‘ÓÐËíìçñîéêãÝÙÊÅǶ¯áÒËÙÊÅμºàÌËáÐÈÔ¼²Ü¶­­€{b97pLLU79649A856(")0/# !*F'"TVSVVT\WS[PJ\E?`ICi\Vhc]gfbde`cd_dc_i`ah_`fba[[YRRPJJHHGCH>?B@AA?@978978S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62RWQV\RY\SXWR]\W_bYad[d`Wzvm˜•ŽåâÛ÷îçÞÏÊÄ«§š|›ˆº©¢Ñ¾ºÜÇÂ͹²Ê±ªÚ¹°±Žˆ‚eaçÍÌȯ²P7:< 7;:36+*30& "!#.I(#RWQTVQ^[T]SJZH>^LBi_Vid^hgcde`ac^cd^fb_fa^c_\]\XSTOLMHGFBJ@>M98I+)Z1/l96p43i,)h+(g-+d/+a.+\&$`&%^!k,%ŽNE™]U‰VSpJGWD@J@>FC>DC>D@=C?:@?=AAACCC;;;;;;S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62XZUVYPYZR_\W\[V_b[_bYb_Xqmdig[´­£äÖÍÚý¯ŒmjÖ»ÒÁ¹çÐʳš•§Ž‰ÜÀ¼ÞÁ¹¬‘ˆ™†èÖÒãÑÑ€jl574583*!-42' #"$/K*%XZUWXS^YS`SK]I@_KBgZRe^Xb^[]\X[]X]`Y^_Z]\X[XSZYTQRMMNIHGCKC@L:8S74_75j95r86j/+g,(j3.c0,\)%]'%a'&_"l-&OF™]UŠWTpJGP=9A96=:5:;6;74873653775=<:CB@>=;>=;S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62YXVUVPWWOWWOZYT_b[ghbif_qjb‰}Ðĸ±™~]V zwëÊÅÿïåØǽ¬‘ˆnMH‚`_Õ¶´Ý»êØÎëáØØÏÊÑÃM32:9040(+20%"!#/ K,'YXV\VV_TPdQKaD>aD>cPL^PMYONUPMUTPVXSVXUUVQSRMSSKMPIKNGHICKFBTFCtptNKyIE‘ZW‹QMm4-d-&c1*c0,_'&c'&`#l-&OF™]U‹XUqKJL87;3173033140/1/00.1201:65C?C98=98:97;78956536756<85HC?C>;C>;S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62PPNQOPTOSTPOSRPUYX^d`kmhrskttjylc„f\tLB¦{réļëÒÎÕÀ½Îµ®³“ˆ‹_T˜pfœ…ÚËÈÝÏÏêÜÜŽ¾¯ªE2,5624-*%*$&-)*+)*.(*4%(6#%8$#7%#1&$/'%*%"&!'4"M,'PPNQPKWPJ`NJdBA`<>=;?>=IDAD>>D>>S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62LMHKJHNJIRNKNMILQMbhdW]Sdg\PRGUKBz\TpH@˜md̦éÊÇæÊÆͲ§Å¤•…UG›obÀ¥œçÕÑôàâÚÅÊ~jlUCCŸ²”ƒ|94175%(9.2?9;GCDLJMXRV^RTVCEL::L<;^8/\4*O30C118.,83-wuÜÔÑèçâêéåyssvnl‚}y¦¡›µ°¬¦œš¥“‘—{xlDD€TQtNElF=qF@]42rKL„\]´†ˆvEA`.'j4*ŽRHždY’`YtOIXEAKFBKLGJLGGFAHDAFBCE@DGACF@@=77=77S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6266,<=/>?/GF4JK9GJ7gjUkjV|yhnj_g\XÓ¹¸É¥¥žwp_5)…YN‡[Nƒ\MlB4q?4q?4WKÚ¸¯âÅÁÊ°±E,02fSOUA:92 6;:-'MHD_[Ztruƒ‰‡Š„ˆyjmcUUi]]nifjfe]]]POMGB?G85R5166,72.?10J1-Y1%Z0$J-)?+*>3/4+&‰vÑÈ¿ÙÒÌÔÌÉKAB:01B86xsÁ¶²ïáÞîÜØÉ°¬a?=˜roº™’sUM’ql‹ljÛ¾ÀÝ¿¿Àš™VPa2*d0%ŽTI f[‘_XtMHS@(K+[/[0X9VB'WH5{n^‹{lœŠ|ʳ­áÉÇÝËË˼¹ÖÉÃÏÁ¸Ò¼¯ÖÀ³ÜËÃØÉÄë×ØÿïðíÙÚçÓÒåÓÑöçâÆ»·ÙÌÆíÙмž–oB?k32’RR¢bb—a_tKGW?;PEATQLPQKEE=?<5>63>63C;9B:8;63;63S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62+!$#%&/,vpLí証°fßʉڿˆáÅ–×»”´}„oZáÏÅåÌÇÆ —Š^SØ´¤Öµ¦Ï­¡»•Ššnc‹cY¥ŠiZU:2/7-,C/.>$#;14>(*M9;dTUmacsjm€z|‡~†z~xgmcSTdVVrhiicc\XYOKLH?@G77U64+!5#I,[5aª€*m ~i&dT#™ŒjŒ~dŽ}mƯ§µœ•½¤À¬£ÃµªÀ²¥Ð»ªÒ¿°Â´©Å¸²ÛÍÊéÛØöëçãØÔÒÄÁÞÐͪš›ßÌÎÿïñ÷ÚÜTWf./‘QQ ``“]]xPPV>>L@@KJHIKH>A:991=60B94G??I77T53B2eJ™r7®/Ý©;ð¼BêÁKݼQ» Ix2ˆr@›ƒ]®‘s¥…n¡…ps\J†ue˜ˆx°™‡Ñº¨À°£À³ªâØÏôëäúñìæÜÚÏÄÂæØ×ξ¿Ì·¼Ö¿ÅÛ¼Ág:=d..•XW¢fe“`_sMLP;:E;:DCACEB<=8:72@72H=7ZOIj_YvlcvlcS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62hMB0>/XK+™ŒjØÍ èؤÙÄ…Ü¿}Õ³sĤkèËŸÙ¿œÿéÊáç¤u[†P8‚P9ˆXD¨wi‡WMpD9xPF£ƒxèŸÆ³¬¨–’àÎÊðÛØи´¸Ÿ›’zvÀ«¦ÙÄ¿ÓÀ¼Ê»¸š|trxyssl\]ZJK`RRh^_f]`UQRKEGF=>E55R42hMÆ£I߯Kæ­9áŸð®í°ò¼(ûÉB÷ÊS̤D w(±A»[’qH˜bŒzflYH¯”³˜ƒ®™ˆ¶¤–ÙËÀòåÝúïíèÜÜáÕÕÖÊÊõçæ¡ŒbDDmGFW+(\+'ŽTS¡ih”dbxUSP?8;4,=<7:95>569/.E:8XKEraW‰wi‰zg‰zgS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62žz¢„;¦Uį‚ØÆ¢áÓ°º¬‡Ð»ŒßȒȪvÀ¡råǣе—ȯɪ‹ŠX?G0~J4xC1~H<ˆVM€VH§‚r³’ƒìÎÃÕ½³wc\ϼµãÐÉͶ®¿¨ ¯‘² ”£‘‡¯œ•À±ªµ§¤“‹ˆŒ„~pogWWYII^POj`_lfhd`a[UWSJKK;;S74žzת7ã­/ç© åŸ ê ï¦ñ¬ö´õ¹'å²5´½†,Ô¢[Ö²€ìÒ¯åѹ×Á¬«s‹kRiP<œ‡vÔ´éÛÒúëèÛÍÍíÝÞñããÝÏÏ©——œ~|¨}c0/^$#LP¬quÉ›©‹‰eVO>7/4/):3-;.(A0&WF4mX;sKž€N®‘Y®‘YS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62³„È5ðËséɌԼÔŤ²§‹¢”y¥”xį”õÝÅìÓ¿Ôº©âɵëÊ·À‚‚L@ˆTGŸmb…UK{OD¯Œxö×ÂÛ¼¨»žŽ”|pI6(—…w›Šz£‘€n•ˆw­¡‘t©›ªœ“³¦žš“‹•Žˆ‚wshZWTFCaVTxpny{|xytpqf``WIHW>:³„Ú§*Ù à£ñ®÷®öª÷ªú­õ¯á§!Òž&Ù¢;פSÞ¸‡Ó¶˜åË´ûßÇãÁž¸–sgK3\E5¤‘ƒäÒÈÙÆÀÚÇÃúåäÿëìêÛâåÔÚùáßÿÞߧdmo,638/(;1%:+G3]A¡|6Р>Ü©6â¯9â¯9S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ߣ!é²3üÉ\ìÂvìÌ™Þʧ¦˜~¤•‚¥•†ßÏÀïÝÏÏ»°¸¢—ʲ¦É« ÊŸ˜NI¬€wòƻ׬œ›qX½›nìÌ™º™fkJV:gM,\E#M6‘z[zfK~r\Ź©ÌÁ¯¼¯ŸÏ¿²Èº±¤›’”‹„€zsdaQD>n`]‡}|ŽˆˆŒˆ‰ƒ€tlj`QNY@;ߣ!ë­(í°$óµ$ï¬ó­ó¦ô¦îží¦âª/Û«=ܪGÓ¤RÒ©sЮ‹Ý¿§ðѼäÁ¡šyZ`D/O5(nZOÕùÚÆ¿àÈÄáÃÁõØÚÖ¿Å×ÁÄîÎÏÿÞâÒ{ŒŠ 7‘#<Âcy⟰îÀʱ”˜A,'?(=%W8w0­*Ë•+ã¥é¨î­î­S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ú²"õ® ë«0î·dëÁ‡ãÆœáÌ­à˸Ŵ¤Âµ¤·ª™Å¸¨·§šèÔËݹ¬Š”ne³‘ˆà¼®Ò©¹Ž[Ò©QéÀVÓª@­…#ײb¾™S‘k*pL¯`dB^L6ŠzkÕƱÑÀ¬Á®Ÿ¿­¡ªž’”Š€–‡€’€|rc\pa\…zx…„Œƒ†x{ndc[IGV:6ú²"î¦à™ ç£ç¤ ê¥ +à—ß•â™ßž*á²ZàºoïË}á»pÔ¨gÒªyÖ³áĶª{V9)T71T;7›„~×üéÖÒäÊÉÏ©¨Ö®®Ðª©Í¥¥ê·¼ÿÄÑÉ[t›6¥5¤;¼JkØ€˜œ^iX(k;–dÇ‹)ç¢-èž!êžò§ò¨ö­ ö­ S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ï ó¥ì¦$å©Iè¶qÜ·‚ÕµŽ°‘u̲›¼¬“¥™ƒœ~¯Ÿ’®¥È¯¨Â¤šÖµ¬Ó·¬Ôµ¡Ó«ˆÌž`î½Vñ¾?é·0ã²1æ´EòÀ]Ú¨IÎœGجa–o4Y<O6€kP²œ‡ ‰w°šŒÄ´§²¤™—†~°—¯œ–sa]xif‚tt~rtqeg_QQN:9Q2/ï èšÞ“Þš ßžÜژό +ȇߧJôÌŽë˘ۼ|έhͦe彌ÿßÊÔ·¯˜~q™~sO1/C'&‘uqÇ®©Û¾äÅû¼Š‹¡tq“_aÖŽš×xŽ¤'GŸ 2§-« 2™ 29~1”A=ÅtIÛ;ð'òœ÷žïšú¨ü­ù«ù«S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ò£ +ì¡ +î¨"ú»Rï·dî¿{乂ƙo²Œgë‰Ü˯ÑÀ¬Æµ¥²œ‘–{r¡„|Ì®£¯”ƒ¢„l©^©x>Þ¥Kì­9ê¬'à טç§,Ö•ÍÌ”#Æ•/§y+vMN, jK7gJ8‰o`¿¬ž³Ÿ”u^V‹rm•~xVA<_KJgTVaQTWGJM:7\:8[82]7.M"`.'m/0ᣨÿÜâÿÛëÄ\w -($’ “•#˜%¢0¨ (²ÌJðƒò‘ áƒï–ñœý© ö¤ö¤S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ò˜ñš ñæ—êäšáœÓ˜$Æ’/ĘOѬwά‰×¹¡Ð¸ Ã­–Á¨”É®›¯“…y\Nͨ˜³„jŠP"›^Å7·²t÷zÁ… ÇŠ ËɉÊ/²‚.W †^ £z<¡q'g!w<`)IDECG DFECò˜ó›ìŸæ¢º|¡gÛ£2¬w·Ç—BÙ·‡ÅªŒW@!W@!y^@€bF^@(iE/f8!i>+À¢˜íÒËÛ½²qL÷»sò¾—Ù«Šå´|ÌšUÙ£YïºtüҘ߳vЗHÈ?ÒŸj寋㠃¬`RŽ=CÿµÅ݈›|3xzztvl]_ $Ž !ª#Å9ìu#ì†݃ÃoËvËvS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ó¥êéšÑ€àŒçê“ê˜â•É„¿~,¾~4¾„;¼‹>×LÈ ZÔF‡Ñá›å¡&õ¹Y÷¶Zç›#í›îç—ì›îíž ê¥Ü¢$ãµF®‰1sQ +nLdD Œk(¡~-´Š(×¢0ç¤!â›ßœ ࡠɉ'£f%^#O Oó¥ó¢ +÷¡è’ ؆ ½p­e½tÙ…î˜ óŸñ¤ã›5Å‚>§eCˆG)»xAØ“Hå›DÝ–<Õ™CÑ•=ב/ˈ-Ë”TÜ¢tØcÍsX”00¯FW„!5p‚ +#{uypcbn·31înKãp ë‚ïæŽá‡á‡S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ø­ë¡Ô‰Îè–ç”ãŽæ“ á±e6}4 †G˜m8Ö³{Ú·ÒªeÉ’.Ø–â™ê #ò®Iãž9å‘é‘ è“å“ç•ä”ì í¥ç©$íºG z'O2;&9*N=fR€d½•6ã¦3ì§%õ´&ê¨áŸ$À!m/W L +ø­ñ¡ +í—ê“Ð «b‰H¦dÓ àˆñ ø¨å/ŠEu.u, ƒ; ¿u6ØŒ@Ë…0²y"¸'ËŒ/ךIñŠýÉ¡í£|¬M7€~ {%pz}}|wthas "¥ #åhLÔb#Ûrãƒæ‰Ú}Ú}S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62êœá•ÜÜŒè– å•ã“ +áŽÒ!Ž: x#u"j%d>)©r·™w¾•]¹ƒ#ÏŠä–ÞÚ׊Ûƒèæ‘é—æ”Úˆâêš æÝ!£pY62$,'74 QIK;r0ПCè¬<ߤ"ç§ê¦àš+–S_Q êœîôž ãË{£Zj,«kÔ„Ú†ë—ù©âšÀ|Xp-k)p1‰L ŠW"wS|\Ÿy;Ô¯{êϱÿäÑÿɽ•;;w ip v!} #trppmadˆ"¦5¢%œ¬;Ã]ß~ÝÛ} Û} S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62ëœ é à“ß‘ ß‘ Ú Í‚ÈwËt-C)h e +^"^85L2#\9#c5 cÙ‘ã’ Û‡ÙˆÔ‚Òy܃àä‘ë™áŒã‘ÞŒã’â™Øš-¸‹6WC80\U+cZ3\N+T9 …YÞ¨R÷¿R÷º;ä¢Þ™ ̉;r1Yëœ ç•î— å܉ Âv›Y±lЃä òœ þ­ô­!ìª9΋Dg&_! +\#\(I 9@*X>¿¦ˆÒ¿®ÿáÚÿÂ×?KŽ"9rchrtwune`n›.´=§ /“µ7(Ía3Øz0Û„%Û†Û†S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62å—Ú Ï†ч +ч ЈÌ‚Ì{*±Y)„&af b'oFDG'Jb(°iÝßä å‘ Ð{¾hÊvãîœö¢í™ÛŠÛ‹ÛŠá“ ߛۢ/–pkOya1[CT:O0Z- žk6ߨUì³Bî³+Þž"БAw:R å—é— ø¡ò˜î–à ÝуÖ† ë—óù©ô±.é«F®m3a"f(b)V%K!=# ?*H.ub׿³òÌɯnry!-‹!7Š2mr|ƒ€zmee‡ 'ª7¸>¦ +1›"ª%¯1%¯T%©aÊ…*Ê…*S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62àš(Ó“)ÉŠ#Ð’+Ò“,Ï+Ë„2»j5‘6!k +m "p+v,;b14? R šV3Ï€=ׂ'Éw Úˆ è”ß‹ËwÅsߌô¡õŸ +÷¢ îíîŸÞ’Ý•âŸΘ+Ç™A©;qLC @G R!€O È“5Õž*Ë“&µ|5a,Oàš(׋ãáŠç ê“âÄo܇õŸóß’–]xDd+\ YTP P)@%?(F*N0%kMEsJF]"V\pnu ‚! &‰!† +$~ #x€ +"ˆ"š(œ(’)£!=µ4J 36:vGO O S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62Ì•B¿ŽK«@¥}7—k$¡o*®oT A\k'¤JµdÒàŒä ã‘ àŽí˜ +õœ ÷ÿ¦ ø¨ ö© ð¨Ù“ÖŽß– æ â &Ú¡6 mV'FGL!j=k<«|*Å—L_/NF Ì•BÉ‹(×Ò‡ +ÌàŽ㌠ã‹ó—óš ÷£ ñ­(okFT%N +VO NJ$E)>#A!G"O(!Q$J>I Yahv††ˆ +"€!…ˆ’#*Ž)9p(p'2Y! Z>)K;=- =- S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62´ˆI¦}E™r;…]†Zœj-C‰<4€%6|4s*l'g &SPVS _ iŠ<Ãwâë—å”æ“ö› öš ô™ù ô¡ü® ó®í¨èŸï£ì¡ð¨ߣ!È&h$d4?kA²…Di<K!qH^7<8´ˆIŸp"Ò=Ë‘%Õ“#Öâ”ðžê” ñ ì£ æ®A±ŽJiL Z1Gk4SF=D%?#>DDAC8B +PZdq}ƒŠ &Ž(‘*’ )•-‰*‚1h%,3;@($HA165#`^O`^OS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62 |B³‰A¿Œ=©oµx%»€2ŽPt)ptj p%`UMPMM a«e*Ä{Îí›é– áŠíŽðî’ë‘ù¡ û¨ +ù° ò©ö© ôªØ•ê¬#Ҝɕɔ4‡TG¡r"Í›<¥sI0 . ' +'  |Bª‹Rž<”o!©z"Ä)Д"Ûœàžì¬.º…)…ZfHaDmBc/¾ƒ?¯s-^)GF'.w {$¥_=f$a W MF G c-«o;¯m¸kíšï™å‹ìð” ㌠مå“ó¢ +ñ£õ©ô¦ñ¦ Ú™ ܣĎÁŒ ÃŽ°{¬xÕ 6Ü£0ÄŽ*Ÿs6L() " # ³N¬“[[IUA  AÄžS½”<´‰#Ê›)У>jDT4ƒe/uS®};£jÂ…(Ò“4®s#–e+K) L2#B%?>:BX1,FM +Xblr† ( +•/”0‰1~&6g+5="#:6*0."00&KKAKKAS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62×>°{™a•^¤j ¹yÄ~(¾s<2¨W" Rºv+[…=§^;f$KM'N,g<s9Ï‚ð—ó—çå’ÏÆ{½uÍƒè› ê›ùªü­ õ¨ Þš »|¾‚À‡ŠÉ‘Ôšå¨+ؘȶˆ3Z5( $ %×>·™PdW-1&ƒpF·¡rt_0<'rV£‡HVAF.¡|5¹‡.ÊŽ,¿‚ć×™*͘V8N1!]B;J1*}fVžƒpN)`0&a'&`d k€+„4|0t#2>)#  (&23%#%  S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62˦NÊš8šc˜^º|À€Â®l®m½}ºz¾ €Í…¦eU"I$9&,yP"ËDæ–'ï–߆呹p ³m‰B«aÀqê˜ð ÷¨÷© ñ¤ +æ—ä˜ÚšÀˆšm’l!‘m¦z¸~Ä…É‘À2^9 -% ˦NdL/* „wKŽs>rW ?.H@53.!pNÅ“4¹•WzB†O¾ƒ á¯>¬ŽEWEm\@…s_²ŸŽœ‡r®“vŸ~_^6Ÿu_”j\^1+^/)\&&W"S L<, L2=$,' )+*1!!%S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62¥‰@Ô¯TФCÀŽ5¹ƒ+²z°u´y±sµzªm§k¶vÊ‚·v¤v;\=+ $Bšd$Ý•3ààŒÊyºn ¯e °e +ÇyÑ~àŽøª þ± ð£ó¥ ê™ â• Û—È“#]7L.J1dC«y"Ä‹$Ε"Å“2tN* ( ¥‰@F4-%|j8™{=n.gS ND ,)*" M2´>Ç—5¥o ˆTˆUÄ é¾U„h'pa8`R7˜Œv¹©’”a“xK¥„Q¥P•nEdC$I-Q;&Q9-2J.-& $4~a5k>{X0G( 30.+2   S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62[G™9žƒ4‡i#…bZ ¦x"¸³x¯u•]†M¦gÃ{Â}º‰=T4" +%F"™b"ȃ(Ø‹܉Í|ÁqÃq ÆtÖ„ÚŠ÷­î¥ëžô¤ á’ÚÜ— ¸€ †`V>B/O9f-´„8½Œ-½7žzF; &[GA4/*!VD„j/y`t[†n2kY+0((#/%bO¹—@À–0Í¡8΢9ß´N¿œJO8 Œ|c–‡r~o\…t`ZF#‰p0£†8žx-–q-ˆj6bL#NA!C8$0#D:1 "G/•q7˜j,•e%l1“o=5&,+ S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62>1WIQ@ +`KjR$Y;Žf!°y®p Ÿdr9h1•ZÃy ÒŠ¹ƒ+V2  .@u6Ü'܇׃ÈsÅp܇í›ð¡î¤ ê  éžä˜ÚÞ’àœ Ôš£z+O4,1 L/kGvP‚_†i?@(%>1>6<9&=6lUx[K4K6‹r2‚l;7-,)*)2,q^š~*¤…(°‘6¨‹=hRM<"„wg­’o=,VBŸ‡?‚d +vRŠg“u7cMK@ 81+%%#%)X> Ÿv6}L o;˜`¶‰FL6+& $   S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6294 QJ09-PA.P;&C% R'œc»z©l~Eg1£h +΀Ò„ÆŠ*ˆ])  *: ˆFâ‘6á‡Þ…àŠÒ~æ‘õ ÷¦í ñ§Û’Ü“ Ú’Ü• Ù•ך¼3X5  # # + %#'94 .-01!81nXqV?&Q<š…Do_+@:"),!&'8/TGcV!nb.OF,% HA1ƒym‘€p°ŒqaRB/—|9p}ZvU–v9kS'G6"LB80( "(#W; œt7f9T#ŠV¹BkT*82#'   S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6201#C?4* /@!IV «i-»t&ºu'«jªo³qÖƒ܉!Ð6¤t61 ). +>U+Ãw!×é“܇ +ÚŠð¢$êžä›ä РʈώҔ͑ٛ"Ï–+Å–H‚^,%    +  "01#!!+% hX%Žx°¡hMEKJ5#&36-,.#IC5{ea^=lmM15URIf\R…p_ŽxcšŠzgV:sU¬‰Eº•Q·”T¦…P‘xPpaNh`U.(  " K3¡~H„`&|U±‡;¸•QcQ+JE/,0!&$$S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6255)50*.:FV]ˆ8»j5²b%¼n$¾s½o Ù×~*È?e0- +- 5 7 + 9R%¼€(Ø‘à‘á’Ý–$ؘ*Û£2ʘ)Í ;¬~ ©vÁŽ2“7Õ=¯‚1Œ`e><'  +  +  # + & 55)  6- h[/†sHŠ|Ob]3*+ 36%:;31/#82&UKAwn]a]@ilM(0"=:3>0'Žo]qYŽ‚l§˜^? uN'—jA¢xNž|V|YvpVRT?<;) !"0 }e5¨O»£]¹ŸdcN!<2HI;!'  S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S629:,,'!>)&P# W\ e n›A&ƒ+­V!Év*ÂkÂdÆi0‘?UE +?8 >7B%h Ã,ÞŸ-Б ¬v{M–srU ^C\>dC z9º–X¨ƒL”s@T2 :0,(% # " " + +" +% ' 9:,   )";093)( +# !! !5+"PH;JH/afH)3&;8/C2*€YHyS>Šx`•ƒmnH5}H8™[Nªra•qYgS:FB)AC-;=(<9*<07(j["qb)VIB9 '+ ("S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6212 <:+TB8}KD]gijk e7!¸c:´[/Œ) +~u` S +J :0 .*1V9›v(ÂM¢…A‰t;N@J>I<D6H6]EbC&xV;¥ŠosYB=!= <0 /,)& $ $ $ 12 #$   "  %",(55[^A9B%7?'FD5G5)PF€PBz^HmN9˜`SŽBB¯Wc¿r|†[U7!:1"]ZIIF5 +#A62:.3)C:C>;6 :;) %1!-%  S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62CE0acNbUE^Xs&,joihfno +mr l nid RC6 *! $%;)gS ]P$F>9572G@-WL:H<&J8$P6'mQEŒwf\G6J2(D'#D% =63/+& "# CE0+,*%"21,)/#$*"" #&KQ7BK.=C)HG3dTEWOyMB…fQnI6]T•CG¼_q¦XhkAB5!7+>6)5/!%#0.>=(/2-029'' , "+"+S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62NP;OR=H?.ƒ`\~?Hi !kgprr hfmqvsee "j*T : ' +'*(3.@9D>&0*1-@8!p]Œ{k\I;N8*iTCƒp_dS?N;*R<.Q6/H**F&)=!9 3-& ! $ +NP;12"++!>=8cb]lnc:<1 $ #,JS>MU=7=#HJ4†uwaV_C7kU@[K£b^NS¹qux@A3 0 5)# '.%  *-7A) -$ % +% +*-7-7S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62jkYhkVB9*a;:n*7|1z %w +npldm!nouvmo x (~7j.U!V;(NC'LF.RM94./(UK2†x^¤|„m_N8+P=/|k[ }p_ON;,Q;-J/$R42G+*B)%>'!6$0' # $ + jkY9:*+,GJArulUUKXUL'%"$!"( ( (FO'=A*hgSaYL. Q@0€^TªjkX[¢okzXN7#*0&&(!6.+)!EE9"&/;'!-( % +)$2".*3*3S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62jh[fgWB0&Y$u+‹0€pig_bjlgqv|{~!‰ ,Ž2Š&.‘P4†\2YE E:9.G;%iX>s[A†jTqVCL6(B0"‡wg©™ŠnZSJ3+D-F,C+!E,%D-'>)$8&"1)# + % +jh[<=-'*! 3>.[cVOOE., -+!")#*%.#!&@E.:?))$8%!3)# + # +wuh?@2',#,%#)+ (&.,56&! $7>,#*/5).3@D-14!5:&! .*Q83«€¸z¡nm…uexzd52#($.0%%&34/,1+#35*02'PPFSUJ&, '/ $*DJ&$.0#'*! %-31.74 +1#$*48*48*'.$+$+)2.7$.7$S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62XVIc]QP((Ž"9—1yfgZUT S +[_`[ cr… )˜)¢,— š#‚# ŠA ªe»€4›p;~]<{aRL5'~dIzcDL<%+0!=.+C4/:+&0-4 ?("@'"=!81(  + XVIFG9WYLIM?%  QSFWYK"$01#AE7")4&5>-/1#-. HJ<{ny|iXK:Ÿmf±gf¢KQ§beŠvmoqc66*&&57*$*&-&#,)+54& )1:):@2/6&',,4!+",!*!*S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62B>3SLB_77&9—1~tskjccgd[ W ag{ ‘'§1«.¢"u‹B ©e´{8hBkU>=1#3*VD,mRvhNE:(- 5'$=.+9*'-*18%8#2-*#  + B>3EC7NPCSWI8>0QUGbfX)-')"  $&7%1>,%'UVF…ˆw”™…¹¼§VI6¥vl®mi·qq¸ƒzj]BD6**$$9;-#))0('0++60! );D3;D3'- &$-5+5)6(4(4S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S620)E<3c;<Œ%:4–)' { wkmkga_d +] m‹"¤-®-§$ :$­e5µy=yL71$"!4)XL4}sZC8&,/!6(%5&#'"'-.'"!  + +0)53'BB6MOBY]O39+!'!26(hl^<@2# ("!!2 0=+"&>?/ora\]K°­š_J9ªumˈ‚¬oj¨}vocU # "$+/ %(0%)3*)4,% '7@/8@1#)"(5<*&&3%2%2%2S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62:3+8/(h;@!<£ 4¶ ;´ ;Ž"ƒ!} yskihll +_p‘'¬ +3´2­)©?1³nG‹_2T;%" "!$)(3.@9&.%((+ *   + + +:3+)%., ?A4LPBEI;'-28*0KNC.1&%($* ""% (#.!* 41 -"~gUµ‡x³ˆx—‡pž ˆ•Ÿ‡z†r &knc.4&18(4=**6"%!  &(3#AL;$' #(,,S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62V18}3¹LÚTì[í[ÝPÌ +F·7¢,‘$ƒwogs’)–3%4d)+[?4NG5,/$  +    + +  +   ' !"(+"!"$.1&03(DF;DF;"#-0'&)"$&"&>I9 + -.&(LH/zfN~f……i”¡……“|ep_"(›ž•BH<28*09&/8#($!# &# "!*-#9 #9 S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S6212,W:>s6©HÚZð^ó_êXÝPÎ Hº = .…xmkv‡+‘4€1W"; +$$%"% ' + +      + *  + $' #$&24) 01) # %!4?/(3# + $'! 06^Y<Š†iy‚c„”yƒ’}an]"(ÃÆ¿œŸ–:@218&1:%!**&  "  "'4+C/F/FS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62/4-M?>`*8“%HÔ"\ëZä RÜKÓGÌ +FÅ C° +8'ply•-š8‹=_'-#!"# !%& &  +  + # *  +  ! ')ceZ.0%GI> #'"&(0!"  +)YbEyz[x{\va†–{œ‡\hZ05.ÐÒÍÅÈÁ8>28?-4=(%/#-#  !&0 $;/G8Q/H/HS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62%?:7ZA6.1&8<.#48)5<,29)-6#*1!") %(4?M3apObpLXg@O`<†–yˆ•]hZ.0+ÊÊȺ»¶:=4?C2:B*9B'7@%#,%+- "8 ++C3P4R7U>ZGcGcS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62  "672cHM†8N™*J2‚ |ƒ"Ž +‘/1“1Ÿ7£C‹&DV(3''') +   + +    + +  %('1(!( $)"7=3>A6<@2HL=+2 >E3'0*6"+7!%.'. '$-;G3@N5O^Ak{WcsLFV/eyT€€Œxsym130ÄÄij³±45-:?+@F,9B%9B%*4+'4*<2I/K7U;\CaB]E`E`S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62  +,/&QC@k@G6G˜-I“;Œ25˜!?ˆ3q'n*v/0Cs;FG(-#&*    +  +   +!,6&)@03  + *"0:2,1*;A7/5)39+>E57@-.7$-9#-<%+9 (4)1 '5>+7D0>L3YfHfrN^mDVg=bwP’ru~iŒ„00.ÂÀÁ¿¿½=>6+0AG-DK,=F'1;"%2)7/A7P5T:[CdIf&Gc(AZ!AZ!S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62    &, ;8/G51M&+s/>t4i'n,j*]"S#],2V'-O(+@(& (%,  +    +    $G8=j[`pu‡{  &,6.$!#(!#'-!/6&6?,5>+*6 +9"/;%3=%08!6>):C.2@)LZA`jOS^>Q_;Wg@\mIm|]js^”†560³´¯¿Â»W[M),9=$FM.CI-=E-.8%3*<6O;Y;Z?]A\'Lc54K4KS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62,3+  +&03*55-<3.C/.V<=& %  %%($%'%(% """"  + +    1%)YLSƒv}˜‹’œ‘—,3+$+#   + +  + ")0 ,3#+2 .2!48'?D05:$:B+6@(,:#=I3dlU^hO=N.HY7P[=luZ}…n{ƒn/3"©­œª³¢t}j"02:>%>D*?G0'1 -&7&=Ni6C^+8O!G]6UiF.B.BS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62LSK&$)".3,.3,9<3KNE"  +    +!%"(%! !""" +  + #&'4%*SDKsdi€qx}pwLSK$!   +  "##*$'.26%DI5:B+4>&". +5A+LT?ks\9H+@M1FJ1xzd¨°™v~g58#inXƒŠxY`N *)AC-5:$/6$%.(2)8'=^wM>T-6J%DW7CV8YlNYlNS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62U[Q06, &# "%25,58/!   !  "! +   + %2"%4!#1"1!8#*@+0@+2<%-U[Q"$+##   ",2&:@2J4-9#) 7C-YaJ^cLR[>FL0EE-QP;sxd`eQ21TRCsY[N0-52!:;).1AE6^bS#(#-9J(Nd>-C0E$1D&JZ?WgLWgLS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62JPF/5+   +(+"03*    !!"!    +      '11/-.133JPF$#*"$+##"#"4U[ASW<==!DB)?>)8=)@C282$QI>MD;A8/5)RI:†ƒrCD2GI;Z^O/2!(0L[>/B"':8K-=M2TdICS8CS8S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62HND$*   +  ),#+.% %"2)"/&     +! !#' , . - . 06:9HND$%-" *&0%%1#'!'.9+"B@'KM7JN=CE780#M?4mZSI2,?$T>3yk^F@0STDIM<&)6;%[hL,;#2BQ4?M3TbI,:!,:!S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62;A7    +# &$   )%.$0".' - . 001245799999;::;<=??BFHF;A7 ' , $0"%1#(4&%#&2:-(  GP=HO? #./,:+*! AH8[_P#.7$.:$'%'K<'_J5dR>zgV\H=?-#0#UC5mMBV.&S(T0"Q?+TP75;!=G,+5JU7hvU5C"3>3A BO3BQ4/=#/=#S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62#  ' ,"&0($.&! '  #.4&)/!#)& $%$4,K8'Z<1[3+a0+`+'^(&V%!Q!K L!P#S#V%!Y&#Z'$\&$Z'$\&$\'#]($`+'b-)a,&c,'b+&d*&e+'d*&d)%# *!",# , #1$.<-1B22C3'5(+ ,  4:,fm['.)209$ (" )'N9&_D3cI8sYJ_A7H,!4#P=,lJ>e;/e;-sR?fV?SR67@!;I(%3ES2BP-2B=K(;K'@O06E&+:+:S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62 ' !&  + ')6-2=7EPJ"-' +  &*,0!"&)0 -6#26%>9&B5$K5'N.#W,%],(W&"\*)Q$!A868<?AFHGJK M"O"P#R#T#V#U"W"V!W  ' $.%'1($0$$2%-=07G:5E81A61A6>KA '`lX9J&:O(4I"5F"+:CR1CR1S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S628?8173#&3,>JFYhc.:6   $(%)-4"/8%59(=:'@7&A1"@(:8 C;6+ %%$&( +. 2 4 5 6 8 9 : ; = > A B B A C 8?8+5-%0(#/%#0&,GWLWd['4+ +7!+8(2 %35 -*>2"R;-5 +V<+U:)P0!F)6$\G4V1!K!iF3_I281?D$>I'0>@N+5C 3CJ[7+@=R)HZ4*:O_;O_;S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62AGC5;7' )83\khp€}CRM +    &'..7&7@-:>-:;)BA/C=/<2&,' # " !#$&( + +' ) / 2 3 4 5 5 6 5 7 +8 + +9 ; ; < < AGC1;3+6.#/%,"'4*:J?@PEKB(5,%  + (+4(*72,#E5&aJ<6 fO=S=(M4 F/;)`F5K!I D :! E;"=@#8? 7B"]hHAL,FQ1KV6DR.AP)"2 EU0k{Vk{VS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S629B=$-(*#>MHhxu€N]Z +  !&!((#.'2!/8'/8'3<)18(=A2=>0+'  # "#( + ) ) . +1 + 2 3 4 4 5 4 + 8:::;9:9B=7@;2=5'2** +!9F<=MB?OE:J@4A88E<,90'#-+1<:#A9&4$F0#mQED'dI6bG4X?+?)B/U;*U)V&nG8C(=2FF,@E'DM.KV6:E%DM0Y`ASY7HP+,:_oJhxShxSS62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S629C;  + +$IXSu„‚’[jg  !'#,#. -#1 "0&3")6%*7%,9(0=,3>.7;- " +% &) * -1 4 56788887777559C;ALD7B:(3+!,$) 4A84A8;H>=J@9F<9F<.;1%") )1"*37?'AE,@>'UJ6I3%N2&zYJnJ:lG7jG4kL:E,G4#\B1j>1wF8mF7R7&J=*B@);>#MT5gpS>G*FL0Z]@vvTFJ'4@EU07H$7H$S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S621<4  *">KDq€{u„fur $$,%0)6$*8'.?/-?/):*/@06G78J:7H88F75=057,$ $ + ) ) & * 01 25688999875651<4ITL;F>$/'!,$#.&.;2,90+8.2?5;H>9F<5B85B88E<*6,/:*+4:B*GM3=?'HB,o^L}cTš}k¯Ž{¸‘€¢}ksaiR@RA-YB0xN>½’‚¶’‚S<*^VA++.19@!ktUCL-_eIsvW””rBF!Ua=csOO?8M>8NA>68/()" % ) ) ) -- /2479:;:98 7887)!>IA7B:!,$*"(3+5A72>4$0&)5+7E87E8(6)* ^ncSaT"/+7#)5"/2?%/5nhR‚s^Œzb°˜€Ë¬—¤…qdR33# 8? MT3S];U`>s|]‚‰gU\3?Gw…aN]7C9".$#/%)6,0=3%2(!bsi…™Ž?OD(6',-/*768"2-HB(„j®œ†{iU) ++%ME.tdK´–~‚dLWE-C=%&*"-P[;nxV9@-4\b@OW2:EGR'NV1FM+Y`>Y`>S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62  + +$%/$+8.*924C<6E>.>4"2(7G=SdZj~ulƒ{Oi`k…|VpeIcZA[R@ZQMhaNib_xrq†Wf_!! # # $* - +/ +1 +4 6 +7 9 < >>>>>>>= >  '".") , '3'9E98D8*7-))6,6C:4D:%6.jxƒœ–p†ƒF[V),'/;%!)59"nmY=:),)@:$P@'±“{ €gt^Gj`G,06D#apO?J(KM(FC TT0FJ%>FSX/b\8ˆ{YŒ]Œ]S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62 + +  !%0".:.3@64D:CTLJ[S:J?-=2CTJ_sjt‹…|•‘j‡‚\wri„}_ypQjdLg`Ifa\ytc€{p†ƒv‰ƒ173" $ % +' +. +1 4 6 +9 : ==@CCBCBCBBB + +#+!-%1%&2&1=19E91>4!.$)6-9F=CRK=QHk‚|y”† ¡tŒŒd^:}Z==GN%\]5Ž~Z¹Ÿ~Ô·—Ô·—S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62S62""."2<18D::G>?NGL]URc[6F;1A6HYOXlcn…‚›—z—“hƒ~p‹„t‡^wqXslRoja~yl‰„q‡„m€z7=9$&' ) 0 379 =??@BCEEFEFFEF&+#/!)5)$0$%1%0<01>4*7-0=49F==LE;OFf}w… ›~˜™€˜˜nƒz:L>FSADP<# (+09($+DC/jdNe•w_oVzaK;/+.N\;WhF?NGL]URc[6F;1A6HYOXlcn…‚›—z—“hƒ~p‹„t‡^wqXslRoja~yl‰„q‡„m€z7=9$&' ) 0 379 =??@BCEEFEFFEF&+#/!)5)$0$%1%0<01>4*7-0=49F==LE;OFf}w… ›~˜™€˜˜nƒz:L>FSADP<# (+09($+DC/jdNe•w_oVzaK;/+.N\;WhFf¡>f¡=e =e =e =e ;e¡;e¡;e¡;e¡;e¡h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤:c›:c›;e¡;e¡f¡>f¡>f¡=e >f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡=e =e =e =e =e =e =e =e =e =e =e =e =e =e >f¡=e =e h¤=g£=g£=g£=g£;h£;h£;h£;h£f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡?g¢>f¡>f¡>f¡?g¢?g¢?g¢>f¡>f¡>f¡>f¡>f¡=e =e >f¡>f¡>f¡>f¡=e =e =e =e >f¡>f¡=e >f¡>f¡h¤>h¤>h¤=g£=g£>h¤>h¤f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡>f¡?g¢h¤>h¤=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£h¤>h¤>h¤>h¤k¦=i¦=i¦=i¦=i¦=i¦=i¦:c›:c›=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£>h¤>h¤>h¢>h¢?g¢?g¢?g¢?g¢?g¢?g¢>f¡?g¢?g¢@h£@h£@h£?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢?g¢>f¡>f¡?g¢=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£h¤>h¤>h¤>h¤=g£=g£>h¤>h¤>h¤=g£=g£=g£>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤h¤>h¤>h¤>h¤=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥>k¦>k¦=i¦=i¦=i¦=i¦>j§>j§:c›:c›=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£>h¤=g£=g£=g£>h¤>h¤>h¢>h¢>h¢>h¢>h¢>h¢>h¢>h¢>h¢>h¢?i£?i£@j¤@j¤@j¤?i£?i£?i£?i£?i£>h¢>h¢>h¢>h¢?g¢?g¢?g¢?g¢?g¢?g¢@h£@h£@h£?g¢?g¢?g¢@h£@h£@h£=g£=g£=g£=g£=g£=g£=g£=g£=g£=g£>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤k¦>k¦>k¦>k¦>j§>j§>j§=i¦=i¦>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§?k¨>j§>j§>j§>j§>j§>j§:c›:c›>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤=g£>h¤>h¤>h¤>h¤>h¤>h¤?i¥>h¢?i£?i£?i£?i£?i£?i£?i£?i£?i£?i£@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤?i£?i£?i£?i£@h£@h£?g¢?g¢@h£@h£@h£Ai¤Ai¤@h£@h£@h£Ai¤Ai¤Ai¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤?i¥?i¥?i¥?i¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥>k¦@j¦@j¦@j¦@j¦>k¦>k¦>k¦>k¦>k¦>k¦>j§>j§>j§>j§>j§>j§>j§>j§?k¨?k¨?k¨>j§?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨:c›:c›?i¥>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤?i¥?i¥?i¥?i¥?i¥?i¥?i¥>h¤>h¤>h¤>h¤h¤>h¤?i¥?i¥?i¥?i¥?i¥?i¥?i£?i£?i£@j¤@j¤@j¤@j¤@j¤@j¤@j¤Ak¥@j¤@j¤@j¤@j¤@j¤@j¤@j¤?i£?i£?i£@j¤@h£@h£@h£@h£@h£@h£Ai¤Ai¤Ai¤@h£@h£@h£Ai¤Ai¤Ai¤?i¥?i¥?i¥=j¥=j¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥@j¦@j¦@j¦=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥=j¥>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦?l§?l§>k¦>k¦>k¦>k¦>k¦>k¦>j§>j§>j§>j§>j§>j§>j§>j§?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©?k¨?k¨?k¨@l©@l©@l©:c›:c›?i¥?i¥?i¥?i¥>h¤>h¤>h¤>h¤>h¤>h¤>h¤>h¤?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥>h¤>h¤=j¥=j¥?i¥?i¥?i¥@j¦@j¦?i¥?i¥?i¥@j¤@j¤@j¤@j¤Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥@j¤@j¤@j¤@j¤@j¤?i£?i£?i£Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Ai¤Bj¥Bj¥?i¥?i¥?i¥=j¥=j¥?i¥?i¥?i¥?i¥?i¥@j¦@j¦@j¦@j¦@j¦@j¦@j¦?i¥@j¦@j¦@j¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©@l©@l©@l©@l©@l©@l©@l©?k¨?k¨@l©@l©@l©@l©:c›:c›?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥?i¥@j¦@j¦@j¦@j¦?i¥?i¥=j¥=j¥=j¥=j¥>k¦>k¦>k¦>k¦>k¦>k¦>k¦>k¦@j¦?i¥@j¦@j¦@j¦@j¦Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤@j¤Bl¦Bl¦Ak¥Ak¥Bl¦Bl¦Bl¦?i¥=j¥>k¦>k¦>k¦=i¦=i¦=i¦>j§>j§>j§>j§?k¨>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©?m©?m©@nª@nªAo«Ao«:c›:c›@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦@j¦>k¦>k¦?l§?l§?l§?l§?l§?l§?l§?l§?l§>k¦@j¦@j¦Ak§Ak§Ak§Ak§Ak¥Ak¥Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Ak¥Ak¥Ak¥Bl¦Bl¦Bl¦Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Ak¥Bl¦Bl¦Bl¦Bl¦Bl¦Cm§Cm§@j¦>k¦>k¦>k¦>k¦>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§>j§?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©AmªAmªAmªAmªAmª@l©@l©AmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmª@nª@nªAo«Ao«Ao«Ao«:c›:c›?l§?l§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§?l§Bl¨Bl¨Bl¨Bl¨Bl¨Bl¨Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Cm§Cm§Bl¦Bl¦Bl¦Cm§Cm§Cm§Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Bl¦Cm§Cm§Cm§Bl¦Cm§Dn¨?l§?l§?l§?l§?l§?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©?k¨?k¨?k¨?k¨?k¨?k¨?k¨?k¨@l©?k¨?k¨?k¨?k¨@l©@l©@l©?k¨@l©@l©AmªAmªAmªAmªAmªAmªAmªAmªAmª@l©AmªAmªAmªBn«AmªAmªAmªAmªAmªAmªBn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Ao«Ao«Ao«Ao«Bp¬Bp¬:c›:c›?l§?l§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§Ak§?l§?l§?l§?l§?l§?l§>k¦?l§@m¨@m¨@m¨@m¨@m¨@m¨Bl¨Bl¨Bl¨Bl¨Bl¨Bl¨Bl¦Bl¦Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Bl¦Bl¦Bl¦Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Cm§Dn¨Dn¨Dn¨Cm§Dn¨Eo©?l§?l§?l§?l§?l§?k¨?k¨?k¨?k¨?k¨@l©@l©@l©@l©@l©@l©?k¨?k¨?k¨?k¨@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©@l©AmªAmªAmª@l©@l©AmªAmªBn«Bn«Bn«Bn«Co¬Bn«Bn«AmªAmªAmªAmªAmªBn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Bp¬Bp¬Bp¬Cq­Cq­Cq­:c›:c›AmªAmª@l©@l©@l©@l©@l©@l©@l©@l©@l©?k¨Aj¨Bk©Bk©Bk©@l©@l©@l©@l©?k¨?k¨?k¨@l©@m¨@m¨@m¨An©An©@m¨@m¨@m¨@m¨@m¨An©An©An©An©An©An©An©An©An©An©DnªCm©Cm©DnªDnªEo«DnªDnªCm©Cm©Cm©Cm©Cm©Cm©Cm©Cm©Dl©Dl©Dl§Dl§Em¨Em¨Dn¨Dn¨Eo©Dn¨Dn¨Dn¨Eo«Eo«Eo«AmªAmªAmª@l©@l©AmªAmªAmªAmªAmªAmªAmªAmª@l©@l©@l©@l©@l©@l©@l©@l©AmªAmªAmªAmªAmªAmªAmªBn«@l©AmªAmªBn«Bn«AmªAmªAmª@nªAo«Ao«Ao«Ao«Ao«Bp¬Bp¬Bp¬Bp¬Ao«Ao«Bp¬Bp¬Ao«Ao«Ao«Ao«Bp¬Bp¬Bp¬Ao«Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Cq­Cq­Cq­Cq­Bp¬Bp¬Bp¬Bp¬Cq­Cq­:c›:c›Amª@l©@l©@l©@l©@l©AmªAmªAmªAmªAmª@l©Aj¨Bk©Bk©Bk©@l©AmªAmª@l©Amª@l©@l©AmªAn©@m¨@m¨An©An©@m¨@m¨@m¨An©An©An©An©BoªBoªBoªBoªBoªBoªBoªBoªEo«Eo«DnªEo«Eo«Eo«DnªDnªDnªDnªDnªDnªDnªDnªDnªCm©EmªEmªEm¨Em¨Em¨Fn©Eo©Eo©Eo©Eo©Eo©Eo©Eo«Eo«Fp¬AmªAmªAmª@l©@l©AmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªAmªBn«Bn«Bn«Bn«Bn«Bn«Co¬Co¬Co¬Bn«Bn«Ao«Ao«Bp¬Bp¬Ao«Bp¬Bp¬Cq­Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Bp¬Cq­Bp¬Bp¬Bp¬Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­:c›:c›AmªAmªAmªAmªAmªBn«Bn«Bn«Bn«Bn«Bn«Bn«ClªDm«Bn«Bn«Bn«Bn«Bn«AmªBn«AmªAn©BoªAn©An©An©An©An©An©An©BoªBoªBoªBoªBoªCp«Cp«Cp«Cp«Cp«Cp«Cp«Cp«Eo«Eo«Eo«Fp¬Fp¬Fp¬Eo«Eo«Eo«Eo«Eo«Eo«Eo«Eo«Eo«DnªEo«Eo«Eo©Eo©Eo©FpªFpªFpªFpªFpªFpªFpªFp¬Fp¬Gq­AmªBn«AmªAmªAmªBn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Bn«Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Bp¬Bp¬Cq­Cq­Bp¬Bp¬Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Es¯:c›:c›Co¬Co¬Bn«Bn«Bn«Co¬Co¬Co¬Co¬Co¬Co¬Co¬En¬En¬Co¬Co¬Co¬Co¬Co¬Bn«Bn«AmªBoªBoªCp«BoªBoªCp«BoªBoªCp«Cp«Dq¬Cp«Cp«Cp«Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Eo«Eo«Eo«Fp¬Gq­Gq­Gq­Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬FpªFpªFpªFpªGq«Gq«Gq«Gq«Hr¬Hr¬Gq­Gq­Hr®Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Co¬Dp­Dp­Co¬Co¬Co¬Co¬Co¬Dp­Dp­Cq­Cq­Cq­Cq­Cq­Cq­Dr®Dr®Cq­Dr®Dr®Dr®Cq­Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Es¯Dr®Es¯Es¯Es¯Es¯Es¯Dr®Dr®Dr®Dr®Es¯Es¯Es¯Es¯:c›:c›Dp­Co¬Co¬Co¬Co¬Co¬Dp­Dp­Dp­Dp­Dp­Dp­En¬Fo­Dp­Co¬Co¬Co¬Cp«Cp«Cp«BoªCp«Cp«Cp«Cp«Cp«Cp«Cp«Cp«Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Fp¬Fp¬Fp¬Fp¬Gq­Gq­Gq­Gq­Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Fp¬Gq­Fp¬Fp¬FpªFpªFpªFpªGq«Gq«Er«Fs¬Fs¬Fs¬Fs®Fs®Fs®Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Cq­Bp¬Bp¬Bp¬Cq­Cq­Cq­Cq­Dr®Cq­Cq­Cq­Cq­Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Dr®Dr®Es¯Dr®Dr®Dr®Dr®Es¯Es¯Es¯Dr®Dr®Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es±Es±Es±Es±Ft²Ft²:c›:c›Dp­Dp­Dp­Dp­Dp­Dp­Dp­Eq®Eq®Dp­Dp­Dp­Dp­Fo­Eq®Dp­Dp­Dp­Dq¬Cp«Dq¬Dq¬Dq¬Dq¬Dq¬Cp«Cp«Cp«Cp«Cp«Cp«Dq¬Dq¬Dq¬Dq¬Dq¬Er­Er­Er­Er­Er­Er­Er­Er­Gq­Gq­Gq­Gq­Hr®Hr®Gq­Fp¬Gq­Gq­Gq­Gq­Gq­Gq­Gq­Gq­Gq­Gq­FpªFpªFpªFpªGq«Gq«Er«Fs¬Fs¬Fs¬Fs®Fs®Fs®Dp­Dp­Dp­Dp­Dp­Co¬Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Dp­Cq­Cq­Cq­Cq­Cq­Cq­Dr®Dr®Dr®Dr®Dr®Cq­Cq­Dr®Dr®Dr®Dr®Es¯Es¯Es¯Dr®Dr®Es¯Es¯Es¯Es¯Es¯Es¯Dr®Es¯Es¯Es¯Es¯Es¯Es¯Es¯Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Es±Es±Ft²Ft²Ft²Ft²:c›:c›Cq­Cq­Cq­Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Eq®Eq®Eq®Fr¯Eq®Eq®Eq®Er­Er­Dr­Dr­Dr­Dr­Er­Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Dq¬Er­Er­Er­Er­Er­Er­Er­Er­Er­Fs®Fs®Fs®Fs®Fs®Fs®Fs®Er­Er­Er­Er­Er­Er­Fs®Fs®Fs®Fs®Fs®Er«Er«Er«Er«Fs¬Fs¬Fs¬Fs¬Fs¬Gt­Gt¯Gt¯Gt¯Cq­Cq­Dr®Dr®Dr®Cq­Cq­Cq­Dr®Dr®Dr®Cq­Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Cq­Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Es¯Es¯Es¯Es¯Es¯Es¯Ft°Ft°Es¯Es¯Es¯Es¯Es¯Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Gu±Gu±Ft²Ft²Ft²Ft²Ft²Ft²:c›:c›Dr®Dr®Dr®Dr®Es¯Dr®Dr®Es¯Es¯Es¯Dr®Dr®Eq®Eq®Eq®Eq®Eq®Eq®Er­Er­Dr­Dr­Dr­Es®Fs®Er­Er­Er­Er­Er­Er­Dq¬Er­Er­Er­Er­Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Gt¯Gt¯Gt¯Gt¯Fs®Er­Er­Er­Er­Fs®Fs®Gt¯Gt¯Gt¯Gt¯Fs¬Fs¬Fs¬Fs¬Fs¬Gt­Gt­Gt­Gt­Hu®Hu°Iv±Hu°Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Es¯Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Dr®Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Ft°Ft°Ft°Es¯Es¯Ft°Ft°Ft°Ft°Es¯Es¯Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Gu±Ft°Ft°Ft°Gu±Gu±Gu±Gu±Gu±Gu±Gu³Gu³Gu³Gu³Gu³Gu³:c›:c›Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Fr¯Fr¯Fr¯Fr¯Fr¯Fr¯Dr®Dr®Es®Es®Dr­Dr­Er­Fs®Fs®Gt¯Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Fs®Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt­Fs¬Fs¬Gt­Gt­Gt­Gt­Gt­Gt­Hu®Hu°Hu°Hu°Es¯Es¯Es¯Es¯Es¯Es¯Es¯Dr®Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Ft°Es¯Es¯Es¯Es¯Es¯Ft°Ft°Ft°Ft°Es¯Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Gu³Hv´Hv´Hv´Hv´:c›:c›Es¯Es¯Ft°Ft°Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Gs°Gs°Gs°Gs°Gs°Fr¯Es¯Es¯Ft¯Es®Es®Es®Fs®Fs®Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Fs®Fs®Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Hu°Hu°Iv±Iv±Hu°Hu°Gt¯Gt¯Hu°Hu°Hu°Hu°Hu°Hu°Gt¯Gt¯Gt­Gt­Hu®Hu®Iv¯Iv¯Hu®Iv¯Iv¯Iv¯Iv±Iv±Iv±Es¯Es¯Es¯Es¯Es¯Ft°Es¯Es¯Es¯Ft°Ft°Ft°Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Es¯Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Ft°Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Hv²Hv²Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´IwµIwµIwµIwµHv´IwµIwµIwµIwµIwµ:c›:c›Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gs°Gs°Gs°Gs°Gs°Gs°Ft°Es¯Ft°Ft°Ft°Es¯Ft°Ft°Hu°Hu°Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Gt¯Hu°Hu°Hu°Hu°Ft¯Gu°Gu°Hv±Hv±Hv±Gu°Gu°Gu°Gu°Gu°Gu°Gu°Gu°Hv±Hv±Gu°Gu°Gv®Gv®Hu®Iv¯Iv¯Iv¯Iv¯Iv¯Iv¯Jw°Jw²Jw²Jw²Ft°Ft°Es¯Es¯Es¯Gu±Ft°Ft°Ft°Ft°Gu±Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Gu±Ft°Gu±Gu±Hv²Gu±Gu±Hv²Hv²Gu±Gu±Gu±Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²IwµHv´Hv´Hv´Hv´Hv´IwµIwµIwµIwµIwµIwµIwµJx¶Jx¶Jx¶GwµGwµGwµGwµHx¶Hx¶:c›:c›Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gs°Gs°Gs°Gs°Gs°Gs°Ft°Ft°Gu±Ft°Ft°Ft°Ft°Gu±Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hu°Hv±Hv±Hv±Hv±Hv±Hv±Gu°Gu°Gu°Gu°Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hw¯Hw¯Hu®Iv¯Iv¯Iv¯Jw°Jw°Jw°Jw°Jw²Jw²Jw²Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Ft°Ft°Ft°Ft°Ft°Ft°Ft°Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Iw³Iw³Iw³Iw³Iw³IwµIwµIwµIwµIwµIwµIwµJx¶Jx¶Jx¶Jx¶Jx¶IwµIwµIwµIwµGwµGwµGwµHx¶Hx¶Hx¶:c›:c›Gu±Gu±Gu±Gu±Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Ht³Ht³Ht±Ht±Ht±Ht±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Hv²Hv²Gu°Gu°Gu°Gu°Gu°Hv±Hv±Hv±Gu°Gu°Gu°Hv±Hv±Hv±Hv±Hv±Iw²Iw²Iw²Iw²Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Iw²Iw²Iw²Iw²Iw²Iw²Ix°Hw¯Iv¯Iv¯Iv¯Iv¯Jw°Jw°Jw°Jw°Jw²Jw²Kx³Gu±Gu±Hv²Hv²Hv²Hv²Gu±Gu±Gu±Hv²Hv²Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Gu±Hv²Gu³Gu³Gu³Gu³Gu³Hv´Hv´Hv´Gu³Gu³Gu³Gu³Hv´Hv´Hv´Hv´Hv´Hv´IwµIwµIwµHv´Hv´Hv´IwµIwµIwµIwµIwµIwµIwµIwµGwµGwµGwµGwµHx¶Hx¶Hx¶Hx¶Iy·Hx¶Hx¶Hx¶Hx¶Hx¶Hx¶Hx¶Hx¶Hx¶Iy·Iy·Iy·Iy·:c›:c›Hv²Hv²Hv²Hv²Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iu´Iu´Iu²Iu²Iu²Iu²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv²Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Hv±Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Jx³Iw²Iw²Iw²Iw²Iw²Jx³Jx³Jx³Jx³Jx³Jy±Jy±Kx±Kx±Kx±Kx±Kx±Kx±Kx±Kx±Kx³Kx³Ly´Hv²Hv²Gu±Gu±Gu±Hv²Hv²Hv²Hv²Iw³Hv²Hv²Gu±Gu±Gu±Gu±Gu±Gu±Hv²Hv²Hv²Gu³Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´Hv´IwµIwµIwµHv´IwµIwµIwµIwµIwµIwµIwµIwµIwµIwµJx¶Jx¶Jx¶Jx¶Jx¶Jx¶Hx¶Hx¶Hx¶Hx¶Hx¶Iy·Iy·Iy·Iy·Iy·Iy·Iy·Iy·Jz¸Jz¸Jz¸Hx¶Iy·Iy·Jz¸Jz¸Jz¸:c›:c›Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³JvµJvµJvµJvµIwµIwµIwµIwµIw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Iw²Jx³Jx³Jx³Iw²Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Ky´Kz²Kz²Ly²Ly²Ly²Ly²Ly²Ly²Ly²Ly²Ly´Ly´MzµIw³Hv²Hv²Hv²Hv²Iw³Iw³Iw³Iw³Jx´Iw³Iw³Hv²Hv²Gu±Gu±Gu±Gu±Hv²Hv²Iw³Hv´Hv´IwµIwµIwµIwµIwµIwµIwµIwµIwµIwµIwµJx¶Jx¶IwµIwµIwµIwµJx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Ky·Ky·Ky·Ky·Ky·Ky·Iy·Iy·Iy·Iy·Iy·Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸K{¹L|ºL|ºI{¸I{¸I{¸J|¹J|¹J|¹:c›:c›Jx´Jx´Jx´Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Iw³Jx¶Kw¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx´Jx´Iw³Iw³Iw³Iw³Iw³Iw³Iw²Iw²Iw²Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Jx³Ky´Ky´Ky´Ky´Ky´Ky´Jx³Jx³Jx³Jx³Jx³Jx³Ky´Ky´Ky´Ky´Ky´Ky´Kz²Kz²Ly²Ly²Ly²Kx±Ly²Ly²Ly²Ly²Ly´Ly´MzµJx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Iw³Hv²Hv²Gu±Gu±Hv²Hv²Iw³Iw³IwµIwµIwµJx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶IwµJx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Ky·Ky·Ky·Lz¸Lz¸Lz¸Lz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹L|ºL|ºJ|¹K}ºK}ºL~»L~»L~»:c›:c›Iy·Iy·Iy·Iy·IzµIzµHy´Hy´Hy´Hy´Hy´IzµIzµKyµIzµHy´Hy´Hy´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´Jx´KyµKy´Ky´Ky´Ky´Jx³Jx³Jx³Ky´Kz²Kz²Ky´Ky´Ky´Ky´Ky´Ky´Ky´Ky´Ky´Ky´Ky´Ky´LzµLzµLzµLzµLzµLzµLzµLzµLzµLzµLzµLzµM|´M|´M|´M|´M|´M|´M|´Iy·Iy·Hx¶Hx¶Hx¶KyµKyµKyµKyµKyµKyµKyµKyµIw³Iw³Iw³Hv²Iw³Iw³Jx´Jx´Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Jx¶Ky·Ky·Ky·Ky·Iy·Iy·Iy·Iy·Iy·Iy·Iy·Iy·Iy·Iy·Jz¸Jz¸Jz¸Jz¸K{¹K{¹K{¹J|¹J|¹J|¹J|¹J|¹J|¹K}ºK{¹K{¹L|ºL|ºM}»M}»M}»M}»K}ºL~»L~»M¼M¼M¼:c›:c›Iy·Iy·Iy·Iy·J{¶IzµIzµIzµIzµIzµIzµIzµIzµIzµIzµIzµIzµIzµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKyµKy´Ky´Ky´Ky´Ky´Ky´Ky´Ky´Kz²L{³LzµLzµLzµLzµLzµLzµLzµLzµLzµLzµLzµLzµLzµM{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶LzµLzµLzµM|´M|´M|´N}µN}µN}µN}µIy·Iy·Iy·Jz¸Jz¸Lz¶Lz¶Lz¶Lz¶Lz¶KyµKyµKyµJx´Jx´Jx´Iw³Jx´Jx´KyµKyµKy·Ky·Ky·Ky·Ky·Ky·Jx¶Jx¶Ky·Ky·Ky·Ky·Ky·Ky·Ky·Lz¸Iy·Iy·Iy·Iy·Jz¸Jz¸Jz¸K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹J|¹J|¹J|¹J|¹K}ºK}ºL~»L~»L|ºM}»M}»M}»N~¼N~¼N~¼N~¼L~»L~»M¼N€½N€½N€½:c›:c›Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶J{¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶KyµKyµKyµKyµKyµKyµLz¶Lz¶LzµLzµLzµLzµLzµLzµLzµLzµM{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶N|·N|·N|·N|·N|·N|·N|·N|·N|·N|·M{¶M{¶M|´N}µN}µN}µO~¶O~¶O~¶Jz¸Jz¸Jz¸K{¹K{¹Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Iy·Iy·Iy·Iy·Iy·Iy·Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Iy·Iy·Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸Jz¸K{¹Jz¸Jz¸Jz¸K{¹K{¹K{¹K{¹L|ºL|ºL|ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºL~»L~»L~»M¼N~¼N~¼O½O½O½O½O½O½M¼N€½N€½O¾O¾O¾:c›:c›K{¹K{¹L|ºL|ºK{¹K{¹K|·K|·K|·K|·K|·J{¶K|·K|·K|·K|·K|·K|·K|·K|·M{·M{·M{·M{·Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶Lz¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶M{¶N|·N|·N|·N|·N|·N|·N|·N|·N|·N|·N|·N|·O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸N}µO~¶O~¶O~¶P·P·P·K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹Jz¸Jz¸Jz¸Jz¸Jz¸K{¹K{¹K{¹L|ºL|ºL|ºL|ºK{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹K{¹L|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºL|ºK}ºK}ºL~»L~»L~»L~»M¼M¼M¼M¼M¼M¼M¼M¼P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾N€½O¾O¾O¾P‚¿P‚¿:c›:c›K}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºJ|¹J|¹L|ºL|ºL|ºK{¹K{¹K{¹K|·K|·L}¸L}¸K|·K|·K|·K|·K|·K|·M{·M{·M{·M{·Lz¶M{·M{·M{·M{¶M{¶M{¶M{¶M{¶M{¶N|·N|·N|·N|·N|·N|·N|·O}¸O}¸O}¸N|·O}¸O}¸O}¸O}¸P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹P·Q€¸Q€¸Q€¸Q€¸K}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºJ|¹J|¹J|¹J|¹J|¹J|¹K}ºK}ºL~»L~»K}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºK}ºL~»L~»L~»M}»M}»M}»M}»M}»M}»L~»L~»L~»L~»L~»L~»L~»M¼M¼M¼N€½N€½N€½N€½N€½N€½N€½N€½P€¾P€¾P€¾Q¿Q¿Q¿Q¿Q¿P€¾Q¿Q¿Q¿Q¿Q¿:c›:c›L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»K}ºK}ºL|ºL|ºL|ºL|ºL|ºL|ºL}¸L}¸M~¹L}¸L}¸L}¸K|·K|·K|·L}¸N|¸N|¸M{·M{·M{·M{·M{·M{·N|·N|·N|·N|·N|·N|·N|·N|·O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸O}¸P~¹P~¹P~¹QºQºQºQºQºQºQºQºQºQºQºQºQºQ€¸R¹R¹R¹R¹L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»K}ºK}ºK}ºK}ºK}ºK}ºL~»L~»L~»L~»L~»K}ºK}ºK}ºK}ºK}ºL~»L~»L~»L~»L~»L~»L~»L~»M}»M}»M}»M}»M}»N~¼M¼N€½N€½N€½M¼M¼M¼M¼N€½N€½N€½N€½N€½O¾O¾O¾O¾O¾O½P€¾P€¾Q¿R‚ÀR‚ÀSƒÁSƒÁR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚À:c›:c›M¼L~»L~»L~»M¼L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»M}»M}»M}»M}»M~¹M~¹M~¹L}¸L}¸L}¸L}¸L}¸O}¹O}¹N|¸N|¸N|¸N|¸N|¸N|¸O}¹O}¹N|·N|·O}¸O}¸O}¸O}¸O}¸O}¸P~¹P~¹P~¹P~¹P~¹P~¹P~¹P~¹QºQºQºR€»R€»R€»R€»R€»R€»R€»R€»R€»R€»R€»R€»R€»R€»R€»S¼S¼S¼M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼L~»L~»L~»L~»L~»L~»L~»L~»L~»L~»M¼L€¼K»K»K»K»K»K»K»K»K»K»K»L€¼L€¼L€¼L€¼L~»L~»L~»M¼M¼N€½N€½N€½O¾N€½N€½N€½N€½N€½N€½O¾N€½N€½O¾O¾O¾P‚¿P‚¿P‚¿P€¾Q¿Q¿R‚ÀSƒÁSƒÁT„ÂT„ÂSƒÁSƒÁSƒÁSƒÁSƒÁSƒÁ:c›:c›M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼L~»L~»L~»M¼N~¼N~¼N~¼O½NºNºM~¹M~¹M~¹M~¹M~¹M~¹O}¹O}¹O}¹O}¹O}¹O}¹O}¹O}¹O}¹O}¹O}¸O}¸O}¸O}¸O}¸O}¸P~¹P~¹P~¹P~¹P~¹QºQºQºQºQºQºR€»R€»S¼S¼S¼S¼S¼S¼S¼S¼S¼S¼S¼R€»R€»R€»S¼T‚½T‚½T‚½M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼M¼L~»M¼M¼M¼M¼M¼M¼M¼M¼N€½L€¼L€¼L€¼L€¼L€¼L€¼L€¼K»K»L€¼L€¼L€¼L€¼L€¼L€¼M¼M¼M¼M¼M¼N€½N€½N€½N€½N€½N€½N€½N€½N€½O¾O¾O¾O¾O¾O¾P‚¿P‚¿P‚¿O¾R‚ÀSƒÁSƒÁSƒÁSƒÁSƒÁSƒÁSƒÁT„ÂT„ÂT„ÂT„ÂT„ÂT„Â:c›:c›N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N~¼N~¼NºNºNºNºNºNºNºNºL}¸L}¸M~¹M~¹M~¹NºNºNºN¹N¹N¹O€ºO€ºN¹N¹N¹QºQºR€»R€»R€»R€»R€»R€»R€»R€»R€»R€»S¼S¼T‚½T‚½T‚½T‚½S¼T‚½T‚½T‚½T‚½T‚½T‚½S¼S¼T‚½Uƒ¾Uƒ¾Uƒ¾N€½N€½N€½N€½N€½P€¾P€¾P€¾P€¾P€¾P€¾O½O½O½O½N~¼N~¼N~¼N~¼N~¼M¼N€½M¼M¼M¼M¼M¼M¼M¼N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½O¾O¾O¾O¾P‚¿P‚¿Oƒ¿Oƒ¿P‚¿P‚¿P‚¿P‚¿QƒÀR„ÁR„ÁQƒÀSƒÁU…ÃV†ÄU…ÃT„ÂT„ÂT„ÂT„ÂU…ÃU…ÃU…ÃU…ÃU…ÃU…Ã:c›:c›N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½O¾O¾O¾O¾O¾N€½O½O½O€»O€»NºNºNºO€»O€»O€»M~¹M~¹NºNºNºNºO€»O€»O€ºN¹N¹O€ºO€ºO€ºO€ºO€ºR€»R€»R€»S¼S¼S¼S¼S¼S¼S¼S¼S¼S¼T‚½T‚½T‚½Uƒ¾T‚½T‚½T‚½Uƒ¾Uƒ¾Uƒ¾T‚½Uƒ¾T‚½T‚½Uƒ¾V„¿V„¿V„¿N€½N€½N€½N€½N€½P€¾P€¾P€¾P€¾P€¾P€¾P€¾O½O½O½O½O½O½O½O½O½M¼N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½N€½O¾O¾O¾O¾O¾O¾O¾O¾P‚¿P‚¿P‚¿P‚¿QƒÀQƒÀP„ÀP„ÀQƒÀR„ÁR„ÁQƒÀR„ÁR„ÁR„ÁR„ÁSƒÁU…ÃV†ÄU…ÃU…ÃU…ÃV†ÄV†ÄU…ÃU…ÃV†ÄV†ÄV†ÄV†Ä:c›:c›O¾O¾O¾O¾O¾O¾O¾O¾P‚¿P‚¿P‚¿P‚¿O¾O¾O¾O¾O¾O¾O€»O€»P¼O€»O€»O€»O€»O€»O€»O€»O€ºO€ºO€ºO€ºO€ºP»P»P»O€ºO€ºO€ºP»P»P»P»Q‚¼R€»R€»S¼S¼S¼S¼S¼S¼T‚½T‚½T‚½T‚½T‚½T‚½Uƒ¾Uƒ¾V„¿Uƒ¾Uƒ¾Uƒ¾V„¿V„¿V„¿V„¿V„¿V„¿V„¿V„¿W…ÀW…ÀW…ÀO¾O¾O¾O¾O¾Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾O½O½O½P€¾P€¾P€¾P€¾P€¾O½O½O½O½P€¾P€¾P€¾P€¾O¾O¾O¾P‚¿P‚¿P‚¿P‚¿P‚¿P‚¿P‚¿QƒÀQƒÀQƒÀQƒÀR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁS…ÂS…ÂS…ÂT„ÂU…ÃV‡ÂV‡ÂU†ÁV‡ÂV‡ÂWˆÃV†ÄV†ÄV†ÄW‡ÅW‡ÅW‡Å:c›:c›P‚¿P‚¿O¾O¾P‚¿P‚¿P‚¿P‚¿P‚¿P‚¿QƒÀQƒÀO¾P‚¿P‚¿P‚¿O¾O¾P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼O€ºP»P»P»P»P»Q‚¼Q‚¼P»P»P»Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼S¼S¼S¼S¼S¼S¼S¼S¼Uƒ¾Uƒ¾Uƒ¾Uƒ¾Uƒ¾Uƒ¾V„¿V„¿V„¿V„¿V„¿W…ÀW…ÀW…ÀW…ÀW…ÀW…ÀW…ÀW…ÀW…ÀX†ÁX†ÁX†ÁP‚¿P‚¿P‚¿P‚¿P‚¿R‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀQ¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾P€¾Q¿Q¿P‚¿P‚¿P‚¿P‚¿P‚¿QƒÀQƒÀQƒÀQƒÀQƒÀQƒÀQƒÀR„ÁR„ÁR„ÁR„ÁR„ÁS…ÂS…ÂS…ÂS…ÂT†ÃT†ÃT†ÃU…ÃV†ÄWˆÃV‡ÂV‡ÂV‡ÂWˆÃWˆÃXˆÆXˆÆXˆÆXˆÆXˆÆXˆÆ:c›:c›R‚ÀQ¿Q¿Q¿Q¿Q¿Q‚½Q‚½Q‚½Q‚½Q‚½Q‚½Qƒ¾Qƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Q‚½Q‚½Q‚½Q‚½Q‚½Q‚½P¼P¼P¼P¼P»P»P»P»Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼P»P»Q‚¼Q‚¼Q‚¼Q‚¼Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½S„¾S„¾S„¾T…¿T…¿T…¿U†ÀU†ÀU†ÀU†ÀU†ÀV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁWˆÂWˆÂWˆÂR‚ÀR‚ÀR‚ÀR‚ÀQ¿R‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀQ¿Q¿R‚ÀR‚ÀR‚ÀR‚ÀQ¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿Q¿P‚¿P‚¿P‚¿QƒÀQƒÀQƒÀQƒÀQƒÀR„ÁR„ÁR„ÁS…ÂS…ÂS…ÂT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃU‡ÄU‡ÂU‡ÂWˆÃWˆÃWˆÃX‰ÄX‰ÄYŠÅYŠÅX‰ÄW‰ÄXŠÅXŠÅXŠÅXŠÅXŠÅ:c›:c›SƒÁR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀRƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Qƒ¾Qƒ¾S„¿Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Q‚½Q‚½Q‚½Q‚½Q‚½Q‚½Q‚½Q‚½Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Q‚¼Rƒ½Rƒ½Rƒ½Rƒ½S„¾Rƒ½Rƒ½Rƒ½Rƒ½Rƒ½S„¾S„¾S„¾T…¿T…¿T…¿U†ÀU†ÀU†ÀV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁWˆÂV‡ÁV‡ÁWˆÂWˆÂWˆÂWˆÂV‡ÁWˆÂWˆÂX‰ÃX‰ÃSƒÁSƒÁSƒÁR‚ÀR‚ÀSƒÁSƒÁSƒÁSƒÁSƒÁR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀQ¿Q¿R‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀR‚ÀQƒÀQƒÀQƒÀQƒÀQƒÀR„ÁR„ÁR„ÁS…ÂS…ÂS…ÂS…ÂT†ÃT†ÃT†ÃU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄVˆÅVˆÃU‡ÂWˆÃWˆÃX‰ÄYŠÅ[ŒÇ]ŽÉ\ÈZ‹ÆXŠÅXŠÅY‹ÆY‹ÆZŒÇZŒÇ:c›:c›SƒÁSƒÁSƒÁSƒÁS„¿S„¿S„¿S„¿S„¿T…ÀT…ÀT…ÀS„¿S„¿S„¿S„¿S„¿Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Rƒ¾Q‚½Q‚¼Q‚ºRƒ»Rƒ»Rƒ»Rƒ»Rƒ½Rƒ½S„¾Rƒ½Rƒ½S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾S„¾T…¿U†ÀU†ÀU†ÀV‡ÁV‡ÁWˆÂWˆÂV‡ÁWˆÂWˆÂWˆÂWˆÂWˆÂX‰ÃX‰ÃX‰ÃX‰ÃX‰ÃX‰ÃX‰ÃYŠÄYŠÅSƒÁT„ÂT„ÂSƒÁSƒÁS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁQƒÀQƒÀQƒÀQƒÀR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁSƒÁSƒÁSƒÁSƒÁR„ÁS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂT†ÃT†ÃU‡ÄU‡ÄU‡ÄU‡ÄVˆÅVˆÅVˆÅW‰ÆXŠÇXŠÅXŠÅZ‹ÆZ‹ÆZ‹Æ\È_Êa’Ì_Ê]ŽÈZŒÇZŒÇZŒÇ[È[È[È:c›:c›T„ÂT„ÂT„ÂT„ÂT…ÀT…ÀT…ÀT…ÀT…ÀT…ÀT…ÀT…ÀS„¿T…ÀT…ÀT…ÀS„¿S„¿S„¿S„¿S„¿S„¿S„¿S„¿S„¿Rƒ¾Rƒ¾Rƒ¾Rƒ½Rƒ»Rƒ»Rƒ»Rƒ»Rƒ»Rƒ½Rƒ½T…¿S„¾S„¾S„¾S„¾S„¾S„¾T…¿T…¿T…¿T…¿T…¿T…¿T…¿T…½T…¿U†ÀU†ÀV‡ÁV‡ÁWˆÂWˆÂWˆÂX‰ÃWˆÂWˆÂX‰ÃX‰ÃX‰ÃX‰ÃX‰ÃYŠÄYŠÄX‰ÃX‰ÃYŠÄYŠÄYŠÄYŠÄT„ÂT„ÂT„ÂT„ÂT„ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁR„ÁSƒÁSƒÁT„ÂT„ÂS…ÂS…ÂS…ÂS…ÂT†ÃT†ÃT†ÃU‡ÄU‡ÄVˆÅVˆÅVˆÅVˆÅW‰ÆXŠÇY‹ÈZŒÉ\ŽË]Ê]Ê^Ê]ŽÉ]ŽÉ`‘Ìc”Îe–Ðc”Î`‘Ë\ŽÉ\ŽÉ\ŽÉ[È[È[È:c›:c›T†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÁT†ÁS…ÀS…ÀS…ÀS…ÀT…ÀT…ÀT…ÀT…ÀT…ÀS„¿S„¿Rƒ¾T‚¾T‚¾Uƒ¿Uƒ¿S„¾S„¾S„¾S„¾S„¾S„¾T…¿T…¿T…¿T…¿T…¿T…¿T…¿T…¿T…¿U†ÀS…ÀS†¿S†¿S†½U†¾V‡¿W‰¾WˆÀV‡¿V‡¿WˆÂX‰ÃX‰ÃX‰ÃX‰ÁYŠÂX‰ÁX‰ÁYŠÂYŠÂYŒÃYŒÃYŒÅX‹ÄZŒÇXŠÅYŠÅ[ŒÆ[ŒÆZ‹Ã\‹ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÅT†ÅT†ÅT†ÅT†ÅT†ÅT†ÅT†ÅT†ÃT†ÃS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÄS…ÄS…ÄS…ÄS…ÂS…ÂS…ÂT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃU‡ÄVˆÅW‰ÆW‰ÆW‰ÆW‰ÆXŠÇY‹ÈZŒÉ\ŽË]Ê^Ë_‘Ì`’Í`’Ía“Î`“Ì_’Ëa”Íe˜Ñh›ÔgšÓ_‘Ì_‘Ì^Ë\ŽÉ\ŽÉ\ŽÉ:c›:c›T†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁU†ÁU†ÁU†ÁT…ÀT…ÀT…ÀS„¿S„¿Uƒ¿Uƒ¿Uƒ¿Uƒ¿S„¾S„¾S„¾S„¾S„¾T…¿T…¿T…¿T…¿T…¿T…¿T…¿T…¿U†ÀU†ÀU†ÀS…ÀT†ÁT‡ÀT‡¾U†¾V‡¿Vˆ½V‡¿V‡¿WˆÂWˆÂX‰ÃX‰ÃX‰ÃYŠÂYŠÂX‰ÁX‰ÁYŠÂYŠÂYŒÃZÆ[ŽÇ[ŽÇZŒÇY‹ÆZ‹Æ[ŒÇ\Å\Å_ŽÄT†ÃT†ÃT†ÃT†ÃT†ÃU‡ÄU‡ÄU‡ÆU‡ÆU‡ÆU‡ÆU‡ÆU‡ÆT†ÅT†ÅT†ÃT†ÃT†ÃT†ÃS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÂS…ÄS…ÄS…ÄT†ÅS…ÂT†ÃT†ÃT†ÃU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄVˆÅW‰ÆXŠÇY‹ÈY‹ÈY‹ÈXŠÇY‹ÈZŒÉ\ŽË]Ê^Ë`’Ía“Îa“Îb”Ïa”Í`“Ìa”Íd—Ðf™Òe˜Ñc•Ðb”Ïa“Î_‘Ì_‘Ì_‘Ì:c›:c›U‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU†ÁU†ÁU†ÁU†ÁT…ÀT…ÀT…ÀT…ÀV„ÀV„ÀU†ÀT…¿T…¿T…¿T…¿T…¿U†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀV‡ÂU…ÃV†ÄV‡ÂV‡ÁV‡ÁWˆÂV‡¿U†ÀWˆÂX‰ÄX‰ÄYŠÅYŠÅYŠÅZ‹ÅZ‹ÅZ‹ÅZ‹ÅYŒÅZÆZÆ[ŽÇ[ŽÇ\ŽÉ]Ê\ŽÉ\È\È\Å\Å_ŽÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÆU‡ÆU‡ÆU‡ÆU‡ÆU‡ÆU‡ÄU‡ÄU‡ÄU‡ÄT†ÃT†ÃT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁT†ÁT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃT†ÃU‡ÄU‡ÄU‡ÄVˆÅVˆÅVˆÅVˆÅW‰ÆVŠÆW‹ÇXŒÈXŒÈYÉYÉXŒÈYÉ[Ê\ŽË]Ì^Í`’Ía“Îa“Îb”Ïb•Îa”Íb•Îc–Ïd—Ðc–Ïc•Ðc•Ðb”Ïa“Î`’Í`’Í:c›:c›VˆÅVˆÅVˆÅVˆÅVˆÅVˆÅVˆÅVˆÅVˆÃVˆÃVˆÃVˆÃU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂV‡ÂV‡ÂV‡ÂU†ÁU†ÁU†ÁU†ÁU†ÁW…ÁW…ÁV‡ÁU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀU†ÀV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁV‡ÂW‡ÅW‡ÅX‰ÄWˆÃWˆÂX‰ÃX‰ÃWˆÂX‰ÄYŠÅZ‹ÆZ‹ÆZ‹Æ[ŒÇ[ŒÆ\Ç\È\È\È\È\È\È]Ê]Ê^Ë_Ê_ÊaÊaÈb‘Çc’ÈVˆÅVˆÅVˆÅVˆÅVˆÅU‡ÄU‡ÄU‡ÄVˆÅVˆÇVˆÇU‡ÆU‡ÆU‡ÆU‡ÆU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂT†ÁT†ÁT†ÃU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄU‡ÄVˆÅVˆÅVˆÅVˆÅW‰ÆW‰ÆXŠÇW‹ÇW‹ÇXŒÈXŒÈXŒÈXŒÈZŽÊZŽÊ\ŽË\ŽË\ŽË]Ì_‘Ì`’Ía“Îb”Ïb•Îa”Íb•Îc–Ïc–Ïb•Îb”Ïb”Ïb”Ïa“Î`’Í`’Í:c›:c›W‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄVˆÃVˆÃVˆÃVˆÃVˆÃVˆÃVˆÃU‡ÂV‡ÂV‡ÂV‡ÂV‡ÂV‡ÂV‡ÂV‡ÂV‡ÂWˆÂV‡ÁV‡ÁU†ÀU†ÀU†ÀU†ÀV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁWˆÂWˆÂWˆÂWˆÃY‡ÅZˆÆZˆÄY‡ÃZˆÃ[‰ÄYŠÄYŠÄYŠÄZ‹ÅZŒÇZŒÇZÆZÆ[ŽÅ[ŽÇ[È\ŽË]Ê]Ê^‘Ê^‘Ê`‘Ëa’Ìa’Ìc’Êc’ÊcÇd‘Èg•Ék™ËW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÈW‰ÈW‰ÈW‰ÈVˆÅVˆÅVˆÅVˆÅVˆÅVˆÅVˆÅU‡ÄVˆÃV‰ÂV‰ÂUˆÁUˆÁUˆÁU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂU‡ÄVˆÅVˆÅVˆÅW‰ÆW‰ÆVŠÆVŠÆW‹ÇW‹ÇW‹ÇXŒÈXŒÈYÉYÉYÉ[Ë[Ë[Ë[Ë\Ì\Ì_‘Î_‘Î`’Ía“Îa“Îa“Îb”Ïc•Ðc–Ïc–Ïb”Ïc•Ðc•Ðb”Ïb”Ïb”Ï:c›:c›XŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÅXŠÅXŠÅXŠÅXŠÅXŠÅW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄVˆÃWˆÃWˆÃWˆÃWˆÃWˆÃWˆÃWˆÃWˆÃX‰ÃWˆÂV‡ÁV‡ÁU†ÀU†ÀV‡ÁV‡ÁV‡ÁV‡ÁWˆÂWˆÂX‰ÃX‰ÃX‰ÃX‰ÃZˆÄZˆÄZˆÃZˆÃZˆÃ[‰ÄZ‹ÃZ‹ÅZ‹Å[ŒÆZÆ[È[ŽÇ[ŽÇ[ŽÅ\È\ŽÉ]Ì^Ë^‘Ê^‘Ê_È`‘Éc’ÈcÇd’Æh“Èj“Çn˜ÊvžÑ}¨ÕXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÉXŠÉW‰ÈW‰ÈW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆW‰ÆVˆÅVˆÃVˆÃV‰ÂV‰ÂV‰ÂUˆÁUˆÁU‡ÂU‡ÂU‡ÂU‡ÂU‡ÂVˆÃVˆÃVˆÃVˆÃVˆÃVˆÅVˆÅW‰ÆW‰ÆXŠÇXŠÇW‹ÇW‹ÇXŒÈXŒÈXŒÈYÉYÉZŽÊ[Ë[Ë[Ë[Ë\Ì\Ì]‘Í^’Î`’Ï`’Ï`’Ía“Îa“Îb”Ïb”Ïc•Ðd—Ðe˜Ñd–Ñe—Òf˜Ód–Ñc•Ðc•Ð:c›:c›XŒÈXŒÈXŒÈXŒÈXŒÆXŒÆXŒÆXŒÆXŒÆXŒÆXŒÆXŒÆY‹ÆY‹ÆY‹ÆY‹ÆY‹ÆXŠÅXŠÅXŠÅW‰ÄW‰ÄW‰ÄW‰ÄX‰ÄX‰ÄX‰ÃX‰ÃYŠÄX‰ÃWˆÂV‡ÁV‡ÁV‡ÁV‡ÁV‡ÁWˆÂWˆÂX‰ÃX‰ÃYŠÄYŠÄYŠÄYŠÄ[‰Ä\ŠÅZ‹ÃZ‹ÃZ‹Ã[ŒÄZÂZÄZÄ[ŽÇ[È[È[Æ[Æ\‘Å\‘Ç_‘Ì`’Ï`’Í`“Ìa“Èd“Çg•Éj•Èl–Èq›Ëy¢Ð‚¨Õ‹°Ü˜ºç ÆíXŒÈXŒÈXŒÈXŒÈXŒÈY‹ÈY‹ÈY‹ÈY‹ÈY‹ÈXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇXŠÇW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄVˆÃVˆÃVˆÃVˆÃVˆÃVˆÃVˆÃW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄVŠÆW‹ÇW‹ÇW‹ÇXŒÈXŒÈXŒÈXŒÈYÉYÉYÉZŽÊZŽÊ[Ë\Ì\Ì\Î]Ï^’Î^’Î_“Ï_“Ï`”Ð`”Ð`”Ða•Ñb”Ïc•Ðc•Ðc•Ðd–Ñe—Òe—Òf˜Óg™Ôf˜Ód–Ñd–Ñ:c›:c›YÉYÉYÉYÉYÇYÇYÇYÇYÇYÇYÇYÇ[È[ÈZŒÇZŒÇZŒÇY‹ÆY‹ÆY‹ÆXŠÅXŠÅXŠÅXŠÅYŠÅYŠÅYŠÄYŠÄYŠÄYŠÄX‰ÃWˆÂV‡ÁV‡ÁV‡ÁWˆÂWˆÂX‰ÃX‰ÃYŠÄYŠÄZ‹ÅZ‹ÅZ‹ÅZ‹Ã[ŒÄ\ŽÃ\ŽÃ\ŽÃ\ŽÃ[ŽÃZÄ\Æ\È\É\É]’È]’È]’Æ_’É`“Ìb“Íb“Ëc•Êf–Çl˜Éq›ËužÌ…¬×²Ü™¼ä¢Äê¬Ìò·Õù¾ÜþYÉYÉYÉYÉYÉZŒÉZŒÉZŒÉZŒÉZŒÉZŒÉY‹ÈY‹ÈY‹ÈY‹ÈY‹ÈY‹ÈY‹ÈY‹ÈXŠÅXŠÅXŠÅXŠÅXŠÅXŠÅXŠÅW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄW‰ÄXŠÅXŠÅXŠÅXŠÅW‹ÇW‹ÇXŒÈXŒÈXŒÈYÉYÉYÉZŽÊZŽÊZŽÊZŽÊZŽÊ[Ë\Ì\Ì]Ï^‘Ð_“Ï`”Ð`”Ð`”Ð`”Ð`”Ðb–Òb–Òc•Ðd–Ñd–Ñc•Ðd–Ñe—Òe—Òf˜Óg™Ôf˜Óe—Òe—Ò:c›:c›ZŽÊZŽÊZŽÊZŽÊZŽÈZŽÈZŽÈZŽÈZŽÈZŽÈZŽÈZŽÈ[È[È[È[È[È[È[È[È[È[ÈZÆZÆZÆZÆZÆZÆ[ŒÆZ‹ÅYŠÄYŠÄYŠÄYŠÄX‰ÃX‰ÃX‰ÃYŠÄZ‹Å[ŒÆ[ŒÆ[ŒÆ\Ç\Ç[ŒÄ[ŽÅ[ŽÃZÂ[ŽÅ\Æ\‘Ç\É\É]‘Ë]‘Ë]‘Ë`“Ì_’É_’Ça”Éb”Éf•Ëi™ÊoÎx¤Ñ€©Õ‹²Û”ºá£ÅêªËî´Òô¼ÙùÂÝúÇáüËåþZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊYÉYÇYÇXŒÈXŒÈXŒÈXŒÈXŒÈXŒÈXŒÈYÉW‹ÇXŒÈXŒÈXŒÈXŒÈXŒÈYÉZŽÊYÉYÉZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊ[Ë\Ì\Ì]‘Í[‘Í[‘Í^‘Ð_’Ñ`”Ða•Ña•Ñb–Òa•Ña•Ña•Ñb–Òd˜Ôe™Õe™Ód˜Òd˜Òd˜Òd˜Òe™ÓfšÔfšÔfšÔfšÔ:c›:c›[Ë[Ë[Ë[Ë[É[É[É[É\Ê[É[É[É\ŽÉ\ŽÉ\ŽÉ\ŽÉ\ŽÉ\ŽÉ\ŽÉ\ŽÉ[È[È[ŽÇZÆZÆZÆZÆZÆ[ŽÇ[ŒÆ[ŒÆZ‹ÅZ‹ÅYŠÄYŠÄYŠÄZ‹Å[ŒÆ\Ç\Ç\Ç\Ç]ŽÈ]ŽÈ\È\È\Æ[ŽÅ\Æ]É\É]‘Ë_“Í^’Ì^Ë^Ë`“Ì`‘Éa“Èf•ÉlšÌsŸÎ|¨Õ‡²Ü”»äÃè¦Êì¯Ðñ¸×ö¿Ú÷ÄÞùÈàúËáøÎäùÒçú[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[ËZŽÊZŽÊZŽÊZŽÈZŽÈYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉYÉZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊ[Ë[Ë[Ë[Ë[Ë\Ì\Ì]‘Í^’Î\’Î\’Î_’Ñ_’Ñ`”Ða•Ñb–Òc—Óc—Óc—Ód˜Ôe™ÕfšÖfšÖfšÔfšÔe™Óe™ÓfšÔg›Õg›Õg›Õg›Õg›Õ:c›:c›\Ì\Ì\Ê\Ê\Ê\Ê]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë\Ê\Ê\Ê\Ê\Ê\Ê\Ê\Ê[È[È[È[ÈZŽÇZŽÇZŽÇ[ŽÇ[ŽÇ[ŽÇ[ŽÇZÆYŒÅYŒÅYŒÅYŒÅ[ŽÇ[ŽÇ\È\È\È\È\È\È\Ê\Ê[È[È\É\Ê^Ë_‘Î`’Ï`’Ïa’Íc‘Íe“Îf•Íl™Ðu ÓªØ‹²Û–½ä¢Èí®ÒôµÖõ»Ú÷ÁßùÃß÷ÇàöËáöÍâõÐãôÑäóÕæö\Ì\Ì\Ì\Ì]‘Í\Ì\Ì\Ì\Ì\Ì\Ì\Ì\Ì\Ì\Ì[Ë[Ë[É[É[É[É[Ë[ËZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊZŽÊ[Ë[ŽÍZÌZÌZÌZÌ[ŽÍ[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë\Ì\Ì]‘Í]‘Í^’Î_“Ï`”Ð`”Ð_•Ñ_•Ña•Ñb–Òb–Òd˜Ôe™ÕfšÖhœØhœØg›×g›×g›Õg›Õg›ÕfšÔg›ÕhœÖhœÖg›Õg›Õg›Õ:c›:c›]‘Í]‘Í]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë^’Ì^’Ì^’Ì^’Ì^’Ì]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë\É\É\É\É\É\É\É\É\È\È\È\È[ŽÇZÆZÆ[ŽÇ\È\È]É]É]É]É]É^Ë\Ê\Ì\Ê]‘Ë]‘Ë_‘Ì_‘Ì`’Ía’Íc”Ïf”Ïh•Îk–Ío˜Ìy£Õ…®Ü˜»ã¢Äé«Îî´Õô»Úö¾ÜöÃßõÇâ÷ÈáõÌãõÑäõÓæõÕçõÖèöØèõ]‘Í]‘Í]‘Í^’Î^’Î^’Î^’Î^’Î^’Î]‘Í]‘Í]‘Í]‘Í]‘Í\Ì\Ì\Ì\Ê\Ê\Ê\Ê\Ì\Ì[Ë[Ë[Ë[Ë[Ë[Ë[Ë[Ë[ŽÍ[ŽÍ[ŽÍ[ŽÍ[ŽÍ[Ë\Ì\Ì\Ì\Ì\Ì\Ì\Ì\Ì]‘Í]‘Í^’Î^’Î_“Ï`”Ða•Ñb–Òa—Óa—Óc—Óc—Ód˜Ôe™ÕfšÖg›×iÙiÙhœØhœØhœÖhœÖhœÖg›Õg›ÕhœÖhœÖg›Õg›Õg›Õ:c›:c›^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì^’Ì]‘Ê]‘Ê]‘Ê]‘Ê]‘Ê]‘Ê]‘Ê]‘Ê]É^‘Ê^‘Ê^‘Ê]É\È\È]É]É]É^‘Ê_’Ë_’Ë_’Ë_’Ë`’Í]‘Ë]‘Í_‘Ì_‘Ì_’Ë_’Ë`“Ìb“Íd“Ëh•Ìm˜ÍsœÐ{£Ô…«Ø‘¸ã Ãé¨Æè²Ïí»ÙóÂÞöÆà÷ÉâöÍäöÑèøÒçøÕè÷ÖéøØêøÙëùÙëùÙë÷^’Ì^’Î^’Î^’Î_“Ï_“Ï_“Ï_“Ï_“Ï_“Ï_“Ï^’Î^’Î]‘Í]‘Í]‘Í]‘Í]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë\Ê\Ê\Ê\Ê\Ì\Ì[Ë\Ì\Ì\Ì\Ì\Ì\Ì\Ì]‘Í]‘Ë]‘Ë]‘Ë]‘Ë]‘Ë^’Ì^’Ì^’Ì^’Ì_“Í_“Í`”Îa•Ïb–Ðc—Ñb˜Ôb˜Ôc™Õc™ÕdšÖdšÖg›×hœØhœØhœØhœÖhœÖi×i×i×hœÖfÖgž×gž×fÖgž×gž×:c›:c›_“Í_“Í_“Í_“Í_“Í_“Í_“Í_“Í_“Í_“Í_“Í`”Î_“Í_“Í_“Í_“Í_“Í_“Í_“Í_“Í^’Ë^’Ë^’Ë^’Ë^’Ë^’Ë^’Ë]‘Ê^‘Ê^‘Ê_’Ë_’Ë^‘Ê^‘Ê^‘Ê^‘Ê]É^‘Ê_’Ë_’Ë_’Ë_’Ë`“Ì`“Ì^’Ì^’Ì`’Ía”Í`“Ìa’Êc•Êh—ËqŸÓv¢Óz¤Ôƒ©ÖŽ³Ý™¼â¢Äç¬Ëê¹ÔïÃÛóÊãùÐæûÒéûÓèùÔêøØëúÙìûÙìûÙëùÙëùÙëùÚìúÙìú_“Í_“Ï_“Ï`”Ð`”Ð_“Ï_“Ï_“Ï_“Ï_“Ï_“Ï_“Ï^’Î^’Î^’Î^’Î_“Ï_“Í_“Í^’Ì^’Ì^’Ì^’Ì^’Ì]‘Ë]‘Ë]‘Ë]‘Í]‘Í\Ì]‘Í]‘Í]‘Í]‘Í]‘Í]‘Í^’Î^’Ì^’Ì^’Ì^’Ì_“Í_“Í_“Í_“Í_“Í`”Îa•Ïa•Ïa•Ïb–Ðc—Ñd˜Òb˜Ôc™ÕdšÖe›×e›×fœØiÙjžÚhœØhœØi×i×jžØkŸÙkŸÙjžØhŸØhŸØhŸØhŸØhŸØhŸØ:c›:c›a•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ïa•Ï`”Î`”Í`”Í`”Í`”Í`”Í`”Í`”Í`”Í_“Ì_“Ì^’Ë^’Ë_“Ì_“Ì_“Ì_“Ì_“Ì_“Ì_“Ì_“Ì`”Í`”Í`”Í`”Í`”Í`”Ía”Ía”Íb•Îd—Îe—Ìf˜ËlœÍr Ñw£Ð€«Ö´Ý—½â¥Éé±ÓïºÚóÂÞöÉâøÒçü×éýØëüÙìûÙìúØëùÙëùÜîüÛíûÚíüÚíüÚíüÚíüÙïýa•Ïa•Ïa•Ïa•Ña•Ñ`”Ð`”Ð`”Ð`”Ð`”Ð`”Ð`”Ð_“Ï_“Ï_“Ï_“Ï_“Ï`”Î`”Î`”Î`”Î`”Í`”Í_“Ì_“Ì_“Í_“Í_“Í_“Í^’Ì^’Ì_“Í_“Í_“Í^’Ì^’Ì_“Í`’Í`’Í`’Ía“Î`”Î`”Îa•Ïa•Ï`”Îa•Ïb–Ðc—Ñc—Ñc—Ñd˜Òe™Óc™ÕdšÖfœØfœØgÙgÙhžÚiŸÛjžØkŸÙkŸÙkŸÙl Úm¡Ûm¡Ûn¢Ük¢Ûk¢Ûj¡Úi Ùi Ùi Ù:c›:c›b–Ðb–Ðb–Ðb–Ðb–Ðb–Ðb–Ðb–Ðb–Ðb–Ðb–Ðc—Ñb–Ðb–Ðb–Ðb–Ðb–Ðb–Ða•Ïa•Îb–Ïb–Ïb–Ïb–Ïb–Ïb–Ïa•Îa•Î_–Î_–Îa•Îa•Îb–Ïb–Ïb–Ïa•Îb—Íb–Ïc˜Îb–Ïb–Ïb–Ïb–Ïb–Ïd—Îe–Îg™Îi›ÎlœÌožÌy¤Ï«Ó‘¹ÝŸÅé¯Òò¶Øô½ÝöÂáöÉåúÎéüÓèûØëüÙìûÚëûÚíûÜîúÚîùÚìøÛíûÛíûÛîüÛîüÚíüÚíüØîüb–Ðb–Ðb–Ðb–Òb–Òa•Ñb–Òb–Òb–Òb–Òb–Òb–Òb–Ò`”Ð`”Ð`”Ð`”Ð`”Î`”Îa•Ïa•Ïa•Îa•Îa•Î`”Í`”Î`”Î`”Î`”Î`”Î`”Îa•Ï`”Î`”Î_“Í_“Í_“Ía“Îa“Îa“Îb”Ïa•Ïa•Ïb–Ðb–Ða•Ïb–Ðd˜Òd˜Òd˜Òd˜Òd˜Òe™ÓdšÖe›×gÙgÙgÙgÙhžÚj Üj¡Úm¡Ûm¡Ûm¡Ûm¡Ûn¢Üp¤Þq¥ßo¦ßn¥Þl£Ük¢Ûj¡Új¡Ú:c›:c›d–Ñd–Ñd˜Òd˜Òd˜Òd˜Òd˜Òd˜Òd˜Òd˜Òd˜Òd˜Òc™Õb˜Ôb˜Ôb˜Ôb˜Ôb˜Ôd˜Ôd˜Òd˜Òd˜Òd˜Ñc—Ðc—Ðc—Ð`—Ï`—Ï`˜Ñ`˜Ña˜Ñd˜Òe™Òf™Òe˜Ïd—Îd—Ìd™ÏešÎb™Ïa˜Îa˜Îb™ÑešÐe—ÌmÎs¡Òx¤Ñ|§Ñ‡¯ÓœÀâ®Ñí¹ÙòÀÞöÈäúËæûÌåùÍçøÒéûÔëûÖëüÖìú×íûÙìûØîûÛîüÙïúÛïúÛïúÛïúÛïúÜðûÜðûÝïûÛïúd–Ñd–Ñd–Ñd–Ñd–Ñd˜Ôd˜Ôd˜Ôc—Ód˜Ôc—Óc—Ób–Òb–Òb–Òc•Ðc•Ðc•Ðc•Ðc•Ðc•Ðc—Ñc—Ñb–Ða•Ï_–Ï_–Ï_–Ï`—Ð_–Ï_–Ï_–Ï^•Î`”Î`”Îa•Ïb–Ðb–Ïb–Ïb–Ïb–Ïb–Ðb–Ðc—Ñc—Ñc—Ñd˜Òc™Õc™Õc™ÕdšÖdšÖe›×e›ÙfœÚgÛgÛfžÙfžÙgŸÚh Ûh ÛiŸÛj¡Úk¢Ûk¢Ûm¤Ýn¥Þn¥Þn¥Þn¥Þn¥Þm¤Ým¤Ým¤Ý:c›:c›f˜Óf˜Óe™ÓfšÔe™Óe™Óe™Óe™Óe™Óe™Óe™Óe™Ód›Ôd›ÔcšÓc™Õc™Õc™Õe™Õe™Õe™Óe™Óe™Òd˜Ñd˜Ñd˜Ñd˜Ñb™Ñ_˜ÏašÑcšÒe™Òd˜Ñd—Ðf™Ðh›Òc–Íf›ÑhÑf›ÏešÎh›ÐkžÓmŸÒu£Ô~©Ö„¯ÙŽµÜÁå®Ñï¾Þ÷ËçýËæùÎèùÑèøÑæ÷Ñæ÷Óæ÷ÔéúÕêûÕëùÕëùÖìú×íúØîûÙïüÚðûÜðûÛïúÛïúÜðùÝñúßñûßñûÞðúf˜Óf˜Óf˜Óf˜Óe™ÓfšÖfšÖe™Õe™ÕfšÖe™Õe™Õd˜Ôc—Óc—Ód–Ñd–Ñd–Ñc•Ðc•Ðc•Ðc—Ñc—Ñb–Ðb–Ð`—Ð`—Ð`—Ð`—Ða˜Ña˜Ñ`—Ð`—Ðb–Ðc—Ñc—Ñd˜Òc—Ðc—Ðc—Ðc—Ðc—Ñd˜Òd˜Òd˜ÒfšÔfšÔe›×e›×fœØfœØgÙgÙgÛhžÜiŸÝiŸÝh Ûi¡Üj¢Ýj¢Ýj¢Ýj¢Ýk¢Ûl£Ül£Üm¤Ýn¥Þn¥Þp§ào¦ßo¦ßo¦ßo¦ßo¦ß:c›:c›g›Õg›Õg›Õg›Õg›Õg›Õg›Õg›ÕeœÕeœÕeœÕg›ÕhœÕg›Ôg›Ôg›ÕfšÔg›Õe›×e›×e›×e›×d›Ôd›ÔfšÓfšÓf›Ñf›Ñf›ÍdœÍgœÐhÑižÔfÕd›ÓcšÒj¡Ùjž×gœÒh›ÐmœÐsžÑx¡Õ|¤Õ‡®Ùš½å©Íñ¶×úÂáÿÌêÿÒìÿÓìÿÖíÿ×ìý×êûÖéøÖéøÙêúÙìûÙìûØëùØëùÙìúÚîùÛïúÜðûÝñúÞðúÝïùÞðúÞðúßñûàòüàòüßñûg›Õg›Õg›Õg›Õg›Õg›×e›×e›×e›×e›×e›×dšÖdšÖc™Õc™Õe™Ód˜Òd˜Òc—Ñc—Ñc—Ñd˜Òd˜Òd˜Òd˜Òa˜Ña˜Ña˜Ñb™Òb™Òa˜Ña˜Ña˜Ñc—Ñd˜Òd˜Òd˜Òe™Òe™Òe™Óe™ÓfšÔfšÔfšÔfšÔeœÕfÖfœØgÙgÙgÙhžÚiŸÛhžÜiŸÝj Ük¡Ýj¢Ýk£Þl¤ßl¤ßl¤ßl¤ßl¤Ýl¤Ým¤Ýn¥Þn¥Þn¥Þp§àp§ào¦ßp§àp§àp§à:c›:c›i×i×i×i×hœÖhœÖhœÖhœÖfÖfÖfÖhœÖiÖjÔjÖiœÕhœÖhœÖfÖfœØgž×gž×fÖfÖhœÕiÖiÖižÔhÏiŸÎižÐhÑgœÒeœÔhŸ×j¡ÙiÖiœÓlžÑt¢Ôx¢Ò~£ÐŠ¬Ù™¹â¥Æé¶ÕôÄáÿËæÿÎèÿÑéÿÔêÿÖëþØëüÙêúÙêúÙêúÛíûÝîþÝïýÜîüÛíûÛíùÛïúÝïûÝñüßñûßñûàòüßñûßñûßñûßñûßñûßñûÞðúi×i×i×i×gž×fœØfœØfœØfœØfœØfœØfœØe›×e›×e›×d›ÔfšÔe™Óe™Óe™Óe™Óe™ÓfšÔg›Õg›Õd›ÔcšÓcšÓd›ÔcšÓb™Òb™Òb™Òd˜Òe™Óe™Óe™ÓfšÓfšÓg›Õg›ÕhœÖg›Õg›Õg›ÕfÖfÖgÙhžÚhžÚhžÚiŸÛj ÜiŸÝj Þk¡Ýl¢Þk£Þl¤ßl¤ßm¥àn¦án¦án¦ßn¦ßo¦ßo¦ßo¦ßo¦ßo¦ßo¦ßp§àp§àp§àp§à:c›:c›i ÙhŸØhŸØhŸØhŸØhŸØhŸØhŸØhŸØhŸØhŸØjžØkŸØlŸØkž×kž×jž×jž×jž×jžØhŸ×hŸØhŸØhŸØhŸØhŸØhŸØkŸØižÔkžÓlŸÖm ×n¡Úm¡Úm¡Úm ×r¤×s£Óz¦ÓŒ³ÜŸÂè¯Ðñ¾ØùÅÞüÂÜõÇß÷ÊâúÎäûÑçüÔéü×êûÚëû×é÷ÙéøÛëúÜìûÝíúÞîýÞîûÝíúÞîûÞïùÝïùßðúßñûàñùáòúáòúàñùàñùßðøßðøßðøÞï÷Þï÷i Ùi Ùi Ùi Ùi ÙhžÚgŸÚgŸÚgŸÚgŸÚgŸÚgŸØfž×eÖeÖeÖeœÕeœÕeœÕeœÕeœÕg›ÕhœÖgž×gž×eœÕeœÕeœÕeœÕeœÕd›Ôd›Ôd›ÔeœÕeœÕhœÖg›ÕeœÕfÖfÖgž×gž×gž×gž×fÖhŸØhŸØiŸÛj Üj Üj Ük¡Ýl¢Þl¢Þm£ßm£ßn¤àm¥àm¥àn¦áo§âo§âo§âo§ào§àp¨áp¨áq¨áq¨áp¦âq§ãq§ãq§ãr¨är¨ä:c›:c›i Ùi Ùi Ùi Ùj¡Új¡Új¡Új¡Új¡Új¡Új¡Új¡Úl Úl Úl Ùl Ùl Ùl Ùl Ùl Ùi Öi Øi Øi Ùi Ùi Ùj Üj¡ÚkŸØm Ùo Úo Úo Øq Ör¡Õs¡Òy¦Ðºâ«ÑõºÝûÃâþÌèþÐéÿÑçüÎå÷ÎãöÍâóÐåöÖéøÕè÷ÕçõØè÷ØèõÚê÷ÛëøÜìùÝíúßïüÞðüßïüßðúßðúßðúßðúßðøßðøàñùàñùßðøßðøÞï÷ÝîöÞï÷Þï÷Þï÷i Ùi Ùi Ùi Ùi Ùh Ûh Ûh Ûh Ûh Ûh Ûh Ùh ÙgŸØgŸØfž×fž×gž×gž×gž×gž×hœÖi×gž×gž×fÖfÖfÖfÖfÖfÖfÖfÖgž×gž×jžØjžØgž×gž×hŸØhŸØhŸØhŸØhŸØhŸØj¡Új¡Úk¡Ýl¢Þl¢Þl¢Þm£ßn¤ào¥áo¥áp¦âp¦âo§âo§âp¨ãq©äq©äq©äq©âq©ârªãrªãsªãsªãr¨är¨är¨är¨äs©ås©å:c›:c›k¢Ûk¢Ûj¡Új¡Úk¢Ûk¢Ûk¢Ûk¢Ûk¢Ûk¢Ûk¢Ûk¢Ûl¢Þl¢Þl£Ün¢Ûn¢Ûn£Ùn£Ùn£Ùm¢Öm¢Øk¢Úk¢Ûj¢Ûk£Þk£àk£àm¡Ýr¢àt¢ÝrŸØsžÓ|¤ÕŽµàžÁç³ÖöÀâþËëÿÎêÿÎéúÑëøÓë÷ÑçôÓéöÓéöÑçôÔçõÔçõÓæôÔæòØêöØêöÙë÷ÚìöÛí÷ÜîøÞðúÞòûßñûßðøßðøßðøÞï÷ßðøßðøßðøßðøßðøÞï÷Þï÷Þï÷Þï÷ßðøßðøk¢Ûk¢Ûk¢Ûk¢Ûk¢Ûj¢Ûj¢Ûj¢Ûj¢Ûj¢Ûj¢Ûj¢Ûi¡Úi¡Úi¡Úh Ùh ÙhŸØhŸØhŸØhŸØi Ùi ÙhŸØhŸØgž×gž×gž×gž×gž×gž×hŸØhŸØhŸØhŸØi Ùi Ùi Ùi Ùi Ùi Ùi Ùj¡Új¡Új¡Úk¢Ûl£Üm¤Ým¤Ýl¤ßm¥àm¥àn¦áp¦âp¦âq§ãr¨äq©äq©ärªås«æs«äs«äs«ät¬åt¬åt¬åt¬åt¬ås«æs«æs«æs«æs«æs«æ:c›:c›m¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ým¤Ýl¤ßl¤ßm¤Ým¤Ým¤Üm¤Úm¤Úm¤Úm¤Úm¤Úm¤Úm¤Üm¤Ým¥Þm¥àn¤àr¥Þs¢Úv¡Ö©Ü”¹æªËô»ÙûÅàýÌæýÍèûÐêùÔëùÕíùÖì÷ÕëöÔêõÓéôÕëö×ëöØì÷ÙíøØì÷×éõØêöØêöÙë÷ÚìöÛí÷ÛïøÜðùÜðùÜîøßðøßðøÞï÷Þï÷Þï÷ßðøßðøßðøßðøÞï÷Þï÷ßðøßðøàñùàñùm¤Ým¤Ým¤Ým¤Ým¤Ýl¤Ýl¤Ýl¤Ýl¤Ýl¤Ýl¤Ýl¤Ýk£Ük£Ük£Üj¢Ûi¡Úi Ùi Ùi Ùi Ùj¡Új¡Úi Ùi Ùi ÙhŸØhŸØhŸØhŸØhŸØi Ùi Ùi Ùi Ùj¡Új¡Úk¢Ûj¡Új¡Új¡Új¡Úk¢Ûk¢Ûl£Üm¤Ým¤Ýn¥Þn¥Þm¥àn¦án¦áo§âq§ãr¨är¨äs©ås«æs«æt¬çu­èu­æu­æu­æu­æu­æu­æu­æu­æu­èu­èu­èu­èu­èu­è:c›:c›n¦ßn¦ßo¦ßo¦ßn¥Þo¦ßo¦ßo¦ßn¥Þo¦ßo¦ßo¦ßo§àn¦ßn¦ßm¥Þn¦ßn§Þn§Þn§Þn§Þp§Ýo¦Üo¦Üp§Ýq¦Üq¦Üt¨Úv¤Õ¬×•¼å«Îô¾ÜþÇâÿÎäüÑæùÔçöÖé÷×ëö×ëö×êøÖìùÖìúÖìúØì÷Øì÷Øì÷Øì÷ØëùØëùØëùØëùÙëùÚìúÚìøÛíùÛí÷ÜîøÜïöÞï÷ÝîøÝîøÞïùÞïùßðøßðøßðøßðøÞñøÜïöÜïöÞñøàòüßñûÝïùn¦ßn¦ßn¦ßn¦ßn¦ßo¦ßo¦ßo¦ßo¦ßn¦ßn¦ßn¦ßn¦ßm¤Ým¤Ým¤Ýl£Ül£Ül£Ül£Ül£Ük¢Ûk¢Ûk¢Ûk¢Ûj¡ÚhŸØhŸØhŸØi Ùj¡Úk¢Ûk¢Ûj¡Úk¢Ûk¢Ûl£Ül£Ül£Ül£Ül£Üm¤Ým¤Ým¤Ýn¥Þm¤Ýn¥Þo§ào§ào§ào§àp¨árªãsªãt«ät«äu¬åt¬åu­æu­æu­æv®çw¯èw¯èw¯èw¯èv®çv®çw¯èu­èv®év®év®év®év®é:c›:c›o§ào§àp§àp§ào¦ßp§ào¦ßo¦ßo¦ßp§àp§àp§àp§ßq¨àsªâq©ân©ám¨àm¨àn©án§Þr©ßrªÝt¨Ús§×u¨×y©×¬ÖºÝ¥Ìí¼ßýÇæÿËåüÍãøÒåôÖèö×èòØéóØêôÙë÷Ùë÷ØëùÙìûØëúÙìúÚìøÙíøÚìøÙìúÚìúØëùÙëùÙëùÛëúÚìøÜìùÛìöÜí÷ÜíõÝîöÝîøÝîøÞïùßðúßðøßðøßðøßðøßòùÞñøÞñøÝð÷Ûí÷ÜîøÞðúo§ào§àp¨áp¨áp¨áp§àp§àp§àp§ào§ào§ào§ào§àp§ào¦ßo¦ßn¥Þn¥Þn¥Þn¥Þn¥Þn¥Þn¥Þm¤Ým¤Ýk¢Ûj¡Úi Ùj¡Új¡Úk¢Ûl£Ül£Ül£Üm¤Ým¤Ýn¥Þn¥Þn¥Þn¥Þn¥Þn¥Þo¦ßo¦ßo¦ßp§àq¨áq©âq©âq©âq©ârªãs«äu¬åu¬åv­æv­æv®çw¯èw¯èw¯èw¯èx°éx°éx°éx°éx°éx°éx°éx°ëx°ëx°ëx°ëx°ëx°ë:c›:c›q¨àq¨àr©ár©ásªâr©ár©ár©ásªâsªâsªâu©ât©ßv©Þv«ásªârªãp«ão¬åq¬äs¬ãrªÝu©Ù{«Ù¬Öƒ­Õ–¾â®Òò¾àùÄäùËçüÌçøÏæöÔçõÖèôÖçñØéóÙêòÚëõÚê÷ÛëøÛëúÛëûÛëûÜìûÜìûÛíûÛëúÚìúÛëúÚìúÛëúÚêùÝêúÛëøÝëøÝëöÝëöÞìõÞìõÝîøÝîøÞïùßðúßðøßðøßðøßðøÞï÷ÝîöÞï÷Þï÷ÛìôÜíõßðøq¨àr©ár©ár©áq¨àr©âr©âr©âr©âr©âr©âq¨áq¨áq¨áq¨áp§ßp§ßp§ßp§ßr¦ßp§ßp§àn¦ßo¦ßn¥Þm¤Ýk¢Ûk¢Ûk¢Ûk¢Ûm¤Ýn¥Þo¦ßo¦ßo¦ßo§ào§àp§ßp§ßp§ßp§ßq¨àq¨àq¨àq¨àr©âsªãs«ät¬ås«äs«ät¬åt¬åw®æw®æw®æw®æw°çx±èy²éy²éy±êz²ëz²ëz²ëz²ëz²ëz²ë{³ìz²ëz²ëz²ëz²ëy±êy±ê:c›:c›t«ãt«ãt«ãu¬ät«ãsªâsªâsªâsªât«ãt«ãv«áx¬Þw«Ýwªßv«áu¬âu®åt­ät«áv«ßy¬Û}¬Ø†²ÙšÀä°ÓóÀßüÇåýÎéüÌæõÍäòÏåòÒåóÒäðÓåï×èòØêôÚëõÛìöÛìöÛëøÞìùÞëûÞëûÜìûÜìûÛëúÛëúÛëúÚêùÚêùÚêùÜéùÜê÷ÝëøÝëøÝëöÞêößìõàíöÝîøÞïùÞïùÞïùßðøßðøßðøßðøßðøÛìôÜíõßðøÝîößðøáòút«ãt«ãt«ãt«ãsªât«ät«ät«äu¬åt«ät«äsªãsªãr©âr©âq¨àq¨àq¨àq¨às§àq¨ào§ào§àp§àp§àn¥Þm¤Ým¤Ým¤Ýn¥Þo¦ßq¨áq¨áq¨áq¨áp¨áp¨áp§ßq¨àq¨àr©ár©ásªâsªâsªâsªãt«ät¬åu­æu­æu­æv®çw°çy°èy°èy°èy°èx±èy²éz³êz³ê{³ì{³ì{³ì|´í|´í|´í|´í|´í|´í|´í|´í|´í|´í|´í:c›:c›v­ãu¬âv­ãv­ãv­ãv­ãv­ãv­ãx­ãw¬âx­ãy®äz®àz®ày­ßy­ßy­ßy­ß{­Þ}­Ý‚±Ýˆ³Ý—¿ã®ÑñÂáýÊæþËæûÍçøÍäôÎäòÒåóÔçõÕçõÓåóÕçó×éõ×ëöÙëõÚìöÛìöÛìöÝëöÝëöÞêöÝëøÝëøÜê÷Üê÷Úê÷Úê÷ÙéöÙéöÙéöÙêôÚëõÜêõÝëöÝëößë÷àìøÞïùÞïùÞï÷Þï÷Þï÷Þï÷àïöáð÷âñøÝìóÞíôàïöàïöàïöâñøv­ãv­ãv­ãv­ãv­åv­æv­æv­æv­æu­æt¬åt­ät­äs¬ãs¬ãs¬ãr«âsªâsªâsªâsªâqªáqªáqªáqªáp§ßo¦Þo¦Þo¦Þo¦Þq¨àr©ásªâr«âqªár«âr«âr©ásªâsªât«ãt«ãu¬äu¬äu¬äv­åv­åv­åw®æx¯çy°èy²éz³ê|³ë|³é|³é|³é{´ë|µì|µì|µì{·í{·í{·í{·í{¶î|·ï~¶ï~¶ï~·î~·î~·î~·î¸ï¸ï:c›:c›v­ãv­ãv­ãv­ãx¯åw®äx¯åy°æz¯åy®äy®ä{°æy®àz¯á{¯áz¬Ý|¬Ü‚±ßŽ¹ä–Àè¡Çì³ÕøÁàýÆáüÉäùÎèùÐç÷ÎäòÔçõÔçõÓåóÒäòÔæôØêø×ëöÕéôÖêõ×ëöÙëõÙëõÚëõÜêõÝêóÝéõÛéôÛéöÛéôÛéöÙêôÙéöÙêô×éóØêôØêôÙëõÚëõÚëõÛìöÞì÷Þì÷Þïùßðúßðøßðøßðøâðùâñøâñøâñøâñøãòùäóúäóøãðøãò÷v­ãw®äw®äw®äx¯åw®çw®çw®çw®çv®çu­æu®åu®åu®åu®åu®åt­äu¬äu¬äu¬ät«ãs¬ãs¬ãs¬ãr«âr©áp§ßp§ßp§ßq¨àr©át«ãt«ãs¬ãs¬ãt­äu®åv­åv­åw®æw®æw®æw®æw®æw®æw®æw®æw®æx¯çy°èz±é{´ë|µì~µë~µë~µë~µë}¶í~·î~·î~·î}¹ï}¹ï}¹ï}¹ï}¸ð~¹ñ€¸ñ€¸ñ¸ï¸ï¸ï€¹ð€¹ð€¹ð:c›:c›{²è|³é|³é|³é|±çz¯åz¯å|±ç}²è{°æz¯åz¯åx±æ{³æ´æ„·æ»èÄï¬Ïõ¹×ùËæÿÌäÿÊãùÌâ÷ÏäõÎäòÏåòÓéöÑäòÕè÷Øéù×èøÕçõÕçõÔçõÓæôÖêõ×ëö×ëöØêöØèõÛéöÜèôÜèôÚèóÚèóØéñØéó×êñ×éó×êñÖêñ×ëòØìóØìóØìóÙíöÛí÷ÜîøÝïùàñùâðùäóúåôûåôûæõüåôùæóùçôúéöüçôúåòøêøûîùÿêøû{²èy°æx¯åx¯åx¯åy±êx°éx°éw¯èw¯èw¯èu±çu±çu±çu±çu±çt°æv¯æu®åu®åt­äu®åt­ät­ät­ät«ãr©ár©ár©ásªât«ãu¬äv­åu®åu®åv¯æw°çy°èy°èy°èz±éz±éz±éz±éy°èy°èy°èy°èz±é{²ê|³ë}´ì~µí¶ì¶ì€·í€·í€¹îºïºïºï€¼ò»ñ»ñ»ñ€¼ò€¼ò€»ó€»óºñºñ‚»ò‚»ò‚»ò‚»ò:c›:c›„¹í‡¼ðˆ½ñˆ½ñƒ¸ì´è´ê¶ì„·ìƒ¶ë‚´é€³ê~³é¶ê‹¾íšÇñªÑø¸ÚýÃàþËãýËß÷ÎàöÎáòÏâñÑäóÒåóÏåòÐæóÕè÷ÓæõÔåõÖç÷×é÷ÕçõÔçõÖêõÕéôÖêõ×ëö×éõÖèôØèõÚèõÚèõÚèñÚèñØéñØéñ×êñ×êñ×êñÖêñ×ëòØìóÙíôÙíôÛîõÝð÷Þñøßòøãòùåòúçôüéöþê÷ýê÷ýê÷ýì÷ýê÷ýì÷ýßìòÚåëæñ÷ðûÿñüÿ„¹í€µé|´ç{³æ{²è|³ë|³ë{²êz±êz±êz±êy²éy²éy²éw³év²èv²èw°çv¯æv¯æu®åv¯æv¯äw®æw®æv­åu¬äu¬äu¬äu¬äv­åw®çw®æw®æw®æx¯çy°èy°èz±éz±é{²è{²è{²è{²è{²ê{²ê{²ê{²ê|³ë}´ì~µë¶ì¶ì€·í¸î‚ºíƒ»î„¼í…½î…½ð„¾ð„½ò½ó½ó½ó‚¾ô‚¾ô‚½õ‚½õ…¾õ…¾ó„½ò„½ò…¾ó…¾ó:c›:c›‹¾íŽÀñ“Åö‹½îŠ¾î„¸è‡ºñ‰¼ñ‘Ãô“Áò“¾ó»ðŽ¼ðŽ¼íšÃï­Óø½ßûÄàøÅÞòÇÜíËÜîÌÝíÐãòÍàïÍãñÏåóÑèöÐæôÓæõÓæõÔçõÔçõÕçóÔæòÔæòÔæðÕçñÕçñÖèòÖèò×éó×éó×éõ×éõØéñØéñØéóÙêôÚëõÚëõÚëõÛìöÜí÷×èðßðøÚëòáó÷áóõäöøæõøäòõì÷ýì÷ýÄÏÕ§²¶ËÖÚãîòçðõÙäè«´»]hnBLU]gp}‡”ž¨‹¾í‡»ê„ºè…½î¹ì}µè´ê²é~±ê²ë~±ê}±ê~²ë{²êz³êx´êx´êy²éx±èx¯èx¯çy°æy±ä{°æx¯åx¯åw®æu®åu­æw¯èw¯èw¯êy°éy°è{¯è}°ç}²è{²èz³è{²è|´ç}µè}µè|¶è{´é{´ë{´ë|µì~µí¶ì‚·ë„¸ê†¹î‡»ô‡¼ò‰¾ðŒÂðŠÀ숾ê‹ÁïˆÀñ‡Áó…Áõ…ÁõƒÁô¿ò†Ãùƒ¾öƒ¿õ‚¾òŠÆø†Àò„¾îŠÂóŠÂó:c›:c›“Âì™Æð•Áî•Äð‘Âë‘Âë¿ïŽ¾î™ÈòÈó É÷žÆ÷›ÄòžÅð¨ËñµÖõÀÞöÄÝñÄÛëÅÛéÉÜëÈÛêÏâóËÞïÏäõÐåöÍâóÑçõÑäóÑäóÒåóÓæôÔæôÔæòÓåñÓåïÓåïÔæðÔæðÕçñÔèñÕéòÕéôÖèòÙêôÙêòÙêôÚëõÚëõÚëõÛìöÞì÷àî÷äòûäóúéøýè÷úèøøç÷÷ëùúòýÿÔß凕7@E#,1BKPgpuox}V_d*387@G09B-7@5?I+5?“ÂìÀé“Æñ–Ë÷’Æõ‹¿îˆ»ê…µæ„´å„³ç‚´ç³è²ç~³ç~³é|³éz³è{²èz±çz±éz±éz±çz±çy±äy±äy±äy±äx¯åw°åz³êy²éx°éx±èz±é}²è}²è~³ç{´é|µê}µè}µè|´ç|´ç·êºï~·ì~·î¸ï¸î‚ºí…ºîˆ¼îŠ¾ðÀ÷Äø‘ÅõÅñÅï“ÈòÅóÅôÅø‰Ãõ†Âô‰Å÷‡Ãõ…Áó‰Â÷ŠÃø†Âöƒ¿ó‡ÁóŠÄöŠÄôŠÄô:c›:c›•Àã›ÃçœÃêŸÇëžÉé ËëšÆéšÆë£Îî Ëí¥Íñ©Ð÷®Òö¯Ñô´Õô½ÜøÂáöÅàõÅßðÆàñÊàõÆÜñÌâ÷ÌáöÏáõÐáóÒãóÓäôÒåôÐåöÑäóÒåôÒåôÒåóÑäòÑåðÓåñÓåñÓåñÔæòÕçñÕçñÖèò×èòÙêôÚëõÜêóÜêóÝëôÞìõàî÷áïøãòùâï÷èõûèõûéöüíûþðþÿáîô¨³¹LV_$/5)4:3/6<07=?FL[dk^gn=FM4=D5@F¡ÅåœÀâš¾â¡Çë§ÎïªÓó¥Îî ËëŸÊêšÇè–Äè•Âé“Àé¾ê¼êŠºêˆ¸é…·è…·èƒ·ç‚·é|¸îz·íyµéz´æz²ã|²á}³á}³á~´ã}µä}µæ{µå{µçz¶è{·é{·é~¸ê}·é~¸ê€ºìƒºð„»ñ†»ñ„¹ï†»ï†»í‡¼ð†¾ïˆÀóˆÂò‹Å÷Çø•Éø—Ê÷–Éø—ÊùÍþ¢ÒÿžÑþšÍú˜ËøšÏû–Êù•ÉøšÍü•È÷’Åò“ÆõÄö‘ÉüÄúŒÅúÉþÉþ:c›:c›¬Ëè²Ïí¼×õÃÞûÊåúÇâõÉäùÅá÷¾Þó¾á÷¸Üô¶Úô¸×ó¹×ó¼×ò¿Ùò¿ÚïÁÚîÄÞïÉàòÈßñÍâõÈÝðÊÝîÐáñÑáîÐáëÓäîÏáïÎáðÎáðÍàïËáïËáïÍãñÐãòÑäòÑäòÒäòÓåóÕåòÖæó×èòÚèóÛéöÝëöÞìõßíöâï÷åòøæóùæô÷é÷úæñõëöüì÷ýáëô¨²¼>HT *6&0<*4>/9C;EO7@I1:C6=E7>F29?AHNOV\t{\ej4=D6?F¬Ëè¦Åä¨Çæ­Ëç±ÐìºÜø¶Ùõ²×òªÑî¤Íë¡Ìî ËîÉî™Äî–Áì’¾í»ìŒºëŠºê‡ºé…»ê¹ì¸í~¶é}µè|´ç|´å|´å|¶æ}·é}·é~¸ê¹é»ë„¼í‚ºé‚·é¹ì‚¹ïƒºðƒºð»í»íƒ»ì‡½ìˆ¾ì‰¾êŠ¾í‹¿î‹Áð‹ÃôÇù‘Éú—ÌöšËôÌú¡Íü¢Ìþ Ëø©Óý¤Ð÷£Ïô¡ÎõŸÌöœË÷œËùšÉ÷™ÈöšËöšËö˜Éô–Éö˜Ìû’È÷’È÷:c›:c›¼×òÅßú½ÕñÊßúÐåøÏâñÐãòÐåöÈâóÂßñ¸×ë·Öë»×ï½×ðÀØðÂÛñÆÜñÇÞðÊßòËàóËàñÈÛìÑäóÕçõÎàìÒãëÑàçÐßæËÝéÌÞìÌÞìËÞìËÞìÊàîËáïÌâðÐãñÐãñÑãñÒäòÔäñÖæóÙçòÚèóÜê÷ÝëöÞìõßíöãðøæóùæô÷äòõãîòíøþèóùÎØáu‰+5A )8(7$.:*4@7AK8BL4=F8AJ29A9@H:AG9@F@GMW^dU^c8AH4=D¼×ò£¼Û¨Áß·Ïç·ÐæÅáùÇåÿ¾àû²Õñ«ÒñªÓó¦Ñô£ÍóÇïšÄì»êŒ»éŠºê†ºé„ºé„¹ëƒ¸ì¶ê´è´è}µè~¶é}·é}·é€¸é„ºé„¸ç…¸ã‡¸á‹¸áŠ·à‰¸ä‰¹ç‰¼ë‰½í‰¾ð‡¿ðˆÀïŠÀ늿錿êŽÁîÁðŽÄóŽÆ÷‘Éø˜Í÷™ÍôÌö¤ÏúªÑü®Ñ÷«Îî Â݆¨Á¡Å߬ÏíªÎð¤Êï§Ïó¥Ìó£Ëï¤Êî£Ëî¡Éí™ÅêœËõœËõ:c›:c›³Í柹Òm‚Ÿu† ÜíÿìúÿãïýÜê÷ÏßïÃÖç¿ÖæÀÚëÃÙðÄÚñÅÚïÆÛðÊÜðÌßðÍàñÍàñËÞíÆ×çÇÙçßðúåöþçöûäóöÙèëÒàéÎßéÌÜéÊÜèËÝéÌßíÎáïÏâðÎáïÎáïÎáïÐâðÒâïÔäñÖæó×çôØéóÚëõÝëôßíöäñùæóûåòøâïõãîôßéò¯¹ÂFPZ$0!*9!0#2$.:2H:CL8AJ8?GF9@H;DK:CJ5>E³Íæ–µsˆ£ µÆŒ¡²°ÆÝ¿ÙòÀÞú²Óò®Òô¬Ô÷§Òõ¦Ðö¥ÌõžÈò˜Ãí“Àꎾ슽솼ꂺ醺셹냷é¶è¶è¶è‚·é‚·é…»êˆ»è‹ºäŽºß”½ÝŸÂà©Èä­Ìè ÂÞ›¿ß•½á¼ãŠ½èŠ¾íˆ¾í‡½ì‹¿îŒÁíŽÁìÂíÂïÄð‘Çõ‘Êõ‘ÌôšÔúžÒ÷¤Ðó¬Ñî©Éàq›Hah7KRƒš „š¥pŠ—j…–h„™u”©š¶Ì­ÇÞµÏæ®È㈦–·Ø–·Ø:c›:c›‚œµ]wDYtHZr´ÁÑðúÿõþÿñúÿìöÿäðþáòüØêöÓåóÒãóÏàðÍÞîÍÞîÏàðÏàðÎßï¿Ðà¼ÍÝ”¤±¸ÆÏëøÿîüÿñýýíøúîûÿæóûÛéòÒãëÏàêÎàêÍßëËßêÌàëÌßíÌßíÍàîÏáíÒâïÔäñÖæó×èòØéñÜêóßíöãñúçôüåòúáîöÊÔÞz„Ž#-7(4'6!0#4"+:(2>3=GBLV6@JA:9>:V^`]hnER[HT`,5F&7#4*:$0@&3C'4D*8E*6B9CL@IP;DK:CJ8AH9BI6?F7@GFQ8@M;EQ,5D".<@]B\5MoRh}¤¯­¼Á¥·»¤¸Ã‡ž®w‘¨°Îê¸×ôµØö±Ôð±Öñ³Ú÷²Ûù­Ùü¦ÓüœÍøœÍø”Äê™Æç£Êç«Ëâ¹ÒæÍáìÞëóÏÙÛÎÔÔÚßÛîóíôùóóõðæëåÚßÙÛÞ×óóëììäûþ÷õû÷âëêÊÖÖµÃÄÂÐÓÒàãÓâéãñúäôÿÅØé¿Õê½×ð¤¾×›°ÅzŒšjy~=IE9A4?C2>?-43!:8)*(((-.&>C?SYYSX\MUXFRR@OLDPNEPL>GD>GD:c›:c›@Z}:Us7Oi\o€ž­´³½¿²·»ÀÁÆãäæðòñëñíÛäᵿÁy„Šqz°·¿«´½‘š£ˆ‘˜•ž¥¦«›¤©¯¹»©³µ¸ÀÂÂÇÊÆËÎÉÎÑËÐÓ¾ÃÆ·¿Á½Åǵ¿Á¬¶¸ƒˆ“—¯¼ÂÑÞæ¿ÎÕ¹ÇÐÃÔÜÉÚäÐáëØéó×èð¸ÆÏO]f&/ ,8 *6)2ABKZ&/@!*; ,<(4D'4D,<#1>+7C5?HGPWHQXCLS;DKBKR=FM;DK6?H=EP>FQ4IJLIMNMVQCME>E>@G??E;?E;:c›:c›8Oq?TsHZpn~ž¡– ¢”˜¡•˜¡ÓØÜÚßããíî»ÆÊ|‰’~Š˜˜¢® ¨³š¡«¢¦¯®³¹º¾ÁÅËË¿ÅÅÇÐϹÂÁµ¿À§±²ª´¶´¾À¯·º¼ÄǼÄÇÁÉÌÁÉ˵½¿”œžŠ”–“Ÿµ¾Ã¯ºÀ®»Ã£±º¬ºÅÝëöÜêõ¥³¾?KW#/;$.:(2)1<48Oq8NsJaƒ?To_rƒ¥²¸²¼¾¬º½¯¾ÅqŽGXh…—«ºÐåÊàõÍæüÅÞô¾Öî¹Óì¿ÙòºÕò½Õí´ÇÖ´ÅÏÁÎÖÎÙßâêíÚÞßÏÑÐæèåññïòôñ÷ùöò÷óåéèåëéçíëíóïñúõõþùóü÷çíéÑ×ÓÙÞØåêæõ÷òíïêäæáÚÜÙò÷óÔÚØ–Ÿœˆ’‘fpoPUXNTT>2AB4CA4CA4:c›:c›@SqEWooš¢“œš£¢³·À™©¤«µ°»Á©¶¾¦Š˜¥®»ËÁÍÛ»ÃΙ ª—œ¢°³¸º¾ÁËÑÏßåã×àÝÀÉÈ„ŽhrtMX\AJQ+4;QX^u|‚–ž¡œ¤§¯·¹µ½¿¯´·½Åȳ»¾§°µ¸ÃɼÆϦÈÕÞ¬¸Ä9EQ#-91;G,4A,4?;DM:CL2;DGPY=EP/9C+5A&2@&2@#0@%1?+5?09B:CL/8?2;B;DK>4(( $!?=0GE6A?0?<->;*>;*:c›:c›j{q~Ž–¡§¨²±¥¬¤š œ¢¦¯“¡Œ– –¤¯vˆ”xŠ˜‚“ž©Œ•vˆ{‚Š‘˜ž¢¦´¹¼ÍÕ×ÍÕס«¬DNP&/4!*1%.7*3DHPS|…µº½ÁÅȽÂÅËÐÔÏÔØ¥¬²¹ÂɃ–MW`*4>$-<$+;(0=17C07A9@HCJR18@@GO3:B)2;(2<$0<)5C'4D-9I8BN5=H8@K3G6@I1>G$0<%3>#1>#3@j{Wi@Uj[pPbnfot•˜ouu_ecEKI1:7(10.8:+6:(5;:EKBMQMWXˆ‘mso‰‹‡‰¹¿»ÏÖÏÖÛÕÑÔÍÊÍÆÉÌÅÏÒËÆÉÂÌÑÊÐÓÌžž¡š¹¼³ÕÖÎÃļÙÜÕæéâëìæoogllbppdnndvz|q}€wilcFLB0?D08=)24&,-''-+75&75&89)56(24'(* &'BC3EF6?@0:;+:;+:c›:c›er{w€‡gpo~…~rxn«°©› ¤kr|nxhu}ar|q‚Œr€‰r‡_irU^ecjr~…‹…Œ’• ¦°²oy{(-#,1"+2$-6'09-5@.7@-6?6?F18>/7:6;?SX[¡¤¹¾ÂÆËÏÊÏÓ²¹¿py€=FM,6?,6@-5B,3C.4B4:F9@HAEN>CIEJPCJP9@H5>E.6A".:(4D!.>%1A!+7)1OW,9?!)+#'&$)%-2,*/(+0)(-'/51064,52(.,'-)-2+47.68+EI;FI>PVLgmcz}tgjahkbqtk{~u_bYKNCUVN13(24):<1wynacXz{s~~v‡‡}:8,JH;=;.CC7<>1AC8&)28,39-59+%'57*=@/7:%EI2>?-56(53&20#;8)85$54"23#&',.!*,!# ,-AB2=;,56&>?/>?/:c›:c›"(&5:6-2+.4*-3)9>7495:@>?ECHQPBJLCMOFOTJSXKTYIPVIPVNU[ahnV]e307=19<7?B;CF2:=>CGdkq´»ÃÖÝå„”-6?1:C5@F20FD7:8,77-02'68-#-3%>E537&:=,97*><-96'>;,96'20!'(.0"59+*.:;-KI<84(53&53&53&:c›:c›-0'/2)#&%(&,"-3)/5+$)"+0),1+).(*/+*0.1775;;49<38;/4738;).2&.1#*0(03&-3+36+49(24+36)1427;/791693;=7,5<)29:CH<@I8=C9>DX[b]`ghms\ag:AI'09!+7)7"/?#1>)3?-6?7@G;DK:CH5C;BH>GN*3<#+8$-:/63*++!23+7:/7;-"&(+=@/:;-<:.11'..&*,!,0"9=.:>-1<8," 0.!0.!:c›:c›02'-/$$&!#&)/2)03*),%'*#%'"%'"*,'*-&/2)01)+,&-.(./)/0*-.)(*%.0-02--/,24/-2.+0*/40.21156/531544:8:>=5;98<=@FF>CF7<@:?C,475=@2:=:BE3:B48A6:C:?E,3=29A4;A;CF9>B7?BEJPKRZ29C'-9#+8"/- /02''( *+#,-%,-%*+#$%01),-%)*"78034,35*')')46+-/"-/"24'57*68*01#12$.0"<>09;-46(77+=>020#40$C?3;7+86*.."/1&03(.2$*.03"=@/89+>>222(++#&&,.!57)>?/AB2<:+;9,31$,/-0-34$67'./!31$:8+:8,--!//% )*"  89+FD5-.9:*9:*:c›:c›-/$46+,.#,.#"),!(+"),#%( %(!-0).0%-/$//#++!** 00&00&11'./'01)./'01)01),-%.1(.1*02-/1.+0*,.),1+13.,1+,.+6:9154045:>?288378066156+03/27*/2/36AEF:>?:>?LPQ9=>047&+/%-0#*0(/5(18'07*19.3938<27:38;48;177<@C?DH05;(,5$(3$.$.'2-/$,-%)*"-.&/0(12*"#./'01)-.&46+13(/1&"$&(57*24'.0#68+/1#/1#23%34&24&>@29;-46(89+=>.96'30!B>2;7+31%<:.66,%')+69(8;*89+22&** ''(%., 97(;:(42#:8)75(/0"),7:)79+=?1=>045'<<055)55)''%%..$ +"":;+<=-<=+CD2CD2:c›:c›/1&68--/$57,&(*,!/1&$%'( '("./),-%"#%'+,$&',-%,,$//',,$++#'("/0*/0*'("$%!"+,&*+%),%,-'.1(./'+.''(")+&&(%/1.$)%#%" %!352%*$-/*,1+02--/*8:5EGBBD?6;5,1-).*+1-(.*,20,20,22 &&&*),0/-2.$)%-/,',&)+(*.-)-.)-.(,/).1(-1$,//1&01)01)671+,$23+#%.0%35*24).0%02'+- /1$,.!13&+- ,. 68*35'79+99-66*79+=?18;*47&:;+EF496%1.C@1:7(/- 64'33',, 01#45'?B1:=,35'"$+(40'A=1TN>TO0DD877+11%''-/$%'68-*,!"$  $&9<+;<,AB0@?-@?-:c›:c›)+ *,!-/$35*,.#,.#35*)+ %&"#-.()*"()! !$%$%--%(( (( !*+%./)#$+,$*+#()!)*"*,!$&#% #$'(" #!#$&!%'"&(#,/((+"*-$'*!&) !$*-&$''*#%*#(-&-2+/4-+0)(+$,1++-(%*$)+&+.'03,#&/2)03**-&')$)+&)+()+(.0/(,+#'&)+ 12*89145/./'12*.0%68-35*-/$"$.0#/1$13&,.!46).0#;=/68*35'68+77+44(57*;=/9<+58'=>,MN<76$85$FC42/ 1/"1/"++53'[YL:8+BC3>A046(')" (![SF€wf~vc\UBE@-;8)20!#!;9,ZXK?=1.."00&""%&&'45- +,?@0DC1A@.A@.:c›:c›$&&(24)24)/1&24)46+CE:891 !$%01).1(%(!$,/&#&&' !"#)*"$% !)*"'( !")*"()!'))+ -/"&()+ +,$#$%& $%$%"'*#*-&-0'/0(&'#$'("$' ,.)!#&(#,.)02--/*),%*+%&)""#),%*+%'( /0(!#&(-/$*,!%&'( '("%& )*$+.'*-&$&-0'14+'*#./',-%11'44*00&)+ !#,.#35*68+/1$.2$+/!;?104&.2$8<.02'35*02'57*68*36%?@.LM;A?031"?=0.,+)31%41(><0UQE2.";<,8;*:<./1#77+2.#NF9riZ€ucodPPH3PJ4FC076"A<(_ZFzwdnkZEC445'11'!!"/2+ 74+B@4D@4IC5IC5:c›:c›-/$/1&35*46+57,8:/:<1]_TVWO*+#01)67/9:4,/&./'$'-.&#$!!*+# #$-,'  ! *+%+,$+-"/1&35((**,!,-%*+#*+%"#$%(+$*-&#&.1(./'01+%& 561572,.)!# "!#.0+<>9461$%-.(#$&'&'12*&( "*,!,.#"$&')*"$%'("12*01)-/$.1(-0'*-&14+))!))))11'57,24)24)79.79,13&)-+/!7;-+/!&*69.()!34,*+#+- 13%47&IJ:QRBGE6A?2CA442&&$'$-*!a]R^XLE?1EC456&>@2-/!fdWpl`xh|q_‹|g‹gŽ„kf`H@>'HF1GB,KE/\WCgbODA0B@1IG;99/..& !%&   +C?3F@2KD4MD3MD3:c›:c›')02'8:-46)66*EE9:<1=?4DF;;=201):;3STNIHD12,-,')*$/.))(#%"/.)DA<10+40-*)$*)%+*&,-'+.'%(/2)*-"+.#+.#*-$'*!$' (+$&(#,.)(*%"-0),-'/.)$%34/KMH<>;!+-*685,.+ )*% *+%!"23-'( )*"+,&%& $% "#&'" )*$&'!')$%*+#:=403***"..&))!66.BB8AA79;057,46+-/$/2'14)25*-0%#&/2))*$/0*-.&(*,, 78*FG9YZLIJ<==1<<0..$%"&#>;2lh]jbWQI9%83 ?<+KH9FC41/"*(40%51&  '!3,ME0g\Hi^H^R:^R::c›:c›&(44(:0GG;KK?02'02'CE:35*56.JJBDC>11)44,55---%41*52+85.74-0-&?<774/DA<;:6&%!,-'(+$%(/2)/2'03('*!),#'*#*-&)+&#% %'"%'"),%+,&0/*$%,-(@B=>@=+-*796$&!#$,-'"!$% ()$12,*+%"#%& /0*#$)*%$$"''%!"()#&(+-"')++#22(55-88.>>4BB688.46)57,24'46+.1&02'*-" +#$12,*+% +44*CD689+LM?WXJDD8BB6==300&,) VSJd`UwjŠƒsicS<;)67%23#>;,c\L}r`Š{d—‡m¢”w§žgbDKJ.BB*86!@>)30  +/,NK:XRBRL<5/*#<5#D;*?7$NF1OD0e[BthN“ˆj¤–y³¦†¬|¬|:c›:c›--!<:-BC5IG:XVGTRENL?.."$$11%55)33'=?2HJ=01#)*56(()LM?stfHI;.."GG;nnb44*11'=?4,-%),%%(!-.&02')+ %& &'!%& '(#&'"+-((*%"+.'/0(22*--%?@8=>8$% + "#./*%& ./'!!""#$)*$()#/0(,-%%&()#./)()$%&! !./* ()!--!##""--!++::0IG;C@7., 42&EC6:8,<=/88,23%77+/1$77++- $$.-(  /-!EC6MK8(VM=+97(86'%"‡„sup]XQ?„|gf^IVL3gY?Ž€c¤•v«œ{®ž}“ƒajƸ‘Ê»”³Œ°žv°žv:c›:c›1/ 74%C@/KH7WTCa^O<9*$"./!45'23%.0"@C2-.$%>?/-.IJ:ijZ'(01#<=/^^R*,')13( *,!55+>@5KKA66,''))!('""!()#+,&%&,-%..$((22*>>6@@8 ! ()#!"+,&&')*"**"44,..&()!')24)13(./'780<=7/0*+,&01+/0*&'(*1/ 1/ 20!=;.42%:6*OK?D@4)%30!GD5EB3VTENL=XVG;9*<:+97*,*$"1.'&#=9-SPAb_P^[LWUHLJ>EE;88.77--)c_SkcVQF4A6"c[F^YEMK6LI6.'90G;%dV<„vY”†iriLZU8=;$LK7PO=ML:96%41¾¹¦uoYh]G‹g€rW‰z]®ž}½«‡Ã¯ŠÇ´ŒÏ¹’¥fŒaÀ¯„˺½ª€ª—mª—m:c›:c›E@-C>+NI6RM:SN;\WDLG4! /-20!20##$,-,-%&;<.45'CD6CD6'(23%==1WWM&( !##**,*55)NL@EC7+)*('$!''66.00(""00&GD; $!85.JG@@=8!:9587354/'&!.-(983HH@EE;$$&&11%11%00$02%9;0?A6;<4,-%HIA?A6-/$13&E@-IC3HE4VSBKH7?9)HB2=7':4$ID1QL9E@-@=*JG4YVC=:'63 63".+74%63$3/$.*3-^XHjeRrmZb\LZWHGE8GE9EC7><0  NH8<5#=2j^H •ˆqXQ>d]JA8':/}p]•‰q•Šn •yrkONJ163 0/HF1kiRD@'ysYš“yˆb•‡j—ˆi™‰h—„cŸ‹h»¥€Ð¸’À©€ÁªÄ­„¶ w¯œt®›s¢g’W’W:c›:c›qjWphSsmWskVsmWngTe^KJE2UP=RO>B?.DB397(EC4PN?EC4NL=DB3A?042#-+42#A?2NL@((%% %!1/ =:+41"YVGxuf71%-)>:/84)OK@ZVKGC8 42&64($!&#=:1XUL]XROLE=82HE>;81)&00(66.OOGaaY~~t†„xOM@12$89+78*+++- (*)+ 01);=2FH==?4-/"&(qjWpiVpiVxeyr_leRmfSf^Kb[H\T?c]GgaKWQ;UO9hbLQK5NH2G@-UN;\UCe_OTN@?9)C<*ohUzr_{tac\J]WGOL=A?2CA50, SL:ZR=G;#_S9“‡m—tldO‚zgcWGWL:l_L’†p‘w¤šœ”}faM/+:7(GA)}vZ’‹o¿¶™´¦‰¯ µ¥„¦”p«—tÀª…ª’l»¤{Ä­„º£y­–l¬•k©“j©“j°šs¯™r e e:c›:c›}u`t^yqZt^w`zr]~vawp]xq^up]sn[lgTniVun[un[leRtmZmfSe^K\UBSL9ZSAYSCSM?F@2LF:MI=PL@IF7GA3LI8YSCa[KmgWwqark[e_OjdVztfŽˆ|ƒ}qŒ†z€zlnk\heVC@152#NK1USFii]tth}q_[P75)=;/DB697+??3++!)*"*+%34,89157,#%')}u`|t_|t_„|g…}h~va€xct^~v_{qXƒ|b‡€ftmSohNunTldMe]FphSphSskX†~k‚yhaYFJB-}u^ŠiyqZiaLYR@XRBKH9A=13/#$" mePkaHmaG‹€d •y“xˆ}g‚weocSbUDeXE‹iŒ‚iœ”}xeicS^ZQPJ>aV@ ’uÁ³–Ê»œÅµ”¹§ƒ±zŸŒdžˆa»¤{¼¥{¶Ÿs®—kį‚µ s¬—jÀ«~͸‹Ò½’ȳˆ°s°s:c›:c›xmYwlXodN{s\woZtlWxp[umZyr_vo\slZwp^wp]umXtlYvn[xp]vn[wp]ogTslYxq^rkXrkYqjXohXxqawqarl\qlYup]up]xq_zsaxq_wp^}vf{td~wg†o†vŒ…u‡€n„l|ipjZRL<]WGc]MqjZsm]uo_wqa‰{YUI%!-+CA4GH:][N›—‹†‚vSQD53&86)FD8b`T^^T--#23+89134,01) !,-%xmY{p\~s_}r^wb}u`{s\skTwpVzpW|rYw^ƒy^“‡mqeKznVŒ€hr[}nW~iŠ{fu_thRthRˆ|f‚v\uZndIaW>TI5PH5LC2SJ9YP?ldQž–©Ÿ†®¢ˆŸ•z†m‚zctm[haQXO@YP?XM9`XC~vajcPYSETPEURKUQFynZŸ“y³¥Š®Ÿ€®›zµ¡|µŸxº¤{¿¨~Å®‚¾§{¹¤w²pÆ´†ÓÁ“ÑÀ’ʸŠÉ·‰Å³…¿¬°r°r:c›:c›kcPc[H`XEhaN\UBhaNleRb[Ie\KlcRe\KibPjcPg`Mf_MjcSngWmfVhbRe^Nc^KohUmfSf_MohVjcSleUrk[kfSpkWqlXmhTpkXvq^kdRngUibPkdRtkZpgVphUxp]{s^ys]xq^{tbtm[{tb}vdvn[qjWkdQibPzre[TJ + 1-"=;.SQBnk\a^OgdUMJ;85&JF:b^Rki\IG:++//%12*,-'"$.0+kcPk`NpeSwlZqfTpiVqkUsmWrlTqiRskTvkUxlT‰zc†v_Ž~e‘g’~f„pX†pXmTtcIo_FxgS~oX~pU…xXrO‹}Z~`“‚fµ¤Šµ¥Ž¬ŸŒ³¨”š”~Š„n„|islY_\ITUENPEIK@OMANK:e`J~ycb]JSOCTQJIFAOLGROFVPBzs`€xcu[›ŒkϽ—ÚÇιŒÅ®‚Áª~ȳ†Ñ¾“Ͼ“ÔŚɺ‘¶§~±¢w´¥z¬›p®›p«˜m«˜m:c›:c›^VC[S@XQ>ZSAZUB^YF`YI^WG\UEcZK_XHg`P^WEVQ>ZTD^XJ_[O]YNWSGXTHKH9VSBc]MVP@ZTDPJOI9ZSCd]Kd]Kd]Jc\InhRkdQf_Le^LjcQofW{tbqiVlfPuoY|uczreibX  .*!64'on\xudrmZifSPK8=7'LF6WQA]WGSP?0-53&75)66,-,'./)^VCg\JujXl_NpeSskVrlVtlUnfOmbLh^Ej^Fm_EvfM~mS€lQ‘}b“~a™e“|]ˆqR‹vW|^‘€f“ƒi ’u¯¢€¹«ˆº¬‰·§†²¡…©—€q\qdT€whsm]daPVSDTRENNBLNAKMBKMBKI:olY…ƒlZXCNL?UUMMLHIHDOOGLLBRPDcaT˜“€umV–ˆmÀ°¾¬†¶£y»¥|턼©ų‹¿°‡½®‡¨šs¦˜qµ¦}º«€¼«ƳˆÓÁ“ÓÁ“:c›:c›YQ:[S<]WAf_LgbO]WGUOA[UGTNBZRGXQG[UIRO@JG8OK?OK@PMDROFKH?PMDJH?=1EC7EB9KG>WSJ^ZNZVJTPDNJ>UQE[WLVRGLE;JF:WQEWQEVPD[UGZTFhbRZTDWQAZTFWQCZREc]Mb[KZUAe`LmhUlfXOK@!)'12"DC1kfR{taxs_c\IOH5TM:VP:YS=WQ;F?,>9%JE25/C=12."YQ:bX?^T;g]Dk_GocKk_GgY?bT:[M2SE*ZK.j[<{kJ†vTžŒh®œx£j¨”o¢gµŸx¹¡¼¥ƒ´ {¬œx¸©Š¥—|“‡myoVk`JphU‡}q‚yrle__ZTRNEII?ILCHKBNMHIF=QK=MG1qjN‘Œod_KQO@RRJPQLNOGMODHJ?OQFSSKNNDtpdˆvwjW“„m®Ÿ‚µ¤†¥’qª—v¦“r¤”p¤”p¸©‚Á²‹Ñ™ÙÈœÞÌžØÆ–ÚÅ–áÍ›áÍ›:c›:c›xmOujLe\?\R7YR8YQ:QI4SK8QI6JA0F=,KD4FA.D>.GA3EA5GC8HD9C?4A=297+84):8,<8-;9-A=4@;5IEKLFELEKPJGFARKAL@*seHœ’oxoRPJ:QNESRNOPKJMDILAHK@KLDPQKMNFROF^XLi_S‡{kr_‰zc€pWyjMˆy\‘`«›yÏ¿›ÔŞμ”Ê·ŒÓÁ“лŒÍ¹‡Å¯~ů~:c›:c›Ä²ŠÆ´ŒÁ²‰´¥~ª›t«œu‘ƒ^qN‡zXtgG]P0[P2UI1QF0I>*H@-I@/F=,G>/C:+92"6-/(5+2*9/%:0'>4*HA.VP:MG1F@*^WD\UBMF4F?-PI7^WD]XD\UBSN:YT>a\F[V@JC0E<+J>.K?/\Q?OD0ZO9SH2bWAZO;E:(3'-%80?7 SL2ndIl`FthN€tZ…w\†x]¤–yÁ³–Á²•±¢…›Œo¿¯•f±¡‡©›Ä²ŠÏ½•ÖÄœØÆ ÝÊ¢â͢лŽÅ°…ÙÄ™ãЦÖÛ͹”ÓÁ›Åµ‘ºªˆÍ½œÂ±“¯ž€¢‘u§–z‹z`kYC[K4YJ3]R+cVCqeUzqb†|p|vjfbWRRHGI>GH@GHBJKFGGEJIENMHGG?ED@JKFKNGFH;GB.sjM¥™s‘…_WM4OH8KF@ONJPQKILEKLGJLGEHAFKDFIBMPIMNHONILIBwsjž—{oxo`|q_“‡q³¥Š²¢¦”p®›s¬–m¡‹d¦g¼¥{À©¹¢v¹¢v:c›:c›ÖºŠÅ©wƪxÀ¤rÅ©w¼ p¦v¿£t¾£v½¢w»£w·žu«”k¨j ˆb ˆdŸ‡c™_•~\xV‡pP‘zZ–b•€c‹vY†qV‡qY‘{c—e’z`“{a’z`‹s[„lT}gP†p[†p[„oZ„oZxcŠubŠub„r^~lX„t]”„m¢z¥“}¤’z­›ƒ«—~¨”{¥‘v Œq©•z¯›€´ …­™~³¢„©–x§“x£t¨”y®›}°}°}±ž~±ž}¨•t¤p£p¥qž‹k›†gŽ{[ÖºŠÐµ†Ò·ˆåÍŸÏ·‰ÃªÀ©€¸¡x³v¸¤²Ÿ~¨—y‘‚el^Dg[EUH5M@/SG7sgYŠ€t…x€zlfdXTQLHGCGH@HK@ILANOGGHBJIDMLGKJEHGCKJFNNNMLHOK@E?)oiE£œrŸ—s[T8QK=NKDRQLIJEMLHLMHIHDHIDEGBHJEDFAMPIKLFMNFOOGFF>olc¡Ÿ“yseyr`‡|h­Ÿ…п¡Çµ‘³v¦g±›r¯™p·¢wº¥z¾©|¾©|:c›:c›íÒ£äÈ™æʚعŠÚ»ŒË¬}À¡r¹šlÀ¡s¿¢v·šn¿¤w§z§z½¢uµšm·œqÀ¥z¿¦}¹ w©€Ãª‚¶žx§kŒtPŠrPfGŽuW£ˆkœdŒqTŠoT’x]‡mTsYBŒq\Œs]Œs_‚lW|fQs\Js\JxcPt_L€nV‘g”€g—ƒj˜„k•h™„i—‚g–d•€cˆk¢p©”w¨“t§’sª•v©‘u¨t©‘u¯˜y¯›z±|ª–u­™x´Ÿ€«–w¯š{´Ÿ‚´Ÿ‚­˜y¨“tíÒ£Ó¸‹×¿“Ò»‘«‚³œz®™z›†g”c€oSp`GUF/9-B7%]TCg^O‚zmŒ„y…|sng]UQFKK?GI>IIGGIHHJEHKBILCEF>LMEIIAGG?HGBLKGNMKLKGLH=K@,vkK¡šnœ—ma]@LK7JJ@LMHIJENOJNMKLKIMLGKJEHHFHJGFHCCF?LMENOGMNFNOG>>4vvj¥£–vsbzr_~rZ ‘tŲ’Ö¿Æ®ˆ½§€½§~¶¡v¼§z˶‰Ë¶‰:c›:c›Á«†Ê²ŒÙÀ˜Û™æÊ¢àŚħ}´—m½ vË°…Ò·ŒÇ¬Ê¯€Ë°Ê¯€À¥vèyÀ¥v¸n¶›nè{È­‚ŬƒÂ©²™q¥‹f·xʲŽ»¤‚©’p€iIoX8ŽyZš…hŒy[…qV~jQbN6]K5YG1XG3VE1XG5]L8ucKŠy_“dy^‘}bƒoT‰tY€kP~iNlO†nRjK…nOŠsT‡pQŠrVtV“z\•|^šbšƒcyYŽwX˜b‘|_‚mR‡rW‡rWˆtYŽ{]•‚dÁ«†½©†É¶•¬œ{£’v™‰ryjWTE2>1 8+>2"WN?um`ˆ€uŽ‡}ˆwnjaUQHIF=IF=HH>LNCKLDIJEHHFHIDIJDJKEJKEIK@GI>IJBLKFNMILKFKL>GC*„uT£”m¤›tc^>FH3HK@GJALOHLMGNOJMLJMLJNMHJIDGFDIIGFGBFGAJKCMNFMODQSHLNC@@4}~p¨¦—zsat`xiR“‚h¼§ŠÜÅ¥Õ½™¾§~À©ѺŽÜÅ™ÜÅ™:c›:c›œp¤‘s±ž~»§†Àª…Æ®ˆÈ°ŠÇ®†Æ­…̳ŠÙ˜й͵‡Ö¾ŽÖ¾ŽÐ¸ˆÒºŠÌ²º£qŪ{¿§wÅ­ëĬ€À§~µœsµœs¾§~¾¨¹£|œ‰a|Wš†c¦’qŽ{Zq^>iV8iU:hW=ZI/UE,TD+[K4hX?raE|iK•‚d”b”b•€c…pSuY‹sW‚jN‡pPŠqR†mN†mNŒsUŒsUrU‹pR‘xY’yZ’zXœƒdŸˆh›„elOmX=mW?lV>lX=s_DƒpRœp›‹q‚hg[ERG39-6, G=1`XMumb†u‰…z~zqnkdXUNED?GFAJIDFGAGFAKLFEH?GJAIJEJJHJIGIHFHGCHGBDE=LNCKLDMMCKI=PMGMCKNGKNGLMGNOJNMILMHMMEJJBGFBJIEHIDEF@HICLMELMEOQFOQFGI>==1…ƒv¨¢”}tcra€o[Žyd°›€Ó¼œÜĠɱ‹Ë²‰Î¶ŠÎ¶Š:c›:c›NF3sgQ‹g—‰n›Œm¡‘pª˜t·£~¯‡Â¯…˸ŽÐ½“Ó½”ÚÙ×À”ÝÆšÞÈ™ÞÆ–Ø‘ØÀθ‡ÙÔվ’Ç°„ƯƒÃ¬€¹¢v¸¡uÁª~Ä­¬—jˆ]™„Y¡‹b cŸŒdžŠeš†cš‡f‘~]nNvcEyhJ‚oQkJ’~]•^ ‰gšƒc…nNybC‚iK ‡h ‡h ˆdœ‚_š€]˜~]œc˜}_’uW”wW›`—}\”zW…c˜aŒuV|gJlW?9DE@HHFHHFGGGGIHHHHEGDDICEJCIKFKJHKGHJFGHGEGHCLOHORIIJBHI9MI0[S/›Ža¢”e¨›qlaAJC1KI=HJ?JMBKLDNMHONJONJMNFKNCLMGJKEIHCJIDJKFEFAGHCKLFKLDMNFPQIOPHOOEEB9‹‡|©¡–rfZn^Qq_QlY¤tŬßÇ¥ÚÀ›È¬…Ȭ…:c›:c›=7+-&.%6+K@*i[A€rW•†i o¤”r±¡¯ŽÀ¬‰¼¨…µ¡|θØØԿ’Ó¾‘ưȱ…η‹Ù˜ÛÄšÝÆœ×À”ɲ†Ì¶‡Ó½ŽÕ¿Î¸‰Æ¯ƒÅ®‚½¦zÉ´‰Ò½’Ó½”Ò¼•Ï¼”dzŽº¦ƒ³Ÿ|°žz§“p‡b§k¦i’zTiEya?zaBˆmO—}\«‘n­”l§‹dZœ€[ž_—zZ ƒa§Šh¥‹f¤Še¨Ži¢ˆc“{WŒuUŽwX|dJnX@r\DydI}hK{fG=7+[WLjg^|sŠ‡~ŒŠ~see[MMCDD:CDLM?NI3^V2¢•h£‘_©™hob@NF/OK@HH@KMBJLAOOGNMHQMJONIMODKNCKNEILEHIAHIAJKFFFDGHCKLGLMGMNFOPHPQIOOGFF>B?8—“Š§ž•dZPhZQn^Oˆt\ ‹n»¤…׿ÝÞÝÞ:c›:c›„€uwshc]QG?491$$ +;.PA.fWB{jVŽ~g”‚jˆw]„qS¢nųŲŠÀ­ƒÁ«‚¶ w¬ƒ×Á˜Ô¾•Í·ŽÔ¿”ÙÄ™ãΡוϺ͸‹Ë¶‹É´‰ÊµŠÒ½’É´‰ÏºÕ¿–ϼ’ͺ’ϼ”̹‘ı‰Á®†³›u•|T°™o´›r°—o¥‹fƒ`•{X—}X²–o¿¤yºŸrŸ„W€VŸ[•wS–xR¡ƒ]œ€X®’jª~¿¦}¹ x³›w±˜y¡ˆj•}a¤Œp§qž‡gŸˆf„€u„Œƒ€}taaWJJB=>6?@8IJBHIADG@HKDHKDFIBEHAEGBGIDGHCEFAFGBGIDDIBCI?CHAEHAHIDJKFMLGNNFKH?MI=LE2aX9¦™mš‰[°rvfDKC.PNAJJ>HJ?JLAKLDONIRQLONINMHMNFLNCJMDILCHKBGH@IJEGHCGHCIJELKFNMHOPJNOIMNHVUPLKFLIB¢ž•¢›‘`WNg^OhYDƒtW™†h·£‚Ñ»–Ñ»–:c›:c›}}sŠŠ‚Ž‹‚†ƒzwsjrkaZQH?5+  +!+6)A4$M=-l]F„tZžp¨˜wªšx»©…±zžŠg Œi¨”o±x¼©Á®†È²‰ËµŒÎ¸È²‰Â­‚¼§|Ʊ†É´‰ÊµŠÂ­‚º¥z²r¸£x½ª½¨}¯œq®˜o´t ‰`«”j®—mÀ©€À¨‚Á©…œ„`¥‹fÁ¨˳ƒÃ¬z³˜i³˜k­‘i¤ˆa°“k°“i¦‹^·œo¾¦v½¥wÆ®‚·žvuRsR“xZ°•w¾¤ƒ²˜u¶u}}sbbXJJ@DD:CC;GHBGHBHICGHBFGAJMFJMFCF?FIBEHADG@DG@GHBIJDIJDGHBFGAGHBGJAGMCJMFJMFKKCLH?PH;NC/tgG¤–o—‰\²¤wscAPD,RNBHIAFH=MODJKCNOGMNFPQKNOIMLGMLGLMGJKCJMDILCEH?HKDGHBEFAFGAJIDNMHNOINOIOPKMNHOPJPPHRRH¬ªž–’‡YSEb[Hh]GvhN‹|_¤‘s¤‘s:c›:c›>?7FGA_`Xwxp’’Š„ƒvundmg[[SFA7+1' + .%?4"\P:~pV‚g¢“v«š|œ‹m’cŒ{]•‚b¥’qª˜tª–q¬–qÁ©ƒÅ­‡½¦}¼¥|«‚¼¥{Ç°†Æ¯ƒÀ©}»¤x¸¡u¸£vÁª~´Ÿr§’g±žv«—r¥’j•‚Z¥’j«—r¯›z§“p«•p¬ƒÈ³„¾ªxů~ɳ„ì‚êʯ„¿£t³™h¸žm¯•b¯•d¼¡r¦‹`‰mFrV1pS1–yWÃ¥¾ z»žt>?7CDED?JIEKJFKJFKJFEFABC>GHCEF@FGAIJBKLDKKCFF>EE=IF?MHENIFLLDKNCHNBHK@HH@LF:QE/~nL¬œk”„Q¶©|xnJHB*MKHKBGJAEF@EF>IIALLDLMGNOIPSLLOHNQJMNFOQF]_R¸¹©ŽRPA^XJe\KrgS‰ze‰ze:c›:c›EHAEHA?B;?B;BC;QRJvvnŠ‡~’„…v|xltmchaYXQI1* " !#6+TI3k_IxiR‚s\ƒt]†v]‰y_Šz`~`¢Žm§n¨‘o—\¦k¾¦€Ã¬ƒÄ­„ì‚ʳ‰Ë´ˆÄ­À©}À©}´žo»¦y·¤z»©¯žs¢‘f°žv·¥±ž}©–u¯›v³ x¾«€¹§y°‚îɳŠÒ½’͵‰Ã«{Å­}ѺˆË´‚È°€É±ƒ­•i¬“j£‡`\ ‚^¾ zºu»žrEHAHICEF>IJDIJDLMHGHCHGCHGCDC?ED?GHBDE?GHBHKBIJDFGAED?GFAJJBMJCNIFNJILKFILAGK=IJ:NH8TH2Ž~\©—i’I²¢nzqJLF,QOBOPHLMGHKDJKCHIAJMFMPIJPFNTJLOHKLGOKJOKLKJHKLGILEBH>HKBGJAFG?FG?JJBJJBJKENOILOHORKLOFNQHNQFPRE\^P½¾°ƒWUId^RleU{o_{o_:c›:c›HIDGHCFGBEFAGHBCD>9:4@@8[[Soog’’Š™–ˆ†z‹‡|tpdtnb\VH>8**# +*!<0"I=/bUEm`Pyl\ˆyfª–}¨“v—‚e’}^°œ{¯˜x²›y°šu²št¼¤~¾§~Áª€°™o¹¢x· t½¨{¼ªz¸¦v¿­»¨}ŲˆÂ¯‡² |² |¾¬ˆ¯y Žhš‡_£h¬™q¶£{ŲˆÊ·Œ±œo»¦y»¦{½¨}À«€¸¡x¨‘h©’i›ƒ]xR¯•p²™q´˜p¹uHIDIJEIJDIJEHIDFGBFHCFFDEFAED?FF>HH@HIAGJABH>BE>CE@FFDIHFMLGKLDGIDJOIHJEKLDMK?MD3UF)œ‰aª–c‹x@À±z~sFQI2PL@KHAJKFJKEJKCJKEKLFLMGMNHLOHLOHLMGLMGLKGMLHMNILMGJKCFI@IJDIJDGHBFGAGH@IJBKLDKLDOPHNOGMNFNOGNOGOOEVVL``TĶŒ€WSGb\Na[Ka[K:c›:c›IJEIJEJKFIJEGHBJKEGHBDE?FGA?@:GHBCDDG@FIBLLJKKIHGBIJBJPFFLBILCJHCC9@@6ZZNqne‘ƒ˜•Œ†„x{ptpewpfysgSK@80%.& !/&<2(UL=xm[‹~kŽh…u[wfJ˜…e¡Žmœˆgœˆe—€^œ†a²œw²œu¨‘h¸¡x¾§~ηÝƜһ‘̵‹É²ˆÎ·É´‰Ï½Ê¸ŠÇµ‡¶¥w¼ª|¿©z³›m¼¤vº¢v´q±šp­–lšƒZ‹uL’|Sš„]›ˆ`£h¨•m²ŸwIJEGHCEFADE@DE?CF=FGAIHDKGDHH@FGAEEEDDFB@AIHFKMBFI>GLEJMFIJBOQFGK=GI;NJ>LD1bU5ª›r£e„rBÀ°‰|RVK/QI4QO:OM>JIDJKFIJDJKCJKEKLFLMGMNHMNHMNHKLFKLFKLFKLFKLFJKEHIAFG?GH@GH@FG?EF>EF>GH@JKCKLDJKCMNFNOGNOGPPHPPHOOGPPFHF:omaÑσtSQDSQD:c›:c›GHCGHCGHCGHCKLFIJDFGAGHBGHBKLFGHBFGAEE=AA9DDFG?HICIHDGFBEF>DE?EEEFFHHFIJIGIK>IK=JMDJMFGJCGI>LM=LJ5TJ1l_?¶¥z¡_}m<±£v„^VM0PG6LF8LI8IJ:EF>HICIJBIJBJKEKLFKLFLMGKLFKLFKLFKLFLMGLMGKLFIJDGH@FG?HIAGH@EF>DE=DE=FG?HIAJKCKLDMNFMNFMNFOOGOOGNNFNNFURIOMAƒuÒÐÃ}p}p:c›:c›DE?DE?FGAGHBGHBHICIJELMHIJELMHFGBHIDIJDJKEDE?BC=HICHH@GH@AA9WWMnkb¡Ÿ“€{yl~|mpm\~{hgdQA>--'$  $6)#GH@JIDIHDLMHIJDFH;LN@LLBGHBIKHIJDRLEE9GI>JMBHIAIJBJKEKLFKLFKLFKLFKLFJKEKLFLMGKLFJKEHICGH@FG?IJBHIAFG?DE=DE=FG?HIAHIALMELMEMNFNOGPPHMMELLDOOGKKAPPFQQG••‰××Ë××Ë:c›:c›GHBDE?CD>BC=EF@FGAFGBIJEFGBIJEHIDMNIGHCHIDHIDIJEFGAEF@CDppd—˜Š–—‰’€}jc`Myveysele[]VN=4/% "%&6, SJ;\Q?{oYŒ}f˜ˆn ‘t¢“r¥—r§™r¬t©šo›Š^¯šoË´‹»¤{°–q¿£~é„Ç°‡½§~ů†Á«‚DZˆ¸£xÅ°…Ʊ†À«€»¦{Á¬Á¬»¦{À©͸GHBHICIJDGHBEF@ED?ED@CE@CE@EF>HIAJJBJIDJKCILAIK>JJ>KHAIFAIHDIE:NB*oKÈ´‚¥Y|g0»ªvŸ’e\S2PJ:NKBII?EE;GG?JKCDF;GJ?IJBJKCKLFLMGLMGKLFKLFKLFKLFKLFLMGLMGKLFIJDGH@FG?IJBHIAFG?DE=DE=FG?GH@GH@IJBJKCLMEOPHRRJPPHPPHSSKOOEQQGTTJUUK££™££™:c›:c›JKEGHBCD>@A;DE?DE?CD?GHCGHCHIDHIDIJEHJEIKFGIDGIDFHCHJEEF@GHBDE?DE=FG?HJ?DF;;=0OQDkka‹‚£œ”¢›“~ulvncxpc„|oyle^ND7-]UH~udŽƒm¢–|¨š}œl™‰e›‰cžŒfÁ­ˆª–qŸ‹h¶¢©•rº¨‚ª˜r±Ÿw² x¶¤|®›q½ª€Å²ˆ­˜m¢bµžt¹¢x³œrÇ®…ηŽJKEJKEHICDE?BC=DE=FG?HIAHIAGH@GH@GIDHKDIJBHJ?JJ>FFLMEIJBEF>EF>NOGIJBIJBJKCLMGLMGLMGKLFKLFKLFKLFLMGLMGLMGKLFJKEHIAFG?FG?FG?FG?DE=CDA@;JFCNIFbZW–‰¥ž”š”†‹…uohVƒ|jˆvˆqiaTRJ?("!!!#-%KB3aVD~r\‡{c‚g—‰l¥–w˜‰h™‹hl˜Šg¨˜v¡‘o¡‘m­y³¡{§•o£‘i¹¦~¥’hwN£d´žu©’iìƒÁ©ƒJKEHICFGAEF@EF>FI>FI>HJ?JJBKLFLMGJLGFKDILCFH=MMCIF=OH>ND8TH2ˆxW˵†ŸˆRxa/»¥s±¡meX,OD.MG;JHEHAHICGHBGH@FG?IJBJKCLMGLMGLMGKLFJKEJKEKLFKLFKLFKLFKLFIJDGH@FG?DE=FG?GH@EF>BC;CDCDGH@HIAIJBKLDNNFQQIQQIOOGONIONINMHOOGOOGOOG:c›:c›DE?DE?DE?DE?KLFMNHLMHGHCAB=@AKG>b^S‘‹¥Ÿ“Ÿ—Š•Ž~wp^UNILCEF>KI=OH5XK( ḇ„‘uFrV&¸¡m´¥nrg9NH.NKIF=JG>JG@HGBHICHICHICIHCJIDJKCKLDMNHLMGKLFJKEJKEJKEJKEJKEJKEJKEJKEIJDFG?DE=EF>FG?GH@FG?DE=DE=EF>FG?GH@HIAHIAIJBLLDOOGOOGNNFONIPOJPOJPOJOOGOOG:c›:c›FGAEF@DE?DE?ABFGAEF@DE?EF@FGBFGBGHCGHCHHFHHFHHFGGEHHFHIDEHAEH?BEEF@FGAGHBED?ED?<92FC:ki]…ƒw°®¡¯­ Œ‰zvpbjdVa[M{shwlbYP?4.,!") ' $%=4+QG;fZLue‰}m‹~m“†s‘‚m‚tZ‰{`Œ}`b›‹jk lŸgFGAGHBHICIJDIJDKLGHJEGIDGIDFFDIHDLIBJJ@DF;HI;JE1YP/±ŸoɳzŒq:wY%év­~ugBKD'ON9IJ:EF8NKBJFCJFCHGBIIAHIAGH@IHCKJEJKCLMEMNHLMGJKEJKEJKEJKEKLFJKEJKEJKEJKEIJDGH@EF>DE?FGAHICFGAEF@DE?DE=EF>GH@GH@HIAIJBKKCMMEOOGOOGMLGONIPOJPOJOOGOOG:c›:c›GHBFGAEF@EF@EF@CD>BC=EF@JKEMNHLMGJKEAB:BC;CD>CD>CD>CD>DE@DE@FGBFGBGGEHHFHHFHHFHIDHIDCF=HKBFI@FIBEHACE@EFA?@;AB=DE@NOIEF>>?7@B7Z\QŽŽ‚§¥˜¢ž’…uQMASMArl`ƒ{pˆ~tyof\QK2'#!!#'$"%*!7.%QG=kaU|pb‚we†yfŽh‚hƒtWŠ{ZŽ~\ŠzXGHBIJDIJDIJDIJDJJHGGEGIDILEGHBFE@IFAKG>JG8F@*cZ9²¥yDz}Šr6sV¿¥lÁ«ywhAQG,RM:IJ8IL;GIJFEKGFIHCIIAGH@GH@HICJKEKLDMNFMNHLMGJKEIJDJKEJKEKLFKLFJKEJKEJKEIJDGH@EF>DE?FGAHICGHBDE?CD>CDCD?CD?DE@EFAFGBGHCGHCGHCHICHICIJDIJDEF@GHCFGBBB@GGEGGEIIGBD?BD?BE>@E>8>4BH>>A8GG=spg•’‰´±¨¥£—hfYZVJXUFa[Owl‘ˆ{qhUHB6(%) !"!1(E=2ZPDxl\‚ub€q\}oU€pV€cHICIJDIJDIJDHICEHAGHBIIAII?GI>HH@JFCMD=L?,eU4»©{ʶƒ|f4pZ!©iÍ·{…vKNE(NG4PM>IJDE=HH@HGBHGBIHCIHCGHBGH@HICJKCLMEMNFMNHLMGJKEJKEJKEKLFJKEJKEJKEJKEJKEIJDFG?DE=CD>FGAHICFGACD>BC=CD>CD>DE?EF@GH@HIAJJBLLDNNFOOGNNFNNFNNFNNFNNFNNF:c›:c›HICGHBGHBFGAEF@EF@EF@EF@DE?CD>CD>CD>HICIJEIJDEFA@A<>?:?@;AB=CD?DE@EFAEFAFGAFGAGHBGHBFGBIHDGHCGHCGHCGGEFGBCCADE@BD?DFA@B=AF@CHA=B;BE>EF@HGBLLDQQIff\––Š¥£–”’…yuiKG;SK@mcY€vlŽyzme[QH4-%!  ## "+!2(NB4_SC}p_ŽnHICIJDIJDIJDHICHIAIJBGG=EE;FH;GG;HD8MB0s`@«ūxf.oX$º£oÊ´z‰xDJA KF2OL=IG:HH>EGFG?FG?FG?HH@IHCHICHICILCJMDLMELMELMGJKEIJDJKEJKEJKEJKEJKEJKEKLFKLFIJDFG?DE=BC=EF@GHBFGACD>BC=CD>DE?CD>DE?FG?HIAJJBKKCMMEOOGOOGOOGNNFMMENNFNNF:c›:c›IJDHICHICHICGHBFGADE?DE?DE=DE=CDCDEF>HIDIIGIKFEFAEFAIJEIHCED@DC>LKGED@FEAFEACB>A@>?9@A9BB:::0FC:}zq™—‹°¬ ¢ž’smaWQEUOAb\N„|o‹„tylZTF93')""&$%# +"=4-IJDIJDIJDHIDGHBJG@HH@EGEF>EH?FI>EH=FH=HH@HICHKDGLEINGJMDKLDJKEIJDIJDIJDJKEJKEJKEJKEJKEKLFKLFIJDFG?DE=BC=EF@HICGHBDE?BC=CD>CD>DE?CD>DE?FGAIHCJIDLKFNMHMNFMNFMNFMNFLMELME:c›:c›HICHICIJDIJDHICGHBGHBFGAFGAEF>EF>DE?CE@CEBEECFFDGHCHIDEFACD??@:@A;@A;ABDFAAC@GIDHJEHICGHBED?JIDHGBED?HGCJFCEDBGCBGFDCB>DE@?B;DE?ABHH@HH@B?8II?SPGgeYœ˜¯­ ˜”ˆzxic`Q[TDrkY‚|l‰ƒu|uk^WO>71& !#HICHIDGHBFGAFE@GG?HEJIDCD>GJAFI>FI>GI>HH@HICHKDGLEHMFILEJKEIJDHICHICIJDIJDIJDIJDIJDIJDJKEJKEHICEF>CDBC=BC=DE?BC=BC=DE?FE@HGBJIDLKFLMEMNFNOGNOGLMELME:c›:c›HJEFHCJKEGFAJJBHGBGHBHIDHJEGHBEF>FE@EFACD?BC>BC>DE@EFAFGBFGBDE@@A<=>9=>9?@;ABCD?BC>BC>DE@EFACD?EFAGHCHIDFGBFGBFGBFEAEFAGFBFGBEFAFGBDE@CD?AB=ABEF@GFAEF>EE=BB8FC:UUKxul››‘³±¥¦¢–xrdPM>NJ>JF:mi]‡ƒw~zokdZC<4-&  &HJEFHEFGBFF>IIAEF>FFFE@EF@FGAFGAFG?FG?FG?GHBIJDJKEJMFJMFKLFJKFHIDHIDHIDHIDHIDHIDIJEIJEIJDHICHICGHBEF@DE?ABFGAFGADE?ABDE?DE?CD>DE?GHBIJDJKEKLFLMGMNFLMELMELME:c›:c›CHDCEBIJDIHCLIBKHCGHBIJEHJEHIDFG?GFAFGAEFAEFAFGBFGBFGBEFACD?EFACD?AB=@A<@A<@A9?@;?@;AB=BC>BC>CD?EFAEFAFGBFGBGHCFGBFGBFGBFGAEF@FGBFGBEFADE@CD>DE?DE?DE?ABEE;EG:DB3NA.WD&¢^Ϻ¶ glVoYÄ®rѼ}›ŠRPGIE,KG>HDAHGCGFAEF@DE?DE?EF@FGAFGAFGAFGAFGAGHBIJDJKEKLFKLFKLGJKFIJEHIDIJEIJEIJEIJEIJEIJEIJDHICGHBFGAEF@CD>ABAB<@A;ABCD>CD>DE?FGAHICIJDJKELMGNOGMNFLMELME:c›:c›EJFEGDHICHGBKHAKHCHICIJEHJEHIDGH@IHCEF@DE@DE@DE@DE@CD?AB=?@;CD?CD?DE@DE@EFAFGBCD?@A<=>9=>9?@;AB=AB=BC>DE@CD?DE@EFAFGBFGBGHCGHCFGAEF@FGBFGBFGBFGBEF@EF@DE?CD>BC=?@:@?:BADE?EF@FGAGHBGHBFGAFGAGHBHICJKEKLFKLFKLGIJEHIDHIDIJEJKFJKFIJEIJEIJEIJDHICGHBFGAEF@CD>ABAB<@A;ABEF@GHBGHBIJDLMGOPHOPHMNFMNF:c›:c›EJDGIDGHBGFAJG@JGBHICHIDGIDGHCHIAIHCGHBGHCEFADE@CD?CD?BC>AB=BC>CD?DE@CD?DE@DE@AB==>9>?:=>9>?:?@;?@;AB=CD?BC>AB=BC>CD?DE@EFAFGBFGAFGAEFAEFAFGBFGBFGAEF@DE?DE?CD>FGAFE@A@;??7BB:BB:@@8DABC=CD>EF@FGAFGAFGAFGAFGAGHBHICIJDJKEJKEIJEHIDGHCGHCHIDIJEIJEIJEHIDHIDHICGHBGHBGHBEF@DE?CD>CD>EF@EF@CD>@A;?@:@A;@A;@A;ABEF@FGAGHBJKEMNFNOGNOGNOG:c›:c›AF@CE@DE?GG?IF?JGBGHBGHCFHCGHCGH@IHCHICGHCFGBEFADE@DE@DE@DE@@ACD?FGBIJEJKFHID@A<>?:=>9=>9<=8>?:@A?:?@;@A<@ACD?DE?EF@EF@EF@EF@EF@EF@EF@EF@EF@AB9A@;FE@CB>BA=GFAA@;CC;DD:IG;KI=^ZNŽˆ|©£•¸²¤§¡“vrfOL=AF@@B=CDBC=BC=CD>DE?EF@DE?DE?EF@FGAGHBIJDIJDIJDIJDHIDGHCFGBGHCHIDHIDHIDHIDHIDHIDGHBGHBFGAFGADE?CD>CD>CD>DE?DE?CD>@A;?@:?@:@A;@A;@A;@A;@A;BC=DE?FGAFGAHICJKCLMEMNFMNF:c›:c›AF@CE@DE?GG?IF?JGBGHBGHCFHCGHCGH@IHCHICGHCFGBEFADE@DE@DE@DE@@ACD?FGBIJEJKFHID@A<>?:=>9=>9<=8>?:@A?:?@;@A<@ACD?DE?EF@EF@EF@EF@EF@EF@EF@EF@EF@AB9A@;FE@CB>BA=GFAA@;CC;DD:IG;KI=^ZNŽˆ|©£•¸²¤§¡“vrfOL=AF@@B=CDBC=BC=CD>DE?EF@DE?DE?EF@FGAGHBIJDIJDIJDIJDHIDGHCFGBGHCHIDHIDHIDHIDHIDHIDGHBGHBFGAFGADE?CD>CD>CD>DE?DE?CD>@A;?@:?@:@A;@A;@A;@A;@A;BC=DE?FGAFGAHICJKCLMEMNFMNF:c›:c›MVYbd^]ZUW[honlqruy}wvstoMDIJW]kqz{‰”¦²µ †ƒ|vy~ƒ‡‡ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppIILGNUVQ\dj|w}zxzz{|vutvpIC>=L[_grrqƒ„ ˆyƒ{z€mopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp;@?>@OSY]q}‡†v~t}yxqnmpq;944FMR]`isl|‚y{}‡‡ƒŠkonnppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppPY2EKX]m|{€†‚€v|xrngefkn"T-eKUXefejr{x{‡‡yxxoopppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppplâ눻¡tqwz||}wurlkeYOP]jqlÌÍÊ–¬YW]ehotwxy~wyqnxyttppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÓÈÓ˾ڗ›ž„ymswgibWPD?CSajÓÙáìçã]^adiovwvvutnjoxtssppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÄÎÐßÕæÑÁÙ•€^jb_ZL>+*6FZchÄ××ÓÝÔÎÈc„vquxusqnnepljjjppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÉËÊÔÒ×ÑÎÒÏ´›UYTI7.,*7GZacÉÎÍãÜáäÞæЋxqruoohha`^eeppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÉÐÇÖÑÑÖÏÇÇβÐq79-&$'9LXYRÉÎËÑÖÙâêìæܱ»¾mmqpf_]TT]]ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÈËÇÒÍÊËÖØÑÈÞ½œD3.'-9M[djhÈÄÃÓÓÛÛãæÐœŠo˜¥˜kaUPIIPPpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp³Ä½ÒÅ»ÍÉÅ×ÚìêÃrWW`ky{yyu³¿ËËÎÑÖÙçìáµrYRahfK>:<>CCpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp»¿Àµ¾º¶´½ÅÕÑåëëÈkpks}~|»¶ÎÑÍÐËÉáãéíâqLRPJA@73888ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppǸ­¦ ¢«´ØÌÜæàêéžk}†Ž‹†„Ç«²¾¸À°¤ÈÖ×ãèظŸeaUWPNABBpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp‘~”™›²Ï¨¿½ÍÖÞêï·pk|…ƒ}{{y’ŸÁ¼³ÍÊÞÚÓäÜ¢”ggcfc[RRpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp„y…’¤ˆž±±¾ÆÈÖæëŒYbs{ytrw„€Zyž³«¬»ÑÛ×ÖÞÚÉ ”}tol\\pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppT–¹¥”¬¹Á²ÃÕÔÔŽflssqibfpnX£© Šž§½ÓÓÓØÖÔÊÊtvurrpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp„““|š“›„­Å¿ÅÇÚë‹fle_a_ab„s\6=u‹‚i´¢ÅÑÈ¿ÉÉÉË¥splhhppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppu‚je_tj¦¹ÅÆÑØâß‘khorprhue"#-VuŒ}¬‘µÓÞƺ·Åĵ—X\bbpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp|Ži>^|l_¦½ÖØÛÚß¾sdeggeo|Z' + X†›„¬¿ÁËÁ½Á¼­™WPRRpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp‘‘œv…ib`Uk ¡Ê¼Ø×ÝÛŸtaecdl‘}EZ#+›«v¥¼Æ¹ÈÏ¿²·¢P@88ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppº¥Žº¾vE&,M–Œ«ÁÛâÕëÜ’aWS\iº¸½Ëb@]w\ÀK–qš«ÈÆ¿º±®QEGGppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÑÒÑÏÂÊ*Mpt®ÂÔëáÖÛËŒZWZuÑɹÓÑÆÖ¡‰¨w’tj¨Ä¾«§ŸnKNNppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppÐÒÐÕÎÉîš:g“«¾ÐåÝÖ×Ù©—\`qИ–›¥¶ÁЩ©˜‰”0š–¶˜Å±¡xY\\ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppl}žµÄxŸïÃkK’³²ÃÕØÙÈËÔ‚”hnl…——ƒ•¦²Èª²¥2|¡œ¯¡hijjpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp * “É¡s—³®¶ÏÐÚÚÈÑ¿~wm ”¬œ²ž¢©·­§œzD~ž€foiipppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp1; Ÿ¯·Ï©šž—¾¯ËÎà×ÈÉ£kx1F£¤{—ª«©²´¥F*k&›fkcbbppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppbh½¥³µ¼Þ‹:|ˆ¨ÀÊÔØÐÂbln§‘Rrž£¯º­ kR]Bƒafb\\ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppUR¥—˜¡©Ï´Ï"_HŸ¸ÌÒÍÊÂbqUnar`N€ ¢·­®YmbŒ…}l^_[[pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp83@‹–i‹“¬¬Ñ¡~A…•ËϹƶ‡cc8VrEH;Cn‡~Œ©¾ª€oq†zs][Xaapppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp9%^mma  ¶Ö·”Šq„§Æ ´†tuu#J]{b–¬“ wxvlgaeepppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp4.e†¦›Æ·™wmš‹ª†´€z|w 8 +'Ÿªœ~†…‚„|noyypppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp M ¡«Á…Y¤¤lˆŸœ†Š†~ˆh,E1FT€’“‘Ž„‰‰‰pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp;Af&@=…§¸‘LMjp–žŠ;@6‚TBSKbZ\”–š™™š˜˜”‘’””pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp•kg;.%&9˜£¨ˆr|’’•’—™˜’“•‰Novvu]j…Ÿž›š–—˜”““––pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp¥šQA77CAt¡¡–’›—™–™™œ”¥%t‡Œ‹xTŠ•ž›–“Œ“ŽŒ‰ŒŒppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppoafeYWen¡ºÀª¨Ÿ›Ÿ•˜¡›ž˜•Aš•—Oqqs‡š”œ‰…Œ„pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp—puuuv{“˜¨¸³Ãªœ —“’˜—˜—Š„•Ž‰se]_u•‘‡‚‡Š‹~|~~pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp˜“†„ŸˆiDbr’¬¸Â¥¡¨œ‘Ž›–‰yw|~~W8e|’ˆ‹ˆƒ}€„zy€€pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp˜•Š€‡†„6H]z’„žÐп¸ÝÜÍ¢•‹˜‡iryhn_Hiˆ‰‡ƒŠŠz}{~~zzpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp‡¥¥˜’r80X]x~°Ç»ÓàáÔÜàã¿Â½‡kLZn^*,16Bc‡ˆs„‰sywz†„ˆˆpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp@F>9&h`h€¤²¦È¼ÅÌÄÏÛäØÔÖb8, .;F†‡……„ˆ|‚{ƒ„‚‰‰pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp$6P.cQY€Ž‚“«¯ª¾Ã½ÈÌÖÑØÜRdoi7MQ±†…„…ˆ„„{}Œ‹‹pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp W/IPgtaˆ˜¦žŠŸ½²º·ÀÇÂÌÐÕÕ aprv{y~tfOžtuw‹‹ž—€z‘žžpppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp9p3g8*Vu{•”œ—–¸¥¯ÃµÃÁÄÊÊÑ9ltt{|t{M>py|s{–¡™Ž’°––pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp\">`M.]w™ˆh—Ž·­°«·»Âº°½ÂÏ\9>J^s€}v‘1{x”Ÿ™‹žŸŸ››’’ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppS;'‚w[ZŠŠ†Ž¨—“‘©¬¯´´µ¶ÈÄÅS!?RggMc{mv€’Œž“˜¢œˆ–££pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp9aG‚uŽZ—–‹£šš”œ­´¸¸½¼½¶µ9Gc8TRfh‚‘^\‘zH¨ŸrƒŸ—{Ž  ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppWHŒ’€LO\ ‘©“™œ ‘¦­µ½º¹¿±WNK;^ZLR}d›s‹’•‹e`¬z™™ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppv~mwU]}{…‘’aŸ•’ §¹·­­­¯³v=Yu<;eQ*š—zŠ¥¥b[st˜«„r€€ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppv~mwU]}{…‘’aŸ•’ §¹·­­­¯³v=Yu<;eQ*š—zŠ¥¥b[st˜«„r€€ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppˆ†¡ºÂ¾²ž}‰«³gZNUSHKQMH8% "'&! $+29EJJI@88983.-/6ˆ~Z=;EKRanqgS?CYj]D=?:>FIFEA<;;<:BS\WJ@AA>5,),.-++>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ƒ•±¿Çä{¤­™qUPVPKNQLD<'"''"!$*09CJJI@65762-*+2ƒx^>:ORT^ilcO=BWjcLB@:>FHFD@;9:=:BU^WKCCDA91.020//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>vr… ÉíäÀ•‘«ÕѳcPSMLJNNB9(!'(#!#(-7AHIH?64662,()0vrcC>SUQT\_YJ:BW_WMFGHF@:67;988>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>^\l€ÃëЩÀÒßïâÏ…QYUKKMOF5& !'(# "%)2:@BA:3133/*((1^`VA?IKDBFJHA;@ITTG:52>EGEC?979?:BYaXMDFHGDA?>@?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>HHKYoºçåéáëßÕ¿mo^THMNJH7$"''# !$'+04541-,..,*)*1HHB::=>869;;<;=>BC=411>EGDC?979?:BZcYN?@ABB???==<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>DBKˆc}âíêÊÆΪ¡_ÄŸ\KIKID9'#''#!!"#%')*)))(*+,---2D?@@=?>;<>>?AA@>==:411>EFCB?:88=9B[f\N@=<<:668::99>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>EFˆì•m€ƒˆ¢»ÛÃÕÇà¹^}lLLA6'#''"!  !""$%%&'())*2EBFFCCCBCDDEGFFEB?<733=DDBB?:99;8C[h_N?:663./38877>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AJÒì„on•¬ª²åìÏÕ»Áy¶®SLB5""&&" "" #.A@@@BACA@@ADFDBB?;8400>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3>Ìßn¬§µ¾×ÏáßÅÍÏÍ—›¶UI@6%!%%! ,30478<:64577786614+(..=CE?@>8:7:7A_h]K70.,,//02100>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>53‚ÑmsËåîòÈÕéÐÄÐØÍÄÓŸOC3"%% ,54589==<;<==<<:;72+),0>CD@@?82685?^h^M:44323222100>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>IDUbZzçÔìëãáÝ×ÈÚÖÆÅÖßE4)"$!!"!.IIGFDGRTUUTTTSSOH?:510>DD@;:;7673=^jaQC>??=<:::955>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>UYV\\i£©˜ÐìîäκÖÎÁÒÔÂÀEW@"!& !!0UVXSKO_dfdcccbc[RJGA;4@FD@>:96673=_ldTIDEECB??A@88>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>UYZW\`b`v•âðÓ²ˆ­Ã;¸Â˜mÕ·?(!"!!"!!1UU[ULPaegdbccb`\SLFC?4=HF>=>>=673>`neUICCCA@>?AC;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>YWY\[``_mf®ÙÉ™vÇÅÖ¡•Èɘ‹ÛÖq#" ##"3YWZVNP]__\\^^\XYQMGE??CGI@=C?8784?anfUB;::8757>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>XUVVY`gfk‰ÆŸf…Óó˘Vj¿ÉÜãÑÇ¢;%$#"$5XXWVLLUTRQTWWURRNLHGJ{YWjbD=??895?angV>54310/17@<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ORSTVZhdn§Ï›S~Ìãƃgdz¬×É×v’¢- %$ %6OTUVLLSPNOSWXVXUROFDZÄyR[\C>>;9:6@aohXE<:986469D??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>PPQQRXblrsonW‡ÎÙƼ›k{‹ÏÓà’’³7! " #&****)**))&"!'5PPQSLGIGFIRZd^]]‹mLH[˜WQWkFC=>?E@@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>LJKOMOfZePMdSy°ÓÒ¹¬b{¬ÚæÌpH»‡%#*2;DKTVI?AIF>3--6LNRPIAD:@>T¦Ôšc|ν—HMH1VVrI>EC@?;@bqh^MGIHCBAACE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>HFGBHKbd_LBfWzu‚¹Ä‰`b«ØÒ³icÆ! $.=PcouuaPUc_TF;5:HFGDB?;614zÖçéup~¢±Ÿ˜ƒPaXPR@Wh”S>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>5;=DIGghxj_Á°‚@egfMMMbÁ͸4#XF%&0I\sˆˆoYajg]OC<=5358<;516-ÊÓÎD3;z¹åá·I}¢]zuÇÈ¥b?>dvmXEEMMGDA?;;55>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&--5‚’¨ÊÄÒÉ£Ÿ¢lr”nnIT¡¨)!$+8Nbs†‡mU`mi_QE=>&(*18::6;:UšÂå®RwœÃÒÓÕ ½—Ìè௡yXBFfqjYCFPPGA<;;:44>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> !(¢ÞÐäÑèÏškÌÚ±a¶ÉÀ¾|<=7#$! &:M_rƒnY^ni]OD=?$-299?EJp~Ž¹ÐÐÀÌÄÁÅÏÍÝõßÙØë¾ÏÞ¦ODeuqWFHQPD<88=<77>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##%+nâ«ÉÁÈ¿ sÓÓªj½½¶Ÿzn‘^405,'#/?Yem|~mXZkeYLB>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3%--?ÅÁ¸±µµÎ»ÛÒf’¯©w\ á¸±À½°šZ7z¥—–{u}{fS]gbWJA<>3Mw„¬¾Àºžws†–Œ‹ax‹ž¿³¶ÚíóßÇÜþÇÆH>jxoXA>CD<79@Rbnn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>M00KŒË×ÃÀ¶§ÏÃìÉ€]\d„dP[‹¯¸›Óῦ±ÊÅ¿’v{waOVa`RG@:=M£²±£±±»ÉÊ¥zˆ—v„}]šž¨ÎèòàÙÎë“MR89ezr_C5<982=Ne{||>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>z…Ž°ÇÓ¬¼É­¥Ìº³°dUWQWda‹šÖÃhÁÕ¼®¡¤•¡µ«†t\NTchaWM@?zª¯¬£¤©®¶º³„Œ©·ÖÔÅ“rU‹ÆÞïÑâçÓœ‡‹?5`ƒ©”Z80414I[wƒ““>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…žÌ̾Ƨ•–²áØÀÎÒ[b{b[”ÞÃ¥‚:‰”ƒŠ£„žŸ©”z^JYr{yqbME…¨¢¥±²®®²³© §ª¾»ÐåÇœQJ•ÖËÌëñàÚèëy8W°Ó߆813-5D£«±±>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¦´ÌÆÐÌ™—˜ÒáÀ§¸³«\ŒÒ·{ ÐO>QH9}is»Â±Â½ƒhGd€Š‰€nUG¦°²·¯°««¥«­­®©¯´ÅØÈJ;_ÇËÏÌáÇÈØî—BG‚µÏ2-(;zƒ™¨ª¯¯>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>·³°¾ÇÊÏÏ··¬ºªÙÉ“xšÅ²•«Àª†´œoP“iO}Èò± Œ‹…ge}ˆ†{gNB·«ž§§¨›šŸ¤¶½Í¾®°»Ë”@?BŠÈÛÒ´ºµ±ÇÜAAFpr5Ek’©¦¥¬¬°°>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¦«¬°½¼º—·®š‘¢³¶¬¾¾¼³¥À¿·²¶Ä¬¡±t@:n ŽŸ·§Š¢¡fmxviU@;¦ ™ž¡ œ‘­ÑϾ¯ªÃæ¿„…:/}µÉΛ™o¥—P=;@;@>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>©¦®Â¾ÅÀ¢“®Íø¡‚Œ¶šŠ‰€¬³¯¤œ¬›•˜˜~S2RQu°¤dy„GQZVL@23©¤•˜‘¯¼ÂžžÈÚãÊ×_)?”ŸŠl…²—LD:3609;>Eu—Ÿšœ¢¯´®®>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¦¦ª­®®¢£†ºÄÅÍË´¥Ë†Wk_h¢œ’‘’‰‹’œšl,.WŠs+-414950-'*¦£¢’d^~†¤½¦TLo²º¯«ƒGDBA.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¢¤§ ¥¡¢œ–±²¿¼±­´šc±\i•†{Š‰Ž’–‡[cwoG5)()&+''&$¢¤¤¦l§z…œ¼¯CCchFMCIªÙÅUBR?¦áëˆ>1..)+039@[¢” ¥¢¥¥>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> œœ œ•Ž•¡Ÿµ­´¯Œ…¼±fFld^§‡†Ž‹–Ÿ˜œ ˆL%(%)&%&& ¢¬«¡¦±¢¢©ÀÐzM[y®¡‡ŒÐçñ¯–ªƒ|įT5/,-&'*+.6Bl›››™””>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>™’’’–šŸŸ—Š’‘—ÁÂÈÉ„ ¼®_NLJŸÃÄ ’Œ“‰}ty›˜™¤£„@%'-',+$™¡ª¬«¦¯ª¤¨±Ã£|r£Å¸£ÇßðÈÅÔÖjWuS73&##''+%,2F ™•>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>’Šƒ‰™œ›™“¤šš·»¾¾¨©»¶Ÿ«‰³¾¿»­”‘‡…‹’››£¥™[-*-*,*’¦ªª¦£¢ž¡©§¥´¾½ÁØ´¢·ÖÚײ¹¾Ù¥_ÏÊK) #'&+!'%+9T”ž‰ujj>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> •m››—–š•’™•¢¤œŸ¨ª™¦š¦ªµ¹±·®u‚…‰‰˜œš¤’O+-,*( ¥ª¥ ¡˜˜¥®ª±ÄÌÀѼ®ÄÛÖ ’¯ÉÓš]äáK,!#++%""%/;F“†fkk>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¨šyœ –Œ–ž›‰‘—¢£¤¥½¹¦ ¦¤©­¬¦‚~‚zƒ˜ ™§¦¤‚@*''&¨£¬£›†˜«¯±±Åɵ¼¡«ÂعŸ–¨»±uVФ<+'*%'# 26F`˜‘{‚‚>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>«¤£‰–š ˆ‰‘œ¤™•¡§À¿¤¤¥ž¢¤¥ª¥¶ŠSOGm‹¥©  ¥‘q1&+«©ªœzn}¢§«¥ŽuW†Ÿ§¡¡›’®Ÿ‹NgA*1+($&#!""+Z‰•Ÿš””>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>²¦ˆŸ—œ›sFEUt·»®—œ ¨·§œœœ››¤«¬¼|4'*=Qd–«­·¬¥ˆ<,&²¨ žŠlQm‹“¥°¦Q>>K„š€‡”£ÊÔµg313()),+&(%"5HŠ}‡“—‹‹>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¢›–”Ÿ›™N::9G”ž›ˆ‘ž–˜”™šŸœ˜¢£¢u9#$0F:s£±§««¢_.'¢¤§—…d5tŸ° „e<9@Y`W_}´ÔíÛV-+11%%$''!+A>>XsŒŒ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>££š™™—Šƒ†[('-C8A=k™›‘‘Œ…–š¡•™”š  B-RXN<_®Ã¾¦ ”@.£¡˜“€bvš¥´²±—5125)#,BªÃêÕ[E&"%$()& !7H?2[|Ž“““>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Ÿ—ŒŠnA!(0R/(4t˜—š›†tš¥ª¡‘’’› ¦rPcF?67t¯·µ£›G)Ÿ «£¡—˜Ž¡¦°¶²z1992,(-3{Åׂ=C>$(+-*)#3BI=5EUjn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¢š‘™š—|O(+4D@ )f‘ƒ’ž•‚}–ª¨ª¤¤¦˜š¤œ…Q'$',V˜¡—…7)¢”š•›ž˜z’©¦™aJ7//--3+-18UV2*(+/612/+00444K]TKOVV>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>œ•…pv|VL3/3I+,3?_s—šš—¡¦§¯®®«–“œ¦¦¦s0$'*DBœh*$œ’˜‡˜—–£¤«²sK0(-(+-/)),31$""&0/2/,-*18I8>2D<..>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Žƒwb`rQRB9156&#&$+Lƒš¡œœ¦¥£©¨³°ª£©§®¦”p=H‹B'O?Žu¢–š—§ž¨ª²‘P:!A) ,*&)%!#!%,/48:7;6=:"/A3]]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>€’w‰\=41*;0$%"-s†‰¤Ÿ”šœ›ª¯³¬®¯™¯—™ZwŸx%€Žq~’™ ¢±Š_KHJ9}3$.(&*!#& #%+1;=?A%0=+MM>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>“‚}€…luE5?B>$6-/JJ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>š€gdp‰ƒEib‚fLp6$13DB££˜œ‰„}Š¢¡¯²­ž…‰”¬“Œ:ššV&q¢`'WˆB0Œ•ŠˆŸK<,&!$k¢C1/,7358;?E0!1"$,,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>¥|KFm€kk{|Œ„‡5+126w—¢™š‡sj`}¨«¬¦­©œ†‰–”œ“”Œ\¥p.F•^6<(%i~ps’¬Œ@>8I8k‰2=8/(&6;9=%1#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>§hdƒ‡‡uv……‡o,-*W™¡¢’œzwMl{¡¦­®©žŸžŒqon|ƒ‹”“?§L(vuY.>1!P—„^IU‡±E^v£‹˜„?u><6-)(7()-">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>‰°¦“‰€{z€sp}‹}C%mŸš—„zqq…‰—¯µ¨«¡œœ–:12E~™—T‰4#j}pSC("4štZZ“¿iaS«ƒ{ˆ…uI3??6 ep^.",.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>G€‚je]|†~{cTo„†8 )k•”ˆ~~€Ž’²©£«™”œƒc@1;kŠ“%G4)Dk`[nY("$N——¢£µ:~‰qwHp†{tmNA9&<1uqltt')>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1H?LT>jwk@8aƒ“‰6 Aš“€}“¤¨©¥£ž”™ }7#4LTbm,1685V\35rm-('*\}„‹R>y „/D†cShwN@1%"&@{SBh8%!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>3I.C?+/kƒtL7o‹‘b TŸ•’–‰œ©­¥¬˜™˜š™ž‘9   3+/0XV&;„^9*%.FT`D$A{ƒ¡d1|p[VyU9D)!>y@*\’V1$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/?" **-v€tvz–—{b„ŽŸ’”«¥¡¥”Ž”™• ››c  / $WxXuŸBH$4,Cz[i1R^t|XXŒ˜—‰{ca(5‚dY‹˜RD-!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>41!!"((L|s}{;.ˆ™š›žŸ§š¢{“—™†fE!4,Zt{Z'3:.2Mo[h+:3vwƒšEUs€‚~oQ9!g¢ O2G$>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8(/0'#%.YAj†|x~S$! !*l“¥—{QtUC@E~šˆw8!8!01%-IFa-"86c\{†QVlyV@@:81(Y`H8($>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>09FY(%!%)#OxqC50"! !;xŸ†t?=<67HI]^((&0""(2Z<:C9]]dUoYsŠg&2YE90)9<59+'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>B`Wk>'%!##,/**"$#()SO<31@M=;EWbYmRo\}qN&-7/,;/-5 &&&>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MO@jS*"')*%!$%')#)1$&,8=)+8r~M=XtV?A=30)'$M0*=bl:!'NP8G‡fJYduf‡Q#+ '*;&#$11>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ih:F@:.-$'$!(&%()%)/<5/ACEL.(Ky“r=An’b?@6=30-("i8*HsTU$"%$#JK:=eZ#Cg}m~a( ("0#D#5'""+(..>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ge407<-$#$"('!(*-((3=E`dG:/>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tU<;@6'(#!$(!$,/.,9>alOsWe:B`X<+IVC4%!+23/*%t>(' )%+4!:&2/@16*?Œ}xw1$.%3/ 30OS)+'GG>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>eVA?;1# %!)2855=PfueUPC\Q8%)8>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>U]4E=($  *47:.<=Qq‰wcg:if> %28/#%..)$UEWJ"QW"/B/9/,H|yM{}fw{o5%5'*)2!$5=2(/%&%%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MCG?(#)%% %$"$,2<<>-Rq„IY3+Gpi;#+2."#*)#>BNT;Rc*'08%T…•¹Kƒ€†’mB)#9&--2$??*# 0//..>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>GF@52++*!$%$!&!-8;?Vu„S!&*Ms9"%,*"# *2AMZ6$3i= $+7#=o[¬N„›‰e ",",/0 ";<&%8!,+++>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>41IE=DD-,,*'"!"')&3?>B]~g>!&-9& #  +4%+?MF*5?wC%'(-,8YLf\Ÿ|m…Q#0,28-0))< 6#%!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>39QF:"&#))>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1C:FSYSA4010+.-0.(/9=ILS>(*'%%  + +  13<639E;L/&'#$)%0#l““‰™€#l1480!.G!##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=7NV]_TK>5/),*&$5?B;FG,  + !)!/1DD".'!"!D&,%Fi‚šŒk%œE543" "-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1C:L\`aZTMD7*% '6=:0'$#"# +  %!$20!!:.$1W„|Œ‹h%Ä=45%$!(699>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>2C>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>";FHMNGEB>;<5%)9F;. #"   &;.-91)-&=ptmc˜™W4ÏÅ:><60)8>=BAA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>,ELFE5.+*1002@KD"  + +  ",?/9 5851-% .Fhh^WŽc/ʺ;@=<:'$$,6ABDIRR>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  6QRO9'%-7;=<>HH,$&' + +   -%':?=I.A+01)*#(AGVrjMo•†v2ij4;A<<.$-2<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> -GNNPB9>H>238JM2 ' + + + !+5&6/>26A;2352.,#9>E_jd]l‰y0Á¿=,BE@5+/7BCIRVTLL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>)8:2E;.31+,;64/#(  =`u"2!& *2:9025739>9SdWW^dtn‘5³ÀX)9GD@2+2AIIMNW??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>0"1455D $% #! !  )Q{•0( ,/./5@6=:3CgbEPTo€~0ª®x/:?B+&.1[PCR_88>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>P"'11:L "#"!! *IivuP! + +  & *3E=8(;On@FFw«y5j†\'@62),02kI@NMcc>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>X3# #36   ''$#*22-X( /=?!(D3#=\_UGBNta/Q~Y,19.B_$'AY8;;R__>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>M2)1 !  + " M!'(  8JH$ '<%-aPVS:@<9@2JF:+J‚BG[/+S91BE\KK>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>K'*,"+( + + ! K!)&,,#"4@N)K5Md>5J;>JKC1B_8+Cn@RJ&7a3*IF[33>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#!%&% !!!  ""#')'>#'+,/ !6#KK)C,MLXU81(iA(*:;7Y*?g=6JF?33>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1#&" (2.+'*,+*-/0013212235658865451$!)*584$D\24!$>NUkM1%GU949BN6A/Nn;79HI66>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #',*$ 1,&!!",>:83/,-0135666667:<;<;;<;: &('+6;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>$$#19L)'-#,1387:68:491% #$%))*+,./00121100$*-+,7A?;;F#fB7*'&14P^<+=2JJ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><5.Fc6%&036984."'<1,*+6BCCQ_/11,!2)4@B@80'K:,NM0?B6F;:R5GP1VV>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>E9"3f{M "*2;;9?=4! E72*'/DJFFF0 !.'1$8O!TA94,L,'(&;<9;aEJOJG)Lrr>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?*%Hs‹X"$#)-3374><'?=9.%&AGID<@4"',89'5X.OMD-3A53Q.3C@GO>GZSI2foo>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?&Se"')'+*-013798 ?H>/($<:NjAGYrE8L??>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>8 &F{p  (+028839@CA@95 8PB+(*643:CA==@15/=H>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%+BOK$+:(&/<9+0??0%h[)1/(80gu}œ³ŒU:>3©šU09NVYvƒU@}U^^>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!(''++/AMNbdWVU`irwwG&22''0C>)*18-m’I0%&'05,A…Ÿl$EfœjH<&&Tq:.\P=JOGZZ>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+34>@8,A^w{`|gZRQ_`pa")$'.@?2$1>>0x”T"% 5$5k9(9B™‡b`,>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+5;>NUD7Nlƒ~n{pb^]pwƒ5 !! ! &(,-8@9)1AMJz‹˜…J++>4%4;ƒ§¯ˆF.@jM;\z9GX£¼¼>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>)8?BIW]@;Se}“Žz‚…ojfu€€z; !""""##"#!&*0+,7928AGHu—‘|EMJ"%4'Ac€}vf0*T_BCŠAIn”¢¢>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>)8?BIW]@;Se}“Žz‚…ojfu€€z; !""""##"#!&*0+,7928AGHu—‘|EMJ"%4'Ac€}vf0*T_BCŠAIn”¢¢>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\\\\\\\\\\\\[[[\\\\\\\\\\\\\\\\\\\\\\\\\]]]]]]]\\]]]]]]]]]\\\\]]]]]]]^^^]]\\\\\\\\\\\\\\\\\\\\\\[\]]\\]]]]]]]]]]]]]]]]^^^^^^^^^^_^^^^^^^^^____________]]]]]]]]]]]]]]]]]]]^^^^^^]]]]]]]]]]]]]^^^^^^^^^^^]]^^^^^___^^^^^^^^^^_^______]]^^^]]]]]^^^^^^^]]]]]^^_^^^_^^^^^^^^^^^^^^__________```_______``````______]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_____________`````_________``_``````^^^^^^^^^^^__________^___________________````````````aa```````aaaaaaaaaaaaa]]____________^^^^^^^^^^^^____________^^___`````````````````__`````````aa````_____`_______^____```^_______````````````aaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb]]__``________`___________````____````__```aaa`aaaaaaaaaaa``````````````a``_`_____a```````^__``````````````````````aaaaaabaaaaaaaabbbbbbbbabbbbbbcbbbbbb]]``````````````````````````````````aaaaaaaaaaaaaabaaabbbaaaaa``aaaa````aa`aa`____``````aa``aaaa```aaaaaaaaaaaaaaaaaaaabbbaabbbbbbbbbbbbbbbbccbbcccccbbb]]````````````a```````````````````aaaaaaaaaaaaaabbbbbbbbbbbbbbaaaaaaaaaaaaaab```````````aaaaabbaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbccccccdcccccc]]aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbabbcccbbbbbbbbbbbbbbbbbbbbbbaabaaaaaaaaaaaaa`aabbbbaabbbaaabbbbbbbbbbbbbbbbbbbccccccccccccccccccccddccccdd]]aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabbbbbbbbbbbbccdddcccccbbbbbbbbbbcccbbbcccaaaaaaaaaabbbbbbbbbbbbbbbbbbbcccccbbbcccccccdccccdddddddccddddddddddedddddd]]bbbbbbbbbbbbbbbbbbbbbbbbbbbbabbbbbbcbccccccccccdddddddddccccccbbcccddcccdddbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccdddddddddddddddddddeeedeeeeeeeeee]]cbbbbbbbbbbbbbbbbcccccccbbbbbbbbcccccccccdddddddedddddddcccdccccccdddcccdddccccccccccccccccccdddcccccccccccdddddddddddddeeddddddddddddddeeeeeeefeeefff]]ccccbbbbbbbbccccccccccccccbbcccccddcccddddeeeeeeeeeedddddcccdddddddddddddeeccccccccccdddddddcdddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffeeffff]]ccccccccccccccccddddccccccdddddddddcddddeeeeeeeeeeeeddddddddddddddddffeefffccdddcccddddeddddddddddddddddddddddddeeeeeeeeeeeeefffffffffffffffffffffgghh]]ddddddddddddddddddddddddeeeeeeeeedddeeeeeefffffffffffeeefffeeeeeeeeefffffggdddddddddddddddddddeeeeeeeeeeeeeeeeeeeeffffffffffffgggggffggggggggggggghhhh]]eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffggfffgggffffffffffgggfgheeeeeeeeeeeeeeeeeeeefeeeeeeeefeeeefffeffgggggggggfggghgggggghhhhhhhhhhhhhii]]eeeeeeeeeeeeeeeeeeeeeeeeeeeedeffffffffffffffgggggggggfffggggggggggggghhhghieeeeeeeeeeffffffeeeeffffffffffffffgggffgghhhhihhggggghhhhhhhhiiiiiiiiiiijjj]]ggfffffffffeefffffffeeeffffggfffffgggggggggghgghhihhgggggggggggghhhhihhhiiigggffggggggggffffffffggggggghfgghhgggghhhhhiiiihhiihhhhiiihiiiiiijjjjiiiijj]]gfffffgggggfeffffggfgffggffggfffgggghhhhhhhhiihiiihhhhhhhhhghhhhhiiiiiiiiijgggffggggggggggggggggggggghhhhhhiiihhhhiihiijiiiiiiiiiijiiijjjjjjjjjjjjjjjj]]ggggghhhhhhhghhhhhhghgghggggggghhhhhiiiiiiiiiiijjjiiiiiiiiihiiiiijjjjjjjjjkghggghhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiijjiijjjjjjjjjjjjjjjjkkkkkkkkkkkkkkll]]iihhhiiiiiiiiiiiiiihhghhihhihhiijiiijjjjjjjjiiijkkkjjjjjjjjjjjjjjjkkkkllkkliiiiiiiiiiiiiiiiiiiiiiiiiiiijjiiiiijjjjjjjjkkjkkkjjkkkkkkkkllklllllkkkkllll]]jiiiiijjjjjjijjiiiiiihiiiiiiiijjjjjjjjjjjjjjjjjjkkkkjjjjjjjkjjjjjjkkklllllljjjjjjjjjjjjjjjjjjjjjjiiijjjjkjjjjjkkkkkkkkklkklkkkklllkkllllllllllllllllmm]]jjjjjjjkkjjjjjkjjjjijjjjjiiiiiijjjjjkkkkkkkkkkkkllkjkkkkkkkkkkjjjjkkklllllljjjjjijjjjjjjjjjjjjjjjjjjjjkkkkkjjkkkklllkkllllllklllllllmmmmmmmmmmmmllmmmm]]jjjjkkkkkkkkkklkkkkkkkkkkjjjjjjjjjjkkkkkkkkklllllllkkkkkklllllkkkklllllmmmmjjkkkjjjkkkjjkkkkkkkkkkjkkkkkkkkkkkkklllllllmmlllllmmmmmmnnmmmmmnnnnnmmmmmm]]kkkklkklllkkkkkkkkkkkkkllkkkkkkjkkkklllllllllllmmmmlkkkkllmmmmlllllmmmmnnonkkkkkkkkllkkkkkkkkkkkkkkkkklllllllllllmmmllmmmmllmmmmmmmnnnnmmmnnnnnnnnnnnn]]llllllllllllllllllkkllkkkllmllllllllllllmmmmmmmmmmmmmmmmmmmmmmmllmmmmmmnnnnlllllllklllllllllllllmlllllmmmmlmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoooo]]llmmllllllllmmmmmlllmlllllmmmmmmmmmmllmmmmmmmmnnoonnmmnnnnnnmmmmnnoonoooooolllllmlllmmmlllllllllmmmmmmmmmmmmnnnmnnnnnnnnnnnnnnooooooooooooooppppoppppp]]mmmmmmmmmmmmmmmmmmmlmmmlmmnnmmmmmmmmmmmmnnnnmnnooonnnnnnnnoonnnnnooooooppppmmlllnmmmmnmmmmmmmmmmmmmmmmnnnnmnnonnoonnnooooooooooopooooopppppppqqqppppqq]]nnnnnnnnnnnnmmmmmmmmnmmmmnnnnnnnnnnnnnnnnnnnoooooonnnnoooooooooonooopppppppnnnnnnnnnnnnmmmmmmmnnnnnnnnnnnnnnoooooooooooooooppppppppppppqqqqqpppppppqqq]]nnnnoooooooonnnnnnnnnnnnnnoonnnnnooonnnoooooppppoooooooopppppppoooooppppppqnnoooonnnoonnnnnnnnnonnnnnooonnnnoooooopppoooppppppppppppqqqqrqqqqqqqqqrrrr]]ooooppppppppoooooooooooooooooooooooooooooppppppppppqpppppqqqqqqqqqqqqqqqqqroonnnoooopoonnnnnnooonooooooooooopppoppppppppppqqqqqqqqqqqrrrrrrrrsssqrrsss]]pppppppppppppppppppppppppppppppppppppppppppppppppqqqpqqqqqqqqrrrrrrrrrrrrrspooooppppqppoonnnnoopoopppppppppppqqppppqqqqqqqrrrrrrrrrrrsssssssstuusssttt]]qqqpppppppppqqqqqqqqqqpppppppppqqqqqqqqqqqqqrrrrrrqqqqqqrrrrrrrrrrrqrrrrrrsqqqqqqqqqqqqpoonnoopppppqqqqqqqqqqqqqpqqqqqqqrrrsssssssssstttttttttuutuuvvv]]rrrrrrqqqqqrrrrqqqqqqqqqqqqqqqqqqrrrrrqqqrrrrrrrrrrrrrrrsssssssssssstttttttrrqqqrrrrrrrrpppoppqqqqqqqqqqqqqqrrrrrrrrrrrrrrsssstttttttttuttuuvvvvuvvwww]]rrrrsrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssssssssttttttttssstttuuuurrrsssssssrrrqqqpqqrrrrrrrrqqrrrrrrrsrrrrssstttttttttttttuuvvuvvvwwwwvvwxxx]]ssssssssssssssssssssssssssssrrrrrrssssssssssttttttttttttuuuuuuuuuutttuuuvvvsssttssssssssrrrrrrssssssssrrssssssstsssttttuuuuuuuuuuuuuvvvwwwxxxxxxwxxyyy]]ttuutttttttsttttttttttttssssssssssssttttttttuuuuuuuuuuuuvvvvvvvvvvvvuvvvwwwtttttttttttttssssstttuuuutttttttttuuuuuuuuuuuuuuuvvvvwwwwwwwwyyyyyyyyxyyyzz]]uuuuuuuuuuttuuutttttuuttttttttttstttttttttuuuuuuuvvvuvvvvwwwwwwwwwwwwwwxxxxuuuuuuuuuuuuuttttttuuvvuuuuuuuuuuuvvvvvvvvvvvvvvvvwwwxxxxxxxxyyyzzzzzyzzzzz]]vvvvvvvvvvuuuuuuuuuuvuuutttuuuttttttuuuuuuuuvvvvvvvvvvwwwxxxxxxxxxxxxxxyyyyvvvvvvvvvvvvvuuuuuuvvvvvuuuuuvvvvvvvvvvvvvwwxxxwwwwxxxxxyyyyyxyyz{{||{{{{{{]]wvvvwvvvvvvvvvvvvvvvvvvuuuuuvvuuuuuuvvuuvvvvvvwwwwwwwwxxxyyyyyyyyyyyyyyyzzzwwwwwwwwwwvvvvvvvvvvwwvvvvvvvvvvvwwwwvvvwwxxxyxxxxxxyxxyyyzzzyzz{||}}||||||]]wwwwwwwwwwwwvvvwwwwxwwvvvvvvvvvvvvvvvvvvvvvvwwwwwxxxxxxyyzzzzzzzzzzzyyyz{{{wwwwwwwwwwwwvwwwwwwwwxwwwwwwwvvwwwwwwwwwwwxxxxxxxxxyyyyyyzzzy{|||||||}}}}}}]]xxxxxxxxxxxxxxxxxxwwwwwwwwwwuuvvvwwwwwwxxwwwxxyyyyyyyyyyzz{{{{z{{{{{{zz{|||xxxxxyyyyyyxxxxwwwwwwxwwwwwwwxxxxxxxxxxxxxxxxyyyyzzzzzzzz{||{|~~}}}}~~~~~~]]xxxxxxxxxxxxyyyyyxxxxxwwwxxxvvwwwwxxxwwxxxxxyyyzzzzzzzzzz{{{|{{{|||{|{{|}}}xxxxxyyyyyyyxxxxxxxxxwxxxxxxxxxxxxxxxyyyyyyyyzzzz{{{{{||{|||||~~~~~~]]yyyyyyyyzzzzyyyyyyxxyxxxxxxxxxxxxyyyxxxyyyyzyyzzzzzz{{{{{{||}|||}}}}}}}}~~~yyyyyzzzzzzzzyyyyyyyyxxxyyyyyxxxxyyyyyyyzzzzzzz{{{{|||||||}}}}~~€€€€]]zzyyzzzzzz{{yzzzyyyyyyyyyyyyxyyyyyzzyyyzzzzzzzzzzzzz||||||}}}}}~~~~~~~~~zzzzz{{{{{{{zzzzzzzzzzzzyyyyyyyyyyyzzzzzzz{{{{{{{|||||}}}}~~~~€€€]]{zzzzzzzzzzz{{{{{{zzzzzzyyyyyyyyzzzzzyyzzzz{{{{{{{{{|||}}}~~~~~€€€{{{{z{{{{{{zz{{{{zzzzzzzzzzzzzzzzzzzzzzz{{{{{|||}}}~~~~~~~€€€‚‚‚‚‚‚‚]]|{{{{{{{{{{{{{|{{{{{zzzzzzzzzzzzzzzzzzz{{{{|{{{{{|||}}}~~~€€€€€€€|||{{|||||{{{{{{{{{{{zz{{{{{{{{{{{{{{{{{{{|||}}}}~~~€€€€‚„†…ƒ‚‚ƒƒ„„]]|||||||||}}}|||||{{{{{{{{{{zzz{{{{{{|{{|||||||||||||}~~~€€€€€€€‚‚|}}||}}}}}}}|||||||||{{{{|||||||||||||||||}}}}}}~~€€€‚‚‚ƒƒƒ…ˆŠˆ†„„„………]]}}}}}}}}}}}}|}}}|||||||||{{{{{{{{{{{}||||||}}}}}}}}}~~€€€€€‚‚‚‚‚‚}}}}}}}}}}}}}}}}}}|||||||||||||||||||||}}}}}}~~~€€€€‚ƒ„†‡‡‡††‰ŒŽŒ‰†††………]]~~~~~~~~~~~~}}}}}}}}}||{{{||||||||}}}}}}}}}~}}}}~€€€‚‚‚ƒƒƒ‚„‚‚„„ƒƒ~~~~~~~~~~~~~~~~~}}}}}}}}}}}}}}}}}}}}}}}~~~~~~~€‚ƒ„†‡ˆ‰ŠŠ‹Š‰‹’‘‰‰ˆ†††]]~~~~~~~~~~~~~~~~~~~}}}|||||||||||}}}}}}}}~~~}~~~~€€‚‚‚‚ƒ„……„ƒƒ„……†~~~~~~~~~~~}}}}}}}}}}}}}}}}}~}~~~€‚ƒƒƒ‚ƒ„†‡ˆŠ‹‹Œ‹Š‹ŽŒ‹‰‰‰]]~~~~}}}}}}~}}}}}~~~~~~~~~~€~€‚‚‚ƒƒƒƒƒ„„……†‡†…………†~~~~~~~~~~~~~~~~~~~~€€€€‚ƒƒ„„ƒ„…†‡ˆŠ‹‹ŒŒ‹ŒŽŒ‹ŠŠ]]€€€€€€€€€€€€~~~~~~~~~~~~~~~~€€€€€‚ƒƒƒ„„………††††‡‡ˆˆˆˆˆ‰Š€€€€€€€€~~~€€€€‚‚‚ƒƒƒƒ……†††‡‰Š‹ŒŒ‹ŒŒŒŒŒ‹ŠŠ]]€€€€€€€€~~~~€€€€€€‚‚‚‚ƒ„„„„………†‡‡ˆˆ‰ŠŠŠŠ‰Š‘€€€€€€€€€€€€€‚‚‚ƒƒ„„„††††‡‡‰‰Š‹‹‹ŒŒŒŒŒ]]‚‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€~~€€‚ƒƒƒ„„…………††‡ˆˆˆˆ‰Š‰ŠŒ‘˜ ‚‚‚‚‚‚‚‚‚‚‚€€€€€€€€€€€€€‚‚‚‚ƒƒƒ„„…††††‡‡ˆ‰ŠŠŠ‹‹ŒŒŽŽŽ]]ƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒƒ‚‚‚‚€€€‚‚‚‚‚ƒƒƒƒ„„„„…††††‡‡‰ŠŠŠŠ‹Ž”›¢ªµ¿ƒƒƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚‚‚€€€€€€€‚‚‚ƒƒƒƒ„„„……†‡‡‡ˆ‰‰ŠŠ‹‹‹ŒŒŽ‘ŽŽ]]„„„„„„„„„„„„……„„„ƒƒƒ‚‚‚‚‚‚‚‚‚‚€€€‚‚ƒƒƒƒ„……………„††‡‡ˆˆˆ‰Š‹‹Œ”—¥¬¶¾ÇÐׄ„„„„„„„„„„ƒƒƒƒƒƒƒƒ‚‚‚‚‚‚‚‚‚‚‚‚‚ƒƒƒ„„„……………†‡‡ˆ‰Š‹‹‹‹‹ŽŽŽ‘]]…………………………………………………………„„„„„„„ƒ‚‚‚‚‚ƒ„„„……„……„…†‡‡‡ˆˆˆŠ‰‰‹‹•œ¢«³¿ÅÍÔØÜà………………………………………………„„„ƒƒƒƒƒƒƒ„‚ƒƒƒƒƒ„…„„……………………†‡‡ˆˆˆ‰Š‹ŒŒŒŒŒ‘‘‘‘]]††††††††‡†††††††††††………„„„„„…„„ƒƒ‚‚‚ƒ„…………†††††…†‡‡ˆŠ‰ˆˆŠ‰Š’— ª´¼ÃÊÑÕÙÜÝàㆆ††††††††††††††……………„„„„„„„„„„„„„„„………………†††††‡‡ˆ‰‰‰ŠŠ‹ŒŽŽŽ‘‘‘‘‘’’’’’]]‡‡‡‡‡‡ˆˆˆˆˆˆ‡‡‡‡‡‡‡‡††††…………………„ƒƒƒƒ……††††††‡‡††‡‡ˆ‰ŠŠŠŠŒ’™£«¶ÁËÐÔÙÙÛÝÞßà㇇‡‡ˆ‡‡‡‡‡‡‡‡‡‡††††††††…………………††…………†††††††††‡‡ˆˆ‰Š‹‹ŒŒŒ‘““’’’’’‘’““’’’]]ˆˆˆˆˆˆˆ‰‰‰‰‰ˆˆˆˆˆˆˆˆ‡‡‡‡‡‡‡‡††††…„„…††‡‡‡‡‡ˆ‡‡‡ˆˆ‰‰ŠŠŒŽ’œ§µ¾ÇÏÔÖÙÜÜÞàâãä刈ˆ‰‰‰‰‰‰ˆˆˆˆˆ‡‡‡‡‡‡‡‡‡††††††††††††††‡‡‡‡‡‡‡‡ˆˆ‰‰Š‹ŒŽŽŽŽ‘’””“““““’’““’’’]]‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰‰ˆˆˆˆˆˆˆˆ‡ˆˆˆ‡††‡‡‡ˆ‰‰‰‰Šˆˆ‰‰‰‰Š‹‹Ž‘–¥±½ÁÊÓØÛÝßããäåæçç牉‰‰ŠŠŠŠŠŠŠ‰‰ˆˆˆˆˆˆˆˆˆˆ‡‡‡‡‡‡†‡‡‡‡‡‡‡ˆˆˆˆˆˆ‰‰‰‰ŠŠ‹ŒŽ‘‘’“““““”””““””“””]]ŠŠŠŠŠŠŠŠŠŠŠ‹ŠŠŠŠŠŠŠŠ‰‰‰‰‰‰‰ˆˆˆ‰‰ˆˆˆˆ‡ˆ‰‰‰‰ŠŠ‰‰Š‹ŠŠŒ—š£­¶¾ÅÏ×Þâääåçèèçççè芊Š‹‹ŠŠŠŠŠŠŠ‰‰‰‰ŠŠŠ‰‰‰‰‰ˆˆˆˆˆ‡ˆˆˆˆˆˆ‰‰‰‰‰ŠŠŠŠŠ‹ŒŒŒŽ‘’’“”•““””•––•••••••]]ŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒ‹‹‹‹‹‹‹‹‹ŠŠ‰‰ŠŠŠŠŠŠŠŠ‹‹‹‹‹‹‹‹ŒŽŽ“˜›£­¶ÂÌÓØÝãæçèèççêéééééꌌŒŒŒ‹‹‹‹‹‹‹ŠŠŠŠŠ‹‹‹‹‹‹ŠŠŠŠŠŠ‰‰ŠŠŠ‰‰ŠŠŠŠ‹‹‹ŒŒ‹ŒŽŽŽ‘““””•–•–––—˜˜™˜˜—–––]]ŽŒŒŒŒŒŒŒŒŒŽŽŽ’“•œ£±¾ËÑÖÚßãäçèèéêéèééêêéé錋‹‹‹‹‹ŒŒŒŒŒ‹‹‹‹‹‹‹Œ‹‹ŠŠŠ‹‹‹ŒŒŒŒ‘’””””•——˜˜˜˜™›œœ›™˜——]]ŽŽŽŽŽŽŽŽŽŽŽŽŽ”™œŸ§¹ÊÒØÞààáäæççèèéêêêêêêëëëꎎŽŽŽŽŽŽŽŽŒŒŒŒŒŒŒ‹‹‹ŒŽŽŽ‘‘’’“””””•–––—˜˜š›››››ššš]]‘‘‘Ž’‘“‘’•–›¡§®ºÊ×áàâãâââåæææçèéêëëêêëìííì‘‘‘ŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽŽ‘‘’’““”””•–––—˜˜˜˜˜™™š››œœœœœ]]’’’’’’’’’’’’“’’’‘’’’’’‘‘‘‘‘‘‘‘’“”“‘—•’’”—›ž§·ÆÑÛäççèèæååçèèççèéêëììëììíîîí’’’’’’’’’’’‘‘ŽŽŽŽŽŽŽŽŽŽ‘‘‘‘’““”””•–•–—˜˜™ššššššš›››œ]]””””““““““““”””“““““””“““”””“””“’’•—”“•š›§´ÀÏÜáãåæçççççéëëêééêëìííîííííííì”””””“““““““’’’‘‘‘’’‘‘‘‘’’“’’’““”•••–—–—˜™™šš›œœœœœœœœœœ]]–•••••••••••––•••••••••••••–”•–—˜˜˜—›šž¬¼ÊÔÚ×ÛÞàãåæèåæèéêëëêëëëìííîîííìììëë–––––•••••••”“““’’’’’’“””’’’’’‘‘‘’’“’’““””””“••–———˜™™šš›››œžžžžžžžŸŸ]]––––————————————————––––––——–—˜˜˜˜™™²ÊÖÜâäãàßÞáåäãååçèéêìììììììììííììëêëëë–––––––––––––••””””””“”””““““““““””••””••••••——˜™™™š›œœžŸŸŸŸŸ    ŸŸŸŸ  ]]˜˜——˜˜˜˜˜˜˜˜™™™™™™™™˜˜˜˜˜™™™˜››˜—ž®»ÏÛääãååâääâããââææçèéêìííìììëìììììëëëëì옘˜˜˜˜˜˜˜˜˜˜———––••••––••””””””••••–––––––———˜™ššš››œžŸŸŸ ¡¡¡¡¢¢¢¢¢¡¡¡¡¡¡]]ššššššššššššššššššššššššš›››œšš£³ÆÔÛáâäæççæåäææçèçåææçèéêëëêììëëëììììëëììííšššššššššššš™™™˜—––––——–––•••••––––——˜————˜˜™šš›››œœžŸŸ ¡¡¢£££££££££££££££]]œœœœ›œœœ›œœœœœ›œœœœœœœœœžœ¤µÈ×Ýàâãåæææççççççççççççèèééêêëêêëëìììììêêìîí뜜œœœœœœœœœœœššš™™™™™˜˜˜˜—•••–—˜˜—˜˜™™™™™ššš›š›ž  ¡¡¢¢£££¤¥¥¥¥¤¤¥£¤¤¤¤¤]]œœœœž ŸžžœŸŸžž £±ÄØààßáääåæçççèçèèèèèèçççèèéèééêêêëìììììíììëéêìžžžœœ›››››››šš˜—–——˜™™™šš››››››œœœžŸŸŸŸ ¡¢¢££¤¥¥¥¥¦¦¦¦¦¦¦¦¦¦¦¦¦]]žžŸŸ ŸŸŸ    Ÿ ¡    ¡¡ŸŸ¢£¥¶ËÙÝáááãäãåæççèèèèéééèèèèèçèèèèèééêêëìììììëêëëèé잟ŸŸžŸŸŸŸŸŸžžžžœœ›š˜˜˜˜š›œœœžžžžŸ ¡¢¡¡¢¢¤¤¤¤¥¦§§§¨¨¨¨¨¨©¨¨¨¨§§]]¡¡¡¢¡    ¡¡¡¢¡¡¡¢£¢¡¡¢£©¹ÌÙßãàßàáàáäæçèèèéééééèèèçççççèèèèéêêëëëìììììèéìêìî¡¡¡¡ ¡¡¡¢¡¡  ŸŸžžžžžž›ššš›œžžžžžžžžŸŸ    ¡¢£££¤¥¦¦¦¦¦§¨¨©©©ªªªªªªªªªªª]]£¢£££££££¢£¤¤¤££££¤¤¨«·ÊÛààáßßáããáãåæçèèèèèèèèççççææææççèèéêëëëëëëëìíèéëëëí££££££££££¢¢¢¡¡¡     ŸŸŸŸœœœœžŸ  Ÿ  Ÿ  ¡¡¢¢¢£££¤¥¦§¨©©©©©ªªª«««««¬¬¬¬¬¬¬­­]]££££¥¤¥¦¥¤¤¦¤¥¥££¨±¸ÀÏÚÜÞââßããáàâææäåæççççççæææææææåææçççèééëììììíííííîïïí¤¤¥¤¤¤¤¤££££££¢¢¢¢¡¡¡¡ ŸžŸ¡¡¡¡¢£££¤¤¤¤¤¤¤¤¤¥¦§©ª«««««¬¬¬­­­­­®®®­­­®®®]]¨©©©§¥¥§¨¦¥¥¦¨ª­³½ÉÒáàÞÞàßàäàäæåãããâåæææåæææååååååååæçççèéêëííïððñððñóñïôöô¨¦¥¥¥§¦¦¥¥¥¥¥¥¥¥¤¤££¢£¢¢¢¡ŸŸŸ ¡¢£££¤¥¦¦¦§§§§¦¦¦¦§¨©ª«¬¬­­®¯¯¯°¯¯¯°°°°¯¯°°°°]]¯²³³®ªª¬®­«ª©¬´¾ÊÔÛßÜÝÝÞàáàáäââäåããåäåæåäåååååååååååæçèèéëìíîïñóôôôôôôéâîøù¯«©¨¨©©¨§§§§§§§¦¦¥¤¤£¤¤¤¤£¢¢¢¢£¤¤¤¤¥¦¦§§¨¨¨¨¨¨¨¨©ª«¬¬­®¯°±²²²²±±±²²²²³³²²³³]]´·¼´´®±³º¹·´´´¼ÌØÚÙØÙÚßÜÞàãáââãããâââããääåååååååæçççèéäìçîîññîôô̯Óëîá²eJe…œ´±¯²®ªª©¨©¨¨©¨¨¨¨§¦¥¥¦¦¦¥¥¤££¥¥¥¦¦¦§¨¨¨¨©ªªª©©©ª«¬­®°²²´·µ³¶µµµµ´²·³³²º´²··]]¹½¹»¸¸¶µ¿ÀÂÀ½¾ÅÐØØÖÖØ×ÞÚàáÞâààáâââáááââããäääæææçççèéëïïôóóòõúÜŽ>*Inv]1>75=3¹¶¼À¼µ±¬«««ª©©©©¨¨§§§§§¦¦¦¦¥¥¨§¦¦§¨¨©©ªªª©©¬¯¬¬­®¯°²´·º»ºº½ººº·¶¹·µ·¸¶³µ¸¸¸]]·»¼¿À½½ÅÂÅÉËËÏÖÚÚÙÚÜØÞÝÞÞàáááàáááààáááâããääæçççèéëìîìòòó÷úë°T,1:6.)4AGB@7>·¿ÁÂÇļ·¶µ³±¯¬¬««ªª©©¨¨§§§§§§¦¨«¬«ªª«ªª««¬­®­¯¯°±²´¶¸¸»¿Äĺ¿Á»¼¾·¶¿¸»»º¹¹¹]]¾¾ÃÉËÍÐÓÔÏÌÎÐÐÒÕÖ×ØÛÙÛÚÞàÞàÝÞÝÝÝÞßàááááââãäåæçèéêìîïñôöö÷öÛ(/-096756EbeD;=¾¹·ÀÆÊÅÂÁ½º¹·µ³±¯®®­­¬«©¨§§¨¨©ªª©©ª««¬«¬®°±±¯±±²³µ¶¹¼¿À¿ÀÄÉÇÃÁÄÀ¿Ã¾»¼º¾ºº¾¾]]ÅÊÒÙßÜÞÛ×ÙÔÒÑÑÒÔÔÕØÛÚÞÙÙÞÞÝàÝÝÝÜÜÜÞßàààáâãäåæèéêìïððóîóôé°F(.27C>8<=8GUzc;=Å¿ÁÅÊÕÒÏÉÄÃÂÀ¼¹¶³²±°°®­«ª©©©ª««¬­¯±¯­®¯°°¯¯°²³³´µ¶¸»¾ÁÁÃÅÅÃËÇÆÅÃÂÂÀ¿ÁÁ¿¿Â½½]]ÒÚÑÜáÞßáÜØÐÏÑÒÔÖØÙÛÜÜ×àãÜßÜÛÙÚÚÚÚÛÜÝßßßàáãäåçèéêíððîëõðÖ}3(',2?@;?8?@?F]\?;Ò¸½ËËÛßÙÎÊÊÈÅ¿¼·³²±°¯¯®¬ªªª«««­¯®®®¯®¯°²³´´µµ´´µ··¹»¾ÂÂÃÇÊËÇ»¡½ÈÇÃÇÅÃÃÃÁ¼ÂÂ]]È´„ê÷íçÜÒÑÔÕÖÖ×ÙÛÜÜÚÔÕìòòïäÝÛÙØÙÛÝÞÝÝÝÞßáãäåçèêîðïìëç·N") ",::BA;=?BA<È“…±ÂÔØÍËÌÉÈÅÀ»·µ³±¯°¯­¬¬¬­­°±±±´»ÂÆ»¸µ³³´³²µ¶·¸¸¹¼¾¿ÇÇÇɆZF”•„~°ÂÊà±±]]—rVW¿øüøôîîæáàÝÛÛÝÝÜÍÊ¡ÃõøùõøðæßÜÜÛÚÛÛÛÜÝßáãäåçêîñïëÒ‚+&& "*0;J>CJBAJFFUHC>—‹y¿¼žÁÒÍÍÏÎÐÍÈþ»¹µ²²²°¯¯¯¯°±´¼ËàðõóìäÖÆ»¶¶¸·¸¹ºº»½¿ÂÄÄǺ RA6`JRZY\^n™¸{{]]YOVV£æï÷øîôùëèòèÞÝÜÍÁ»{¡ÂÝêâôç×ÛÝ×ÔØÜÕÙÚÛÞÞãäåêèëâ³pD'('!)5>J?@?DBAHLN[@@6Y^`É® ÂÎÎÏÑÒËÁÅÀ½··´±´´¯³¾ÃÐÑÙóÿÿóóîòúì½µ¸º¹¾¼¾½»½¿ÁÂŵ|MC,7.?<\eORGMY]YY]]^TRU·ÓÎçþòæ÷õíùòâá°£®“‡¬¾ÓÏ×âߪ¯¹²¬ÔØÚØ×ÜÞÜàäèèè·`1+2$% )35=C@>A;?B?FSP?:7^]U•°º§Ž—ÄËÔÒÑÊÈÆÇÁ»¸º¸³´¹ÄßæÚÒßù÷÷íåíñððâĺºÌÉËÉÄľÀ¿À±uC<95'&(TqZPQJJMPP]]XOQbªÌÑÝëøæìôêîõ먀—«¯ÂÍÎÏÄÇ°¥¦»š³äßßÝÝÞâÞâàÒŠ2$.4%"(.1254AGBA?@=>CDE?C4,XXJdŸ¸²³™ŒÈÑÑÍÎÒÒÐÊÃú¼ÂÄÍÜèÖÒÝñ÷ôéÝÜòëüùèÒ¿ÌÜÞîñÔÑÒ¹¬ˆuE=@=17''-AWWSNJLLDD]]VPKk©º¶Áäñïá¼x¶²˜œ¤¢¶°¾ÆÊÍϽü³Š¹ÛÊÄÐÖÝåäÃZ#*(1J.)*22*.5=NOJBIDB=DE;3/-VZYT„ò¬§w‹ÖÝÞÜÓÑÒÌÈÅÊÄÓÑÕÚÔÍæïûúáßÚáôøûöÒÑØÖãíëåÝÓ»¤sZMJ=4(#'')5@JLSIBDBB]]LQW{š˜˜×Þêƈ § ¦²½ÉÃÍ¿¼®±»µÂÂÇÇ»š‘š¼·¸®·èç°I-,&0;MLD950,.3:L[IDDFC9JE:83,LL^Qn¯¹¶º~U”ÌÜáÙÒÎÔÐÑÃÁËÖèÝÐçñóøõèéëñ÷ûùëÕÜèöîåÛõØœmTR?85.&$.,*7,7??=@@@]]QT|—š ·ª¸³š•¹ËŸ›³½ÏãÝÆ‹oUH2W{œ¢µ»³Ã¹®ÀÄšÒ¶C+933BA9ND7300./37A69BCC?;:53,-QJXep¹¤©£‡XL]n‰ ¦¿ÇÏÈÈÐÞèàØÚÙáóøîæîñïëæõÒÐÞðíÀ±Ì¿šc8=IIG13'*#2=' !;::]]x|ž¯©ž¦“”¡„†›‰}—¡¸ÓÓ¨K-(,16/$=N€¹ÄÁÏÓ«À‹U2,+/76?I7F900.327@;.0.0xfQl^m”scI7.532BJTŽq‹½ÓÙÒËÊÐÇÏÑߺÕÃÚçënkomz~jI=(8;@92+&*44742(%AD>99]]o~m‚u®Ÿqvrn~}|g\i„‹›­v&*)+.454=75:W ½ÊθwD44434:?EBII?<5,2,/)0I?==>B;0+/120oY4K6'&'0-.+342,+056FGSj{hir|`LU12:waz}†7G:BCNHJMQROOTg\:%,**284/767=A8BjºÜ‹48=:7:55>90+,10&&+(2,1.,*3,/1.-,20534.662.4*/334=93.8.$-3@<=[`l`@.)'-.14>BA;2;8@98:>@G\RNI6,)$/-228:A==IQ8-*!0'*,,*$0,)733''4--256/0.<946947<5/>7095%)6871)&%+68174.)77=<3;44&$- !9;;BB]]/6-5&*/$''.,"%+&,+.+*'//'$!+**,/.,'*'0'$#4(./1.9FC9/,/,000$)/0'.**-,,+-,*/006+2#.32.0+/,1+,637857=849D5-?6,32+/3?:3"(0=NNH;45#4'"TxvU?7/ 8W<-/!%&4 *>A>>]]$&22/24C8 $0/&"-$& ")$ )'!)(')-&)+#%$$ (+./&#'%-"'-1.**'"**'/!&-*%''%),+$.2(.,03/)!,36//,<1/9030563>K>0<+(01;Q.:8:/6.GjveHIB4;YvjB30  04?@CC]]-/3458:]V*069-.%-# *#, *++/3(*,**"$)+$/.0%56-"!"/=5$-#&&1& *,"&)$'10-/.+2(((0522771*,8,'7(3*+14HPD>@1#$*]X?B4>-clxr~€„_HB482;GB.'01!,E]_SS]]&3:9J5&('!(+%,-'1=? (!+&))3-('21.7r’~ˆ‰Š†§»«¬¯¢œ€€]]jhlklg^DON>A6BMBKA>1*1>K'$!.90Ut1):4KVC13!#:UYL9E8&/5N`}ƒL076*+()0;F=-&jiixref^[T\`PNaJG@NU_N9@,LR*)*385#'utt|}vxuvq{lgmd]hhk~zYBu€qaRRG=/eab€•“~xeWZ€‚”xcZJW“´¼¶¨ŸŠ¦§¡™°¡˜¬¹¾´žž]]nmesolpmrolppmlnpnpglqkkjhqqlkooqsqpvtw†…€~{jLW]jmoq‰U!*@FZ—‚P25C_],2830 ,nqtswuskoprwyˆfotp€}vii}wudWJHDKQd–Ÿ£•†zmaPQNXvcSPRQo”¦ £¡¦ª°©¥ž´ÁÀ¸·³­žž]]c[XaUae[]d]bc`_cgfb^]hf_hcekejkgjpdgbdlhhpsrqtmtvnjdbsU-:Pj]cI4F^hF*.1,#/cafmgijlkiklm|x€‚stpeajqqxr}€„¦§¡©“ƒ|l[SNILJ_x\OQFLOPsxv¾Èº°¬´¿¾Åº§¢¥›œ™™]]VSQSTXYWU[X`WPTX[YSTGR]PTJNXZ^\YacSNIS]]]\gd_^cgtienusc*3ltleJ7FQWO,245,.V]kafkklfc^_`hoo€…ty~‚…“¢«¬¨£šsfxm`RQMLKKHkVKTLHNKO`’m‰±­¤§¯ª´°®š˜¦««´ÁÁ]]QSV_aWOUNSRUNFKKMOHMGCID@>AACD?=64788=?;2.(-+126AOF?WUF?IWWUMS[UC=@AREPIXP;)%07Kdaiuxy—´³£±‚£œ³¾ÅÇËμ±ÅÑĻ¶«¾³ “˜|\MLSgx{bPJFGFHKHIGL=a—sKMMMNJIKFIQOQ\šysikxƒžª¨¥Ÿ©²°]]Á¿¾±·¹³£¥š–˜Œ„uvtloljfacfjqu{~y~|vvossxptuumkwt}}…‚~y{yizzƒƒ…ˆ””‘‘”Œ–‡Á¾½À´¶·²«³¬°©—£²ŠnT@Xgr~vbQGGGJGIMFDJLFAi˜„MHGNPJKKFIGNMNIs˜{prˆ¦£•œ˜’§«¤¤]]½¬­§¬£©¦¦¥¥¡–“‹‹Š„{s}„ƒytuƒ~~wpkttss|yyuov†“–•žš—”˜ž£œ¤˜–’—ŸŸ  —’’“‰}½¸ºÏ¹­«£Ÿ¦¡™ƒ_\JBIi‚†zcQGGIJNGILJGJNLK>g™•SKKQILLHHFIENKMNElžsr} Á¶Ÿ’›£¦ªª]]ÕËͽ¿°¥ž¥¦ž§ªª¥Ÿ¨©£¬­¡’wujy†vt}r^wxxpjaagcq‚ƒ†‡„‡…„ƒ‹—–•˜•”•›Ÿ˜›¢™¢¢›–Õ»Á½­Ÿœ‰ƒqbH.8U_{…~hQJGIHIIJELHFGKMKHAk—”[IILINMKLJHIGDLNMN=u¢rrs’´Â±©©¢¨··]]­µÃÅÎÈ«›¤³º¯²³²¨«¨ ž«°¯¬œ¡µ§•l[|ˆ{tmQNJJHJOf{‚|€rwnlormqvsvx~€…†|z„puuw}„­«¸”‹lG3-4Onˆ‚jQFFGLKIHHIJJIGIKMKJAv”™\EIHMLNLLMIFIFFJMMQL?|¥suk„ªÈÀ©«¼ÇÇ]]Ž“ ©¬±³±°¶Ä»·ÀÀº¼´¤­©¯­®ªŸŸ©ª¥Š~ˆ”}`XXYKGFMZck„‚‚ƒsywnsuqqwwwu|}}‡‹‡o[[Z[brŽƒ\H/.?Yn€…zkUDFIFFKFHIJIHGGDLKLHLL|–š[IIJLLLNMLLIFIHEHLLOOG<‚¢utr}ž¿Ç´µ¸¸]]Fh€Š’™¥°°¹¾¿ÅÂÈÉÈùÄÀ²±®¤£¬¯˜‰…ŽŒˆ‰€pejqm€ƒŒ†qem‹‹‹†„‚†‚z|…~ˆ„xjZQJNXYF2(/<_n‚Œ€fNB>DHHGHHFGHJJHGGGMPIGGQ“šaCHHKKMNNMLLJHIJEGKKMPONB‡¢hacp’°ÊÄ°°]]7&&,A\s‡‘•¢±®ª£ºÄÀ¿±³¹ÄÆÈ´·¾À¹±°¨µ¾¿¾½µ¨¡Ÿ•‰’’}lder•—…„†ˆŽ’Œ~xzh\`gki7Wg|‡‰~dLCCEHHJIFFIIEIIHGGGJKKGKHT”‘˜bFKGKJNMNNMLLJHHJFGKLMOPNE?“ \]awŽ§ÂÇÇ]]€s]@20CYm€…ys‘´³®­¢®ÃÀ¹ÀÅÏû¹·µ¶¾µ»Á½»½º²¯ž›žš‡š§¢‡„†|}ˆ„–¬©£žœŒ“Š‹€Œ}`I=?IHEIIGFFHGEFHGFFFHJLMHIEW˜‰žgCMIHJKNQNMMLKJIGIGGIKMONMUKIžœY_[uˆ¥½½]]|‰‹ƒslS7 +6@_v™›ªŸŒŽ–Ÿª¯´·º´®¨²µ¶®¦ž¤«©šŸ‹–™««¬‡«µ­››•Œ——ŽŸ¨§°¡yw}š¨œ |aICBGGHGFKKDGFEEGIIGFGHJKKJHIDg–ˆ£dENHFMJNMPNLLLJKJFIGEFIMNNOMOOQ©’S[^i}““]]>F_w‘ogT9)&5Qqƒ”œƒ}„”™˜˜¬°¨§­§²±«¦£¤¬ “Ÿ™“ƒ“™•—®´ª°´®­²¦› ——¤ŽqZX~ª¥¢>CGIEDIJJJEBGEFIKJEDFIJKLKIGFFo›ƒ¨mAJKNHGOOQLNKLLJKJEIHEEHKLNQMOMO]·OX]h||]]FF@@BQu‡xnbR+,J`kuvx{|€“”ƒ’©®¯®µ¶¯««Ÿ§¥ªž‘Ÿ¦ ˜¡¬§°¯µ¾·­¯»µ²³—–‹…‡¥¡¢FHEIILGGGCDGDGIIFDFIJJKKJHHHI—€¡oENOLIJHKNMQMKLLJKJEIHFFIIJNMPMOOP\¼ŽT^eqq]]HGFEGC9?Zn‘–…‡pnV8# "2?Wbn{™–…€ž›žœ§©¬›¤¢©ª¦­©³°¡¡­žˆ‘š¤³¸§§©¬£“”†{™œœ¡HIIIHFGFEDEGHHECDFHLKHMIKJEGŠ–w¯qILHJJJJKLMMMLLKLMLJGIIGFGIKKONMNNNU_ÁŒS\[[]]IIJIGJGDF?GCpŠ™‰zxi]K+!3Pdu£Ÿ€~ƒ–ˆ›‹Ž’©¥¥°±ÀȽ¶¸º™§«Ÿ¡±¬Ž‘ž›˜–‹{ihvŠ¢IHHHHDDDFHIGEDCEGLKGIMIJG@O“’p©yFGJLGJJJKLMMMKKJKLKHFIHGFGIKLNONMLJLPhƆUWW]]IJJIGIHGFDGEB?YnŽ•ƒ{pqsL1' (4Mn€wh‡ŠŠƒˆžž“£©¹È½·´¹µ½¸µ¥ªª¦¤Ÿœ˜…w~†‰‘– IGEDDDFHHGFEDAHKGJKIOHGJDU›‘r¯{KIMLIJIJJKLMMMKKKKKJHFGGFEEGJKJMNNOONOEl΀PP]]GGGGKIFGGKGFD@C>BJl›•yo{nYB!$:K]s……Œˆ„Ž‹Ž’¡À¦§®¯º·³·»µ´¤¯¼¤“Ÿ¨Ÿ£•††–šGFEDCFHHFEDEFGIIIKKHGKHJ_¥l¢ƒLHFHHEHIIJKKLKKKKLLKIGFHGEDDFHJKMMMNNMMRL€Ï||]]DDFGGHILILFHIJDBHGG@VkŒžŒx{lzc=',2;Ywˆ“‡‰“„‹£š™¨ª¯­§·¾½±®±²¬´¶­¯¢š›¨ªDFGHHGECCEGIHLIFLKGJILCi­Šj±ŽGFINIDGKHIJKKKKKJKLKJHGFIHFDDFHHLLMNOLKNJOP”ÖÖ]]GDCBEFFIFIHMGHHIFECI?@Z¤žMMl|€qT* #0Icrx{ƒu|{GIIIIJGHJGEFGF?Y¤²rX¦¬hGLHIGEGHHHGGHJKMMLJIJJKKJJJIGEDFHGDCCDFGHIJLMOLMNNMM]]HGFEFDA@BFIKFDA?@BCCDEFGGGHHIIEGFBGGICCCC;E?Fp’±¢eVT[xŠsK,*>RnwsprHIIIHFGHHGGGFAV©¶gZ©·vDGLHIDGGGHHGGHJLMMLJJJKJJJJJIFDCFHFCBCCDEGHIKMNMMMMMM]]HGGFEEEEDCCCHIIE@>?ACDEEFFGGFHGGGGFCDCEADF@CEGKPe•¢‘uGLex„pS.#*DUrƒHIIIHHIFDFFDCb­­gY¤´w@EKFGEEFFFGHHHJKLLLJIJJJJJJKKIFDBEGFCBCDCDFHIJLNNNMLMM]]IHHHGFDDDDCBEJMJC??@ABBCCDEEHIJEEIHDCKDEEB@A?C>@A9Cz–¬žmQO\}„zT3# $6IIIHGGGEFFCNe³®]T«¸|JJIEGHCEFGFFGHIJLKKJIIIJJJJJKKIFDBEHGDBCCDCDFHIKMMMMMLL]]HHIIHGGFFEEDDDEFGHEC?@@AABCCEBHIHGDIGDGGDDFBD@DAEGG?HPd˜¬”w_Tk|ƒvX8 HHGFEFEDFBEt¸¨^[«¹DFEFHFCICHGGGGHIJKJJIHHIIIIIIJJHECBFIHECBBDBBDEGIKLMNNLL]]IGJFIGGHIGEEECBBDEFFD@==?ACCBBDECEGHFFFEEFFEFDCAACEFEDACTuš°¢rLJFiƒze=' IGFEHEEDCG¼§WV¯¼‚L@HGFFEEEFFFFFGIJKKKJHHHHHHIIIHHGEDACFFDAABCDDCDGIJKLMLLL]]FDIHIHGIIHFFFEEFFFECECA@@@?=??ABBCEEFFGFFFFEFFEDCDDDA???::I]|¢°˜sO9Uu„hH%FGIEDEACFŽº VY®»‰ECGEGFEDDEFFFFFGIJKKKJIHIIIIIIIHGFECABEECA@ABCCCDFHIJLNMLL]]HFHGHHHIIHGHEDDDDCA?CCDDEFC@==?AABDCDEFFGGFEFFFFEEDCB??AA??BDZg~š®¡xKCPl…rHEGCBE=K¾›P\­¿NFBFGGEDCDEFGGFFGHJKKKIHHIJJIIIIHGFECABDECA@AABBBCEGGILOOMM]]HHGFGGHHHGHHGGEDCCBABCDCDDA=>=>??ACBABCDEFFFEEFFFEDDCFE@>AA?AFJDM]z›®¦wL>PlHCDABFNœ»–O\¬¾•RA?EGEFDCBCEFFFFFGHIJJIHGGHIIIHHHGGGEDCCEEC@?@@@AABCEFGJMNNN]]DDDFFGGGGGGHHGFEDDDD@ABCFIJH@>==<>@?>?@@BCDEEEEEEEEEABDDA>@EBAF@BCFHZˆ£²¡rKDACAGS¢¼’H[¬¾™WJAGFB@DCBBCDEDDEFGIIIIHGFGHHHHHHGGFFDCCCDDC@??@@@@@BDFFHJLMM]]DDDFFGGGGGGHHGFEDDDD@ABCFIJH@>==<>@?>?@@BCDEEEEEEEEEABDDA>@EBAF@BCFHZˆ£²¡rKDACAGS¢¼’H[¬¾™WJAGFB@DCBBCDEDDEFGIIIIHGFGHHHHHHGGFFDCCCDDC@??@@@@@BDFFHJLMM]] \ No newline at end of file diff --git a/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeNearestNeighbor.bin b/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeNearestNeighbor.bin new file mode 100644 index 000000000..c3890be48 Binary files /dev/null and b/utilities/test_suite/REFERENCE_OUTPUT/remap/remap_u8_Tensor_interpolationTypeNearestNeighbor.bin differ diff --git a/utilities/test_suite/rpp_test_suite_common.h b/utilities/test_suite/rpp_test_suite_common.h index 5e1528c81..fe9f501d7 100644 --- a/utilities/test_suite/rpp_test_suite_common.h +++ b/utilities/test_suite/rpp_test_suite_common.h @@ -97,6 +97,7 @@ std::map augmentationMap = {65, "bitwise_and"}, {68, "bitwise_or"}, {70, "copy"}, + {79, "remap"}, {80, "resize_mirror_normalize"}, {81, "color_jitter"}, {82, "ricap"}, @@ -1113,7 +1114,7 @@ inline void compare_output(T* output, string funcName, RpptDescPtr srcDescPtr, R func += "Tensor_PLN1"; } } - if(testCase == 21 ||testCase == 23 || testCase == 24) + if(testCase == 21 ||testCase == 23 || testCase == 24 || testCase == 79) { func += "_interpolationType" + interpolationTypeName; binFile += "_interpolationType" + interpolationTypeName; @@ -1342,6 +1343,46 @@ void inline init_ricap(int width, int height, int batchSize, Rpp32u *permutation roiPtrInputCropRegion[3].xywhROI = {randrange(0, part0Width - 8), randrange(0, part0Height), width - part0Width, height - part0Height}; } +void inline init_remap(RpptDescPtr tableDescPtr, RpptDescPtr srcDescPtr, RpptROIPtr roiTensorPtrSrc, Rpp32f *rowRemapTable, Rpp32f *colRemapTable) +{ + tableDescPtr->c = 1; + tableDescPtr->strides.nStride = srcDescPtr->h * srcDescPtr->w; + tableDescPtr->strides.hStride = srcDescPtr->w; + tableDescPtr->strides.wStride = tableDescPtr->strides.cStride = 1; + Rpp32u batchSize = srcDescPtr->n; + + for (Rpp32u count = 0; count < batchSize; count++) + { + Rpp32f *rowRemapTableTemp, *colRemapTableTemp; + rowRemapTableTemp = rowRemapTable + count * tableDescPtr->strides.nStride; + colRemapTableTemp = colRemapTable + count * tableDescPtr->strides.nStride; + Rpp32u halfWidth = roiTensorPtrSrc[count].xywhROI.roiWidth / 2; + for (Rpp32u i = 0; i < roiTensorPtrSrc[count].xywhROI.roiHeight; i++) + { + Rpp32f *rowRemapTableTempRow, *colRemapTableTempRow; + rowRemapTableTempRow = rowRemapTableTemp + i * tableDescPtr->strides.hStride; + colRemapTableTempRow = colRemapTableTemp + i * tableDescPtr->strides.hStride; + Rpp32u j = 0; + for (; j < halfWidth; j++) + { + *rowRemapTableTempRow = i; + *colRemapTableTempRow = halfWidth - j; + + rowRemapTableTempRow++; + colRemapTableTempRow++; + } + for (; j < roiTensorPtrSrc[count].xywhROI.roiWidth; j++) + { + *rowRemapTableTempRow = i; + *colRemapTableTempRow = j; + + rowRemapTableTempRow++; + colRemapTableTempRow++; + } + } + } +} + // initialize the roi, anchor and shape values required for slice void init_slice(RpptGenericDescPtr descriptorPtr3D, RpptROIPtr roiPtrSrc, Rpp32u *roiTensor, Rpp32s *anchorTensor, Rpp32s *shapeTensor) {