From d3a971b6f597ea6e343dd91c4d90b6c5c8924785 Mon Sep 17 00:00:00 2001 From: Bin Long Date: Wed, 22 Apr 2020 11:35:51 +0800 Subject: [PATCH] deploy/cpp : Update cpp ineference solutio (#478) * deploy/cpp : Update cpp ineference solution * add README.md to deploy * deploy/cpp : add PadStride * deploy/cpp : add output visualization * deploy/cpp: add video support * fix coding style problem * deploy/cpp : add README.md * deploy/cpp : update docs * deploy/cpp : update linux build scripts * deploy/cpp : update linux build docs * udpate docs * deploy/cpp : update windows build docs * depoy/cpp: fix coding style * fix coding style * Create CMakeSettings.json * Update README.md * Update windows_vs2019_build.md * Update CMakeLists.txt * Update linux_build.md * Update CMakeLists.txt * deploy/cpp : update linux build script * update doc structures and support arch Face --- README.md | 2 +- deploy/README.md | 22 + {inference => deploy/cpp}/CMakeLists.txt | 106 +- deploy/cpp/CMakeSettings.json | 52 + deploy/cpp/README.md | 71 + .../cpp/cmake}/yaml-cpp.cmake | 4 +- deploy/cpp/docs/linux_build.md | 104 ++ deploy/cpp/docs/windows_vs2019_build.md | 117 ++ deploy/cpp/include/config_parser.h | 113 ++ deploy/cpp/include/object_detector.h | 95 ++ deploy/cpp/include/preprocess_op.h | 156 +++ deploy/cpp/scripts/bootstrap.sh | 11 + deploy/cpp/scripts/build.sh | 24 + deploy/cpp/src/main.cc | 119 ++ deploy/cpp/src/object_detector.cc | 190 +++ deploy/cpp/src/preprocess_op.cc | 145 +++ .../inference/DEPLOYMENT.md | 173 +-- .../inference/docs/configuration.md | 75 -- .../inference/docs/linux_build.md | 101 +- .../inference/docs/windows_vs2019_build.md | 103 +- inference/LICENSE | 201 --- inference/README.md | 2 - inference/conf/detection_rcnn.yaml | 18 - inference/conf/detection_rcnn_fpn.yaml | 19 - inference/detection_demo.cpp | 48 - .../images/detection_rcnn/000000014439.jpg | Bin 195229 -> 0 bytes .../images/detection_rcnn/000000087038.jpg | Bin 183303 -> 0 bytes .../images/detection_rcnn/000000570688.jpg | Bin 138365 -> 0 bytes inference/predictor/detection_predictor.cpp | 455 ------- inference/predictor/detection_predictor.h | 53 - inference/preprocessor/preprocessor.cpp | 50 - inference/preprocessor/preprocessor.h | 77 -- .../preprocessor/preprocessor_detection.cpp | 144 -- .../preprocessor/preprocessor_detection.h | 40 - inference/tools/coco17.json | 83 -- inference/tools/detection_result_pb2.py | 214 --- inference/tools/vis.py | 118 -- inference/utils/conf_parser.h | 297 ----- inference/utils/detection_result.pb.cc | 1159 ----------------- inference/utils/detection_result.pb.h | 563 -------- inference/utils/detection_result.proto | 21 - inference/utils/utils.h | 130 -- 42 files changed, 1257 insertions(+), 4218 deletions(-) create mode 100644 deploy/README.md rename {inference => deploy/cpp}/CMakeLists.txt (70%) create mode 100644 deploy/cpp/CMakeSettings.json create mode 100644 deploy/cpp/README.md rename {inference/external-cmake => deploy/cpp/cmake}/yaml-cpp.cmake (87%) create mode 100644 deploy/cpp/docs/linux_build.md create mode 100644 deploy/cpp/docs/windows_vs2019_build.md create mode 100644 deploy/cpp/include/config_parser.h create mode 100644 deploy/cpp/include/object_detector.h create mode 100644 deploy/cpp/include/preprocess_op.h create mode 100644 deploy/cpp/scripts/bootstrap.sh create mode 100644 deploy/cpp/scripts/build.sh create mode 100644 deploy/cpp/src/main.cc create mode 100644 deploy/cpp/src/object_detector.cc create mode 100644 deploy/cpp/src/preprocess_op.cc mode change 100644 => 120000 docs/advanced_tutorials/inference/DEPLOYMENT.md delete mode 100644 docs/advanced_tutorials/inference/docs/configuration.md mode change 100644 => 120000 docs/advanced_tutorials/inference/docs/linux_build.md mode change 100644 => 120000 docs/advanced_tutorials/inference/docs/windows_vs2019_build.md delete mode 100644 inference/LICENSE delete mode 100644 inference/README.md delete mode 100644 inference/conf/detection_rcnn.yaml delete mode 100644 inference/conf/detection_rcnn_fpn.yaml delete mode 100644 inference/detection_demo.cpp delete mode 100644 inference/images/detection_rcnn/000000014439.jpg delete mode 100644 inference/images/detection_rcnn/000000087038.jpg delete mode 100644 inference/images/detection_rcnn/000000570688.jpg delete mode 100644 inference/predictor/detection_predictor.cpp delete mode 100644 inference/predictor/detection_predictor.h delete mode 100644 inference/preprocessor/preprocessor.cpp delete mode 100644 inference/preprocessor/preprocessor.h delete mode 100644 inference/preprocessor/preprocessor_detection.cpp delete mode 100644 inference/preprocessor/preprocessor_detection.h delete mode 100644 inference/tools/coco17.json delete mode 100644 inference/tools/detection_result_pb2.py delete mode 100644 inference/tools/vis.py delete mode 100644 inference/utils/conf_parser.h delete mode 100644 inference/utils/detection_result.pb.cc delete mode 100644 inference/utils/detection_result.pb.h delete mode 100644 inference/utils/detection_result.proto delete mode 100644 inference/utils/utils.h diff --git a/README.md b/README.md index 36c913b0d..a65a4185a 100644 --- a/README.md +++ b/README.md @@ -89,7 +89,7 @@ PaddleDetection的目的是为工业界和学术界提供丰富、易用的目 - [推理部署](inference) - [模型导出教程](docs/advanced_tutorials/inference/EXPORT_MODEL.md) - [预测引擎Python API使用示例](docs/advanced_tutorials/inference/INFERENCE.md) - - [C++推理部署](inference/README.md) + - [C++推理部署](deploy/README.md) - [推理Benchmark](docs/advanced_tutorials/inference/BENCHMARK_INFER_cn.md) ## 模型库 diff --git a/deploy/README.md b/deploy/README.md new file mode 100644 index 000000000..a049ca3eb --- /dev/null +++ b/deploy/README.md @@ -0,0 +1,22 @@ +# PaddleDetection 预测部署 + +`PaddleDetection`目前支持使用`Python`和`C++`部署在`Windows` 和`Linux` 上运行。 + +## 模型导出 +训练得到一个满足要求的模型后,如果想要将该模型接入到C++预测库,需要通过`tools/export_model.py`导出该模型。 + +- [导出教程](../docs/advanced_tutorials/inference/EXPORT_MODEL.md) + +模型导出后, 目录结构如下(以`yolov3_darknet`为例): +``` +yolov3_darknet # 模型目录 +├── infer_cfg.yml # 模型配置信息 +├── __model__ # 模型文件 +└── __params__ # 参数文件 +``` + +预测时,该目录所在的路径会作为程序的输入参数。 + +## 预测部署 +- [1. Python预测(支持 Linux 和 Windows)](./python/) +- [2. C++预测(支持 Linux 和 Windows)](./cpp/) diff --git a/inference/CMakeLists.txt b/deploy/cpp/CMakeLists.txt similarity index 70% rename from inference/CMakeLists.txt rename to deploy/cpp/CMakeLists.txt index d168639f6..5afe6bedc 100644 --- a/inference/CMakeLists.txt +++ b/deploy/cpp/CMakeLists.txt @@ -1,17 +1,20 @@ cmake_minimum_required(VERSION 3.0) -project(cpp_inference_demo CXX C) +project(PaddleObjectDetector CXX C) option(WITH_MKL "Compile demo with MKL/OpenBlas support,defaultuseMKL." ON) option(WITH_GPU "Compile demo with GPU/CPU, default use CPU." ON) option(WITH_STATIC_LIB "Compile demo with static/shared library, default use static." ON) -option(USE_TENSORRT "Compile demo with TensorRT." OFF) +option(WITH_TENSORRT "Compile demo with TensorRT." OFF) SET(PADDLE_DIR "" CACHE PATH "Location of libraries") SET(OPENCV_DIR "" CACHE PATH "Location of libraries") SET(CUDA_LIB "" CACHE PATH "Location of libraries") +include(cmake/yaml-cpp.cmake) -include(external-cmake/yaml-cpp.cmake) +include_directories("${CMAKE_SOURCE_DIR}/") +include_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/src/ext-yaml-cpp/include") +link_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/lib") macro(safe_set_static_flag) foreach(flag_var @@ -19,7 +22,7 @@ macro(safe_set_static_flag) CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) if(${flag_var} MATCHES "/MD") string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") + endif(${flag_var} MATCHES "/MD") endforeach(flag_var) endmacro() @@ -36,7 +39,6 @@ if (NOT DEFINED OPENCV_DIR OR ${OPENCV_DIR} STREQUAL "") endif() include_directories("${CMAKE_SOURCE_DIR}/") -include_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/src/ext-yaml-cpp/include") include_directories("${PADDLE_DIR}/") include_directories("${PADDLE_DIR}/third_party/install/protobuf/include") include_directories("${PADDLE_DIR}/third_party/install/glog/include") @@ -65,21 +67,20 @@ link_directories("${PADDLE_DIR}/third_party/install/glog/lib") link_directories("${PADDLE_DIR}/third_party/install/gflags/lib") link_directories("${PADDLE_DIR}/third_party/install/xxhash/lib") link_directories("${PADDLE_DIR}/paddle/lib/") -link_directories("${CMAKE_CURRENT_BINARY_DIR}/ext/yaml-cpp/lib") link_directories("${CMAKE_CURRENT_BINARY_DIR}") + if (WIN32) include_directories("${PADDLE_DIR}/paddle/fluid/inference") include_directories("${PADDLE_DIR}/paddle/include") link_directories("${PADDLE_DIR}/paddle/fluid/inference") - include_directories("${OPENCV_DIR}/build/include") - include_directories("${OPENCV_DIR}/opencv/build/include") - link_directories("${OPENCV_DIR}/build/x64/vc14/lib") + find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/build/ NO_DEFAULT_PATH) + else () + find_package(OpenCV REQUIRED PATHS ${OPENCV_DIR}/share/OpenCV NO_DEFAULT_PATH) include_directories("${PADDLE_DIR}/paddle/include") link_directories("${PADDLE_DIR}/paddle/lib") - include_directories("${OPENCV_DIR}/include") - link_directories("${OPENCV_DIR}/lib") endif () +include_directories(${OpenCV_INCLUDE_DIRS}) if (WIN32) add_definitions("/DGOOGLE_GLOG_DLL_DECL=") @@ -92,7 +93,7 @@ if (WIN32) add_definitions(-DSTATIC_LIB) endif() else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -o2 -std=c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o2 -fopenmp -std=c++11") set(CMAKE_STATIC_LIBRARY_PREFIX "") endif() @@ -106,11 +107,11 @@ if (WITH_GPU) message(FATAL_ERROR "please set CUDNN_LIB with -DCUDNN_LIB=/path/cudnn_v7.4/cuda/lib64") endif() endif(NOT WIN32) -endif() +endif() if (NOT WIN32) - if (USE_TENSORRT AND WITH_GPU) + if (WITH_TENSORRT AND WITH_GPU) include_directories("${PADDLE_DIR}/third_party/install/tensorrt/include") link_directories("${PADDLE_DIR}/third_party/install/tensorrt/lib") endif() @@ -149,14 +150,14 @@ else() set(MATH_LIB ${PADDLE_DIR}/third_party/install/openblas/lib/libopenblas${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() -if(WIN32) +if (WIN32) if(EXISTS "${PADDLE_DIR}/paddle/fluid/inference/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX}") set(DEPS ${PADDLE_DIR}/paddle/fluid/inference/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX}) - else() + else() set(DEPS ${PADDLE_DIR}/paddle/lib/libpaddle_fluid${CMAKE_STATIC_LIBRARY_SUFFIX}) - endif() + endif() endif() if(WITH_STATIC_LIB) @@ -168,11 +169,10 @@ else() endif() if (NOT WIN32) - set(EXTERNAL_LIB "-lrt -ldl -lpthread") set(DEPS ${DEPS} - ${MATH_LIB} ${MKLDNN_LIB} - glog gflags protobuf yaml-cpp z xxhash - ${EXTERNAL_LIB}) + ${MATH_LIB} ${MKLDNN_LIB} + glog gflags protobuf z xxhash yaml-cpp + ) if(EXISTS "${PADDLE_DIR}/third_party/install/snappystream/lib") set(DEPS ${DEPS} snappystream) endif() @@ -182,7 +182,7 @@ if (NOT WIN32) else() set(DEPS ${DEPS} ${MATH_LIB} ${MKLDNN_LIB} - opencv_world346 glog libyaml-cppmt gflags_static libprotobuf zlibstatic xxhash ${EXTERNAL_LIB}) + glog gflags_static libprotobuf zlibstatic xxhash libyaml-cppmt) set(DEPS ${DEPS} libcmt shlwapi) if (EXISTS "${PADDLE_DIR}/third_party/install/snappy/lib") set(DEPS ${DEPS} snappy) @@ -194,7 +194,7 @@ endif(NOT WIN32) if(WITH_GPU) if(NOT WIN32) - if (USE_TENSORRT) + if (WITH_TENSORRT) set(DEPS ${DEPS} ${PADDLE_DIR}/third_party/install/tensorrt/lib/libnvinfer${CMAKE_STATIC_LIBRARY_SUFFIX}) set(DEPS ${DEPS} ${PADDLE_DIR}/third_party/install/tensorrt/lib/libnvinfer_plugin${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() @@ -207,58 +207,18 @@ if(WITH_GPU) endif() endif() -if (NOT WIN32) - set(OPENCV_LIB_DIR ${OPENCV_DIR}/lib) - if(EXISTS "${OPENCV_LIB_DIR}") - message("OPENCV_LIB:" ${OPENCV_LIB_DIR}) - else() - set(OPENCV_LIB_DIR ${OPENCV_DIR}/lib64) - message("OPENCV_LIB:" ${OPENCV_LIB_DIR}) - endif() - - set(OPENCV_3RD_LIB_DIR ${OPENCV_DIR}/share/OpenCV/3rdparty/lib) - if(EXISTS "${OPENCV_3RD_LIB_DIR}") - message("OPENCV_3RD_LIB_DIR:" ${OPENCV_3RD_LIB_DIR}) - else() - set(OPENCV_3RD_LIB_DIR ${OPENCV_DIR}/share/OpenCV/3rdparty/lib64) - message("OPENCV_3RD_LIB_DIR:" ${OPENCV_3RD_LIB_DIR}) - endif() - - set(DEPS ${DEPS} ${OPENCV_LIB_DIR}/libopencv_imgcodecs${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_LIB_DIR}/libopencv_imgproc${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_LIB_DIR}/libopencv_core${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_LIB_DIR}/libopencv_highgui${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/libIlmImf${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/liblibjasper${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/liblibpng${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/liblibtiff${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/libittnotify${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/liblibjpeg-turbo${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/liblibwebp${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/libzlib${CMAKE_STATIC_LIBRARY_SUFFIX}) - if(EXISTS "${OPENCV_3RD_LIB_DIR}/libippiw${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/libippiw${CMAKE_STATIC_LIBRARY_SUFFIX}) - endif() - if(EXISTS "${OPENCV_3RD_LIB_DIR}/libippicv${CMAKE_STATIC_LIBRARY_SUFFIX}") - set(DEPS ${DEPS} ${OPENCV_3RD_LIB_DIR}/libippicv${CMAKE_STATIC_LIBRARY_SUFFIX}) - endif() +if (NOT WIN32) + set(EXTERNAL_LIB "-ldl -lrt -lgomp -lz -lm -lpthread") + set(DEPS ${DEPS} ${EXTERNAL_LIB}) endif() -SET(PADDLESEG_INFERENCE_SRCS preprocessor/preprocessor.cpp - preprocessor/preprocessor_detection.cpp predictor/detection_predictor.cpp - utils/detection_result.pb.cc) - -ADD_LIBRARY(libpaddleseg_inference STATIC ${PADDLESEG_INFERENCE_SRCS}) -target_link_libraries(libpaddleseg_inference ${DEPS}) - -add_executable(detection_demo detection_demo.cpp) +set(DEPS ${DEPS} ${OpenCV_LIBS}) +add_executable(main src/main.cc src/preprocess_op.cc src/object_detector.cc) +ADD_DEPENDENCIES(main ext-yaml-cpp) +target_link_libraries(main ${DEPS}) -ADD_DEPENDENCIES(libpaddleseg_inference ext-yaml-cpp) -ADD_DEPENDENCIES(detection_demo ext-yaml-cpp libpaddleseg_inference) -target_link_libraries(detection_demo ${DEPS} libpaddleseg_inference) - -if (WIN32) - add_custom_command(TARGET detection_demo POST_BUILD +if (WIN32 AND WITH_MKL) + add_custom_command(TARGET main POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/mklml.dll ./mklml.dll COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mklml/lib/libiomp5md.dll ./libiomp5md.dll COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./mkldnn.dll @@ -267,5 +227,3 @@ if (WIN32) COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PADDLE_DIR}/third_party/install/mkldnn/lib/mkldnn.dll ./release/mkldnn.dll ) endif() - -execute_process(COMMAND cp -r ${CMAKE_SOURCE_DIR}/images ${CMAKE_SOURCE_DIR}/conf ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/deploy/cpp/CMakeSettings.json b/deploy/cpp/CMakeSettings.json new file mode 100644 index 000000000..9ab7a33e7 --- /dev/null +++ b/deploy/cpp/CMakeSettings.json @@ -0,0 +1,52 @@ +{ + "configurations": [ + { + "name": "x64-Release", + "generator": "Ninja", + "configurationType": "RelWithDebInfo", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "", + "variables": [ + { + "name": "CUDA_LIB", + "value": "D:/projects/packages/cuda10_0/lib64", + "type": "PATH" + }, + { + "name": "OPENCV_DIR", + "value": "D:/projects/packages/opencv3_4_6", + "type": "PATH" + }, + { + "name": "PADDLE_DIR", + "value": "D:/projects/packages/fluid_inference", + "type": "PATH" + }, + { + "name": "CMAKE_BUILD_TYPE", + "value": "Release", + "type": "STRING" + }, + { + "name": "WITH_STATIC_LIB", + "value": "True", + "type": "BOOL" + }, + { + "name": "WITH_MKL", + "value": "True", + "type": "BOOL" + }, + { + "name": "WITH_GPU", + "value": "True", + "type": "BOOL" + } + ] + } + ] +} diff --git a/deploy/cpp/README.md b/deploy/cpp/README.md new file mode 100644 index 000000000..7c2ee467d --- /dev/null +++ b/deploy/cpp/README.md @@ -0,0 +1,71 @@ +# PaddleDetection C++预测部署方案 + +## 本文档结构 + +[1.说明](#1说明) + +[2.主要目录和文件](#2主要目录和文件) + +[3.编译部署](#3编译) + + + +## 1.说明 + +本目录为用户提供一个跨平台的`C++`部署方案,让用户通过`PaddleDetection`训练的模型导出后,即可基于本项目快速运行,也可以快速集成代码结合到自己的项目实际应用中去。 + +主要设计的目标包括以下四点: +- 跨平台,支持在 `Windows` 和 `Linux` 完成编译、二次开发集成和部署运行 +- 可扩展性,支持用户针对新模型开发自己特殊的数据预处理等逻辑 +- 高性能,除了`PaddlePaddle`自身带来的性能优势,我们还针对图像检测的特点对关键步骤进行了性能优化 +- 支持各种不同检测模型结构,包括`Yolov3`/`Faster_RCNN`/`SSD`/`RetinaNet`等 + +## 2.主要目录和文件 + +```bash +deploy/cpp +| +├── src +│ ├── main.cc # 集成代码示例, 程序入口 +│ ├── object_detector.cc # 模型加载和预测主要逻辑封装类实现 +│ └── preprocess_op.cc # 预处理相关主要逻辑封装实现 +| +├── include +│ ├── config_parser.h # 导出模型配置yaml文件解析 +│ ├── object_detector.h # 模型加载和预测主要逻辑封装类 +│ └── preprocess_op.h # 预处理相关主要逻辑类封装 +| +├── docs +│ ├── linux_build.md # Linux 编译指南 +│ └── windows_vs2019_build.md # Windows VS2019编译指南 +│ +├── build.sh # 编译命令脚本 +│ +├── CMakeList.txt # cmake编译入口文件 +| +├── CMakeSettings.json # Visual Studio 2019 CMake项目编译设置 +│ +└── cmake # 依赖的外部项目cmake(目前仅有yaml-cpp) + +``` + +## 3.编译部署 + +### 3.1 导出模型 +请确认您已经基于`PaddleDetection`的[export_model.py](../../tools/export_model.py)导出您的模型,并妥善保存到合适的位置。导出模型细节请参考 [导出模型教程](../../docs/advanced_tutorials/inference/EXPORT_MODEL.md)。 + +模型导出后, 目录结构如下(以`yolov3_darknet`为例): +``` +yolov3_darknet # 模型目录 +├── infer_cfg.yml # 模型配置信息 +├── __model__ # 模型文件 +└── __params__ # 参数文件 +``` + +预测时,该目录所在的路径会作为程序的输入参数。 + +### 3.2 编译 + +仅支持在`Windows`和`Linux`平台编译和使用 +- [Linux 编译指南](../../docs/advanced_tutorials/inference/docs/linux_build.md) +- [Windows编译指南(使用Visual Studio 2019)](../../docs/advanced_tutorials/inference/docs/windows_vs2019_build.md) diff --git a/inference/external-cmake/yaml-cpp.cmake b/deploy/cpp/cmake/yaml-cpp.cmake similarity index 87% rename from inference/external-cmake/yaml-cpp.cmake rename to deploy/cpp/cmake/yaml-cpp.cmake index 15fa2674e..fc2e37f71 100644 --- a/inference/external-cmake/yaml-cpp.cmake +++ b/deploy/cpp/cmake/yaml-cpp.cmake @@ -7,8 +7,8 @@ message("${CMAKE_BUILD_TYPE}") ExternalProject_Add( ext-yaml-cpp - GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git - GIT_TAG e0e01d53c27ffee6c86153fa41e7f5e57d3e5c90 + URL https://bj.bcebos.com/paddlex/deploy/deps/yaml-cpp.zip + URL_MD5 9542d6de397d1fbd649ed468cb5850e6 CMAKE_ARGS -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF diff --git a/deploy/cpp/docs/linux_build.md b/deploy/cpp/docs/linux_build.md new file mode 100644 index 000000000..1882fdc27 --- /dev/null +++ b/deploy/cpp/docs/linux_build.md @@ -0,0 +1,104 @@ +# Linux平台编译指南 + +## 说明 +本文档在 `Linux`平台使用`GCC 4.8.5` 和 `GCC 4.9.4`测试过,如果需要使用更高G++版本编译使用,则需要重新编译Paddle预测库,请参考: [从源码编译Paddle预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_usage/deploy/inference/build_and_install_lib_cn.html#id15)。 + +## 前置条件 +* G++ 4.8.2 ~ 4.9.4 +* CUDA 9.0 / CUDA 10.0, cudnn 7+ (仅在使用GPU版本的预测库时需要) +* CMake 3.0+ + +请确保系统已经安装好上述基本软件,**下面所有示例以工作目录为 `/root/projects/`演示**。 + +### Step1: 下载代码 + + `git clone https://github.com/PaddlePaddle/PaddleDetection.git` + +**说明**:其中`C++`预测代码在`/root/projects/PaddleDetection/deploy/cpp` 目录,该目录不依赖任何`PaddleDetection`下其他目录。 + + +### Step2: 下载PaddlePaddle C++ 预测库 fluid_inference + +PaddlePaddle C++ 预测库针对不同的`CPU`和`CUDA`版本提供了不同的预编译版本,请根据实际情况下载: [C++预测库下载列表](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_usage/deploy/inference/build_and_install_lib_cn.html) + + +下载并解压后`/root/projects/fluid_inference`目录包含内容为: +``` +fluid_inference +├── paddle # paddle核心库和头文件 +| +├── third_party # 第三方依赖库和头文件 +| +└── version.txt # 版本和编译信息 +``` + +**注意:** 预编译版本除`nv-jetson-cuda10-cudnn7.5-trt5` 以外其它包都是基于`GCC 4.8.5`编译,使用高版本`GCC`可能存在 `ABI`兼容性问题,建议降级或[自行编译预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/advanced_guide/inference_deployment/inference/build_and_install_lib_cn.html)。 + + +### Step4: 编译 + +编译`cmake`的命令在`scripts/build.sh`中,请根据实际情况修改主要参数,其主要内容说明如下: +``` +# 是否使用GPU(即是否使用 CUDA) +WITH_GPU=ON +# 是否集成 TensorRT(仅WITH_GPU=ON 有效) +WITH_TENSORRT=OFF +# 上一步下载的 Paddle 预测库路径 +PADDLE_DIR=/root/projects/deps/fluid_inference/ +# OPENCV 路径, 如果使用自带预编译版本可不设置 +OPENCV_DIR=$(pwd)/deps/opencv346/ +# CUDA 的 lib 路径 +CUDA_LIB=/usr/local/cuda/lib64/ +# CUDNN 的 lib 路径 +CUDNN_LIB=/usr/local/cuda/lib64/ + +# 以下无需改动 + +sh $(pwd)/scripts/bootstrap.sh +rm -rf build +mkdir -p build +cd build +cmake .. \ + -DWITH_GPU=${WITH_GPU} \ + -DWITH_TENSORRT=${WITH_TENSORRT} \ + -DPADDLE_DIR=${PADDLE_DIR} \ + -DCUDA_LIB=${CUDA_LIB} \ + -DCUDNN_LIB=${CUDNN_LIB} \ + -DOPENCV_DIR=${OPENCV_DIR} +make + +``` + +修改脚本设置好主要参数后,执行`build`脚本: + ```shell + sh ./scripts/build.sh + ``` + + +### Step5: 预测及可视化 +编译成功后,预测入口程序为`build/main`其主要命令参数说明如下: +| 参数 | 说明 | +| ---- | ---- | +| model_dir | 导出的预测模型所在路径 | +| image_path | 要预测的图片文件路径 | +| video_path | 要预测的视频文件路径 | +| use_gpu | 是否使用 GPU 预测, 支持值为0或1(默认值为0)| + +**注意**:如果同时设置了`video_path`和`image_path`,程序仅预测`video_path`。 + + +`样例一`: +```shell +#不使用`GPU`测试图片 `/root/projects/images/test.jpeg` +./build/main --model_dir=/root/projects/models/yolov3_darknet --image_path=/root/projects/images/test.jpeg +``` + +图片文件`可视化预测结果`会保存在当前目录下`result.jpeg`文件中。 + + +`样例二`: +```shell +#使用 `GPU`预测视频`/root/projects/videos/test.avi` +./build/main --model_dir=/root/projects/models/yolov3_darknet --video_path=/root/projects/images/test.avi --use_gpu=1 +``` +视频文件`可视化预测结果`会保存在当前目录下`result.avi`文件中。 diff --git a/deploy/cpp/docs/windows_vs2019_build.md b/deploy/cpp/docs/windows_vs2019_build.md new file mode 100644 index 000000000..0f5b86917 --- /dev/null +++ b/deploy/cpp/docs/windows_vs2019_build.md @@ -0,0 +1,117 @@ +# Visual Studio 2019 Community CMake 编译指南 + +Windows 平台下,我们使用`Visual Studio 2019 Community` 进行了测试。微软从`Visual Studio 2017`开始即支持直接管理`CMake`跨平台编译项目,但是直到`2019`才提供了稳定和完全的支持,所以如果你想使用CMake管理项目编译构建,我们推荐你使用`Visual Studio 2019`环境下构建。 + + +## 前置条件 +* Visual Studio 2019 +* CUDA 9.0 / CUDA 10.0,cudnn 7+ (仅在使用GPU版本的预测库时需要) +* CMake 3.0+ + +请确保系统已经安装好上述基本软件,我们使用的是`VS2019`的社区版。 + +**下面所有示例以工作目录为 `D:\projects`演示**。 + +### Step1: 下载代码 + +下载源代码 +```shell +git clone https://github.com/PaddlePaddle/PaddleDetection.git +``` + +**说明**:其中`C++`预测代码在`PaddleDetection/deploy/cpp` 目录,该目录不依赖任何`PaddleDetection`下其他目录。 + + +### Step2: 下载PaddlePaddle C++ 预测库 fluid_inference + +PaddlePaddle C++ 预测库针对不同的`CPU`和`CUDA`版本提供了不同的预编译版本,请根据实际情况下载: [C++预测库下载列表](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_guide/inference_deployment/inference/windows_cpp_inference.html) + +解压后`D:\projects\fluid_inference`目录包含内容为: +``` +fluid_inference +├── paddle # paddle核心库和头文件 +| +├── third_party # 第三方依赖库和头文件 +| +└── version.txt # 版本和编译信息 +``` + +### Step3: 安装配置OpenCV + +1. 在OpenCV官网下载适用于Windows平台的3.4.6版本, [下载地址](https://sourceforge.net/projects/opencvlibrary/files/3.4.6/opencv-3.4.6-vc14_vc15.exe/download) +2. 运行下载的可执行文件,将OpenCV解压至指定目录,如`D:\projects\opencv` +3. 配置环境变量,如下流程所示 + - 我的电脑->属性->高级系统设置->环境变量 + - 在系统变量中找到Path(如没有,自行创建),并双击编辑 + - 新建,将opencv路径填入并保存,如`D:\projects\opencv\build\x64\vc14\bin` + +### Step4: 使用Visual Studio 2019直接编译CMake + +1. 打开Visual Studio 2019 Community,点击`继续但无需代码` +![step2](https://paddleseg.bj.bcebos.com/inference/vs2019_step1.png) +2. 点击: `文件`->`打开`->`CMake` +![step2.1](https://paddleseg.bj.bcebos.com/inference/vs2019_step2.png) + +选择项目代码所在路径,并打开`CMakeList.txt`: + +![step2.2](https://paddleseg.bj.bcebos.com/inference/vs2019_step3.png) + +3. 点击:`项目`->`cpp_inference_demo的CMake设置` + +![step3](https://paddleseg.bj.bcebos.com/inference/vs2019_step4.png) + +4. 点击`浏览`,分别设置编译选项指定`CUDA`、`OpenCV`、`Paddle预测库`的路径 + +三个编译参数的含义说明如下(带*表示仅在使用**GPU版本**预测库时指定, 其中CUDA库版本尽量对齐,**使用9.0、10.0版本,不使用9.2、10.1等版本CUDA库**): + +| 参数名 | 含义 | +| ---- | ---- | +| *CUDA_LIB | CUDA的库路径 | +| OPENCV_DIR | OpenCV的安装路径, | +| PADDLE_DIR | Paddle预测库的路径 | + +**注意:** 1. 使用`CPU`版预测库,请把`WITH_GPU`的勾去掉 2. 如果使用的是`openblas`版本,请把`WITH_MKL`勾去掉 +![step4](https://paddleseg.bj.bcebos.com/inference/vs2019_step5.png) + +**设置完成后**, 点击上图中`保存并生成CMake缓存以加载变量`。 + +5. 点击`生成`->`全部生成` + +![step6](https://paddleseg.bj.bcebos.com/inference/vs2019_step6.png) + + +### Step5: 预测及可视化 + +上述`Visual Studio 2019`编译产出的可执行文件在`out\build\x64-Release`目录下,打开`cmd`,并切换到该目录: + +``` +cd D:\projects\PaddleDetection\inference\out\build\x64-Release +``` +可执行文件`main`即为样例的预测程序,其主要的命令行参数如下: + +| 参数 | 说明 | +| ---- | ---- | +| model_dir | 导出的预测模型所在路径 | +| image_path | 要预测的图片文件路径 | +| video_path | 要预测的视频文件路径 | +| use_gpu | 是否使用 GPU 预测, 支持值为0或1(默认值为0)| + +**注意**:如果同时设置了`video_path`和`image_path`,程序仅预测`video_path`。 + + +`样例一`: +```shell +#不使用`GPU`测试图片 `D:\\images\\test.jpeg` +.\main --model_dir=D:\\models\\yolov3_darknet --image_path=D:\\images\\test.jpeg +``` + +图片文件`可视化预测结果`会保存在当前目录下`result.jpeg`文件中。 + + +`样例二`: +```shell +#使用`GPU`测试视频 `D:\\videos\\test.avi` +.\main --model_dir=D:\\models\\yolov3_darknet --video_path=D:\\videos\\test.jpeg --use_gpu=1 +``` + +视频文件`可视化预测结果`会保存在当前目录下`result.avi`文件中。 diff --git a/deploy/cpp/include/config_parser.h b/deploy/cpp/include/config_parser.h new file mode 100644 index 000000000..5fdaad408 --- /dev/null +++ b/deploy/cpp/include/config_parser.h @@ -0,0 +1,113 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include +#include +#include +#include + +#include "yaml-cpp/yaml.h" + +#ifdef _WIN32 +#define OS_PATH_SEP "\\" +#else +#define OS_PATH_SEP "/" +#endif + +namespace PaddleDetection { + +// Inference model configuration parser +class ConfigPaser { + public: + ConfigPaser() {} + + ~ConfigPaser() {} + + bool load_config(const std::string& model_dir, + const std::string& cfg = "infer_cfg.yml") { + // Load as a YAML::Node + YAML::Node config; + config = YAML::LoadFile(model_dir + OS_PATH_SEP + cfg); + + // Get runtime mode : fluid, trt_int8, trt_fp16, trt_fp32 + if (config["mode"].IsDefined()) { + mode_ = config["mode"].as(); + } else { + std::cerr << "Please set mode, " + << "support value : fluid/trt_int8/trt_fp16/trt_fp32." + << std::endl; + return false; + } + + // Get model arch : YOLO, SSD, RetinaNet, RCNN, Face + if (config["arch"].IsDefined()) { + arch_ = config["arch"].as(); + } else { + std::cerr << "Please set model arch," + << "support value : YOLO, SSD, RetinaNet, RCNN, Face." + << std::endl; + return false; + } + + // Get min_subgraph_size for tensorrt + if (config["min_subgraph_size"].IsDefined()) { + min_subgraph_size_ = config["min_subgraph_size"].as(); + } else { + std::cerr << "Please set min_subgraph_size." << std::endl; + return false; + } + // Get draw_threshold for visualization + if (config["draw_threshold"].IsDefined()) { + draw_threshold_ = config["draw_threshold"].as(); + } else { + std::cerr << "Please set draw_threshold." << std::endl; + return false; + } + // Get with_background + if (config["with_background"].IsDefined()) { + with_background_ = config["with_background"].as(); + } else { + std::cerr << "Please set with_background." << std::endl; + return false; + } + // Get Preprocess for preprocessing + if (config["Preprocess"].IsDefined()) { + preprocess_info_ = config["Preprocess"]; + } else { + std::cerr << "Please set Preprocess." << std::endl; + return false; + } + // Get label_list for visualization + if (config["label_list"].IsDefined()) { + label_list_ = config["label_list"].as>(); + } else { + std::cerr << "Please set label_list." << std::endl; + return false; + } + + return true; + } + std::string mode_; + float draw_threshold_; + std::string arch_; + int min_subgraph_size_; + bool with_background_; + YAML::Node preprocess_info_; + std::vector label_list_; +}; + +} // namespace PaddleDetection + diff --git a/deploy/cpp/include/object_detector.h b/deploy/cpp/include/object_detector.h new file mode 100644 index 000000000..dda91cfc4 --- /dev/null +++ b/deploy/cpp/include/object_detector.h @@ -0,0 +1,95 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include +#include +#include +#include + +#include +#include +#include + +#include "paddle_inference_api.h" // NOLINT + +#include "include/preprocess_op.h" +#include "include/config_parser.h" + + +namespace PaddleDetection { +// Object Detection Result +struct ObjectResult { + // Rectangle coordinates of detected object: left, right, top, down + std::vector rect; + // Class id of detected object + int class_id; + // Confidence of detected object + float confidence; +}; + + +// Generate visualization colormap for each class +std::vector GenerateColorMap(int num_class); + + +// Visualiztion Detection Result +cv::Mat VisualizeResult(const cv::Mat& img, + const std::vector& results, + const std::vector& lable_list, + const std::vector& colormap); + + +class ObjectDetector { + public: + explicit ObjectDetector(const std::string& model_dir, bool use_gpu = false) { + config_.load_config(model_dir); + threshold_ = config_.draw_threshold_; + preprocessor_.Init(config_.preprocess_info_, config_.arch_); + LoadModel(model_dir, use_gpu); + } + + // Load Paddle inference model + void LoadModel( + const std::string& model_dir, + bool use_gpu); + + // Run predictor + void Predict( + const cv::Mat& img, + std::vector* result); + + // Get Model Label list + const std::vector& GetLabelList() const { + return config_.label_list_; + } + + private: + // Preprocess image and copy data to input buffer + void Preprocess(const cv::Mat& image_mat); + // Postprocess result + void Postprocess( + const cv::Mat& raw_mat, + std::vector* result); + + std::unique_ptr predictor_; + Preprocessor preprocessor_; + ImageBlob inputs_; + std::vector output_data_; + float threshold_; + ConfigPaser config_; +}; + +} // namespace PaddleDetection diff --git a/deploy/cpp/include/preprocess_op.h b/deploy/cpp/include/preprocess_op.h new file mode 100644 index 000000000..1e6c8844e --- /dev/null +++ b/deploy/cpp/include/preprocess_op.h @@ -0,0 +1,156 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace PaddleDetection { + +// Object for storing all preprocessed data +class ImageBlob { + public: + // Original image width and height + std::vector ori_im_size_; + // Buffer for image data after preprocessing + std::vector im_data_; + // Original image width, height, shrink in float format + std::vector ori_im_size_f_; + // Evaluation image width and height + std::vector eval_im_size_f_; +}; + +// Abstraction of preprocessing opration class +class PreprocessOp { + public: + virtual void Init(const YAML::Node& item, const std::string& arch) = 0; + virtual void Run(cv::Mat* im, ImageBlob* data) = 0; +}; + +class Normalize : public PreprocessOp { + public: + virtual void Init(const YAML::Node& item, const std::string& arch) { + mean_ = item["mean"].as>(); + scale_ = item["std"].as>(); + is_channel_first_ = item["is_channel_first"].as(); + is_scale_ = item["is_scale"].as(); + } + + virtual void Run(cv::Mat* im, ImageBlob* data); + + private: + // CHW or HWC + bool is_channel_first_; + bool is_scale_; + std::vector mean_; + std::vector scale_; +}; + +class Permute : public PreprocessOp { + public: + virtual void Init(const YAML::Node& item, const std::string& arch) { + to_bgr_ = item["to_bgr"].as(); + is_channel_first_ = item["channel_first"].as(); + } + + virtual void Run(cv::Mat* im, ImageBlob* data); + + private: + // RGB to BGR + bool to_bgr_; + // CHW or HWC + bool is_channel_first_; +}; + +class Resize : public PreprocessOp { + public: + virtual void Init(const YAML::Node& item, const std::string& arch) { + arch_ = arch; + interp_ = item["interp"].as(); + max_size_ = item["max_size"].as(); + target_size_ = item["target_size"].as(); + image_shape_ = item["image_shape"].as>(); + } + + // Compute best resize scale for x-dimension, y-dimension + std::pair GenerateScale(const cv::Mat& im); + + virtual void Run(cv::Mat* im, ImageBlob* data); + + private: + std::string arch_; + int interp_; + int max_size_; + int target_size_; + std::vector image_shape_; +}; + +// Models with FPN need input shape % stride == 0 +class PadStride : public PreprocessOp { + public: + virtual void Init(const YAML::Node& item, const std::string& arch) { + stride_ = item["stride"].as(); + } + + virtual void Run(cv::Mat* im, ImageBlob* data); + + private: + int stride_; +}; + +class Preprocessor { + public: + void Init(const YAML::Node& config_node, const std::string& arch) { + arch_ = arch; + for (const auto& item : config_node) { + auto op_name = item["type"].as(); + ops_[op_name] = CreateOp(op_name); + ops_[op_name]->Init(item, arch); + } + } + + std::shared_ptr CreateOp(const std::string& name) { + if (name == "Resize") { + return std::make_shared(); + } else if (name == "Permute") { + return std::make_shared(); + } else if (name == "Normalize") { + return std::make_shared(); + } else if (name == "PadStride") { + return std::make_shared(); + } + return nullptr; + } + + void Run(cv::Mat* im, ImageBlob* data); + + public: + static const std::vector RUN_ORDER; + + private: + std::string arch_; + std::unordered_map> ops_; +}; + +} // namespace PaddleDetection diff --git a/deploy/cpp/scripts/bootstrap.sh b/deploy/cpp/scripts/bootstrap.sh new file mode 100644 index 000000000..fc2bbb864 --- /dev/null +++ b/deploy/cpp/scripts/bootstrap.sh @@ -0,0 +1,11 @@ +# download pre-compiled opencv lib +OPENCV_URL=https://paddleseg.bj.bcebos.com/deploy/deps/opencv346.tar.bz2 +if [ ! -d "./deps/opencv346" ]; then + mkdir -p deps + cd deps + wget -c ${OPENCV_URL} + tar xvfj opencv346.tar.bz2 + rm -rf opencv346.tar.bz2 + cd .. +fi + diff --git a/deploy/cpp/scripts/build.sh b/deploy/cpp/scripts/build.sh new file mode 100644 index 000000000..6361b837f --- /dev/null +++ b/deploy/cpp/scripts/build.sh @@ -0,0 +1,24 @@ +# compile with cuda +WITH_GPU=ON +# compile with tensorrt +WITH_TENSORRT=OFF +# path to paddle inference lib +PADDLE_DIR=/root/projects/deps/fluid_inference/ +# path to opencv lib +OPENCV_DIR=$(pwd)/deps/opencv346/ +# path to cuda lib +CUDA_LIB=/usr/local/cuda/lib64/ + +sh $(pwd)/scripts/bootstrap.sh + +rm -rf build +mkdir -p build +cd build +cmake .. \ + -DWITH_GPU=OFF \ + -DWITH_TENSORRT=OFF \ + -DPADDLE_DIR=${PADDLE_DIR} \ + -DCUDA_LIB=${CUDA_LIB} \ + -DOPENCV_DIR=${OPENCV_DIR} \ + -DWITH_STATIC_LIB=OFF +make diff --git a/deploy/cpp/src/main.cc b/deploy/cpp/src/main.cc new file mode 100644 index 000000000..d7eccff0c --- /dev/null +++ b/deploy/cpp/src/main.cc @@ -0,0 +1,119 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include +#include + +#include "include/object_detector.h" + + +DEFINE_string(model_dir, "", "Path of inference model"); +DEFINE_string(image_path, "", "Path of input image"); +DEFINE_string(video_path, "", "Path of input video"); +DEFINE_bool(use_gpu, false, "Infering with GPU or CPU"); + +void PredictVideo(const std::string& video_path, + PaddleDetection::ObjectDetector* det) { + // Open video + cv::VideoCapture capture; + capture.open(video_path.c_str()); + if (!capture.isOpened()) { + printf("can not open video : %s\n", video_path.c_str()); + return; + } + + // Get Video info : resolution, fps + int video_width = static_cast(capture.get(CV_CAP_PROP_FRAME_WIDTH)); + int video_height = static_cast(capture.get(CV_CAP_PROP_FRAME_HEIGHT)); + int video_fps = static_cast(capture.get(CV_CAP_PROP_FPS)); + + // Create VideoWriter for output + cv::VideoWriter video_out; + std::string video_out_path = "output.avi"; + video_out.open(video_out_path.c_str(), + CV_FOURCC('M', 'J', 'P', 'G'), + video_fps, + cv::Size(video_width, video_height), + true); + if (!video_out.isOpened()) { + printf("create video writer failed!\n"); + return; + } + + std::vector result; + auto labels = det->GetLabelList(); + auto colormap = PaddleDetection::GenerateColorMap(labels.size()); + // Capture all frames and do inference + cv::Mat frame; + while (capture.read(frame)) { + if (frame.empty()) { + break; + } + det->Predict(frame, &result); + cv::Mat out_im = PaddleDetection::VisualizeResult( + frame, result, labels, colormap); + video_out.write(out_im); + } + capture.release(); + video_out.release(); +} + +void PredictImage(const std::string& image_path, + PaddleDetection::ObjectDetector* det) { + // Open input image as an opencv cv::Mat object + cv::Mat im = cv::imread(image_path, 1); + // Store all detected result + std::vector result; + det->Predict(im, &result); + for (const auto& item : result) { + printf("class=%d confidence=%.2f rect=[%d %d %d %d]\n", + item.class_id, + item.confidence, + item.rect[0], + item.rect[1], + item.rect[2], + item.rect[3]); + } + // Visualization result + auto labels = det->GetLabelList(); + auto colormap = PaddleDetection::GenerateColorMap(labels.size()); + cv::Mat vis_img = PaddleDetection::VisualizeResult( + im, result, labels, colormap); + cv::imwrite("output.jpeg", vis_img); + printf("Visualized output saved as output.jpeg\n"); +} + +int main(int argc, char** argv) { + // Parsing command-line + google::ParseCommandLineFlags(&argc, &argv, true); + if (FLAGS_model_dir.empty() + || (FLAGS_image_path.empty() && FLAGS_video_path.empty())) { + std::cout << "Usage: ./main --model_dir=/PATH/TO/INFERENCE_MODEL/ " + << "--image_path=/PATH/TO/INPUT/IMAGE/" << std::endl; + return -1; + } + + // Load model and create a object detector + PaddleDetection::ObjectDetector det(FLAGS_model_dir, FLAGS_use_gpu); + // Do inference on input video or image + if (!FLAGS_video_path.empty()) { + PredictVideo(FLAGS_video_path, &det); + } else if (!FLAGS_image_path.empty()) { + PredictImage(FLAGS_image_path, &det); + } + return 0; +} diff --git a/deploy/cpp/src/object_detector.cc b/deploy/cpp/src/object_detector.cc new file mode 100644 index 000000000..172b22d2c --- /dev/null +++ b/deploy/cpp/src/object_detector.cc @@ -0,0 +1,190 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +# include "include/object_detector.h" + +namespace PaddleDetection { + +// Load Model and create model predictor +void ObjectDetector::LoadModel(const std::string& model_dir, bool use_gpu) { + paddle::AnalysisConfig config; + std::string prog_file = model_dir + OS_PATH_SEP + "__model__"; + std::string params_file = model_dir + OS_PATH_SEP + "__params__"; + config.SetModel(prog_file, params_file); + if (use_gpu) { + config.EnableUseGpu(100, 0); + } else { + config.DisableGpu(); + } + config.SwitchUseFeedFetchOps(false); + config.SwitchSpecifyInputNames(true); + // Memory optimization + config.EnableMemoryOptim(); + predictor_ = std::move(CreatePaddlePredictor(config)); +} + +// Visualiztion MaskDetector results +cv::Mat VisualizeResult(const cv::Mat& img, + const std::vector& results, + const std::vector& lable_list, + const std::vector& colormap) { + cv::Mat vis_img = img.clone(); + for (int i = 0; i < results.size(); ++i) { + int w = results[i].rect[1] - results[i].rect[0]; + int h = results[i].rect[3] - results[i].rect[2]; + cv::Rect roi = cv::Rect(results[i].rect[0], results[i].rect[2], w, h); + + // Configure color and text size + std::string text = lable_list[results[i].class_id]; + int c1 = colormap[3 * results[i].class_id + 0]; + int c2 = colormap[3 * results[i].class_id + 1]; + int c3 = colormap[3 * results[i].class_id + 2]; + cv::Scalar roi_color = cv::Scalar(c1, c2, c3); + text += std::to_string(static_cast(results[i].confidence * 100)) + "%"; + int font_face = cv::FONT_HERSHEY_COMPLEX_SMALL; + double font_scale = 0.5f; + float thickness = 0.5; + cv::Size text_size = cv::getTextSize(text, + font_face, + font_scale, + thickness, + nullptr); + float new_font_scale = roi.width * font_scale / text_size.width; + text_size = cv::getTextSize(text, + font_face, + new_font_scale, + thickness, + nullptr); + cv::Point origin; + origin.x = roi.x; + origin.y = roi.y; + + // Configure text background + cv::Rect text_back = cv::Rect(results[i].rect[0], + results[i].rect[2] - text_size.height, + text_size.width, + text_size.height); + + // Draw roi object, text, and background + cv::rectangle(vis_img, roi, roi_color, 2); + cv::rectangle(vis_img, text_back, roi_color, -1); + cv::putText(vis_img, + text, + origin, + font_face, + new_font_scale, + cv::Scalar(255, 255, 255), + thickness); + } + return vis_img; +} + +void ObjectDetector::Preprocess(const cv::Mat& ori_im) { + // Clone the image : keep the original mat for postprocess + cv::Mat im = ori_im.clone(); + cv::cvtColor(im, im, cv::COLOR_BGR2RGB); + preprocessor_.Run(&im, &inputs_); +} + +void ObjectDetector::Postprocess( + const cv::Mat& raw_mat, + std::vector* result) { + result->clear(); + int rh = 1; + int rw = 1; + if (config_.arch_ == "SSD" || config_.arch_ == "Face") { + rh = raw_mat.rows; + rw = raw_mat.cols; + } + + int total_size = output_data_.size() / 6; + for (int j = 0; j < total_size; ++j) { + // Class id + int class_id = static_cast(round(output_data_[0 + j * 6])); + // Confidence score + float score = output_data_[1 + j * 6]; + int xmin = (output_data_[2 + j * 6] * rw); + int ymin = (output_data_[3 + j * 6] * rh); + int xmax = (output_data_[4 + j * 6] * rw); + int ymax = (output_data_[5 + j * 6] * rh); + int wd = xmax - xmin; + int hd = ymax - ymin; + if (score > threshold_) { + ObjectResult result_item; + result_item.rect = {xmin, xmax, ymin, ymax}; + result_item.class_id = class_id; + result_item.confidence = score; + result->push_back(result_item); + } + } +} + +void ObjectDetector::Predict(const cv::Mat& im, + std::vector* result) { + // Preprocess image + Preprocess(im); + // Prepare input tensor + auto input_names = predictor_->GetInputNames(); + for (const auto& tensor_name : input_names) { + auto in_tensor = predictor_->GetInputTensor(tensor_name); + if (tensor_name == "image") { + int rh = inputs_.eval_im_size_f_[0]; + int rw = inputs_.eval_im_size_f_[1]; + in_tensor->Reshape({1, 3, rh, rw}); + in_tensor->copy_from_cpu(inputs_.im_data_.data()); + } else if (tensor_name == "im_size") { + in_tensor->Reshape({1, 2}); + in_tensor->copy_from_cpu(inputs_.ori_im_size_.data()); + } else if (tensor_name == "im_info") { + in_tensor->Reshape({1, 3}); + in_tensor->copy_from_cpu(inputs_.eval_im_size_f_.data()); + } else if (tensor_name == "im_shape") { + in_tensor->Reshape({1, 3}); + in_tensor->copy_from_cpu(inputs_.ori_im_size_f_.data()); + } + } + // Run predictor + predictor_->ZeroCopyRun(); + // Get output tensor + auto output_names = predictor_->GetOutputNames(); + auto out_tensor = predictor_->GetOutputTensor(output_names[0]); + std::vector output_shape = out_tensor->shape(); + // Calculate output length + int output_size = 1; + for (int j = 0; j < output_shape.size(); ++j) { + output_size *= output_shape[j]; + } + output_data_.resize(output_size); + out_tensor->copy_to_cpu(output_data_.data()); + // Postprocessing result + Postprocess(im, result); +} + +std::vector GenerateColorMap(int num_class) { + auto colormap = std::vector(3 * num_class, 0); + for (int i = 0; i < num_class; ++i) { + int j = 0; + int lab = i; + while (lab) { + colormap[i * 3] |= (((lab >> 0) & 1) << (7 - j)); + colormap[i * 3 + 1] |= (((lab >> 1) & 1) << (7 - j)); + colormap[i * 3 + 2] |= (((lab >> 2) & 1) << (7 - j)); + ++j; + lab >>= 3; + } + } + return colormap; +} + +} // namespace PaddleDetection diff --git a/deploy/cpp/src/preprocess_op.cc b/deploy/cpp/src/preprocess_op.cc new file mode 100644 index 000000000..b3bc27528 --- /dev/null +++ b/deploy/cpp/src/preprocess_op.cc @@ -0,0 +1,145 @@ +// Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +#include "include/preprocess_op.h" + +namespace PaddleDetection { + +void Normalize::Run(cv::Mat* im, ImageBlob* data) { + double e = 1.0; + if (is_scale_) { + e /= 255.0; + } + (*im).convertTo(*im, CV_32FC3, e); + for (int h = 0; h < im->rows; h++) { + for (int w = 0; w < im->cols; w++) { + im->at(h, w)[0] = + (im->at(h, w)[0] - mean_[0] ) / scale_[0]; + im->at(h, w)[1] = + (im->at(h, w)[1] - mean_[1] ) / scale_[1]; + im->at(h, w)[2] = + (im->at(h, w)[2] - mean_[2] ) / scale_[2]; + } + } +} + +void Permute::Run(cv::Mat* im, ImageBlob* data) { + int rh = im->rows; + int rw = im->cols; + int rc = im->channels(); + (data->im_data_).resize(rc * rh * rw); + float* base = (data->im_data_).data(); + for (int i = 0; i < rc; ++i) { + cv::extractChannel(*im, cv::Mat(rh, rw, CV_32FC1, base + i * rh * rw), i); + } +} + +void Resize::Run(cv::Mat* im, ImageBlob* data) { + data->ori_im_size_ = { + static_cast(im->rows), + static_cast(im->cols) + }; + data->ori_im_size_f_ = { + static_cast(im->rows), + static_cast(im->cols), + 1.0 + }; + auto resize_scale = GenerateScale(*im); + cv::resize( + *im, *im, cv::Size(), resize_scale.first, resize_scale.second, interp_); + if (max_size_ != 0 && !image_shape_.empty()) { + // Padding the image with 0 border + cv::copyMakeBorder( + *im, + *im, + 0, + max_size_ - im->rows, + 0, + max_size_ - im->cols, + cv::BORDER_CONSTANT, + cv::Scalar(0)); + } + data->eval_im_size_f_ = { + static_cast(im->rows), + static_cast(im->cols), + resize_scale.first + }; +} + +std::pair Resize::GenerateScale(const cv::Mat& im) { + std::pair resize_scale; + int origin_w = im.cols; + int origin_h = im.rows; + + if (max_size_ != 0 && (arch_ == "RCNN" || arch_ == "RetinaNet")) { + int im_size_max = std::max(origin_w, origin_h); + int im_size_min = std::min(origin_w, origin_h); + float scale_ratio = + static_cast(target_size_) / static_cast(im_size_min); + if (max_size_ > 0) { + if (round(scale_ratio * im_size_max) > max_size_) { + scale_ratio = + static_cast(max_size_) / static_cast(im_size_max); + } + } + resize_scale = {scale_ratio, scale_ratio}; + } else { + resize_scale.first = + static_cast(target_size_) / static_cast(origin_w); + resize_scale.second = + static_cast(target_size_) / static_cast(origin_h); + } + return resize_scale; +} + +void PadStride::Run(cv::Mat* im, ImageBlob* data) { + if (stride_ <= 0) { + return; + } + int rc = im->channels(); + int rh = im->rows; + int rw = im->cols; + int nh = (rh / stride_) * stride_ + (rh % stride_ != 0) * stride_; + int nw = (rw / stride_) * stride_ + (rw % stride_ != 0) * stride_; + cv::copyMakeBorder( + *im, + *im, + 0, + nh - rh, + 0, + nw - rw, + cv::BORDER_CONSTANT, + cv::Scalar(0)); + (data->eval_im_size_f_)[0] = static_cast(im->rows); + (data->eval_im_size_f_)[1] = static_cast(im->cols); +} + + +// Preprocessor op running order +const std::vector Preprocessor::RUN_ORDER = { + "Resize", "Normalize", "PadStride", "Permute" +}; + +void Preprocessor::Run(cv::Mat* im, ImageBlob* data) { + for (const auto& name : RUN_ORDER) { + if (ops_.find(name) != ops_.end()) { + ops_[name]->Run(im, data); + } + } +} + +} // namespace PaddleDetection diff --git a/docs/advanced_tutorials/inference/DEPLOYMENT.md b/docs/advanced_tutorials/inference/DEPLOYMENT.md deleted file mode 100644 index 4915b410e..000000000 --- a/docs/advanced_tutorials/inference/DEPLOYMENT.md +++ /dev/null @@ -1,172 +0,0 @@ -# PaddleDetection C++预测部署方案 - -## 本文档结构 - -[1.说明](#1说明) - -[2.主要目录和文件](#2主要目录和文件) - -[3.编译](#3编译) - -[4.预测并可视化结果](#4预测并可视化结果) - - - - -## 1.说明 - -本目录提供一个跨平台的图像检测模型的C++预测部署方案,用户通过一定的配置,加上少量的代码,即可把模型集成到自己的服务中,完成相应的图像检测任务。 - -主要设计的目标包括以下四点: -- 跨平台,支持在 Windows 和 Linux 完成编译、开发和部署 -- 可扩展性,支持用户针对新模型开发自己特殊的数据预处理等逻辑 -- 高性能,除了`PaddlePaddle`自身带来的性能优势,我们还针对图像检测的特点对关键步骤进行了性能优化 -- 支持多种常见的图像检测模型,如YOLOv3, Faster-RCNN, Faster-RCNN+FPN,用户通过少量配置即可加载模型完成常见检测任务 - -## 2.主要目录和文件 - -```bash -deploy -├── detection_demo.cpp # 完成图像检测预测任务C++代码 -│ -├── conf -│ ├── detection_rcnn.yaml #示例faster rcnn 目标检测配置 -│ └── detection_rcnn_fpn.yaml #示例faster rcnn + fpn目标检测配置 -├── images -│ └── detection_rcnn # 示例faster rcnn + fpn目标检测测试图片目录 -├── tools -│ └── vis.py # 示例图像检测结果可视化脚本 -├── docs -│ ├── linux_build.md # Linux 编译指南 -│ ├── windows_vs2015_build.md # windows VS2015编译指南 -│ └── windows_vs2019_build.md # Windows VS2019编译指南 -│ -├── utils # 一些基础公共函数 -│ -├── preprocess # 数据预处理相关代码 -│ -├── predictor # 模型加载和预测相关代码 -│ -├── CMakeList.txt # cmake编译入口文件 -│ -└── external-cmake # 依赖的外部项目cmake(目前仅有yaml-cpp) - -``` - -## 3.编译 -支持在`Windows`和`Linux`平台编译和使用: -- [Linux 编译指南](./docs/linux_build.md) -- [Windows 使用 Visual Studio 2019 Community 编译指南](./docs/windows_vs2019_build.md) -- [Windows 使用 Visual Studio 2015 编译指南](./docs/windows_vs2015_build.md) - -`Windows`上推荐使用最新的`Visual Studio 2019 Community`直接编译`CMake`项目。 - -## 4.预测并可视化结果 - -完成编译后,便生成了需要的可执行文件和链接库。这里以我们基于`faster rcnn`检测模型为例,介绍部署图像检测模型的通用流程。 - -### 4.1. 下载模型文件 -我们提供faster rcnn,faster rcnn+fpn模型用于预测coco17数据集,可在以下链接下载:[faster rcnn示例模型下载地址](https://paddleseg.bj.bcebos.com/inference/faster_rcnn_pp50.zip), - [faster rcnn + fpn示例模型下载地址](https://paddleseg.bj.bcebos.com/inference/faster_rcnn_pp50_fpn.zip)。 - -下载并解压,解压后目录结构如下: -``` -faster_rcnn_pp50/ -├── __model__ # 模型文件 -│ -└── __params__ # 参数文件 -``` -解压后把上述目录拷贝到合适的路径: - -**假设**`Windows`系统上,我们模型和参数文件所在路径为`D:\projects\models\faster_rcnn_pp50`。 - -**假设**`Linux`上对应的路径则为`/root/projects/models/faster_rcnn_pp50/`。 - - -### 4.2. 修改配置 - -`inference`源代码(即本目录)的`conf`目录下提供了示例基于faster rcnn的配置文件`detection_rcnn.yaml`, 相关的字段含义和说明如下: - -```yaml -DEPLOY: - # 是否使用GPU预测 - USE_GPU: 1 - # 模型和参数文件所在目录路径 - MODEL_PATH: "/root/projects/models/faster_rcnn_pp50" - # 模型文件名 - MODEL_FILENAME: "__model__" - # 参数文件名 - PARAMS_FILENAME: "__params__" - # 预测图片的标准输入,尺寸不一致会resize - EVAL_CROP_SIZE: (608, 608) - # resize方式,支持 UNPADDING和RANGE_SCALING - RESIZE_TYPE: "RANGE_SCALING" - # 短边对齐的长度,仅在RANGE_SCALING下有效 - TARGET_SHORT_SIZE : 800 - # 均值 - MEAN: [0.4647, 0.4647, 0.4647] - # 方差 - STD: [0.0834, 0.0834, 0.0834] - # 图片类型, rgb或者rgba - IMAGE_TYPE: "rgb" - # 像素分类数 - NUM_CLASSES: 1 - # 通道数 - CHANNELS : 3 - # 预处理器, 目前提供图像检测的通用处理类DetectionPreProcessor - PRE_PROCESSOR: "DetectionPreProcessor" - # 预测模式,支持 NATIVE 和 ANALYSIS - PREDICTOR_MODE: "ANALYSIS" - # 每次预测的 batch_size - BATCH_SIZE : 3 - # 长边伸缩的最大长度,-1代表无限制。 - RESIZE_MAX_SIZE: 1333 - # 输入的tensor数量。 - FEEDS_SIZE: 3 - -``` -修改字段`MODEL_PATH`的值为你在**上一步**下载并解压的模型文件所放置的目录即可。更多配置文件字段介绍,请参考文档[预测部署方案配置文件说明](./docs/configuration.md)。 - -**注意**在使用CPU版本预测库时,`USE_GPU`的值必须设为0,否则无法正常预测。 - -### 4.3. 执行预测 - -在终端中切换到生成的可执行文件所在目录为当前目录(Windows系统为`cmd`)。 - -`Linux` 系统中执行以下命令: -```shell -./detection_demo --conf=conf/detection_rcnn.yaml --input_dir=images/detection_rcnn -``` -`Windows` 中执行以下命令: -```shell -.\detection_demo.exe --conf=conf\detection_rcnn.yaml --input_dir=images\detection_rcnn\ -``` - - -预测使用的两个命令参数说明如下: - -| 参数 | 含义 | -|-------|----------| -| conf | 模型配置的Yaml文件路径 | -| input_dir | 需要预测的图片目录 | - -· -配置文件说明请参考上一步,样例程序会扫描input_dir目录下的所有图片,并为每一张图片生成对应的预测结果,输出到屏幕,并在`X`同一目录下保存到`X.pb文件`(X为对应图片的文件名)。可使用工具脚本vis.py将检测结果可视化。 - -**检测结果可视化** - -运行可视化脚本时,只需输入命令行参数图片路径、检测结果pb文件路径、目标框阈值以及类别-标签映射文件路径即可得到可视化的图片`X.png` (tools目录下提供coco17的类别标签映射文件coco17.json)。 - -```bash -python vis.py --img_path=../build/images/detection_rcnn/000000087038.jpg --img_result_path=../build/images/detection_rcnn/000000087038.jpg.pb --threshold=0.1 --c2l_path=coco17.json -``` - -检测结果(每个图片的结果用空行隔开) - -```原图:``` - -![](../../../inference/images/detection_rcnn/000000087038.jpg) - -```检测结果图:``` - -![](../../images/000000087038_res.jpg) diff --git a/docs/advanced_tutorials/inference/DEPLOYMENT.md b/docs/advanced_tutorials/inference/DEPLOYMENT.md new file mode 120000 index 000000000..8ff4f4b53 --- /dev/null +++ b/docs/advanced_tutorials/inference/DEPLOYMENT.md @@ -0,0 +1 @@ +../../../../deploy/cpp/README.md \ No newline at end of file diff --git a/docs/advanced_tutorials/inference/docs/configuration.md b/docs/advanced_tutorials/inference/docs/configuration.md deleted file mode 100644 index 06fa7cc3f..000000000 --- a/docs/advanced_tutorials/inference/docs/configuration.md +++ /dev/null @@ -1,75 +0,0 @@ -# 预测部署方案配置文件说明 -## 基本概念 -预测部署方案的配置文件旨在给用户提供一个预测部署方案定制化接口。用户仅需理解该配置文件相关字段的含义,无需编写任何代码,即可定制化预测部署方案。为了更好地表达每个字段的含义,首先介绍配置文件中字段的类型。 - -### 字段类型 -- **required**: 表明该字段必须显式定义,否则无法正常启动预测部署程序。 -- **optional**: 表明该字段可忽略不写,预测部署系统会提供默认值,相关默认值将在下文介绍。 - -### 字段值类型 -- **int**:表明该字段必须赋予整型类型的值。 -- **string**:表明该字段必须赋予字符串类型的值。 -- **list**:表明该字段必须赋予列表的值。 -- **tuple**: 表明该字段必须赋予双元素元组的值。 - -## 字段介绍 - -```yaml -# 预测部署时所有配置字段需在DEPLOY字段下 -DEPLOY: - # 类型:required int - # 含义:是否使用GPU预测。 0:不使用 1:使用 - USE_GPU: 1 - # 类型:required string - # 含义:模型和参数文件所在目录 - MODEL_PATH: "/path/to/model_directory" - # 类型:required string - # 含义:模型文件名 - MODEL_FILENAME: "__model__" - # 类型:required string - # 含义:参数文件名 - PARAMS_FILENAME: "__params__" - # 类型:optional string - # 含义:图像resize的类型。支持 UNPADDING 和 RANGE_SCALING模式。默认是UNPADDING模式。 - RESIZE_TYPE: "UNPADDING" - # 类型:required tuple - # 含义:当使用UNPADDING模式时,会将图像直接resize到该尺寸。 - EVAL_CROP_SIZE: (513, 513) - # 类型:optional int - # 含义:当使用RANGE_SCALING模式时,图像短边需要对齐该字段的值,长边会同比例 - # 的缩放,从而在保持图像长宽比例不变的情况下resize到新的尺寸。默认值为0。 - TARGET_SHORT_SIZE: 800 - # 类型:optional int - # 含义: 当使用RANGE_SCALING模式时,长边不能缩放到比该字段的值大。默认值为0。 - RESIZE_MAX_SIZE: 1333 - # 类型:required list - # 含义:图像进行归一化预处理时的均值 - MEAN: [104.008, 116.669, 122.675] - # 类型:required list - # 含义:图像进行归一化预处理时的方差 - STD: [1.0, 1.0, 1.0] - # 类型:string - # 含义:图片类型, rgb 或者 rgba - IMAGE_TYPE: "rgb" - # 类型:required int - # 含义:图像分类类型数 - NUM_CLASSES: 2 - # 类型:required int - # 含义:图片通道数 - CHANNELS : 3 - # 类型:required string - # 含义:预处理方式,目前提供图像检测的通用预处理类DetectionPreProcessor. - PRE_PROCESSOR: "DetectionPreProcessor" - # 类型:required string - # 含义:预测模式,支持 NATIVE 和 ANALYSIS - PREDICTOR_MODE: "ANALYSIS" - # 类型:required int - # 含义:每次预测的 batch_size - BATCH_SIZE : 3 - # 类型:optional int - # 含义: 输入张量的个数。大部分模型不需要设置。 默认值为1. - FEEDS_SIZE: 2 - # 类型: optional int - # 含义: 将图像的边变为该字段的值的整数倍。在使用fpn模型时需要设为32。默认值为1。 - COARSEST_STRIDE: 32 -``` diff --git a/docs/advanced_tutorials/inference/docs/linux_build.md b/docs/advanced_tutorials/inference/docs/linux_build.md deleted file mode 100644 index 012f3dee7..000000000 --- a/docs/advanced_tutorials/inference/docs/linux_build.md +++ /dev/null @@ -1,100 +0,0 @@ -# Linux平台 编译指南 - -## 说明 -本文档在 `Linux`平台使用`GCC 4.8.5` 和 `GCC 4.9.4`测试过,如果需要使用更高G++版本编译使用,则需要重新编译Paddle预测库,请参考: [从源码编译Paddle预测库](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_usage/deploy/inference/build_and_install_lib_cn.html#id15)。 - -## 前置条件 -* G++ 4.8.2 ~ 4.9.4 -* CUDA 9.0 / CUDA 10.0, cudnn 7+ (仅在使用GPU版本的预测库时需要) -* CMake 3.0+ - -请确保系统已经安装好上述基本软件,**下面所有示例以工作目录为 `/root/projects/`演示**。 - -### Step1: 下载代码 - -1. `git clone https://github.com/PaddlePaddle/PaddleDetection.git` - -`C++`预测代码在`/root/projects/PaddleDetection/inference` 目录,该目录不依赖任何`PaddleDetection`下其他目录。 - - -### Step2: 下载PaddlePaddle C++ 预测库 fluid_inference - -PaddlePaddle C++ 预测库主要分为CPU版本和GPU版本。其中,针对不同的CUDA版本,GPU版本预测库又分为两个版本预测库:CUDA 9.0和CUDA 10.0版本预测库。以下为各版本C++预测库的下载链接: - -| 版本 | 链接 | -| ---- | ---- | -| CPU版本 | [fluid_inference.tgz](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_inference_linux_cpu_1.6.1.tgz) | -| CUDA 9.0版本 | [fluid_inference.tgz](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_inference_linux_cuda97_1.6.1.tgz) | -| CUDA 10.0版本 | [fluid_inference.tgz](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_inference_linux_cuda10_1.6.1.tgz) | - - -针对不同的CPU类型、不同的指令集,官方提供更多可用的预测库版本,目前已经推出1.6版本的预测库。其余版本具体请参考以下链接:[C++预测库下载列表](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/advanced_usage/deploy/inference/build_and_install_lib_cn.html) - - -下载并解压后`/root/projects/fluid_inference`目录包含内容为: -``` -fluid_inference -├── paddle # paddle核心库和头文件 -| -├── third_party # 第三方依赖库和头文件 -| -└── version.txt # 版本和编译信息 -``` - -### Step3: 安装配置OpenCV - -```shell -# 0. 切换到/root/projects目录 -cd /root/projects -# 1. 下载OpenCV3.4.6版本源代码 -wget -c https://paddleseg.bj.bcebos.com/inference/opencv-3.4.6.zip -# 2. 解压 -unzip opencv-3.4.6.zip && cd opencv-3.4.6 -# 3. 创建build目录并编译, 这里安装到/usr/local/opencv3目录 -mkdir build && cd build -cmake .. -DCMAKE_INSTALL_PREFIX=/root/projects/opencv3 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DWITH_IPP=OFF -DBUILD_IPP_IW=OFF -DWITH_LAPACK=OFF -DWITH_EIGEN=OFF -DCMAKE_INSTALL_LIBDIR=lib64 -DWITH_ZLIB=ON -DBUILD_ZLIB=ON -DWITH_JPEG=ON -DBUILD_JPEG=ON -DWITH_PNG=ON -DBUILD_PNG=ON -DWITH_TIFF=ON -DBUILD_TIFF=ON -make -j4 -make install -``` - -**注意:** 上述操作完成后,`opencv` 被安装在 `/root/projects/opencv3` 目录。 - -### Step4: 编译 - -`CMake`编译时,涉及到四个编译参数用于指定核心依赖库的路径, 他们的定义如下:(带*表示仅在使用**GPU版本**预测库时指定,其中CUDA库版本尽量对齐,**使用9.0、10.0版本,不使用9.2、10.1版本CUDA库**) - -| 参数名 | 含义 | -| ---- | ---- | -| * CUDA_LIB | CUDA的库路径 | -| * CUDNN_LIB | cudnn的库路径| -| OPENCV_DIR | OpenCV的安装路径 | -| PADDLE_DIR | Paddle预测库的路径 | - -在使用**GPU版本**预测库进行编译时,可执行下列操作。**注意**把对应的参数改为你的上述依赖库实际路径: - -```shell -cd /root/projects/PaddleDetection/inference -mkdir build && cd build -cmake .. -DWITH_GPU=ON -DPADDLE_DIR=/root/projects/fluid_inference -DCUDA_LIB=/usr/local/cuda/lib64/ -DOPENCV_DIR=/root/projects/opencv3/ -DCUDNN_LIB=/usr/local/cuda/lib64/ -DWITH_STATIC_LIB=OFF -make -``` - -在使用**CPU版本**预测库进行编译时,可执行下列操作: - -```shell -cd /root/projects/PaddleDetection/inference - -mkdir build && cd build -cmake .. -DWITH_GPU=OFF -DPADDLE_DIR=/root/projects/fluid_inference -DOPENCV_DIR=/root/projects/opencv3/ -DWITH_STATIC_LIB=OFF -make -``` - -### Step5: 预测及可视化 - -执行命令: - -``` -./detection_demo --conf=/path/to/your/conf --input_dir=/path/to/your/input/data/directory -``` - -更详细说明请参考ReadMe文档: [预测和可视化部分](../README.md) diff --git a/docs/advanced_tutorials/inference/docs/linux_build.md b/docs/advanced_tutorials/inference/docs/linux_build.md new file mode 120000 index 000000000..6a26e6200 --- /dev/null +++ b/docs/advanced_tutorials/inference/docs/linux_build.md @@ -0,0 +1 @@ +../../../../deploy/cpp/docs/linux_build.md \ No newline at end of file diff --git a/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md b/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md deleted file mode 100644 index f831aba90..000000000 --- a/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md +++ /dev/null @@ -1,102 +0,0 @@ -# Visual Studio 2019 Community CMake 编译指南 - -Windows 平台下,我们使用`Visual Studio 2015` 和 `Visual Studio 2019 Community` 进行了测试。微软从`Visual Studio 2017`开始即支持直接管理`CMake`跨平台编译项目,但是直到`2019`才提供了稳定和完全的支持,所以如果你想使用CMake管理项目编译构建,我们推荐你使用`Visual Studio 2019`环境下构建。 - -你也可以使用和`VS2015`一样,通过把`CMake`项目转化成`VS`项目来编译,其中**有差别的部分**在文档中我们有说明,请参考:[使用Visual Studio 2015 编译指南](./windows_vs2015_build.md) - -## 前置条件 -* Visual Studio 2019 -* CUDA 9.0 / CUDA 10.0,cudnn 7+ (仅在使用GPU版本的预测库时需要) -* CMake 3.0+ - -请确保系统已经安装好上述基本软件,我们使用的是`VS2019`的社区版。 - -**下面所有示例以工作目录为 `D:\projects`演示**。 - -### Step1: 下载代码 - -1. 点击下载源代码:[下载地址](https://github.com/PaddlePaddle/PaddleDetection/archive/master.zip) -2. 解压,解压后目录重命名为`PaddleDetection` - -以下代码目录路径为`D:\projects\PaddleDetection` 为例。 - - -### Step2: 下载PaddlePaddle C++ 预测库 fluid_inference - -PaddlePaddle C++ 预测库主要分为两大版本:CPU版本和GPU版本。其中,针对不同的CUDA版本,GPU版本预测库又分为三个版本预测库:CUDA 9.0和CUDA 10.0版本预测库。根据Windows环境,下载相应版本的PaddlePaddle预测库,并解压到`D:\projects\`目录。以下为各版本C++预测库的下载链接: - -| 版本 | 链接 | -| ---- | ---- | -| CPU版本 | [fluid_inference_install_dir.zip](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_install_dir_win_cpu_1.6.zip) | -| CUDA 9.0版本 | [fluid_inference_install_dir.zip](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_inference_install_dir_win_cuda9_1.6.1.zip) | -| CUDA 10.0版本 | [fluid_inference_install_dir.zip](https://bj.bcebos.com/paddlehub/paddle_inference_lib/fluid_inference_install_dir_win_cuda10_1.6.1.zip) | - -解压后`D:\projects\fluid_inference`目录包含内容为: -``` -fluid_inference -├── paddle # paddle核心库和头文件 -| -├── third_party # 第三方依赖库和头文件 -| -└── version.txt # 版本和编译信息 -``` - -### Step3: 安装配置OpenCV - -1. 在OpenCV官网下载适用于Windows平台的3.4.6版本, [下载地址](https://sourceforge.net/projects/opencvlibrary/files/3.4.6/opencv-3.4.6-vc14_vc15.exe/download) -2. 运行下载的可执行文件,将OpenCV解压至指定目录,如`D:\projects\opencv` -3. 配置环境变量,如下流程所示 - - 我的电脑->属性->高级系统设置->环境变量 - - 在系统变量中找到Path(如没有,自行创建),并双击编辑 - - 新建,将opencv路径填入并保存,如`D:\projects\opencv\build\x64\vc14\bin` - -### Step4: 使用Visual Studio 2019直接编译CMake - -1. 打开Visual Studio 2019 Community,点击`继续但无需代码` -![step2](https://paddleseg.bj.bcebos.com/inference/vs2019_step1.png) -2. 点击: `文件`->`打开`->`CMake` -![step2.1](https://paddleseg.bj.bcebos.com/inference/vs2019_step2.png) - -选择项目代码所在路径,并打开`CMakeList.txt`: - -![step2.2](https://paddleseg.bj.bcebos.com/inference/vs2019_step3.png) - -3. 点击:`项目`->`cpp_inference_demo的CMake设置` - -![step3](https://paddleseg.bj.bcebos.com/inference/vs2019_step4.png) - -4. 点击`浏览`,分别设置编译选项指定`CUDA`、`OpenCV`、`Paddle预测库`的路径 - -三个编译参数的含义说明如下(带*表示仅在使用**GPU版本**预测库时指定, 其中CUDA库版本尽量对齐,**使用9.0、10.0版本,不使用9.2、10.1等版本CUDA库**): - -| 参数名 | 含义 | -| ---- | ---- | -| *CUDA_LIB | CUDA的库路径 | -| OPENCV_DIR | OpenCV的安装路径, | -| PADDLE_DIR | Paddle预测库的路径 | - -**注意**在使用CPU版本预测库时,需要把CUDA_LIB的勾去掉。 -![step4](https://paddleseg.bj.bcebos.com/inference/vs2019_step5.png) - -**设置完成后**, 点击上图中`保存并生成CMake缓存以加载变量`。 - -5. 点击`生成`->`全部生成` - -![step6](https://paddleseg.bj.bcebos.com/inference/vs2019_step6.png) - - -### Step5: 预测及可视化 - -上述`Visual Studio 2019`编译产出的可执行文件在`out\build\x64-Release`目录下,打开`cmd`,并切换到该目录: - -``` -cd D:\projects\PaddleDetection\inference\out\build\x64-Release -``` - -之后执行命令: - -``` -detection_demo.exe --conf=/path/to/your/conf --input_dir=/path/to/your/input/data/directory -``` - -更详细说明请参考ReadMe文档: [预测和可视化部分](../README.md) diff --git a/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md b/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md new file mode 120000 index 000000000..a39dd3610 --- /dev/null +++ b/docs/advanced_tutorials/inference/docs/windows_vs2019_build.md @@ -0,0 +1 @@ +../../../../deploy/cpp/docs/windows_vs2019_build.md \ No newline at end of file diff --git a/inference/LICENSE b/inference/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/inference/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/inference/README.md b/inference/README.md deleted file mode 100644 index 46de1b7ca..000000000 --- a/inference/README.md +++ /dev/null @@ -1,2 +0,0 @@ -**文档教程请参考:** [PaddleDetection C++预测部署方案](../docs/advanced_tutorials/inference/DEPLOYMENT.md)
-**English document please refer:** [PaddleDetection C++ deployment](../docs/advanced_tutorials/inference/DEPLOYMENT.md) diff --git a/inference/conf/detection_rcnn.yaml b/inference/conf/detection_rcnn.yaml deleted file mode 100644 index a53698d7f..000000000 --- a/inference/conf/detection_rcnn.yaml +++ /dev/null @@ -1,18 +0,0 @@ -DEPLOY: - USE_GPU: 1 - MODEL_PATH: "/root/projects/models/faster_rcnn_pp50" - MODEL_FILENAME: "__model__" - PARAMS_FILENAME: "__params__" - EVAL_CROP_SIZE: (608, 608) - RESIZE_TYPE: "RANGE_SCALING" - TARGET_SHORT_SIZE : 800 - MEAN: [0.485, 0.456, 0.406] - STD: [0.229, 0.224, 0.225] - IMAGE_TYPE: "rgb" - NUM_CLASSES: 1 - CHANNELS : 3 - PRE_PROCESSOR: "DetectionPreProcessor" - PREDICTOR_MODE: "ANALYSIS" - BATCH_SIZE : 1 - RESIZE_MAX_SIZE: 1333 - FEEDS_SIZE: 3 diff --git a/inference/conf/detection_rcnn_fpn.yaml b/inference/conf/detection_rcnn_fpn.yaml deleted file mode 100644 index 9d6635ef8..000000000 --- a/inference/conf/detection_rcnn_fpn.yaml +++ /dev/null @@ -1,19 +0,0 @@ -DEPLOY: - USE_GPU: 1 - MODEL_PATH: "/root/projects/models/faster_rcnn_pp50_fpn" - MODEL_FILENAME: "__model__" - PARAMS_FILENAME: "__params__" - EVAL_CROP_SIZE: (608, 608) - RESIZE_TYPE: "RANGE_SCALING" - TARGET_SHORT_SIZE : 800 - MEAN: [0.485, 0.456, 0.406] - STD: [0.229, 0.224, 0.225] - IMAGE_TYPE: "rgb" - NUM_CLASSES: 1 - CHANNELS : 3 - PRE_PROCESSOR: "DetectionPreProcessor" - PREDICTOR_MODE: "ANALYSIS" - BATCH_SIZE : 1 - RESIZE_MAX_SIZE: 1333 - FEEDS_SIZE: 3 - COARSEST_STRIDE: 32 diff --git a/inference/detection_demo.cpp b/inference/detection_demo.cpp deleted file mode 100644 index 32921fbd1..000000000 --- a/inference/detection_demo.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include -#include -#include - -DEFINE_string(conf, "", "Configuration File Path"); -DEFINE_string(input_dir, "", "Directory of Input Images"); - -int main(int argc, char** argv) { - // 0. parse args - google::ParseCommandLineFlags(&argc, &argv, true); - if (FLAGS_conf.empty() || FLAGS_input_dir.empty()) { - std::cout << "Usage: ./predictor --conf=/config/path/to/your/model " - << "--input_dir=/directory/of/your/input/images" << std::endl; - return -1; - } - // 1. create a predictor and init it with conf - PaddleSolution::DetectionPredictor predictor; - if (predictor.init(FLAGS_conf) != 0) { - #ifdef _WIN32 - std::cerr << "Fail to init predictor" << std::endl; - #else - LOG(FATAL) << "Fail to init predictor"; - #endif - return -1; - } - - // 2. get all the images with extension '.jpeg' at input_dir - auto imgs = PaddleSolution::utils::get_directory_images(FLAGS_input_dir, - ".jpeg|.jpg|.JPEG|.JPG|.bmp|.BMP|.png|.PNG"); - - // 3. predict - predictor.predict(imgs); - return 0; -} diff --git a/inference/images/detection_rcnn/000000014439.jpg b/inference/images/detection_rcnn/000000014439.jpg deleted file mode 100644 index 0abbdab06eb5950b93908cc91adfa640e8a3ac78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195229 zcmbTd1ymf(_UPNg;O+r}Gq?nIcXtmyIKdr)ySuwPgkZrXI0Tmj3mTk2a0u}D{%5Uo z&bw>f`=n-8uixz2)q8hUb@lG5nwRe{n*gS~w45{m0)YV8*AMWrjjAgrAz`elt|Bd` zDD|2F0I0HxHV%$3m;hk!;O3$(BTlZXr%#SB1;7AE06f430H#n^CnXJOP2e@jNlB2q zzAF90|4BDX!0VX+V4hi4m7M%P^8Z(a1$A<90|1cft2T$Zg)8)xLtpuWr<>D1^7B{5 zHM9GNVPOAZmsba0ncyF``WG|(kIuhX^dC02cQAj|`NwA`b9?iDc<_}YJ=`r`8Larq z;T|>?p0B*{%8(E4_BOA4_sY2T7N)KM0E_yM+|2@N{mQJbjOwDPF7e8O0Dy>U^B-sn_;|@>Ej&M1xVbT_nnLYNUChZP9POP<9lQbH zU)TIkDFFMQx+Q=#U{ip1I zWRArEzzkBED>B(Ya z0cH88LjRrq9~J(s`M-z%vd8j|y?@soxuk`qsrv^v@_#B7>iEIY-G$uM$rNfq&iuc2 z;{V?T|I4la@`Fj;!qURU!r|4F_G>S*aj<%AZU=K4HycL>avO*LT?_yJEcRbM{Dc4M z*ROz6`V8P2vjCXWxB&Qc5`e`)0l)_NuQ{N9x0@o8Ht^4#r$e^?uYUi^ulfIT{J$Mw z5?+78xY}5e|09-A*CdC!yLkM=ulK}12RHy3zyNRoLVy&Y0_Xr{fF0lg1OQP$3Xlg> z08Ky-Fan@}HDC|80G_}{AP5KtVt_;-4af!xfKs3es0Tg+Z9o^$4-5knzznbmtOA?B z9&ikt12@3q>p+G8LIdG|2ti~ZY7irc9mER~21$VwLFynqkO{~N#t_B|#u>&3 zCKM(fCKIL@rWU3ZrXOYkW)Wr+<{0K041iI<_+Sb!Gnf}F0agL)gDt@>V1IBlI2~LJ zt_OF3N5J#oP4Ef$9u^)J2bLU`8CC#R7FG)u3hNB(4;u@c4O4*Lv; z21g9X2*(d62d4{X1?LGD4wnvB4%Y%V1h)vc2X_Mx504K|3(o^D3$F)n3-1db3!ewy z0N)2c3%>(@jevkah`@*-grI_8ir|J2j*x{=i_nWOhp>lmhlqkmhRBX6ji`_4fEbLJ zj#!P@gE)t{kNAj$iA0UWkEDWRj^vG$fK-aqfi#V@hxCYyg-nYqgsh2diyVZUiCm97 zguI4)iGqSciNc4XhGK&fh?0r&31t*z3*{aa8#;66~+oJ2+q* zDjW$MC{74YDb5hi9xgmCEv_7{Ep7~M9qttFIUY71C!RK*7hVotH{K>b7@r1T4*vsw z0{&w7yrdyzgr{|@&qtBzCVSr)aVz6e&VVGuwVdQ4CVa#KkWrAbkV{%|B zW?E)OWfo)hV6I`_V!>xoWC>x>Vd8hv_>D|b?XI3uO53HrEt8Cb8@@&Cu9c+Kt z8Q7uhIqVA@XdKcU0UTdAE;t!EEjaTzzjNVmDRD(`4RAei^KiRx*K;58KzK}ea(R|{ zad}mFV|hpU;P}M(0{FW4?)ka--S|KA{}x~tuoI{jI1r>2v=A&6+!3M_G8HNk+7u=i zHW4lq-V~t_F%>Bm*%qY|H5V-x-4~-5vlXiqI}>LWcM)$9zm?#Z@RR711WU?DMoUgf zVM}RAWlL>HQ%YM&*GQksaLM?}^vS}>D##|uF3XX~LFKCC&gFUJ{p1G~P!%*3vK6)! z85CUd;!mI^FujM#3iB=E7Fiw!rq*PQ|Xm?&X8d zhX#8@dlUP12W$sBhe1bDM=!@&Cq}1mr%h*m=QQVY7X_DcSCFfr>lZiN*I;VWoz6YX zeal1GBgf;;Q`@u23(L#FYtoy+JIZ_CN7|>%7uFZ*JMfX>W6;MfKQX@|e~`bK|3Cm$ zKxn{TpiE$85OR=R(6?aL;N;+|5S@^YP?FHV(48=uu$pl6aF_7q2!V)#NZ3f5$f+of zsH~{xX!Gdt7}l8dn7^^m*zq{FxXiehc+2>y1nz|VMEFF9#HA#Wq{?KhWS``n6s45b zRPxm5)T=b(w6S!~^nwiJ4EK!9OvTJES&*#6tiRdT*^4>iISskQxly^ddFFX@`J(yt z1tbMA1rLQbh2M*0idu_liqlKrOFT+`m1>ucl<}5Tl@pc6ls{ECRBTqNR}NP3R8>_I zS0~iK)VS9i)*95#)JfKTsb{V)YQS%Z`2>7&|8&%7(zx_l;qyQfZ&Q6Ub#rbDPD^wv zsMWjmyv@38^NZe>*>?H%fewL=mQI$=iY|(-oNm1CgdXIc(4LoGpWf>}r@oVZtNxt< zi4)3XOJ+@sG8S^NzPoa8I;Oa!s~;-DTua%*y1V|#T6x^ukiy8Cx8^cUK%^nJ4Zssr|eu0!d= znWOhdd&f@4k0;@$Sf{yXbZ5=KMSoA8>z?mjxLmyaiM=GethnO58n{-y-ng;9dAyCj zBfP7;=e-|!(0SN@^!$tPH}i@9spDDUdF{pi<>h4+kO06iuMbuj@N0s7{lX!_!NJ19 zAtNBbBcdXsqM{(9prD~+W1^vBp`)N+;$vdr;Ns!op<=utz{e%P#>K<^=OiHTYZ+KL zBse%ETr?Ck-2cz%r4PVD1f{|RfFBC1$r3-NM2(axYzLEKYXd`0fY!3 zy=Kc{0x&S3e>{hQ1;fL^02m+`Ff0}vHU$9BhC?ZafUCxCiik($EFP4E&!Jw_cn&e^ zpWSk~K%$n=2!6xqnp{jk!^JK2k0sFmY6%8-y{K1Pi2q{=3jo2uz8Zmr`^Ov@gam@Y z0>Bh(u-Ia1aHh^UltD>F=kSgFv$*WyTNema>Ud@@9Kp%>kmAn+a~jZX#5dFuoFOSM zD*!4O^m>6{EIu#Krj@)(m9pISk2 z^gFppY!zCt$}}n4B41(sEHxag;`>wdonB)u5>S-5gD-+hY)Vky*nW}ZCp0rI%Q?ow zD_?^%q=pfw)*R4Uz zCl9T+S+e1a>2TbeaWxo+2xNyNisqAV)IV;E@#~_JjbjvD8P&Z_o_xAo{YI}o;PtC1 zB_-&T4HO&P1-;y_o`+PKc1n6b&xpIgxzvomdyqMw4$z#ploN<9rVhuadbHKH82x}@ z$2}(l7Ac^uriCp_=fFAg52j%x_t)5a9O$e#M0lh+Xs!8)%jpd(O_OMIDQA<4?n+iI zEApg!u|OLd>^m>hu*BGaHF~Ex?AmZspWxZjnLZV@@y54AZ@xzSR6%*BT*|`(Ik1WE z55aTdNXQ6m2r;{2g!+D2n0|w@M|2Y#N#B@OUzCvixK#Q}sbbQfGk-GjgMKg&XTtcExN%uPAKY6pXNsn=q4tJA`EUWrL|jqQEai zzF@Z_pOgpbmQ`bi_|CfBFloWc@4I9ndEW^ymfR*4QzJ6Lk4uQ9D{ra~^So6 zm*}XZD>9GGX1`J2`0Wx5?R#p!JCfs_#GSL)!bNUfUOI<^pkImKhUZ(awpqy+OXvDw zzW|QrQ?-^ZjrHe+d}c@^o38oItd}r-ii@6wOg7ft9?HdSZY?v`Uj@Fu7cS+hmTa(E z*m3^4OKk5rf`AbJsqs&5`wG)jvBjIhsCA95h6T<_?mYdqqoHKqa9jq#0M+o7imTj< zVXvcdG9X!thYxJ6H_90u@%X+K5y+Mb5DMIMXUclH-byOZmWpjl2&PjWyT zWvK8zKRplih6JK{l`i}1wh+L2@cx_NbT^$qA_GB+K8uuc=D2#ES#a~yCyGtxisBYH z8+1T6VGKIw6Lju7_vzdIG0#TvoH+D>a_g3!>0;W{Gz|}5OVwMNB7{}s&&X*mdb@WF zlQeYGjIs#*n8whx?YF9~oeEmDhv~a7bYpRW!aMyhK-b-oAp5V0JZ5V>Cg}=^B{(}b zOpn;FcP=US1@o@j`f4wL_y(1>s=n;5RuZ2uyk}y-&2htBvh5zUX+p1(C`omzryP~3 z4AlO2hx?g+Q`R@5Z6~@zhgLa}ec+AhbK{Cr@Au2g=R9{2WJUe+OT~ewEtdx=gCPZB zGUF9$k+3*yW}{o@F=p*HA_*hx9H`r^K)wVxnR^#{JDuyUuswEZfkc-qOUqV}fLc3t+Sj^01=IpRI>nWRK4#HE1 zxiNcYd--5dWBp%%UZc)%eJyHOEK}l+5kDy%uPNcuqbr`zBl=-E?{Fv6f2|GSBK9MN z1Bsqc@_SlAlTByNNem&_{~qv( z?~l)(Gr<;%?TiEW1~iRvisdez+ZU<^aq;=p63*mh*UlBP1v3}HE!SsKz5@&B zuqq8hg#_q6ltkgPxsC2|VivOk+3Ht)MnqJVv%O3wUQn8{r)dy*th?4nb^TNv%DMpm zdojjNuR0qddqW8YuU+l%h4)FjHcw?;^cLDl?T4juv+DOAPvVmX;^2v8hKsJUVx;OZbMc zXKcE3Ijp__M$OdUrr+@eA#fGXSI^34Dv){NMVXs@UZG$|f8&f;8kFpPH_R$~OlOu_ zN50X3-CbA0QX+UU=7ankjjFp~ex)~kK*KIH9W*v2B1l>}HG%};m!lPfN3<@njdS6n z)Q`)gmKGfk9R5Z!Es_hb+=3+Q{} zrhSbd%~bya2?}KOBH_hl#u%PY4IAN1TM0e;rG!>T2wrq*qJ54 zO#`?f+3V;cGcmCd3ig$1XckVe?LNym>#v+mkgtK{SQVVT6+o^`42w)8*c0WYGKGMG zoi5f~k%EMB=SF@el&UZTvBS*k-~KY(vcy$E!WkRO3D;>3}PnN{T~4d0`BiH(hfFf%Np&ZyrK$5JN!{l-!qrDFuoZza}_rl&1sCw6ILHpzTmc96uH>969hFN3f+mTm4yOi47SHzbgiwA*a zO@1p37Zn>m1g#j4yN^HAHxwx}$e~rWv@YUKR8E#<(_2JNq)G}e*oZz!JX25kc*T?P zmlcUt+QWz~B<;L0WH7EuvAgiJ%&YR0ZmhKt@Kc!fqsc}*!HWu9lVf-R<`8U?2EwW0 ziwN$K)gY^>*kIju7RA#YjfHiL@z+PoYRAgURwd zg3ub{$h1_U4r}*AY?P4e2zMcz4*wEAmU+%&p^6$$Tz00mt0(pPRQAvEyOS3aMjctI z^0Gj3k=L-3gvY@ol8N7+5H3O@2EUqhl3QkGqSlO(zK0P9*+u_f!i(_%t!#sK+ZM8X ziNRBT66q!=uG1R+327esCa(~~>^1^BwK0R{!&``QAf07 z(n4qTf{js=4Bt;mhA~pYg}@&#KssL3gEQRJv$pgq|p_%i7QSgGx7_y6rXpDU`vOP!G5x#}M6>EQ{V z)u4ac+dLy+CyH(sZ>MSh-G+A3EH;|Wv=yRfrxF`gU#B8VR*4WfA zJwNZ=e9wCNQP-e&_gK~MOb+31Uy?#jwAFT)n;pP>M}+E^Zzdby{6`M4Co>083*8aU zsNR10WPRK4W1i+cWAFU6qy;EJq&60vmly-qYD8nN2Id0ih#bwj-&3@xYHq%?hy>SX ziCM3u%T}Az(!^9X#3Y`*aJSWC-)RjO5=>_jg?dqRBgKr*xQt#Vp}OoQdXSXOV^(8R zVEYh8qzj1&em`yn3w+EkVm8xK3&_e^98bc%EQzMd#0kbLkbLy{wjcajF+$(gQjVAMT^@w|xbzti zKVu=Kdn=pE0lb*WI$DdYEkJ&oFnkXh44r_Pj zRQI~?x@}M=xCJ_O7iqRlwp}PZHCzM+VrU-a7-`Z9K9iJwYgO&s91S9Ex1&rPO^jnp znhAb%8o4=7C95>@AO7n41L`M{fLh*8tuAuy!iAI8l)vLL^Se%F3vU&5Yn619`*#z( zP16icHsttjp_SP3vFw%fy2u)^>b4ma%SMEZx>z&SZev;}%K(mm{Ab*-K=6b8mq#xL zpN=fikS>lyScE#;8S8A8Jct(MBBVK|7Rhch2K8&wm(#0#SZq!3p7NROkty|=J^_&o zXJ|M-k$nuwZ0X@Nb25{*AM)HcH9Yp@P8q{=NlU{rtTu44*VK<-(CuY7h76mDP&xNeHz=bKHQ($ae;c@$3ewLtRBN90l-ropGf zA1*U-pVA$4dtue8;$$tY%8~2+N|O@BrV)g6Gnma63mV2&C>Z3>bKE$u!kG^C)y^hX z6p11}=)}xpl|8v?a9-6_;)VE}67qfkvcx(?NE{UTEO-_2DxaHUQ(?0PvA+hmUq!9! zG}{@S5^m3RJ|6mKR2k6dX#E~1MR);HM%lt{Utc}@!2QQu1XYDe-(RN{x;`Med`{2K zIB3w9?1RBwAtCc)d@8iH0Tl_so(|LIy*F-7{-g@Zk2Cp_Dag znqgz{m`-nUHb=ph+aAjJvN+}cO+tPge% z2JAG#1X08Z`RsyZmtXaHbN4V#QsVlEDs@90UZLK_x9fuL_6gbd_vu{ zxw0AAx{@&)2a55TQqK0F=80azK77WJ>GGDve_J9aTaYUg*sg*f5f0~WnV!3=>%^(E zCIlD@*%@1BR9}Z|(341f4I_bhDW2BmUIt;Tp|6@nXO)6DHlAIUK9}WYDj)BZH&wwy zem#q=#W)UHtezZ-vgsT7>vS7SJ+tK0#-z89*+y-?7a%eqV-xszE#}%+w=Ez!VSVZm ziXs#}Tgn3)!%^hM*yOh1$ouUZrrGO+F>rZ%8GwT*&o06jdJ*xtp4x zXt`DAM^ufeLBeFN5$?hH@q0;?1(jOE*$vEZMmZ!fT``{yulvU| zp5LSbx=^t73P8#`t(AZSGF+iu;z+GZc>#{ReXC+SznHXD%#{SF`KClt2U#XXhhd(V z!YQIl!+%W4y+2}$SNu~t!8Kp2Cx#)rz&utuw(2)TjP)bFmQB0?V$SByZlTX4EVi02 zH%dTawWatqWQbY5QelaHdx2C}WbY=rZ~n?&k;%OVg4b`rmB(8Y7ZF!qtIRem>^yDc zQ#B!G)qZRJ8GGxLaAb~Ud8YR1{ckkkD^(a{i0o7*|$vQE&kUgVh@2XRdZ8va&H2Ui^|w3=36zIiqT}`RH^)d;l=*x`AeuTW>V6bCEsho%ojkjAl5IKosqVc7q`2RIHaA!q>BA=ZG$AjcNc&M~J!7=`Smw7;PNu3kT&_N}Ab=)+f%TV&;ymrH6-_IIZl<{mw ze%;j2<^s=<@lAAiWfdXOT=Rt)`iBA5Y8&}jcq;~#R*DCrjw z%U?$$Q%%vT%%ERM<>W?8+CzV12lr!7my9+yzNv@yWPegL*>~X4ixs0?z-%g+_dP18!UYbj<9ip(|6v953*rC|Y#R++=BqodR zz=+hdm7~eZIMBe^bCLdO73+Fejo7PZI~(QUSDt~Kj*8sq={ed*?1CV&w`_MF+cOPY zCh$w`3XoDw)-IpzQMr!MIgdB<@~y_MfdpzLQmD!ired>;(B525>%9PPO4yRG|Nd0@ z#Zrczd8HtsO)!`N32k(EYYpi^$0a6pQX%o)%*gl?cpfb~$07W;g6kWTd`nTCn0=wN zo{#`bR~TcwhlL977}YuGxOLMnGgnoFTjQ}$F}X1CGo2#BHJK>CLliQK+)-Ek`1#Nw z-VHhi=}F4i{c+=+gKZ;Hb}=2|!x9Hu)VR2QW0IfR{I6%7;tj0cRq@Y*<`SoIG2l@$ zgg*fU$5mNuEGtVe@M)ot@mlC7?EFIKU|tqX&j#8V@^2v>^j<4mRUgi>NAm!k1@P0FL(iFf zk-thO6>)yGEFoZKMh%gsXNlr+_`7iRl_c8Iw$~?-Xj4{BikuSkM{a}+cz*Jr!o~|x zTx}7_3@pU~-;#YWm~-?vt*Y{2Gi<+U*)XW0bzy~U0&Hh+a+{=eCeFzfQIYbwfft0Z z9D`ET$wt3zQ%ye^?lqE_)t#(&D0+*Oy5`1ulh{>8x!`{0q@BYChvUaQR}?b(O>*Yy zdh3~FsK$4mp_agDqy+Mi!R}l23%OM0<7g3yaq799ee14}5YEyRyU~Gg5jGTQuC))w zvktbwb+hiTX=2Ka=ruVfFBxPHW|_5Jzis=_e{~;c$hTQ$WZ8mS-MeIAAgM#ORtdjG zvFSQSTZfJjEq`HFe-*B;Ao+VH{#)D6UIoioHDC9V7G{Na94A2hhU`CYW>o}wx`?$Du9KtieLq-=DX+0FXd*}|bs$47Rbj=ZaRn&!^dR@@1S zk-KQh49ET-1yptD)Ug@Csby=Wyd>6w-zeQCzDXyTeLuCam@O(QJ50aoNGu*gEPqa| zA{YgTV{=_x^W}E(yTk~>Ci7MmU6eNJ{qA)oW8~AMV>!B>Gmf7+wUuNP7dw*~iQ>Mv zdDeOCC^BWORU@o!+S9HKjqQgK9?$R^<9_|dM?0Ya!QNu}X8gesFN2mDR!cblyHWpd zL%U}G!hY`f?Ce@I1uPksk+Cb|fVfg@Z7H*&u3(P1dPwO7Dm$AOPA0AB@2Q+PvGWL7 zbpr;f-beytxrYW9CADO`HanfH)A`Cz2;&5ohr9JBMH3iyIElcq!q$D&potzRGjV$6 z$#jgo`CVJ5^zVhK$tA8w?Vzd^BEtFR$Wb-O4HX8zgIaE2?cn7ZQ;DFvLXikvJMt--e_og_`8 z4!jtHigN1I$yrg(3uyd7+6!($E*WSD9**{h^zRL4-I1Y0_CM?>1)5l^n9Ot+a?SHT zv;Y3^2~mVZB6eE?Q;kc~GvxPsvXbj?g&)NNjUTM@@>YFLHx7H%Cpla6+{&`Y6XVcu zuZ}9p+4aurzyDFdiFaMRKP(tzQ!m}huYzr~^i6(0{zQ%(jQ#7P;EDEkw~X!_WQLQ3 z-o{h&c5i{vAekPHnY|^j4ssHp0q5ZsFYJlkBYNx^Z8{s0nQKG|Ed=OnW#@-?4}HHj zX0ABCX(;VzExPJFn)bNKL*HI1t*VkhZ&Sa@_`#&OCFv>{CLeA;n6h(qSs-NQ%tFh9 z6_^(Lm8mogH@7sXL*)|tlO!TNr^4cQ=f+0D~PokooD%(1O@GKsnkh%*X6e=fuCy&q%^q2AEw30IJywOsn%l+66&}*jE5$T#HK;S7-x2yuZxuGjkfv` zH*?#;Y0xs8&i+d5=7q;vW8v4SwV&N}^@l$3jjCFYY)nC%3^YR)DDCEYcz83|p=So9 z=ollqcPf!=e#Hj7P9k(~ZGoS%Tu7mwsj~aJ7cyoyr^+wD@2Q`sHK^A%)9)HQy!ztB zqvNRTojVb%hn@F&oR`a;nN0gl7De8BCC`k3S>b7gYY$dfd#`EV&y`eEEL7Dl6_p>f zQ0dM!C&T-qChmWS`P#O^_9W4Fv8V{o{b8d|30GZ?Ha-7dls+bjH0xBPJX<>BM+bh2 zl~@@|k$SANioIJUY}hWS%+jB*6m`U|zzIx7+aNgfQ7$@*%Tgn>-PZacqj!AfUa7Ep zJ)v~ETtR)>*80@bL3ry*la7sMz5lE0K(Z(5{*zDWN3mGApa6`9(=zhaj#;(er?iKj z^M|H6s-i3TtpwDoI|=W5&zUB<)?%>lQIgAAuAuDf?Wf?L@qSP zACh@Z9{LI8Q9n2;sLpXIF^st0qK$@n?yOoeASV$-qO*O8`<4v4#dICfkJ+wL9c0l% zKAB@SvsVx@r6v@G=W2P-{B-29G|wEMC>n8k!W26)1}odMl`_@`B)bT@!}idWIrWaz z3NSLFtrrarhV5Ec-SSvzIo1gktkRW}2oL9RttRfUYW{#FN+^mlcfvMc|7HOK^;lrgjBFELKoxspQb7>X zB*U3h(hP5C)SRznLr`hhc>9oZ<=bR&BINI|KHst~pkJlCUc+%q(S*z?;p>oaI@2T0 zGuqEbR#B5IOsDu`Of=nAv_lCAY98_@a-tSfCP_rM;feo2V0C@$YQODW3(Kxu2IpQA z^SE|sA{Bc|Vu5uZ>SJ_<$TsYL4R5^=zv6Wv`DeLGbov<){Q=Rlzzwd1&X7Zos8xQ) zb?%Znq8Gpw21mF|U;dF)Qymer27W~sMj8wa=9o2krXmgG>GeVA~;t z;QnmwY4B6ck^X%gy<&m<8pI5htLU}J)+*^EQCjGsh*uj!8mR}p0BoOw*&#@|L3gnjdBN@0v1k*${SwJ)W1;}^-VtK_i#oieicWJTsp;WDgDAl}we^MTNozUh+ zq&2Dql7n26WVa#?N}9X42y;Y540`cRr&|~L=6D5-Gd7?mi&1@JedF^)-B#kqyF^>I zW?00XS3a;L#msX?nXF!$%wF7LF(#Z%%r??AdVn*++T=1JJ|{ex0Ory^55H8QrpZZ#ATWs4=3qRzGVk?-cH?za|6#nttN%>=d!ky=y?r`A&9J@y1xer$z@JU;0M;q+-%#dH?3zoUedAoPaRerqOi<0GPpwO z&MWc}+CPc@y`G)U`7X;*j(%Wg&|VRKZkJ76Nv-MYebpekNk zDKaEX6ce*#ryhYUE{EH$N)z7>G)_JWnzU7#Dn~ZNkK3k-D{?xRYpAp3e5>gjY2}12 z8~~jk?{lWFtzu6%){ayhQ^{cUFQ&Xc`(9ROy<91e$&{uK@v4(xmF{2hi}i+e;kZA< ziP}n;t5y7*ZZ@KZnidwUZh}#+qVc6CLyWO6*o3HV)Z>CJE)abXv_r*r8T;40Gnz)4 zEE2aWi~Nq^EoO#6#v2j3#H!K}X+k)8%ED2T{!#Ux2rAg*rFHUXM_A;EA3W0qg*j!0K0H8jFu~!#NVI0P`yVz z*f40cR*Zm`f%6NH1HKqZ$nW|#Q*4J6$*R_1`Wf25Q~>AN{Kq-?<7Ps9t_5ue`3}}I zo#RtaM4^p_^qdOwn0*Ev2r&{$5g^zjGSQ%L$1W|`RG|wX#662MeB=8??psH3>Ug;5 zzwiL9mXarYtM=$stKdKQzHA){o1rA+i4(!I*_$?BMP3Du_ryhUU<-l`8;HiF4eLG zq|~%PYuCdAc%D8@3#*JBk$;nrC4S(P*I24v&?BwIhsLs>#u4iB4X^(oc6b5u5rp}} zG|DP2>5D~At!-ZbZ)%EzL8ie_>_V1h+OaWp*L>cc{qhWUJr7OsGOSV^cY7D2o82$g z1{ILQLpe{^FKN=OdaTki1fx^JKHV$Li(w2-C~sJ(g%ccW(djf z^TQua0vdEmw`U=iYPVZ3d(y$2rzkopvf<2JS2?(54KPe*3l=(HLh3+1s$>~bpFaJ) zNi|)K&Y^)FS(;z%Ce>YtA0zoMiE@8IRC)F=$JuzJt19}B|(G-}p0@yrBy)$8BPYU$Pyhf+Oh}dQiX#~Cq zp&E*(CQJJ494zItJW7R4kG(o*Gj*~RWi*1GJ) zK$31b*M^2F=S%g;Pph5z@Tv^FvJ}zGb-Z&WRbd*N_UG3Ss73Dxj+u4)IpL|>F}kD| zVttRa6T7>we;)oS!t*FYZ+fdPu#HaXqz6+uh7hH55ziLiF^NyrxNS7F>+cI?7D`K*K|C`&N)j^UNChfhK1bg0EkxTSf_VU#_t_gsFJAz6H( zp()~wI>o+g`rFFbf%c>1n!-zppzLZpwowZKqu1MpyLg#-Q=!g?ce@&RlVIY+5 zM+rk>UXq3KRcf$TvL=FZ!fO1=s{0!+fb3QOQr%i6XH$v2K@~Uh{z%fW$n@oMc2;KD z8+sPLfl2hnbielt*S=&L-eM!gkKo$TGw`QHXQ5r0Njw9GR@UOh+1b)Vg&uG2Np zyf5rg#W9rIpR~i`DTQQRe3!N<$eOni%0OB*MxON46+lF$Gd|gU{Wzc z@RaEm@1zP+?je|7Xe(1E^ZSWOMp`v=R7C6A-gYpXCTVT4%-*pL>nh^YJOZ=c`;Ul& zPD4n3pTXfW#z`qBxikj3)j1JDLyN8aSBIsddNQ2W1p^j)1;%If>z0}IC1uU$%TZ~5 zIKyy=?T#@Jx?;sEi z;_i@Y@?>f=ANniMwH&x@Aa{M*c0JgLGH&*LY;Qg$8NzSjd=O5ua3?4Wke+dO?O^U>i}Pft{6NZ) zFsw3UW=VmairLSg%f#*=cWTUp_E zWAl}r=bcV??A~Ef$Q3CZyCq6zbb-uDm)Lu^5)^`!PZk>1V!5oXM+hc^bRL@GCYpD1 zt687E+>aP03?8X}%Jdd}d-_?F$TcKmy(%W*{IK}o!jEa@MDYm!I!A{@$b<;Oo;fSJ zdw~mG-!J&Rgz#2>F%A;44(OiFyO{2U?m=tSA2&{wkjcuqXwoU55@%7B`pNWQ4jIE8 z$*e#@MoH-F8kY*eF%*vc-Gz)?^3SQd1+r4fLNPghf@V+GgKUr9Yp!hR7`+7n?`oU$ zC+j#Z^Ekw@00uQf={aSCb6FCfWyCv?2xt%KS2GJdOTu(lRbHCdC1)3V-EG>7`#XPX z4g@YLI(nq>Y3+8JlPl}O05r|3t)D(08hq$rNxE*zvWJ)0bn~6+u+;rlq30E3mHQ2X zcd1OKpMkSa^p((Swv}@@wdfVdpNvm(W+CP;X1B|nCSX?kzeMf3Kp#X zZT{ji{UFV65g>X=NhXjaJ6D|Dk(!prMaWjwl#V!L~s8^W*S}!j|b5|g^4+l z{k!|L^->4~&0msh)1Byc=4+Wom5^%9jkRBZD2MY0ts1>K&fhl(dNWXO#)Sm+IqRdg z4d!T-de!r2-D-}lNCNv+p9kNqg3!xN2qQ^|IKC)L(Z=qH818y=EYkNh2B>_dCgX>? zGUC!+y5Z)8?aQP3#3jnpv%5uKW94-1OdEb2W`4Xef>onWa1<(eQLj6-%&+I1QL*og z^q`DyEP>;1)0gNlOLCC=q(7#I*jfQGDm9ma{DSMNaM#`ogj|L=D%}*`h~!O5hB5YQ ztitf3m&=^(UN$zGdt+iuDto|cif@-vwh43Qede`t##-~$QgmLolmlil-$`G;SyIOL zxwId-#8%)Dk@z0V90B(9(!xd`jnigZ7%<|uN2qRe#=@!g?%Zc_>^>>O-9LSF1F^9Q ztHiF$Efj6 zSQ(s^spZ`=6MJ25VJ<818AsAds15~F=A#B%eL76CebgC*WIxG*eLiOqglL8w-bBWZ zdBn=7EkNddOOCYLJ!FRq*3d9kCva-Noi5bKcJ}ofA5z@y2VE`~mEf`Xlc9u3{1Ro^ zc`92SrX=T&zbNfp_=aqULF|)k-qb0>gh47Jh(8hw8r>N^=UB#O^=gLT`^Uj$2@I6{ z_CsgWov2c?2zS)Oo7H49(#$RQ5+S~S>PVv>vJUYJMX=7+rabkNn1RbfDp@*YjJXK6 zF<()+sxbWf*P`!!H~?J3&icLG%mz^;qrPx3*i2K(lw|)WKiAohj;xT(1nQMdVTCjsR^FUtav|iZ&RN7(L)3hb zgLw!iFucJ6;Z7n02qQ+N=8CG|W?@Sj_3$LkPHLaL=RcfWaWsz)M_vh7h}>ud7e%4N~8H{%x}s#F=20TLa@(QV>Ct<9V4e`qtL-L zUr#dSbiQ{sNt3(0KipB}%L0KO#5I*ZG6WJED%hZK&A3sX6~@%&zKRXv_@Vj@rIq}m z3jQBxXbdXu>U;#IdF$h7k!%yF`+fT)GE@=8>cMdxgTp3Lq+QR>8JWMOu8rtxZ>=1U z-njd5yYVCsWSY^fwh~t~(GMgfmReP@-H8m7!~HJ0?Sf5VVyY054X|WhQ4aEyZm^K? zzDXfuRQerGTsFW%B;ZFYln(-m%u(# zK*Fb;55k#cWM4OfF&Z(7I==`L;U&osGS6H%c6pvoQ)@if9f`|f5;ug z<2^7Fkc_YRaIj*OLbf1;Iagw6H+(6^n$9Ir;J?5pg6t&-&An!M7qZ3Xs>S8{wXz$% zny&!2V_ON2Hl$PL*Z%&j0+1z32P0WL5&P{^ z#VNYg7)9!{I3r2>cfXv%@I=oJ6()*CrWFnr+|AZS_P;yCcM$01Qqs1UcX;*vQ{jAc z3X|Gj2|v?3-%r8?N}kI(U66=HD#z8Ey$C6)*B6Z-zI|BpYr!5W`YaBFT9^x6PuHA& zkuF;KQ=@M)-P-fMa{_aGBgIb*g60Xi?TOIG*H9qdfdjp?Ybg8$=)fEvmpy~SneAyb zn|D;pQIFSNuF;zB>MBu6+9QCyAV{Ho+;xv`zoXR8H|9-LQu#%h-^-iduF~AXkTxq^ zB*-;bf11Dg$(+_Uq($+|-IE^S^ON0{^A`g|YHF_UShvwBS~NE9mZYF(Cj^g;d77E+ z1cfs~fnZ*Xs|_2@l!{Xd_&0WJ%t=#QujBpuE(!wYm2b)G+k5%XY|=i7^5Ud9fv8%K zHDa>@InovIO?5{;a^VYgMC$X;r|9D0mS0)sSP@co?~XR;<;2kSSxjBpCod!)k_yoR zjBA90gyJ-b>_}qpi}dSzG7&?AcZn75D9?+qeD`fjgU@hP>?QZkP;Xj3XCoXqeHqxL}?i%qv1ot zz|q|?fBXLazW2WFcJ4XPd7kGTrx)fF!L5F}n)yXa_5`e&RFRJtP74)We%|ln=O&l zUaI=4FXHFLWWIh&FW}Bk`YQg=t(dV;@(P&mGdZM{AO`C#ndqqR(HKl@Z~d6|ZMWcA zrN8n=Drp(4#cjQvfJBBEgr`wKPiIf zrXm!)3udJ@n4#{%`PGA6W%?1DEZ-T#yx=5Wbz2g|Ao0byvTiu!4AcX-4?R4K|8Vt(3t$D1okhe?kaQP@ken;Jo zux#-P2oCzwJ0v2{Lkn_BZ&au3EXd7FEcd(k`2)_-*Qo6v1#**kom8}E)Eh%VZMPXV zs+xjS=(8*Go^W_96=F33AGBs*WJn}=J;Pvrm)`oMQTx591jg&k535Rqp+{GX#-=`| zeABy6dGWqUbr9(B2BACkV(Zs$#`)00Z$UR5_Hh}Q_hRf6E0M{b>U3LuZDv}H5&i23 z&RD7`=KObk8oEpKoH;5u)Xm?n!ANmZ-PR~tQMG?BI*f){IKk>4j)Vy4vVK+|L%o)@ z57+^gj|yov*M=yM$rS&z3(OrcE~epAm-KE)XWETuvx&3meoOIw!v|@=QcRRa9@S`i zD`ZVr*cJB=P;$XidJb&eoU(5*k2($cRX(}*>6A@6L&l!BJ8)rCmf-%TB~j5q-5}Pb zStaU6R8Z)7XzxA~Z{XR!gmDUQH$O`2T@|&~P%N)TcixCsrW6+(#^k-F)iw#xH!?Tj zf5WPNFPwJ&@CH%jGJo+)_s7GZ9l&P;Sd#X@pr4?0}Zc6H7GVfkbS&xg|l+HXi2pLy#W{fj%GM%)cl(5Pi zWZyv7=sah)=Od9Z!V%7&mXFw`<38v%(&wJ5{cQJJ?WKU6pU!%2lxAR+%UJi*+S0H& zGP^y#NH|vY?TobI#}5%1V_%-OR&WZ+gsBBRwt8395F&UWSnls~0gkW5L2az7E}8th z!!{4Bxkd1!pFU{{9KtaJ`$>CQi7m4J45^(_vhtd2Dt+92c&`(=?Ot>C#Vku{pUGe8 z;EAQoOUJg_(zvzyMv##3K3>u|OV=qpJYQijGsi&TFm0st7eI*b!2mHqUg)v;4K0^V zZ_#_$a$cSPyYxT!Cbx1n8j8gC;_TwnQXIHX#)>UXWIBt;pq!_CIel27Rz5T+|N5^s zNFzjbD}%&bEi}tzhnTsTe7im$Z*-G@h|xP#7irj)PC&0IXN*vxd_WDke|r6u<)gt* zF#KCa#bVRh!AR=L)Sh_^{MYaILh@>qik>2yMi1X`aUAC-dfU@5uj5{u7Q)gvf)}Cs zx!-J2)Nl3!l=9nV;rvO`N?j?v{n)efc$@cZg|B43WW452?wIW2RvnezwYMo>yRxxo zPfj((FLFkYsCf2hSaN|CaxZ49b?-Ul>gGDNU&hJQZI{+)wsV&vwSyj82K_a3!p+N4 z)*@{{!^N427~T1&k*R&5 zXAYm_ezQG$8kB;W;)q~Ydp$r<)4{>1muyTBan?|~@sZNUE546|DmjK{R_Qzu(+>XS zr|Pu#DQof%>j#M_)H}`m`!2>y_pHI&-w0as<+A+Gw4 zOGO;4PYWSgKb0sR>y#byXq`bE!h+IhhY;rNS|#s&w(HzfB>_$U0Fplocu=w@4<8bv z(5KS`y;ng{P5|&0HS+)xM{paj28K9|d|1Ajc&S@=U%8|?*UatrH>*_pK^)b6<$JM4 zl26U4JR+=bYXN{z9pS{MYn~HFpR)u>>5{iTwn}u)Q>97z&p|#bAj~@|{hr?o9oUWC zK5FH0$)ujZ^^+^jQ%CssV^fss4WiCThyXBDQ=O`BuQga(*OkhA{j@la5r#JrOT*)e&OB~1OirG%46AP`aY%%C{e>`6vX*nscX`KFAgY zW;-{kILEW@t;TMx%4%PfkAs&EpyjCLXYC#Pq%J+pe*_Gukzm6hwJY9Hn!bD$T7)E% zgRSFnwC)$dN3j~I$p=QBe&Yw|1Gaj^3w?!LvuoArD*qur)O+NM(s_$W2PWR6?G`yr zrLSoglqw{wCCNcegH30(W^+dm)px_zzQaA9W!qZ|rFPM>KT`{FS$=H6W@JNF_CVo= zNPy09{P1gT@IQdT;qIV;s)4h>K+DTdTkn7GFxCsV&9{qo5iKN;oo~Z~G)j(QQuwuo z^hGv3SB{@MH`^D6q~Go6kqW;1D{*%7Blm1YXHxfb(|Xn7EJy0^d&oB@(;5}H&bSo3 zZJ9|;RHVY90*~KY9&;r7F!-9o6fRrB|B0*VdUp9nrJ|22*8Jcc;Qz*RMUu6n&_xdk zsar5NR~xTVav+~5${4;iSLQ#08VF0PiHjT3I6N@@&|9%S&S{ksrQ>M|b>n9^AXVR< z0qy@SRqE6wy?Mo4yzD*a%+^xAmBSKayAb5vM9~fOfIFgV-5sg=SvCfulA+x!cSY_q z&Xs21cTO(lJ_5wWw*hCp4ESNt01FnyxtCRSWGVzrHO1ZYlGAOx=F@(RD zW{r)VsI_d$d3B=86HCxY>~jz*sq`P=`VFOGA4R+FxtmOtFgP z5{p3A**es>CXb)Vu``cB*TG}|;UpV5r*XO!d8f55zhJemr(fDtmM_&@>=~DEONinZ zJdI;)dfYLYA1Xbww&)R$KITsOBE(tzgPYfP%(vRbvs=VLfN9ep!GHxz{xYU8kla{@U1B*xiA~`)Hu=>A3sy6JBs$kA>a07Q3Ek6DRsl zVdPRM2skM1nDD=@%OPIBaA^hT-n5rU&XDlJcC>lP0pVSOSJ&~BiWSE?NX(+hRfi}4R+GZ(+xk#Xr1&jGx;MC&Wr&B7zERY@1Y#LuhNJ0X*?`+;qsK0FDxqOlDBdd z$ER6D|D$RXFdjU+piX``j=9CvqO&hy2#F_<<}3xZM#JYk@z=MGx=gLr&V$B%_4B#( z_jo_s#RBL}`UART6z%rhRG%SQ=6QCu?qQVRYg1`0k#4+ zXUyxbesgDb{3YP#1gCAe?hWbt)~cgjZyRny5jW87@dPl>?VrOE{(8tiz+^+t;-9Zf zeODsTSs4B4@$I>*W*=S&f5egEKLB}!>iLJ54_%fdkQG_4aT3!+WHs0j`R>Z6XeXZY z>#f2)hv+_I!qvd>c$wkRJE0gJ^=Q>Qv8~TS8Rs(mq-bY6`MbO8Q`FrLk(`m=O2e1Y z84^z7f@|njko+H;wM8KddVitoQ^f7@7>UmdlWlVSr+gGjcVNE=9ga*sarT8~QOzXC zFetx-^ozo{fR{fE1()JTB<$=M+aYbu0SHwfd|Di^i+l8_TCmu;j-lS|kD}b~ zZz(qo2%>(ksZ14l9uoMB$Ui`hw6->w_leVuAGXu@Z5BH*`ZmQbFl{dz0Lce~j>uS-s{q})7It^TR?UeVq7zbK& zCIm0KJ=?&QkV(Jt76L9VmQ%mGV)j@FaH2H9*1I3*aMPx1#81+*ZbI7X(Mp|KVqX)j1N z?xq(LwxPD9Um9*Ll}Ybw3WvT55jZEOL}KVIvz#S-{)Qg4tAFYJJRj1@R^h%fu^1t~ z9tEO1hIyn+VsfXsM!NkbApV~+>1XP1f!Opw|v2> zP%eF07%kiwJHt4DMjj1xGke{hS^F?xMuGpkN_C&JkoIDB+(p`r`x-Xz4*r~&1(AwtDt0~JO@`P%)CNN7aO`Yc`!uuI%Rc30)0BA5`6Mr*b*ARDr{@Yip{)8U&uS7 zBa02w!u86=AcvT;eNNy^@Y={`o-O*UyqSZ%TroQGNWDR5>Hg?033|vR;VfjPin@rN zuihnS9nT+3QFC93M-$@hn8Cvy$`grLg(I-{v~Dl6`LDYigi3DY{;Oi{E>y8b-4@$e zbP&tBBVh~0`xsG2Fti!s@@w_w4bj;?O~geDb!!G|DIJm}0jwfC&S=b15-Duy*_53I z)NFTr&s`|^U0ii#4h14gz8)MrMqO@E$HDoV4tprRSsv3C-9OwTpKmpQF*P zj>%87o?BRQ6AwM-pA*B;-Vzod31hu`JL+x?X5RY$$!m_^Z7z|8>vsS zydXHO8d6md_&J^7?F7-URgJ+H1r$-5dN<1d%^M>uGeXG4DlNp7DRWhbMXv=?ePED= zogWw-^CkhiZ1A*JSF=Dzy5Gki8os2ZMN$SJNb}V{z~_WeX+_`h8x&l^<=0x~4dg!` z_T_R9lfDA}sGm7DqTSDb+ComZ+XMdr{)SvB(SM3I!M!fmXYeAIcZOUA=bhpU{}7FX*Nrp=Tl-Z#6I#15nXh6=c6Qy9;uSP~9(T8{BRc7K3LUvUigMISQavkf zUP~VmD_{o;`*kDtMD8dSitb*m-Hb@MGzE|f7RklGF$~dQ0w{Y;6{DC2yFWmVDGVN? zxj;Bil^|&Uy0>3Q;gDF&r~)s3d$-3~Rx_Pz2lhC(J)Ip#8D*4@FDDWoEybM7m!e}L>jIUY!#Vs(?VwqE;0^ssv=Wy^aGrq z1bp;M(a4MGk4TOi?f))8sU%{gO-k%;)T|CHg>=?89SWxyqDV{$*E(KFFXmS1;;TgX z!WPO#!)|3hH;^nY!GdJqbu>}FCkX*qHb9Pc-3y5Q+Ib>OZ)~k6TcF+%b}yBG^$UwM zxGmMM;{7AyO6ay4^u^E`hGY&t=M~P*vE_B(`39XQl5()7^16SqZ;Jg*t1dtT)H6wX zpEi(^LoDJss`|acHeVE#9}&vw&iT$!^7|Gzg-Rb+EzyKI-mv~>V47+?(L!NvY%{^x z>L;>r^hU;>eiQ(KQ*>>WpuOmzH=3Z~eTMAn;5+x%aZ+JT+XSs+g5@Z4ZX$R3_ey-) zjMOe!=Iklye3D9F0?N2YR#Z>zR`I4Ie+z$7SBHN+yHznyj;7^dzO%l!-HNrjeB8$G zvea(!x{38tSFVa|k%Hjnr)?5|S-LnDAwddne5Nl2rS$dZc|w7!fNq?Feke&e85tSj z*+op3SYvJ826khyK|hkX5|lsM2i~tXNxBvfk;iVSI*sjr$!mEm6WJc{b`d8d_L<^KpezGI9j9wK6Z5Pyv5J;XeOu(h@qJU0D z`|tP2$QkepMX#@<`Jzn2-4C@Rl~D7Bqz~*oulv{R@4VHB(Aa-~RDB}u! zzdSvk);S7<<=eFTrhAkUHYNI-t^w5pI=y{4+4Ayul7E0_Tvo)mv>vxfe7S#4;+czk z&IWuq30{~&o4Oh0+EJ0nakla3@505$<|I)`wF5mGy@JgdN*=zSsf4LLhfv%NTe#}I zUbp)Fg;foedHK^6WJ5mh8_imO!59Fgx)dGiaOSJ9hQ=V^&E=)j%x|v`>q7eV3EhNQ zZ519ibXj@_QtVbAyx0-|+VUmg$go8W7mkiGSrr@4KNi#J0VL> zYYtsLfG}dPf!qH8Q`6PtAE4>NEVFe#27SzGz?6OTg4@m=u>V2sQD&-?>i+QxR%4S}nc0jx-nD>!{0%4yH;SRj zecVctQRMT3A}a=>qlRY&UYF{h=2A__cUjIDW|6+cw#-WqHW< zt?xtcI2)^;uKI|P2TvtxH^^nvu!!9;2O?98;+}i)qY(uH*=x{kQl=Ar#g+UJ+}%pI zEsWUN;GHJz5 z_Gxph(u#alHmO{stjILCnKE_HxBS;D5_(NKx1y9^1(^hxBS@>B!vqbeh>Hb(4z$4- zc^itvlm`UdE>b556RpCb9yiz}A)$OQ3CJr$)?2+BvN@R{CKmi;F|5lK>@z7V7EHV7 zDWoQw(XWPsso&iqb=3mQyTz*4IRsg{*VI9gSHSRmX}_p_5~n384uyW z^s~k|J~KDN_9*1hvL?z;Qm+|*-=U2cvF|uC7>9wB1dUty)4N(pX2s50F>+nySXDz z>xp(XW)#UdZN~|}eHLE7qZ z)A^^$e*Q_1w^ie&b)<}22S4rVn zuoy1C^b1#gGvW9~+P+WZHzz5E%rJstz~0K|YUk$^{d;bsK9!R6XTk#c-hm5UgGWC9 z06K-9ESAzrqnm7r`6euE37G<`c-K-$CT1%)!em2vHE&zc_}`mIiDRinX>h?!qR!H! z)1L~cU@A+?ALA!Tg7Vf>d)G`Nzt`Q2loF2WYF+X1S+9+rRkXLCI!zfrbnVzy7@fKQ zq0*9o4&YEcDe-DeImWHhq_(~3gfvoK=&6_=-%o^BK3MT#@X6c1UeDX)kbQF`PxbRV)lt!a- zTVR#eqPB`%xxC);iF-Y}n7!1Z<6RoNkCgRoQc?}+TpLA&J@h(;-3JBtJY}y{+rVJYr`qSoA00xO$|5C;=%rp_@>>uTMg*Onla^h~*s(lG|2ZZ8k z1d+JTg-24X&Pykg8dZwhUNfnJK+bI)+w8Dy{PC{ zct->RVg`_MqP;WH(ICEVLjr;@BFNcxFLA(iJ_jHggOogl&7Cz7yQfUb+C@-0V(5Uk zXPb&ogV}kZOO-5FAmE}SF4&^VM#e6qNDTYsKBr-D+nOMZIpF?AL7`C9+)0x$nhQ+4 z0o}gFQ6d-0M+8aG9rZR>yu||xCs0P{c0S^zH9A5bx{B!t!jbf1pRNjsS+*a~GRlQ!B<;E{ zik?9jVb_@Q5jN9ZW>eUrJJBf&a(TVoORNEV5oj?)FhA_g}$UZ_@g=J93 znqP7?F-Z~x4;<(xKAjZ+YaE@@@H*K*QnsvaOQbd9PH}`2=W_{@J@DdW^B<=C^q|>A z)t6I74~p?r%VLM%!W=OaERHCP@?Obc>8Z9;g7hZ0H~H;yb@Zl9!amd-V%jL_Cf^l* zT%7m3!PNP+dT(1)^So#)-K9mx7uq~qw670Cf*1j!c{Sab6ikh~On9$$YPCj1N#wg? z^M)oq+12zk4-e)IKf|H;5cxKJy$uPl!ZlN1px)Dfq~q@Jv`qGtD0)H)6r)vW5M{yG zSe*$!-cW)S^*;dg5~(RBgEJ7sgGHg}?m{7QB!;rS^(OQKT*>4RT;l|xn@g=CaHpt- zt^E|CouiJoTpS}Jh&qH_Gyfu5Ymu$|^}n5UW}k8YJRVxm2yB?S^I5vDWBq~ zr5zO7Ics9<{nZFuau-Il;e!ngQqU`|z^>~Ff@GN=5~Ynh%n+6Mes`dEhw47YMLNtR z4Y+?8Yg}GZ~w;J=rUh@ zXSPy|ykU@AtpV{SxK!R4vq%ZdZ)rHisHNoauhmNZ&e`gz=8*JOuWKg=xQHEJ9&JDS z2iUH2-(sj~tJyK!O@Y*|B`9aN7L-GZWTOFT3F4ASOSkwwvR9khc<{5!&IBtP#aBH~ ztW{ThFx#Xzu=$2d@|?%h4H|T3N9L~sV~fVK6g_nTn}%2HXu9L+gXi&7e>YzPo@X_? z9+`=HQ5$jUGv=PT1e#1dy79|vE5Fc5DfjCr5Ohx8Q6U`>H;pmopQs*8i+y3ywAShf z!%yP$G~DDC6rJ_Zv22a*575Fgz5FX~WEz2GvKfHU+ond+_fv48i6By7=_)ui32 zbP|TCWzIaI!Bp7dhk;H}Ln>2Q&bKw)ZjzrE5b!)#vjW~QeneOrtfBJ}A8UNhCS2qH zV{Lyp=tI)fOv}(rrG@i*!)$xr0SN*&%HNM3_jyLL!Z20TTqI6vDK8Bn>2pk5W;eu_ zu2nf-zNx*S%R@>-s@+3U>gHx|l{DIY)xQ0$yLU)Yyh$jj^g1$XXa^+)6&e0c1a)7X zMOj}ZY!vl%BIf$GbBy|D-zLQL0(>SNF^qQ{e~lcvSi_bM=>7p@??RVIOq;o{Myl}$ zxebu*M2IfnO(>*QH~&dedp{kHP%p3YpaIj3U3%t4X8p+8r+f1|$n%l{7s?T8Bb4(! z`9oG8FUdBne_|nLTRw?vYYtt?P%rzd5yWM_&jg5CeQh>j&x6zf>XN1?`jz4;2{ z4mce^LsG7;uuJ^6N{TsITm({dEXOIw_nl14ZiVQ-nc^7{6|CPEh5IQ`cb$_Zh9pjk zlqY!6{ej2^ZxRglm#`jXHgdUQ&igL^`MfEvOVtr%^J`5^ys1D&%{B>I`9D-33v(|G z_{FN)-%~*3iT9Hh6n;ET(=7IaKC1Maw@>t(tSuV*OY%+X*ilrvdOI;OPjB!l;_wue z4;NUqMfeK&OOlZXj>_Lf=t^xn#zqSZS3LeM%`8-6dkZ_f-gbE3)8Y5jKuMjy!>0lEqDrT^l} zU5Bl#D8dgi!}=n5lRQ94Jvxa5PcJO={>Qr=YKzKE^0CRwj+Jj5i^0Ko+=yzPl2IWj~G*if#>9cKUA`y;jd2Z~_=a zXCh_)*EE*APV`U2t5 zGR|OJkg%17l7NUawetucGUes@*v0I7?y>Oihf0}r8wfvDl%m%pUXg0GWc3s5qFDkT zzuq9dbyLhE*aC#^dV3UX1xZ(Qa%*4E%b=YwlplGBZ%1*6!X+6yqOe@0FxJK%C3%}5BT*a+4z~&e5DjCJK>yuBgnAwi$}}!j>^*tuQm;goHf-~X7^G~ezPua? zxMrtFmTrsb*Fs1%4IeHQmA!DZ<*v?5Ky+3wbXFdwIy(vtGQ~V-GYfMYB_=>X2eC`8 z0xrYpZj6$z4cAL)KhN6x8%2$=#d~qM^pT}=q`dR7rKf)$8Ge5=k`uQlUrN*o|L|5$ ziPD;&xCob~=L@KHYG3fCH;V;Ebe9J+tiz!=R?)E@~D<#~%( zfus8&a)SMMDzU>r38!}{(&QMuR`0dZag@h%wchDb;!I__`n?ELxuKoL$$3|!u-khGih+R-@ z*KDi4IP~Z>-eY?Y^s#Y{0v9GUr#2;*&SfYYlZvQcV3)kF4mbp9;w)JrM4tz#q}oTZ za?@DTV~+9uy9{kG8mk>!FxHmUe)b=g$~nytf|PiG4~~_++BJ#tYPRyhk5&K6#xe9D zuuaSa92p{&wY}o~573-@!&%T`oheOejF?Q7(E*s{SkS43`zIDu4w6x{)_^&VA3kSd z8PYIZlCP*(>Rsj_4|`*JMs=@_Z33}mDug|DTAFnxSX84sMS!K(Z+)e1dxauVK}Mfd zs@%@aXE^H3-szSyqHOS=roI#Ydfjtt)@FUYny|sas;u}!E>wG$P(N8B7CL_;Ub;YD zPNT0h3m;B< z!rRLk#;8a0B7!wg179#^YS(z&-Qt%{(OT`>>Wmo^RQsgf{@%dAqJL=M?zp5){nb+* z;@5&E4s~kCT*I~`s$Lgh+U?J`;Ka9`8t|6lQXA)U+K1fh78|Qf#g9@+*l`%E4Wd!NdyeZG;>6o>BxU@ZgOP+0}ZkgUp`v{;|*nnX;E78tjtztek3? zOJ=FN{GvO12uBchEKp^9ZZ3os28^6XC0X7 zRH6(c@`-(f{Z0=KcD(!H^J&<(hlIk34UG-&_ zwazmQl? zt4&s?VRI-;+pBoj)!XAwId6aa?D+jWJexJJRvF2tl{V5;TbJw$%Ov8IpOIRXcNpiH2lzt#rq{)LCt_mct^yfwq= zbKNBqt&2~7J3LFYOU5&n{z8;W3VaWq|nvBp{x?xKhY?N zW@ypU0W)@j*F|`Cj@_(RF^V=-q%I*fz=~WRxKLXQ?LD#AH0EcrtGuVEtr;8wo>RUo*mDO_Du)SXN#tG3|T}nNTv9kjh zW=L|dfWPf?dLGgo^z2>{?!igG`rv}`4t)lL{{xJ8&6wr!=B>R`i)>Pxp|d;;6PL51 zOEwGPd=NM=Fo?ar!zq82UYMy83VsxNriNR(-<#jB5hO z61MW|>nr&{98^Hy`tpk>v$t0Y?DR^G^;7C7&H|t3X{^=3{G?WW$q2h2o@$8#*C>FC z3jsU5MylD^rFM0tC$f$&(d61RE~y!KNo5L2kcG)hogNPWndth|Ihu&gN*Nq{ zW>#8ds=yP?ycu7d@?Vi*;*iuiB^=Y$eHn~}-(fIiyjdpVF?*AQ-8ITDeFPT`UM*KB z&VTlHKhij04^L7fBo|F88H)Ln9hev#yxJ~yNJSI6K7Ux-FjV->ftn^7*x3R@1KW_8 z$`tn6%8Db1X^v#@Osw6fdHh$8Iq6fvl=iJel$ZghC~O{OZ^fKaDE+#gQ`4IW$8v|? z+pNlh_|D>#R+#5@Qbb(ylHDvkS`)Y3b~5;I@CRicf$7%Kz;t0GDpCNa^~ZwQfnLaQXfX@ke{h+2WlH2nMa-k zR?N6eDN9c8^#BQHW9qqSv6ASzfD&D8gl9|BnQlxib+RozK_(d$__Xt1zp`X9Y zCm^fvkb1iT4GpU`y|d-rO(>V?@ZG9#i$+w`QYT%E9oY;WqYS5P(?N za7>a;AVj^!eCq(x1aWB|A_|ER^uWNl@1<}P( zpf%{b*!04;i5KW-N!L^;Fb#vazTP6cRvf1M^T4p}ao38+uGw50rzEq=>l42Oc;KZi z!Rd64Gc|Vvwv(GB!Z!1qce+~1(t!OLJ4bQ&y1lb7hK}e0doL1WM3`n#;7uFT-&FRO z!gxq<(GGbp@%$Re=(FK?oS!qPSPD40W_T`r&J-zraftTh0zuA>g3%R26EEsn-oSnR zIkRK~v=xlCqWa9NAcTzh>c{<(vd0tDl!eMuA1_OunU4H^-!R}e8#v4UFkWp`jRlS- z0Io>N`Iu2`#||j34HkB25|*;2KeK<*ct8Yf#Q-6j69Y}qP`zuimtdH?T5*Cg`v62^ zfPfpxOaTt^;&D?0@#yW%+kcG)xrrG2>Ao*mWG4)kLP9c5lM)I(D{`}?oJkW-s^Smp z5SyXCj;nM2HRwKFP1eN#a4kYDd!9L939XG5LoQ=yKp(rl7z_T!NkU+ER~I4KY1;h{ zFYbu3btBvDW=-Y_QybVA-}mo=-!brvey{xhO<$CLJaFBbo;_Ddcj1!lt$@=}$U>&8 z9hQz+6)AhB`q<{^KB73W$h1MGYnOn(BvXWveEgOI1>B){CA7o2PShwKoisJodjHd_ z=ePVw;t#pVO}{kUwC@N4_HbWXwbMA0|Czs>F@bncZL0h=1CrzuUytfYViMq(B-jxz zOV1t+qx-^CNp?g^|I>%(#6#g|J{WK(_)2QWZZ$EVQB9DE;lXB-{I}R^~^3VOdCDu1eTwgIQH0=tY68%^1=TYsUTbAP>~}vgVmX2(R=cp&IS;5qm>q zCPvDb2!s=fdUiaI%85~7wG{@v@%8v=!xc4XKA6q;D?dM_?w$u`Feye+-mpW~PmZaP z)p5KO6>~RldU(`cFY-o~3>$;rTTPXw*E_`TM@o6FGhbu9k=ncQWQXM8{%uoQ-jF;2 zD#>T8m@HW%<8YKjB&ME24qpw|^6yuhWwCC^6)3<+k;#VrJl#kj&$pzfeM!k?O1Wt9 z<0zyF=`tx3N!@EHeXF=}dhkJ@dxJ6XYMV@2p5_ws_`lvJzp45@nn<{m(WQ!F1-+um z0SSolO4hOPPUayr9mL6~%_b)0;?rR7b`<#3HjK2(Ry))F z%(~>f#O#Zg-O}>}{E&r4q68q=C#kXqk2TDR3U{+5DAg#s?KVS2zXK}BX`dSZ2CA@RqlK%NpvF2sNPSHVP zNIAdUh#m;1Nr7@pE8sNoq~9qb?*Uouk;Nh7l{d+WN}29aWqngQ(KLNA%yjW zr{Hz@QjDbaW2z}Bd^SyFvy~eWBZYq&rlRZt<=B6Zkf356lE+mHt_hT}f`pt_xH6Qt z?*&-Xkr8vTMVU~VVSRWVMfGB=%@-Lla)Kl?Wr41t<%_%SV^rC_`k_)xy2+{Np(n3E z+Mi5I<8a*mREvg2*LjNP!`$G%7sV{PJMkB)T4-}=R*T2k`{-R>|VTgl196H-t z8W1d3yWy!h-hUtPy!fN!u~MSU9mUV1u>Pns^`NQ9tg}MXVfvI^I3|;jv^3r@i9OMX zZ4|Q9|NXhTRKLy+mmsYuuaY+zV2gYC$h?aUM20HlQ~v0{3Q=B7cDcj95(Cxd9MrF1!kTV={Zn|7u0*Kzs1@(rzz{sh&u(+d|pRat7lNOd);0U?WilG+7OXQW{A{?15y<4?Ue z^%kIcBAk%C0X}{cyA_PkXuoZ6{Ra>d-&$$R;Me4hI(3*e;WSL<22B|4m`u+Da=Z46=w)y*v!t_EH%wkEJ^K(TFR7Vv~EKKf5}r_>-1%?FRiMEZPS`4bj_jH8Yj~2j?o;l7|YC@(mHo1zn?t6hO(lOTrS%M-kCAW*lc$t)ig) zjCGhzpDx`nnh_eyNR|)SE?p}d;YigjV0POi$k-=`yx%owNDbj_WDWT$u!C!67<6C6 zWO3n6>cZYz;t;uf6?>e07}w6bAp)K-zS-IjB-U_tPFabwZw;=SI`jZCk&@6l7=Y}Y z)PA$A@bP!1BqzTtKf#J0_!bvYpW(BymAgvRNdJnKgv z;>)l`{`|=>O)0Q23Uk*VRN}*)br_IDL@o?*B)~E8*!I5q;=ds*AkN=xKM{1IC{+OPJsBger+!ZBXCl-d&t-&I1 zebLmP>H@x9lqW~*4Td?(-Sajl_y7Givy79w&@-z)+8|3oaz!5Jr&oTD*Io9YCZl}C zrta!O%e>g|rUkrVFY>ecwz~_^o?O6CiRYbdr~kdU&U{b4YNP;ubFfr|NXUxStFC7D3URzAu*?FD4gC4 z;r#9@RD}X?B8k*q9(tH;^TwD+n^Q_3^y#!P($nVa@2rG+UZLmg-1I0tKd2zI58_~* zovQXFbfA@QEtiA8&&n}hbi?OF_5;p;V*)ft#3wuui_ z80)`2oizA*TI~TW)07?3&t^_+HE_JcBElu>s(T!yGUbr1?F` zT4R;V4q4A!Ee0=u*(5RT{!n9Cmq}KkC!w|f7I5w0Q`+$5fgthT7Xp`>iX`3 z&D+ZNCK$Z?+mk4L2ClDqR1*<>_k#=5>LW0+*_wDm{JF<*bg4o@B0k9guA0DLIck8p z7mwzF=3Rmi37eo`K@rOWyFfEq2vYI=YLsXrVfA`D6i+bAl0H?6~vq^u0H{ zlWX^YdA-LN9M#r~rKyB27)Fw&no$&Q+*~Q{^J`U-5kuOBNjSd0JKO242w$pGvx#i> z(^zIt6>VNKdEz~HH7IL~fpL{_lWizEDFr>4b4~NuPRuTwA+$?@0hyt47R_5@{?B`)fD42fA41~rhT_d^}+E{?|vkgnwt~x z2RCHj^BaAmQ6u&4J4X0XT!Mqo*2sP*Fq@i`v-5p7GPXBb{2C_uB7lflCvXs@pLCEs z@`_cdfyAZWfaL+m)l2@EGO0aj;jzI{q&{o+qc)J+o zgF^ns5;gkP9;tWgjU_mf4Cq1`VJG)1*+7b``2EPmcLuka=TKuveN2tSf5diSyhSmK z!T2K&gW=b^W8W?Lj^@;@cHf!CS@n%f;=Opce+JVEk=*|=aWA)TU-zYjXM5~Mv=KzP z%Zx;Fy>|>+WlTt!eH16EwH+bb89( zpT*Jj3MeaOk?q%KrZ?~lW0ue$6z0~K!{s$6wLVi_X^9tKNeT_WA1*#K2X;Yj5OW`Z z4n>T>(DPW5C#TLLkCh|7#=tnjC0zsh12?d;nB%D){Rz{!;EY(%*b!a9z^Gp2Dgt$J zjKUFNRP4Ctl%Do-sph`?5WV@Cf8-AfS!giS8hIb|xj|pIi69eHxc|loM6>p-zH8#y zJYV6`0GHHJ0IrVHopUG%-y5O&Ay6rb<8J4bB>pNR9p~)txuQd-s(8VWT0*~#JEO#v z$Sn4%#6gCco8Qs-`Xfz7wYDDaLOwt)RFY6|@VVfcVe-bitbL0AWNFL&%8G5;t9JI* z9-4v2DeJqq*aa`|e7%oIvmXJ~gn5%yZy^=6cGkDHrqYbjAi+h ziiQM&PP=h2P)t+rTWcD&Qi90t4Khc9)8i>bB#(|21WFVp($>|Alf+XS3PGDiqcd^< zsb574y9V+6t_c$`FyLG#NyewJUj-kjoQ`Ha?!_$s%ivJw$VEH)PADodI;JG7u3inS zULTK*B)4!=fj!f>IEpNh?k+yxeSD3LFPa26l5M#N_~%%#E1=sC#9cHvBh<7;q3-?L z85Nt^8VOd<<|2Y{QswyZb-D2VTLtO{ ziddVBVIRAZ_w!m(YB;Bk&Ac&5eQCw^MK|Flx`X_$tRo!(aG^4ZGF)%Ts-60$jLA2S z*vY!fGf?tJzmR6Hr|44{+zJl?k+mk{sb`_HNLi-x6)FeO!oDzk;zNPSAK&xwO>z{H$z$vF zg2+Ta7K=16hq8!~vChyo;2sC>@%^*V3^KsXp%2-Z`fV0Bo6|I)u<{cTbG44ZcMw73 zjE+V;^U(}3IzwdM2~9FYn8?gyjFwQ&;SjOpk{Ev8e1CqNVbqfFf+17r>ndfSEH>aS z@cZ&|Kps5f$LIIzLn+0+u!s;gucT;thMQuZpwwd1?ALfM8SX^_7@bOx<**mef_NOB ztV)!w)g6fMKk@9qOiD^i*`o*k6MmM(+mt)9>~_6-zjGFvEuG5}MuDBe5DLlz>;^?U zTO4)MarG+_sdB{_A2Uy+MIjx>-|ZfO{z7Hk+r5ziy-IqDq?}}y0dw=5;B)(9lTHyt zxcNn)Dm>- z@(ye{BcsLv+0=WFx^(Sg3sg0oN9-&8^lRuaNPQN}u5uSFql^-GXW*W?CCb9#d-A|b z(uemkrkrLc5{#Iok_Bohwt#xW{pDx2wd(%>VPCmoiW#Iy9VxSSTW~5V^Buu7nD7*bA>}#68(w%omePX?B5qqOZc<%agOZPI$vqko*BL{4c z>?0>0GFQ(*E?lYjg-n>5_G;yA{OK99q?sv7kY1wIc=T7-{?MDczMb2z6~xhORli#7 zHg!vBS{lSmQIz7^u6-mS-d6VTq>SE%YngasMqiBq<@3nhUnF(b@ z(&9+>WBd+eBzg0Jjz>ZGJT(HARCy!;;7NEs%$OdJ+qT9^6IGu83U-3;Q=9@?HzSS@ z9x?s8uBlQ|d!x_xF!?C$5({!cFRN5(v%9i0OkhIU$;ZA?k&&De$DchxF-uUd)9BDSSTKNLs~iGAVMzUN z_l{H*317F3VHC&GRkpJnC6bK z+Eg@YmHeJh_B><%08XM&AW*b1Ob<4jF@NYt13H1Z)pAOafKEn*09%r4R~>o$`{$BioJKoSuKr z&*!H~K{ODW7Z#BnTQQO!crBkJc>e$iX4-%2kH=>` z)vS7A#DNf$=0-TiG5T@`gVY5oU<5Nm^XY08B6U*L*^~!TjIGWv3I6;HdHwnx#$cmc zuY@^FC2K)CDw7R}fDN=SsHB7P!-g68&jfyYKFw)0_xFZq=t!o7#L}3{57iNLl01$N z1CO6M0|UoMB}s*p!(y~WiaB3PAEVI;fDe;_@ISEQp(t4;?eCNz40qLmrHund_OM81 zj0RN59)D0AV?R7+$3_EC-`|M(!?Xp;BYgNe?L7k zkXeC*5YR(tu*WM%!c4L*==T%@8P3Jz0(kNGALhnV&ve7&2C>STO2nor=@!))2(P!( zBn*-J{*nG?{Dbi71hsyi?G6$(5KGgr!a@>jQfJjwX@CSA0uO*jJ_`PSeuTc zV`3`k94|Xx-Jii3Cy?skl~2tKtDGSc~oJMO6__wyq2lB zSwE&BwuGvZ8;@}~!SkG-#yW*Kd_q!6^73Ln{{Xx*Lgk7}W!$|qRbjbU6~^V{ z<32d*(Lr06PmezsVj(fbVyN{6`sG57e&hfL#t!Tg#y>tfLQ0W!k2pX_C4g!YERT63 z0m{1t^<-8DC;Wfw@G+cxbs>}&Qopa(45qh(6HF7SRKCn`8weW?_&jaT!6%R3Bcl8^ zVM(7m`N3rbQUy&0%f~E{`n!W|1cUAeIVu6GY{Ohn7mk$o0x&00Ob90CSXV001YU z#U@;}%8@Lvm*!6|deS1pVWtctEV7qggt@PYX4pi(@NuCwk=mW*+B)Q(mb2SE!6Y^z zCwAS)6yu-L&l{Zi&+boExQ-THBN5u@K#Le=UKu3*U`Rhdyl-=96!y%GGP=eKIrQ0f zFN~9n00{Xx#~otK;pi>_`N8B59GkYuEGr^hd^oPv#_eLxc!@yLdL$T~pPMbClZKilI=v z4Zsf{-}|1Y{1^e9$G&iRL@_UDIYa*djjbVa09fu3CoRZ3TjbiLkDy=a}WmkeoTi2Fgedaj4H^YetzBuEH?h3B^pSiGDt_LpTb@_FHy6JsyosU%0jY;D(B6_I*fWo&^}NvNIF3H?11( z!76>jmFnjX;b)0W62fPSkegWPRl_vjP_caLNJ6z`@2m;|H!tAqZAu^^TdU&|^@l%ejUM z{$&+l93_yW)KV0MLy|BLkAd^oIWq|^Qi$;D8$~_bz-<=SYO_pXuFWf`1*8t~Y+Mb* zvq%RVa7GVMoH(*a%za`sxrFL9rJTltQx4Zz+6v$AP6CBHPD#KS@^QfY^&;dIYkp74 z@L6ca2GhGPSk)~wx1w;n%QbKgJ=qy&0QmfIk@*Lz!vNyv%lCoE1&j$#N|yA_$54U6 z3aKZmCf*3i{W&d+d}sdv(j8S#56q&=`up(ph1mcc!BTxB()IYG{$rxlybv*2Y{yii zoQw{q7+QaD`PK+!NbZQ1si9L@B9XOORaKNU?4mRO0G2W~k~4wielgIe2!xQLzk5P+ zpo#~0E{kL8mt;#bB=zNREXMY68v#3zPp5`lgU;S^qmiDjOG*+6dTU>^5d5OdrwLU( zv^U+f57Qpv*SpV8s`vYH>^2_unGBLgEp5?mX%XDNr~?AQh;6>14ac|=OuoLTWUH<@|yiYPn zn2-&k>T1nR78RoufFM|978JFzhg0KIc59xhH64nNw_N`T(2Ail8p^#GC(j-0D-x&f$$DN zA01Lw9e=1Wa4C{|h8w?{YtwA!M1es%HT#xYbHy=JR`h4|c@MuZQhw~6w zS`#fOEJW57?8hW+#BJ%w<$*llC>}QOG2_QVaA;qA65~oAr@f)F#|DAE;%l!k6H7dagB;A6*+ z1FDm7i3(t!Uw)7Q4q=AVbjue>_D3Kab{n`PwlEZL&U|?UWM}b~I2mP5-oL-zA0UGt zOQi!F3?1iK)yC^_%CVed2iu?Rj&cumi7EPub_i;@ z5;6T=+%W`TU@mi(&yI(&4Cb3K_u&tfpnWq>X0nofz1V{Du#XLsoCZ!g&H(_Pc+VXO zl>Y#y(i|oh+IB29=$)`cgZho`7#RIN-#O%rjy^iBtU1qbe<%`%FxI6ls+OazB3+(c z%IFrmHsCy`Jb4+wANq8cD1((l-;4^Aq$V1+B0y}&M2WZ$QWlB-03#SAAIBdjsE!{s zThNFe&I*PlqZF}6HEF`g6bR-egJ2v5WdrBOCyqSy!agb5kun9USLd2Z61o7wm{{YBz z1up1#Y@$A{vPAP~Zwor5yl2{&fs|JBPj}g?fU$w4iZ`tbe0f@i`Hn+V7xJ9 z2^=>*06+B~Jy+}~;U$K`kOd6_{{S_fMOBVg1^_c8LB>hJ$R{5Iz$YFLS}MmX!%ndM zqNBF8d0Hh#4tFSP6&agb%+Q+a#PQY{^ZH7Npo7^zK@K*rm8UFxYi}8*FCb0R5taj$H zYS3hr+E~dU;*}ADXU1|e#{dp|VDw7HOgBF$cQ89mb>a;SLwNy5&IWn*@Cn<;?bK#^ z$nJ{3lBg;N74CYbqoT#ZBRBvYjEo%TgW&lcN|lV+vf2+ZFh-lGEs2^_UBu=_40i;{ z-Q>2=NA~{M>fE{DmumHISTPdD^^5MYnt_=H=**G_$;rk%5BPyO!O6}u)zr^a%4N3Y z;y`wV3mUBPkd>9jRKKGHe2w3$fJgZpc=+m6%$%xa@&Xk}tPN$Nk5LT5HI)G+VF3vn zkKph|ehL2o+?GNX`ohvBDUCj*IcJJSxu{1jMMxMVWaMN@_#t>ao=+d1r$LkkU|m}e ztVX2~YeJ{h^JCMJjbSN4n&!chG=D4O1;_W>`RSL5N>!Cf53~D!NKX33L-ohAyNABg zc%YD?N&y35Z=6$`AS~5K=@Wgw zuIs&@*;+n>pmwZ`x<;8^rDbag5_?g1_$=8can5teJZGxoiK8$p2f%O6EzX!oJ&3GV zKAv`;dv+((e&p|+Utgr@Ek*=@10#l03kGZ`C=@8#yns(6^*$quE@%ZP%G9pf zeGEq;SdfB}T$-M`{Nqyp0B9{(VB%X2(f+(3Dpa4-w4P3WPmFl#kKsz0h`Q@S-I1GH}EJ`d0Q`jAi0RRIPJ5PrfBw-up|WQBdnB!rv;!9q#h`Tqcy z$5w)+fHKx3a&HCEl_ZTwwvRdAv(rTba08r$;1iHP)brG+SR#h729fjz$dhYih$#G+KNO|mC`>{{Vph0IIg1bf-k4EN-i|ZBu(V zCmXVeMhEUk{QC57^hw18mh(PT205hh1ce5B`!|nqc9&!KC)3W;?fn;Di%1&E*Hn2b zMkIp7Nt9V*bqZMR3JBomcID3}&ao0EVb_vkSo_pRVw_4Qj_H4UK{|(UOQV=YsPxo0 z+xGj)08^D-)bUe$P_nj&SLmkiB;?kq?c0|Xoqk>KR?s6R7S9pD*t0JY0Q zt$o6>IiI&9DSy(ssu!2^oz);p*LWvfd8<6*0i(amuVAe;sp6^wA`Mo{#s zsA_3IRBB^K@BMOx&fnBKPq+0nSU;D(nuZcVmNc$ojR5(`RnMIG!2UILA$6Mu@<8 z1NNg$qAG5~ULHtkX8Is60Dx@`XdICD)Qsu~(4+EnSoa+LE+w8L)7 zp>-f~J)eN5h0Zh1I&7(M6ZZN*yOxg|{Yw5cwRk&@?w{J#-$&Cb%Jqe)+`Wkma*!YT zfx>tLZaicY;~gxF478vqmp+k%ach{OMH3ls)L!7ydxx`hJJdBA_HNlP>%k}sJ!goG z%;*LcBr*+{JnekrZ#E?1PiS7zJlslDfCb~zf51ky9;ezp*fo36!!>EEAc#cP9inBE zE>%Fe`*1BbJBBIqQyD*kZ5?DW`St4Rn zoUU9xILW|12hLeLclqLJ`g}VsSh)eq6C^6kN6rZ#k-I)Kuxcj#n+6fUyAZGoHF+r2hb=u6mN$jWsQ9wfRLv&dom}O@u@J zZ`W$+{{Tlj>rr`T`l!w@b7S*!b&~;&cB1x)7ZP+nCdmjIzNxpOkuT9eC7>Z>?;F-5SFUA5jeodo`2J$Gr=STx4nRdFL>k{rFVB!k``%WAf!>UsTs}* z3I~z%=Od^FAudNPzi0yrv8+iIoWV1qle}UV;~Dqh@y0Qek~99PScL=K`5%5dK<1=& z&ZTZz@=q-BM+`u-O(NnT?{Daw0b4iBc&VOh44a2J4i$7d^oO8_enOYA5IzEO`i9;5#NM0mzm zqJJGd-KXkH5?9eR9XL2ys^w_Rr-H0)FB?eUlB6qRJYe-C&KV>nrII{;@bdAqkLCdS zN2PlkzdLX0PKf%}gDr=FXE51;+)Xuk!iH$sloi{C_OkHcWDa=bv6yj%n~;OP?mnL0 zHYH3<#O6#{q`M}ISXq(fOiQ&k&{+s1kT>s7YT%5q;Ah4$)iS=zyj*|V^Ktw{goc7* zNUR}|wP@l;L@l}mReT-^P!xVg2b^aksQ^K#SOcf=4B$h->BTRnUgbtsCD_Xt*iYvk z;u~-IpPc7~+DS=ZvG3~(GgcQBj@wA1o?GmemB27TRbq#o*$PQ;&V9U)2LnHzjT5jf zolCDE-*8L;UVubD^GF_WVR@Y#5Wma{n6d~sR11UW#&P)bo~fKnuhUV^(BV|GLS&v> zD<`31wP^j!t6S5~zzOGY+qCdMZ20L3!9%*u$)RQ@@a>jKqlj2{Q!pPr@(NOItKpPd97 zyf)Fr1d_um!z7H$=t5wYQb`%Zdyemt2=IC580gcL@~DT>=ii4|RD?q$ptMT$VToLT z9gJBd?ZE{}B(WT4`<|r<{VoTm(iNe-PgR3Y(x-$H7BzciLO~+xe%g5q`Jz{klSTMa;3I_%1YpamN|czQi?fF#Z|tJ%D{pc zDG$%;##v4Ve;q=+Fj;Z){$NPn36eSs3Qlzfk#_Gf&4SH=f>$Hkl0JFB@y|qXs3Fg< zxF0RbNhQmc{@X~$9ytF1T=nNbW~5MI3H$gMKLSF|9t15pni?-IJtT9rj^RFsX&xZsXY#&h}S zgU?nE5uEvipgiH!wHOt9mc)1|A+D{JECVw$6O*`}e{7GBjyj0r<_i}0tO`j~3^glS zlay62A?2e`{{REdJmVkz_{UK8lcx{n7>yxSX0#=Z7J-q%Z)L_uOlO`LasFTB(o&}&RV4ZSp{ijpYtH);DQw7#AP!FVjx&>y z=j0Rr0KY-nPa=p^ET$P6>#}Z9B%}^xSc`5ygPibx;r{@yQX+0Ct1OQQY^2l}b#-eM z@SkX{BP%#YiMKEZB>a41{{W7hD-=Ke(eg0NsA@jtwMOxhSW=@EC1jP>0T?F(+Qb}Z z$DW-E$0=E*%RW$&GM9LAe(!q~#FE%VK&>DtI)Ff8rNLG?8Q^0$>gbom78yxC_k$=} ztYO%$TCk$3(6e$x8#duLfOF#~$M^pD>O{)LuufNl?3UFq=AR_D^;-IMWr|DEx}riY z2X<}P84(iS2lIfZ@x;l(Vy3Mq2&r${-r5^3M^Q8tiI1$mR5g#LJ*5KnOcCljWn=#U z5$2q8iejcMDv;fn za7Q{Z{oeH2FpUrD$J8IKI;qpB++7DvP14!BUOf6LP7c=p0E;IIpp0iZ9G<%bszjQE zx##ci9KvSe@v6#J!&cMl&{OLkuKIEH2enCm1mP?~mRM;+qwxu!`+|o@arW7uHs_aM$)tn~{oj!MDknMh+S2i5XK|2>NRHCYckDk*EzhBZs&_3TMr48I zj3^T3B!se@=O-B8_2hW3hw#&uxspIlOHsA=aUW*kIE?d$kZ}riEU@%h{JbGbB5 zJrMTM^>)?!$dP(}+DU^&Km>hQ8AN|q9{Sjm})OvWI1#4d;2R4r2) zWz7;c(}R;8h!3Y_AIWmc7_b2TpBxVv>rPQ)Q56B%Jv3=EDz+7L*VEKR!{uSELQ9YYM7mlI3eo{FdCr4CE+% z%AlWNz;Dz6z~icOrDGHM<+BBlb5yQu1#r`hUS-)~mbB8$|q_L4M^M7;3LfZTKKz&?L- z(VQ+KYJ;$STAn(<=c5uH9(_wr(~;Htii#-ylQec@D+^?hjsF1V&N;!s83X5-j}FBm zfR6`(GZLGaFGQU?-msfSv~JRc9p24&<((l^AzTu<+mc7Oh9ux*1J$8{#3^|V$0P2$ zZwH(88$?o1qYD*R`NZ^QvlCo`T{cS)Sa`t-9yvWo$t8v`8_yj00*n?aSqn+av1cQl z;y%#_x=d#?_Sa$P9o-(W+x@{VjocK@B-AygYq&NJGV1K%rG4ZBlHb3ctjtC{_g65h zs87-&0$M9CyAqm^7xcTDCb#t_)#x>f$b(AzSW+7aCJb!I3vNxyI0xN;GoCt)60s7Q zNqCfk4OH>xAF01Zd-Uo*b*OeM*Sm5EWmeU+PfA$PV{Pv|W)|G4s;44F;BUwUbJtOa zE9`+#W3dP9-cTx;nQU#=HDBSI>R(~#UrO#)i&4~)=+zo)XHkx80@Tin{aF1tf=3>~ zlCn8rv6!4=tPUZA#Lt{o8p4mW`qy|NH92oVyls{H^S9Cku+}2DmShpto)#oZ$MmWO zT(H3LkCJ-MMh<#Me0uw&N)-CUi28}!GtQJ^vqHuAwxsj~6Ev{0vB)fncHxI7;Nv;Z zR{sDDumK=_V8Vv*b)N6hYEKMSwRm*fCD{T)K^2et^|0F-Iz^Xp*DIBzs97ameH2#(KzHiTRl!#*Yz|J)jrvcmqpWH7a%8 z6tAgP!Q4(U{XE8ZH#p8e%j2x|;kbz`2mo{WQ2in@OIkeh{7QXUzooTa+o`C{3ekYP z_L)PqiP^uW31$O6m?X9r894Gf^k0W~bjdP*5j^*e2T$MS7}&YTIF>3kk12O|b=uZ# zlzClYh;2w!$r;XaLGng^dGr0c>n1FkMRXtv#6Fp)Thwe!X~R6?2wu#hviqZnN4?wd z25^5l!0M`&l-$Ln%Tm86w0j%)CWlne^xa-**1Vc-uLN^bg*VABs|<{WM%p%j1CfL7 zJC_^|xb8WKmn|tNkTIl81&p7(`!zU%-?45$CAFgOjZ&Yh9!nS9(I$QpPo56 zc=A=5hl|oA?M!`RR(tj2Wv5Q4V9cc@kgy<}w%|ORjtgTyj(V><7!;F~0DNE1_l2F{ zW2}%Rg>=g69D#(=p^^5C9tVsNNXQ>PPf#Zof`aJ-d%&5S!_s#RN_C`?YFcy_6LD5p zWKuymRVNGy;l4=z-1L=j~k zS{TeQsC9tgnIouSRaOZLOwGW+7{FbmkBoT9@&{8V7KH~Odj9|o4i-(|#?{qP3f2&? z7)OdmCmG6+PsbR?i~*bz)N91Cc5fek?**P1lFPoH%#uja`hmn=w8Trd^#$AQCz5$T z*nIUeF#{uJ^)>Q_%po>49q=q6H;9<2WHJmDB!li81D-}e=Z~JGUNJdxec=^7Ad32= zaqNa#@;(46=_25Ku>giYJ_+;CryLR8Ao_mrLSqPS-n?Y1_TO!~EzAe65-vIRg$ScL zJe-rBMgTlb{;KK92b+B$yI4hj;?yL8+1eb;yIwI`DN5uIa3xL;_c#Qvo}2wyV(sKU z&^@Vp!!Y+Cr)8Q*A(h>6B8aQRtOB2DD!d;#&+5)PkvvQ|&0i=&X7Kc#*3~0n62_pG zc13bq1Y|0n4g%wVe4mbp@nAcM9=|S7`ObnqwXNphmcwr<3}j~jH=Vd6AP>$n!Oxzd zR}fxzCIqaK@$}l&DMbGOaSSpZBX7EzHzB~w5J2z`0|$~h`5hnnf~!wacs|xRy3Igh ziUnw97{hPgpaMTg+<&+I4+E#RChv8 z0AOU`3}@pc`02+O0C(>N+8E@PsX3Z;v0w>ZnZ&ZleNe!L$=&`VkbXICsZ8SX%8MHK zz~)oMTTRrVSjVlU+d;!b@-j)hR|ZjLZMn(vNeF?2%!d4V~j8-K5_BS`E(^I6v}-e&mj!m zQY<(C)<%#Zjzw+691d`Ke~bnH06!fgQrS#1!k&0t0G=4~Tr(e7#M}&SB$7G6_#eMQ zScXy_2Ae=m$R(B)nH4fgC3LFuBJ_NXD&) zW*P*o0)W6euWZ3Yt zl=~vr({)WkNHw|w;Y%Kwzn7mlR%VT3A%XTDBP3(a2Ua^QV$+&@u;ZiI}$oB~@(XDE94abvk=;#$2?4u!z(~sxJU( zy_u-$38rhhcW&!F){il18kU+ZuBB!WH_Ko#$pv3-08}n8Fh@j$&nab~UzxU$NeLDY z?(k$9_K~PtTGq7aXh&V28Wy*4ATi@=#u+34lN&}bizek`gN%@6S~F281I&B#f=bc_ zRT3Ki0De@}Z`L$BW<4u?)_5*yP(v%q!AWI?Rxb*xj5i1mIL1#*rKS6*1K*TH4sBu- zYdTF`FHW(jX$EGf%^%E&h<+7J&oAaT%{smWk`V3HYBF*~OBy=wY( zc&>J5Z0h7XRJ;*f$y&j{d$zFhi)Qm>R#x(x`cZMWxe`z>AIyB=XWyrFTtq2hsl7dBQ zA_rfsrA4M)rKk3V9UD{rlF^ewuUtTqA=-t*%QA*Y_}rLj2m!+JmR}IUB=?pFi2K7K zee9_*YV0aKtJ@k)r`F7oz_H6+DC&X@Qk2oNHphv>C!=kM0fgVv9~k2VoMr_?=9r#@ zkD+&jyh2h7e2>|oKU90uvu5l|o#EQLg!&ex5{UHeBEN4}qcYuRiDb2Dkv1s`j3e|& z1S@VWla90D!G*`;fRa*j0-`n87TL&-Uyktug~G5=%`ku|L8)`0AQ&I9d#Ss-v%7mx zpJ4T)d90*k2wpd6&M;3N%;4ko0oS5T1v3WW2JgsmKeDTeKy_{{{X6xKVhD= zFpEMv$9CxB>uAB^X_+xym@G1q+mL>a=fkXB{)Tt|0BN74`a^doWT$vo)2;o2OtK(!0+k;x8w{u*^~3yXsTe6~#?K_AkQfb1^w_^qtaLvPW5P#b5#A416dgWI zs4mot?|FX{T3>4EX&-EM?uTZ+(^57PbUhY6-tCUl zGV40VpHvZE#-QYg+-{NBTqgP>F&CF zB0C0B%$uD-7!0JG3}?;Z^TTNP#i1+O`Dg5SG&vV zUYGS6#-C65PxE?OL?%DDvoVL)Q=doDjO6i#Ld*tNZUDzVY4K+kk%JP9nf{kx^9R5 z*J<$Y6q}C3sS^`G9mDVZ#&#lpa1zZPQPLWzonKL~h8a+E`p?g`bMi6&06x2*0e~c> zG=%6E>QTN#ROYbA?u54hjB%gz=_G`j2t+ADu|1>Sj^%4~Ra&&_tvz^|1d7w6dj<}C zrr<}90Oz40D`cp&I4VKRG>=(WZd?fZ%hc3u?zN+86Kzt>>Q6H`9H@Pn0I&=IILPA!W2RTcJV2_8Zvp2} zesDdlZ3fo4Pg$O5-j$}U2#!jzK~`leh{R>3Ktcy9pkyxMJd@|9S02YO37JvIeLisg zrebLef)3r%mKzc1F)ejXvCSTwk|yQOaK4}C9R942Jo6Can5DL5pEe$+>jowZkpkY; zbiGL^=&z);?H^Ai>LqBHCgKY_?An2FS&xu&`;M1aXhjaz^vVI3(lXeDzEHZgDw5KKylwyGN;rYA5OQNiF(x^pf+J z-DxS2Gb^DE;r4@)7=!0H8R?hBxP*z07HOgOS|KVzhKyq<{uZjz?4jS3q!usfm_{mY@rs3wk@q(6Ty*MT9fu7n-Uh}>{b2f@fbeD!)x zK6;awf=9m?F*!e$2(7N^Ix9kgUu#R59i~+oCoD^z0V8$*1d=)F*NdLAu)1P4y4EmhHy7w^yAOeZj`jBQk9{#y0H09Chm)K4D%SQjhqLlw~O{N!By#7Q;!j zd&ng6GyY_Cq@rFN2-5z7Yc({^=#stn3kIQI?aN5Jl(=P)0X*SJO}WP#y2{0*tsspf zUjn41L>*(=A4NN2%hQ)hp`=>9WWfIbZw(lO`UJ9^xf}@a0B_%JIT-7e#^H`NIR#bj z@uNKnM50XqjgCK~9r+Y(ejd}kIatJwqiW7b7-8uQyB-L~2Ok8Sb&9SDiviMxjEuv0 zhm*GZvb9l1AdFEt=3;O^~%O=ut;26pG9DoiE8C(|?EhM=c(h|>R9NHk| z?|nKQJvCc3C84Lt%!zctiqa5p$|ZH!NWkDR{>Q9|yeAbYK}Z>gm&|+C7%UL_LMr#h zhSw+EH=|)=-784r)KH)W^#S30fHwi~IL}nh3l@`{r_?{KJs^e583%Rfv$BMkJiq`5 zl?KqGaXf-EjoEMV_&q>n;!6Q9W{N$bi`Rbg+ zVu$9Je|F#9VXFqFr9yJ;B-Qt;Y)6ifCN%_mOAjl?bAiW?*cCcr04hy+kAHY(FK8`p zP>=v7hycFn3VKC2<8I<`JRIZy0Em@|2v%a6^!Y-oygBO8k{4*~$8?|`^RdGZ-1|Vt z`Qym^b0oZOV$&s&*Vu!G(^#hUoy2g*CPLuIp<@k?E?bkyBhNifnaL_7d-qsphQ_-} znnxQd)w0ZXpN$sz`Pi?VR-jP0z>KGyS!j1$0z>) zFu~;GIpe_U*ith0QqAw(;!s0F4{DrWaV)kgLslq*&d(u0xhu{GC;;5YBz)r}08lA@ zzNC;X@5UIY2z9Jgjb?g3ZGAmp$!0m<(V2V)S3Ka3KsW?^1IJA{X+o3(7ChRNhNOJj zooJznXPyd+Bj;l}MeV^O1e}q_&+qSV=*gUwWx)!=l0Z1~<0t1I z9VJi|1~8mQVMyf;CPi$3L}B+5yq;GeV2}oWGv~nS1sj7w@87n9ctYQSZy1%Uw45t0 z(||GxC_mySl1TA`oOJ?U^Ef`Ro)lygBM8ztMgyNs3hi7I&w@sLgP$koqCh6i0}df& zRvbtH$E9I%W~?&*v1(=yD$Q ztqpq+Y39sqM#NdM?ik>F9z5`Q$;VEfA&i$*OeA%9MsXq>rS%$(%KImpStQE;07|TR zicABy8}Z|j`+oj=rBg;Xyl`5)T6(p0x0b#$w4tl$8;) z4fkR0ks@Z5(c)J}?k?ZfqpN7!lF5QCkm@qAY_3l+>;VRO@#7?ZdZ&xUaSR;XgphWn zEALn(tP9d4>Gvj^r`e9{T$Zhh#5%hAj^mN;BoM541m`|Hbqua8#4`m2m+<|ddqjZ{ zdTq|$(=PheBlK)WWLV{=9H`C*p%uO ztkbdS)}k6{A*-xRs~oM2um_Qb3V894o}*V8#v~V-uRoL)Pz$6n5Jsinde)~_K>DIb zeOWi!nf~o$KneX08DwB^RIuRkG0~1YjdxVl9~Ro`hpD z65OnoI=-J+B~Byq!@5^{JW#tyNm@vX?%K?V>z@I6WApyK1j)r$zgPs$AXXl`-BQTW z%UX(hD7hOa+=rjiSAs|R@PE&$qIGLS&EeHCM8XqVy$oSZO6iihf>c+5kY$R2#v74? z{-dZ&@V6wtx<~fc(EYHIw zU_L_rVUL%}G+*JbO?iHp=?kS)8iko;u_V?Ddmv*o5Fg;M_BJ`jMtb@|OG#NE(lg|x zW=a_~Zwtn+W|#7+?-(s&(HNS>%!LH|loB(NJfHr0G_mg(B_yOU@iFKB0OEBXUeTn* zppmQJNsMgDWGKqXkh#tj?d19Y03+3uEFc*l$W=B$OY>0zaw zjAOnG*nfUH3)k$^FdPem?F++4)r<*`!BZBqXL zEq?GNWj*MC`ahu9i?`oc)Kk;dHQC!xvaCrctWT#OJmFLG{{Rr{?hX%v7(5)gWL1Od zqpD7{?uSO&)XrOhh zl_q{#Y0lGuj{qX^@yYAdeh!%^8OTxZ)5^bCr8z|;5gugG<)vQGmFEB;44^JZK5z$K zppu;;dbLDJ9Y(!ve#x&xd~z_AJys)w{{Y|qeKA*hA1jK%(03~7Qd+Sj20Jk{b5}3{ zfZ>BEC*XTe`ksMcEhQ?1mjpC>BENOi*3fED?bGR6j87C+hpmw!`iPrzle9L_JpTZ% zUpV6>b{Lh)6=Ho1O6)5iO{&|APbw$3S^|h)(!w@IGF%^U{>8p|uj&-2$^@Deu0Up*_F3962kZFZ zMmWG6V?RAhC>e=ls@i*`2`!{Ods(72SgcPb9IR$K?j?a-lDM9rd3 zEn-RN`g6#+jhV__ykU`4pU&m>@xj6Uk5Hr)8dPuZ)Op0YsSU-hT(JYRFQ!H7or!Nx zvMhR_Dfk{h+l{$7Cm%gbsePK8T|o`+#6xz96^M9ygSoD1_G=`%)rk=Vf)>+ZjZov3 z2Vha;57nNoE3p#7)Dk>j)9TPU)}qyjtp>MleLU8$La6X+wv-`?GEhAZHqPPtd%B0C6N&d8OJ{T`&C)LK78XG^ulcUZ7?mvu=`$u z3pfRUh3WIrhTXrg*X%{`}P;jC%@&Bhv%-=N)@b0-rw-gGBs6a;oX{ zh5!pjHne4xhzi@4aztyAG4gT99FDqtrJfdH8VAyT+Oes3PKwgif3~qV;Hah0IhLS)W%RJsXn9_lPDqHB_;kQJHt$~r^i+e zCjEv%09kA9vdRhE##dir;DP#Ci9G&#wI}0=im8y66d}u#%TL-MQf3ATReD1m-~2)M zKXX?UX3(hWRc9WKqXqb)wGD{3mRRIRi)w%ZfJewDBa9NhGhE;Q0I~+)mj}=h?8A_~ z3{~__@Uu@&ioI{A{jH@}npotT37|5-l12iFVyh!f9_^pgRz%#O9zfv4uZxNi{{TfT z)l7W(QR~U!(wTsUq+VP2neTlzS*F%w(685=g|aH?3+qY&J9Cmt0Dail$Id@JJfDsg zHjBcctnNVdw~abM8B=A~Kd0{!_5T2heL~sN?CM>qpx9?JO9VEMfZLUJvNq4@kW7ap z6Nez+jF3MYJjPZTIY&RM5qF8ROalJ^KfFilpTxGaZtYsh^w+kQgV<=Lib$H*s;!N_ zA=J$qJF$(rl0*z{HbHxddl8Ttg7Y1aeP3=lX6PNgzrIeSPT$R*=Eo zFSNd+{U+`$F)!&Fjr~5vg%;hrtl^+22FX1I8xlDPaLN827!Lr_$NW8q#L6KwR)<01 z&sY;QC|5|EZ7Ws#Dw1isvfHm<`q5jUraxIE1eT55D(%NOK0xv0b>dS1!s1sVYFMPU ztork-YXae^18G`Ea7gjilUCJc+QFxj(b?*NPGfD)vB%E!Ae`rpnrNXrzVHh<$Rs>>MM!Egxk=Z^=#&p@0&(ygpXov#j5?YnjEPbG~hSq#Uf<>-D!^7(iC=P=a*1w7q47WUy24((5#*6>k`1XsbwuGSEoTDD=^fy;}p4 zpnx)Z^Y4oAf9aD_i2wvFIR5}Ab|LOY)wDp8>T?>!yQ=^y(b!QQLlirXovYTj z->fUJ+Yaw< z!7a}`=RXJItvqH66@kn6sd--Cv}UA*S`0NphhMd2DJO^avHWwN$60x`%?BNhwDxe& zBN>YknMqvnjyOFwWP-%gm0_z8z00nrX7>H9TU+~D6wyp*u{$@fAO!3RS8*qfcmQWT zZgAWR_@*H^d^3}&It|Tj^N1F%%v3qkoOxrvKCAx#`o`8_o?SkzIgk|F3KJIG=PCv^ zpM&v$I`@1J4U@y9nR3g$Nu~YTC6E^Rl^%uq8>A$EPv}cdc-+}}CIV*0*DsBs7bQoq z9&x)QkBs=|#ZzC1s4XN00@nauv^V?3sp(=Ey(2(XjKs@+KT1Vxq=Cst0Q2Mnk^B60 z$C7Ae)*yZ1$*Dy&fKszWA!YlQNdqt(6Tv@>^ZojC6(|0vJiYxP$as%fXQO0P`?~&{ zyDVSUW_+G!VM?vgaXFC8&Tjr`zWmxULVw*&)02oLef=_ zPOOSc7>q2+{C|kEXZxJ|^#V8s7g-b(}s>7pGh(|SO>BL!@G^`YnpYZ#* z#tF_2dKIlx)N=!v^M5)*cq+c3rs{O!pVu#4hE{Ea72xs*F>r9n5TVd?rVQbyKh6(?N+%8>Qe5jJ&KGVnl3{;WIILcR6BxwaN5x{-sG_z z%_c2QiCWVvYa&WU(9%NV)Ih8_APoFx=`0Mz%NggmNwMecuNWAlqEbH(Aa{YNH4Jvx z^Bys!&-I5-?kFUZ*0HDRaDnZPPT+zo?&9J6~1M?Pyh`)1;p1h5$6W^3GI;QVZIj7z%Q68j^fuWb_z}N+d~HNh(to z9Q;3?R)s4KGHR0P2?eb0;^qAS-j5nhZ39ozDh)qRj*`U~WlwCmy-PyvjXc?wt&3i@ z`DDNeS{`r!;|zXr@CRPU@OQ#)Q!MVpT@edOJ08HWYC+f_f`5Fk` zH2Pq(1Vu&oTz-%|0s8^h(%?tQ^QIOKVqIg}!LT?44F3Fo@6@rL^k^;&FOD$B{JJp} z*UkxaN#l5AjU|p%DCr`HS5h!lf#8GSgVT`Vj6#x7prn=}w4)KIIuX24^=%HH9?&w+%XzAeKL>AKR-m;K4*xYFW2 zjrcR;Rb%q-&LqF?kIJiOt@JIbR`ME0+ z)ajw??Ddaq%v2(U^&_;;aCUa7ruwg9%|Q3zkJ8;Fk}9{cn6KczG4qbPt^>q|3mS>4 z03}S5um@4nm(nZD4jgG7IHOJ~(%727F+jfPm&qU!7!Tj`{f}Qkq}H%uP9U96U5oFL z>%km&jX-IA&Bu=)<J$Z z5OYwV)#Q>ou^bQUNirDTKo1+kfw*un{{Sx?WOkE52`8f$ZjEnm0T0kgBdCETuXz}N z+hY+nGx`&2frZD~c))r<+jz98y*@j2P z2S1LDG_U~b{{X!NGsgy?@dYLubt95MjAZ+tT4A0@8!!jJ4Um65Nt74LK`o(6dB5=n z3A9M+I;2_^a}vvJRCI85g2M!ILXdZ0o;W!F0GCwcrBjsYXXf6=SAtP$KovW7174Ti zz1>ICKBa4Vot0;dW7-A+90Txww~jisI~cN~lmyX;0JqoQoJJBa6S2*H-`vM?7^RJy zY6;?vqjBUgQIc`^IOK3T&odC5szLI18Z*)-N{OL{L)oW6AWE>p3*n4$#S; zpOMZEdNDL9Ma%i0pT7uBVOC|7LbcxQ^HLH$^$NrUhwwIFj1Dq7kt#_pw1OZ>F93ZlR?q`%@5i@qfs|h367sqymER{*N!8Z2t0n43`3H%I>tt13k zKCXInuUG=7i1|B{Q)>woLr(oiMv4gj-wKKjFs+@$XP$5~&pk@1Qp$h0;EsOB%)uo_ zF1?G|+Q-zs;j5wPJ+NO;m2%G{?kmF>AiR>lAtP5f&$-C~S0|3H@ZJ-O;uE_pF>!KD z02cmR`H(0Y5d-~g{sg|BKY83*+MU@oxhk=}ZD)ug+-zc4>+n%f@v!G0id%7$Th6Y0nBliJ;hq?-DahgrEaZv~mkdQn-8&$%8vkXPp! zBomN+I_xmGX;^e+0p9PdXU?3t$_i0#p6eI7A3^?{)XK%6Rnpi?>;2Va+{-2iEJL#v z$UO7N10$@iCBZPb_JxY$m4*qE zN1e`iLbE7}RwVI>a(@60ykCp_0mUV}+&YZW&im+pXqg;FOvPo+m+Id-dc||NJ5N&6 zb-Ai)+H+Bwvjv$o8nRY+qruyR0FQ%%`d9)(5!aLAWX{1&RGGk~L+8(tt&!j|`1#`}@_!X_reFa{ufA}cq_~fz)a+ieVr@wv*(`EItq5kH z4ZF}JHsia1SZraFf-}*{M5$`dW#$!dN%}X;h%Ciacs6r$TGk${QBNJ4c2C(-rzfc* z%E02abjwJ@bAnm82Q7|8)M5Vs7e6i*T~Fx_Lq9jxm*)&ierVdeSLm*X*?LSJ#q~0^ zeNET{PeE%4waegdW@Tj)G2k<9^cReJ?~Hp_0Qfdsp`REtFKUpUyPjQKh^;<&mK^){ zy}Fohx<0XMboBY#w2q0|HRU3?T^mbS4Oo02NggfoIU!fnWk8^uCpqiXF#H>b;M3fY z18Ty(T7YtM%+fG182RNTNn3Q&qlYE+U^Wq!_h)`OUXN4Lsonmg18%j8k#6;gJKYJ5 zM$`KK3X_bGLF?uZh^27#aXG)~(|e?o`DvNSIa^1!jC6Q;t5l?^X=AZ9@#o4R^;Ola zn{%e5E*Vi3Xuzongn%$z*?`Ug;FFvjj=5Q8SqTaZcXE9IiPcbR9(w*LbvtsuXK9*t zojrBA6#oFyC0Na2-Zb`r2RPa?f8x&>=hJ=ubKm}Ftj(iOHJ$VPkk`XJ2=Rgji32+#jeHt@J$VBgMotFoM*}FhbfUX_ho_Rf04@2J)*|2dTVhD6I{JoyIP4=A%iOU#{qd6KmA0G zGsb*@m6!yekUV|(dclQ&T)>H{>d&cON0Kw8T~NN2r)Z*uNW*)8&nGzm=N#uCbs{9l z$bgzDI_hh;?Fg+zouWHUyK2Pq)>f}lSeIlA6^B-ty}#2gQO?{C@iMm@dFtwuDJd&a zEO`oZYE}FqEXCRn{&>(MSGQiw+v1WLB=v(bBMg5<*baAX_h8`uzCYnGXm zA}xPHw3@w`oyR?$JX5EtY65!c3zABD_87$e;m@~-H#-WB(;T1x1cYJ3)PI}_ehRmF%huus6 z01;5k4-9C%!KqC(@3+t@$6P*RXzU?oT>k)!Z2&L;9CCbgIE*Bq5KPiZ8(XDqeW4~} zn?;JBal95LSyGjF0wTaESr6)b?GK{2?tA_f-!fRd{9mz(SmN?CPHz(#2NiZ*K5CvPGlFzrrj_W4-k)J+0VF`h{eIg<6#) zwDzXn8*0XbJAhp0-~++WUqgILg_e~ zmqH^Mkr+!NC?tEAlfljoem}QfI5>VSODIgG6>I^Fw4A}jM_BF{wEM49P}j709u(YS zI+Q6Y4nZ#-{0|=|kDiTuBN%|=4zPdXTh9Gy5$8(3DF!^>{73hTUG93Ce0M8a6yjg^ zHWFCOkCrDZkZ_@XetPylgYahwf?UO=l(l%U4fA-UQWrR==o{)|5s%S!4Kp7^J8zLV z$@AyHK05B4I~dUdl#35!eN5GR8p)qexh6z`mb{ET89qO#0Ll2rKOA+FkKx#EAt=hk zrN^k~bb@&F-_swemHw_{O_E5oZAu6pc8%4fgpt89mpieNJ*51BlkwvGXMvs$uGJ?r zwHDZoShq?M1C*#nhoW|)w39~Ove-reY`>(8%l`n8LCEv_=dMRnia+qNWo2$~OAjZXoafI}6^_b>%Twd&5+xO^W*=59Xt8VhJOfm#J>*L( zEL)7bLo{b4z}t)~j03?3AQ9JX!SL9`;g>X^gsUqXXnx{7Yx;RN3Y=`@ViW_VgYF1E zf+;_1q)xAc3}R3>?T{ic1bG?3^PY3#t(48hOBqs4ddI&jhVc2#F-b|YR1ZgiwQuC> zQb;13PETJ6wG3d$H!epWe1FTSu;&q()b#5a{8=~&cy{grt2S5gXwWCuHCnnpfSOlp zS=S|!qE968$kHDnJ-(W=a>Kzq5<%-z;qC>(c#5$HiO(|GOpxI>a^=B#QN3#)7V)HG znQM8uhoPu%i0LPy_aT9T5lF6a^d*{+M01zboy{pzJkm(b{ zUU%X_B87)*5I5w8ImUR-bN%|TC&^IEseqBl)%K$es?fy>5JZs7(lgqBxL}JLgePlw z&I0)(1oAQe04}1=n+iafTpDckr)yDFc^yVQvF#D5@HXcpc=*WaiiE`FdTU>QI8_yd zXmmAs*d1y}OFWUUs}B95CTtdOQyIdX;Ga1Bb!jIIx#&coa+6nYr|kxZ1QQ$Q)-7vF z?|p8QYdUQ^_H^ezYAisq8e?(U8Uv6vuHOSYv-8*5m^>`G5`?r4?HFl5&+ka(u~R!~ z-J<^hHEXR)w?Xrd9{&Is8pKz1{@0C9{vJ9LfTNID%rZ~^0HPQChB`c7Aj4qmh{AGS=;td0VMo&%^9eauKA()#+j6*OU^DK zjX|CVW!M15cx?Xuf6J?c>S8%TuXy%|vevXir|mJf6Nx z#7Hvni9?FjtV>HEis{Cma@ClHJnvICx`!@yU@H`+t`kCB2$2k<)TM0niW z2rmSJI2k<~MRs)`=b1H7F{@>(;RqlFcn#;gQ`=JxE9h&775ZSn^x1 zjsF0sUk9IuvFXKOl0=Eb<)`IVsp(f7pJ@9V;Z7@x;=D04F_OwACWXNnfU<+=e1UPJ z!4+Xu&}YN%8<7{{WXgc|xV-{{X5}_4JO#t4Q&;@dVZ>eN*ll z%@RQyT6-{hN$JPwN}-nvfJr3sPm`1L*Uu@VO68<;LY`8@H}TtfQ>X8d}VxuK%k<~^Y_=KESbFi#R!De zsD&D_HOS|ddv5|`i4%Xga4 z74hRZ{EvgvfRK#9)O)yr));|oiv+%!8bwW|pu=Qi0g2t@W5CV_Jbapp3PUf?`1?bL zdq;IiY-!~rq<4Q%22Hb0Llem!m}CC{eh)(=B4{a@^dB}5EPY$+Ld-KS6;x&HtTazAo&kHP2?5W^{{ zg4KCyu02ijU^6Q}4 zgF;H|{{ZPjoRP;F81tTzfl$l|e|rA_Fu=8A)L%&Ziigrp&=sk+i&p)y728v4fyC3l zrWxF@W!nrQSfN~=Si66VC+YtHh4?hQFAbDZ-y#~nv9P*~XS5+f7Y3WpniA1KfUiwD*| z!g^XINHmRaOpM#oG}@3!Ot8*cx-_!3H?H6ig;gO)#v89R_`iUsiQ!3X(^L6WNG0~L zq4~4M-V%0ncLO$z-W5KP=c()Jvd?5!g5(gvJ6E|KkZGk^2L)zl+Nj)qlZMVuJazM0 zICdm0QkH^}C|<*ndU?i=Y!n3V{`XfZy(<@f)p7)j`7v4)8zhy=? z7<7oZ1@qvQ3%>_Gn&Eo)4~M=Fk;2btzs!944Y`~0ic_(vN9FG;(0%>dGJf*zi@n9E zNvT}2Zrz?=>sg(0`S3BffUBGZ7*XT%*QF&XKnX}-EIs`0V+L%)Fu5*bzk9i>X?N;H z>nq4&c5wTG%bpk>3Be3`AEb@?7o9K+wgNR)2p zUgCMR4Hm3hFGP~Gp(Ax=VVn}o2yF3;9Ao3Iw=qd6YL1c9g@PPw6kn-*$sApasp;=o zpx#$>ak4AOqD5kIIL-!m`55Y4I+VG9X%z7*0$CBD{R5>QoAma+rw*S3HoJCvam4Sx z?PFFjD*MO}feB)9l27A~ywl>Ty{`}`b_hrs)$6A2!a3!uGMq-VH6fUvddRMz7D2Rs ze5k=6xfta2z!ViYA)+eBJxbw0kt+h@0>nf+{@57F9)5X09WyN1`Wg@BAFMlL?bTx* z!z+?~>dm_&Iobx_kJ$WllbD0c-R}bRg+Q4MlDNS+2nNvWgYM(c;~se9sLdFr3DO|1q%!v0AMDj?krbXC2u874k(iSstA+u98*)E> zd}HWLKf`!+p(K)yL-%+!ae0zEi2#V4?O&%KPAhgSou{owZlvie*wXdDO!lfxC<088 zfMa5+#xgb@cn1szi+mx3$6@<9NM?HK`}66vXRCn$z^bhFUxVBEly>T*}LAEqK#BlzIL zg$kI7`e)r*2WI_A?cGUWt28vV7_7CuO1jG&AxXv}A(g;5Vp&h=;B`9C6+>uJmQY+! zwfXyK^wz!nPj~OvNoI)Yw)?BMBX2A79i6H>9+b4{sGq1%18YRp$- z?hR58{80fJM0MDIQbb@$Dxj`aNh2BP1{}=qI0JHE*NRNA5<{IBd;Ozb{uy=M7fu?K zdOdk&hFPGcs@T*B4hy@A))AKmIE;lNbZmgn8)xyt{9VFPi@_X3g%Y_{ZPHj0Em3}) zpykb+SrZdOwOHs5?{2Z_8LB~Ec_KTce+-U1u+JIi#y`+?^Ww7t+eD8UZ`L2L)PA1m z_jG!dXP>%9+Q|cODpps-h1j2bu2gMR7*V*APXn)0_)p=v7`bO3j2V*s(Pv`Bo?8yF zQf$R6_Gs}w59iNLvEK?n?b|;d>+cDRISthSWIaozqWOE~|Y7P_@B=Pck^|i^A z!~}*sqfZSncxK9?8(nE0jQTGgjr9YtW3#MnsV0>awXI!*ud6F$$g)ZsDnN~uGlkvB z=j+wka9ofnb7Q_nlVQQ6m2HrbdKgIk*3Uet!VE+Jce_O-)m($HMNuU-anjJRG zwd1LpfH^NJqZa^SS+^2^=Kx^xan*SoMPd_}XqIAWe{w(w;W2 z(ll?TkZM|gb6xDN&e5%R4y|e%I(_Goir-X(viepdKviLpV|Fb07?1!?ao2yqLa`hp z6^=4fFr2v(Xv(XeZJ^qq$Di?Eh%x*}7b;A(c5V)0k)Y=Ef16Oo%U}3P`jJiQ%Li%Q z^kITHVWw_VF+{31BmUA}0~1XZS%y^ByuBJWu+S8J5yC?4Vn1NZ9B8Q{3S6T)zFv0dEin2^Qn zK@}C;&_-4t5+-9ON@55JEN`z~TEPDRe=PMr+GKjNdU*g9lV{4PApB!L>(`w2VJps( z;rWN&HlITrr32}(Op6V#O_80I-};5e?0C*|o_Oe%p)`V`JS_+~h>a6ipt_Ip&syr* zo>B_gunQMCIf!8H8P5RY_xTs6Ntk8!qzs^FK6`l9B7Go+b<(zNLlTBEi`k&TGjUrwtKRx!WS^$EZM7m{!| zBhOkK6Am$${5+Xu$y$6X?D7?~GS!hKXG-}(dzW2ndYy@xi#deOcMZ*!!2|Q2NBsKx zR#_TZpx9up(D4qiU0O85n*dICb=c<^}Ot7wJ)DN^i6opM7>^%wl z!heN6*oRV|xV5`fp3D&>R99#P*<6z{u1+~ogPt*g{wyCE_{)gP!r{{^J1IrSgmpql zRHkPH{D+nTl*Cw`}Ny!+;94h4pt<7un*tW<2*_r zSI4YxTK@pmTY5*(e%qf(o*6YumDf$0%0NVw1V~Z+$AZqQjQ-~wgN`mw43eLS=VB%% z$qG)-K>qdV7S{8SB?Ci!+iw%-BLdLqY8~mXB`Wc>)^0xCCBYIXwtp0F6Xzv;MHn1u#P0VkL8SVy|MV?wW>=~T4(%A&nUmKDIpa0XBJJfHLH z)KHKB05p7okHt*IPF(qiyrN84pinc%{{U~tQ-K)EFApI1C;D`888k5TYH}4pEPMbt zKjqOeh>qp}lUYgRk}Wv~p(-7Y==*ELe-AbYBz&p|Z`gG@BrR-NqrKo?1#wI+t+OKZ4q$21Z+^lGx~s$1YBAhXzi#_jz70D*eYmmnlQ*E@A3 zo71U}d*NRSa6g7pF*68K!2bZLF}zAehp#q>?%ib(_zbuF1Tu47%}KOb;>PZ5!V zkg~kW%bmNm8=W1j`ZefpaA+x|_Y6sL+O?@Sg;F6h`$<-Kz&n{&Yjcgizh4aExK9wk zNX>g_syLVwV5>i4)y4nYYEnyA^wh>HDruwsV;nP2r9ppam1Fe_%0U=ipr|;< z$Q%RDKoD|fNKsFxkM9S1L$#(ql$^aZGb5X6Y3hwXMl34Uq?3xPEY_$t{D7@%^#UcJn_UqBGVq6r^QhQGbU*^oH- zeaz*6AA^oh`E-sTtenF!J5jkX4doAzX%My&-iRjj*)HkL7T5@%CD@N~I1R=J4ZFsA zzJo6i*{HBnY}P#kJgEuloV9n z92RA7g#>+R!B76mNpMa?vt65Ax$PN~hHb#~`FxCJ9q-vX9ZPzCpQU$Rj?&bx6gqyJ zsX%ihLj{PS!v`VpB*B3(=P~1P!tLnOEmSPt{lA1{nUa!ng*emHbm{YeJ4d(dc20)c zRMySqhRnt%b|HN;wPOK){FXwNWCt7B&V9$JWFbv* zGTF8jfvpr<#f!Ily4HyzSkdd#(*#+OZCjOW&bc@wG=N1J za{UFdXXq-u-llr(-24IS^mud4plElWiF$r>Z5Em2Ru))5Vb_c4Z5WPC~!zPI1Zp z{s&BQ2*Xs*^QT|DR`m@`Pdi4DnW6)Hg&S%}<12tj_JBY?K68&9ah!MJ947;l+DL!}1j(?08ixIB zMlu(`0f_(;)h-=@#BnKtUL6GPO@}woduWiT0@}qpwEndAmv`%9OVcmR_oplN&}ub) z+}Jo6MPlVk`QeBpfCh8c?la+TBZZgRr~;9ErQ4e`w?~Gki$1y9l>6^ZxuI)149}<7 zlx>zt)BgYuCxnzZIgRpI1_1H65W^#^Yy|v95_)D}<_z{`HRR1vXAjY$M5Rvc9(wMW zG%myK_!mO%OLwbSl4#N7jbX7PBPk_gAF494F4+pIwtczxW7%+$akz(GGEhM_Voe)e zk0{%dH!Ql|GV2=s%~toQ=hH-e@9H>}-MJZdBL{+b00I5_=~0J56P7B?nx)b`IrKy7 zziwFVIJ8TW=(;weNzx4_wTLHZZU$#}kJU1}EAMQEVYe&?8RO2l@582Qm5D-$Bv#s5 z&7~QuxQII>+pSh8f_4@z<9L3nZpk zdyq&SKUdN!7Su$WG_CgjjYDb@p4nlIOD=y&ZankxpC{*zvcf^k>SFecpd6U|z+vn{3Mr&%or9^?&^v!!)vd~cRh<&ee^dI<(@M_G zF+uuTNhOUCfN~MB^ViTn(>x+kho6W^{NyFJYKnNhV>1+>rDYcb#l6r(uC3e_Da!-J z>Rh8al%(-kg@#OpixxO7ki%?fGQ95R$GIlXId8YR#zfLmSp7HmO&}T?{fnC1(3fI8 zLiyv`j2CYsoac6P{{WPD>D;h*qnw$AKG}pseNlp8tyZ2U5yO6zP8dPzGP*NHz&0|t z*tzkI!_QwY{{T`X_8ef%DWt@t=~fN&>SL(E7nTFXWo*jt6ms8~vN>}M6;)NT2_WPX zw*$xbJ$Vp0K`BV_F`*IG#blaBl4XECV+MIYr;GwX2OCJo$3Ah?$SWa$cC7_}coGD5 zmAAE41&-V@1mkJ~i?{*{5uE&S$?@~kEg4inNgZq9v@nkjYn`nQqpfP1FJw^HHOe}4 zCd9JY)4;bBcvCA(kh7{NZUM>2+u-rn))Mn6hNdp#dn`FoO1pzoPd%#@?%nK-ce^E$ zJqt*=tjw{QnkotR4u}W^m@gr6!;%M(Iw9UHFBKF@L+J(TKTo@dP2COd-PWr#O|`_7 zr1qb|!uP>!~y?&%9S!m`Gs3@OP2^nu`K9b$2bi#REhJ3^9> z?he&&8!(Bbpd{r>0(FU9W3)9N;p^%GN2u0aSGRQtq=lNRv5wU@;#jl64xMlub>^7wg>uiEGY+7%xhY5|GZRY&r(G)nI1~U=Q>$suUwg-c zKZu=9-2VVpHU9v*j8tz@HAr@qAp}aPxE}{^k=LVqHiXIHQW7>V*D-jhhaqmEx%z(5 znaIuhq$V_C*=7gEKl^{LT`>`*$~_DGImI@Yp=w%{o77-}7K+7c4Su>kmRS@sNgFo* z07N5h4pgS~UUIlRA0NO>;v^#sf~8az1duc#t4)8}{bNFQ6;iPO0Ek%uG`Ska+kd9^t!;1|x6;VB;CbURWh= zLup^O@zN6w$zr^6BZ~H29FS1PeL^$j4C9~9d;|ORvMW^&I(z!Uf?67uBxRbMvsNm^ z#B!yS^S6u@KiKseSCK(L>+gS9c6db{C2Ln$E6{3{p<+@Ml(Jyp_&kx5@<)%)MK)<# z%)+N9lrvHchTCbnHmD#g3(HZelvv7SyDFY>&QP|0zk}DL{{T+%ua6+Etd)_}53|N! z6H!JG<+&hvn5p*#oZ0RTp6J4ew}bxx3Bbrae1FTYtCM7d9J{$tyT%Lk?ETMc>9X#~ zhH#)~Bix6dKY%)|i~j(l?-c(4s=fH1 zQv1G5bZNSFl`N1&UF&I4v~jSEZ46Yi9mHcNJmbLYX>xG5aG6*%WlBRZ_wUv!NKDj% zW?Yx_7V>_i$2E@RtE_z})3jNIiyEa3MP8d5B*g`H5}8m%z{|+U!171CoE&wXh?GRZ ziFz{;&F>l*U^_}(qfP!7dm*f966>=o7~n#&6XAwRgZ^$EhyMV(>%HI@aW4+6NBNc? z@fY(`5Bp=yzoO`cdvSUMsaNJ)O#HR;>Ms=%A zhUC}*sW1%mMkgB6X9~Iei9hWIg}=#O5X4t)>ruwKENNd(+qE@IP>~r=1XqKNW()pu9-wx*c6E(_2$5okfP$)Gf*C zSYh}Lz(xN6%7It*>nd#3&HU%UTgpCp;{05ypm8}X2mZngsI}uQP4P(mx09iZU?u+$qzNf5fdd9un zx;>>=wSG{rT&S_1P6gTnBDGcu#BCed_&=!mKg2vbUMmYX0J6YPQ~uz7N34Boz<8p# zjvh}CBQcme-|a7yfx9Sc`dT9Y0E-P7biI4Fo*HpgsU;~=6CT~ND#^Gu6rYD4eEI$Q z^3Q48-Q(%gTX34zg)+}7*mYlljRHLBy|<1fM}nz2v{vce?MkD zYp810q1515@6x)%9;Iin(Par6Sz{}^ap%dv=gv9#m|^7vs)e*5J$8FjqsEz}Ia0kh z)Fhg;GE!?1uyY)&*b9;rDL7&=oD30+^b1ndGOC~#0lvRe4M-`p`%*vEyfVqu(iVBD`qr} zPdQ_i&Q5%j`RZAPSwK=l?^o$|ZwO!ki3Qdq0mDiY(qXg!a)*vs4>`c&`yQ)yLrs0s z4a-Aqd5}h?ShukPF*H7pB>t0;x%v71&jYE70)q<*manhU7!vh{tY3P)g`ysXR)KUpV25VXy%F{0>HX zkurkiw6qeS_Nek|Lvw}0e@D4Y^NJ59x=l6sd z7#hU{)j*f-Y>3y~vc||VG6IpDkT~Z!cdxIcJ3*Bj?%F$v49-wDqr5upR^#*@0SDlMK>T%G zeaDta=VMXM{v%j%c#&ust4Pt;a2-825k-X{j!O?DWPbU_A3XvTu&N(lNOA;RQ$?Y# z_WuCWwAA~K-k2cNWw}NVxD^ViJ8WqJFgze;)vMMlK3X>)^KRJRLY?HCdw;Co6F&IcTSZnGw-QciTK z#5!3+DHVcf_hy`SG}M+!RDZl!!C=6As}Kjr93S7FrkBNKf!_uj@a}9PeLLc7tFoDRnm=uBYzt7*4LM52RXz3Vhw5b3q zm)eqWa}RlLM;kUO;L>Cy|Uddzjdmvp-W!D}Y^lYQwyn(R z^XUlHr?E^zt6J^2CSsx*j6#GM%!)TDbM6@*C5b9lky zmWe3|mX;d`I*hG$B!<)vQYhH}08wmaM1vDO5$nFY^EdcUJ@6K2gw z$$yFg+nUd8_WfN>I@%VeS{n;i>O7LInM;Dw&g`MaL!#k9RSE}yG3>t#VkJ(L1{PjY zfC8=FcOcT6h|ESDj7glUkkqpRNN{xzLmofg_3RzbwUM_6icrJ$A%W-i!T$iKUXC}7 zoT4}W*8U+ov$}gT{hPO`(yw}<7Axx$q-kPpgY?TQDc)6b0^pO7aky{m9#;s#;ieg~ zWrULCw?C&VMVUo`OGaBN{pP7^UClg)FD-|_EPQ02@BW=>!gvyWIpU8p1;c)X1oA&8 zKc6`N0A7v&h+<`ED_E2M+2Pa z&m{FtQgas;9uUB^efJ=}P}TAZC=6E{kC5R0k+}E+KLh)bK7lUB3*wl z*X8519o)M6_C}!=q4ueDq(_9+GMJR$hTpqs%7R!N4B(HDdasSeCkY`_h<0tYq*uXU zm5RiKyExeC5Yqig)Vr@l((mfYr_rwsyCo8pM+&M+DN`%R#h3bO-T}}0b@MmIylH%A z5R5ls2WBZ!Zr*;8(<=xtQwl&v?| zp~8g$>EYDD0`PPijp)^65m=R<06dTf-snM58nZE045MiO04$D@RHP`WDsOwYnI9*I zv;(Ba8|habdNI#rIb?aOMxN4r$7=g`56NNp=RHcfp(?$9~&&xk~Wc+6r4!P03Z#-07>Kz(}T}nT;O~2Ens~}gW^vrNkiO^Kz{M9 zX}?xAF5lE2RntC-_THOtsaLf^wTRe;IUwzS&NKV`b+!0OdCI~|`}b(&yJZB4V%{gF zvCBWkk91d;QHI}ZXr{3UBCg)LHDUn|?%lcf9(~>panY!WW}vX=`$GerIZe+m-|Au~ zO4oJ&0IRwv)if^7sj1w9T!IZkrkzFXpR|$|eb2m{4a)grj2*w{jWsgoW++8z*I(K$ z%EK;ENm-?9&W*l~V$0jVOunCYhO4VbeyiE;3O1&%ZmbfrDM)2#<9POa8FnIPX*kA6 z`RmQTEtAK1QcgPrq4;x30O`}c$nU)=6JT+Y$Px+fUiazt@{6{g^pCc5n-Nb}Nsg6@ z@4hMGmBi?G3@~i&$OD7_0At5y@$7ye6wI7d4Z&u%){S>JF*iPir&?u>%u(HSR%H8x zX&OEV$S3=pA0w=^;wL54gO<+Jey}>jSFh;ZnL;Z%)#TFjvnMtl5II~H*uGiDLjm*g z^Vdnh_(m^|;&RD3K>W&k55B@8ojnqf{o1{QIX)5Rj`r`*q#B2I>N>&EZ1-F!>Jhb8 zv!}~*+CeO^xe=n_Kmm&$JagB&aLxz*o}S8PFqvr-0U#IVOT~0dniok_>+4UIVkf#j zxM+ILl|sIO*d49fi>J=B($sW{2DYgTs~@$V;>gB9y9W%u?Y{>(-BM%( z(y+2>9h!spi&l^It{O>l?{D`_+PbH5)hVx1imY|T>kg;Y4yZjgjz(evDuBLlIbqar zOji%VpsNspo!k}#xVJ&m#xOYCo+FJ~aQJnVOKTFqKa-xm5v6wT(66a|soHghpWQvJ z+d$VCp)6?C z5e_eg&yb|ekhfSrr&hUdn5e7L@n7zK>+OvmSflPM*CG)*dX%+o7FcABA%970N~*z@ zOhtwZ$PT=MbJvbwIDR_~i87@qCRz#ae~>pVdW%MmNplW)sC5>m#8tlLJEi{s8@e?l zt2U$b`?s~<)TE2;NF#S{9BBYQZM#0R-n0(l2yBS zG+!zA=Wcg-hgs0+SB8h&$rW*Thnpt1W94WQmHTO(1r4-NR>h{Jizz z(`AGlp+NIvPkvEk7(G--k|V;bgaFARg#;1)tbRYws=@|D}wg7g?@QM#UKj;2aB@&2rEWW^W-WPbBh5Ovp7D4V4vxNKtA?m01c;-N#JL%K=>O0jh)5iPQijQ7g5tGa7T!6 zH{{Vz9oZZ@`&&1zp0SH}WszC68hUNVy)@F6FJy*xUD-eG)C`lK9)3Fe6i6W;nDb=f zT$yPv?~wPTWIs`A_Xl!z{knDZOESY)8o*rIWd$KV?;6-? z!?a42Sa|fWoMH)9)9JUYSEVHJR4DUVSefI6S+*%+I2mFT7V>!Vdghd+AtgXZStS8x zzV(3LTeYc5klU2Jae@~iPy_k)fyu!A`l^|(SjDNREb$|xX|}bS2}XjMuFlGlMx+ma zoSg6#RZ9|afC(gHtCFQmoV3Z5mr{*7#B!0HZEkxA_b<{O*KH@XG{`GYr%hd;j>v+A zk!n?6O$1_RQGh@Il>^CP*QrSZB4s1;pahD&zU9x1e8KU*5=K9Y%*5qVMG`Ym0Gd#4 zeSsPR)p*Vs7=Llquo^tn%nGrA?p^ybkw+M@ZdE2I1MSEJ0`A}7jAxd|-~d>G)biz- zg@kl`2Y_QfA;o?h3K$BhNAjd@euCxzxpKCI$t{T`zpCBLP{Ra&*0F*KiWu|kjBrj) z1~*8=;B~DoT4g6Opcg*weTEKW>Rc`tgZvf4)By=d4y7N=v(LuBP*7B~CNA2wt4|%x zd(xan!RzU8KdDZ$4-Dkv*N}h2!)pHkg?@UeHxyKonREvGpDj5L7mot?m*c!w8d9+M zXO$;wDP2yVGssdW%Rb`7lIN01&hE40%qT=DU0h)MPmY=df+LvQ&N4sbdS+;Q$C^Ki z?#_ZvG4NchQ$On>?vay)K8Qjnu%Q1wsjW81y};wnxSei=WR z1;<6-{{WJGVuSTJQJcK}i}psgvC7}cr=LN$B%T^YNWwqhZdlhp+piAbauLIL&NB!s zwpw~QaqAxUG?|G+!>IMY-Z9xg`*7QdaK|VHeVcQf{=|Qw>(NaGBC>AL^$U+y+%_PP ztdW(GSw=Y+BOm5E1D0SYR=*<>5Z8~ulgN>rP{ zmL>#$R>~dMi~(06Yof`!@y0XGasGM7&qR=s`G=qL3LI*SV!L{=EZ`C(R#nRu&T>8m z2lgQT-2f-^B(yt1XQ?dp+7UePpbXK=P2*Qg08Vla7o2Aw9CakF%pB?u$iJ)!6k{B% zr`T%sqx-XSWQ{5-4_G%CE4VMf$2iV&_{UN$K$4V(>GpzcW0A=`uRL;Gh+#_uA~&c8 zd0%MxJ~DHR^$t|10tLD;^ViY|q1YJA{{V236C&;cG*Pe|9G$Jg{s|oM(0*R&9{ukO z+QNiv%OPh)$GSo3;F2-UbI<1^@Hz?)e*L^63`Wn}dVQM7Et=JCGE5z1ng?gxcnk;U z;N)}uc1(W&%iwA_UKAGMgxa?F(JOA9RUs z>6IZcqEw(3C|S`0Dn_a|JGz0D1Ro`iI_<=ePGc1gP?rUh?%R_RmVWnDk(gHz4aB8j zu*^44Hg^25z~$+m2g#1Y~$p(3!m}IK@y2XVx9G%GCI;mJ>8A8?yJ@d-iq zM#KjnxbSd#AYe;~dcSa6g@+MYi+Ey;pQw)kv5by?w;d*i3nB|FMM3r9jD5r7{6yp^{{X4~0NbcmSQdhCW86KDdQE$=v|UDd zq_Ou^1kV~*M`n2Pk}<%^8B@oR`RnIyErDjWSJc>^7>~ zpp|!(wF}h`Gm@urqlXF`pC8|nG1h8k%a#fjl>?!67o{1`@vJcfmk?zdG~ks@7pqmH zC1i@6Xr?z-#y4){;O@v>oMSm19K?eyE10rL>*>GF1*=F3eJUTnR<(9n3P`xBP|CRH z1R+)A5HZQY93F;Ribhm{S~wN2kEI`7;h1Y0htnu)!KQbRv8w6TVUFcpB`HH9*sxt; zGfg8#IcUL|S1P0f8=b@tchi3Z;8nx$Mp}pFIk`|Z{B`?4@kFLnxpMUv>T7QZ=An8i zW_r~$``(mn!6p=CSR)|gZs0St^M(pIAQ9K7Az|{9SmahoER>e5Sht_mqcHlN1h8oj zC6uQek0KQ?7I_$Q0o-s1+tMMd}rk2_xJ3N0Z&?tn8 z)u~bzu;~FH63oTWuF_lJWM@Agj=oLe$kV?mx+$(ad`FRrBa{_rS?&k|sj~1NW6Kn7Nn#Xxq~0(F zK0o5{$D@`q_p;P$ew1%07;eS4o+hbtO_tKiqhrO7Ptybd2ygKyA0z|8>LjHj`-xK@ zuhbnI${pjtIz83{n^@jdepB4y&0sK&lGMq!28T{vv_#-xCDX7z!}F-{87bl@;(-uCSztU zk#{+&!=pwtyfneY4AJ>W8#9gdbEJA+ool2jv_@LtLaRdg8;Kt7JP$bMJRZJFn5kl* z*Pkst(l?mFZxxwxpK~GfUm;2Mof)3&&m7`@7CyZc-mkEA=?qxR8dgK8L|hcLvjBABh<4Jk@;X!qD^3NWK_12E0!^k z+mQGmd>{1Z`}GBlAja{#eKY#SKCRoG#h~{EntFlMnzZR2p&zRtmH@^nB6jygQB0}q zWgBH9uA2dgO6Grf)LWm>#!fvGdm?3@zk#^gJqxe>SkeBreI%)%eNcF2)U;?@PLEfX z&8N8xr9r7>S9w_-hE$mW7>+<#2}TWgSwTevvR(9~Rhy495HSP{;5N5lZOyz3ml5Fw zFD1Dk^wwJmxfx(x-VO;E@;LthPPtjC5}X|)Zd!_x6{KE%iQCt7{{X2Syt-$v7X3yq zR7M!4)9rHD_}a(k#(zC>zYs4Dcx?XE{*u+#M&|a52oFOZ+=gnzlFr9=LXZa5#yojA z1OEU{zI7pb4}Osi8WOt9yQ7ssX$DZlkGmMo0VnVP=O5drG68g(Z||HiEof+3S!_w^ zmcy_L$W9x8LC!FE{PbA}NPQup*sj=`(6Q>7B$0_@#z`IyF^`YO&rYTn7K9!F)~xE< z&utA2wOJ@>@iCPW1!Nwh3>RVHhyVajjDFbbx#0f*7I6**C$PabQb{h5Po3j88^fgI zSWhH@pd=2htYxRNblpDe(dvEZ$v7Yt*kNdaU-1wKBb@&Lk^JMX%zse0?Bsp=kPCy4I49!-b+?50zlh>UPBj1| z-Kcz^PYshNy(9B;tX2DC>BU>2Ba3xy+OpMV?nFnbAGUGnv8ONTq zF~1PYN=U;bt9PUFr`j|m34tK4@augL?f59oHD2ud{X#elu+xsHi|${Lsy7^_I45^F z1dooe#VETm;g2msCxf;#pTsUUYnJfq^NlGIdlD1}(n!-{LSSRVIqQ9&Je6v?U151~?d zcBvV`l1Ve{jd{uBk^-nC@oriS)7|m+spaDv{{RnsF~mL~#r_^c1PZBbM2>vgz&uA? znCT?cr5ftm?ZjEw1GjpDK%QbUBCehk5B`+}i#J+94rHie^3v z1Ht1u`pMY~+uy@(l}|&b+i9fg_oA~#RlmDbvl~j!>Uv^k!Vm%6=nmd84gvYQ;nZV} zAzVX-X|>4|Gmt)$l6=<$Z# zA;8EuZiMmj~wC0&@!c(m1rQ`FJ#**9j< z>&TU@>V~}5E7NBxyJV0I2FVyqhCb2cjN!||PoFQgDLDZSrf>n*$|h2RTbxDedY9Qs zi#5s?8*x;!h~ZxzPSb`5IN<(9c9+vKN%nQ zj;pD~L=Z0y2-wFTse<5dbqsa}oY147u2qdzz>sw@&5p~ zMv+z?u$~=JBykB%f{J5eU7doi4oM0@{`_<-31B_*FyzAInm3Cbp`H`z%*h;~SgeQBXUGUYAoIb;?f4%(HdY6hoGj7VD$gJFF*pq0?-`IG z1bD#kF`j?1=>-OAdc)obp`+>srHe3BO7x@{ZAQeA!32XK@iUOSfEmIPPvgkzPEHPd z^yUGR&VYIU05Bwh1T7sOPmr53%d0agmV%;$jYd2frd`K8aItyt*(0d}Fmgl8m{vp4 zG#-CCL*`MmGU1+qc2VGSiRx>yz^|o1IDEVOf6zryNM2{{UeDBb7b=#uWi#s8o*(MDX50f6KHxKqw~(NIb47TL)kR84uRmJv??`;FXqWq4 zP9EL2sEBJC73EZ(X&NOV%AJ8!ux3&T&d@+O85!W^Ag)@LhG0g|SJL`jn|&U@!_DkW z@;k22&u+E$#k4IRKH~ae+v^SeI<>t+SefUcN)uLNE5w^7dlDnEz_5ml9mhGBXvrjX z^hd#%9Bu+c)Z)?tR6!N1k!Kn+X-L4u%}6OqDofIYQtotbtU_7si&ke%Pq?kw)b&#s z-(tK?6mae!m4q^=jxn4Ksu{eN&yP`-#xYE_E4?zOr?wsu9cx1S;HxbfvDQKv(qLv* z9Dn&W;n@5J-T2_=tq$l63_xX-T_T=7&sgQk8G%i;HL5~=kT~4f1IY{R1Y`7$0OOP4 zB_ZLI2p#GVeh>}DhDb(Zk!m9l4&jLi;~%)-`5*kclr0gE_0kK_^ueg>73x*2H3=PL zDNUtxS<1sCo|$xIa2TK&QV%{r=d28EWK2%rk1*d@(!xth@e+cn96w9@-XZC0N4)!M zP1b96{CY97{X2CYIaadC85kAikQq6R*K~6dRP7+LxW~)i5ODc89FrwFLWvD_BVu%I zFU~y+h+(DS<^-U-hiyilx<@I`4Q4RZb%m>qn?e~8oxHOK2P`<_aL?ziOe~}YtY6=k zhe*k24$hk^Fm-8F_l6#c^w*Mj36MeZbCdr7r$|go+uxKZVnupWrrQdOBa^mw+TL=$ z2e|(LkQ^L%<+BAj0MZ+*9}H6zmfOJ5G-SBk#fuU=gN^_s`+tAOOipGZu;5Z5`?Et{ z^X;uqL$uO*x|Lb0MJp{PHg?JJHSQ zZI(AzXxMlmxm511nyk703Y?~jUdHgixgyq)N)IV zhYOs7IOFrvg$Nw5gr?48YycE{K^f=&0AG%i!f2VH0jj_a``ip};{XnE{#^;INE05< z`Wtvd^sl!IQZm>?o;c+Qo75W;@))o_2p`+~_2AzVIpTAY2oII~gjP`R7}6xvAhgk< z%>=QZ_bWPX#z(u{Msf~EoRP=K>yrs0jN8HxB-bEID6vym(H)3b=I5R=IV5Kp03I`p zbY$l_zJ?rHI+}%zHe{X$Fd&%=thO8xx1Mw3Z}<86=;adNgXGYN);xXnSGg_rkJT(` zdX$y*4H9D->Q$Tx7RxHhJ1c-PrQOtg72uCOeLcaapTkO;JEVv6{j{_!Ss0Z$6!+|H z5PF~2pQu{xa@TvqQO(e!_~ zgqjwx+Kua4t%>cSF-h1fkzbX+o2xdp!6;>vyZC(KF(oeKJP||qZ0;Fw%T{ReRZz+m3C?^5z!=Bz0B(vnRd8{%_zR2=^Xq})-w_@smRom6tMWE& z-VBf|BSNL5T&N`yl&r6ZSt3W_w&Ac2103!E{ti6z*CR4?wXp&EwY2H)NNPjkeOcv= zVJgw=$Vj9J%*Qw$4hBEWW1t9;sIN!&^@Q<){cQS0uJ^{Z2CJrMu|aiH)3RRD?VVI% z9FNEz-QErdS)H#LtN#EFUGXc*^J&q-K*&~= zaVPAge}DP)*Z%H=4a=Vn znEu{aV~wPRmvXimGC2T%SDc1XkDjaXKaQnh@N1JUQqr|GTnaw!{*g#wfS8iOglKwK zY1gI_R)UOjL`aH6qLI9L9_0s&1Na&8NA~iG*wxJLf}#!k#DllL7|;eKH0?QSM(q`P zu(9Svg+hUxgWz-X1C_<2dM) zq5uij1_zKyS~%4J{k}drMvBNmcy|y?&`By|aRpZmh|1@1`3>hI=Z>NZ2{!gRL&9gD0Ztllc$M74H!gsr&ET^*z@z^cJ!L`)ld$cP zKm#1HA3jGuI*w-$#H#ZTpV&h%h!3a@qjaOJrE{T@3WoyK-1}$Pkwl6+;Iq}ZV z-yLf3bkE|PLRKA1QAs`O{*hDm>O@AQk}{^|8~QEuGey#L3Ffs$ENhyDV@7M%aWh9F zDOs8<@fh_TkTUW_SN5c8 zR2~GgC>VDu{_Y`xjCfJcLcEw%W;f7p`+Uu}9_hun&kXo00Gt*H01^39tN#F!w^6w! z-bpk4xu$=y@H%O;NxE0{Y*>(olFWc$Je**VI0G0^Z~z@*%v$EFGRv6xhluf9PZq=+ zMlDXGrh||k$<`%h)uyy_JWxt=%OqhOkH%LY^y)BLG8B+Q3Lk#=kCqs$k|2CHpH4yn z{{SQ4^&lok4c(e2Bl*1oK2>a^WBk;frRf6Rl>s#3smljRLFhGV4v0M)~+bxHe1XWjn*L@8^UwViLb z1T%|I>s-=nPaHy5JeP)CGNUo%#=~hOkW`+$&*CqI4-itZI28mD!Ch<@Je-6rt6r`po3Xzxjs%TznZVlcyLY2qU* z&PS*>D-R5M`FD*<;=CIX*2xv|#ukgVCoFlx1K8QK%es_961?8rOP#d+vVn?9FGj+-O=~ZCI$fd^#?h zP{h?kHtq2!U<(WaJ*OT=J$AExE}Xd^hLeX%QbSmmA0hk0Dn!Zd6kgOCF?}nvWYxP} zWQY@}8RV6TFDV6y#!0~*Khzu_!Rv@#EQ9$Ov>yKecp#Q761}hoZ+9IVnwloNqQu_) z7R-2xYz%vyNIuif54DdC?Id+R7Zrz>H8Up33S#D@IQMOvSa3pO)!)6(ruR;x6#8a| zL$#rTFGNSCSBe2MZYO+-p3M0k(cpaXi+pQ{;dq4PoGgHZfZWeA%qgeND@&A6<^BEQ zxec^Tvo0nJ>By!)3S@#a$p?eR56_e1u5h56TH-AN1bz1{LR!9tJw6n(6(@H*fuDo4 z@#6=h04Ne~@02`AcJ`G&bl;9RL?)*2E#BJm#Z?%b$m|GS0VfQ@IKd-5Ucz8zVkQ7{ z0QD_ltN1|X0`YI}T{E%tU2+8NUg6Yr8YxykUQrx!&G#A00VWa^Tm`^WCpo|%b+^SZ zTq6rP2Msu=02~UJ>usz{7l?sUlvq+AAilqQ6@4#EkMHD?I`K(0bAEY?94aR9uoh$f z7?*A<95>>c z0mxhp*udoA>W_m6mzh)DLqv!2cCWj}h8KZKROCv;%`$?&Qj*9AOw3e3CXc3}oWwqh zcj=X_Dz9(NXIIQ_*JqN&dQ_*9!eS#4Gd2?n*x0ScG2}N^q;NhQQ;^JAPNTY-^|p9bo|SWRfNT5B$4H&mD0Xf9lMsGmM;kuv=8UIjEAP^$Bw99pjBh z!79Wjw3f1z==FVo6h0?P#$ViBsjTQxJlFJz<)#k7YM?U5kBse70XX@_IsA3%oIB!< z8^xuGn0c4b(2u1#9rlh}AMoBk0-}YZFx@rrYmX7*1ARHx4wK!~b;|Lz=ya(C>1)Ef z6_Gh*Vo4Za2t4@D2gg%maWYdObII<2ON!73q+{XGxif(Rqfbu{bcz;_PPUsYOB+fH zst-zO%-)(IEU~LN4AI6}wga34kL~hr5#kg0g39KTlu&f&>ZmljpLW2rL|}zO9Or1|v5+=^Pv^!uY~ZLdZl~Y9VS-F| z`F#3?Xi`V8%vIt7MGCGkPTwRSCxMU8QfDBB`ual3^@WO;$XijFCfvy*k&Fh)e))rXtPuHKNS9=4zEy}S^CXcAiC5l$c5DxNLqhrVpj9Gm9mkc;3 z9_{e&7nQ`Y$pH7z08rL}fgFwb7X~H)gjFf_Ua_auf$V9sKyBBK+#*QXOt4A2(~t~! zY!Wl%VEDo7qZpZMBqczxBI4rX!X!dTtV>z#X;N18UPX;Us)U4+fB60J(FM|(+q*l37emF73D^XOrL@fDU8RuUA%kOrL~ zjCdnlHZ@H{P_|NY_f{mc?vI~ymKngtaKn!tdiq-qluANS8h{TV&>2c$y0OhdB#=jv zRkDrUCP1CmUDXZ*<> zaeo%gOs*F&8>oQ(E`0zWI*gVAfW?<|u`6yQ3={bP z4;kykyCqKU%Sj}AwLgo*qEyy$lHESAZQU1J(ftYaN_X_=XK4jz)al7tC1HTvvMXQ~ z2cL{`M^R3~&5%N8%PBnR_Xd}NRJDK>Y+kaXPopwV1%V0lHR`bimw2)i5kEjl(7dnakH5`<*iefN(2@52JGQRIKasB;BIhE0HNcA!^oM#2I zoDVJmI=WBd_Wlte%sp8Q4Op zCnJzK=g0jzS({73FvU{VS))r4h@-;@S`DtRoHp-wAmH!_`SH~2RzMthzwH9=cyTE_ z^(TT`Yh*-Es2J=}cMZAP+0H&V{{Wvu+A#`9XZNUM1o}hN>p*2w1V3<3vuJj}K6p7F zllu(g&p=eOLr;GC!s!b!Ix&lE8-!}gpzhvC&I2D9=lA0$9Yo;wt9Vs`EKOoJtn+P# zCdTO-XdM1Q@(<^M`}HzXgP01RAAep@&R~|AB81HRvVz{EQQ-LfSOcH^bNT8vDpNr` z4N?e=NnI94jy5NIl2OKP67)|5viv4DiT4hBAW z2S4-a`zee~gfoa@!w2`cb_s{x?Yn@gNX9&J2>JI9@6!j<+4tcI%=!92Fu& zMl7tEW*}hXjNy3CAD_=o5)Cva1>h*&No*lB=Ycko$uUx?{)f-{@Oqell%DWC9tFuU zll?)S-+6sa?cUL^7&Wxenzf}F0p@ZARddIJ%GexX$@tG+`~5HAsGo>9>4C*>{wcry zN@2_hqm9R>hG8f135UBWCBNi;)NWw!8^lsYqEe??tY*Z&?y5kowWZj+v2XCN_?^!K zcgY|hsZfKIh2BS-RPglLsYPw{SNkntjjhA4_8~m>+{UDp4r9z{^(5 zwInc6@L)6m63h%;v~4a88j!7DdwYzMO)<=q$bVFlAC^Dz@Hic0Oqi*PDp{|;bdQy> z*xCF-da)RVI*+Fz%jRlp1zOY~(%=>?Sc;q;Jz3-khxP=Xf3WAKNG5_Q%8cda|4{)^?8b1MmkQ##K^;wC=Lrl`++q zRn!3xeVrV62^^QC1N^oi{{TlFSQth%FX{LCN1e-`1=6W^REpvi<9`fX)=~OK1ooWzyAQ32LtDZfb)-!9YTIA!4J@{H2uUQG?P&N zKX@(=;zzRYIyR}6{oo~M=ZPYszur6;OM9$=V?ZXXRaJlSbb8>J`d z7M(Y`exCh8dc#ZpYc8=~HZ@aEuWl=~17H@6l3_$7e~kKP!vZ?b<9NS@arjd!iY{8^ znlS{czyKBx{6|>1!ag1t$;BKm3<8wSQZf!jNAitt;3DJn`?B?p<&qs9)o|;+G!%M}?(_fxNh4Cx>mJ7b6T4Hg^oefwlxwfda8{s^%n`F-Y#1r)mf(Ao z57>F@lbta#RA!J^umDuPfENx)r5J8lJaF^yxC!%wo*OMqy33QfAWZ9hgt7>c%=RyZStbDRQz5`Qi8@yA_G3l3x+)^B-ytesdJsP3~;%o!jE(ncCw zq;^upH9DUQ0kHF|W&OweJ?WbEt#49`UDPz`r;((ZDByw7w*$KchCyumkGq_lbJkjT zRH2yXCjPY*2TNPQnj^+=`8c_~p&4DBkC|pQH@tU8{uw(c){;B-yN2AZ<=RBITyD>h zN1@O8{ysX_m4V@Fs?xXQq3KWOXs0uT%0(rBf909|2p)zj-Rt}?b{>_d-L($2-Y+6l zl5e%I_Hww1HkM)Sj20e1&pSx@>PeVh5hQ>L!K$nkK+mY&CcykYoLs>yDldbg};c+FmBK&*A?7w|l**RkQVHQMlEZ z%LI3H5d>%lBM4X`Ch;bJ{{UvNkx%(Ho;JL5xUYrr*icrfPB|$m z`F*3hukcOW!K4~Tb7&g9cLldxscNIM5^zaVD(45!?sx;HPY=Q30agTBo0}R zUMcZk9TLj;W*oT%l%ZqDRElfNR-ggB!|`NY_Um8bIg2m6mPfW}@%1ei0L&t{xrhNyc z+r7VcThnBC9=pdI*0K^wFpi#b`xo10Odd^!O;BYXe9pJjahh^Y7XtzG1Q53fhk+0 z{{V>r_j`lTmIFwT?q97PhxIRQoo>Z_JGztzms+={xUYIJ2=p}&q@H*QVMDtA0E}a+ z%2Fnb%A&X5{$F~X;*^Xe{uxXeCQtZgst@@}BnB6B5)-OU^({Z@UX|D}rM(YFl9K95 z7iIZU3g|~0*VB>YnE@@fO{l@3ItWe2_RRux0J_HP}t;AZif8#EF zA4;=F`E**6Xf=}|3e`;>_?+X*eokXlCI0zP@c;v7O& zE?JVbQ9#q*)-)t=+yW#jUL5z8s);9%t-2=lk5^Erk6tyYgB0LQWyS*r0f!%q9tU46 zVhNVM$eVuN_xVShEcR+S?i@El$Jh3YCYPs42#!eVG{HaJKFqj3klsi6c*rN@hrh5QYNNkv?wy3sQ{L$l0yy4HEVdonSzywS9m2yP5pfuGtF!GThOme z(rH@U+H}X-65MHM0yDsWWAIPp^z%4Wq8Sr1@;2wUqD){-;c`@S1d#shU*{D0{{V$< z?~hW9RI#L6jh7#DCGSEtCxh*H%MAIz-PKR@d_t9zGFx|VHzM658gC9#KPi6$@(=Tg z3I70wYkCavN3QplnH19xQW!M4b}mgObC4S`DvWWH;Ai{wZg&L3;j*U@h#8b95R#|# zZl^FB#oQMLpNj=aNy;uuCA{4DF@kiTr9V$A$dT&Z!Q7S#{<$HF7%NP91RqUgkg4Eq z3_J{edao$(1gj*~smJPW>+)>HpH^b@Bvv{k{3D70Ehz_d<}TddC4 zE}5X{x}{i9scX8W`GSv~%F+R!*o@=j9(1Ow3<;ful_g2JIhRhaW6JulYU$zr8^eMV zh(gk@_@ciz>uzys><+}zHORjD&(r?dZ8B8?A45uwo`3jEYT=71CzoxZK+afk)`tv4 z$-vLV;nESK16x%fl1MtJfD#60A>zLk;oLI^{fR}EF6_hpMIbR6BsnIG3|Mu4q8+oY z>Egbl^w+Z`4(3;mO&+b(-Ok*G0B{aCU(Oq<)6Obfz^pW(DAuV~Z<56~0X6>sD8drB zc4EY+XyY%9kE!Y-JhSwd=$@&s%}2fdjA-#{(W=C^DAQ+#R8;{spk-tLU;)Sj5J{`CP*8i^y~{$K!HSY5;Z_Pxg}z`h^oeOdgrDKtRQJ{FF3l=@ zdbZ|`&+ng5em*nE^VQj$cMwnh(qxc7{iMl>J!(Mm&0S)T;1)mXAy3I5{JyOb*8c#5 zZ=i%_yC1Y!M*#l-Ik$j6Y){uei1?R|N+c$B5B~r)fBD48;pkP-Gyeb|+9EA~3LnGu zGw$rJ*bU?q*6w7V*nPk`>lSatKNBRJio+;!U*2Gef72xkg^r>w9g+MseKpZ*y6OFk zH7z-dI@YgiRFxf$Ga@Id$fWU?z$YI#>O3zIer1nS22}nSyDX3Y0MRts;EW%;)h$>*=o4 zmH_befe6B<^Adaq)WH@%g?_`Dm540%hLb!J#>pjUmSQAU7%F$ojzJ@l@_M=d0H*lF zzwaK*DK!FG3%-o0vsfPj-0cPxhIRn>pP&&#wfq%*EUJA9{{Ta~X8MtnGZ>XqAK@4% z#Qy+)_3Na=OyhD>mTZMhP`bNGZQub%kpM=twD9$zmpd;kh0ixRy*#3)ss8{3orfb9 zPvQGSt}<}ZYW4zwpZ@?i6yvHmjCaH+1fz#|_PL4hN}e?a6M@YkOU4p*$(PiI^o;rb zhIVh$p5eW3O8P5#Y^+{_i1bZW;f-=P{{UWT-WdVFAZ)N zB&oBE`-+?#dqBw;I9z(=tdS@sNfa!x$*86*H7Pz3m;R=?>+BQ?LC~=e&$~|oBQEdn zsvXVsHfWn!vMw|ZUaBN(S_qVbl^|sMu)MJ(;CywNjK|EzkgP$qwQbtZ%-)wV%wjQ9 zCwD~!+ueP4-YRXU{k?*PPVpL*1Z4aj#ODNHap&WoJ!fZhx%c*p6%>a;$f1B~1G<5Y zxFihZkbZDakBolZMh>t~NO>)+L0w&$r3FZ=%G*a6$T<1_6!845b^E zAoJ(W4o4%7I)tRSXedXmSiDUc*b*hlR;AJf$QCNKF2z zD)}JtGyY%S=bz6=ep(u|G&8E)XRjR9Buh}X*wx7|v?&7tSDXRh=Y!w@(aTGzrno-$ z_Rydt*DF%9MjMhsnxjdPg*a^F$B&c3pFCtAj;HJtq^WX&$~tm*7Z7bb)Pl`&vwE>h z9>XDBrd1~(F$czQe_}Y#P$@G~do@#+zh)kng8u-Sr6IY@K>$Snuw`;`N3+IB=f}V! zs06hr_itYh9#BBEe6qEcB0HsJQVVava@hSKc=-+a0pj;#7ttV2|+U&mZ*YLchpD zkE_#~D1AamY!~$k+x`08h_73X}?%d;Q_s5|KP5*vbH1sy(3ZBk}q8zKcJ&A}3fAYl zg{1^7Jkn(Cjv%{_`GKBCl1KLHc~X^$T2U&hQ2-4|C7@p|OlChqs>^I&?>$C2Ce*dd z4{|7ThQoT1R*gyUb}gqTz*Sc8I{U-n4h)VP!x1h}{L~-uMIXgPo%D}C_|{e{h)TkI zKZ6f4Y0k5tNUNym1qq&~pw5|Q21bwUeF>O4+2 z1;fTk%K=~FDz7a(Nb!$R!(s3oDp8k!l$4}@h+*QZp9hTRxIc+L=+z~Y`DH2^EN78E z4a-0O02G5@KiN9s@gElk%Y~NT@^k2t2dRw!sfsS(4_`AG?yKH?$=%YeU0Yw(HF+h@ zDK&>>AFzoqKmK01{6`()Se0d$FsG7xzx^N>r!suGAgXfd%+PfvgWVwgFX;aOb=U=~ z_T`!c$Lf#1+fRCD8-S3hJo&&l`Nl_3$l-iTh)iOV=T%eG)--+@!jFq4O-Bfrg_%v6 zlo&mop88R=i(ZTL6H(RTkz2Sln%CAa&qL9$&l}_P$aa9gjldQB5)OLbk?@WoY0W-h z9UT3=Bh>J})9I6ByvgYc7ZsuN57nZT-d|4jzRI8f0LMCPwIFkZy$~;2WB&k>QOEfl zH|^Isj^MbA0L?f!+*Ek%c^_EgIF|s$@N(F+u+aXWKcN7{f74*4aIy^G`?5#lJ#)bX z+AzYBfl?o+i?`Dsr1m@h)7Y9xG~Eib1+{#{%y;m8IERLObCc~+%X|Zg#5jU*iO81B zeIwC+7WhhUAD!B+l7;He$UmuK+5%}Fq0l>LPwibXG|ewhO**(6o-(DHbKpqwU>O_# z05Jy}fKUemhM6^UR97&U=O0jT{u_khazvaO0#Y{K<=m3}OVPyP0Zu+j}XQ|`+V z@0wR?6xsROibt&D;BI^;AO39qPIx{ki8Cgt2{cVSP5l^oymh{+=1K2wB(QS{{Z8yDRZRa#%wym{{Z4aZ!1QC1wWWa+EtTb zY&!)D8*SV^ap$MQPVGX?7*d?CPF~s+^aK=vtXK5SLJR%JtX;7*aaFEirx}sd2FB-c zhT!r>dd?f`Ae0ClO|XtO3b3b@&ewG=DXTFG;dp}6B~6Z zT%HI_YzSmYSRp4k{X2T$ao^jXu!G%l$9`d>(@rlFHd1EfIfw*~WC!(vsOwSFDd}l7 zq?5-1-#_031J*j^75-(G@DYtYTtaZ~IPi@xw%fkbZ1L2Ww(HG|*tK74xF7IDsv94S zu=Cb@%u;wy{WXwRUg;tK0PZhtLOA)$ku;Png|?3W09e;_jYClybSrY!p?i=20BN{? z-XER^ALKlB$MHOG6vUuR#7$Y2t2&lbN){y7oM0|gkh75~9Do%1#H}dp>QXYn`cP%$ zV}(!dddt9Ysr*GsOp!!~Q8Y?Mc-_H z{{V$hak)X{vA{VP&t9XzIDE_^%=xMBvjE}7@3G}mdqtUl5@C2+%)mQIf`9_Rbw6mz zbnO#P(k3?{k;Ji~CP|_Xmd86!;CR3Q>Kt+sUB9SjBF1T z#_;v$!p$k=r-+KR&!z37++JOl1KYUF|&O+RMN9n7M)w-Ne8CH^O28$d~G@9 ze|&YtaZ*7OWh=x$Vt8zXx8;H|PNLKG3Gk{zW~3@F?&@sA^~ zH^*Tm;uPz=a2UP~hnX=`DjdBF^`U>9SeNP+qCu%>Y{Wy@e6@`40d zJTne~QhZO|IZNvD>2BbP?n&BODU3~@^&>y!)}IVi?jA{&6S{NpPTh2hGg z@hM5zl%JbJ);_w~^h9(fTFk)z09I)lMsJ=lyH6iD{{SrY(2g;UN(v>=?rMB&9Bxxx zYgo%tcnp>Q0Pb-qS0K&jQ{-YMZ>=}h31Pk5H72e`=_=czl19VNAjEUyu3^@VvDJOIs*vlCXRj#ATnYJ-=eXhWBddcLZk)@WC#g@6HAq89)P% z_cc4{{RvbPM$G~GvbUKlBD7B6Zt+xkN#o&%n3Jr_7SxeiF;R3 zNdW>nf6p3vu0hER8ZT3B2Ou%?&mCD4IAYc&Ck&+JF2!RjbM8Npil^gA$ptyd2V98? z>KS=o!UpbtuN~#w_TFk;#dkoXu@W68K#CeLMprwxOsdl{Cjh8q9?|E(zcb=2VNO&8 z%iAbs9EC5bF8u%z%+BK&OpPK#tNf-M<@$bKN^^oV&*ERb^uYvC_jS8*DlfLoFi*L* zjEu;Iyywdk$55U%#HF%C%)oAteBIxyU<_(X%9Siv!{kI#b>HKa^~?INZ}&EvM_4*- znJY!Ay+5n+K}i$>S0^K_oM#Khacm+c%#$qV0D=L`o4BD*S2=}fHIBcA zV(^J&6`6avbe}?bY1RR$^-sGsD@`Vuq*RkgBPpp(T3bl0061r*EUHE^;1Ap{T+03% zz{o)D-Oo1i3IP2hy^_2X#JHO0ksnxIjr>bo(EE;Roy$s<{WK_1Hilg!jj^1lu*1|C z$S6WEE63o}#r!3Om>&$HgU`G@EPP1bEl=S80E?0i8e=PC?vd+0((XM;G}=~lSl+0! z2$dY^Nga}{;IZ1o=kgeX@JQn-ENRi$oKjnoV_Ij0g-ZP4R(-k#OR?McaD>s8)DKZ6s5eZ}J)S6p_ zx88LX7=#t&)M8M718i&?pTP6gxft#)k(D!4P&9Io-}aQ2=z7FUnJ6Cd58(oz;ufH@ z6>56bIqy7+3~=f7?AV@GVii#URwR>v0601E)|9+&7MirCLO@v{2F&M>B}9&Zw<2N_ zh>|E(@5(bzss8}}5PsYGeXC8|mvvozbr{eajiG6g%J7q)=?0oWt0o3Z57UqU&m+9x z*giRo8Rtyw(&SR^C|fg-f7}@82C;Vuh`@zsnlm+qo-L;>Vu;`V7OfVF?4#P9|4K`_E&;J12`o!3bW&uUz$^icW$NvD|`a(OO{{X`C zulClde@b7bx^c5kSs{P9*JY5SuNzL<<0Kvl&OaS#VHGxPp)uSVj-N9bQ&)r}Wq(g% zBmSHJ0Qg6Buc)2Ft0k|ey`4%%h)B~$)=aXyHq_nExOpF*N9U{#G9+MS3Bp2DN#;44 zjbK02=E?y%)ZKq*(XD-WtMvy*eLi^a=#4TcmVGl>vtpwuIB4aDQdlTlmQ`ZBVCTnP zUBoddohXTEQWQf`WkIzBDb2MC715~|k&cmz9h~(PzMu>9W<6=+8Sb?uEf(@bZ0VZf zh@>%Grz`Dv*!vm5+q8k;epfjlbAYKLRT9b-7BxK!9+Vn9U{6YAETt+6<{%h?PZ?O7(Ce}A+mh}OQ)SaT2b$X&kW3(j+p4}*^f8NmIzpR)=b?|$~Q3$>v!!kKh>_9m86 z2%DKVdrm`tu1ETO^&wYwga+{PhG7Fuqb8$bH8z=CG2~0L4f=3b$B)NECz(ksnsn0l zh6$`1DvF`ESZAGoPW3q8kH^XUkK3p-l^Q0V{!mRFxU8_tG%&4;L@pcxfDNZ`0Qn!M z&Rg4`C!#`it&Xv(@5U-1GwuN*hQ#~ykjpoI{?{h_Z| z8E73&8BoYsG6;&n07wtCl^OAXG6C_;fk6}8g*dtBBXmsjxEO- z9^JV7?gdH69P&p-xvQ9a-hW>z!WM?6)8n&i*NZ{3EPyCC4$bVj!sWBU2ikubl|_KSB4LA zfN%&a=Q$n+7|whikGN7))qVZj_Jje1So@}#0-dT2<6Sr!vHvkR}bNSCZzw6_u*zZq%+7vNc zQ1xD5(aRV+gFBotCn0gpNdR&@bMw(EUQij2y8Gn{9g1l_+$<%;E_S$L4nY|NF!>lf zf(YdB4<%H){Jj|a(iP({`r~5ep`_@&pQp|vzui{Wrq>&q8puOSA;7>~;C|pRCyu={ z;2sbDt;GRI{H#1xuYz4i(k8>o6K5qVJ<(Ej1K*etW9@(C+8&VF)Xp^hI_!q7mkCnN zwPTGSf+(W^w30fYa;OO;ug5)o^CJ$42@<7>AOYYtC*RT>%R(lv7NoM~H&6%VKDv^)b%SZdfacM-I)w)3T>Lrcu6H;UKt`|!H|ILSmW9hbsWikp&5+@w63K6ElNK8 zR}lDL{c{*6@oA4KKbBfa1FF?`NiQ{wh9vv#Uj6I<1XZJstbG3XbAkQ(c|Qu_5I?-NDDQ86 zFh>n7Nda!Je7^BvKR|m=?OkipwAKMuNi1KL(SZK|3n(k?ZwCh;9FG|4@BW_Qpf_jg zufNhOV(^B1h02n$g%Lw`Jqv^6evrH0RrEikvO%KhosV-&yyyw7P)7p4=WNTp=O6jG z&sZ4g_q+$$ojhxtbFf3;Ep%Mu?qZtBQXY#nP-s+qEh^+v@;L!2iyJK z7xLS5t>~JJlO%9hwIVciC1Md~X%wqQR1(K3H)Cnwo`;9=tR606M71$GxFEicDd!ts z4*V;}z8>RPY+nz>i9`_UOQhv@DJd=#4YHC)D7NeReATsMrCrjWxTB6UVkzs;j%lKZ zxJ|Q08Fn!sfMX;!(n78eUC^2kkY*lFYL5NfppKlG@yQ z2;_aULU~Dk)xT_frK*nTPCwza<#^zD@!<6W=g63Xm9ZSh+AHEet6$TpNI(1JuaHE= z`ekVPe#O&+<$Etef-g*$xpPjY=?)0z(uaGo=Re_IIXK|*d}kAe;rLZgk%H}2uuTUw zQSyyg6VmY)1pcM`0r3_${XY)0N>Q?=p)!(mWT|w`uu%l)=8^Sk@KdasCvMx5O@gdP z?rcEO%&>16#AGPM@)BJ5*tu+ef!B=uJMiWs;w)*z;z3NHT}86FzEp;%{{U!VtbG(~18!%Cadq&SN>U`LVxTi^ zs}P}m0UF*tk=`F!`!D!^?9B^G(^@@VHGo4_D%PW9jy3-P^44Ws`fAKiziG=8-~va? zI35R%;)t0)4J@rP!>Elb`lw5nC6eUUtR6gzhw%Jo#d!I+iOb66)TVF=ut=ts4?sL4 z9_}CFlYcp zW-Gj@X_!S_nA2L-{{Ze0&f`7-orXzY48)#_qyGThDdvzPWYDDTUghnFyP@Bb_L^0d ze%{NeMqeqnhgJlEwYeGb&s?r26*C8fRD{h~DHIvl(WuRs)U`=XTs`B?F$aiYab1=v z0V@Yok2kR##?g@X&tSboSVG4ng}(CE_(R)?T>k*N4duOyoDrUQ$vo!Zh9Yddn1qK6 zr7-V;UWa-Bq7Acd@!fFlB)Prp%s(j6CADh`mUzVUS>jj{R<~9;Ej!wEd4>k|J69i& zfdTP@pPcmgfJEQzg2`Yhx2EyYqluzh=TP_ZjSK1j0Cm;u{bBFTXGoGm9@P7Yn!`lF zf!>%t)4&2LClA4SfXP0LL)IwHOoB3{$mT&Kp}2~7)NkTQ=#a@@ zP_+VB_OR1yI!7*8fV;+Wqurlz$r&L|IS%dHx~v~lAHaRbR9j57n^;~e$S;CN(?9G60CVoN_x zoP%?W3|A4Ii0+cZVL|)&#a1fmI5MP?EJaBQtQ2Dz#(oGG{Q3R*)KZFjq*vJTjI6}R z*6OWxo7Rn_+sOmk0M32c91Q$>=w5FGoIs<0XO{mB{_99-NEB^a4hT1)=Nkq-S~lt~fd4(HMB_J48S({G68 zwFIF=u`U(VfK}A_+R8(I*~iCUOkiH-?KO=`6B!NdyDF*?$AI2{eu(hQEWlAVQb<4TA86%I5cdZjH_ zR1?^(W;kb&VO5sY42RP)k&W$?Y_Z06f_ce4aq-S87l6Z~2`B{0nC?ITl9C7oyzKFm ziH8$2G{q7|^%0^&Qh8-qwurqY3VmWD%I(Nrc=3UO`(rul#OO`xYwY}C zIc6-ek6|yCJ90oc3xEfbd~x&eXh>V7H}}u?gjB1%4$ntifVZbHSligL0)&tUy9b6I zF_Fi|QUNy(rg2{%2o)UEFzszRjcWU$4$Bx^L&G|gf#i?XoDV)T^Nyoj*{fH3U3C6F zuz&&#%GZRx;PGucz=Sa>zB7@5pKttu&pkv5Cok9EKUg?sx&?#Pouox&3tTWIqb5)B zD&uepe3Op=l1Ek@ET9;lr{x+bQi1_av7Jw< zK~CFG5AQwN|B)7{fSCBt9i1Apt*tv#mdv&>!hs|FmgK5>kEgVfV7Ntl9ykjIdUg<&Phk7!qtwe30Q zr!63LAT3uYpVMex`jMjWJ;TFo;{}wSybB*KI7#y)k@-t_a@&+b zVy9XdG`jRwyk$G4 zcvIU$g|?A+`gJ5dhgR$>rwJ@iXie)fZY382BzzH&8!dt4k_o}<7l`79F<^x_1HsMW z0!oXR)Vq7XBh)TW6^bt{YZpCrmT1Dv6}N?5%fO5mIZ=?sRDXnZ$zuXhElEffF8b3> zPW~`}Q@M-HeMKrgAnIk)Vlz4=H~Vegq1<+mr0qY`AP{f>1J7Kq;yXpkx5$NtCsx&nlo)*Kjh?FEiD^vP`DP@rN?Ke7G3F~^RDAcZ(E z&m1@7hDSy|p>}Z5oyR;d$G4CMaxssOJvd2G&O|%3Gd7=Ab0egW8%C+VS>+*=9I+|} zF_Jz!=lAMFOjrOGZa{SR(j2wmS~VbwX;dV$2@4(5ZZ3rX0EI`D@D9>WGI8grCajS{ zDYH~=clPii3b3Y9V{{}ER!pla5^xADoR1&Bj-W|y^ZdS0@$yOPM7zOMEOWg93C>18 zZ`&UO@H$3>feIS24LYuuEXu^TVOvrL=Wzg_0FlqNbB=O90}=xw=3uuBYZKX7^!q^#vh>+OUhW13_YWhylFR*}f|#hymogM-I8 z&-orYOYKxzXTKPFM`WD9k^-?aNMsc-o-m5G?|n}C zo7`Hp4^3%Ojy(dc>47!lfVSH%m?53tbE<{Mwo+KG0qgA#=~n_)2MQ;YcgT0xs6UuU z0k9M^n{wF2k()=CO6Y;z8&onL@RhhJW1GiAWKkP@~g` zDu4#!ah|>IeCb$OCS>IVp*!2^Nj@edTGKANpEL3e(S%{0_w}b*?>hD>z~{I7e4UL7 zOcqJk;7us_KmKiSzx`c#j}`c)Vw7dzd!to;s_GBv@N>D+DE5k-`KUJce{_o%(y!r* zxIUzI-lM9)+j`yFh6&@-Drx#`th3nJlzCl|V_3KC8$)IJ@S`V^z;R9pg&Dk08h}F# zpp_{2ASj<28o7%}kWu}>hc4h7Z(q04Jt^DYLcXDQE|)`8r`Y6f z0kx+D00;qb@HihGdj9~bp9;wt6^JeXe6rL-@}PeR)0~AaVJHNHtu4*V!h3`1k9PKT zX0xpJzOANIh-K|bSV;tb9_b=3sy}wX>uUk=@55YCK@u^k1y&1rXQQkHzbxG%iitt* z0wNL;2qj98M({J9Jn(#eIUIG}7uE`}WqXsNeS01z)%5%GY7oolO=H!DXWD=yDIhY3 zjG_&JT|whK?mc?O3SKT`po~IDP^EUe)7NudW6L<-^t0m+ig7>cSR|%owInuaiAsY| zhBkJ4^3pD&x+4rg(KY8I{{YSDq4DGJ{B?ZcrgHO+Nq^BVj?!4*)BgbdP=2uVy4=na z(XBNWI3inqn2|qqiCOaB{_|)bA^dbw@T*@>AAVku=wAwd{62AvW+5|vBU)t07eW=D zV!1dOP!6P$b`T76#S!$@MqIPV?K2q~XLGsTnB==L&gSDkumE+ei6UB92>auQ@a#Ve z!pp&6<%CL>0#cEn9=!E|b&lrKyK&YnPg9|#J(UWP>N2ceux>d{-0D)?VT6-Y*OxdBkl>H zksyx%hf2{YFr4im@4@mHBXIFQjrdOvlm;`g?3AL+k_K~k$_Wp;sm;qoM;pd7CSC?w zWuNydpjN%r7uks}C__A2^e*KZc9*9;o1Uhnb|~exl0)qifrljYTj@&T<<5vOcmVh72Q%$tJeLn5YSL%+m)iidR)p&}n%}U(M1qy?o z)~Zyy{D_8Kh~$ix89YOY$iXD4Vyf0E34fFOXS8yhYvK$i29!W!Ge85E=1Z{j7NsNE zovW#6A5J?`9S1=F0P&Ej37Mll`DG_BEb@VcW^9rMNEiTM4!oG+r|}Y_EiMhnaYxlb zh!18i)~!!~&y|Vd__bp3C5pUXS-QmUHs~VKid&L-$y;gQ98*c;wg#f-WoSfkN0zk)2+*n}1?*9JpM3@q$ ztn!VAPmoUG%#&^m7?JH!oO_h`KaxQF^&*mlrr`VWroT84Oc5){(aQ58He1!s04z_* zIQI=Hai3d>&2kY(7i0~Ctl9izu zciZkMdYiz;OZCUF=y&I1>bL&dvTM3+b+=aNL+ThK++=`YfB_x@ZrVr2bJtz)zZRQ; z$09kfi6SlX$GKBWC^+`<6O=;crNlS)$cwGOB^@GD1Yk z21w3OO27V>9dRER$W9}J%vrh$R1Vc+=zSspGR{dH$Di@*9+`9>Xv<=}mW-3e1H~&w z?GP*+1ptCi4Y=fupmW#HNK~OlVk-XtNYbn|LfrQx7~dFawyRGErV5458-@guQ=DM< z<2*8@Au8^X=JkKr{Nd{bLuTFfpCMkvj${%vh$JuMqZe_Jw6{Ooo(LnA1b4mtzHlx{ zfyJ$ru(SKwKc?)wCUfC_OMLu}I*6s!QBR-o4h$)*Ag=8r8!(VUB8C8*j43!cC-MIP zKA0rt4MXqc1QkeJ)5TpQf))0_>=ZBsGvH-O!5KUcA2{*SMq+cDpML)Um`Wjf?0(yd3RS}Wm|c+tjdv@wY{M8_w$e|6#F9zpKQnw$ggAaL zh)!ePAw!~oAb3RbCTEri_Qj%Xtjg@kwj|hhEUEf|#uT?6MnCV*DhL!YJT5ITNYO~} zqB3P!WKymMamV~X5Jwo~^edQ93SZyS2nbyCWSS&)tfE@;H}wcR(;x=_0ONt3SX}kap|9~;9oHfz|D85Srjx`KtIwIYU0I-CQvx{N3z$T=hA z^(tm0cS*b0a`N(H0LBchW=i!XcH3>r?GwrkfQ0Zc82fq7Fmk_+qR#7LE*Y&)+6+h1 zG%{Hbt=5>hW??L3Au2JugTMs&KatNpMx5a;Qo@$`b%hKY(8+n>`tPTM1IlNi!_X5Q$-pQMSa2prY{E zz+eDCFmaBhGbS#%oQ?kgaqHs@(e|PhqKGUqrIaBi5`tmNF)qPIF_E_*k;p%ufy4K| zcNWqWsRGHV(R*;ztzKo6Gd!~-rK2QxC^nC17zZajany>J{h+;hx3TNt4XZ&7K9#0Y zlVZ4(TyHEL$MsbXiiUCPUr}OoJXO7&8dQ-YhErTs` z!w5M?VUVwkU~}?!W6n-`46JgLw{l&pxkr-lN&Qo2Y6P9=&@O3s9($Meli~ z^3m<#cCPb}+zfNaS@7=+M-$>QE_i06FA-f=gZ>;m#E)GtHiY>QSi!@1k1efzicJ zN>$lQAC`k=6n>89pQv}}U+~NI2l%$`X?13>Dd`Y6uXDJsz)g5D=Dk={k5$*^H6d60 zZ@A$6^YKT^V}M^!6U6%k0msc$i5pWjcW(eLl4f5Yd{U*UkkX6>CG zUgv=`{NuWA!!^*^88JkCu=yNC8u=L~&t5M-8O6BN!z~F?%h4$W*GEcR+x&qqV;aFS zWQP=uHb3Go>Adz9A>Nv6GLUlbAXELAu0Q9|FX3N^P&-B7=P>^O_ESInAkm1Fx+LBl z`Z?TMF16dU>DoT8Lsc3*+d6p^Cs{&9lQ*O=2{`oHK74h<;<$DvhtE`uLJAZKU}#9Y zv0~MsBhImLCp5IEvoliEqdxSgi}>1&&$0gizB*)_v@}ejbp|C0L2H>{X4R| z`mLQVyj3XcH5$uRhXG@mCEFoYAEjS>X8>bxe0d|UvOlC;XBCaWPrzaerdCpeuu)Jc z9Dz%LVB`t_1{A~za|#n`db{{iolIm3*aV**IQjYcGMxD7lmcq;r-I@*o*gr_!!Ie< zW7KOED88iV@}%g}Ppw#m`IAhf%U;qI8)OY8#X@M%DGVtbGf> zxZ3!(6f8(rXed}w??o02b|t{`f#>>zdR@y)NvTOomJ(jD_8f!%0Fph5KYw{2w^Ed1 zW-|burTquqI*}(CGen>^sCJi1jtQRn^HGH06$x9G@T40f-qRmOgry z@QPpkNrd!a_dc;W;n}M?YL&<`N2P!HL~OmAq|nsd$$d}aDNg108uyx!}y=T;^%k4Ww3CA z{wHsMm9DG%S!KeEP zD^aPd4vt^z8%Jq>4Vp%WcI}Sk)o*tbCTDn}h|r?jxy+IwXEFW;=*N&j9ChSV{w~B$ zmcGVO008CORMNtar7x(wW@ElG;uxg%QW{t^-A&_9M~xdspnHy$STx-_4I4nFxPm%r zAQC1|`>=o*<3E)f-^n=YwgZJu;tKpuEjf+qbbVTExRd6^>46+)uq5&^+ux4_9$fyY#M!c>U>E{<(qI@fVv zDI0tMq^@aAmzSkSAG0^6Hd#6Q-5t~$5W zo2vko^!*8a@aa&$wq^vCmS^MCW!i9~C=ZOV4c4+|tw~Y^5?TJ&o2x;)6%fRJC1WHRoSQ?%H|4 zm?;H*2-t*{!8qJJk<7%=$nv{XmZ4Ppm#|nNc}S|^-Qq}F#P^o*`dW}DvQO&&V@97L}4Iq&%LeF-~ zGB!Pt0H@uL0B+6?Cy&?Hq1J6l1jIQk-Tul0<%g+>Ie+K)Z`_ zsv9}{{{ZXP)%6M@B9yGc1yEv>-l2vD(77ajfA9NrqH08qN5pnXW!xikl5xNo$Nc)4 z7BO9JNNBWu6V#>CKBsoHiRv?dGp`sCF6UtGBf^i8ck%tlS(yAk;_x%1GnFKP)QWn; ztvOC&9joOY>$z4c>oQ%5V6_}YRi<$p#>s%k!3BmGa7Q`$&tE12LW)2;c=W%Y(l3!# zgC)5Qv0Y$`cKM8Pr9xbVRa8aZOS1(z%8#Ev9Z4}}X#A{puc15X=?w7^X1>XZk=-Jc zsCRV?3uK)C0OdRZ`*HocjVDH^c#Ov)n&mr2^%s#Xv#+Azb1IXk<4PB#FxFQx*=1K)W;=Hi#yI}~&5kkW z9D&5bV%!5=sSFzN=4 z6oKgf09b(&Z>?iAwNX`_)fYR78^5;%4zx-{T1ui*>9=9o@6Pwq^h&ZU7A{K2Y{)kx z5rr($kU83*AMf$cSo~9oO5s>l;-^_YrPu+?m_)q@Z_> z%CPi+;tV2@9|_qyhnVsUPSa6agvVH;PGS(Q|Ve_dE)uwpU*ZoFsugTqtWNyj5l60cGZ zfTutrTon?eKBWA;^^1m)s_FWi@>q}hPhHU`tr7_RBm}-reDRKQd2k6n2anD~)Df6d zPI`Rz+B8x`7?&YdjLQ%bm~)vuMjMH2w%|`b2OqE?Zaq{}uELh~{{X}oG01LK*qf$c zBq2&jUkv1s3GvQBAe@Yh;De5sc8MyZ)8CXU-V-jPzNYHcT4#1soE!t5P7gbLWDNZL z_z@|T%TqVMJ)pBgGRNyQJ3$Oa@3xX9c!}KHvho`kCms(6sb#FoB<-%cd#^YG9u8VG z)-ABK=+Z)DmEu=1*CF2x?&XPHtCBEIFizq`>nJD$RO|Mqu?edPr%0fgkFOieA(wN7 zB0>lSRAlg_RPmBI1pX?iN&zcs3t!L0;lR9d?RAZYWs=nMpHpOkVvlw}z#N7jtAzt@ z1`h|RLXx4L*S4R`0R$LNr#v7^vz5d}go07-8-NTlLmVkm2aBPgvp!w+xz7AxdNf7fIM5(Wd8tjka!${@#m)nKoAXmKaQ~P1Vvp^D3T;f$e^fH zZKnhrFCIb9j|V@$KvrCmNk06cK~W9!&lxJy$ibs5Nn`QtKOPVI=cox}g;)r9=v#{v za>paQ<%HnOJ;bXJ11a(b);#=Y&qtjhRkxpyt3qdn(ww&D-yCUdGJvKsd>m(=j(lKo zjt+U~vpHcy??@Oxh9-PVA@$Zm2z(s!akwAP2f_H~o|`g&bc#2&_q{0y2ZdFuTnMFT z+2afpfS?yu&mJ+8hB(GQIqCC~Sx4D|Xk^3d1&T#fs^xaZzpYn3SPobbw4ca1*wR&>ir&4Gm6_Ue1(^m?Out)(hm)yj;tAnyI9Me~7Su4Y4I{3trSwOmoYqDoHvf zByEs_pudyM&E%d>Uia{B9TKo}3KGshr6>el11yxbr1}Jb^FDF1LvCMJB3T{F0Cux+ z`+og*Wg}>g@lCZm>Hh##bx%#&8yBh7)S{j_3d*Nvp!je>9KwY2^VLb%940sg$W<19#->-ND2~i2j^>D~Mld_)LvPLgpbq_=RO2Pz#)}pV~7`bL&=>tm>97+1E7=?A0YXmcH%vC~LsUIN!05Jv-b)*2&cTTKa z-R>(;qhY?^N()9Y$o~Kme^BT5bJK}SKb>Ady=r1W5`yA6r}k!*r5SI{6lzczCb>Rj zkwD~<=PZ2j&yoiu^yXZ&RfCO9esE}VLJ%rw!v6rgGbB#dM6<^#+qg%gMNr8&KmbGt zxg>?bV~hgC6UR;`OO%r`VQ2Ou-}rVThkOaaJ8nBYGGDx+qpAHV6(oQff~DfyrTsa* zav0^jYw2vjV!0l?zy6R{RA1i=-{sb1&M2onnrY5HbNG}00OCqisisfEcs|h}{&}RN zANZj??uA5jhc&$t-i+cpb}Cx4T|HY8ul^0H!;J9m?tz$$C?pbCpB(kg@gIwDydlsc-TkfxdcLJwy6i{X*m4)EQG|;y7SLq!u$0qm@ek02HM`$w;b*BmmAqXr;?) z8?eh}+~3J60HO%(#L>?rMZL_6!I81Mkl(0`o;udUaqI^akg*GI){u$udnW{zrue$8AT$8B@000TDq?(mI_$B-!hEi6vl9d}dbK}hG9?Je5 zJG(*ejTUWFNpf{K<56cznRi*Klfc-&??WGOboP)rAmnx6hl0=Hc!E|l9WJMP0FcE> zHy{=O5Tj83f5dohCx!sQKt8`5xRkIqR)@z=Z4>_hP&C58jQ;Oyg=YkwN2EC%H_7mN z#!}}@Kb(iVHF?kn9z3E|@s1gX?kZwwrT*~5UFo3LSnXcDscIF17LGdc&9Tb(Lm~YO zpC=p);~x_uM6z?vSvgy}*W>Q zS6!33?AE(#)7pCRvTSk`LmG1;#S$nG!k~LSq}EvakQllgsLyLi;)ofIzBZ`4$OJ<>0@*a8^+BPnB&yP zw{A%UDf#kG9SF(V9OFacbob+=D(M}ucF(A1`?X^~wmBMAUF=kxg##quV1;EUT|+vy3R(;Rf$GBAqTu~f+pS(hrn5#RzCdFLK*G1I9k za*{1^Z)P5lxsg2trC|%#ELg(vlvB9iFCg&Va(Ez&etG~_4q-wy@P9}q7KSt$)O}$j zRV$+tupPoibSwc;j!)`QwU2;*9ZNLKAcZeS)K}eJ&=lG~KRcp{(sgUqcLHnAEIYi9 zY>YTQK0Z47-v=LA&sL(*f~Aq8)2ue}xzy+J zlYlY)y+~+-6@_L9Z%m&S(nTd0GP;#G+C~m?IRt)siO2wmo?vj%?!Tv<`+vE+14+Gg z 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

MDHhbQR%S#ky+YMQ9#@WTu3(ar@=}P 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 E*$X~lF#rGn diff --git a/inference/images/detection_rcnn/000000087038.jpg b/inference/images/detection_rcnn/000000087038.jpg deleted file mode 100644 index 9f77f5d5f057b6f92dc096da704ecb8dee99bdf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183303 zcmb5VbzGD08#X+0qsItAMvRRHB^2oxIl5E6pn!-1(k0D6LAq2#x=R`a0|Y4*kP>Mf zNJ*FUbMbrsc%OeC^yB2-z3aa6IFI8v&s|Jh%tPQ>>Ns@>5fKqY6a0Z(OhHsGfBXM` zh>1yvFMmi$NQg;LydOmf*9A{YgP zk_y~l2!{|8k$}FEfgY2SkP4Fye=jo)Fl7=Bt1kCa*|-uElxy0=TVsWA1COAN-blJ3cdsoPFvw|G?B@X z|CX^V9@%<|A$T4^cM563nG8HyRO6ri!7>&e%C+v;gQbt{%Cb8Tgr^B-`yn~-!ZH3( zKj>T@l|mVm)&2q!0z?1lY!Sc3F{5hZLSaDQIbSFiHb|$KiAO* zOXxu?;>8?>C@v%ro`?v85b~(V8=s7%w;%H5!4$i}&aJh{KWeFI8r z&kobAmxC*)B?6g{J_K93T{==i3IOO6$@7_r*c%wKfX^A?Pv7+!U z1ms|Q2>&QKNdtQ&dK$R|u?GY3N28%&++pn`Ve%i&U>2k&PM71RNA512c%wv2x1`%I zn?$#h#CaWpdAS=1e}Ccx&7+Ck1N!Sqv!QhE^v6OX-7n4|?n&_6Jqt_MM$%fQ2TBB8QM zU~EMBnu8Do7!>_Vg-3W+XbzU1j&qE_2d30WZ7_l^ksYSV8<(OV7kqYHTlISA)gP?% z)ZqG943)7%GTdT5{5+U4A93YrTm%uzpd1GtqnAtENwT5w5j<60#hydP{gX*VwWLyB zI9p(sc`j6_rx^<$JG+2ro-FlX;gKN$gHw614iu{#^#$Y&mj07U`+PVUyJt@V+a_3o zx2%Te1$nSVHxh^ISa@@AZ_lxP9;{xJ)i8q{rh5DpH+38ck7MwpRaT57Gj zg6)dnux8=hTgGmuCb?4_4t~VamvNnJgISULs?Lben9GBOiX9z4Nx*Yk6>=iM%vj_| z9k+1E*AL;Zo7Q>KhJr?vGSw&D3m+rBQQ`xigOWnQmiQ_0mXF6PM;@lTkd-3-?(rUq z^ldMOu$zs)PBEZI$T{{A#TOw(w|ka)4Dk84`nHsovBn9s5_U zh{A5~p~%t*d^vBIv8cov7RA&dJe+L>jaJOYbHO_kG?vzfqN1Q-w2NSIg^bJx=&*>E zX{L@zx~T*_dd$zA4s0kz%@m?ta4h`e-`O94Wk5V-l=O;o8pJYWyGx<-VAK->5<_^) zySPWt^VcvXVR0fpJ}_g{C-0m%J!Rmrj?kW*N8mz}4n$oaY+}Y!?1zwDr69c(Bx&T z+6^Le7AQDGO^$qi!}?f+XOW2=ME)aK<(j+V9{=0^zD5giaRH#?6nDrx5`q$fyir8I zCZ$=Iv0CP&1SwVmz>{=JB@EF&cB>xudKa+z?cL&02*jBsU1L5(s z0W8vIALU^xX48JO@`LO!^$PkvH0w5)Sp2hWF#xxN6%9^c!E_Cjx|L7BK27ECL!&nU zf>~VW30ubQ^nazLOawPP6M)LuPl1g;mIhHM>Xw1OyQe@!@{dFw_8&v?!h8roaygv| zWDa;`O{1%k+69xQzlzXi20)3uRl~;_IfO5hh)`FOhgrP%F8eZ4-Jy51{s#*_WTh(cKZ5|Iyt&-3Www|sd*spf zC`w9$km3OzWs&th)f;PK&M ztd}R3`M;!=yE8CNU5PVG$OQyI)Fhwbv7RDH9xRW1fBx1Hm>!)ixbjroW3W?S^qz9c z!<2jmhrI?{{&(<0GKOyE|6M90Tuy6zdPyCV`L*ni-w!@BSkTV<4eOhBH4^!hHVj%&e*(R`nMXbyA zmkWVn;Rn%t&fra@_Kw~!{yks`Y9gf-S3u*`E$H5}V|Wb(2k2=>-_qsQS1%io=sn5C z^CSy7aDp9Aq4l;`n0yYihr0UxCG7@89){yBY#$I;ID_d9W5q+#|HESt8lCnW((TJw z5iVh`zEjYcL5+Pk5t0^noK(+;+WFRAK(5uZKBd(e(*2axgApI;FsF{)+oAd1uc#Wi z6@2{el@=sT^ry=b-}Y!8OI0=zS29=>`lL7nz{ZZGH!0@eK;J1A2?Ow|jSKIz13ZL6 z{M#4uQ*V@mcKdPI`3&s8{csW~#kHZR^ygtAIRJ5BxJ0%vju{wsUq5a>7{E7*k82@h z2Bv;ocmer#9t^{ZFF48l18*>;QQJcmLgisv_ODpC0zmL}k2NJ(CCyO?gg+~NZ4Gf( z1hF;(XF}GE>j6=VwGf$pLdXfh^RC=pAmoJ3mC^Sj7=dnj*)UnFO9mS%@(5%oa=z2lJqjRJ1Aff@Wb~XA@hI+ zef8Q0=m6+n=@%jph3^}<(_xt{$T;ofTj4QsS;0r(phTz#_by`(hV&q$=OJe>C9!`C zk(U9j%PT?(#2(?;9JwUT9=XTfsOy?c%Dtol zygMye{P?oI?W|D1J~^HuuPe5IO>)CHiyAaZU9-V52o@dfKkCo92o_7T(}4gWd_+~e z6B2wJ0e|ICh@8)^qQfeU`jc6DL!Vj{!_JVpec;)nO9h-BR*mh!Nt zC!{_Ndk7nW@|pE+F{z9}V+?&DmU%#+#B!yX740<1EO)*9l}-|)D}C3EzMpQK+Nnpw zzv=p&@*}1jd~@1n(eG@$6JCwoA}ujZv0CG5E+!Qi zOepsuPregs8hd=>4|3|%D#ZTK+SGWvVEbE{>-e>$QNK2G-<>6GpVHyA$HQg#hv2Idf zCiIG8{2A?iu5re*g3Xy2>yZrWs1$9Rj+%atUFL(mU~HxORa6F5%B?W2d!{e05uKj? z61m+94etuQ zG|MMl<0h%DG8IQLM*%gQuIR%Bq;;9j<%2>9jqJPoWqambwl3c$^XLgp{|V7#x2@W= zUkx0KYPL%t4;(CsEnZJt`fO}CDZiyrdZwCKKKZB3D*Zm@maKbhrC3qwxNf?v`k%dN zL{)fS$9C#pj{pHn)9N;zW1gS=kDy`~kgsx_o1-OU%wNfgtLf(0DGlwG!sC|mU~H$v zq8DCCP?h$w~l!9W*GOl#J3Hlu8J$W#7tTZ1q4;Ilmkpws-Zh?=> ziR1(j<7!b&wi>#G7q`mkc|3{G9J7HG?~@|L7LHc?($Mr4aQ(z)%`JF5X^VHxdKCe`DC{CpmSF-(p`lAJr`!J6+xAf6#%e&EhIpJguys4 zq(k;lNCTjk0K+sv1d;TC16Zb15kaR2qNE40EnCde9N=f)CD#oo<^l6%ZAs80R|J$r zns7b?Q=*2=Uxr{3q*oMB4{-6|7{FM+WFbRG@~Cfe5XJmbRWPCuX;Nd!fO)%iVF9V zFL@|Hd2_5sRwTHfx%Ss&-d!I{PYzKY(D(?h=xqsf&$9s4nKU}0ZcgMGx-tTN*^1J5 zz=fLNC)pkAulszo{{3fB>t}7>LZ_zVZGMH4GTQH1arp=>fhVIF5)}QD3rM`yCp{N` zm!={4;lzrB70o`mB-0`5uYY_0%jO>HsxJ35O%M7O(UI=k&qze0s>?#QRFawWGv;(T zdn2RuVgA^3=8S!|lz{vl)};PBerETcJCsv?ItsA}K#-F#iS1qS)*Mz=xc|#Cprol! z?WSISUVW&Tt<@B!kt4>Ru=gVf(p>D@CAFAd&@*lji?7hhzQ%N?%9;Ec->-!tlOIlR zgYep(B`+QQ54OI`8L@vH&bZ0v%yalew$1^|ijN&0o0)!L_C!hs>ytlfb`m93@L{s_ z<8$>yZR!zK%#p><8UuSw>9wD>!6#`cQ<)!@X-?CNx@c5O9>-UI@ystRuBPu~bX^Ig zPBtU3n52$KTS}qy!xT$RYn$)MYeA@DE+FY%4`A8)9j;G4eNRt9NkWbE&$B=OQ)w0h`3CT3uY>~eR^E9V% z40g@YiT}P@v^}oa47_3sFsZfj=j>J4=;EQVv_`Q;garf6=*mm|{UntoD`7lY*Y}x@q%Ol7AmhudH2-^$$JazVRoyBI)VmOm$V`)xdno z0r7g1eC&A;MdA!@d#v&^8%z`DvgUjrxuIZ}{#_n56E9u$w_);$&ghhnUQW77(WgF3 zb{~l{*4`9xa~7`iHz9RwF;Mr+*Jdr9FvZY})$W4Q*hTv6>F!p@TYJPNzv4Dg|37q= z|LWGfDtQ9+TEZ;W$hX=sV+VdE z$oa4OSi&AmbRa!?G^4U=_)?cjM4q7n^k|jHYP0qR&}ryMyU6){Bl?c|-eb*W?5;G% zDRnayXft4_^sw#%2Hb3)pph+i0r`;!%is!`QFt*!MMfKBx4U$HM#qfj`r9D|u|Jc! z_w)+(rjp#PguE_BR11kSCQOQjLq>_uLHLA@WD6J};=<5U=V08mn| zbDvA~b_W0+v<>L~D-w<~n6{YPeX*dYN(FiS#QiYB1phpsN$30}ZCaCQ$q>iG!B zR6%eFALQr~K`qt&xk5Cs^ikckdL9eG0G9kBzIwhp1IStbKKRuMz)jWN6tAJExD&4= z8F+-dq5+ToB}rwO=~kM_#-r0?RC=(?>YE}%_#3Qz=tSVVY)Nh(KS=@BgW6V5iVQqa zNf{uTNP({h=r{$oi4l2;kTkTKoz&haWHoFFP%MGzjGk~nXHc&a=oEqR(7BFrcmtde zH~e+C?f|4WinJFds|*Dbpe?EZ0dPsL)A24eTLvEENa{oiR1G`JlI#-@Qmi->^0I+6 z1V$j`5*j>DI7<0giDd3_7J0bB;|PQDWE3gxg<12VA=MM8kYJPJ|C+wvv>!5*Tiuo0 z*EZ^{)VlHR<7lyxUudd_~^SEv;udc zvt|5J1pVhAFNq6o)YKd2R7J`PJ8a9#2F6(_uO_`~^9ud0Tez2*`GN4DG~VU!ZIc(@ zc^Sp;gqEz5_Z0V{*&_LU=w034P}lH5*vIaCx^=p{s21ll$}3qG5otKFK!q-2%`mX{ zzGs#uph2}()2l?jy~k9VaElgMBHN+&oRZ&6M)~IV{2Fm>DmAmO!?j8}{RI#PHV)G| zB*G6V6>y(zBZ9Q#MMX(&ae3J7GX}<#9=2O$q{(N>uaN6fd})S*;rqzCcesRdB!Of% z?fIhf13`3YHvb!1W<$0O940}2frLSdx^P2Be5bVic|Sazo|$sICAwoO|H*?hMg4%$ z_|i9-5wJ(sxiw5pZB&P~<=PyCze$;v3QF3KYD_cTa+S3VY)YL*_}S6X&e}ftn|C!f zy8J^-nRD?g!=HlOl+NXXzgsknX?^PjO$rm>OK1sq$Y6H$CMgbP_e49WHE}wa`NnJM z^?mHDx1;L&#t+!a(Xm#oP4^mk_36bsnd!yPJfldv|Gs0ofV`l6Azh82tbQ+MG^XTN z3SIlyD^l1HggaGPJGS=tVGEa^d1qDmjkM`;quT1TqxZ#r`w(THe4pwEmI}5AOr<@B zcb=u}#@*Z7zT4l0#HSTDugv34;QC#jO(PmX0YO0rpR%*8KA;}S_tfVZk}1?RO>I(% zT-OzysE#oFFleT^DNSo}1Zav`7W~3-#C|dSvbz z`s_*voqI}(P>$zKx_cYL@He?-UoUF0 z^pTQ7f?I=C(ojUlX~0nbZ-$$Gxg>%X3LvLFn`q(0380+vd>lY2NPdz>hdfM`WjjG~ z`#e}Q0NY_8=dQ@EI%|+%0wql;Ol&s5TSuGC?*#fn{IG|lgx=kged3o`dPdWA3JM})(CQae!3u=?KJ#E?LEm_@d_@?|K9v&b*x8oSY4IA zLpZN1@9sX046WcVal^O$)zSo97lpMX`K#bi=?e&%yj6A0Sf@tG%5Ud~l7c#;=pZJ; zcVuIo#0pNLB}3ElYBJ)8`eEv*=G4&d(%S)n=Rv(YvOHrMZ88@S@yu#USv)s1*^OT4 z*sCB(*IJ)Llf=Pgr%cwj!}@B(1GGf>HB*mL3)|iJ>XcC7%;DWpp5X3pRDo&OY`Xym zBqVWwX&g5J@h#LBQ#s!>W4+CA_QO;bS39G&5B+Af%=V+ALhD`>Z*2J^qa0s{2@aJQ zO9yfZdg)o6JJCF0$4S5X?}!tzGwks6jtuHEXO&bp$vwMOLZxcb3NIS!Hq{mieE7PL za~~}mp-rVi`jr*G!GPhNEOUd48+Dm{f1#_Q^IguM(tn?^UM4QxF-goLaa<4kwN|?X zA64(k&9ML8tx@|X&+HFd&)m`!?6YNN2Vrs>!!Z^-e+Plf^Q8fMNbP6QXN6<;E+EAZ zoRYn^XLSkTbjy{geeE2VWytY6_r$v9Sr>%2r9 zXm`Vqf}|p?*Hbm@@3qR-7p!-GKYL6AeIws%^wZ5Gx%8;SQb)Y9eC@qlmZ(sQxM=^9 zpJ1R>a>A$&ND|VRL&=5df~y7=7mrnT>n~R@vDvp80QYrZCzM(2?-GOov*u(!D?*Qqljd{G#yk0y09&=^pYdSH5yH$MIxJ zYiuTKW64#vLhn_ua>=Im{%{wY)EuLmgU&p`GZDHz?oJwWdb)4Y%%s!O^k^u8t~abI z;^ej(*WSXRk!Wb|?kJSF4uCc20JCwGmJUtwfVkwBem4c~@%g&!Qq!_+C1Aw)TDcvNL4G({1Zpiyfi zuX~UniE*7Zygx2^6W}{f@lv#6b|5^p;av^u{AEs%tYwL_8DxBjwtF$uAjQEfZ$!rm z1#ae*XK~cQD!@5>mOLOm4jx4og`$U8vuLyh49ot zkj7&n5tQaQgQ-8=qWxc%R5_6(5BA(ZN(y8u=p6*(fJF{aKe>p6YrPwI4-^W2vsoU4 z%+P=0PJ$F@RuGVAZSFVD*l!Nae>*QIfny;AB<66Kok|8-P@+U#%8-T_{C$?(lq7g8+XGI6O6c#@Hbr%iLT$7GLvPi z_@~PqVMSUme+$2}F0JkBimgoW6}&gIzUF=N zAfL+Etm7qhxV-MXq}Dv~ZQND-*Qqgi)*{V{Q6+5&&gP{hHFSP<@b-k;LI0P;Z;*AC z!slLTsrJ33_`X#ku48u_mVEXRQs)w#Bs=^eBn(YBI@&hONvcnEqkHfG_FlB+Dz3mF zsje^GzV&93BwU=_AnI-({V{L$`1>D5f3Dd6I&#=%kN6;%7Atf%Yi;7TPrv9st zw&hf%$GM)#RkPcoY%C3VNu|wm>1K#sg`2FLx%Ziu7*iw)`HOjB8soi%h}yErX?S7Y zUDG=5Co;ke?ZkZ|TB9};Z_PSA1ADnM^KG@{S53KO%^dXPvGYm3i&L^sh0^Y-_gnJ} z7Z|BF>8gmU^Jh-}%F9R*Y?`y|!hd4SxhGEC?%sCFvxZ6b=$)GDvqixsL6$bF;b z&n#78l`H$Hjj*UO%+v>Q)a)bjXx_uSL(VO=!($YqDBPH@zC=ugmPkxrrPro$*(P58 zF4X#IP0(qW+BCyukxFujp9;pc!O)Z^SMq+$o2QEYvo_3b|Dm?-8NXS{s8ga~)gIXw z`UXjobgm_Ny%(-26D)jxo=@H6F=75vbeqZd7rkF}sXj|gaayl7Ci@kWps8UDQg@$! z30?S_ca?$^_TLNBF@d(Jhj*LJ8{+k;T`)e+Mo@7nq_?};CCE5@TafensAH3cL6}Y66)*9S~cL_)fzc-k?Q#~piDy?e~8|Ig^J#+zi z$*ER%75&?uz}H|n(lHepd%pa`Iu?_b5o}nurYkJlZH2yF{{%)A9nWe@i6?4{d$aVg z`J`B8Zmo5^jX&4=Ow{rMl9r@k&Z*Wa|NdOmmMQRV{8U>GoqWY6JB^@lx;YJlcjnBk zq5+4!oIfZd;+;Z13|--t_{%H`nW;zDC(c)!7fr1psVNj!zL(2v|ro5lNkaN4{TMCt0-vw)e=E z{9wy6mTTavKIhsHUcXxE_U_>c0A{Y^78WQlw5hm_Bm1C#<@Qi^{Tg$Mz?HT#4qswD z1Oc&jl|HqDGX#&K5Qp>u8-`i+Wlz@m8B9aCKmj@jVv}j#f+P?(5P4bO6s>_dYXOb$BWQ7ohwL!rYZTIQmm-LGzHA<(|LM%{ zp8>^0b1PdJlt{d6L1P4#vBF>VqX|2JGB6IuJ^lwKBzE6Z(@5+xFx~b7em=A!nhy;c zrAS+#_1XYkCr|R~12PS>em#i|h|e2^2_bI=jbW;?i5%oo?AR-RI`e=;F6kUEwu+?` zQ7$|2!@VmjX|*tWa4)t*#F7N3_c?<+)nz+AJU5Mjm1rW~Ybz+HmhUO|gt(pJtGPP-n z)sKraqSv>LJmOOR8-{8smdM423HE2#Ws1h}R;LW!;MV`s=$$gHID?6?&(z8&Q8!K3 zOvos64>s8ovj2iksm|Y(iApCh=oMkF&Ii++Hm`=LPhn(^BfbRX-ejCi7=K7;))Xu& z=En#+TFeT@peMSzP1Vec^~)%gt>H5aByl@dcIUz0(YI5bIn37v|H=N;cr*FHI#7pW z{c%QCmC-TNm^S7aW%x}MxmPd-w>`&F{*W}Qhj_N6{`}#U+SAhu2&J_SL*qGj=be*1 z$wlqTEt46M$wX~iHxZJTXZ(fL@d6dDJI7C#wFS;&E7REuDL-WPu3R6}H=EFkP#clD zLW7PxT5^MSNXS>O*p){oEU_Q2VXkp!^STae8?prYA}|$fWM7UQZzZn2>6fKD#07H5 zQ1O!$YjVC0I-i3-DfaPi{$U{RXlgP1h9zedM_qq4`fE}j^&N$R#(TbJZW>>ODzuT? zacYW-tLsS3NuE?{L{@3(us5GXmnFwNGQR82`Ow;lFjz9U<2mE$% zm{A8?Le?H3zeb>X^e|J|6xl4p+VzV&yilxxrsa8pD#4?l8M2!eoQH|e5Pe4Er=EqXVU}0Q&|C=Nn37d)3WJp?=o$B1~{HwM^dXR2p zbt!I|UA9k|NNX_J`MR$*o(P|I_k*#%5S?|vG94Yq5{18h1Jz0;#c5Tz`e~bX$EHmQ zIi401JNAZ1J^ZRvQSdrOziW$bG3BgxFn*42(j zmc>P;CS5%bDA;DY|L|8suPIcXDP<<8EN$cuS(I-iPd5C0ZX+#U&Sc@*cmrqf z!1=I3hNVD_3nj#LA8D^xSVk&w^8zw$oPx_K3|YRHaOPTC(5BCm-xMcoQu|flc4<^Z zDyai;bteg1bH(Pd7J&G{Zhffy9l~=zP4UT1qRC9W^xdw3gPX5w< zX~Ka!*4G*D9nKwn`uYN*Q2H?RO<74nlVxXz(ds^v$C$CKi&vYtgeb3+HV1oHr=+Is zkD*mJVyj#V@3uz~L3tmJuk==#XENsViV^EVoU-%TquxTPxL?-=D@C!QBvULZ!mqv6 zv+)wVQ&P=rE&n0&0o6D0mHy``3DN~=H_^`%Stz&=D&p0nUx?>MO()xvM`a3PqOP@! zv7HB{mCvb^I}<7khK(_4IoD%*`Ka%fBOn%hNJ^MtCcsOh2JAAH_0~7%>Bz4q9XQH z`JK~x@JhV$nSAk~m)1Y$4p~zI?(BY!u%cF>105e1?dz5-ZPmKMMA@^&hYuY6HEgPe zLf0|DxxvD1&$k@6=cYE!Eccuq?!WF{%s=P;-PpmTn}56&J?5!K8S}8pM~p1GMpHTc zmr|$;E3=oh9EYQryb1Zi}&@v=kSoOdiLU@td_ncIc+P zQT%3Kh`J>}MQJ&AU9d>jKY-PI-f`4tN@b_ssJmLh?F3LUgp%xi!gHHW4k(wbVhRib zTzQNHrjuG<@&ULFJ|ON9;RUMDYAkm5l85ljsp0b>VncWaf%y$Zx69-&YrsO*ITQ=0 z4x>*}lwJmPl^^EMrIz`X_dSw(2Z0d84-@!gp8`=zIzZGrDc=fWc???7kR*>n$1@J053=32jcQST!EXn#jL}i)X>OkSpyL~yT&_~+ z(_?sSfYM10uo8J07zU9Ec;Vyhd7{lFkV|rA5#{4UXMuQ!@k3^%&;ezZvc8aI4_=nq z*+9J!Y7wT)cSy*CRsBQOK+ZitR^@B9d^Z?7RUASSk_9*k*V`U4P#PqjAX=EC2r~QB z_#8BP0;oQsH2MbM2@EPjy}7P*yTdLZU&@GmLChtRqSRNM@SdckS6As{3k}+*d1S(^ zGs}nwIN86K{Zy@CdTDbIoi9QLd-5tgYolA{i4x2LG<7#xz~7pF`ssjqvI{w+r#sWgtp-L;_t^)Dyv$tf^Ro}@C)*#7e&Y?X_Xv% zu+p0zAyYqQhs+2GeR-zd?{T9Ob|2~1_~#2}h_`gYuY$Jl^1tb*V6}*h_git|*!Uhf zf8bvS|yvn0or}r`&X!*!7j#`x7!{Nv)Xy|D~tr!|2)Z^hB2WOr|Av8ec}f^zK{h7KDf? zu(hSDup|5)H>Y{m4R<$e*}Q+?ERd<0EsZLD5V3|4tU}t!lUnql zHxWD?ll#!9(`kZsO!1;LChH_TnhJg&6k{g;@$7Z$XVc>S_`2eV-CbS=bFXNr&{8-I zt$fV{k9)FDuVd|q5YG%)u<*!6PQmM}jV+Q7m$GaBA^H`jtnaUs6ct^WyxNy8@MmvW z>vi4hnm?K^pZdJh#d{`ubpBvs*l^ZI(Qk-X4a8S}6M z+k~)?Suogee!x+{m3{q4Lb~&Wd#r%fdC?#`~;-<-f~i z7sDkTF=4$^5pnCZ0S4{al%Ougx~Xr0?NvxQkGWip34fEZw#9d>Q--D>(*r62YP<>h zimITWoBf&12@dK3xt~sRjo|il^%>Gu;C}0%JSoiZ9GYsNlPJFkWLO5sX&c%b&KBkO5$K$K%wp8 z77k}<=+ZVk`k5UqK$>CCWm;-vsv4Q@=wN40i0Z>4V1n#r-F^Kjfte31ME1DNmAwHm6|&U8NzTw{-q3ut$yvZ2q14VcBt zR}~sS!DnGoNqX=E|B|ypxe5+Kn%AiPS=jdLU~lCBW+I_z-bIRNQ5F|efOx4~gM>)i zvCe3JwbZ%y(Lfnv+Tbau-rpv;jG5Y{j(VMR4T4i){}x})bVSu{t6^P4H|EAL!)}wX zVx!{y`0wu}LG}E~-&vCLHbo9n{&m)5u~CqPoK|{Cqwj^YbEc>^-Fu_PQ-3F?m2FHK zJ-$$%6d9%8pPEm;$~>C@<8d^~Q-}HR$(xNhlcU6FNHm#uKQ1jk*9^H58gt!4*3vtF z{bSdA$1iWs>NUq@bnUuurIlIh7H(n?#h0JM@Ft~J;aO5I&NLora8TVX`**%Z+yrZQ zP~lcwgj+*@Vk+g_f;|OpeZN6cgi>tCUgMnbqiX{skk`Xn(l{4q6zx zDx8YG8tQPKvT(+i+QUwYby(3?7*^aIMal3O=U^fUpb)^6Oq;n|6vPiJLkG5}Tp&uQ z+^}#3l?C zgLc!e9Geb+sjN@ z45>SL5TFNq0eW6ZVm&}fHoWYU;sdsDtOQB&as6evm$3|}&PZ^^JCY!7Nq!Gsn9n)6 z{DKBg5gIrgpu$UN3_aj=ZUa-_nngo2ghU+<(=d=g#WHk#EV5>@4^&MjU zv21^KtDyia*Ov%)^Thp?q-PQvq~xqUfcPNpwId@3L7&9uBM(n<Aqs6mmUIBWAE$^U>PyG7>xpzdmode8MhXu{!uM(YZdW)>6xin1*Zj>QoAqn{`j!CYEq)Gmqq0L!z`+PUQ zB2$mcx6`7Z$Zb*nCQJEcZ9^tZuY%c4VkE^{_O+96ETks1PFC3=)-%YNqqN>o+hJZo zu4Dc}7LKUO;zx8=`>jk%-`=lM(a`&feh|aIpqWp)Gc0P{sKJ-zliPXlOt{Rrt>kI3 z&4{(rJny1!%jUiJ`JIMRvHvK)7Av+42LvDIHr#MjBaJI#eVM$0?SzPU7CKs=%c zlXx_Ip!d-wLL7xP=2rJaKIs){+byAyoE$R_i$A+LnZNmKg|DxU0JB)LzGEn1J0rDCQ;)#4;>+WxJPPzFWTnYR|sF7kUnn7j>}_DZVDZzc|+d;uap?Da`h!Y94VG zh;t~oM#8sZSJoo=xqV~#q+NjVzp0xGL5Z_wllOB7<_jK0hB+a?DG zM%y?Ird^#rCSi}dau#^|`qOrDCB~3qm?U>Mcdla<@6|>3uMeTb2MB#E-SCvhYEx|F zyR(u}>)hej!$Z%7maBe>FsbdZ@I~CU&WJ5k|IbjUR?zo#9M1gfcg+%!Dmf;*0q2OT zE3QXu!9C?KR%yga_Fr19ez{TRTO1pRr%~EAwjplnv79DhCG975*^#Z04J{`>+8$uq z8;mJtwh{KZa*{wUl@#(i=tDmZF2AbbFuK(^s8N>n-O$)g*&#Vc1I^K2Gf1&JXk0e+ z%SVQ{8RCu&v95dx;73*SQ6k6DKjpDVv$!_5#-6x3>=ub7C99_mn1r`#es6|~CGp&jJh?-f0~K5>siPpV`b(eMSrGBh6WoTH@IRiB)@q{~17J-HFbI-s!l`doXsS z-5z6~$LOWAE*Fi(h}AszNSDlm{Y0g|^m9nBt%iK6!n3g)yJQt4PzY_LnP0UOn9w%F zxE1O@s=$z;I5f_~uCe(lW6I=?R@BZIlqO)uyc5gl8nYSan>07aC+7=2{s!nR;?!5* z1+SNTzmugZ7FoFCCMPp#(gu>pO{!ym8QzpvmH5%&GxA1vZFqFVLEG<2GQ{=@MmhI|1nr7(xlS!BgqO7cUM=_8EQsCXXQ0m7{*+ZKO%jt3leyh;dLn}V zd#fwa^PIDq>1us_W_Dfcl-zIY_bJr^yp1;7ctaa4P0`V$(h5rw^oAq#$j*D4CtV+& zD{$mAF9<%o11jj@8y`Q~eu>(n-}<;+HEA0&aku{GY>Dcjk&JqI)o?Q_iJqY-CL_Uz zNQlcgtM0C9&pujT-tCoTqx^7VQKIwkuWdHY-37a|@kKR$qmuI+x7S)e;a_uuftRbd zMMmndLFx&zrH#RDVSLcb!aR}>L6?C_r_es@0`e#nWDz57ClIxRyduKPXckIHz+-gY zWo;++7$LFDlpBz0ie+A%Jib&eAFf#~gs(^x##Ne7W*3EsxgMd^q3BkLE>C+|w4=Oz z{#rdOMve98Ogn2IMMWd&KP`5$mrHM#8<2b4<@q^$r3mrv9y+HYF{B8=Y!(9jh^0{3 zA4D>A%O4}2qbO>8mpH=$>8n`ySO>h$S{bkOYEbNmYofP@ii(h!!GCq~N2{>3VZ*gs zY&gEnghDd@y)ink|}Ku zW`UaW%pyuE`b5$kKwFGV1eW?hwiDsR*J~F9UUzT((*$3#GD{0za02x*LUtTbU}|$^ z#u4K{DfxqzZ(>>!nxku?<G8JgZLoO-!Z;!UXl5(Y16A-lmP`<=wdG)mA^zfoCinqD4^m($4)Z1orlSvKv z_-^G9d5qFLXN9lWdQ0kA;(xB1&+laZaBH13d)T{LO}iH(a3V2t>|_EW_4FOPe$%?q z4TV{~Uq?%of@wWLgWSx#0^4fm_WM-XIaD_9ny=DmR~F|N@BgY|o`B|uPLE3s$=>?; zdXAM4CbslOmu&#He>91*|YE= zs%N2_-d)e46Q!*qTn#k~cpW_U;$s>$76@-L^$u+xf5>V!xV0}{Wb^)S@tX~s9U9cs zjDUIBBl=Ifln-oi%rIrPton4#AHvcY&vsgUoBuSD2@*0h0o@)GEx34|cV!i&+%EUW>@L^6luv z7lVSt;AZN7OY)Cz*`H-B{gX2mL#-D&=*K#E!icGlQb%oq64!12MIQveT5J^msu2)F zOHSoXUo@2`H=mrbt4*|#?lV{Dq-!gyZoTs^PyO`U z;gTAw zD|k%=pkEMl&DO1B1NBte(IwQ8ONXZH(ZA+wNY@miHfCGu`b!cs-uAyG{KX9(?Nxn- zGkk>f#E4KH*9Ezqx;u{`%-1GE=10010|O(bXxh`&XUSKXUJ=zza4ckb1~yJ)B-5Hu zzmu5eDfH$$G(UK8ex3caVbmzJDL8-FJk#HS#=v#V)T~dCmGQ;ackwW$3C$kTx26N? ze}Bw;_nr!g?XHK9pmtY@IP)iD>9&3UMrkz!t~I=#uGiWBv~WjjS?Kq^`>Tvwj`4)2 zHP=kUC|T1XP%Kkv`|7TS7LCiqY>!|(2x6B9kN729HQ zAbQp90`dgYJ0hh1bFkD`#;z0^IWAP!c~;HIdX_%7+QrEvv4>vq37OcRbMr|{Pn@d$ zbzj$*-9&jJ=*pN%(~<38(}vw3Y3FTKAJX8S zwf)1gzZmt6T|IYr!3&!9YN7Df{{e}I6YR}QU- zEYn%b@a*r-hw~fFSoao#b}t~Cg0W`B2?5Rv6|olOcLgHZh%KFBb?Q^%I=$?ewn~R7 zouc~$YJ87pJc?UQEbhjZH@z%2#8w&VTe@-Uh#GuOvFLblW*4QhAV9j$ox4y$#rH5r zcf_>jTZKqtvJG1FKLm5kno+Ufi$aH>N(QDoE#hf+S36$fs6(>$KL2WZCHS}vhvRW} z@i8c_h*<^ZgP&p?e!+HZRWv+wnmyEK`cq>p&S+O` z_6>qqjA+TE-GcQG^fsb?{f4mDxn#2GO>AV_nu+3}%Z2bFtV_&HO9~S4sDjWY#+Ck8 zelPXNLNt;+iR&h~!5c30gjeIu$4`A#xCu{cK20VL+`9Rt86;!+tT*vW)D=>V3*j1c zAJdQ!JcuyLk}zkB)TtUI_3V7Q>GWJ)343ClcxbIe+V4vt$gDM%n_Ky=oGx~(SgB)j%#NVkO!#uZ%0Kyinww)mvH~<2sIdy@4>me zXkaF7!Q{3b*a-A)QV?Am_xndk$bKevkeKw$Y;xF*^9^u>-?@GYdJs|lO6${!Tzl{X zV_=hlYo>HstLh6J)$YR%u!M-D!5G^ji@QhgGANCd8chi~%>7Y-D%45?m#7>m#R0|v zjKwGozL(4YKxLAe8Y)!qIXh5Eh4@(?S0mzopaVe172->g?|ZstkZy!a4HpA;K(*A+ zaNsh5YQsf02gppO7sc4#WTqq$OR(rn{SL4MEOLIs*da2-HC@Sn$P^noraYpW#5_(F zo36A-rDp}wRr@=TeBefRo*##*F(KSla^Z|P`;Sr6F54gN<_K$}U1Cf(466-IEAcSsj;cM!U9$5*CR_TmCE|TTTS-_DT)_!loVKdgHd_k1pQZkzo7DxL`hknp zXl;tX&3CTwa=UE9p&908`wjCw!nY=cFm#RX_phX0$OE4$>JK}bFXt+%Z*I5EWXupa zC1ArfmR`O;z7>6zI+c2ZA}W3#&>Hl$GWpMHw3qn#UlRRR z`1e<_Coff!kBQbS<>1%WrSFS*&Gwi}uwT5*T0<%#R(vG(5Igib^=;mw_UMm!2yCjT zL}Id5!Rze5t7L>l9EGx~qEk?)R9fo!q8?6GK5PZ>4ro@Ip(d8;iPKiI1Q;K5D!0K? z6zVD1vt&G8@w6YRDH%B>XQwov5;6<3D9Xp*TeAq>*|1}8U08IJRw}8pc$EY@hT!C3 zT^a=}tiPp}GxKfMKCIRVoSSKw7^hMUh`V6>tI6pat8gdsNgZCEtlCsbf1zIs@-i;{ z_?5Du02W}gcBCO8SMz~Owk*+PFh6*8z{}MR)*_12pJ>V)P+0;|k%2zoPkzHDT`c|W zcP`s6b~vwKmnP0jplf|9@Ta8>A4hgFR-XYqE>xc4{uVavTyXLgJnGt3T_!WjGkbl} zp-F|SE5B@};aWzI5OS0N;qGn!NCMTdG!e^#iDI?;tht>!z6r+ldDBuHyfAS&55%1-xJDjV2m;i88ccU4oa$f^oe^Z zTy*zY2397;!x9*9u$JwWvg7}ak zCoichRXGs?1r|+7Fix>zIJvuKw$YHSH`j_Cvn35kdYS%e>(xJhtJpw_*^{y1xJB{K zpme6`N;&TW&0eaEck$u~=%80esh{ioau3&vr1-FU3 zs3M=eYlNSfR^aUHmwFSL0G7;#()r91ebJc+x8mR$XZIH4cs;1`S%|A70F zqb{Z+KDTZ%W{7EmY)QhERZ9D+h=8)w?`Br^FLTIf`8Yothe4la2888IKi}zDFj$uV zKKVOK|A*R`{yr;^&gV^r?9cA*6PXQpUgYfQbkD=RVwAcjBk4HRtyp;g^x`((%4~IS zaz)ty<%i9&Sv`_MUke_qn@`S$%m!pzic9MgZoHuyE7rQP4Bd|Ey0fw{{kG_0CY%0F z>MS#=Q(e-i599U|Z%{A)ftdb*ZVa6|!YHxk6@Pked~aHFuGcwK@Z@vnei9yXaH=L3 z_mxbAQAgd%)pf?8!i9&kt5R0k-z!esg;C}zz0a^#gn;=2)lLgnYUNi=&&W+m(Qj(5 zo3}NW_ro0DO_4wwxXwFMQ!_o!`$n)0@^LKu;=c^9DZ5X>^OAHMa8Hcec5s2 zk{!dLQ{_|u6XOw4s?*y|D1SloJjCW#sBtr~V`3Crd0dF9u*=WLF3wc264$f)G`x&2 z8O1^rs(KtMS$z$IZ=&gVFRyCG!+o8sVR|ZdLfaUKl+u!sH;)4`AFJ4o#s=jNW6l2B zQ}SZ9dW0ZwFFVusZ$dx#iQ-LouaX=2U^SIiW3>CXl&_?6;#%ALnR(18CCLM5h@zAr z`Q6@+nNqlavB-NLp2aM$^cU*FW*@zUA0A(CX?_K<2XY1)d)xde?4yOYEG*Q^j4R)|5Xr9S+ic@2jJ!{dp)5FqJO&X16*qDa=5fmkDH(?;$BIr&fEn7-wQ{?%Wnxy)y zu3=n?n8wI~MscBv0AjRj(EWi{e&Ne|;>;WXU?k0+%c&0#cHR(0KEO5ZPe}%$P^yb^ zO(#kl-gTB`zD%dj?_`vYY(O}b(BLEu7= zqb85DPX>kU=L*J1a%WL{(oi~olKedQ6%3{_|M^;hi3&tBi^0B0;wov) z4N4G)EqkU%D}vud3M`gZpOG|{&dLCtnSDF`wwCSk~xc;|ajULEma^tmm=u z;2G*}Xei{dA1O4DHu{O8kAZi`{|c=Y$>-sSH?fAZ!RNd$cyRdOAk;-)EhK%*RA!02 zvUN@bcP#7s(hlVgt(q3B!jQ2mweh2L?K)4s;3*F#J)IXBYg%S@xrMcpD5(}TX;=DZ zb{Hyx4eSh5_o_lWXQhd-UyJMWO2x<9#xJ^lNh!SUv|fq?E-n^0tgd&gyW#E1ggxlr zp#S^_!d|bK7Q=t3XgNxlWJ_IKnQYzNt%nggTkz8t=vjg_M-0-jnZ>SSzu;_YeQt=I^l8!if5x^9icDS4v;&)IZ4G^7G6)QUszk~gz@N;kV7&CjHlU5IFQ8W zsIHB<7fEc?56IPgXR;gSZ%u%MlD*-I!EI)^Ivf-soLvF~6;YmQE1{ct!u?ql9s8J# zy4`eEg2Lfuzi}PXYhw^3JkDCap#h<-!KII|bd{(_+FCZrLl>z`?F>4eSuwQ5SVW|!(dF?-J8b676Tc^f4joL^qc#wK55(D%W=RzoU+ zj2nAr=dF8ZlytSlv5D#fS{mH;jq*z5-M{wX&jpT727)sGVDqKu^=1xVa~g>9ynd*@ zGG{;a&d*H3b4{uLiwvJQ2Y7I5_2AH@mZ5kNj_1Z=4?pdPbY7!i#D?+@qOvG2Uns=-c>Z$9 zGOs=PQkkD{A>KTXWG|O1FQXh>VU1D$;jQ*l5q@Kv13gAmNg+ zsn`lJa z)=Bk(oAjK$hE}(^^z2{kYVA)1H!_UwW@KEu3_hUixaNM)Z3!o>Z(W+3my#vj`|*)Z zOi_;f6UkOMeE#H7UUg>XoHb#*_MnpIs*=6PFFTSiUU`+JrNig-#ldtPSQU&sJ`NpU zFK`?x>o;tVd0#@-@S_hu{XAl-2;eBJ?3#&?)65(i3FmVBIXCx9gO*cwh($|{W{CWN z4n1-;gw4Boud86fR)J82$%_-Deyy)2hN<(f0Vy=B_9p zjEf(FiL_8GWXF1@x1uGk*~eD3cxCF$jjg^oyJELhQ57>g>Rg?{@D2LT4cy7a!4Bo< z$MAUN)r<3TzAQ0(T(?(oa6I^6%ag-{J*zKOFxczn2wn)mSpN}(yspBx>HxL!G7T*u zX*r{JtF2^pnp0lQPRZRXvA04uQDMbrY2xhUWG}0*bLP<2n8N+}MOrgosq?+f;=uKO z0E4$k6C~kfyB&nQMmvSsb*kXu8C@T#;07j2c5$E#Kb?i;J|D4?=XaCd**^XK-mq{B zYe^tiWt~4U0n1ddaZ2fF>1n-_EF|&nm>yv5&afl=dl)`KE~gbrCQ~$ZhIXYr?`5dW zx=1EFe>_wB>2nML1yiIx9$5{gww+-G(?d1SA#rtSh9aZ1HCT&9)gmY%vMBzbmoue` zT{}tQi1=5iwO&Nc*o4Dj7G}68vrp61z@F~c(+_r)Olu?5JsPUIF2yMgxT~M}K{diQ zR@30J!qDor%c)3p$2Yy`o>FRs%{>C|4N66#pb9 zrr^*pYB9Qko>l4w?slEg_Ig;^No(~-yZLt28H2YO;w^(UWx9yn73+5IbW_lQRoF802v>n;eZy^sKWp%xtd>Ej8 z&6+a^6gcR@U#rY0tgT<(t)9ElU4)bscp5lZ#3m7E=Sm4%@KT|ojr^n&ruYuOY#26l z>^D8*AqHu!P^Pzsh{*^$J1m8iIdIaR(M2M9W?Qh6#F#D-1C;Gp%8HklwNf~AM5Lw^Au6(;IDWO6Ixcj zCg-j%&>6#Qv-|i!DpRtR@__Pk?l_lr1x7E{?80;c8ARFPXayZwT5UqgZE%t+9JD%( zKN0=a`(>_`%e6~U+8^8IIQXlr=Rc6Ekknd-iq#`c#|z|?g{unRRg-6op9v!}R9F5o zg#)dP7UYy_UOuW_eUH{Fk9Sb}$>}pMIAS_+V@yLdsom}@x1zAPHoqX6p&~ouBX`U@ z&J1Jj_#?W0GADRaDfYV~N~vt~n0x%}m1?iwHnaag=Q-TPJQ+$+-;KPF^fs?cTU+E8 z0Iv=cMM}da??mH(1~KYk(ufJl8)J;h7bC+cAD*qcQb_N)k-E|4RU31+8S3U>f9@aK zj-U%U|GH_DiSXRb>O+Wi>x^zLa+!CD+v|=-YU`rp{G`Na%(=I(qiH>6{bS%ikW6K* zc-^>FBILp4$a3DjgBs&dSmW2baxhz=w3q7`Oje4K3|nG^hANz6(E@@k9chU>p$23r zG~cDqhcGetKb(Dd8-%@9~_X8Nc!dq9icBr!j6wk56lJl zhiSBj&hfn#qNxDF1f0&hgFP1U4+lCw*Kv@F;3tuH3M3flLPp6^J}}Zse+9D=e z{|9=JljJc(bHN9hYP<9|qf=f&$o_%uP54kv*{}#-@Un8kk~jyZc0DT;aVLd$ZGf~+ zX#LR>19UYv3LLcu85t1}ONc^|4NP2`Isu-#jI~Q+2LmY4{4_141XOhZn_2+(JI)dS zqJ)}^3YP<9PhAYO98YSz_qp%R*HIL#5J2)&n7~yxL;TTL2x+lT*w&eHy3qGwlHqZVTEfr#Y(H30Xj@{{yP5JeN%)N)KkT!X zD}<~LCfBk5SaBzFIIelP8q}t)p{Fi~o9|xP&8{aTRWNe5|KycuTF#ag)wpLQ@_AvU zXzQrG!AGiT1?{WJA?Y4mvjZzDzPk~uCZ>@%zow+Zi-Gy0Pg01sV=}F$1!q-9RjuG# zhw`Q0$Nqu%9~KSmTG!cwP`*FJfN>6I2rmdXehI7x-#Ul{xE9X~6679CYfsN@9_$qP z7Q|*Vv=Ccl*n&NAKE{q_^qJ@5EKR)53$Z5DW@|&WoZHpjqg!2oaN0!O5QCHdfzVCo zpF|>#7g%ze-IQ?TJKKaq$=TT0J~k>@J_T)0RQKNV-lv@qntLKz!<^UdY;=x}u1jDQ z1R1f>{0zy71@B}_3#=IafiAuh_0i59KFXQ)9nZZlNHyQV7OQ${{{SC7xw!u;aOhbh zz&ymhk;&J%5lCG@oalHupQhfU#+)~iM{VJuTiw)NQ1YScIPtjzXqeb{j70Mvxnwew z#-=4dMsYKLAqqfpErS;z^Eyc9>T71V`4w36T#Nk=gqc4xZ~P1fiMTA%x)uR5`M{>h zv%(Rub1RsK0C5&+9qd9PxK{N)dfogmK! z8|FXYOZp(+I|k}W*mY>Fb9a9UA9X5BxifMrn#U1l*U%E=KCb5_-bH!JV22B8BX?pq zDeV74-_A!a&4Qt;2%`|3gv$^6wHpe;5lZ^r@#P$AtH3 zK)4^-$*t}G`wMb{gJ%EHQ`l6}z4Bi5^jVL2f>%X^BEO|i2dq9tt|>iNdP+pIl_K*DtX^KoMZ|jAiurxOp$AP^?^Viy;2n$$?K8-;3LIL_@Ky+F&Yn0M{iikvc8M3 z^jCFD5$T&mr9rODF*nh3{iG#*3-fp5an$BsY>%%R_P5O-d`yd`ojor@w4o**5nXUm{qlZblhFFk&zeqNMvgc*kKhr`Y+3(*4n!M#hf|()x+u) zU{B7o=6rrfQlxa4UQxezSgj+T=1tDwoUp8CVDpexo?__Lo*#`Cdb%*#%$BTJlAg$s zyt%cuxJ?|BCAQ9&)jAi$abcLV#LOQ)VWRMXUZFd=q?$u03?vh_@y9vC4r@EnrgZ6@ z$SfaLOgxTT>juH?nUQtNqPDgU%WwfrEUBdm8T^6;(xI8{HjSwNx@Cu)%5OdMEq;-b z&Y0wVk4u6*_ofCWZQ1;O&~^=GDvn1c1&QK!9L{#V~d&wzNSk1+q%jijnDC^9=ymc&AGp9#?DnSGe6e1 z)AGl#NThwXfq2A)3>^vyM3fk$)lFnw*r$Stzg=b3|HdrwXe&~;uR1qjV|O9|tNj?{ z_VDPh>n5zpPS|!o$+Wp97dg#n*a5_FMVIJk0k*se@LPGhSVGStTNy!|_w!6DL_u-Q zZ;4gs&CAuX%1lwXN|!)zguj1{td^ly9w)fM68RN(ZK>?CsBq}y2K5matF2d5&vkAS z+wsY#I}YA{xZ+hxS(1~XS&A$%3K-TE{G5O?x5x-CuAgBq1pblVTA+9})*A$n~t&L}mS;r}VS$NiT0= zI@5d>F}|LtTF{L>B3F*np)DJ0z~;J6TRoZTF;E`j**Hv>f(VqNs2TE^-u(kLrQn|| z1w3Vy2ooeQcNX&ULl;Q*h|DdKt4jaK{~brXCt>Rj6Qga)_PCFKcCxpO;s z!OG;^@O*w_Nr^^daM&*oB5lceAqJaY6KHy^&D=6Z5w=V~wl9)z(i>MS?^`zi$Sm}PiR~P% zzAl+M38HOdxmP@C8qkmgA36E0ET_P|nrWbm6-pq+$sk~LTo20nch0cBZW&!5GIuO> z^r;&A+7UhsQVuKx<=Z()w|`gD_oBRXk}H!50()76Ur5_AL+;`LFg32SW^J^j0&+Ri zQeD%b_s#?*1Wc(ef2C==i%_%Sc5)BHEs536*>}B21VXwd?*d%^$32j?vT&kY-HM>d zmzZPaGGL^nW#(tnwTu_lcvt1h z=?0K}kP1R~xZ?pJglDSU~0Z;T0F8k`4t zL-d;C0c6cO@9dr6ytENZjDohyqpn%KSgn82YGKHqVa?+B)R0Al0o&U@O-wv&ac* z3XYMQ{2?f5o6%U3=rS&zVXoxNDet3@Aft5jvZT;IQCS!FPOVJq_Wzv5YtXv;BE2K} z8vLR{J)-k-RvmDTp7{}@-cIQWdA%P-TQQy4JYa37_@$zuqozV*T;uNKhmX!?7wvcT z=s#!EEbf3+yY6!NED&JjDyCUu-!a5p$8z3UPINvx0wg+r`lpXB+sqYjnOB?{FV5+C z?{}Olj?;wHE#;37d$*2L^WVK#-X2vRSKbKhzs~+VUC@Nbg8dD-YxejDGE;`CnG^>7 zv|T36TYwtDw5%%z6W>*PoxTjCJLgO@UAGEFNiPXG0VB|C)2s@03MV$)u)J3Mkc6-e z7_(*B@)IQLYb-)1;;iamAh}OtyC5;oO)e{|ZKEFdoI2F6*4{pL;f7d=#ewwE;io*3 zWPVc6PZ-mdy|$Z&w~=DCH4?YBCx56pYN&Ur?c+24PpNap3zFOD+KhqHLuO<#y1Ow; zJv!7!S1t;*&ctCjRttF3M3 z>Iyg~=QXLqJi;$!OLEwdKeW1}=6Ec&ZQIY;1sr}4_R>B0RIo$1a(92N6Erzfb?A6~ zhgQu4sbHXx(XN7fRaL%t+$H6JuHDqo7CZ1h!x~Lwi^v0*Dm9F_jeU?+6jpx;(GBW; zg4Fd-2@%jdx+5@CQRQ;71FXb>C5RD=-vdA=jWayaL#-&={s*dC8aU9q{VqA;7a3s8c-_?wjq@Opgfk4o*vvjA6*-`xYrDjHp*kCW9Ny=5Mc%L7dIJH^9E*_2j zj?lhVM0euWkNG6%&y0WckaDUSqexJG+Qu{x=a%8*EIocZ;J3n?M^A3Lbnof*`08n( zZy}ZQ_gXBc`g5mG&8EfDyOtj!%PU$ zh8%EjyTwu8!AJFF=jc8|My@(tPyV74{+ z;Ku#~ZJbUnS0}?1=aeX)KC$xP$Q;fVSJ7|{2+G>ymJcf-Z~ST^OX$2!v}~l~WS?gu zAPy&y7mY;WyEah~U9fg80b&4Ey~-oJO}{BD1o5n8ZO5h}VAZH4ukW}+{7+UkM$LQH zn2s}q98-+h1T&(4($++3&KG{TDdH1&Z;+P$Q7tpU$|wGco&4LRtuB8T(su(JT=TbG zM;CKbQE>qp=}X)PntpDe=;r({@RonV4&8min9>${(A#|)MHcQu&JrCv;!7!(N^0$s z?K(=nKhTctY4P2>Pbh^aJ0!qKBsQ5lJ$FH*-n^`U$FYeKhNc_fKliAK(uaaJoQiDmF1$#935z2Jp|0(b z$ty%XY(`kE=34a!ufNdoLPqvVk$Qc@v=UX`UKUNZxmktKGoJob5 zNg>n=TsgZUXK0vjS8nIvq=RTroh)wcib9>X(}(;NG5=Yln>a=lG>f7Uq_iwLzqsPC z-+l0%Hc(!~Cz(-6urO|y=`9p4L@^?-9`@*)-DtzWJt&)3xFk3^@XTdaTwdC`ah;Ao z^PAiA?*W4inR|D`1EsAWIp z^4%omU|>PN{(JQm!E-UE113Qw4AICq?4n;e$@sYP8Kzxh4+yBJ znLhVD6M$BCjOh{aKhhTe2wQf&_oe%P0^u2$%nI0I#bQXf%>D#`{Fkbr=inD*15{~` z2DlV<;Tses%L@MfTmW*t$>|olOp_A=09Od+m~ALT5`iHIu9q~17|3Dm^?{QUfm`;c zq;okSsih?bf=}$}7DS+i%L6uQ6zf8Ukw4be<{l2$g#lC+l712@fR~~wz_tQix{IC6 zSB#)UaMr@V_#P;eeBr9JIt2%{Z-{V4S13(OkiSL(;a72KMWVi;W)@{#t#YmhJzBRRa58m9E`LL^CRSD-}Ek^aX3h=4WRj4|V_Sks^GCxiEv<9RgHo=d1 zo*0KqNfBM>u;sr@dN4frpu3=VXs|i zl0F7L@Et5c?bUy#YY+pGZXe;*To*qxsV`L~w@v{uCAXd1qcG7e6A^fq*t(99d9_mI zL-0t-06NO1gA3{WeptjlF|1R9z*WD7-k1XIZJ~`ndSE&I1kKLT$cid5pqn2ZsrK?H zuIRX>6#KD8!|ABOx%!Ei3|4uOpX&U5TAf@l4(QF6bx4RR>|Sl!^ZHYKoA#3K#L5tiptQ!7KDJ2PWo<`#Q)M z#LQ!m z`d#|y>mKeBK6ZBShIAiFKv&sE8n-q2n2THfw~N8rI~!55Op}N~jL+TC&rR5?faDq=G%H)YXF@LfLLe7k^ccFP zE2i_#_1^J{(-GM>@wRz>ja;MiyFpZEOpgTf^2K`i@r#p7(e@9C(=vnF5{X`4qd$lX z-_?I(pP`q`>ni{J78}E!de)>AqXqFH)fsKpCU=}Ohc#r6VP|}^0<4Mo(YBN+ zle_tGJVF`iu%nvFL`3O=aJBtNMMvkrw73G)@9mn85gk5c@?^0&I)4 zmIOy`m9Vz;_2Z>a9UeHK7aosn1l_>scZNHKP&J+TsP{LAYL&@&apdFQ9$$E2KV2@| zRy&ZLIyw}bW-dY)=JbTDY5(SKawR`^D;Vn7YE2S)f-7*nPghgkd6iF|dmie%CWUTu z%(y-T>D{F>Xj8R+ZyM>m=n-pJdiuditMs$Hq%=c3A9n=xW1_&3oW$uH65ZKG1^1Y7 zix#ZVaT&5T%}k?e6xwcj#vUt{RrZh~ zo#&f-EJ?2MAcxQN8057NICIZNaLPY0U#SCXcVhUFX?W4Xm7$&2{$Ll6rIyx;=U!=p zZMS$k4Pm=KBQ8~ff-l1?{B_OrYE)H`MwJ)adF-c)zl|{O@J4xSkSY0@t7tb{2HxMF zHWz9apO;OvD!rn1{;=XHxPN~**EM#QSM1hk0oo8AuV8dWt#2l|> ztFF@1!}?|g@2qeX1o?z6(XZnj63cmi-H<9t7ALpDUG^LTt91AZf@uS^EZgk9{$ero z(bLu#Y*2ETPs3%!@S;w@WGrUp*4GiDv>m060HIzJJ}Ffiy>T_!E=CFc8{_GL2?`B4 zedCYaw(pI2ePK3%1iKHXpP9Ky-mNl1_H6QTb-_0*Y7?AnF#H;?ed9iE6`pGtW8d(d zY_>xd7nG;yZ(LR!n{Qd2XcJV%#n$@|#3)fPh3u0l6=^D;iC5Rg<*r-CbsMB}A7-%9 zLMlD+b+q~J&rz9PPaOZ#LXi_CR#)L{(7-9OS2Jc!GkSDu$E+6ZlIGkDw~F|c9MWI^ z=4>?e*}QvKE#atfc|~_$NBltVs!vo6-wkIywU!FXl4kGeoUlQuO>8L%A7e@x&Bx_w zXN~vY?92>?BDQjR{Lr|4?( zuQq=+^;k95^NR;9_f=!w>;`{b_i(?8E@Vn12ouAVf0TTfa{)_wB& zQK4la2qk}0UZ&~y?i8%p@D5~1>|=f`;x4jL|A*sMhlg1y$A9ynl&@OAdDXS8Nf%yN zBWtk&g~sp^-%$oeofoK?O2as!zt%F)R;RVNNtia@-^QJFX=vQTSN7#&fTJkci>B$) zGGo&a`^@#7!_BL7NwhynN0e1cmkLQ3!E{4NzipPZV=QPu`u8|RvzOsxZ4$wHt%F>W zR%*2^!-u>v+mj`s^~LlBm?eNF@5OY3{p^Q~THCRM)_cSmuNP4KyT%N6M3hRzJZM2~#Yk}VCZnd1v?xL8q^;i3_XcJ3`CM>K%a1yx z&h8EQg<0@I%HNiz95(tS*N}_c4#Zzg%f#gBeL`LB?}`@da#4Y{lGv(5Dl7mb`qm!l zc;_V$(8IuEy|rP$4n_PVMOGFWC^e$vG~eBY14_Z_K2f>K{ST|tBFnjY>3YQe`iazc z5*euNdvB=K@yrzBTvDk18Rqt5FuC^th{aE>dCUWKG;c?RUtdrp@j_MQuXX|dmTOk{ zzMIDbPuO5~tcJpYfAa zULb-lgxwy_yFwvZa8pCEig5H$aw(0zHok#c`C}O*l}NAN}1@R zbRk7m@_ve|z+v_RYHlIqA4sr)tc4`^r^m_PZ~s95KqB(C%d}b`|JNwN?COEBos-;{ z$lZJ%^$`rUSF#%h86I&2^B2?22Y_?*w*ixsvL`nRREw6e52G(o6krmd)b)j-NNT22 zVS7yVkn0syya5V>aCU(*Ac1--`!{d&j&{lNrpT!o`%r}XsCLtz@a6?AMitt1@S>1& z#YC}`O9s-K6y1_G_vVGH2A2a74`8tT?A#W*x43J|#*j5-hc4~c=c}b$?M89t@?ytn z0j-`GROjpfg;9@ev#jvkDU7@im`c$Gz19q_@J_q9e)}i$UENe@gB6$1wui`})$avu zhPL)Qt?R+6zVC{r;F;lveRnO125k6`u<(@Oxx5p*MBMS;fV^3qLgWJwkpC@~aLOvVX8wFW^ zH$I|RqsxifE-No60*Yl4=lmkgWdDH_>Cmcb(|0TjkP%M$3o?YsWj1Ml7*UGfczz?r zl>h!nA&S1Q_Xn?4`yUA5AL!j}AS^6_xw}}88|9N^^j-hqY~T-r1dh8=nttxvLsuq|K*xF8U1tqtKq&l7^xkVif99a zQRiErBoO0hzwl_c|L)Y_5Y(}^&3&R0-?@{aGy-0@oDW^72BI!h~BnnypxN_S>O8Y@nmW=k7J?K;(4OAPen)YGmZ z^V4!H9 o%GCDXW_E@+%Q;ZSn`TZB1%J0_aWAj68!n;qhl8-e{BInM;RwDuxA1fj z$M;#^T(}G_62Z*1gZNCseg$mq_&I!&cNFHBbok;%qa9r>a(`A(R&sWOQ0W#BR#|Td z+l@6qZ)Q}}r3%e;?Z?lYR7g&|Z(qAD$adgWJxQzzKKeV6ic?dq2fb5iPo6eh!$iy| zT+kU*j%3_f74h)Ymppi@qL5t+y@lbl#y!u z$?qy~WZ%4o*1}r7pO#nII%nHCFZ8UVyG!|fbb9Mprt}D__QLmxoYjN_JfQlHmBs5= zr4kME->3Q!Q<#m`j*f3>E8cOJYkz8)OSdogiDm*#;w%sz>wLMIGB_Db`dDtF>Z9ZJ z5406NWKfz>G363H=jBI}$DKS1->3G|2VYX&F?zKF(6lB#I@CC(|EBu}Cp2(w;PF{w z-spM*vXpJQt%6lCI}qq9&+z*izq@6G6yS)-pZk+$%{yWTf3Y|Jc8H1AJKLHUpRl5( z&(aRRBlQPe-VnyH`z}pqDZQp3f%bRqS6M6Dbj4p=7$5-u2AliBgVEIhIElsvYcpr* zOr|)4Vf4$nuM2igE_O3P`>%@a+1sj3x+*G{b}Hok@kJac#Tan$QjaVR&V7?uFoZu# z`Q&OkLU8@{07P`oZ_nAe_`B@d_33BB_Axh>{tU&hvEa*U$|5eP5yBG^wU?E6&5%1r zo@P32yQ|V+^C`1zUtzg}G@O^iy4R=Az}eB>fm@IC`Wi>$3o4vFMAwaC?tRM)@p9{Y zqOH1QM5}%(1IsMMQVl2s!Ogcq)s#~gUuh-BDCF{j0HEO^2O4-4FF-TH5)xo7_weU`K;SULW zbOz3j3L14)efZxdc>*N#8{8ed8B@ao^Nv8iqh)8+!1YMPgiuuP6Vsr@W=w$=2PpII$3DE0p)ppk+zfqZOsb;B z>@OJ+TECR9^9GnfgjhIC3eb50erWws_mH(@I)_H7(<7VZi^@W-p&V1f^bGQ;%!*hE z4c}J*F>9oPz%AcH_S2NvYI9azGcT|75r^b7F(0tb@4 z-UEJ9!T>(F(P|4LcpV_>B5s-I<`=xv=a?d*;F#m{WFdfdhny`WP%Wb%nFU_Q!vUo* zT;ch_>l|bVR9RPv2=}lC>;`(OTvy~CX=)-SIG{Z67G^OUb@q)I{%}glP<6!AKXd?| zSop@$07aoV9W8@GP0LSRnQk9KJnR$fZxuS)pgfnNFajt$rupfjki2h`$7F72C-b

x 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�Pfh?lks>i?-d#4Dmu48SM2Q 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%0Aurg>6WONJ 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 diff --git a/inference/images/detection_rcnn/000000570688.jpg b/inference/images/detection_rcnn/000000570688.jpg deleted file mode 100644 index cb304bd56c4010c08611a30dcca58ea9140cea54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138365 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�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%0D4VMGW#Js4Aj+!>|GYQ+%PHsS*#KMEBnG$Kv zeYBe|RHu~_KGeH1i^<((2T8@IxCrrn^4@vmTu*|#RfvgMw5OcbnO$We$&0iu&*i>-khE6Hy^%Hm&q>*SC zCOh6a4Yb02R1^`!WSeMIU<;seJ8Sx@iIPnVNM27q6+~P48 zpua;#7Ee(Hcme3d#JL2dV1PAqM8{t^Nb-ipM*~B>F9Y)t0x&CKodfEk#A$Z@Y<`yp zsR5QD%-hj~AH4Fg65db3Gk~HDMDyaj6{X$q} zM*P&8f4rF?cEVLAjM2J0xE({YFd3$izICo$&$+BoTbi7%1`{OTC=&$cv9K^cra44Q z1iVRxZG$|9aCjkRIa#4`x~2#I1{q%?>!Zqa@kOtR>eAPQaSSv!z$1JcKSr?hIL*WH zDqF_|5@efitGiL>URhzJFc@uX&c~Z%ru?}B7hSS7{<=G79s=Q-)`2~U2F{lhQ)34{ z;z5-k9QWL6A6b5ys@hISH2T

#oy!`N);SsOiWwvC-xPQkZb#0s1vjtn2!IgMJ5c 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

KgbW0626^0HI!q^+J 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

xGbeq`b*lQpge4|)Ru{Kft<-09=sS z1UU`~$pgp($?ib^01=_Yi{+ApXyk%=#Qb|q@spQ$*?FHH?c3|;LxY;wrwCqI5D6VY zzy#oAAAhLrsf`e&TQ6nQUTWzorlF{=wi4yih2t_FAd(1X97kc3><+5&xYkf>nAZlr z(K8qFzfP)65^kmU8=N+p0ZUU=Euy|^MgreSMibO&4>)q z#A`#^59ThIix~N2%yuV83u)C12AcuVMmIIm=MClm024hu-Z>M~jlM>TOfCUcL&xRM z%0D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 RmToMuVX&ENIq_+-|JejjX*B=< diff --git a/inference/predictor/detection_predictor.cpp b/inference/predictor/detection_predictor.cpp deleted file mode 100644 index e47125c5e..000000000 --- a/inference/predictor/detection_predictor.cpp +++ /dev/null @@ -1,455 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "detection_predictor.h" -#include -#include -#include -#include "utils/detection_result.pb.h" -#undef min - -namespace PaddleSolution { - /* lod_buffer: every item in lod_buffer is an image matrix after preprocessing - * input_buffer: same data with lod_buffer after flattening to 1-D vector and padding, needed to be empty before using this function - */ - void padding_minibatch(const std::vector> &lod_buffer, - std::vector &input_buffer, - std::vector &resize_heights, - std::vector &resize_widths, - int channels, int coarsest_stride = 1) { - int batch_size = lod_buffer.size(); - int max_h = -1; - int max_w = -1; - for (int i = 0; i < batch_size; ++i) { - max_h = (max_h > resize_heights[i])? max_h:resize_heights[i]; - max_w = (max_w > resize_widths[i])? max_w:resize_widths[i]; - } - max_h = static_cast(ceil(static_cast(max_h) - / static_cast(coarsest_stride)) * coarsest_stride); - max_w = static_cast(ceil(static_cast(max_w) - / static_cast(coarsest_stride)) * coarsest_stride); - std::cout << "max_w: " << max_w << " max_h: " << max_h << std::endl; - input_buffer.insert(input_buffer.end(), - batch_size * channels * max_h * max_w, 0); - // flatten tensor and padding - for (int i = 0; i < lod_buffer.size(); ++i) { - float *input_buffer_ptr = input_buffer.data() - + i * channels * max_h * max_w; - const float *lod_ptr = lod_buffer[i].data(); - for (int c = 0; c < channels; ++c) { - for (int h = 0; h < resize_heights[i]; ++h) { - memcpy(input_buffer_ptr, lod_ptr, - resize_widths[i] * sizeof(float)); - lod_ptr += resize_widths[i]; - input_buffer_ptr += max_w; - } - input_buffer_ptr += (max_h - resize_heights[i]) * max_w; - } - } - // change resize w, h - for (int i = 0; i < batch_size; ++i) { - resize_widths[i] = max_w; - resize_heights[i] = max_h; - } - } - - void output_detection_result(const float* out_addr, - const std::vector> &lod_vector, - const std::vector &imgs_batch) { - for (int i = 0; i < lod_vector[0].size() - 1; ++i) { - DetectionResult detection_result; - detection_result.set_filename(imgs_batch[i]); - std::cout << imgs_batch[i] << ":" << std::endl; - for (int j = lod_vector[0][i]; j < lod_vector[0][i+1]; ++j) { - DetectionBox *box_ptr = detection_result.add_detection_boxes(); - box_ptr->set_class_( - static_cast(round(out_addr[0 + j * 6]))); - box_ptr->set_score(out_addr[1 + j * 6]); - box_ptr->set_left_top_x(out_addr[2 + j * 6]); - box_ptr->set_left_top_y(out_addr[3 + j * 6]); - box_ptr->set_right_bottom_x(out_addr[4 + j * 6]); - box_ptr->set_right_bottom_y(out_addr[5 + j * 6]); - printf("Class %d, score = %f, left top = [%f, %f], right bottom = [%f, %f]\n", - static_cast(round(out_addr[0 + j * 6])), - out_addr[1 + j * 6], - out_addr[2 + j * 6], - out_addr[3 + j * 6], - out_addr[4 + j * 6], - out_addr[5 + j * 6]); - } - printf("\n"); - std::ofstream output(imgs_batch[i] + ".pb", - std::ios::out | std::ios::trunc | std::ios::binary); - detection_result.SerializeToOstream(&output); - output.close(); - } - } - - int DetectionPredictor::init(const std::string& conf) { - if (!_model_config.load_config(conf)) { - #ifdef _WIN32 - std::cerr << "Fail to load config file: [" << conf << "], " - << "please check whether the config file path is correct" - << std::endl; - #else - LOG(FATAL) << "Fail to load config file: [" << conf << "], " - << "please check whether the config file path is correct"; - #endif - return -1; - } - _preprocessor = PaddleSolution::create_processor(conf); - if (_preprocessor == nullptr) { - #ifdef _WIN32 - std::cerr << "Failed to create_processor, please check whether you" - << " write a correct config file." << std::endl; - #else - LOG(FATAL) << "Failed to create_processor, please check whether" - << " you write a correct config file."; - #endif - return -1; - } - - bool use_gpu = _model_config._use_gpu; - const auto& model_dir = _model_config._model_path; - const auto& model_filename = _model_config._model_file_name; - const auto& params_filename = _model_config._param_file_name; - - // load paddle model file - if (_model_config._predictor_mode == "NATIVE") { - paddle::NativeConfig config; - auto prog_file = utils::path_join(model_dir, model_filename); - auto param_file = utils::path_join(model_dir, params_filename); - config.prog_file = prog_file; - config.param_file = param_file; - config.fraction_of_gpu_memory = 0; - config.use_gpu = use_gpu; - config.device = 0; - _main_predictor = paddle::CreatePaddlePredictor(config); - } else if (_model_config._predictor_mode == "ANALYSIS") { - paddle::AnalysisConfig config; - if (use_gpu) { - config.EnableUseGpu(100, 0); - } - auto prog_file = utils::path_join(model_dir, model_filename); - auto param_file = utils::path_join(model_dir, params_filename); - config.SetModel(prog_file, param_file); - config.SwitchUseFeedFetchOps(false); - config.SwitchSpecifyInputNames(true); - config.EnableMemoryOptim(); - // config.SwitchIrOptim(true); - // config.EnableTensorRtEngine(1<<4, 30, 3); - _main_predictor = paddle::CreatePaddlePredictor(config); - } else { - return -1; - } - return 0; - } - - int DetectionPredictor::predict(const std::vector& imgs) { - if (imgs.size() == 0) { - #ifdef _WIN32 - std::cerr << "No image found! Please check whether the images path" - << " is correct or the format of images is correct\n" - << "Supporting format: [.jpeg|.jpg|.JPEG|.JPG|.bmp|.BMP|.png|.PNG]" << std::endl; - #else - LOG(ERROR) << "No image found! Please check whether the images path" - << " is correct or the format of images is correct\n" - << "Supporting format: [.jpeg|.jpg|.JPEG|.JPG|.bmp|.BMP|.png|.PNG]"; - #endif - return -1; - } - if (_model_config._predictor_mode == "NATIVE") { - return native_predict(imgs); - } else if (_model_config._predictor_mode == "ANALYSIS") { - return analysis_predict(imgs); - } - return -1; - } - - int DetectionPredictor::native_predict(const std::vector& imgs) { - int config_batch_size = _model_config._batch_size; - - int channels = _model_config._channels; - int eval_width = _model_config._resize[0]; - int eval_height = _model_config._resize[1]; - std::size_t total_size = imgs.size(); - int default_batch_size = std::min(config_batch_size, - static_cast(total_size)); - int batch = total_size / default_batch_size + - ((total_size % default_batch_size) != 0); - int batch_buffer_size = default_batch_size * channels - * eval_width * eval_height; - - auto& input_buffer = _buffer; - auto& imgs_batch = _imgs_batch; - float sr; - for (int u = 0; u < batch; ++u) { - int batch_size = default_batch_size; - if (u == (batch - 1) && (total_size % default_batch_size)) { - batch_size = total_size % default_batch_size; - } - - int real_buffer_size = batch_size * channels - * eval_width * eval_height; - std::vector feeds; - input_buffer.clear(); - imgs_batch.clear(); - for (int i = 0; i < batch_size; ++i) { - int idx = u * default_batch_size + i; - imgs_batch.push_back(imgs[idx]); - } - std::vector ori_widths; - std::vector ori_heights; - std::vector resize_widths; - std::vector resize_heights; - std::vector scale_ratios; - ori_widths.resize(batch_size); - ori_heights.resize(batch_size); - resize_widths.resize(batch_size); - resize_heights.resize(batch_size); - scale_ratios.resize(batch_size); - std::vector> lod_buffer(batch_size); - if (!_preprocessor->batch_process(imgs_batch, lod_buffer, - ori_widths.data(), - ori_heights.data(), - resize_widths.data(), - resize_heights.data(), - scale_ratios.data())) { - return -1; - } - // flatten and padding - padding_minibatch(lod_buffer, input_buffer, resize_heights, - resize_widths, channels, - _model_config._coarsest_stride); - paddle::PaddleTensor im_tensor, im_size_tensor, im_info_tensor; - - im_tensor.name = "image"; - im_tensor.shape = std::vector({ batch_size, - channels, - resize_heights[0], - resize_widths[0] }); - im_tensor.data.Reset(input_buffer.data(), - input_buffer.size() * sizeof(float)); - im_tensor.dtype = paddle::PaddleDType::FLOAT32; - - std::vector image_infos; - for (int i = 0; i < batch_size; ++i) { - image_infos.push_back(resize_heights[i]); - image_infos.push_back(resize_widths[i]); - image_infos.push_back(scale_ratios[i]); - } - im_info_tensor.name = "info"; - im_info_tensor.shape = std::vector({batch_size, 3}); - im_info_tensor.data.Reset(image_infos.data(), - batch_size * 3 * sizeof(float)); - im_info_tensor.dtype = paddle::PaddleDType::FLOAT32; - - std::vector image_size; - for (int i = 0; i < batch_size; ++i) { - image_size.push_back(ori_heights[i]); - image_size.push_back(ori_widths[i]); - } - - std::vector image_size_f; - for (int i = 0; i < batch_size; ++i) { - image_size_f.push_back(ori_heights[i]); - image_size_f.push_back(ori_widths[i]); - image_size_f.push_back(1.0); - } - - int feeds_size = _model_config._feeds_size; - im_size_tensor.name = "im_size"; - if (feeds_size == 2) { - im_size_tensor.shape = std::vector({ batch_size, 2}); - im_size_tensor.data.Reset(image_size.data(), - batch_size * 2 * sizeof(int)); - im_size_tensor.dtype = paddle::PaddleDType::INT32; - } else if (feeds_size == 3) { - im_size_tensor.shape = std::vector({ batch_size, 3}); - im_size_tensor.data.Reset(image_size_f.data(), - batch_size * 3 * sizeof(float)); - im_size_tensor.dtype = paddle::PaddleDType::FLOAT32; - } - std::cout << "Feed size = " << feeds_size << std::endl; - feeds.push_back(im_tensor); - if (_model_config._feeds_size > 2) { - feeds.push_back(im_info_tensor); - } - feeds.push_back(im_size_tensor); - _outputs.clear(); - - auto t1 = std::chrono::high_resolution_clock::now(); - if (!_main_predictor->Run(feeds, &_outputs, batch_size)) { - #ifdef _WIN32 - std::cerr << "Failed: NativePredictor->Run() return false at batch: " << u; - #else - LOG(ERROR) << "Failed: NativePredictor->Run() return false at batch: " << u; - #endif - continue; - } - auto t2 = std::chrono::high_resolution_clock::now(); - auto duration = std::chrono::duration_cast(t2 - t1).count(); - std::cout << "runtime = " << duration << std::endl; - std::cout << "Number of outputs:" << _outputs.size() << std::endl; - int out_num = 1; - // print shape of first output tensor for debugging - std::cout << "size of outputs[" << 0 << "]: ("; - for (int j = 0; j < _outputs[0].shape.size(); ++j) { - out_num *= _outputs[0].shape[j]; - std::cout << _outputs[0].shape[j] << ","; - } - std::cout << ")" << std::endl; - - // const size_t nums = _outputs.front().data.length() / sizeof(float); - // if (out_num % batch_size != 0 || out_num != nums) { - // LOG(ERROR) << "outputs data size mismatch with shape size."; - // return -1; - // } - float* out_addr = reinterpret_cast(_outputs[0].data.data()); - output_detection_result(out_addr, _outputs[0].lod, imgs_batch); - } - return 0; - } - - int DetectionPredictor::analysis_predict( - const std::vector& imgs) { - int config_batch_size = _model_config._batch_size; - int channels = _model_config._channels; - int eval_width = _model_config._resize[0]; - int eval_height = _model_config._resize[1]; - auto total_size = imgs.size(); - int default_batch_size = std::min(config_batch_size, - static_cast(total_size)); - int batch = total_size / default_batch_size - + ((total_size % default_batch_size) != 0); - int batch_buffer_size = default_batch_size * channels - * eval_width * eval_height; - - auto& input_buffer = _buffer; - auto& imgs_batch = _imgs_batch; - for (int u = 0; u < batch; ++u) { - int batch_size = default_batch_size; - if (u == (batch - 1) && (total_size % default_batch_size)) { - batch_size = total_size % default_batch_size; - } - - int real_buffer_size = batch_size * channels * - eval_width * eval_height; - std::vector feeds; - // input_buffer.resize(real_buffer_size); - input_buffer.clear(); - imgs_batch.clear(); - for (int i = 0; i < batch_size; ++i) { - int idx = u * default_batch_size + i; - imgs_batch.push_back(imgs[idx]); - } - - std::vector ori_widths; - std::vector ori_heights; - std::vector resize_widths; - std::vector resize_heights; - std::vector scale_ratios; - ori_widths.resize(batch_size); - ori_heights.resize(batch_size); - resize_widths.resize(batch_size); - resize_heights.resize(batch_size); - scale_ratios.resize(batch_size); - - std::vector> lod_buffer(batch_size); - if (!_preprocessor->batch_process(imgs_batch, lod_buffer, - ori_widths.data(), - ori_heights.data(), - resize_widths.data(), - resize_heights.data(), - scale_ratios.data())) { - std::cout << "Failed to preprocess!" << std::endl; - return -1; - } - - // flatten tensor - padding_minibatch(lod_buffer, input_buffer, resize_heights, - resize_widths, channels, - _model_config._coarsest_stride); - - std::vector input_names = _main_predictor->GetInputNames(); - auto im_tensor = _main_predictor->GetInputTensor( - input_names.front()); - im_tensor->Reshape({ batch_size, channels, - resize_heights[0], resize_widths[0] }); - im_tensor->copy_from_cpu(input_buffer.data()); - - if (input_names.size() > 2) { - std::vector image_infos; - for (int i = 0; i < batch_size; ++i) { - image_infos.push_back(resize_heights[i]); - image_infos.push_back(resize_widths[i]); - image_infos.push_back(scale_ratios[i]); - } - auto im_info_tensor = _main_predictor->GetInputTensor( - input_names[1]); - im_info_tensor->Reshape({batch_size, 3}); - im_info_tensor->copy_from_cpu(image_infos.data()); - } - - std::vector image_size; - for (int i = 0; i < batch_size; ++i) { - image_size.push_back(ori_heights[i]); - image_size.push_back(ori_widths[i]); - } - std::vector image_size_f; - for (int i = 0; i < batch_size; ++i) { - image_size_f.push_back(static_cast(ori_heights[i])); - image_size_f.push_back(static_cast(ori_widths[i])); - image_size_f.push_back(1.0); - } - - auto im_size_tensor = _main_predictor->GetInputTensor( - input_names.back()); - if (input_names.size() > 2) { - im_size_tensor->Reshape({batch_size, 3}); - im_size_tensor->copy_from_cpu(image_size_f.data()); - } else { - im_size_tensor->Reshape({batch_size, 2}); - im_size_tensor->copy_from_cpu(image_size.data()); - } - - auto t1 = std::chrono::high_resolution_clock::now(); - _main_predictor->ZeroCopyRun(); - auto t2 = std::chrono::high_resolution_clock::now(); - auto duration = std::chrono::duration_cast(t2 - t1).count(); - std::cout << "runtime = " << duration << std::endl; - - auto output_names = _main_predictor->GetOutputNames(); - auto output_t = _main_predictor->GetOutputTensor(output_names[0]); - std::vector out_data; - std::vector output_shape = output_t->shape(); - - int out_num = 1; - std::cout << "size of outputs[" << 0 << "]: ("; - for (int j = 0; j < output_shape.size(); ++j) { - out_num *= output_shape[j]; - std::cout << output_shape[j] << ","; - } - std::cout << ")" << std::endl; - - out_data.resize(out_num); - output_t->copy_to_cpu(out_data.data()); - - float* out_addr = reinterpret_cast(out_data.data()); - auto lod_vector = output_t->lod(); - output_detection_result(out_addr, lod_vector, imgs_batch); - } - return 0; - } -} // namespace PaddleSolution diff --git a/inference/predictor/detection_predictor.h b/inference/predictor/detection_predictor.h deleted file mode 100644 index 2ce6f4520..000000000 --- a/inference/predictor/detection_predictor.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma once - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "utils/conf_parser.h" -#include "utils/utils.h" -#include "preprocessor/preprocessor.h" - -namespace PaddleSolution { -class DetectionPredictor { - public: - // init a predictor with a yaml config file - int init(const std::string& conf); - // predict api - int predict(const std::vector& imgs); - - private: - int native_predict(const std::vector& imgs); - int analysis_predict(const std::vector& imgs); - private: - std::vector _buffer; - std::vector _imgs_batch; - std::vector _outputs; - - PaddleSolution::PaddleModelConfigPaser _model_config; - std::shared_ptr _preprocessor; - std::unique_ptr _main_predictor; -}; -} // namespace PaddleSolution diff --git a/inference/preprocessor/preprocessor.cpp b/inference/preprocessor/preprocessor.cpp deleted file mode 100644 index 941416a04..000000000 --- a/inference/preprocessor/preprocessor.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include - -#include "preprocessor.h" -#include "preprocessor_detection.h" -#include - -namespace PaddleSolution { - - std::shared_ptr create_processor(const std::string& conf_file) { - auto config = std::make_shared(); - if (!config->load_config(conf_file)) { - #ifdef _WIN32 - std::cerr << "fail to load conf file [" << conf_file << "]" << std::endl; - #else - LOG(FATAL) << "fail to load conf file [" << conf_file << "]"; - #endif - return nullptr; - } - - if (config->_pre_processor == "DetectionPreProcessor") { - auto p = std::make_shared(); - if (!p->init(config)) { - return nullptr; - } - return p; - } - #ifdef _WIN32 - std::cerr << "unknown processor_name [" << config->_pre_processor << "]," - << "please check whether PRE_PROCESSOR is set correctly" << std::endl; - #else - LOG(FATAL) << "unknown processor_name [" << config->_pre_processor << "]," - << "please check whether PRE_PROCESSOR is set correctly"; - #endif - return nullptr; - } -} // namespace PaddleSolution diff --git a/inference/preprocessor/preprocessor.h b/inference/preprocessor/preprocessor.h deleted file mode 100644 index b5cfa467f..000000000 --- a/inference/preprocessor/preprocessor.h +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma once -#include -#include -#include - -#include -#include -#include - -#include "utils/conf_parser.h" - -namespace PaddleSolution { - -class ImagePreProcessor { - protected: - ImagePreProcessor() {} - - public: - virtual ~ImagePreProcessor() {} - - virtual bool single_process(const std::string& fname, - float* data, - int* ori_w, - int* ori_h) { - return true; - } - - virtual bool batch_process(const std::vector& imgs, - float* data, - int* ori_w, - int* ori_h) { - return true; - } - - virtual bool single_process(const std::string& fname, float* data) { - return true; - } - - virtual bool batch_process(const std::vector& imgs, - float* data) { - return true; - } - - virtual bool single_process(const std::string& fname, - std::vector &data, - int* ori_w, int* ori_h, - int* resize_w, int* resize_h, - float* scale_ratio) { - return true; - } - - virtual bool batch_process(const std::vector& imgs, - std::vector> &data, - int* ori_w, int* ori_h, int* resize_w, - int* resize_h, float* scale_ratio) { - return true; - } -}; // end of class ImagePreProcessor - -std::shared_ptr - create_processor(const std::string &config_file); -} // namespace PaddleSolution - diff --git a/inference/preprocessor/preprocessor_detection.cpp b/inference/preprocessor/preprocessor_detection.cpp deleted file mode 100644 index 15d2dc3c4..000000000 --- a/inference/preprocessor/preprocessor_detection.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include -#include -#include - -#include "preprocessor_detection.h" -#include "utils/utils.h" - -namespace PaddleSolution { -bool DetectionPreProcessor::single_process(const std::string& fname, - std::vector &vec_data, - int* ori_w, int* ori_h, - int* resize_w, int* resize_h, - float* scale_ratio) { - cv::Mat im1 = cv::imread(fname, -1); - cv::Mat im; - if (_config->_feeds_size == 3) { // faster rcnn - im1.convertTo(im, CV_32FC3, 1/255.0); - } else if (_config->_feeds_size == 2) { // yolo v3 - im = im1; - } - if (im.data == nullptr || im.empty()) { - #ifdef _WIN32 - std::cerr << "Failed to open image: " << fname << std::endl; - #else - LOG(ERROR) << "Failed to open image: " << fname; - #endif - return false; - } - int channels = im.channels(); - if (channels == 1) { - cv::cvtColor(im, im, cv::COLOR_GRAY2BGR); - } - channels = im.channels(); - if (channels != 3 && channels != 4) { - #ifdef _WIN32 - std::cerr << "Only support rgb(gray) and rgba image." << std::endl; - #else - LOG(ERROR) << "Only support rgb(gray) and rgba image."; - #endif - return false; - } - *ori_w = im.cols; - *ori_h = im.rows; - cv::cvtColor(im, im, cv::COLOR_BGR2RGB); - // channels = im.channels(); - - // resize - int rw = im.cols; - int rh = im.rows; - float im_scale_ratio; - utils::scaling(_config->_resize_type, rw, rh, _config->_resize[0], - _config->_resize[1], _config->_target_short_size, - _config->_resize_max_size, im_scale_ratio); - cv::Size resize_size(rw, rh); - *resize_w = rw; - *resize_h = rh; - *scale_ratio = im_scale_ratio; - if (*ori_h != rh || *ori_w != rw) { - cv::Mat im_temp; - if (_config->_resize_type == utils::SCALE_TYPE::UNPADDING) { - cv::resize(im, im_temp, resize_size, 0, 0, cv::INTER_LINEAR); - } else if (_config->_resize_type == utils::SCALE_TYPE::RANGE_SCALING) { - cv::resize(im, im_temp, cv::Size(), im_scale_ratio, - im_scale_ratio, cv::INTER_LINEAR); - } - im = im_temp; - } - - vec_data.resize(channels * rw * rh); - float *data = vec_data.data(); - - float* pmean = _config->_mean.data(); - float* pscale = _config->_std.data(); - for (int h = 0; h < rh; ++h) { - const uchar* uptr = im.ptr(h); - const float* fptr = im.ptr(h); - int im_index = 0; - for (int w = 0; w < rw; ++w) { - for (int c = 0; c < channels; ++c) { - int top_index = (c * rh + h) * rw + w; - float pixel; - if (_config->_feeds_size == 2) { // yolo v3 - pixel = static_cast(uptr[im_index++]) / 255.0; - } else if (_config->_feeds_size == 3) { - pixel = fptr[im_index++]; - } - pixel = (pixel - pmean[c]) / pscale[c]; - data[top_index] = pixel; - } - } - } - return true; -} - -bool DetectionPreProcessor::batch_process(const std::vector& imgs, - std::vector> &data, - int* ori_w, int* ori_h, int* resize_w, - int* resize_h, float* scale_ratio) { - auto ic = _config->_channels; - auto iw = _config->_resize[0]; - auto ih = _config->_resize[1]; - std::vector threads; - for (int i = 0; i < imgs.size(); ++i) { - std::string path = imgs[i]; - int* width = &ori_w[i]; - int* height = &ori_h[i]; - int* resize_width = &resize_w[i]; - int* resize_height = &resize_h[i]; - float* sr = &scale_ratio[i]; - threads.emplace_back([this, &data, i, path, width, height, - resize_width, resize_height, sr] { - std::vector buffer; - single_process(path, buffer, width, height, resize_width, - resize_height, sr); - data[i] = buffer; - }); - } - for (auto& t : threads) { - if (t.joinable()) { - t.join(); - } - } - return true; -} - -bool DetectionPreProcessor::init(std::shared_ptr config) { - _config = config; - return true; -} -} // namespace PaddleSolution diff --git a/inference/preprocessor/preprocessor_detection.h b/inference/preprocessor/preprocessor_detection.h deleted file mode 100644 index 7ee1678e3..000000000 --- a/inference/preprocessor/preprocessor_detection.h +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma once - -#include "preprocessor.h" - -namespace PaddleSolution { - -class DetectionPreProcessor : public ImagePreProcessor { - public: - DetectionPreProcessor() : _config(nullptr) { - } - - bool init(std::shared_ptr config); - - bool single_process(const std::string& fname, std::vector &data, - int* ori_w, int* ori_h, int* resize_w, - int* resize_h, float* scale_ratio); - - bool batch_process(const std::vector& imgs, - std::vector> &data, - int* ori_w, int* ori_h, int* resize_w, - int* resize_h, float* scale_ratio); - private: - std::shared_ptr _config; -}; - -} // namespace PaddleSolution diff --git a/inference/tools/coco17.json b/inference/tools/coco17.json deleted file mode 100644 index d3bbbaad0..000000000 --- a/inference/tools/coco17.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "0" : "background", - "1" : "person", - "2" : "bicycle", - "3" : "car", - "4" : "motorcycle", - "5" : "airplane", - "6" : "bus", - "7" : "train", - "8" : "truck", - "9" : "boat", - "10" : "traffic light", - "11" : "fire hydrant", - "12" : "stop sign", - "13" : "parking meter", - "14" : "bench", - "15" : "bird", - "16" : "cat", - "17" : "dog", - "18" : "horse", - "19" : "sheep", - "20" : "cow", - "21" : "elephant", - "22" : "bear", - "23" : "zebra", - "24" : "giraffe", - "25" : "backpack", - "26" : "umbrella", - "27" : "handbag", - "28" : "tie", - "29" : "suitcase", - "30" : "frisbee", - "31" : "skis", - "32" : "snowboard", - "33" : "sports ball", - "34" : "kite", - "35" : "baseball bat", - "36" : "baseball glove", - "37" : "skateboard", - "38" : "surfboard", - "39" : "tennis racket", - "40" : "bottle", - "41" : "wine glass", - "42" : "cup", - "43" : "fork", - "44" : "knife", - "45" : "spoon", - "46" : "bowl", - "47" : "banana", - "48" : "apple", - "49" : "sandwich", - "50" : "orange", - "51" : "broccoli", - "52" : "carrot", - "53" : "hot dog", - "54" : "pizza", - "55" : "donut", - "56" : "cake", - "57" : "chair", - "58" : "couch", - "59" : "potted plant", - "60" : "bed", - "61" : "dining table", - "62" : "toilet", - "63" : "tv", - "64" : "laptop", - "65" : "mouse", - "66" : "remote", - "67" : "keyboard", - "68" : "cell phone", - "69" : "microwave", - "70" : "oven", - "71" : "toaster", - "72" : "sink", - "73" : "refrigerator", - "74" : "book", - "75" : "clock", - "76" : "vase", - "77" : "scissors", - "78" : "teddy bear", - "79" : "hair drier", - "80" : "toothbrush" -} diff --git a/inference/tools/detection_result_pb2.py b/inference/tools/detection_result_pb2.py deleted file mode 100644 index bb7acae60..000000000 --- a/inference/tools/detection_result_pb2.py +++ /dev/null @@ -1,214 +0,0 @@ -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: detection_result.proto - -import sys -_b = sys.version_info[0] < 3 and (lambda x: x) or (lambda x: x.encode('latin1')) -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -from google.protobuf import descriptor_pb2 -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - -DESCRIPTOR = _descriptor.FileDescriptor( - name='detection_result.proto', - package='PaddleSolution', - syntax='proto2', - serialized_pb=_b( - '\n\x16\x64\x65tection_result.proto\x12\x0ePaddleSolution\"\x84\x01\n\x0c\x44\x65tectionBox\x12\r\n\x05\x63lass\x18\x01 \x01(\x05\x12\r\n\x05score\x18\x02 \x01(\x02\x12\x12\n\nleft_top_x\x18\x03 \x01(\x02\x12\x12\n\nleft_top_y\x18\x04 \x01(\x02\x12\x16\n\x0eright_bottom_x\x18\x05 \x01(\x02\x12\x16\n\x0eright_bottom_y\x18\x06 \x01(\x02\"Z\n\x0f\x44\x65tectionResult\x12\x10\n\x08\x66ilename\x18\x01 \x01(\t\x12\x35\n\x0f\x64\x65tection_boxes\x18\x02 \x03(\x0b\x32\x1c.PaddleSolution.DetectionBox' - )) -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -_DETECTIONBOX = _descriptor.Descriptor( - name='DetectionBox', - full_name='PaddleSolution.DetectionBox', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='class', - full_name='PaddleSolution.DetectionBox.class', - index=0, - number=1, - type=5, - cpp_type=1, - label=1, - has_default_value=False, - default_value=0, - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='score', - full_name='PaddleSolution.DetectionBox.score', - index=1, - number=2, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='left_top_x', - full_name='PaddleSolution.DetectionBox.left_top_x', - index=2, - number=3, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='left_top_y', - full_name='PaddleSolution.DetectionBox.left_top_y', - index=3, - number=4, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='right_bottom_x', - full_name='PaddleSolution.DetectionBox.right_bottom_x', - index=4, - number=5, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='right_bottom_y', - full_name='PaddleSolution.DetectionBox.right_bottom_y', - index=5, - number=6, - type=2, - cpp_type=6, - label=1, - has_default_value=False, - default_value=float(0), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=43, - serialized_end=175) - -_DETECTIONRESULT = _descriptor.Descriptor( - name='DetectionResult', - full_name='PaddleSolution.DetectionResult', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='filename', - full_name='PaddleSolution.DetectionResult.filename', - index=0, - number=1, - type=9, - cpp_type=9, - label=1, - has_default_value=False, - default_value=_b("").decode('utf-8'), - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - _descriptor.FieldDescriptor( - name='detection_boxes', - full_name='PaddleSolution.DetectionResult.detection_boxes', - index=1, - number=2, - type=11, - cpp_type=10, - label=3, - has_default_value=False, - default_value=[], - message_type=None, - enum_type=None, - containing_type=None, - is_extension=False, - extension_scope=None, - options=None), - ], - extensions=[], - nested_types=[], - enum_types=[], - options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[], - serialized_start=177, - serialized_end=267) - -_DETECTIONRESULT.fields_by_name['detection_boxes'].message_type = _DETECTIONBOX -DESCRIPTOR.message_types_by_name['DetectionBox'] = _DETECTIONBOX -DESCRIPTOR.message_types_by_name['DetectionResult'] = _DETECTIONRESULT - -DetectionBox = _reflection.GeneratedProtocolMessageType( - 'DetectionBox', - (_message.Message, ), - dict( - DESCRIPTOR=_DETECTIONBOX, - __module__='detection_result_pb2' - # @@protoc_insertion_point(class_scope:PaddleSolution.DetectionBox) - )) -_sym_db.RegisterMessage(DetectionBox) - -DetectionResult = _reflection.GeneratedProtocolMessageType( - 'DetectionResult', - (_message.Message, ), - dict( - DESCRIPTOR=_DETECTIONRESULT, - __module__='detection_result_pb2' - # @@protoc_insertion_point(class_scope:PaddleSolution.DetectionResult) - )) -_sym_db.RegisterMessage(DetectionResult) - -# @@protoc_insertion_point(module_scope) diff --git a/inference/tools/vis.py b/inference/tools/vis.py deleted file mode 100644 index a4f7c6b41..000000000 --- a/inference/tools/vis.py +++ /dev/null @@ -1,118 +0,0 @@ -# coding: utf-8 -# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import detection_result_pb2 -import cv2 -import sys -import gflags -import numpy as np -import json -from PIL import Image, ImageDraw, ImageFont -import io - -Flags = gflags.FLAGS -gflags.DEFINE_string('img_path', 'abc', 'image path') -gflags.DEFINE_string('img_result_path', 'def', 'image result path') -gflags.DEFINE_float('threshold', 0.0, 'threshold of score') -gflags.DEFINE_string('c2l_path', 'ghk', 'class to label path') - - -def colormap(rgb=False): - """ - Get colormap - """ - color_list = np.array([ - 0.000, 0.447, 0.741, 0.850, 0.325, 0.098, 0.929, 0.694, 0.125, 0.494, - 0.184, 0.556, 0.466, 0.674, 0.188, 0.301, 0.745, 0.933, 0.635, 0.078, - 0.184, 0.300, 0.300, 0.300, 0.600, 0.600, 0.600, 1.000, 0.000, 0.000, - 1.000, 0.500, 0.000, 0.749, 0.749, 0.000, 0.000, 1.000, 0.000, 0.000, - 0.000, 1.000, 0.667, 0.000, 1.000, 0.333, 0.333, 0.000, 0.333, 0.667, - 0.000, 0.333, 1.000, 0.000, 0.667, 0.333, 0.000, 0.667, 0.667, 0.000, - 0.667, 1.000, 0.000, 1.000, 0.333, 0.000, 1.000, 0.667, 0.000, 1.000, - 1.000, 0.000, 0.000, 0.333, 0.500, 0.000, 0.667, 0.500, 0.000, 1.000, - 0.500, 0.333, 0.000, 0.500, 0.333, 0.333, 0.500, 0.333, 0.667, 0.500, - 0.333, 1.000, 0.500, 0.667, 0.000, 0.500, 0.667, 0.333, 0.500, 0.667, - 0.667, 0.500, 0.667, 1.000, 0.500, 1.000, 0.000, 0.500, 1.000, 0.333, - 0.500, 1.000, 0.667, 0.500, 1.000, 1.000, 0.500, 0.000, 0.333, 1.000, - 0.000, 0.667, 1.000, 0.000, 1.000, 1.000, 0.333, 0.000, 1.000, 0.333, - 0.333, 1.000, 0.333, 0.667, 1.000, 0.333, 1.000, 1.000, 0.667, 0.000, - 1.000, 0.667, 0.333, 1.000, 0.667, 0.667, 1.000, 0.667, 1.000, 1.000, - 1.000, 0.000, 1.000, 1.000, 0.333, 1.000, 1.000, 0.667, 1.000, 0.167, - 0.000, 0.000, 0.333, 0.000, 0.000, 0.500, 0.000, 0.000, 0.667, 0.000, - 0.000, 0.833, 0.000, 0.000, 1.000, 0.000, 0.000, 0.000, 0.167, 0.000, - 0.000, 0.333, 0.000, 0.000, 0.500, 0.000, 0.000, 0.667, 0.000, 0.000, - 0.833, 0.000, 0.000, 1.000, 0.000, 0.000, 0.000, 0.167, 0.000, 0.000, - 0.333, 0.000, 0.000, 0.500, 0.000, 0.000, 0.667, 0.000, 0.000, 0.833, - 0.000, 0.000, 1.000, 0.000, 0.000, 0.000, 0.143, 0.143, 0.143, 0.286, - 0.286, 0.286, 0.429, 0.429, 0.429, 0.571, 0.571, 0.571, 0.714, 0.714, - 0.714, 0.857, 0.857, 0.857, 1.000, 1.000, 1.000 - ]).astype(np.float32) - color_list = color_list.reshape((-1, 3)) * 255 - if not rgb: - color_list = color_list[:, ::-1] - return color_list - - -if __name__ == "__main__": - if len(sys.argv) != 5: - print( - "Usage: python vis.py --img_path=/path/to/image --img_result_path=/path/to/image_result.pb --threshold=0.1 --c2l_path=/path/to/class2label.json" - ) - else: - Flags(sys.argv) - color_list = colormap(rgb=True) - text_thickness = 1 - text_scale = 0.3 - with open(Flags.img_result_path, "rb") as f: - detection_result = detection_result_pb2.DetectionResult() - detection_result.ParseFromString(f.read()) - img = cv2.imread(Flags.img_path) - img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) - class2LabelMap = dict() - with io.open(Flags.c2l_path, "r", encoding="utf-8") as json_f: - class2LabelMap = json.load(json_f) - for box in detection_result.detection_boxes: - if box.score >= Flags.threshold: - box_class = getattr(box, 'class') - text_class_score_str = "%s %.2f" % ( - class2LabelMap.get(str(box_class)), box.score) - text_point = (int(box.left_top_x), int(box.left_top_y)) - - ptLeftTop = (int(box.left_top_x), int(box.left_top_y)) - ptRightBottom = (int(box.right_bottom_x), - int(box.right_bottom_y)) - box_thickness = 1 - color = tuple([int(c) for c in color_list[box_class]]) - cv2.rectangle(img, ptLeftTop, ptRightBottom, color, - box_thickness, 8) - if text_point[1] < 0: - text_point = (int(box.left_top_x), - int(box.right_bottom_y)) - WHITE = (255, 255, 255) - font = cv2.FONT_HERSHEY_SIMPLEX - text_size = cv2.getTextSize(text_class_score_str, font, - text_scale, text_thickness) - - text_box_left_top = (text_point[0], - text_point[1] - text_size[0][1]) - text_box_right_bottom = ( - text_point[0] + text_size[0][0], text_point[1]) - - cv2.rectangle(img, text_box_left_top, - text_box_right_bottom, color, -1, 8) - cv2.putText(img, text_class_score_str, text_point, font, - text_scale, WHITE, text_thickness) - img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) - cv2.imwrite(Flags.img_path + ".png", img) diff --git a/inference/utils/conf_parser.h b/inference/utils/conf_parser.h deleted file mode 100644 index 97461a6e9..000000000 --- a/inference/utils/conf_parser.h +++ /dev/null @@ -1,297 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma once -#include -#include -#include -#include -#include - -namespace PaddleSolution { - -class PaddleModelConfigPaser { - std::map _scaling_map; - - public: - PaddleModelConfigPaser() - :_class_num(0), - _channels(0), - _use_gpu(0), - _batch_size(1), - _target_short_size(0), - _model_file_name("__model__"), - _param_file_name("__params__"), - _scaling_map{{"UNPADDING", 0}, - {"RANGE_SCALING", 1}}, - _feeds_size(1), - _coarsest_stride(1) {} - - ~PaddleModelConfigPaser() {} - - void reset() { - _crop_size.clear(); - _resize.clear(); - _mean.clear(); - _std.clear(); - _img_type.clear(); - _class_num = 0; - _channels = 0; - _use_gpu = 0; - _target_short_size = 0; - _batch_size = 1; - _model_file_name = "__model__"; - _model_path = "./"; - _param_file_name = "__params__"; - _resize_type = 0; - _resize_max_size = 0; - _feeds_size = 1; - _coarsest_stride = 1; - } - - std::string process_parenthesis(const std::string& str) { - if (str.size() < 2) { - return str; - } - std::string nstr(str); - if (str[0] == '(' && str.back() == ')') { - nstr[0] = '['; - nstr[str.size() - 1] = ']'; - } - return nstr; - } - - template - std::vector parse_str_to_vec(const std::string& str) { - std::vector data; - auto node = YAML::Load(str); - for (const auto& item : node) { - data.push_back(item.as()); - } - return data; - } - - bool load_config(const std::string& conf_file) { - reset(); - YAML::Node config; - try { - config = YAML::LoadFile(conf_file); - } catch(...) { - return false; - } - // 1. get resize - if (config["DEPLOY"]["EVAL_CROP_SIZE"].IsDefined()) { - auto str = config["DEPLOY"]["EVAL_CROP_SIZE"].as(); - _resize = parse_str_to_vec(process_parenthesis(str)); - } else { - std::cerr << "Please set EVAL_CROP_SIZE: (xx, xx)" << std::endl; - return false; - } - // 0. get crop_size - if (config["DEPLOY"]["CROP_SIZE"].IsDefined()) { - auto crop_str = config["DEPLOY"]["CROP_SIZE"].as(); - _crop_size = parse_str_to_vec(process_parenthesis(crop_str)); - } else { - _crop_size = _resize; - } - - // 2. get mean - if (config["DEPLOY"]["MEAN"].IsDefined()) { - for (const auto& item : config["DEPLOY"]["MEAN"]) { - _mean.push_back(item.as()); - } - } else { - std::cerr << "Please set MEAN: [xx, xx, xx]" << std::endl; - return false; - } - // 3. get std - if(config["DEPLOY"]["STD"].IsDefined()) { - for (const auto& item : config["DEPLOY"]["STD"]) { - _std.push_back(item.as()); - } - } else { - std::cerr << "Please set STD: [xx, xx, xx]" << std::endl; - return false; - } - // 4. get image type - if (config["DEPLOY"]["IMAGE_TYPE"].IsDefined()) { - _img_type = config["DEPLOY"]["IMAGE_TYPE"].as(); - } else { - std::cerr << "Please set IMAGE_TYPE: \"rgb\" or \"rgba\"" << std::endl; - return false; - } - // 5. get class number - if (config["DEPLOY"]["NUM_CLASSES"].IsDefined()) { - _class_num = config["DEPLOY"]["NUM_CLASSES"].as(); - } else { - std::cerr << "Please set NUM_CLASSES: x" << std::endl; - return false; - } - // 7. set model path - if (config["DEPLOY"]["MODEL_PATH"].IsDefined()) { - _model_path = config["DEPLOY"]["MODEL_PATH"].as(); - } else { - std::cerr << "Please set MODEL_PATH: \"/path/to/model_dir\"" << std::endl; - return false; - } - // 8. get model file_name - if (config["DEPLOY"]["MODEL_FILENAME"].IsDefined()) { - _model_file_name = config["DEPLOY"]["MODEL_FILENAME"].as(); - } else { - _model_file_name = "__model__"; - } - // 9. get model param file name - if (config["DEPLOY"]["PARAMS_FILENAME"].IsDefined()) { - _param_file_name - = config["DEPLOY"]["PARAMS_FILENAME"].as(); - } else { - _param_file_name = "__params__"; - } - // 10. get pre_processor - if (config["DEPLOY"]["PRE_PROCESSOR"].IsDefined()) { - _pre_processor = config["DEPLOY"]["PRE_PROCESSOR"].as(); - } else { - std::cerr << "Please set PRE_PROCESSOR: \"DetectionPreProcessor\"" << std::endl; - return false; - } - // 11. use_gpu - if (config["DEPLOY"]["USE_GPU"].IsDefined()) { - _use_gpu = config["DEPLOY"]["USE_GPU"].as(); - } else { - _use_gpu = 0; - } - // 12. predictor_mode - if (config["DEPLOY"]["PREDICTOR_MODE"].IsDefined()) { - _predictor_mode = config["DEPLOY"]["PREDICTOR_MODE"].as(); - } else { - std::cerr << "Please set PREDICTOR_MODE: \"NATIVE\" or \"ANALYSIS\"" << std::endl; - return false; - } - // 13. batch_size - if (config["DEPLOY"]["BATCH_SIZE"].IsDefined()) { - _batch_size = config["DEPLOY"]["BATCH_SIZE"].as(); - } else { - _batch_size = 1; - } - // 14. channels - if (config["DEPLOY"]["CHANNELS"].IsDefined()) { - _channels = config["DEPLOY"]["CHANNELS"].as(); - } else { - std::cerr << "Please set CHANNELS: x" << std::endl; - return false; - } - // 15. target_short_size - if (config["DEPLOY"]["TARGET_SHORT_SIZE"].IsDefined()) { - _target_short_size = config["DEPLOY"]["TARGET_SHORT_SIZE"].as(); - } - // 16.resize_type - if (config["DEPLOY"]["RESIZE_TYPE"].IsDefined() && - _scaling_map.find(config["DEPLOY"]["RESIZE_TYPE"].as()) != _scaling_map.end()) { - _resize_type = _scaling_map[config["DEPLOY"]["RESIZE_TYPE"].as()]; - } else { - _resize_type = 0; - } - // 17.resize_max_size - if (config["DEPLOY"]["RESIZE_MAX_SIZE"].IsDefined()) { - _resize_max_size = config["DEPLOY"]["RESIZE_MAX_SIZE"].as(); - } - // 18.feeds_size - if (config["DEPLOY"]["FEEDS_SIZE"].IsDefined()) { - _feeds_size = config["DEPLOY"]["FEEDS_SIZE"].as(); - } - // 19. coarsest_stride - if (config["DEPLOY"]["COARSEST_STRIDE"].IsDefined()) { - _coarsest_stride = config["DEPLOY"]["COARSEST_STRIDE"].as(); - } - return true; - } - - void debug() const { - std::cout << "SCALE_RESIZE: (" << _resize[0] << ", " - << _resize[1] << ")" << std::endl; - - std::cout << "MEAN: ["; - for (int i = 0; i < _mean.size(); ++i) { - if (i != _mean.size() - 1) { - std::cout << _mean[i] << ", "; - } else { - std::cout << _mean[i]; - } - } - std::cout << "]" << std::endl; - - std::cout << "STD: ["; - for (int i = 0; i < _std.size(); ++i) { - if (i != _std.size() - 1) { - std::cout << _std[i] << ", "; - } else { - std::cout << _std[i]; - } - } - std::cout << "]" << std::endl; - std::cout << "DEPLOY.TARGET_SHORT_SIZE: " << _target_short_size - << std::endl; - std::cout << "DEPLOY.IMAGE_TYPE: " << _img_type << std::endl; - std::cout << "DEPLOY.NUM_CLASSES: " << _class_num << std::endl; - std::cout << "DEPLOY.CHANNELS: " << _channels << std::endl; - std::cout << "DEPLOY.MODEL_PATH: " << _model_path << std::endl; - std::cout << "DEPLOY.MODEL_FILENAME: " << _model_file_name - << std::endl; - std::cout << "DEPLOY.PARAMS_FILENAME: " << _param_file_name - << std::endl; - std::cout << "DEPLOY.PRE_PROCESSOR: " << _pre_processor << std::endl; - std::cout << "DEPLOY.USE_GPU: " << _use_gpu << std::endl; - std::cout << "DEPLOY.PREDICTOR_MODE: " << _predictor_mode << std::endl; - std::cout << "DEPLOY.BATCH_SIZE: " << _batch_size << std::endl; - } - // DEPLOY.COARSEST_STRIDE - int _coarsest_stride; - // DEPLOY.FEEDS_SIZE - int _feeds_size; - // DEPLOY.RESIZE_TYPE 0:unpadding 1:rangescaling Default:0 - int _resize_type; - // DEPLOY.RESIZE_MAX_SIZE - int _resize_max_size; - // DEPLOY.CROP_SIZE - std::vector _crop_size; - // DEPLOY.SCALE_RESIZE - std::vector _resize; - // DEPLOY.MEAN - std::vector _mean; - // DEPLOY.STD - std::vector _std; - // DEPLOY.IMAGE_TYPE - std::string _img_type; - // DEPLOY.TARGET_SHORT_SIZE - int _target_short_size; - // DEPLOY.NUM_CLASSES - int _class_num; - // DEPLOY.CHANNELS - int _channels; - // DEPLOY.MODEL_PATH - std::string _model_path; - // DEPLOY.MODEL_FILENAME - std::string _model_file_name; - // DEPLOY.PARAMS_FILENAME - std::string _param_file_name; - // DEPLOY.PRE_PROCESSOR - std::string _pre_processor; - // DEPLOY.USE_GPU - int _use_gpu; - // DEPLOY.PREDICTOR_MODE - std::string _predictor_mode; - // DEPLOY.BATCH_SIZE - int _batch_size; -}; -} // namespace PaddleSolution diff --git a/inference/utils/detection_result.pb.cc b/inference/utils/detection_result.pb.cc deleted file mode 100644 index b5cce7317..000000000 --- a/inference/utils/detection_result.pb.cc +++ /dev/null @@ -1,1159 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: detection_result.proto - -#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION -#include "detection_result.pb.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -// @@protoc_insertion_point(includes) - -namespace PaddleSolution { - -namespace { - -const ::google::protobuf::Descriptor* DetectionBox_descriptor_ = NULL; -const ::google::protobuf::internal::GeneratedMessageReflection* - DetectionBox_reflection_ = NULL; -const ::google::protobuf::Descriptor* DetectionResult_descriptor_ = NULL; -const ::google::protobuf::internal::GeneratedMessageReflection* - DetectionResult_reflection_ = NULL; - -} // namespace - - -void protobuf_AssignDesc_detection_5fresult_2eproto() GOOGLE_ATTRIBUTE_COLD; -void protobuf_AssignDesc_detection_5fresult_2eproto() { - protobuf_AddDesc_detection_5fresult_2eproto(); - const ::google::protobuf::FileDescriptor* file = - ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName( - "detection_result.proto"); - GOOGLE_CHECK(file != NULL); - DetectionBox_descriptor_ = file->message_type(0); - static const int DetectionBox_offsets_[6] = { - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, class__), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, score_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, left_top_x_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, left_top_y_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, right_bottom_x_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, right_bottom_y_), - }; - DetectionBox_reflection_ = - ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection( - DetectionBox_descriptor_, - DetectionBox::internal_default_instance(), - DetectionBox_offsets_, - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, _has_bits_), - -1, - -1, - sizeof(DetectionBox), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionBox, _internal_metadata_)); - DetectionResult_descriptor_ = file->message_type(1); - static const int DetectionResult_offsets_[2] = { - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionResult, filename_), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionResult, detection_boxes_), - }; - DetectionResult_reflection_ = - ::google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection( - DetectionResult_descriptor_, - DetectionResult::internal_default_instance(), - DetectionResult_offsets_, - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionResult, _has_bits_), - -1, - -1, - sizeof(DetectionResult), - GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(DetectionResult, _internal_metadata_)); -} - -namespace { - -GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_); -void protobuf_AssignDescriptorsOnce() { - ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_, - &protobuf_AssignDesc_detection_5fresult_2eproto); -} - -void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD; -void protobuf_RegisterTypes(const ::std::string&) { - protobuf_AssignDescriptorsOnce(); - ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( - DetectionBox_descriptor_, DetectionBox::internal_default_instance()); - ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage( - DetectionResult_descriptor_, DetectionResult::internal_default_instance()); -} - -} // namespace - -void protobuf_ShutdownFile_detection_5fresult_2eproto() { - DetectionBox_default_instance_.Shutdown(); - delete DetectionBox_reflection_; - DetectionResult_default_instance_.Shutdown(); - delete DetectionResult_reflection_; -} - -void protobuf_InitDefaults_detection_5fresult_2eproto_impl() { - GOOGLE_PROTOBUF_VERIFY_VERSION; - - DetectionBox_default_instance_.DefaultConstruct(); - ::google::protobuf::internal::GetEmptyString(); - DetectionResult_default_instance_.DefaultConstruct(); - DetectionBox_default_instance_.get_mutable()->InitAsDefaultInstance(); - DetectionResult_default_instance_.get_mutable()->InitAsDefaultInstance(); -} - -GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_InitDefaults_detection_5fresult_2eproto_once_); -void protobuf_InitDefaults_detection_5fresult_2eproto() { - ::google::protobuf::GoogleOnceInit(&protobuf_InitDefaults_detection_5fresult_2eproto_once_, - &protobuf_InitDefaults_detection_5fresult_2eproto_impl); -} -void protobuf_AddDesc_detection_5fresult_2eproto_impl() { - GOOGLE_PROTOBUF_VERIFY_VERSION; - - protobuf_InitDefaults_detection_5fresult_2eproto(); - ::google::protobuf::DescriptorPool::InternalAddGeneratedFile( - "\n\026detection_result.proto\022\016PaddleSolution" - "\"\204\001\n\014DetectionBox\022\r\n\005class\030\001 \001(\005\022\r\n\005scor" - "e\030\002 \001(\002\022\022\n\nleft_top_x\030\003 \001(\002\022\022\n\nleft_top_" - "y\030\004 \001(\002\022\026\n\016right_bottom_x\030\005 \001(\002\022\026\n\016right" - "_bottom_y\030\006 \001(\002\"Z\n\017DetectionResult\022\020\n\010fi" - "lename\030\001 \001(\t\0225\n\017detection_boxes\030\002 \003(\0132\034." - "PaddleSolution.DetectionBox", 267); - ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile( - "detection_result.proto", &protobuf_RegisterTypes); - ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_detection_5fresult_2eproto); -} - -GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_detection_5fresult_2eproto_once_); -void protobuf_AddDesc_detection_5fresult_2eproto() { - ::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_detection_5fresult_2eproto_once_, - &protobuf_AddDesc_detection_5fresult_2eproto_impl); -} -// Force AddDescriptors() to be called at static initialization time. -struct StaticDescriptorInitializer_detection_5fresult_2eproto { - StaticDescriptorInitializer_detection_5fresult_2eproto() { - protobuf_AddDesc_detection_5fresult_2eproto(); - } -} static_descriptor_initializer_detection_5fresult_2eproto_; - -namespace { - -static void MergeFromFail(int line) GOOGLE_ATTRIBUTE_COLD GOOGLE_ATTRIBUTE_NORETURN; -static void MergeFromFail(int line) { - ::google::protobuf::internal::MergeFromFail(__FILE__, line); -} - -} // namespace - - -// =================================================================== - -#if !defined(_MSC_VER) || _MSC_VER >= 1900 -const int DetectionBox::kClassFieldNumber; -const int DetectionBox::kScoreFieldNumber; -const int DetectionBox::kLeftTopXFieldNumber; -const int DetectionBox::kLeftTopYFieldNumber; -const int DetectionBox::kRightBottomXFieldNumber; -const int DetectionBox::kRightBottomYFieldNumber; -#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 - -DetectionBox::DetectionBox() - : ::google::protobuf::Message(), _internal_metadata_(NULL) { - if (this != internal_default_instance()) protobuf_InitDefaults_detection_5fresult_2eproto(); - SharedCtor(); - // @@protoc_insertion_point(constructor:PaddleSolution.DetectionBox) -} - -void DetectionBox::InitAsDefaultInstance() { -} - -DetectionBox::DetectionBox(const DetectionBox& from) - : ::google::protobuf::Message(), - _internal_metadata_(NULL) { - SharedCtor(); - UnsafeMergeFrom(from); - // @@protoc_insertion_point(copy_constructor:PaddleSolution.DetectionBox) -} - -void DetectionBox::SharedCtor() { - _cached_size_ = 0; - ::memset(&class__, 0, reinterpret_cast(&right_bottom_y_) - - reinterpret_cast(&class__) + sizeof(right_bottom_y_)); -} - -DetectionBox::~DetectionBox() { - // @@protoc_insertion_point(destructor:PaddleSolution.DetectionBox) - SharedDtor(); -} - -void DetectionBox::SharedDtor() { -} - -void DetectionBox::SetCachedSize(int size) const { - GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); - _cached_size_ = size; - GOOGLE_SAFE_CONCURRENT_WRITES_END(); -} -const ::google::protobuf::Descriptor* DetectionBox::descriptor() { - protobuf_AssignDescriptorsOnce(); - return DetectionBox_descriptor_; -} - -const DetectionBox& DetectionBox::default_instance() { - protobuf_InitDefaults_detection_5fresult_2eproto(); - return *internal_default_instance(); -} - -::google::protobuf::internal::ExplicitlyConstructed DetectionBox_default_instance_; - -DetectionBox* DetectionBox::New(::google::protobuf::Arena* arena) const { - DetectionBox* n = new DetectionBox; - if (arena != NULL) { - arena->Own(n); - } - return n; -} - -void DetectionBox::Clear() { -// @@protoc_insertion_point(message_clear_start:PaddleSolution.DetectionBox) -#if defined(__clang__) -#define ZR_HELPER_(f) \ - _Pragma("clang diagnostic push") \ - _Pragma("clang diagnostic ignored \"-Winvalid-offsetof\"") \ - __builtin_offsetof(DetectionBox, f) \ - _Pragma("clang diagnostic pop") -#else -#define ZR_HELPER_(f) reinterpret_cast(\ - &reinterpret_cast(16)->f) -#endif - -#define ZR_(first, last) do {\ - ::memset(&(first), 0,\ - ZR_HELPER_(last) - ZR_HELPER_(first) + sizeof(last));\ -} while (0) - - ZR_(class__, right_bottom_y_); - -#undef ZR_HELPER_ -#undef ZR_ - - _has_bits_.Clear(); - if (_internal_metadata_.have_unknown_fields()) { - mutable_unknown_fields()->Clear(); - } -} - -bool DetectionBox::MergePartialFromCodedStream( - ::google::protobuf::io::CodedInputStream* input) { -#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure - ::google::protobuf::uint32 tag; - // @@protoc_insertion_point(parse_start:PaddleSolution.DetectionBox) - for (;;) { - ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127); - tag = p.first; - if (!p.second) goto handle_unusual; - switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { - // optional int32 class = 1; - case 1: { - if (tag == 8) { - set_has_class_(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>( - input, &class__))); - } else { - goto handle_unusual; - } - if (input->ExpectTag(21)) goto parse_score; - break; - } - - // optional float score = 2; - case 2: { - if (tag == 21) { - parse_score: - set_has_score(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( - input, &score_))); - } else { - goto handle_unusual; - } - if (input->ExpectTag(29)) goto parse_left_top_x; - break; - } - - // optional float left_top_x = 3; - case 3: { - if (tag == 29) { - parse_left_top_x: - set_has_left_top_x(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( - input, &left_top_x_))); - } else { - goto handle_unusual; - } - if (input->ExpectTag(37)) goto parse_left_top_y; - break; - } - - // optional float left_top_y = 4; - case 4: { - if (tag == 37) { - parse_left_top_y: - set_has_left_top_y(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( - input, &left_top_y_))); - } else { - goto handle_unusual; - } - if (input->ExpectTag(45)) goto parse_right_bottom_x; - break; - } - - // optional float right_bottom_x = 5; - case 5: { - if (tag == 45) { - parse_right_bottom_x: - set_has_right_bottom_x(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( - input, &right_bottom_x_))); - } else { - goto handle_unusual; - } - if (input->ExpectTag(53)) goto parse_right_bottom_y; - break; - } - - // optional float right_bottom_y = 6; - case 6: { - if (tag == 53) { - parse_right_bottom_y: - set_has_right_bottom_y(); - DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< - float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>( - input, &right_bottom_y_))); - } else { - goto handle_unusual; - } - if (input->ExpectAtEnd()) goto success; - break; - } - - default: { - handle_unusual: - if (tag == 0 || - ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == - ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { - goto success; - } - DO_(::google::protobuf::internal::WireFormat::SkipField( - input, tag, mutable_unknown_fields())); - break; - } - } - } -success: - // @@protoc_insertion_point(parse_success:PaddleSolution.DetectionBox) - return true; -failure: - // @@protoc_insertion_point(parse_failure:PaddleSolution.DetectionBox) - return false; -#undef DO_ -} - -void DetectionBox::SerializeWithCachedSizes( - ::google::protobuf::io::CodedOutputStream* output) const { - // @@protoc_insertion_point(serialize_start:PaddleSolution.DetectionBox) - // optional int32 class = 1; - if (has_class_()) { - ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->class_(), output); - } - - // optional float score = 2; - if (has_score()) { - ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->score(), output); - } - - // optional float left_top_x = 3; - if (has_left_top_x()) { - ::google::protobuf::internal::WireFormatLite::WriteFloat(3, this->left_top_x(), output); - } - - // optional float left_top_y = 4; - if (has_left_top_y()) { - ::google::protobuf::internal::WireFormatLite::WriteFloat(4, this->left_top_y(), output); - } - - // optional float right_bottom_x = 5; - if (has_right_bottom_x()) { - ::google::protobuf::internal::WireFormatLite::WriteFloat(5, this->right_bottom_x(), output); - } - - // optional float right_bottom_y = 6; - if (has_right_bottom_y()) { - ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->right_bottom_y(), output); - } - - if (_internal_metadata_.have_unknown_fields()) { - ::google::protobuf::internal::WireFormat::SerializeUnknownFields( - unknown_fields(), output); - } - // @@protoc_insertion_point(serialize_end:PaddleSolution.DetectionBox) -} - -::google::protobuf::uint8* DetectionBox::InternalSerializeWithCachedSizesToArray( - bool deterministic, ::google::protobuf::uint8* target) const { - (void)deterministic; // Unused - // @@protoc_insertion_point(serialize_to_array_start:PaddleSolution.DetectionBox) - // optional int32 class = 1; - if (has_class_()) { - target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->class_(), target); - } - - // optional float score = 2; - if (has_score()) { - target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(2, this->score(), target); - } - - // optional float left_top_x = 3; - if (has_left_top_x()) { - target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(3, this->left_top_x(), target); - } - - // optional float left_top_y = 4; - if (has_left_top_y()) { - target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(4, this->left_top_y(), target); - } - - // optional float right_bottom_x = 5; - if (has_right_bottom_x()) { - target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(5, this->right_bottom_x(), target); - } - - // optional float right_bottom_y = 6; - if (has_right_bottom_y()) { - target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(6, this->right_bottom_y(), target); - } - - if (_internal_metadata_.have_unknown_fields()) { - target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( - unknown_fields(), target); - } - // @@protoc_insertion_point(serialize_to_array_end:PaddleSolution.DetectionBox) - return target; -} - -size_t DetectionBox::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:PaddleSolution.DetectionBox) - size_t total_size = 0; - - if (_has_bits_[0 / 32] & 63u) { - // optional int32 class = 1; - if (has_class_()) { - total_size += 1 + - ::google::protobuf::internal::WireFormatLite::Int32Size( - this->class_()); - } - - // optional float score = 2; - if (has_score()) { - total_size += 1 + 4; - } - - // optional float left_top_x = 3; - if (has_left_top_x()) { - total_size += 1 + 4; - } - - // optional float left_top_y = 4; - if (has_left_top_y()) { - total_size += 1 + 4; - } - - // optional float right_bottom_x = 5; - if (has_right_bottom_x()) { - total_size += 1 + 4; - } - - // optional float right_bottom_y = 6; - if (has_right_bottom_y()) { - total_size += 1 + 4; - } - - } - if (_internal_metadata_.have_unknown_fields()) { - total_size += - ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( - unknown_fields()); - } - int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); - GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); - _cached_size_ = cached_size; - GOOGLE_SAFE_CONCURRENT_WRITES_END(); - return total_size; -} - -void DetectionBox::MergeFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:PaddleSolution.DetectionBox) - if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__); - const DetectionBox* source = - ::google::protobuf::internal::DynamicCastToGenerated( - &from); - if (source == NULL) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:PaddleSolution.DetectionBox) - ::google::protobuf::internal::ReflectionOps::Merge(from, this); - } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:PaddleSolution.DetectionBox) - UnsafeMergeFrom(*source); - } -} - -void DetectionBox::MergeFrom(const DetectionBox& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:PaddleSolution.DetectionBox) - if (GOOGLE_PREDICT_TRUE(&from != this)) { - UnsafeMergeFrom(from); - } else { - MergeFromFail(__LINE__); - } -} - -void DetectionBox::UnsafeMergeFrom(const DetectionBox& from) { - GOOGLE_DCHECK(&from != this); - if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from.has_class_()) { - set_class_(from.class_()); - } - if (from.has_score()) { - set_score(from.score()); - } - if (from.has_left_top_x()) { - set_left_top_x(from.left_top_x()); - } - if (from.has_left_top_y()) { - set_left_top_y(from.left_top_y()); - } - if (from.has_right_bottom_x()) { - set_right_bottom_x(from.right_bottom_x()); - } - if (from.has_right_bottom_y()) { - set_right_bottom_y(from.right_bottom_y()); - } - } - if (from._internal_metadata_.have_unknown_fields()) { - ::google::protobuf::UnknownFieldSet::MergeToInternalMetdata( - from.unknown_fields(), &_internal_metadata_); - } -} - -void DetectionBox::CopyFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:PaddleSolution.DetectionBox) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -void DetectionBox::CopyFrom(const DetectionBox& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:PaddleSolution.DetectionBox) - if (&from == this) return; - Clear(); - UnsafeMergeFrom(from); -} - -bool DetectionBox::IsInitialized() const { - - return true; -} - -void DetectionBox::Swap(DetectionBox* other) { - if (other == this) return; - InternalSwap(other); -} -void DetectionBox::InternalSwap(DetectionBox* other) { - std::swap(class__, other->class__); - std::swap(score_, other->score_); - std::swap(left_top_x_, other->left_top_x_); - std::swap(left_top_y_, other->left_top_y_); - std::swap(right_bottom_x_, other->right_bottom_x_); - std::swap(right_bottom_y_, other->right_bottom_y_); - std::swap(_has_bits_[0], other->_has_bits_[0]); - _internal_metadata_.Swap(&other->_internal_metadata_); - std::swap(_cached_size_, other->_cached_size_); -} - -::google::protobuf::Metadata DetectionBox::GetMetadata() const { - protobuf_AssignDescriptorsOnce(); - ::google::protobuf::Metadata metadata; - metadata.descriptor = DetectionBox_descriptor_; - metadata.reflection = DetectionBox_reflection_; - return metadata; -} - -#if PROTOBUF_INLINE_NOT_IN_HEADERS -// DetectionBox - -// optional int32 class = 1; -bool DetectionBox::has_class_() const { - return (_has_bits_[0] & 0x00000001u) != 0; -} -void DetectionBox::set_has_class_() { - _has_bits_[0] |= 0x00000001u; -} -void DetectionBox::clear_has_class_() { - _has_bits_[0] &= ~0x00000001u; -} -void DetectionBox::clear_class_() { - class__ = 0; - clear_has_class_(); -} -::google::protobuf::int32 DetectionBox::class_() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.class) - return class__; -} -void DetectionBox::set_class_(::google::protobuf::int32 value) { - set_has_class_(); - class__ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.class) -} - -// optional float score = 2; -bool DetectionBox::has_score() const { - return (_has_bits_[0] & 0x00000002u) != 0; -} -void DetectionBox::set_has_score() { - _has_bits_[0] |= 0x00000002u; -} -void DetectionBox::clear_has_score() { - _has_bits_[0] &= ~0x00000002u; -} -void DetectionBox::clear_score() { - score_ = 0; - clear_has_score(); -} -float DetectionBox::score() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.score) - return score_; -} -void DetectionBox::set_score(float value) { - set_has_score(); - score_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.score) -} - -// optional float left_top_x = 3; -bool DetectionBox::has_left_top_x() const { - return (_has_bits_[0] & 0x00000004u) != 0; -} -void DetectionBox::set_has_left_top_x() { - _has_bits_[0] |= 0x00000004u; -} -void DetectionBox::clear_has_left_top_x() { - _has_bits_[0] &= ~0x00000004u; -} -void DetectionBox::clear_left_top_x() { - left_top_x_ = 0; - clear_has_left_top_x(); -} -float DetectionBox::left_top_x() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.left_top_x) - return left_top_x_; -} -void DetectionBox::set_left_top_x(float value) { - set_has_left_top_x(); - left_top_x_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.left_top_x) -} - -// optional float left_top_y = 4; -bool DetectionBox::has_left_top_y() const { - return (_has_bits_[0] & 0x00000008u) != 0; -} -void DetectionBox::set_has_left_top_y() { - _has_bits_[0] |= 0x00000008u; -} -void DetectionBox::clear_has_left_top_y() { - _has_bits_[0] &= ~0x00000008u; -} -void DetectionBox::clear_left_top_y() { - left_top_y_ = 0; - clear_has_left_top_y(); -} -float DetectionBox::left_top_y() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.left_top_y) - return left_top_y_; -} -void DetectionBox::set_left_top_y(float value) { - set_has_left_top_y(); - left_top_y_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.left_top_y) -} - -// optional float right_bottom_x = 5; -bool DetectionBox::has_right_bottom_x() const { - return (_has_bits_[0] & 0x00000010u) != 0; -} -void DetectionBox::set_has_right_bottom_x() { - _has_bits_[0] |= 0x00000010u; -} -void DetectionBox::clear_has_right_bottom_x() { - _has_bits_[0] &= ~0x00000010u; -} -void DetectionBox::clear_right_bottom_x() { - right_bottom_x_ = 0; - clear_has_right_bottom_x(); -} -float DetectionBox::right_bottom_x() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.right_bottom_x) - return right_bottom_x_; -} -void DetectionBox::set_right_bottom_x(float value) { - set_has_right_bottom_x(); - right_bottom_x_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.right_bottom_x) -} - -// optional float right_bottom_y = 6; -bool DetectionBox::has_right_bottom_y() const { - return (_has_bits_[0] & 0x00000020u) != 0; -} -void DetectionBox::set_has_right_bottom_y() { - _has_bits_[0] |= 0x00000020u; -} -void DetectionBox::clear_has_right_bottom_y() { - _has_bits_[0] &= ~0x00000020u; -} -void DetectionBox::clear_right_bottom_y() { - right_bottom_y_ = 0; - clear_has_right_bottom_y(); -} -float DetectionBox::right_bottom_y() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.right_bottom_y) - return right_bottom_y_; -} -void DetectionBox::set_right_bottom_y(float value) { - set_has_right_bottom_y(); - right_bottom_y_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.right_bottom_y) -} - -inline const DetectionBox* DetectionBox::internal_default_instance() { - return &DetectionBox_default_instance_.get(); -} -#endif // PROTOBUF_INLINE_NOT_IN_HEADERS - -// =================================================================== - -#if !defined(_MSC_VER) || _MSC_VER >= 1900 -const int DetectionResult::kFilenameFieldNumber; -const int DetectionResult::kDetectionBoxesFieldNumber; -#endif // !defined(_MSC_VER) || _MSC_VER >= 1900 - -DetectionResult::DetectionResult() - : ::google::protobuf::Message(), _internal_metadata_(NULL) { - if (this != internal_default_instance()) protobuf_InitDefaults_detection_5fresult_2eproto(); - SharedCtor(); - // @@protoc_insertion_point(constructor:PaddleSolution.DetectionResult) -} - -void DetectionResult::InitAsDefaultInstance() { -} - -DetectionResult::DetectionResult(const DetectionResult& from) - : ::google::protobuf::Message(), - _internal_metadata_(NULL) { - SharedCtor(); - UnsafeMergeFrom(from); - // @@protoc_insertion_point(copy_constructor:PaddleSolution.DetectionResult) -} - -void DetectionResult::SharedCtor() { - _cached_size_ = 0; - filename_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} - -DetectionResult::~DetectionResult() { - // @@protoc_insertion_point(destructor:PaddleSolution.DetectionResult) - SharedDtor(); -} - -void DetectionResult::SharedDtor() { - filename_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} - -void DetectionResult::SetCachedSize(int size) const { - GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); - _cached_size_ = size; - GOOGLE_SAFE_CONCURRENT_WRITES_END(); -} -const ::google::protobuf::Descriptor* DetectionResult::descriptor() { - protobuf_AssignDescriptorsOnce(); - return DetectionResult_descriptor_; -} - -const DetectionResult& DetectionResult::default_instance() { - protobuf_InitDefaults_detection_5fresult_2eproto(); - return *internal_default_instance(); -} - -::google::protobuf::internal::ExplicitlyConstructed DetectionResult_default_instance_; - -DetectionResult* DetectionResult::New(::google::protobuf::Arena* arena) const { - DetectionResult* n = new DetectionResult; - if (arena != NULL) { - arena->Own(n); - } - return n; -} - -void DetectionResult::Clear() { -// @@protoc_insertion_point(message_clear_start:PaddleSolution.DetectionResult) - if (has_filename()) { - filename_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - } - detection_boxes_.Clear(); - _has_bits_.Clear(); - if (_internal_metadata_.have_unknown_fields()) { - mutable_unknown_fields()->Clear(); - } -} - -bool DetectionResult::MergePartialFromCodedStream( - ::google::protobuf::io::CodedInputStream* input) { -#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure - ::google::protobuf::uint32 tag; - // @@protoc_insertion_point(parse_start:PaddleSolution.DetectionResult) - for (;;) { - ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoff(127); - tag = p.first; - if (!p.second) goto handle_unusual; - switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { - // optional string filename = 1; - case 1: { - if (tag == 10) { - DO_(::google::protobuf::internal::WireFormatLite::ReadString( - input, this->mutable_filename())); - ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField( - this->filename().data(), this->filename().length(), - ::google::protobuf::internal::WireFormat::PARSE, - "PaddleSolution.DetectionResult.filename"); - } else { - goto handle_unusual; - } - if (input->ExpectTag(18)) goto parse_detection_boxes; - break; - } - - // repeated .PaddleSolution.DetectionBox detection_boxes = 2; - case 2: { - if (tag == 18) { - parse_detection_boxes: - DO_(input->IncrementRecursionDepth()); - parse_loop_detection_boxes: - DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtualNoRecursionDepth( - input, add_detection_boxes())); - } else { - goto handle_unusual; - } - if (input->ExpectTag(18)) goto parse_loop_detection_boxes; - input->UnsafeDecrementRecursionDepth(); - if (input->ExpectAtEnd()) goto success; - break; - } - - default: { - handle_unusual: - if (tag == 0 || - ::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == - ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { - goto success; - } - DO_(::google::protobuf::internal::WireFormat::SkipField( - input, tag, mutable_unknown_fields())); - break; - } - } - } -success: - // @@protoc_insertion_point(parse_success:PaddleSolution.DetectionResult) - return true; -failure: - // @@protoc_insertion_point(parse_failure:PaddleSolution.DetectionResult) - return false; -#undef DO_ -} - -void DetectionResult::SerializeWithCachedSizes( - ::google::protobuf::io::CodedOutputStream* output) const { - // @@protoc_insertion_point(serialize_start:PaddleSolution.DetectionResult) - // optional string filename = 1; - if (has_filename()) { - ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField( - this->filename().data(), this->filename().length(), - ::google::protobuf::internal::WireFormat::SERIALIZE, - "PaddleSolution.DetectionResult.filename"); - ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased( - 1, this->filename(), output); - } - - // repeated .PaddleSolution.DetectionBox detection_boxes = 2; - for (unsigned int i = 0, n = this->detection_boxes_size(); i < n; i++) { - ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray( - 2, this->detection_boxes(i), output); - } - - if (_internal_metadata_.have_unknown_fields()) { - ::google::protobuf::internal::WireFormat::SerializeUnknownFields( - unknown_fields(), output); - } - // @@protoc_insertion_point(serialize_end:PaddleSolution.DetectionResult) -} - -::google::protobuf::uint8* DetectionResult::InternalSerializeWithCachedSizesToArray( - bool deterministic, ::google::protobuf::uint8* target) const { - (void)deterministic; // Unused - // @@protoc_insertion_point(serialize_to_array_start:PaddleSolution.DetectionResult) - // optional string filename = 1; - if (has_filename()) { - ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField( - this->filename().data(), this->filename().length(), - ::google::protobuf::internal::WireFormat::SERIALIZE, - "PaddleSolution.DetectionResult.filename"); - target = - ::google::protobuf::internal::WireFormatLite::WriteStringToArray( - 1, this->filename(), target); - } - - // repeated .PaddleSolution.DetectionBox detection_boxes = 2; - for (unsigned int i = 0, n = this->detection_boxes_size(); i < n; i++) { - target = ::google::protobuf::internal::WireFormatLite:: - InternalWriteMessageNoVirtualToArray( - 2, this->detection_boxes(i), false, target); - } - - if (_internal_metadata_.have_unknown_fields()) { - target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray( - unknown_fields(), target); - } - // @@protoc_insertion_point(serialize_to_array_end:PaddleSolution.DetectionResult) - return target; -} - -size_t DetectionResult::ByteSizeLong() const { -// @@protoc_insertion_point(message_byte_size_start:PaddleSolution.DetectionResult) - size_t total_size = 0; - - // optional string filename = 1; - if (has_filename()) { - total_size += 1 + - ::google::protobuf::internal::WireFormatLite::StringSize( - this->filename()); - } - - // repeated .PaddleSolution.DetectionBox detection_boxes = 2; - { - unsigned int count = this->detection_boxes_size(); - total_size += 1UL * count; - for (unsigned int i = 0; i < count; i++) { - total_size += - ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( - this->detection_boxes(i)); - } - } - - if (_internal_metadata_.have_unknown_fields()) { - total_size += - ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize( - unknown_fields()); - } - int cached_size = ::google::protobuf::internal::ToCachedSize(total_size); - GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); - _cached_size_ = cached_size; - GOOGLE_SAFE_CONCURRENT_WRITES_END(); - return total_size; -} - -void DetectionResult::MergeFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_merge_from_start:PaddleSolution.DetectionResult) - if (GOOGLE_PREDICT_FALSE(&from == this)) MergeFromFail(__LINE__); - const DetectionResult* source = - ::google::protobuf::internal::DynamicCastToGenerated( - &from); - if (source == NULL) { - // @@protoc_insertion_point(generalized_merge_from_cast_fail:PaddleSolution.DetectionResult) - ::google::protobuf::internal::ReflectionOps::Merge(from, this); - } else { - // @@protoc_insertion_point(generalized_merge_from_cast_success:PaddleSolution.DetectionResult) - UnsafeMergeFrom(*source); - } -} - -void DetectionResult::MergeFrom(const DetectionResult& from) { -// @@protoc_insertion_point(class_specific_merge_from_start:PaddleSolution.DetectionResult) - if (GOOGLE_PREDICT_TRUE(&from != this)) { - UnsafeMergeFrom(from); - } else { - MergeFromFail(__LINE__); - } -} - -void DetectionResult::UnsafeMergeFrom(const DetectionResult& from) { - GOOGLE_DCHECK(&from != this); - detection_boxes_.MergeFrom(from.detection_boxes_); - if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { - if (from.has_filename()) { - set_has_filename(); - filename_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.filename_); - } - } - if (from._internal_metadata_.have_unknown_fields()) { - ::google::protobuf::UnknownFieldSet::MergeToInternalMetdata( - from.unknown_fields(), &_internal_metadata_); - } -} - -void DetectionResult::CopyFrom(const ::google::protobuf::Message& from) { -// @@protoc_insertion_point(generalized_copy_from_start:PaddleSolution.DetectionResult) - if (&from == this) return; - Clear(); - MergeFrom(from); -} - -void DetectionResult::CopyFrom(const DetectionResult& from) { -// @@protoc_insertion_point(class_specific_copy_from_start:PaddleSolution.DetectionResult) - if (&from == this) return; - Clear(); - UnsafeMergeFrom(from); -} - -bool DetectionResult::IsInitialized() const { - - return true; -} - -void DetectionResult::Swap(DetectionResult* other) { - if (other == this) return; - InternalSwap(other); -} -void DetectionResult::InternalSwap(DetectionResult* other) { - filename_.Swap(&other->filename_); - detection_boxes_.UnsafeArenaSwap(&other->detection_boxes_); - std::swap(_has_bits_[0], other->_has_bits_[0]); - _internal_metadata_.Swap(&other->_internal_metadata_); - std::swap(_cached_size_, other->_cached_size_); -} - -::google::protobuf::Metadata DetectionResult::GetMetadata() const { - protobuf_AssignDescriptorsOnce(); - ::google::protobuf::Metadata metadata; - metadata.descriptor = DetectionResult_descriptor_; - metadata.reflection = DetectionResult_reflection_; - return metadata; -} - -#if PROTOBUF_INLINE_NOT_IN_HEADERS -// DetectionResult - -// optional string filename = 1; -bool DetectionResult::has_filename() const { - return (_has_bits_[0] & 0x00000001u) != 0; -} -void DetectionResult::set_has_filename() { - _has_bits_[0] |= 0x00000001u; -} -void DetectionResult::clear_has_filename() { - _has_bits_[0] &= ~0x00000001u; -} -void DetectionResult::clear_filename() { - filename_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - clear_has_filename(); -} -const ::std::string& DetectionResult::filename() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionResult.filename) - return filename_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -void DetectionResult::set_filename(const ::std::string& value) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionResult.filename) -} -void DetectionResult::set_filename(const char* value) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); - // @@protoc_insertion_point(field_set_char:PaddleSolution.DetectionResult.filename) -} -void DetectionResult::set_filename(const char* value, size_t size) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), - ::std::string(reinterpret_cast(value), size)); - // @@protoc_insertion_point(field_set_pointer:PaddleSolution.DetectionResult.filename) -} -::std::string* DetectionResult::mutable_filename() { - set_has_filename(); - // @@protoc_insertion_point(field_mutable:PaddleSolution.DetectionResult.filename) - return filename_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -::std::string* DetectionResult::release_filename() { - // @@protoc_insertion_point(field_release:PaddleSolution.DetectionResult.filename) - clear_has_filename(); - return filename_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -void DetectionResult::set_allocated_filename(::std::string* filename) { - if (filename != NULL) { - set_has_filename(); - } else { - clear_has_filename(); - } - filename_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), filename); - // @@protoc_insertion_point(field_set_allocated:PaddleSolution.DetectionResult.filename) -} - -// repeated .PaddleSolution.DetectionBox detection_boxes = 2; -int DetectionResult::detection_boxes_size() const { - return detection_boxes_.size(); -} -void DetectionResult::clear_detection_boxes() { - detection_boxes_.Clear(); -} -const ::PaddleSolution::DetectionBox& DetectionResult::detection_boxes(int index) const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Get(index); -} -::PaddleSolution::DetectionBox* DetectionResult::mutable_detection_boxes(int index) { - // @@protoc_insertion_point(field_mutable:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Mutable(index); -} -::PaddleSolution::DetectionBox* DetectionResult::add_detection_boxes() { - // @@protoc_insertion_point(field_add:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Add(); -} -::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >* -DetectionResult::mutable_detection_boxes() { - // @@protoc_insertion_point(field_mutable_list:PaddleSolution.DetectionResult.detection_boxes) - return &detection_boxes_; -} -const ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >& -DetectionResult::detection_boxes() const { - // @@protoc_insertion_point(field_list:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_; -} - -inline const DetectionResult* DetectionResult::internal_default_instance() { - return &DetectionResult_default_instance_.get(); -} -#endif // PROTOBUF_INLINE_NOT_IN_HEADERS - -// @@protoc_insertion_point(namespace_scope) - -} // namespace PaddleSolution - -// @@protoc_insertion_point(global_scope) diff --git a/inference/utils/detection_result.pb.h b/inference/utils/detection_result.pb.h deleted file mode 100644 index 1b2f89ea9..000000000 --- a/inference/utils/detection_result.pb.h +++ /dev/null @@ -1,563 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: detection_result.proto - -#ifndef PROTOBUF_detection_5fresult_2eproto__INCLUDED -#define PROTOBUF_detection_5fresult_2eproto__INCLUDED - -#include - -#include - -#if GOOGLE_PROTOBUF_VERSION < 3001000 -#error This file was generated by a newer version of protoc which is -#error incompatible with your Protocol Buffer headers. Please update -#error your headers. -#endif -#if 3001000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION -#error This file was generated by an older version of protoc which is -#error incompatible with your Protocol Buffer headers. Please -#error regenerate this file with a newer version of protoc. -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -// @@protoc_insertion_point(includes) - -namespace PaddleSolution { - -// Internal implementation detail -- do not call these. -void protobuf_AddDesc_detection_5fresult_2eproto(); -void protobuf_InitDefaults_detection_5fresult_2eproto(); -void protobuf_AssignDesc_detection_5fresult_2eproto(); -void protobuf_ShutdownFile_detection_5fresult_2eproto(); - -class DetectionBox; -class DetectionResult; - -// =================================================================== - -class DetectionBox : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:PaddleSolution.DetectionBox) */ { - public: - DetectionBox(); - virtual ~DetectionBox(); - - DetectionBox(const DetectionBox& from); - - inline DetectionBox& operator=(const DetectionBox& from) { - CopyFrom(from); - return *this; - } - - inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { - return _internal_metadata_.unknown_fields(); - } - - inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { - return _internal_metadata_.mutable_unknown_fields(); - } - - static const ::google::protobuf::Descriptor* descriptor(); - static const DetectionBox& default_instance(); - - static const DetectionBox* internal_default_instance(); - - void Swap(DetectionBox* other); - - // implements Message ---------------------------------------------- - - inline DetectionBox* New() const { return New(NULL); } - - DetectionBox* New(::google::protobuf::Arena* arena) const; - void CopyFrom(const ::google::protobuf::Message& from); - void MergeFrom(const ::google::protobuf::Message& from); - void CopyFrom(const DetectionBox& from); - void MergeFrom(const DetectionBox& from); - void Clear(); - bool IsInitialized() const; - - size_t ByteSizeLong() const; - bool MergePartialFromCodedStream( - ::google::protobuf::io::CodedInputStream* input); - void SerializeWithCachedSizes( - ::google::protobuf::io::CodedOutputStream* output) const; - ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( - bool deterministic, ::google::protobuf::uint8* output) const; - ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const { - return InternalSerializeWithCachedSizesToArray(false, output); - } - int GetCachedSize() const { return _cached_size_; } - private: - void SharedCtor(); - void SharedDtor(); - void SetCachedSize(int size) const; - void InternalSwap(DetectionBox* other); - void UnsafeMergeFrom(const DetectionBox& from); - private: - inline ::google::protobuf::Arena* GetArenaNoVirtual() const { - return _internal_metadata_.arena(); - } - inline void* MaybeArenaPtr() const { - return _internal_metadata_.raw_arena_ptr(); - } - public: - - ::google::protobuf::Metadata GetMetadata() const; - - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - - // optional int32 class = 1; - bool has_class_() const; - void clear_class_(); - static const int kClassFieldNumber = 1; - ::google::protobuf::int32 class_() const; - void set_class_(::google::protobuf::int32 value); - - // optional float score = 2; - bool has_score() const; - void clear_score(); - static const int kScoreFieldNumber = 2; - float score() const; - void set_score(float value); - - // optional float left_top_x = 3; - bool has_left_top_x() const; - void clear_left_top_x(); - static const int kLeftTopXFieldNumber = 3; - float left_top_x() const; - void set_left_top_x(float value); - - // optional float left_top_y = 4; - bool has_left_top_y() const; - void clear_left_top_y(); - static const int kLeftTopYFieldNumber = 4; - float left_top_y() const; - void set_left_top_y(float value); - - // optional float right_bottom_x = 5; - bool has_right_bottom_x() const; - void clear_right_bottom_x(); - static const int kRightBottomXFieldNumber = 5; - float right_bottom_x() const; - void set_right_bottom_x(float value); - - // optional float right_bottom_y = 6; - bool has_right_bottom_y() const; - void clear_right_bottom_y(); - static const int kRightBottomYFieldNumber = 6; - float right_bottom_y() const; - void set_right_bottom_y(float value); - - // @@protoc_insertion_point(class_scope:PaddleSolution.DetectionBox) - private: - inline void set_has_class_(); - inline void clear_has_class_(); - inline void set_has_score(); - inline void clear_has_score(); - inline void set_has_left_top_x(); - inline void clear_has_left_top_x(); - inline void set_has_left_top_y(); - inline void clear_has_left_top_y(); - inline void set_has_right_bottom_x(); - inline void clear_has_right_bottom_x(); - inline void set_has_right_bottom_y(); - inline void clear_has_right_bottom_y(); - - ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; - ::google::protobuf::internal::HasBits<1> _has_bits_; - mutable int _cached_size_; - ::google::protobuf::int32 class__; - float score_; - float left_top_x_; - float left_top_y_; - float right_bottom_x_; - float right_bottom_y_; - friend void protobuf_InitDefaults_detection_5fresult_2eproto_impl(); - friend void protobuf_AddDesc_detection_5fresult_2eproto_impl(); - friend void protobuf_AssignDesc_detection_5fresult_2eproto(); - friend void protobuf_ShutdownFile_detection_5fresult_2eproto(); - - void InitAsDefaultInstance(); -}; -extern ::google::protobuf::internal::ExplicitlyConstructed DetectionBox_default_instance_; - -// ------------------------------------------------------------------- - -class DetectionResult : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:PaddleSolution.DetectionResult) */ { - public: - DetectionResult(); - virtual ~DetectionResult(); - - DetectionResult(const DetectionResult& from); - - inline DetectionResult& operator=(const DetectionResult& from) { - CopyFrom(from); - return *this; - } - - inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const { - return _internal_metadata_.unknown_fields(); - } - - inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() { - return _internal_metadata_.mutable_unknown_fields(); - } - - static const ::google::protobuf::Descriptor* descriptor(); - static const DetectionResult& default_instance(); - - static const DetectionResult* internal_default_instance(); - - void Swap(DetectionResult* other); - - // implements Message ---------------------------------------------- - - inline DetectionResult* New() const { return New(NULL); } - - DetectionResult* New(::google::protobuf::Arena* arena) const; - void CopyFrom(const ::google::protobuf::Message& from); - void MergeFrom(const ::google::protobuf::Message& from); - void CopyFrom(const DetectionResult& from); - void MergeFrom(const DetectionResult& from); - void Clear(); - bool IsInitialized() const; - - size_t ByteSizeLong() const; - bool MergePartialFromCodedStream( - ::google::protobuf::io::CodedInputStream* input); - void SerializeWithCachedSizes( - ::google::protobuf::io::CodedOutputStream* output) const; - ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray( - bool deterministic, ::google::protobuf::uint8* output) const; - ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const { - return InternalSerializeWithCachedSizesToArray(false, output); - } - int GetCachedSize() const { return _cached_size_; } - private: - void SharedCtor(); - void SharedDtor(); - void SetCachedSize(int size) const; - void InternalSwap(DetectionResult* other); - void UnsafeMergeFrom(const DetectionResult& from); - private: - inline ::google::protobuf::Arena* GetArenaNoVirtual() const { - return _internal_metadata_.arena(); - } - inline void* MaybeArenaPtr() const { - return _internal_metadata_.raw_arena_ptr(); - } - public: - - ::google::protobuf::Metadata GetMetadata() const; - - // nested types ---------------------------------------------------- - - // accessors ------------------------------------------------------- - - // optional string filename = 1; - bool has_filename() const; - void clear_filename(); - static const int kFilenameFieldNumber = 1; - const ::std::string& filename() const; - void set_filename(const ::std::string& value); - void set_filename(const char* value); - void set_filename(const char* value, size_t size); - ::std::string* mutable_filename(); - ::std::string* release_filename(); - void set_allocated_filename(::std::string* filename); - - // repeated .PaddleSolution.DetectionBox detection_boxes = 2; - int detection_boxes_size() const; - void clear_detection_boxes(); - static const int kDetectionBoxesFieldNumber = 2; - const ::PaddleSolution::DetectionBox& detection_boxes(int index) const; - ::PaddleSolution::DetectionBox* mutable_detection_boxes(int index); - ::PaddleSolution::DetectionBox* add_detection_boxes(); - ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >* - mutable_detection_boxes(); - const ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >& - detection_boxes() const; - - // @@protoc_insertion_point(class_scope:PaddleSolution.DetectionResult) - private: - inline void set_has_filename(); - inline void clear_has_filename(); - - ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_; - ::google::protobuf::internal::HasBits<1> _has_bits_; - mutable int _cached_size_; - ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox > detection_boxes_; - ::google::protobuf::internal::ArenaStringPtr filename_; - friend void protobuf_InitDefaults_detection_5fresult_2eproto_impl(); - friend void protobuf_AddDesc_detection_5fresult_2eproto_impl(); - friend void protobuf_AssignDesc_detection_5fresult_2eproto(); - friend void protobuf_ShutdownFile_detection_5fresult_2eproto(); - - void InitAsDefaultInstance(); -}; -extern ::google::protobuf::internal::ExplicitlyConstructed DetectionResult_default_instance_; - -// =================================================================== - - -// =================================================================== - -#if !PROTOBUF_INLINE_NOT_IN_HEADERS -// DetectionBox - -// optional int32 class = 1; -inline bool DetectionBox::has_class_() const { - return (_has_bits_[0] & 0x00000001u) != 0; -} -inline void DetectionBox::set_has_class_() { - _has_bits_[0] |= 0x00000001u; -} -inline void DetectionBox::clear_has_class_() { - _has_bits_[0] &= ~0x00000001u; -} -inline void DetectionBox::clear_class_() { - class__ = 0; - clear_has_class_(); -} -inline ::google::protobuf::int32 DetectionBox::class_() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.class) - return class__; -} -inline void DetectionBox::set_class_(::google::protobuf::int32 value) { - set_has_class_(); - class__ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.class) -} - -// optional float score = 2; -inline bool DetectionBox::has_score() const { - return (_has_bits_[0] & 0x00000002u) != 0; -} -inline void DetectionBox::set_has_score() { - _has_bits_[0] |= 0x00000002u; -} -inline void DetectionBox::clear_has_score() { - _has_bits_[0] &= ~0x00000002u; -} -inline void DetectionBox::clear_score() { - score_ = 0; - clear_has_score(); -} -inline float DetectionBox::score() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.score) - return score_; -} -inline void DetectionBox::set_score(float value) { - set_has_score(); - score_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.score) -} - -// optional float left_top_x = 3; -inline bool DetectionBox::has_left_top_x() const { - return (_has_bits_[0] & 0x00000004u) != 0; -} -inline void DetectionBox::set_has_left_top_x() { - _has_bits_[0] |= 0x00000004u; -} -inline void DetectionBox::clear_has_left_top_x() { - _has_bits_[0] &= ~0x00000004u; -} -inline void DetectionBox::clear_left_top_x() { - left_top_x_ = 0; - clear_has_left_top_x(); -} -inline float DetectionBox::left_top_x() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.left_top_x) - return left_top_x_; -} -inline void DetectionBox::set_left_top_x(float value) { - set_has_left_top_x(); - left_top_x_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.left_top_x) -} - -// optional float left_top_y = 4; -inline bool DetectionBox::has_left_top_y() const { - return (_has_bits_[0] & 0x00000008u) != 0; -} -inline void DetectionBox::set_has_left_top_y() { - _has_bits_[0] |= 0x00000008u; -} -inline void DetectionBox::clear_has_left_top_y() { - _has_bits_[0] &= ~0x00000008u; -} -inline void DetectionBox::clear_left_top_y() { - left_top_y_ = 0; - clear_has_left_top_y(); -} -inline float DetectionBox::left_top_y() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.left_top_y) - return left_top_y_; -} -inline void DetectionBox::set_left_top_y(float value) { - set_has_left_top_y(); - left_top_y_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.left_top_y) -} - -// optional float right_bottom_x = 5; -inline bool DetectionBox::has_right_bottom_x() const { - return (_has_bits_[0] & 0x00000010u) != 0; -} -inline void DetectionBox::set_has_right_bottom_x() { - _has_bits_[0] |= 0x00000010u; -} -inline void DetectionBox::clear_has_right_bottom_x() { - _has_bits_[0] &= ~0x00000010u; -} -inline void DetectionBox::clear_right_bottom_x() { - right_bottom_x_ = 0; - clear_has_right_bottom_x(); -} -inline float DetectionBox::right_bottom_x() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.right_bottom_x) - return right_bottom_x_; -} -inline void DetectionBox::set_right_bottom_x(float value) { - set_has_right_bottom_x(); - right_bottom_x_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.right_bottom_x) -} - -// optional float right_bottom_y = 6; -inline bool DetectionBox::has_right_bottom_y() const { - return (_has_bits_[0] & 0x00000020u) != 0; -} -inline void DetectionBox::set_has_right_bottom_y() { - _has_bits_[0] |= 0x00000020u; -} -inline void DetectionBox::clear_has_right_bottom_y() { - _has_bits_[0] &= ~0x00000020u; -} -inline void DetectionBox::clear_right_bottom_y() { - right_bottom_y_ = 0; - clear_has_right_bottom_y(); -} -inline float DetectionBox::right_bottom_y() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionBox.right_bottom_y) - return right_bottom_y_; -} -inline void DetectionBox::set_right_bottom_y(float value) { - set_has_right_bottom_y(); - right_bottom_y_ = value; - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionBox.right_bottom_y) -} - -inline const DetectionBox* DetectionBox::internal_default_instance() { - return &DetectionBox_default_instance_.get(); -} -// ------------------------------------------------------------------- - -// DetectionResult - -// optional string filename = 1; -inline bool DetectionResult::has_filename() const { - return (_has_bits_[0] & 0x00000001u) != 0; -} -inline void DetectionResult::set_has_filename() { - _has_bits_[0] |= 0x00000001u; -} -inline void DetectionResult::clear_has_filename() { - _has_bits_[0] &= ~0x00000001u; -} -inline void DetectionResult::clear_filename() { - filename_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); - clear_has_filename(); -} -inline const ::std::string& DetectionResult::filename() const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionResult.filename) - return filename_.GetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -inline void DetectionResult::set_filename(const ::std::string& value) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value); - // @@protoc_insertion_point(field_set:PaddleSolution.DetectionResult.filename) -} -inline void DetectionResult::set_filename(const char* value) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value)); - // @@protoc_insertion_point(field_set_char:PaddleSolution.DetectionResult.filename) -} -inline void DetectionResult::set_filename(const char* value, size_t size) { - set_has_filename(); - filename_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), - ::std::string(reinterpret_cast(value), size)); - // @@protoc_insertion_point(field_set_pointer:PaddleSolution.DetectionResult.filename) -} -inline ::std::string* DetectionResult::mutable_filename() { - set_has_filename(); - // @@protoc_insertion_point(field_mutable:PaddleSolution.DetectionResult.filename) - return filename_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -inline ::std::string* DetectionResult::release_filename() { - // @@protoc_insertion_point(field_release:PaddleSolution.DetectionResult.filename) - clear_has_filename(); - return filename_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited()); -} -inline void DetectionResult::set_allocated_filename(::std::string* filename) { - if (filename != NULL) { - set_has_filename(); - } else { - clear_has_filename(); - } - filename_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), filename); - // @@protoc_insertion_point(field_set_allocated:PaddleSolution.DetectionResult.filename) -} - -// repeated .PaddleSolution.DetectionBox detection_boxes = 2; -inline int DetectionResult::detection_boxes_size() const { - return detection_boxes_.size(); -} -inline void DetectionResult::clear_detection_boxes() { - detection_boxes_.Clear(); -} -inline const ::PaddleSolution::DetectionBox& DetectionResult::detection_boxes(int index) const { - // @@protoc_insertion_point(field_get:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Get(index); -} -inline ::PaddleSolution::DetectionBox* DetectionResult::mutable_detection_boxes(int index) { - // @@protoc_insertion_point(field_mutable:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Mutable(index); -} -inline ::PaddleSolution::DetectionBox* DetectionResult::add_detection_boxes() { - // @@protoc_insertion_point(field_add:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_.Add(); -} -inline ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >* -DetectionResult::mutable_detection_boxes() { - // @@protoc_insertion_point(field_mutable_list:PaddleSolution.DetectionResult.detection_boxes) - return &detection_boxes_; -} -inline const ::google::protobuf::RepeatedPtrField< ::PaddleSolution::DetectionBox >& -DetectionResult::detection_boxes() const { - // @@protoc_insertion_point(field_list:PaddleSolution.DetectionResult.detection_boxes) - return detection_boxes_; -} - -inline const DetectionResult* DetectionResult::internal_default_instance() { - return &DetectionResult_default_instance_.get(); -} -#endif // !PROTOBUF_INLINE_NOT_IN_HEADERS -// ------------------------------------------------------------------- - - -// @@protoc_insertion_point(namespace_scope) - -} // namespace PaddleSolution - -// @@protoc_insertion_point(global_scope) - -#endif // PROTOBUF_detection_5fresult_2eproto__INCLUDED diff --git a/inference/utils/detection_result.proto b/inference/utils/detection_result.proto deleted file mode 100644 index 2d1cbb246..000000000 --- a/inference/utils/detection_result.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto2"; -package PaddleSolution; - -message DetectionBox { - optional int32 class = 1; - optional float score = 2; - optional float left_top_x = 3; - optional float left_top_y = 4; - optional float right_bottom_x = 5; - optional float right_bottom_y = 6; -} - -message DetectionResult { - optional string filename = 1; - repeated DetectionBox detection_boxes = 2; -} - -//message DetectionResultsContainer { -// repeated DetectionResult result = 1; -//} - diff --git a/inference/utils/utils.h b/inference/utils/utils.h deleted file mode 100644 index 11301cedc..000000000 --- a/inference/utils/utils.h +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#pragma once - -#include -#include -#include -#include -#include -#include -#ifdef _WIN32 -#include -#else -#include -#include -#endif - -namespace PaddleSolution { -namespace utils { - -enum SCALE_TYPE{ - UNPADDING, - RANGE_SCALING -}; - -inline std::string path_join(const std::string& dir, const std::string& path) { - std::string seperator = "/"; - #ifdef _WIN32 - seperator = "\\"; - #endif - return dir + seperator + path; -} -#ifndef _WIN32 -// scan a directory and get all files with input extensions -inline std::vector get_directory_images(const std::string& path, - const std::string& exts) { - std::vector imgs; - struct dirent *entry; - DIR *dir = opendir(path.c_str()); - if (dir == NULL) { - closedir(dir); - return imgs; - } - while ((entry = readdir(dir)) != NULL) { - std::string item = entry->d_name; - auto ext = strrchr(entry->d_name, '.'); - if (!ext || std::string(ext) == "." || std::string(ext) == "..") { - continue; - } - if (exts.find(ext) != std::string::npos) { - imgs.push_back(path_join(path, entry->d_name)); - } - } - sort(imgs.begin(), imgs.end()); - return imgs; -} -#else -// scan a directory and get all files with input extensions -inline std::vector get_directory_images(const std::string& path, - const std::string& exts) { - std::vector imgs; - for (const auto& item : - std::experimental::filesystem::directory_iterator(path)) { - auto suffix = item.path().extension().string(); - if (exts.find(suffix) != std::string::npos && suffix.size() > 0) { - auto fullname = path_join(path, item.path().filename().string()); - imgs.push_back(item.path().string()); - } - } - sort(imgs.begin(), imgs.end()); - return imgs; -} -#endif - -inline int scaling(int resize_type, int &w, int &h, int new_w, int new_h, - int target_size, int max_size, float &im_scale_ratio) { - if (w <= 0 || h <= 0 || new_w <= 0 || new_h <= 0) { - return -1; - } - switch (resize_type) { - case SCALE_TYPE::UNPADDING: - { - w = new_w; - h = new_h; - im_scale_ratio = 0; - } - break; - case SCALE_TYPE::RANGE_SCALING: - { - int im_max_size = std::max(w, h); - int im_min_size = std::min(w, h); - float scale_ratio = static_cast(target_size) - / static_cast(im_min_size); - if (max_size > 0) { - if (round(scale_ratio * im_max_size) > max_size) { - scale_ratio = static_cast(max_size) - / static_cast(im_max_size); - } - } - w = round(scale_ratio * static_cast(w)); - h = round(scale_ratio * static_cast(h)); - im_scale_ratio = scale_ratio; - } - break; - default : - { - std::cout << "Can't support this type of scaling strategy." - << std::endl; - std::cout << "Throw exception at file " << __FILE__ - << " on line " << __LINE__ << std::endl; - throw 0; - } - break; - } - return 0; -} -} // namespace utils -} // namespace PaddleSolution -- GitLab