diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a26dc3f63be..fdc3757f8e1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ stages: - build - deploy - + variables: ROS_CI_DESKTOP: "`lsb_release -cs`" CI_SOURCE_PATH: $CI_PROJECT_DIR @@ -13,8 +13,9 @@ variables: .build: &build_common before_script: - apt-get update - - apt-get install -y lsb-release - - apt-get install -y gcc g++ + # Use UTC for tzdata + - DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata + - apt-get install -y gnupg2 lsb-release gcc g++ - sh -c "echo \"deb http://packages.ros.org/ros/ubuntu $ROS_CI_DESKTOP main\" > /etc/apt/sources.list.d/ros-latest.list" - apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 - apt-get update @@ -24,19 +25,51 @@ variables: # Update setuptools from PyPI because the version Ubuntu ships with is too old - pip3 install -U setuptools - source /opt/ros/${ROS_DISTRO}/setup.bash - - rosdep init - rosdep update - cd ros/src - wstool init - test -f "${ROSINSTALL_FILE}" && wstool merge "${ROSINSTALL_FILE}" - wstool up - cd .. - - rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} - + - rosdep install -y --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} + +.build_cross_vars: &build_cross_vars + AUTOWARE_HOME: $CI_PROJECT_DIR + AUTOWARE_TARGET_ARCH: aarch64 + AUTOWARE_TARGET_PLATFORM: generic-aarch64 + AUTOWARE_BUILD_PATH: $CI_PROJECT_DIR/ros/build-${AUTOWARE_TARGET_PLATFORM} + AUTOWARE_INSTALL_PATH: $CI_PROJECT_DIR/ros/install-${AUTOWARE_TARGET_PLATFORM} + AUTOWARE_TOOLCHAIN_FILE_PATH: $CI_PROJECT_DIR/ros/cross_toolchain.cmake + AUTOWARE_SYSROOT: /sysroot/${AUTOWARE_TARGET_PLATFORM} + +.build_cross_script: &build_cross_script + script: + - 'docker run + -e AUTOWARE_SYSROOT=${AUTOWARE_SYSROOT} + --rm + -v ${AUTOWARE_HOME}:${AUTOWARE_HOME} + -w ${AUTOWARE_HOME}/ros + autoware/build:${AUTOWARE_TARGET_PLATFORM}-${ROS_DISTRO}-${AUTOWARE_DOCKER_DATE} + bash + -c " + source ${AUTOWARE_SYSROOT}/opt/ros/${ROS_DISTRO}/setup.bash && + colcon build + --merge-install + --build-base ${AUTOWARE_BUILD_PATH} + --install-base ${AUTOWARE_INSTALL_PATH} + --packages-skip citysim ymc + --cmake-args + -DPYTHON_EXECUTABLE=/usr/bin/python3 + -DCMAKE_TOOLCHAIN_FILE=${AUTOWARE_TOOLCHAIN_FILE_PATH} + -DCMAKE_SYSTEM_PROCESSOR=${AUTOWARE_TARGET_ARCH} + -DCMAKE_PREFIX_PATH=\"${AUTOWARE_SYSROOT}/opt/ros/${ROS_DISTRO};${AUTOWARE_INSTALL_PATH}\" + -DCMAKE_FIND_ROOT_PATH=${AUTOWARE_INSTALL_PATH} + " + ' build_kinetic: stage: build - image: ubuntu:xenial + image: ros:kinetic-perception variables: ROS_DISTRO: kinetic <<: *build_common @@ -47,7 +80,7 @@ build_kinetic: - git clone https://github.com/linux-test-project/lcov.git - cd lcov - git checkout v1.13 - - make install + - make install - cd .. - rm -r lcov # We first build the entire workspace normally @@ -58,7 +91,7 @@ build_kinetic: - colcon build --cmake-target tests --cmake-args -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_BUILD_TYPE=Debug - lcov --initial --directory build --capture --output-file lcov.base - colcon test - - colcon test-result + - colcon test-result --verbose - lcov --directory build --capture --output-file lcov.test - lcov -a lcov.base -a lcov.test -o lcov.total - lcov -r lcov.total '*/tests/*' '*/test/*' '*/build/*' '*/devel/*' '/usr/*' '/opt/*' '*/CMakeCCompilerId.c' '*/CMakeCXXCompilerId.cpp' -o lcov.total.filtered @@ -69,58 +102,78 @@ build_kinetic: - genhtml -p "$PWD" --legend --demangle-cpp lcov.total.filtered -o $COVERAGE_FOLDER_NAME - tar -czvf coverage.tar.gz $COVERAGE_FOLDER_NAME - mv coverage.tar.gz $CI_PROJECT_DIR/coverage.tar.gz - - ls $CI_PROJECT_DIR - retry: 1 + - ls $CI_PROJECT_DIR artifacts: paths: - $CI_PROJECT_DIR/coverage.tar.gz expire_in: 48 hrs coverage: /\s*lines.*:\s(\d+\.\d+\%\s\(\d+\sof\s\d+.*\))/ - -build_cross: + +build_melodic: + stage: build + image: ros:melodic-perception + variables: + ROS_DISTRO: melodic + <<: *build_common + script: + # colcon as a Debian package is only available in Kinetic and up + - apt-get install -y python3-colcon-common-extensions + # Install lcov ffrom the Ubuntu package. We need 1.13 at least. + - apt-get install -y lcov + # We first build the entire workspace normally + - colcon build --cmake-args -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=/usr/bin/python3 + # And then build the tests target. catkin (ROS1) packages add their tests to the tests target + # which is not the standard target for CMake projects. We need to trigger the tests target so that + # tests are built and any fixtures are set up. + - colcon build --cmake-target tests --cmake-args -DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage" -DCMAKE_BUILD_TYPE=Debug -DPYTHON_EXECUTABLE=/usr/bin/python3 + - lcov --initial --directory build --capture --output-file lcov.base + - colcon test + - colcon test-result --verbose + - lcov --directory build --capture --output-file lcov.test + - lcov -a lcov.base -a lcov.test -o lcov.total + - lcov -r lcov.total '*/tests/*' '*/test/*' '*/build/*' '*/devel/*' '/usr/*' '/opt/*' '*/CMakeCCompilerId.c' '*/CMakeCXXCompilerId.cpp' -o lcov.total.filtered + # BRANCH_NAME: gets branch name from CI_COMMIT_REF_NAME variable substituting / with _ (feature/test_this_lib becomes feature_test_this_lib) + # CI_COMMIT_REF_NAME: (from https://docs.gitlab.com/ee/ci/variables/) The branch or tag name for which project is built + - BRANCH_NAME="$(echo $CI_COMMIT_REF_NAME | sed 's/\//_/g')" + - COVERAGE_FOLDER_NAME="coverage_$BRANCH_NAME" + - genhtml -p "$PWD" --legend --demangle-cpp lcov.total.filtered -o $COVERAGE_FOLDER_NAME + - tar -czvf coverage.tar.gz $COVERAGE_FOLDER_NAME + - mv coverage.tar.gz $CI_PROJECT_DIR/coverage.tar.gz + - ls $CI_PROJECT_DIR + artifacts: + paths: + - $CI_PROJECT_DIR/coverage.tar.gz + expire_in: 48 hrs + coverage: /\s*lines.*:\s(\d+\.\d+\%\s\(\d+\sof\s\d+.*\))/ + +build_kinetic_cross: stage: build image: docker services: - docker:dind variables: ROS_DISTRO: kinetic - AUTOWARE_DOCKER_DATE: 20190521 - AUTOWARE_HOME: $CI_PROJECT_DIR - AUTOWARE_TARGET_ARCH: aarch64 - AUTOWARE_TARGET_PLATFORM: generic-aarch64 - AUTOWARE_BUILD_PATH: $CI_PROJECT_DIR/ros/build-${AUTOWARE_TARGET_PLATFORM} - AUTOWARE_INSTALL_PATH: $CI_PROJECT_DIR/ros/install-${AUTOWARE_TARGET_PLATFORM} - AUTOWARE_TOOLCHAIN_FILE_PATH: $CI_PROJECT_DIR/ros/cross_toolchain.cmake - AUTOWARE_SYSROOT: /sysroot/${AUTOWARE_TARGET_PLATFORM} - script: - # - ${AUTOWARE_HOME}/docker/crossbuild/build_cross_image.sh - - 'docker run - -e AUTOWARE_SYSROOT=${AUTOWARE_SYSROOT} - --rm - -v ${AUTOWARE_HOME}:${AUTOWARE_HOME} - -w ${AUTOWARE_HOME}/ros - autoware/build:${AUTOWARE_TARGET_PLATFORM}-kinetic-${AUTOWARE_DOCKER_DATE} - bash - -c " - source ${AUTOWARE_SYSROOT}/opt/ros/kinetic/setup.bash && - colcon build - --merge-install - --build-base ${AUTOWARE_BUILD_PATH} - --install-base ${AUTOWARE_INSTALL_PATH} - --cmake-args - -DCMAKE_TOOLCHAIN_FILE=${AUTOWARE_TOOLCHAIN_FILE_PATH} - -DCMAKE_SYSTEM_PROCESSOR=${AUTOWARE_TARGET_ARCH} - -DCMAKE_PREFIX_PATH=\"${AUTOWARE_SYSROOT}/opt/ros/kinetic;${AUTOWARE_INSTALL_PATH}\" - -DCMAKE_FIND_ROOT_PATH=${AUTOWARE_INSTALL_PATH} - " - ' - retry: 1 + AUTOWARE_DOCKER_DATE: "20190521" + <<: *build_cross_vars + <<: *build_cross_script + +build_melodic_cross: + stage: build + image: docker + services: + - docker:dind + variables: + ROS_DISTRO: melodic + AUTOWARE_DOCKER_DATE: "20190521" + <<: *build_cross_vars + <<: *build_cross_script pages: stage: deploy image: alpine dependencies: - build_kinetic + - build_melodic script: - BRANCH_NAME="$(echo $CI_COMMIT_REF_NAME | sed 's/\//_/g')" - COVERAGE_FOLDER_NAME="coverage_$BRANCH_NAME" @@ -131,5 +184,4 @@ pages: - public only: - master - - develop - + - develop \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 2c55680c191..eb93ca11177 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,20 +1,15 @@ language: generic services: - docker -cache: - directories: - - $HOME/.ccache -env: - global: - - CCACHE_DIR=$HOME/.ccache + +env: matrix: - ROS_DISTRO="kinetic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' - - ROS_DISTRO="melodic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' -matrix: - allow_failures: - - env: ROS_DISTRO="melodic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' + - ROS_DISTRO="kinetic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' DOCKER_BASE_IMAGE=nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 AUTOWARE_COMPILE_WITH_CUDA=ON + - ROS_DISTRO="melodic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' BUILDER=colcon + - ROS_DISTRO="melodic" _GUARD_INTERVAL=10 CATKIN_PARALLEL_JOBS='-p2' ROS_PARALLEL_JOBS='-j2' NOT_TEST_BUILD='true' NOT_TEST_INSTALL='true' DOCKER_BASE_IMAGE=nvidia/cuda:10.0-cudnn7-devel-ubuntu18.04 BUILDER=colcon install: - - git clone --quiet --depth 1 https://github.com/ros-industrial/industrial_ci.git .industrial_ci + - git clone --branch colcon --quiet --depth 1 https://github.com/ipa-mdl/industrial_ci.git .industrial_ci script: - .industrial_ci/travis.sh \ No newline at end of file diff --git a/docker/crossbuild/Dockerfile.kinetic-crossbuild b/docker/crossbuild/Dockerfile.kinetic-crossbuild index 89fd2df7698..192cae68a5c 100644 --- a/docker/crossbuild/Dockerfile.kinetic-crossbuild +++ b/docker/crossbuild/Dockerfile.kinetic-crossbuild @@ -7,9 +7,6 @@ ARG AUTOWARE_TARGET_ARCH COPY --from=bootstrap /usr/bin/qemu-${AUTOWARE_TARGET_ARCH}-static /usr/bin/qemu-${AUTOWARE_TARGET_ARCH}-static -RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" | tee /etc/apt/sources.list.d/ros-latest.list -RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 - RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ lsb-release \ @@ -47,8 +44,9 @@ COPY --from=sysroot /usr/share/pkgconfig ${AUTOWARE_SYSROOT}/usr/share/pkgconfig COPY --from=sysroot /opt ${AUTOWARE_SYSROOT}/opt COPY --from=sysroot /etc/alternatives ${AUTOWARE_SYSROOT}/etc/alternatives RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" | tee /etc/apt/sources.list.d/ros-latest.list -RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 +RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 RUN apt-get update && apt-get install -y --no-install-recommends \ + cython \ crossbuild-essential-arm64 \ pkg-config \ python-rospkg \ @@ -73,6 +71,9 @@ RUN sed -i -e "s#set(imported_location \"\${_qt5Core_install_prefix}/lib/${AUTOW RUN sed -i -e "s#define ARMA_SUPERLU_INCLUDE_DIR /usr/include/superlu/#define ARMA_SUPERLU_INCLUDE_DIR ${AUTOWARE_SYSROOT}/usr/include/superlu/#g" \ ${AUTOWARE_SYSROOT}/usr/include/armadillo_bits/config.hpp +RUN apt-get install -y python-numpy +RUN apt-get install -y python-pip python-setuptools +RUN pip install -U setuptools RUN apt-get install -y python3-pip python3-setuptools RUN pip3 install -U setuptools RUN apt-get install -y python3-colcon-common-extensions diff --git a/docker/crossbuild/Dockerfile.kinetic-crossbuild-driveworks b/docker/crossbuild/Dockerfile.kinetic-crossbuild-driveworks index d41b2899aff..94b255eac19 100644 --- a/docker/crossbuild/Dockerfile.kinetic-crossbuild-driveworks +++ b/docker/crossbuild/Dockerfile.kinetic-crossbuild-driveworks @@ -1,7 +1,7 @@ ARG AUTOWARE_DOCKER_ARCH ARG AUTOWARE_TARGET_ARCH ARG AUTOWARE_TARGET_PLATFORM -FROM autoware/build:${AUTOWARE_TARGET_PLATFORM}-kinetic-20190102 +FROM autoware/build:${AUTOWARE_TARGET_PLATFORM}-kinetic-20190521 RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential COPY crossbuild/files/FindCUDA.cmake /usr/share/cmake-3.5/Modules/FindCUDA.cmake diff --git a/docker/crossbuild/Dockerfile.melodic-crossbuild b/docker/crossbuild/Dockerfile.melodic-crossbuild new file mode 100644 index 00000000000..0a13d86dcc2 --- /dev/null +++ b/docker/crossbuild/Dockerfile.melodic-crossbuild @@ -0,0 +1,112 @@ +ARG AUTOWARE_DOCKER_ARCH +ARG AUTOWARE_TARGET_ARCH +FROM multiarch/alpine:${AUTOWARE_TARGET_ARCH}-latest-stable AS bootstrap + +FROM ${AUTOWARE_DOCKER_ARCH}/ros:melodic-perception AS sysroot +ARG AUTOWARE_TARGET_ARCH + +COPY --from=bootstrap /usr/bin/qemu-${AUTOWARE_TARGET_ARCH}-static /usr/bin/qemu-${AUTOWARE_TARGET_ARCH}-static + +RUN apt-get update && apt-get install -y --no-install-recommends \ + gnupg + +RUN apt-get install -y --no-install-recommends \ + curl \ + lsb-release \ + python-rosdep \ + sudo \ + gtk-update-icon-cache \ + libglib2.0-0 \ + libglib2.0-bin \ + libglib2.0-dev \ + libglib2.0-dev-bin \ + libpng-dev \ + libpng-dev libpng-tools \ + libpng-tools \ + libpng16-16 + +# Install ROS packages used by Autoware +COPY ./dependencies /tmp/dependencies +RUN apt-get update && \ + sed "s/\$ROS_DISTRO/$ROS_DISTRO/g" "/tmp/dependencies" | xargs apt-get install -y + +# Autoware dependencies +RUN apt-get install -y --no-install-recommends \ + libarmadillo-dev \ + libgflags-dev \ + libglew-dev \ + libgoogle-glog-dev \ + libnlopt-dev \ + libopencv-dev \ + libssh2-1 \ + python-flask \ + ros-melodic-jsk-tools \ + ros-melodic-nlopt && \ + rm -rf /var/lib/apt/lists/* + +RUN find / -depth -xdev -type l -lname '/*' -exec sh -c 'linkpath="$(readlink {})" && rm -f {} && ln -frsv "$linkpath" "{}"' \; + +FROM ubuntu:18.04 AS builder +ARG AUTOWARE_TARGET_ARCH +ARG AUTOWARE_TARGET_PLATFORM +ENV AUTOWARE_SYSROOT /sysroot/${AUTOWARE_TARGET_PLATFORM} +COPY --from=sysroot /lib ${AUTOWARE_SYSROOT}/lib +COPY --from=sysroot /usr/include ${AUTOWARE_SYSROOT}/usr/include +COPY --from=sysroot /usr/lib ${AUTOWARE_SYSROOT}/usr/lib +COPY --from=sysroot /usr/share/OGRE ${AUTOWARE_SYSROOT}/usr/share/OGRE +COPY --from=sysroot /usr/share/OpenCV ${AUTOWARE_SYSROOT}/usr/share/OpenCV +COPY --from=sysroot /usr/share/pkgconfig ${AUTOWARE_SYSROOT}/usr/share/pkgconfig +COPY --from=sysroot /opt ${AUTOWARE_SYSROOT}/opt +COPY --from=sysroot /etc/alternatives ${AUTOWARE_SYSROOT}/etc/alternatives + +RUN apt-get update +RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + tzdata +RUN apt-get update && apt-get install -y --no-install-recommends \ + gnupg + +RUN echo "deb http://packages.ros.org/ros/ubuntu bionic main" | tee /etc/apt/sources.list.d/ros-latest.list +RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 + +RUN apt-get update && apt-get install -y --no-install-recommends \ + cython \ + crossbuild-essential-arm64 \ + pkg-config \ + python-rospkg \ + qt5-qmake \ + qtbase5-dev-tools \ + ros-melodic-catkin + +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/share/ -name "*.cmake" -type f -exec sed -i -e "s#/opt/ros/melodic/include#${AUTOWARE_SYSROOT}/opt/ros/melodic/include#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/share/ -name "*.cmake" -type f -exec sed -i -e "s#/opt/ros/melodic/lib#${AUTOWARE_SYSROOT}/opt/ros/melodic/lib#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/share/ -name "*.cmake" -type f -exec sed -i -e "s#/opt/ros/melodic/share#${AUTOWARE_SYSROOT}/opt/ros/melodic/share#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/share/ -name "*.cmake" -type f -exec sed -i -e "s#/usr/include#${AUTOWARE_SYSROOT}/usr/include#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/share/ -name "*.cmake" -type f -exec sed -i -e "s#/usr/lib#${AUTOWARE_SYSROOT}/usr/lib#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/usr/lib/cmake/ -name "*.cmake" -type f -exec sed -i -e "s#/usr/lib/${AUTOWARE_TARGET_ARCH}-linux-gnu#${AUTOWARE_SYSROOT}/usr/lib/${AUTOWARE_TARGET_ARCH}-linux-gnu#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/usr/lib/cmake/ -name "*.cmake" -type f -exec sed -i -e "s#/usr/lib/openmpi#${AUTOWARE_SYSROOT}/usr/lib/openmpi#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/usr/lib/cmake/ -name "*.cmake" -type f -exec sed -i -e "s#/usr/include#${AUTOWARE_SYSROOT}/usr/include#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/lib/pkgconfig/ -name "*.pc" -type f -exec sed -i -e "s#-I/opt/ros/melodic/usr/include#-I${AUTOWARE_SYSROOT}/opt/ros/melodic/usr/include#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/opt/ros/melodic/lib/pkgconfig/ -name "*.pc" -type f -exec sed -i -e "s#-I/usr/include#-I${AUTOWARE_SYSROOT}/usr/include#g" {} \; +RUN find ${AUTOWARE_SYSROOT}/ -name "*.pc" -type f -exec sed -i -e "s#prefix=/#prefix=${AUTOWARE_SYSROOT}/#g" {} \; +RUN sed -i -e "s#/usr#${AUTOWARE_SYSROOT}/usr#g" ${AUTOWARE_SYSROOT}/usr/lib/${AUTOWARE_TARGET_ARCH}-linux-gnu/cmake/pcl/PCLConfig.cmake +RUN sed -i -e "s#set(imported_location \"\${_qt5Widgets_install_prefix}/lib/qt5/bin/uic\")#set(imported_location \"/usr/lib/x86_64-linux-gnu/qt5/bin/uic\")#g" \ + ${AUTOWARE_SYSROOT}/usr/lib/${AUTOWARE_TARGET_ARCH}-linux-gnu/cmake/Qt5Widgets/Qt5WidgetsConfigExtras.cmake +RUN sed -i -e "s#set(imported_location \"\${_qt5Core_install_prefix}/lib/qt5/bin/#set(imported_location \"/usr/lib/x86_64-linux-gnu/qt5/bin/#g" \ + ${AUTOWARE_SYSROOT}/usr/lib/${AUTOWARE_TARGET_ARCH}-linux-gnu/cmake/Qt5Core/Qt5CoreConfigExtras.cmake +RUN sed -i -e "s#define ARMA_SUPERLU_INCLUDE_DIR /usr/include/superlu/#define ARMA_SUPERLU_INCLUDE_DIR ${AUTOWARE_SYSROOT}/usr/include/superlu/#g" \ + ${AUTOWARE_SYSROOT}/usr/include/armadillo_bits/config.hpp + +RUN apt-get install -y python-numpy +RUN apt-get install -y python-pip python-setuptools +RUN pip install -U setuptools +RUN apt-get install -y python3-pip python3-setuptools +RUN pip3 install -U setuptools +RUN apt-get install -y python3-colcon-common-extensions + +ENV ROS_DISTRO melodic +ENV CC /usr/bin/${AUTOWARE_TARGET_ARCH}-linux-gnu-gcc +ENV CXX /usr/bin/${AUTOWARE_TARGET_ARCH}-linux-gnu-g++ +ENV AR /usr/bin/${AUTOWARE_TARGET_ARCH}-linux-gnu-ar +ENV CPP /usr/bin/${AUTOWARE_TARGET_ARCH}-linux-gnu-cpp + +CMD . /opt/ros/melodic/setup.sh && /bin/bash diff --git a/docker/crossbuild/Dockerfile.melodic-crossbuild-driveworks b/docker/crossbuild/Dockerfile.melodic-crossbuild-driveworks new file mode 100644 index 00000000000..948499b669c --- /dev/null +++ b/docker/crossbuild/Dockerfile.melodic-crossbuild-driveworks @@ -0,0 +1,8 @@ +ARG AUTOWARE_DOCKER_ARCH +ARG AUTOWARE_TARGET_ARCH +ARG AUTOWARE_TARGET_PLATFORM +FROM autoware/build:${AUTOWARE_TARGET_PLATFORM}-melodic-20190521 +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential +COPY crossbuild/files/FindCUDA.cmake /usr/share/cmake-3.10/Modules/FindCUDA.cmake +CMD . /opt/ros/melodic/setup.sh && /bin/bash diff --git a/docker/crossbuild/README.md b/docker/crossbuild/README.md index f56124ab28d..d037a9e0710 100644 --- a/docker/crossbuild/README.md +++ b/docker/crossbuild/README.md @@ -9,10 +9,10 @@ Autoware users skip this step. $ cd Autoware/docker/crossbuild/ # generic-aarch64 -$ ./build_cross_image.sh generic-aarch64 +$ ./build_cross_image.sh kinetic generic-aarch64 # synquacer -$ ./build_cross_image.sh synquacer +$ ./build_cross_image.sh kinetic synquacer ``` ## How to Build Cross @@ -20,8 +20,8 @@ $ ./build_cross_image.sh synquacer $ cd Autoware/ros/ # generic-aarch64 -$ ./colcon_release_cross generic-aarch64 +$ ./colcon_release_cross kinetic generic-aarch64 # synquacer -$ ./colcon_release_cross synquacer +$ ./colcon_release_cross kinetic synquacer ``` diff --git a/docker/crossbuild/build_cross_image.sh b/docker/crossbuild/build_cross_image.sh index ce6203157e0..045df4102e6 100755 --- a/docker/crossbuild/build_cross_image.sh +++ b/docker/crossbuild/build_cross_image.sh @@ -1,13 +1,14 @@ #!/bin/bash # Build Docker Image -if [ "$1" = "synquacer" ] || [ "$1" = "driveworks" ] || [ "$1" = "generic-aarch64" ] +if [[ ("$1" = "kinetic" || "$1" = "melodic" ) && ("$2" = "synquacer" || "$2" = "driveworks" || "$2" = "generic-aarch64") ]] then # Once we support for targets, change this to the appropriate Docker image AUTOWARE_DOCKER_ARCH=arm64v8 AUTOWARE_DOCKER_DATE=20190521 AUTOWARE_TARGET_ARCH=aarch64 - AUTOWARE_TARGET_PLATFORM=$1 + AUTOWARE_TARGET_ROS_DISTRO=$1 + AUTOWARE_TARGET_PLATFORM=$2 echo "Using ${AUTOWARE_TARGET_PLATFORM} as the target architecture" # Register QEMU as a handler for non-x86 targets @@ -21,20 +22,20 @@ then --build-arg AUTOWARE_DOCKER_ARCH=${AUTOWARE_DOCKER_ARCH} \ --build-arg AUTOWARE_TARGET_ARCH=${AUTOWARE_TARGET_ARCH} \ --build-arg AUTOWARE_TARGET_PLATFORM=${AUTOWARE_TARGET_PLATFORM} \ - -t autoware/build:${AUTOWARE_TARGET_PLATFORM}-kinetic-${AUTOWARE_DOCKER_DATE} \ - -f crossbuild/Dockerfile.kinetic-crossbuild . + -t autoware/build:${AUTOWARE_TARGET_PLATFORM}-${AUTOWARE_TARGET_ROS_DISTRO}-${AUTOWARE_DOCKER_DATE} \ + -f crossbuild/Dockerfile.${AUTOWARE_TARGET_ROS_DISTRO}-crossbuild . if [ "$AUTOWARE_TARGET_PLATFORM" = "driveworks" ] then docker image build \ --build-arg AUTOWARE_DOCKER_ARCH=${AUTOWARE_DOCKER_ARCH} \ --build-arg AUTOWARE_TARGET_ARCH=${AUTOWARE_TARGET_ARCH} \ --build-arg AUTOWARE_TARGET_PLATFORM=${AUTOWARE_TARGET_PLATFORM} \ - -t autoware/build:${AUTOWARE_TARGET_PLATFORM}-kinetic-${AUTOWARE_DOCKER_DATE} \ - -f crossbuild/Dockerfile.kinetic-crossbuild-driveworks . + -t autoware/build:${AUTOWARE_TARGET_PLATFORM}-${AUTOWARE_TARGET_ROS_DISTRO}-${AUTOWARE_DOCKER_DATE} \ + -f crossbuild/Dockerfile.${AUTOWARE_TARGET_ROS_DISTRO}-crossbuild-driveworks . fi # Deregister QEMU as a handler for non-x86 targets docker container run --rm --privileged multiarch/qemu-user-static:register --reset else - echo "Select target platform: synquacer, driveworks, generic-aarch64" + echo "Select target ROS distribution (kinetic, melodic) and target platform (synquacer, driveworks, generic-aarch64)" fi diff --git a/docker/generic/Dockerfile.melodic b/docker/generic/Dockerfile.melodic new file mode 100644 index 00000000000..f9769bfc946 --- /dev/null +++ b/docker/generic/Dockerfile.melodic @@ -0,0 +1,138 @@ +FROM nvidia/cuda:8.0-devel-ubuntu16.04 +MAINTAINER Yuki Iida + +# Develop +RUN apt-get update && apt-get install -y \ + cmake \ + cmake-curses-gui \ + curl \ + git \ + libboost-all-dev \ + libeigen3-dev \ + libflann-dev \ + libgoogle-perftools-dev \ + libgsl0-dev \ + software-properties-common \ + wget + +# Intall some basic GUI and sound libs +RUN apt-get update && apt-get install -y \ + dbus-x11 \ + dmz-cursor-theme \ + file \ + fonts-dejavu \ + fonts-liberation \ + hicolor-icon-theme \ + language-pack-en \ + libasound2 \ + libcanberra-gtk-module \ + libcanberra-gtk3-0 \ + libcanberra-gtk3-module \ + libdbus-glib-1-2 \ + libexif12 \ + libgl1-mesa-dri \ + libgl1-mesa-glx \ + libgtk2.0-0 \ + libxt6 \ + locales \ + pulseaudio \ + xz-utils +RUN update-locale LANG=en_US.UTF-8 LC_MESSAGES=POSIX + +# Intall some basic GUI tools +RUN apt-get update && apt-get install -y \ + cmake-qt-gui \ + gnome-terminal + +# Intall ROS +RUN sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' +RUN apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 +RUN apt-get update && apt-get install -y \ + ros-kinetic-desktop-full \ + ros-kinetic-gps-common \ + ros-kinetic-grid-map \ + ros-kinetic-jsk-visualization \ + ros-kinetic-nmea-msgs \ + ros-kinetic-nmea-navsat-driver \ + ros-kinetic-sound-play +RUN apt-get update && apt-get install -y \ + ros-kinetic-automotive-platform-msgs \ + ros-kinetic-controller-manager \ + ros-kinetic-gazebo-ros-control \ + ros-kinetic-joystick-drivers \ + ros-kinetic-ros-control \ + ros-kinetic-ros-controllers +RUN apt-get update && apt-get install -y \ + freeglut3-dev \ + gksu \ + libarmadillo-dev \ + libgl1-mesa-dev \ + libglew-dev \ + libmosquitto-dev \ + libnlopt-dev \ + libpcap-dev \ + libqt5opengl5-dev \ + libssh2-1-dev \ + libyaml-cpp-dev \ + python-flask \ + python-requests \ + python-wxgtk3.0 \ + qtbase5-dev \ + software-properties-common + +# Add basic user +ENV USERNAME autoware +ENV PULSE_SERVER /run/pulse/native +RUN useradd -m $USERNAME && \ + echo "$USERNAME:$USERNAME" | chpasswd && \ + usermod --shell /bin/bash $USERNAME && \ + usermod -aG sudo $USERNAME && \ + echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \ + chmod 0440 /etc/sudoers.d/$USERNAME && \ + # Replace 1000 with your user/group id + usermod --uid 1000 $USERNAME && \ + groupmod --gid 1000 $USERNAME + +# Setup .bashrc for ROS +RUN echo "source /opt/ros/kinetic/setup.bash" >> /home/$USERNAME/.bashrc && \ + #Fix for qt and X server errors + echo "export QT_X11_NO_MITSHM=1" >> /home/$USERNAME/.bashrc && \ + # cd to home on login + echo "cd" >> /home/$USERNAME/.bashrc + +# Install colcon +RUN apt-get install -y python3-pip python3-setuptools +RUN pip3 install -U setuptools +RUN apt-get install -y python3-colcon-common-extensions + +# Change user +USER autoware + +RUN sudo rosdep init \ + && rosdep update \ + && echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc + +# Setting +RUN sudo ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 +ENV LD_LIBRARY_PATH="/usr/local/cuda/lib64/stubs/:$LD_LIBRARY_PATH" + +# Install Autoware +RUN cd && mkdir /home/$USERNAME/Autoware +COPY --chown=autoware ./ /home/$USERNAME/Autoware/ +RUN /bin/bash -c 'source /opt/ros/kinetic/setup.bash; cd /home/$USERNAME/Autoware/ros/src; git submodule update --init --recursive; cd ../; ./colcon_release' +RUN echo "source /home/$USERNAME/Autoware/ros/devel/setup.bash" >> /home/$USERNAME/.bashrc + +# Setting +ENV LANG="en_US.UTF-8" +RUN echo "export LANG=\"en_US.UTF-8\"" >> /home/$USERNAME/.bashrc + +# Install dev tools +RUN sudo apt-get -y install vim tmux + +# Change Terminal Color +RUN gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_background" --type bool false +RUN gconftool-2 --set "/apps/gnome-terminal/profiles/Default/use_theme_colors" --type bool false +RUN gconftool-2 --set "/apps/gnome-terminal/profiles/Default/background_color" --type string "#000000" + +# Default CMD +CMD ["/bin/bash"] diff --git a/ros/colcon_release_cross b/ros/colcon_release_cross index fc9c4bb2afd..a6c074e7eb1 100755 --- a/ros/colcon_release_cross +++ b/ros/colcon_release_cross @@ -34,6 +34,8 @@ then -e CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -e NVIDIA_TENSORRT_ROOT_DIR=/usr/local/tensorrt -e DRIVE_T186REF_LINUX_ROOT_DIR=/usr/local/drive-t186ref-linux +-e AUTOWARE_CYTHON_EXECUTABLE=/usr/bin/cython +-e AUTOWARE_CUDA_ARCH=sm_61 END ) AUTOWARE_CUDA_ARCH=sm_61 @@ -52,7 +54,7 @@ END echo "Using toolchain file: '${AUTOWARE_TOOLCHAIN_FILE_PATH}''" AUTOWARE_SYSROOT=/sysroot/${AUTOWARE_TARGET_PLATFORM} - AUTOWARE_DOCKER_DATE=20190211 + AUTOWARE_DOCKER_DATE=20190521 docker container run \ -it \ @@ -71,6 +73,7 @@ END --build-base ${AUTOWARE_BUILD_PATH} \ --install-base ${AUTOWARE_INSTALL_PATH} \ --cmake-args \ + -DCYTHON_EXECUTABLE=/usr/bin/cython \ -DCUDA_ARCH=${AUTOWARE_CUDA_ARCH} \ -DCMAKE_TOOLCHAIN_FILE=${AUTOWARE_TOOLCHAIN_FILE_PATH} \ -DCMAKE_SYSTEM_PROCESSOR=${AUTOWARE_TARGET_ARCH} \ diff --git a/ros/cross_toolchain.cmake b/ros/cross_toolchain.cmake index 8bb8c3155b8..017e6227fa3 100644 --- a/ros/cross_toolchain.cmake +++ b/ros/cross_toolchain.cmake @@ -29,3 +29,8 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # (this emulates that the return of the TRY_RUN is a return code "0" set(THREADS_PTHREAD_ARG "0" CACHE STRING "Result from TRY_RUN" FORCE) + +set(Numpy_INCLUDE_DIRS "${CMAKE_SYSROOT}/usr/lib/python2.7/dist-packages/numpy/core/include") + +set(CYTHON_EXECUTABLE $ENV{AUTOWARE_CYTHON_EXECUTABLE}) +set(CUDA_ARCH $ENV{AUTOWARE_CUDA_ARCH}) diff --git a/ros/cross_toolchain_driveworks.cmake b/ros/cross_toolchain_driveworks.cmake index 1801f584839..77669082ebe 100644 --- a/ros/cross_toolchain_driveworks.cmake +++ b/ros/cross_toolchain_driveworks.cmake @@ -30,6 +30,11 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(THREADS_PTHREAD_ARG "0" CACHE STRING "Result from TRY_RUN" FORCE) +set(Numpy_INCLUDE_DIRS "${CMAKE_SYSROOT}/usr/lib/python2.7/dist-packages/numpy/core/include") + +set(CYTHON_EXECUTABLE $ENV{AUTOWARE_CYTHON_EXECUTABLE}) +set(CUDA_ARCH $ENV{AUTOWARE_CUDA_ARCH}) + set(CUDA_TOOLKIT_ROOT_DIR "$ENV{CUDA_TOOLKIT_ROOT_DIR}" CACHE STRING "" FORCE) set(CUDA_TOOLKIT_ROOT_DIR_INTERNAL "${CUDA_TOOLKIT_ROOT_DIR}" CACHE STRING "" FORCE) set(CUDA_TOOLKIT_TARGET_DIR "${CUDA_TOOLKIT_ROOT_DIR}/targets/aarch64-linux" CACHE STRING "" FORCE) diff --git a/ros/src/common/cmake/autoware_build_flags/cmake/autoware_build_flags-extras.cmake b/ros/src/common/cmake/autoware_build_flags/cmake/autoware_build_flags-extras.cmake index 607e89b7b5d..f1518cff436 100644 --- a/ros/src/common/cmake/autoware_build_flags/cmake/autoware_build_flags-extras.cmake +++ b/ros/src/common/cmake/autoware_build_flags/cmake/autoware_build_flags-extras.cmake @@ -9,4 +9,27 @@ if(${CMAKE_VERSION} VERSION_LESS "3.1.0") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") else() set(CMAKE_CXX_STANDARD 11) -endif() \ No newline at end of file +endif() + +message(STATUS "CUDA compilation status: $ENV{AUTOWARE_COMPILE_WITH_CUDA}.") + +macro(AW_CHECK_CUDA) + if ($ENV{AUTOWARE_COMPILE_WITH_CUDA}) + find_package(CUDA REQUIRED) + find_package(Eigen3 REQUIRED) + + if(${CUDA_VERSION} VERSION_GREATER "9.1" + AND ${CMAKE_VERSION} VERSION_LESS "3.12.3") + unset(CUDA_cublas_device_LIBRARY CACHE) + set(CUDA_cublas_device_LIBRARY ${CUDA_cublas_LIBRARY}) + set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublas_LIBRARY}) + endif() + if ("$ENV{ROS_DISTRO}" STREQUAL "melodic" AND ${EIGEN3_VERSION_STRING} VERSION_LESS "3.3.7") + message(FATAL_ERROR "GPU support on Melodic requires Eigen version>= 3.3.7") + endif() + set(USE_CUDA ON) + else() + message(WARNING "CUDA support is disabled. Set the AUTOWARE_COMPILE_WITH_CUDA environment variable and recompile to enable it") + set(USE_CUDA OFF) + endif() +endmacro() \ No newline at end of file diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/CMakeLists.txt b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/CMakeLists.txt index 91250f35ee0..6e33ddce679 100755 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/CMakeLists.txt @@ -28,17 +28,17 @@ catkin_package( autoware_msgs ) -IF (CUDA_FOUND) +###CAFFE +set(CAFFE_PATH "$ENV{HOME}/caffe/distribute") + +AW_CHECK_CUDA() + +if (USE_CUDA AND EXISTS "${CAFFE_PATH}") include_directories(${CUDA_INCLUDE_DIRS}) IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") link_directories(/usr/lib/arm-linux-gnueabihf/tegra) endif () -ENDIF () -###CAFFE -set(CAFFE_PATH "$ENV{HOME}/caffe/distribute") - -if (EXISTS "${CAFFE_PATH}") include_directories( include diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/include/cnn_segmentation.h b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/include/cnn_segmentation.h index e1eec1458f2..475eb9a248d 100755 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/include/cnn_segmentation.h +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_apollo_cnn_seg_detect/include/cnn_segmentation.h @@ -17,6 +17,7 @@ #define CNN_SEGMENTATION_H #include +#include #include diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/CMakeLists.txt b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/CMakeLists.txt index 341c3099d3d..3d8933d78ba 100644 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/CMakeLists.txt @@ -17,6 +17,7 @@ find_package(catkin REQUIRED COMPONENTS grid_map_cv grid_map_msgs autoware_msgs + jsk_rviz_plugins ) find_package(OpenMP) @@ -37,6 +38,7 @@ catkin_package( grid_map_ros grid_map_cv grid_map_msgs + jsk_rviz_plugins INCLUDE_DIRS include ) @@ -62,13 +64,15 @@ add_executable(lidar_euclidean_cluster_detect nodes/lidar_euclidean_cluster_detect/cluster.cpp) find_package(CUDA) -if (${CUDA_FOUND}) - INCLUDE(FindCUDA) +find_package(Eigen3 QUIET) + +AW_CHECK_CUDA() + +if (USE_CUDA) message("-- USING ACCELERATED CLUSTERING --") message("Version: " ${CUDA_VERSION}) message("Library: " ${CUDA_CUDA_LIBRARY}) message("Runtime: " ${CUDA_CUDART_LIBRARY}) - set(ROS_VERSION $ENV{ROS_DISTRO}) target_compile_definitions(lidar_euclidean_cluster_detect PRIVATE GPU_CLUSTERING=1 ) diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/package.xml b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/package.xml index ca94c7b2717..a891d1b26d9 100644 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/package.xml +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_euclidean_cluster_detect/package.xml @@ -21,6 +21,7 @@ grid_map_ros grid_map_cv grid_map_msgs + jsk_rviz_plugins pcl_ros roscpp @@ -33,6 +34,7 @@ grid_map_ros grid_map_cv grid_map_msgs + jsk_rviz_plugins diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_fake_perception/CMakeLists.txt b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_fake_perception/CMakeLists.txt index 3124841995f..a76d06527ae 100644 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_fake_perception/CMakeLists.txt +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_fake_perception/CMakeLists.txt @@ -44,6 +44,7 @@ target_link_libraries(lidar_fake_perception_node ) add_dependencies(lidar_fake_perception_node ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_naive_l_shape_detect/CMakeLists.txt b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_naive_l_shape_detect/CMakeLists.txt index a9c86adb812..f09df281f03 100644 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_naive_l_shape_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_naive_l_shape_detect/CMakeLists.txt @@ -42,6 +42,7 @@ add_executable(lidar_naive_l_shape_detect ${SOURCE_FILES}) add_dependencies(lidar_naive_l_shape_detect ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) target_link_libraries(lidar_naive_l_shape_detect diff --git a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_point_pillars/CMakeLists.txt b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_point_pillars/CMakeLists.txt index 87d2a5728b8..595c73d9a86 100755 --- a/ros/src/computing/perception/detection/lidar_detector/packages/lidar_point_pillars/CMakeLists.txt +++ b/ros/src/computing/perception/detection/lidar_detector/packages/lidar_point_pillars/CMakeLists.txt @@ -4,15 +4,19 @@ project(lidar_point_pillars) # set flags for CUDA availability option(CUDA_AVAIL "CUDA available" OFF) find_package(CUDA) -if (CUDA_FOUND) +find_package(autoware_build_flags REQUIRED) + +AW_CHECK_CUDA() + +if (USE_CUDA) message("CUDA is available!") message("CUDA Libs: ${CUDA_LIBRARIES}") message("CUDA Headers: ${CUDA_INCLUDE_DIRS}") set(CUDA_AVAIL ON) else() - message("CUDA NOT FOUND") + message("CUDA NOT FOUND OR INCOMPATIBLE CMAKE VERSION FOUND") set(CUDA_AVAIL OFF) -endif (CUDA_FOUND) +endif () # set flags for TensorRT availability option(TRT_AVAIL "TensorRT available" OFF) @@ -50,7 +54,6 @@ endif() if(TRT_AVAIL AND CUDA_AVAIL AND CUDNN_AVAIL) - find_package(autoware_build_flags REQUIRED) find_package(catkin REQUIRED COMPONENTS roscpp roslib diff --git a/ros/src/computing/perception/detection/trafficlight_recognizer/CMakeLists.txt b/ros/src/computing/perception/detection/trafficlight_recognizer/CMakeLists.txt index 314cac92fa9..cd6d97c1b58 100644 --- a/ros/src/computing/perception/detection/trafficlight_recognizer/CMakeLists.txt +++ b/ros/src/computing/perception/detection/trafficlight_recognizer/CMakeLists.txt @@ -1,13 +1,5 @@ cmake_minimum_required(VERSION 2.8.3) project(trafficlight_recognizer) -execute_process( - COMMAND rosversion -d - OUTPUT_VARIABLE ROS_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE -) - -set(ROS_VERSION $ENV{ROS_DISTRO}) - find_package(autoware_build_flags REQUIRED) @@ -258,7 +250,9 @@ target_link_libraries(label_maker ##############################SSD'sFORK of CAFFE NEEDS TO BE PREVIOUSLY COMPILED#################### set(SSD_CAFFE_PATH "$ENV{HOME}/ssdcaffe/distribute") #################################################################################################### -if (EXISTS "${SSD_CAFFE_PATH}") +AW_CHECK_CUDA() + +if (USE_CUDA AND EXISTS "${SSD_CAFFE_PATH}") find_package(CUDA REQUIRED) @@ -320,7 +314,9 @@ install(DIRECTORY launch/ #############Please follow README file for instructions############################################# set(MXNET_PATH "$ENV{HOME}/mxnet/") #################################################################################################### -if (EXISTS "${MXNET_PATH}") +AW_CHECK_CUDA() + +if (USE_CUDA AND EXISTS "${MXNET_PATH}") find_package(CUDA REQUIRED) diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CHANGELOG.rst b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CHANGELOG.rst deleted file mode 100644 index 32a6e58ddf9..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CHANGELOG.rst +++ /dev/null @@ -1,280 +0,0 @@ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package libdpm_ttic -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1.11.0 (2019-03-21) -------------------- -* [fix] Install commands for all the packages (`#1861 `_) - * Initial fixes to detection, sensing, semantics and utils - * fixing wrong filename on install command - * Fixes to install commands - * Hokuyo fix name - * Fix obj db - * Obj db include fixes - * End of final cleaning sweep - * Incorrect command order in runtime manager - * Param tempfile not required by runtime_manager - * * Fixes to runtime manager install commands - * Remove devel directory from catkin, if any - * Updated launch files for robosense - * Updated robosense - * Fix/add missing install (`#1977 `_) - * Added launch install to lidar_kf_contour_track - * Added install to op_global_planner - * Added install to way_planner - * Added install to op_local_planner - * Added install to op_simulation_package - * Added install to op_utilities - * Added install to sync - * * Improved installation script for pointgrey packages - * Fixed nodelet error for gmsl cameras - * USe install space in catkin as well - * add install to catkin - * Fix install directives (`#1990 `_) - * Fixed installation path - * Fixed params installation path - * Fixed cfg installation path - * Delete cache on colcon_release -* Fix license notice in corresponding package.xml -* Contributors: Abraham Monrroy Cano, amc-nu - -1.10.0 (2019-01-17) -------------------- -* Switch to Apache 2 license (develop branch) (`#1741 `_) - * Switch to Apache 2 - * Replace BSD-3 license header with Apache 2 and reassign copyright to the - Autoware Foundation. - * Update license on Python files - * Update copyright years - * Add #ifndef/define _POINTS_IMAGE_H\_ - * Updated license comment -* Use colcon as the build tool (`#1704 `_) - * Switch to colcon as the build tool instead of catkin - * Added cmake-target - * Added note about the second colcon call - * Added warning about catkin* scripts being deprecated - * Fix COLCON_OPTS - * Added install targets - * Update Docker image tags - * Message packages fixes - * Fix missing dependency -* Contributors: Esteve Fernandez - -1.9.1 (2018-11-06) ------------------- - -1.9.0 (2018-10-31) ------------------- - -1.8.0 (2018-08-31) ------------------- -* [Feature] Cross compile for NVIDIA DriveWorks (`#1447 `_) -* [Fix] Moved C++11 flag to autoware_build_flags (`#1395 `_) -* [Feature] Makes sure that all binaries have their dependencies linked (`#1385 `_) -* [Feature] Cross compile Autoware for aarch64 (`#1375 `_) -* Contributors: Esteve Fernandez - -1.7.0 (2018-05-18) ------------------- -* update Version from 1.6.3 to 1.7.0 in package.xml and CHANGELOG.rst -* [Fix] rename packages (`#1269 `_) - * rename lidar_tracker - * Modify pf_lidar_track's cmake file - * Refactor code - * Rename from euclidean_lidar_tracker to lidar_euclidean_track - * Rename from kf_contour_track to lidar_kf_contour_track - * Rename from kf_lidar_track to lidar_kf_track, but need some modification in euclidean cluster(Cluster.h) - * Rename from pf_lidar_tarck to lidar_pf_track - * Rename range_fusion - * Rename obj_reproj - * Rename euclidean_cluster to lidar_euclidean_cluster_detect - * Rename svm_lidar_detect to lidar_svm_detect - * Rename kf_lidar_track to lidar_kf_track - * Change version 1.6.3 to 1.7.0 in pacakge.xml - * Modify CMake so that extrenal header would be loaded - * Remove obj_reproj from cv_tracker - * Add interface.yaml - * Rename road_wizard to trafficlight_recognizer - * create common directory - * Add lidar_imm_ukf_pda_track - * create vision_detector and moved cv - * Modify interface.yaml and package.xml - * remove dpm_ocv - * moved directory - * Delete unnecessary launch file - * Delete rcnn related file and code - * separated dummy_track from cv_tracker - * separated klt_track from cv_tracker - * Fix a cmake - * Remove unnecessary dependency of lidar_euclidean_cluster_detect package - * Rename image_segmenter to vision_segment_enet_detect - * Remove unnecessary dependency of lidar_svm_detect package - * separated kf_track and fix a some compiling issue - * move viewers - * merge ndt_localizer and icp_localizer, and rename to lidar_localizer - * Remove unnecessary dependency of lidar_euclidean_track - * moved image lib - * add launch - * lib move under lidar_tracker - * Rename dpm_ttic to vision_dpm_ttic_detect - * rename yolo3detector to vision_yolo3_detect - * Modify cmake and package.xml in vision_dpm_ttic_detect - * moved sourcefiles into nodes dir - * moved sourcefiles into nodes dir - * Move cv_tracker/data folder and delete cv_tracker/model folder - * fix a package file and cmake - * Rename yolo2 -> vision_yolo2_detect - * fix a package file and cmake - * Fix package name of launch file - * Rename ssd to vision_ssd_detect - * fixed cmake and package for decerese dependencies - * remove top packages dir for detection - * fixed cmake for cuda - * Rename lane_detector to vision_lane_detect - * Modify package.xml in lidar-related packages - * Remove unnecessary dependencies in lidar_detector and lidar_tracker - * Modify computing.yaml for dpm_ttic - * Modify dpm_ttic launch file - * Remove/Add dependencies to trafficlight_recognizer - * Update data folder in dpm_ttic - * Modified CMake and package file in dpm_ttic. - * Remove src dir in imm_ukf_pda_track - * removed unnecessary comments - * rename lidar_tracker - * Modify pf_lidar_track's cmake file - * Refactor code - * Rename from euclidean_lidar_tracker to lidar_euclidean_track - * Rename from kf_contour_track to lidar_kf_contour_track - * Rename from kf_lidar_track to lidar_kf_track, but need some modification in euclidean cluster(Cluster.h) - * Rename from pf_lidar_tarck to lidar_pf_track - * Rename range_fusion - * Rename obj_reproj - * Rename road_wizard to trafficlight_recognizer - * Rename euclidean_cluster to lidar_euclidean_cluster_detect - * Rename svm_lidar_detect to lidar_svm_detect - * Rename kf_lidar_track to lidar_kf_track - * Change version 1.6.3 to 1.7.0 in pacakge.xml - * Modify CMake so that extrenal header would be loaded - * Remove obj_reproj from cv_tracker - * Add interface.yaml - * create common directory - * Add lidar_imm_ukf_pda_track - * create vision_detector and moved cv - * Modify interface.yaml and package.xml - * remove dpm_ocv - * moved directory - * Delete unnecessary launch file - * Delete rcnn related file and code - * separated dummy_track from cv_tracker - * separated klt_track from cv_tracker - * Fix a cmake - * Remove unnecessary dependency of lidar_euclidean_cluster_detect package - * Rename image_segmenter to vision_segment_enet_detect - * Remove unnecessary dependency of lidar_svm_detect package - * separated kf_track and fix a some compiling issue - * move viewers - * merge ndt_localizer and icp_localizer, and rename to lidar_localizer - * Remove unnecessary dependency of lidar_euclidean_track - * moved image lib - * add launch - * lib move under lidar_tracker - * Rename dpm_ttic to vision_dpm_ttic_detect - * rename yolo3detector to vision_yolo3_detect - * Modify cmake and package.xml in vision_dpm_ttic_detect - * moved sourcefiles into nodes dir - * moved sourcefiles into nodes dir - * Move cv_tracker/data folder and delete cv_tracker/model folder - * fix a package file and cmake - * Rename yolo2 -> vision_yolo2_detect - * fix a package file and cmake - * Fix package name of launch file - * Rename ssd to vision_ssd_detect - * fixed cmake and package for decerese dependencies - * remove top packages dir for detection - * fixed cmake for cuda - * Rename lane_detector to vision_lane_detect - * Modify package.xml in lidar-related packages - * Remove unnecessary dependencies in lidar_detector and lidar_tracker - * Modify computing.yaml for dpm_ttic - * Modify dpm_ttic launch file - * Remove/Add dependencies to trafficlight_recognizer - * Update data folder in dpm_ttic - * Modified CMake and package file in dpm_ttic. - * Remove src dir in imm_ukf_pda_track - * Fix bug for not starting run time manager - * Remove invalid dependency -* Contributors: Kosuke Murakami - -1.6.3 (2018-03-06) ------------------- - -1.6.2 (2018-02-27) ------------------- -* Update CHANGELOG -* Contributors: Yusuke FUJII - -1.6.1 (2018-01-20) ------------------- -* update CHANGELOG -* Contributors: Yusuke FUJII - -1.6.0 (2017-12-11) ------------------- - -1.5.1 (2017-09-25) ------------------- -* Release/1.5.1 (`#816 `_) - * fix a build error by gcc version - * fix build error for older indigo version - * update changelog for v1.5.1 - * 1.5.1 -* Contributors: Yusuke FUJII - -1.5.0 (2017-09-21) ------------------- -* Update changelog -* Contributors: Yusuke FUJII - -1.4.0 (2017-08-04) ------------------- -* version number must equal current release number so we can start releasing in the future -* added changelogs -* Contributors: Dejan Pangercic - -1.3.1 (2017-07-16) ------------------- - -1.3.0 (2017-07-14) ------------------- -* convert to autoware_msgs -* Contributors: YamatoAndo - -1.2.0 (2017-06-07) ------------------- -* fix circular-dependency -* Contributors: Shohei Fujii - -1.1.2 (2017-02-27 23:10) ------------------------- - -1.1.1 (2017-02-27 22:25) ------------------------- - -1.1.0 (2017-02-24) ------------------- - -1.0.1 (2017-01-14) ------------------- - -1.0.0 (2016-12-22) ------------------- -* Remove needless compiling flags -* Fix CUDA_ERROR_LAUNCH_FAILED error occurred in dpm_ttic - * Correct memory allocate & copy size - * Correct address calculation on device side -* Improve cmake CUDA configuration - Use cmake CUDA feature as possible for removing absolute paths. -* Use c++11 option instead of c++0x - We can use newer compilers which support 'c++11' option -* Initial commit for public release -* Contributors: Manato Hirabayashi, Shinpei Kato, Syohei YOSHIDA diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CMakeLists.txt deleted file mode 100644 index e28fc154c40..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/CMakeLists.txt +++ /dev/null @@ -1,144 +0,0 @@ -cmake_minimum_required(VERSION 2.8.3) -project(libdpm_ttic) - - -find_package(autoware_build_flags REQUIRED) -find_package(catkin REQUIRED COMPONENTS - sensor_msgs - std_msgs - ) -find_package(OpenCV REQUIRED) -find_package(CUDA) - -catkin_package( - INCLUDE_DIRS include - LIBRARIES libdpm_ttic -) - -set(CMAKE_C_FLAGS "-O2 -g -Wall -Wno-unused-result ${CMAKE_C_FLAGS}") -set(CMAKE_CXX_FLAGS "-O2 -g -Wall -Wno-unused-result ${CMAKE_CXX_FLAGS}") - -if(CUDA_FOUND) - include_directories( - include - ${catkin_INCLUDE_DIRS} - ${CUDA_INCLUDE_DIRS} - "common" - "cpu" - "gpu" - ) - - if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") - link_directories(/usr/lib/arm-linux-gnueabihf/tegra) - endif() - - file(GLOB DPM_TTIC_COMMON_IMPL_SOURCES "common/*.cpp") - file(GLOB DPM_TTIC_CPU_IMPL_SOURCES "cpu/*.cpp") - file(GLOB DPM_TTIC_GPU_IMPL_SOURCES "gpu/*.cpp") - - ## Declare a cpp library - add_library(libdpm_ttic - ${DPM_TTIC_COMMON_IMPL_SOURCES} - ${DPM_TTIC_CPU_IMPL_SOURCES} - ${DPM_TTIC_GPU_IMPL_SOURCES} - ) - #SET_TARGET_PROPERTIES(libdpm_ttic PROPERTIES OUTPUT_NAME dpm_ttic) - - target_link_libraries(libdpm_ttic - ${catkin_LIBRARIES} - ${OpenCV_LIBS} - ${CUDA_CUDA_LIBRARY} - ) - - set(CUDA_COMPILER "${CUDA_TOOLKIT_ROOT_DIR}/bin/nvcc") - - if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") - set(CUDA_LDFLAGS -L/usr/lib/arm-linux-gnueabihf/tegra -lcuda) - else() - set(CUDA_LDFLAGS -lcuda) - endif() - - if(CMAKE_CROSSCOMPILING) - if(NOT CUDA_ARCH) - message(FATAL_ERROR "Please define the CUDA_ARCH CMake variable") - endif() - else() - set(CUDA_CAPABILITY_VERSION_CHECKER - "${CATKIN_DEVEL_PREFIX}/lib/capability_version_checker" - ) - - execute_process( - COMMAND - ${CUDA_COMPILER} - -o ${CUDA_CAPABILITY_VERSION_CHECKER} - "${CMAKE_CURRENT_SOURCE_DIR}/util/capability_version_checker.cpp" - ${CUDA_LDFLAGS} - ) - - execute_process( - COMMAND ${CUDA_CAPABILITY_VERSION_CHECKER} - OUTPUT_VARIABLE CUDA_CAPABILITY_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - if("${CUDA_CAPABILITY_VERSION}" MATCHES "^[1-9][0-9]+$") - set(CUDA_ARCH "sm_${CUDA_CAPABILITY_VERSION}") - else() - set(CUDA_ARCH "sm_52") - endif() - endif() - - set(CUDA_FILE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/gpu") - add_custom_command( - OUTPUT GPU_function.cubin - COMMAND - ${CUDA_COMPILER} "-arch=${CUDA_ARCH}" - "-o" "${CATKIN_DEVEL_PREFIX}/lib/GPU_function.cubin" - "-cubin" "-Xptxas" "-v" "--maxrregcount" "32" "-I${CUDA_FILE_PATH}" - "${CMAKE_CURRENT_SOURCE_DIR}/gpu/GPU_function.cu" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/gpu/GPU_function.cu" - ) - - add_custom_target(cuda_binary DEPENDS GPU_function.cubin) - add_dependencies(libdpm_ttic - cuda_binary - ) - -else() - - include_directories( - include - ${catkin_INCLUDE_DIRS} - "common" - "cpu" - ) - - file(GLOB DPM_TTIC_COMMON_IMPL_SOURCES "common/*.cpp") - file(GLOB DPM_TTIC_CPU_IMPL_SOURCES "cpu/*.cpp") - - ## Declare a cpp library - add_library(libdpm_ttic - ${DPM_TTIC_COMMON_IMPL_SOURCES} - ${DPM_TTIC_CPU_IMPL_SOURCES} - ) - #SET_TARGET_PROPERTIES(libdpm_ttic PROPERTIES OUTPUT_NAME dpm_ttic) - - target_link_libraries(libdpm_ttic - ${catkin_LIBRARIES} - ${OpenCV_LIBS} - ) - - -endif() - -install(DIRECTORY include/${PROJECT_NAME}/ - DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} - FILES_MATCHING PATTERN "*.hpp" - ) - -install(TARGETS - libdpm_ttic - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} - ) diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.cpp deleted file mode 100644 index 439f8f5ac42..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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 "common.hpp" - -void dpm_ttic_add_part_calculation(FLOAT *score, FLOAT*M,int *rootsize,int *partsize,int ax,int ay) -{ - FLOAT *S = score; - int jj_L = ax+2*(rootsize[1]-1)-1; - int ii_L = ay+2*(rootsize[0]-1); - int axm = ax-1; - - //add part score(resolution of part is 2x of root) - for(int jj=axm;jj<=jj_L;jj+=2) - { - int L = jj*partsize[0]; - for(int ii=ay;ii<=ii_L;ii+=2) - { - *S -= M[ii+L-1]; - S++; - } - } -} - -//initialize accumulated score -FLOAT *dpm_ttic_init_accumulated_score(IplImage *image, size_t& accumulated_size) -{ - size_t num = image->height * image->width; - accumulated_size = num * sizeof(FLOAT); - - FLOAT *scores = (FLOAT *)calloc(num, sizeof(FLOAT)); - for(size_t i = 0; i < num; i++) - scores[i] = -100.0; - - return scores; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.hpp deleted file mode 100644 index 91cf68a1460..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/common/common.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _COMMON_H_ -#define _COMMON_H_ - -#include -#include - -#include "switch_float.h" - -//release function (for safety release) -#define s_free(a) do { \ - std::free(a); \ - a = nullptr; \ -} while(0) - -extern void dpm_ttic_add_part_calculation(FLOAT *score, FLOAT*M,int *rootsize,int *partsize,int ax,int ay); -extern FLOAT *dpm_ttic_init_accumulated_score(IplImage *image, size_t& accumulated_size); - -#endif /* _COMMON_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/MODEL_info.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/MODEL_info.h deleted file mode 100755 index 505ac3eccf7..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/MODEL_info.h +++ /dev/null @@ -1,95 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -///////////MODEL_info.h Detector-Model information & definition header ///////////////////////////////////////// - -//OpenCV library -#ifndef INCLUDED_Minfo_ -#define INCLUDED_Minfo_ - -#include -#include "switch_float.h" - -///////////////////// -//file information/// -///////////////////// - -//struct for model component information -struct Model_info { - //basic information - //from xxxcomp.csv - int numcomponent; //number of component - int sbin; //cell size - int interval; //interval (for hierachical detection) - int max_X; - int max_Y; - //from calculation - int padx; //pad information - int pady; - int max_scale; - //image size information - int IM_WIDTH; - int IM_HEIGHT; - - //per root - int *ridx; //root index information - int *oidx; //offsetindex information - FLOAT *offw; //offset weight - int *rsize; //root size - int *numpart; //number of part filter per component - - //per part - int **pidx; //part index information - int **didx; //define index of part - int **psize; - - //defs - FLOAT *def; //defs - int *anchor; //anchor - - //least_square info - FLOAT **x1; - FLOAT **y1; - FLOAT **x2; - FLOAT **y2; - - bool ini; //flag for initialization - FLOAT ratio; //ratio of zooming image -}; - -//struct for root_filter_information -struct Rootfilters { - int NoR; //number of root filter - int **root_size; //size of root filter - FLOAT **rootfilter; //weight of root filter - int *rootsym; //symmetric information -}; - -//struct for part_filter_information -struct Partfilters { - int NoP; //number of part filter - int **part_size; //size of part filter - FLOAT **partfilter; //weight of root filter - int *part_partner; //symmetric-partner information - int *part_sym; //symmetric information of part filter -}; - -//model information -struct MODEL { - Model_info *MI; - Rootfilters *RF; - Partfilters *PF; -}; - -//Result of Detection -struct RESULT { - int num; - int *point; - int *OR_point; - IplImage **IM; - int *type; - FLOAT *scale; - FLOAT *score; -}; - -#endif diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.cpp deleted file mode 100644 index b43bde3795b..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.cpp +++ /dev/null @@ -1,74 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////detect.cpp Detect car from an image /////////////////////////////////////////////////////////////////////// - -//OpenCV library -#include -#include -#include - -//C++ library -#include -#include -#include - -//ORIGINAL header files -#include "MODEL_info.h" //File information -#include "common.hpp" - -#include "switch_float.h" -#include "tracking.hpp" -#include "nms.hpp" -#include "get_boxes.hpp" -#include "featurepyramid.hpp" - -//definiton of functions// - -//create and resize Iplimage -//initialize accumulated score - -//detect car-boundary-boxes - -static FLOAT *detect(IplImage *IM,MODEL *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE) -{ - //for time measurement - struct timeval tv; - struct timeval tv_calc_f_pyramid_start, tv_calc_f_pyramid_end; - - //initialize scale information for hierachical detection - FLOAT *scales = dpm_ttic_cpu_ini_scales(MO->MI,IM,IM->width,IM->height); - - //initialize feature-size matrix - int *featsize = dpm_ttic_cpu_ini_featsize(MO->MI); - //calculate feature pyramid - - gettimeofday(&tv_calc_f_pyramid_start, NULL); - FLOAT **feature = dpm_ttic_cpu_calc_f_pyramid(IM,MO->MI,featsize,scales); - gettimeofday(&tv_calc_f_pyramid_end, NULL); - tvsub(&tv_calc_f_pyramid_end, &tv_calc_f_pyramid_start, &tv); - printf("\n"); - printf("calc_f_pyramid %f[ms]\n", tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0); - - //detect boundary boxes - FLOAT *boxes = dpm_ttic_cpu_get_boxes(feature,scales,featsize,MO,D_NUMS,A_SCORE,thresh); - - free(scales); - free(featsize); - dpm_ttic_cpu_free_features(feature, MO->MI); - - return boxes; -} - -RESULT *dpm_ttic_cpu_car_detection(IplImage *image, MODEL *model, FLOAT thresh, int *D_NUMS, - FLOAT *A_SCORE,FLOAT overlap) -{ - FLOAT *boxes = detect(image,model,thresh,D_NUMS,A_SCORE); //detect high-score region - FLOAT *rects = dpm_ttic_cpu_nms(boxes,overlap,D_NUMS,model); //get boundary-rectangles of car - RESULT *result = dpm_ttic_cpu_get_new_rects(image,model,rects,D_NUMS); //get current result - - s_free(boxes); - s_free(rects); - - return result; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.hpp deleted file mode 100644 index 8cc4beb06c0..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/detect.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _DETECT_H_ -#define _DETECT_H_ - -#include "switch_float.h" - -extern RESULT *dpm_ttic_cpu_car_detection(IplImage *image, MODEL *model, FLOAT thresh, int *D_NUMS, - FLOAT *A_SCORE,FLOAT overlap); - -#endif /* _DETECT_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.cpp deleted file mode 100755 index 639cafbf2fb..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.cpp +++ /dev/null @@ -1,82 +0,0 @@ -// Car tracking project with laser_radar_data_fusion -// Copyright 2009-10 Akihiro Takeuchi - -/////dt.cpp Decide best filter position by dynamic programing - -//C++ library -#include -#include - -#include "switch_float.h" -#include "dt.hpp" - -static inline void dt_helper(FLOAT *src, FLOAT *dst, int *ptr, int step, int s1, int s2, int d1, int d2, FLOAT a, FLOAT b) -{ - if (d2 >= d1) - { - int d = (d1+d2) >> 1; - int ds =d*step; - int s = s1; - FLOAT src_ss = *(src+s*step); - for (int p = s1+1; p <= s2; p++) - { - int t1 = d-s; - int t2 = d-p; - if (src_ss + a*t1*t1 + b*t1 > *(src+p*step) + a*t2*t2 + b*t2) - { - s = p; - src_ss = *(src+s*step); - } - } - int D = d-s; - dst[ds] = *(src+s*step) + a*D*D + b*D; - ptr[ds] = s; - dt_helper(src, dst, ptr, step, s1, s, d1, d-1, a, b); - dt_helper(src, dst, ptr, step, s, s2, d+1, d2, a, b); - } -} - -//sub function of dt -static void dt1d(FLOAT *src, FLOAT *dst, int *ptr, int step, int n, FLOAT a, FLOAT b) -{ - dt_helper(src, dst, ptr, step, 0, n-1, 0, n-1, a, b); -} - -//Decide best filter position by dynamic programing -FLOAT *dpm_ttic_cpu_dt(FLOAT *vals,FLOAT ax,FLOAT bx,FLOAT ay,FLOAT by,int *dims,int *Ix,int *Iy) -{ - const int SQ = dims[0]*dims[1]; - FLOAT *M = (FLOAT*)malloc(sizeof(FLOAT)*SQ); - FLOAT *tmpM = (FLOAT*)malloc(sizeof(FLOAT)*SQ); - int *tmpIx = (int*)malloc(sizeof(int)*SQ); - int *tmpIy = (int*)malloc(sizeof(int)*SQ); - int XD=0; - - for (int x = 0; x < dims[1]; x++) - { - dt1d(vals+XD, tmpM+XD, tmpIy+XD, 1, dims[0], ay, by); - XD+=dims[0]; - } - for (int y = 0; y < dims[0]; y++) - { - dt1d(tmpM+y, M+y, tmpIx+y, dims[0], dims[1], ax, bx); - } - - int *IX_P = Ix; - int *IY_P = Iy; - int *tmpIx_P=tmpIx; - for (int x = 0; x < dims[1]; x++) - { - for (int y = 0; y < dims[0]; y++) - { - *(IX_P++) = *tmpIx_P; - *(IY_P++) = tmpIy[*tmpIx_P*dims[0]+y]; - tmpIx_P++; - } - } - - free(tmpM); - free(tmpIx); - free(tmpIy); - return(M); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.hpp deleted file mode 100644 index 66de8739594..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/dt.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _DT_H_ -#define _DT_H_ - -#include "switch_float.h" - -//decide optimum part position -extern FLOAT *dpm_ttic_cpu_dt(FLOAT *vals,FLOAT ax,FLOAT bx,FLOAT ay,FLOAT by,int *dims,int *Ix,int *Iy); - -#endif /* _DT_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/fconvsMT.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/fconvsMT.cpp deleted file mode 100644 index fed8533e1c5..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/fconvsMT.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////fconvsMT.cpp convolute features and filter ///////////////////////////////////////////////////////////////// - -//C++ library (thread-functions are only supported by windows) -#include -#include - -#include - -//Original header -#include "MODEL_info.h" //File information -#include "common.hpp" -#include "switch_float.h" - -struct thread_data { - FLOAT *A; - FLOAT *B; - FLOAT *C; - FLOAT *F; - FLOAT *T; - int A_dims[3]; - int B_dims[3]; - int C_dims[2]; -}; - -//thread process -// convolve A and B(non_symmetric) -static void* process(void *thread_arg) { - thread_data *args = (thread_data *)thread_arg; - FLOAT *A = args->A; //feature - FLOAT *B = args->B; //filter - FLOAT *C = args->C; //output - int *A_dims = args->A_dims; - int *B_dims = args->B_dims; - int *C_dims = args->C_dims; - int num_features = A_dims[2]; - - const int A_SQ = A_dims[0]*A_dims[1]; - const int B_SQ = B_dims[0]*B_dims[1]; - - for (int f = 0; f < num_features; f++) - { - FLOAT *dst = C; - FLOAT *A_src = A + f*A_SQ; - FLOAT *B_src = B + f*B_SQ; - int XA0 = 0; - for (int x = 0; x < C_dims[1]; x++) - { - FLOAT *A_src2 =A_src+XA0; - XA0+=A_dims[0]; - for (int y = 0; y < C_dims[0]; y++) - { - FLOAT val = 0; - FLOAT *A_off = A_src2+y; - FLOAT *B_off = B_src; - for (int xp = 0; xp < B_dims[1]; xp++) - { - switch(B_dims[0]) - { - case 20: val += A_off[19] * B_off[19]; - case 19: val += A_off[18] * B_off[18]; - case 18: val += A_off[17] * B_off[17]; - case 17: val += A_off[16] * B_off[16]; - case 16: val += A_off[15] * B_off[15]; - case 15: val += A_off[14] * B_off[14]; - case 14: val += A_off[13] * B_off[13]; - case 13: val += A_off[12] * B_off[12]; - case 12: val += A_off[11] * B_off[11]; - case 11: val += A_off[10] * B_off[10]; - case 10: val += A_off[9] * B_off[9]; - case 9: val += A_off[8] * B_off[8]; - case 8: val += A_off[7] * B_off[7]; - case 7: val += A_off[6] * B_off[6]; - case 6: val += A_off[5] * B_off[5]; - case 5: val += A_off[4] * B_off[4]; - case 4: val += A_off[3] * B_off[3]; - case 3: val += A_off[2] * B_off[2]; - case 2: val += A_off[1] * B_off[1]; - case 1: val += A_off[0] * B_off[0]; - break; - default: - FLOAT *A_temp = A_off; - FLOAT *B_temp = B_off; - for (int yp = 0; yp < B_dims[0]; yp++) - { - val += *(A_temp++) * *(B_temp++); - } - } - A_off+=A_dims[0]; - B_off+=B_dims[0]; - } - *(dst++) += val; - } - } - A_src+=A_SQ; - B_src+=B_SQ; - } - - pthread_exit((void*)thread_arg); - return nullptr; -} - -// convolve A and B when B is symmetric -static void* processS(void *thread_arg) -{ - thread_data *args = (thread_data *)thread_arg; - FLOAT *A = args->A; - FLOAT *B = args->B; - FLOAT *C = args->C; - FLOAT *F = args->F; - FLOAT *T = args->T; - int *A_dims = args->A_dims; - int *B_dims = args->B_dims; - int *C_dims = args->C_dims; - int num_features = A_dims[2]; - int width1 = (int)(B_dims[1]/2.0+0.99); - int width2 = (int)(B_dims[1]/2.0); - - const int A_SQ = A_dims[0]*A_dims[1]; - const int B_SQ = B_dims[0]*B_dims[1]; - const int T_L = width2*A_dims[0]; - const int CP_L = width1*A_dims[0]; - const int XF_L = A_dims[1]-width1-width2; - const int CP_L_S = CP_L*sizeof(FLOAT); - - for (int f = 0; f < num_features; f++) - { - FLOAT *dst = C; - FLOAT *A_src = A + f*A_SQ; - FLOAT *B_src = B + f*B_SQ; - FLOAT *F_src = F + f*A_SQ; - int XA = 0; - for (int x = 0; x < C_dims[1]; x++) - { - // generate tmp data for band of output - memcpy(T, A_src + XA, CP_L_S); - XA+=A_dims[0]; - int xf = XF_L-x; - FLOAT *copy_dst = T; - FLOAT *copy_end = T + T_L; - FLOAT *copy_src = F_src + xf*A_dims[0]; - while (copy_dst < copy_end) - { - *copy_dst += *copy_src; - copy_dst++; - copy_src++; - } - - for (int y = 0; y < C_dims[0]; y++) - { - FLOAT val = 0; - FLOAT *T_off = T+y; - FLOAT *B_off = B_src; - for (int xp = 0; xp < width1; xp++) - { - switch(B_dims[0]) { - case 20: val += T_off[19] * B_off[19]; - case 19: val += T_off[18] * B_off[18]; - case 18: val += T_off[17] * B_off[17]; - case 17: val += T_off[16] * B_off[16]; - case 16: val += T_off[15] * B_off[15]; - case 15: val += T_off[14] * B_off[14]; - case 14: val += T_off[13] * B_off[13]; - case 13: val += T_off[12] * B_off[12]; - case 12: val += T_off[11] * B_off[11]; - case 11: val += T_off[10] * B_off[10]; - case 10: val += T_off[9] * B_off[9]; - case 9: val += T_off[8] * B_off[8]; - case 8: val += T_off[7] * B_off[7]; - case 7: val += T_off[6] * B_off[6]; - case 6: val += T_off[5] * B_off[5]; - case 5: val += T_off[4] * B_off[4]; - case 4: val += T_off[3] * B_off[3]; - case 3: val += T_off[2] * B_off[2]; - case 2: val += T_off[1] * B_off[1]; - case 1: val += T_off[0] * B_off[0]; - break; - default: - FLOAT *T_temp = T_off; - FLOAT *B_temp = B_off; - for (int yp = 0; yp < B_dims[0]; yp++) - { - val += *(T_temp++) * *(B_temp++); - } - } - T_off+=A_dims[0]; - B_off+=B_dims[0]; - } - - *(dst++) += val; - } - } - } - - pthread_exit((void*)thread_arg); - - return nullptr; -} - -//Input(feat,flipfeat,filter,symmetric info,1,length) -//Output Score -FLOAT **dpm_ttic_cpu_fconvsMT(FLOAT*feat,FLOAT*flfeat,FLOAT**filter,int *sym_info, - int start,int end,int *A_SIZE,int **B_SIZE,int *M_size) -{ - start=start-1; - end=end-1; - - const int len=end-start+1; - FLOAT **Output=(FLOAT**)malloc(sizeof(FLOAT*)*len); //Output (cell) - // start threads - thread_data *td = (thread_data *)calloc(len, sizeof(thread_data)); - pthread_t *ts = (pthread_t *)calloc(len, sizeof(pthread_t)); - - for(int ii=0;ii -#include -#include - -//C++ library -#include -#include -#include - -#include -#include -#include - -using namespace std; - -//Header files -#include "switch_float.h" -#include "MODEL_info.h" //File information -#include "common.hpp" -#include "resize.hpp" -#include "featurepyramid.hpp" - -//definition of constant -#define eps 0.0001 - -//definition of sin and cos -static const FLOAT Hcos[9]={1.0000,0.9397,0.7660,0.5000,0.1736,-0.1736,-0.5000,-0.7660,-0.9397}; -static const FLOAT Hsin[9]={0.0000,0.3420,0.6428,0.8660,0.9848,0.9848,0.8660,0.6428,0.3420}; - -//definition of structure -struct thread_data { - FLOAT *IM; - int ISIZE[3]; - int FSIZE[2]; - int F_C; - int sbin; - FLOAT *Out; -}; - -//inline functions(Why does not use stddard libary) -static inline int max_i(int x,int y) -{ - return (x >= y ? x : y); -} - -static inline int min_i(int x,int y) -{ - return (x <= y ? x : y); -} - -static inline FLOAT min_2(FLOAT x) -{ - return (x <= 0.2 ? x :0.2); -} - -//initialization functions - -//initialize scales -FLOAT *dpm_ttic_cpu_ini_scales(Model_info *MI,IplImage *IM,int X,int Y) //X,Y length of image -{ - int interval,max_scale; - - if(MI->ini) - { - //calculate max scale - //MI->interval/=2; //reduce calculation time - const int sbin = MI->sbin; - interval = MI->interval; - const FLOAT sc = pow(2.0,(1/(double)interval));//縮小比を表している。 - const int numcomponent = MI->numcomponent; - max_scale = 36; - const int L_NUM = interval+max_scale; - - FLOAT MRY =(FLOAT)MI->rsize[0]; - FLOAT MRX =(FLOAT)MI->rsize[1]; - - for(int kk=1;kkrsize[kk*2]rsize[kk*2]; - if(MI->rsize[kk*2+1]rsize[kk*2+1]; - } - - MRY/=2; - MRX/=2; - - FLOAT height =(FLOAT)IM->height/(FLOAT)sbin; - FLOAT width = (FLOAT)IM->width/(FLOAT)sbin; - FLOAT sc_step =1/sc; //縮小率 - - for(int kk=0;kkmax_scale=max_scale; - printf("max_scale:%d\n",max_scale); - MI->IM_HEIGHT=IM->height; - /*printf("高さ%d\n",MI->IM_HEIGHT);*/ - MI->IM_WIDTH=IM->width; - /*printf("横%d\n",MI->IM_WIDTH);*/ - MI->ini=false; - } - else - { - interval = MI->interval; - max_scale = MI->max_scale; - MI->IM_HEIGHT = IM->height; - MI->IM_WIDTH = IM->width; - } - - //return - FLOAT *scales = (FLOAT*)calloc((max_scale+interval),sizeof(FLOAT)); //Model information - return(scales); -} - -//initialize feature size matrix - -int *dpm_ttic_cpu_ini_featsize(Model_info *MI) -{ - const int LofFeat=MI->max_scale+MI->interval; - int *featsize = (int*)calloc(LofFeat*2,sizeof(FLOAT)); // feature size information matrix - return(featsize); -} - -//calculate HOG features from Image -//HOG features are calculated for each block(BSL*BSL pixels) -static FLOAT *calc_feature(FLOAT *SRC,int *ISIZE,int *FTSIZE,int sbin) -{ - //input size - const int height=ISIZE[0]; //{268,268,134,67,233,117,203,203,177,154,89,203,154,77} - const int width=ISIZE[1]; //{448,112,224,390,195,340,170,296,257,148,340,257,129} - const int dims[2]={height,width}; - - //size of Histgrams and Norm calculation space size - const int blocks[2] = {(int)floor(double(height)/double(sbin)+0.5),(int)floor(double(width)/double(sbin)+0.5)};//{67,112}....sbine=4 - const int BLOCK_SQ = blocks[0]*blocks[1];//{7504}... - const int BX = blocks[0]+1;//68... - - //Output features size(Output) - const int OUT_SIZE[3]={max_i(blocks[0]-2,0),max_i(blocks[1]-2,0),27+4};//{65,110,31}..... - const int O_DIM=OUT_SIZE[0]*OUT_SIZE[1];//{7150}..... - const int DIM_N =9*BLOCK_SQ;//{67536} - - //Visible range (eliminate border blocks) - const int visible[2]={blocks[0]*sbin,blocks[1]*sbin}; - const int vis_R[2] ={visible[0]-1,visible[1]-1}; - const int vp0=dims[0]-2; - const int vp1=dims[1]-2; - const int SQUARE =dims[0]*dims[1]; - const FLOAT SBIN = FLOAT(sbin); - - - //HOG Histgram and Norm - FLOAT *HHist = (FLOAT*)calloc(BLOCK_SQ*18,sizeof(FLOAT)); // HOG histgram - FLOAT *Norm = (FLOAT*)calloc(BLOCK_SQ,sizeof(FLOAT)); // Norm - - //feature(Output) - FLOAT *feat=(FLOAT*)calloc(OUT_SIZE[0]*OUT_SIZE[1]*OUT_SIZE[2],sizeof(FLOAT)); - - //calculate HOG histgram - for(int x=1;x=blocks[1]) {flag2=false;flagX=false;} - int YC=min_i(x,vp1)*dims[0]; - FLOAT *SRC_YC = SRC+YC; - - for(int y=1;yv){v=v2;dx=dx2;dy=dy2;} - if(v3>v){v=v3;dx=dx3;dy=dy3;} - - FLOAT best_dot=0.0; - int best_o=0; - - //snap to one of 18 orientations - for(int o=0;o<9;o++) - { - FLOAT dot=Hcos[o]*dx+Hsin[o]*dy; - if(dot>best_dot) {best_dot=dot;best_o=o;} - else if (-dot>best_dot) {best_dot=-dot;best_o=o+9;} - } - - //Add to 4 histgrams around pixel using linear interpolation - FLOAT yp=((FLOAT)y+0.5)/SBIN-0.5; - int iyp=(int)floor(yp); - int iypp=iyp+1; - FLOAT vy0=yp-(FLOAT)iyp; - FLOAT vy1=1.0-vy0; - v=sqrt(v); - int ODim=best_o*BLOCK_SQ; - FLOAT *Htemp = HHist+ODim; - FLOAT vx1Xv =vx1*v; - FLOAT vx0Xv = vx0*v; - - if(flagX) - { - if(iyp>=0) - { - *(Htemp+ ixp_b+iyp)+=vy1*vx1Xv; //1-少数をxyでかけたものにエッジ強度の2乗をかけたもの - *(Htemp+ ixpp_b+iyp)+=vy1*vx0Xv; - } - if (iypp=0) *(Htemp+ixp_b+iyp)+=vy1*vx1Xv; - if (iypp=0) *(Htemp+ixpp_b+iyp)+=vy1*vx0Xv; - if(iyppwidth; - printf("%d\n",width); - const int height = Input->height; - printf("%d\n",height); - const int nChannels = Input->nChannels; - printf("%d\n",nChannels); - const int SQ = height*width; - const int WS = Input->widthStep; - - FLOAT *Output = (FLOAT *)malloc(sizeof(FLOAT)*height*width*nChannels); - printf("%d",height*width*nChannels); - - FLOAT *R= Output; - FLOAT *G= Output+SQ; - FLOAT *B= Output+2*SQ; - char *IDATA = Input->imageData; - - //pick intensity of pixel (color) - for(int x=0;xIM,args->ISIZE,args->FSIZE,args->sbin); - args->Out =Out; - //_endthreadex(0); - //return(0); - pthread_exit((void*)thread_arg); -} - -//void initialize thread data -static void ini_thread_data(thread_data *TD,FLOAT *IM,int *INSIZE,int sbin,int level) -{ - TD->IM=IM; - //memcpy_s(TD->ISIZE,sizeof(int)*3,INSIZE,sizeof(int)*3); - memcpy(TD->ISIZE, INSIZE,sizeof(int)*3); - TD->FSIZE[0]=0; - TD->FSIZE[1]=0; - TD->sbin=sbin; - TD->F_C=level; -} - -//calculate feature pyramid (extended to main.cpp) -FLOAT **dpm_ttic_cpu_calc_f_pyramid(IplImage *Image,Model_info *MI,int *FTSIZE,FLOAT *scale) //calculate feature pyramid -{ - //constant parameters - const int max_scale = MI->max_scale; - const int interval = MI->interval; - const int sbin = MI->sbin; - const int sbin2 = (int)floor((double)sbin/2.0); - const int LEN = max_scale+interval; - const FLOAT sc = pow(2,(1.0/(double)interval)); - int INSIZE[3]={Image->height,Image->width,Image->nChannels}; - int RISIZE[3]={0,0,0},OUTSIZE[3] ={0,0,0}; - - //Original image (FLOAT) - FLOAT *D_I = Ipl_to_FLOAT(Image); - - //features - FLOAT **feat=(FLOAT**)malloc(sizeof(FLOAT*)*LEN); //Model information - - //thread for feature calculation - thread_data *td = (thread_data *)calloc(LEN, sizeof(thread_data)); - pthread_t *ts = (pthread_t *)calloc(LEN, sizeof(pthread_t)); - - FLOAT **RIM_S =(FLOAT**)calloc(LEN,sizeof(FLOAT*)); - - int *RI_S = (int*)calloc(interval*3,sizeof(int)); - FLOAT *RIM_T; - int t_count=0; - - //calculate resized image - for(int ii=0;iimax_scale+MI->interval; - if(features!=NULL) - { - for (int ii=0;ii -#include -#include - -//Header files -#include "MODEL_info.h" //File information -#include "common.hpp" - -#include "switch_float.h" -#include "get_boxes.hpp" -#include "dt.hpp" -#include "fconvsMT.hpp" - -static void free_rootmatch(FLOAT **rootmatch, MODEL *MO) -{ - if (rootmatch == nullptr) - return; - - for(int i = 0; i < MO->RF->NoR; i++) { - free(rootmatch[i]); - - } - s_free(rootmatch); -} - -//free part-matching result -static void free_partmatch(FLOAT **partmatch, MODEL *MO) -{ - if (partmatch == nullptr) - return; - - for(int i = 0; i < MO->PF->NoP; i++) { - s_free(partmatch[i]); - } - s_free(partmatch); -} - -//sub functions -//padd zeros to image -static FLOAT *padarray(FLOAT *feature,int *size,int padx,int pady) -{ - const int NEW_Y=size[0]+pady*2; - const int NEW_X=size[1]+padx*2; - const int L=NEW_Y*padx; - const int SPL=size[0]+pady; - const int M_S = sizeof(FLOAT)*size[0]; - FLOAT *new_feature = (FLOAT*)calloc(NEW_Y*NEW_X*size[2],sizeof(FLOAT)); // feature (pad-added) - FLOAT *P=new_feature; - FLOAT *S=feature; - - for(int ii=0;iithresh) - { - NUM++; - if(*P>MAX_SCORE) MAX_SCORE=*P; - } - P++; - } - - int *Out =(int*)malloc(NUM*2*sizeof(int)); - P=score; - - int ii=0,qq=0; - while(qqthresh) - { - Out[2*qq]=ii%ssize[0]; //Y coordinate of match - Out[2*qq+1]=ii/ssize[0]; //X coordinate of match - qq++; - } - ii++; - P++; - } - - *GMN = NUM; - return(Out); -} - -//get root-box pixel coordinate -static FLOAT *rootbox(int x,int y,FLOAT scale,int padx,int pady,int *rsize) -{ - FLOAT *Out=(FLOAT*)malloc(sizeof(FLOAT)*4); - Out[0]=((FLOAT)y-(FLOAT)pady+1)*scale; //Y1 - Out[1]=((FLOAT)x-(FLOAT)padx+1)*scale; //X1 - Out[2]=Out[0]+(FLOAT)rsize[0]*scale-1.0; //Y2 - Out[3]=Out[1]+(FLOAT)rsize[1]*scale-1.0; //X2 - return(Out); -} - -//get part-box pixel coordinate -static FLOAT *partbox(int x,int y,int ax,int ay,FLOAT scale,int padx,int pady,int *psize,int *lx,int *ly,int *ssize) -{ - FLOAT *Out=(FLOAT*)malloc(sizeof(FLOAT)*4); - int probex = (x-1)*2+ax; - int probey = (y-1)*2+ay; - int P = probey+probex*ssize[0]; - - FLOAT px = (FLOAT)lx[P]+1.0; - FLOAT py = (FLOAT)ly[P]+1.0; - - Out[0]=((py-2.0)/2.0+1.0-(FLOAT)pady)*scale; //Y1 - Out[1]=((px-2.0)/2.0+1.0-(FLOAT)padx)*scale; //X1 - Out[2]=Out[0]+(FLOAT)psize[0]*scale/2.0-1.0; //Y2 - Out[3]=Out[1]+(FLOAT)psize[1]*scale/2.0-1.0; //X2 - return(Out); -} - -//calculate accumulated HOG detector score -static void calc_a_score(FLOAT *ac_score,FLOAT *score,int *ssize,int *rsize,Model_info *MI,FLOAT scale) -{ - const int IHEI = MI->IM_HEIGHT; - const int IWID = MI->IM_WIDTH; - int pady_n = MI->pady; - int padx_n = MI->padx; - int block_pad = (int)(scale/2.0); - - int RY = (int)((FLOAT)rsize[0]*scale/2.0-1.0+block_pad); - int RX = (int)((FLOAT)rsize[1]*scale/2.0-1.0+block_pad); - - for(int ii=0;ii*PP) *PP=sc; //save max score - } - } - } - } -} - -//free detected boxes result -static void free_boxes(FLOAT **boxes, int LofFeat) -{ - if (boxes == nullptr) - return; - - for(int i = 0; i < LofFeat; i++) - { - s_free(boxes[i]); - } - s_free(boxes); -} - -//detect boundary box -FLOAT *dpm_ttic_cpu_get_boxes(FLOAT **features,FLOAT *scales,int *FSIZE,MODEL *MO, - int *Dnum,FLOAT *A_SCORE,FLOAT thresh) -{ - //constant parameters - const int max_scale = MO->MI->max_scale; - const int interval = MO->MI->interval; - const int sbin = MO->MI->sbin; - const int padx = MO->MI->padx; - const int pady = MO->MI->pady; - const int NoR = MO->RF->NoR; - const int NoP = MO->PF->NoP; - const int NoC = MO->MI->numcomponent; - const int *numpart = MO->MI->numpart; - const int LofFeat=(max_scale+interval)*NoC; - const int L_MAX = max_scale+interval; - - /* for measurement */ - struct timeval tv; - struct timeval tv_root_score_start, tv_root_score_end; - float time_root_score = 0; - struct timeval tv_part_score_start, tv_part_score_end; - float time_part_score = 0; - struct timeval tv_dt_start, tv_dt_end; - float time_dt = 0; - struct timeval tv_calc_a_score_start, tv_calc_a_score_end; - float time_calc_a_score = 0; - - int **RF_size = MO->RF->root_size; - int *rootsym = MO->RF->rootsym; - int *part_sym = MO->PF->part_sym; - int **part_size = MO->PF->part_size; - FLOAT **rootfilter = MO->RF->rootfilter; - FLOAT **partfilter=MO->PF->partfilter; - int **psize = MO->MI->psize; - - int *rm_size = (int*)malloc(sizeof(int)*NoC*2); //size of root-matching-score-matrix - int *pm_size = (int*)malloc(sizeof(int)*NoP*2); //size of part-matching-score-matrix - - FLOAT **Tboxes=(FLOAT**)calloc(LofFeat,sizeof(FLOAT*)); //box coordinate information(Temp) - int *b_nums =(int*)calloc(LofFeat,sizeof(int)); //length of Tboxes - int count = 0; - int D_NUMS=0; //number of detected boundary box - - ///////level - for (int level=interval;levelMI->max_Y ||(FSIZE[level*2+1]+2*padxMI->max_X)) - { - Tboxes[count]=nullptr; - count++; - continue; - } - - ///////root calculation///////// - - //convolve feature maps with filters - int PADsize[3]={FSIZE[level*2],FSIZE[level*2+1],31}; - FLOAT *featp=padarray(features[level],PADsize,padx,pady); //pad zero to matrix - FLOAT *flipfeat =flip_feat(featp,PADsize); //flip features (to reduce calculation time) - - //calculate model score (only root) - gettimeofday(&tv_root_score_start, nullptr); - rootmatch = dpm_ttic_cpu_fconvsMT(featp,flipfeat,rootfilter,rootsym,1,NoR,PADsize,RF_size,rm_size); - gettimeofday(&tv_root_score_end, nullptr); - tvsub(&tv_root_score_end, &tv_root_score_start, &tv); - time_root_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - //release feature - s_free(featp); - s_free(flipfeat); - - ///////part calculation///////// - if(NoP>0) - { - //convolve feature maps with filters - int PADsize2[3]={FSIZE[L*2],FSIZE[L*2+1],31}; - featp=padarray(features[L],PADsize2,padx*2,pady*2); //pad zero to matrix - flipfeat=flip_feat(featp,PADsize2); //flip features (to reduce calculation time) - - //calculate model score (only part) - gettimeofday(&tv_part_score_start, nullptr); - partmatch = dpm_ttic_cpu_fconvsMT(featp,flipfeat,partfilter,part_sym,1, - NoP,PADsize2,part_size,pm_size); - gettimeofday(&tv_part_score_end, nullptr); - tvsub(&tv_part_score_end, &tv_part_score_start, &tv); - time_part_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - //release feature - s_free(featp); - s_free(flipfeat); - } - - ////nucom - //combine root and part score and detect boundary box for each-component - for(int jj=0;jjMI->ridx[jj]; //root-index - int RL_S =sizeof(FLOAT)*RL; - - FLOAT OFF = MO->MI->offw[RI]; //offset information - FLOAT *SCORE = (FLOAT*)malloc(RL_S); //Matching score matrix - - //add offset - //memcpy_s(SCORE,RL_S,rootmatch[jj],RL_S); - memcpy(SCORE, rootmatch[jj],RL_S); - FLOAT *SC_S = SCORE; - FLOAT *SC_E = SCORE+RL; - while(SC_S0) - { - for (int kk=0;kkMI->didx[jj][kk]; - int DID_4 = DIDX*4; - int PIDX = MO->MI->pidx[jj][kk]; - //anchor - ax[kk] = MO->MI->anchor[DIDX*2]+1; - ay[kk] = MO->MI->anchor[DIDX*2+1]+1; - //set part-match - FLOAT *match = partmatch[PIDX]; - //size of part-matching - int PSSIZE[2] ={pm_size[PIDX*2],pm_size[PIDX*2+1]}; - - FLOAT *Q = match; - for(int ss=0;ssMI->def[DID_4],MO->MI->def[DID_4+1], - MO->MI->def[DID_4+2],MO->MI->def[DID_4+3], - PSSIZE,Ix[kk],Iy[kk]); - gettimeofday(&tv_dt_end, nullptr); - tvsub(&tv_dt_end, &tv_dt_start, &tv); - time_dt += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - //add part score - dpm_ttic_add_part_calculation(SCORE,M,R_S,PSSIZE,ax[kk],ay[kk]); - s_free(M); - } - } - - //get all good matches - int GMN; - int *GMPC = get_gmpc(SCORE,thresh,R_S,&GMN); - int RSIZE[2]={MO->MI->rsize[jj*2],MO->MI->rsize[jj*2+1]}; - - int GL = (numpart[jj]+1)*4+3; //31 - - //calculate accumulated score - gettimeofday(&tv_calc_a_score_start, nullptr); - calc_a_score(A_SCORE,SCORE,R_S,RSIZE,MO->MI,scale); - gettimeofday(&tv_calc_a_score_end, nullptr); - tvsub(&tv_calc_a_score_end, &tv_calc_a_score_start, &tv); - time_calc_a_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - - //detected box coordinate(current level) - FLOAT *t_boxes = (FLOAT*)calloc(GMN*GL,sizeof(FLOAT)); - - for(int kk=0;kkMI->pidx[jj][pp]*2],pm_size[MO->MI->pidx[jj][pp]*2+1]}; - - //calculate part box coordinate - FLOAT *PB = partbox(x,y,ax[pp],ay[pp],scale,padx,pady,PBSIZE,Ix[pp],Iy[pp],Isize); - //memcpy_s(P_temp,sizeof(FLOAT)*4,PB,sizeof(FLOAT)*4); - memcpy(P_temp, PB,sizeof(FLOAT)*4); - P_temp+=4; - s_free(PB); - } - //component number and score - *(P_temp++)=(FLOAT)jj; //component number - *(P_temp++)=SCORE[x*R_S[0]+y]; //score of good match - *P_temp = scale; - } - - //save box information - if(GMN>0) Tboxes[count]=t_boxes; - else Tboxes[count]=nullptr; - b_nums[count]=GMN; - count++; - D_NUMS+=GMN; //number of detected box - - //release - s_free(GMPC); - s_free(SCORE); - s_free(ax); - s_free(ay); - - for(int ss=0;ss0) - { - memcpy(T1, T2,sizeof(FLOAT)*num_t); - T1+=num_t; - } - } - - FLOAT AS_OFF = std::abs(thresh); - - //accumulated score calculation - FLOAT max_ac = 0.0; - - //add offset to accumulated score - for(int ii=0;iiMI->IM_HEIGHT*MO->MI->IM_WIDTH;ii++) - { - if(A_SCORE[ii]max_ac) max_ac=A_SCORE[ii]; - } - } - //normalization - if(max_ac>0.0) - { - FLOAT ac_ratio = 1.0/max_ac; - for(int ii=0;iiMI->IM_HEIGHT*MO->MI->IM_WIDTH;ii++){A_SCORE[ii]*=ac_ratio;} - } - - //release - free_boxes(Tboxes,LofFeat); - s_free(b_nums); - - //output result - *Dnum=D_NUMS; - return(boxes); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/get_boxes.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/get_boxes.hpp deleted file mode 100644 index b260dedb136..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/get_boxes.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _GET_BOXES_H_ -#define _GET_BOXES_H_ - -#include "switch_float.h" - -//Object-detection function (extended to main) -FLOAT *dpm_ttic_cpu_get_boxes(FLOAT **features,FLOAT *scales,int *FSIZE,MODEL *MO,int *Dnum,FLOAT *A_SCORE,FLOAT thresh); - -#endif /* _GET_BOXES_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.cpp deleted file mode 100755 index 009aaace110..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.cpp +++ /dev/null @@ -1,303 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////load_model.cpp load detection-model information //////////////////////////////////////////////////////////// - -//C++ library -#include -#include -#include - -//Header files -#include "MODEL_info.h" //Model-structure definition -#include "common.hpp" - -#include "switch_float.h" - -#ifdef FLOAT_IS_float -#define FLOAT_SCAN_FMT "%f," -#else -#define FLOAT_SCAN_FMT "%lf," -#endif - -#define FLOAT_SCAN_FMT2 FLOAT_SCAN_FMT FLOAT_SCAN_FMT -#define FLOAT_SCAN_FMT3 FLOAT_SCAN_FMT2 FLOAT_SCAN_FMT -#define FLOAT_SCAN_FMT4 FLOAT_SCAN_FMT3 FLOAT_SCAN_FMT - -//load model basic information -static Model_info *load_modelinfo(const char *filename) -{ - FILE *file; //File - Model_info *MI=(Model_info*)malloc(sizeof(Model_info)); //Model information - - if( (file=fopen(filename, "r")) == NULL ) - { - printf("Model information file not found \n"); - exit(-1); - } - FLOAT t1,t2,t3,t4; - - //load basic information - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->numcomponent=(int)t1; //number of components - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->sbin=(int)t1; //sbin - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->interval=(int)t1; //interval - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->max_Y=(int)t1; //max_Y - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->max_X=(int)t1; //max_X - - //root filter information - MI->ridx = (int*)malloc(sizeof(int)*MI->numcomponent); - MI->oidx = (int*)malloc(sizeof(int)*MI->numcomponent); - MI->offw = (FLOAT*)malloc(sizeof(FLOAT)*MI->numcomponent); - MI->rsize = (int*)malloc(sizeof(int)*MI->numcomponent*2); - MI->numpart = (int*)malloc(sizeof(int)*MI->numcomponent); - - //part filter information - MI->pidx = (int**)malloc(sizeof(int*)*MI->numcomponent); - MI->didx = (int**)malloc(sizeof(int*)*MI->numcomponent); - MI->psize = (int**)malloc(sizeof(int*)*MI->numcomponent); - - for(int ii=0;iinumcomponent;ii++) //LOOP (component) - { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->ridx[ii]=(int)t1-1; //root index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->oidx[ii]=(int)t1-1; //offset index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->offw[ii]=t1; //offset weight (FLOAT) - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->rsize[ii*2]=(int)t1; //rsize (Y) - MI->rsize[ii*2+1]=(int)t2; //rsize (X) - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->numpart[ii]=(int)t1; //number of part filter - - - MI->pidx[ii]=(int*)malloc(sizeof(int)*MI->numpart[ii]); - MI->didx[ii]=(int*)malloc(sizeof(int)*MI->numpart[ii]); - MI->psize[ii]=(int*)malloc(sizeof(int)*MI->numpart[ii]*2); - - for(int jj=0;jjnumpart[ii];jj++) //LOOP (part-filter) - { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->pidx[ii][jj]=(int)t1-1; //part index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->didx[ii][jj]=(int)t1-1; //define-index of part - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->psize[ii][jj*2]=(int)t1; - MI->psize[ii][jj*2+1]=(int)t2; - } - } - - //get defs information - fscanf(file,FLOAT_SCAN_FMT,&t1); - - int DefL = int(t1); - MI->def = (FLOAT*)malloc(sizeof(FLOAT)*DefL*4); - MI->anchor = (int*)malloc(sizeof(int)*DefL*2); - - for (int kk=0;kkdef[kk*4]=t1; - MI->def[kk*4+1]=t2; - MI->def[kk*4+2]=t3; - MI->def[kk*4+3]=t4; - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->anchor[kk*2]=(int)t1; - MI->anchor[kk*2+1]=(int)t2; - } - - //get least_square information - MI->x1 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->x2 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->y1 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->y2 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - - for(int ii=0;iinumcomponent;ii++) - { - int GL = 1+2*(1+MI->numpart[ii]); - MI->x1[ii] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->y1[ii] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->x2[ii] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->y2[ii] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - - for (int jj=0;jjx1[ii][jj]=t1;} - for (int jj=0;jjy1[ii][jj]=t1;} - for (int jj=0;jjx2[ii][jj]=t1;} - for (int jj=0;jjy2[ii][jj]=t1;} - } - - MI->padx=(int)ceil((FLOAT)MI->max_X/2.0+1.0); //padx - MI->pady=(int)ceil((FLOAT)MI->max_Y/2.0+1.0); //padY - - MI->ini=true; - - - //fclose - fclose(file); - - return(MI); -} - -static Rootfilters *load_rootfilter(const char *filename) -{ - FILE *file; - Rootfilters *RF=(Rootfilters*)malloc(sizeof(Rootfilters)); //Root filter - - if( (file=fopen(filename, "r"))==NULL ) - { - printf("Root-filter file not found \n"); - exit(-1); - } - - FLOAT t1,t2,t3; - fscanf(file,FLOAT_SCAN_FMT,&t1); - RF->NoR=(int)t1; //number of root filter - - RF->root_size=(int**)malloc(sizeof(int*)*RF->NoR); //size of root filter - RF->rootfilter=(FLOAT**)malloc(sizeof(FLOAT*)*RF->NoR); //weight of root filter - RF->rootsym=(int*)malloc(sizeof(int)*RF->NoR); //symmetric information of root - - for (int ii=0;iiNoR;ii++) - { - fscanf(file,FLOAT_SCAN_FMT3,&t1,&t2,&t3); //number of components - RF->root_size[ii]=(int*)malloc(sizeof(int)*3); - RF->root_size[ii][0]=(int)t1; - RF->root_size[ii][1]=(int)t2; - RF->root_size[ii][2]=(int)t3; - int NUMB=RF->root_size[ii][0]*RF->root_size[ii][1]*RF->root_size[ii][2]; - RF->rootfilter[ii]=(FLOAT*)malloc(sizeof(FLOAT)*NUMB); //weight of root filter - for (int jj=0;jjrootfilter[ii][jj]=t1; - } - RF->rootsym[ii]=1; - - //test - printf("root No.%d size %d %d \n",ii,RF->root_size[ii][0],RF->root_size[ii][1]); - - } - - //fclose - fclose(file); - return(RF); -} - -static Partfilters *load_partfilter(const char *filename) -{ - FILE *file; - Partfilters *PF=(Partfilters*)malloc(sizeof(Partfilters)); //Part filter - - //fopen - if( (file=fopen(filename, "r"))==NULL ) - { - printf("Part-filter file not found \n"); - exit(-1); - } - - FLOAT t1,t2,t3; - fscanf(file,FLOAT_SCAN_FMT,&t1); - PF->NoP=(int)t1; //number of part filter - - PF->part_size=(int**)malloc(sizeof(int*)*PF->NoP); //size of part filter - PF->partfilter=(FLOAT**)malloc(sizeof(FLOAT*)*PF->NoP); //weight of part filter - PF->part_partner=(int*)malloc(sizeof(int)*PF->NoP); //symmetric information of part - PF->part_sym=(int*)malloc(sizeof(int)*PF->NoP); //symmetric information of part - - - for (int ii=0;iiNoP;ii++) - { - fscanf(file,FLOAT_SCAN_FMT3,&t1,&t2,&t3); //number of components - PF->part_size[ii]=(int*)malloc(sizeof(int)*3); - PF->part_size[ii][0]=(int)t1; - PF->part_size[ii][1]=(int)t2; - PF->part_size[ii][2]=(int)t3; - //printf("%f %f %f\n",t1,t2,t3); - int NUMB=PF->part_size[ii][0]*PF->part_size[ii][1]*PF->part_size[ii][2]; - PF->partfilter[ii]=(FLOAT*)malloc(sizeof(FLOAT)*NUMB); //weight of root filter - for (int jj=0;jjpartfilter[ii][jj]=t1; - } - - fscanf(file,FLOAT_SCAN_FMT,&t1); - PF->part_partner[ii]=(int)t1; //symmetric information of part - if(PF->part_partner[ii]==0) PF->part_sym[ii]=1; - else PF->part_sym[ii]=0; - } - //fclose - fclose(file); - return(PF); -} - -//load model infroamtion -MODEL *dpm_ttic_cpu_load_model(FLOAT ratio, const char *com_csv, const char *root_csv, const char *part_csv) -{ - MODEL *model = (MODEL*)malloc(sizeof(MODEL)); - - model->MI = load_modelinfo(com_csv); - model->RF = load_rootfilter(root_csv); - model->PF = load_partfilter(part_csv); - model->MI->ratio = ratio; - - model->MI->padx = 0; - model->MI->pady = 0; - - return model; -} - -//release model -void dpm_ttic_cpu_free_model(MODEL *MO) -{ - //free model information - for(int ii=0;iiMI->numcomponent;ii++) - { - s_free(MO->MI->didx[ii]); - s_free(MO->MI->pidx[ii]); - s_free(MO->MI->psize[ii]); - s_free(MO->MI->x1[ii]); - s_free(MO->MI->x2[ii]); - s_free(MO->MI->y1[ii]); - s_free(MO->MI->y2[ii]); - } - s_free(MO->MI->anchor); - s_free(MO->MI->def); - s_free(MO->MI->numpart); - s_free(MO->MI->offw); - s_free(MO->MI->oidx); - s_free(MO->MI->ridx); - s_free(MO->MI->rsize); - s_free(MO->MI->x1); - s_free(MO->MI->x2); - s_free(MO->MI->y1); - s_free(MO->MI->y2); - s_free(MO->MI); - - //free root-filter information - for(int ii=0;iiRF->NoR;ii++) - { - s_free(MO->RF->root_size[ii]); - s_free(MO->RF->rootfilter[ii]); - } - s_free(MO->RF->rootsym); - s_free(MO->RF); - - //free root-filter information - for(int ii=0;iiPF->NoP;ii++) - { - s_free(MO->PF->part_size[ii]); - s_free(MO->PF->partfilter[ii]); - } - s_free(MO->PF->part_partner); - s_free(MO->PF->part_sym); - s_free(MO->PF); - - s_free(MO); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.hpp deleted file mode 100644 index f5b843c4989..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/load_model.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _LOAD_MODEL_H_ -#define _LOAD_MODEL_H_ - -#include "switch_float.h" -#include "MODEL_info.h" - -extern MODEL *dpm_ttic_cpu_load_model(FLOAT ratio, const char *com_csv, const char *root_csv, const char *part_csv); -extern void dpm_ttic_cpu_free_model(MODEL *MO); - -#endif /* _LOAD_MODEL_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/main.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/main.cpp deleted file mode 100644 index a2f2b2d6c33..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/main.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/// Car tracking project with laser_radar_data_fusion -/// Copyright 2009-10 Akihiro Takeuchi - -///main.cpp main function of car tracking - -//OpenCV library - -#include -#include - -#include - -#include "MODEL_info.h" -#include "switch_float.h" -#include "detect.hpp" -#include "load_model.hpp" - -DPMTTIC::DPMTTIC(const char *com_csv, const char *root_csv, const char *part_csv) -{ - constexpr double RATIO = 1; - model_ = dpm_ttic_cpu_load_model(RATIO, com_csv, root_csv, part_csv); -} - -DPMTTIC::~DPMTTIC() -{ - dpm_ttic_cpu_free_model(model_); -} - -static FLOAT *init_accumulated_score(IplImage *image) -{ - int size = image->height * image->width; - FLOAT *score = (FLOAT *)calloc(size,sizeof(FLOAT)); - - for(int i = 0; i < size; ++i) - score[i] = -100.0; - - return score; -} - -DPMTTICResult DPMTTIC::detect_objects(IplImage *image, const DPMTTICParam& param) -{ - // model_->MI->interval = param.lambda; - // model_->MI->sbin = param.num_cells; - - int detected_objects; - FLOAT *ac_score = init_accumulated_score(image); - RESULT *cars = dpm_ttic_cpu_car_detection(image, model_, param.threshold, &detected_objects, ac_score, - param.overlap); - free(ac_score); - - DPMTTICResult result; - result.num = cars->num; - for (int i = 0; i < cars->num; ++i) { - result.type.push_back(cars->type[i]); - } - - for (int i = 0; i < cars->num; ++i) { - int base = i * 4; - int *data = &(cars->OR_point[base]); - - result.corner_points.push_back(data[0]); - result.corner_points.push_back(data[1]); - result.corner_points.push_back(data[2] - data[0]); - result.corner_points.push_back(data[3] - data[1]); - result.score.push_back(cars->score[i]); - } - - free(cars->point); - free(cars->type); - free(cars->scale); - free(cars->score); - free(cars->IM); - - return result; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/nms.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/nms.cpp deleted file mode 100755 index 2eadfc527a1..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/nms.cpp +++ /dev/null @@ -1,181 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////nms.cpp non_maximum suppression of detected box //////////////////////////////////////////////////////////// - -//C++ include header -#include -#include -#include - -#include "MODEL_info.h" //File information -#include "switch_float.h" -#include "nms.hpp" - -//inline function(Why does not use standard library ?) -static inline FLOAT max_d(FLOAT x,FLOAT y) -{ - return (x >= y ? x : y); -} - -static inline FLOAT min_d(FLOAT x,FLOAT y) -{ - return (x <= y ? x : y); -} - -//sub functions -static inline void exchangeOfValues(FLOAT *x , FLOAT *y) -{ - FLOAT tmp; - tmp = *x; *x = *y ; *y = tmp; - return; -} - -static inline void exchangeOfOrders(int *x , int *y) -{ - int tmp; - tmp = *x; *x = *y ; *y = tmp; - return; -} - -static void quickSort(FLOAT *ary , int *Order, int first_index , int last_index) -{ - int i = first_index, j = last_index; - FLOAT key = *(ary + (first_index + last_index) / 2); - - while(1) { - while (*(ary + i ) > key) i++; - while (*(ary + j ) < key) j--; - if (i >= j) - break; - exchangeOfValues(ary + i , ary + j); - exchangeOfOrders(&Order[i],&Order[j]); - i++; j--; - } - if (first_index < i - 1) - quickSort(ary , Order,first_index , i - 1); - if (last_index > j + 1) - quickSort(ary , Order,j + 1 , last_index); -} - -FLOAT *dpm_ttic_cpu_nms(FLOAT *boxes,FLOAT overlap,int *num,MODEL *MO) -{ - int NUM = *num; - if (NUM <= 0) - return nullptr; - - const int *numpart = MO->MI->numpart; - const int GL = (numpart[0]+1)*4+3; - FLOAT *area = (FLOAT*)calloc(NUM,sizeof(FLOAT)); - FLOAT *scores = (FLOAT*)calloc(NUM,sizeof(FLOAT)); - int *sorted_orders = (int *)calloc(NUM,sizeof(int)); - FLOAT *P=boxes; - //calculate area of each boundary-box - - FLOAT *score_t = scores; - int *so_t =sorted_orders; - for(int ii=0;ii0) - { - int A=sorted_orders[cur]; - P=boxes+GL*A; - FLOAT Ay1 = P[0]; - FLOAT Ax1 = P[1]; - FLOAT Ay2 = P[2]; - FLOAT Ax2 = P[3]; - checked[A]=1; - cnum--; - cur++; - pi_num++; - - for(int kk=cur;kk0&&h>0) - { - FLOAT o = w*h/R_AREA; //compute overlap - if(o>overlap) - { - checked[B]=-1; //suppress - cnum--; - } - } - //full over-lap - else if(Ay1P[2]&&Ax2>P[3]) - { - checked[B]=-1; //suppress - cnum--; - } - else if(Ay1>P[0]&&Ax1>P[1]&&Ay2 -#include -#include - -#include "common.hpp" -#include "switch_float.h" -#include "resize.hpp" - -// struct used for caching interpolation values -struct alphainfo { - int si, di; - FLOAT alpha; -}; - -//sub functions -// copy src into dst using precomputed interpolation values -static inline void alphacopy(FLOAT *src, FLOAT *dst, struct alphainfo *ofs, int n) -{ - struct alphainfo *end = ofs + n; - while (ofs != end) - { - dst[ofs->di] += ofs->alpha * src[ofs->si]; - ofs++; - } -} - -// resize along each column -// result is transposed, so we can apply it twice for a complete resize -static void resize1dtran(FLOAT *src, int sheight, FLOAT *dst, int dheight, int width, int chan) -{ - FLOAT scale = (FLOAT)dheight/(FLOAT)sheight; - FLOAT invscale = (FLOAT)sheight/(FLOAT)dheight; - // we cache the interpolation values since they can be - // shared among different columns - int len = (int)(dheight*invscale+0.99) + 2*dheight; - alphainfo *ofs; - ofs = (alphainfo*)malloc(sizeof(alphainfo)*len); - int WD =width*dheight; - int WS =width*sheight; - - int k = 0; - for (int dy = 0; dy < dheight; dy++) - { - FLOAT fsy1 = dy * invscale; - FLOAT fsy2 = fsy1 + invscale; - int sy1 = (int)(fsy1+0.99); - int sy2 = (int)fsy2; - int dyW = dy*width; - - if (sy1 - fsy1 > 1e-3) { - ofs[k].di = dyW; - ofs[k].si = sy1-1; - ofs[k++].alpha = (sy1 - fsy1) * scale; - } - - for (int sy = sy1; sy < sy2; sy++) - { - ofs[k].di = dyW; - ofs[k].si = sy; - ofs[k++].alpha = scale; - } - - if (fsy2 - sy2 > 1e-3) - { - ofs[k].di = dyW; - ofs[k].si = sy2; - ofs[k++].alpha = (fsy2 - sy2) * scale; - } - } - // resize each column of each color channel - memset(dst,0, chan*WD*sizeof(FLOAT)); - for (int c = 0; c < chan; c++) - { - int CWS = c*WS; - int CWD = c*WD; - FLOAT *s = src + CWS; - FLOAT *d = dst + CWD; - for (int x = 0; x < width; x++) { - alphacopy(s, d, ofs, k); - s+=sheight; - d++; - } - } - - free(ofs); -} - -// main function (resize) -// takes a FLOAT color image and a scaling factor -// returns resized image -FLOAT *dpm_ttic_cpu_resize(FLOAT *src,int *sdims,int *odims,FLOAT scale) -{ - FLOAT *dst; - if(scale==1.0) - { - memcpy(odims, sdims,sizeof(int)*3); - int DL = odims[0]*odims[1]*odims[2]; - dst = (FLOAT*)calloc(DL,sizeof(FLOAT)); - memcpy(dst, src,sizeof(FLOAT)*DL); - } - else - { - odims[0] = (int)((FLOAT)sdims[0]*scale+0.5); - odims[1] = (int)((FLOAT)sdims[1]*scale+0.5); - odims[2] = sdims[2]; - dst = (FLOAT*)calloc(odims[0]*odims[1]*sdims[2],sizeof(FLOAT)); - FLOAT *tmp = (FLOAT*)calloc(odims[0]*sdims[1]*sdims[2],sizeof(FLOAT)); - resize1dtran(src, sdims[0], tmp, odims[0], sdims[1], sdims[2]); - resize1dtran(tmp, sdims[1], dst, odims[1], odims[0], sdims[2]); - free(tmp); - } - return(dst); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/resize.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/resize.hpp deleted file mode 100644 index 56fbe3238b5..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/resize.hpp +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _RESIZE_H_ -#define _RESIZE_H_ - -#include "switch_float.h" - -extern FLOAT *dpm_ttic_cpu_resize(FLOAT *src,int *sdims,int *odims,FLOAT scale); //resize image - -#endif /* _RESIZE_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/switch_float.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/switch_float.h deleted file mode 100644 index f9af6a0abbd..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/switch_float.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _SWITCH_FLOAT_H_ -#define _SWITCH_FLOAT_H_ - -/* typedef to switch float and double */ -#define FLOAT_IS_float -typedef float FLOAT; -//typedef double FLOAT; - -#ifndef TVSUB -#define TVSUB - -/* for measurement */ -#include -/* tvsub: ret = x - y. */ -static inline void tvsub( - struct timeval *x, - struct timeval *y, - struct timeval *ret) -{ - ret->tv_sec = x->tv_sec - y->tv_sec; - ret->tv_usec = x->tv_usec - y->tv_usec; - if (ret->tv_usec < 0) { - ret->tv_sec--; - ret->tv_usec += 1000000; - } -} -/* for measurement */ -#endif - -#endif /* _SWITCH_FLOAT_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.cpp deleted file mode 100755 index a5362e12b75..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////tracking.cpp calculate_time-variation information ////////////////////////////////////////////////////////// - -//OpenCV library -#include -#include -#include -//C++ library -#include -#include -#include -#include - -#include "MODEL_info.h" //Model-structure definition -#include "common.hpp" - -#include "switch_float.h" -#include "tracking.hpp" - -//create new_result data -static RESULT *create_result(int num) -{ - RESULT *RES = (RESULT *)malloc(sizeof(RESULT)); - RES->num=num; - if(num==0) - { - RES->point = NULL; - RES->type = NULL; - RES->score = NULL; - RES->scale = NULL; - RES->IM = NULL; - RES->OR_point = NULL; - } - else - { - RES->point = (int *)calloc(num*4,sizeof(int)); - RES->OR_point = (int *)calloc(num*4,sizeof(int)); - RES->type = (int *)calloc(num,sizeof(int)); - RES->score = (FLOAT *)calloc(num,sizeof(FLOAT)); - RES->scale = (FLOAT *)calloc(num,sizeof(FLOAT)); - RES->IM = (IplImage **)malloc(sizeof(IplImage *)*num); - } - return(RES); -} - -//get new_rectangle information -RESULT *dpm_ttic_cpu_get_new_rects(IplImage *Image,MODEL *MO,FLOAT *boxes,int *NUM) -{ - const int *numpart = MO->MI->numpart; - const int GL = (numpart[0]+1)*4+3; - const FLOAT ratio = MO->MI->ratio; - - int LL = GL-3; - FLOAT **x1 = MO->MI->x1; FLOAT **x2 = MO->MI->x2; - FLOAT **y1 = MO->MI->y1; FLOAT **y2 = MO->MI->y2; - int ML = 1+2*(1+numpart[0]); - - RESULT *CUR =create_result(*NUM); - - //no_rectangle was detected - if(*NUM==0) return(CUR); - - FLOAT *Avec = (FLOAT *)calloc(ML,sizeof(FLOAT)); - for(int ii=0;ii<*NUM;ii++) - { - FLOAT *P = boxes+GL*ii; - FLOAT *Avec_T = Avec; - int CNUM = (int)(*(P+GL-3)); - int PP[4]; - - *(Avec_T++)=P[3]-P[1]; - - for(int kk=0;kk0) {PP[0]=(int)XP1;} - else {PP[0]=0;} - if(YP1>0) {PP[1]=(int)YP1;} - else {PP[1]=0;} - if(XP2width){PP[2]=(int)XP2;} - else {PP[2]=Image->width;} - if(YP2height) {PP[3]=(int)YP2;} - else {PP[3]=Image->height;} - //memcpy_s(CUR->point+ii*4,4*sizeof(int),PP,4*sizeof(int)); - memcpy(CUR->point+ii*4, PP,4*sizeof(int)); - CUR->scale[ii]=*(P+GL-1); CUR->score[ii]=*(P+GL-2); CUR->type[ii] = CNUM; - - //calculate image coodinate for ORIGINAL-scale-image[640x480] - int *OPP = CUR->OR_point+ii*4; - OPP[0] = (int)((FLOAT)PP[0]/ratio); - OPP[1] = (int)((FLOAT)PP[1]/ratio); - OPP[2] = (int)((FLOAT)PP[2]/ratio); - OPP[3] = (int)((FLOAT)PP[3]/ratio); - - //for debug - printf("scale:%f score:%f type:%d\n",CUR->scale[ii],CUR->score[ii],CUR->type[ii]); - } - s_free(Avec); - return(CUR); -} - diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.hpp deleted file mode 100644 index d3e2e83622e..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/cpu/tracking.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _TRACKING_H_ -#define _TRACKING_H_ - -#include "MODEL_info.h" -#include "switch_float.h" - -//get new_rectangle pixel_point -extern RESULT *dpm_ttic_cpu_get_new_rects(IplImage *Image,MODEL *MO,FLOAT *boxes,int *NUM); - -#endif /* _TRACKING_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_function.cu b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_function.cu deleted file mode 100644 index 5a5afaa3aa6..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_function.cu +++ /dev/null @@ -1,1703 +0,0 @@ -#include -#include -#include -#include "for_use_GPU.h" -#include "switch_release.h" -#define FROM_GPU -#include "switch_float.h" - -/* declaration of texture memory */ -//texture A; -//texture B; -texture A; -texture B; -texture A_double; -texture B_double; - -//thread process -// convolve A and B(non_symmetric) -//unsigned __stdcall process(void *thread_arg) { - -/********************************************/ -/* function for calculating root */ -/********************************************/ -extern "C" -__global__ -void -process_root -( - //FLOAT *A, - //FLOAT *B, - FLOAT *C, - int *A_dims_array, - int *B_dims_array, - int len, - int interval, - int L_MAX, - int *error_array, - int error_array_num, - int pid, - int device_number -) -{ - int idx_x = blockIdx.x * blockDim.x + threadIdx.x; - int idx_y = blockIdx.y * blockDim.y + threadIdx.y; - int ii = blockIdx.z % len; - int level = blockIdx.z / len; - - int A_dims[3] = { A_dims_array[level*3], A_dims_array[level*3+1], A_dims_array[level*3+2] }; - int B_dims[3] = { B_dims_array[ii*3], B_dims_array[ii*3+1], B_dims_array[ii*3+2] }; - int C_dims[2] = { A_dims[0] - B_dims[0] + 1, A_dims[1] - B_dims[1] + 1 }; - - int C_x = C_dims[1]/device_number; - - if(C_dims[1]%device_number != 0){ - C_x++; - } - - idx_x = idx_x + pid * C_x; - - if(idx_x < C_x * pid || idx_x >= C_x * (pid + 1)){ - return ; - } - - if(0 <= ii && ii < len && 0 <= idx_x && idx_x < C_dims[1] && 0 <= idx_y && idx_y < C_dims[0] && interval <= level && level < L_MAX ) { - - - int num_features = A_dims[2]; - const int A_SQ = A_dims[0]*A_dims[1]; - const int B_SQ = B_dims[0]*B_dims[1]; - FLOAT add_val = 0; - - int x = idx_x; - int y = idx_y; - int XA0 = A_dims[0]*x; - - - /* apply loop condition */ - for(int i=0; i= C_x * (pid + 1)){ - return ; - } - - if(0 <= ii && ii < len && 0 <= idx_x && idx_x < C_dims[1] && 0 <= idx_y && idx_y < C_dims[0] && 0 <= level && level < (L_MAX - interval) ) { - int num_features = A_dims[2]; - const int A_SQ = A_dims[0]*A_dims[1]; - const int B_SQ = B_dims[0]*B_dims[1]; - FLOAT add_val = 0; - - int x = idx_x; - int y = idx_y; - int XA0 = A_dims[0]*x; - - /* apply loop condition */ - for(int i=0; i= C_y * (pid + 1)){ - return ; - } - } else return ; - - - if(0<=L && L < (L_MAX-interval)) - { - - /* loop condition */ - for(int h=0; h= d1) - { - int d = (d1+d2) >> 1; - int ds =d*step; - int s = s1; - FLOAT src_ss = *(src+s*step); - for (int p = s1+1; p <= s2; p++) - { - int t1 = d-s; - int t2 = d-p; - if (src_ss + a*t1*t1 + b*t1 > *(src+p*step) + a*t2*t2 + b*t2) - { - s = p; - src_ss = *(src+s*step); - } - } - int D = d-s; - dst[ds] = *(src+s*step) + a*D*D + b*D; - ptr[ds] = s; - dt_helper(src, dst, ptr, step, s1, s, d1, d-1, a, b); - dt_helper(src, dst, ptr, step, s, s2, d+1, d2, a, b); - } -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//sub function of dt -extern "C" -__global__ -void -dt1d_x( - FLOAT *src_start, // part_C_dev - FLOAT *dst_start, // tmpM_dev - int *ptr_start, // tmpIy_dev - int *DID_4_array, // DID_4_array_dev - FLOAT *def_array, // def_array_dev - int *size_array, // pm_size_array_dev - int NoP, // NoP - int *PIDX_array, // PIDX_array_dev - int *error_array, // part_error_array_dev - int error_array_num, // part_error_array_num - int *numpart, // numpart_jj - int NoC, // NoC - int max_numpart, // max_numpart - int interval, // interval - int L_MAX, // L_MAX - int pid, // pid - int device_number // device_number - - ) -{ - int idx = blockIdx.x * blockDim.x + threadIdx.x; - int kk = blockIdx.y * blockDim.y + threadIdx.y; - int jj = threadIdx.z; - int L = blockIdx.z; - int numpart_jj; - int C_y; - - if(0<=jj && jj= C_y * (pid + 1)){ - return ; - } - } else{ - return ; - } - - - if(0<=L && L<(L_MAX-interval)) - { - /* loop condition */ - for(int h=0; h= C_y * (pid + 1)){ - return ; - } - } else{ - return ; - } - - - if(0<=L && L<(L_MAX-interval)) - { - /* loop condition */ - for(int h=0; h*PP) *PP=sc; - } - } - } - } - - /*************************************************************/ - /*************************************************************/ - /* original source of calc_a_score loop */ - // for(int ii=0;ii*PP) *PP=sc; //save max score - // } - // } - // } - // } - /*************************************************************/ - /*************************************************************/ - -} - - - -__device__ -static inline int -min_i(int x, int y) -{return (x <= y ? x : y);} - -#ifdef USE_FLOAT_AS_DECIMAL -/************************************************/ -/* atomic function dealing with float precision */ -__device__ -static inline float -atomicAdd_float(float *address, float val) -{ - return atomicAdd(address, val); // atomicAdd must be called from "__device__" function -} -/*************************************************/ - -#else /* ifdef USE_FLOAT_AS_DECIMAL */ - -/*************************************************/ -/* atomic function dealing with double precision */ -__device__ -static inline double -atomicAdd_double -(double *address, double val) -{ - uintptr_t *address_as_ull = (uintptr_t *)address; - uintptr_t old = *address_as_ull, assumed; - do { - assumed = old; - old = atomicCAS(address_as_ull, assumed, __double_as_longlong(val + __longlong_as_double(assumed))); - }while(assumed != old); - return __longlong_as_double(old); -} -/*************************************************/ -#endif /* ifdef USE_FLOAT_AS_DECIMAL */ - - -/***********************************************************/ -/* function which cast from int2 to unsigned long long int */ -__device__ -static inline unsigned long long int -hiloint2uint64(int hi, int lo) -{ - int combined[] = {hi, lo}; - return *reinterpret_cast(combined); -} -/***********************************************************/ - - -/* declaration of texture memory */ -#ifdef USE_FLOAT_AS_DECIMAL -texture resized_image; -#else -texture resized_image_double; -#endif - -texture resized_image_size; -texture image_idx_incrementer; -texture hist_ptr_incrementer; -texture norm_ptr_incrementer; -texture feat_ptr_incrementer; - -extern "C" -__global__ -void -calc_hist -( - FLOAT *hist_top, - int sbin, - int visible_0, - int visible_1, - int level - ) -{ - /* index of each pixels */ - int x = blockIdx.x * blockDim.x + threadIdx.x; - int y = blockIdx.y * blockDim.y + threadIdx.y; - - const FLOAT Hcos[9] = {1.0000, 0.9397, 0.7660, 0.5000, 0.1736, -0.1736, -0.5000, -0.7660, -0.9397}; - const FLOAT Hsin[9] = {0.0000, 0.3420, 0.6428, 0.8660, 0.9848, 0.9848, 0.8660, 0.6428, 0.3420}; - - /* adjust pointer position */ - int base_index = tex1Dfetch(image_idx_incrementer, level); - uint2 ptr_hist_uint2 = tex1Dfetch(hist_ptr_incrementer, level); - uintptr_t ptr_hist = (uintptr_t)hist_top + hiloint2uint64(ptr_hist_uint2.x, ptr_hist_uint2.y); // convert uint2 -> unsigned long long int - FLOAT *hist = (FLOAT *)ptr_hist; - - /* input size */ - const int height = tex1Dfetch(resized_image_size, level*3); - const int width = tex1Dfetch(resized_image_size, level*3 + 1); - - const int dims[2] = {height, width}; - - /* size of Histgrams and Norm calculation space */ - const int blocks[2] = { - (int)floor((double)height/(double)sbin+0.5), - (int)floor((double)width/(double)sbin+0.5) - }; - - - // for (int x=1; x v) { - // v = v2; - // dx = dx2; - // dy = dy2; - // } - dx = (v2 > v) ? dx2 : dx; - dy = (v2 > v) ? dy2 : dy; - v = (v2 > v) ? v2 : v; - // if (v3 > v) { - // v = v3; - // dx = dx3; - // dy = dy3; - // } - dx = (v3 > v) ? dx3 : dx; - dy = (v3 > v) ? dy3 : dy; - v = (v3 > v) ? v3 : v; - - - /* snap to one of 18 orientations */ - FLOAT best_dot = 0; - int best_o = 0; - -#pragma unroll 9 - for (int o=0; o<9; o++) { - FLOAT dot = Hcos[o]*dx + Hsin[o]*dy; - - if (dot > best_dot) { - best_dot = dot; - best_o = o; - } - else if (-dot > best_dot) { - best_dot = -dot; - best_o = o + 9; - } - } - - /*add to 4 histgrams aroud pixel using linear interpolation*/ - FLOAT xp = ((FLOAT)x+0.5)/(FLOAT)sbin - 0.5; - FLOAT yp = ((FLOAT)y+0.5)/(FLOAT)sbin - 0.5; - int ixp = (int)floor((double)xp); - int iyp = (int)floor((double)yp); - FLOAT vx0 = xp - ixp; - FLOAT vy0 = yp - iyp; - FLOAT vx1 = 1.0 - vx0; - FLOAT vy1 = 1.0 - vy0; - v = sqrtf((double)v); - - -#ifdef USE_FLOAT_AS_DECIMAL - { - /* dummy variable to reduce warp divergence */ - // float retval = 0; - if (ixp >= 0 && iyp >= 0) - { - atomicAdd_float((float *)(hist + ixp*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (float)vx1*vy1*v); - } - // retval = (ixp >= 0 && iyp >= 0) ? - // atomicAdd_float((float *)(hist + ixp*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (float)vx1*vy1*v) : - // 0; - - if (ixp+1 < blocks[1] && iyp >= 0) - { - atomicAdd_float((float *)(hist + (ixp+1)*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (float)vx0*vy1*v); - } - // retval = (ixp+1 < blocks[1] && iyp >= 0) ? - // atomicAdd_float((float *)(hist + (ixp+1)*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (float)vx0*vy1*v) : - // 0; - - if (ixp >= 0 && iyp+1 < blocks[0]) - { - atomicAdd_float((float *)(hist + ixp*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (float)vx1*vy0*v); - } - // retval = (ixp >= 0 && iyp+1 < blocks[0]) ? - // atomicAdd_float((float *)(hist + ixp*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (float)vx1*vy0*v) : - // 0; - - if (ixp+1 < blocks[1] && iyp+1 < blocks[0]) - { - atomicAdd_float((float *)(hist + (ixp+1)*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (float)vx0*vy0*v); - } - // retval = (ixp+1 < blocks[1] && iyp+1 < blocks[0]) ? - // atomicAdd_float((float *)(hist + (ixp+1)*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (float)vx0*vy0*v) : - // 0; - } -#else /* ifdef USE_FLOAT_AS_DECIMAL */ - { - if (ixp >= 0 && iyp >= 0) - { - atomicAdd_double((double *)(hist + ixp*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (double)vx1*vy1*v); - } - - if (ixp+1 < blocks[1] && iyp >= 0) - { - atomicAdd_double((double *)(hist + (ixp+1)*blocks[0] + iyp + best_o*blocks[0]*blocks[1]), (double)vx0*vy1*v); - } - - if (ixp >= 0 && iyp+1 < blocks[0]) - { - atomicAdd_double((double *)(hist + ixp*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (double)vx1*vy0*v); - } - - if (ixp+1 < blocks[1] && iyp+1 < blocks[0]) - { - atomicAdd_double((double *)(hist + (ixp+1)*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]), (double)vx0*vy0*v); - } - } -#endif /* ifdef USE_FLOAT_AS_DECIMAL */ - - } - - // } - // } - - - - /*************************************************************/ - /* original source of calc hist loop */ - // for (int x=1; x v) { - // v = v2; - // dx = dx2; - // dy = dy2; - // } - // if (v3 > v) { - // v = v3; - // dx = dx3; - // dy = dy3; - // } - - // /* snap to one of 18 orientations */ - // FLOAT best_dot = 0; - // int best_o = 0; - // for (int o=0; o<9; o++) { - // FLOAT dot = Hcos[o]*dx + Hsin[o]*dy; - - // if (dot > best_dot) { - // best_dot = dot; - // best_o = o; - // } - // else if (-dot > best_dot) { - // best_dot = -dot; - // best_o = o + 9; - // } - - // } - - // /*add to 4 histgrams aroud pixel using linear interpolation*/ - // FLOAT xp = ((FLOAT)x+0.5)/(FLOAT)sbin - 0.5; - // FLOAT yp = ((FLOAT)y+0.5)/(FLOAT)sbin - 0.5; - // int ixp = (int)floor(xp); - // int iyp = (int)floor(yp); - // FLOAT vx0 = xp - ixp; - // FLOAT vy0 = yp - iyp; - // FLOAT vx1 = 1.0 - vx0; - // FLOAT vy1 = 1.0 - vy0; - // v = sqrtf(v); - - // if (ixp >= 0 && iyp >= 0) { - // *(hist + ixp*blocks[0] + iyp + best_o*blocks[0]*blocks[1]) += vx1*vy1*v; - // } - // if (ixp+1 < blocks[1] && iyp >= 0) { - // *(hist + (ixp+1)*blocks[0] + iyp + best_o*blocks[0]*blocks[1]) += vx0*vy1*v; - // } - - // if (ixp >= 0 && iyp+1 < blocks[0]) { - // *(hist + ixp*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]) += vx1*vy0*v; - // } - - // if (ixp+1 < blocks[1] && iyp+1 < blocks[0]) { - // *(hist + (ixp+1)*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]) += vx0*vy0*v; - // } - // } - // } - - /*************************************************************/ - /*************************************************************/ - - -} - - -extern "C" -__global__ -void -calc_norm -( - FLOAT *hist_top, - FLOAT *norm_top, - int blocks_0, - int blocks_1, - int level - ) -{ - /* index of each element of norm */ - int x = blockIdx.x * blockDim.x + threadIdx.x; - int y = blockIdx.y * blockDim.y + threadIdx.y; - - if (x unsigned long long int - - - ptr_uint2 = tex1Dfetch(norm_ptr_incrementer, level); - uintptr_t ptr_norm = (uintptr_t)norm_top + hiloint2uint64(ptr_uint2.x, ptr_uint2.y); // convert uint2 -> unsigned long long int - FLOAT *dst = (FLOAT *)(ptr_norm + (x*blocks_0 + y)*sizeof(FLOAT)); - - - FLOAT add_val = 0; -#pragma unroll 9 - for (int orient=0; orient<9; orient++) - { - FLOAT *src1 = (FLOAT *)(ptr_hist + (orient*blocks_0*blocks_1 + x*blocks_0 + y)*sizeof(FLOAT)); - FLOAT *src2 = (FLOAT *)(ptr_hist + ((orient+9)*blocks_0*blocks_1 + x*blocks_0 + y)*sizeof(FLOAT)); - add_val += (*src1 + *src2) * (*src1 + *src2); - } - *(dst) += add_val; - } - /*************************************************************/ - /* original source of compute_energy loop */ - - // /* compute energy in each block by summing over orientations */ - // for (int o=0; o<9; o++) { - // FLOAT *src1 = hist + o*blocks[0]*blocks[1]; - // FLOAT *src2 = hist + (o+9)*blocks[0]*blocks[1]; - // FLOAT *dst = norm; - // FLOAT *end = norm + blocks[0]*blocks[1]; - - // while(dst < end) { - // *(dst++) += (*src1 + *src2) * (*src1 + *src2); - // src1++; - // src2++; - // } - // } - - - /*************************************************************/ - /*************************************************************/ - -} - -/* definition of constant */ -#define EPS 0.0001 - -//return minimum number (FLOAT) -__device__ -static inline FLOAT -min_2(FLOAT x) -{return (x <= 0.2 ? x :0.2);} - - -extern "C" -__global__ -void -calc_feat -( - FLOAT *hist_top, - FLOAT *norm_top, - FLOAT *feat_top, - int out_0, - int out_1, - int blocks_0, - int blocks_1, - int level - ) -{ - /* index of each element of feat */ - int x = blockIdx.x * blockDim.x + threadIdx.x; - int y = blockIdx.y * blockDim.y + threadIdx.y; - - /* adjust pointer position */ - uint2 ptr_uint2 = tex1Dfetch(hist_ptr_incrementer, level); - uintptr_t ptr_hist = (uintptr_t)hist_top + hiloint2uint64(ptr_uint2.x, ptr_uint2.y); // convert uint2 -> unsigned long long int - FLOAT *hist = (FLOAT *)ptr_hist; - - ptr_uint2 = tex1Dfetch(norm_ptr_incrementer, level); - uintptr_t ptr_norm = (uintptr_t)norm_top + hiloint2uint64(ptr_uint2.x, ptr_uint2.y); // convert uint2 -> unsigned long long int - FLOAT *norm = (FLOAT *)ptr_norm; - - ptr_uint2 = tex1Dfetch(feat_ptr_incrementer, level); - uintptr_t ptr_feat = (uintptr_t)feat_top + hiloint2uint64(ptr_uint2.x, ptr_uint2.y); // convert uint2 -> unsigned long long int - FLOAT *feat = (FLOAT *)ptr_feat; - - if (x org_image; -#else -texture org_image; -#endif - -#ifndef USE_FLOAT_AS_DECIMAL -#define NO_HARDWARE_SUPPORT -#endif - -#ifdef NO_HARDWARE_SUPPORT -__device__ -static inline -double getPixelVal(int x, int y, int width, int height, int channel) -{ - int access_x = (x < 0) ? 0 : - (x < width) ? x : (width-1); - - int access_y = (y < 0) ? 0 : - (y < height) ? y : (height-1); - - int2 retval = tex1Dfetch(org_image, channel*height*width + access_y*width + access_x); - return __hiloint2double(retval.y, retval.x); -} -#endif - -extern "C" -__global__ -void -resize -( - int src_height, - int src_width, - FLOAT *dst_top, - int dst_height, - int dst_width, - FLOAT hfactor, - FLOAT wfactor, - int level - ) -{ - int dst_x = blockIdx.x*blockDim.x + threadIdx.x; - int dst_y = blockIdx.y*blockDim.y + threadIdx.y; - int channel = blockIdx.z; - - FLOAT *dst = dst_top + tex1Dfetch(image_idx_incrementer, level) + channel*dst_height*dst_width; - // unsigned long long int dst_ptr = (unsigned long long int)dst_top + - // (unsigned long long int)(tex1Dfetch(image_idx_incrementer, level) + channel*dst_height*dst_width)*sizeof(FLOAT); - // FLOAT *dst = (FLOAT *)dst_ptr; - - FLOAT src_x_decimal = wfactor * dst_x + 0.5f; - FLOAT src_y_decimal = hfactor * dst_y + 0.5f; - -#ifdef USE_FLOAT_AS_DECIMAL - if (dst_x < dst_width && dst_y < dst_height) - { - dst[dst_y*dst_width + dst_x] = (FLOAT)tex2DLayered(org_image, src_x_decimal, src_y_decimal, channel); - } -#else - /* if "double" type is used to express decimal value, there is no hardware support */ - int src_x = (int)src_x_decimal; - int src_y = (int)src_y_decimal; - - double color[4] = { - getPixelVal(src_x, src_y, src_width, src_height, channel), - getPixelVal(src_x+1, src_y, src_width, src_height, channel), - getPixelVal(src_x, src_y+1, src_width, src_height, channel), - getPixelVal(src_x+1, src_y+1, src_width, src_height, channel) - }; - - double new_element = (src_x + 1 - src_x_decimal)*(src_y + 1 - src_y_decimal)*color[0] + - (src_x_decimal - src_x)*(src_y + 1 - src_y_decimal)*color[1] + - (src_x + 1 - src_x_decimal)*(src_y_decimal - src_y)*color[2] + - (src_x_decimal - src_x)*(src_y_decimal - src_y)*color[3]; - - if (dst_x < dst_width && dst_y < dst_height) - { - dst[dst_y*dst_width + dst_x] = new_element; - } - -#endif -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_init.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_init.cpp deleted file mode 100644 index c05f0af95cd..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/GPU_init.cpp +++ /dev/null @@ -1,514 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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 "for_use_GPU.h" -#include "drvapi_error_string.h" -#include -#include "switch_release.h" -#include "GPU_init.hpp" - -#define SIZE_FEATP2 100000000 -#define SIZE_A_SIZE 1000 -#define SIZE_B 100000 -#define SIZE_B_DIMS 1000 -#define SIZE_ERROR_ARRAY 100 -#define SIZE_C 50000000 -#define SIZE_PM 10000 -#define SIZE_DEF 1000 -#define SIZE_NUMPART 100 -#define SIZE_PIDX 10000 -#define SIZE_DID 10000 -#define SIZE_M 30000000 -#define SIZE_TMPM 30000000 -#define SIZE_TMPIX 30000000 -#define SIZE_TMPIY 30000000 - -/*** for debug(Linux) ***/ -#include - -/* declaration of global variables */ - -//extern CUdevice dev; -CUdevice *dev; -CUcontext *ctx; -CUfunction *func_process_root, *func_process_part, *func_dt1d_x, *func_dt1d_y, *func_calc_a_score, *func_inverse_Q, *func_calc_hist, *func_calc_norm, *func_calc_feat, *func_resize; -CUmodule *module; -int *NR_MAXTHREADS_X, *NR_MAXTHREADS_Y; -CUdeviceptr *A_SIZE_dev, *featp2_dev, *B_dev, *B_dims_dev, *fconvs_error_array_dev, *fconvs_C_dev, *part_C_dev, *part_error_array_dev, *pm_size_array_dev; -CUdeviceptr *PIDX_array_dev, *def_array_dev, *DID_4_array_dev, *numpart_dev,*M_dev, *tmpM_dev, *tmpIx_dev, *tmpIy_dev; - -/* init_cuda - initialization device to use CUDA function - */ -void dpm_ttic_gpu_init_cuda(void) -{ - //const char file_name[43] = "./gccDebug/GPU_function.cubin"; -#ifdef RELEASE - const char file_name[256] = "/usr/local/geye_with_cam/bin/car_detecter/GPU_function.cubin"; -#else - const char file_name[43] = "./gccRelease/GPU_function.cubin"; -#endif - dpm_ttic_gpu_init_cuda_with_cubin(file_name); -}/* init_cuda */ - -void dpm_ttic_gpu_init_cuda_with_cubin(const char *cubin_path) -{ - /* initnialize GPU */ - CUresult res = cuInit(0); - if(res != CUDA_SUCCESS){ - printf("\ncuInit failed: res = %s\n", getCudaDrvErrorString(res)); - exit(1); - } - - /* count the number of usable GPU */ - res = cuDeviceGetCount(&device_num); - if(res != CUDA_SUCCESS) { - printf("cuDeviceGetCount() failed: res = %s\n", getCudaDrvErrorString(res)); - exit(1); - } - - // device_num = 2; - printf("\ncar detection program %d GPUs found\n", device_num); - - /* get device */ - dev = (CUdevice*)malloc(device_num*sizeof(CUdevice)); - for(int i=0; i -#include -#include - -#include -#include -#include - -//ORIGINAL header files -#include "MODEL_info.h" //File information -#include "featurepyramid.hpp" -#include "detect.hpp" -#include "nms.hpp" -#include "get_boxes.hpp" -#include "tracking.hpp" - -#include "switch_float.h" -#include "switch_release.h" - -//definiton of functions// - -//initialize accumulated score -size_t gpu_size_A_SCORE; - -//detect and save detected boxes -static FLOAT *detect(IplImage *IM,GPUModel *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE) -{ - /* for measurement */ - struct timeval tv, tv_calc_f_pyramid_start, tv_calc_f_pyramid_end; - float time_calc_f_pyramid = 0; - - //initialize scale information for hierachical detection - FLOAT *scales = gpu_init_scales(MO->MI,IM,IM->width,IM->height); - - //initialize feature-size matrix - int *featsize = gpu_init_featsize(MO->MI); - - //calculate feature pyramid - gettimeofday(&tv_calc_f_pyramid_start, NULL); - FLOAT **feature = gpu_calc_f_pyramid(IM,MO->MI,featsize,scales); - gettimeofday(&tv_calc_f_pyramid_end, NULL); - tvsub(&tv_calc_f_pyramid_end, &tv_calc_f_pyramid_start, &tv); - - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - time_calc_f_pyramid += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; -#ifdef PRINT_INFO - printf("\n"); - printf("calc_f_pyramid %f[ms]\n", time_calc_f_pyramid); -#endif - - //detect boundary boxes - FLOAT *boxes = dpm_ttic_gpu_get_boxes(feature,scales,featsize,MO,D_NUMS,A_SCORE,thresh); - - free(scales); - free(featsize); - gpu_free_features(feature,MO->MI); - - return boxes; -} - -//detect car-boundary-boxes -RESULT *dpm_ttic_gpu_car_detection(IplImage *IM,GPUModel *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE,FLOAT overlap) -{ - FLOAT *boxes = detect(IM,MO,thresh,D_NUMS,A_SCORE); //detect high-score region - FLOAT *rects = dpm_ttic_gpu_nms(boxes,overlap,D_NUMS,MO); //get boundary-rectangles of car - RESULT *result = dpm_ttic_gpu_get_new_rects(IM,MO,rects,D_NUMS); //get current result - - free(boxes); - free(rects); - return result; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/detect.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/detect.hpp deleted file mode 100644 index 9da0d110432..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/detect.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef _DETECT_H_ -#define _DETECT_H_ - -#include -#include "switch_float.h" - -//Result of Detection -struct RESULT { - int num; - int *point; - int *OR_point; - IplImage **IM; - int *type; - FLOAT *scale; - FLOAT *score; -}; - -extern size_t gpu_size_A_SCORE; -extern RESULT *dpm_ttic_gpu_car_detection(IplImage *IM,GPUModel *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE,FLOAT overlap); - -#endif /* _DETECT_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/drvapi_error_string.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/drvapi_error_string.h deleted file mode 100644 index 3d932e5d30c..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/drvapi_error_string.h +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright 1993-2012 NVIDIA Corporation. All rights reserved. - * - * Please refer to the NVIDIA end user license agreement (EULA) associated - * with this source code for terms and conditions that govern your use of - * this software. Any use, reproduction, disclosure, or distribution of - * this software and related documentation outside the terms of the EULA - * is strictly prohibited. - * - */ - -#ifndef _DRVAPI_ERROR_STRING_H_ -#define _DRVAPI_ERROR_STRING_H_ - -#include -#include -#include - -// Error Code string definitions here -struct s_CudaErrorStr -{ - char const *error_string; - int error_id; -}; - -/** - * Error codes - */ -static s_CudaErrorStr sCudaDrvErrorString[] = -{ - /** - * The API call returned with no errors. In the case of query calls, this - * can also mean that the operation being queried is complete (see - * ::cuEventQuery() and ::cuStreamQuery()). - */ - { "CUDA_SUCCESS", 0 }, - - /** - * This indicates that one or more of the parameters passed to the API call - * is not within an acceptable range of values. - */ - { "CUDA_ERROR_INVALID_VALUE", 1 }, - - /** - * The API call failed because it was unable to allocate enough memory to - * perform the requested operation. - */ - { "CUDA_ERROR_OUT_OF_MEMORY", 2 }, - - /** - * This indicates that the CUDA driver has not been initialized with - * ::cuInit() or that initialization has failed. - */ - { "CUDA_ERROR_NOT_INITIALIZED", 3 }, - - /** - * This indicates that the CUDA driver is in the process of shutting down. - */ - { "CUDA_ERROR_DEINITIALIZED", 4 }, - - /** - * This indicates profiling APIs are called while application is running - * in visual profiler mode. - */ - { "CUDA_ERROR_PROFILER_DISABLED", 5 }, - /** - * This indicates profiling has not been initialized for this context. - * Call cuProfilerInitialize() to resolve this. - */ - { "CUDA_ERROR_PROFILER_NOT_INITIALIZED", 6 }, - /** - * This indicates profiler has already been started and probably - * cuProfilerStart() is incorrectly called. - */ - { "CUDA_ERROR_PROFILER_ALREADY_STARTED", 7 }, - /** - * This indicates profiler has already been stopped and probably - * cuProfilerStop() is incorrectly called. - */ - { "CUDA_ERROR_PROFILER_ALREADY_STOPPED", 8 }, - /** - * This indicates that no CUDA-capable devices were detected by the installed - * CUDA driver. - */ - { "CUDA_ERROR_NO_DEVICE (no CUDA-capable devices were detected)", 100 }, - - /** - * This indicates that the device ordinal supplied by the user does not - * correspond to a valid CUDA device. - */ - { "CUDA_ERROR_INVALID_DEVICE (device specified is not a valid CUDA device)", 101 }, - - - /** - * This indicates that the device kernel image is invalid. This can also - * indicate an invalid CUDA module. - */ - { "CUDA_ERROR_INVALID_IMAGE", 200 }, - - /** - * This most frequently indicates that there is no context bound to the - * current thread. This can also be returned if the context passed to an - * API call is not a valid handle (such as a context that has had - * ::cuCtxDestroy() invoked on it). This can also be returned if a user - * mixes different API versions (i.e. 3010 context with 3020 API calls). - * See ::cuCtxGetApiVersion() for more details. - */ - { "CUDA_ERROR_INVALID_CONTEXT", 201 }, - - /** - * This indicated that the context being supplied as a parameter to the - * API call was already the active context. - * \deprecated - * This error return is deprecated as of CUDA 3.2. It is no longer an - * error to attempt to push the active context via ::cuCtxPushCurrent(). - */ - { "CUDA_ERROR_CONTEXT_ALREADY_CURRENT", 202 }, - - /** - * This indicates that a map or register operation has failed. - */ - { "CUDA_ERROR_MAP_FAILED", 205 }, - - /** - * This indicates that an unmap or unregister operation has failed. - */ - { "CUDA_ERROR_UNMAP_FAILED", 206 }, - - /** - * This indicates that the specified array is currently mapped and thus - * cannot be destroyed. - */ - { "CUDA_ERROR_ARRAY_IS_MAPPED", 207 }, - - /** - * This indicates that the resource is already mapped. - */ - { "CUDA_ERROR_ALREADY_MAPPED", 208 }, - - /** - * This indicates that there is no kernel image available that is suitable - * for the device. This can occur when a user specifies code generation - * options for a particular CUDA source file that do not include the - * corresponding device configuration. - */ - { "CUDA_ERROR_NO_BINARY_FOR_GPU", 209 }, - - /** - * This indicates that a resource has already been acquired. - */ - { "CUDA_ERROR_ALREADY_ACQUIRED", 210 }, - - /** - * This indicates that a resource is not mapped. - */ - { "CUDA_ERROR_NOT_MAPPED", 211 }, - - /** - * This indicates that a mapped resource is not available for access as an - * array. - */ - { "CUDA_ERROR_NOT_MAPPED_AS_ARRAY", 212 }, - - /** - * This indicates that a mapped resource is not available for access as a - * pointer. - */ - { "CUDA_ERROR_NOT_MAPPED_AS_POINTER", 213 }, - - /** - * This indicates that an uncorrectable ECC error was detected during - * execution. - */ - { "CUDA_ERROR_ECC_UNCORRECTABLE", 214 }, - - /** - * This indicates that the ::CUlimit passed to the API call is not - * supported by the active device. - */ - { "CUDA_ERROR_UNSUPPORTED_LIMIT", 215 }, - - /** - * This indicates that the ::CUcontext passed to the API call can - * only be bound to a single CPU thread at a time but is already - * bound to a CPU thread. - */ - { "CUDA_ERROR_CONTEXT_ALREADY_IN_USE", 216 }, - - /** - * This indicates that the device kernel source is invalid. - */ - { "CUDA_ERROR_INVALID_SOURCE", 300 }, - - /** - * This indicates that the file specified was not found. - */ - { "CUDA_ERROR_FILE_NOT_FOUND", 301 }, - - /** - * This indicates that a link to a shared object failed to resolve. - */ - { "CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND", 302 }, - - /** - * This indicates that initialization of a shared object failed. - */ - { "CUDA_ERROR_SHARED_OBJECT_INIT_FAILED", 303 }, - - /** - * This indicates that an OS call failed. - */ - { "CUDA_ERROR_OPERATING_SYSTEM", 304 }, - - - /** - * This indicates that a resource handle passed to the API call was not - * valid. Resource handles are opaque types like ::CUstream and ::CUevent. - */ - { "CUDA_ERROR_INVALID_HANDLE", 400 }, - - - /** - * This indicates that a named symbol was not found. Examples of symbols - * are global/constant variable names, texture names }, and surface names. - */ - { "CUDA_ERROR_NOT_FOUND", 500 }, - - - /** - * This indicates that asynchronous operations issued previously have not - * completed yet. This result is not actually an error, but must be indicated - * differently than ::CUDA_SUCCESS (which indicates completion). Calls that - * may return this value include ::cuEventQuery() and ::cuStreamQuery(). - */ - { "CUDA_ERROR_NOT_READY", 600 }, - - - /** - * An exception occurred on the device while executing a kernel. Common - * causes include dereferencing an invalid device pointer and accessing - * out of bounds shared memory. The context cannot be used }, so it must - * be destroyed (and a new one should be created). All existing device - * memory allocations from this context are invalid and must be - * reconstructed if the program is to continue using CUDA. - */ - { "CUDA_ERROR_LAUNCH_FAILED", 700 }, - - /** - * This indicates that a launch did not occur because it did not have - * appropriate resources. This error usually indicates that the user has - * attempted to pass too many arguments to the device kernel, or the - * kernel launch specifies too many threads for the kernel's register - * count. Passing arguments of the wrong size (i.e. a 64-bit pointer - * when a 32-bit int is expected) is equivalent to passing too many - * arguments and can also result in this error. - */ - { "CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES", 701 }, - - /** - * This indicates that the device kernel took too long to execute. This can - * only occur if timeouts are enabled - see the device attribute - * ::CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT for more information. The - * context cannot be used (and must be destroyed similar to - * ::CUDA_ERROR_LAUNCH_FAILED). All existing device memory allocations from - * this context are invalid and must be reconstructed if the program is to - * continue using CUDA. - */ - { "CUDA_ERROR_LAUNCH_TIMEOUT", 702 }, - - /** - * This error indicates a kernel launch that uses an incompatible texturing - * mode. - */ - { "CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING", 703 }, - - /** - * This error indicates that a call to ::cuCtxEnablePeerAccess() is - * trying to re-enable peer access to a context which has already - * had peer access to it enabled. - */ - { "CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED", 704 }, - - /** - * This error indicates that ::cuCtxDisablePeerAccess() is - * trying to disable peer access which has not been enabled yet - * via ::cuCtxEnablePeerAccess(). - */ - { "CUDA_ERROR_PEER_ACCESS_NOT_ENABLED", 705 }, - - /** - * This error indicates that the primary context for the specified device - * has already been initialized. - */ - { "CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE", 708 }, - - /** - * This error indicates that the context current to the calling thread - * has been destroyed using ::cuCtxDestroy }, or is a primary context which - * has not yet been initialized. - */ - { "CUDA_ERROR_CONTEXT_IS_DESTROYED", 709 }, - - /** - * A device-side assert triggered during kernel execution. The context - * cannot be used anymore, and must be destroyed. All existing device - * memory allocations from this context are invalid and must be - * reconstructed if the program is to continue using CUDA. - */ - { "CUDA_ERROR_ASSERT", 710 }, - - /** - * This indicates that an unknown internal error has occurred. - */ - { "CUDA_ERROR_UNKNOWN", 999 }, - { NULL, -1 } -}; - -// This is just a linear search through the array, since the error_id's are not -// always ocurring consecutively -inline const char * getCudaDrvErrorString(CUresult error_id) -{ - int index = 0; - while (sCudaDrvErrorString[index].error_id != error_id && - sCudaDrvErrorString[index].error_id != -1) - { - index++; - } - - if(sCudaDrvErrorString[index].error_id == error_id) - return (const char *)sCudaDrvErrorString[index].error_string; - else - return (const char *)"CUDA_ERROR not found!"; -} - -#endif diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/dt_GPU.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/dt_GPU.cpp deleted file mode 100644 index 776629403a2..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/dt_GPU.cpp +++ /dev/null @@ -1,913 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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 "multithreading.h" -#include "for_use_GPU.h" -#include "dt_GPU.hpp" -#include "fconvsMT.hpp" - -struct dt_partition { - int NoP; - int NoC; - int interval; - int L_MAX; - int sum_size_SQ; - int max_numpart; - int max_dim0; - int max_dim1; - FLOAT *dst_M; - int *dst_tmpIx; - int *dst_tmpIy; - int ***PIDX_array; - int **size_array; - const int *numpart; - int *FSIZE; - int padx; - int pady; - int max_X; - int max_Y; - FLOAT *def; - int tmp_array_size; - int *dst_PIDX; - int *dst_DID_4; - int pid; -}; - -//CUdeviceptr *part_error_array_dev; -//CUdeviceptr *part_C_dev; - -static CUT_THREADPROC dt_thread_func(void *p) -{ - dt_partition *pt = (dt_partition *)p; - struct timeval tv; - CUresult res; - int thread_num_x=0, thread_num_y=0; - int block_num_x=0, block_num_y=0; - - res = cuCtxSetCurrent(ctx[pt->pid]); - if(res != CUDA_SUCCESS) { - printf("cuCtxSetCurrent(ctx[%d]) failed: res = %s\n", pt->pid, cuda_response_to_string(res)); - exit(1); - } - - /* allocate GPU memory */ - - //printf("part_error_array_num = %d\n",part_error_array_num); - - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - - res = cuMemcpyHtoD(part_C_dev[pt->pid], dst_C, SUM_SIZE_C); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(part_C_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(part_error_array_dev[pt->pid], part_error_array, part_error_array_num*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(part_error_array_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(pm_size_array_dev[pt->pid], &pt->size_array[0][0], pt->NoP*2*pt->L_MAX*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(pm_size_array_dev) falied: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(def_array_dev[pt->pid], pt->def, sum_size_def_array); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(def_array_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(numpart_dev[pt->pid], pt->numpart, pt->NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(cuMemcpyHtoD(numpart_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(PIDX_array_dev[pt->pid], pt->dst_PIDX, pt->tmp_array_size); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(PIDX_array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(DID_4_array_dev[pt->pid], pt->dst_DID_4, pt->tmp_array_size); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(DID_4__array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - int sharedMemBytes = 0; - - /* get max thread num per block */ - int max_threads_num = 0; - res = cuDeviceGetAttribute(&max_threads_num, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev[pt->pid]); - if(res != CUDA_SUCCESS){ - printf("\ncuDeviceGetAttribute() failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - /* prepare for launch inverse_Q */ - void* kernel_args_inverse[] = { - &part_C_dev[pt->pid], - &pm_size_array_dev[pt->pid], - &part_error_array_dev[pt->pid], - &part_error_array_num, - (void*)&(pt->NoP), - &PIDX_array_dev[pt->pid], - &numpart_dev[pt->pid], - (void*)&(pt->NoC), - (void*)&(pt->max_numpart), - (void*)&(pt->interval), - (void*)&(pt->L_MAX), - (void*)&(pt->pid), - (void*)&(device_num) - }; - - /* define CUDA block shape */ - int upper_limit_th_num_x = max_threads_num/(pt->max_numpart*pt->NoC); - int upper_limit_th_num_y = max_threads_num/upper_limit_th_num_x; - if(upper_limit_th_num_x < 1) upper_limit_th_num_x++; - if(upper_limit_th_num_y < 1) upper_limit_th_num_y++; - - thread_num_x = (pt->max_dim0*pt->max_dim1 < upper_limit_th_num_x) ? (pt->max_dim0*pt->max_dim1) : upper_limit_th_num_x; - thread_num_y = (pt->max_numpart < upper_limit_th_num_y) ? pt->max_numpart : upper_limit_th_num_y; - - block_num_x = (pt->max_dim0*pt->max_dim1) / thread_num_x; - block_num_y = (pt->max_numpart) / thread_num_y; - if((pt->max_dim0*pt->max_dim1) % thread_num_x != 0) block_num_x++; - if(pt->max_numpart % thread_num_y != 0) block_num_y++; - - - int blockDimY = thread_num_y / device_num; - if(thread_num_y%device_num != 0){ - blockDimY++; - } - - /* launch iverse_Q */ - if(pt->pid == 0){ - gettimeofday(&tv_kernel_start, NULL); - } - res = cuLaunchKernel( - func_inverse_Q[pt->pid], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - pt->L_MAX-pt->interval, // gridDimZ - thread_num_x, // blockDimX - blockDimY, // blockDimY - pt->NoC, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_inverse, // kernelParams - NULL // extra - ); - if(res != CUDA_SUCCESS) { - printf("block_num_x %d, block_num_y %d, thread_num_x %d, thread_num_y %d\n", block_num_x, block_num_y, thread_num_x, thread_num_y); - printf("cuLaunchKernel(inverse_Q) failed : res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuCtxSynchronize(); - if(res != CUDA_SUCCESS) { - printf("cuCtxSynchronize(inverse_Q) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_kernel_end, NULL); - tvsub(&tv_kernel_end, &tv_kernel_start, &tv); - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - /* prepare for launch dt1d_x */ - void* kernel_args_x[] = { - &part_C_dev[pt->pid], // FLOAT *src_start - &tmpM_dev[pt->pid], // FLOTA *dst - &tmpIy_dev[pt->pid], // int *ptr - &DID_4_array_dev[pt->pid], // int *DID_4_array, - &def_array_dev[pt->pid], // FLOAT *def_array, - &pm_size_array_dev[pt->pid], // int *size_array - (void*)&(pt->NoP), // int NoP - &PIDX_array_dev[pt->pid], // int *PIDX_array - &part_error_array_dev[pt->pid], // int *error_array - (void*)&(part_error_array_num), // int error_array_num - &numpart_dev[pt->pid], // int *numpart - (void*)&(pt->NoC), // int NoC - (void*)&(pt->max_numpart), // int max_numpart - (void*)&(pt->interval), // int interval - (void*)&(pt->L_MAX), // int L_MAX - (void*)&(pt->pid), // int pid - (void*)&(device_num) // int device_num - }; - - - max_threads_num = 64/pt->NoC; - if(max_threads_num < 1) max_threads_num++; - - thread_num_x = (pt->max_dim1 < max_threads_num) ? pt->max_dim1 : max_threads_num; - thread_num_y = (pt->max_numpart < max_threads_num) ? pt->max_numpart : max_threads_num; - - block_num_x = pt->max_dim1 / thread_num_x; - block_num_y = pt->max_numpart / thread_num_y; - if(pt->max_dim1 % thread_num_x != 0) block_num_x++; - if(pt->max_numpart % thread_num_y != 0) block_num_y++; - - blockDimY = thread_num_y / device_num; - if(thread_num_y%device_num != 0){ - blockDimY++; - } - - /* launch dt1d_x */ - if(pt->pid == 0){ - gettimeofday(&tv_kernel_start, NULL); - } - - res = cuLaunchKernel( - func_dt1d_x[pt->pid], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - pt->L_MAX-pt->interval, // gridDimZ - thread_num_x, // blockDimX - blockDimY, // blockDimY - pt->NoC, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_x, // kernelParams - NULL // extra - ); - if(res != CUDA_SUCCESS) { - - printf("block_num_x %d, block_num_y %d, thread_num_x %d, thread_num_y %d\n", block_num_x, block_num_y, thread_num_x, thread_num_y); - - printf("cuLaunchKernel(dt1d_x) failed : res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuCtxSynchronize(); - if(res != CUDA_SUCCESS) { - printf("cuCtxSynchronize(dt1d_x) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_kernel_end, NULL); - tvsub(&tv_kernel_end, &tv_kernel_start, &tv); - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - /* prepare for launch dt1d_y */ - void* kernel_args_y[] = { - &tmpM_dev[pt->pid], // FLOAT *src_start - &M_dev[pt->pid], // FLOAT *dst_start - &tmpIx_dev[pt->pid], // int *ptr_start - &DID_4_array_dev[pt->pid], // int *DID_4_array, - &def_array_dev[pt->pid], // FLOAT *def_array, - (void*)&(pt->NoP), // int NoP - &pm_size_array_dev[pt->pid], // int *size_array - &numpart_dev[pt->pid], // int *numpart, - &PIDX_array_dev[pt->pid], // int *PIDX_array, - (void*)&(pt->NoC), // int NoC - (void*)&(pt->max_numpart), // int max_numpart - (void*)&(pt->interval), // int interval - (void*)&(pt->L_MAX), // int L_MAX - &part_error_array_dev[pt->pid], // int *error_array - (void*)&(part_error_array_num), // int error_array_num - (void*)&(pt->pid), // int pid - (void*)&(device_num) // int device_num - }; - - - thread_num_x = (pt->max_dim0 < max_threads_num) ? pt->max_dim0 : max_threads_num; - thread_num_y = (pt->max_numpart < max_threads_num) ? pt->max_numpart : max_threads_num; - - block_num_x = pt->max_dim0 / thread_num_x; - block_num_y = pt->max_numpart / thread_num_y; - if(pt->max_dim0 % thread_num_x != 0) block_num_x++; - if(pt->max_numpart % thread_num_y != 0) block_num_y++; - - blockDimY = thread_num_y / device_num; - if(thread_num_y%device_num != 0){ - blockDimY++; - } - - /* prepare for launch dt1d_y */ - if(pt->pid == 0){ - gettimeofday(&tv_kernel_start, NULL); - } - - res = cuLaunchKernel( - func_dt1d_y[pt->pid], // call functions - block_num_x, // gridDimX - block_num_y, // gridDimY - pt->L_MAX-pt->interval, // gridDimZ - thread_num_x, // blockDimX - blockDimY, // blockDimY - pt->NoC, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_y, // kernelParams - NULL // extra - ); - if(res != CUDA_SUCCESS) { - printf("cuLaunchKernel(dt1d_y failed : res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - - res = cuCtxSynchronize(); - if(res != CUDA_SUCCESS) { - printf("cuCtxSynchronize(dt1d_y) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_kernel_end, NULL); - tvsub(&tv_kernel_end, &tv_kernel_start, &tv); - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - - /* downloads datas from GPU */ - - /* downloads M from GPU */ - - int sum_part_size = 0; - int sum_pointer_size = 0; - int sum_move_size = 0; - int part_size = 0; - int pointer_size = 0; - int part_y = 0; - int move_size = 0; - int start_kk = 0; - int end_kk = 0; - int part_end_kk = 0; - unsigned long long int pointer_dst_M = (unsigned long long int)pt->dst_M; - unsigned long long int pointer_M_dev = (unsigned long long int)M_dev[pt->pid]; - - for(int L=0; L<(pt->L_MAX-pt->interval); L++) { - - /**************************************************************************/ - /* loop condition */ - if( (pt->FSIZE[(L+pt->interval)*2]+2*pt->pady < pt->max_Y) || (pt->FSIZE[(L+pt->interval)*2+1]+2*pt->padx < pt->max_X) ) - { - continue; - } - /* loop conditon */ - /**************************************************************************/ - - - for(int jj=0; jjNoC; jj++) { - - part_y = pt->numpart[jj] / device_num; - if(pt->numpart[jj]%device_num != 0){ - part_y++; - } - - - start_kk = part_y * pt->pid; - end_kk = part_y * (pt->pid + 1); - - if(end_kk > pt->numpart[jj]){ - end_kk = pt->numpart[jj]; - } - - if(pt->pid > 0){ - part_end_kk = part_y * pt->pid; - } - - for(int kk=0; kknumpart[jj]; kk++) { - - int PIDX = pt->PIDX_array[L][jj][kk]; - int dims0 = pt->size_array[L][PIDX*2]; - int dims1 = pt->size_array[L][PIDX*2+1]; - if(start_kk <= kk && kk < end_kk){ - part_size += dims0 * dims1; - } - //if(pt->pid > 0 && part_start_kk <= kk && kk < part_end_kk){ - if(pt->pid > 0 && 0 <= kk && kk < part_end_kk){ - pointer_size += dims0 * dims1; - } - move_size += dims0 * dims1; - } - - sum_part_size += part_size; - sum_pointer_size += pointer_size; - sum_move_size += move_size; - - // error pt->pid == 2 && L == 24 && jj == 1 - - if(pt->pid*part_y < pt->numpart[jj]){ - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - - - res = cuMemcpyDtoH((void *)(pointer_dst_M+(unsigned long long int)(pointer_size*sizeof(FLOAT))), (CUdeviceptr)(pointer_M_dev+(unsigned long long int)(pointer_size*sizeof(FLOAT))), part_size*sizeof(FLOAT)); - if(res != CUDA_SUCCESS) { - printf("error pid = %d\n",pt->pid); - printf("cuMemcpyDtoH(dst_M) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - } - - pointer_dst_M += (unsigned long long int)(move_size * sizeof(FLOAT)); - pointer_M_dev += (unsigned long long int)(move_size * sizeof(FLOAT)); - - part_size = 0; - pointer_size = 0; - move_size = 0; - - } - - } - - - /* downloads tmpIx from GPU */ - - sum_part_size = 0; - sum_pointer_size = 0; - part_size = 0; - pointer_size = 0; - part_y = 0; - move_size = 0; - start_kk = 0; - end_kk = 0; - part_end_kk = 0; - unsigned long long int pointer_dst_tmpIx = (unsigned long long int)pt->dst_tmpIx; - unsigned long long int pointer_tmpIx_dev = (unsigned long long int)tmpIx_dev[pt->pid]; - - - for(int L=0; L<(pt->L_MAX-pt->interval); L++) { - - /**************************************************************************/ - /* loop condition */ - if( (pt->FSIZE[(L+pt->interval)*2]+2*pt->pady < pt->max_Y) || (pt->FSIZE[(L+pt->interval)*2+1]+2*pt->padx < pt->max_X) ) - { - continue; - } - /* loop conditon */ - /**************************************************************************/ - - - for(int jj=0; jjNoC; jj++) { - - part_y = pt->numpart[jj] / device_num; - if(pt->numpart[jj]%device_num != 0){ - part_y++; - } - - start_kk = part_y * pt->pid; - end_kk = part_y * (pt->pid + 1); - - if(end_kk > pt->numpart[jj]){ - end_kk = pt->numpart[jj]; - } - - if(pt->pid > 0){ - part_end_kk = part_y * pt->pid; - } - - for(int kk=0; kknumpart[jj]; kk++) { - - int PIDX = pt->PIDX_array[L][jj][kk]; - int dims0 = pt->size_array[L][PIDX*2]; - int dims1 = pt->size_array[L][PIDX*2+1]; - if(start_kk <= kk && kk < end_kk){ - part_size += dims0 * dims1; - } - if(pt->pid > 0){ - if(0 <= kk && kk < part_end_kk){ - pointer_size += dims0 * dims1; - } - } - move_size += dims0 * dims1; - } - - sum_part_size += part_size; - sum_pointer_size += pointer_size; - - - if(pt->pid*part_y < pt->numpart[jj]){ - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - - - res = cuMemcpyDtoH((void *)(pointer_dst_tmpIx+(unsigned long long int)(pointer_size*sizeof(int))), (CUdeviceptr)(pointer_tmpIx_dev+(unsigned long long int)(pointer_size*sizeof(int))), part_size*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("error pid = %d\n",pt->pid); - printf("cuMemcpyDtoH(tmpIx) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - } - - pointer_dst_tmpIx += (unsigned long long int)(move_size * sizeof(int)); - pointer_tmpIx_dev += (unsigned long long int)(move_size * sizeof(int)); - - part_size = 0; - pointer_size = 0; - move_size = 0; - - } - - } - - - /* downloads tmpIy from GPU */ - - sum_part_size = 0; - sum_pointer_size = 0; - part_size = 0; - pointer_size = 0; - part_y = 0; - move_size = 0; - start_kk = 0; - end_kk = 0; - part_end_kk = 0; - unsigned long long int pointer_dst_tmpIy = (unsigned long long int)pt->dst_tmpIy; - unsigned long long int pointer_tmpIy_dev = (unsigned long long int)tmpIy_dev[pt->pid]; - - - for(int L=0; L<(pt->L_MAX-pt->interval); L++) { - - /**************************************************************************/ - /* loop condition */ - if( (pt->FSIZE[(L+pt->interval)*2]+2*pt->pady < pt->max_Y) || (pt->FSIZE[(L+pt->interval)*2+1]+2*pt->padx < pt->max_X) ) - { - continue; - } - /* loop conditon */ - /**************************************************************************/ - - - for(int jj=0; jjNoC; jj++) { - - part_y = pt->numpart[jj] / device_num; - if(pt->numpart[jj]%device_num != 0){ - part_y++; - } - - start_kk = part_y * pt->pid; - end_kk = part_y * (pt->pid + 1); - - if(end_kk > pt->numpart[jj]){ - end_kk = pt->numpart[jj]; - } - - if(pt->pid > 0){ - part_end_kk = part_y * pt->pid; - } - - for(int kk=0; kknumpart[jj]; kk++) { - - int PIDX = pt->PIDX_array[L][jj][kk]; - int dims0 = pt->size_array[L][PIDX*2]; - int dims1 = pt->size_array[L][PIDX*2+1]; - if(start_kk <= kk && kk < end_kk){ - part_size += dims0 * dims1; - } - if(pt->pid > 0){ - if(0 <= kk && kk < part_end_kk){ - pointer_size += dims0 * dims1; - } - } - move_size += dims0 * dims1; - } - - sum_part_size += part_size; - sum_pointer_size += pointer_size; - - if(pt->pid*part_y < pt->numpart[jj]){ - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - - res = cuMemcpyDtoH((void *)(pointer_dst_tmpIy+(unsigned long long int)(pointer_size*sizeof(int))), (CUdeviceptr)(pointer_tmpIy_dev+(unsigned long long int)(pointer_size*sizeof(int))), part_size*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("error pid = %d\n",pt->pid); - printf("cuMemcpyDtoH(tmpIy) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - } - - pointer_dst_tmpIy += (unsigned long long int)(move_size * sizeof(int)); - pointer_tmpIy_dev += (unsigned long long int)(move_size * sizeof(int)); - - part_size = 0; - pointer_size = 0; - move_size = 0; - - } - - } - - - /* end of thread */ - CUT_THREADEND; -} - -FLOAT ****dt_GPU( - int ****Ix_array, - int ****Iy_array, - int ***PIDX_array, - int **size_array, - int NoP, - const int *numpart, - int NoC, - int interval, - int L_MAX, - int *FSIZE, - int padx, - int pady, - int max_X, - int max_Y, - FLOAT *def, - int tmp_array_size, - int *dst_PIDX, - int *dst_DID_4 - ) -{ - dt_partition *p = (dt_partition *)malloc(device_num*sizeof(dt_partition)); - - int max_dim0 = 0, max_dim1 = 0; - /* prepare for parallel execution */ - int sum_size_SQ = 0; - int sum_numpart = 0; - - for(int level=interval; level -#include -#include -#include - -#include "MODEL_info.h" //File information -#include "common.hpp" -#include "multithreading.h" -#include "for_use_GPU.h" -#include "drvapi_error_string.h" -#include "switch_release.h" - -#include - -// use for dt_GPU -int part_error_array_num; -int *part_error_array; -size_t SUM_SIZE_C; -FLOAT *dst_C; - -struct fconvs_partition { - FLOAT **featp2; - size_t SUM_SIZE_feat; - int *A_SIZE; - size_t SUM_SIZE_B; - size_t SUM_SIZE_C; - FLOAT *dst_C; - FLOAT **filter; - int len; - int calc_flag; - int error_array_num; - int start; - int *error_array; - int *B_dimension; - int interval; - int L_MAX; - int pid; - int max_height; - int max_width; -}; - -struct thread_data { - FLOAT *A; - FLOAT *B; - FLOAT *C; - FLOAT *F; - FLOAT *T; - int A_dims[3]; - int B_dims[3]; - int C_dims[2]; -}; - -static CUT_THREADPROC fconvs_thread_func(void *p) -{ - fconvs_partition *pt = (fconvs_partition *)p; - CUresult res; - struct timeval tv; - //CUdeviceptr part_root_C_dev; - //CUdeviceptr part_part_C_dev; - int thread_num_x, thread_num_y, block_num_x, block_num_y; - struct timeval tv_fconv_kernel_start, tv_fconv_kernel_end; - float time_fconv_kernel; - struct timeval tv_fconv_memcpyHtoD_start, tv_fconv_memcpyHtoD_end; - float time_fconv_memcpyHtoD; - struct timeval tv_fconv_memcpyDtoH_start, tv_fconv_memcpyDtoH_end; - float time_fconv_memcpyDtoH; - struct timeval tv_fconv_texture_start, tv_fconv_texture_end; - float time_fconv_texture; -#ifdef PRINT_INFO - float time_fconv_memalloc; -#endif - struct timeval tv_fconv_others_start, tv_fconv_others_end; - float time_fconv_others; - - if(pt->calc_flag == PART) part_error_array_num = pt->error_array_num; - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_others_start, NULL); - } - /* set CUDA context to this CPU thread */ - res = cuCtxSetCurrent(ctx[pt->pid]); - if(res != CUDA_SUCCESS) { - printf("cuCtxSetCurrent(ctx[%d]) failed: res = %s\n", pt->pid, cuda_response_to_string(res)); - exit(1); - } - - /* define CUDA block shape */ - int max_threads_num = 0; - res = cuDeviceGetAttribute(&max_threads_num, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev[pt->pid]); - if(res != CUDA_SUCCESS){ - printf("\ncuDeviceGetAttribute() failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - - /* calculate max size of each block dimension */ - NR_MAXTHREADS_X[pt->pid] = (int)sqrt((FLOAT)max_threads_num); //(int)sqrt((FLOAT)max_threads_num/pt->len); - NR_MAXTHREADS_Y[pt->pid] = (int)sqrt((FLOAT)max_threads_num); //(int)sqrt((FLOAT)max_threads_num/pt->len); - if(NR_MAXTHREADS_X[pt->pid] < 1) NR_MAXTHREADS_X[0]++; - if(NR_MAXTHREADS_Y[pt->pid] < 1) NR_MAXTHREADS_Y[0]++; - - - thread_num_x = (pt->max_width < NR_MAXTHREADS_X[pt->pid]) ? pt->max_width : NR_MAXTHREADS_X[pt->pid]; - thread_num_y = (pt->max_height < NR_MAXTHREADS_Y[pt->pid]) ? pt->max_height : NR_MAXTHREADS_Y[pt->pid]; - - - block_num_x = pt->max_width / thread_num_x; - block_num_y = pt->max_height / thread_num_y; - if(pt->max_width % thread_num_x != 0) block_num_x++; - if(pt->max_height % thread_num_y != 0) block_num_y++; - - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_others_end, NULL); - tvsub(&tv_fconv_others_end, &tv_fconv_others_start, &tv); - time_fconv_others += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - /* upload data to GPU memory */ - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyHtoD_start, NULL); - } - /* upload resized source images to GPU */ - res = cuMemcpyHtoD(featp2_dev[pt->pid], pt->featp2[0], pt->SUM_SIZE_feat); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(featp2) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - /* upload resize image sizes to GPU */ - res = cuMemcpyHtoD(A_SIZE_dev[pt->pid], pt->A_SIZE, pt->L_MAX*3*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(new_PADsize) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - /* upload filter to GPU */ - res = cuMemcpyHtoD(B_dev[pt->pid], pt->filter[pt->start], pt->SUM_SIZE_B); - if(res != CUDA_SUCCESS){ - printf("cuMemcpyHtoD(B_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - /* upload error condition to GPU */ - res = cuMemcpyHtoD(fconvs_error_array_dev[pt->pid], pt->error_array, pt->error_array_num*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(part_error_array_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyHtoD_end, NULL); - tvsub(&tv_fconv_memcpyHtoD_end, &tv_fconv_memcpyHtoD_start, &tv); - time_fconv_memcpyHtoD += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_texture_start, NULL); - } - /* get handle to a texture memory on GPU */ - CUtexref featp2_texref, B_texref; - if(sizeof(FLOAT) == sizeof(float)) // if configured to use single precision - { - res = cuModuleGetTexRef(&featp2_texref, module[pt->pid], "A"); - if(res != CUDA_SUCCESS) { - printf("cuModuleGetTexRef(featp2) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - res = cuModuleGetTexRef(&B_texref, module[pt->pid], "B"); - if(res != CUDA_SUCCESS) { - printf("cuModuleGetTexRef(B) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - } - else // if configured to use double precision - { - res = cuModuleGetTexRef(&featp2_texref, module[pt->pid], "A_double"); - if(res != CUDA_SUCCESS) { - printf("cuModuleGetTexRef(featp2) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - res = cuModuleGetTexRef(&B_texref, module[pt->pid], "B_double"); - if(res != CUDA_SUCCESS) { - printf("cuModuleGetTexRef(B) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - } - - /* bind to texture memory on GPU */ - res = cuTexRefSetAddress(NULL, featp2_texref, featp2_dev[pt->pid], pt->SUM_SIZE_feat); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetAddress(featp2_dev) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - - res = cuTexRefSetAddress(NULL, B_texref, B_dev[pt->pid], pt->SUM_SIZE_B); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetAddress(B_dev) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - /* texture memory configuration */ - res = cuTexRefSetFlags(featp2_texref, CU_TRSF_NORMALIZED_COORDINATES); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFlags(featp2_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - res = cuTexRefSetFlags(B_texref, CU_TRSF_NORMALIZED_COORDINATES); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFlags(B_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - if(sizeof(FLOAT) == sizeof(float)) // if configured to use single precision - { - res = cuTexRefSetFormat(featp2_texref, CU_AD_FORMAT_FLOAT, 1); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFormat(featp2_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - res = cuTexRefSetFormat(B_texref, CU_AD_FORMAT_FLOAT, 1); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFormat(B_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - } - else // if configured to use double precision - { - res = cuTexRefSetFormat(featp2_texref, CU_AD_FORMAT_UNSIGNED_INT32, 2); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFormat(featp2_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - - res = cuTexRefSetFormat(B_texref, CU_AD_FORMAT_UNSIGNED_INT32, 2); - if (res != CUDA_SUCCESS) { - printf("cuTexRefSetFormat(B_texref) failed: res = %d\n->%s\n", res, getCudaDrvErrorString(res)); - exit(1); - } - } - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_texture_end, NULL); - tvsub(&tv_fconv_texture_end, &tv_fconv_texture_start, &tv); - time_fconv_texture += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - /* allocate output region on GPU memory and upload date to GPU*/ - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyHtoD_start, NULL); - } - - res = cuMemcpyHtoD(fconvs_C_dev[pt->pid], pt->dst_C, pt->SUM_SIZE_C); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(part_C_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(B_dims_dev[pt->pid], pt->B_dimension, 3*pt->len*sizeof(int)); - if(res != CUDA_SUCCESS){ - printf("cuMemcpyHtoD(B_dims) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyHtoD_end, NULL); - tvsub(&tv_fconv_memcpyHtoD_end, &tv_fconv_memcpyHtoD_start, &tv); - time_fconv_memcpyHtoD += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - /* launch kernel - grid shape : block_num_x * block_num_y * L_MAX, - block shape : thread_num_x * thread_num_y * len - */ - /* dealing with 1 feature(A) by 1 z_dimension of grid */ - /* dealing with 1 model(B) by 1 z_dimension of block */ - - void *kernel_args[] = { - // &featp2_dev, // kernel_args[0] - // &B_dev, // kernel_args[1] - &fconvs_C_dev[pt->pid], // kernel_args[2] - &A_SIZE_dev[pt->pid], // kernel_args[3] - &B_dims_dev[pt->pid], // kernel_args[4] - (void *)&(pt->len), // kernel_args[5] - (void *)&(pt->interval), // kernel_args[6] - (void *)&(pt->L_MAX), // kernel_args[7] - &fconvs_error_array_dev[pt->pid], // kernel_args[8] - (void *)&(pt->error_array_num), // kernel_args[9] - (void *)&(pt->pid), // kernel_args[10] - (void *)&(device_num) // kernel_args[11] - }; - -#ifdef PRINT_INFO - if(pt->calc_flag == PART){ - printf("block_num_x = %d\n",block_num_x); - printf("block_num_y = %d\n",block_num_y); - printf("block_num_z = %d\n",pt->L_MAX*pt->len); - printf("thread_num_x = %d\n",thread_num_x); - printf("thread_num_y = %d\n",thread_num_y); - printf("thread_num_z = 1\n"); - } -#endif - - int sharedMemBytes = 0; - - int blockDimX = thread_num_x / device_num; - if(thread_num_x % device_num != 0) blockDimX++; - - - if(pt->pid == 0){ - gettimeofday(&tv_kernel_start, NULL); - } - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_kernel_start, NULL); - } - - switch(pt->calc_flag) { - case ROOT: - res = cuLaunchKernel( - func_process_root[pt->pid], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - (pt->L_MAX)*(pt->len), // gridDimZ - blockDimX, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args, // kernelParams - NULL // extra - ); - if(res != CUDA_SUCCESS){ - printf("cuLaunchKernel(root) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - break; - - case PART: - res = cuLaunchKernel( - func_process_part[pt->pid], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - (pt->L_MAX)*(pt->len), // gridDimZ - blockDimX, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args, // kernelParams - NULL // extra - ); - if(res != CUDA_SUCCESS){ - printf("cuLaunchKernel(part) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - break; - - default: - printf("NOT DEFINED value: calc_flag = %d\n", pt->calc_flag); - exit(1); - break; - } - - /* synchronize GPU threads */ - res = cuCtxSynchronize(); - if(res != CUDA_SUCCESS){ - printf("pid = %d, calc_flag = %d\n",pt->pid, pt->calc_flag); - printf("cuCtxSynchronize(process) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_kernel_end, NULL); - tvsub(&tv_fconv_kernel_end, &tv_fconv_kernel_start, &tv); - time_fconv_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - if(pt->pid == 0){ - gettimeofday(&tv_kernel_end, NULL); - tvsub(&tv_kernel_end, &tv_kernel_start, &tv); - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - - /* download C from GPU */ - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_start, NULL); - } - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyDtoH_start, NULL); - } - - int C_dims0 = 0; - int C_dims1 = 0; - int C_x = 0; - size_t x_size = 0; - int error_flag = 0; - unsigned long long int pointer_C = (unsigned long long int)pt->dst_C; - unsigned long long int root_pointer_dev = (unsigned long long int)fconvs_C_dev[pt->pid]; - unsigned long long int part_pointer_dev = (unsigned long long int)fconvs_C_dev[pt->pid]; - - - switch(pt->calc_flag) { - case ROOT: - for(int lev = pt->interval; lev < pt->L_MAX; lev++){ - - /* loop condition */ - for(int k = 0; k < pt->error_array_num; k++) { - if(pt->error_array[k] == lev) - error_flag = 1; - } - - for(int ii = 0; ii < pt->len; ii++) { - - if(error_flag == 1) { - error_flag = 0; - break; - } - - C_dims0 = pt->A_SIZE[lev*3] - pt->B_dimension[ii*3] + 1; - C_dims1 = pt->A_SIZE[lev*3+1] - pt->B_dimension[ii*3+1] + 1; - - if(C_dims0 < 1 || C_dims1 < 1) continue; - - C_x = C_dims1 / device_num; - - if(C_dims1 % device_num != 0){ - C_x++; - } - - - if(pt->pid*C_x + C_x > C_dims1) - x_size = (C_dims1-pt->pid*C_x)*C_dims0*sizeof(FLOAT); - else - x_size = C_x*C_dims0*sizeof(FLOAT); - - if(pt->pid*C_x < C_dims1){ - - res = cuMemcpyDtoH((void *)(pointer_C+(unsigned long long int)(pt->pid*C_x*C_dims0*sizeof(FLOAT))), (CUdeviceptr)(root_pointer_dev+(unsigned long long int)(pt->pid*C_x*C_dims0*sizeof(FLOAT))), x_size); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyDtoH(dst_C root) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - } - - - pointer_C += (unsigned long long int)(C_dims0 * C_dims1 * sizeof(FLOAT)); - root_pointer_dev += (unsigned long long int)(C_dims0 * C_dims1 * sizeof(FLOAT)); - - } - - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - break; - - case PART: - - for(int lev = 0; lev < (pt->L_MAX-pt->interval); lev++) { - - for(int k = 0; k < part_error_array_num; k++) { - if(pt->error_array[k] == lev) - error_flag = 1; - } - - for(int ii = 0; ii < pt->len; ii++) { - - if(error_flag == 1) { - error_flag = 0; - break; - } - - C_dims0 = pt->A_SIZE[lev*3] - pt->B_dimension[ii*3] + 1; - C_dims1 = pt->A_SIZE[lev*3+1] - pt->B_dimension[ii*3+1] + 1; - - if(C_dims0 < 1 || C_dims1 < 1) continue; - - C_x = C_dims1 / device_num; - - if(C_dims1 % device_num != 0) { - C_x++; - } - - if(pt->pid*C_x + C_x > C_dims1) - x_size = (C_dims1-pt->pid*C_x)*C_dims0*sizeof(FLOAT); - else - x_size = C_x*C_dims0*sizeof(FLOAT); - - if(pt->pid*C_x < C_dims1){ - - res = cuMemcpyDtoH((void *)(pointer_C+(unsigned long long int)(pt->pid*C_x*C_dims0*sizeof(FLOAT))), (CUdeviceptr)(part_pointer_dev+(unsigned long long int)(pt->pid*C_x*C_dims0*sizeof(FLOAT))), x_size); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyDtoH(dst_C root) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - } - - pointer_C += (unsigned long long int)(C_dims0 * C_dims1 * sizeof(FLOAT)); - part_pointer_dev += (unsigned long long int)(C_dims0 * C_dims1 * sizeof(FLOAT)); - - - } - - } - - if(pt->pid == 0 && pt->calc_flag == PART){ - gettimeofday(&tv_fconv_memcpyDtoH_end, NULL); - tvsub(&tv_fconv_memcpyDtoH_end, &tv_fconv_memcpyDtoH_start, &tv); - time_fconv_memcpyDtoH += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - if(pt->pid == 0){ - gettimeofday(&tv_memcpy_end, NULL); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - } - - break; - - default: - printf("NOT DEFINED value: calc_flag = %d\n", pt->calc_flag); - exit(1); - break; - - } - -#ifdef PRINT_INFO - if(pt->pid == 0 && pt->calc_flag == PART){ - printf("fconv_kernel : %f[ms]\n",time_fconv_kernel); - printf("fconv_texture : %f[ms]\n",time_fconv_texture); - printf("fconv_others : %f[ms]\n",time_fconv_others); - printf("fconv_memalloc : %f[ms]\n",time_fconv_memalloc); - printf("fconv_memfree : %f[ms]\n",time_fconv_memfree); - printf("fconv_memcpyHtoD : %f[ms]\n",time_fconv_memcpyHtoD); - printf("fconv_memcpyDtoH : %f[ms]\n",time_fconv_memcpyDtoH); - printf("fconv_thread_time : %f[ms]\n",time_fconv_kernel+time_fconv_texture+time_fconv_others+time_fconv_memcpyHtoD+time_fconv_memcpyDtoH); - } -#endif - - - /* end of thread */ - CUT_THREADEND; -} - -FLOAT ***fconvsMT_GPU( - FLOAT **featp2, - size_t SUM_SIZE_feat, - FLOAT **filter, - int *sym_info, - int start, - int end, - int *A_SIZE, - int **B_SIZE, - int **M_size_array, - int L_MAX, - int interval, - int *FSIZE, - int padx, - int pady, - int max_X, - int max_Y, - int calc_flag - ) -{ - - struct timeval tv_fconv_start, tv_fconv_end; - float time_fconv; - struct timeval tv_fconv_others_start, tv_fconv_others_end; - float time_fconv_others; - - if(calc_flag == PART){ -#ifdef PRINT_INFO - printf("*******fconv PART print*******\n"); -#endif - gettimeofday(&tv_fconv_others_start, NULL); - } - - fconvs_partition *p = (fconvs_partition *)malloc(device_num*sizeof(fconvs_partition)); - - for(int i = 0; i < device_num; i++){ - p[i].max_height = 0; - p[i].max_width = 0; - } - - start=start-1; - end=end-1; - - const int len=end-start+1; - FLOAT ***Output = (FLOAT ***)malloc(L_MAX*sizeof(FLOAT **)); // make FLOAT* Output[L_MAX][len] - - struct timeval tv; - - thread_data **td = (thread_data **)malloc(L_MAX*sizeof(thread_data *)); // make thread_data td[L_MAX][len] - thread_data *dst_td = (thread_data *)calloc(L_MAX*len, sizeof(thread_data)); - unsigned long long int ptr_td = (unsigned long long int)dst_td; - for(int i=0; i error_array_num) { - printf("beyond error_array_num!\n"); - exit(1); - } - } - } - - - /* allocate output region on CPU memory */ - res = cuMemHostAlloc((void **)&(dst_C), SUM_SIZE_C, CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS){ - printf("cuMemHostAlloc(dst_C) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - memset(dst_C, 0, SUM_SIZE_C); //zero clear - - /* distribution */ - unsigned long long int pointer = (unsigned long long int)dst_C; - for(int level=interval; level -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -using namespace std; - -//Header files -#include "MODEL_info.h" //File information -#include "common.hpp" - -#include "switch_float.h" -#include "switch_release.h" -#include "drvapi_error_string.h" -#include "resize_GPU.hpp" - -extern CUcontext *ctx; -extern CUfunction *func_calc_hist; -extern CUfunction *func_calc_norm; -extern CUfunction *func_calc_feat; -extern CUmodule *module; - -//definition of constant -#define eps 0.0001 - -//definition of sin and cos -static const FLOAT Hcos[9] = {1.0000 , 0.9397, 0.7660, 0.5000, 0.1736, -0.1736, -0.5000, -0.7660, -0.9397}; -static const FLOAT Hsin[9] = {0.0000 , 0.3420, 0.6428, 0.8660, 0.9848, 0.9848, 0.8660, 0.6428, 0.3420}; - -//definition of structure -struct thread_data { - FLOAT *IM; - int ISIZE[3]; - int FSIZE[2]; - int F_C; - int sbin; - FLOAT *Out; -}; - -struct thread_data_forGPU { - // FLOAT *IM; - int ISIZE[3]; - int FSIZE[2]; - int F_C; - int sbin; - FLOAT *Out; - CUdeviceptr hist_dev; - CUdeviceptr norm_dev; - CUdeviceptr feat_dev; - CUstream stream; -}; - -//main function to calculate feature pyramid - - -//external function - -//resize.cc -extern FLOAT *resize(FLOAT *src,int *sdims,int *odims,FLOAT scale); //resize image - -// resize_GPU.cc - -//inline functions - -//return maximum number (integer) -static inline int max_i(int x,int y) -{ - return (x >= y ? x : y); -} - -//return minimum number (integer) -static inline int min_i(int x,int y) -{ - return (x <= y ? x : y); -} - -//return minimum number (FLOAT) -static inline FLOAT min_2(FLOAT x) -{ - return (x <= 0.2 ? x :0.2); -} - -//initialization functions - -//initialize scales -FLOAT *gpu_init_scales(Model_info *MI,IplImage *IM,int X,int Y) //X,Y length of image -{ - int interval,max_scale; - - if(MI->ini) - { - //calculate max scale - //MI->interval/=2; //reduce calculation time - const int sbin = MI->sbin; - interval = MI->interval; - const FLOAT sc = pow(2.0,(1/(double)interval));// represent down-scale rate - const int numcomponent = MI->numcomponent; - //max_scale = 1+int(floor(log(minsize/(5*FLOAT(sbin)))/log(sc))); - max_scale = 36; - const int L_NUM = interval+max_scale; - - FLOAT MRY =(FLOAT)MI->rsize[0]; - FLOAT MRX =(FLOAT)MI->rsize[1]; - - for(int kk=1;kkrsize[kk*2]rsize[kk*2]; - if(MI->rsize[kk*2+1]rsize[kk*2+1]; - } - - MRY/=2; - MRX/=2; - - FLOAT height =(FLOAT)IM->height/(FLOAT)sbin; - FLOAT width = (FLOAT)IM->width/(FLOAT)sbin; - FLOAT sc_step =1/sc; // down-scale rate - - for(int kk=0;kkmax_scale=max_scale; -#ifdef PRINT_INFO - printf("max_scale:%d\n",max_scale); -#endif - MI->IM_HEIGHT=IM->height; - - MI->IM_WIDTH=IM->width; - - MI->ini=false; - } - else - { - interval = MI->interval; - max_scale = MI->max_scale; - MI->IM_HEIGHT = IM->height; - MI->IM_WIDTH = IM->width; - } - - //return - FLOAT *scales = (FLOAT*)calloc((max_scale+interval),sizeof(FLOAT)); //Model information - return(scales); -} - -//initialize feature size matrix -int *gpu_init_featsize(Model_info *MI) -{ - const int LofFeat = MI->max_scale+MI->interval; - int *featsize = (int*)calloc(LofFeat*2,sizeof(FLOAT)); // feature size information matrix - return(featsize); -} - -//calculate HOG features from Image -//HOG features are calculated for each block(BSL*BSL pixels) -#ifdef ORIGINAL -static FLOAT *calc_feature -( - FLOAT *SRC, // resized image - int *ISIZE, // resized image size (3 dimension) - int *FTSIZE, // size of feature(output) - int sbin // block size desicion element for each filter - ) -{ - /* input size */ - const int height = ISIZE[0]; //{268,268,134,67,233,117,203,203,177,154,89,203,154,77} - const int width = ISIZE[1]; //{448,112,224,390,195,340,170,296,257,148,340,257,129} - const int dims[2] = {height, width}; - - /* size of Histgrams and Norm calculation space size */ - const int blocks[2] = {(int)floor(double(height)/double(sbin)+0.5), (int)floor(double(width)/double(sbin)+0.5)}; //{67,112}....sbine=4 - - /* Output features size(Output) */ - int out[3] = {max_i(blocks[0]-2, 0), max_i(blocks[1]-2, 0), 27+4}; - - /* Visible range (eliminate border blocks) */ - const int visible[2] = {blocks[0]*sbin, blocks[1]*sbin}; - - /* HOG Histgram and Norm */ - FLOAT *hist = (FLOAT *)calloc(blocks[0]*blocks[1]*18, sizeof(FLOAT)); // HOG histgram - FLOAT *norm = (FLOAT *)calloc(blocks[0]*blocks[1], sizeof(FLOAT)); // Norm - - /* feature(Output) */ - FLOAT *feat = (FLOAT *)calloc(out[0]*out[1]*out[2], sizeof(FLOAT)); - - // for time measurement - struct timeval hist_start, hist_end; - struct timeval tv; - float histCreate = 0.; - - gettimeofday(&hist_start, NULL); - - for (int x=1; x v) { - v = v2; - dx = dx2; - dy = dy2; - } - if (v3 > v) { - v = v3; - dx = dx3; - dy = dy3; - } - - /* snap to one of 18 orientations */ - FLOAT best_dot = 0; - int best_o = 0; - for (int o=0; o<9; o++) - { - FLOAT dot = Hcos[o]*dx + Hsin[o]*dy; - if (dot > best_dot) { - best_dot = dot; - best_o = o; - } - else if (-dot > best_dot) { - best_dot = -dot; - best_o = o + 9; - } - } - - /*add to 4 histgrams aroud pixel using linear interpolation*/ - FLOAT xp = ((FLOAT)x+0.5)/(FLOAT)sbin - 0.5; - FLOAT yp = ((FLOAT)y+0.5)/(FLOAT)sbin - 0.5; - int ixp = (int)floor(xp); - int iyp = (int)floor(yp); - FLOAT vx0 = xp - ixp; - FLOAT vy0 = yp - iyp; - FLOAT vx1 = 1.0 - vx0; - FLOAT vy1 = 1.0 - vy0; - v = sqrt(v); - - if (ixp >= 0 && iyp >= 0) { - *(hist + ixp*blocks[0] + iyp + best_o*blocks[0]*blocks[1]) += vx1*vy1*v; - } - - if (ixp+1 < blocks[1] && iyp >= 0) { - *(hist + (ixp+1)*blocks[0] + iyp + best_o*blocks[0]*blocks[1]) += vx0*vy1*v; - } - - if (ixp >= 0 && iyp+1 < blocks[0]) { - *(hist + ixp*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]) += vx1*vy0*v; - } - - if (ixp+1 < blocks[1] && iyp+1 < blocks[0]) { - *(hist + (ixp+1)*blocks[0] + (iyp+1) + best_o*blocks[0]*blocks[1]) += vx0*vy0*v; - } - } - } - /*****************************************************************/ - // for time measurement - /*****************************************************************/ - gettimeofday(&hist_end, NULL); - tvsub(&hist_end, &hist_start, &tv); - histCreate = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - printf("histCreate %f\n", histCreate); - fflush(stdout); - /*****************************************************************/ - /*****************************************************************/ - - /* compute energy in each block by summing over orientations */ -#if 1 - for (int o=0; o<9; o++) { - FLOAT *src1 = hist + o*blocks[0]*blocks[1]; - FLOAT *src2 = hist + (o+9)*blocks[0]*blocks[1]; - FLOAT *dst = norm; - FLOAT *end = norm + blocks[0]*blocks[1]; - - while(dst < end) { - *(dst++) += (*src1 + *src2) * (*src1 + *src2); - src1++; - src2++; - } - } -#else - for (int o=0; o<18; o++) { - FLOAT *src1 = hist + o*blocks[0]*blocks[1]; - FLOAT *dst = norm; - FLOAT *end = norm + blocks[0]*blocks[1]; - - while(dst < end) { - *(dst++) += (*src1) * (*src1); - src1++; - } - } -#endif - - /* compute featuers */ - for (int x=0; x%s\n", (text), (res), getCudaDrvErrorString((res))); \ - exit(1); \ - } - -#define USE_STREAM - -static pthread_barrier_t barrier; - - -static void calc_feature_byGPU -( - // FLOAT *SRC, // resized image - int *ISIZE, // resized image size (3 dimension) - int *FTSIZE, // size of feature(output) - int sbin, // block size desicion element for each filter - int level, - CUdeviceptr hist_dev, - CUdeviceptr norm_dev, - CUdeviceptr feat_dev, - CUstream stream - ) -{ - /* rename argument */ - // FLOAT *resized_image = SRC; - - /* input size */ - const int height = ISIZE[0]; //{268,268,134,67,233,117,203,203,177,154,89,203,154,77} - const int width = ISIZE[1]; //{448,112,224,390,195,340,170,296,257,148,340,257,129} - - /* size of Histgrams and Norm calculation space size */ - const int blocks[2] = {(int)floor(double(height)/double(sbin)+0.5), (int)floor(double(width)/double(sbin)+0.5)}; //{67,112}....sbine=4 - - /* Output features size(Output) */ - int out[3] = {max_i(blocks[0]-2, 0), max_i(blocks[1]-2, 0), 27+4}; - - /* Visible range (eliminate border blocks) */ - const int visible[2] = {blocks[0]*sbin, blocks[1]*sbin}; - - /* attach CUDA Context on this p-thread */ - CUresult res; - res = cuCtxSetCurrent(ctx[0]); - MY_CUDA_CHECK(res, "cuCtxSetCurrent(ctx[0])"); - - - - - void *kernel_args_hist[] = { - &hist_dev, - (void *)&sbin, - (void *)&visible[0], - (void *)&visible[1], - (void *)&level - }; - - - /* decide CUDA block shape */ - int max_thread_num = 0; - // MY_CUDA_CHECK(res, "cuDeviceGetAttribure()"); - - // max_thread_num = 128; - max_thread_num = 1024; - - int thread_num_x = (visible[1]-1 < sqrt(max_thread_num)) ? - visible[1]-1 : sqrt(max_thread_num); - int thread_num_y = (visible[0]-1 < sqrt(max_thread_num)) ? - visible[0]-1 : sqrt(max_thread_num); - - int block_num_x = (visible[1]-1) / thread_num_x; - int block_num_y = (visible[0]-1) / thread_num_y; - if ((visible[1]-1) % thread_num_x != 0) block_num_x++; - if ((visible[0]-1) % thread_num_y != 0) block_num_y++; - - int sharedMemBytes = 0; - - /* p-thread barrier */ - pthread_barrier_wait(&barrier); - - /* execute GPU function */ -#ifdef USE_STREAM - res = cuLaunchKernel( - func_calc_hist[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - stream, // hStream - kernel_args_hist, // kernel Parameter - NULL // extra - ); -#else - res = cuLaunchKernel( - func_calc_hist[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_hist, // kernel Parameter - NULL // extra - ); - -#endif - MY_CUDA_CHECK(res, "cuLaunchKernel(calc_hist)"); - -#ifdef USE_STREAM - /* p-thread barrier in order to enqueue Launch command in breadth first order */ - pthread_barrier_wait(&barrier); - - /* synchronize CUDA Stream */ - /* - A CUDA operation is dispatched from the engine queue - if preceding calls in the same stream have completed. - So, there is no need to synchronize CUDA Stream here. - */ - // res = cuStreamSynchronize(stream); - // MY_CUDA_CHECK(res, "cuStreamSynchronize(stream)"); -#else - /* synchronize GPU threads */ - res = cuCtxSynchronize(); - MY_CUDA_CHECK(res, "cuCtxSynchronize(calc_hist)"); -#endif - - - - - /* compute energy in each block by summing over orientations */ - void *kernel_args_norm[] = { - &hist_dev, - &norm_dev, - (void *)&blocks[0], - (void *)&blocks[1], - (void *)&level - }; - - /* decide CUDA block shape */ - thread_num_x = (blocks[1] < sqrt(max_thread_num)) ? - blocks[1] : sqrt(max_thread_num); - thread_num_y = (blocks[0] < sqrt(max_thread_num)) ? - blocks[0] : sqrt(max_thread_num); - - block_num_x = blocks[1] / thread_num_x; - block_num_y = blocks[0] / thread_num_y; - if (blocks[1] % thread_num_x != 0) block_num_x++; - if (blocks[0] % thread_num_y != 0) block_num_y++; - - sharedMemBytes = 0; - - /* execute GPU function */ -#ifdef USE_STREAM - res = cuLaunchKernel( - func_calc_norm[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - stream, // hStream - kernel_args_norm, // kernel Parameter - NULL // extra - ); -#else - res = cuLaunchKernel( - func_calc_norm[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_norm, // kernel Parameter - NULL // extra - ); -#endif - MY_CUDA_CHECK(res, "cuLaunchKernel(calc_norm)"); - -#ifdef USE_STREAM - /* p-thread barrier in order to enqueue Launch command in breadth first order */ - pthread_barrier_wait(&barrier); - - /* synchronize CUDA Stream */ - /* - A CUDA operation is dispatched from the engine queue - if preceding calls in the same stream have completed. - So, there is no need to synchronize CUDA Stream here. - */ - // res = cuStreamSynchronize(stream); - // MY_CUDA_CHECK(res, "cuStreamSynchronize(stream)"); -#else - /* synchronize GPU threads */ - res = cuCtxSynchronize(); - MY_CUDA_CHECK(res, "cuCtxSynchronize(calc_norm)"); -#endif - - - - /* compute featuers */ - void *kernel_args_feat[] = { - &hist_dev, - &norm_dev, - &feat_dev, - (void *)&out[0], - (void *)&out[1], - (void *)&blocks[0], - (void *)&blocks[1], - (void *)&level - }; - - /* decide CUDA block shape */ - thread_num_x = (out[1] < sqrt(max_thread_num)) ? - out[1] : sqrt(max_thread_num); - thread_num_y = (out[0] < sqrt(max_thread_num)) ? - out[0] : sqrt(max_thread_num); - - if (thread_num_x == 0) thread_num_x++; - if (thread_num_y == 0) thread_num_y++; - - block_num_x = out[1] / thread_num_x; - block_num_y = out[0] / thread_num_y; - if (out[1] % thread_num_x != 0 || block_num_x == 0) block_num_x++; - if (out[0] % thread_num_y != 0 || block_num_y == 0) block_num_y++; - - sharedMemBytes = 0; - - /* execute GPU function */ -#ifdef USE_STREAM - res = cuLaunchKernel( - func_calc_feat[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - stream, // hStream - kernel_args_feat, // kernel Parameter - NULL // extra - ); -#else - res = cuLaunchKernel( - func_calc_feat[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - NULL, // hStream - kernel_args_feat, // kernel Parameter - NULL // extra - ); -#endif - MY_CUDA_CHECK(res, "cuLaunchKernel(calc_feat)"); - -#ifdef USE_STREAM - /* p-thread barrier in order to enqueue Launch command in breadth first order */ - pthread_barrier_wait(&barrier); - - /* synchronize CUDA Stream */ - res = cuStreamSynchronize(stream); - MY_CUDA_CHECK(res, "cuStreamSynchronize(stream)"); -#else - /* synchronize GPU threads */ - res = cuCtxSynchronize(); - MY_CUDA_CHECK(res, "cuCtxSynchronize(calc_feat)"); -#endif - - - - - // free(hist); - // free(norm); - - /* size of feature(output) */ - *FTSIZE = out[0]; - *(FTSIZE+1) = out[1]; - - - // printf("feat%f\n",*(feat)); - // return(feat); - -} - - - -//sub functions - -// get pixel-intensity(FLOAT) of image(IplImage) - -FLOAT *Ipl_to_FLOAT(IplImage *Input) //get intensity data (FLOAT) of input -{ - const int width = Input->width; -#ifdef PRINT_INFO - printf("%d\n",width); -#endif - const int height = Input->height; -#ifdef PRINT_INFO - printf("%d\n",height); -#endif - const int nChannels = Input->nChannels; -#ifdef PRINT_INFO - printf("%d\n",nChannels); -#endif - const int SQ = height*width; - const int WS = Input->widthStep; - - FLOAT *Output = (FLOAT *)malloc(sizeof(FLOAT)*height*width*nChannels); -#ifdef PRINT_INFO - printf("%d",height*width*nChannels); -#endif - - FLOAT *R = Output; - FLOAT *G = Output + SQ; - FLOAT *B = Output + 2*SQ; - char *IDATA = Input->imageData; - - //pick intensity of pixel (color) - for(int x=0; xIM, args->ISIZE, args->FSIZE, args->sbin); - args->Out = Out; - pthread_exit((void*)thread_arg); -} -#endif - -static void* feat_calc_forGPU(void *thread_arg) -{ - thread_data_forGPU *args = (thread_data_forGPU *)thread_arg; - // FLOAT *IM = args->IM; - int *ISIZE = args->ISIZE; - int *FSIZE = args->FSIZE; - int sbin = args->sbin; - int level = args->F_C; - CUdeviceptr hist_dev = args->hist_dev; - CUdeviceptr norm_dev = args->norm_dev; - CUdeviceptr feat_dev = args->feat_dev; - CUstream stream = args->stream; - calc_feature_byGPU(//IM, - ISIZE, - FSIZE, - sbin, - level, - hist_dev, - norm_dev, - feat_dev, - stream - ); - - pthread_exit((void*)thread_arg); -} - - -#ifdef ORIGINAL -//void initialize thread data -static void ini_thread_data(thread_data *TD,FLOAT *IM,int *INSIZE,int sbin,int level) -{ - TD->IM = IM; - memcpy(TD->ISIZE, INSIZE, sizeof(int)*3); - TD->FSIZE[0] = 0; - TD->FSIZE[1] = 0; - TD->sbin = sbin; - TD->F_C = level; -} -#else -static void ini_thread_data_fouGPU(thread_data_forGPU *TD, - int *INSIZE, - int sbin, - int level, - CUdeviceptr hist_dev, - CUdeviceptr norm_dev, - CUdeviceptr feat_dev, - CUstream stream - ) -{ - // TD->IM = IM; - memcpy(TD->ISIZE, INSIZE, sizeof(int)*3); - TD->FSIZE[0] = 0; - TD->FSIZE[1] = 0; - TD->sbin = sbin; - TD->F_C = level; - TD->hist_dev = hist_dev; - TD->norm_dev = norm_dev; - TD->feat_dev = feat_dev; - TD->stream = stream; -} -#endif - -//#define ORIGINAL -//calculate feature pyramid (extended to main.cpp) - -//calculate feature pyramid -FLOAT **gpu_calc_f_pyramid -( - IplImage *Image, - Model_info *MI, - int *FTSIZE, - FLOAT *scale - ) //calculate feature pyramid -{ - /* constant parameters */ - const int max_scale = MI->max_scale; - const int interval = MI->interval; - const int sbin = MI->sbin; // for part filter - const int sbin2 = (int)floor((double)sbin/2.0); // for root filter - const int LEN = max_scale + interval; - const FLOAT sc = pow(2, (1.0/(double)interval)); - - int org_image_size[3] = {Image->height, Image->width, Image->nChannels}; // original image size // (元INSIZE) - - /* Original image (FLOAT) */ - // pickup brightness values of each channel from IplImage // (originally D_I) - FLOAT *org_image = dpm_ttic_gpu_Ipl_to_FLOAT_forGPU(Image); - -#ifdef ORIGINAL - /* features */ - FLOAT **feat = (FLOAT**)malloc(sizeof(FLOAT*)*LEN); //Model information -#endif - - /* thread for feature calculation */ -#ifdef ORIGINAL - thread_data *td = (thread_data *)calloc(LEN, sizeof(thread_data)); -#else - thread_data_forGPU *td = (thread_data_forGPU *)calloc(LEN, sizeof(thread_data_forGPU)); -#endif - pthread_t *ts = (pthread_t *)calloc(LEN, sizeof(pthread_t)); - - // FLOAT **resized_image = (FLOAT**)calloc(LEN, sizeof(FLOAT*)); // resized image // (originally RIM_S) - int *resized_image_size = (int*)calloc(LEN*3, sizeof(int)); // resized image size // (originally RI_S) - int t_count = 0; - - CUresult res; - res = cuCtxSetCurrent(ctx[0]); - MY_CUDA_CHECK(res, "cuCtxCurrent(ctx[0])"); - - - /*****************************************************************/ - // for time measurement - /*****************************************************************/ - CUevent resize_start, resize_end; - res = cuEventCreate(&resize_start, CU_EVENT_DEFAULT); - MY_CUDA_CHECK(res, "cuEventCreate(resize_start)"); - res = cuEventCreate(&resize_end, CU_EVENT_DEFAULT); - MY_CUDA_CHECK(res, "cuEventCreate(resize_end)"); - - cuEventRecord(resize_start, NULL); - MY_CUDA_CHECK(res, "cuEventRecord(resize_start)"); - - /* calculate resized image size */ - dpm_ttic_gpu_calc_resized_image_size(org_image_size, - resized_image_size, - interval, - sc, - max_scale, - scale); - -#ifndef ORIGINAL - /* create CUDA Stream for each p-thread */ - CUstream *stream = (CUstream *)malloc(LEN*sizeof(CUstream)); - for (int level=0; level -#include "switch_float.h" -#include "MODEL_info.h" - -extern int *gpu_init_featsize(Model_info *MI); -extern FLOAT *gpu_init_scales(Model_info *MI, IplImage *IM,int X,int Y); -extern void gpu_free_features(FLOAT **features,Model_info *MI); -extern FLOAT **gpu_calc_f_pyramid(IplImage *Image,Model_info *MI,int *FTSIZE,FLOAT *scale); - -#endif /* _FEATURE_PYRAMID_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/for_use_GPU.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/for_use_GPU.h deleted file mode 100644 index e76b4a6e658..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/for_use_GPU.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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. - */ - -#ifndef _CUDA_H -#define _CUDA_H -#include -#endif - -#include "MODEL_info.h" - -#ifndef _SWITCH_FLOAT_H -#define _SWITCH_FLOAT_H -#include "switch_float.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* define variables for using GPU */ - -extern CUdevice *dev; -extern CUcontext *ctx; -extern CUfunction *func_process_root, *func_process_part, *func_dt1d_x, *func_dt1d_y, *func_calc_a_score, *func_inverse_Q; -extern CUmodule *module; -extern int *NR_MAXTHREADS_X, *NR_MAXTHREADS_Y; -extern CUdeviceptr *featp2_dev; -extern CUdeviceptr *A_SIZE_dev; -extern CUdeviceptr *B_dev; -extern CUdeviceptr *B_dims_dev; -extern CUdeviceptr *fconvs_error_array_dev; -extern CUdeviceptr *fconvs_C_dev; -extern CUdeviceptr *part_C_dev; -extern CUdeviceptr *part_error_array_dev; -extern CUdeviceptr *M_dev; -extern CUdeviceptr *tmpM_dev; -extern CUdeviceptr *tmpIx_dev; -extern CUdeviceptr *tmpIy_dev; -extern CUdeviceptr *pm_size_array_dev; -extern CUdeviceptr *PIDX_array_dev; -extern CUdeviceptr *def_array_dev; -extern int sum_size_def_array; -extern CUdeviceptr *DID_4_array_dev; -extern CUdeviceptr *numpart_dev; -extern int max_numpart; -extern int device_num; - -/* definition of calc_flag */ -#define ROOT 0 -#define PART 1 - -/* switch define sentence which use original source or GPU function */ -//#define ORIGINAL -#ifdef __cplusplus -} -#endif diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.cpp deleted file mode 100644 index ae814cd4a22..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.cpp +++ /dev/null @@ -1,1259 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////get_boxes.cpp detect boundary-boxes-coordinate of oject ///////////////////////////////////////////////////// - -#include -#include -#include -#include -#include - -#include "MODEL_info.h" //File information -#include "common.hpp" - -#include "for_use_GPU.h" -#include "switch_float.h" -#include "switch_release.h" -#include "dt.hpp" -#include "dt_GPU.hpp" -#include "detect.hpp" -#include "fconvsMT.hpp" - -#include - -int max_numpart = 0; -static int max_RL_S = 0; - -//definiton of functions// - -//get good-matched pixel-coordinate -static int *get_gmpc(FLOAT *score,FLOAT thresh,int *ssize,int *good_matched) -{ - const int limit = ssize[0]*ssize[1]; - int matches = 0; - - std::vector indices; - for(int i = 0; i < limit; i++) { - if(score[i] > thresh) { - indices.push_back(i); - matches++; - } - } - - int *result = (int*)malloc(matches * 2 *sizeof(int)); - int i = 0; - for (const int index : indices) { - result[i*2] = index % ssize[0]; - result[i*2+1] = index / ssize[0]; - ++i; - } - - *good_matched = matches; - return result; -} - -//get root-box pixel coordinate -static FLOAT *rootbox(int x, int y, FLOAT scale, int pad_x, int pad_y, int *root_size) -{ - FLOAT *Out=(FLOAT*)malloc(sizeof(FLOAT)*4); - - Out[0]=((FLOAT)y-(FLOAT)pad_y+1)*scale; //Y1 - Out[1]=((FLOAT)x-(FLOAT)pad_x+1)*scale; //X1 - Out[2]=Out[0]+(FLOAT)root_size[0]*scale-1.0; //Y2 - Out[3]=Out[1]+(FLOAT)root_size[1]*scale-1.0; //X2 - - return(Out); -} - -//get part-box pixel coordinate -static FLOAT *partbox(int x,int y,int ax,int ay,FLOAT scale,int padx,int pady,int *psize,int *lx,int *ly,int *ssize) -{ - FLOAT *Out=(FLOAT*)malloc(sizeof(FLOAT)*4); - int probex = (x-1)*2+ax; - int probey = (y-1)*2+ay; - int P = probey+probex*ssize[0]; - - FLOAT px = (FLOAT)lx[P]+1.0; - FLOAT py = (FLOAT)ly[P]+1.0; - - Out[0]=((py-2.0)/2.0+1.0-(FLOAT)pady)*scale; //Y1 - Out[1]=((px-2.0)/2.0+1.0-(FLOAT)padx)*scale; //X1 - Out[2]=Out[0]+(FLOAT)psize[0]*scale/2.0-1.0; //Y2 - Out[3]=Out[1]+(FLOAT)psize[1]*scale/2.0-1.0; //X2 - return(Out); -} - -static void calc_a_score_GPU(FLOAT *ac_score, FLOAT **score, - int *ssize_start, Model_info *MI, - FLOAT scale, int *size_score_array, - int NoC) -{ - CUresult res; - - const int IHEI = MI->IM_HEIGHT; - const int IWID = MI->IM_WIDTH; - int pady_n = MI->pady; - int padx_n = MI->padx; - int block_pad = (int)(scale/2.0); - - struct timeval tv; - - int *RY_array, *RX_array; - res = cuMemHostAlloc((void**)&RY_array, NoC*sizeof(int), CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS) { - printf("cuMemHostAlloc(RY_array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemHostAlloc((void**)&RX_array, NoC*sizeof(int), CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS) { - printf("cuMemHostAlloc(RX_array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - for(int i = 0; i < NoC; i++) { - int rsize[2] = {MI->rsize[i*2], MI->rsize[i*2+1]}; - - RY_array[i] = (int)((FLOAT)rsize[0]*scale/2.0-1.0+block_pad); - RX_array[i] = (int)((FLOAT)rsize[1]*scale/2.0-1.0+block_pad); - } - - CUdeviceptr ac_score_dev, score_dev; - CUdeviceptr ssize_dev, size_score_dev; - CUdeviceptr RY_dev, RX_dev; - - int size_score=0; - for(int i = 0; i < NoC; i++) { - size_score += size_score_array[i]; - } - - /* allocate GPU memory */ - res = cuMemAlloc(&ac_score_dev, gpu_size_A_SCORE); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(ac_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemAlloc(&score_dev, size_score); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemAlloc(&ssize_dev, 2*NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(ssize) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemAlloc(&size_score_dev, NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(size_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemAlloc(&RY_dev, NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(RY) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemAlloc(&RX_dev, NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemAlloc(RX) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - gettimeofday(&tv_memcpy_start, nullptr); - /* upload date to GPU */ - res = cuMemcpyHtoD(ac_score_dev, &ac_score[0], gpu_size_A_SCORE); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(ac_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(score_dev, &score[0][0], size_score); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(ssize_dev, &ssize_start[0], 2*NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(ssize) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(size_score_dev, &size_score_array[0], NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(size_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(RY_dev, &RY_array[0], NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(RY) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemcpyHtoD(RX_dev, &RX_array[0], NoC*sizeof(int)); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyHtoD(RX) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - gettimeofday(&tv_memcpy_end, nullptr); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - void* kernel_args[] = { - (void*)&IWID, - (void*)&IHEI, - (void*)&scale, - (void*)&padx_n, - (void*)&pady_n, - &RX_dev, - &RY_dev, - &ac_score_dev, - &score_dev, - &ssize_dev, - (void*)&NoC, - &size_score_dev - }; - - int sharedMemBytes = 0; - - /* define CUDA block shape */ - int max_threads_num = 0; - int thread_num_x, thread_num_y; - int block_num_x, block_num_y; - - res = cuDeviceGetAttribute(&max_threads_num, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev[0]); - if(res != CUDA_SUCCESS){ - printf("\ncuDeviceGetAttribute() failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - NR_MAXTHREADS_X[0] = (int)sqrt((double)max_threads_num/NoC); - NR_MAXTHREADS_Y[0] = (int)sqrt((double)max_threads_num/NoC); - - thread_num_x = (IWID < NR_MAXTHREADS_X[0]) ? IWID : NR_MAXTHREADS_X[0]; - thread_num_y = (IHEI < NR_MAXTHREADS_Y[0]) ? IHEI : NR_MAXTHREADS_Y[0]; - - block_num_x = IWID / thread_num_x; - block_num_y = IHEI / thread_num_y; - if(IWID % thread_num_x != 0) block_num_x++; - if(IHEI % thread_num_y != 0) block_num_y++; - - gettimeofday(&tv_kernel_start, nullptr); - /* launch GPU kernel */ - res = cuLaunchKernel( - func_calc_a_score[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - 1, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - NoC, // blockDimZ - sharedMemBytes, // sharedMemBytes - nullptr, // hStream - kernel_args, // kernelParams - nullptr // extra - ); - if(res != CUDA_SUCCESS) { - printf("cuLaunchKernel(calc_a_score) failed : res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuCtxSynchronize(); - if(res != CUDA_SUCCESS) { - printf("cuCtxSynchronize(calc_a_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - gettimeofday(&tv_kernel_end, nullptr); - tvsub(&tv_kernel_end, &tv_kernel_start, &tv); - time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - gettimeofday(&tv_memcpy_start, nullptr); - /* download data from GPU */ - res = cuMemcpyDtoH(ac_score, ac_score_dev, gpu_size_A_SCORE); - if(res != CUDA_SUCCESS) { - printf("cuMemcpyDtoH(ac_score) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - gettimeofday(&tv_memcpy_end, nullptr); - tvsub(&tv_memcpy_end, &tv_memcpy_start, &tv); - time_memcpy += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - /* free GPU memory */ - res = cuMemFree(ac_score_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(ac_score_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFree(score_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(score_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFree(ssize_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(ssize_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFree(size_score_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(size_score_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFree(RY_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(RY_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFree(RX_dev); - if(res != CUDA_SUCCESS) { - printf("cuMemFree(RX_dev) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - /* free CPU memory */ - res = cuMemFreeHost(RY_array); - if(res != CUDA_SUCCESS) { - printf("cuMemFreeHost(RY_array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - res = cuMemFreeHost(RX_array); - if(res != CUDA_SUCCESS) { - printf("cuMemFreeHost(RX_array) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } -} - -//free detected boxes result -static void free_boxes(FLOAT **boxes, int LofFeat) -{ - if (boxes == nullptr) - return; - - for (int i = 0; i < LofFeat; i++) { - s_free(boxes[i]); - } - - s_free(boxes); -} - -//detect boundary box -FLOAT *dpm_ttic_gpu_get_boxes(FLOAT **features,FLOAT *scales,int *feature_size, GPUModel *MO, - int *detected_count, FLOAT *acc_score, FLOAT thresh) -{ - //constant parameters - const int max_scale = MO->MI->max_scale; - const int interval = MO->MI->interval; - const int sbin = MO->MI->sbin; - const int padx = MO->MI->padx; - const int pady = MO->MI->pady; - const int NoR = MO->RF->NoR; - const int NoP = MO->PF->NoP; - const int NoC = MO->MI->numcomponent; - const int *numpart = MO->MI->numpart; - const int LofFeat=(max_scale+interval)*NoC; - const int L_MAX = max_scale+interval; - - /* for measurement */ - struct timeval tv; - struct timeval tv_make_c_start, tv_make_c_end; - struct timeval tv_nucom_start, tv_nucom_end; - struct timeval tv_box_start, tv_box_end; - float time_box=0; - struct timeval tv_root_score_start, tv_root_score_end; - float time_root_score = 0; - struct timeval tv_part_score_start, tv_part_score_end; - float time_part_score = 0; - struct timeval tv_dt_start, tv_dt_end; - float time_dt = 0; - struct timeval tv_calc_a_score_start, tv_calc_a_score_end; - float time_calc_a_score = 0; - - gettimeofday(&tv_make_c_start, nullptr); - - int **RF_size = MO->RF->root_size; - int *rootsym = MO->RF->rootsym; - int *part_sym = MO->PF->part_sym; - int **part_size = MO->PF->part_size; - FLOAT **rootfilter = MO->RF->rootfilter; - FLOAT **partfilter=MO->PF->partfilter; - int **psize = MO->MI->psize; - - int **rm_size_array = (int **)malloc(sizeof(int *)*L_MAX); - int **pm_size_array = (int **)malloc(sizeof(int *)*L_MAX); - pm_size_array = (int **)malloc(sizeof(int *)*L_MAX); - - FLOAT **Tboxes=(FLOAT**)calloc(LofFeat,sizeof(FLOAT*)); //box coordinate information(Temp) - int *b_nums =(int*)calloc(LofFeat,sizeof(int)); //length of Tboxes - int count = 0; - int detected_boxes=0; - CUresult res; - - /* matched score (root and part) */ - FLOAT ***rootmatch,***partmatch = nullptr; - - int *new_PADsize; // need new_PADsize[L_MAX*3] - size_t SUM_SIZE_feat = 0; - - FLOAT **featp2 = (FLOAT **)malloc(L_MAX*sizeof(FLOAT *)); - - - if(featp2 == nullptr) { // error semantics - printf("allocate featp2 failed\n"); - exit(1); - } - - - /* allocate required memory for new_PADsize */ - new_PADsize = (int *)malloc(L_MAX*3*sizeof(int)); - if(new_PADsize == nullptr) { // error semantics - printf("allocate new_PADsize failed\n"); - exit(1); - } - - /* do padarray once and reuse it at calculating root and part time */ - - /* calculate sum of size of padded feature */ - for(int tmpL=0; tmpLMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - Tboxes[count]=nullptr; - count++; - continue; - } - } //for (level) // feature's loop(A's loop) 1level 1picture - - ///////root calculation///////// - /* calculate model score (only root) */ - - gettimeofday(&tv_root_score_start, nullptr); - rootmatch = fconvsMT_GPU( - featp2, - SUM_SIZE_feat, - rootfilter, - rootsym, - 1, - NoR, - new_PADsize, - RF_size, rm_size_array, - L_MAX, - interval, - feature_size, - padx, - pady, - MO->MI->max_X, - MO->MI->max_Y, - ROOT - ); - gettimeofday(&tv_root_score_end, nullptr); - tvsub(&tv_root_score_end, &tv_root_score_start, &tv); - time_root_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - ///////part calculation///////// - if(NoP>0) - { - /* calculate model score (only part) */ - gettimeofday(&tv_part_score_start, nullptr); - partmatch = fconvsMT_GPU( - featp2, - SUM_SIZE_feat, - partfilter, - part_sym, - 1, - NoP, - new_PADsize, - part_size, - pm_size_array, - L_MAX, - interval, - feature_size, - padx, - pady, - MO->MI->max_X, - MO->MI->max_Y, - PART - ); - gettimeofday(&tv_part_score_end, nullptr); - tvsub(&tv_part_score_end, &tv_part_score_start, &tv); - time_part_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - } - - res = cuCtxSetCurrent(ctx[0]); - if(res != CUDA_SUCCESS) { - printf("cuCtxSetCurrent(ctx[0]) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - gettimeofday(&tv_make_c_end, nullptr); - gettimeofday(&tv_nucom_start, nullptr); - - count = 0; - detected_boxes = 0; - - int **RL_array = (int **)malloc((L_MAX-interval)*sizeof(int*)); - int *dst_RL = (int *) malloc(NoC*(L_MAX-interval)*sizeof(int)); - - int **RI_array = (int **)malloc((L_MAX-interval)*sizeof(int*)); - int *dst_RI = (int *)malloc(NoC*(L_MAX-interval)*sizeof(int)); - - int **OI_array = (int **)malloc((L_MAX-interval)*sizeof(int*)); - int *dst_OI = (int *)malloc((NoC)*(L_MAX-interval)*sizeof(int)); - - int **RL_S_array = (int **)malloc((L_MAX-interval)*sizeof(int*)); - int *dst_RL_S = (int *)malloc(NoC*(L_MAX-interval)*sizeof(int)); - - - FLOAT **OFF_array = (FLOAT **)malloc((L_MAX-interval)*sizeof(FLOAT*)); - FLOAT *dst_OFF = (FLOAT *)malloc(NoC*(L_MAX-interval)*sizeof(FLOAT)); - - FLOAT ***SCORE_array = (FLOAT ***)malloc((L_MAX-interval)*sizeof(FLOAT **)); - FLOAT **sub_dst_SCORE = (FLOAT **)malloc(NoC*(L_MAX-interval)*sizeof(FLOAT*)); - - uintptr_t pointer_RL = (uintptr_t)dst_RL; - uintptr_t pointer_RI = (uintptr_t)dst_RI; - uintptr_t pointer_OI = (uintptr_t)dst_OI; - uintptr_t pointer_RL_S = (uintptr_t)dst_RL_S; - uintptr_t pointer_OFF = (uintptr_t)dst_OFF; - uintptr_t pointer_SCORE = (uintptr_t)sub_dst_SCORE; - for (int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; jMI->ridx[j]; //root-index - OI_array[L][j] = MO->MI->oidx[j]; //offset-index - RL_S_array[L][j] =sizeof(FLOAT)*RL_array[L][j]; - - - OFF_array[L][j] = MO->MI->offw[RI_array[L][j]]; //offset information - - - /* search max values */ - max_RL_S = (max_RL_S < RL_S_array[L][j]) ? RL_S_array[L][j] : max_RL_S; - max_numpart = (max_numpart < numpart[j]) ? numpart[j] : max_numpart; - } - } - - sum_RL_S = max_RL_S*NoC*(L_MAX-interval); - - /* root matching size */ - sum_SNJ = sizeof(int*)*max_numpart*NoC*(L_MAX-interval); - - /* consolidated allocation for SCORE_array and distribute region */ - FLOAT *dst_SCORE = (FLOAT *)malloc(sum_RL_S); - pointer_SCORE = (uintptr_t)dst_SCORE; - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; jMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; jMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - ax_array[L] = (int **)pointer_ax; - pointer_ax += (uintptr_t)(NoC*sizeof(int*)); - - ay_array[L] = (int **)pointer_ay; - pointer_ay += (uintptr_t)(NoC*sizeof(int*)); - - Ix_array[L] = (int ***)pointer_Ix; - pointer_Ix += (uintptr_t)(NoC*sizeof(int**)); - - Iy_array[L] = (int ***)pointer_Iy; - pointer_Iy += (uintptr_t)(NoC*sizeof(int**)); - } - - pointer_ax = (uintptr_t)dst_ax; - pointer_ay = (uintptr_t)dst_ay; - pointer_Ix = (uintptr_t)dst_Ix; - pointer_Iy = (uintptr_t)dst_Iy; - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; j0) - { - /* arrays to store temporary loop variables */ - int tmp_array_size = 0; - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; jMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - DIDX_array[L] = (int **)pointer_DIDX; - pointer_DIDX += (uintptr_t)(NoC*sizeof(int*)); - - DID_4_array[L] = (int **)pointer_DID_4; - pointer_DID_4 += (uintptr_t)(NoC*sizeof(int*)); - - PIDX_array[L] = (int **)pointer_PIDX; - pointer_PIDX += (uintptr_t)(NoC*sizeof(int*)); - } - - pointer_DIDX = (uintptr_t)dst_DIDX; - pointer_DID_4 = (uintptr_t)dst_DID_4; - pointer_PIDX = (uintptr_t)dst_PIDX; - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) { - continue; - } - - for(int j=0; jMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) { - continue; - } - - for(int j=0; jMI->didx[j][k]; - DID_4_array[L][j][k] = DIDX_array[L][j][k]*4; - PIDX_array[L][j][k] = MO->MI->pidx[j][k]; - - /* anchor */ - ax_array[L][j][k] = MO->MI->anchor[DIDX_array[L][j][k]*2]+1; - ay_array[L][j][k] = MO->MI->anchor[DIDX_array[L][j][k]*2+1]+1; - - int PSSIZE[2] ={pm_size_array[L][PIDX_array[L][j][k]*2], pm_size_array[L][PIDX_array[L][j][k]*2+1]}; // size of C - - /* index matrix */ - sum_size_index_matrix += sizeof(int)*PSSIZE[0]*PSSIZE[1]; - } - } - } - - int *dst_Ix_kk = (int *)malloc(sum_size_index_matrix); - int *dst_Iy_kk = (int *)malloc(sum_size_index_matrix); - uintptr_t pointer_Ix_kk = (uintptr_t)dst_Ix_kk; - uintptr_t pointer_Iy_kk = (uintptr_t)dst_Iy_kk; - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; jMI->max_X, // int max_X - MO->MI->max_Y, // int max_Y - MO->MI->def, // FLOAT *def - tmp_array_size, // int tmp_array_size - dst_PIDX, // int *dst_PIDX - dst_DID_4 // int *DID_4 - ); - gettimeofday(&tv_dt_end, nullptr); - tvsub(&tv_dt_end, &tv_dt_start, &tv); - time_dt += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - /* add part score */ - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - continue; - } - - for(int j=0; j0) - - /* combine root and part score and detect boundary box for each-component */ - - FLOAT *scale_array = (FLOAT *)malloc((L_MAX-interval)*sizeof(FLOAT)); - for(int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) - { - Tboxes[count]=nullptr; - count++; - continue; - } - - scale_array[L] = (FLOAT)sbin/scales[level]; - } - - for (int level=interval; levelMI->max_Y ||(feature_size[level*2+1]+2*padxMI->max_X)) { - Tboxes[count]=nullptr; - count++; - continue; - } - - /* calculate accumulated score */ - gettimeofday(&tv_calc_a_score_start, nullptr); - - calc_a_score_GPU( - acc_score, // FLOAT *ac_score - SCORE_array[L], // FLOAT **score - rm_size_array[level], // int *ssize_start - MO->MI, // Model_info *MI - scale, // FLOAT scale - RL_S_array[L], // int *size_score_array - NoC // int NoC - ); - - gettimeofday(&tv_calc_a_score_end, nullptr); - tvsub(&tv_calc_a_score_end, &tv_calc_a_score_start, &tv); - time_calc_a_score += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - for(int j = 0; j MI->rsize[j*2], MO->MI->rsize[j*2+1]}; - - int GL = (numpart[j]+1)*4+3; //31 - - /* detected box coordinate(current level) */ - FLOAT *t_boxes = (FLOAT*)calloc(GMN*GL,sizeof(FLOAT)); - - gettimeofday(&tv_box_start, nullptr); - - // NO NEED TO USE GPU - for(int k = 0;k < GMN;k++) { - FLOAT *P_temp = t_boxes+GL*k; - int y = GMPC[2*k]; - int x = GMPC[2*k+1]; - - /* calculate root box coordinate */ - FLOAT *RB =rootbox(x,y,scale,padx,pady,RSIZE); - memcpy(P_temp, RB,sizeof(FLOAT)*4); - s_free(RB); - P_temp+=4; - - for(int pp=0;ppMI->pidx[j][pp]*2], pm_size_array[L][MO->MI->pidx[j][pp]*2+1]}; - - /* calculate part box coordinate */ - FLOAT *PB = partbox(x,y,ax_array[L][j][pp],ay_array[L][j][pp],scale,padx,pady,PBSIZE,Ix_array[L][j][pp],Iy_array[L][j][pp],Isize); - memcpy(P_temp, PB,sizeof(FLOAT)*4); - P_temp+=4; - s_free(PB); - } - /* component number and score */ - *(P_temp++)=(FLOAT)j; //component number - *(P_temp++)=SCORE_array[L][j][x*R_S[0]+y]; //score of good match - *P_temp = scale; - } - - // NO NEED TO USE GPU - gettimeofday(&tv_box_end, nullptr); - tvsub(&tv_box_end, &tv_box_start, &tv); - time_box += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; - - /* save box information */ - if (GMN > 0) - Tboxes[count] = t_boxes; - else - Tboxes[count] = nullptr; - - b_nums[count]=GMN; - count++; - detected_boxes+=GMN; //number of detected box - - /* release */ - s_free(GMPC); - } - ////numcom - } - ////level - - /* free temporary arrays */ - free(dst_RL); - free(RL_array); - - free(dst_RI); - free(RI_array); - - free(dst_OI); - free(OI_array); - - free(dst_RL_S); - free(RL_S_array); - - free(dst_OFF); - free(OFF_array); - - free(dst_SCORE); - free(sub_dst_SCORE); - free(SCORE_array); - - free(dst_ax); - free(sub_dst_ax); - free(ax_array); - - free(dst_ay); - free(sub_dst_ay); - free(ay_array); - - free(Ix_array[0][0][0]); - free(dst_Ix); - free(sub_dst_Ix); - free(Ix_array); - - free(Iy_array[0][0][0]); - free(dst_Iy); - free(sub_dst_Iy); - free(Iy_array); - - free(scale_array); - - gettimeofday(&tv_nucom_end, nullptr); - -#ifdef PRINT_INFO - printf("root SCORE : %f\n", time_root_score); - printf("part SCORE : %f\n", time_part_score); - printf("dt : %f\n", time_dt); - printf("calc_a_score : %f\n", time_calc_a_score); -#endif - res = cuCtxSetCurrent(ctx[0]); - if(res != CUDA_SUCCESS) { - printf("cuCtxSetCurrent(ctx[0]) failed: res = %s\n",cuda_response_to_string(res)); - exit(1); - } - - /* free memory regions */ - res = cuMemFreeHost((void *)featp2[0]); - if(res != CUDA_SUCCESS) { - printf("cuMemFreeHost(featp2[0]) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - s_free(featp2); - - res = cuMemFreeHost((void *)rootmatch[interval][0]); - if(res != CUDA_SUCCESS) { - printf("cuMemFreeHost(rootmatch[0][0]) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - s_free(rootmatch[0]); - s_free(rootmatch); - - if (partmatch != nullptr) { - res = cuMemFreeHost((void *)partmatch[0][0]); - if(res != CUDA_SUCCESS) { - printf("cuMemFreeHost(partmatch[0][0]) failed: res = %s\n", cuda_response_to_string(res)); - exit(1); - } - - s_free(partmatch[0]); - s_free(partmatch); - - s_free(new_PADsize); - } - - /* release */ - s_free(rm_size_array[0]); - s_free(rm_size_array); - s_free(pm_size_array[0]); - s_free(pm_size_array); - - /* Output boundary-box coorinate information */ - int GL=(numpart[0]+1)*4+3; - FLOAT *boxes=(FLOAT*)calloc(detected_boxes*GL,sizeof(FLOAT)); //box coordinate information(Temp) - - FLOAT *T1 = boxes; - for(int i = 0; i < LofFeat; i++) { - int num_t = b_nums[i]*GL; - if(num_t > 0) { - FLOAT *T2 = Tboxes[i]; - //memcpy_s(T1,sizeof(FLOAT)*num_t,T2,sizeof(FLOAT)*num_t); - memcpy(T1, T2,sizeof(FLOAT)*num_t); - T1 += num_t; - } - } - - FLOAT abs_threshold = abs(thresh); - - /* accumulated score calculation */ - FLOAT max_score = 0.0; - - /* add offset to accumulated score */ - for(int i = 0; i < MO->MI->IM_HEIGHT*MO->MI->IM_WIDTH; i++) { - if (acc_score[i] < thresh) { - acc_score[i] = 0.0; - } else { - acc_score[i] += abs_threshold; - - if (acc_score[i] > max_score) - max_score = acc_score[i]; - } - } - - /* normalization */ - if (max_score > 0.0) { - FLOAT ac_ratio = 1.0 / max_score; - - for (int i = 0; i < MO->MI->IM_HEIGHT*MO->MI->IM_WIDTH; i++) { - acc_score[i] *= ac_ratio; - } - } - - /* release */ - free_boxes(Tboxes,LofFeat); - s_free(b_nums); - - /* output result */ - *detected_count = detected_boxes; - return boxes; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.hpp deleted file mode 100644 index f68370e8f0b..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/get_boxes.hpp +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _GET_BOXES_H_ -#define _GET_BOXES_H_ - -#include "switch_float.h" -#include "MODEL_info.h" - -extern FLOAT *dpm_ttic_gpu_get_boxes(FLOAT **features,FLOAT *scales,int *FSIZE,GPUModel *MO,int *Dnum,FLOAT *A_SCORE,FLOAT thresh); - -#endif /* _GET_BOXES_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.cpp deleted file mode 100644 index 82824dc1293..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.cpp +++ /dev/null @@ -1,494 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////load_model.cpp load detection-model information //////////////////////////////////////////////////////////// - -//C++ library -#include -#include -#include -#include -#include - -//Header files -#include "MODEL_info.h" //Model-structure definition -#include "common.hpp" - -#include "for_use_GPU.h" -#include "switch_float.h" -#include "switch_release.h" -#include "load_model.hpp" - -#include - -#ifdef USE_FLOAT_AS_DECIMAL -#define FLOAT_SCAN_FMT "%f," -#else -#define FLOAT_SCAN_FMT "%lf," -#endif - -#define FLOAT_SCAN_FMT2 FLOAT_SCAN_FMT FLOAT_SCAN_FMT -#define FLOAT_SCAN_FMT3 FLOAT_SCAN_FMT2 FLOAT_SCAN_FMT -#define FLOAT_SCAN_FMT4 FLOAT_SCAN_FMT3 FLOAT_SCAN_FMT - -int sum_size_def_array; - -//subfunctions - -//load model basic information -static Model_info * load_modelinfo(const char *filename) -{ - Model_info *MI=(Model_info*)malloc(sizeof(Model_info)); //Model information - - FILE *file = fopen(filename, "r"); - if (file == nullptr) { - std::cerr << std::strerror(errno) << std::endl; - std::exit(-1); - } - - FLOAT t1,t2,t3,t4; - - //load basic information - fscanf(file,FLOAT_SCAN_FMT ",",&t1); - MI->numcomponent=(int)t1; //number of components - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->sbin=(int)t1; //sbin - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->interval=(int)t1; //interval - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->max_Y=(int)t1; //max_Y - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->max_X=(int)t1; //max_X - - //root filter information - MI->ridx = (int*)malloc(sizeof(int)*MI->numcomponent); - MI->oidx = (int*)malloc(sizeof(int)*MI->numcomponent); - MI->offw = (FLOAT*)malloc(sizeof(FLOAT)*MI->numcomponent); - MI->rsize = (int*)malloc(sizeof(int)*MI->numcomponent*2); - MI->numpart = (int*)malloc(sizeof(int)*MI->numcomponent); - - //part filter information - MI->pidx = (int**)malloc(sizeof(int*)*MI->numcomponent); - MI->didx = (int**)malloc(sizeof(int*)*MI->numcomponent); - MI->psize = (int**)malloc(sizeof(int*)*MI->numcomponent); - - for(int i = 0; i < MI->numcomponent; i++) { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->ridx[i]=(int)t1-1; //root index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->oidx[i]=(int)t1-1; //offset index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->offw[i]=t1; //offset weight (FLOAT) - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->rsize[i*2]=(int)t1; //rsize (Y) - MI->rsize[i*2+1]=(int)t2; //rsize (X) - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->numpart[i]=(int)t1; //number of part filter - - MI->pidx[i]=(int*)malloc(sizeof(int)*MI->numpart[i]); - MI->didx[i]=(int*)malloc(sizeof(int)*MI->numpart[i]); - MI->psize[i]=(int*)malloc(sizeof(int)*MI->numpart[i]*2); - - //LOOP (part-filter) - for(int j = 0;j < MI->numpart[i]; j++) - { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->pidx[i][j]=(int)t1-1; //part index - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->didx[i][j]=(int)t1-1; //define-index of part - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->psize[i][j*2]=(int)t1; - MI->psize[i][j*2+1]=(int)t2; - } - } - - //get defs information - fscanf(file,FLOAT_SCAN_FMT,&t1); - - int DefL = int(t1); - - CUresult res = cuMemHostAlloc((void **)&(MI->def), sizeof(FLOAT)*DefL*4, CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS) { - std::cerr << "Failed: cuMemHostAlloc(MI->def) : " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } - sum_size_def_array = sizeof(FLOAT)*DefL*4; - - MI->anchor = (int*)malloc(sizeof(int)*DefL*2); - - for (int i = 0; i < DefL; i++) { - fscanf(file,FLOAT_SCAN_FMT4,&t1,&t2,&t3,&t4); - MI->def[i*4]=t1; - MI->def[i*4+1]=t2; - MI->def[i*4+2]=t3; - MI->def[i*4+3]=t4; - fscanf(file,FLOAT_SCAN_FMT2,&t1,&t2); - MI->anchor[i*2]=(int)t1; - MI->anchor[i*2+1]=(int)t2; - } - - //get least_square information - MI->x1 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->x2 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->y1 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - MI->y2 = (FLOAT **)malloc(sizeof(FLOAT*)*MI->numcomponent); - - for(int i = 0; i < MI->numcomponent; i++) { - int GL = 1+2*(1+MI->numpart[i]); - MI->x1[i] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->y1[i] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->x2[i] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - MI->y2[i] =(FLOAT *)malloc(sizeof(FLOAT)*GL); - - for (int j = 0; j < GL; j++) { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->x1[i][j] = t1; - } - for (int j = 0; j < GL; j++) { - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->y1[i][j] = t1; - } - - for (int j = 0; j < GL; j++){ - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->x2[i][j] = t1; - } - - for (int j = 0; j < GL; j++){ - fscanf(file,FLOAT_SCAN_FMT,&t1); - MI->y2[i][j] = t1; - } - } - - MI->padx=(int)ceil((double)MI->max_X/2.0+1.0); //padx - MI->pady=(int)ceil((double)MI->max_Y/2.0+1.0); //padY - - MI->ini=true; - - fclose(file); - return(MI); -} - -static Rootfilters *load_rootfilter(const char *filename) -{ - FILE *file = fopen(filename, "r"); - if (file == nullptr) { - std::cerr << std::strerror(errno) << std::endl; - std::exit(-1); - } - - FLOAT t1,t2,t3; - FLOAT dummy_t1, dummy_t2, dummy_t3; // variable for dummy scan in order to adjust the location of file-pointer - - fscanf(file,FLOAT_SCAN_FMT,&t1); - - Rootfilters *RF=(Rootfilters*)malloc(sizeof(Rootfilters)); - RF->NoR=(int)t1; //number of root filter - - RF->root_size=(int**)malloc(sizeof(int*)*RF->NoR); //size of root filter - RF->rootfilter=(FLOAT**)malloc(sizeof(FLOAT*)*RF->NoR); //weight of root filter - RF->rootsym=(int*)malloc(sizeof(int)*RF->NoR); //symmetric information of root - - /* keep file pointer location */ - long before_loop_location = ftell(file); - - CUresult res; - size_t sum_size_root = 0; - for (int i = 0; i < RF-> NoR; i++) { - fscanf(file,FLOAT_SCAN_FMT3,&t1,&t2,&t3); //number of components - - RF->root_size[i]=(int*)malloc(sizeof(int)*3); - RF->root_size[i][0]=(int)t1; - RF->root_size[i][1]=(int)t2; - RF->root_size[i][2]=(int)t3; - - int NUMB=RF->root_size[i][0]*RF->root_size[i][1]*RF->root_size[i][2]; -#ifdef ORIGINAL - RF->rootfilter[i]=(FLOAT*)malloc(sizeof(FLOAT)*NUMB); //weight of root filter -#else -#ifdef SEPARETE_MEM - res = cuMemHostAlloc((void **)&(RF->rootfilter[i]), sizeof(FLOAT)*NUMB, CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemHostAlloc(RF->rootfilter): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#else - sum_size_root += NUMB*sizeof(FLOAT); -#endif -#endif - /* adjust the location of file-pointer */ - for(int j = 0; j < NUMB; j++) { - fscanf(file,FLOAT_SCAN_FMT,&dummy_t1); // this is dummy scan - } - } - -#ifndef ORIGINAL -#ifndef SEPARETE_MEM - /* allocate memory for root in a lump */ - FLOAT *dst_root; - res = cuMemHostAlloc((void **)&dst_root, sum_size_root , CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemHostAlloc(dst_root): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } - - /* distribution */ - unsigned long long int pointer = (unsigned long long int)dst_root; - for(int i = 0; i < RF->NoR; i++) { - RF->rootfilter[i] = (FLOAT *)pointer; - int NUMB=RF->root_size[i][0]*RF->root_size[i][1]*RF->root_size[i][2]; - pointer += NUMB*sizeof(FLOAT); - } -#endif -#endif - - /* reset the location of file pointer */ - fseek(file, before_loop_location, SEEK_SET); - - for(int i = 0; i < RF->NoR; i++) { - int NUMB = RF->root_size[i][0]*RF->root_size[i][1]*RF->root_size[i][2]; - - /* adjust the location of file-pointer */ - fscanf(file,FLOAT_SCAN_FMT3,&dummy_t1,&dummy_t2,&dummy_t3); // this is dummy scan - - for (int j = 0; j < NUMB;j++) { - fscanf(file,FLOAT_SCAN_FMT,&t1); - RF->rootfilter[i][j]=t1; - } - RF->rootsym[i] = 1; - -#ifdef PRINT_INFO - printf("root No.%d size %d %d \n",i,RF->root_size[i][0],RF->root_size[i][1]); -#endif - } - - fclose(file); - return(RF); -} - -static Partfilters *load_partfilter(const char *filename) -{ - CUresult res; - - Partfilters *PF=(Partfilters*)malloc(sizeof(Partfilters)); //Part filter - - FILE *file = fopen(filename, "r"); - if (file == nullptr) { - std::cerr << std::strerror(errno) << std::endl; - std::exit(-1); - } - - FLOAT t1,t2,t3; - FLOAT dummy_t1, dummy_t2, dummy_t3; // variable for dummy scan in order to adjust the location of file-pointer - - fscanf(file,FLOAT_SCAN_FMT,&t1); - - PF->NoP=(int)t1; //number of part filter - - PF->part_size=(int**)malloc(sizeof(int*)*PF->NoP); //size of part filter - PF->partfilter=(FLOAT**)malloc(sizeof(FLOAT*)*PF->NoP); //weight of part filter - PF->part_partner=(int*)malloc(sizeof(int)*PF->NoP); //symmetric information of part - PF->part_sym=(int*)malloc(sizeof(int)*PF->NoP); //symmetric information of part - - /* keep file pointer location */ - long before_loop_location = ftell(file); - - int SUM_SIZE_PART = 0; - for (int i = 0; i < PF->NoP; i++) { - fscanf(file,FLOAT_SCAN_FMT3,&t1,&t2,&t3); //number of components - - PF->part_size[i]=(int*)malloc(sizeof(int)*3); - PF->part_size[i][0]=(int)t1; - PF->part_size[i][1]=(int)t2; - PF->part_size[i][2]=(int)t3; - //printf("***************%f %f %f\n",t1,t2,t3); - int NUMB=PF->part_size[i][0]*PF->part_size[i][1]*PF->part_size[i][2]; -#ifdef ORIGINAL - PF->partfilter[i]=(FLOAT*)malloc(sizeof(FLOAT)*NUMB); //weight of root filter -#else -#ifdef SEPARETE_MEM - res = cuMemHostAlloc((void **)&(PF->partfilter[i]), sizeof(FLOAT)*NUMB, CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemHostAlloc(PF->partfilter): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#else - SUM_SIZE_PART += NUMB*sizeof(FLOAT); -#endif -#endif - /* adjust the location of file-pointer */ - for(int j = 0; j < NUMB; j++) { - fscanf(file,FLOAT_SCAN_FMT,&dummy_t1); // this is dummy scan - } - fscanf(file,FLOAT_SCAN_FMT,&dummy_t1); // this is dummy scan - } - -#ifndef ORIGINAL -#ifndef SEPARETE_MEM - /* allocate memory region for part in a lump */ - FLOAT *dst_part; - res = cuMemHostAlloc((void **)&dst_part, SUM_SIZE_PART, CU_MEMHOSTALLOC_DEVICEMAP); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemHostAlloc(dst_part): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } - - /* distribution */ - uintptr_t pointer = (uintptr_t)dst_part; - for(int i = 0; i < PF->NoP; i++) { - PF->partfilter[i] = (FLOAT *)pointer; - int NUMB=PF->part_size[i][0]*PF->part_size[i][1]*PF->part_size[i][2]; - pointer += NUMB*sizeof(FLOAT); - } -#endif -#endif - /* reset the location of file-pointer */ - fseek(file, before_loop_location, SEEK_SET); - - for(int i = 0; i < PF->NoP; i++) { - int NUMB = PF->part_size[i][0]*PF->part_size[i][1]*PF->part_size[i][2]; - - /* adjust the location of file-pointer */ - fscanf(file,FLOAT_SCAN_FMT3,&dummy_t1,&dummy_t2,&dummy_t3); // this is dummy scan - - for (int j = 0; j < NUMB; j++) { - fscanf(file,FLOAT_SCAN_FMT,&t1); - PF->partfilter[i][j]=t1; - } - fscanf(file,FLOAT_SCAN_FMT,&t1); - - PF->part_partner[i]=(int)t1; //symmetric information of part - - if(PF->part_partner[i]==0) - PF->part_sym[i]=1; - else - PF->part_sym[i]=0; - } - - fclose(file); - return(PF); -} - -GPUModel *dpm_ttic_gpu_load_model(FLOAT ratio, const char *com_csv, const char *root_csv, const char *part_csv) -{ - GPUModel *model = (GPUModel*)malloc(sizeof(GPUModel)); - - // assign information into model.OO - model->MI = load_modelinfo(com_csv); - model->RF = load_rootfilter(root_csv); - model->PF = load_partfilter(part_csv); - - model->MI->ratio = ratio; - - /* added to reuse resized feature */ - model->MI->padx = 0; - model->MI->pady = 0; - - return model; -} - -//release model -void dpm_ttic_gpu_free_model(GPUModel *MO) -{ - //free model information - for(int i=0; i < MO->MI->numcomponent; i++) { - s_free(MO->MI->didx[i]); - s_free(MO->MI->pidx[i]); - s_free(MO->MI->psize[i]); - s_free(MO->MI->x1[i]); - s_free(MO->MI->x2[i]); - s_free(MO->MI->y1[i]); - s_free(MO->MI->y2[i]); - } - s_free(MO->MI->anchor); - - // s_free(MO->MI->def); - CUresult res = cuMemFreeHost((void *)MO->MI->def); - if(res != CUDA_SUCCESS) { - std::cerr << "Failed: cuMemFreeHost(MO->MI->def): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } - - s_free(MO->MI->numpart); - s_free(MO->MI->offw); - s_free(MO->MI->oidx); - s_free(MO->MI->ridx); - s_free(MO->MI->rsize); - s_free(MO->MI->x1); - s_free(MO->MI->x2); - s_free(MO->MI->y1); - s_free(MO->MI->y2); - s_free(MO->MI); - - //free root-filter information - for(int i = 0; i < MO->RF->NoR; i++) { - s_free(MO->RF->root_size[i]); -#ifdef ORIGINAL - s_free(MO->RF->rootfilter[i]); -#else -#ifdef SEPARETE_MEM - res = cuMemFreeHost((void *)MO->RF->rootfilter[i]); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemFreeHost(MO->RF->rootfilter): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#endif -#endif - } - -#ifndef ORIGINAL -#ifndef SEPARETE_MEM - /* free heap region in a lump */ - res = cuMemFreeHost((void *)MO->RF->rootfilter[0]); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemFreeHost(MO->RF->rootfilter[0]): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#endif -#endif - s_free(MO->RF->rootsym); - s_free(MO->RF); - - //free root-filter information - for(int i = 0; i < MO->PF->NoP; i++) - { - s_free(MO->PF->part_size[i]); -#ifdef ORIGINAL - s_free(MO->PF->partfilter[i]); -#else -#ifdef SEPARETE_MEM - res = cuMemFreeHost((void *)MO->PF->partfilter[i]); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemFreeHost(MO->PF->partfilter): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#endif -#endif - } - -#ifndef ORIGINAL -#ifndef SEPARETE_MEM - /* free heap region in a lump */ - res = cuMemFreeHost((void *)MO->PF->partfilter[0]); - if(res != CUDA_SUCCESS){ - std::cerr << "Failed: cuMemFreeHost(MO->PF->partfilter[0]): " - << cuda_response_to_string(res) << std::endl; - std::exit(1); - } -#endif -#endif - s_free(MO->PF->part_partner); - s_free(MO->PF->part_sym); - s_free(MO->PF); - - s_free(MO); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.hpp deleted file mode 100644 index 95ccf51c40b..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/load_model.hpp +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _LOAD_MODEL_H_ -#define _LOAD_MODEL_H_ - -extern GPUModel *dpm_ttic_gpu_load_model(FLOAT ratio, const char *com_csv, const char *root_csv, const char *part_csv); -extern void dpm_ttic_gpu_free_model(GPUModel *MO); - -#endif /* _LOAD_MODEL_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.cpp deleted file mode 100644 index 5d9897a35f1..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 1993-2010 NVIDIA Corporation. All rights reserved. - * - * NVIDIA Corporation and its licensors retain all intellectual property and - * proprietary rights in and to this software and related documentation. - * Any use, reproduction, disclosure, or distribution of this software - * and related documentation without an express license agreement from - * NVIDIA Corporation is strictly prohibited. - * - * Please refer to the applicable NVIDIA end user license agreement (EULA) - * associated with this source code for terms and conditions that govern - * your use of this NVIDIA software. - * - */ - -#include "multithreading.h" - -CUTThread cutStartThread(CUT_THREADROUTINE func, void * data) -{ - pthread_t thread; - pthread_create(&thread, NULL, func, data); - return thread; -} - -void cutEndThread(CUTThread thread) -{ - pthread_join(thread, NULL); -} - -void cutDestroyThread(CUTThread thread) -{ - pthread_cancel(thread); -} - -void cutWaitForThreads(const CUTThread * threads, int num) -{ - for(int i = 0; i < num; i++) - cutEndThread(threads[i]); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.h deleted file mode 100644 index e48f5d2bf6a..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/multithreading.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 1993-2007 NVIDIA Corporation. All rights reserved. - * - * NOTICE TO USER: - * - * This source code is subject to NVIDIA ownership rights under U.S. and - * international Copyright laws. Users and possessors of this source code - * are hereby granted a nonexclusive, royalty-free license to use this code - * in individual and commercial software. - * - * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE - * CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR - * IMPLIED WARRANTY OF ANY KIND. NVIDIA DISCLAIMS ALL WARRANTIES WITH - * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. - * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL, - * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS - * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE - * OR PERFORMANCE OF THIS SOURCE CODE. - * - * U.S. Government End Users. This source code is a "commercial item" as - * that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting of - * "commercial computer software" and "commercial computer software - * documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) - * and is provided to the U.S. Government only as a commercial end item. - * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through - * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the - * source code with only those rights set forth herein. - * - * Any use of this source code in individual and commercial software must - * include, in the user documentation and internal comments to the code, - * the above Disclaimer and U.S. Government End Users Notice. - */ - -#ifndef MULTITHREADING_H -#define MULTITHREADING_H - -//Simple portable thread library. - -#include - -typedef pthread_t CUTThread; -typedef void *(*CUT_THREADROUTINE)(void *); - -#define CUT_THREADPROC void -#define CUT_THREADEND - - -#ifdef __cplusplus - extern "C" { -#endif - -//Create thread. -CUTThread cutStartThread(CUT_THREADROUTINE, void *data); - -//Wait for thread to finish. -void cutEndThread(CUTThread thread); - -//Destroy thread. -void cutDestroyThread(CUTThread thread); - -//Wait for multiple threads. -void cutWaitForThreads(const CUTThread *threads, int num); - -#ifdef __cplusplus -} //extern "C" -#endif - -#endif //MULTITHREADING_H diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/nms.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/nms.cpp deleted file mode 100644 index b3fcbbbaa73..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/nms.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////nms.cpp non_maximum suppression of detected box //////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -#include "MODEL_info.h" //File information -#include "common.hpp" - -#include "switch_float.h" - -//Non_maximum suppression function (extended to detect.cc) -FLOAT *nms(FLOAT *boxes,FLOAT overlap,int *num,GPUModel *MO); - -template -static inline void swap(T *a, T *b) -{ - T tmp = *a; - *a = *b; - *b = tmp; -} - -//Quick sort function -static void quickSort(FLOAT *data , int *Order, int first_index , int last_index) -{ - int i = first_index, j = last_index; - FLOAT pivot = *(data + (first_index + last_index) / 2); - - while (1) { - while (data[i] > pivot) i++; - while (data[j] < pivot) j--; - - if (i >= j) - break; - - swap(&data[i], &data[j]); - swap(&Order[i],&Order[j]); - - i++; - j--; - } - - if (first_index < i - 1) - quickSort(data , Order,first_index , i - 1); - - if (last_index > j + 1) - quickSort(data , Order,j + 1 , last_index); -} - -FLOAT *dpm_ttic_gpu_nms(FLOAT *boxes,FLOAT overlap,int *num,GPUModel *MO) -{ - int NUM = *num; - if(NUM<=0) - return nullptr; - - const int *numpart = MO->MI->numpart; - const int GL = (numpart[0]+1)*4+3; - FLOAT *area = (FLOAT*)calloc(NUM,sizeof(FLOAT)); - FLOAT *scores = (FLOAT*)calloc(NUM,sizeof(FLOAT)); - int *sorted_orders = (int *)calloc(NUM,sizeof(int)); - FLOAT *P=boxes; - //calculate area of each boundary-box - - FLOAT *score_t = scores; - int *so_t =sorted_orders; - for(int ii=0;ii0) - { - int A=sorted_orders[cur]; - P=boxes+GL*A; - FLOAT Ay1 = P[0]; - FLOAT Ax1 = P[1]; - FLOAT Ay2 = P[2]; - FLOAT Ax2 = P[3]; - checked[A]=1; - cnum--; - cur++; - pi_num++; - - for(int kk=cur;kk0&&h>0) - { - //FLOAT o = w*h/area[A]; //compute overlap - FLOAT o = w*h/R_AREA; //compute overlap - if(o>overlap) - { - checked[B]=-1; //suppress - cnum--; - } - } - //full over-lap - else if(Ay1P[2]&&Ax2>P[3]) - { - checked[B]=-1; //suppress - cnum--; - } - else if(Ay1>P[0]&&Ax1>P[1]&&Ay2 -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include "for_use_GPU.h" -#include "load_model.hpp" -#include "detect.hpp" -#include "GPU_init.hpp" - -#include "common.hpp" - -struct timeval tv_memcpy_start, tv_memcpy_end; -float time_memcpy; -struct timeval tv_kernel_start, tv_kernel_end; -float time_kernel; - -int device_num; - -void dpm_ttic_gpu_init_cuda(const std::string& cubin_path) -{ - dpm_ttic_gpu_init_cuda_with_cubin(cubin_path.c_str()); -} - -void dpm_ttic_gpu_cleanup_cuda() -{ - dpm_ttic_gpu_clean_cuda(); - //free_model(MO); -} - -DPMTTICGPU::DPMTTICGPU(const char *com_csv, const char *root_csv, const char *part_csv) -{ - constexpr double RATIO = 1; - model_ = dpm_ttic_gpu_load_model(RATIO, com_csv, root_csv, part_csv); -} - -DPMTTICGPU::~DPMTTICGPU() -{ - dpm_ttic_gpu_free_model(model_); -} - -static FLOAT *init_accumulated_score(IplImage *image, size_t& accumulated_size) -{ - size_t num = image->height * image->width; - accumulated_size = num * sizeof(FLOAT); - - FLOAT *scores = (FLOAT *)calloc(num, sizeof(FLOAT)); - for(size_t i = 0; i < num; i++) - scores[i] = -100.0; - - return scores; -} - -DPMTTICResult DPMTTICGPU::detect_objects(IplImage *image, const DPMTTICParam& param) -{ - model_->MI->interval = param.lambda; - model_->MI->sbin = param.num_cells; - - int detected_objects; - FLOAT *ac_score = init_accumulated_score(image, gpu_size_A_SCORE); - RESULT *objects = dpm_ttic_gpu_car_detection(image, model_, param.threshold, - &detected_objects, ac_score, - param.overlap); - free(ac_score); - - DPMTTICResult result; - result.num = objects->num; - for (int i = 0; i < objects->num; ++i) { - result.type.push_back(objects->type[i]); - } - - for (int i = 0; i < objects->num; ++i) { - int base = i * 4; - int *data = &(objects->OR_point[base]); - - result.corner_points.push_back(data[0]); - result.corner_points.push_back(data[1]); - result.corner_points.push_back(data[2] - data[0]); - result.corner_points.push_back(data[3] - data[1]); - result.score.push_back(objects->score[i]); - } - - free(objects->point); - free(objects->type); - free(objects->scale); - free(objects->score); - free(objects->IM); - return result; -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/resize_GPU.cc b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/resize_GPU.cc deleted file mode 100644 index 14fb97fa46b..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/resize_GPU.cc +++ /dev/null @@ -1,539 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////resize.cpp resize image (Input and Output must be double-array) //////////////////////////////////////////// - -#include -#include -#include -#include -#include -#include -#include -#include - -//ORIGINAL header files -#include "common.hpp" - -#include "switch_float.h" -#include "switch_release.h" -#include "drvapi_error_string.h" - -//#define USE_PTHREAD - -/* cuda error handling macro */ -#define MY_CUDA_CHECK(res, text) \ - if ((res) != CUDA_SUCCESS) { \ - printf("%s failed: res = %d\n->%s\n", (text), (res), getCudaDrvErrorString((res))); \ - exit(1); \ - } - -/* structure to pass some data to pthread */ -typedef struct { - int *src_size; - int *dst_size; - CUstream stream; - int level; -} resize_thread_arg; - -/*********************************************************************/ -/* global variable for GPU */ -/*********************************************************************/ -static CUarray org_image_dev; -static CUdeviceptr resized_image_dev; -static CUdeviceptr image_idx_incrementer_dev; -static int *image_idx_incrementer; // Look-Up Table -extern CUdevice *dev; -extern CUmodule *module; -extern CUcontext *ctx; -extern CUfunction *func_resize; -static int sum_size_image; - -/*********************************************************************/ -/* sub function to devide pixel values into row-major array by color */ -/*********************************************************************/ -FLOAT *Ipl_to_FLOAT_forGPU(IplImage *Input) //get intensity data (FLOAT) of input -{ - const int width = Input->width; -#ifdef PRINT_INFO - printf("%d\n",width); -#endif - const int height = Input->height; -#ifdef PRINT_INFO - printf("%d\n",height); -#endif - const int nChannels = Input->nChannels; -#ifdef PRINT_INFO - printf("%d\n",nChannels); -#endif - const int SQ = height*width; - const int WS = Input->widthStep; - - FLOAT *Output = (FLOAT *)malloc(sizeof(FLOAT)*height*width*nChannels); -#ifdef PRINT_INFO - printf("%d",height*width*nChannels); -#endif - - FLOAT *R = Output; - FLOAT *G = Output + SQ; - FLOAT *B = Output + 2*SQ; - char *IDATA = Input->imageData; - - //pick intensity of pixel (color) - for(int y=0; ysrc_top; - int *src_size = this_arg->src_size; - // FLOAT *dst_top = this_arg->dst_top; - int *dst_size = this_arg->dst_size; - int level = this_arg->level; - CUstream stream = this_arg->stream; - - const int src_height = src_size[0]; - const int src_width = src_size[1]; - const int dst_height = dst_size[0]; - const int dst_width = dst_size[1]; - const int nChannels = dst_size[2]; - - const FLOAT hfactor = (FLOAT)src_height/dst_height; - const FLOAT wfactor = (FLOAT)src_width/dst_width; - - CUresult res; - - /* attach CUDA Context 0 on this pthread */ - res = cuCtxSetCurrent(ctx[0]); - MY_CUDA_CHECK(res, "cuCtxSetCurrent(ctx[0]"); - - - /* CUDA kernel argument */ - void *kernel_arg[] = { - (void *)&src_height, - (void *)&src_width, - &resized_image_dev, - (void *)&dst_height, - (void *)&dst_width, - (void *)&hfactor, - (void *)&wfactor, - (void *)&level - }; - - /* define CUDA kernel shape */ - int max_thread_num = 0; - res = cuDeviceGetAttribute(&max_thread_num, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev[0]); - MY_CUDA_CHECK(res, "cuDeviceGetAttribute()"); - - int thread_num_x = (dst_width < sqrt(max_thread_num)) ? dst_width : sqrt(max_thread_num); - int thread_num_y = (dst_height < sqrt(max_thread_num)) ? dst_height : sqrt(max_thread_num); - - int block_num_x = dst_width / thread_num_x; - int block_num_y = dst_height / thread_num_y; - int block_num_z = nChannels; - if (dst_width % thread_num_x != 0) block_num_x++; - if (dst_height % thread_num_y != 0) block_num_y++; - - int sharedMemBytes = 0; - - /* execute GPU function */ - res = cuLaunchKernel( - func_resize[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - block_num_z, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - stream, // hStream - kernel_arg, // kernel Parameter - NULL // extra - ); - MY_CUDA_CHECK(res, "cuLaunchKernel(resize)"); - - // res = cuStreamSynchronize(stream); - // MY_CUDA_CHECK(res, "cuStreamSynchronize(stream)"); - - return (void *)NULL; -} /* bilinear_resizing() */ - -/* main function (resize) */ -void resize_byGPU(FLOAT *org_image, - int *org_image_size, - // FLOAT **resized_image, - int *resized_image_size, - int interval, - int LEN, - CUstream *stream_array) -{ - /* pthread handler */ - /* to calculate all resized image, the required number of threads is (LEN - interval) */ - pthread_t *thread = (pthread_t *)calloc(LEN - interval, sizeof(pthread_t)); - - /* structure to carry data to pthread function */ - resize_thread_arg *args = (resize_thread_arg *)calloc(LEN - interval, sizeof(resize_thread_arg)); - int thread_count = 0; - - - /* upload original image data to GPU */ - upload_org_image_toGPU(org_image, org_image_size); - - /* create Look-Up Table to adjust pointer in GPU */ - make_image_idx_incrementer(resized_image_size, LEN); - - CUresult res; - - /* allocate GPU memory resion for resized image */ - res = cuMemAlloc(&resized_image_dev, sum_size_image*sizeof(FLOAT)); - MY_CUDA_CHECK(res, "cuMemAlloc(resized_image)"); - -#ifdef USE_FLOAT_AS_DECIMAL - res = cuMemsetD32(resized_image_dev, 0, sum_size_image); - MY_CUDA_CHECK(res, "cuMemsetD32(resized_image_dev)"); -#else - res = cuMemsetD32(resized_image_dev, 0, sum_size_image*2); - MY_CUDA_CHECK(res, "cuMemsetD32(resized_image_dev)"); -#endif - -#ifdef DEBUG - printf("\n/*************************************************************************/\n"); - printf("!!!!!!!!!!!!!!!!!!!!!!!!!!Debug MODE is ON !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - printf(" -> pthread is not created\n"); - printf("/*************************************************************************/\n"); -#endif - - /* resizing */ - for (int level=0; level -#include -#include -#include -#include -#include -#include -#include - -//ORIGINAL header files -#include "common.hpp" - -#include "switch_float.h" -#include "switch_release.h" -#include "drvapi_error_string.h" - -//#define USE_PTHREAD - -/* cuda error handling macro */ -#define MY_CUDA_CHECK(res, text) \ - if ((res) != CUDA_SUCCESS) { \ - printf("%s failed: res = %d\n->%s\n", (text), (res), getCudaDrvErrorString((res))); \ - exit(1); \ - } - -/* structure to pass some data to pthread */ -typedef struct { - int *src_size; - int *dst_size; - CUstream stream; - int level; -} resize_thread_arg; - -/*********************************************************************/ -/* global variable for GPU */ -/*********************************************************************/ -static CUarray org_image_dev; -static CUdeviceptr resized_image_dev; -static CUdeviceptr image_idx_incrementer_dev; -static int *image_idx_incrementer; // Look-Up Table -extern CUdevice *dev; -extern CUmodule *module; -extern CUcontext *ctx; -extern CUfunction *func_resize; -static int sum_size_image; - -/*********************************************************************/ -/* sub function to devide pixel values into row-major array by color */ -/*********************************************************************/ -FLOAT *dpm_ttic_gpu_Ipl_to_FLOAT_forGPU(IplImage *Input) //get intensity data (FLOAT) of input -{ - const int width = Input->width; -#ifdef PRINT_INFO - printf("%d\n",width); -#endif - const int height = Input->height; -#ifdef PRINT_INFO - printf("%d\n",height); -#endif - const int nChannels = Input->nChannels; -#ifdef PRINT_INFO - printf("%d\n",nChannels); -#endif - const int SQ = height*width; - const int WS = Input->widthStep; - - FLOAT *Output = (FLOAT *)malloc(sizeof(FLOAT)*height*width*nChannels); -#ifdef PRINT_INFO - printf("%d",height*width*nChannels); -#endif - - FLOAT *R = Output; - FLOAT *G = Output + SQ; - FLOAT *B = Output + 2*SQ; - char *IDATA = Input->imageData; - - //pick intensity of pixel (color) - for(int y=0; ysrc_top; - int *src_size = this_arg->src_size; - // FLOAT *dst_top = this_arg->dst_top; - int *dst_size = this_arg->dst_size; - int level = this_arg->level; - CUstream stream = this_arg->stream; - - const int src_height = src_size[0]; - const int src_width = src_size[1]; - const int dst_height = dst_size[0]; - const int dst_width = dst_size[1]; - const int nChannels = dst_size[2]; - - const FLOAT hfactor = (FLOAT)src_height/dst_height; - const FLOAT wfactor = (FLOAT)src_width/dst_width; - - CUresult res; - - /* attach CUDA Context 0 on this pthread */ - res = cuCtxSetCurrent(ctx[0]); - MY_CUDA_CHECK(res, "cuCtxSetCurrent(ctx[0]"); - - - /* CUDA kernel argument */ - void *kernel_arg[] = { - (void *)&src_height, - (void *)&src_width, - &resized_image_dev, - (void *)&dst_height, - (void *)&dst_width, - (void *)&hfactor, - (void *)&wfactor, - (void *)&level - }; - - /* define CUDA kernel shape */ - int max_thread_num = 0; - res = cuDeviceGetAttribute(&max_thread_num, CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK, dev[0]); - MY_CUDA_CHECK(res, "cuDeviceGetAttribute()"); - - int thread_num_x = (dst_width < sqrt(max_thread_num)) ? dst_width : sqrt(max_thread_num); - int thread_num_y = (dst_height < sqrt(max_thread_num)) ? dst_height : sqrt(max_thread_num); - - int block_num_x = dst_width / thread_num_x; - int block_num_y = dst_height / thread_num_y; - int block_num_z = nChannels; - if (dst_width % thread_num_x != 0) block_num_x++; - if (dst_height % thread_num_y != 0) block_num_y++; - - int sharedMemBytes = 0; - - /* execute GPU function */ - res = cuLaunchKernel( - func_resize[0], // call function - block_num_x, // gridDimX - block_num_y, // gridDimY - block_num_z, // gridDimZ - thread_num_x, // blockDimX - thread_num_y, // blockDimY - 1, // blockDimZ - sharedMemBytes, // sharedMemBytes - stream, // hStream - kernel_arg, // kernel Parameter - NULL // extra - ); - MY_CUDA_CHECK(res, "cuLaunchKernel(resize)"); - - // res = cuStreamSynchronize(stream); - // MY_CUDA_CHECK(res, "cuStreamSynchronize(stream)"); - - return (void *)NULL; -} /* bilinear_resizing() */ - -/* main function (resize) */ -void dpm_ttic_gpu_resize_byGPU(FLOAT *org_image, - int *org_image_size, - int *resized_image_size, - int interval, - int LEN, - CUstream *stream_array) -{ - /* pthread handler */ - /* to calculate all resized image, the required number of threads is (LEN - interval) */ - pthread_t *thread = (pthread_t *)calloc(LEN - interval, sizeof(pthread_t)); - - /* structure to carry data to pthread function */ - resize_thread_arg *args = (resize_thread_arg *)calloc(LEN - interval, sizeof(resize_thread_arg)); - int thread_count = 0; - - - /* upload original image data to GPU */ - upload_org_image_toGPU(org_image, org_image_size); - - /* create Look-Up Table to adjust pointer in GPU */ - make_image_idx_incrementer(resized_image_size, LEN); - - CUresult res; - - /* allocate GPU memory resion for resized image */ - res = cuMemAlloc(&resized_image_dev, sum_size_image*sizeof(FLOAT)); - MY_CUDA_CHECK(res, "cuMemAlloc(resized_image)"); - -#ifdef USE_FLOAT_AS_DECIMAL - res = cuMemsetD32(resized_image_dev, 0, sum_size_image); - MY_CUDA_CHECK(res, "cuMemsetD32(resized_image_dev)"); -#else - res = cuMemsetD32(resized_image_dev, 0, sum_size_image*2); - MY_CUDA_CHECK(res, "cuMemsetD32(resized_image_dev)"); -#endif - -#ifdef DEBUG - printf("\n/*************************************************************************/\n"); - printf("!!!!!!!!!!!!!!!!!!!!!!!!!!Debug MODE is ON !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); - printf(" -> pthread is not created\n"); - printf("/*************************************************************************/\n"); -#endif - - /* resizing */ - for (int level=0; level -#include -#include -#include "switch_float.h" - -extern FLOAT *dpm_ttic_gpu_Ipl_to_FLOAT_forGPU(IplImage *Input); -extern void dpm_ttic_gpu_resize_byGPU(FLOAT *org_image, int *org_image_size, int *resized_image_size, - int interval, int LEN, CUstream *stream_array); -extern void *dpm_ttic_gpu_calc_resized_image_size(int *org_image_size, int *resized_image_size, int interval, - FLOAT sc, int max_scale, FLOAT *scale_array); - -extern void dpm_ttic_gpu_create_resized_image_texref(void); -extern void dpm_ttic_gpu_cleanup_about_resize(void); - -#endif /* _RESIZE_GPU_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_float.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_float.h deleted file mode 100644 index ee760ad6bce..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_float.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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. - */ - -/* typedef to switch float and double */ -#define USE_FLOAT_AS_DECIMAL - -#ifdef USE_FLOAT_AS_DECIMAL -typedef float FLOAT; -#ifdef FROM_GPU -#define sqrt sqrtf -#endif -#else -typedef double FLOAT; -#endif - -#ifndef TVSUB -#define TVSUB - -/* for measurement */ -#include -/* tvsub: ret = x - y. */ -static inline void tvsub -( - struct timeval *x, - struct timeval *y, - struct timeval *ret - ) -{ - ret->tv_sec = x->tv_sec - y->tv_sec; - ret->tv_usec = x->tv_usec - y->tv_usec; - if (ret->tv_usec < 0) { - ret->tv_sec--; - ret->tv_usec += 1000000; - } -} -/* for measurement */ -#endif - -extern struct timeval tv_memcpy_start, tv_memcpy_end; -extern float time_memcpy; -extern struct timeval tv_kernel_start, tv_kernel_end; -extern float time_kernel; diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_release.h b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_release.h deleted file mode 100644 index f790c142df0..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/switch_release.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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. - */ - -#ifndef _RELEASE_H -#define _RELEASE_H - -#define RELEASE - -#endif /* ifdef RELEASE_H */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.cpp deleted file mode 100644 index 4023a90b0bd..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/////////////////////////Car tracking project with laser_radar_data_fusion///////////////////////////////////////// -//////////////////////////////////////////////////////////////////////Copyright 2009-10 Akihiro Takeuchi/////////// - -/////tracking.cpp calculate_time-variation information ////////////////////////////////////////////////////////// - -#include -#include -#include -#include - -#include -#include -#include - -//Header files -#include "MODEL_info.h" //Model-structure definition -#include "switch_float.h" -#include "switch_release.h" -#include "tracking.hpp" - -//create new_result data -static RESULT *create_result(int num) -{ - RESULT *result = (RESULT *)malloc(sizeof(RESULT)); - result->num = num; - if(num==0) { - result->point = nullptr; - result->type = nullptr; - result->score = nullptr; - result->scale = nullptr; - result->IM = nullptr; - result->OR_point = nullptr; - } else { - result->point = (int *)calloc(num*4,sizeof(int)); - result->OR_point = (int *)calloc(num*4,sizeof(int)); - result->type = (int *)calloc(num,sizeof(int)); - result->score = (FLOAT *)calloc(num,sizeof(FLOAT)); - result->scale = (FLOAT *)calloc(num,sizeof(FLOAT)); - result->IM = (IplImage **)malloc(sizeof(IplImage *)*num); - } - return(result); -} - -//get new_rectangle information -RESULT *dpm_ttic_gpu_get_new_rects(IplImage *Image,GPUModel *MO,FLOAT *boxes,int *NUM) -{ - const int *numpart = MO->MI->numpart; - const int GL = (numpart[0]+1)*4+3; - const FLOAT ratio = MO->MI->ratio; - - int LL = GL-3; - FLOAT **x1 = MO->MI->x1; - FLOAT **x2 = MO->MI->x2; - FLOAT **y1 = MO->MI->y1; - FLOAT **y2 = MO->MI->y2; - int ML = 1+2*(1+numpart[0]); - - RESULT *CUR =create_result(*NUM); - - //no_rectangle was detected - if(*NUM==0) return(CUR); - - FLOAT *Avec = (FLOAT *)calloc(ML,sizeof(FLOAT)); - for(int ii=0;ii<*NUM;ii++) - { - FLOAT *P = boxes+GL*ii; - FLOAT *Avec_T = Avec; - int CNUM = (int)(*(P+GL-3)); - int PP[4]; - - *(Avec_T++)=P[3]-P[1]; - - for(int kk=0;kk0) {PP[0]=(int)XP1;} - else {PP[0]=0;} - if(YP1>0) {PP[1]=(int)YP1;} - else {PP[1]=0;} - if(XP2width){PP[2]=(int)XP2;} - else {PP[2]=Image->width;} - if(YP2height) {PP[3]=(int)YP2;} - else {PP[3]=Image->height;} - //memcpy_s(CUR->point+ii*4,4*sizeof(int),PP,4*sizeof(int)); - memcpy(CUR->point+ii*4, PP,4*sizeof(int)); - CUR->scale[ii]=*(P+GL-1); CUR->score[ii]=*(P+GL-2); CUR->type[ii] = CNUM; - - //calculate image coodinate for ORIGINAL-scale-image[640x480] - int *OPP = CUR->OR_point+ii*4; - OPP[0] = (int)((FLOAT)PP[0]/ratio); - OPP[1] = (int)((FLOAT)PP[1]/ratio); - OPP[2] = (int)((FLOAT)PP[2]/ratio); - OPP[3] = (int)((FLOAT)PP[3]/ratio); - -#ifdef PRINT_INFO - printf("scale:%f score:%f type:%d\n",CUR->scale[ii],CUR->score[ii],CUR->type[ii]); -#endif - } - - free(Avec); - return(CUR); -} diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.hpp deleted file mode 100644 index ca55d4cd002..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/gpu/tracking.hpp +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _TRACKING_H_ -#define _TRACKING_H_ - -#include -#include "detect.hpp" -#include "switch_float.h" - -//get object_rectangles -extern RESULT *dpm_ttic_gpu_get_new_rects(IplImage *Image,GPUModel *MO,FLOAT *boxes,int *NUM); - -#endif /* _TRACKING_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/include/libdpm_ttic/dpm_ttic.hpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/include/libdpm_ttic/dpm_ttic.hpp deleted file mode 100644 index e7a5018b4ed..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/include/libdpm_ttic/dpm_ttic.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef _DPM_TTIC_H_ -#define _DPM_TTIC_H_ - -#include -#include -#include - -extern void dpm_ttic_gpu_init_cuda(const std::string& cubin_path); -extern void dpm_ttic_gpu_cleanup_cuda(); - -struct DPMTTICResult { - int num; - std::vector corner_points; - std::vector type; - std::vector score; -}; - -struct DPMTTICParam { - double threshold; - double overlap; - double lambda; - double num_cells; - - DPMTTICParam() = default; -}; - -struct MODEL; -class DPMTTIC { -private: - MODEL *model_; - -public: - DPMTTIC(const char *com_csv, const char *root_csv, const char *part_csv); - ~DPMTTIC(); - - DPMTTICResult detect_objects(IplImage *image, const DPMTTICParam& param); -}; - -struct GPUModel; -class DPMTTICGPU { -private: - GPUModel *model_; - double RATIO; - -public: - DPMTTICGPU(const char *com_csv, const char *root_csv, const char *part_csv); - ~DPMTTICGPU(); - - DPMTTICResult detect_objects(IplImage *image, const DPMTTICParam& param); -}; - -#endif /* _DPM_TTIC_H_ */ diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/package.xml b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/package.xml deleted file mode 100644 index 0781e0d81ab..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/package.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - libdpm_ttic - 1.11.0 - The dpm_ttic package - Syohei YOSHIDA - Apache 2 - catkin - autoware_build_flags - - sensor_msgs - std_msgs - cv_bridge - libopencv-dev - - sensor_msgs - std_msgs - cv_bridge - libopencv-dev - - - - diff --git a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/util/capability_version_checker.cpp b/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/util/capability_version_checker.cpp deleted file mode 100644 index bd74bae02f1..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/libs/dpm_ttic/util/capability_version_checker.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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 - -static void getDrvErrorCode(int error_id, std::string* str); - -int main(void) -{ - int deviceCount; - CUresult error_id = cuInit(0); - - error_id = cuDeviceGetCount(&deviceCount); - - if (error_id != CUDA_SUCCESS) { -#if CUDA_VERSION < 6000 // if CUDA version is under 6.0 - std::string error_string; - getDrvErrorCode(error_id, &error_string); -#else - const char *error_string; - cuGetErrorString(error_id, &error_string); -#endif - std::cerr << "Failed: cuDeviceGetCount()" - << " = " - << static_cast(error_id) - << " -> " - << error_string - << std::endl; - return -1; - } - - if (deviceCount == 0) { - std::cerr << "No CUDA GPU" << std::endl; - return -1; - } - - std::vector capability_versions; - for (int device = 0; device < deviceCount; ++device) { - CUdevice devHandle; - - cuDeviceGet(&devHandle, device); - - int major = 0, minor = 0; - cuDeviceComputeCapability(&major, &minor, devHandle); - - int capability_version = (10 * major) + minor; - capability_versions.push_back(capability_version); - } - - int min_version = *std::min_element(capability_versions.begin(), - capability_versions.end()); - - std::cout << min_version << std::endl; - return 0; -} - -static void getDrvErrorCode(int error_id, std::string* str) -{ - switch (error_id) - { - case 0 : - *str = "CUDA_SUCCESS"; - break; - case 1 : - *str = "CUDA_ERROR_INVALID_VALUE"; - break; - case 2 : - *str = "CUDA_ERROR_OUT_OF_MEMORY"; - break; - case 3 : - *str = "CUDA_ERROR_NOT_INITIALIZED"; - break; - case 4 : - *str = "CUDA_ERROR_DEINITIALIZED"; - break; - case 5 : - *str = "CUDA_ERROR_PROFILER_DISABLED"; - break; - case 6 : - *str = "CUDA_ERROR_PROFILER_NOT_INITIALIZED"; - break; - case 7 : - *str = "CUDA_ERROR_PROFILER_ALREADY_STARTED"; - break; - case 8 : - *str = "CUDA_ERROR_PROFILER_ALREADY_STOPPED"; - break; - case 100 : - *str = "CUDA_ERROR_NO_DEVICE (no CUDA-capable devices were detected)"; - break; - case 101 : - *str = "CUDA_ERROR_INVALID_DEVICE (device specified is not a valid CUDA device)"; - break; - case 200 : - *str = "CUDA_ERROR_INVALID_IMAGE"; - break; - case 201 : - *str = "CUDA_ERROR_INVALID_CONTEXT"; - break; - case 202 : - *str = "CUDA_ERROR_CONTEXT_ALREADY_CURRENT"; - break; - case 205 : - *str = "CUDA_ERROR_MAP_FAILED"; - break; - case 206 : - *str = "CUDA_ERROR_UNMAP_FAILED"; - break; - case 207 : - *str = "CUDA_ERROR_ARRAY_IS_MAPPED"; - break; - case 208 : - *str = "CUDA_ERROR_ALREADY_MAPPED"; - break; - case 209 : - *str = "CUDA_ERROR_NO_BINARY_FOR_GPU"; - break; - case 210 : - *str = "CUDA_ERROR_ALREADY_ACQUIRED"; - break; - case 211 : - *str = "CUDA_ERROR_NOT_MAPPED"; - break; - case 212 : - *str = "CUDA_ERROR_NOT_MAPPED_AS_ARRAY"; - break; - case 213 : - *str = "CUDA_ERROR_NOT_MAPPED_AS_POINTER"; - break; - case 214 : - *str = "CUDA_ERROR_ECC_UNCORRECTABLE"; - break; - case 215 : - *str = "CUDA_ERROR_UNSUPPORTED_LIMIT"; - break; - case 216 : - *str = "CUDA_ERROR_CONTEXT_ALREADY_IN_USE"; - break; - case 300 : - *str = "CUDA_ERROR_INVALID_SOURCE"; - break; - case 301 : - *str = "CUDA_ERROR_FILE_NOT_FOUND"; - break; - case 302 : - *str = "CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND"; - break; - case 303 : - *str = "CUDA_ERROR_SHARED_OBJECT_INIT_FAILED"; - break; - case 304 : - *str = "CUDA_ERROR_OPERATING_SYSTEM"; - break; - case 400 : - *str = "CUDA_ERROR_INVALID_HANDLE"; - break; - case 500 : - *str = "CUDA_ERROR_NOT_FOUND"; - break; - case 600 : - *str = "CUDA_ERROR_NOT_READY"; - break; - case 700 : - *str = "CUDA_ERROR_LAUNCH_FAILED"; - break; - case 701 : - *str = "CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES"; - break; - case 702 : - *str = "CUDA_ERROR_LAUNCH_TIMEOUT"; - break; - case 703 : - *str = "CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING"; - break; - case 704 : - *str = "CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED"; - break; - case 705 : - *str = "CUDA_ERROR_PEER_ACCESS_NOT_ENABLED"; - break; - case 708 : - *str = "CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE"; - break; - case 709 : - *str = "CUDA_ERROR_CONTEXT_IS_DESTROYED"; - break; - case 710 : - *str = "CUDA_ERROR_ASSERT"; - break; - case 999 : - *str = "CUDA_ERROR_UNKNOWN"; - break; - default : - *str = "Not defined CUDA error in this program"; - break; - } -} diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_darknet_detect/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/packages/vision_darknet_detect/CMakeLists.txt index d764645fb94..3f0e9aded12 100644 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_darknet_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/vision_detector/packages/vision_darknet_detect/CMakeLists.txt @@ -33,7 +33,9 @@ catkin_package(CATKIN_DEPENDS set(CMAKE_CXX_FLAGS "-O3 -g -Wall ${CMAKE_CXX_FLAGS}") -IF (CUDA_FOUND) +AW_CHECK_CUDA() + +if (USE_CUDA) list(APPEND CUDA_NVCC_FLAGS "--std=c++11 -I$${PROJECT_SOURCE_DIR}/darknet/src -I${PROJECT_SOURCE_DIR}/src -DGPU") SET(CUDA_PROPAGATE_HOST_FLAGS OFF) diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CHANGELOG.rst b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CHANGELOG.rst deleted file mode 100644 index 8d5cedfc3df..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CHANGELOG.rst +++ /dev/null @@ -1,264 +0,0 @@ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Changelog for package vision_dpm_ttic_detect -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -1.11.0 (2019-03-21) -------------------- -* Fix/colcon build (`#2000 `_) - * Added lcuda link -* [fix] Install commands for all the packages (`#1861 `_) - * Initial fixes to detection, sensing, semantics and utils - * fixing wrong filename on install command - * Fixes to install commands - * Hokuyo fix name - * Fix obj db - * Obj db include fixes - * End of final cleaning sweep - * Incorrect command order in runtime manager - * Param tempfile not required by runtime_manager - * * Fixes to runtime manager install commands - * Remove devel directory from catkin, if any - * Updated launch files for robosense - * Updated robosense - * Fix/add missing install (`#1977 `_) - * Added launch install to lidar_kf_contour_track - * Added install to op_global_planner - * Added install to way_planner - * Added install to op_local_planner - * Added install to op_simulation_package - * Added install to op_utilities - * Added install to sync - * * Improved installation script for pointgrey packages - * Fixed nodelet error for gmsl cameras - * USe install space in catkin as well - * add install to catkin - * Fix install directives (`#1990 `_) - * Fixed installation path - * Fixed params installation path - * Fixed cfg installation path - * Delete cache on colcon_release -* Fix license notice in corresponding package.xml -* Contributors: Abraham Monrroy Cano, Servando, amc-nu - -1.10.0 (2019-01-17) -------------------- -* Fixes for catkin_make -* Switch to Apache 2 license (develop branch) (`#1741 `_) - * Switch to Apache 2 - * Replace BSD-3 license header with Apache 2 and reassign copyright to the - Autoware Foundation. - * Update license on Python files - * Update copyright years - * Add #ifndef/define _POINTS_IMAGE_H\_ - * Updated license comment -* Use colcon as the build tool (`#1704 `_) - * Switch to colcon as the build tool instead of catkin - * Added cmake-target - * Added note about the second colcon call - * Added warning about catkin* scripts being deprecated - * Fix COLCON_OPTS - * Added install targets - * Update Docker image tags - * Message packages fixes - * Fix missing dependency -* Fix Dpm/DPM naming convention -* Contributors: Esteve Fernandez, amc-nu - -1.9.1 (2018-11-06) ------------------- - -1.9.0 (2018-10-31) ------------------- -* Moved configuration messages to autoware_config_msgs -* [fix] PascalCase messages (`#1408 `_) - * Switch message files to pascal case - * Switch message names to pascal case in Runtime Manager - * Switch message names to pascal case in *.yaml - * Rename brake_cmd and steer_cmd to BrakeCmd and SteerCmd in main.yaml -* Contributors: Esteve Fernandez - -1.8.0 (2018-08-31) ------------------- -* [Fix] Moved C++11 flag to autoware_build_flags (`#1395 `_) -* [Feature] Makes sure that all binaries have their dependencies linked (`#1385 `_) -* [Feature] Cross compile Autoware for aarch64 (`#1375 `_) -* Contributors: Esteve Fernandez - -1.7.0 (2018-05-16) ------------------- -* update Version from 1.6.3 to 1.7.0 in package.xml and CHANGELOG.rst -* Modify package xml version other than 1.6.3 -* Remove history of sub-branches -* Add automatically-generated CHANGELOG.rst -* [Fix] rename packages (`#1269 `_) - * rename lidar_tracker - * Modify pf_lidar_track's cmake file - * Refactor code - * Rename from euclidean_lidar_tracker to lidar_euclidean_track - * Rename from kf_contour_track to lidar_kf_contour_track - * Rename from kf_lidar_track to lidar_kf_track, but need some modification in euclidean cluster(Cluster.h) - * Rename from pf_lidar_tarck to lidar_pf_track - * Rename range_fusion - * Rename obj_reproj - * Rename euclidean_cluster to lidar_euclidean_cluster_detect - * Rename svm_lidar_detect to lidar_svm_detect - * Rename kf_lidar_track to lidar_kf_track - * Change version 1.6.3 to 1.7.0 in pacakge.xml - * Modify CMake so that extrenal header would be loaded - * Remove obj_reproj from cv_tracker - * Add interface.yaml - * Rename road_wizard to trafficlight_recognizer - * create common directory - * Add lidar_imm_ukf_pda_track - * create vision_detector and moved cv - * Modify interface.yaml and package.xml - * remove dpm_ocv - * moved directory - * Delete unnecessary launch file - * Delete rcnn related file and code - * separated dummy_track from cv_tracker - * separated klt_track from cv_tracker - * Fix a cmake - * Remove unnecessary dependency of lidar_euclidean_cluster_detect package - * Rename image_segmenter to vision_segment_enet_detect - * Remove unnecessary dependency of lidar_svm_detect package - * separated kf_track and fix a some compiling issue - * move viewers - * merge ndt_localizer and icp_localizer, and rename to lidar_localizer - * Remove unnecessary dependency of lidar_euclidean_track - * moved image lib - * add launch - * lib move under lidar_tracker - * Rename dpm_ttic to vision_dpm_ttic_detect - * rename yolo3detector to vision_yolo3_detect - * Modify cmake and package.xml in vision_dpm_ttic_detect - * moved sourcefiles into nodes dir - * moved sourcefiles into nodes dir - * Move cv_tracker/data folder and delete cv_tracker/model folder - * fix a package file and cmake - * Rename yolo2 -> vision_yolo2_detect - * fix a package file and cmake - * Fix package name of launch file - * Rename ssd to vision_ssd_detect - * fixed cmake and package for decerese dependencies - * remove top packages dir for detection - * fixed cmake for cuda - * Rename lane_detector to vision_lane_detect - * Modify package.xml in lidar-related packages - * Remove unnecessary dependencies in lidar_detector and lidar_tracker - * Modify computing.yaml for dpm_ttic - * Modify dpm_ttic launch file - * Remove/Add dependencies to trafficlight_recognizer - * Update data folder in dpm_ttic - * Modified CMake and package file in dpm_ttic. - * Remove src dir in imm_ukf_pda_track - * removed unnecessary comments - * rename lidar_tracker - * Modify pf_lidar_track's cmake file - * Refactor code - * Rename from euclidean_lidar_tracker to lidar_euclidean_track - * Rename from kf_contour_track to lidar_kf_contour_track - * Rename from kf_lidar_track to lidar_kf_track, but need some modification in euclidean cluster(Cluster.h) - * Rename from pf_lidar_tarck to lidar_pf_track - * Rename range_fusion - * Rename obj_reproj - * Rename road_wizard to trafficlight_recognizer - * Rename euclidean_cluster to lidar_euclidean_cluster_detect - * Rename svm_lidar_detect to lidar_svm_detect - * Rename kf_lidar_track to lidar_kf_track - * Change version 1.6.3 to 1.7.0 in pacakge.xml - * Modify CMake so that extrenal header would be loaded - * Remove obj_reproj from cv_tracker - * Add interface.yaml - * create common directory - * Add lidar_imm_ukf_pda_track - * create vision_detector and moved cv - * Modify interface.yaml and package.xml - * remove dpm_ocv - * moved directory - * Delete unnecessary launch file - * Delete rcnn related file and code - * separated dummy_track from cv_tracker - * separated klt_track from cv_tracker - * Fix a cmake - * Remove unnecessary dependency of lidar_euclidean_cluster_detect package - * Rename image_segmenter to vision_segment_enet_detect - * Remove unnecessary dependency of lidar_svm_detect package - * separated kf_track and fix a some compiling issue - * move viewers - * merge ndt_localizer and icp_localizer, and rename to lidar_localizer - * Remove unnecessary dependency of lidar_euclidean_track - * moved image lib - * add launch - * lib move under lidar_tracker - * Rename dpm_ttic to vision_dpm_ttic_detect - * rename yolo3detector to vision_yolo3_detect - * Modify cmake and package.xml in vision_dpm_ttic_detect - * moved sourcefiles into nodes dir - * moved sourcefiles into nodes dir - * Move cv_tracker/data folder and delete cv_tracker/model folder - * fix a package file and cmake - * Rename yolo2 -> vision_yolo2_detect - * fix a package file and cmake - * Fix package name of launch file - * Rename ssd to vision_ssd_detect - * fixed cmake and package for decerese dependencies - * remove top packages dir for detection - * fixed cmake for cuda - * Rename lane_detector to vision_lane_detect - * Modify package.xml in lidar-related packages - * Remove unnecessary dependencies in lidar_detector and lidar_tracker - * Modify computing.yaml for dpm_ttic - * Modify dpm_ttic launch file - * Remove/Add dependencies to trafficlight_recognizer - * Update data folder in dpm_ttic - * Modified CMake and package file in dpm_ttic. - * Remove src dir in imm_ukf_pda_track - * Fix bug for not starting run time manager - * Remove invalid dependency -* Contributors: Kenji Funaoka, Kosuke Murakami - -1.6.3 (2018-03-06) ------------------- - -1.6.2 (2018-02-27) ------------------- - -1.6.1 (2018-01-20) ------------------- - -1.6.0 (2017-12-11) ------------------- - -1.5.1 (2017-09-25) ------------------- - -1.5.0 (2017-09-21) ------------------- - -1.4.0 (2017-08-04) ------------------- - -1.3.1 (2017-07-16) ------------------- - -1.3.0 (2017-07-14) ------------------- - -1.2.0 (2017-06-07) ------------------- - -1.1.2 (2017-02-27 23:10) ------------------------- - -1.1.1 (2017-02-27 22:25) ------------------------- - -1.1.0 (2017-02-24) ------------------- - -1.0.1 (2017-01-14) ------------------- - -1.0.0 (2016-12-22) ------------------- diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CMakeLists.txt deleted file mode 100644 index 06704298aab..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/CMakeLists.txt +++ /dev/null @@ -1,110 +0,0 @@ -cmake_minimum_required(VERSION 2.8.12) -project(vision_dpm_ttic_detect) - -include(FindPkgConfig) - -find_package(autoware_msgs REQUIRED) - -find_package(autoware_config_msgs REQUIRED) - -FIND_PACKAGE(catkin REQUIRED COMPONENTS - cv_bridge - roscpp - sensor_msgs - std_msgs - libdpm_ttic - autoware_config_msgs - autoware_msgs - ) - -FIND_PACKAGE(CUDA) -FIND_PACKAGE(OpenCV REQUIRED) - -catkin_package( - CATKIN_DEPENDS cv_bridge - roscpp - sensor_msgs - std_msgs - autoware_config_msgs - autoware_msgs - libdpm_ttic -) - -########### -## Build ## -########### - -set(CMAKE_CXX_FLAGS "-O2 -g -Wall ${CMAKE_CXX_FLAGS}") - -include_directories( - ${autoware_config_msgs_INCLUDE_DIRS} - ${autoware_msgs_INCLUDE_DIRS} - ${catkin_INCLUDE_DIRS} -) - -IF (CUDA_FOUND) - include_directories(${CUDA_INCLUDE_DIRS}) - - set(CMAKE_CXX_FLAGS "-lcuda ${CMAKE_CXX_FLAGS}") - - IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") - link_directories(/usr/lib/arm-linux-gnueabihf/tegra) - endif () -ENDIF () - -## dpm_ttic ## -#this must be fixed to use cmake cuda commands -IF (CUDA_FOUND) - - cuda_add_executable(vision_dpm_ttic_detect - nodes/vision_dpm_ttic_detect/vision_dpm_ttic_detect.cpp - ) - - target_link_libraries(vision_dpm_ttic_detect - ${catkin_LIBRARIES} - ${OpenCV_LIBRARIES} - ${CUDA_LIBRARIES} - ${CUDA_CUBLAS_LIBRARIES} - ${CUDA_curand_LIBRARY} - ) - - set_target_properties(vision_dpm_ttic_detect - PROPERTIES - COMPILE_FLAGS - "-DHAS_GPU -DDEFAULT_CUBIN=${CATKIN_DEVEL_PREFIX}/lib/GPU_function.cubin -DMODEL_DIR=${CMAKE_CURRENT_SOURCE_DIR}/data/" - ) -ELSE () - - add_executable(vision_dpm_ttic_detect - nodes/vision_dpm_ttic_detect/vision_dpm_ttic_detect.cpp - ) - - target_link_libraries(vision_dpm_ttic_detect - ${catkin_LIBRARIES} - ${OpenCV_LIBRARIES} - ) - - set_target_properties(vision_dpm_ttic_detect - PROPERTIES - COMPILE_FLAGS - "-DMODEL_DIR=${CMAKE_CURRENT_SOURCE_DIR}/data/" - ) -ENDIF () - -add_dependencies(vision_dpm_ttic_detect - ${catkin_EXPORTED_TARGETS} - ) - -install(TARGETS vision_dpm_ttic_detect - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} - ) - -install(DIRECTORY launch/ - DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch - PATTERN ".svn" EXCLUDE) - -install(DIRECTORY data/ - DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/data - PATTERN ".svn" EXCLUDE) diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car.xml b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car.xml deleted file mode 100644 index faed5391bd1..00000000000 Binary files a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car.xml and /dev/null differ diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_2008.xml b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_2008.xml deleted file mode 100644 index 990ccc73649..00000000000 Binary files a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_2008.xml and /dev/null differ diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_comp.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_comp.csv deleted file mode 100755 index 4fef99b1ee8..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_comp.csv +++ /dev/null @@ -1,84 +0,0 @@ - 2.000000, - 8.000000, - 10.000000, - 6.000000, - 13.000000, - 1.000000, - 1.000000, - -4.058444, - 6.000000, 13.000000, - 6.000000, - 1.000000, - 1.000000, - 9.000000, 6.000000, - 2.000000, - 2.000000, - 9.000000, 6.000000, - 3.000000, - 3.000000, - 6.000000, 10.000000, - 4.000000, - 4.000000, - 10.000000, 6.000000, - 5.000000, - 5.000000, - 10.000000, 6.000000, - 6.000000, - 6.000000, - 9.000000, 6.000000, - 2.000000, - 2.000000, - -3.838505, - 6.000000, 7.000000, - 6.000000, - 7.000000, - 7.000000, - 7.000000, 4.000000, - 8.000000, - 8.000000, - 7.000000, 4.000000, - 9.000000, - 9.000000, - 5.000000, 6.000000, - 10.000000, - 10.000000, - 5.000000, 6.000000, - 11.000000, - 11.000000, - 5.000000, 6.000000, - 12.000000, - 12.000000, - 7.000000, 4.000000, - 12.000000, - 0.023062, 0.010890, 0.015328, -0.009441, - 1.000000, 4.000000, - 0.023062, -0.010890, 0.015328, -0.009441, - 21.000000, 4.000000, - 0.033086, 0.002698, 0.030958, -0.011854, - 9.000000, 1.000000, - 0.033932, -0.006337, 0.038538, -0.016055, - 6.000000, 3.000000, - 0.033932, 0.006337, 0.038538, -0.016055, - 16.000000, 3.000000, - 0.010397, -0.000273, 0.060209, 0.012334, - 11.000000, 4.000000, - 0.027598, 0.005517, 0.045694, 0.024711, - 1.000000, 6.000000, - 0.027598, -0.005517, 0.045694, 0.024711, - 11.000000, 6.000000, - 0.026666, -0.008777, 0.049577, 0.002065, - 1.000000, 1.000000, - 0.026666, 0.008777, 0.049577, 0.002065, - 9.000000, 1.000000, - 0.032711, -0.009087, 0.037273, 0.037105, - 5.000000, 8.000000, - 0.031460, 0.008453, 0.067331, -0.044327, - 6.000000, 1.000000, - 0.000184, 0.020990, 0.124980, 0.916395, -0.226700, -0.057885, 0.139687, -0.094058, -0.123620, 0.095495, 0.106787, 0.092787, 0.198446, 0.007683, -0.223291, - 0.020385, 0.021210, 0.036870, -0.011337, 0.051500, -0.001703, 0.065221, -0.000012, 0.644855, 0.032637, 0.186881, -0.043562, 0.188253, -0.005014, -0.184540, - 0.230174, -0.006163, -0.184805, 0.005469, -0.135040, 0.939526, 0.218689, -0.106058, 0.261368, 0.020381, -0.003342, 0.125470, -0.295254, 0.018818, 0.155020, - 0.289363, -0.091638, 0.147300, 0.030863, 0.058894, 0.012416, 0.045285, 0.012776, -0.239673, -0.064565, 0.056892, 0.095299, 0.086089, 0.007975, 0.845669, - -0.068770, 0.075133, -0.231403, 0.299564, 0.101209, 0.230036, 0.129254, 0.454927, 0.191498, -0.113333, -0.188054, 0.068375, -0.180986, -0.017776, 0.154593, - 0.134392, 0.079931, -0.019500, -0.062441, 0.002374, 0.034444, -0.080930, 0.125769, 0.353802, -0.117537, 0.329260, -0.045778, -0.052127, -0.013880, 0.457536, - 0.471854, 0.063257, 0.327995, 0.100453, -0.093434, 0.234729, -0.109809, 0.035454, 0.013061, 0.533378, -0.130463, 0.043189, 0.162592, -0.005036, -0.149119, - 0.426592, -0.040052, 0.126005, -0.096101, 0.323712, 0.157104, 0.205181, -0.111622, 0.123367, 0.041487, -0.042261, 0.040988, 0.117402, 0.010682, 0.151028, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_part.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_part.csv deleted file mode 100755 index c9cac45affe..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_part.csv +++ /dev/null @@ -1,2195 +0,0 @@ - 12.000000, - 9.000000, 6.000000, 31.000000, - -0.024802, 0.027021, 0.034593, 0.031675, 0.007580, 0.011231, -0.031390, -0.016839, 0.008219, - -0.032252, 0.011541, 0.016749, -0.014512, -0.066920, -0.005756, -0.004685, -0.011407, 0.008292, - -0.030633, -0.007738, -0.035908, -0.027683, -0.070338, -0.031604, -0.014465, -0.040356, -0.057109, - -0.024953, -0.006614, -0.023568, -0.028671, -0.034184, 0.023371, -0.013330, -0.007713, -0.022117, - -0.011786, 0.012918, 0.001350, -0.018864, 0.002383, 0.023644, 0.003949, 0.035492, 0.008869, - -0.029445, -0.007075, -0.014422, -0.022159, -0.013800, -0.036730, -0.022714, 0.037150, 0.026794, - 0.001855, 0.029301, 0.053761, 0.001526, -0.004124, -0.019209, -0.026199, -0.030312, -0.014527, - 0.049726, 0.038651, -0.032633, -0.021769, 0.011648, 0.017254, -0.028047, -0.056189, 0.002673, - 0.007198, 0.000111, -0.051223, -0.027670, 0.015679, 0.039012, -0.006797, -0.046236, -0.017318, - 0.029671, 0.006776, -0.009809, -0.029148, -0.010456, 0.053201, 0.020621, -0.028015, 0.003710, - 0.018825, 0.018632, 0.006400, -0.010038, -0.022094, 0.013366, 0.027067, 0.013623, -0.000622, - -0.006132, 0.002327, -0.035401, -0.001333, -0.017020, -0.029685, -0.005777, 0.042058, -0.020840, - -0.020504, 0.012051, 0.031272, 0.039464, -0.005913, -0.032144, -0.019717, -0.051709, -0.019331, - 0.083716, 0.031937, 0.070937, 0.057569, 0.024802, 0.002579, -0.005738, -0.037832, -0.004764, - 0.021758, -0.032816, -0.026709, 0.047371, 0.055290, 0.051941, 0.012349, -0.036650, 0.015686, - -0.006491, -0.044030, -0.002538, 0.016430, 0.031867, 0.054119, 0.026178, -0.015690, 0.029265, - -0.012017, -0.011267, -0.013370, -0.005409, 0.008789, 0.017253, 0.057773, -0.020403, -0.002535, - -0.032119, -0.063489, -0.021072, -0.006686, 0.018168, 0.006414, 0.053127, 0.040211, -0.020401, - -0.031538, 0.033321, 0.014076, 0.031797, -0.019276, -0.017216, -0.040390, -0.028111, -0.003702, - 0.015650, 0.014561, 0.025526, 0.024295, -0.042432, -0.030554, -0.023046, -0.035752, 0.004795, - 0.024974, 0.019063, 0.005180, 0.006673, 0.004833, -0.009826, -0.015052, -0.016937, 0.001160, - 0.021377, -0.027371, 0.013270, 0.002437, 0.012682, -0.010190, -0.010831, -0.005954, -0.002636, - -0.002420, -0.002777, 0.007213, 0.000901, 0.003252, -0.011348, -0.025435, -0.019193, -0.018649, - -0.035719, -0.024134, -0.014953, -0.010269, -0.003444, -0.021721, 0.001166, -0.008817, -0.009478, - 0.009899, 0.033057, 0.002754, 0.032676, -0.019319, -0.003875, 0.022721, -0.019826, 0.012419, - -0.001362, -0.018002, 0.023670, 0.011728, -0.023793, -0.035855, 0.011582, -0.042617, 0.017385, - -0.033272, 0.003975, 0.078132, 0.002986, -0.001634, -0.017280, 0.031127, -0.044219, 0.024785, - -0.008012, -0.011828, 0.028844, 0.011330, 0.045121, -0.000015, -0.032792, -0.015454, 0.013121, - -0.022887, -0.007580, 0.005139, -0.031176, 0.017749, 0.013462, -0.021812, -0.006251, 0.015261, - 0.031084, -0.002007, 0.004115, -0.008371, -0.032092, -0.007287, 0.036031, 0.043681, 0.006410, - -0.002395, -0.051375, 0.006596, 0.044332, -0.034062, 0.023881, 0.019005, -0.000492, -0.025290, - 0.003731, -0.019837, -0.044954, -0.021040, 0.009548, 0.023537, 0.057943, 0.061864, 0.085715, - 0.037551, -0.045322, -0.020230, -0.051028, 0.002103, -0.021009, 0.014669, 0.001809, 0.042470, - 0.003728, -0.037886, -0.040979, -0.039918, 0.043535, -0.006259, -0.035577, 0.010807, 0.032803, - 0.002670, 0.032804, 0.007142, -0.025560, 0.013026, 0.022522, -0.000174, 0.021576, 0.010376, - 0.023072, 0.011086, -0.029239, -0.025200, -0.004903, 0.010631, 0.004884, 0.047843, 0.021409, - -0.007869, 0.030119, 0.002479, -0.024477, -0.011071, -0.019964, 0.015551, 0.008347, 0.027366, - 0.001622, 0.054567, 0.038651, -0.010582, -0.000661, -0.017990, 0.043072, 0.006770, -0.004994, - 0.004341, 0.013825, -0.016548, -0.033509, -0.027318, -0.012926, 0.024582, 0.017762, -0.001556, - 0.003965, 0.006323, -0.008542, -0.019534, -0.001420, -0.012372, -0.016926, -0.002786, -0.002325, - 0.002641, 0.037438, 0.016000, -0.012833, 0.018265, -0.015336, -0.007418, -0.005854, 0.004032, - 0.018534, 0.012546, 0.015423, 0.000770, 0.018258, 0.000784, 0.022808, -0.007356, -0.012694, - -0.000392, -0.017046, -0.005220, 0.026838, 0.006086, 0.044153, 0.006969, 0.002384, -0.000176, - -0.025495, 0.009499, 0.009731, 0.018799, 0.016305, 0.016166, 0.019656, 0.043696, -0.014860, - -0.022974, -0.004382, -0.000256, 0.006436, -0.009247, -0.029720, 0.005829, 0.024215, -0.007425, - -0.036663, -0.013111, -0.017869, -0.020432, 0.001898, 0.017069, 0.017541, -0.000835, 0.002022, - -0.020770, -0.005919, -0.009004, -0.026904, 0.013546, 0.010381, -0.014547, 0.013861, -0.011774, - -0.007497, 0.003327, -0.001307, -0.003802, 0.033592, 0.023038, -0.016998, -0.009231, 0.000486, - -0.041592, -0.027036, 0.006609, 0.006064, 0.053686, 0.039680, 0.043702, 0.020285, 0.013135, - -0.018789, -0.022905, 0.000972, 0.010337, 0.025666, 0.066070, 0.079947, 0.039687, -0.002823, - 0.001741, -0.008521, -0.028644, 0.039889, 0.008262, -0.022981, 0.034794, 0.030223, 0.008912, - -0.024605, -0.018784, -0.006808, 0.014108, -0.003592, -0.005247, -0.041435, -0.007592, 0.000419, - -0.020338, -0.020189, -0.020565, -0.019070, -0.006974, 0.011109, 0.004474, -0.007642, 0.008569, - 0.038713, -0.006465, 0.020359, 0.020278, 0.016445, 0.027480, 0.010222, -0.011222, -0.005615, - -0.006135, -0.008101, 0.032631, 0.039004, 0.049738, 0.026970, -0.024221, 0.019291, -0.009057, - -0.002442, 0.037271, -0.000677, 0.002142, 0.015065, 0.022322, -0.000307, -0.000015, 0.002532, - -0.010709, 0.005866, 0.007544, 0.000431, -0.014537, -0.027068, -0.000386, 0.025330, 0.000141, - -0.028808, -0.021944, -0.024143, -0.000107, -0.045050, 0.010433, 0.016894, 0.016926, -0.028078, - -0.010629, -0.005149, 0.002986, -0.025542, -0.053398, -0.006237, 0.003516, -0.019553, -0.018118, - 0.029930, -0.006665, 0.000757, 0.005934, -0.017502, 0.013935, 0.039783, -0.021399, -0.000161, - -0.011250, -0.035219, 0.019027, 0.002525, -0.007900, -0.015058, -0.001101, 0.003276, -0.008274, - 0.042046, 0.021788, 0.048756, 0.000262, 0.016904, 0.011339, -0.007614, -0.002121, -0.011678, - 0.031097, 0.025361, 0.016201, -0.016210, -0.003333, 0.000807, 0.008935, -0.003788, -0.029446, - -0.020502, -0.001353, -0.020314, 0.002280, -0.019804, -0.006528, 0.030419, -0.022072, -0.039210, - 0.013705, 0.000570, 0.003539, 0.000843, -0.011714, 0.024567, 0.036341, -0.027474, -0.009819, - 0.018103, -0.017681, 0.005585, -0.014457, -0.019285, 0.001883, 0.030872, -0.020349, -0.007861, - -0.027737, -0.052033, -0.032964, 0.012209, -0.000886, 0.023874, 0.021922, 0.025476, -0.010340, - 0.006096, 0.013308, 0.013003, 0.004410, -0.001311, 0.027952, 0.014147, 0.018020, 0.018645, - 0.065602, -0.026473, -0.013874, -0.016380, -0.008091, -0.010474, 0.004325, 0.025062, 0.000101, - 0.028904, -0.018748, -0.007846, -0.012941, 0.006900, -0.004047, 0.013523, 0.021728, -0.014828, - 0.010318, 0.003028, 0.004613, -0.004090, -0.004100, 0.031694, 0.018489, 0.018226, -0.016231, - 0.007005, -0.005518, 0.013275, -0.015888, -0.013353, 0.001467, 0.002509, 0.014264, -0.036061, - -0.027744, -0.044687, -0.017508, -0.010240, -0.010133, -0.013814, 0.012683, 0.013153, 0.012725, - -0.021125, 0.043091, 0.006412, 0.017711, -0.004029, 0.001478, 0.023716, 0.013757, 0.007411, - 0.000345, -0.005350, 0.002198, 0.049123, -0.012123, -0.033058, -0.000785, 0.021660, 0.017724, - 0.025016, -0.003037, -0.026267, -0.018646, -0.032226, -0.033746, 0.004779, 0.003721, -0.009230, - -0.006328, -0.029619, -0.032679, 0.002462, -0.019397, -0.045659, -0.015508, 0.020182, -0.000056, - -0.004154, 0.006494, -0.034784, 0.006689, 0.037605, -0.002995, -0.051955, -0.004698, -0.021079, - 0.028332, -0.007911, 0.018657, 0.005388, -0.033446, 0.006701, 0.002492, 0.030373, 0.018671, - -0.002428, 0.011478, 0.017591, 0.024598, 0.022568, -0.021558, -0.001262, 0.013212, 0.006994, - -0.045494, 0.022519, 0.012312, 0.033567, -0.052200, -0.038669, 0.004977, -0.032046, -0.048442, - -0.001212, 0.067959, 0.011042, 0.004132, -0.022811, -0.016849, 0.026743, -0.025130, -0.024769, - 0.015574, 0.015973, 0.029055, -0.006413, -0.012658, 0.002511, 0.019548, -0.021123, -0.003493, - 0.045095, -0.017251, 0.021031, -0.003573, -0.006651, 0.026922, -0.009262, -0.022902, -0.018753, - 0.002422, -0.003072, 0.034291, -0.026577, 0.046684, 0.039353, -0.011607, 0.003186, -0.020222, - 0.021444, -0.014812, -0.018065, 0.014234, 0.064178, 0.010423, -0.014619, -0.006948, -0.017235, - -0.033636, 0.027046, 0.009154, 0.011341, 0.025664, 0.050781, 0.011615, 0.033965, -0.037086, - -0.018629, 0.011673, 0.019914, 0.059676, 0.047061, 0.043253, 0.000414, -0.007244, -0.052302, - -0.006578, -0.035317, 0.022663, 0.053930, 0.016000, 0.003826, -0.020507, -0.058234, -0.072922, - 0.007472, -0.009930, -0.015898, 0.004033, -0.044371, 0.002648, 0.001313, -0.054612, -0.053682, - 0.010223, -0.002714, 0.018095, -0.008159, 0.019593, -0.003866, 0.002183, -0.010440, 0.005890, - -0.014761, -0.009484, -0.031768, -0.016878, 0.023047, -0.003605, 0.022417, 0.006218, 0.001966, - -0.001779, -0.014072, -0.044160, -0.005687, 0.025348, 0.033535, 0.006721, 0.035926, 0.020972, - -0.028637, 0.006640, -0.034145, 0.003466, 0.006464, 0.017736, 0.023280, 0.043077, 0.016018, - -0.010189, -0.025875, -0.006053, 0.057371, 0.009409, -0.023491, -0.004531, 0.020914, -0.010380, - 0.033246, 0.000030, -0.002353, 0.036577, -0.015831, -0.000417, 0.001990, 0.005375, 0.025540, - -0.026233, -0.032782, 0.005688, 0.016629, 0.030580, -0.018795, -0.019301, -0.024817, -0.024928, - -0.015946, 0.027739, 0.038403, 0.002136, -0.018566, -0.041518, 0.024412, -0.025828, -0.042865, - 0.004544, 0.002058, 0.005751, -0.025469, 0.020564, -0.031437, 0.024273, 0.015496, -0.026288, - 0.002370, -0.024663, -0.040519, -0.004007, -0.023418, 0.008068, 0.025697, -0.029329, -0.027680, - -0.016500, -0.036367, -0.016802, 0.006661, -0.033076, 0.013229, -0.021672, -0.031379, -0.032634, - -0.027290, -0.015245, -0.021439, 0.002126, 0.027666, 0.008208, 0.014182, -0.019354, -0.021673, - -0.007010, 0.014986, 0.019451, 0.048010, 0.042812, -0.023444, -0.020506, -0.012801, 0.001269, - -0.004380, 0.014789, 0.054941, 0.065963, 0.004498, 0.007715, 0.030426, 0.010442, -0.035847, - 0.013169, 0.017589, 0.019293, 0.037296, 0.011307, -0.018246, 0.025856, -0.010660, -0.051909, - -0.005066, -0.006588, -0.005693, 0.003048, -0.014886, -0.014580, -0.002469, 0.014339, -0.019804, - -0.020992, -0.019192, -0.015435, -0.012829, -0.022874, 0.003353, -0.020414, -0.002553, 0.004669, - -0.034698, -0.018874, -0.009112, 0.001083, 0.005686, 0.015240, -0.023710, -0.000441, 0.046418, - -0.013739, 0.003062, 0.044169, 0.063396, 0.036713, 0.033727, -0.044097, 0.018743, -0.030855, - -0.006165, 0.046231, 0.034611, 0.012976, -0.001036, 0.032607, 0.028291, -0.006624, -0.004338, - -0.028143, 0.026126, 0.006157, -0.007267, -0.054122, -0.019062, 0.011230, -0.012767, -0.045448, - -0.024954, -0.013295, -0.012558, -0.012494, -0.051623, 0.072275, 0.041189, 0.003408, -0.049871, - 0.006833, 0.020615, 0.018811, -0.035291, -0.042064, 0.023504, 0.029760, 0.008563, -0.005000, - 0.004272, -0.010778, 0.002515, -0.002740, -0.033275, -0.002890, 0.032315, -0.012717, 0.002800, - -0.011188, 0.005409, 0.065573, 0.010387, 0.002705, -0.027390, -0.022318, -0.010913, -0.014733, - 0.042406, 0.059606, 0.025114, 0.006028, 0.020269, 0.031943, -0.027822, -0.050530, -0.010276, - 0.023408, 0.023377, -0.027354, -0.037895, 0.027667, 0.030464, 0.009397, -0.042510, -0.039867, - -0.004537, -0.004731, -0.032172, -0.027170, -0.021906, 0.015365, 0.048119, -0.039468, -0.023620, - 0.007955, 0.000680, 0.000239, -0.011357, -0.023538, 0.030892, 0.047227, -0.015539, -0.000810, - -0.003046, -0.010351, -0.019599, -0.001136, -0.020796, -0.016012, 0.016812, 0.012874, -0.012056, - -0.026595, -0.006281, 0.028130, 0.056123, -0.016340, -0.009213, 0.000914, -0.023441, -0.019096, - 0.086301, 0.043789, 0.053622, 0.042315, 0.001817, 0.018132, -0.010686, -0.020594, 0.010036, - 0.057149, -0.038072, -0.018655, 0.012886, 0.015680, 0.013000, 0.006560, -0.022738, 0.002506, - 0.017376, -0.047714, -0.012241, -0.023313, 0.021387, 0.024682, 0.018211, -0.002074, 0.001266, - 0.007184, -0.011629, -0.031960, -0.023243, -0.014987, 0.001444, 0.080398, -0.009386, -0.025787, - 0.005809, -0.059325, -0.008032, -0.021357, -0.000078, -0.018869, 0.040068, 0.048098, -0.046278, - -0.044302, -0.005171, 0.016113, 0.029827, -0.025645, -0.026238, -0.025474, -0.009931, -0.000303, - 0.012561, 0.066933, 0.029567, 0.036400, -0.036948, -0.025038, -0.000479, -0.021016, 0.006336, - 0.037295, 0.038966, 0.004441, 0.022387, -0.025481, -0.049329, -0.008985, -0.006220, 0.003154, - 0.051508, 0.013150, -0.026467, -0.036307, -0.019795, -0.055748, 0.000975, -0.012967, -0.019965, - 0.018635, -0.024659, -0.017505, 0.015238, -0.018091, -0.060397, -0.032906, -0.011198, -0.018521, - -0.002191, -0.003635, -0.034890, -0.002056, 0.023829, -0.036042, -0.030847, -0.026125, -0.035000, - 0.023202, 0.005161, 0.032192, 0.015928, -0.045422, -0.009979, 0.007651, 0.013164, 0.025479, - 0.013367, -0.024280, 0.010807, -0.027494, 0.003079, -0.040166, -0.016815, 0.007864, 0.029688, - -0.039594, -0.003612, 0.050786, 0.022938, -0.046614, -0.057634, 0.024472, -0.033212, 0.003648, - 0.001916, 0.026776, 0.027492, -0.001151, -0.001031, -0.037931, 0.008397, -0.012777, 0.031845, - 0.008411, 0.016977, 0.041310, -0.019159, -0.001786, -0.028565, -0.022954, -0.002761, 0.018911, - 0.036850, -0.005529, 0.027323, -0.030057, -0.044168, -0.030181, -0.024408, 0.023563, 0.000250, - 0.034782, 0.009605, 0.045126, 0.014285, 0.003351, 0.036145, 0.013449, 0.009428, -0.027886, - 0.024722, -0.005739, -0.028390, 0.013683, 0.040257, 0.033074, 0.039690, 0.031403, 0.056998, - -0.007434, -0.006943, -0.006569, 0.000803, -0.008889, 0.024126, 0.027708, 0.041024, 0.038733, - 0.008711, -0.018962, -0.036074, 0.018997, 0.038656, 0.016028, 0.010461, 0.004833, 0.005783, - 0.029056, -0.016580, -0.011266, 0.020498, 0.011400, 0.000457, -0.006163, -0.013604, -0.003022, - 0.043544, 0.002198, -0.044905, -0.022486, -0.071506, -0.039303, 0.038221, 0.008627, 0.010201, - 0.000289, -0.004356, 0.011663, -0.031275, 0.002657, -0.007561, -0.013955, -0.005672, 0.008098, - -0.010593, 0.015656, 0.009111, -0.026493, 0.006916, -0.008606, 0.037066, -0.021387, -0.025811, - 0.012258, -0.011720, -0.054889, -0.029453, -0.025641, -0.001766, 0.051973, 0.020420, 0.011058, - -0.014287, -0.004644, -0.032626, -0.002408, -0.026198, -0.001721, 0.007282, 0.021782, -0.011359, - -0.018482, -0.017777, -0.024780, 0.044192, -0.009216, -0.040708, -0.016007, -0.010054, -0.026919, - 0.044234, -0.023713, -0.013579, 0.022434, -0.022301, -0.011757, 0.004462, -0.046753, -0.001619, - -0.030681, -0.050139, -0.002504, 0.053874, 0.009147, 0.014146, 0.002372, -0.013813, -0.019500, - -0.025330, 0.023288, 0.036182, 0.025840, -0.014911, -0.014025, 0.033295, 0.014172, -0.043400, - -0.006272, 0.000568, -0.009097, -0.004230, 0.004911, -0.050385, 0.020030, 0.035547, -0.022152, - -0.018878, -0.032489, -0.040935, -0.008134, -0.027460, 0.014040, 0.020154, -0.017938, -0.004307, - -0.028005, -0.033953, -0.019551, 0.004009, -0.005764, 0.012856, -0.021480, -0.016855, -0.023963, - -0.022567, -0.006307, -0.023737, -0.001568, 0.019463, 0.012173, -0.009196, -0.017564, 0.001364, - -0.043732, -0.022550, 0.013090, 0.043879, 0.083468, -0.002464, 0.006987, 0.016664, 0.012462, - -0.008444, 0.005400, 0.054685, 0.051936, 0.013375, 0.043160, 0.062966, 0.035916, -0.023491, - 0.021115, 0.001117, -0.008806, 0.055529, 0.009395, -0.043057, 0.046459, 0.010203, -0.028424, - -0.029183, -0.027905, -0.001476, 0.017602, -0.016239, -0.016078, -0.030635, 0.004263, -0.008169, - -0.032070, -0.031463, -0.027645, -0.021866, -0.027926, -0.001628, -0.007915, -0.012607, 0.001956, - 0.011001, -0.028034, -0.001255, 0.005664, 0.010216, 0.024608, -0.007523, -0.011288, 0.000263, - -0.051504, -0.040640, -0.000834, 0.012617, -0.005089, 0.001936, -0.024538, -0.024990, -0.015395, - -0.012329, 0.028024, 0.032426, 0.017773, 0.018190, 0.006065, 0.005864, -0.003624, -0.000144, - 0.009703, 0.005682, -0.008922, -0.017569, -0.010922, -0.013045, 0.010755, 0.015862, -0.006705, - 0.010764, -0.026009, -0.024176, -0.012392, -0.016544, 0.006528, 0.018273, 0.002268, -0.005106, - -0.003451, -0.038868, 0.007934, -0.008516, -0.013496, 0.013553, 0.018780, 0.002525, -0.003182, - -0.001836, -0.036990, -0.010030, -0.005384, -0.001332, 0.007151, 0.001327, 0.013523, 0.016111, - -0.010607, -0.013890, 0.019548, 0.017546, -0.005997, -0.025088, -0.049811, -0.059389, -0.029749, - 0.018514, 0.031819, 0.040195, 0.035320, 0.000967, -0.000830, 0.005296, -0.043889, -0.028591, - -0.001011, 0.006723, -0.006607, 0.013059, -0.018155, -0.030698, 0.019051, -0.024081, -0.037196, - -0.022239, 0.000848, -0.025001, 0.001228, -0.000592, -0.007855, -0.011499, -0.023217, -0.040484, - -0.017329, 0.006645, -0.013449, 0.000847, -0.000119, 0.014860, -0.002017, -0.019026, -0.035675, - -0.005816, -0.006535, -0.009347, 0.002507, -0.002680, 0.008902, 0.004210, -0.019889, -0.031641, - -0.011938, -0.015301, 0.019993, 0.048853, 0.026945, 0.043645, 0.062425, 0.044244, 0.005319, - -0.000019, 0.006164, 0.009330, 0.011598, 0.019091, 0.025501, 0.066615, 0.035769, 0.026234, - -0.006703, -0.008633, -0.017738, 0.003159, 0.012647, -0.004825, 0.027105, 0.025011, 0.003316, - -0.007003, -0.022774, -0.028498, -0.018072, 0.009786, 0.035866, 0.011503, 0.019276, 0.003115, - 0.001527, -0.016147, 0.001360, -0.025041, -0.021781, 0.013801, 0.000116, -0.001240, 0.007532, - 0.025023, -0.038918, -0.011976, -0.019356, -0.014058, 0.008613, 0.023001, 0.022824, -0.002671, - -0.011967, 0.021691, 0.076450, 0.047641, 0.036292, 0.002350, -0.010328, 0.007337, 0.022783, - 0.033927, 0.049570, 0.029886, 0.015164, -0.002178, -0.007166, 0.036303, 0.009368, 0.012563, - 0.013954, -0.007194, -0.005288, 0.016189, 0.002397, -0.011876, 0.024437, -0.016529, -0.027592, - -0.023263, -0.016451, -0.014706, 0.002603, 0.001543, 0.020811, 0.006579, -0.025298, -0.026171, - -0.026803, 0.011654, 0.000474, -0.003381, -0.004139, -0.000332, -0.007856, -0.017985, -0.037245, - 0.018079, 0.007715, -0.024949, 0.006088, 0.003535, -0.005897, 0.013167, 0.007207, -0.029524, - 2.000000, - 9.000000, 6.000000, 31.000000, - 0.029930, -0.006665, 0.000757, 0.005934, -0.017502, 0.013935, 0.039783, -0.021399, -0.000161, - -0.010629, -0.005149, 0.002986, -0.025542, -0.053398, -0.006237, 0.003516, -0.019553, -0.018118, - -0.028808, -0.021944, -0.024143, -0.000107, -0.045050, 0.010433, 0.016894, 0.016926, -0.028078, - -0.010709, 0.005866, 0.007544, 0.000431, -0.014537, -0.027068, -0.000386, 0.025330, 0.000141, - -0.002442, 0.037271, -0.000677, 0.002142, 0.015065, 0.022322, -0.000307, -0.000015, 0.002532, - -0.006135, -0.008101, 0.032631, 0.039004, 0.049738, 0.026970, -0.024221, 0.019291, -0.009057, - 0.038713, -0.006465, 0.020359, 0.020278, 0.016445, 0.027480, 0.010222, -0.011222, -0.005615, - -0.020338, -0.020189, -0.020565, -0.019070, -0.006974, 0.011109, 0.004474, -0.007642, 0.008569, - -0.024605, -0.018784, -0.006808, 0.014108, -0.003592, -0.005247, -0.041435, -0.007592, 0.000419, - 0.001741, -0.008521, -0.028644, 0.039889, 0.008262, -0.022981, 0.034794, 0.030223, 0.008912, - -0.018789, -0.022905, 0.000972, 0.010337, 0.025666, 0.066070, 0.079947, 0.039687, -0.002823, - -0.041592, -0.027036, 0.006609, 0.006064, 0.053686, 0.039680, 0.043702, 0.020285, 0.013135, - -0.007497, 0.003327, -0.001307, -0.003802, 0.033592, 0.023038, -0.016998, -0.009231, 0.000486, - -0.020770, -0.005919, -0.009004, -0.026904, 0.013546, 0.010381, -0.014547, 0.013861, -0.011774, - -0.036663, -0.013111, -0.017869, -0.020432, 0.001898, 0.017069, 0.017541, -0.000835, 0.002022, - -0.022974, -0.004382, -0.000256, 0.006436, -0.009247, -0.029720, 0.005829, 0.024215, -0.007425, - -0.025495, 0.009499, 0.009731, 0.018799, 0.016305, 0.016166, 0.019656, 0.043696, -0.014860, - -0.000392, -0.017046, -0.005220, 0.026838, 0.006086, 0.044153, 0.006969, 0.002384, -0.000176, - 0.018534, 0.012546, 0.015423, 0.000770, 0.018258, 0.000784, 0.022808, -0.007356, -0.012694, - 0.002641, 0.037438, 0.016000, -0.012833, 0.018265, -0.015336, -0.007418, -0.005854, 0.004032, - 0.003965, 0.006323, -0.008542, -0.019534, -0.001420, -0.012372, -0.016926, -0.002786, -0.002325, - 0.004341, 0.013825, -0.016548, -0.033509, -0.027318, -0.012926, 0.024582, 0.017762, -0.001556, - 0.001622, 0.054567, 0.038651, -0.010582, -0.000661, -0.017990, 0.043072, 0.006770, -0.004994, - -0.007869, 0.030119, 0.002479, -0.024477, -0.011071, -0.019964, 0.015551, 0.008347, 0.027366, - 0.023072, 0.011086, -0.029239, -0.025200, -0.004903, 0.010631, 0.004884, 0.047843, 0.021409, - 0.002670, 0.032804, 0.007142, -0.025560, 0.013026, 0.022522, -0.000174, 0.021576, 0.010376, - 0.003728, -0.037886, -0.040979, -0.039918, 0.043535, -0.006259, -0.035577, 0.010807, 0.032803, - 0.037551, -0.045322, -0.020230, -0.051028, 0.002103, -0.021009, 0.014669, 0.001809, 0.042470, - 0.003731, -0.019837, -0.044954, -0.021040, 0.009548, 0.023537, 0.057943, 0.061864, 0.085715, - -0.002395, -0.051375, 0.006596, 0.044332, -0.034062, 0.023881, 0.019005, -0.000492, -0.025290, - 0.031084, -0.002007, 0.004115, -0.008371, -0.032092, -0.007287, 0.036031, 0.043681, 0.006410, - -0.022887, -0.007580, 0.005139, -0.031176, 0.017749, 0.013462, -0.021812, -0.006251, 0.015261, - -0.008012, -0.011828, 0.028844, 0.011330, 0.045121, -0.000015, -0.032792, -0.015454, 0.013121, - -0.033272, 0.003975, 0.078132, 0.002986, -0.001634, -0.017280, 0.031127, -0.044219, 0.024785, - -0.001362, -0.018002, 0.023670, 0.011728, -0.023793, -0.035855, 0.011582, -0.042617, 0.017385, - 0.009899, 0.033057, 0.002754, 0.032676, -0.019319, -0.003875, 0.022721, -0.019826, 0.012419, - -0.035719, -0.024134, -0.014953, -0.010269, -0.003444, -0.021721, 0.001166, -0.008817, -0.009478, - -0.002420, -0.002777, 0.007213, 0.000901, 0.003252, -0.011348, -0.025435, -0.019193, -0.018649, - 0.021377, -0.027371, 0.013270, 0.002437, 0.012682, -0.010190, -0.010831, -0.005954, -0.002636, - 0.024974, 0.019063, 0.005180, 0.006673, 0.004833, -0.009826, -0.015052, -0.016937, 0.001160, - 0.015650, 0.014561, 0.025526, 0.024295, -0.042432, -0.030554, -0.023046, -0.035752, 0.004795, - -0.031538, 0.033321, 0.014076, 0.031797, -0.019276, -0.017216, -0.040390, -0.028111, -0.003702, - -0.032119, -0.063489, -0.021072, -0.006686, 0.018168, 0.006414, 0.053127, 0.040211, -0.020401, - -0.012017, -0.011267, -0.013370, -0.005409, 0.008789, 0.017253, 0.057773, -0.020403, -0.002535, - -0.006491, -0.044030, -0.002538, 0.016430, 0.031867, 0.054119, 0.026178, -0.015690, 0.029265, - 0.021758, -0.032816, -0.026709, 0.047371, 0.055290, 0.051941, 0.012349, -0.036650, 0.015686, - 0.083716, 0.031937, 0.070937, 0.057569, 0.024802, 0.002579, -0.005738, -0.037832, -0.004764, - -0.020504, 0.012051, 0.031272, 0.039464, -0.005913, -0.032144, -0.019717, -0.051709, -0.019331, - -0.006132, 0.002327, -0.035401, -0.001333, -0.017020, -0.029685, -0.005777, 0.042058, -0.020840, - 0.018825, 0.018632, 0.006400, -0.010038, -0.022094, 0.013366, 0.027067, 0.013623, -0.000622, - 0.029671, 0.006776, -0.009809, -0.029148, -0.010456, 0.053201, 0.020621, -0.028015, 0.003710, - 0.007198, 0.000111, -0.051223, -0.027670, 0.015679, 0.039012, -0.006797, -0.046236, -0.017318, - 0.049726, 0.038651, -0.032633, -0.021769, 0.011648, 0.017254, -0.028047, -0.056189, 0.002673, - 0.001855, 0.029301, 0.053761, 0.001526, -0.004124, -0.019209, -0.026199, -0.030312, -0.014527, - -0.029445, -0.007075, -0.014422, -0.022159, -0.013800, -0.036730, -0.022714, 0.037150, 0.026794, - -0.011786, 0.012918, 0.001350, -0.018864, 0.002383, 0.023644, 0.003949, 0.035492, 0.008869, - -0.024953, -0.006614, -0.023568, -0.028671, -0.034184, 0.023371, -0.013330, -0.007713, -0.022117, - -0.030633, -0.007738, -0.035908, -0.027683, -0.070338, -0.031604, -0.014465, -0.040356, -0.057109, - -0.032252, 0.011541, 0.016749, -0.014512, -0.066920, -0.005756, -0.004685, -0.011407, 0.008292, - -0.024802, 0.027021, 0.034593, 0.031675, 0.007580, 0.011231, -0.031390, -0.016839, 0.008219, - -0.034698, -0.018874, -0.009112, 0.001083, 0.005686, 0.015240, -0.023710, -0.000441, 0.046418, - -0.020992, -0.019192, -0.015435, -0.012829, -0.022874, 0.003353, -0.020414, -0.002553, 0.004669, - -0.005066, -0.006588, -0.005693, 0.003048, -0.014886, -0.014580, -0.002469, 0.014339, -0.019804, - 0.013169, 0.017589, 0.019293, 0.037296, 0.011307, -0.018246, 0.025856, -0.010660, -0.051909, - -0.004380, 0.014789, 0.054941, 0.065963, 0.004498, 0.007715, 0.030426, 0.010442, -0.035847, - -0.007010, 0.014986, 0.019451, 0.048010, 0.042812, -0.023444, -0.020506, -0.012801, 0.001269, - -0.027290, -0.015245, -0.021439, 0.002126, 0.027666, 0.008208, 0.014182, -0.019354, -0.021673, - -0.016500, -0.036367, -0.016802, 0.006661, -0.033076, 0.013229, -0.021672, -0.031379, -0.032634, - 0.002370, -0.024663, -0.040519, -0.004007, -0.023418, 0.008068, 0.025697, -0.029329, -0.027680, - 0.004544, 0.002058, 0.005751, -0.025469, 0.020564, -0.031437, 0.024273, 0.015496, -0.026288, - -0.015946, 0.027739, 0.038403, 0.002136, -0.018566, -0.041518, 0.024412, -0.025828, -0.042865, - -0.026233, -0.032782, 0.005688, 0.016629, 0.030580, -0.018795, -0.019301, -0.024817, -0.024928, - 0.033246, 0.000030, -0.002353, 0.036577, -0.015831, -0.000417, 0.001990, 0.005375, 0.025540, - -0.010189, -0.025875, -0.006053, 0.057371, 0.009409, -0.023491, -0.004531, 0.020914, -0.010380, - -0.028637, 0.006640, -0.034145, 0.003466, 0.006464, 0.017736, 0.023280, 0.043077, 0.016018, - -0.001779, -0.014072, -0.044160, -0.005687, 0.025348, 0.033535, 0.006721, 0.035926, 0.020972, - -0.014761, -0.009484, -0.031768, -0.016878, 0.023047, -0.003605, 0.022417, 0.006218, 0.001966, - 0.010223, -0.002714, 0.018095, -0.008159, 0.019593, -0.003866, 0.002183, -0.010440, 0.005890, - 0.007472, -0.009930, -0.015898, 0.004033, -0.044371, 0.002648, 0.001313, -0.054612, -0.053682, - -0.006578, -0.035317, 0.022663, 0.053930, 0.016000, 0.003826, -0.020507, -0.058234, -0.072922, - -0.018629, 0.011673, 0.019914, 0.059676, 0.047061, 0.043253, 0.000414, -0.007244, -0.052302, - -0.033636, 0.027046, 0.009154, 0.011341, 0.025664, 0.050781, 0.011615, 0.033965, -0.037086, - 0.021444, -0.014812, -0.018065, 0.014234, 0.064178, 0.010423, -0.014619, -0.006948, -0.017235, - 0.002422, -0.003072, 0.034291, -0.026577, 0.046684, 0.039353, -0.011607, 0.003186, -0.020222, - 0.045095, -0.017251, 0.021031, -0.003573, -0.006651, 0.026922, -0.009262, -0.022902, -0.018753, - 0.015574, 0.015973, 0.029055, -0.006413, -0.012658, 0.002511, 0.019548, -0.021123, -0.003493, - -0.001212, 0.067959, 0.011042, 0.004132, -0.022811, -0.016849, 0.026743, -0.025130, -0.024769, - -0.045494, 0.022519, 0.012312, 0.033567, -0.052200, -0.038669, 0.004977, -0.032046, -0.048442, - -0.002428, 0.011478, 0.017591, 0.024598, 0.022568, -0.021558, -0.001262, 0.013212, 0.006994, - 0.028332, -0.007911, 0.018657, 0.005388, -0.033446, 0.006701, 0.002492, 0.030373, 0.018671, - -0.004154, 0.006494, -0.034784, 0.006689, 0.037605, -0.002995, -0.051955, -0.004698, -0.021079, - -0.006328, -0.029619, -0.032679, 0.002462, -0.019397, -0.045659, -0.015508, 0.020182, -0.000056, - 0.025016, -0.003037, -0.026267, -0.018646, -0.032226, -0.033746, 0.004779, 0.003721, -0.009230, - 0.000345, -0.005350, 0.002198, 0.049123, -0.012123, -0.033058, -0.000785, 0.021660, 0.017724, - -0.021125, 0.043091, 0.006412, 0.017711, -0.004029, 0.001478, 0.023716, 0.013757, 0.007411, - -0.027744, -0.044687, -0.017508, -0.010240, -0.010133, -0.013814, 0.012683, 0.013153, 0.012725, - 0.007005, -0.005518, 0.013275, -0.015888, -0.013353, 0.001467, 0.002509, 0.014264, -0.036061, - 0.010318, 0.003028, 0.004613, -0.004090, -0.004100, 0.031694, 0.018489, 0.018226, -0.016231, - 0.028904, -0.018748, -0.007846, -0.012941, 0.006900, -0.004047, 0.013523, 0.021728, -0.014828, - 0.065602, -0.026473, -0.013874, -0.016380, -0.008091, -0.010474, 0.004325, 0.025062, 0.000101, - 0.006096, 0.013308, 0.013003, 0.004410, -0.001311, 0.027952, 0.014147, 0.018020, 0.018645, - -0.027737, -0.052033, -0.032964, 0.012209, -0.000886, 0.023874, 0.021922, 0.025476, -0.010340, - 0.018103, -0.017681, 0.005585, -0.014457, -0.019285, 0.001883, 0.030872, -0.020349, -0.007861, - 0.013705, 0.000570, 0.003539, 0.000843, -0.011714, 0.024567, 0.036341, -0.027474, -0.009819, - -0.020502, -0.001353, -0.020314, 0.002280, -0.019804, -0.006528, 0.030419, -0.022072, -0.039210, - 0.031097, 0.025361, 0.016201, -0.016210, -0.003333, 0.000807, 0.008935, -0.003788, -0.029446, - 0.042046, 0.021788, 0.048756, 0.000262, 0.016904, 0.011339, -0.007614, -0.002121, -0.011678, - -0.011250, -0.035219, 0.019027, 0.002525, -0.007900, -0.015058, -0.001101, 0.003276, -0.008274, - 0.004272, -0.010778, 0.002515, -0.002740, -0.033275, -0.002890, 0.032315, -0.012717, 0.002800, - 0.006833, 0.020615, 0.018811, -0.035291, -0.042064, 0.023504, 0.029760, 0.008563, -0.005000, - -0.024954, -0.013295, -0.012558, -0.012494, -0.051623, 0.072275, 0.041189, 0.003408, -0.049871, - -0.028143, 0.026126, 0.006157, -0.007267, -0.054122, -0.019062, 0.011230, -0.012767, -0.045448, - -0.006165, 0.046231, 0.034611, 0.012976, -0.001036, 0.032607, 0.028291, -0.006624, -0.004338, - -0.013739, 0.003062, 0.044169, 0.063396, 0.036713, 0.033727, -0.044097, 0.018743, -0.030855, - 0.011001, -0.028034, -0.001255, 0.005664, 0.010216, 0.024608, -0.007523, -0.011288, 0.000263, - -0.032070, -0.031463, -0.027645, -0.021866, -0.027926, -0.001628, -0.007915, -0.012607, 0.001956, - -0.029183, -0.027905, -0.001476, 0.017602, -0.016239, -0.016078, -0.030635, 0.004263, -0.008169, - 0.021115, 0.001117, -0.008806, 0.055529, 0.009395, -0.043057, 0.046459, 0.010203, -0.028424, - -0.008444, 0.005400, 0.054685, 0.051936, 0.013375, 0.043160, 0.062966, 0.035916, -0.023491, - -0.043732, -0.022550, 0.013090, 0.043879, 0.083468, -0.002464, 0.006987, 0.016664, 0.012462, - -0.022567, -0.006307, -0.023737, -0.001568, 0.019463, 0.012173, -0.009196, -0.017564, 0.001364, - -0.028005, -0.033953, -0.019551, 0.004009, -0.005764, 0.012856, -0.021480, -0.016855, -0.023963, - -0.018878, -0.032489, -0.040935, -0.008134, -0.027460, 0.014040, 0.020154, -0.017938, -0.004307, - -0.006272, 0.000568, -0.009097, -0.004230, 0.004911, -0.050385, 0.020030, 0.035547, -0.022152, - -0.025330, 0.023288, 0.036182, 0.025840, -0.014911, -0.014025, 0.033295, 0.014172, -0.043400, - -0.030681, -0.050139, -0.002504, 0.053874, 0.009147, 0.014146, 0.002372, -0.013813, -0.019500, - 0.044234, -0.023713, -0.013579, 0.022434, -0.022301, -0.011757, 0.004462, -0.046753, -0.001619, - -0.018482, -0.017777, -0.024780, 0.044192, -0.009216, -0.040708, -0.016007, -0.010054, -0.026919, - -0.014287, -0.004644, -0.032626, -0.002408, -0.026198, -0.001721, 0.007282, 0.021782, -0.011359, - 0.012258, -0.011720, -0.054889, -0.029453, -0.025641, -0.001766, 0.051973, 0.020420, 0.011058, - -0.010593, 0.015656, 0.009111, -0.026493, 0.006916, -0.008606, 0.037066, -0.021387, -0.025811, - 0.000289, -0.004356, 0.011663, -0.031275, 0.002657, -0.007561, -0.013955, -0.005672, 0.008098, - 0.043544, 0.002198, -0.044905, -0.022486, -0.071506, -0.039303, 0.038221, 0.008627, 0.010201, - 0.029056, -0.016580, -0.011266, 0.020498, 0.011400, 0.000457, -0.006163, -0.013604, -0.003022, - 0.008711, -0.018962, -0.036074, 0.018997, 0.038656, 0.016028, 0.010461, 0.004833, 0.005783, - -0.007434, -0.006943, -0.006569, 0.000803, -0.008889, 0.024126, 0.027708, 0.041024, 0.038733, - 0.024722, -0.005739, -0.028390, 0.013683, 0.040257, 0.033074, 0.039690, 0.031403, 0.056998, - 0.034782, 0.009605, 0.045126, 0.014285, 0.003351, 0.036145, 0.013449, 0.009428, -0.027886, - 0.036850, -0.005529, 0.027323, -0.030057, -0.044168, -0.030181, -0.024408, 0.023563, 0.000250, - 0.008411, 0.016977, 0.041310, -0.019159, -0.001786, -0.028565, -0.022954, -0.002761, 0.018911, - 0.001916, 0.026776, 0.027492, -0.001151, -0.001031, -0.037931, 0.008397, -0.012777, 0.031845, - -0.039594, -0.003612, 0.050786, 0.022938, -0.046614, -0.057634, 0.024472, -0.033212, 0.003648, - 0.013367, -0.024280, 0.010807, -0.027494, 0.003079, -0.040166, -0.016815, 0.007864, 0.029688, - 0.023202, 0.005161, 0.032192, 0.015928, -0.045422, -0.009979, 0.007651, 0.013164, 0.025479, - -0.002191, -0.003635, -0.034890, -0.002056, 0.023829, -0.036042, -0.030847, -0.026125, -0.035000, - 0.018635, -0.024659, -0.017505, 0.015238, -0.018091, -0.060397, -0.032906, -0.011198, -0.018521, - 0.051508, 0.013150, -0.026467, -0.036307, -0.019795, -0.055748, 0.000975, -0.012967, -0.019965, - 0.037295, 0.038966, 0.004441, 0.022387, -0.025481, -0.049329, -0.008985, -0.006220, 0.003154, - 0.012561, 0.066933, 0.029567, 0.036400, -0.036948, -0.025038, -0.000479, -0.021016, 0.006336, - -0.044302, -0.005171, 0.016113, 0.029827, -0.025645, -0.026238, -0.025474, -0.009931, -0.000303, - 0.005809, -0.059325, -0.008032, -0.021357, -0.000078, -0.018869, 0.040068, 0.048098, -0.046278, - 0.007184, -0.011629, -0.031960, -0.023243, -0.014987, 0.001444, 0.080398, -0.009386, -0.025787, - 0.017376, -0.047714, -0.012241, -0.023313, 0.021387, 0.024682, 0.018211, -0.002074, 0.001266, - 0.057149, -0.038072, -0.018655, 0.012886, 0.015680, 0.013000, 0.006560, -0.022738, 0.002506, - 0.086301, 0.043789, 0.053622, 0.042315, 0.001817, 0.018132, -0.010686, -0.020594, 0.010036, - -0.026595, -0.006281, 0.028130, 0.056123, -0.016340, -0.009213, 0.000914, -0.023441, -0.019096, - -0.003046, -0.010351, -0.019599, -0.001136, -0.020796, -0.016012, 0.016812, 0.012874, -0.012056, - 0.007955, 0.000680, 0.000239, -0.011357, -0.023538, 0.030892, 0.047227, -0.015539, -0.000810, - -0.004537, -0.004731, -0.032172, -0.027170, -0.021906, 0.015365, 0.048119, -0.039468, -0.023620, - 0.023408, 0.023377, -0.027354, -0.037895, 0.027667, 0.030464, 0.009397, -0.042510, -0.039867, - 0.042406, 0.059606, 0.025114, 0.006028, 0.020269, 0.031943, -0.027822, -0.050530, -0.010276, - -0.011188, 0.005409, 0.065573, 0.010387, 0.002705, -0.027390, -0.022318, -0.010913, -0.014733, - 0.025023, -0.038918, -0.011976, -0.019356, -0.014058, 0.008613, 0.023001, 0.022824, -0.002671, - 0.001527, -0.016147, 0.001360, -0.025041, -0.021781, 0.013801, 0.000116, -0.001240, 0.007532, - -0.007003, -0.022774, -0.028498, -0.018072, 0.009786, 0.035866, 0.011503, 0.019276, 0.003115, - -0.006703, -0.008633, -0.017738, 0.003159, 0.012647, -0.004825, 0.027105, 0.025011, 0.003316, - -0.000019, 0.006164, 0.009330, 0.011598, 0.019091, 0.025501, 0.066615, 0.035769, 0.026234, - -0.011938, -0.015301, 0.019993, 0.048853, 0.026945, 0.043645, 0.062425, 0.044244, 0.005319, - 0.018079, 0.007715, -0.024949, 0.006088, 0.003535, -0.005897, 0.013167, 0.007207, -0.029524, - -0.026803, 0.011654, 0.000474, -0.003381, -0.004139, -0.000332, -0.007856, -0.017985, -0.037245, - -0.023263, -0.016451, -0.014706, 0.002603, 0.001543, 0.020811, 0.006579, -0.025298, -0.026171, - 0.013954, -0.007194, -0.005288, 0.016189, 0.002397, -0.011876, 0.024437, -0.016529, -0.027592, - 0.033927, 0.049570, 0.029886, 0.015164, -0.002178, -0.007166, 0.036303, 0.009368, 0.012563, - -0.011967, 0.021691, 0.076450, 0.047641, 0.036292, 0.002350, -0.010328, 0.007337, 0.022783, - -0.001836, -0.036990, -0.010030, -0.005384, -0.001332, 0.007151, 0.001327, 0.013523, 0.016111, - -0.003451, -0.038868, 0.007934, -0.008516, -0.013496, 0.013553, 0.018780, 0.002525, -0.003182, - 0.010764, -0.026009, -0.024176, -0.012392, -0.016544, 0.006528, 0.018273, 0.002268, -0.005106, - 0.009703, 0.005682, -0.008922, -0.017569, -0.010922, -0.013045, 0.010755, 0.015862, -0.006705, - -0.012329, 0.028024, 0.032426, 0.017773, 0.018190, 0.006065, 0.005864, -0.003624, -0.000144, - -0.051504, -0.040640, -0.000834, 0.012617, -0.005089, 0.001936, -0.024538, -0.024990, -0.015395, - -0.005816, -0.006535, -0.009347, 0.002507, -0.002680, 0.008902, 0.004210, -0.019889, -0.031641, - -0.017329, 0.006645, -0.013449, 0.000847, -0.000119, 0.014860, -0.002017, -0.019026, -0.035675, - -0.022239, 0.000848, -0.025001, 0.001228, -0.000592, -0.007855, -0.011499, -0.023217, -0.040484, - -0.001011, 0.006723, -0.006607, 0.013059, -0.018155, -0.030698, 0.019051, -0.024081, -0.037196, - 0.018514, 0.031819, 0.040195, 0.035320, 0.000967, -0.000830, 0.005296, -0.043889, -0.028591, - -0.010607, -0.013890, 0.019548, 0.017546, -0.005997, -0.025088, -0.049811, -0.059389, -0.029749, - 1.000000, - 6.000000, 10.000000, 31.000000, - 0.046470, -0.001390, -0.014395, -0.004574, -0.020851, -0.007828, - 0.005067, -0.031326, -0.018576, -0.015862, -0.008601, 0.014632, - 0.021816, -0.018533, 0.005242, -0.014605, 0.023703, 0.023564, - 0.007811, -0.005977, -0.006677, 0.005145, -0.013792, -0.017844, - 0.020044, -0.024216, -0.011356, -0.012413, -0.025605, -0.017093, - 0.040022, -0.002485, -0.001712, 0.011519, 0.014643, 0.006432, - 0.009800, -0.010588, 0.016312, 0.002616, 0.005280, 0.035154, - 0.047426, 0.018045, -0.005358, -0.011784, -0.013000, 0.002490, - 0.057397, -0.016475, 0.009013, 0.004674, 0.007886, -0.014295, - -0.006442, -0.011299, 0.009945, -0.046890, -0.009414, 0.030203, - -0.008579, -0.026194, -0.007727, 0.028996, -0.012205, -0.021513, - -0.030208, -0.023430, 0.029230, 0.051373, 0.008890, -0.019332, - 0.002826, 0.002463, 0.030285, 0.016289, 0.026992, -0.000380, - -0.000768, -0.007154, 0.024308, 0.030067, -0.022592, 0.000580, - -0.014683, -0.020079, 0.006231, -0.009285, -0.008163, -0.000899, - 0.002617, -0.013753, -0.026797, 0.008989, 0.010722, -0.022240, - -0.014150, -0.003814, -0.026512, -0.006919, 0.023323, 0.005368, - -0.003750, 0.016928, -0.000323, 0.015773, 0.013263, 0.011986, - 0.037901, -0.009061, 0.000250, 0.030180, -0.004739, -0.010443, - 0.024750, -0.032764, -0.010534, -0.021675, -0.003514, -0.003265, - -0.020319, 0.000203, 0.069824, 0.030857, 0.015889, -0.023533, - -0.030796, 0.016229, 0.056288, 0.028697, -0.014305, -0.025196, - -0.018364, 0.014866, 0.028104, -0.000417, -0.051142, -0.023046, - -0.020971, -0.010743, 0.003217, -0.012035, -0.023955, -0.013356, - -0.036108, -0.026539, -0.032349, -0.006815, -0.005743, -0.013269, - 0.006599, 0.008085, -0.019487, -0.014466, 0.001647, 0.000989, - -0.009188, -0.026229, -0.013210, -0.005748, 0.001012, 0.033042, - 0.018177, -0.007116, 0.002708, 0.015740, 0.017112, 0.015549, - 0.029744, -0.032896, -0.011882, -0.005600, -0.003165, 0.004058, - 0.003710, -0.012835, -0.007648, -0.006503, 0.034331, 0.008097, - 0.002202, 0.061497, 0.078442, 0.018655, 0.011989, 0.006508, - -0.002367, 0.052670, 0.026756, -0.028348, -0.005509, 0.005802, - -0.043587, -0.031117, -0.040108, -0.008979, -0.005443, -0.020855, - -0.029441, -0.019338, -0.026956, -0.005999, -0.037751, -0.013612, - -0.013975, -0.028954, -0.003126, -0.003054, -0.019736, -0.040214, - -0.028629, 0.007233, 0.009716, 0.015859, 0.006672, -0.022026, - -0.033050, 0.000315, 0.007074, 0.018146, 0.000436, 0.006696, - -0.024535, -0.003776, 0.002269, 0.026740, -0.016717, 0.021679, - -0.001566, -0.011990, 0.007517, 0.007238, -0.005306, 0.044983, - 0.016996, 0.006136, 0.017641, 0.005897, 0.023851, 0.016799, - -0.003681, 0.007226, -0.017716, -0.032641, -0.011481, 0.030119, - 0.063095, 0.027912, -0.009848, -0.001077, 0.028589, 0.017947, - 0.062629, 0.070279, -0.032816, -0.057687, 0.039942, -0.003707, - 0.070110, 0.091709, -0.014844, -0.018787, 0.026183, -0.027881, - 0.026491, 0.034757, -0.007279, -0.004188, 0.008414, -0.029477, - 0.000688, 0.010486, -0.050386, -0.007073, 0.013513, -0.023744, - 0.025663, 0.014871, -0.010218, 0.000177, 0.029445, 0.016649, - -0.000624, 0.009228, -0.036938, -0.026533, 0.033331, 0.053426, - 0.041208, -0.037095, -0.019307, -0.001753, 0.031687, 0.006985, - 0.006189, -0.009587, -0.020390, -0.017921, 0.036402, 0.041879, - 0.006189, -0.009587, -0.020390, -0.017921, 0.036402, 0.041879, - 0.041208, -0.037095, -0.019307, -0.001753, 0.031687, 0.006985, - -0.000624, 0.009228, -0.036938, -0.026533, 0.033331, 0.053426, - 0.025663, 0.014871, -0.010218, 0.000177, 0.029445, 0.016649, - 0.000688, 0.010486, -0.050386, -0.007073, 0.013513, -0.023744, - 0.026491, 0.034757, -0.007279, -0.004188, 0.008414, -0.029477, - 0.070110, 0.091709, -0.014844, -0.018787, 0.026183, -0.027881, - 0.062629, 0.070279, -0.032816, -0.057687, 0.039942, -0.003707, - 0.063095, 0.027912, -0.009848, -0.001077, 0.028589, 0.017947, - -0.003681, 0.007226, -0.017716, -0.032641, -0.011481, 0.030119, - 0.016996, 0.006136, 0.017641, 0.005897, 0.023851, 0.016799, - -0.001566, -0.011990, 0.007517, 0.007238, -0.005306, 0.044983, - -0.024535, -0.003776, 0.002269, 0.026740, -0.016717, 0.021679, - -0.033050, 0.000315, 0.007074, 0.018146, 0.000436, 0.006696, - -0.028629, 0.007233, 0.009716, 0.015859, 0.006672, -0.022026, - -0.013975, -0.028954, -0.003126, -0.003054, -0.019736, -0.040214, - -0.029441, -0.019338, -0.026956, -0.005999, -0.037751, -0.013612, - -0.043587, -0.031117, -0.040108, -0.008979, -0.005443, -0.020855, - -0.002367, 0.052670, 0.026756, -0.028348, -0.005509, 0.005802, - 0.002202, 0.061497, 0.078442, 0.018655, 0.011989, 0.006508, - 0.003710, -0.012835, -0.007648, -0.006503, 0.034331, 0.008097, - 0.029744, -0.032896, -0.011882, -0.005600, -0.003165, 0.004058, - 0.018177, -0.007116, 0.002708, 0.015740, 0.017112, 0.015549, - -0.009188, -0.026229, -0.013210, -0.005748, 0.001012, 0.033042, - 0.006599, 0.008085, -0.019487, -0.014466, 0.001647, 0.000989, - -0.036108, -0.026539, -0.032349, -0.006815, -0.005743, -0.013269, - -0.020971, -0.010743, 0.003217, -0.012035, -0.023955, -0.013356, - -0.018364, 0.014866, 0.028104, -0.000417, -0.051142, -0.023046, - -0.030796, 0.016229, 0.056288, 0.028697, -0.014305, -0.025196, - -0.020319, 0.000203, 0.069824, 0.030857, 0.015889, -0.023533, - 0.024750, -0.032764, -0.010534, -0.021675, -0.003514, -0.003265, - 0.037901, -0.009061, 0.000250, 0.030180, -0.004739, -0.010443, - -0.003750, 0.016928, -0.000323, 0.015773, 0.013263, 0.011986, - -0.014150, -0.003814, -0.026512, -0.006919, 0.023323, 0.005368, - 0.002617, -0.013753, -0.026797, 0.008989, 0.010722, -0.022240, - -0.014683, -0.020079, 0.006231, -0.009285, -0.008163, -0.000899, - -0.000768, -0.007154, 0.024308, 0.030067, -0.022592, 0.000580, - 0.002826, 0.002463, 0.030285, 0.016289, 0.026992, -0.000380, - -0.030208, -0.023430, 0.029230, 0.051373, 0.008890, -0.019332, - -0.008579, -0.026194, -0.007727, 0.028996, -0.012205, -0.021513, - -0.006442, -0.011299, 0.009945, -0.046890, -0.009414, 0.030203, - 0.057397, -0.016475, 0.009013, 0.004674, 0.007886, -0.014295, - 0.047426, 0.018045, -0.005358, -0.011784, -0.013000, 0.002490, - 0.009800, -0.010588, 0.016312, 0.002616, 0.005280, 0.035154, - 0.040022, -0.002485, -0.001712, 0.011519, 0.014643, 0.006432, - 0.020044, -0.024216, -0.011356, -0.012413, -0.025605, -0.017093, - 0.007811, -0.005977, -0.006677, 0.005145, -0.013792, -0.017844, - 0.021816, -0.018533, 0.005242, -0.014605, 0.023703, 0.023564, - 0.005067, -0.031326, -0.018576, -0.015862, -0.008601, 0.014632, - 0.046470, -0.001390, -0.014395, -0.004574, -0.020851, -0.007828, - 0.006220, 0.002315, 0.035770, 0.002948, 0.010270, 0.013360, - -0.002641, 0.000350, 0.018149, 0.018425, 0.027060, -0.018815, - -0.015463, 0.003669, -0.005245, 0.005040, 0.014361, -0.019949, - -0.031497, 0.002932, 0.028480, 0.017575, -0.018456, -0.039234, - -0.004603, 0.015902, 0.028655, 0.014466, -0.025284, -0.027692, - -0.015136, -0.017505, 0.005847, -0.012673, 0.003733, 0.027738, - 0.019887, 0.000451, 0.005498, 0.000721, 0.017624, 0.013772, - 0.006476, -0.026752, -0.011773, 0.008970, 0.000886, 0.012697, - -0.010879, -0.030793, -0.026063, 0.016960, 0.003274, -0.000279, - 0.030045, 0.002477, 0.002484, -0.002346, -0.010399, -0.009595, - 0.002633, -0.001467, 0.048899, 0.026785, -0.012327, -0.028345, - -0.002749, -0.008939, 0.019417, 0.016507, -0.015414, -0.021520, - -0.029027, -0.011715, 0.013031, -0.005655, 0.004384, 0.007249, - -0.010853, -0.008378, 0.038714, 0.000283, -0.031682, -0.012365, - -0.005812, -0.011211, 0.009666, -0.003201, -0.016537, -0.017733, - -0.007154, -0.016667, 0.005188, -0.003243, -0.002084, -0.008596, - 0.000284, -0.020756, -0.008355, 0.031783, 0.000097, -0.007871, - -0.021412, -0.002606, 0.037648, -0.001176, -0.025698, -0.012583, - -0.015120, 0.016778, 0.015209, 0.003180, -0.021866, -0.013703, - 0.017571, -0.023486, -0.006803, -0.021311, -0.018832, -0.024039, - -0.056619, -0.011784, 0.031940, -0.005772, -0.014738, -0.017894, - -0.019978, 0.003011, 0.030555, -0.025167, -0.014951, -0.002492, - -0.004771, -0.015641, -0.002794, -0.002061, -0.032927, -0.006515, - -0.003620, 0.004645, 0.052944, -0.002062, -0.019585, 0.017975, - -0.023304, -0.019848, -0.006304, -0.016577, -0.006621, 0.002592, - -0.000077, -0.014552, -0.016843, -0.012655, 0.002062, 0.028441, - -0.026994, -0.028146, -0.035075, -0.018622, -0.018585, -0.008615, - -0.033640, 0.002501, -0.012224, -0.027113, -0.024543, -0.010780, - -0.002144, 0.053333, 0.022480, 0.013586, 0.020717, -0.000837, - 0.000918, 0.045223, 0.029383, 0.031889, 0.033395, 0.013443, - 0.017164, -0.006901, -0.042203, -0.026216, -0.021609, -0.002389, - 0.039887, 0.027916, -0.009993, -0.028242, -0.028331, -0.006562, - 0.038422, 0.046534, -0.013836, -0.003135, 0.014219, 0.023984, - 0.023954, 0.094056, 0.013468, -0.007804, 0.025782, 0.006651, - 0.041066, 0.081786, -0.006039, -0.013988, -0.025682, 0.046269, - 0.003567, 0.035419, -0.037067, -0.015961, 0.004669, 0.042653, - 0.007339, 0.000808, -0.047813, -0.040454, 0.046761, 0.007643, - -0.016946, -0.002567, -0.026962, 0.031490, 0.023176, 0.008399, - 0.018457, -0.010473, -0.027913, 0.025470, 0.030774, -0.005384, - 0.009121, -0.001540, -0.010825, 0.001813, 0.015106, 0.001812, - 0.009121, -0.001540, -0.010825, 0.001813, 0.015106, 0.001812, - 0.018457, -0.010473, -0.027913, 0.025470, 0.030774, -0.005384, - -0.016946, -0.002567, -0.026962, 0.031490, 0.023176, 0.008399, - 0.007339, 0.000808, -0.047813, -0.040454, 0.046761, 0.007643, - 0.003567, 0.035419, -0.037067, -0.015961, 0.004669, 0.042653, - 0.041066, 0.081786, -0.006039, -0.013988, -0.025682, 0.046269, - 0.023954, 0.094056, 0.013468, -0.007804, 0.025782, 0.006651, - 0.038422, 0.046534, -0.013836, -0.003135, 0.014219, 0.023984, - 0.039887, 0.027916, -0.009993, -0.028242, -0.028331, -0.006562, - 0.017164, -0.006901, -0.042203, -0.026216, -0.021609, -0.002389, - 0.000918, 0.045223, 0.029383, 0.031889, 0.033395, 0.013443, - -0.002144, 0.053333, 0.022480, 0.013586, 0.020717, -0.000837, - -0.033640, 0.002501, -0.012224, -0.027113, -0.024543, -0.010780, - -0.026994, -0.028146, -0.035075, -0.018622, -0.018585, -0.008615, - -0.000077, -0.014552, -0.016843, -0.012655, 0.002062, 0.028441, - -0.023304, -0.019848, -0.006304, -0.016577, -0.006621, 0.002592, - -0.003620, 0.004645, 0.052944, -0.002062, -0.019585, 0.017975, - -0.004771, -0.015641, -0.002794, -0.002061, -0.032927, -0.006515, - -0.019978, 0.003011, 0.030555, -0.025167, -0.014951, -0.002492, - -0.056619, -0.011784, 0.031940, -0.005772, -0.014738, -0.017894, - 0.017571, -0.023486, -0.006803, -0.021311, -0.018832, -0.024039, - -0.015120, 0.016778, 0.015209, 0.003180, -0.021866, -0.013703, - -0.021412, -0.002606, 0.037648, -0.001176, -0.025698, -0.012583, - 0.000284, -0.020756, -0.008355, 0.031783, 0.000097, -0.007871, - -0.007154, -0.016667, 0.005188, -0.003243, -0.002084, -0.008596, - -0.005812, -0.011211, 0.009666, -0.003201, -0.016537, -0.017733, - -0.010853, -0.008378, 0.038714, 0.000283, -0.031682, -0.012365, - -0.029027, -0.011715, 0.013031, -0.005655, 0.004384, 0.007249, - -0.002749, -0.008939, 0.019417, 0.016507, -0.015414, -0.021520, - 0.002633, -0.001467, 0.048899, 0.026785, -0.012327, -0.028345, - 0.030045, 0.002477, 0.002484, -0.002346, -0.010399, -0.009595, - -0.010879, -0.030793, -0.026063, 0.016960, 0.003274, -0.000279, - 0.006476, -0.026752, -0.011773, 0.008970, 0.000886, 0.012697, - 0.019887, 0.000451, 0.005498, 0.000721, 0.017624, 0.013772, - -0.015136, -0.017505, 0.005847, -0.012673, 0.003733, 0.027738, - -0.004603, 0.015902, 0.028655, 0.014466, -0.025284, -0.027692, - -0.031497, 0.002932, 0.028480, 0.017575, -0.018456, -0.039234, - -0.015463, 0.003669, -0.005245, 0.005040, 0.014361, -0.019949, - -0.002641, 0.000350, 0.018149, 0.018425, 0.027060, -0.018815, - 0.006220, 0.002315, 0.035770, 0.002948, 0.010270, 0.013360, - 0.048538, -0.023409, 0.005577, -0.008290, -0.011818, 0.022696, - 0.039707, -0.040942, -0.006379, 0.023948, 0.028172, 0.017246, - 0.049167, 0.006859, 0.031218, -0.007204, 0.025458, 0.038051, - 0.019601, -0.017323, 0.040135, 0.050126, 0.001116, 0.039957, - 0.046140, -0.017953, 0.016716, 0.012407, -0.017734, -0.004163, - 0.046140, -0.017953, 0.016716, 0.012407, -0.017734, -0.004163, - 0.019601, -0.017323, 0.040135, 0.050126, 0.001116, 0.039957, - 0.049167, 0.006859, 0.031218, -0.007204, 0.025458, 0.038051, - 0.039707, -0.040942, -0.006379, 0.023948, 0.028172, 0.017246, - 0.048538, -0.023409, 0.005577, -0.008290, -0.011818, 0.022696, - 0.014817, -0.015112, 0.024903, 0.038254, -0.005235, -0.007781, - -0.030100, -0.023045, 0.007736, 0.040646, 0.037756, -0.023762, - -0.016380, 0.007415, 0.007496, -0.002839, 0.040709, -0.011203, - -0.023112, -0.004475, 0.038614, 0.039117, -0.022464, -0.019728, - -0.008997, -0.003590, 0.025942, 0.011185, -0.030369, -0.028212, - -0.002355, -0.019897, 0.000371, 0.008520, 0.024177, 0.010952, - 0.018777, 0.015450, -0.013135, -0.009248, 0.040532, 0.020847, - 0.003266, -0.011576, -0.012438, 0.021097, 0.018892, 0.021570, - 0.029783, -0.027512, -0.021508, 0.040240, -0.017042, -0.013740, - 0.060874, -0.019618, -0.010110, -0.014993, -0.012955, -0.009339, - 0.008389, -0.006623, 0.095812, 0.047116, -0.023980, -0.053171, - -0.032698, 0.003951, 0.040669, 0.017567, -0.019332, -0.037993, - -0.042976, -0.006306, 0.029173, -0.023769, -0.037392, -0.007285, - -0.021858, -0.021216, 0.037968, -0.002028, -0.051909, -0.020519, - -0.022360, -0.026228, -0.015685, 0.007378, -0.025034, -0.019950, - 0.002981, 0.005749, -0.011077, -0.005016, -0.008365, -0.012923, - -0.004436, -0.030994, -0.021285, 0.005444, -0.033532, 0.001477, - 0.004914, -0.004984, 0.027932, -0.020501, -0.003740, 0.004419, - 0.010886, 0.004452, -0.015633, 0.000652, -0.018078, -0.002484, - 0.022593, -0.035858, -0.015163, -0.025216, 0.013198, 0.007493, - -0.027843, 0.024057, 0.050146, 0.023851, -0.002109, -0.001293, - -0.012960, 0.026102, 0.010909, -0.035635, -0.003921, 0.012148, - -0.017281, -0.041913, -0.030241, -0.009348, -0.022524, -0.019265, - -0.032692, -0.026315, 0.035465, -0.005847, -0.053908, -0.002383, - -0.031274, -0.040238, 0.012816, -0.008971, -0.026728, -0.036396, - -0.011088, -0.016418, -0.007602, -0.006141, 0.002030, 0.004245, - -0.038004, -0.020694, -0.024553, -0.008889, -0.017169, 0.001588, - -0.051106, 0.007834, -0.018523, -0.004124, -0.027884, 0.003167, - -0.002227, 0.028264, 0.012202, 0.021426, 0.005997, -0.001640, - 0.001882, 0.037708, 0.019615, 0.011839, 0.028403, -0.014071, - 0.002547, -0.001165, -0.035166, -0.020371, -0.008851, -0.001813, - 0.066019, 0.054873, -0.041668, 0.007499, 0.013061, -0.005505, - 0.046135, 0.045165, -0.038924, -0.003875, 0.025099, -0.011707, - 0.031300, 0.052907, 0.005155, 0.014623, 0.052950, 0.000712, - 0.023720, 0.041568, 0.015457, 0.019002, -0.010275, 0.031370, - 0.017041, 0.029210, -0.023178, 0.011343, -0.005373, 0.018050, - 0.035035, -0.008029, -0.009136, -0.020015, 0.016150, -0.002033, - 0.020932, -0.002393, -0.030186, 0.005813, 0.022228, 0.052594, - 0.022552, -0.029876, -0.022063, 0.031847, -0.003141, -0.004440, - 0.003954, -0.030066, -0.024925, -0.012754, 0.001512, 0.013113, - 0.003954, -0.030066, -0.024925, -0.012754, 0.001512, 0.013113, - 0.022552, -0.029876, -0.022063, 0.031847, -0.003141, -0.004440, - 0.020932, -0.002393, -0.030186, 0.005813, 0.022228, 0.052594, - 0.035035, -0.008029, -0.009136, -0.020015, 0.016150, -0.002033, - 0.017041, 0.029210, -0.023178, 0.011343, -0.005373, 0.018050, - 0.023720, 0.041568, 0.015457, 0.019002, -0.010275, 0.031370, - 0.031300, 0.052907, 0.005155, 0.014623, 0.052950, 0.000712, - 0.046135, 0.045165, -0.038924, -0.003875, 0.025099, -0.011707, - 0.066019, 0.054873, -0.041668, 0.007499, 0.013061, -0.005505, - 0.002547, -0.001165, -0.035166, -0.020371, -0.008851, -0.001813, - 0.001882, 0.037708, 0.019615, 0.011839, 0.028403, -0.014071, - -0.002227, 0.028264, 0.012202, 0.021426, 0.005997, -0.001640, - -0.051106, 0.007834, -0.018523, -0.004124, -0.027884, 0.003167, - -0.038004, -0.020694, -0.024553, -0.008889, -0.017169, 0.001588, - -0.011088, -0.016418, -0.007602, -0.006141, 0.002030, 0.004245, - -0.031274, -0.040238, 0.012816, -0.008971, -0.026728, -0.036396, - -0.032692, -0.026315, 0.035465, -0.005847, -0.053908, -0.002383, - -0.017281, -0.041913, -0.030241, -0.009348, -0.022524, -0.019265, - -0.012960, 0.026102, 0.010909, -0.035635, -0.003921, 0.012148, - -0.027843, 0.024057, 0.050146, 0.023851, -0.002109, -0.001293, - 0.022593, -0.035858, -0.015163, -0.025216, 0.013198, 0.007493, - 0.010886, 0.004452, -0.015633, 0.000652, -0.018078, -0.002484, - 0.004914, -0.004984, 0.027932, -0.020501, -0.003740, 0.004419, - -0.004436, -0.030994, -0.021285, 0.005444, -0.033532, 0.001477, - 0.002981, 0.005749, -0.011077, -0.005016, -0.008365, -0.012923, - -0.022360, -0.026228, -0.015685, 0.007378, -0.025034, -0.019950, - -0.021858, -0.021216, 0.037968, -0.002028, -0.051909, -0.020519, - -0.042976, -0.006306, 0.029173, -0.023769, -0.037392, -0.007285, - -0.032698, 0.003951, 0.040669, 0.017567, -0.019332, -0.037993, - 0.008389, -0.006623, 0.095812, 0.047116, -0.023980, -0.053171, - 0.060874, -0.019618, -0.010110, -0.014993, -0.012955, -0.009339, - 0.029783, -0.027512, -0.021508, 0.040240, -0.017042, -0.013740, - 0.003266, -0.011576, -0.012438, 0.021097, 0.018892, 0.021570, - 0.018777, 0.015450, -0.013135, -0.009248, 0.040532, 0.020847, - -0.002355, -0.019897, 0.000371, 0.008520, 0.024177, 0.010952, - -0.008997, -0.003590, 0.025942, 0.011185, -0.030369, -0.028212, - -0.023112, -0.004475, 0.038614, 0.039117, -0.022464, -0.019728, - -0.016380, 0.007415, 0.007496, -0.002839, 0.040709, -0.011203, - -0.030100, -0.023045, 0.007736, 0.040646, 0.037756, -0.023762, - 0.014817, -0.015112, 0.024903, 0.038254, -0.005235, -0.007781, - -0.024961, -0.015465, 0.031214, 0.012035, -0.003712, 0.006169, - -0.003722, -0.012354, 0.011138, 0.021998, 0.012236, -0.002424, - -0.011251, 0.024543, 0.004320, -0.001279, 0.012892, 0.010223, - -0.006267, 0.044725, 0.025906, -0.005346, 0.012788, 0.015126, - -0.009300, 0.038475, 0.014409, -0.025033, 0.004781, 0.012536, - -0.012612, 0.022944, -0.024662, -0.031301, -0.000543, -0.013372, - -0.011026, 0.015598, -0.012262, -0.005028, 0.011314, -0.004007, - -0.008878, 0.006952, -0.007560, 0.010334, 0.018542, 0.009935, - 0.009940, 0.001093, 0.029326, 0.036693, 0.006777, 0.002699, - -0.003907, -0.023880, 0.033256, 0.020016, 0.018529, 0.004914, - 0.013458, 0.002938, 0.014664, -0.022178, -0.003043, -0.010316, - 0.020069, -0.011239, 0.003989, -0.004390, -0.006983, -0.011944, - 0.004816, -0.006642, -0.004364, -0.010319, -0.014454, 0.011192, - 0.004075, -0.011375, 0.006814, 0.016840, -0.008444, -0.004428, - 0.014782, -0.030293, -0.018911, 0.028453, -0.013416, -0.012317, - 0.003179, -0.032135, -0.043168, -0.012074, -0.023527, -0.018841, - 0.005826, -0.016578, -0.020290, -0.012082, -0.020588, -0.005393, - 0.008550, 0.005642, -0.024965, -0.017169, 0.002771, 0.007873, - 0.055881, 0.015767, 0.008005, -0.002335, 0.005265, -0.009285, - 0.057058, 0.029727, 0.008588, -0.027790, 0.009845, 0.010461, - -0.003907, -0.023880, 0.033256, 0.020016, 0.018529, 0.004914, - 0.009940, 0.001093, 0.029326, 0.036693, 0.006777, 0.002699, - -0.008878, 0.006952, -0.007560, 0.010334, 0.018542, 0.009935, - -0.011026, 0.015598, -0.012262, -0.005028, 0.011314, -0.004007, - -0.012612, 0.022944, -0.024662, -0.031301, -0.000543, -0.013372, - -0.009300, 0.038475, 0.014409, -0.025033, 0.004781, 0.012536, - -0.006267, 0.044725, 0.025906, -0.005346, 0.012788, 0.015126, - -0.011251, 0.024543, 0.004320, -0.001279, 0.012892, 0.010223, - -0.003722, -0.012354, 0.011138, 0.021998, 0.012236, -0.002424, - -0.024961, -0.015465, 0.031214, 0.012035, -0.003712, 0.006169, - 0.057058, 0.029727, 0.008588, -0.027790, 0.009845, 0.010461, - 0.055881, 0.015767, 0.008005, -0.002335, 0.005265, -0.009285, - 0.008550, 0.005642, -0.024965, -0.017169, 0.002771, 0.007873, - 0.005826, -0.016578, -0.020290, -0.012082, -0.020588, -0.005393, - 0.003179, -0.032135, -0.043168, -0.012074, -0.023527, -0.018841, - 0.014782, -0.030293, -0.018911, 0.028453, -0.013416, -0.012317, - 0.004075, -0.011375, 0.006814, 0.016840, -0.008444, -0.004428, - 0.004816, -0.006642, -0.004364, -0.010319, -0.014454, 0.011192, - 0.020069, -0.011239, 0.003989, -0.004390, -0.006983, -0.011944, - 0.013458, 0.002938, 0.014664, -0.022178, -0.003043, -0.010316, - 0.000000, - 10.000000, 6.000000, 31.000000, - -0.025702, 0.018886, -0.049352, -0.017654, -0.013963, -0.051000, -0.040879, 0.004483, -0.000488, -0.005033, - -0.036709, -0.004659, -0.037289, -0.002002, -0.000376, -0.023005, -0.048054, -0.021069, 0.030636, -0.010220, - -0.018901, 0.011010, -0.006432, 0.007098, 0.008787, -0.016522, -0.042748, -0.049617, 0.006542, 0.032333, - -0.015424, 0.022260, 0.019146, 0.002112, 0.008966, -0.015851, -0.030215, -0.058263, -0.027327, -0.028752, - -0.035240, 0.004105, 0.000836, 0.008532, 0.007308, -0.033850, -0.022456, -0.025988, -0.011643, -0.006298, - -0.039767, -0.029246, 0.010255, 0.019109, 0.009146, -0.028349, -0.014966, 0.004447, 0.039551, 0.025177, - 0.017265, 0.017230, -0.017276, -0.002586, 0.009514, 0.000510, 0.005483, 0.029634, -0.006387, 0.003144, - 0.013854, 0.013374, -0.014295, -0.018733, -0.021956, -0.008723, -0.016306, 0.001960, 0.032607, 0.024269, - 0.002015, 0.014728, -0.009934, -0.022876, -0.012139, -0.034765, -0.030027, 0.006802, 0.012552, -0.016491, - -0.014404, -0.010381, 0.001455, -0.018922, -0.009262, -0.049053, -0.011648, 0.000245, -0.001307, -0.009786, - 0.031586, 0.048349, -0.003410, -0.009510, -0.011952, -0.023520, 0.007140, 0.016673, -0.024710, -0.010950, - 0.008924, 0.007865, -0.001117, -0.000214, 0.015052, -0.015245, -0.002024, 0.011756, 0.000414, 0.010093, - -0.015886, 0.006821, -0.018097, -0.051139, 0.008265, -0.006154, 0.019827, 0.029999, -0.009021, 0.005288, - 0.066094, 0.030342, -0.031876, -0.032434, -0.000763, 0.014908, 0.030659, 0.012203, 0.005417, -0.015345, - 0.050480, 0.007369, -0.028764, 0.002129, -0.000812, 0.007379, -0.000148, -0.003033, 0.006287, -0.021701, - 0.032983, 0.011470, -0.008996, -0.000189, -0.003965, -0.000667, -0.008267, 0.009053, -0.009037, -0.028636, - 0.009789, 0.001615, -0.003222, -0.020323, -0.012384, 0.011720, 0.006338, -0.023269, 0.011359, -0.018492, - 0.028220, -0.013523, 0.008078, -0.017395, 0.010134, 0.002207, 0.001919, -0.018667, -0.016222, 0.011110, - 0.018771, 0.006729, 0.014181, -0.013395, -0.031512, -0.012227, -0.001140, -0.019860, -0.028432, -0.017272, - 0.024030, -0.009723, 0.005627, 0.008758, -0.023013, 0.002422, 0.044347, -0.007943, -0.008719, -0.010294, - 0.023518, -0.020659, -0.005023, -0.008372, -0.008760, 0.011504, 0.026598, -0.001899, -0.017836, -0.012894, - 0.043599, 0.003684, -0.013481, -0.001367, -0.013284, -0.006286, 0.002259, -0.004973, -0.012522, -0.005347, - 0.001008, 0.001381, 0.012107, -0.011761, -0.022858, -0.013373, -0.007578, -0.005722, -0.011265, -0.012640, - -0.013455, -0.012108, -0.009577, -0.010303, 0.026304, -0.035382, -0.008266, 0.010533, -0.016474, 0.005205, - -0.001463, -0.017000, -0.025625, 0.021363, -0.026149, 0.009128, 0.015171, 0.002102, 0.027708, 0.056958, - -0.019238, -0.023854, 0.012002, -0.003331, -0.027047, -0.004416, -0.010806, -0.012845, -0.007719, 0.020204, - -0.022437, -0.013316, 0.004654, 0.004768, -0.035736, -0.022501, -0.039245, -0.014494, -0.007034, 0.022807, - -0.035235, -0.046728, 0.042983, 0.014732, -0.010799, 0.000566, -0.045780, -0.003818, -0.019618, 0.010314, - -0.007132, 0.004956, 0.048532, -0.015716, 0.014211, -0.004759, -0.050375, -0.007623, -0.032813, -0.022019, - -0.012071, -0.003208, 0.011644, -0.034604, 0.035819, -0.013092, -0.023361, 0.004610, -0.000738, 0.014465, - 0.042493, 0.054271, 0.022207, -0.038005, 0.010324, 0.026363, 0.014786, -0.012230, -0.018587, 0.012967, - -0.043341, 0.023443, 0.030918, -0.083141, -0.025689, -0.005321, -0.029476, -0.005051, -0.017371, -0.001936, - -0.037151, -0.008303, 0.030679, -0.028986, -0.024894, 0.021519, -0.020172, 0.020579, 0.027276, -0.000466, - -0.045022, -0.012954, 0.014518, -0.006340, -0.006358, 0.016731, -0.036670, 0.031242, 0.041680, 0.032854, - -0.036258, -0.038508, 0.000217, -0.026255, -0.042006, 0.047352, -0.003155, 0.011874, 0.049598, 0.046823, - -0.012834, -0.010352, -0.006832, -0.015176, -0.014957, 0.026648, 0.000077, 0.019967, 0.012778, 0.020966, - -0.007931, 0.026671, 0.042735, -0.001231, 0.025023, 0.020047, 0.031176, 0.002250, 0.001229, -0.001696, - -0.010796, 0.018732, 0.036824, -0.008127, -0.001903, 0.031472, -0.007122, 0.016573, -0.012614, 0.004765, - -0.020722, 0.018215, 0.026861, 0.009814, 0.006544, 0.040174, -0.016473, -0.024102, -0.013505, 0.009896, - -0.017150, -0.002421, 0.061196, 0.051432, -0.029671, 0.002489, -0.008050, -0.010446, 0.013529, 0.022118, - -0.019815, -0.023384, -0.002855, 0.019029, -0.027169, 0.014135, -0.005411, -0.011923, 0.008100, -0.004680, - -0.011038, -0.027254, -0.031225, 0.008859, 0.009229, 0.005388, -0.012765, -0.005815, 0.003079, 0.005828, - -0.031928, -0.013810, -0.006469, -0.011253, 0.008906, 0.029998, 0.024667, -0.012566, 0.011940, -0.013901, - -0.012134, 0.030135, 0.012098, 0.004614, 0.020354, -0.007222, 0.040970, 0.002669, -0.022992, -0.019634, - -0.019550, -0.006416, 0.012092, 0.014614, 0.002926, -0.016165, 0.018318, -0.008132, -0.009666, 0.009263, - -0.005192, -0.004149, 0.004995, -0.007034, -0.015465, -0.011601, 0.009437, -0.036136, -0.003809, 0.010588, - -0.009866, -0.025293, -0.002254, -0.005481, -0.004078, -0.020338, -0.007009, -0.036073, -0.023836, -0.001280, - 0.042876, 0.009956, 0.015512, 0.037853, 0.000219, -0.027943, -0.029110, -0.040854, -0.017833, 0.009609, - -0.015220, -0.014559, 0.016297, -0.003772, -0.012368, 0.024183, -0.003872, -0.005376, -0.013489, 0.003981, - -0.002120, 0.005582, -0.020075, -0.009151, -0.034830, -0.008943, -0.000071, 0.030601, 0.012785, 0.008717, - -0.024051, -0.011776, -0.008531, 0.004944, -0.008460, -0.001020, 0.011988, 0.030556, 0.053606, 0.056747, - -0.000104, -0.010640, -0.000965, 0.001789, -0.004372, -0.009633, -0.002977, -0.015754, 0.008745, 0.032103, - -0.008618, -0.017763, -0.002656, 0.010850, 0.000158, 0.004004, 0.002488, -0.016958, -0.010405, -0.000571, - -0.001002, 0.006511, 0.006915, 0.003408, -0.036304, 0.004161, 0.001406, -0.002765, -0.000471, -0.003634, - -0.043105, 0.005090, 0.014052, 0.008808, 0.000416, 0.014193, 0.052990, -0.005641, 0.008083, 0.018665, - -0.018866, 0.009672, 0.000896, 0.012029, -0.018962, -0.012446, 0.020784, 0.033280, -0.005903, -0.027864, - -0.042680, -0.029905, 0.023397, 0.013954, 0.019642, -0.012778, 0.015965, 0.020876, 0.000187, -0.008686, - 0.038860, 0.004319, -0.024255, -0.025900, -0.007116, 0.007782, 0.014169, 0.007531, -0.007791, 0.017755, - -0.004559, -0.015325, -0.002609, -0.011618, 0.013264, 0.017691, -0.005288, 0.006524, -0.018581, 0.004401, - -0.028965, -0.007487, -0.009736, 0.005298, -0.007201, 0.014025, 0.012484, 0.001790, -0.024697, 0.002751, - -0.018761, 0.022844, 0.010472, 0.003999, -0.014494, -0.012673, 0.039350, 0.055942, 0.004651, -0.004329, - 0.003165, 0.022957, -0.015157, -0.008971, -0.009622, -0.052374, 0.016298, 0.039106, -0.007548, -0.009926, - -0.013437, -0.011475, -0.011980, 0.007021, 0.032397, -0.010908, -0.022263, 0.001729, 0.004461, -0.003387, - 0.037934, 0.015812, -0.012865, -0.014378, 0.019913, 0.019331, -0.022532, 0.000969, 0.003912, -0.007817, - 0.009821, 0.011067, 0.007350, -0.008160, 0.013446, -0.005834, -0.003672, -0.000827, -0.002951, -0.010439, - 0.007917, -0.002892, -0.035293, -0.034379, 0.012480, -0.000221, 0.017504, -0.014674, -0.004634, -0.033675, - 0.069597, 0.048453, -0.014126, 0.025903, -0.013199, -0.030436, 0.043333, 0.047464, 0.011968, -0.019734, - 0.042632, 0.017361, -0.003151, 0.006683, -0.004241, -0.016846, -0.000424, 0.003463, 0.014142, -0.011545, - 0.058441, 0.009364, 0.013926, -0.005949, 0.018004, -0.010600, -0.048382, -0.024500, -0.024076, -0.020180, - 0.022895, 0.038445, 0.012625, -0.006627, -0.012709, -0.007940, -0.025300, 0.010890, 0.011442, 0.007310, - 0.036172, 0.009673, -0.014558, -0.024682, 0.022263, -0.042372, -0.039448, 0.014730, 0.011517, 0.013840, - 0.028589, 0.004492, -0.017143, -0.017357, 0.008238, 0.000619, 0.015483, 0.022310, 0.003375, -0.014949, - -0.002187, 0.034350, -0.022023, -0.005832, 0.015679, -0.048571, -0.025125, 0.046360, 0.018527, 0.036692, - -0.010190, 0.027877, 0.007751, -0.002181, -0.005462, -0.015286, -0.018143, 0.008577, 0.007068, 0.008996, - 0.013109, 0.028270, 0.017899, -0.000809, -0.020281, 0.011099, -0.013930, -0.008763, 0.004483, -0.002853, - -0.002126, -0.010636, -0.000559, -0.005321, -0.001304, 0.016144, -0.012033, -0.012111, -0.038720, -0.017766, - -0.002776, 0.004532, -0.003622, 0.002114, 0.035788, -0.001222, 0.025517, -0.012260, -0.000636, -0.030650, - 0.010791, 0.038907, -0.015618, 0.007383, 0.007390, 0.020851, 0.016658, -0.003679, -0.005119, -0.009445, - 0.032738, 0.023406, 0.029463, -0.016169, -0.019195, -0.013406, -0.025992, -0.016658, -0.029430, 0.049466, - 0.026687, 0.008868, -0.013313, -0.018440, -0.019549, -0.011755, -0.006224, -0.019273, -0.008747, 0.018299, - 0.018060, 0.046183, -0.009485, 0.027056, -0.021542, 0.025952, 0.020956, 0.012070, 0.006482, 0.031571, - -0.029927, 0.039385, -0.006814, -0.003600, -0.001480, 0.024192, 0.005204, 0.018379, 0.026954, 0.027436, - -0.023385, 0.029968, 0.002491, -0.003575, -0.004550, 0.009696, 0.028264, 0.005297, 0.012065, 0.052228, - -0.031763, 0.077334, -0.018745, 0.062653, -0.000280, 0.022611, 0.021044, -0.035865, -0.023895, 0.034033, - 0.030949, -0.029007, 0.033040, -0.006650, 0.027227, 0.020435, -0.015138, 0.047323, 0.028153, -0.028692, - -0.002484, -0.005601, 0.035441, -0.010804, -0.011633, 0.035812, -0.000688, 0.014683, 0.042469, -0.042531, - 0.000987, -0.003312, 0.011577, 0.042562, 0.000237, 0.026196, 0.042136, 0.044393, 0.030270, -0.001146, - 0.023317, 0.014981, 0.014497, 0.045035, 0.015444, 0.046989, 0.029251, 0.048464, 0.019616, 0.011376, - -0.017766, -0.008610, -0.005668, 0.025518, 0.026075, 0.042903, 0.027707, 0.016199, 0.010319, -0.026640, - -0.039335, 0.047822, 0.024906, 0.007793, 0.015005, -0.008484, -0.015180, 0.016305, 0.046851, 0.001307, - 0.015746, 0.015584, 0.037452, 0.015821, 0.028588, -0.013119, 0.005395, 0.038016, 0.043794, -0.008652, - -0.001660, 0.008794, 0.029907, 0.011748, 0.037704, 0.008234, 0.003043, -0.001578, 0.009773, -0.018182, - 0.011626, -0.012366, -0.000345, 0.007875, -0.009440, -0.008358, -0.017423, 0.004556, -0.004601, -0.003865, - 0.001017, 0.003435, 0.010522, 0.033718, 0.012458, -0.000073, 0.002857, 0.011648, 0.021281, 0.018254, - -0.000347, -0.000604, 0.026912, 0.030701, 0.009501, 0.008226, 0.001834, 0.005848, 0.017874, 0.013628, - -0.030037, -0.001912, -0.010857, -0.009854, -0.017442, 0.033821, -0.010897, 0.011092, -0.005269, 0.020231, - 0.004986, 0.021281, 0.005455, -0.005555, 0.008269, 0.009204, 0.026751, 0.033741, 0.003881, 0.000164, - 0.008306, 0.016453, 0.018414, -0.009015, 0.001193, 0.038381, 0.018501, 0.016700, -0.008489, 0.002274, - -0.001443, -0.013806, -0.008184, -0.038403, -0.004134, 0.053630, 0.041587, -0.001596, -0.051530, -0.036117, - 0.014821, -0.012150, -0.011113, 0.010360, -0.015077, 0.005836, 0.013194, -0.011636, -0.040192, 0.005820, - 0.016510, -0.003735, -0.006925, 0.018163, 0.016655, -0.001295, -0.020949, -0.024969, -0.027438, 0.002345, - -0.011663, -0.002088, -0.002744, -0.001767, -0.024494, 0.014144, -0.042317, -0.026043, -0.017659, 0.019999, - 0.007566, -0.005534, 0.010445, -0.014876, 0.008177, -0.009009, 0.005833, 0.011173, 0.006606, -0.024977, - -0.017565, -0.010066, 0.007340, -0.004181, -0.044605, 0.011616, -0.028248, -0.000423, 0.020132, 0.004034, - -0.020868, -0.018024, -0.034279, -0.017209, -0.007967, 0.008206, 0.018002, -0.006295, -0.000623, -0.006926, - -0.006804, 0.012255, -0.007353, 0.008107, -0.016240, -0.004679, 0.024844, -0.005686, -0.031122, -0.033442, - -0.013869, 0.005598, -0.016976, -0.007582, -0.001714, -0.003202, -0.003830, 0.008899, -0.006220, -0.000766, - -0.024950, -0.003068, -0.005146, 0.007199, 0.044718, -0.005586, -0.033710, 0.007983, 0.031152, 0.049340, - -0.045146, 0.031436, -0.006050, -0.000204, 0.012264, -0.009019, 0.054820, 0.026449, -0.001584, 0.008375, - -0.050783, 0.014004, -0.009155, -0.011375, -0.021106, -0.026040, -0.021867, 0.021569, 0.011241, -0.030681, - -0.043021, -0.011149, 0.023805, 0.022228, 0.014504, -0.016393, -0.012231, 0.000399, -0.003142, 0.004360, - 0.018643, 0.014186, 0.000138, -0.011393, 0.008621, -0.003990, -0.003152, -0.039875, -0.027186, -0.004412, - -0.000645, 0.017658, 0.025934, 0.021216, 0.011765, -0.008142, -0.005896, -0.008652, -0.027335, 0.022555, - -0.023689, -0.014301, -0.000977, 0.028401, 0.008058, 0.000281, -0.002703, 0.009423, 0.009974, 0.036663, - -0.004339, 0.032657, -0.002788, 0.007467, -0.003210, -0.011122, 0.051259, 0.077644, -0.002534, -0.009847, - 0.006209, 0.027301, -0.021070, -0.026263, -0.037331, -0.058280, 0.007128, 0.030542, 0.023682, 0.017196, - -0.002937, 0.005618, -0.018748, -0.003859, 0.024131, -0.036970, -0.039645, 0.012630, 0.020421, -0.019062, - 0.011424, -0.004125, -0.007527, -0.028948, 0.013607, -0.017865, -0.029528, -0.010029, 0.006002, -0.021247, - 0.034846, 0.041389, 0.004277, -0.011840, 0.003570, -0.020265, 0.007073, -0.005995, -0.036057, -0.024483, - 0.013787, 0.009514, -0.031813, -0.022700, 0.010487, -0.002209, 0.007366, -0.000947, -0.001153, -0.018526, - 0.022975, 0.049004, -0.002198, -0.003377, -0.020311, -0.040042, 0.040369, 0.046495, 0.003738, -0.017163, - 0.048898, 0.040085, -0.025124, -0.019199, -0.021196, -0.021583, 0.008543, 0.011893, 0.026888, -0.023774, - 0.054777, 0.023552, -0.014458, -0.001800, 0.005107, 0.003835, -0.041929, -0.036822, -0.020012, -0.014679, - 0.035853, 0.015127, 0.002179, -0.008235, -0.003957, 0.016121, -0.030352, -0.019409, -0.011913, -0.024721, - 0.038686, 0.013139, -0.013402, -0.041509, 0.018833, -0.017686, -0.042637, -0.004651, -0.002442, -0.001153, - 0.004657, -0.005191, -0.002751, -0.031939, 0.007085, -0.010446, 0.017562, 0.001292, -0.008109, 0.005006, - 0.013427, 0.018158, 0.015672, -0.001546, -0.014924, -0.044687, -0.019188, 0.012353, -0.003374, 0.001038, - 0.017020, 0.016114, 0.000774, 0.020042, -0.024929, -0.028597, -0.004034, -0.001622, -0.010131, -0.023881, - 0.019958, 0.001976, 0.006046, -0.002052, -0.019398, 0.002278, -0.010360, -0.016509, -0.010193, -0.017821, - 0.021008, -0.016823, -0.021732, -0.011988, -0.020421, 0.003860, -0.017546, -0.022440, -0.041403, -0.024114, - -0.013526, 0.021456, 0.021968, -0.000606, -0.008407, -0.033373, -0.009474, -0.024039, -0.017962, -0.039882, - -0.010840, 0.026167, -0.016754, 0.002174, 0.002960, -0.014030, -0.003113, 0.016927, -0.025500, -0.026723, - 0.060795, 0.008609, -0.001191, 0.012103, -0.036774, -0.049596, -0.037172, 0.007729, 0.005124, 0.036666, - 0.013572, -0.012836, -0.019105, 0.005644, -0.025883, -0.038875, -0.025705, 0.011069, -0.013555, -0.011537, - -0.010250, 0.039663, -0.017183, 0.027120, -0.025045, -0.013323, -0.003185, 0.009996, -0.009074, 0.025521, - -0.054293, 0.027628, 0.014370, -0.006917, -0.009707, -0.013543, -0.023418, 0.006253, 0.004440, 0.024347, - -0.028215, 0.040944, 0.045271, -0.008593, -0.002698, -0.015492, -0.022338, -0.011845, -0.029842, 0.030350, - -0.026992, 0.057626, -0.011868, 0.036785, 0.034784, 0.008935, -0.013185, -0.032542, -0.016790, 0.029559, - 0.037004, 0.005638, 0.071243, -0.009283, 0.027503, 0.007248, 0.007745, 0.021422, 0.030046, 0.034357, - -0.013561, 0.022539, 0.037555, -0.043616, -0.023667, -0.023072, -0.012501, 0.014612, 0.017106, -0.014452, - -0.007187, 0.016308, 0.008845, 0.030986, -0.025088, -0.026120, 0.006731, 0.020944, 0.026104, -0.003546, - -0.022031, 0.010828, 0.006329, 0.005743, -0.002491, 0.023958, -0.029927, 0.009155, 0.049488, 0.025802, - -0.039463, -0.011799, -0.012018, -0.010799, 0.002659, 0.009124, -0.014209, -0.011931, 0.038101, 0.008165, - -0.040234, 0.045663, 0.006952, -0.019621, -0.011557, -0.019301, -0.015540, 0.016264, 0.022528, 0.033951, - -0.007514, 0.011648, 0.027086, 0.002122, 0.013504, -0.000199, 0.019153, 0.037847, 0.043607, 0.000753, - -0.021723, -0.000063, 0.013547, -0.004562, 0.021383, -0.004710, 0.012533, 0.002776, -0.000806, -0.025531, - -0.011925, 0.000474, -0.002941, -0.020682, -0.007290, 0.008540, -0.004553, -0.014418, -0.019594, -0.000836, - -0.018661, 0.008341, 0.023125, 0.038631, -0.016575, -0.022190, -0.009623, -0.014754, 0.018110, 0.023974, - -0.027448, -0.014128, 0.007252, 0.000997, -0.027679, 0.010645, -0.010280, -0.022794, 0.013265, -0.009073, - -0.042826, -0.013341, -0.026963, -0.009699, -0.017591, 0.022400, -0.026394, -0.002047, -0.023702, 0.013109, - -0.031946, 0.000619, 0.001419, -0.003788, 0.028086, 0.006496, 0.023475, 0.008733, 0.001954, -0.004344, - -0.022602, 0.012255, 0.030692, -0.011399, 0.025664, 0.034942, 0.041340, 0.009407, -0.038009, -0.007878, - -0.036169, -0.018156, 0.003700, -0.019642, 0.001371, 0.024075, 0.057806, -0.018258, -0.065362, -0.022063, - 0.000279, -0.016295, 0.002001, 0.009229, -0.018958, -0.001038, 0.000561, -0.048017, -0.040604, 0.006767, - 0.000567, -0.027970, 0.006722, 0.025100, 0.005259, -0.009971, -0.030165, -0.055450, -0.047572, 0.004122, - 0.004835, 0.002503, 0.005190, 0.028851, -0.013519, -0.009990, -0.056194, -0.066347, -0.037116, 0.013877, - -0.004962, -0.013631, 0.021558, -0.013164, 0.001145, 0.002846, 0.000070, 0.006931, -0.001837, -0.026253, - -0.021144, -0.012462, -0.011813, -0.011319, -0.074810, -0.000442, -0.031071, 0.025270, 0.018851, -0.004256, - -0.037836, -0.027195, -0.040812, -0.007955, -0.011892, 0.005860, 0.025781, 0.015471, 0.037209, 0.028743, - -0.017646, -0.001775, -0.008685, 0.005555, -0.021969, -0.013928, 0.022635, -0.030360, -0.017181, 0.006304, - -0.028482, -0.010633, -0.018761, 0.006534, -0.003002, -0.003925, -0.005379, -0.011105, -0.015864, 0.001825, - -0.027857, -0.001123, 0.005571, 0.014137, 0.004604, 0.004473, -0.033308, -0.008902, 0.013223, 0.035042, - 0.006070, 0.033869, 0.023730, -0.017652, 0.005831, 0.014658, 0.024316, 0.027317, 0.004669, 0.013433, - 0.011743, 0.035639, 0.002893, -0.019620, -0.008883, 0.014149, 0.001287, 0.000965, 0.011022, -0.009145, - 0.016313, 0.001145, -0.008484, 0.013292, -0.000435, 0.021961, -0.021471, -0.019618, -0.003931, -0.002072, - 0.020421, 0.009602, 0.009843, -0.002310, -0.007517, 0.003588, -0.022303, -0.011791, 0.013517, 0.036959, - -0.009327, -0.000563, 0.005827, -0.010089, 0.008071, 0.000110, -0.012271, -0.017122, 0.011030, 0.035641, - -0.012018, 0.012029, -0.002175, 0.009944, 0.026590, 0.010332, -0.017022, -0.015033, 0.019786, 0.041920, - -0.003580, 0.004905, -0.006737, -0.008626, 0.013410, -0.021088, 0.030337, 0.034535, -0.002566, -0.008052, - -0.022259, 0.003471, 0.003699, -0.025511, -0.027554, -0.009442, 0.011474, 0.027276, 0.000677, -0.014699, - -0.037682, -0.011416, -0.003000, -0.016018, -0.018738, 0.002427, 0.001576, 0.004851, -0.005182, -0.001138, - -0.017063, -0.006106, 0.007862, 0.001119, -0.038279, -0.012558, -0.021884, 0.003829, -0.008234, 0.014155, - -0.015945, -0.014792, -0.006505, -0.000030, -0.007087, -0.016145, -0.018178, -0.008918, -0.013211, -0.015719, - -0.015161, -0.007001, -0.027098, -0.002211, 0.001455, 0.000183, -0.016370, -0.015877, -0.022541, -0.000715, - 0.023723, 0.026824, 0.034666, -0.029945, -0.003998, 0.002152, 0.009854, 0.036525, 0.023286, 0.014059, - 0.010030, 0.034408, 0.020810, -0.015731, -0.030164, -0.002011, -0.005414, 0.007300, 0.013870, 0.001943, - 0.014209, 0.016165, 0.012205, 0.014883, -0.002465, 0.008446, -0.005078, -0.004772, 0.010205, 0.012418, - 0.033910, 0.020870, 0.015616, 0.030999, 0.003939, 0.018727, -0.013341, -0.009932, -0.018877, -0.008985, - 0.009967, 0.010973, 0.010718, -0.004002, 0.022994, 0.018219, -0.005970, -0.010431, -0.006286, -0.003761, - -0.016839, 0.024161, -0.002679, 0.002811, 0.026994, 0.005361, -0.007944, -0.001043, 0.016338, 0.044488, - 0.010521, 0.038913, -0.012612, 0.003322, -0.006047, -0.015772, 0.016864, 0.031803, 0.003229, 0.010277, - 0.005042, 0.011187, 0.001855, -0.017710, -0.023153, -0.013771, -0.003086, 0.017083, 0.009751, -0.013889, - -0.013112, -0.012595, 0.007824, -0.003092, -0.009299, 0.001126, -0.001078, 0.019129, 0.009881, 0.003946, - -0.016508, 0.002027, 0.011715, 0.006777, -0.000720, 0.006401, 0.009324, 0.008277, -0.007283, -0.011781, - -0.019930, -0.001265, 0.005840, 0.000093, -0.008914, 0.000627, 0.003476, -0.001039, -0.014945, -0.021893, - -0.017057, 0.008405, -0.008929, -0.001821, -0.011173, -0.011080, -0.008644, 0.014244, -0.011609, -0.006303, - 5.000000, - 10.000000, 6.000000, 31.000000, - -0.028965, -0.007487, -0.009736, 0.005298, -0.007201, 0.014025, 0.012484, 0.001790, -0.024697, 0.002751, - -0.004559, -0.015325, -0.002609, -0.011618, 0.013264, 0.017691, -0.005288, 0.006524, -0.018581, 0.004401, - 0.038860, 0.004319, -0.024255, -0.025900, -0.007116, 0.007782, 0.014169, 0.007531, -0.007791, 0.017755, - -0.042680, -0.029905, 0.023397, 0.013954, 0.019642, -0.012778, 0.015965, 0.020876, 0.000187, -0.008686, - -0.018866, 0.009672, 0.000896, 0.012029, -0.018962, -0.012446, 0.020784, 0.033280, -0.005903, -0.027864, - -0.043105, 0.005090, 0.014052, 0.008808, 0.000416, 0.014193, 0.052990, -0.005641, 0.008083, 0.018665, - -0.001002, 0.006511, 0.006915, 0.003408, -0.036304, 0.004161, 0.001406, -0.002765, -0.000471, -0.003634, - -0.008618, -0.017763, -0.002656, 0.010850, 0.000158, 0.004004, 0.002488, -0.016958, -0.010405, -0.000571, - -0.000104, -0.010640, -0.000965, 0.001789, -0.004372, -0.009633, -0.002977, -0.015754, 0.008745, 0.032103, - -0.024051, -0.011776, -0.008531, 0.004944, -0.008460, -0.001020, 0.011988, 0.030556, 0.053606, 0.056747, - -0.002120, 0.005582, -0.020075, -0.009151, -0.034830, -0.008943, -0.000071, 0.030601, 0.012785, 0.008717, - -0.015220, -0.014559, 0.016297, -0.003772, -0.012368, 0.024183, -0.003872, -0.005376, -0.013489, 0.003981, - 0.042876, 0.009956, 0.015512, 0.037853, 0.000219, -0.027943, -0.029110, -0.040854, -0.017833, 0.009609, - -0.009866, -0.025293, -0.002254, -0.005481, -0.004078, -0.020338, -0.007009, -0.036073, -0.023836, -0.001280, - -0.005192, -0.004149, 0.004995, -0.007034, -0.015465, -0.011601, 0.009437, -0.036136, -0.003809, 0.010588, - -0.019550, -0.006416, 0.012092, 0.014614, 0.002926, -0.016165, 0.018318, -0.008132, -0.009666, 0.009263, - -0.012134, 0.030135, 0.012098, 0.004614, 0.020354, -0.007222, 0.040970, 0.002669, -0.022992, -0.019634, - -0.031928, -0.013810, -0.006469, -0.011253, 0.008906, 0.029998, 0.024667, -0.012566, 0.011940, -0.013901, - -0.011038, -0.027254, -0.031225, 0.008859, 0.009229, 0.005388, -0.012765, -0.005815, 0.003079, 0.005828, - -0.019815, -0.023384, -0.002855, 0.019029, -0.027169, 0.014135, -0.005411, -0.011923, 0.008100, -0.004680, - -0.017150, -0.002421, 0.061196, 0.051432, -0.029671, 0.002489, -0.008050, -0.010446, 0.013529, 0.022118, - -0.020722, 0.018215, 0.026861, 0.009814, 0.006544, 0.040174, -0.016473, -0.024102, -0.013505, 0.009896, - -0.010796, 0.018732, 0.036824, -0.008127, -0.001903, 0.031472, -0.007122, 0.016573, -0.012614, 0.004765, - -0.007931, 0.026671, 0.042735, -0.001231, 0.025023, 0.020047, 0.031176, 0.002250, 0.001229, -0.001696, - -0.012834, -0.010352, -0.006832, -0.015176, -0.014957, 0.026648, 0.000077, 0.019967, 0.012778, 0.020966, - -0.036258, -0.038508, 0.000217, -0.026255, -0.042006, 0.047352, -0.003155, 0.011874, 0.049598, 0.046823, - -0.045022, -0.012954, 0.014518, -0.006340, -0.006358, 0.016731, -0.036670, 0.031242, 0.041680, 0.032854, - -0.037151, -0.008303, 0.030679, -0.028986, -0.024894, 0.021519, -0.020172, 0.020579, 0.027276, -0.000466, - -0.043341, 0.023443, 0.030918, -0.083141, -0.025689, -0.005321, -0.029476, -0.005051, -0.017371, -0.001936, - 0.042493, 0.054271, 0.022207, -0.038005, 0.010324, 0.026363, 0.014786, -0.012230, -0.018587, 0.012967, - -0.012071, -0.003208, 0.011644, -0.034604, 0.035819, -0.013092, -0.023361, 0.004610, -0.000738, 0.014465, - -0.007132, 0.004956, 0.048532, -0.015716, 0.014211, -0.004759, -0.050375, -0.007623, -0.032813, -0.022019, - -0.035235, -0.046728, 0.042983, 0.014732, -0.010799, 0.000566, -0.045780, -0.003818, -0.019618, 0.010314, - -0.022437, -0.013316, 0.004654, 0.004768, -0.035736, -0.022501, -0.039245, -0.014494, -0.007034, 0.022807, - -0.019238, -0.023854, 0.012002, -0.003331, -0.027047, -0.004416, -0.010806, -0.012845, -0.007719, 0.020204, - -0.001463, -0.017000, -0.025625, 0.021363, -0.026149, 0.009128, 0.015171, 0.002102, 0.027708, 0.056958, - -0.013455, -0.012108, -0.009577, -0.010303, 0.026304, -0.035382, -0.008266, 0.010533, -0.016474, 0.005205, - 0.001008, 0.001381, 0.012107, -0.011761, -0.022858, -0.013373, -0.007578, -0.005722, -0.011265, -0.012640, - 0.043599, 0.003684, -0.013481, -0.001367, -0.013284, -0.006286, 0.002259, -0.004973, -0.012522, -0.005347, - 0.023518, -0.020659, -0.005023, -0.008372, -0.008760, 0.011504, 0.026598, -0.001899, -0.017836, -0.012894, - 0.024030, -0.009723, 0.005627, 0.008758, -0.023013, 0.002422, 0.044347, -0.007943, -0.008719, -0.010294, - 0.018771, 0.006729, 0.014181, -0.013395, -0.031512, -0.012227, -0.001140, -0.019860, -0.028432, -0.017272, - 0.028220, -0.013523, 0.008078, -0.017395, 0.010134, 0.002207, 0.001919, -0.018667, -0.016222, 0.011110, - 0.009789, 0.001615, -0.003222, -0.020323, -0.012384, 0.011720, 0.006338, -0.023269, 0.011359, -0.018492, - 0.032983, 0.011470, -0.008996, -0.000189, -0.003965, -0.000667, -0.008267, 0.009053, -0.009037, -0.028636, - 0.050480, 0.007369, -0.028764, 0.002129, -0.000812, 0.007379, -0.000148, -0.003033, 0.006287, -0.021701, - 0.066094, 0.030342, -0.031876, -0.032434, -0.000763, 0.014908, 0.030659, 0.012203, 0.005417, -0.015345, - -0.015886, 0.006821, -0.018097, -0.051139, 0.008265, -0.006154, 0.019827, 0.029999, -0.009021, 0.005288, - 0.008924, 0.007865, -0.001117, -0.000214, 0.015052, -0.015245, -0.002024, 0.011756, 0.000414, 0.010093, - 0.031586, 0.048349, -0.003410, -0.009510, -0.011952, -0.023520, 0.007140, 0.016673, -0.024710, -0.010950, - -0.014404, -0.010381, 0.001455, -0.018922, -0.009262, -0.049053, -0.011648, 0.000245, -0.001307, -0.009786, - 0.002015, 0.014728, -0.009934, -0.022876, -0.012139, -0.034765, -0.030027, 0.006802, 0.012552, -0.016491, - 0.013854, 0.013374, -0.014295, -0.018733, -0.021956, -0.008723, -0.016306, 0.001960, 0.032607, 0.024269, - 0.017265, 0.017230, -0.017276, -0.002586, 0.009514, 0.000510, 0.005483, 0.029634, -0.006387, 0.003144, - -0.039767, -0.029246, 0.010255, 0.019109, 0.009146, -0.028349, -0.014966, 0.004447, 0.039551, 0.025177, - -0.035240, 0.004105, 0.000836, 0.008532, 0.007308, -0.033850, -0.022456, -0.025988, -0.011643, -0.006298, - -0.015424, 0.022260, 0.019146, 0.002112, 0.008966, -0.015851, -0.030215, -0.058263, -0.027327, -0.028752, - -0.018901, 0.011010, -0.006432, 0.007098, 0.008787, -0.016522, -0.042748, -0.049617, 0.006542, 0.032333, - -0.036709, -0.004659, -0.037289, -0.002002, -0.000376, -0.023005, -0.048054, -0.021069, 0.030636, -0.010220, - -0.025702, 0.018886, -0.049352, -0.017654, -0.013963, -0.051000, -0.040879, 0.004483, -0.000488, -0.005033, - -0.024950, -0.003068, -0.005146, 0.007199, 0.044718, -0.005586, -0.033710, 0.007983, 0.031152, 0.049340, - -0.013869, 0.005598, -0.016976, -0.007582, -0.001714, -0.003202, -0.003830, 0.008899, -0.006220, -0.000766, - -0.006804, 0.012255, -0.007353, 0.008107, -0.016240, -0.004679, 0.024844, -0.005686, -0.031122, -0.033442, - -0.020868, -0.018024, -0.034279, -0.017209, -0.007967, 0.008206, 0.018002, -0.006295, -0.000623, -0.006926, - -0.017565, -0.010066, 0.007340, -0.004181, -0.044605, 0.011616, -0.028248, -0.000423, 0.020132, 0.004034, - 0.007566, -0.005534, 0.010445, -0.014876, 0.008177, -0.009009, 0.005833, 0.011173, 0.006606, -0.024977, - -0.011663, -0.002088, -0.002744, -0.001767, -0.024494, 0.014144, -0.042317, -0.026043, -0.017659, 0.019999, - 0.016510, -0.003735, -0.006925, 0.018163, 0.016655, -0.001295, -0.020949, -0.024969, -0.027438, 0.002345, - 0.014821, -0.012150, -0.011113, 0.010360, -0.015077, 0.005836, 0.013194, -0.011636, -0.040192, 0.005820, - -0.001443, -0.013806, -0.008184, -0.038403, -0.004134, 0.053630, 0.041587, -0.001596, -0.051530, -0.036117, - 0.008306, 0.016453, 0.018414, -0.009015, 0.001193, 0.038381, 0.018501, 0.016700, -0.008489, 0.002274, - 0.004986, 0.021281, 0.005455, -0.005555, 0.008269, 0.009204, 0.026751, 0.033741, 0.003881, 0.000164, - -0.030037, -0.001912, -0.010857, -0.009854, -0.017442, 0.033821, -0.010897, 0.011092, -0.005269, 0.020231, - -0.000347, -0.000604, 0.026912, 0.030701, 0.009501, 0.008226, 0.001834, 0.005848, 0.017874, 0.013628, - 0.001017, 0.003435, 0.010522, 0.033718, 0.012458, -0.000073, 0.002857, 0.011648, 0.021281, 0.018254, - 0.011626, -0.012366, -0.000345, 0.007875, -0.009440, -0.008358, -0.017423, 0.004556, -0.004601, -0.003865, - -0.001660, 0.008794, 0.029907, 0.011748, 0.037704, 0.008234, 0.003043, -0.001578, 0.009773, -0.018182, - 0.015746, 0.015584, 0.037452, 0.015821, 0.028588, -0.013119, 0.005395, 0.038016, 0.043794, -0.008652, - -0.039335, 0.047822, 0.024906, 0.007793, 0.015005, -0.008484, -0.015180, 0.016305, 0.046851, 0.001307, - -0.017766, -0.008610, -0.005668, 0.025518, 0.026075, 0.042903, 0.027707, 0.016199, 0.010319, -0.026640, - 0.023317, 0.014981, 0.014497, 0.045035, 0.015444, 0.046989, 0.029251, 0.048464, 0.019616, 0.011376, - 0.000987, -0.003312, 0.011577, 0.042562, 0.000237, 0.026196, 0.042136, 0.044393, 0.030270, -0.001146, - -0.002484, -0.005601, 0.035441, -0.010804, -0.011633, 0.035812, -0.000688, 0.014683, 0.042469, -0.042531, - 0.030949, -0.029007, 0.033040, -0.006650, 0.027227, 0.020435, -0.015138, 0.047323, 0.028153, -0.028692, - -0.031763, 0.077334, -0.018745, 0.062653, -0.000280, 0.022611, 0.021044, -0.035865, -0.023895, 0.034033, - -0.023385, 0.029968, 0.002491, -0.003575, -0.004550, 0.009696, 0.028264, 0.005297, 0.012065, 0.052228, - -0.029927, 0.039385, -0.006814, -0.003600, -0.001480, 0.024192, 0.005204, 0.018379, 0.026954, 0.027436, - 0.018060, 0.046183, -0.009485, 0.027056, -0.021542, 0.025952, 0.020956, 0.012070, 0.006482, 0.031571, - 0.026687, 0.008868, -0.013313, -0.018440, -0.019549, -0.011755, -0.006224, -0.019273, -0.008747, 0.018299, - 0.032738, 0.023406, 0.029463, -0.016169, -0.019195, -0.013406, -0.025992, -0.016658, -0.029430, 0.049466, - 0.010791, 0.038907, -0.015618, 0.007383, 0.007390, 0.020851, 0.016658, -0.003679, -0.005119, -0.009445, - -0.002776, 0.004532, -0.003622, 0.002114, 0.035788, -0.001222, 0.025517, -0.012260, -0.000636, -0.030650, - -0.002126, -0.010636, -0.000559, -0.005321, -0.001304, 0.016144, -0.012033, -0.012111, -0.038720, -0.017766, - 0.013109, 0.028270, 0.017899, -0.000809, -0.020281, 0.011099, -0.013930, -0.008763, 0.004483, -0.002853, - -0.010190, 0.027877, 0.007751, -0.002181, -0.005462, -0.015286, -0.018143, 0.008577, 0.007068, 0.008996, - -0.002187, 0.034350, -0.022023, -0.005832, 0.015679, -0.048571, -0.025125, 0.046360, 0.018527, 0.036692, - 0.028589, 0.004492, -0.017143, -0.017357, 0.008238, 0.000619, 0.015483, 0.022310, 0.003375, -0.014949, - 0.036172, 0.009673, -0.014558, -0.024682, 0.022263, -0.042372, -0.039448, 0.014730, 0.011517, 0.013840, - 0.022895, 0.038445, 0.012625, -0.006627, -0.012709, -0.007940, -0.025300, 0.010890, 0.011442, 0.007310, - 0.058441, 0.009364, 0.013926, -0.005949, 0.018004, -0.010600, -0.048382, -0.024500, -0.024076, -0.020180, - 0.042632, 0.017361, -0.003151, 0.006683, -0.004241, -0.016846, -0.000424, 0.003463, 0.014142, -0.011545, - 0.069597, 0.048453, -0.014126, 0.025903, -0.013199, -0.030436, 0.043333, 0.047464, 0.011968, -0.019734, - 0.007917, -0.002892, -0.035293, -0.034379, 0.012480, -0.000221, 0.017504, -0.014674, -0.004634, -0.033675, - 0.009821, 0.011067, 0.007350, -0.008160, 0.013446, -0.005834, -0.003672, -0.000827, -0.002951, -0.010439, - 0.037934, 0.015812, -0.012865, -0.014378, 0.019913, 0.019331, -0.022532, 0.000969, 0.003912, -0.007817, - -0.013437, -0.011475, -0.011980, 0.007021, 0.032397, -0.010908, -0.022263, 0.001729, 0.004461, -0.003387, - 0.003165, 0.022957, -0.015157, -0.008971, -0.009622, -0.052374, 0.016298, 0.039106, -0.007548, -0.009926, - -0.018761, 0.022844, 0.010472, 0.003999, -0.014494, -0.012673, 0.039350, 0.055942, 0.004651, -0.004329, - -0.023689, -0.014301, -0.000977, 0.028401, 0.008058, 0.000281, -0.002703, 0.009423, 0.009974, 0.036663, - -0.000645, 0.017658, 0.025934, 0.021216, 0.011765, -0.008142, -0.005896, -0.008652, -0.027335, 0.022555, - 0.018643, 0.014186, 0.000138, -0.011393, 0.008621, -0.003990, -0.003152, -0.039875, -0.027186, -0.004412, - -0.043021, -0.011149, 0.023805, 0.022228, 0.014504, -0.016393, -0.012231, 0.000399, -0.003142, 0.004360, - -0.050783, 0.014004, -0.009155, -0.011375, -0.021106, -0.026040, -0.021867, 0.021569, 0.011241, -0.030681, - -0.045146, 0.031436, -0.006050, -0.000204, 0.012264, -0.009019, 0.054820, 0.026449, -0.001584, 0.008375, - -0.027857, -0.001123, 0.005571, 0.014137, 0.004604, 0.004473, -0.033308, -0.008902, 0.013223, 0.035042, - -0.028482, -0.010633, -0.018761, 0.006534, -0.003002, -0.003925, -0.005379, -0.011105, -0.015864, 0.001825, - -0.017646, -0.001775, -0.008685, 0.005555, -0.021969, -0.013928, 0.022635, -0.030360, -0.017181, 0.006304, - -0.037836, -0.027195, -0.040812, -0.007955, -0.011892, 0.005860, 0.025781, 0.015471, 0.037209, 0.028743, - -0.021144, -0.012462, -0.011813, -0.011319, -0.074810, -0.000442, -0.031071, 0.025270, 0.018851, -0.004256, - -0.004962, -0.013631, 0.021558, -0.013164, 0.001145, 0.002846, 0.000070, 0.006931, -0.001837, -0.026253, - 0.004835, 0.002503, 0.005190, 0.028851, -0.013519, -0.009990, -0.056194, -0.066347, -0.037116, 0.013877, - 0.000567, -0.027970, 0.006722, 0.025100, 0.005259, -0.009971, -0.030165, -0.055450, -0.047572, 0.004122, - 0.000279, -0.016295, 0.002001, 0.009229, -0.018958, -0.001038, 0.000561, -0.048017, -0.040604, 0.006767, - -0.036169, -0.018156, 0.003700, -0.019642, 0.001371, 0.024075, 0.057806, -0.018258, -0.065362, -0.022063, - -0.022602, 0.012255, 0.030692, -0.011399, 0.025664, 0.034942, 0.041340, 0.009407, -0.038009, -0.007878, - -0.031946, 0.000619, 0.001419, -0.003788, 0.028086, 0.006496, 0.023475, 0.008733, 0.001954, -0.004344, - -0.042826, -0.013341, -0.026963, -0.009699, -0.017591, 0.022400, -0.026394, -0.002047, -0.023702, 0.013109, - -0.027448, -0.014128, 0.007252, 0.000997, -0.027679, 0.010645, -0.010280, -0.022794, 0.013265, -0.009073, - -0.018661, 0.008341, 0.023125, 0.038631, -0.016575, -0.022190, -0.009623, -0.014754, 0.018110, 0.023974, - -0.011925, 0.000474, -0.002941, -0.020682, -0.007290, 0.008540, -0.004553, -0.014418, -0.019594, -0.000836, - -0.021723, -0.000063, 0.013547, -0.004562, 0.021383, -0.004710, 0.012533, 0.002776, -0.000806, -0.025531, - -0.007514, 0.011648, 0.027086, 0.002122, 0.013504, -0.000199, 0.019153, 0.037847, 0.043607, 0.000753, - -0.040234, 0.045663, 0.006952, -0.019621, -0.011557, -0.019301, -0.015540, 0.016264, 0.022528, 0.033951, - -0.039463, -0.011799, -0.012018, -0.010799, 0.002659, 0.009124, -0.014209, -0.011931, 0.038101, 0.008165, - -0.022031, 0.010828, 0.006329, 0.005743, -0.002491, 0.023958, -0.029927, 0.009155, 0.049488, 0.025802, - -0.007187, 0.016308, 0.008845, 0.030986, -0.025088, -0.026120, 0.006731, 0.020944, 0.026104, -0.003546, - -0.013561, 0.022539, 0.037555, -0.043616, -0.023667, -0.023072, -0.012501, 0.014612, 0.017106, -0.014452, - 0.037004, 0.005638, 0.071243, -0.009283, 0.027503, 0.007248, 0.007745, 0.021422, 0.030046, 0.034357, - -0.026992, 0.057626, -0.011868, 0.036785, 0.034784, 0.008935, -0.013185, -0.032542, -0.016790, 0.029559, - -0.028215, 0.040944, 0.045271, -0.008593, -0.002698, -0.015492, -0.022338, -0.011845, -0.029842, 0.030350, - -0.054293, 0.027628, 0.014370, -0.006917, -0.009707, -0.013543, -0.023418, 0.006253, 0.004440, 0.024347, - -0.010250, 0.039663, -0.017183, 0.027120, -0.025045, -0.013323, -0.003185, 0.009996, -0.009074, 0.025521, - 0.013572, -0.012836, -0.019105, 0.005644, -0.025883, -0.038875, -0.025705, 0.011069, -0.013555, -0.011537, - 0.060795, 0.008609, -0.001191, 0.012103, -0.036774, -0.049596, -0.037172, 0.007729, 0.005124, 0.036666, - -0.010840, 0.026167, -0.016754, 0.002174, 0.002960, -0.014030, -0.003113, 0.016927, -0.025500, -0.026723, - -0.013526, 0.021456, 0.021968, -0.000606, -0.008407, -0.033373, -0.009474, -0.024039, -0.017962, -0.039882, - 0.021008, -0.016823, -0.021732, -0.011988, -0.020421, 0.003860, -0.017546, -0.022440, -0.041403, -0.024114, - 0.019958, 0.001976, 0.006046, -0.002052, -0.019398, 0.002278, -0.010360, -0.016509, -0.010193, -0.017821, - 0.017020, 0.016114, 0.000774, 0.020042, -0.024929, -0.028597, -0.004034, -0.001622, -0.010131, -0.023881, - 0.013427, 0.018158, 0.015672, -0.001546, -0.014924, -0.044687, -0.019188, 0.012353, -0.003374, 0.001038, - 0.004657, -0.005191, -0.002751, -0.031939, 0.007085, -0.010446, 0.017562, 0.001292, -0.008109, 0.005006, - 0.038686, 0.013139, -0.013402, -0.041509, 0.018833, -0.017686, -0.042637, -0.004651, -0.002442, -0.001153, - 0.035853, 0.015127, 0.002179, -0.008235, -0.003957, 0.016121, -0.030352, -0.019409, -0.011913, -0.024721, - 0.054777, 0.023552, -0.014458, -0.001800, 0.005107, 0.003835, -0.041929, -0.036822, -0.020012, -0.014679, - 0.048898, 0.040085, -0.025124, -0.019199, -0.021196, -0.021583, 0.008543, 0.011893, 0.026888, -0.023774, - 0.022975, 0.049004, -0.002198, -0.003377, -0.020311, -0.040042, 0.040369, 0.046495, 0.003738, -0.017163, - 0.013787, 0.009514, -0.031813, -0.022700, 0.010487, -0.002209, 0.007366, -0.000947, -0.001153, -0.018526, - 0.034846, 0.041389, 0.004277, -0.011840, 0.003570, -0.020265, 0.007073, -0.005995, -0.036057, -0.024483, - 0.011424, -0.004125, -0.007527, -0.028948, 0.013607, -0.017865, -0.029528, -0.010029, 0.006002, -0.021247, - -0.002937, 0.005618, -0.018748, -0.003859, 0.024131, -0.036970, -0.039645, 0.012630, 0.020421, -0.019062, - 0.006209, 0.027301, -0.021070, -0.026263, -0.037331, -0.058280, 0.007128, 0.030542, 0.023682, 0.017196, - -0.004339, 0.032657, -0.002788, 0.007467, -0.003210, -0.011122, 0.051259, 0.077644, -0.002534, -0.009847, - -0.016839, 0.024161, -0.002679, 0.002811, 0.026994, 0.005361, -0.007944, -0.001043, 0.016338, 0.044488, - 0.009967, 0.010973, 0.010718, -0.004002, 0.022994, 0.018219, -0.005970, -0.010431, -0.006286, -0.003761, - 0.033910, 0.020870, 0.015616, 0.030999, 0.003939, 0.018727, -0.013341, -0.009932, -0.018877, -0.008985, - 0.014209, 0.016165, 0.012205, 0.014883, -0.002465, 0.008446, -0.005078, -0.004772, 0.010205, 0.012418, - 0.010030, 0.034408, 0.020810, -0.015731, -0.030164, -0.002011, -0.005414, 0.007300, 0.013870, 0.001943, - 0.023723, 0.026824, 0.034666, -0.029945, -0.003998, 0.002152, 0.009854, 0.036525, 0.023286, 0.014059, - -0.017057, 0.008405, -0.008929, -0.001821, -0.011173, -0.011080, -0.008644, 0.014244, -0.011609, -0.006303, - -0.019930, -0.001265, 0.005840, 0.000093, -0.008914, 0.000627, 0.003476, -0.001039, -0.014945, -0.021893, - -0.016508, 0.002027, 0.011715, 0.006777, -0.000720, 0.006401, 0.009324, 0.008277, -0.007283, -0.011781, - -0.013112, -0.012595, 0.007824, -0.003092, -0.009299, 0.001126, -0.001078, 0.019129, 0.009881, 0.003946, - 0.005042, 0.011187, 0.001855, -0.017710, -0.023153, -0.013771, -0.003086, 0.017083, 0.009751, -0.013889, - 0.010521, 0.038913, -0.012612, 0.003322, -0.006047, -0.015772, 0.016864, 0.031803, 0.003229, 0.010277, - -0.012018, 0.012029, -0.002175, 0.009944, 0.026590, 0.010332, -0.017022, -0.015033, 0.019786, 0.041920, - -0.009327, -0.000563, 0.005827, -0.010089, 0.008071, 0.000110, -0.012271, -0.017122, 0.011030, 0.035641, - 0.020421, 0.009602, 0.009843, -0.002310, -0.007517, 0.003588, -0.022303, -0.011791, 0.013517, 0.036959, - 0.016313, 0.001145, -0.008484, 0.013292, -0.000435, 0.021961, -0.021471, -0.019618, -0.003931, -0.002072, - 0.011743, 0.035639, 0.002893, -0.019620, -0.008883, 0.014149, 0.001287, 0.000965, 0.011022, -0.009145, - 0.006070, 0.033869, 0.023730, -0.017652, 0.005831, 0.014658, 0.024316, 0.027317, 0.004669, 0.013433, - -0.015161, -0.007001, -0.027098, -0.002211, 0.001455, 0.000183, -0.016370, -0.015877, -0.022541, -0.000715, - -0.015945, -0.014792, -0.006505, -0.000030, -0.007087, -0.016145, -0.018178, -0.008918, -0.013211, -0.015719, - -0.017063, -0.006106, 0.007862, 0.001119, -0.038279, -0.012558, -0.021884, 0.003829, -0.008234, 0.014155, - -0.037682, -0.011416, -0.003000, -0.016018, -0.018738, 0.002427, 0.001576, 0.004851, -0.005182, -0.001138, - -0.022259, 0.003471, 0.003699, -0.025511, -0.027554, -0.009442, 0.011474, 0.027276, 0.000677, -0.014699, - -0.003580, 0.004905, -0.006737, -0.008626, 0.013410, -0.021088, 0.030337, 0.034535, -0.002566, -0.008052, - 4.000000, - 9.000000, 6.000000, 31.000000, - -0.023660, -0.026346, 0.014090, 0.081509, 0.007503, -0.051517, 0.000729, 0.018698, -0.007725, - -0.005113, -0.013564, -0.019781, 0.002450, 0.001022, -0.046154, 0.035730, 0.107484, 0.044901, - -0.005428, -0.001052, -0.006403, -0.029646, -0.033464, -0.015217, 0.015727, 0.061268, 0.061844, - -0.000090, 0.012415, 0.018829, -0.006676, 0.022619, 0.018657, 0.017775, -0.001370, -0.000584, - 0.009585, 0.024996, 0.039506, 0.029577, -0.009225, 0.029467, 0.025271, -0.044412, -0.035119, - -0.051078, -0.038681, -0.019014, -0.009845, -0.024002, -0.019790, -0.025072, -0.021569, -0.005420, - 0.023891, 0.024904, -0.004012, 0.023546, -0.004790, -0.023446, 0.014463, 0.020000, -0.002237, - 0.012035, 0.001455, -0.028531, -0.001279, -0.007231, 0.011696, 0.048852, 0.050250, -0.032875, - 0.027555, -0.016821, -0.042814, 0.002510, -0.040068, -0.011802, 0.011255, 0.041224, 0.009305, - 0.003670, -0.005436, -0.029273, -0.012958, -0.041822, -0.028354, 0.000623, 0.015428, 0.067026, - -0.007687, 0.012005, 0.012291, -0.038281, -0.020343, 0.018739, 0.007025, 0.008812, 0.014725, - -0.007987, -0.012904, -0.035480, -0.035724, -0.011821, 0.002628, 0.003190, 0.020674, 0.004906, - 0.037165, -0.009800, 0.011728, 0.006948, 0.001074, 0.008976, 0.013669, -0.007927, -0.038038, - 0.011928, -0.016067, -0.045465, -0.011576, -0.017669, 0.078121, 0.079994, -0.017982, -0.033627, - 0.012906, -0.024237, -0.032694, 0.002743, -0.022276, 0.087495, 0.076676, 0.004896, -0.019288, - -0.019864, -0.008302, -0.016444, -0.010048, -0.030293, 0.005769, 0.038849, 0.010633, 0.017888, - -0.012343, 0.006313, -0.002558, 0.008253, -0.026727, -0.012494, -0.004561, 0.007239, -0.006445, - -0.018674, -0.012731, 0.001896, -0.009277, -0.042276, -0.014350, -0.019800, 0.007079, -0.011178, - 0.022618, 0.011545, -0.015433, -0.021554, -0.021462, -0.027269, -0.032125, 0.004808, 0.000148, - 0.008316, 0.007693, 0.005213, 0.018720, -0.011503, -0.010858, -0.023222, -0.003590, 0.024035, - -0.006324, -0.002775, 0.004531, -0.000988, 0.006569, 0.056722, 0.027182, 0.010979, -0.022066, - 0.001185, -0.001975, -0.011283, 0.006443, 0.005188, -0.015881, 0.000811, -0.024785, -0.031671, - -0.004433, 0.013601, -0.023693, 0.024986, 0.000048, -0.018428, -0.015585, -0.012693, 0.012733, - -0.017564, 0.005226, -0.002489, -0.003755, -0.001985, 0.026153, -0.019704, 0.055726, 0.003137, - -0.031342, 0.015011, -0.026307, -0.005315, 0.016716, -0.058778, -0.041668, -0.009362, 0.001316, - -0.014834, -0.002134, -0.011017, 0.026422, -0.007473, -0.049636, -0.006770, -0.005882, 0.009846, - 0.037913, 0.029287, 0.038684, -0.002655, -0.000630, 0.018599, 0.031323, 0.013532, 0.010812, - 0.016887, 0.022272, 0.029116, 0.010975, -0.013769, -0.015170, 0.040085, -0.018462, 0.012722, - 0.012548, 0.034014, 0.018296, 0.013761, -0.016365, -0.031325, 0.013019, -0.019710, 0.012163, - -0.017509, 0.039861, -0.011475, -0.013969, 0.056154, 0.018729, -0.041277, 0.037381, 0.018203, - -0.017509, 0.039861, -0.011475, -0.013969, 0.056154, 0.018729, -0.041277, 0.037381, 0.018203, - 0.012548, 0.034014, 0.018296, 0.013761, -0.016365, -0.031325, 0.013019, -0.019710, 0.012163, - 0.016887, 0.022272, 0.029116, 0.010975, -0.013769, -0.015170, 0.040085, -0.018462, 0.012722, - 0.037913, 0.029287, 0.038684, -0.002655, -0.000630, 0.018599, 0.031323, 0.013532, 0.010812, - -0.014834, -0.002134, -0.011017, 0.026422, -0.007473, -0.049636, -0.006770, -0.005882, 0.009846, - -0.031342, 0.015011, -0.026307, -0.005315, 0.016716, -0.058778, -0.041668, -0.009362, 0.001316, - -0.017564, 0.005226, -0.002489, -0.003755, -0.001985, 0.026153, -0.019704, 0.055726, 0.003137, - -0.004433, 0.013601, -0.023693, 0.024986, 0.000048, -0.018428, -0.015585, -0.012693, 0.012733, - 0.001185, -0.001975, -0.011283, 0.006443, 0.005188, -0.015881, 0.000811, -0.024785, -0.031671, - -0.006324, -0.002775, 0.004531, -0.000988, 0.006569, 0.056722, 0.027182, 0.010979, -0.022066, - 0.008316, 0.007693, 0.005213, 0.018720, -0.011503, -0.010858, -0.023222, -0.003590, 0.024035, - 0.022618, 0.011545, -0.015433, -0.021554, -0.021462, -0.027269, -0.032125, 0.004808, 0.000148, - -0.018674, -0.012731, 0.001896, -0.009277, -0.042276, -0.014350, -0.019800, 0.007079, -0.011178, - -0.012343, 0.006313, -0.002558, 0.008253, -0.026727, -0.012494, -0.004561, 0.007239, -0.006445, - -0.019864, -0.008302, -0.016444, -0.010048, -0.030293, 0.005769, 0.038849, 0.010633, 0.017888, - 0.012906, -0.024237, -0.032694, 0.002743, -0.022276, 0.087495, 0.076676, 0.004896, -0.019288, - 0.011928, -0.016067, -0.045465, -0.011576, -0.017669, 0.078121, 0.079994, -0.017982, -0.033627, - 0.037165, -0.009800, 0.011728, 0.006948, 0.001074, 0.008976, 0.013669, -0.007927, -0.038038, - -0.007987, -0.012904, -0.035480, -0.035724, -0.011821, 0.002628, 0.003190, 0.020674, 0.004906, - -0.007687, 0.012005, 0.012291, -0.038281, -0.020343, 0.018739, 0.007025, 0.008812, 0.014725, - 0.003670, -0.005436, -0.029273, -0.012958, -0.041822, -0.028354, 0.000623, 0.015428, 0.067026, - 0.027555, -0.016821, -0.042814, 0.002510, -0.040068, -0.011802, 0.011255, 0.041224, 0.009305, - 0.012035, 0.001455, -0.028531, -0.001279, -0.007231, 0.011696, 0.048852, 0.050250, -0.032875, - 0.023891, 0.024904, -0.004012, 0.023546, -0.004790, -0.023446, 0.014463, 0.020000, -0.002237, - -0.051078, -0.038681, -0.019014, -0.009845, -0.024002, -0.019790, -0.025072, -0.021569, -0.005420, - 0.009585, 0.024996, 0.039506, 0.029577, -0.009225, 0.029467, 0.025271, -0.044412, -0.035119, - -0.000090, 0.012415, 0.018829, -0.006676, 0.022619, 0.018657, 0.017775, -0.001370, -0.000584, - -0.005428, -0.001052, -0.006403, -0.029646, -0.033464, -0.015217, 0.015727, 0.061268, 0.061844, - -0.005113, -0.013564, -0.019781, 0.002450, 0.001022, -0.046154, 0.035730, 0.107484, 0.044901, - -0.023660, -0.026346, 0.014090, 0.081509, 0.007503, -0.051517, 0.000729, 0.018698, -0.007725, - 0.019556, -0.017756, -0.013656, 0.009232, 0.027051, 0.019900, 0.005251, 0.003103, -0.006599, - 0.011814, 0.003007, 0.003976, -0.013888, 0.001430, 0.029606, -0.006775, -0.013768, -0.032343, - 0.010592, 0.001980, -0.020987, -0.024337, -0.015500, -0.030346, 0.022069, 0.008609, 0.013318, - 0.020214, -0.000255, -0.008590, 0.021359, 0.012803, -0.023237, -0.000537, 0.012594, 0.055175, - -0.012687, 0.028064, 0.020395, 0.025355, 0.035863, -0.024507, -0.004679, 0.044749, 0.039529, - 0.026192, 0.061432, 0.052758, 0.007849, 0.007111, -0.004358, -0.003128, 0.012468, 0.035972, - 0.044516, 0.048024, -0.012384, -0.017496, 0.010043, 0.007112, 0.021588, 0.010529, -0.030450, - 0.038095, 0.018715, 0.014596, 0.010509, 0.089691, 0.076291, 0.013319, 0.017865, -0.029036, - 0.022261, 0.008895, 0.000956, -0.016699, 0.002420, 0.018702, 0.057204, 0.028880, -0.004976, - 0.005275, -0.020870, 0.009203, 0.031753, 0.008996, 0.027983, 0.030455, 0.002356, 0.019726, - 0.015979, 0.008245, -0.009458, 0.005959, 0.024064, -0.006881, -0.010781, -0.029804, 0.016718, - 0.021085, 0.023721, -0.005815, -0.007152, 0.003508, -0.001223, -0.016972, -0.018628, -0.012972, - -0.009481, 0.003347, 0.001978, -0.005738, 0.011776, -0.008404, 0.002665, 0.005405, -0.002393, - -0.015406, -0.033158, 0.004040, 0.061518, 0.047470, 0.045323, 0.014302, 0.020166, -0.004876, - -0.023500, 0.012318, 0.025671, 0.045108, 0.026114, 0.023018, -0.029806, -0.021179, 0.019917, - -0.010518, -0.008079, 0.005189, 0.001186, -0.011938, 0.000923, -0.007095, 0.021525, 0.056413, - -0.018969, 0.000569, 0.021008, 0.007023, 0.030362, -0.001595, -0.016509, -0.000496, -0.005489, - 0.020092, 0.043571, 0.031549, -0.018243, -0.002483, -0.015486, 0.003193, -0.001373, -0.032053, - -0.041549, -0.079083, 0.045815, -0.011097, 0.003569, 0.039862, 0.042530, 0.023625, 0.006177, - -0.045546, 0.000921, 0.008827, -0.023755, -0.007505, -0.017188, 0.000610, -0.023508, -0.014275, - -0.025065, 0.000585, -0.001998, -0.008176, 0.014202, -0.026405, -0.022624, -0.021472, 0.008582, - -0.007687, 0.012657, -0.018082, -0.004132, 0.004135, -0.012752, -0.015506, -0.026849, 0.014489, - -0.034690, 0.019569, 0.004777, -0.026200, 0.001553, 0.004015, 0.007961, 0.021508, 0.024281, - -0.028475, 0.021983, -0.001800, -0.034672, -0.006808, 0.037895, 0.042970, 0.022344, -0.030018, - -0.028475, 0.021983, -0.001800, -0.034672, -0.006808, 0.037895, 0.042970, 0.022344, -0.030018, - -0.034690, 0.019569, 0.004777, -0.026200, 0.001553, 0.004015, 0.007961, 0.021508, 0.024281, - -0.007687, 0.012657, -0.018082, -0.004132, 0.004135, -0.012752, -0.015506, -0.026849, 0.014489, - -0.025065, 0.000585, -0.001998, -0.008176, 0.014202, -0.026405, -0.022624, -0.021472, 0.008582, - -0.045546, 0.000921, 0.008827, -0.023755, -0.007505, -0.017188, 0.000610, -0.023508, -0.014275, - -0.041549, -0.079083, 0.045815, -0.011097, 0.003569, 0.039862, 0.042530, 0.023625, 0.006177, - 0.020092, 0.043571, 0.031549, -0.018243, -0.002483, -0.015486, 0.003193, -0.001373, -0.032053, - -0.018969, 0.000569, 0.021008, 0.007023, 0.030362, -0.001595, -0.016509, -0.000496, -0.005489, - -0.010518, -0.008079, 0.005189, 0.001186, -0.011938, 0.000923, -0.007095, 0.021525, 0.056413, - -0.023500, 0.012318, 0.025671, 0.045108, 0.026114, 0.023018, -0.029806, -0.021179, 0.019917, - -0.015406, -0.033158, 0.004040, 0.061518, 0.047470, 0.045323, 0.014302, 0.020166, -0.004876, - -0.009481, 0.003347, 0.001978, -0.005738, 0.011776, -0.008404, 0.002665, 0.005405, -0.002393, - 0.021085, 0.023721, -0.005815, -0.007152, 0.003508, -0.001223, -0.016972, -0.018628, -0.012972, - 0.015979, 0.008245, -0.009458, 0.005959, 0.024064, -0.006881, -0.010781, -0.029804, 0.016718, - 0.005275, -0.020870, 0.009203, 0.031753, 0.008996, 0.027983, 0.030455, 0.002356, 0.019726, - 0.022261, 0.008895, 0.000956, -0.016699, 0.002420, 0.018702, 0.057204, 0.028880, -0.004976, - 0.038095, 0.018715, 0.014596, 0.010509, 0.089691, 0.076291, 0.013319, 0.017865, -0.029036, - 0.044516, 0.048024, -0.012384, -0.017496, 0.010043, 0.007112, 0.021588, 0.010529, -0.030450, - 0.026192, 0.061432, 0.052758, 0.007849, 0.007111, -0.004358, -0.003128, 0.012468, 0.035972, - -0.012687, 0.028064, 0.020395, 0.025355, 0.035863, -0.024507, -0.004679, 0.044749, 0.039529, - 0.020214, -0.000255, -0.008590, 0.021359, 0.012803, -0.023237, -0.000537, 0.012594, 0.055175, - 0.010592, 0.001980, -0.020987, -0.024337, -0.015500, -0.030346, 0.022069, 0.008609, 0.013318, - 0.011814, 0.003007, 0.003976, -0.013888, 0.001430, 0.029606, -0.006775, -0.013768, -0.032343, - 0.019556, -0.017756, -0.013656, 0.009232, 0.027051, 0.019900, 0.005251, 0.003103, -0.006599, - -0.014640, -0.019197, 0.001144, 0.036840, -0.013825, -0.043383, -0.004119, -0.016473, -0.013498, - 0.009378, 0.001806, 0.008051, 0.011698, -0.003440, -0.017530, 0.017929, 0.052708, 0.014857, - 0.019580, 0.021704, -0.002231, -0.020900, -0.018818, -0.021323, 0.003635, 0.008487, 0.023369, - 0.019580, 0.021704, -0.002231, -0.020900, -0.018818, -0.021323, 0.003635, 0.008487, 0.023369, - 0.009378, 0.001806, 0.008051, 0.011698, -0.003440, -0.017530, 0.017929, 0.052708, 0.014857, - -0.014640, -0.019197, 0.001144, 0.036840, -0.013825, -0.043383, -0.004119, -0.016473, -0.013498, - 0.023117, 0.014784, -0.007836, 0.018037, 0.006600, 0.005780, -0.000601, 0.020835, -0.013152, - 0.012740, 0.008570, -0.017364, -0.008591, -0.013958, 0.025869, 0.007905, 0.025839, -0.050340, - 0.017858, -0.022703, -0.053151, -0.010664, -0.041865, -0.045126, -0.007294, 0.022075, 0.023259, - 0.023170, 0.002061, -0.036335, 0.010450, -0.022005, -0.048473, 0.001545, 0.021677, 0.057658, - 0.007986, 0.037607, 0.028864, -0.016711, 0.016615, -0.005973, 0.008559, 0.050144, 0.048106, - -0.001730, 0.024456, 0.014139, -0.023115, -0.007323, -0.002147, -0.003070, 0.032753, 0.037900, - 0.055477, 0.044479, 0.013692, -0.003263, -0.005499, 0.014828, 0.017818, -0.013943, -0.048364, - 0.032531, 0.000711, -0.022807, 0.020352, 0.051684, 0.086814, 0.063793, 0.004413, -0.053616, - 0.010306, -0.017350, -0.028901, -0.020252, -0.032781, 0.050252, 0.087144, 0.013968, -0.024403, - -0.013666, -0.014853, -0.016677, 0.013187, -0.023359, 0.032392, 0.030467, -0.016465, 0.017845, - -0.006487, 0.002034, -0.003532, 0.010880, 0.003935, -0.008245, -0.016124, -0.015466, 0.011434, - 0.001468, 0.008232, 0.009491, 0.012560, -0.021920, -0.019548, -0.035746, -0.025765, -0.030341, - 0.010406, 0.022263, -0.015924, -0.016809, -0.007144, -0.043731, -0.022921, -0.012194, -0.017739, - -0.011995, -0.024968, -0.000879, 0.053016, 0.019416, 0.022402, -0.009870, 0.012679, -0.007369, - -0.022437, -0.005216, 0.012219, 0.053788, 0.038863, 0.037519, 0.003064, -0.014914, -0.021010, - 0.000361, -0.003275, -0.004949, 0.005800, -0.006463, -0.014153, -0.015531, -0.013579, -0.007589, - -0.028300, 0.010658, 0.011238, 0.016931, 0.033430, -0.011212, -0.035298, -0.009900, -0.013567, - -0.002740, 0.019821, 0.004887, -0.024601, -0.005256, 0.005512, -0.026226, 0.024721, -0.020758, - -0.059724, -0.011739, 0.000650, 0.020761, 0.003078, -0.006919, 0.012415, -0.002251, -0.000253, - -0.048307, 0.005513, -0.015046, 0.026829, -0.002699, -0.024912, -0.016693, -0.031004, -0.011117, - -0.012618, 0.018600, 0.017344, 0.000396, -0.024842, 0.021457, -0.004218, 0.006708, -0.003869, - 0.006078, 0.045039, -0.001240, 0.000871, -0.058494, -0.022926, -0.018731, -0.024738, -0.004009, - -0.015727, 0.042594, 0.013803, 0.011670, -0.058729, -0.020120, -0.013961, -0.003133, 0.029419, - -0.033107, 0.038578, -0.002251, -0.026837, 0.005648, 0.017923, -0.013987, 0.065094, -0.002519, - -0.033107, 0.038578, -0.002251, -0.026837, 0.005648, 0.017923, -0.013987, 0.065094, -0.002519, - -0.015727, 0.042594, 0.013803, 0.011670, -0.058729, -0.020120, -0.013961, -0.003133, 0.029419, - 0.006078, 0.045039, -0.001240, 0.000871, -0.058494, -0.022926, -0.018731, -0.024738, -0.004009, - -0.012618, 0.018600, 0.017344, 0.000396, -0.024842, 0.021457, -0.004218, 0.006708, -0.003869, - -0.048307, 0.005513, -0.015046, 0.026829, -0.002699, -0.024912, -0.016693, -0.031004, -0.011117, - -0.059724, -0.011739, 0.000650, 0.020761, 0.003078, -0.006919, 0.012415, -0.002251, -0.000253, - -0.002740, 0.019821, 0.004887, -0.024601, -0.005256, 0.005512, -0.026226, 0.024721, -0.020758, - -0.028300, 0.010658, 0.011238, 0.016931, 0.033430, -0.011212, -0.035298, -0.009900, -0.013567, - 0.000361, -0.003275, -0.004949, 0.005800, -0.006463, -0.014153, -0.015531, -0.013579, -0.007589, - -0.022437, -0.005216, 0.012219, 0.053788, 0.038863, 0.037519, 0.003064, -0.014914, -0.021010, - -0.011995, -0.024968, -0.000879, 0.053016, 0.019416, 0.022402, -0.009870, 0.012679, -0.007369, - 0.010406, 0.022263, -0.015924, -0.016809, -0.007144, -0.043731, -0.022921, -0.012194, -0.017739, - 0.001468, 0.008232, 0.009491, 0.012560, -0.021920, -0.019548, -0.035746, -0.025765, -0.030341, - -0.006487, 0.002034, -0.003532, 0.010880, 0.003935, -0.008245, -0.016124, -0.015466, 0.011434, - -0.013666, -0.014853, -0.016677, 0.013187, -0.023359, 0.032392, 0.030467, -0.016465, 0.017845, - 0.010306, -0.017350, -0.028901, -0.020252, -0.032781, 0.050252, 0.087144, 0.013968, -0.024403, - 0.032531, 0.000711, -0.022807, 0.020352, 0.051684, 0.086814, 0.063793, 0.004413, -0.053616, - 0.055477, 0.044479, 0.013692, -0.003263, -0.005499, 0.014828, 0.017818, -0.013943, -0.048364, - -0.001730, 0.024456, 0.014139, -0.023115, -0.007323, -0.002147, -0.003070, 0.032753, 0.037900, - 0.007986, 0.037607, 0.028864, -0.016711, 0.016615, -0.005973, 0.008559, 0.050144, 0.048106, - 0.023170, 0.002061, -0.036335, 0.010450, -0.022005, -0.048473, 0.001545, 0.021677, 0.057658, - 0.017858, -0.022703, -0.053151, -0.010664, -0.041865, -0.045126, -0.007294, 0.022075, 0.023259, - 0.012740, 0.008570, -0.017364, -0.008591, -0.013958, 0.025869, 0.007905, 0.025839, -0.050340, - 0.023117, 0.014784, -0.007836, 0.018037, 0.006600, 0.005780, -0.000601, 0.020835, -0.013152, - 0.001266, 0.031583, 0.034487, 0.012806, 0.010294, 0.006421, -0.002315, 0.017970, -0.017804, - -0.019978, 0.027350, 0.021951, 0.003276, -0.004312, -0.004050, 0.001364, 0.014108, -0.028200, - -0.004260, 0.022123, 0.027677, -0.006286, -0.037153, -0.011916, 0.011582, 0.010278, 0.000402, - -0.011254, 0.010914, 0.007839, -0.007620, -0.029707, 0.020558, 0.045835, 0.039938, 0.041851, - 0.000630, 0.026470, 0.015149, 0.020917, 0.015607, 0.029352, 0.036890, 0.021587, 0.021857, - 0.007871, 0.002465, -0.011726, -0.020013, -0.004726, 0.003309, -0.000355, 0.016034, -0.003306, - -0.011572, 0.013069, 0.007298, 0.009874, 0.025293, -0.009299, -0.012019, 0.024958, -0.015045, - 0.003520, -0.006148, -0.017373, 0.015877, 0.016738, -0.009028, 0.002275, -0.016924, 0.000640, - 0.032311, -0.010722, -0.027382, 0.015306, 0.008135, 0.004566, 0.029379, -0.021925, 0.031884, - 0.011478, -0.017317, -0.034715, 0.001316, 0.008420, 0.023893, 0.052015, 0.027243, 0.061923, - -0.008404, 0.006183, -0.013872, 0.016287, 0.022624, 0.018700, 0.033576, 0.031305, 0.007985, - -0.012744, 0.000647, -0.024425, -0.033193, -0.017248, -0.030302, -0.008645, 0.027296, -0.015333, - 0.007871, 0.002465, -0.011726, -0.020013, -0.004726, 0.003309, -0.000355, 0.016034, -0.003306, - 0.000630, 0.026470, 0.015149, 0.020917, 0.015607, 0.029352, 0.036890, 0.021587, 0.021857, - -0.011254, 0.010914, 0.007839, -0.007620, -0.029707, 0.020558, 0.045835, 0.039938, 0.041851, - -0.004260, 0.022123, 0.027677, -0.006286, -0.037153, -0.011916, 0.011582, 0.010278, 0.000402, - -0.019978, 0.027350, 0.021951, 0.003276, -0.004312, -0.004050, 0.001364, 0.014108, -0.028200, - 0.001266, 0.031583, 0.034487, 0.012806, 0.010294, 0.006421, -0.002315, 0.017970, -0.017804, - -0.012744, 0.000647, -0.024425, -0.033193, -0.017248, -0.030302, -0.008645, 0.027296, -0.015333, - -0.008404, 0.006183, -0.013872, 0.016287, 0.022624, 0.018700, 0.033576, 0.031305, 0.007985, - 0.011478, -0.017317, -0.034715, 0.001316, 0.008420, 0.023893, 0.052015, 0.027243, 0.061923, - 0.032311, -0.010722, -0.027382, 0.015306, 0.008135, 0.004566, 0.029379, -0.021925, 0.031884, - 0.003520, -0.006148, -0.017373, 0.015877, 0.016738, -0.009028, 0.002275, -0.016924, 0.000640, - -0.011572, 0.013069, 0.007298, 0.009874, 0.025293, -0.009299, -0.012019, 0.024958, -0.015045, - 0.000000, - 7.000000, 4.000000, 31.000000, - -0.036842, -0.027884, -0.047613, -0.009418, -0.053093, -0.052119, -0.004853, - -0.062370, -0.029028, -0.018226, 0.010842, -0.025082, -0.032971, -0.035138, - 0.009636, 0.025460, -0.048406, -0.043388, 0.064825, 0.083443, -0.044594, - 0.052516, 0.013320, -0.023068, -0.059180, 0.004658, 0.013310, -0.032123, - 0.037760, 0.024983, 0.027211, -0.010873, -0.026079, -0.052320, -0.006132, - 0.011423, -0.020003, -0.011051, -0.017829, -0.024508, -0.026182, -0.019361, - 0.004115, -0.009301, -0.038517, -0.031518, 0.039536, 0.026298, -0.018152, - 0.010750, 0.002431, 0.001640, -0.014720, 0.023541, -0.021906, -0.009540, - -0.030111, 0.010915, 0.030357, 0.037363, 0.000490, -0.027439, 0.007429, - -0.009096, -0.025059, -0.025949, -0.024921, -0.045922, -0.043461, -0.016008, - 0.010364, -0.027687, -0.043753, -0.018861, 0.025132, -0.009795, -0.014593, - 0.056146, 0.000744, -0.009408, -0.021575, -0.003637, -0.025574, 0.008267, - -0.010396, 0.013820, 0.023100, -0.012534, -0.023346, -0.021430, 0.002813, - -0.007838, -0.000566, -0.015131, -0.020231, -0.035070, -0.055949, -0.028682, - -0.014011, -0.010562, -0.001943, -0.024822, 0.005356, -0.017607, -0.031765, - 0.014384, -0.010938, 0.013817, -0.008673, 0.017017, -0.049007, 0.004444, - 0.049000, 0.009413, -0.005981, 0.022517, 0.022815, 0.003636, -0.014377, - 0.033486, -0.010039, -0.043420, 0.005900, -0.029868, -0.051579, -0.019958, - -0.038930, -0.021506, 0.007950, -0.024310, 0.059055, -0.019557, -0.021134, - -0.077738, -0.029409, 0.002260, -0.035933, 0.061334, -0.083394, -0.024358, - -0.010057, -0.024322, -0.015430, 0.035647, -0.000365, 0.067778, 0.039616, - -0.029315, 0.024704, -0.012171, -0.029973, -0.059946, 0.065521, 0.053896, - -0.018767, 0.018970, 0.046593, 0.025967, -0.009654, 0.040073, 0.058594, - -0.016810, -0.029581, 0.010904, -0.003641, -0.003924, -0.046100, 0.031444, - -0.011685, -0.003436, -0.002487, 0.020989, -0.011599, 0.078331, 0.056452, - 0.036254, 0.029801, 0.026012, -0.015662, -0.052890, 0.027646, 0.031942, - 0.005885, 0.033157, 0.029964, 0.032299, -0.008063, -0.019857, 0.018100, - -0.016825, 0.021992, -0.006966, -0.002383, 0.071728, 0.003890, 0.034572, - -0.018162, -0.028179, -0.024795, 0.040804, 0.027838, 0.051665, -0.007556, - -0.014400, 0.004117, -0.040118, -0.022939, -0.016571, 0.008415, -0.017086, - 0.013330, 0.019180, -0.004778, 0.011154, -0.017307, -0.036725, -0.016045, - 0.025846, 0.046500, 0.003500, -0.014025, 0.035392, -0.034930, 0.007575, - -0.010719, -0.029871, 0.025880, 0.052097, 0.015164, 0.071675, -0.049371, - 0.003349, 0.008785, 0.012363, 0.045459, 0.008408, 0.058654, -0.001816, - 0.023183, -0.019451, -0.025969, 0.003256, -0.015496, -0.035784, -0.010716, - -0.000231, -0.001950, -0.019319, -0.005203, -0.011567, -0.007372, 0.017250, - -0.024801, 0.015480, -0.001903, 0.033679, 0.057645, 0.060914, -0.075073, - 0.014589, 0.017863, -0.005955, 0.040378, 0.065342, 0.036991, -0.032362, - -0.005349, -0.022075, 0.000828, -0.023376, -0.064102, -0.043473, -0.009598, - -0.047204, 0.003173, -0.025431, 0.011662, 0.023622, 0.021554, -0.002501, - 0.046760, 0.011009, -0.010040, 0.005060, 0.028961, 0.036838, -0.003722, - 0.012526, 0.024915, -0.004501, 0.019227, 0.036753, 0.010667, 0.015846, - -0.018949, -0.007951, -0.004533, -0.029433, -0.038367, -0.013803, 0.006589, - -0.010104, 0.007465, -0.003340, 0.006817, 0.034064, 0.034412, 0.004665, - 0.022829, 0.027488, -0.008252, -0.042371, 0.037182, 0.035157, -0.004231, - -0.010992, -0.016608, 0.004080, -0.036752, 0.021100, 0.006838, -0.002085, - 0.007669, -0.006340, 0.023333, -0.011806, -0.017748, -0.019982, 0.017359, - -0.024203, 0.033106, -0.018948, -0.021388, -0.004612, 0.019344, -0.009652, - 0.008600, -0.026438, -0.049842, -0.019300, 0.038809, 0.041762, 0.043116, - -0.014091, -0.024351, -0.012422, -0.008852, -0.014095, -0.028799, 0.007365, - -0.003090, -0.029760, -0.007219, -0.021018, -0.021425, -0.011454, 0.004660, - -0.019174, 0.008393, -0.006209, -0.040298, -0.012398, 0.032380, 0.001483, - -0.007360, 0.072778, 0.008298, 0.014253, 0.023097, 0.020943, 0.026286, - 0.021358, 0.001709, -0.034643, -0.022696, -0.030033, -0.032735, -0.013759, - 0.085802, 0.003920, 0.003512, 0.035269, 0.046408, 0.090228, -0.029849, - 0.022457, -0.020926, 0.018502, -0.004398, 0.074888, 0.117526, -0.030110, - 0.014835, 0.035600, -0.010468, -0.006940, -0.014656, -0.056999, -0.004396, - 0.057351, 0.020625, 0.049244, 0.046573, -0.052408, -0.078191, -0.030365, - 0.090596, 0.075699, 0.080639, 0.101344, 0.058356, -0.042421, -0.060985, - 0.044248, 0.054831, 0.057259, 0.021275, 0.040949, -0.004487, -0.091598, - -0.010738, -0.000909, -0.001810, -0.028091, -0.027308, -0.032438, -0.006860, - 0.012287, 0.024167, 0.010719, 0.040121, 0.020485, -0.026693, -0.009863, - 0.043625, -0.018793, -0.041135, 0.021729, 0.039003, -0.007139, -0.012013, - -0.002925, 0.010575, -0.008663, -0.050325, -0.039925, -0.005523, -0.023387, - 0.020582, 0.000521, -0.002097, -0.040238, 0.016324, -0.017613, -0.009179, - 0.011610, -0.003422, 0.067419, 0.075071, 0.025305, -0.044043, 0.003063, - -0.018809, -0.035841, -0.040082, -0.006055, 0.000084, -0.037694, -0.018851, - -0.013892, 0.014504, -0.019183, -0.022184, -0.052019, -0.000600, -0.022570, - 0.004965, 0.024394, 0.024921, 0.001018, 0.025914, -0.022858, -0.010663, - 0.028287, 0.044323, 0.074352, 0.031995, -0.003565, -0.039917, -0.008570, - -0.004978, -0.002686, -0.022603, -0.029522, -0.025039, 0.005104, -0.024094, - -0.011815, 0.049763, -0.004850, -0.012029, -0.043300, -0.013747, -0.009383, - -0.012809, 0.027902, 0.006535, 0.054811, 0.018402, 0.019400, -0.082185, - -0.017382, 0.012557, 0.006335, 0.065680, 0.073907, 0.020959, -0.062062, - 0.000941, 0.013102, -0.022317, -0.022817, 0.033884, 0.052672, -0.042068, - 0.021936, 0.022946, -0.035632, -0.034532, 0.018619, 0.044481, -0.024623, - 0.096450, 0.049249, 0.025240, 0.009358, -0.011581, -0.009642, -0.020710, - 0.024870, 0.017074, -0.020230, -0.005082, 0.013129, -0.003780, -0.015566, - -0.024997, -0.019335, -0.031498, -0.053903, 0.002564, 0.018594, -0.016186, - 0.006435, 0.026743, 0.007527, -0.005000, 0.045681, 0.007004, -0.009100, - 0.015031, 0.031323, -0.003843, -0.002772, 0.036035, 0.014867, -0.005146, - -0.011299, -0.026638, -0.031141, -0.059543, -0.025557, -0.029196, -0.015112, - 0.020032, -0.026561, -0.021986, -0.037330, 0.006373, -0.036476, -0.002681, - 0.027502, 0.032676, -0.014272, -0.042439, -0.012773, -0.021121, -0.003429, - 0.004325, -0.010396, -0.012495, -0.037614, 0.007555, 0.013474, 0.029762, - -0.019668, -0.018899, -0.025413, -0.025750, -0.054636, -0.078862, -0.027114, - -0.003688, -0.027209, -0.002980, -0.040539, -0.017485, -0.030805, -0.022715, - -0.012254, -0.007946, -0.001590, -0.044944, -0.011506, -0.011875, 0.005911, - 0.007033, 0.048607, 0.010818, 0.016017, 0.024585, 0.013890, -0.003650, - 0.001664, -0.012844, -0.044429, -0.028202, -0.075152, -0.072858, -0.041505, - 0.030923, -0.011590, -0.003757, -0.022096, 0.023077, 0.048920, -0.024756, - -0.003488, -0.029593, -0.011031, -0.054517, 0.014500, 0.012237, -0.007442, - 0.032671, 0.011883, -0.004693, -0.015027, 0.007991, 0.032215, 0.027006, - 0.034693, 0.019707, 0.033356, 0.004808, -0.097379, 0.023864, 0.038697, - 0.059115, 0.041870, 0.067369, 0.086146, 0.012560, 0.035460, 0.051854, - 0.015047, 0.010289, -0.005060, -0.011589, 0.021476, -0.000119, 0.004872, - -0.008259, 0.005025, -0.010486, -0.006175, -0.027247, 0.054110, 0.041090, - 0.037068, 0.031879, 0.001613, 0.012183, -0.014743, 0.003523, 0.009238, - 0.019413, 0.009705, -0.022930, 0.033933, -0.012781, -0.020440, 0.000601, - -0.019096, 0.017007, -0.036737, -0.061700, 0.017120, -0.006435, 0.017188, - -0.005647, -0.033016, -0.031916, -0.003716, 0.035186, 0.030709, -0.019603, - 0.010533, 0.001250, 0.019670, 0.066957, 0.022045, -0.014840, -0.014467, - -0.016696, -0.012316, -0.051462, -0.000215, -0.033564, -0.057398, -0.027564, - -0.005135, 0.063816, -0.017758, -0.040464, -0.018925, -0.041423, -0.014318, - 0.005595, 0.000726, 0.041796, 0.027688, 0.006882, 0.060771, -0.052927, - 0.032980, 0.046883, 0.047118, 0.038490, 0.004430, 0.017840, -0.027661, - 0.019254, -0.017983, -0.047608, -0.016816, -0.049837, -0.036567, -0.043165, - -0.007382, 0.043752, -0.026966, -0.011951, -0.052614, -0.018103, 0.003726, - -0.019851, -0.016760, 0.007941, 0.019172, 0.027481, 0.018014, -0.007525, - 0.022448, 0.033227, 0.042099, 0.027682, -0.017268, -0.018805, -0.023824, - 0.021182, -0.002207, -0.015682, -0.018019, 0.010384, -0.004215, -0.037432, - -0.003388, 0.016319, -0.005236, -0.022977, 0.047349, -0.008581, -0.033963, - -0.024402, -0.011086, -0.024774, 0.021224, 0.005039, -0.001982, -0.006375, - -0.006297, 0.003040, 0.004703, 0.039641, -0.013490, -0.042119, -0.015535, - 0.004137, -0.016364, -0.024037, -0.006968, 0.014611, -0.014871, -0.020816, - 0.012359, 0.015024, -0.023163, -0.038822, 0.036491, 0.006801, -0.014423, - 0.031346, 0.027220, -0.010228, 0.006910, 0.042469, 0.065740, 0.008422, - 0.013401, 0.003887, -0.005188, -0.008232, -0.020405, -0.012312, -0.006265, - 0.040867, 0.016803, 0.006970, -0.007577, 0.017479, -0.003837, -0.019565, - -0.003811, 0.034520, 0.012476, -0.038336, 0.009707, 0.000131, -0.016748, - 0.029151, 0.050293, 0.007757, -0.003153, -0.010034, 0.005666, -0.004283, - 0.014957, -0.006244, -0.031903, -0.004546, -0.049040, -0.042628, -0.012330, - 0.014575, -0.014998, -0.007847, 0.016965, 0.014355, -0.010142, -0.019808, - -0.012032, 0.016157, -0.001755, -0.030066, 0.008187, -0.022028, -0.003465, - 8.000000, - 7.000000, 4.000000, 31.000000, - -0.047204, 0.003173, -0.025431, 0.011662, 0.023622, 0.021554, -0.002501, - -0.005349, -0.022075, 0.000828, -0.023376, -0.064102, -0.043473, -0.009598, - 0.014589, 0.017863, -0.005955, 0.040378, 0.065342, 0.036991, -0.032362, - -0.024801, 0.015480, -0.001903, 0.033679, 0.057645, 0.060914, -0.075073, - -0.000231, -0.001950, -0.019319, -0.005203, -0.011567, -0.007372, 0.017250, - 0.023183, -0.019451, -0.025969, 0.003256, -0.015496, -0.035784, -0.010716, - 0.003349, 0.008785, 0.012363, 0.045459, 0.008408, 0.058654, -0.001816, - -0.010719, -0.029871, 0.025880, 0.052097, 0.015164, 0.071675, -0.049371, - 0.025846, 0.046500, 0.003500, -0.014025, 0.035392, -0.034930, 0.007575, - 0.013330, 0.019180, -0.004778, 0.011154, -0.017307, -0.036725, -0.016045, - -0.014400, 0.004117, -0.040118, -0.022939, -0.016571, 0.008415, -0.017086, - -0.018162, -0.028179, -0.024795, 0.040804, 0.027838, 0.051665, -0.007556, - -0.016825, 0.021992, -0.006966, -0.002383, 0.071728, 0.003890, 0.034572, - 0.005885, 0.033157, 0.029964, 0.032299, -0.008063, -0.019857, 0.018100, - 0.036254, 0.029801, 0.026012, -0.015662, -0.052890, 0.027646, 0.031942, - -0.011685, -0.003436, -0.002487, 0.020989, -0.011599, 0.078331, 0.056452, - -0.016810, -0.029581, 0.010904, -0.003641, -0.003924, -0.046100, 0.031444, - -0.018767, 0.018970, 0.046593, 0.025967, -0.009654, 0.040073, 0.058594, - -0.029315, 0.024704, -0.012171, -0.029973, -0.059946, 0.065521, 0.053896, - -0.010057, -0.024322, -0.015430, 0.035647, -0.000365, 0.067778, 0.039616, - -0.077738, -0.029409, 0.002260, -0.035933, 0.061334, -0.083394, -0.024358, - -0.038930, -0.021506, 0.007950, -0.024310, 0.059055, -0.019557, -0.021134, - 0.033486, -0.010039, -0.043420, 0.005900, -0.029868, -0.051579, -0.019958, - 0.049000, 0.009413, -0.005981, 0.022517, 0.022815, 0.003636, -0.014377, - 0.014384, -0.010938, 0.013817, -0.008673, 0.017017, -0.049007, 0.004444, - -0.014011, -0.010562, -0.001943, -0.024822, 0.005356, -0.017607, -0.031765, - -0.007838, -0.000566, -0.015131, -0.020231, -0.035070, -0.055949, -0.028682, - -0.010396, 0.013820, 0.023100, -0.012534, -0.023346, -0.021430, 0.002813, - 0.056146, 0.000744, -0.009408, -0.021575, -0.003637, -0.025574, 0.008267, - 0.010364, -0.027687, -0.043753, -0.018861, 0.025132, -0.009795, -0.014593, - -0.009096, -0.025059, -0.025949, -0.024921, -0.045922, -0.043461, -0.016008, - -0.030111, 0.010915, 0.030357, 0.037363, 0.000490, -0.027439, 0.007429, - 0.010750, 0.002431, 0.001640, -0.014720, 0.023541, -0.021906, -0.009540, - 0.004115, -0.009301, -0.038517, -0.031518, 0.039536, 0.026298, -0.018152, - 0.011423, -0.020003, -0.011051, -0.017829, -0.024508, -0.026182, -0.019361, - 0.037760, 0.024983, 0.027211, -0.010873, -0.026079, -0.052320, -0.006132, - 0.052516, 0.013320, -0.023068, -0.059180, 0.004658, 0.013310, -0.032123, - 0.009636, 0.025460, -0.048406, -0.043388, 0.064825, 0.083443, -0.044594, - -0.062370, -0.029028, -0.018226, 0.010842, -0.025082, -0.032971, -0.035138, - -0.036842, -0.027884, -0.047613, -0.009418, -0.053093, -0.052119, -0.004853, - -0.011815, 0.049763, -0.004850, -0.012029, -0.043300, -0.013747, -0.009383, - -0.004978, -0.002686, -0.022603, -0.029522, -0.025039, 0.005104, -0.024094, - 0.028287, 0.044323, 0.074352, 0.031995, -0.003565, -0.039917, -0.008570, - 0.004965, 0.024394, 0.024921, 0.001018, 0.025914, -0.022858, -0.010663, - -0.013892, 0.014504, -0.019183, -0.022184, -0.052019, -0.000600, -0.022570, - -0.018809, -0.035841, -0.040082, -0.006055, 0.000084, -0.037694, -0.018851, - 0.011610, -0.003422, 0.067419, 0.075071, 0.025305, -0.044043, 0.003063, - 0.020582, 0.000521, -0.002097, -0.040238, 0.016324, -0.017613, -0.009179, - -0.002925, 0.010575, -0.008663, -0.050325, -0.039925, -0.005523, -0.023387, - 0.043625, -0.018793, -0.041135, 0.021729, 0.039003, -0.007139, -0.012013, - 0.012287, 0.024167, 0.010719, 0.040121, 0.020485, -0.026693, -0.009863, - -0.010738, -0.000909, -0.001810, -0.028091, -0.027308, -0.032438, -0.006860, - 0.044248, 0.054831, 0.057259, 0.021275, 0.040949, -0.004487, -0.091598, - 0.090596, 0.075699, 0.080639, 0.101344, 0.058356, -0.042421, -0.060985, - 0.057351, 0.020625, 0.049244, 0.046573, -0.052408, -0.078191, -0.030365, - 0.014835, 0.035600, -0.010468, -0.006940, -0.014656, -0.056999, -0.004396, - 0.022457, -0.020926, 0.018502, -0.004398, 0.074888, 0.117526, -0.030110, - 0.085802, 0.003920, 0.003512, 0.035269, 0.046408, 0.090228, -0.029849, - 0.021358, 0.001709, -0.034643, -0.022696, -0.030033, -0.032735, -0.013759, - -0.007360, 0.072778, 0.008298, 0.014253, 0.023097, 0.020943, 0.026286, - -0.019174, 0.008393, -0.006209, -0.040298, -0.012398, 0.032380, 0.001483, - -0.003090, -0.029760, -0.007219, -0.021018, -0.021425, -0.011454, 0.004660, - -0.014091, -0.024351, -0.012422, -0.008852, -0.014095, -0.028799, 0.007365, - 0.008600, -0.026438, -0.049842, -0.019300, 0.038809, 0.041762, 0.043116, - -0.024203, 0.033106, -0.018948, -0.021388, -0.004612, 0.019344, -0.009652, - 0.007669, -0.006340, 0.023333, -0.011806, -0.017748, -0.019982, 0.017359, - -0.010992, -0.016608, 0.004080, -0.036752, 0.021100, 0.006838, -0.002085, - 0.022829, 0.027488, -0.008252, -0.042371, 0.037182, 0.035157, -0.004231, - -0.010104, 0.007465, -0.003340, 0.006817, 0.034064, 0.034412, 0.004665, - -0.018949, -0.007951, -0.004533, -0.029433, -0.038367, -0.013803, 0.006589, - 0.012526, 0.024915, -0.004501, 0.019227, 0.036753, 0.010667, 0.015846, - 0.046760, 0.011009, -0.010040, 0.005060, 0.028961, 0.036838, -0.003722, - 0.021936, 0.022946, -0.035632, -0.034532, 0.018619, 0.044481, -0.024623, - 0.000941, 0.013102, -0.022317, -0.022817, 0.033884, 0.052672, -0.042068, - -0.017382, 0.012557, 0.006335, 0.065680, 0.073907, 0.020959, -0.062062, - -0.012809, 0.027902, 0.006535, 0.054811, 0.018402, 0.019400, -0.082185, - -0.007382, 0.043752, -0.026966, -0.011951, -0.052614, -0.018103, 0.003726, - 0.019254, -0.017983, -0.047608, -0.016816, -0.049837, -0.036567, -0.043165, - 0.032980, 0.046883, 0.047118, 0.038490, 0.004430, 0.017840, -0.027661, - 0.005595, 0.000726, 0.041796, 0.027688, 0.006882, 0.060771, -0.052927, - -0.005135, 0.063816, -0.017758, -0.040464, -0.018925, -0.041423, -0.014318, - -0.016696, -0.012316, -0.051462, -0.000215, -0.033564, -0.057398, -0.027564, - 0.010533, 0.001250, 0.019670, 0.066957, 0.022045, -0.014840, -0.014467, - -0.005647, -0.033016, -0.031916, -0.003716, 0.035186, 0.030709, -0.019603, - -0.019096, 0.017007, -0.036737, -0.061700, 0.017120, -0.006435, 0.017188, - 0.019413, 0.009705, -0.022930, 0.033933, -0.012781, -0.020440, 0.000601, - 0.037068, 0.031879, 0.001613, 0.012183, -0.014743, 0.003523, 0.009238, - -0.008259, 0.005025, -0.010486, -0.006175, -0.027247, 0.054110, 0.041090, - 0.015047, 0.010289, -0.005060, -0.011589, 0.021476, -0.000119, 0.004872, - 0.059115, 0.041870, 0.067369, 0.086146, 0.012560, 0.035460, 0.051854, - 0.034693, 0.019707, 0.033356, 0.004808, -0.097379, 0.023864, 0.038697, - 0.032671, 0.011883, -0.004693, -0.015027, 0.007991, 0.032215, 0.027006, - -0.003488, -0.029593, -0.011031, -0.054517, 0.014500, 0.012237, -0.007442, - 0.030923, -0.011590, -0.003757, -0.022096, 0.023077, 0.048920, -0.024756, - 0.001664, -0.012844, -0.044429, -0.028202, -0.075152, -0.072858, -0.041505, - 0.007033, 0.048607, 0.010818, 0.016017, 0.024585, 0.013890, -0.003650, - -0.012254, -0.007946, -0.001590, -0.044944, -0.011506, -0.011875, 0.005911, - -0.003688, -0.027209, -0.002980, -0.040539, -0.017485, -0.030805, -0.022715, - -0.019668, -0.018899, -0.025413, -0.025750, -0.054636, -0.078862, -0.027114, - 0.004325, -0.010396, -0.012495, -0.037614, 0.007555, 0.013474, 0.029762, - 0.027502, 0.032676, -0.014272, -0.042439, -0.012773, -0.021121, -0.003429, - 0.020032, -0.026561, -0.021986, -0.037330, 0.006373, -0.036476, -0.002681, - -0.011299, -0.026638, -0.031141, -0.059543, -0.025557, -0.029196, -0.015112, - 0.015031, 0.031323, -0.003843, -0.002772, 0.036035, 0.014867, -0.005146, - 0.006435, 0.026743, 0.007527, -0.005000, 0.045681, 0.007004, -0.009100, - -0.024997, -0.019335, -0.031498, -0.053903, 0.002564, 0.018594, -0.016186, - 0.024870, 0.017074, -0.020230, -0.005082, 0.013129, -0.003780, -0.015566, - 0.096450, 0.049249, 0.025240, 0.009358, -0.011581, -0.009642, -0.020710, - -0.003811, 0.034520, 0.012476, -0.038336, 0.009707, 0.000131, -0.016748, - 0.040867, 0.016803, 0.006970, -0.007577, 0.017479, -0.003837, -0.019565, - 0.013401, 0.003887, -0.005188, -0.008232, -0.020405, -0.012312, -0.006265, - 0.031346, 0.027220, -0.010228, 0.006910, 0.042469, 0.065740, 0.008422, - -0.012032, 0.016157, -0.001755, -0.030066, 0.008187, -0.022028, -0.003465, - 0.014575, -0.014998, -0.007847, 0.016965, 0.014355, -0.010142, -0.019808, - 0.014957, -0.006244, -0.031903, -0.004546, -0.049040, -0.042628, -0.012330, - 0.029151, 0.050293, 0.007757, -0.003153, -0.010034, 0.005666, -0.004283, - -0.003388, 0.016319, -0.005236, -0.022977, 0.047349, -0.008581, -0.033963, - 0.021182, -0.002207, -0.015682, -0.018019, 0.010384, -0.004215, -0.037432, - 0.022448, 0.033227, 0.042099, 0.027682, -0.017268, -0.018805, -0.023824, - -0.019851, -0.016760, 0.007941, 0.019172, 0.027481, 0.018014, -0.007525, - 0.012359, 0.015024, -0.023163, -0.038822, 0.036491, 0.006801, -0.014423, - 0.004137, -0.016364, -0.024037, -0.006968, 0.014611, -0.014871, -0.020816, - -0.006297, 0.003040, 0.004703, 0.039641, -0.013490, -0.042119, -0.015535, - -0.024402, -0.011086, -0.024774, 0.021224, 0.005039, -0.001982, -0.006375, - 7.000000, - 5.000000, 6.000000, 31.000000, - 0.057496, 0.013603, -0.011110, -0.000377, 0.014472, - 0.052405, -0.014996, -0.034271, -0.016228, -0.030820, - 0.090234, 0.010767, -0.010981, -0.007046, -0.007841, - 0.038769, -0.006292, 0.006018, 0.027939, 0.013375, - 0.024452, -0.021177, -0.024006, -0.033055, -0.023669, - 0.005147, -0.044008, 0.007852, 0.002570, -0.002105, - -0.011666, -0.035071, -0.025163, 0.020966, 0.000759, - 0.012578, -0.034789, 0.052016, 0.051007, 0.005718, - -0.035011, 0.019376, 0.084125, 0.086558, 0.009177, - -0.004584, 0.023304, 0.066229, 0.026129, -0.024107, - 0.026916, 0.005186, 0.014982, -0.022499, -0.008305, - -0.001412, 0.012680, 0.049675, 0.016194, -0.006579, - -0.026235, -0.007031, -0.028944, -0.028141, 0.017303, - -0.027216, 0.019039, 0.095420, 0.068286, -0.010672, - 0.005486, 0.103335, 0.103553, -0.035294, -0.025908, - 0.000383, 0.064983, 0.018498, -0.014104, -0.023288, - -0.015372, -0.006863, -0.028051, 0.003788, -0.015761, - -0.016130, 0.004480, -0.023730, -0.019107, -0.032628, - -0.022952, -0.009061, -0.022532, 0.005326, 0.010662, - -0.024184, 0.025857, -0.028739, -0.019824, -0.017628, - -0.023272, 0.025971, 0.006111, -0.056571, -0.002907, - 0.061085, 0.047699, -0.006158, -0.037974, -0.003482, - 0.015547, -0.022049, -0.048103, -0.000343, 0.011277, - -0.012725, 0.014067, 0.000608, 0.032850, -0.009386, - -0.029238, -0.044089, 0.039199, 0.019806, 0.003245, - 0.024479, 0.015430, 0.039933, 0.002173, 0.046032, - 0.015463, 0.048287, -0.071484, -0.045356, 0.041711, - 0.035643, -0.005460, -0.041839, -0.004434, 0.010996, - 0.025524, 0.039128, -0.040872, 0.000955, -0.015229, - 0.064037, 0.047190, -0.019934, 0.012774, 0.015980, - -0.033004, 0.011624, 0.029411, -0.005566, -0.046207, - 0.018335, 0.006619, 0.003960, 0.016625, 0.017938, - 0.039333, -0.024066, -0.006697, 0.005688, 0.037243, - 0.020335, -0.017543, -0.021733, 0.024678, 0.048919, - -0.020156, -0.021319, -0.013436, -0.014629, 0.008195, - -0.010939, -0.031646, -0.041354, 0.020618, 0.051783, - -0.008606, -0.012276, -0.008583, 0.020484, -0.014665, - -0.023830, -0.014103, 0.023871, 0.010608, 0.035654, - 0.030777, -0.019412, 0.015466, 0.020794, 0.029255, - 0.004905, 0.018175, -0.005353, 0.002454, 0.002463, - -0.015162, -0.009068, 0.005019, 0.051950, 0.011285, - 0.021152, -0.028503, -0.030586, 0.025865, -0.033271, - 0.004427, 0.017129, -0.015087, 0.025324, 0.041538, - -0.016555, -0.010084, 0.004145, 0.016352, 0.046882, - 0.024481, -0.013361, 0.010458, -0.002732, 0.032847, - 0.026433, -0.012205, -0.000196, 0.012161, 0.011495, - 0.004235, -0.040136, -0.012475, 0.004220, -0.009654, - 0.010961, -0.001011, -0.033436, 0.004382, -0.020932, - 0.002721, 0.019056, -0.026770, -0.015663, -0.013746, - -0.003614, 0.043328, -0.006182, 0.021758, 0.012506, - -0.016601, -0.041142, -0.043270, -0.029001, 0.039943, - 0.024687, -0.036333, -0.027075, -0.031917, -0.016361, - 0.003650, -0.024921, 0.012950, 0.015514, -0.009530, - -0.003028, -0.019434, 0.022110, 0.039935, -0.003245, - 0.019993, 0.031166, -0.011855, 0.017107, -0.008208, - 0.053634, 0.019518, -0.043620, -0.019473, 0.002263, - 0.038693, 0.005689, -0.055747, -0.048648, -0.008393, - 0.042986, -0.020261, 0.013738, -0.000856, -0.042172, - -0.028928, 0.004355, 0.008549, -0.004372, 0.012863, - 0.022420, -0.022008, -0.011963, -0.040111, -0.016778, - -0.029792, 0.024523, -0.003620, 0.009402, -0.009305, - -0.012489, -0.031771, -0.027597, 0.018870, 0.011174, - -0.020452, 0.019441, 0.094920, 0.087657, -0.003539, - -0.034526, 0.089380, 0.137324, 0.012807, -0.025540, - -0.062299, -0.012567, 0.035663, 0.006801, 0.032117, - -0.031824, 0.021629, 0.032078, -0.024493, -0.007189, - -0.019526, -0.030798, -0.028473, -0.008390, -0.035081, - -0.006097, -0.017603, 0.038939, 0.057522, 0.052526, - -0.019494, 0.027232, 0.077642, 0.030659, 0.002960, - -0.025768, 0.091274, 0.036207, -0.029707, -0.016102, - -0.059159, 0.007713, 0.034509, -0.003704, 0.020435, - -0.034896, -0.003726, 0.002090, -0.026635, -0.010896, - 0.005957, -0.015730, 0.025396, -0.015068, -0.014359, - 0.005243, 0.007402, -0.012762, 0.003277, 0.018846, - -0.009664, 0.012496, -0.046755, 0.002975, -0.011732, - -0.001188, 0.016553, -0.030682, 0.019520, -0.037291, - -0.046789, -0.014112, 0.027276, 0.004233, -0.002216, - -0.014163, -0.000281, -0.038407, -0.016640, -0.033975, - -0.012567, -0.017426, 0.025728, -0.015576, -0.019506, - 0.022708, 0.018946, -0.001870, -0.017463, -0.002688, - -0.003481, -0.005412, -0.075842, -0.009153, 0.053776, - 0.054361, 0.081611, -0.064068, 0.012690, 0.033798, - 0.071831, 0.083717, -0.018842, 0.032411, -0.000193, - 0.083057, 0.026231, -0.061750, -0.036771, -0.074432, - -0.001185, 0.025916, 0.077813, -0.027707, -0.019734, - 0.018824, 0.032949, 0.065334, 0.026131, 0.018915, - -0.026925, -0.019686, -0.010193, 0.011180, 0.036972, - -0.013705, -0.064692, -0.052488, 0.011525, 0.044246, - -0.003294, -0.010123, -0.019170, 0.033111, -0.011653, - -0.010535, 0.049944, -0.008713, 0.050128, -0.031733, - 0.005097, 0.028445, 0.010182, -0.000694, 0.027818, - -0.013720, 0.019800, -0.005155, 0.046928, 0.019877, - -0.023054, -0.019283, 0.004643, 0.065381, 0.001313, - -0.038632, -0.040704, -0.007665, 0.047381, 0.027521, - -0.033818, -0.035942, -0.008988, -0.024715, 0.016574, - -0.024407, -0.021522, 0.015081, 0.011414, 0.016598, - 0.004048, 0.002796, 0.002188, 0.026299, 0.009583, - -0.027840, -0.014555, -0.003625, -0.000329, -0.008983, - -0.029804, -0.027967, -0.011915, -0.019995, -0.037721, - -0.015980, -0.029710, -0.031431, -0.031082, 0.001392, - -0.009032, -0.030135, -0.011084, -0.026420, 0.016035, - 0.000285, 0.010565, 0.032719, -0.047862, 0.009590, - 0.007711, -0.029741, -0.020149, 0.015174, 0.011721, - 0.047882, 0.027259, -0.007885, -0.017621, -0.021765, - 0.048488, 0.019178, -0.015439, -0.011265, -0.023769, - 0.006941, -0.013752, -0.012106, -0.016154, 0.011259, - -0.004681, -0.007233, 0.011110, -0.032818, -0.013108, - -0.026787, -0.025958, 0.048698, -0.001983, -0.018924, - 0.025769, 0.033322, -0.022650, 0.017097, 0.005557, - 0.053952, 0.011312, -0.035168, 0.022600, 0.013669, - 0.083592, -0.009239, -0.028237, -0.019594, -0.003968, - 0.039206, -0.035955, 0.015959, 0.019098, 0.002786, - -0.015121, -0.035889, 0.002154, -0.007252, -0.008508, - 0.005252, -0.051999, 0.052910, 0.004646, -0.009514, - -0.034707, -0.001164, -0.028131, 0.014354, -0.001212, - -0.021948, -0.047459, 0.028541, 0.062678, 0.024906, - -0.038344, 0.032685, 0.057053, 0.092148, 0.014616, - -0.016699, 0.088711, 0.095742, 0.003586, -0.057528, - -0.024399, -0.021916, 0.032724, -0.021276, 0.013333, - -0.031414, 0.020018, 0.077706, -0.014691, -0.019567, - -0.026313, -0.029577, -0.043537, -0.007311, 0.018543, - -0.020603, 0.013091, 0.090353, 0.105241, 0.041277, - 0.005305, 0.067014, 0.076967, 0.012983, -0.017358, - 0.011929, 0.099526, 0.028651, -0.017787, -0.026691, - -0.045877, -0.005831, 0.011957, -0.006887, -0.002208, - -0.040150, 0.008698, -0.012684, -0.044002, -0.036797, - -0.018860, -0.002000, 0.009471, -0.008076, -0.022377, - -0.020853, 0.024341, -0.025941, 0.001901, 0.006573, - -0.034275, 0.053691, -0.027184, -0.051704, -0.019923, - 0.048760, 0.055767, -0.027477, -0.008777, -0.035430, - 0.005898, -0.032603, -0.015146, 0.013129, 0.000723, - -0.010288, 0.003831, -0.026816, 0.019451, -0.049329, - -0.023936, -0.014162, 0.027997, -0.000707, -0.006243, - 0.011467, 0.008581, 0.056688, 0.020609, 0.043234, - 0.019487, 0.031527, -0.106157, -0.021050, 0.085677, - 0.047762, 0.055914, -0.077028, 0.018788, 0.049065, - 0.016608, 0.030612, -0.036672, 0.017834, -0.000528, - 0.033208, 0.031407, -0.031438, -0.031324, -0.049865, - -0.016297, 0.011633, 0.052340, -0.035760, -0.021433, - 0.008722, 0.036485, 0.043542, 0.066232, 0.066041, - -0.011875, -0.018462, -0.005239, 0.036434, 0.082532, - 0.016740, -0.041587, -0.050648, 0.035937, 0.069466, - 0.004181, -0.003036, -0.014058, 0.029056, 0.014266, - -0.009058, 0.012889, -0.026958, 0.041898, -0.008851, - 0.007007, 0.013467, -0.002352, 0.033356, -0.001584, - -0.022138, 0.010374, 0.008002, 0.052191, 0.044197, - 0.017699, -0.027523, -0.009251, 0.063023, 0.016760, - -0.023341, -0.015564, -0.019917, 0.032719, 0.023342, - -0.046446, -0.039625, -0.006915, 0.003385, 0.012515, - -0.010283, -0.036456, 0.005809, 0.023231, -0.036874, - 0.008805, 0.024803, -0.013530, 0.039212, 0.035783, - -0.028991, -0.016080, -0.006812, 0.009390, 0.015344, - 0.010821, -0.027351, -0.016639, -0.014049, 0.008339, - 0.015392, -0.035453, -0.033983, -0.026781, -0.009259, - -0.000901, -0.055435, -0.008632, -0.016068, 0.002862, - 0.007159, 0.011046, 0.024787, -0.024233, -0.014296, - 0.013701, 0.003644, -0.024090, -0.001920, -0.005846, - 0.044201, 0.052329, -0.025081, 0.013063, 0.003554, - 0.018803, -0.010438, -0.053495, -0.051232, 0.012432, - 0.024898, -0.056254, -0.042921, -0.037155, 0.001516, - -0.000799, -0.028514, 0.023151, -0.010526, -0.013761, - -0.031705, -0.038409, 0.041922, 0.009431, -0.024822, - -0.042623, -0.033972, -0.021522, 0.008230, -0.014064, - -0.020069, 0.003028, 0.022616, 0.049804, 0.031693, - -0.019347, 0.011498, 0.013095, 0.029353, 0.037069, - -0.001045, 0.030823, 0.016375, 0.015652, 0.019009, - -0.029911, 0.007929, -0.001418, -0.012023, 0.009329, - -0.007664, 0.034905, -0.004745, -0.011782, -0.003290, - 0.012857, 0.001072, -0.009240, -0.034852, -0.021439, - 0.033766, 0.007871, 0.003996, -0.005524, 0.011935, - 0.024916, 0.007050, -0.003480, -0.012742, 0.012320, - 0.029686, 0.009101, -0.009385, 0.005804, -0.020850, - -0.010307, -0.031852, -0.001220, 0.004326, -0.015093, - 0.006229, -0.027441, -0.001469, 0.010908, -0.034696, - -0.017987, -0.005386, 0.005465, 0.038100, 0.019491, - -0.009491, 0.007065, 0.026677, 0.055059, 0.030444, - -0.014679, 0.016018, 0.017170, 0.025656, 0.017708, - 0.003789, 0.026148, 0.000691, 0.020702, 0.021265, - -0.020832, -0.004741, -0.004019, 0.004513, 0.023005, - 0.000655, 0.018204, -0.010199, -0.008000, -0.019064, - 0.006590, 0.025574, 0.028895, 0.008655, -0.004594, - 0.043190, 0.028350, 0.018321, 0.017852, 0.018217, - 0.049270, 0.022684, -0.003877, -0.020661, 0.009923, - 0.053434, 0.021622, -0.018420, -0.027519, -0.011352, - 0.001401, -0.025806, -0.028685, -0.001328, -0.008065, - 0.010309, -0.030999, -0.011381, 0.010349, -0.041058, - 10.000000, - 5.000000, 6.000000, 31.000000, - 0.022420, -0.022008, -0.011963, -0.040111, -0.016778, - -0.028928, 0.004355, 0.008549, -0.004372, 0.012863, - 0.042986, -0.020261, 0.013738, -0.000856, -0.042172, - 0.038693, 0.005689, -0.055747, -0.048648, -0.008393, - 0.053634, 0.019518, -0.043620, -0.019473, 0.002263, - 0.019993, 0.031166, -0.011855, 0.017107, -0.008208, - -0.003028, -0.019434, 0.022110, 0.039935, -0.003245, - 0.003650, -0.024921, 0.012950, 0.015514, -0.009530, - 0.024687, -0.036333, -0.027075, -0.031917, -0.016361, - -0.016601, -0.041142, -0.043270, -0.029001, 0.039943, - -0.003614, 0.043328, -0.006182, 0.021758, 0.012506, - 0.002721, 0.019056, -0.026770, -0.015663, -0.013746, - 0.010961, -0.001011, -0.033436, 0.004382, -0.020932, - 0.004235, -0.040136, -0.012475, 0.004220, -0.009654, - 0.026433, -0.012205, -0.000196, 0.012161, 0.011495, - 0.024481, -0.013361, 0.010458, -0.002732, 0.032847, - -0.016555, -0.010084, 0.004145, 0.016352, 0.046882, - 0.004427, 0.017129, -0.015087, 0.025324, 0.041538, - 0.021152, -0.028503, -0.030586, 0.025865, -0.033271, - -0.015162, -0.009068, 0.005019, 0.051950, 0.011285, - 0.004905, 0.018175, -0.005353, 0.002454, 0.002463, - 0.030777, -0.019412, 0.015466, 0.020794, 0.029255, - -0.023830, -0.014103, 0.023871, 0.010608, 0.035654, - -0.008606, -0.012276, -0.008583, 0.020484, -0.014665, - -0.010939, -0.031646, -0.041354, 0.020618, 0.051783, - -0.020156, -0.021319, -0.013436, -0.014629, 0.008195, - 0.020335, -0.017543, -0.021733, 0.024678, 0.048919, - 0.039333, -0.024066, -0.006697, 0.005688, 0.037243, - 0.018335, 0.006619, 0.003960, 0.016625, 0.017938, - -0.033004, 0.011624, 0.029411, -0.005566, -0.046207, - 0.064037, 0.047190, -0.019934, 0.012774, 0.015980, - 0.025524, 0.039128, -0.040872, 0.000955, -0.015229, - 0.035643, -0.005460, -0.041839, -0.004434, 0.010996, - 0.015463, 0.048287, -0.071484, -0.045356, 0.041711, - 0.024479, 0.015430, 0.039933, 0.002173, 0.046032, - -0.029238, -0.044089, 0.039199, 0.019806, 0.003245, - -0.012725, 0.014067, 0.000608, 0.032850, -0.009386, - 0.015547, -0.022049, -0.048103, -0.000343, 0.011277, - 0.061085, 0.047699, -0.006158, -0.037974, -0.003482, - -0.023272, 0.025971, 0.006111, -0.056571, -0.002907, - -0.024184, 0.025857, -0.028739, -0.019824, -0.017628, - -0.022952, -0.009061, -0.022532, 0.005326, 0.010662, - -0.016130, 0.004480, -0.023730, -0.019107, -0.032628, - -0.015372, -0.006863, -0.028051, 0.003788, -0.015761, - 0.000383, 0.064983, 0.018498, -0.014104, -0.023288, - 0.005486, 0.103335, 0.103553, -0.035294, -0.025908, - -0.027216, 0.019039, 0.095420, 0.068286, -0.010672, - -0.026235, -0.007031, -0.028944, -0.028141, 0.017303, - -0.001412, 0.012680, 0.049675, 0.016194, -0.006579, - 0.026916, 0.005186, 0.014982, -0.022499, -0.008305, - -0.004584, 0.023304, 0.066229, 0.026129, -0.024107, - -0.035011, 0.019376, 0.084125, 0.086558, 0.009177, - 0.012578, -0.034789, 0.052016, 0.051007, 0.005718, - -0.011666, -0.035071, -0.025163, 0.020966, 0.000759, - 0.005147, -0.044008, 0.007852, 0.002570, -0.002105, - 0.024452, -0.021177, -0.024006, -0.033055, -0.023669, - 0.038769, -0.006292, 0.006018, 0.027939, 0.013375, - 0.090234, 0.010767, -0.010981, -0.007046, -0.007841, - 0.052405, -0.014996, -0.034271, -0.016228, -0.030820, - 0.057496, 0.013603, -0.011110, -0.000377, 0.014472, - -0.026787, -0.025958, 0.048698, -0.001983, -0.018924, - -0.004681, -0.007233, 0.011110, -0.032818, -0.013108, - 0.006941, -0.013752, -0.012106, -0.016154, 0.011259, - 0.048488, 0.019178, -0.015439, -0.011265, -0.023769, - 0.047882, 0.027259, -0.007885, -0.017621, -0.021765, - 0.007711, -0.029741, -0.020149, 0.015174, 0.011721, - 0.000285, 0.010565, 0.032719, -0.047862, 0.009590, - -0.009032, -0.030135, -0.011084, -0.026420, 0.016035, - -0.015980, -0.029710, -0.031431, -0.031082, 0.001392, - -0.029804, -0.027967, -0.011915, -0.019995, -0.037721, - -0.027840, -0.014555, -0.003625, -0.000329, -0.008983, - 0.004048, 0.002796, 0.002188, 0.026299, 0.009583, - -0.024407, -0.021522, 0.015081, 0.011414, 0.016598, - -0.033818, -0.035942, -0.008988, -0.024715, 0.016574, - -0.038632, -0.040704, -0.007665, 0.047381, 0.027521, - -0.023054, -0.019283, 0.004643, 0.065381, 0.001313, - -0.013720, 0.019800, -0.005155, 0.046928, 0.019877, - 0.005097, 0.028445, 0.010182, -0.000694, 0.027818, - -0.010535, 0.049944, -0.008713, 0.050128, -0.031733, - -0.003294, -0.010123, -0.019170, 0.033111, -0.011653, - -0.013705, -0.064692, -0.052488, 0.011525, 0.044246, - -0.026925, -0.019686, -0.010193, 0.011180, 0.036972, - 0.018824, 0.032949, 0.065334, 0.026131, 0.018915, - -0.001185, 0.025916, 0.077813, -0.027707, -0.019734, - 0.083057, 0.026231, -0.061750, -0.036771, -0.074432, - 0.071831, 0.083717, -0.018842, 0.032411, -0.000193, - 0.054361, 0.081611, -0.064068, 0.012690, 0.033798, - -0.003481, -0.005412, -0.075842, -0.009153, 0.053776, - 0.022708, 0.018946, -0.001870, -0.017463, -0.002688, - -0.012567, -0.017426, 0.025728, -0.015576, -0.019506, - -0.014163, -0.000281, -0.038407, -0.016640, -0.033975, - -0.046789, -0.014112, 0.027276, 0.004233, -0.002216, - -0.001188, 0.016553, -0.030682, 0.019520, -0.037291, - -0.009664, 0.012496, -0.046755, 0.002975, -0.011732, - 0.005243, 0.007402, -0.012762, 0.003277, 0.018846, - 0.005957, -0.015730, 0.025396, -0.015068, -0.014359, - -0.034896, -0.003726, 0.002090, -0.026635, -0.010896, - -0.059159, 0.007713, 0.034509, -0.003704, 0.020435, - -0.025768, 0.091274, 0.036207, -0.029707, -0.016102, - -0.019494, 0.027232, 0.077642, 0.030659, 0.002960, - -0.006097, -0.017603, 0.038939, 0.057522, 0.052526, - -0.019526, -0.030798, -0.028473, -0.008390, -0.035081, - -0.031824, 0.021629, 0.032078, -0.024493, -0.007189, - -0.062299, -0.012567, 0.035663, 0.006801, 0.032117, - -0.034526, 0.089380, 0.137324, 0.012807, -0.025540, - -0.020452, 0.019441, 0.094920, 0.087657, -0.003539, - -0.012489, -0.031771, -0.027597, 0.018870, 0.011174, - -0.029792, 0.024523, -0.003620, 0.009402, -0.009305, - 0.005252, -0.051999, 0.052910, 0.004646, -0.009514, - -0.015121, -0.035889, 0.002154, -0.007252, -0.008508, - 0.039206, -0.035955, 0.015959, 0.019098, 0.002786, - 0.083592, -0.009239, -0.028237, -0.019594, -0.003968, - 0.053952, 0.011312, -0.035168, 0.022600, 0.013669, - 0.025769, 0.033322, -0.022650, 0.017097, 0.005557, - -0.031705, -0.038409, 0.041922, 0.009431, -0.024822, - -0.000799, -0.028514, 0.023151, -0.010526, -0.013761, - 0.024898, -0.056254, -0.042921, -0.037155, 0.001516, - 0.018803, -0.010438, -0.053495, -0.051232, 0.012432, - 0.044201, 0.052329, -0.025081, 0.013063, 0.003554, - 0.013701, 0.003644, -0.024090, -0.001920, -0.005846, - 0.007159, 0.011046, 0.024787, -0.024233, -0.014296, - -0.000901, -0.055435, -0.008632, -0.016068, 0.002862, - 0.015392, -0.035453, -0.033983, -0.026781, -0.009259, - 0.010821, -0.027351, -0.016639, -0.014049, 0.008339, - -0.028991, -0.016080, -0.006812, 0.009390, 0.015344, - 0.008805, 0.024803, -0.013530, 0.039212, 0.035783, - -0.010283, -0.036456, 0.005809, 0.023231, -0.036874, - -0.046446, -0.039625, -0.006915, 0.003385, 0.012515, - -0.023341, -0.015564, -0.019917, 0.032719, 0.023342, - 0.017699, -0.027523, -0.009251, 0.063023, 0.016760, - -0.022138, 0.010374, 0.008002, 0.052191, 0.044197, - 0.007007, 0.013467, -0.002352, 0.033356, -0.001584, - -0.009058, 0.012889, -0.026958, 0.041898, -0.008851, - 0.004181, -0.003036, -0.014058, 0.029056, 0.014266, - 0.016740, -0.041587, -0.050648, 0.035937, 0.069466, - -0.011875, -0.018462, -0.005239, 0.036434, 0.082532, - 0.008722, 0.036485, 0.043542, 0.066232, 0.066041, - -0.016297, 0.011633, 0.052340, -0.035760, -0.021433, - 0.033208, 0.031407, -0.031438, -0.031324, -0.049865, - 0.016608, 0.030612, -0.036672, 0.017834, -0.000528, - 0.047762, 0.055914, -0.077028, 0.018788, 0.049065, - 0.019487, 0.031527, -0.106157, -0.021050, 0.085677, - 0.011467, 0.008581, 0.056688, 0.020609, 0.043234, - -0.023936, -0.014162, 0.027997, -0.000707, -0.006243, - -0.010288, 0.003831, -0.026816, 0.019451, -0.049329, - 0.005898, -0.032603, -0.015146, 0.013129, 0.000723, - 0.048760, 0.055767, -0.027477, -0.008777, -0.035430, - -0.034275, 0.053691, -0.027184, -0.051704, -0.019923, - -0.020853, 0.024341, -0.025941, 0.001901, 0.006573, - -0.018860, -0.002000, 0.009471, -0.008076, -0.022377, - -0.040150, 0.008698, -0.012684, -0.044002, -0.036797, - -0.045877, -0.005831, 0.011957, -0.006887, -0.002208, - 0.011929, 0.099526, 0.028651, -0.017787, -0.026691, - 0.005305, 0.067014, 0.076967, 0.012983, -0.017358, - -0.020603, 0.013091, 0.090353, 0.105241, 0.041277, - -0.026313, -0.029577, -0.043537, -0.007311, 0.018543, - -0.031414, 0.020018, 0.077706, -0.014691, -0.019567, - -0.024399, -0.021916, 0.032724, -0.021276, 0.013333, - -0.016699, 0.088711, 0.095742, 0.003586, -0.057528, - -0.038344, 0.032685, 0.057053, 0.092148, 0.014616, - -0.021948, -0.047459, 0.028541, 0.062678, 0.024906, - -0.034707, -0.001164, -0.028131, 0.014354, -0.001212, - 0.000655, 0.018204, -0.010199, -0.008000, -0.019064, - -0.020832, -0.004741, -0.004019, 0.004513, 0.023005, - 0.003789, 0.026148, 0.000691, 0.020702, 0.021265, - -0.014679, 0.016018, 0.017170, 0.025656, 0.017708, - -0.009491, 0.007065, 0.026677, 0.055059, 0.030444, - -0.017987, -0.005386, 0.005465, 0.038100, 0.019491, - 0.010309, -0.030999, -0.011381, 0.010349, -0.041058, - 0.001401, -0.025806, -0.028685, -0.001328, -0.008065, - 0.053434, 0.021622, -0.018420, -0.027519, -0.011352, - 0.049270, 0.022684, -0.003877, -0.020661, 0.009923, - 0.043190, 0.028350, 0.018321, 0.017852, 0.018217, - 0.006590, 0.025574, 0.028895, 0.008655, -0.004594, - -0.007664, 0.034905, -0.004745, -0.011782, -0.003290, - -0.029911, 0.007929, -0.001418, -0.012023, 0.009329, - -0.001045, 0.030823, 0.016375, 0.015652, 0.019009, - -0.019347, 0.011498, 0.013095, 0.029353, 0.037069, - -0.020069, 0.003028, 0.022616, 0.049804, 0.031693, - -0.042623, -0.033972, -0.021522, 0.008230, -0.014064, - 0.006229, -0.027441, -0.001469, 0.010908, -0.034696, - -0.010307, -0.031852, -0.001220, 0.004326, -0.015093, - 0.029686, 0.009101, -0.009385, 0.005804, -0.020850, - 0.024916, 0.007050, -0.003480, -0.012742, 0.012320, - 0.033766, 0.007871, 0.003996, -0.005524, 0.011935, - 0.012857, 0.001072, -0.009240, -0.034852, -0.021439, - 9.000000, - 5.000000, 6.000000, 31.000000, - -0.005269, 0.003265, -0.057372, -0.014916, 0.000350, - -0.033603, 0.042621, 0.046408, 0.015054, -0.040701, - -0.032820, 0.002539, 0.049921, -0.002849, -0.040857, - -0.028549, -0.024451, -0.016888, -0.004139, -0.031090, - 0.018385, -0.029489, -0.039482, -0.005263, 0.003600, - -0.003035, -0.019141, -0.027136, -0.011762, -0.019722, - 0.010330, -0.012228, -0.034382, -0.020211, -0.005356, - 0.008835, 0.023415, 0.009247, -0.004997, -0.008283, - -0.018601, 0.042201, 0.030386, -0.022709, -0.010278, - -0.017801, 0.020592, -0.004218, -0.012026, -0.033760, - -0.003238, 0.009043, -0.006620, 0.020710, -0.012957, - -0.030324, -0.005934, 0.016761, 0.028109, -0.006409, - 0.001529, -0.006793, 0.000467, 0.007010, 0.011105, - 0.009055, 0.007265, -0.006551, -0.006119, -0.015939, - -0.007717, 0.046858, 0.006484, -0.006507, -0.020158, - -0.024908, 0.013256, 0.009855, 0.022716, -0.003107, - 0.005510, -0.000875, 0.017815, 0.010381, 0.006326, - -0.006571, 0.001103, 0.015569, 0.002520, 0.008076, - 0.019876, -0.022300, 0.016447, 0.020197, 0.015103, - -0.005064, -0.026547, -0.009371, -0.047784, -0.030161, - 0.001775, 0.004391, 0.043727, -0.038446, 0.007124, - -0.002187, -0.003958, 0.000399, -0.011124, -0.004505, - -0.016920, -0.009817, -0.038237, 0.042863, -0.024803, - -0.010022, 0.010939, 0.018933, 0.057716, -0.024107, - -0.031190, -0.017644, 0.041947, -0.015026, -0.031277, - -0.008999, 0.003318, 0.030033, -0.085919, -0.014079, - 0.061899, 0.044323, 0.028903, -0.060919, 0.045414, - 0.020559, 0.013955, -0.006575, -0.038356, 0.057331, - -0.039424, -0.032163, -0.043926, 0.005404, 0.022979, - -0.026050, -0.014911, 0.001164, 0.020493, 0.021553, - -0.026050, -0.014911, 0.001164, 0.020493, 0.021553, - -0.039424, -0.032163, -0.043926, 0.005404, 0.022979, - 0.020559, 0.013955, -0.006575, -0.038356, 0.057331, - 0.061899, 0.044323, 0.028903, -0.060919, 0.045414, - -0.008999, 0.003318, 0.030033, -0.085919, -0.014079, - -0.031190, -0.017644, 0.041947, -0.015026, -0.031277, - -0.010022, 0.010939, 0.018933, 0.057716, -0.024107, - -0.016920, -0.009817, -0.038237, 0.042863, -0.024803, - -0.002187, -0.003958, 0.000399, -0.011124, -0.004505, - 0.001775, 0.004391, 0.043727, -0.038446, 0.007124, - -0.005064, -0.026547, -0.009371, -0.047784, -0.030161, - 0.019876, -0.022300, 0.016447, 0.020197, 0.015103, - -0.006571, 0.001103, 0.015569, 0.002520, 0.008076, - 0.005510, -0.000875, 0.017815, 0.010381, 0.006326, - -0.024908, 0.013256, 0.009855, 0.022716, -0.003107, - -0.007717, 0.046858, 0.006484, -0.006507, -0.020158, - 0.009055, 0.007265, -0.006551, -0.006119, -0.015939, - 0.001529, -0.006793, 0.000467, 0.007010, 0.011105, - -0.030324, -0.005934, 0.016761, 0.028109, -0.006409, - -0.003238, 0.009043, -0.006620, 0.020710, -0.012957, - -0.017801, 0.020592, -0.004218, -0.012026, -0.033760, - -0.018601, 0.042201, 0.030386, -0.022709, -0.010278, - 0.008835, 0.023415, 0.009247, -0.004997, -0.008283, - 0.010330, -0.012228, -0.034382, -0.020211, -0.005356, - -0.003035, -0.019141, -0.027136, -0.011762, -0.019722, - 0.018385, -0.029489, -0.039482, -0.005263, 0.003600, - -0.028549, -0.024451, -0.016888, -0.004139, -0.031090, - -0.032820, 0.002539, 0.049921, -0.002849, -0.040857, - -0.033603, 0.042621, 0.046408, 0.015054, -0.040701, - -0.005269, 0.003265, -0.057372, -0.014916, 0.000350, - 0.000473, 0.009758, 0.006628, 0.004643, 0.022348, - 0.023737, 0.006893, -0.015799, -0.008735, 0.015162, - -0.002598, 0.016063, 0.008738, -0.000951, -0.006577, - -0.009739, 0.010705, 0.040578, 0.014046, -0.041242, - -0.017134, -0.011401, 0.052753, 0.019145, -0.023101, - 0.031006, 0.008150, -0.020862, -0.022117, -0.020719, - -0.000483, -0.028907, -0.010220, -0.016499, 0.010532, - 0.040963, -0.011141, -0.023895, -0.004849, 0.011085, - -0.012398, -0.018293, -0.005948, 0.000671, -0.003921, - 0.011326, -0.026647, -0.008959, 0.039152, -0.011145, - 0.008763, -0.018133, 0.000480, 0.034343, -0.002817, - -0.014269, -0.017102, -0.012312, -0.018956, -0.005201, - 0.013666, 0.003594, -0.028458, -0.013815, 0.038667, - 0.029813, -0.020200, -0.031928, 0.012781, 0.016547, - -0.033703, -0.030328, -0.012102, 0.013067, 0.002325, - 0.004051, -0.035172, -0.024486, 0.052095, 0.012015, - -0.001819, -0.031469, -0.053356, -0.025182, -0.004391, - 0.024510, -0.000820, -0.034617, -0.047534, 0.013684, - -0.011349, 0.019010, 0.012552, 0.063836, 0.040790, - 0.000175, 0.013678, -0.016420, 0.040923, -0.023029, - -0.001026, -0.014274, 0.025762, 0.045230, -0.039127, - 0.030411, 0.037354, 0.077097, 0.029034, -0.051224, - 0.035121, 0.050369, 0.047904, -0.034560, -0.072930, - 0.091330, 0.048515, 0.057936, -0.056916, -0.052713, - 0.091330, 0.048515, 0.057936, -0.056916, -0.052713, - 0.035121, 0.050369, 0.047904, -0.034560, -0.072930, - 0.030411, 0.037354, 0.077097, 0.029034, -0.051224, - -0.001026, -0.014274, 0.025762, 0.045230, -0.039127, - 0.000175, 0.013678, -0.016420, 0.040923, -0.023029, - -0.011349, 0.019010, 0.012552, 0.063836, 0.040790, - 0.024510, -0.000820, -0.034617, -0.047534, 0.013684, - -0.001819, -0.031469, -0.053356, -0.025182, -0.004391, - 0.004051, -0.035172, -0.024486, 0.052095, 0.012015, - -0.033703, -0.030328, -0.012102, 0.013067, 0.002325, - 0.029813, -0.020200, -0.031928, 0.012781, 0.016547, - 0.013666, 0.003594, -0.028458, -0.013815, 0.038667, - -0.014269, -0.017102, -0.012312, -0.018956, -0.005201, - 0.008763, -0.018133, 0.000480, 0.034343, -0.002817, - 0.011326, -0.026647, -0.008959, 0.039152, -0.011145, - -0.012398, -0.018293, -0.005948, 0.000671, -0.003921, - 0.040963, -0.011141, -0.023895, -0.004849, 0.011085, - -0.000483, -0.028907, -0.010220, -0.016499, 0.010532, - 0.031006, 0.008150, -0.020862, -0.022117, -0.020719, - -0.017134, -0.011401, 0.052753, 0.019145, -0.023101, - -0.009739, 0.010705, 0.040578, 0.014046, -0.041242, - -0.002598, 0.016063, 0.008738, -0.000951, -0.006577, - 0.023737, 0.006893, -0.015799, -0.008735, 0.015162, - 0.000473, 0.009758, 0.006628, 0.004643, 0.022348, - 0.021633, 0.017181, -0.063889, -0.022074, -0.010013, - -0.011439, 0.030058, 0.021587, 0.023890, -0.021443, - -0.056285, 0.005891, 0.030663, -0.010662, -0.053971, - -0.056285, 0.005891, 0.030663, -0.010662, -0.053971, - -0.011439, 0.030058, 0.021587, 0.023890, -0.021443, - 0.021633, 0.017181, -0.063889, -0.022074, -0.010013, - 0.011159, -0.008860, -0.023701, -0.008950, 0.012148, - 0.029139, 0.007422, -0.008740, -0.004333, 0.006488, - -0.009114, 0.042322, 0.015412, -0.018466, -0.016371, - -0.033587, 0.014023, 0.010858, 0.008375, -0.067723, - -0.011060, -0.003559, 0.028888, 0.047898, -0.028310, - 0.011014, 0.003794, -0.013038, -0.003094, -0.034568, - 0.003766, -0.030240, -0.010316, -0.015675, 0.002519, - 0.043456, -0.002240, -0.025551, -0.019850, -0.024040, - -0.036611, 0.005292, -0.006924, -0.007798, -0.040273, - -0.007909, -0.023121, -0.019656, 0.017571, -0.024878, - 0.014380, -0.010359, 0.006162, 0.024599, -0.009757, - 0.002971, -0.010973, 0.000004, -0.020199, -0.019222, - 0.006863, -0.027733, -0.018828, -0.007719, 0.041097, - 0.019027, -0.034590, -0.043493, -0.039773, -0.019695, - -0.040303, -0.025575, 0.014263, -0.032106, -0.003782, - -0.012908, -0.033766, -0.027064, -0.001566, -0.011371, - -0.018194, -0.034580, -0.075074, 0.000563, -0.045442, - 0.001971, -0.010250, -0.007632, 0.011757, -0.027249, - -0.047032, -0.032784, 0.016326, 0.048785, 0.022223, - -0.016149, -0.019620, -0.016953, -0.015635, 0.005633, - 0.021308, -0.011369, 0.000990, -0.008970, 0.025539, - 0.013467, 0.010377, -0.003872, -0.034220, 0.022719, - -0.031556, 0.003928, 0.008096, 0.005708, 0.006432, - 0.047714, 0.033191, 0.046980, 0.029515, 0.026196, - 0.047714, 0.033191, 0.046980, 0.029515, 0.026196, - -0.031556, 0.003928, 0.008096, 0.005708, 0.006432, - 0.013467, 0.010377, -0.003872, -0.034220, 0.022719, - 0.021308, -0.011369, 0.000990, -0.008970, 0.025539, - -0.016149, -0.019620, -0.016953, -0.015635, 0.005633, - -0.047032, -0.032784, 0.016326, 0.048785, 0.022223, - 0.001971, -0.010250, -0.007632, 0.011757, -0.027249, - -0.018194, -0.034580, -0.075074, 0.000563, -0.045442, - -0.012908, -0.033766, -0.027064, -0.001566, -0.011371, - -0.040303, -0.025575, 0.014263, -0.032106, -0.003782, - 0.019027, -0.034590, -0.043493, -0.039773, -0.019695, - 0.006863, -0.027733, -0.018828, -0.007719, 0.041097, - 0.002971, -0.010973, 0.000004, -0.020199, -0.019222, - 0.014380, -0.010359, 0.006162, 0.024599, -0.009757, - -0.007909, -0.023121, -0.019656, 0.017571, -0.024878, - -0.036611, 0.005292, -0.006924, -0.007798, -0.040273, - 0.043456, -0.002240, -0.025551, -0.019850, -0.024040, - 0.003766, -0.030240, -0.010316, -0.015675, 0.002519, - 0.011014, 0.003794, -0.013038, -0.003094, -0.034568, - -0.011060, -0.003559, 0.028888, 0.047898, -0.028310, - -0.033587, 0.014023, 0.010858, 0.008375, -0.067723, - -0.009114, 0.042322, 0.015412, -0.018466, -0.016371, - 0.029139, 0.007422, -0.008740, -0.004333, 0.006488, - 0.011159, -0.008860, -0.023701, -0.008950, 0.012148, - 0.008595, 0.005506, -0.002417, 0.001010, -0.009588, - 0.012543, -0.016943, -0.028495, 0.001464, -0.023564, - -0.003360, -0.005952, 0.008682, 0.019900, -0.016873, - 0.011400, 0.030833, 0.043337, 0.019577, -0.013843, - 0.040571, 0.035162, 0.003815, 0.001947, -0.023236, - 0.040574, 0.010934, -0.008238, -0.010705, -0.005975, - -0.030678, -0.035199, 0.001586, -0.002899, 0.014420, - -0.027432, -0.028781, -0.026334, -0.021860, -0.021496, - -0.024423, 0.007432, 0.013890, -0.029843, -0.026329, - -0.012856, 0.014410, 0.048489, -0.001155, -0.024405, - -0.000153, -0.005764, 0.012856, 0.008171, -0.024802, - 0.007039, -0.000779, -0.008352, -0.003069, 0.009018, - 0.040574, 0.010934, -0.008238, -0.010705, -0.005975, - 0.040571, 0.035162, 0.003815, 0.001947, -0.023236, - 0.011400, 0.030833, 0.043337, 0.019577, -0.013843, - -0.003360, -0.005952, 0.008682, 0.019900, -0.016873, - 0.012543, -0.016943, -0.028495, 0.001464, -0.023564, - 0.008595, 0.005506, -0.002417, 0.001010, -0.009588, - 0.007039, -0.000779, -0.008352, -0.003069, 0.009018, - -0.000153, -0.005764, 0.012856, 0.008171, -0.024802, - -0.012856, 0.014410, 0.048489, -0.001155, -0.024405, - -0.024423, 0.007432, 0.013890, -0.029843, -0.026329, - -0.027432, -0.028781, -0.026334, -0.021860, -0.021496, - -0.030678, -0.035199, 0.001586, -0.002899, 0.014420, - 0.000000, - 7.000000, 4.000000, 31.000000, - 0.012612, -0.033939, -0.004144, 0.019391, -0.005832, -0.010969, -0.012437, - 0.021952, -0.025668, -0.015289, -0.000694, 0.025316, -0.007013, -0.005911, - 0.072144, -0.028475, -0.005240, -0.044178, -0.008157, -0.005645, 0.002201, - 0.047898, -0.031667, -0.056374, -0.036236, 0.001547, -0.004698, -0.006211, - -0.005149, -0.027764, 0.008107, 0.019450, -0.009246, -0.023704, 0.008610, - -0.012207, -0.002737, 0.003140, -0.000191, -0.010053, -0.019750, -0.002550, - 0.000034, -0.011479, -0.027220, -0.007424, -0.015704, -0.024163, -0.003700, - -0.001449, -0.009987, -0.000738, 0.002255, -0.003244, -0.019494, 0.011811, - -0.040859, -0.031334, -0.014567, 0.006345, -0.027024, -0.002347, 0.009118, - -0.022883, 0.039464, -0.001252, 0.016477, 0.009036, -0.028067, -0.026240, - -0.001212, 0.030051, -0.012432, 0.005355, -0.006437, -0.006348, 0.004002, - 0.007296, 0.003312, -0.017281, -0.003617, -0.013867, -0.007465, 0.019742, - -0.016482, -0.031478, 0.017351, 0.001364, 0.007074, -0.013422, 0.016673, - -0.021213, 0.018851, 0.012723, -0.031044, 0.048563, -0.024449, 0.019532, - 0.003642, 0.016993, -0.010259, -0.008277, -0.012968, -0.029166, 0.014416, - 0.000816, 0.000189, -0.015032, 0.033940, -0.056087, -0.006707, 0.023248, - 0.018986, 0.063894, -0.037159, -0.013138, 0.063372, 0.000242, -0.025291, - 0.054196, 0.054936, -0.013838, -0.000768, 0.033740, 0.006700, 0.022035, - 0.060895, 0.062097, -0.012515, 0.016251, 0.019379, 0.008498, 0.005274, - 0.023553, -0.009692, -0.012343, -0.001587, 0.015677, -0.015229, -0.036725, - 0.023553, -0.009692, -0.012343, -0.001587, 0.015677, -0.015229, -0.036725, - 0.060895, 0.062097, -0.012515, 0.016251, 0.019379, 0.008498, 0.005274, - 0.054196, 0.054936, -0.013838, -0.000768, 0.033740, 0.006700, 0.022035, - 0.018986, 0.063894, -0.037159, -0.013138, 0.063372, 0.000242, -0.025291, - 0.000816, 0.000189, -0.015032, 0.033940, -0.056087, -0.006707, 0.023248, - 0.003642, 0.016993, -0.010259, -0.008277, -0.012968, -0.029166, 0.014416, - -0.021213, 0.018851, 0.012723, -0.031044, 0.048563, -0.024449, 0.019532, - -0.016482, -0.031478, 0.017351, 0.001364, 0.007074, -0.013422, 0.016673, - 0.007296, 0.003312, -0.017281, -0.003617, -0.013867, -0.007465, 0.019742, - -0.001212, 0.030051, -0.012432, 0.005355, -0.006437, -0.006348, 0.004002, - -0.022883, 0.039464, -0.001252, 0.016477, 0.009036, -0.028067, -0.026240, - -0.040859, -0.031334, -0.014567, 0.006345, -0.027024, -0.002347, 0.009118, - -0.001449, -0.009987, -0.000738, 0.002255, -0.003244, -0.019494, 0.011811, - 0.000034, -0.011479, -0.027220, -0.007424, -0.015704, -0.024163, -0.003700, - -0.012207, -0.002737, 0.003140, -0.000191, -0.010053, -0.019750, -0.002550, - -0.005149, -0.027764, 0.008107, 0.019450, -0.009246, -0.023704, 0.008610, - 0.047898, -0.031667, -0.056374, -0.036236, 0.001547, -0.004698, -0.006211, - 0.072144, -0.028475, -0.005240, -0.044178, -0.008157, -0.005645, 0.002201, - 0.021952, -0.025668, -0.015289, -0.000694, 0.025316, -0.007013, -0.005911, - 0.012612, -0.033939, -0.004144, 0.019391, -0.005832, -0.010969, -0.012437, - -0.031963, -0.030653, -0.003743, -0.008823, -0.012788, -0.011049, -0.015370, - -0.034945, -0.022147, 0.020938, -0.004718, -0.014661, -0.013123, -0.014446, - -0.042663, -0.000338, 0.061526, 0.033090, 0.008329, -0.015903, -0.005920, - -0.010060, -0.024891, 0.018169, 0.001538, -0.020435, -0.028635, -0.034695, - -0.005240, -0.000755, 0.008502, -0.013873, -0.028099, -0.020255, -0.000979, - -0.009663, -0.001706, 0.030162, 0.004706, -0.003488, 0.012405, -0.005293, - -0.015892, 0.008023, 0.006186, -0.005187, -0.018653, -0.017583, 0.012395, - 0.008489, -0.004586, 0.070434, -0.010601, -0.042147, 0.025804, -0.005100, - -0.030687, -0.023589, 0.001068, 0.003650, 0.004078, -0.002646, -0.019131, - -0.033563, -0.048936, -0.010869, 0.006213, -0.005211, 0.002027, -0.041420, - -0.027557, -0.010886, -0.003320, -0.014953, 0.000454, -0.005963, -0.011676, - -0.000123, 0.017998, 0.014565, 0.013483, 0.021877, 0.023487, -0.006751, - 0.062300, 0.119856, -0.035181, -0.002543, -0.022854, -0.020492, -0.003684, - 0.018473, 0.070875, -0.042581, -0.006373, -0.011074, 0.034762, 0.007030, - -0.031569, 0.032751, -0.006949, 0.017146, -0.008339, -0.008012, 0.036708, - -0.034337, -0.003984, -0.019568, -0.004887, -0.021754, -0.036476, 0.035403, - -0.034337, -0.003984, -0.019568, -0.004887, -0.021754, -0.036476, 0.035403, - -0.031569, 0.032751, -0.006949, 0.017146, -0.008339, -0.008012, 0.036708, - 0.018473, 0.070875, -0.042581, -0.006373, -0.011074, 0.034762, 0.007030, - 0.062300, 0.119856, -0.035181, -0.002543, -0.022854, -0.020492, -0.003684, - -0.000123, 0.017998, 0.014565, 0.013483, 0.021877, 0.023487, -0.006751, - -0.027557, -0.010886, -0.003320, -0.014953, 0.000454, -0.005963, -0.011676, - -0.033563, -0.048936, -0.010869, 0.006213, -0.005211, 0.002027, -0.041420, - -0.030687, -0.023589, 0.001068, 0.003650, 0.004078, -0.002646, -0.019131, - 0.008489, -0.004586, 0.070434, -0.010601, -0.042147, 0.025804, -0.005100, - -0.015892, 0.008023, 0.006186, -0.005187, -0.018653, -0.017583, 0.012395, - -0.009663, -0.001706, 0.030162, 0.004706, -0.003488, 0.012405, -0.005293, - -0.005240, -0.000755, 0.008502, -0.013873, -0.028099, -0.020255, -0.000979, - -0.010060, -0.024891, 0.018169, 0.001538, -0.020435, -0.028635, -0.034695, - -0.042663, -0.000338, 0.061526, 0.033090, 0.008329, -0.015903, -0.005920, - -0.034945, -0.022147, 0.020938, -0.004718, -0.014661, -0.013123, -0.014446, - -0.031963, -0.030653, -0.003743, -0.008823, -0.012788, -0.011049, -0.015370, - 0.050810, -0.053035, -0.021886, 0.019943, -0.004896, 0.000894, 0.008040, - 0.067734, -0.036137, 0.010676, -0.024998, 0.013558, -0.004113, 0.010280, - 0.067734, -0.036137, 0.010676, -0.024998, 0.013558, -0.004113, 0.010280, - 0.050810, -0.053035, -0.021886, 0.019943, -0.004896, 0.000894, 0.008040, - -0.032354, -0.054510, 0.004530, 0.004882, -0.039202, -0.030550, -0.005063, - -0.035780, -0.015541, 0.031213, -0.019830, -0.025299, -0.017829, -0.011621, - -0.031228, -0.002927, 0.030639, 0.010296, -0.004634, -0.038527, 0.009800, - -0.006093, -0.023173, 0.023946, 0.004875, -0.019002, -0.042679, -0.019723, - -0.035749, -0.039829, -0.013422, -0.004874, -0.056275, -0.013402, 0.005175, - -0.022023, 0.044399, 0.033200, 0.015070, -0.003301, -0.000538, -0.024747, - -0.012032, 0.029950, -0.001515, 0.001326, -0.019782, -0.019698, 0.018061, - -0.012188, 0.000345, 0.056245, 0.000774, -0.044730, 0.021203, 0.008581, - -0.027795, -0.045425, 0.005881, 0.013274, -0.003590, -0.021986, -0.015149, - -0.038921, -0.021779, 0.001075, -0.019138, 0.002720, -0.018882, -0.032341, - -0.015084, 0.014689, 0.005892, -0.015654, -0.009876, -0.031556, -0.020981, - -0.009349, 0.020528, 0.008036, 0.039894, -0.018650, -0.014050, 0.004082, - 0.017098, 0.034657, -0.044945, 0.015175, 0.049619, 0.001239, -0.029841, - 0.032379, 0.040430, -0.037998, -0.002143, 0.020808, 0.010538, -0.001366, - 0.020160, 0.051845, -0.004757, 0.017799, -0.010414, -0.014197, 0.020992, - 0.006372, 0.018450, -0.004367, -0.007500, 0.003403, -0.025160, -0.002908, - 0.006372, 0.018450, -0.004367, -0.007500, 0.003403, -0.025160, -0.002908, - 0.020160, 0.051845, -0.004757, 0.017799, -0.010414, -0.014197, 0.020992, - 0.032379, 0.040430, -0.037998, -0.002143, 0.020808, 0.010538, -0.001366, - 0.017098, 0.034657, -0.044945, 0.015175, 0.049619, 0.001239, -0.029841, - -0.009349, 0.020528, 0.008036, 0.039894, -0.018650, -0.014050, 0.004082, - -0.015084, 0.014689, 0.005892, -0.015654, -0.009876, -0.031556, -0.020981, - -0.038921, -0.021779, 0.001075, -0.019138, 0.002720, -0.018882, -0.032341, - -0.027795, -0.045425, 0.005881, 0.013274, -0.003590, -0.021986, -0.015149, - -0.012188, 0.000345, 0.056245, 0.000774, -0.044730, 0.021203, 0.008581, - -0.012032, 0.029950, -0.001515, 0.001326, -0.019782, -0.019698, 0.018061, - -0.022023, 0.044399, 0.033200, 0.015070, -0.003301, -0.000538, -0.024747, - -0.035749, -0.039829, -0.013422, -0.004874, -0.056275, -0.013402, 0.005175, - -0.006093, -0.023173, 0.023946, 0.004875, -0.019002, -0.042679, -0.019723, - -0.031228, -0.002927, 0.030639, 0.010296, -0.004634, -0.038527, 0.009800, - -0.035780, -0.015541, 0.031213, -0.019830, -0.025299, -0.017829, -0.011621, - -0.032354, -0.054510, 0.004530, 0.004882, -0.039202, -0.030550, -0.005063, - -0.023443, 0.021383, 0.004341, -0.022264, -0.033851, -0.015152, -0.020254, - -0.023098, 0.049572, 0.001039, -0.028342, -0.012605, -0.005314, -0.020041, - -0.019167, 0.044410, 0.016096, -0.014521, 0.013952, 0.021631, 0.001555, - -0.012835, 0.005534, 0.002493, -0.014252, 0.001072, 0.011339, -0.001586, - 0.016042, -0.026024, -0.013186, 0.019279, -0.018043, -0.054543, -0.012056, - 0.008269, -0.000929, -0.011604, 0.004394, -0.001051, -0.051765, -0.006049, - 0.023611, -0.007414, -0.018300, 0.026887, 0.013882, -0.030922, 0.027570, - 0.022877, -0.028738, -0.030386, 0.020118, -0.019771, -0.023694, 0.014207, - -0.012835, 0.005534, 0.002493, -0.014252, 0.001072, 0.011339, -0.001586, - -0.019167, 0.044410, 0.016096, -0.014521, 0.013952, 0.021631, 0.001555, - -0.023098, 0.049572, 0.001039, -0.028342, -0.012605, -0.005314, -0.020041, - -0.023443, 0.021383, 0.004341, -0.022264, -0.033851, -0.015152, -0.020254, - 0.022877, -0.028738, -0.030386, 0.020118, -0.019771, -0.023694, 0.014207, - 0.023611, -0.007414, -0.018300, 0.026887, 0.013882, -0.030922, 0.027570, - 0.008269, -0.000929, -0.011604, 0.004394, -0.001051, -0.051765, -0.006049, - 0.016042, -0.026024, -0.013186, 0.019279, -0.018043, -0.054543, -0.012056, - 0.000000, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_root.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_root.csv deleted file mode 100755 index 7e43e4530ba..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/car_root.csv +++ /dev/null @@ -1,623 +0,0 @@ - 2.000000, - 6.000000, 13.000000, 31.000000, - -0.002227, -0.031492, 0.005178, -0.007999, -0.042926, -0.034284, - -0.000279, -0.024699, -0.021361, -0.012128, -0.024803, -0.039946, - 0.006649, -0.004832, 0.011362, -0.035486, -0.036319, -0.013807, - 0.018330, 0.007419, 0.019842, -0.022839, -0.016118, 0.035482, - -0.022835, -0.026780, 0.003148, -0.023360, -0.026831, 0.002531, - -0.018320, -0.014254, 0.006299, -0.009249, -0.010514, -0.003782, - -0.003509, 0.000310, -0.000519, -0.004503, -0.000430, -0.001783, - 0.014914, 0.038687, 0.011065, -0.011067, -0.003044, -0.015056, - -0.000697, -0.020921, -0.027764, 0.005455, 0.001415, 0.016342, - 0.057660, -0.010562, -0.028346, -0.020398, -0.012429, 0.016573, - 0.002549, -0.001156, -0.024469, 0.000322, -0.019478, -0.009270, - 0.014942, -0.005840, -0.016259, -0.013652, 0.002682, 0.002704, - 0.024676, 0.025384, 0.009079, 0.033165, 0.014242, -0.001771, - -0.010552, 0.009671, 0.013672, -0.023095, -0.031463, -0.045704, - 0.018272, 0.013696, -0.014982, -0.011318, 0.000762, -0.030711, - -0.029194, 0.009472, -0.028297, -0.017081, 0.000709, 0.014655, - -0.041067, -0.003705, -0.036040, -0.000812, 0.012471, 0.030825, - -0.053576, -0.000282, -0.017225, -0.008208, -0.000179, -0.006225, - -0.009726, 0.012519, 0.005741, -0.000377, -0.012426, -0.022759, - -0.001338, -0.006823, 0.006925, -0.008880, -0.015509, -0.018486, - 0.008846, -0.016401, 0.001045, 0.019230, 0.019079, -0.006468, - -0.015868, -0.001115, -0.002408, 0.012789, 0.009637, 0.013429, - -0.011273, 0.000347, -0.006087, -0.021207, 0.005144, 0.033008, - -0.004826, -0.014866, -0.014426, 0.009400, 0.016818, -0.007313, - 0.003552, -0.011540, -0.020994, 0.034135, 0.039902, 0.020157, - -0.009575, -0.008143, -0.014587, 0.033054, 0.039761, 0.031679, - -0.018460, -0.017196, 0.010403, -0.001213, -0.051695, -0.043591, - 0.026330, -0.003723, -0.001474, 0.022593, 0.008346, -0.020828, - -0.003581, 0.027857, -0.016234, 0.023176, 0.039601, 0.012267, - 0.034666, 0.043439, -0.036282, 0.004162, 0.003068, -0.014555, - 0.003546, 0.005973, -0.018436, 0.036339, 0.021678, -0.041663, - -0.011281, 0.014919, -0.002680, -0.005131, -0.006223, -0.046859, - -0.021554, -0.014493, 0.015977, -0.006113, -0.017710, -0.013837, - 0.030101, 0.015360, 0.002374, 0.008158, -0.022237, -0.035282, - -0.010176, 0.019063, 0.001963, -0.010124, -0.000239, -0.014096, - -0.014316, -0.003706, -0.014376, 0.009143, 0.010778, -0.004948, - -0.040068, -0.024025, 0.000453, 0.000881, -0.010815, 0.003844, - -0.040103, -0.028459, -0.000183, 0.005613, -0.006165, 0.061093, - -0.036120, -0.035585, -0.007568, 0.043485, 0.018091, 0.043402, - 0.004482, 0.001860, 0.008468, -0.030465, -0.052802, -0.021882, - 0.017217, 0.004123, 0.052095, 0.029184, 0.006627, 0.004360, - 0.012242, 0.026227, 0.012852, 0.011399, 0.035170, 0.007258, - 0.028357, 0.006312, -0.024487, 0.013182, 0.024309, -0.013479, - 0.024368, 0.040095, -0.011427, 0.008762, -0.016877, -0.010463, - 0.001375, -0.010010, 0.004969, 0.014662, -0.013082, -0.016118, - -0.015143, -0.010625, 0.008482, -0.006923, -0.009431, -0.006872, - -0.019848, 0.000747, 0.011903, 0.007576, -0.003407, -0.014115, - -0.015828, 0.015343, 0.018221, -0.013883, -0.006409, 0.009418, - -0.012743, 0.013985, 0.017904, -0.005095, 0.019314, 0.033098, - 0.000377, 0.068319, 0.022146, 0.008824, -0.000051, 0.002053, - -0.010014, 0.020502, 0.011732, -0.019234, -0.004338, 0.009258, - -0.005160, -0.012362, 0.002306, 0.013226, 0.037508, 0.016435, - -0.007230, 0.040333, -0.013345, -0.003998, -0.031970, -0.067809, - -0.024798, 0.015982, -0.008580, 0.022823, 0.023531, -0.028349, - 0.000334, -0.024825, 0.017421, 0.032842, 0.047003, 0.001120, - 0.023754, -0.059683, 0.029617, 0.012080, 0.030641, 0.014931, - 0.071336, -0.017283, 0.024085, -0.020142, -0.004785, -0.020070, - 0.043205, -0.008128, 0.001768, 0.032886, 0.036905, -0.007290, - 0.011133, -0.003469, -0.011812, 0.005516, 0.010699, 0.012636, - -0.009413, 0.005565, -0.057725, -0.024487, 0.001678, 0.013316, - 0.002254, 0.012707, -0.015577, -0.037144, 0.005728, 0.027036, - -0.023637, -0.004477, -0.001245, -0.020685, 0.024494, 0.021990, - 0.004589, 0.045554, -0.025023, 0.007527, -0.014359, 0.013246, - -0.012977, 0.052213, -0.032974, -0.024342, 0.002597, 0.063781, - -0.007666, 0.035692, -0.038668, 0.029130, -0.003492, 0.029488, - -0.007666, 0.035692, -0.038668, 0.029130, -0.003492, 0.029488, - -0.012977, 0.052213, -0.032974, -0.024342, 0.002597, 0.063781, - 0.004589, 0.045554, -0.025023, 0.007527, -0.014359, 0.013246, - -0.023637, -0.004477, -0.001245, -0.020685, 0.024494, 0.021990, - 0.002254, 0.012707, -0.015577, -0.037144, 0.005728, 0.027036, - -0.009413, 0.005565, -0.057725, -0.024487, 0.001678, 0.013316, - 0.012754, -0.016693, -0.014343, 0.009070, 0.014518, -0.004859, - 0.043205, -0.008128, 0.001768, 0.032886, 0.036905, -0.007290, - 0.071336, -0.017283, 0.024085, -0.020142, -0.004785, -0.020070, - 0.023754, -0.059683, 0.029617, 0.012080, 0.030641, 0.014931, - 0.000334, -0.024825, 0.017421, 0.032842, 0.047003, 0.001120, - -0.024798, 0.015982, -0.008580, 0.022823, 0.023531, -0.028349, - -0.007230, 0.040333, -0.013345, -0.003998, -0.031970, -0.067809, - -0.005160, -0.012362, 0.002306, 0.013226, 0.037508, 0.016435, - -0.010014, 0.020502, 0.011732, -0.019234, -0.004338, 0.009258, - 0.000377, 0.068319, 0.022146, 0.008824, -0.000051, 0.002053, - -0.012743, 0.013985, 0.017904, -0.005095, 0.019314, 0.033098, - -0.015828, 0.015343, 0.018221, -0.013883, -0.006409, 0.009418, - -0.019848, 0.000747, 0.011903, 0.007576, -0.003407, -0.014115, - 0.003773, -0.004493, 0.011385, -0.010289, -0.005454, -0.010737, - 0.001375, -0.010010, 0.004969, 0.014662, -0.013082, -0.016118, - 0.024368, 0.040095, -0.011427, 0.008762, -0.016877, -0.010463, - 0.028357, 0.006312, -0.024487, 0.013182, 0.024309, -0.013479, - 0.012242, 0.026227, 0.012852, 0.011399, 0.035170, 0.007258, - 0.017217, 0.004123, 0.052095, 0.029184, 0.006627, 0.004360, - 0.004482, 0.001860, 0.008468, -0.030465, -0.052802, -0.021882, - -0.036120, -0.035585, -0.007568, 0.043485, 0.018091, 0.043402, - -0.040103, -0.028459, -0.000183, 0.005613, -0.006165, 0.061093, - -0.040068, -0.024025, 0.000453, 0.000881, -0.010815, 0.003844, - -0.014316, -0.003706, -0.014376, 0.009143, 0.010778, -0.004948, - -0.010176, 0.019063, 0.001963, -0.010124, -0.000239, -0.014096, - 0.030101, 0.015360, 0.002374, 0.008158, -0.022237, -0.035282, - -0.010577, -0.006083, 0.016919, -0.007399, -0.009014, -0.009283, - -0.011281, 0.014919, -0.002680, -0.005131, -0.006223, -0.046859, - 0.003546, 0.005973, -0.018436, 0.036339, 0.021678, -0.041663, - 0.034666, 0.043439, -0.036282, 0.004162, 0.003068, -0.014555, - -0.003581, 0.027857, -0.016234, 0.023176, 0.039601, 0.012267, - 0.026330, -0.003723, -0.001474, 0.022593, 0.008346, -0.020828, - -0.018460, -0.017196, 0.010403, -0.001213, -0.051695, -0.043591, - -0.009575, -0.008143, -0.014587, 0.033054, 0.039761, 0.031679, - 0.003552, -0.011540, -0.020994, 0.034135, 0.039902, 0.020157, - -0.004826, -0.014866, -0.014426, 0.009400, 0.016818, -0.007313, - -0.011273, 0.000347, -0.006087, -0.021207, 0.005144, 0.033008, - -0.015868, -0.001115, -0.002408, 0.012789, 0.009637, 0.013429, - 0.008846, -0.016401, 0.001045, 0.019230, 0.019079, -0.006468, - -0.008741, -0.006232, -0.000054, -0.018005, -0.001768, -0.013033, - -0.009726, 0.012519, 0.005741, -0.000377, -0.012426, -0.022759, - -0.053576, -0.000282, -0.017225, -0.008208, -0.000179, -0.006225, - -0.041067, -0.003705, -0.036040, -0.000812, 0.012471, 0.030825, - -0.029194, 0.009472, -0.028297, -0.017081, 0.000709, 0.014655, - 0.018272, 0.013696, -0.014982, -0.011318, 0.000762, -0.030711, - -0.010552, 0.009671, 0.013672, -0.023095, -0.031463, -0.045704, - 0.024676, 0.025384, 0.009079, 0.033165, 0.014242, -0.001771, - 0.014942, -0.005840, -0.016259, -0.013652, 0.002682, 0.002704, - 0.002549, -0.001156, -0.024469, 0.000322, -0.019478, -0.009270, - 0.057660, -0.010562, -0.028346, -0.020398, -0.012429, 0.016573, - -0.000697, -0.020921, -0.027764, 0.005455, 0.001415, 0.016342, - 0.014914, 0.038687, 0.011065, -0.011067, -0.003044, -0.015056, - -0.002875, 0.008025, 0.000543, -0.004705, -0.019815, -0.022635, - -0.018320, -0.014254, 0.006299, -0.009249, -0.010514, -0.003782, - -0.022835, -0.026780, 0.003148, -0.023360, -0.026831, 0.002531, - 0.018330, 0.007419, 0.019842, -0.022839, -0.016118, 0.035482, - 0.006649, -0.004832, 0.011362, -0.035486, -0.036319, -0.013807, - -0.000279, -0.024699, -0.021361, -0.012128, -0.024803, -0.039946, - -0.002227, -0.031492, 0.005178, -0.007999, -0.042926, -0.034284, - -0.017213, -0.000465, 0.021243, 0.010703, -0.004627, -0.006156, - -0.001769, -0.005319, 0.006448, -0.025740, -0.021849, -0.028044, - -0.015293, -0.007085, 0.015303, 0.006890, 0.001223, -0.025575, - -0.003775, -0.003935, 0.008718, 0.024009, -0.006573, -0.020312, - -0.033580, 0.007160, -0.010923, 0.003397, 0.005239, 0.012399, - -0.015399, 0.019375, -0.025743, -0.021908, -0.024125, 0.002728, - 0.001698, 0.015766, -0.006516, -0.007729, -0.020531, -0.014779, - 0.017089, 0.011092, -0.002718, 0.010596, -0.031921, 0.006136, - 0.008813, 0.004611, 0.005467, -0.009171, -0.015580, -0.002296, - 0.001760, -0.009562, -0.025569, -0.031036, -0.011246, 0.010014, - -0.010100, -0.032591, -0.008406, -0.025825, -0.000927, -0.000216, - -0.005268, 0.001791, 0.018558, 0.023929, -0.003333, -0.033541, - 0.014323, 0.000461, -0.000963, -0.008012, -0.020231, -0.038640, - -0.013623, -0.027855, -0.041349, -0.000650, -0.028762, 0.008057, - -0.015890, -0.009546, -0.025800, 0.006323, -0.019823, 0.021617, - 0.003253, 0.031172, 0.000777, -0.003953, -0.013723, -0.034682, - -0.031542, 0.014433, 0.002909, 0.013928, 0.011734, 0.010349, - -0.051691, -0.022206, 0.008695, 0.012195, 0.028272, 0.026529, - -0.025563, -0.010057, 0.011862, 0.004918, 0.003922, 0.008641, - -0.004365, 0.011230, 0.006023, -0.006150, 0.016019, -0.000424, - 0.006374, 0.002939, -0.009766, 0.004270, 0.002590, 0.024437, - -0.009547, 0.015605, -0.021377, 0.003091, 0.019299, -0.003073, - -0.013006, 0.030126, -0.023151, 0.027001, 0.001758, 0.001016, - 0.021386, -0.021482, -0.035960, -0.014376, 0.012199, 0.011082, - 0.002733, -0.012778, -0.018074, 0.001110, -0.014855, -0.029013, - -0.018584, -0.021388, 0.000880, -0.005317, -0.027286, -0.041043, - 0.004987, -0.041019, -0.040394, -0.002808, -0.007735, 0.038443, - -0.021584, -0.025967, -0.001333, 0.063924, 0.018953, 0.030616, - 0.027763, 0.001178, 0.006490, 0.032617, -0.012620, -0.017931, - -0.029384, -0.006840, 0.010983, -0.004810, -0.007505, -0.011447, - -0.041752, 0.000989, 0.032572, 0.001628, 0.005196, 0.008158, - 0.031612, 0.018006, 0.017947, -0.005941, 0.032318, -0.004207, - 0.011630, 0.007948, 0.022957, -0.001266, 0.016091, 0.013279, - -0.004146, -0.005238, 0.010661, -0.010953, -0.014404, 0.016282, - 0.003939, 0.027910, 0.011742, -0.020463, -0.002244, 0.009963, - -0.006644, 0.012869, -0.009031, -0.027754, -0.042479, -0.010463, - 0.004532, -0.009390, -0.046409, 0.008545, -0.007183, 0.037859, - -0.008054, -0.003791, -0.023683, -0.000791, -0.006210, 0.012195, - 0.009332, -0.018856, -0.004706, 0.000101, -0.020521, -0.019538, - -0.050476, -0.014792, -0.021626, -0.021151, 0.029558, 0.037175, - -0.062869, -0.004932, 0.016688, 0.004384, -0.003171, 0.034240, - 0.005113, -0.008435, 0.023501, 0.050847, -0.035543, 0.034098, - 0.037746, -0.032732, 0.022315, 0.006730, -0.020895, 0.035957, - -0.007182, -0.005017, -0.012161, -0.026749, -0.025295, 0.019113, - 0.019581, -0.008771, -0.024639, -0.018086, -0.002010, 0.014810, - -0.013532, -0.007191, 0.004817, -0.008435, 0.002103, -0.012848, - -0.020319, -0.002223, 0.029949, -0.024946, -0.030328, -0.013714, - -0.006104, 0.029554, 0.005631, -0.018311, 0.007381, -0.048291, - -0.004414, 0.024516, -0.031408, 0.002535, 0.024533, -0.009528, - -0.030693, 0.009708, -0.031270, 0.018251, -0.005387, 0.013220, - -0.036381, 0.027678, -0.042800, 0.002076, 0.006361, -0.034013, - -0.015551, 0.016096, -0.013996, 0.003645, -0.004009, -0.039992, - -0.015551, 0.016096, -0.013996, 0.003645, -0.004009, -0.039992, - -0.036381, 0.027678, -0.042800, 0.002076, 0.006361, -0.034013, - -0.030693, 0.009708, -0.031270, 0.018251, -0.005387, 0.013220, - -0.004414, 0.024516, -0.031408, 0.002535, 0.024533, -0.009528, - -0.006104, 0.029554, 0.005631, -0.018311, 0.007381, -0.048291, - -0.020319, -0.002223, 0.029949, -0.024946, -0.030328, -0.013714, - 0.025403, -0.013939, -0.008085, -0.010053, 0.014771, 0.006434, - 0.019581, -0.008771, -0.024639, -0.018086, -0.002010, 0.014810, - -0.007182, -0.005017, -0.012161, -0.026749, -0.025295, 0.019113, - 0.037746, -0.032732, 0.022315, 0.006730, -0.020895, 0.035957, - 0.005113, -0.008435, 0.023501, 0.050847, -0.035543, 0.034098, - -0.062869, -0.004932, 0.016688, 0.004384, -0.003171, 0.034240, - -0.050476, -0.014792, -0.021626, -0.021151, 0.029558, 0.037175, - 0.009332, -0.018856, -0.004706, 0.000101, -0.020521, -0.019538, - -0.008054, -0.003791, -0.023683, -0.000791, -0.006210, 0.012195, - 0.004532, -0.009390, -0.046409, 0.008545, -0.007183, 0.037859, - -0.006644, 0.012869, -0.009031, -0.027754, -0.042479, -0.010463, - 0.003939, 0.027910, 0.011742, -0.020463, -0.002244, 0.009963, - -0.004146, -0.005238, 0.010661, -0.010953, -0.014404, 0.016282, - 0.000298, -0.016259, 0.000277, -0.014986, -0.002143, -0.009052, - 0.031612, 0.018006, 0.017947, -0.005941, 0.032318, -0.004207, - -0.041752, 0.000989, 0.032572, 0.001628, 0.005196, 0.008158, - -0.029384, -0.006840, 0.010983, -0.004810, -0.007505, -0.011447, - 0.027763, 0.001178, 0.006490, 0.032617, -0.012620, -0.017931, - -0.021584, -0.025967, -0.001333, 0.063924, 0.018953, 0.030616, - 0.004987, -0.041019, -0.040394, -0.002808, -0.007735, 0.038443, - -0.018584, -0.021388, 0.000880, -0.005317, -0.027286, -0.041043, - 0.002733, -0.012778, -0.018074, 0.001110, -0.014855, -0.029013, - 0.021386, -0.021482, -0.035960, -0.014376, 0.012199, 0.011082, - -0.013006, 0.030126, -0.023151, 0.027001, 0.001758, 0.001016, - -0.009547, 0.015605, -0.021377, 0.003091, 0.019299, -0.003073, - 0.006374, 0.002939, -0.009766, 0.004270, 0.002590, 0.024437, - -0.002087, 0.000570, -0.012569, -0.008465, -0.002671, -0.005983, - -0.025563, -0.010057, 0.011862, 0.004918, 0.003922, 0.008641, - -0.051691, -0.022206, 0.008695, 0.012195, 0.028272, 0.026529, - -0.031542, 0.014433, 0.002909, 0.013928, 0.011734, 0.010349, - 0.003253, 0.031172, 0.000777, -0.003953, -0.013723, -0.034682, - -0.015890, -0.009546, -0.025800, 0.006323, -0.019823, 0.021617, - -0.013623, -0.027855, -0.041349, -0.000650, -0.028762, 0.008057, - 0.014323, 0.000461, -0.000963, -0.008012, -0.020231, -0.038640, - -0.005268, 0.001791, 0.018558, 0.023929, -0.003333, -0.033541, - -0.010100, -0.032591, -0.008406, -0.025825, -0.000927, -0.000216, - 0.001760, -0.009562, -0.025569, -0.031036, -0.011246, 0.010014, - 0.008813, 0.004611, 0.005467, -0.009171, -0.015580, -0.002296, - 0.017089, 0.011092, -0.002718, 0.010596, -0.031921, 0.006136, - 0.005449, 0.012585, -0.009774, 0.010311, -0.005460, -0.012338, - -0.015399, 0.019375, -0.025743, -0.021908, -0.024125, 0.002728, - -0.033580, 0.007160, -0.010923, 0.003397, 0.005239, 0.012399, - -0.003775, -0.003935, 0.008718, 0.024009, -0.006573, -0.020312, - -0.015293, -0.007085, 0.015303, 0.006890, 0.001223, -0.025575, - -0.001769, -0.005319, 0.006448, -0.025740, -0.021849, -0.028044, - -0.017213, -0.000465, 0.021243, 0.010703, -0.004627, -0.006156, - 0.014429, -0.011338, 0.013341, 0.012116, -0.013466, -0.036452, - -0.002476, -0.014069, 0.005052, -0.007786, 0.006842, -0.028561, - -0.002525, 0.007631, -0.001286, -0.018854, -0.007954, -0.008927, - 0.040173, -0.020215, -0.009010, -0.036324, -0.012066, 0.035122, - -0.000194, -0.025970, -0.016651, -0.015945, -0.025167, 0.028175, - -0.001733, 0.020757, 0.029546, -0.002042, -0.000199, -0.000588, - -0.000847, 0.004322, 0.004687, -0.008126, -0.018922, -0.022857, - -0.001733, 0.020757, 0.029546, -0.002042, -0.000199, -0.000588, - -0.000194, -0.025970, -0.016651, -0.015945, -0.025167, 0.028175, - 0.040173, -0.020215, -0.009010, -0.036324, -0.012066, 0.035122, - -0.002525, 0.007631, -0.001286, -0.018854, -0.007954, -0.008927, - -0.002476, -0.014069, 0.005052, -0.007786, 0.006842, -0.028561, - 0.014429, -0.011338, 0.013341, 0.012116, -0.013466, -0.036452, - -0.009460, 0.002253, 0.027149, 0.005552, -0.025400, -0.031780, - 0.016519, 0.003624, 0.008666, -0.012399, -0.016495, -0.040096, - -0.036403, 0.002439, -0.007559, 0.002671, 0.018968, -0.000449, - -0.024770, 0.002364, -0.021693, 0.012750, 0.007918, 0.015862, - -0.064462, 0.005837, -0.020848, 0.005102, 0.014213, 0.011451, - -0.021001, 0.011972, -0.015469, -0.025504, -0.032059, -0.005021, - 0.010621, 0.005281, 0.006946, -0.013885, -0.029124, -0.030216, - 0.034883, 0.001824, 0.011905, 0.027622, -0.010030, 0.006201, - 0.000788, -0.003419, -0.002503, 0.005843, -0.004468, 0.011873, - -0.001337, -0.009820, -0.033475, -0.046326, 0.002560, 0.032960, - -0.007506, -0.047459, -0.014878, -0.007002, 0.017625, -0.009484, - 0.004036, -0.008592, 0.001075, 0.049162, 0.039584, 0.009842, - 0.007243, -0.007832, -0.021043, 0.014070, 0.018969, -0.002998, - -0.009231, -0.016006, 0.002200, 0.015654, -0.071774, -0.025852, - 0.018432, -0.014879, 0.002473, 0.008943, 0.000132, -0.004984, - 0.013181, 0.060238, -0.018885, 0.016627, 0.033324, -0.010242, - 0.011991, 0.056320, -0.031498, 0.029950, 0.025960, 0.006697, - -0.017591, -0.015443, -0.014250, 0.043137, 0.033827, -0.010376, - -0.008140, -0.005392, 0.006054, -0.011240, -0.004906, -0.014487, - -0.017740, -0.006953, 0.008070, -0.009833, 0.005379, -0.010532, - 0.033252, -0.000961, 0.008063, 0.018624, -0.012662, -0.015267, - -0.025009, 0.020913, -0.012112, -0.008359, 0.001133, -0.004524, - -0.026435, 0.012960, -0.020383, 0.029049, -0.005737, -0.000727, - -0.006432, -0.026668, -0.021759, -0.001222, 0.010305, 0.011359, - -0.016585, -0.022698, -0.014936, -0.000597, -0.009203, 0.048866, - -0.028419, -0.045894, -0.002566, 0.034530, -0.015792, 0.015748, - 0.011419, -0.016048, -0.011651, -0.023818, -0.053879, 0.013219, - -0.006633, 0.005066, 0.063317, 0.059018, 0.009867, 0.016977, - 0.024617, 0.032975, 0.035502, 0.052816, 0.030343, -0.023341, - 0.011453, -0.008626, -0.014062, 0.009011, 0.010808, -0.021849, - -0.026112, 0.014520, 0.020892, 0.003101, -0.019066, -0.019400, - 0.011976, -0.007157, 0.007228, -0.006027, -0.004773, -0.016712, - -0.006787, -0.003413, 0.020621, -0.008882, 0.006795, -0.000262, - -0.016273, -0.008964, 0.011839, -0.015853, -0.027639, -0.015528, - -0.008577, 0.008458, -0.022306, -0.013558, -0.011956, 0.009038, - -0.020460, -0.015975, -0.031311, -0.014677, -0.024837, 0.004739, - 0.000665, 0.022097, -0.022094, -0.005630, -0.013986, 0.001850, - -0.019651, 0.014042, -0.013377, -0.024369, -0.007617, 0.004037, - 0.000415, -0.025317, -0.003908, 0.000274, 0.018091, -0.022356, - -0.045708, 0.022197, -0.059370, -0.037963, -0.005253, -0.024480, - -0.055142, 0.009306, -0.021609, 0.022125, 0.008381, -0.020633, - -0.015850, 0.004934, 0.014983, 0.054575, 0.015901, 0.017341, - -0.028402, -0.020383, 0.003370, -0.003618, -0.007239, 0.010262, - 0.034144, 0.001801, 0.014904, -0.027448, -0.040184, -0.011695, - 0.042635, 0.004220, 0.006281, 0.016765, -0.002873, 0.012287, - -0.012299, -0.006696, 0.014258, 0.002882, -0.001164, -0.002278, - -0.021463, -0.016986, 0.019487, -0.020818, -0.026425, 0.010142, - -0.021672, 0.028836, 0.009652, -0.008464, -0.013584, 0.006092, - -0.022555, 0.020395, -0.003941, -0.009073, 0.011672, 0.026163, - -0.029837, 0.040896, -0.011750, 0.016041, 0.009678, 0.029740, - -0.063595, 0.027051, -0.025873, -0.009087, 0.003907, 0.029055, - -0.023897, 0.026350, -0.052771, 0.009007, -0.019141, -0.018998, - -0.023897, 0.026350, -0.052771, 0.009007, -0.019141, -0.018998, - -0.063595, 0.027051, -0.025873, -0.009087, 0.003907, 0.029055, - -0.029837, 0.040896, -0.011750, 0.016041, 0.009678, 0.029740, - -0.022555, 0.020395, -0.003941, -0.009073, 0.011672, 0.026163, - -0.021672, 0.028836, 0.009652, -0.008464, -0.013584, 0.006092, - -0.021463, -0.016986, 0.019487, -0.020818, -0.026425, 0.010142, - 0.006224, -0.009872, 0.015353, 0.013372, 0.009055, 0.002572, - 0.042635, 0.004220, 0.006281, 0.016765, -0.002873, 0.012287, - 0.034144, 0.001801, 0.014904, -0.027448, -0.040184, -0.011695, - -0.028402, -0.020383, 0.003370, -0.003618, -0.007239, 0.010262, - -0.015850, 0.004934, 0.014983, 0.054575, 0.015901, 0.017341, - -0.055142, 0.009306, -0.021609, 0.022125, 0.008381, -0.020633, - -0.045708, 0.022197, -0.059370, -0.037963, -0.005253, -0.024480, - 0.000415, -0.025317, -0.003908, 0.000274, 0.018091, -0.022356, - -0.019651, 0.014042, -0.013377, -0.024369, -0.007617, 0.004037, - 0.000665, 0.022097, -0.022094, -0.005630, -0.013986, 0.001850, - -0.020460, -0.015975, -0.031311, -0.014677, -0.024837, 0.004739, - -0.008577, 0.008458, -0.022306, -0.013558, -0.011956, 0.009038, - -0.016273, -0.008964, 0.011839, -0.015853, -0.027639, -0.015528, - 0.000839, -0.017036, 0.005919, -0.025535, -0.010534, -0.026063, - 0.011976, -0.007157, 0.007228, -0.006027, -0.004773, -0.016712, - -0.026112, 0.014520, 0.020892, 0.003101, -0.019066, -0.019400, - 0.011453, -0.008626, -0.014062, 0.009011, 0.010808, -0.021849, - 0.024617, 0.032975, 0.035502, 0.052816, 0.030343, -0.023341, - -0.006633, 0.005066, 0.063317, 0.059018, 0.009867, 0.016977, - 0.011419, -0.016048, -0.011651, -0.023818, -0.053879, 0.013219, - -0.028419, -0.045894, -0.002566, 0.034530, -0.015792, 0.015748, - -0.016585, -0.022698, -0.014936, -0.000597, -0.009203, 0.048866, - -0.006432, -0.026668, -0.021759, -0.001222, 0.010305, 0.011359, - -0.026435, 0.012960, -0.020383, 0.029049, -0.005737, -0.000727, - -0.025009, 0.020913, -0.012112, -0.008359, 0.001133, -0.004524, - 0.033252, -0.000961, 0.008063, 0.018624, -0.012662, -0.015267, - -0.006783, -0.008756, -0.005088, -0.019795, -0.007494, -0.015368, - -0.008140, -0.005392, 0.006054, -0.011240, -0.004906, -0.014487, - -0.017591, -0.015443, -0.014250, 0.043137, 0.033827, -0.010376, - 0.011991, 0.056320, -0.031498, 0.029950, 0.025960, 0.006697, - 0.013181, 0.060238, -0.018885, 0.016627, 0.033324, -0.010242, - 0.018432, -0.014879, 0.002473, 0.008943, 0.000132, -0.004984, - -0.009231, -0.016006, 0.002200, 0.015654, -0.071774, -0.025852, - 0.007243, -0.007832, -0.021043, 0.014070, 0.018969, -0.002998, - 0.004036, -0.008592, 0.001075, 0.049162, 0.039584, 0.009842, - -0.007506, -0.047459, -0.014878, -0.007002, 0.017625, -0.009484, - -0.001337, -0.009820, -0.033475, -0.046326, 0.002560, 0.032960, - 0.000788, -0.003419, -0.002503, 0.005843, -0.004468, 0.011873, - 0.034883, 0.001824, 0.011905, 0.027622, -0.010030, 0.006201, - 0.001098, 0.014034, -0.003463, -0.001837, -0.007969, -0.026496, - -0.021001, 0.011972, -0.015469, -0.025504, -0.032059, -0.005021, - -0.064462, 0.005837, -0.020848, 0.005102, 0.014213, 0.011451, - -0.024770, 0.002364, -0.021693, 0.012750, 0.007918, 0.015862, - -0.036403, 0.002439, -0.007559, 0.002671, 0.018968, -0.000449, - 0.016519, 0.003624, 0.008666, -0.012399, -0.016495, -0.040096, - -0.009460, 0.002253, 0.027149, 0.005552, -0.025400, -0.031780, - -0.062662, -0.027907, -0.032630, -0.019376, -0.037130, -0.023877, - -0.051504, -0.007046, -0.024703, 0.012487, 0.007645, 0.012775, - -0.034381, -0.000547, -0.035008, 0.025034, 0.002724, 0.004494, - -0.021292, -0.002407, -0.018393, 0.008870, 0.003599, 0.040112, - -0.026629, 0.009752, 0.002198, -0.002265, 0.009326, 0.043474, - 0.002311, 0.011780, 0.012797, 0.008203, 0.005618, 0.016615, - -0.001849, 0.000780, 0.007266, -0.008877, -0.006319, -0.005268, - -0.003154, 0.009869, 0.010296, 0.010169, -0.005879, 0.012154, - -0.025946, 0.018873, 0.008362, 0.010279, 0.000060, 0.002306, - -0.009704, 0.013072, -0.010591, -0.000350, 0.007943, 0.026812, - -0.028417, 0.021221, -0.016354, 0.010373, 0.014879, 0.040932, - -0.048787, 0.000974, -0.034297, 0.003865, 0.042254, 0.046017, - -0.046933, -0.017864, -0.019365, 0.023496, 0.037982, 0.047858, - 0.008325, -0.014150, -0.014643, 0.002401, -0.059456, -0.078787, - 0.016032, -0.007012, -0.008527, 0.019091, -0.014367, -0.038095, - 0.008737, -0.002082, -0.019673, 0.001020, -0.012820, -0.022222, - -0.002435, -0.013164, -0.024032, -0.015155, 0.005306, 0.005421, - -0.010124, 0.002483, -0.017438, -0.032237, -0.011502, -0.021620, - 0.012653, 0.003664, -0.010813, -0.017415, -0.016364, -0.034567, - 0.002739, -0.005957, 0.004488, -0.018717, -0.007852, -0.027703, - 0.006613, 0.004917, -0.015904, -0.015029, -0.019781, -0.041012, - -0.010170, 0.009152, -0.005273, -0.024756, 0.004665, -0.024754, - 0.038368, 0.011099, -0.005312, -0.013100, 0.007193, 0.002378, - 0.032864, 0.014783, 0.014377, 0.017687, -0.006519, -0.003448, - 0.010277, 0.012798, 0.009557, 0.015886, -0.033074, -0.013354, - 0.028374, 0.012943, 0.007255, 0.022612, -0.030188, -0.018606, - -0.046933, -0.017864, -0.019365, 0.023496, 0.037982, 0.047858, - -0.048787, 0.000974, -0.034297, 0.003865, 0.042254, 0.046017, - -0.028417, 0.021221, -0.016354, 0.010373, 0.014879, 0.040932, - -0.009704, 0.013072, -0.010591, -0.000350, 0.007943, 0.026812, - -0.025946, 0.018873, 0.008362, 0.010279, 0.000060, 0.002306, - -0.003154, 0.009869, 0.010296, 0.010169, -0.005879, 0.012154, - -0.007204, -0.006901, 0.007025, -0.000888, -0.000459, -0.001757, - 0.002311, 0.011780, 0.012797, 0.008203, 0.005618, 0.016615, - -0.026629, 0.009752, 0.002198, -0.002265, 0.009326, 0.043474, - -0.021292, -0.002407, -0.018393, 0.008870, 0.003599, 0.040112, - -0.034381, -0.000547, -0.035008, 0.025034, 0.002724, 0.004494, - -0.051504, -0.007046, -0.024703, 0.012487, 0.007645, 0.012775, - -0.062662, -0.027907, -0.032630, -0.019376, -0.037130, -0.023877, - 0.028374, 0.012943, 0.007255, 0.022612, -0.030188, -0.018606, - 0.010277, 0.012798, 0.009557, 0.015886, -0.033074, -0.013354, - 0.032864, 0.014783, 0.014377, 0.017687, -0.006519, -0.003448, - 0.038368, 0.011099, -0.005312, -0.013100, 0.007193, 0.002378, - -0.010170, 0.009152, -0.005273, -0.024756, 0.004665, -0.024754, - 0.006613, 0.004917, -0.015904, -0.015029, -0.019781, -0.041012, - 0.000854, -0.011428, -0.004338, -0.018188, -0.002215, -0.024008, - 0.012653, 0.003664, -0.010813, -0.017415, -0.016364, -0.034567, - -0.010124, 0.002483, -0.017438, -0.032237, -0.011502, -0.021620, - -0.002435, -0.013164, -0.024032, -0.015155, 0.005306, 0.005421, - 0.008737, -0.002082, -0.019673, 0.001020, -0.012820, -0.022222, - 0.016032, -0.007012, -0.008527, 0.019091, -0.014367, -0.038095, - 0.008325, -0.014150, -0.014643, 0.002401, -0.059456, -0.078787, - 6.000000, 7.000000, 31.000000, - -0.007617, -0.007861, -0.016578, 0.013866, -0.045918, -0.023962, - 0.003240, 0.047220, -0.014680, -0.004616, -0.011008, 0.017074, - 0.009536, -0.005869, 0.013719, -0.022688, -0.007561, -0.008685, - 0.018595, -0.010555, 0.015836, -0.017795, -0.004654, 0.001366, - 0.033713, -0.056743, -0.021712, -0.013681, -0.028162, -0.005807, - 0.032159, -0.007817, -0.006397, 0.004314, 0.009484, -0.030758, - 0.012060, -0.042578, -0.012605, 0.049560, 0.064623, 0.020377, - 0.008842, 0.005901, 0.006039, -0.018948, -0.048875, -0.054698, - 0.000149, 0.010647, -0.054126, 0.012978, 0.028390, 0.025035, - -0.010599, -0.025473, -0.038130, 0.013264, 0.020041, -0.001015, - -0.005435, -0.008197, -0.007787, 0.000777, 0.021190, 0.012212, - 0.000273, 0.007422, -0.016578, 0.004954, -0.006518, 0.004214, - -0.006586, 0.006451, 0.011503, -0.018238, -0.002442, 0.021315, - 0.000647, -0.016340, -0.005761, -0.021277, 0.086198, 0.043474, - 0.014995, 0.045985, 0.017902, 0.005709, -0.022300, -0.017824, - 0.011661, 0.023443, -0.022849, -0.002401, 0.025215, -0.004072, - -0.012985, -0.026890, -0.001974, 0.050644, 0.013556, 0.003532, - 0.006921, 0.008811, -0.001865, -0.000360, 0.009153, -0.007114, - 0.028732, 0.010910, -0.004582, 0.021414, -0.012671, -0.011813, - 0.016977, 0.027214, -0.003307, 0.025428, -0.006687, -0.018140, - 0.016940, 0.008509, -0.003948, -0.027268, 0.013504, 0.002888, - -0.032108, 0.008426, 0.024293, -0.006120, -0.026061, -0.047541, - 0.016143, -0.010973, 0.040772, 0.023710, 0.005331, -0.038574, - -0.007195, 0.009580, 0.023876, 0.021354, -0.009750, -0.007214, - -0.005076, -0.010392, -0.011311, -0.005911, 0.006971, -0.007268, - 0.034271, -0.000183, -0.031754, 0.004569, -0.006376, -0.018941, - 0.028919, -0.016338, -0.016232, 0.021520, 0.018096, 0.055516, - 0.003355, -0.020015, 0.006820, 0.005746, 0.018091, 0.061076, - -0.075819, -0.029773, -0.063376, 0.017121, -0.018911, -0.061735, - 0.020286, -0.004059, 0.011706, -0.003592, -0.010252, -0.038753, - 0.048152, 0.025116, 0.045654, -0.015682, -0.009083, -0.027374, - 0.002375, 0.014719, 0.002769, 0.002278, 0.007243, -0.004165, - -0.019488, -0.006328, -0.004070, -0.019580, -0.064416, -0.000117, - -0.001777, -0.012985, -0.006656, 0.009114, -0.070649, 0.108992, - -0.075662, -0.064089, -0.046288, 0.006432, -0.000353, 0.080080, - -0.075662, -0.064089, -0.046288, 0.006432, -0.000353, 0.080080, - -0.001777, -0.012985, -0.006656, 0.009114, -0.070649, 0.108992, - -0.019488, -0.006328, -0.004070, -0.019580, -0.064416, -0.000117, - 0.002392, -0.001123, -0.007026, 0.003666, -0.006582, -0.012924, - 0.048152, 0.025116, 0.045654, -0.015682, -0.009083, -0.027374, - 0.020286, -0.004059, 0.011706, -0.003592, -0.010252, -0.038753, - -0.075819, -0.029773, -0.063376, 0.017121, -0.018911, -0.061735, - 0.003355, -0.020015, 0.006820, 0.005746, 0.018091, 0.061076, - 0.028919, -0.016338, -0.016232, 0.021520, 0.018096, 0.055516, - 0.034271, -0.000183, -0.031754, 0.004569, -0.006376, -0.018941, - -0.003827, -0.003495, -0.002917, 0.011003, -0.000158, -0.017331, - -0.007195, 0.009580, 0.023876, 0.021354, -0.009750, -0.007214, - 0.016143, -0.010973, 0.040772, 0.023710, 0.005331, -0.038574, - -0.032108, 0.008426, 0.024293, -0.006120, -0.026061, -0.047541, - 0.016940, 0.008509, -0.003948, -0.027268, 0.013504, 0.002888, - 0.016977, 0.027214, -0.003307, 0.025428, -0.006687, -0.018140, - 0.028732, 0.010910, -0.004582, 0.021414, -0.012671, -0.011813, - 0.018664, 0.011874, 0.004943, 0.002540, 0.014420, -0.003903, - -0.012985, -0.026890, -0.001974, 0.050644, 0.013556, 0.003532, - 0.011661, 0.023443, -0.022849, -0.002401, 0.025215, -0.004072, - 0.014995, 0.045985, 0.017902, 0.005709, -0.022300, -0.017824, - 0.000647, -0.016340, -0.005761, -0.021277, 0.086198, 0.043474, - -0.006586, 0.006451, 0.011503, -0.018238, -0.002442, 0.021315, - 0.000273, 0.007422, -0.016578, 0.004954, -0.006518, 0.004214, - 0.007422, -0.004533, -0.010704, 0.005948, 0.007899, 0.002830, - -0.010599, -0.025473, -0.038130, 0.013264, 0.020041, -0.001015, - 0.000149, 0.010647, -0.054126, 0.012978, 0.028390, 0.025035, - 0.008842, 0.005901, 0.006039, -0.018948, -0.048875, -0.054698, - 0.012060, -0.042578, -0.012605, 0.049560, 0.064623, 0.020377, - 0.032159, -0.007817, -0.006397, 0.004314, 0.009484, -0.030758, - 0.033713, -0.056743, -0.021712, -0.013681, -0.028162, -0.005807, - 0.024287, -0.001339, 0.004519, -0.006213, -0.022959, -0.001501, - 0.009536, -0.005869, 0.013719, -0.022688, -0.007561, -0.008685, - 0.003240, 0.047220, -0.014680, -0.004616, -0.011008, 0.017074, - -0.007617, -0.007861, -0.016578, 0.013866, -0.045918, -0.023962, - -0.073138, 0.015597, 0.031077, 0.005166, 0.010427, 0.015688, - -0.015904, 0.046820, 0.014877, 0.055569, 0.078533, 0.032027, - 0.011004, 0.028619, -0.014821, -0.006556, 0.021444, 0.009507, - -0.002392, 0.005630, -0.002384, 0.001614, 0.006231, 0.003578, - -0.008050, -0.007995, -0.004766, 0.026150, 0.026486, 0.027920, - -0.030959, 0.004319, 0.016316, -0.005532, -0.012073, 0.018560, - 0.011871, -0.035039, 0.022265, 0.048003, 0.001941, -0.049608, - -0.071652, 0.024017, -0.020878, -0.005156, -0.028948, 0.020776, - -0.048658, 0.021134, 0.006919, 0.029386, 0.030609, 0.037441, - 0.012902, -0.011765, -0.001325, 0.019128, 0.022912, 0.023128, - 0.007125, 0.015534, -0.006294, 0.000644, -0.009616, -0.007780, - -0.020294, -0.000934, 0.011515, 0.037286, -0.025679, -0.014164, - -0.026647, 0.056905, 0.045465, 0.019810, 0.004440, -0.015527, - -0.033766, -0.000580, -0.003059, -0.001347, 0.015241, -0.045433, - 0.000272, 0.017312, 0.002749, -0.017553, 0.011037, 0.026526, - -0.020756, 0.001420, 0.005712, -0.010140, -0.006617, 0.049712, - -0.009397, 0.036902, -0.007685, 0.024345, -0.019562, 0.007547, - -0.017122, -0.003871, 0.005063, 0.016971, -0.011200, 0.002894, - -0.038682, 0.005862, 0.022674, 0.018425, -0.002407, -0.018996, - -0.001721, 0.027685, 0.013396, 0.007598, -0.013780, -0.012277, - 0.013920, 0.028966, -0.017962, -0.015307, -0.027993, -0.044580, - -0.040200, -0.020207, 0.019667, -0.003216, -0.005756, -0.000992, - 0.015385, -0.002025, 0.047410, 0.001043, 0.022193, 0.066618, - 0.072131, 0.035488, -0.019407, 0.001852, 0.034174, 0.058235, - -0.031610, -0.029215, -0.046173, -0.001453, -0.013856, 0.007814, - -0.029110, -0.029509, -0.035235, -0.019547, 0.030551, -0.038644, - -0.012320, -0.031585, -0.000427, 0.054026, 0.046893, -0.058381, - -0.055117, -0.018758, -0.005577, -0.020394, -0.013620, -0.083593, - -0.055117, -0.018758, -0.005577, -0.020394, -0.013620, -0.083593, - -0.012320, -0.031585, -0.000427, 0.054026, 0.046893, -0.058381, - -0.029110, -0.029509, -0.035235, -0.019547, 0.030551, -0.038644, - -0.000560, -0.010504, 0.003776, 0.025314, 0.029320, 0.015830, - 0.072131, 0.035488, -0.019407, 0.001852, 0.034174, 0.058235, - 0.015385, -0.002025, 0.047410, 0.001043, 0.022193, 0.066618, - -0.040200, -0.020207, 0.019667, -0.003216, -0.005756, -0.000992, - 0.013920, 0.028966, -0.017962, -0.015307, -0.027993, -0.044580, - -0.001721, 0.027685, 0.013396, 0.007598, -0.013780, -0.012277, - -0.038682, 0.005862, 0.022674, 0.018425, -0.002407, -0.018996, - -0.027544, -0.012191, 0.008376, 0.010565, -0.001457, -0.010476, - -0.009397, 0.036902, -0.007685, 0.024345, -0.019562, 0.007547, - -0.020756, 0.001420, 0.005712, -0.010140, -0.006617, 0.049712, - 0.000272, 0.017312, 0.002749, -0.017553, 0.011037, 0.026526, - -0.033766, -0.000580, -0.003059, -0.001347, 0.015241, -0.045433, - -0.026647, 0.056905, 0.045465, 0.019810, 0.004440, -0.015527, - -0.020294, -0.000934, 0.011515, 0.037286, -0.025679, -0.014164, - 0.009971, -0.012370, -0.010285, -0.003194, -0.002025, -0.001689, - 0.012902, -0.011765, -0.001325, 0.019128, 0.022912, 0.023128, - -0.048658, 0.021134, 0.006919, 0.029386, 0.030609, 0.037441, - -0.071652, 0.024017, -0.020878, -0.005156, -0.028948, 0.020776, - 0.011871, -0.035039, 0.022265, 0.048003, 0.001941, -0.049608, - -0.030959, 0.004319, 0.016316, -0.005532, -0.012073, 0.018560, - -0.008050, -0.007995, -0.004766, 0.026150, 0.026486, 0.027920, - -0.007055, 0.010625, -0.007079, -0.024504, 0.005113, 0.000384, - 0.011004, 0.028619, -0.014821, -0.006556, 0.021444, 0.009507, - -0.015904, 0.046820, 0.014877, 0.055569, 0.078533, 0.032027, - -0.073138, 0.015597, 0.031077, 0.005166, 0.010427, 0.015688, - -0.022864, -0.034024, 0.005451, 0.059322, 0.044751, 0.010865, - 0.001192, 0.019112, -0.015835, -0.010245, 0.020465, 0.013224, - 0.016691, -0.040515, -0.005960, 0.009482, 0.014559, 0.011257, - 0.022076, -0.008597, 0.000100, -0.016436, -0.015288, 0.001713, - 0.016691, -0.040515, -0.005960, 0.009482, 0.014559, 0.011257, - 0.001192, 0.019112, -0.015835, -0.010245, 0.020465, 0.013224, - -0.022864, -0.034024, 0.005451, 0.059322, 0.044751, 0.010865, - -0.060600, 0.008910, 0.033596, 0.019843, -0.009853, -0.033679, - -0.026642, 0.033666, -0.023021, 0.045763, 0.097526, 0.051901, - -0.012124, -0.005561, -0.065715, 0.016012, 0.025089, 0.013417, - -0.008030, -0.001185, -0.011817, -0.002514, 0.013196, 0.013373, - -0.009223, -0.012862, -0.020802, 0.033406, 0.022700, 0.038617, - -0.024666, 0.003326, 0.029997, -0.011646, -0.011264, 0.022799, - 0.013797, -0.033462, 0.025387, 0.029527, 0.054233, 0.008555, - -0.027903, 0.037256, 0.027373, 0.011061, -0.045510, 0.002481, - -0.009055, 0.045672, 0.002651, 0.018686, 0.029482, 0.022506, - -0.006266, -0.034848, 0.007007, 0.051174, 0.016245, 0.007344, - 0.010131, 0.022500, -0.008373, 0.004002, -0.009241, -0.020665, - -0.000993, 0.014031, -0.005520, 0.049338, -0.040870, -0.022400, - -0.010348, 0.046806, 0.028338, 0.023080, 0.009098, -0.031775, - -0.003574, -0.000853, 0.004815, -0.017381, 0.024001, -0.021163, - -0.016532, 0.020518, 0.009565, -0.022441, -0.011320, -0.031098, - 0.035608, 0.007223, 0.035079, 0.025093, -0.001149, 0.004232, - -0.000501, 0.047975, 0.017896, 0.032974, -0.028931, -0.009482, - -0.021270, -0.007728, -0.015302, 0.005678, -0.013192, -0.014486, - -0.013644, -0.006220, -0.023113, 0.008908, -0.028810, -0.037400, - 0.011997, 0.000220, -0.000270, 0.008500, -0.002695, 0.021928, - 0.021885, -0.000697, 0.001088, -0.001317, -0.008006, 0.000547, - -0.078159, -0.054615, -0.041391, -0.019472, -0.026193, -0.051674, - 0.015791, 0.034929, 0.018346, -0.017171, -0.008407, 0.012282, - 0.022147, 0.039959, -0.014276, -0.025018, 0.013144, 0.005675, - -0.014539, -0.005686, -0.031129, -0.016913, -0.022750, 0.015286, - -0.020503, 0.030422, -0.006089, -0.027029, -0.038202, 0.033483, - -0.016457, -0.009504, 0.006314, 0.025604, -0.020889, 0.078577, - -0.101726, -0.049737, -0.016281, -0.022793, -0.025047, -0.003258, - -0.101726, -0.049737, -0.016281, -0.022793, -0.025047, -0.003258, - -0.016457, -0.009504, 0.006314, 0.025604, -0.020889, 0.078577, - -0.020503, 0.030422, -0.006089, -0.027029, -0.038202, 0.033483, - -0.012610, 0.011022, -0.001962, 0.019677, 0.006921, 0.004509, - 0.022147, 0.039959, -0.014276, -0.025018, 0.013144, 0.005675, - 0.015791, 0.034929, 0.018346, -0.017171, -0.008407, 0.012282, - -0.078159, -0.054615, -0.041391, -0.019472, -0.026193, -0.051674, - 0.021885, -0.000697, 0.001088, -0.001317, -0.008006, 0.000547, - 0.011997, 0.000220, -0.000270, 0.008500, -0.002695, 0.021928, - -0.013644, -0.006220, -0.023113, 0.008908, -0.028810, -0.037400, - -0.030611, -0.011524, -0.005761, 0.013427, -0.008144, -0.035173, - -0.000501, 0.047975, 0.017896, 0.032974, -0.028931, -0.009482, - 0.035608, 0.007223, 0.035079, 0.025093, -0.001149, 0.004232, - -0.016532, 0.020518, 0.009565, -0.022441, -0.011320, -0.031098, - -0.003574, -0.000853, 0.004815, -0.017381, 0.024001, -0.021163, - -0.010348, 0.046806, 0.028338, 0.023080, 0.009098, -0.031775, - -0.000993, 0.014031, -0.005520, 0.049338, -0.040870, -0.022400, - 0.026891, 0.000070, -0.008369, 0.004975, 0.002725, -0.012817, - -0.006266, -0.034848, 0.007007, 0.051174, 0.016245, 0.007344, - -0.009055, 0.045672, 0.002651, 0.018686, 0.029482, 0.022506, - -0.027903, 0.037256, 0.027373, 0.011061, -0.045510, 0.002481, - 0.013797, -0.033462, 0.025387, 0.029527, 0.054233, 0.008555, - -0.024666, 0.003326, 0.029997, -0.011646, -0.011264, 0.022799, - -0.009223, -0.012862, -0.020802, 0.033406, 0.022700, 0.038617, - 0.000228, 0.007602, -0.012251, -0.010846, 0.009349, -0.001815, - -0.012124, -0.005561, -0.065715, 0.016012, 0.025089, 0.013417, - -0.026642, 0.033666, -0.023021, 0.045763, 0.097526, 0.051901, - -0.060600, 0.008910, 0.033596, 0.019843, -0.009853, -0.033679, - -0.077792, -0.029099, -0.032197, -0.006596, -0.005685, -0.021407, - -0.027746, 0.028246, 0.002471, 0.020180, 0.022381, 0.030354, - 0.001511, 0.000725, -0.012741, 0.012721, -0.011425, -0.002188, - -0.001421, 0.003894, -0.006017, 0.005458, -0.001578, -0.001252, - 0.005366, 0.018333, 0.006238, 0.031893, 0.014991, 0.020520, - -0.001250, 0.047561, 0.033820, 0.041790, 0.044447, 0.049436, - -0.058684, 0.008578, 0.020691, 0.029629, 0.054080, 0.042292, - -0.031039, -0.028844, -0.032959, -0.034751, -0.047803, -0.059675, - -0.009086, -0.005320, -0.007940, 0.011602, -0.011071, 0.006683, - 0.020420, -0.011111, -0.024191, 0.001868, -0.012090, -0.023563, - 0.003740, -0.009427, -0.008129, -0.000254, 0.002908, -0.013460, - 0.017445, -0.013504, -0.009187, 0.022178, -0.002328, -0.003578, - 0.028460, 0.017889, 0.013794, 0.030126, 0.008200, 0.015259, - -0.012643, 0.001976, 0.013721, 0.018798, -0.008923, -0.036199, - -0.058684, 0.008578, 0.020691, 0.029629, 0.054080, 0.042292, - -0.001250, 0.047561, 0.033820, 0.041790, 0.044447, 0.049436, - 0.005366, 0.018333, 0.006238, 0.031893, 0.014991, 0.020520, - -0.005545, -0.000022, -0.007717, 0.005753, 0.010083, 0.004176, - 0.001511, 0.000725, -0.012741, 0.012721, -0.011425, -0.002188, - -0.027746, 0.028246, 0.002471, 0.020180, 0.022381, 0.030354, - -0.077792, -0.029099, -0.032197, -0.006596, -0.005685, -0.021407, - -0.012643, 0.001976, 0.013721, 0.018798, -0.008923, -0.036199, - 0.028460, 0.017889, 0.013794, 0.030126, 0.008200, 0.015259, - 0.017445, -0.013504, -0.009187, 0.022178, -0.002328, -0.003578, - 0.001875, -0.013581, -0.010448, -0.000639, 0.005101, -0.002307, - 0.020420, -0.011111, -0.024191, 0.001868, -0.012090, -0.023563, - -0.009086, -0.005320, -0.007940, 0.011602, -0.011071, 0.006683, - -0.031039, -0.028844, -0.032959, -0.034751, -0.047803, -0.059675, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person.xml b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person.xml deleted file mode 100644 index 2060d3ad55d..00000000000 Binary files a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person.xml and /dev/null differ diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_comp.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_comp.csv deleted file mode 100755 index ae211e39a33..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_comp.csv +++ /dev/null @@ -1,84 +0,0 @@ - 2.000000, - 8.000000, - 10.000000, - 11.000000, - 6.000000, - 1.000000, - 1.000000, - -3.870473, - 9.000000, 6.000000, - 6.000000, - 1.000000, - 1.000000, - 6.000000, 6.000000, - 2.000000, - 2.000000, - 6.000000, 6.000000, - 3.000000, - 3.000000, - 6.000000, 6.000000, - 4.000000, - 4.000000, - 5.000000, 8.000000, - 5.000000, - 5.000000, - 8.000000, 5.000000, - 6.000000, - 6.000000, - 8.000000, 5.000000, - 2.000000, - 2.000000, - -7.768403, - 11.000000, 4.000000, - 6.000000, - 7.000000, - 7.000000, - 5.000000, 6.000000, - 8.000000, - 8.000000, - 5.000000, 6.000000, - 9.000000, - 9.000000, - 8.000000, 4.000000, - 10.000000, - 10.000000, - 8.000000, 4.000000, - 11.000000, - 11.000000, - 5.000000, 6.000000, - 12.000000, - 12.000000, - 5.000000, 6.000000, - 12.000000, - 0.010000, -0.000859, 0.095677, -0.068975, - 4.000000, 1.000000, - 0.176845, -0.021574, 0.139697, 0.007492, - 1.000000, 13.000000, - 0.176845, 0.021574, 0.139697, 0.007492, - 7.000000, 13.000000, - 0.170431, -0.004628, 0.118436, -0.000726, - 3.000000, 8.000000, - 0.096880, -0.005785, 0.156044, 0.012473, - 1.000000, 3.000000, - 0.096880, 0.005785, 0.156044, 0.012473, - 8.000000, 3.000000, - 0.014843, 0.004110, 0.039375, -0.015048, - 2.000000, 1.000000, - 0.019670, -0.010310, 0.033563, -0.014228, - 2.000000, 18.000000, - 0.034110, 0.005425, 0.064583, -0.023019, - 1.000000, 6.000000, - 0.034110, -0.005425, 0.064583, -0.023019, - 5.000000, 6.000000, - 0.047971, 0.010106, 0.065751, 0.021115, - 2.000000, 13.000000, - 0.014843, 0.004110, 0.039375, -0.015048, - 2.000000, 1.000000, - -0.360437, 0.467205, -0.040957, -0.000351, -0.053752, 0.176932, 0.191602, 0.007509, 0.305793, 0.296878, -0.118002, 0.171159, -0.204647, -0.117765, -0.086562, - -0.023277, 0.017844, 0.562600, -0.024696, 0.537397, -0.060998, 0.178589, -0.121901, -0.042984, 0.237222, -0.013818, -0.024648, -0.094004, -0.018574, -0.152720, - 1.223475, 0.369665, 0.382996, 0.025191, -0.021035, 0.182647, -0.208963, 0.241732, -0.367897, -0.064073, 0.178055, 0.032274, -0.069688, 0.206442, 0.116463, - 1.141137, -0.600385, 0.455852, -0.035331, 0.126452, 0.230553, -0.006216, -0.027258, 0.230505, 0.114235, 0.158487, 0.289874, 0.109413, 0.034663, -0.058214, - -0.012501, 0.766460, 0.185964, 0.000000, -0.086611, 0.027561, 0.038182, 0.082110, -0.036991, -0.011241, -0.063745, 0.081622, -0.032373, 0.051740, 0.000000, - 0.128310, -0.083429, 0.400525, 0.000000, 0.612032, 0.049732, 0.035849, 0.064680, 0.028363, -0.070088, 0.019409, 0.013010, -0.098159, 0.023577, 0.000000, - 1.004976, 0.725244, -0.083330, 0.000000, 0.075375, -0.006217, -0.051608, 0.001207, 0.030261, 0.113033, 0.005743, 0.073103, 0.018147, 0.095311, 0.000000, - 1.405618, 0.153510, 0.377829, 0.000000, -0.052543, -0.073492, 0.512948, -0.008935, -0.005501, -0.009039, 0.012173, -0.045597, 0.156564, -0.013883, 0.000000, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_part.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_part.csv deleted file mode 100755 index 856ddc882a1..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_part.csv +++ /dev/null @@ -1,2133 +0,0 @@ - 12.000000, - 6.000000, 6.000000, 31.000000, - 0.065312, 0.002111, 0.016192, -0.022958, 0.027873, 0.029784, - 0.054416, -0.011061, 0.062297, 0.023973, 0.010480, -0.027617, - 0.044434, -0.021828, -0.015657, -0.006259, -0.003970, -0.025792, - -0.027099, -0.027294, -0.051812, 0.000962, 0.029533, -0.040175, - -0.047223, 0.027270, 0.065103, 0.008877, 0.012593, -0.019789, - 0.009437, 0.003676, 0.053325, 0.005127, -0.009205, -0.002090, - -0.021967, -0.008377, -0.019097, 0.010756, -0.039896, 0.019979, - -0.050592, 0.021343, 0.055906, 0.033948, -0.045333, -0.034260, - -0.043934, -0.025594, 0.023430, 0.001290, 0.002665, -0.028098, - -0.045585, -0.013442, -0.015174, 0.025307, -0.015734, -0.054717, - -0.012392, -0.065721, 0.069769, 0.079096, 0.039115, 0.027519, - -0.024355, -0.042433, 0.002856, -0.026309, -0.036759, -0.001533, - 0.010378, 0.014792, -0.034436, -0.028999, 0.080374, -0.045849, - -0.043557, 0.061458, 0.012744, 0.038861, -0.024926, -0.091966, - -0.090699, 0.048459, 0.017698, -0.016678, -0.009748, -0.022869, - -0.043706, -0.023516, -0.029268, 0.040867, 0.063760, 0.060156, - 0.000736, -0.042273, 0.022320, 0.071750, 0.029046, 0.016416, - -0.007547, -0.027199, 0.012972, -0.028282, 0.044366, 0.013482, - -0.001463, -0.064854, -0.025759, -0.050632, 0.046677, -0.061875, - 0.063768, 0.041209, -0.045899, -0.011327, -0.004025, -0.059045, - 0.041856, 0.065240, 0.027814, 0.007470, -0.031053, -0.000399, - 0.006279, -0.060065, 0.000853, 0.016461, 0.080424, 0.091616, - -0.024883, -0.055526, 0.002178, 0.042025, 0.045760, -0.045954, - -0.010487, -0.004241, -0.032534, -0.040382, 0.000890, 0.006561, - 0.021709, 0.043307, 0.031340, -0.016582, -0.001741, -0.034006, - 0.048512, -0.014854, -0.079060, -0.062616, 0.005013, -0.017975, - 0.075223, 0.049752, -0.014835, 0.073946, 0.028996, 0.046544, - 0.018088, -0.030578, 0.004188, 0.077045, 0.034764, 0.047606, - -0.042242, -0.031493, -0.049397, 0.023020, 0.028331, -0.023180, - -0.065059, 0.034139, 0.038029, -0.025140, -0.024301, -0.034898, - -0.065059, 0.034139, 0.038029, -0.025140, -0.024301, -0.034898, - -0.042242, -0.031493, -0.049397, 0.023020, 0.028331, -0.023180, - 0.018088, -0.030578, 0.004188, 0.077045, 0.034764, 0.047606, - 0.075223, 0.049752, -0.014835, 0.073946, 0.028996, 0.046544, - 0.048512, -0.014854, -0.079060, -0.062616, 0.005013, -0.017975, - 0.021709, 0.043307, 0.031340, -0.016582, -0.001741, -0.034006, - -0.010487, -0.004241, -0.032534, -0.040382, 0.000890, 0.006561, - -0.024883, -0.055526, 0.002178, 0.042025, 0.045760, -0.045954, - 0.006279, -0.060065, 0.000853, 0.016461, 0.080424, 0.091616, - 0.041856, 0.065240, 0.027814, 0.007470, -0.031053, -0.000399, - 0.063768, 0.041209, -0.045899, -0.011327, -0.004025, -0.059045, - -0.001463, -0.064854, -0.025759, -0.050632, 0.046677, -0.061875, - -0.007547, -0.027199, 0.012972, -0.028282, 0.044366, 0.013482, - 0.000736, -0.042273, 0.022320, 0.071750, 0.029046, 0.016416, - -0.043706, -0.023516, -0.029268, 0.040867, 0.063760, 0.060156, - -0.090699, 0.048459, 0.017698, -0.016678, -0.009748, -0.022869, - -0.043557, 0.061458, 0.012744, 0.038861, -0.024926, -0.091966, - 0.010378, 0.014792, -0.034436, -0.028999, 0.080374, -0.045849, - -0.024355, -0.042433, 0.002856, -0.026309, -0.036759, -0.001533, - -0.012392, -0.065721, 0.069769, 0.079096, 0.039115, 0.027519, - -0.045585, -0.013442, -0.015174, 0.025307, -0.015734, -0.054717, - -0.043934, -0.025594, 0.023430, 0.001290, 0.002665, -0.028098, - -0.050592, 0.021343, 0.055906, 0.033948, -0.045333, -0.034260, - -0.021967, -0.008377, -0.019097, 0.010756, -0.039896, 0.019979, - 0.009437, 0.003676, 0.053325, 0.005127, -0.009205, -0.002090, - -0.047223, 0.027270, 0.065103, 0.008877, 0.012593, -0.019789, - -0.027099, -0.027294, -0.051812, 0.000962, 0.029533, -0.040175, - 0.044434, -0.021828, -0.015657, -0.006259, -0.003970, -0.025792, - 0.054416, -0.011061, 0.062297, 0.023973, 0.010480, -0.027617, - 0.065312, 0.002111, 0.016192, -0.022958, 0.027873, 0.029784, - -0.040017, 0.031916, 0.028791, -0.089247, -0.081685, 0.017212, - -0.068981, 0.154195, 0.017148, -0.031730, -0.018634, -0.010678, - -0.100698, 0.024261, -0.119727, -0.005811, -0.051729, 0.035650, - 0.001354, -0.032858, -0.049112, -0.004725, -0.029066, 0.034297, - 0.032743, -0.012151, -0.021329, -0.010982, 0.010433, 0.048349, - -0.009311, -0.020572, 0.004956, -0.007116, 0.011697, -0.019385, - -0.058289, -0.029262, -0.027227, -0.078220, -0.014034, 0.071145, - 0.025651, 0.086389, -0.012041, -0.016463, 0.064076, 0.029137, - -0.009084, -0.003393, -0.112969, 0.003637, -0.000086, 0.000540, - -0.015587, -0.036017, -0.044649, 0.051594, 0.120653, 0.099086, - -0.028449, -0.040028, 0.006070, -0.000140, -0.030315, 0.012770, - -0.024287, -0.003267, -0.021622, -0.039086, -0.051754, -0.061123, - -0.030827, -0.066994, -0.008272, 0.016532, 0.077874, 0.056610, - 0.038497, -0.012348, -0.022859, 0.007886, 0.055686, 0.026959, - 0.132919, 0.059363, -0.048631, 0.002251, 0.039553, -0.031681, - -0.041933, -0.003413, 0.059725, -0.033274, 0.010079, 0.000574, - -0.063452, -0.040917, -0.010959, -0.067073, -0.041419, 0.006764, - 0.017457, 0.023212, -0.011637, 0.002645, -0.017623, -0.017039, - 0.027097, 0.053426, 0.051954, 0.055776, 0.049899, 0.035322, - -0.021150, -0.091735, 0.013363, 0.014050, 0.011150, 0.021765, - 0.082853, -0.023052, -0.040766, -0.058924, -0.046756, -0.025492, - -0.015471, -0.062907, 0.035565, -0.035184, -0.056914, 0.032265, - -0.025480, -0.068585, 0.000564, 0.022704, -0.040836, 0.001879, - 0.051216, 0.056912, 0.018567, 0.022481, 0.061995, -0.012493, - 0.051216, 0.056912, 0.018567, 0.022481, 0.061995, -0.012493, - -0.025480, -0.068585, 0.000564, 0.022704, -0.040836, 0.001879, - -0.015471, -0.062907, 0.035565, -0.035184, -0.056914, 0.032265, - 0.082853, -0.023052, -0.040766, -0.058924, -0.046756, -0.025492, - -0.021150, -0.091735, 0.013363, 0.014050, 0.011150, 0.021765, - 0.027097, 0.053426, 0.051954, 0.055776, 0.049899, 0.035322, - 0.017457, 0.023212, -0.011637, 0.002645, -0.017623, -0.017039, - -0.063452, -0.040917, -0.010959, -0.067073, -0.041419, 0.006764, - -0.041933, -0.003413, 0.059725, -0.033274, 0.010079, 0.000574, - 0.132919, 0.059363, -0.048631, 0.002251, 0.039553, -0.031681, - 0.038497, -0.012348, -0.022859, 0.007886, 0.055686, 0.026959, - -0.030827, -0.066994, -0.008272, 0.016532, 0.077874, 0.056610, - -0.024287, -0.003267, -0.021622, -0.039086, -0.051754, -0.061123, - -0.028449, -0.040028, 0.006070, -0.000140, -0.030315, 0.012770, - -0.015587, -0.036017, -0.044649, 0.051594, 0.120653, 0.099086, - -0.009084, -0.003393, -0.112969, 0.003637, -0.000086, 0.000540, - 0.025651, 0.086389, -0.012041, -0.016463, 0.064076, 0.029137, - -0.058289, -0.029262, -0.027227, -0.078220, -0.014034, 0.071145, - -0.009311, -0.020572, 0.004956, -0.007116, 0.011697, -0.019385, - 0.032743, -0.012151, -0.021329, -0.010982, 0.010433, 0.048349, - 0.001354, -0.032858, -0.049112, -0.004725, -0.029066, 0.034297, - -0.100698, 0.024261, -0.119727, -0.005811, -0.051729, 0.035650, - -0.068981, 0.154195, 0.017148, -0.031730, -0.018634, -0.010678, - -0.040017, 0.031916, 0.028791, -0.089247, -0.081685, 0.017212, - -0.009091, -0.022318, 0.046510, -0.017956, 0.020349, 0.038990, - -0.011766, 0.085197, 0.128469, 0.093760, 0.058280, 0.056943, - 0.001029, -0.056939, -0.077602, 0.001836, 0.021465, -0.002799, - 0.001029, -0.056939, -0.077602, 0.001836, 0.021465, -0.002799, - -0.011766, 0.085197, 0.128469, 0.093760, 0.058280, 0.056943, - -0.009091, -0.022318, 0.046510, -0.017956, 0.020349, 0.038990, - -0.027016, 0.043438, 0.041058, -0.025638, -0.074476, 0.008203, - -0.075750, 0.194536, 0.102422, 0.018605, -0.035016, -0.023149, - -0.104438, -0.003201, -0.090376, 0.027747, -0.056991, -0.016908, - -0.026897, -0.033271, -0.040691, 0.045391, 0.020604, 0.059533, - 0.040754, -0.044068, 0.080208, 0.066083, 0.076591, 0.058051, - -0.011797, -0.048725, 0.027920, -0.004163, -0.023246, 0.000199, - -0.024865, 0.017309, -0.006779, -0.063903, 0.046350, 0.039836, - 0.057749, 0.291129, 0.091507, 0.071580, 0.037118, -0.031998, - 0.023980, 0.091036, -0.065168, 0.037983, -0.018616, -0.018349, - -0.033575, -0.085878, -0.029487, 0.072876, 0.073592, 0.120935, - -0.032148, -0.075896, 0.038838, 0.047100, 0.030416, 0.040382, - -0.020444, -0.023851, 0.001185, -0.040379, -0.049209, -0.053478, - -0.020984, -0.088742, 0.003522, 0.031149, 0.074252, 0.049165, - 0.075235, 0.044033, -0.004112, 0.031635, 0.053846, 0.003508, - 0.201778, 0.150678, 0.000046, 0.055651, 0.004524, -0.012253, - -0.002881, -0.070115, 0.070934, 0.036062, 0.085424, 0.066447, - -0.069779, -0.082196, 0.012446, -0.026389, -0.000334, -0.041049, - 0.034400, 0.009420, -0.025685, -0.005732, 0.007268, -0.018682, - 0.027049, 0.018036, 0.033642, 0.028599, 0.038345, -0.006444, - 0.033191, -0.094253, -0.011594, -0.008444, 0.033820, -0.018835, - 0.171927, 0.029736, -0.010858, 0.014596, -0.028953, 0.002124, - 0.063024, -0.044746, 0.084287, 0.016203, -0.010323, 0.067800, - 0.007908, -0.054768, 0.021023, 0.058079, -0.009141, -0.045847, - 0.028120, 0.033679, 0.044156, -0.028545, 0.002530, -0.069711, - 0.028120, 0.033679, 0.044156, -0.028545, 0.002530, -0.069711, - 0.007908, -0.054768, 0.021023, 0.058079, -0.009141, -0.045847, - 0.063024, -0.044746, 0.084287, 0.016203, -0.010323, 0.067800, - 0.171927, 0.029736, -0.010858, 0.014596, -0.028953, 0.002124, - 0.033191, -0.094253, -0.011594, -0.008444, 0.033820, -0.018835, - 0.027049, 0.018036, 0.033642, 0.028599, 0.038345, -0.006444, - 0.034400, 0.009420, -0.025685, -0.005732, 0.007268, -0.018682, - -0.069779, -0.082196, 0.012446, -0.026389, -0.000334, -0.041049, - -0.002881, -0.070115, 0.070934, 0.036062, 0.085424, 0.066447, - 0.201778, 0.150678, 0.000046, 0.055651, 0.004524, -0.012253, - 0.075235, 0.044033, -0.004112, 0.031635, 0.053846, 0.003508, - -0.020984, -0.088742, 0.003522, 0.031149, 0.074252, 0.049165, - -0.020444, -0.023851, 0.001185, -0.040379, -0.049209, -0.053478, - -0.032148, -0.075896, 0.038838, 0.047100, 0.030416, 0.040382, - -0.033575, -0.085878, -0.029487, 0.072876, 0.073592, 0.120935, - 0.023980, 0.091036, -0.065168, 0.037983, -0.018616, -0.018349, - 0.057749, 0.291129, 0.091507, 0.071580, 0.037118, -0.031998, - -0.024865, 0.017309, -0.006779, -0.063903, 0.046350, 0.039836, - -0.011797, -0.048725, 0.027920, -0.004163, -0.023246, 0.000199, - 0.040754, -0.044068, 0.080208, 0.066083, 0.076591, 0.058051, - -0.026897, -0.033271, -0.040691, 0.045391, 0.020604, 0.059533, - -0.104438, -0.003201, -0.090376, 0.027747, -0.056991, -0.016908, - -0.075750, 0.194536, 0.102422, 0.018605, -0.035016, -0.023149, - -0.027016, 0.043438, 0.041058, -0.025638, -0.074476, 0.008203, - -0.084919, -0.036417, -0.017997, -0.076945, -0.009186, 0.031228, - -0.111890, -0.024596, -0.000145, 0.000426, -0.010700, 0.030705, - -0.066275, 0.012496, -0.063359, 0.007933, -0.007088, 0.064385, - -0.058587, -0.023263, -0.049575, 0.007575, 0.000405, 0.066995, - -0.077957, -0.017680, 0.023233, 0.012276, 0.017296, -0.014028, - -0.057475, 0.011666, 0.039393, -0.063765, -0.034140, 0.001825, - 0.038545, -0.019558, -0.036785, -0.049329, 0.022270, -0.020613, - 0.011550, -0.035691, 0.004229, 0.037963, 0.021076, -0.043539, - 0.036240, -0.039727, 0.001516, 0.034301, 0.043005, -0.014826, - 0.074107, -0.004603, -0.064569, 0.016175, 0.041634, -0.013264, - 0.100950, 0.033266, 0.013184, 0.027521, 0.022387, -0.038618, - 0.060950, 0.042562, 0.052345, 0.029933, 0.079814, -0.031389, - -0.057475, 0.011666, 0.039393, -0.063765, -0.034140, 0.001825, - -0.077957, -0.017680, 0.023233, 0.012276, 0.017296, -0.014028, - -0.058587, -0.023263, -0.049575, 0.007575, 0.000405, 0.066995, - -0.066275, 0.012496, -0.063359, 0.007933, -0.007088, 0.064385, - -0.111890, -0.024596, -0.000145, 0.000426, -0.010700, 0.030705, - -0.084919, -0.036417, -0.017997, -0.076945, -0.009186, 0.031228, - 0.060950, 0.042562, 0.052345, 0.029933, 0.079814, -0.031389, - 0.100950, 0.033266, 0.013184, 0.027521, 0.022387, -0.038618, - 0.074107, -0.004603, -0.064569, 0.016175, 0.041634, -0.013264, - 0.036240, -0.039727, 0.001516, 0.034301, 0.043005, -0.014826, - 0.011550, -0.035691, 0.004229, 0.037963, 0.021076, -0.043539, - 0.038545, -0.019558, -0.036785, -0.049329, 0.022270, -0.020613, - 0.000000, - 6.000000, 6.000000, 31.000000, - 0.010972, -0.049203, -0.019949, -0.056211, -0.044799, -0.018842, - 0.011693, 0.038502, 0.024014, -0.019381, -0.003194, -0.019456, - 0.015322, 0.014939, 0.034241, 0.001472, 0.033410, -0.030677, - -0.013184, 0.012891, 0.005805, 0.007095, 0.052474, -0.028992, - 0.011464, -0.002109, 0.012210, 0.033932, 0.009833, 0.022312, - 0.029625, -0.016050, -0.015339, 0.003296, -0.027620, -0.012010, - -0.017946, -0.017373, -0.018473, -0.046054, 0.003785, -0.016355, - -0.007135, 0.046733, 0.001935, 0.029827, -0.004503, 0.016479, - 0.027819, -0.027903, -0.007070, 0.050250, -0.023385, 0.009776, - 0.012547, 0.031760, 0.045821, 0.035944, 0.000990, -0.007728, - 0.006118, 0.008206, 0.026091, 0.009060, 0.005807, 0.026853, - -0.026703, -0.066007, 0.000020, -0.001755, 0.020791, -0.022349, - -0.011943, 0.032980, 0.009447, -0.025146, -0.020631, 0.009564, - 0.024701, 0.054368, -0.009956, 0.052650, -0.005873, 0.030722, - 0.031332, 0.010280, 0.003776, -0.012630, -0.028431, 0.029229, - 0.038500, 0.024167, 0.024864, -0.012565, -0.006641, -0.030265, - 0.018576, 0.038506, 0.026625, -0.009740, -0.017985, -0.037208, - 0.026023, -0.013342, 0.024804, 0.053457, -0.006094, -0.019222, - -0.009098, 0.010288, 0.018497, -0.004080, 0.026515, 0.008637, - -0.054784, 0.013346, 0.009119, 0.003052, -0.009528, -0.025677, - 0.015290, 0.007008, 0.020681, -0.008025, -0.010795, -0.043462, - -0.005154, -0.032979, -0.006678, -0.022283, 0.003790, -0.013164, - 0.001710, 0.008836, 0.005401, -0.011033, 0.015740, -0.007297, - 0.013741, 0.023915, 0.011975, -0.028249, -0.011373, -0.018831, - 0.028930, 0.056327, -0.002656, 0.061252, -0.036367, 0.021064, - 0.003973, -0.005653, 0.019605, 0.021961, -0.038524, -0.049465, - -0.016152, -0.005264, -0.016550, -0.000692, 0.015719, 0.023812, - -0.013576, -0.018223, 0.009610, 0.008528, -0.026262, 0.037150, - -0.057230, -0.024452, -0.031881, 0.016382, 0.017835, 0.051134, - -0.062320, 0.018965, -0.035952, -0.019794, 0.012663, 0.046800, - 0.064005, 0.062002, 0.017280, 0.010173, -0.009917, 0.001697, - 0.015104, 0.015314, 0.031344, 0.049108, 0.017430, 0.013942, - 0.003284, 0.016150, 0.006236, 0.002431, 0.014564, 0.047419, - 0.013482, 0.026466, 0.006416, -0.007626, 0.008344, 0.052193, - -0.015671, -0.007708, -0.018361, 0.040463, 0.029292, 0.045951, - -0.018143, 0.060647, 0.013517, 0.004380, 0.010185, 0.034423, - -0.046803, -0.041066, -0.046478, -0.035385, 0.004745, 0.022603, - -0.009272, -0.019351, -0.038578, -0.002765, 0.046645, 0.026553, - -0.012574, 0.024819, -0.010668, 0.022752, 0.023357, -0.026258, - -0.025676, 0.026340, 0.000279, -0.021939, 0.019913, -0.012059, - 0.019913, -0.048073, -0.013804, 0.016507, -0.043818, -0.028004, - 0.006101, -0.020599, -0.036596, 0.005023, -0.054630, -0.024972, - 0.016274, 0.023592, -0.000597, -0.027880, -0.014929, 0.028460, - 0.037987, 0.056488, 0.018523, -0.028868, 0.017303, -0.033976, - 0.020767, 0.003015, 0.001823, 0.000373, 0.041143, 0.038170, - 0.020458, -0.001089, 0.047739, 0.057677, 0.013767, -0.012926, - 0.035093, -0.014444, 0.011922, 0.022615, 0.014246, -0.053117, - -0.000337, -0.001447, -0.011391, 0.050181, 0.002397, -0.011598, - -0.030976, -0.002950, 0.000410, 0.006709, 0.037302, 0.030477, - -0.019850, -0.019391, 0.016032, -0.069632, -0.007924, -0.016721, - -0.013617, -0.006760, -0.041758, -0.078959, -0.029931, 0.078011, - -0.018748, -0.003520, 0.026379, 0.011052, 0.008918, 0.074677, - 0.034265, -0.006502, 0.000047, 0.012272, -0.010836, -0.027970, - 0.002305, -0.003712, -0.019794, -0.005018, 0.013998, -0.009341, - -0.025729, -0.011117, 0.013658, 0.007134, 0.052704, 0.016574, - -0.024857, -0.023084, 0.005057, 0.007317, 0.035590, -0.000961, - -0.025520, -0.004449, -0.017516, 0.006083, 0.001053, 0.091226, - -0.001929, 0.001380, -0.019715, -0.034334, 0.026260, 0.018052, - 0.012118, -0.042211, 0.024729, 0.033205, -0.004218, -0.017808, - -0.001248, 0.045986, 0.015764, -0.001496, 0.001678, -0.023088, - -0.021008, -0.024297, 0.027490, 0.029203, 0.014948, -0.015305, - 0.033703, 0.023054, 0.021729, -0.012511, 0.019674, -0.036115, - 0.076451, 0.000408, 0.030314, 0.071893, 0.006515, -0.010606, - 0.011268, -0.004529, 0.043869, 0.050809, 0.009399, -0.009330, - -0.014261, -0.014500, 0.028015, 0.005451, -0.016959, 0.006860, - -0.009465, 0.021905, -0.010024, -0.011255, 0.013944, 0.007638, - -0.054342, 0.006509, 0.004096, 0.002816, 0.017847, -0.048877, - 0.024036, 0.012616, -0.012010, -0.037142, 0.003183, -0.057568, - -0.015244, 0.058453, 0.043485, -0.001845, -0.030372, -0.040437, - 0.012709, -0.017112, 0.038573, 0.030531, -0.001031, 0.023903, - 0.017798, -0.003384, 0.055947, -0.002208, -0.018853, 0.016886, - 0.035567, 0.018173, -0.013601, -0.060308, -0.020258, 0.030223, - -0.036969, 0.001880, 0.026753, 0.041624, 0.004545, 0.061986, - 0.012438, 0.000693, -0.018115, 0.014087, 0.002124, 0.005855, - -0.035193, -0.005598, 0.010999, -0.003892, -0.001775, -0.000096, - -0.008549, 0.002718, -0.011195, -0.014771, 0.013629, 0.016009, - 0.034569, -0.018961, 0.005493, 0.008469, 0.032576, 0.023702, - -0.006079, 0.006591, 0.018607, -0.012542, 0.059098, 0.025197, - 0.050139, -0.002070, -0.004433, -0.001870, 0.018822, 0.026841, - 0.028831, 0.000774, 0.007473, 0.042050, 0.012992, -0.021905, - 0.007285, 0.031452, -0.033542, 0.010597, 0.013227, 0.035567, - 0.011457, 0.001687, -0.009179, 0.004687, 0.054063, -0.005455, - -0.001813, -0.049990, -0.032948, 0.016414, -0.013254, -0.043662, - 0.006305, 0.004716, -0.031008, 0.002108, 0.002979, 0.033604, - 0.017553, 0.043279, -0.018426, -0.019390, 0.021764, -0.021843, - 0.003342, 0.019975, -0.021273, 0.009116, 0.006827, 0.032530, - -0.033744, -0.014952, -0.013123, -0.017588, -0.016548, 0.049070, - -0.009737, -0.034264, -0.004092, -0.022615, -0.002725, 0.040318, - 0.020742, -0.050201, 0.015339, 0.026587, 0.006860, 0.046786, - 0.017035, -0.022899, -0.020564, 0.001860, -0.008161, 0.020750, - 0.010685, 0.026770, 0.045389, 0.019894, -0.019153, -0.009254, - 0.054215, -0.018513, 0.017035, 0.090851, 0.002117, 0.029181, - 0.025900, -0.000418, -0.016437, 0.046752, 0.031257, 0.029367, - 0.043611, -0.033315, -0.000872, -0.002849, 0.021433, 0.022835, - 0.029990, -0.003485, 0.018352, -0.031370, 0.011875, 0.022338, - 0.033010, 0.021859, 0.007469, 0.063812, 0.029094, 0.032395, - -0.012848, -0.053152, -0.013015, -0.007742, 0.008090, -0.012391, - 0.057226, -0.018215, 0.016417, -0.005754, -0.014335, 0.000002, - 0.022937, 0.023277, 0.035370, 0.012969, -0.000491, -0.004907, - -0.017876, -0.007855, 0.032834, -0.034639, -0.021635, -0.026586, - -0.015834, 0.000975, 0.012873, -0.042487, 0.016378, -0.000123, - 0.001349, 0.033129, 0.036235, -0.012712, 0.033910, 0.033051, - -0.010044, -0.026930, 0.016270, 0.023015, -0.000475, -0.044954, - -0.025421, 0.021985, -0.020354, 0.042339, 0.002784, -0.019593, - 0.038455, 0.030174, 0.035556, 0.014615, 0.009125, -0.027798, - -0.014338, -0.018716, 0.005877, 0.010355, 0.030997, -0.060395, - -0.011603, 0.004934, -0.029320, -0.004079, 0.023002, -0.018263, - 0.002417, 0.020568, 0.001649, 0.040105, -0.007970, -0.042104, - -0.026978, -0.051108, -0.053000, -0.042963, 0.014385, 0.007983, - 0.039455, 0.022344, 0.006909, -0.030415, -0.003828, -0.045740, - 0.042523, 0.008731, 0.021563, 0.015704, 0.012089, -0.024841, - -0.042966, -0.002106, 0.040929, -0.030430, 0.020650, -0.029741, - 0.002246, -0.030284, 0.030734, 0.025084, 0.004607, -0.015785, - -0.017225, 0.004165, -0.010937, -0.013659, -0.006848, -0.026292, - -0.045267, -0.031204, -0.017812, -0.033117, 0.007980, -0.062892, - 0.048197, 0.028797, 0.008171, 0.013262, 0.003377, -0.039746, - 0.058511, -0.015068, -0.012716, 0.006769, -0.020458, -0.014797, - 0.024741, -0.027300, -0.013591, 0.004141, 0.006858, -0.030345, - -0.008941, -0.047177, 0.007549, -0.019360, -0.013196, 0.018472, - -0.018491, -0.039110, -0.013292, -0.005785, 0.030094, -0.036458, - -0.077322, -0.018639, -0.012427, -0.027501, -0.041589, -0.017788, - -0.006694, 0.001171, -0.023360, 0.008375, -0.003423, -0.021754, - 0.017449, 0.027074, 0.005635, -0.017438, -0.034537, -0.027840, - 0.016691, -0.024130, 0.021268, -0.009962, -0.011295, -0.007292, - -0.021657, -0.035266, 0.035090, -0.021304, -0.051765, -0.026398, - 0.012562, -0.028861, -0.047205, -0.029464, -0.022489, 0.005098, - -0.047095, -0.003492, 0.021450, -0.013371, 0.001406, 0.038775, - -0.040250, -0.034677, -0.047486, 0.006505, -0.012775, -0.015759, - -0.016345, -0.003967, 0.005132, -0.023727, -0.019981, -0.059031, - -0.017109, -0.020654, -0.021474, -0.018732, -0.001241, -0.023458, - -0.011974, -0.023561, 0.006106, -0.020655, -0.012182, 0.006188, - -0.003578, 0.005771, -0.026313, -0.027526, 0.015213, -0.005655, - 0.048400, 0.026780, 0.006096, 0.007520, -0.021979, 0.006061, - 0.021619, -0.020086, 0.035616, -0.022215, -0.042346, -0.070343, - -0.033265, -0.007818, -0.055955, -0.028931, -0.006091, 0.008967, - -0.020427, -0.021045, -0.006082, -0.013077, -0.001139, 0.001600, - -0.026865, -0.043835, -0.044131, 0.017028, -0.002955, -0.024270, - -0.047746, 0.010037, -0.049928, -0.003015, -0.014354, -0.011042, - 0.063147, 0.034671, 0.018242, -0.022230, 0.003917, -0.022094, - 0.027006, 0.000389, 0.002464, 0.040540, 0.021688, -0.001182, - -0.052413, -0.015833, -0.021359, -0.017538, 0.008277, 0.018647, - -0.031593, -0.022127, -0.017183, -0.040626, 0.003604, 0.021913, - -0.027132, -0.064633, -0.010642, 0.032328, 0.019102, 0.005083, - -0.015269, -0.007100, -0.018245, 0.026701, -0.002373, -0.007860, - -0.013097, -0.009898, -0.004650, -0.025222, -0.015485, 0.011252, - 0.047534, -0.012392, -0.043530, 0.029730, 0.011006, 0.021252, - 0.006875, -0.013139, -0.048731, 0.026935, 0.003964, 0.007587, - 0.020842, -0.000456, -0.002044, -0.043152, 0.031101, 0.021282, - 0.018002, -0.040910, 0.002470, -0.008540, -0.029052, 0.018394, - 0.009580, 0.007232, -0.028628, 0.050638, -0.017442, 0.015983, - -0.026716, -0.035265, -0.010948, -0.041392, -0.035932, -0.006858, - 0.029559, -0.019856, 0.000051, -0.020146, 0.020418, -0.051154, - -0.010278, 0.004502, 0.020166, 0.015995, 0.003289, -0.011933, - -0.020796, -0.018719, 0.055052, -0.003573, 0.003273, -0.012844, - -0.028193, -0.034231, -0.007791, -0.016292, 0.026591, -0.051809, - -0.010155, -0.018414, -0.054793, 0.017930, 0.006426, 0.023304, - -0.048921, -0.052002, -0.019893, -0.012288, -0.005234, -0.019678, - -0.043605, -0.010795, -0.002780, -0.017000, 0.003344, -0.044943, - 0.011597, -0.007942, -0.052141, -0.037486, -0.017080, -0.013358, - -0.047446, -0.003896, 0.009206, -0.012010, 0.028744, 0.005538, - 0.007456, -0.018324, 0.004821, 0.030539, 0.025653, -0.017038, - 0.018920, -0.004534, 0.010551, -0.003490, 0.014134, -0.024699, - -0.027441, -0.010447, -0.012607, -0.008101, 0.006130, 0.000793, - 0.014923, 0.013988, 0.007929, 0.026113, 0.008796, -0.027486, - 0.050275, 0.050142, 0.020208, 0.029441, 0.009393, 0.021935, - 0.039068, 0.016665, 0.021530, 0.038030, 0.037605, 0.023567, - 0.015317, -0.044047, 0.026281, 0.031930, 0.016209, 0.012571, - -0.024948, -0.000079, 0.015474, 0.021621, 0.032409, 0.034554, - -0.023947, -0.023383, -0.009830, -0.033091, -0.038903, -0.034006, - 0.011626, 0.029852, 0.008081, 0.020642, -0.017172, -0.054129, - 0.026770, 0.050528, 0.033372, 0.023241, 0.004722, 0.001931, - 0.014463, 0.004881, 0.049580, 0.004011, 0.036895, -0.001285, - 0.034138, -0.037780, -0.002614, 0.011694, 0.005173, -0.001698, - 0.032916, 0.003784, -0.045142, -0.010624, -0.000341, -0.000918, - 0.002934, 0.021001, 0.023925, 0.038621, 0.060907, 0.052698, - 0.020185, 0.018493, 0.008522, 0.022013, 0.049908, 0.037517, - -0.004797, -0.020931, -0.017675, -0.002579, 0.020668, 0.068436, - -0.001664, -0.023581, 0.015642, -0.005660, 0.009881, 0.026384, - 0.009799, -0.024707, 0.003424, 0.033840, 0.002750, 0.017571, - 0.000319, 0.022565, 0.008745, 0.024299, 0.012549, 0.017125, - 0.011142, 0.029548, 0.024562, -0.007770, 0.002411, -0.000592, - 0.031485, 0.031776, 0.007522, 0.019057, -0.002505, -0.015379, - -0.009648, -0.006846, -0.004878, 0.004841, -0.012324, 0.024326, - -0.035243, -0.018797, 0.024658, -0.016084, 0.012578, -0.011785, - 0.000116, 0.000676, 0.027937, -0.011261, 0.002983, -0.014597, - 0.014899, 0.036143, -0.009354, -0.001782, -0.014149, -0.012782, - 3.000000, - 6.000000, 6.000000, 31.000000, - -0.001248, 0.045986, 0.015764, -0.001496, 0.001678, -0.023088, - 0.012118, -0.042211, 0.024729, 0.033205, -0.004218, -0.017808, - -0.001929, 0.001380, -0.019715, -0.034334, 0.026260, 0.018052, - -0.025520, -0.004449, -0.017516, 0.006083, 0.001053, 0.091226, - -0.024857, -0.023084, 0.005057, 0.007317, 0.035590, -0.000961, - -0.025729, -0.011117, 0.013658, 0.007134, 0.052704, 0.016574, - 0.002305, -0.003712, -0.019794, -0.005018, 0.013998, -0.009341, - 0.034265, -0.006502, 0.000047, 0.012272, -0.010836, -0.027970, - -0.018748, -0.003520, 0.026379, 0.011052, 0.008918, 0.074677, - -0.013617, -0.006760, -0.041758, -0.078959, -0.029931, 0.078011, - -0.019850, -0.019391, 0.016032, -0.069632, -0.007924, -0.016721, - -0.030976, -0.002950, 0.000410, 0.006709, 0.037302, 0.030477, - -0.000337, -0.001447, -0.011391, 0.050181, 0.002397, -0.011598, - 0.035093, -0.014444, 0.011922, 0.022615, 0.014246, -0.053117, - 0.020458, -0.001089, 0.047739, 0.057677, 0.013767, -0.012926, - 0.020767, 0.003015, 0.001823, 0.000373, 0.041143, 0.038170, - 0.037987, 0.056488, 0.018523, -0.028868, 0.017303, -0.033976, - 0.016274, 0.023592, -0.000597, -0.027880, -0.014929, 0.028460, - 0.006101, -0.020599, -0.036596, 0.005023, -0.054630, -0.024972, - 0.019913, -0.048073, -0.013804, 0.016507, -0.043818, -0.028004, - -0.025676, 0.026340, 0.000279, -0.021939, 0.019913, -0.012059, - -0.012574, 0.024819, -0.010668, 0.022752, 0.023357, -0.026258, - -0.009272, -0.019351, -0.038578, -0.002765, 0.046645, 0.026553, - -0.046803, -0.041066, -0.046478, -0.035385, 0.004745, 0.022603, - -0.018143, 0.060647, 0.013517, 0.004380, 0.010185, 0.034423, - -0.015671, -0.007708, -0.018361, 0.040463, 0.029292, 0.045951, - 0.013482, 0.026466, 0.006416, -0.007626, 0.008344, 0.052193, - 0.003284, 0.016150, 0.006236, 0.002431, 0.014564, 0.047419, - 0.015104, 0.015314, 0.031344, 0.049108, 0.017430, 0.013942, - 0.064005, 0.062002, 0.017280, 0.010173, -0.009917, 0.001697, - -0.062320, 0.018965, -0.035952, -0.019794, 0.012663, 0.046800, - -0.057230, -0.024452, -0.031881, 0.016382, 0.017835, 0.051134, - -0.013576, -0.018223, 0.009610, 0.008528, -0.026262, 0.037150, - -0.016152, -0.005264, -0.016550, -0.000692, 0.015719, 0.023812, - 0.003973, -0.005653, 0.019605, 0.021961, -0.038524, -0.049465, - 0.028930, 0.056327, -0.002656, 0.061252, -0.036367, 0.021064, - 0.013741, 0.023915, 0.011975, -0.028249, -0.011373, -0.018831, - 0.001710, 0.008836, 0.005401, -0.011033, 0.015740, -0.007297, - -0.005154, -0.032979, -0.006678, -0.022283, 0.003790, -0.013164, - 0.015290, 0.007008, 0.020681, -0.008025, -0.010795, -0.043462, - -0.054784, 0.013346, 0.009119, 0.003052, -0.009528, -0.025677, - -0.009098, 0.010288, 0.018497, -0.004080, 0.026515, 0.008637, - 0.026023, -0.013342, 0.024804, 0.053457, -0.006094, -0.019222, - 0.018576, 0.038506, 0.026625, -0.009740, -0.017985, -0.037208, - 0.038500, 0.024167, 0.024864, -0.012565, -0.006641, -0.030265, - 0.031332, 0.010280, 0.003776, -0.012630, -0.028431, 0.029229, - 0.024701, 0.054368, -0.009956, 0.052650, -0.005873, 0.030722, - -0.011943, 0.032980, 0.009447, -0.025146, -0.020631, 0.009564, - -0.026703, -0.066007, 0.000020, -0.001755, 0.020791, -0.022349, - 0.006118, 0.008206, 0.026091, 0.009060, 0.005807, 0.026853, - 0.012547, 0.031760, 0.045821, 0.035944, 0.000990, -0.007728, - 0.027819, -0.027903, -0.007070, 0.050250, -0.023385, 0.009776, - -0.007135, 0.046733, 0.001935, 0.029827, -0.004503, 0.016479, - -0.017946, -0.017373, -0.018473, -0.046054, 0.003785, -0.016355, - 0.029625, -0.016050, -0.015339, 0.003296, -0.027620, -0.012010, - 0.011464, -0.002109, 0.012210, 0.033932, 0.009833, 0.022312, - -0.013184, 0.012891, 0.005805, 0.007095, 0.052474, -0.028992, - 0.015322, 0.014939, 0.034241, 0.001472, 0.033410, -0.030677, - 0.011693, 0.038502, 0.024014, -0.019381, -0.003194, -0.019456, - 0.010972, -0.049203, -0.019949, -0.056211, -0.044799, -0.018842, - 0.002417, 0.020568, 0.001649, 0.040105, -0.007970, -0.042104, - -0.011603, 0.004934, -0.029320, -0.004079, 0.023002, -0.018263, - -0.014338, -0.018716, 0.005877, 0.010355, 0.030997, -0.060395, - 0.038455, 0.030174, 0.035556, 0.014615, 0.009125, -0.027798, - -0.025421, 0.021985, -0.020354, 0.042339, 0.002784, -0.019593, - -0.010044, -0.026930, 0.016270, 0.023015, -0.000475, -0.044954, - 0.001349, 0.033129, 0.036235, -0.012712, 0.033910, 0.033051, - -0.015834, 0.000975, 0.012873, -0.042487, 0.016378, -0.000123, - -0.017876, -0.007855, 0.032834, -0.034639, -0.021635, -0.026586, - 0.022937, 0.023277, 0.035370, 0.012969, -0.000491, -0.004907, - 0.057226, -0.018215, 0.016417, -0.005754, -0.014335, 0.000002, - -0.012848, -0.053152, -0.013015, -0.007742, 0.008090, -0.012391, - 0.033010, 0.021859, 0.007469, 0.063812, 0.029094, 0.032395, - 0.029990, -0.003485, 0.018352, -0.031370, 0.011875, 0.022338, - 0.043611, -0.033315, -0.000872, -0.002849, 0.021433, 0.022835, - 0.025900, -0.000418, -0.016437, 0.046752, 0.031257, 0.029367, - 0.054215, -0.018513, 0.017035, 0.090851, 0.002117, 0.029181, - 0.010685, 0.026770, 0.045389, 0.019894, -0.019153, -0.009254, - 0.017035, -0.022899, -0.020564, 0.001860, -0.008161, 0.020750, - 0.020742, -0.050201, 0.015339, 0.026587, 0.006860, 0.046786, - -0.009737, -0.034264, -0.004092, -0.022615, -0.002725, 0.040318, - -0.033744, -0.014952, -0.013123, -0.017588, -0.016548, 0.049070, - 0.003342, 0.019975, -0.021273, 0.009116, 0.006827, 0.032530, - 0.017553, 0.043279, -0.018426, -0.019390, 0.021764, -0.021843, - 0.006305, 0.004716, -0.031008, 0.002108, 0.002979, 0.033604, - -0.001813, -0.049990, -0.032948, 0.016414, -0.013254, -0.043662, - 0.011457, 0.001687, -0.009179, 0.004687, 0.054063, -0.005455, - 0.007285, 0.031452, -0.033542, 0.010597, 0.013227, 0.035567, - 0.028831, 0.000774, 0.007473, 0.042050, 0.012992, -0.021905, - 0.050139, -0.002070, -0.004433, -0.001870, 0.018822, 0.026841, - -0.006079, 0.006591, 0.018607, -0.012542, 0.059098, 0.025197, - 0.034569, -0.018961, 0.005493, 0.008469, 0.032576, 0.023702, - -0.008549, 0.002718, -0.011195, -0.014771, 0.013629, 0.016009, - -0.035193, -0.005598, 0.010999, -0.003892, -0.001775, -0.000096, - 0.012438, 0.000693, -0.018115, 0.014087, 0.002124, 0.005855, - -0.036969, 0.001880, 0.026753, 0.041624, 0.004545, 0.061986, - 0.035567, 0.018173, -0.013601, -0.060308, -0.020258, 0.030223, - 0.017798, -0.003384, 0.055947, -0.002208, -0.018853, 0.016886, - 0.012709, -0.017112, 0.038573, 0.030531, -0.001031, 0.023903, - -0.015244, 0.058453, 0.043485, -0.001845, -0.030372, -0.040437, - 0.024036, 0.012616, -0.012010, -0.037142, 0.003183, -0.057568, - -0.054342, 0.006509, 0.004096, 0.002816, 0.017847, -0.048877, - -0.009465, 0.021905, -0.010024, -0.011255, 0.013944, 0.007638, - -0.014261, -0.014500, 0.028015, 0.005451, -0.016959, 0.006860, - 0.011268, -0.004529, 0.043869, 0.050809, 0.009399, -0.009330, - 0.076451, 0.000408, 0.030314, 0.071893, 0.006515, -0.010606, - 0.033703, 0.023054, 0.021729, -0.012511, 0.019674, -0.036115, - -0.021008, -0.024297, 0.027490, 0.029203, 0.014948, -0.015305, - -0.017225, 0.004165, -0.010937, -0.013659, -0.006848, -0.026292, - 0.002246, -0.030284, 0.030734, 0.025084, 0.004607, -0.015785, - -0.042966, -0.002106, 0.040929, -0.030430, 0.020650, -0.029741, - 0.042523, 0.008731, 0.021563, 0.015704, 0.012089, -0.024841, - 0.039455, 0.022344, 0.006909, -0.030415, -0.003828, -0.045740, - -0.026978, -0.051108, -0.053000, -0.042963, 0.014385, 0.007983, - 0.018920, -0.004534, 0.010551, -0.003490, 0.014134, -0.024699, - 0.007456, -0.018324, 0.004821, 0.030539, 0.025653, -0.017038, - -0.047446, -0.003896, 0.009206, -0.012010, 0.028744, 0.005538, - 0.011597, -0.007942, -0.052141, -0.037486, -0.017080, -0.013358, - -0.043605, -0.010795, -0.002780, -0.017000, 0.003344, -0.044943, - -0.048921, -0.052002, -0.019893, -0.012288, -0.005234, -0.019678, - -0.010155, -0.018414, -0.054793, 0.017930, 0.006426, 0.023304, - -0.028193, -0.034231, -0.007791, -0.016292, 0.026591, -0.051809, - -0.020796, -0.018719, 0.055052, -0.003573, 0.003273, -0.012844, - -0.010278, 0.004502, 0.020166, 0.015995, 0.003289, -0.011933, - 0.029559, -0.019856, 0.000051, -0.020146, 0.020418, -0.051154, - -0.026716, -0.035265, -0.010948, -0.041392, -0.035932, -0.006858, - 0.009580, 0.007232, -0.028628, 0.050638, -0.017442, 0.015983, - 0.018002, -0.040910, 0.002470, -0.008540, -0.029052, 0.018394, - 0.020842, -0.000456, -0.002044, -0.043152, 0.031101, 0.021282, - 0.006875, -0.013139, -0.048731, 0.026935, 0.003964, 0.007587, - 0.047534, -0.012392, -0.043530, 0.029730, 0.011006, 0.021252, - -0.013097, -0.009898, -0.004650, -0.025222, -0.015485, 0.011252, - -0.015269, -0.007100, -0.018245, 0.026701, -0.002373, -0.007860, - -0.027132, -0.064633, -0.010642, 0.032328, 0.019102, 0.005083, - -0.031593, -0.022127, -0.017183, -0.040626, 0.003604, 0.021913, - -0.052413, -0.015833, -0.021359, -0.017538, 0.008277, 0.018647, - 0.027006, 0.000389, 0.002464, 0.040540, 0.021688, -0.001182, - 0.063147, 0.034671, 0.018242, -0.022230, 0.003917, -0.022094, - -0.047746, 0.010037, -0.049928, -0.003015, -0.014354, -0.011042, - -0.026865, -0.043835, -0.044131, 0.017028, -0.002955, -0.024270, - -0.020427, -0.021045, -0.006082, -0.013077, -0.001139, 0.001600, - -0.033265, -0.007818, -0.055955, -0.028931, -0.006091, 0.008967, - 0.021619, -0.020086, 0.035616, -0.022215, -0.042346, -0.070343, - 0.048400, 0.026780, 0.006096, 0.007520, -0.021979, 0.006061, - -0.003578, 0.005771, -0.026313, -0.027526, 0.015213, -0.005655, - -0.011974, -0.023561, 0.006106, -0.020655, -0.012182, 0.006188, - -0.017109, -0.020654, -0.021474, -0.018732, -0.001241, -0.023458, - -0.016345, -0.003967, 0.005132, -0.023727, -0.019981, -0.059031, - -0.040250, -0.034677, -0.047486, 0.006505, -0.012775, -0.015759, - -0.047095, -0.003492, 0.021450, -0.013371, 0.001406, 0.038775, - 0.012562, -0.028861, -0.047205, -0.029464, -0.022489, 0.005098, - -0.021657, -0.035266, 0.035090, -0.021304, -0.051765, -0.026398, - 0.016691, -0.024130, 0.021268, -0.009962, -0.011295, -0.007292, - 0.017449, 0.027074, 0.005635, -0.017438, -0.034537, -0.027840, - -0.006694, 0.001171, -0.023360, 0.008375, -0.003423, -0.021754, - -0.077322, -0.018639, -0.012427, -0.027501, -0.041589, -0.017788, - -0.018491, -0.039110, -0.013292, -0.005785, 0.030094, -0.036458, - -0.008941, -0.047177, 0.007549, -0.019360, -0.013196, 0.018472, - 0.024741, -0.027300, -0.013591, 0.004141, 0.006858, -0.030345, - 0.058511, -0.015068, -0.012716, 0.006769, -0.020458, -0.014797, - 0.048197, 0.028797, 0.008171, 0.013262, 0.003377, -0.039746, - -0.045267, -0.031204, -0.017812, -0.033117, 0.007980, -0.062892, - 0.000319, 0.022565, 0.008745, 0.024299, 0.012549, 0.017125, - 0.009799, -0.024707, 0.003424, 0.033840, 0.002750, 0.017571, - -0.001664, -0.023581, 0.015642, -0.005660, 0.009881, 0.026384, - -0.004797, -0.020931, -0.017675, -0.002579, 0.020668, 0.068436, - 0.020185, 0.018493, 0.008522, 0.022013, 0.049908, 0.037517, - 0.002934, 0.021001, 0.023925, 0.038621, 0.060907, 0.052698, - 0.014899, 0.036143, -0.009354, -0.001782, -0.014149, -0.012782, - 0.000116, 0.000676, 0.027937, -0.011261, 0.002983, -0.014597, - -0.035243, -0.018797, 0.024658, -0.016084, 0.012578, -0.011785, - -0.009648, -0.006846, -0.004878, 0.004841, -0.012324, 0.024326, - 0.031485, 0.031776, 0.007522, 0.019057, -0.002505, -0.015379, - 0.011142, 0.029548, 0.024562, -0.007770, 0.002411, -0.000592, - -0.024948, -0.000079, 0.015474, 0.021621, 0.032409, 0.034554, - 0.015317, -0.044047, 0.026281, 0.031930, 0.016209, 0.012571, - 0.039068, 0.016665, 0.021530, 0.038030, 0.037605, 0.023567, - 0.050275, 0.050142, 0.020208, 0.029441, 0.009393, 0.021935, - 0.014923, 0.013988, 0.007929, 0.026113, 0.008796, -0.027486, - -0.027441, -0.010447, -0.012607, -0.008101, 0.006130, 0.000793, - 0.032916, 0.003784, -0.045142, -0.010624, -0.000341, -0.000918, - 0.034138, -0.037780, -0.002614, 0.011694, 0.005173, -0.001698, - 0.014463, 0.004881, 0.049580, 0.004011, 0.036895, -0.001285, - 0.026770, 0.050528, 0.033372, 0.023241, 0.004722, 0.001931, - 0.011626, 0.029852, 0.008081, 0.020642, -0.017172, -0.054129, - -0.023947, -0.023383, -0.009830, -0.033091, -0.038903, -0.034006, - 2.000000, - 5.000000, 8.000000, 31.000000, - -0.023881, -0.025961, -0.016085, 0.002519, 0.002875, - 0.015524, 0.015195, 0.041155, 0.014466, -0.018378, - 0.002600, -0.020263, -0.007371, -0.011121, 0.024607, - -0.038269, -0.034545, -0.016056, -0.037035, 0.026626, - 0.015168, 0.022611, 0.003963, 0.027021, -0.006293, - 0.018793, 0.037255, -0.032588, 0.030653, -0.009351, - -0.009369, -0.016373, -0.026431, 0.030607, 0.023931, - -0.034287, 0.005759, -0.011178, -0.028852, -0.032704, - -0.049949, -0.046060, -0.050270, -0.031320, -0.008712, - 0.009246, -0.000610, -0.017364, 0.000636, -0.013102, - -0.011762, -0.024670, 0.005053, -0.002943, -0.027749, - 0.013194, 0.005866, -0.029562, 0.002844, 0.020366, - -0.002292, -0.020919, 0.018443, 0.020225, -0.048654, - 0.029229, 0.010745, 0.008019, 0.022995, -0.064247, - 0.024120, -0.046261, 0.004676, -0.010136, -0.037722, - -0.044361, 0.008900, 0.009107, -0.017279, -0.016118, - 0.017328, -0.003035, -0.044544, -0.057942, 0.020498, - 0.015473, 0.004866, -0.032876, -0.002717, -0.010467, - -0.014977, 0.012142, 0.023255, 0.012157, -0.022883, - 0.008335, 0.004445, 0.010890, 0.012698, 0.014643, - 0.023277, 0.008910, 0.014481, -0.040318, 0.020869, - 0.022242, 0.037748, 0.049446, 0.022385, 0.019759, - 0.053362, -0.000071, 0.009598, 0.018935, 0.032680, - -0.017829, 0.005274, 0.009873, 0.008174, 0.015407, - 0.018976, 0.040158, 0.028137, -0.024769, -0.010446, - -0.009321, 0.006491, -0.007564, 0.010089, 0.002611, - 0.033307, 0.006600, 0.000981, -0.020792, -0.043535, - 0.040042, 0.047468, 0.001502, 0.001901, -0.029270, - -0.012734, -0.014537, 0.013098, 0.052677, 0.016883, - -0.024375, 0.020558, -0.020641, 0.020166, 0.025277, - -0.041841, 0.016773, -0.011097, -0.025661, -0.002579, - 0.016984, -0.003951, 0.013407, 0.000553, 0.015755, - 0.013052, 0.032268, 0.001020, -0.022183, -0.001775, - 0.046064, 0.057633, -0.036273, 0.021392, -0.014841, - 0.013238, 0.010726, -0.040599, 0.005503, -0.022920, - -0.006856, 0.018504, 0.023139, 0.029012, -0.033354, - 0.056472, 0.008683, 0.028761, 0.021728, 0.004579, - -0.029364, -0.036749, 0.007219, 0.033030, 0.004004, - -0.022732, 0.024218, -0.005076, -0.020038, 0.010956, - 0.024865, 0.018618, -0.011487, -0.008006, 0.039102, - 0.024865, 0.018618, -0.011487, -0.008006, 0.039102, - -0.022732, 0.024218, -0.005076, -0.020038, 0.010956, - -0.029364, -0.036749, 0.007219, 0.033030, 0.004004, - 0.056472, 0.008683, 0.028761, 0.021728, 0.004579, - -0.006856, 0.018504, 0.023139, 0.029012, -0.033354, - 0.013238, 0.010726, -0.040599, 0.005503, -0.022920, - 0.046064, 0.057633, -0.036273, 0.021392, -0.014841, - 0.013052, 0.032268, 0.001020, -0.022183, -0.001775, - 0.016984, -0.003951, 0.013407, 0.000553, 0.015755, - -0.041841, 0.016773, -0.011097, -0.025661, -0.002579, - -0.024375, 0.020558, -0.020641, 0.020166, 0.025277, - -0.012734, -0.014537, 0.013098, 0.052677, 0.016883, - 0.040042, 0.047468, 0.001502, 0.001901, -0.029270, - 0.033307, 0.006600, 0.000981, -0.020792, -0.043535, - -0.009321, 0.006491, -0.007564, 0.010089, 0.002611, - 0.018976, 0.040158, 0.028137, -0.024769, -0.010446, - -0.017829, 0.005274, 0.009873, 0.008174, 0.015407, - 0.053362, -0.000071, 0.009598, 0.018935, 0.032680, - 0.022242, 0.037748, 0.049446, 0.022385, 0.019759, - 0.023277, 0.008910, 0.014481, -0.040318, 0.020869, - 0.008335, 0.004445, 0.010890, 0.012698, 0.014643, - -0.014977, 0.012142, 0.023255, 0.012157, -0.022883, - 0.015473, 0.004866, -0.032876, -0.002717, -0.010467, - 0.017328, -0.003035, -0.044544, -0.057942, 0.020498, - -0.044361, 0.008900, 0.009107, -0.017279, -0.016118, - 0.024120, -0.046261, 0.004676, -0.010136, -0.037722, - 0.029229, 0.010745, 0.008019, 0.022995, -0.064247, - -0.002292, -0.020919, 0.018443, 0.020225, -0.048654, - 0.013194, 0.005866, -0.029562, 0.002844, 0.020366, - -0.011762, -0.024670, 0.005053, -0.002943, -0.027749, - 0.009246, -0.000610, -0.017364, 0.000636, -0.013102, - -0.049949, -0.046060, -0.050270, -0.031320, -0.008712, - -0.034287, 0.005759, -0.011178, -0.028852, -0.032704, - -0.009369, -0.016373, -0.026431, 0.030607, 0.023931, - 0.018793, 0.037255, -0.032588, 0.030653, -0.009351, - 0.015168, 0.022611, 0.003963, 0.027021, -0.006293, - -0.038269, -0.034545, -0.016056, -0.037035, 0.026626, - 0.002600, -0.020263, -0.007371, -0.011121, 0.024607, - 0.015524, 0.015195, 0.041155, 0.014466, -0.018378, - -0.023881, -0.025961, -0.016085, 0.002519, 0.002875, - -0.033051, -0.011388, 0.001369, 0.004940, -0.011361, - -0.051972, -0.011891, 0.017125, 0.018837, 0.017944, - 0.002701, 0.012972, -0.008766, -0.001475, 0.018325, - -0.021534, 0.019131, -0.028363, -0.024874, -0.020324, - -0.027703, 0.009867, -0.022624, -0.027760, -0.028261, - 0.049538, 0.021646, -0.053261, -0.005324, -0.037437, - -0.032524, 0.030662, -0.010025, -0.035416, 0.024784, - -0.014036, 0.029433, 0.004521, 0.004555, 0.016158, - -0.039984, -0.031449, 0.035291, 0.057998, 0.007116, - -0.025035, -0.004194, 0.025334, 0.036313, 0.004419, - 0.016164, -0.023500, -0.053415, 0.006647, -0.028451, - -0.021501, -0.030092, -0.021744, -0.012407, -0.001125, - -0.030747, 0.020507, 0.010884, -0.044273, -0.016653, - 0.031025, 0.054962, -0.031325, -0.004482, -0.021204, - -0.023046, 0.000499, -0.019233, -0.013555, 0.048162, - 0.009558, -0.018011, -0.000268, -0.001155, 0.028687, - 0.014411, 0.009411, 0.030952, 0.039746, 0.020421, - 0.021760, 0.006950, 0.044536, 0.027433, 0.001321, - 0.056212, 0.033101, -0.032901, 0.039754, 0.003280, - -0.042054, 0.031725, -0.006520, 0.065960, -0.007671, - -0.000580, 0.043651, 0.064830, -0.003521, 0.000534, - -0.003280, 0.022030, 0.019882, -0.040564, 0.034328, - 0.003527, -0.015480, 0.027057, -0.006747, 0.014880, - -0.030563, -0.017677, 0.021342, -0.027424, 0.004677, - 0.018827, 0.021139, 0.030797, 0.011327, -0.015693, - -0.022562, 0.064580, 0.035354, 0.005436, -0.006215, - -0.020564, 0.036343, -0.022768, 0.002749, 0.009367, - -0.026935, 0.030335, 0.014219, 0.016778, 0.023476, - -0.028098, 0.020342, 0.049417, 0.003980, 0.003962, - -0.057404, -0.032523, -0.007595, -0.024520, 0.031693, - -0.050798, 0.021266, -0.035682, -0.032466, -0.011092, - 0.001143, 0.009638, -0.026090, -0.050751, 0.000675, - 0.001143, 0.009638, -0.026090, -0.050751, 0.000675, - -0.050798, 0.021266, -0.035682, -0.032466, -0.011092, - -0.057404, -0.032523, -0.007595, -0.024520, 0.031693, - -0.028098, 0.020342, 0.049417, 0.003980, 0.003962, - -0.026935, 0.030335, 0.014219, 0.016778, 0.023476, - -0.020564, 0.036343, -0.022768, 0.002749, 0.009367, - -0.022562, 0.064580, 0.035354, 0.005436, -0.006215, - 0.018827, 0.021139, 0.030797, 0.011327, -0.015693, - -0.030563, -0.017677, 0.021342, -0.027424, 0.004677, - 0.003527, -0.015480, 0.027057, -0.006747, 0.014880, - -0.003280, 0.022030, 0.019882, -0.040564, 0.034328, - -0.000580, 0.043651, 0.064830, -0.003521, 0.000534, - -0.042054, 0.031725, -0.006520, 0.065960, -0.007671, - 0.056212, 0.033101, -0.032901, 0.039754, 0.003280, - 0.021760, 0.006950, 0.044536, 0.027433, 0.001321, - 0.014411, 0.009411, 0.030952, 0.039746, 0.020421, - 0.009558, -0.018011, -0.000268, -0.001155, 0.028687, - -0.023046, 0.000499, -0.019233, -0.013555, 0.048162, - 0.031025, 0.054962, -0.031325, -0.004482, -0.021204, - -0.030747, 0.020507, 0.010884, -0.044273, -0.016653, - -0.021501, -0.030092, -0.021744, -0.012407, -0.001125, - 0.016164, -0.023500, -0.053415, 0.006647, -0.028451, - -0.025035, -0.004194, 0.025334, 0.036313, 0.004419, - -0.039984, -0.031449, 0.035291, 0.057998, 0.007116, - -0.014036, 0.029433, 0.004521, 0.004555, 0.016158, - -0.032524, 0.030662, -0.010025, -0.035416, 0.024784, - 0.049538, 0.021646, -0.053261, -0.005324, -0.037437, - -0.027703, 0.009867, -0.022624, -0.027760, -0.028261, - -0.021534, 0.019131, -0.028363, -0.024874, -0.020324, - 0.002701, 0.012972, -0.008766, -0.001475, 0.018325, - -0.051972, -0.011891, 0.017125, 0.018837, 0.017944, - -0.033051, -0.011388, 0.001369, 0.004940, -0.011361, - -0.021936, 0.005342, 0.010831, 0.006619, -0.017683, - 0.013186, -0.014929, -0.002308, 0.004053, -0.022676, - 0.029551, 0.011274, -0.015487, -0.001585, -0.041300, - -0.024702, -0.010491, -0.026663, -0.002467, -0.004365, - -0.024702, -0.010491, -0.026663, -0.002467, -0.004365, - 0.029551, 0.011274, -0.015487, -0.001585, -0.041300, - 0.013186, -0.014929, -0.002308, 0.004053, -0.022676, - -0.021936, 0.005342, 0.010831, 0.006619, -0.017683, - -0.020197, -0.014281, -0.008216, -0.001363, 0.022427, - -0.003503, 0.006206, -0.014128, -0.013760, -0.032265, - 0.000926, -0.011799, -0.008301, -0.021749, -0.052422, - -0.010005, -0.034603, -0.050361, -0.005057, -0.020688, - -0.011552, -0.028694, 0.031968, 0.023167, -0.037296, - 0.010486, 0.036698, -0.017024, -0.007807, -0.046967, - -0.010655, -0.009219, 0.012626, -0.019753, -0.018158, - -0.047156, 0.025321, 0.024272, -0.000999, 0.016812, - -0.017115, -0.011509, 0.034201, 0.012054, 0.023989, - 0.004763, -0.009106, 0.026241, -0.015840, -0.047706, - 0.020088, -0.002397, -0.020228, -0.024726, -0.058616, - -0.018765, -0.011123, -0.010169, 0.035512, 0.010438, - -0.040980, -0.009369, 0.028558, -0.043072, -0.034618, - 0.008994, 0.020182, 0.064923, 0.018270, -0.034891, - 0.012920, -0.008785, 0.001218, 0.010042, 0.028065, - 0.014125, -0.020115, 0.051346, 0.030030, -0.002570, - 0.015512, 0.007343, 0.007055, -0.017555, 0.007410, - -0.031703, -0.002448, 0.025458, 0.007401, 0.003219, - 0.018996, -0.001759, -0.009606, -0.009051, -0.011723, - -0.027328, 0.022679, -0.024686, 0.045427, -0.018759, - -0.056274, -0.005806, -0.009033, 0.011724, 0.008476, - -0.033651, 0.002450, 0.003563, -0.028496, 0.014609, - -0.032638, 0.012868, 0.016561, -0.031165, 0.007025, - -0.002390, -0.007010, 0.034271, -0.040462, 0.023088, - -0.007464, -0.002016, 0.007910, 0.006710, -0.033325, - -0.035499, 0.045063, 0.022952, 0.019610, -0.047399, - 0.005540, 0.005648, -0.039670, -0.017167, -0.021625, - -0.038612, -0.017867, 0.010468, -0.014198, -0.029169, - 0.017791, 0.000754, -0.001090, -0.018137, -0.009948, - -0.076262, 0.000096, -0.025819, -0.020393, 0.010121, - -0.050143, 0.008274, -0.028026, -0.035805, -0.035237, - 0.020445, 0.009985, -0.007280, -0.031890, -0.021853, - 0.020445, 0.009985, -0.007280, -0.031890, -0.021853, - -0.050143, 0.008274, -0.028026, -0.035805, -0.035237, - -0.076262, 0.000096, -0.025819, -0.020393, 0.010121, - 0.017791, 0.000754, -0.001090, -0.018137, -0.009948, - -0.038612, -0.017867, 0.010468, -0.014198, -0.029169, - 0.005540, 0.005648, -0.039670, -0.017167, -0.021625, - -0.035499, 0.045063, 0.022952, 0.019610, -0.047399, - -0.007464, -0.002016, 0.007910, 0.006710, -0.033325, - -0.002390, -0.007010, 0.034271, -0.040462, 0.023088, - -0.032638, 0.012868, 0.016561, -0.031165, 0.007025, - -0.033651, 0.002450, 0.003563, -0.028496, 0.014609, - -0.056274, -0.005806, -0.009033, 0.011724, 0.008476, - -0.027328, 0.022679, -0.024686, 0.045427, -0.018759, - 0.018996, -0.001759, -0.009606, -0.009051, -0.011723, - -0.031703, -0.002448, 0.025458, 0.007401, 0.003219, - 0.015512, 0.007343, 0.007055, -0.017555, 0.007410, - 0.014125, -0.020115, 0.051346, 0.030030, -0.002570, - 0.012920, -0.008785, 0.001218, 0.010042, 0.028065, - 0.008994, 0.020182, 0.064923, 0.018270, -0.034891, - -0.040980, -0.009369, 0.028558, -0.043072, -0.034618, - -0.018765, -0.011123, -0.010169, 0.035512, 0.010438, - 0.020088, -0.002397, -0.020228, -0.024726, -0.058616, - 0.004763, -0.009106, 0.026241, -0.015840, -0.047706, - -0.017115, -0.011509, 0.034201, 0.012054, 0.023989, - -0.047156, 0.025321, 0.024272, -0.000999, 0.016812, - -0.010655, -0.009219, 0.012626, -0.019753, -0.018158, - 0.010486, 0.036698, -0.017024, -0.007807, -0.046967, - -0.011552, -0.028694, 0.031968, 0.023167, -0.037296, - -0.010005, -0.034603, -0.050361, -0.005057, -0.020688, - 0.000926, -0.011799, -0.008301, -0.021749, -0.052422, - -0.003503, 0.006206, -0.014128, -0.013760, -0.032265, - -0.020197, -0.014281, -0.008216, -0.001363, 0.022427, - -0.007543, 0.026764, 0.022912, -0.025365, 0.007829, - -0.019694, 0.041436, 0.016541, 0.022769, -0.004208, - 0.018285, 0.008463, -0.051848, 0.031539, -0.019474, - 0.006206, 0.007294, 0.005832, 0.009484, -0.014247, - -0.050095, -0.001765, 0.035803, 0.050427, -0.011708, - -0.001971, 0.052423, 0.007726, 0.016917, -0.026010, - -0.020478, 0.034199, 0.013248, -0.031358, -0.011761, - -0.035318, 0.017099, 0.034775, -0.022791, -0.025607, - -0.003592, -0.008791, -0.004391, -0.008643, 0.027678, - 0.011327, 0.013308, 0.006583, 0.023909, 0.039757, - 0.030216, 0.024854, -0.040115, -0.028523, -0.006375, - 0.012416, 0.065794, 0.012210, -0.020440, -0.020862, - -0.016993, 0.019163, 0.006851, -0.009002, 0.018690, - 0.006891, -0.001301, -0.008806, 0.020049, 0.001356, - -0.018354, -0.016228, -0.034858, 0.002314, 0.007933, - -0.025576, -0.024200, -0.041089, -0.009135, 0.025250, - -0.035318, 0.017099, 0.034775, -0.022791, -0.025607, - -0.020478, 0.034199, 0.013248, -0.031358, -0.011761, - -0.001971, 0.052423, 0.007726, 0.016917, -0.026010, - -0.050095, -0.001765, 0.035803, 0.050427, -0.011708, - 0.006206, 0.007294, 0.005832, 0.009484, -0.014247, - 0.018285, 0.008463, -0.051848, 0.031539, -0.019474, - -0.019694, 0.041436, 0.016541, 0.022769, -0.004208, - -0.007543, 0.026764, 0.022912, -0.025365, 0.007829, - -0.025576, -0.024200, -0.041089, -0.009135, 0.025250, - -0.018354, -0.016228, -0.034858, 0.002314, 0.007933, - 0.006891, -0.001301, -0.008806, 0.020049, 0.001356, - -0.016993, 0.019163, 0.006851, -0.009002, 0.018690, - 0.012416, 0.065794, 0.012210, -0.020440, -0.020862, - 0.030216, 0.024854, -0.040115, -0.028523, -0.006375, - 0.011327, 0.013308, 0.006583, 0.023909, 0.039757, - -0.003592, -0.008791, -0.004391, -0.008643, 0.027678, - 0.000000, - 8.000000, 5.000000, 31.000000, - 0.022887, 0.056724, -0.000702, 0.022863, 0.053520, 0.072183, 0.022290, 0.005229, - 0.040167, 0.059008, 0.024929, 0.021105, -0.043107, -0.028788, 0.018564, -0.018111, - -0.021379, 0.027230, -0.015728, -0.037763, -0.001206, -0.027379, 0.009973, 0.038223, - -0.003445, 0.026841, -0.027398, -0.014284, -0.007368, -0.051858, -0.028280, 0.032946, - 0.048245, 0.019105, -0.006557, 0.008802, -0.015039, -0.037493, -0.002958, -0.005178, - -0.009041, 0.003526, -0.053238, -0.065874, 0.025895, 0.030425, 0.010324, 0.012503, - 0.023142, -0.007530, -0.008784, -0.018869, -0.023360, -0.041719, 0.029619, -0.015242, - 0.016987, -0.039373, -0.040454, -0.020339, -0.021966, -0.011918, -0.039189, -0.025038, - 0.000461, -0.056763, -0.038205, -0.026354, -0.019836, -0.006812, -0.002383, 0.005570, - 0.010386, 0.033274, 0.001373, 0.004893, -0.039785, 0.000525, 0.038941, 0.042735, - -0.027038, -0.026298, -0.022356, -0.012709, -0.004319, -0.013780, -0.030794, -0.017456, - -0.007364, -0.012957, -0.001309, 0.076955, 0.012220, 0.009517, 0.079565, 0.012248, - 0.048055, 0.031741, -0.014826, 0.058232, -0.015786, 0.030496, 0.022379, -0.081614, - 0.041169, -0.021015, -0.027685, -0.012383, -0.015871, -0.018460, 0.023982, -0.010902, - 0.038028, -0.038393, 0.016496, -0.022600, -0.002472, 0.008046, 0.025385, -0.010149, - -0.031165, -0.007812, -0.014553, -0.009645, -0.005535, 0.054686, 0.016289, -0.062422, - -0.027590, -0.008245, -0.014707, -0.010927, -0.033036, 0.028156, 0.035228, -0.019348, - -0.011412, -0.029939, 0.021498, 0.027910, -0.019078, 0.024269, -0.054514, 0.033241, - 0.032497, 0.002971, -0.003615, -0.009400, -0.021315, 0.014233, 0.016055, 0.021873, - 0.032871, -0.049404, -0.020953, 0.002104, 0.002491, -0.009485, -0.012530, -0.002238, - 0.022659, -0.015555, 0.030342, 0.046080, 0.018834, 0.034462, 0.010342, -0.004826, - 0.000153, 0.016447, 0.029365, -0.025935, 0.002813, 0.007626, -0.019985, 0.012518, - 0.009742, 0.029602, 0.021918, -0.023055, 0.048176, 0.013008, -0.035577, -0.008189, - -0.061579, 0.008055, 0.027092, -0.021110, 0.023286, 0.023398, 0.010402, -0.010639, - 0.008321, -0.061976, -0.007441, -0.002559, 0.036592, -0.045740, -0.064089, 0.013283, - 0.020154, 0.059441, 0.017961, -0.017119, 0.006805, -0.051747, 0.045698, -0.003164, - 0.010758, 0.063877, 0.053704, -0.025424, 0.016472, -0.045267, -0.001827, 0.019653, - 0.012806, 0.022907, 0.044233, -0.023612, -0.040727, -0.029642, 0.023392, 0.029432, - -0.026475, 0.001624, -0.018389, -0.032695, -0.003396, -0.020810, 0.014084, -0.003991, - 0.009139, 0.026217, -0.011675, -0.050890, -0.043001, 0.000663, 0.012765, 0.023600, - 0.011571, -0.011669, -0.005867, 0.019499, 0.011645, -0.013925, 0.006023, -0.057261, - -0.019032, -0.021849, 0.011449, 0.006722, -0.006882, -0.033538, -0.018829, 0.034018, - 0.013553, 0.012649, 0.012462, 0.021217, -0.005756, -0.035761, 0.017153, -0.007327, - -0.010933, -0.002843, -0.006318, -0.014423, -0.014901, 0.014145, 0.025907, 0.013068, - 0.003707, 0.034230, -0.011328, 0.033776, -0.043760, -0.009225, 0.029074, -0.011143, - -0.027927, -0.038110, -0.008558, 0.007416, -0.031753, 0.000222, -0.040530, -0.022088, - 0.025532, 0.028600, 0.003892, -0.009040, 0.007695, 0.006575, 0.015432, -0.016912, - -0.021405, 0.001612, 0.022025, 0.011906, 0.015854, 0.012004, 0.040879, 0.005756, - 0.033053, -0.023091, 0.001880, 0.063212, 0.028497, -0.002234, -0.020518, -0.003302, - 0.016004, 0.007333, 0.018708, 0.001380, 0.005912, -0.008736, -0.004154, 0.023287, - -0.012845, -0.017489, -0.000869, -0.000811, -0.005591, -0.024294, 0.014892, -0.017577, - 0.043215, -0.012677, 0.005608, -0.003495, 0.046338, 0.036744, -0.002679, 0.055908, - 0.007413, -0.047828, 0.003064, 0.022995, 0.023642, -0.003316, -0.017299, -0.030075, - 0.034387, 0.028106, 0.005801, 0.024551, 0.021852, -0.012704, -0.038819, 0.002407, - -0.013436, 0.002610, -0.006362, 0.005035, -0.003358, -0.007126, -0.025813, -0.014392, - 0.005406, 0.021139, 0.012704, -0.015038, 0.029762, 0.047204, 0.042191, 0.056422, - 0.001789, -0.008239, 0.026372, -0.013797, 0.003339, 0.029653, 0.002900, -0.032622, - -0.006127, -0.014794, -0.025321, -0.016259, -0.061573, 0.018514, 0.046379, -0.040289, - 0.001531, -0.004357, -0.036382, -0.020129, -0.011642, 0.006204, -0.009577, -0.049322, - 0.031383, 0.017313, 0.042873, -0.051132, -0.023373, 0.003749, -0.023687, -0.017449, - -0.049227, -0.010315, 0.038017, 0.003829, -0.020485, 0.008247, 0.006205, -0.005725, - -0.025172, 0.021343, -0.017085, -0.024599, 0.003239, 0.000952, -0.019548, -0.018309, - -0.042695, -0.017599, -0.025922, 0.004232, -0.011635, -0.018028, 0.004966, -0.051137, - -0.021257, -0.022593, 0.003263, 0.045806, 0.008347, -0.006508, 0.007900, -0.012836, - -0.003323, -0.027208, 0.019852, -0.015024, -0.057231, -0.038650, -0.035792, -0.057008, - -0.018522, -0.052593, -0.046539, 0.006641, -0.002763, 0.012591, -0.020287, -0.040198, - -0.044909, -0.004123, -0.007577, -0.045177, 0.029253, -0.004262, -0.021820, -0.001536, - -0.057294, 0.017297, -0.001943, -0.025488, 0.003809, -0.032496, 0.010213, 0.040211, - -0.034366, 0.024833, -0.024737, 0.018911, 0.006657, 0.003939, -0.041861, 0.003772, - -0.056116, -0.019186, 0.013215, -0.001725, -0.034396, -0.085786, -0.057076, -0.021760, - 0.013325, 0.029406, -0.038159, -0.016350, -0.056157, -0.027320, 0.033407, -0.061915, - -0.037750, 0.012845, -0.033434, 0.011402, 0.049346, 0.015225, -0.006489, -0.003506, - -0.045100, 0.006654, -0.014039, 0.036018, 0.014971, 0.029998, 0.031627, 0.003826, - 0.023098, -0.003290, -0.011557, 0.012370, 0.010736, 0.024772, -0.013798, -0.000572, - -0.012680, 0.015828, -0.010064, -0.018518, -0.023548, -0.019529, 0.053987, 0.033032, - 0.034623, 0.010375, 0.028654, 0.011832, -0.039285, 0.020609, 0.041331, 0.019405, - 0.035288, -0.015662, -0.023326, 0.000700, 0.033275, 0.007255, -0.016558, 0.044915, - -0.018000, -0.015321, 0.004044, 0.031068, 0.016467, 0.010887, -0.023030, -0.033097, - 0.014815, -0.018633, -0.016288, -0.012663, -0.005998, 0.004769, -0.030652, 0.000851, - 0.028468, -0.000220, -0.004193, -0.003445, -0.016045, 0.012671, 0.070789, -0.009969, - 0.052015, 0.022869, 0.040227, 0.029902, 0.020552, 0.049500, 0.025615, 0.041367, - 0.034880, -0.033333, 0.012003, 0.046551, -0.013186, 0.001548, 0.040315, 0.008344, - 0.005113, -0.021268, 0.003530, 0.037651, 0.039806, 0.013328, -0.005104, -0.039401, - 0.004533, -0.030365, 0.005539, -0.038143, -0.027120, -0.020620, 0.005451, -0.017145, - 0.020959, -0.013870, 0.017257, 0.025297, 0.028248, -0.012484, 0.024545, 0.004876, - 0.035842, 0.038132, 0.011246, 0.004324, 0.000583, -0.034723, -0.007670, 0.003935, - 0.035006, 0.038203, -0.016207, 0.033939, 0.005888, 0.022949, 0.028238, -0.020094, - 0.024487, 0.000067, -0.018222, 0.016394, -0.002650, 0.003719, -0.016407, -0.020799, - 0.010269, 0.003315, 0.031450, 0.036676, 0.005546, 0.006715, 0.013051, 0.005650, - -0.030897, 0.009579, 0.003036, 0.042495, 0.017748, 0.041216, 0.015006, 0.016631, - 0.003033, 0.013406, -0.006731, -0.022843, -0.000466, -0.016223, -0.042759, -0.008389, - -0.007705, -0.019363, -0.015179, -0.017529, 0.049011, 0.012967, 0.029781, -0.004910, - -0.004307, -0.023530, -0.013212, -0.049753, -0.005769, -0.007137, -0.039489, 0.019491, - 0.004149, -0.009637, -0.007452, 0.005909, -0.020620, -0.014185, -0.001739, 0.022654, - -0.055169, 0.024814, -0.000816, -0.041222, -0.030086, 0.005109, 0.025678, -0.015112, - -0.005150, -0.008449, -0.024668, -0.024936, 0.013955, -0.028004, 0.004242, -0.010275, - 0.006377, -0.015597, -0.016745, -0.006490, -0.017308, -0.024456, 0.048708, -0.002316, - 0.021414, 0.013804, 0.000221, -0.043668, -0.019998, -0.020281, 0.028248, 0.036828, - -0.027216, 0.007839, 0.043347, 0.014635, 0.062616, -0.028053, -0.034202, 0.020567, - 0.016631, 0.057386, 0.023740, -0.013403, 0.014428, 0.001836, -0.006669, 0.003730, - -0.001299, 0.003312, -0.017563, -0.000967, 0.031887, 0.007014, -0.001224, 0.000759, - 0.013961, 0.005987, 0.044525, 0.035718, 0.016137, 0.009231, 0.040465, 0.025759, - -0.015050, 0.015191, -0.015552, 0.027060, -0.001640, 0.035013, 0.045763, -0.006889, - 0.020803, -0.001180, -0.023424, 0.034733, 0.053866, -0.025464, -0.006746, 0.012014, - 0.056619, 0.039458, 0.013739, -0.025243, -0.045167, -0.024794, -0.001734, -0.020957, - -0.054540, 0.001595, 0.009346, -0.037227, 0.017819, 0.009852, 0.001002, 0.002328, - 0.017452, 0.032695, 0.010839, 0.023578, 0.035910, -0.016657, 0.055684, -0.007119, - -0.006259, -0.021603, -0.029518, -0.002680, -0.003285, 0.027453, 0.002178, -0.020382, - -0.002960, -0.017340, -0.016838, 0.046073, 0.017217, -0.000418, 0.005160, -0.010036, - 0.011024, 0.028413, -0.008518, -0.011281, -0.084453, -0.056053, 0.002971, -0.027038, - -0.028973, -0.086358, -0.046563, 0.013867, -0.007661, -0.034250, -0.045022, -0.030953, - -0.040620, -0.013646, 0.023129, 0.123788, 0.042910, 0.003621, 0.028863, 0.022601, - 0.010401, 0.042795, 0.042202, 0.050109, 0.020472, 0.020666, 0.036416, -0.026853, - -0.019638, -0.025944, 0.009061, 0.033364, -0.033603, -0.022525, -0.013329, 0.028016, - 0.005787, 0.019135, 0.016931, -0.016754, -0.028616, -0.039824, -0.038887, -0.018582, - -0.019414, 0.010611, -0.012690, -0.008562, -0.042688, 0.000321, 0.004736, -0.077901, - -0.019049, 0.003839, -0.015436, 0.051136, -0.004173, 0.009944, 0.018870, -0.022611, - -0.046969, -0.002199, 0.035712, 0.064126, -0.010815, 0.037003, -0.040448, -0.008995, - 0.041862, 0.048502, -0.011397, 0.011295, -0.008180, -0.009749, -0.008394, 0.014029, - 0.029198, 0.024275, -0.010067, 0.007797, 0.004541, -0.039684, 0.017931, 0.030236, - 0.040281, 0.048193, 0.060658, 0.039180, -0.009282, 0.006943, -0.000403, 0.017836, - 0.013312, 0.008188, 0.009195, -0.018794, -0.036787, 0.003538, -0.019216, 0.019707, - 0.010754, 0.011581, -0.000767, 0.011251, -0.044140, 0.005673, -0.052475, -0.049906, - -0.019964, -0.011748, 0.044465, 0.000814, -0.025106, -0.034134, -0.030595, -0.009367, - 0.054407, -0.031557, -0.023473, -0.010086, -0.013839, -0.042259, 0.011756, -0.003174, - 0.037603, 0.029407, 0.044815, 0.036289, -0.006324, 0.013516, 0.015073, -0.007735, - 0.038786, 0.020070, 0.023551, 0.009673, -0.031807, -0.039389, 0.011358, 0.005516, - -0.000287, -0.037053, 0.020601, -0.002744, -0.010932, 0.015829, -0.018076, -0.005560, - 0.008331, -0.012407, -0.001741, -0.075376, -0.035279, -0.033195, -0.006482, -0.015769, - 0.053321, 0.002207, -0.007473, -0.050860, -0.045562, -0.042989, 0.065565, -0.024057, - 0.019466, 0.030314, 0.000161, -0.011624, -0.003333, -0.012472, 0.000990, -0.039586, - -0.006657, 0.013016, 0.037187, -0.001993, -0.001901, 0.004316, 0.006882, -0.007126, - 0.018106, 0.014879, 0.002829, 0.006455, -0.013388, 0.016067, 0.015512, -0.033896, - 0.029754, 0.024563, 0.008785, 0.011723, -0.015988, 0.020471, 0.023423, 0.002534, - -0.022803, 0.055425, 0.013592, 0.036643, -0.012066, 0.006155, 0.046637, -0.011961, - 0.010253, -0.003426, -0.021714, -0.040039, -0.004392, -0.016979, -0.051311, -0.025769, - 0.031524, -0.020621, -0.007995, -0.045324, 0.026465, 0.011442, 0.052096, 0.032526, - -0.021965, 0.009173, 0.004996, -0.018889, -0.016406, 0.025130, 0.000898, 0.039740, - 0.036886, 0.022633, -0.026843, 0.028852, -0.014531, 0.008158, 0.008796, 0.037186, - -0.003542, 0.036837, -0.014037, -0.026694, -0.006700, -0.019657, -0.013002, 0.044073, - -0.003487, 0.004637, -0.006447, -0.017698, 0.014962, -0.035703, -0.001943, -0.050077, - 0.035078, -0.028333, -0.012750, -0.007591, 0.024320, -0.022683, 0.047137, 0.075649, - 0.016248, -0.005024, 0.014759, -0.013704, -0.020288, 0.004120, -0.002183, -0.004941, - 0.010669, 0.012762, 0.029306, 0.000175, 0.039344, -0.040833, -0.049802, 0.019116, - 0.016815, 0.055765, 0.039207, -0.005277, 0.018002, -0.038537, -0.020886, -0.000613, - 0.035395, 0.006386, -0.018021, -0.012289, -0.022202, -0.007952, 0.001500, -0.038212, - 0.020305, -0.040284, -0.009184, -0.038105, -0.008333, -0.005413, 0.036044, 0.016110, - -0.012156, -0.035379, -0.018535, 0.009536, 0.061355, 0.036485, 0.038581, 0.025651, - -0.002473, -0.020964, 0.001235, 0.041716, 0.075311, 0.038155, 0.026727, -0.007938, - 0.019499, -0.003529, 0.002604, -0.009582, -0.007884, -0.034920, -0.034749, -0.044092, - 0.006907, 0.042389, 0.014024, 0.016496, 0.020165, 0.007562, -0.007489, -0.052993, - 0.015402, 0.041987, -0.004910, 0.003245, -0.002914, 0.004206, 0.003457, -0.004062, - -0.016019, -0.005140, -0.001924, 0.000768, -0.012613, 0.047163, 0.035761, 0.026428, - -0.041461, -0.032990, -0.028484, 0.005225, 0.002954, 0.031360, 0.037795, 0.059971, - -0.018719, -0.030195, -0.012336, -0.026181, -0.057853, -0.047671, 0.007279, 0.004027, - -0.000020, -0.005769, -0.016163, -0.022771, -0.024217, 0.036693, 0.040318, 0.003984, - 0.021915, -0.003337, -0.004606, -0.008113, 0.003681, -0.005639, 0.044284, 0.005096, - 0.011267, -0.027027, -0.011590, -0.024730, -0.039623, -0.055412, -0.023161, -0.051253, - 0.027539, -0.026953, -0.025399, -0.027337, -0.005816, -0.051678, -0.043778, -0.011829, - 0.036241, 0.019548, 0.030082, 0.015736, 0.006458, 0.010838, 0.031588, -0.004601, - -0.023143, -0.011549, -0.000151, 0.003037, 0.033417, 0.020320, 0.030163, 0.005935, - -0.016712, 0.039699, 0.024814, 0.041131, 0.065082, 0.007382, 0.020212, -0.000788, - -0.015217, 0.045819, 0.014761, 0.027477, -0.029587, -0.042253, -0.049013, -0.062088, - 0.023321, 0.038951, 0.005673, -0.009946, -0.063271, -0.057465, -0.070240, -0.030470, - 0.006594, 0.031821, 0.016023, -0.025574, -0.047576, -0.022733, 0.025769, 0.043148, - 6.000000, - 8.000000, 5.000000, 31.000000, - 0.031383, 0.017313, 0.042873, -0.051132, -0.023373, 0.003749, -0.023687, -0.017449, - 0.001531, -0.004357, -0.036382, -0.020129, -0.011642, 0.006204, -0.009577, -0.049322, - -0.006127, -0.014794, -0.025321, -0.016259, -0.061573, 0.018514, 0.046379, -0.040289, - 0.001789, -0.008239, 0.026372, -0.013797, 0.003339, 0.029653, 0.002900, -0.032622, - 0.005406, 0.021139, 0.012704, -0.015038, 0.029762, 0.047204, 0.042191, 0.056422, - -0.013436, 0.002610, -0.006362, 0.005035, -0.003358, -0.007126, -0.025813, -0.014392, - 0.034387, 0.028106, 0.005801, 0.024551, 0.021852, -0.012704, -0.038819, 0.002407, - 0.007413, -0.047828, 0.003064, 0.022995, 0.023642, -0.003316, -0.017299, -0.030075, - 0.043215, -0.012677, 0.005608, -0.003495, 0.046338, 0.036744, -0.002679, 0.055908, - -0.012845, -0.017489, -0.000869, -0.000811, -0.005591, -0.024294, 0.014892, -0.017577, - 0.016004, 0.007333, 0.018708, 0.001380, 0.005912, -0.008736, -0.004154, 0.023287, - 0.033053, -0.023091, 0.001880, 0.063212, 0.028497, -0.002234, -0.020518, -0.003302, - -0.021405, 0.001612, 0.022025, 0.011906, 0.015854, 0.012004, 0.040879, 0.005756, - 0.025532, 0.028600, 0.003892, -0.009040, 0.007695, 0.006575, 0.015432, -0.016912, - -0.027927, -0.038110, -0.008558, 0.007416, -0.031753, 0.000222, -0.040530, -0.022088, - 0.003707, 0.034230, -0.011328, 0.033776, -0.043760, -0.009225, 0.029074, -0.011143, - -0.010933, -0.002843, -0.006318, -0.014423, -0.014901, 0.014145, 0.025907, 0.013068, - 0.013553, 0.012649, 0.012462, 0.021217, -0.005756, -0.035761, 0.017153, -0.007327, - -0.019032, -0.021849, 0.011449, 0.006722, -0.006882, -0.033538, -0.018829, 0.034018, - 0.011571, -0.011669, -0.005867, 0.019499, 0.011645, -0.013925, 0.006023, -0.057261, - 0.009139, 0.026217, -0.011675, -0.050890, -0.043001, 0.000663, 0.012765, 0.023600, - -0.026475, 0.001624, -0.018389, -0.032695, -0.003396, -0.020810, 0.014084, -0.003991, - 0.012806, 0.022907, 0.044233, -0.023612, -0.040727, -0.029642, 0.023392, 0.029432, - 0.010758, 0.063877, 0.053704, -0.025424, 0.016472, -0.045267, -0.001827, 0.019653, - 0.020154, 0.059441, 0.017961, -0.017119, 0.006805, -0.051747, 0.045698, -0.003164, - 0.008321, -0.061976, -0.007441, -0.002559, 0.036592, -0.045740, -0.064089, 0.013283, - -0.061579, 0.008055, 0.027092, -0.021110, 0.023286, 0.023398, 0.010402, -0.010639, - 0.009742, 0.029602, 0.021918, -0.023055, 0.048176, 0.013008, -0.035577, -0.008189, - 0.000153, 0.016447, 0.029365, -0.025935, 0.002813, 0.007626, -0.019985, 0.012518, - 0.022659, -0.015555, 0.030342, 0.046080, 0.018834, 0.034462, 0.010342, -0.004826, - 0.032871, -0.049404, -0.020953, 0.002104, 0.002491, -0.009485, -0.012530, -0.002238, - 0.032497, 0.002971, -0.003615, -0.009400, -0.021315, 0.014233, 0.016055, 0.021873, - -0.011412, -0.029939, 0.021498, 0.027910, -0.019078, 0.024269, -0.054514, 0.033241, - -0.027590, -0.008245, -0.014707, -0.010927, -0.033036, 0.028156, 0.035228, -0.019348, - -0.031165, -0.007812, -0.014553, -0.009645, -0.005535, 0.054686, 0.016289, -0.062422, - 0.038028, -0.038393, 0.016496, -0.022600, -0.002472, 0.008046, 0.025385, -0.010149, - 0.041169, -0.021015, -0.027685, -0.012383, -0.015871, -0.018460, 0.023982, -0.010902, - 0.048055, 0.031741, -0.014826, 0.058232, -0.015786, 0.030496, 0.022379, -0.081614, - -0.007364, -0.012957, -0.001309, 0.076955, 0.012220, 0.009517, 0.079565, 0.012248, - -0.027038, -0.026298, -0.022356, -0.012709, -0.004319, -0.013780, -0.030794, -0.017456, - 0.010386, 0.033274, 0.001373, 0.004893, -0.039785, 0.000525, 0.038941, 0.042735, - 0.000461, -0.056763, -0.038205, -0.026354, -0.019836, -0.006812, -0.002383, 0.005570, - 0.016987, -0.039373, -0.040454, -0.020339, -0.021966, -0.011918, -0.039189, -0.025038, - 0.023142, -0.007530, -0.008784, -0.018869, -0.023360, -0.041719, 0.029619, -0.015242, - -0.009041, 0.003526, -0.053238, -0.065874, 0.025895, 0.030425, 0.010324, 0.012503, - 0.048245, 0.019105, -0.006557, 0.008802, -0.015039, -0.037493, -0.002958, -0.005178, - -0.003445, 0.026841, -0.027398, -0.014284, -0.007368, -0.051858, -0.028280, 0.032946, - -0.021379, 0.027230, -0.015728, -0.037763, -0.001206, -0.027379, 0.009973, 0.038223, - 0.040167, 0.059008, 0.024929, 0.021105, -0.043107, -0.028788, 0.018564, -0.018111, - 0.022887, 0.056724, -0.000702, 0.022863, 0.053520, 0.072183, 0.022290, 0.005229, - 0.016631, 0.057386, 0.023740, -0.013403, 0.014428, 0.001836, -0.006669, 0.003730, - -0.027216, 0.007839, 0.043347, 0.014635, 0.062616, -0.028053, -0.034202, 0.020567, - 0.021414, 0.013804, 0.000221, -0.043668, -0.019998, -0.020281, 0.028248, 0.036828, - 0.006377, -0.015597, -0.016745, -0.006490, -0.017308, -0.024456, 0.048708, -0.002316, - -0.005150, -0.008449, -0.024668, -0.024936, 0.013955, -0.028004, 0.004242, -0.010275, - -0.055169, 0.024814, -0.000816, -0.041222, -0.030086, 0.005109, 0.025678, -0.015112, - 0.004149, -0.009637, -0.007452, 0.005909, -0.020620, -0.014185, -0.001739, 0.022654, - -0.004307, -0.023530, -0.013212, -0.049753, -0.005769, -0.007137, -0.039489, 0.019491, - -0.007705, -0.019363, -0.015179, -0.017529, 0.049011, 0.012967, 0.029781, -0.004910, - 0.003033, 0.013406, -0.006731, -0.022843, -0.000466, -0.016223, -0.042759, -0.008389, - -0.030897, 0.009579, 0.003036, 0.042495, 0.017748, 0.041216, 0.015006, 0.016631, - 0.010269, 0.003315, 0.031450, 0.036676, 0.005546, 0.006715, 0.013051, 0.005650, - 0.024487, 0.000067, -0.018222, 0.016394, -0.002650, 0.003719, -0.016407, -0.020799, - 0.035006, 0.038203, -0.016207, 0.033939, 0.005888, 0.022949, 0.028238, -0.020094, - 0.035842, 0.038132, 0.011246, 0.004324, 0.000583, -0.034723, -0.007670, 0.003935, - 0.020959, -0.013870, 0.017257, 0.025297, 0.028248, -0.012484, 0.024545, 0.004876, - 0.004533, -0.030365, 0.005539, -0.038143, -0.027120, -0.020620, 0.005451, -0.017145, - 0.005113, -0.021268, 0.003530, 0.037651, 0.039806, 0.013328, -0.005104, -0.039401, - 0.034880, -0.033333, 0.012003, 0.046551, -0.013186, 0.001548, 0.040315, 0.008344, - 0.052015, 0.022869, 0.040227, 0.029902, 0.020552, 0.049500, 0.025615, 0.041367, - 0.028468, -0.000220, -0.004193, -0.003445, -0.016045, 0.012671, 0.070789, -0.009969, - 0.014815, -0.018633, -0.016288, -0.012663, -0.005998, 0.004769, -0.030652, 0.000851, - -0.018000, -0.015321, 0.004044, 0.031068, 0.016467, 0.010887, -0.023030, -0.033097, - 0.035288, -0.015662, -0.023326, 0.000700, 0.033275, 0.007255, -0.016558, 0.044915, - 0.034623, 0.010375, 0.028654, 0.011832, -0.039285, 0.020609, 0.041331, 0.019405, - -0.012680, 0.015828, -0.010064, -0.018518, -0.023548, -0.019529, 0.053987, 0.033032, - 0.023098, -0.003290, -0.011557, 0.012370, 0.010736, 0.024772, -0.013798, -0.000572, - -0.045100, 0.006654, -0.014039, 0.036018, 0.014971, 0.029998, 0.031627, 0.003826, - -0.037750, 0.012845, -0.033434, 0.011402, 0.049346, 0.015225, -0.006489, -0.003506, - 0.013325, 0.029406, -0.038159, -0.016350, -0.056157, -0.027320, 0.033407, -0.061915, - -0.056116, -0.019186, 0.013215, -0.001725, -0.034396, -0.085786, -0.057076, -0.021760, - -0.034366, 0.024833, -0.024737, 0.018911, 0.006657, 0.003939, -0.041861, 0.003772, - -0.057294, 0.017297, -0.001943, -0.025488, 0.003809, -0.032496, 0.010213, 0.040211, - -0.044909, -0.004123, -0.007577, -0.045177, 0.029253, -0.004262, -0.021820, -0.001536, - -0.018522, -0.052593, -0.046539, 0.006641, -0.002763, 0.012591, -0.020287, -0.040198, - -0.003323, -0.027208, 0.019852, -0.015024, -0.057231, -0.038650, -0.035792, -0.057008, - -0.021257, -0.022593, 0.003263, 0.045806, 0.008347, -0.006508, 0.007900, -0.012836, - -0.042695, -0.017599, -0.025922, 0.004232, -0.011635, -0.018028, 0.004966, -0.051137, - -0.025172, 0.021343, -0.017085, -0.024599, 0.003239, 0.000952, -0.019548, -0.018309, - -0.049227, -0.010315, 0.038017, 0.003829, -0.020485, 0.008247, 0.006205, -0.005725, - 0.056619, 0.039458, 0.013739, -0.025243, -0.045167, -0.024794, -0.001734, -0.020957, - 0.020803, -0.001180, -0.023424, 0.034733, 0.053866, -0.025464, -0.006746, 0.012014, - -0.015050, 0.015191, -0.015552, 0.027060, -0.001640, 0.035013, 0.045763, -0.006889, - 0.013961, 0.005987, 0.044525, 0.035718, 0.016137, 0.009231, 0.040465, 0.025759, - -0.001299, 0.003312, -0.017563, -0.000967, 0.031887, 0.007014, -0.001224, 0.000759, - 0.016815, 0.055765, 0.039207, -0.005277, 0.018002, -0.038537, -0.020886, -0.000613, - 0.010669, 0.012762, 0.029306, 0.000175, 0.039344, -0.040833, -0.049802, 0.019116, - 0.016248, -0.005024, 0.014759, -0.013704, -0.020288, 0.004120, -0.002183, -0.004941, - 0.035078, -0.028333, -0.012750, -0.007591, 0.024320, -0.022683, 0.047137, 0.075649, - -0.003487, 0.004637, -0.006447, -0.017698, 0.014962, -0.035703, -0.001943, -0.050077, - -0.003542, 0.036837, -0.014037, -0.026694, -0.006700, -0.019657, -0.013002, 0.044073, - 0.036886, 0.022633, -0.026843, 0.028852, -0.014531, 0.008158, 0.008796, 0.037186, - -0.021965, 0.009173, 0.004996, -0.018889, -0.016406, 0.025130, 0.000898, 0.039740, - 0.031524, -0.020621, -0.007995, -0.045324, 0.026465, 0.011442, 0.052096, 0.032526, - 0.010253, -0.003426, -0.021714, -0.040039, -0.004392, -0.016979, -0.051311, -0.025769, - -0.022803, 0.055425, 0.013592, 0.036643, -0.012066, 0.006155, 0.046637, -0.011961, - 0.029754, 0.024563, 0.008785, 0.011723, -0.015988, 0.020471, 0.023423, 0.002534, - 0.018106, 0.014879, 0.002829, 0.006455, -0.013388, 0.016067, 0.015512, -0.033896, - -0.006657, 0.013016, 0.037187, -0.001993, -0.001901, 0.004316, 0.006882, -0.007126, - 0.019466, 0.030314, 0.000161, -0.011624, -0.003333, -0.012472, 0.000990, -0.039586, - 0.053321, 0.002207, -0.007473, -0.050860, -0.045562, -0.042989, 0.065565, -0.024057, - 0.008331, -0.012407, -0.001741, -0.075376, -0.035279, -0.033195, -0.006482, -0.015769, - -0.000287, -0.037053, 0.020601, -0.002744, -0.010932, 0.015829, -0.018076, -0.005560, - 0.038786, 0.020070, 0.023551, 0.009673, -0.031807, -0.039389, 0.011358, 0.005516, - 0.037603, 0.029407, 0.044815, 0.036289, -0.006324, 0.013516, 0.015073, -0.007735, - 0.054407, -0.031557, -0.023473, -0.010086, -0.013839, -0.042259, 0.011756, -0.003174, - -0.019964, -0.011748, 0.044465, 0.000814, -0.025106, -0.034134, -0.030595, -0.009367, - 0.010754, 0.011581, -0.000767, 0.011251, -0.044140, 0.005673, -0.052475, -0.049906, - 0.013312, 0.008188, 0.009195, -0.018794, -0.036787, 0.003538, -0.019216, 0.019707, - 0.040281, 0.048193, 0.060658, 0.039180, -0.009282, 0.006943, -0.000403, 0.017836, - 0.029198, 0.024275, -0.010067, 0.007797, 0.004541, -0.039684, 0.017931, 0.030236, - 0.041862, 0.048502, -0.011397, 0.011295, -0.008180, -0.009749, -0.008394, 0.014029, - -0.046969, -0.002199, 0.035712, 0.064126, -0.010815, 0.037003, -0.040448, -0.008995, - -0.019049, 0.003839, -0.015436, 0.051136, -0.004173, 0.009944, 0.018870, -0.022611, - -0.019414, 0.010611, -0.012690, -0.008562, -0.042688, 0.000321, 0.004736, -0.077901, - 0.005787, 0.019135, 0.016931, -0.016754, -0.028616, -0.039824, -0.038887, -0.018582, - -0.019638, -0.025944, 0.009061, 0.033364, -0.033603, -0.022525, -0.013329, 0.028016, - 0.010401, 0.042795, 0.042202, 0.050109, 0.020472, 0.020666, 0.036416, -0.026853, - -0.040620, -0.013646, 0.023129, 0.123788, 0.042910, 0.003621, 0.028863, 0.022601, - -0.028973, -0.086358, -0.046563, 0.013867, -0.007661, -0.034250, -0.045022, -0.030953, - 0.011024, 0.028413, -0.008518, -0.011281, -0.084453, -0.056053, 0.002971, -0.027038, - -0.002960, -0.017340, -0.016838, 0.046073, 0.017217, -0.000418, 0.005160, -0.010036, - -0.006259, -0.021603, -0.029518, -0.002680, -0.003285, 0.027453, 0.002178, -0.020382, - 0.017452, 0.032695, 0.010839, 0.023578, 0.035910, -0.016657, 0.055684, -0.007119, - -0.054540, 0.001595, 0.009346, -0.037227, 0.017819, 0.009852, 0.001002, 0.002328, - 0.036241, 0.019548, 0.030082, 0.015736, 0.006458, 0.010838, 0.031588, -0.004601, - 0.027539, -0.026953, -0.025399, -0.027337, -0.005816, -0.051678, -0.043778, -0.011829, - 0.011267, -0.027027, -0.011590, -0.024730, -0.039623, -0.055412, -0.023161, -0.051253, - 0.021915, -0.003337, -0.004606, -0.008113, 0.003681, -0.005639, 0.044284, 0.005096, - -0.000020, -0.005769, -0.016163, -0.022771, -0.024217, 0.036693, 0.040318, 0.003984, - 0.006594, 0.031821, 0.016023, -0.025574, -0.047576, -0.022733, 0.025769, 0.043148, - 0.023321, 0.038951, 0.005673, -0.009946, -0.063271, -0.057465, -0.070240, -0.030470, - -0.015217, 0.045819, 0.014761, 0.027477, -0.029587, -0.042253, -0.049013, -0.062088, - -0.016712, 0.039699, 0.024814, 0.041131, 0.065082, 0.007382, 0.020212, -0.000788, - -0.023143, -0.011549, -0.000151, 0.003037, 0.033417, 0.020320, 0.030163, 0.005935, - 0.019499, -0.003529, 0.002604, -0.009582, -0.007884, -0.034920, -0.034749, -0.044092, - -0.002473, -0.020964, 0.001235, 0.041716, 0.075311, 0.038155, 0.026727, -0.007938, - -0.012156, -0.035379, -0.018535, 0.009536, 0.061355, 0.036485, 0.038581, 0.025651, - 0.020305, -0.040284, -0.009184, -0.038105, -0.008333, -0.005413, 0.036044, 0.016110, - 0.035395, 0.006386, -0.018021, -0.012289, -0.022202, -0.007952, 0.001500, -0.038212, - -0.018719, -0.030195, -0.012336, -0.026181, -0.057853, -0.047671, 0.007279, 0.004027, - -0.041461, -0.032990, -0.028484, 0.005225, 0.002954, 0.031360, 0.037795, 0.059971, - -0.016019, -0.005140, -0.001924, 0.000768, -0.012613, 0.047163, 0.035761, 0.026428, - 0.015402, 0.041987, -0.004910, 0.003245, -0.002914, 0.004206, 0.003457, -0.004062, - 0.006907, 0.042389, 0.014024, 0.016496, 0.020165, 0.007562, -0.007489, -0.052993, - 5.000000, - 5.000000, 6.000000, 31.000000, - 0.080884, 0.037878, 0.033322, 0.012892, -0.017077, - 0.040204, 0.012276, 0.086089, 0.045258, -0.017224, - 0.019019, -0.033890, -0.003277, -0.010281, -0.065845, - 0.015896, -0.059444, -0.012959, 0.004842, 0.013298, - -0.004725, 0.102136, 0.091167, 0.029007, -0.077806, - 0.099592, 0.076154, 0.030933, 0.016490, 0.002916, - -0.014919, 0.002415, -0.009389, -0.064857, -0.052966, - -0.023936, 0.058525, 0.036616, -0.047694, -0.028541, - 0.000735, 0.026124, -0.011413, -0.019476, -0.031614, - -0.027337, -0.038352, 0.024975, 0.033125, -0.028453, - -0.065731, -0.044205, 0.053681, 0.008100, -0.027216, - -0.015338, 0.018038, -0.039117, -0.078005, -0.002798, - -0.034908, 0.026391, -0.043534, -0.026727, 0.015053, - -0.003470, 0.036020, -0.048085, 0.011942, -0.061184, - -0.057367, 0.053232, 0.073864, -0.013133, -0.055980, - -0.045637, -0.044424, 0.068229, 0.023310, 0.111071, - -0.017116, -0.038404, 0.057005, 0.051472, 0.034941, - -0.004217, -0.015044, -0.028838, 0.038268, -0.054926, - -0.030486, -0.013325, -0.076063, 0.021825, 0.049655, - -0.007294, 0.027748, -0.038918, 0.050608, -0.032955, - 0.047003, 0.036431, 0.092570, 0.025417, 0.039391, - -0.038705, -0.056840, 0.062170, -0.027693, 0.063781, - -0.006714, -0.050675, 0.011168, 0.009382, -0.040681, - 0.013085, 0.014806, -0.061915, -0.001633, -0.026769, - 0.035459, 0.015213, -0.006203, -0.014431, 0.023448, - 0.009293, -0.008589, 0.005098, -0.011381, -0.041281, - 0.095717, 0.011042, 0.046234, -0.020820, -0.019476, - -0.018103, -0.004995, 0.078060, 0.002514, -0.020604, - 0.018003, -0.006499, 0.006473, 0.027971, -0.009798, - 0.041682, 0.040123, -0.030098, 0.041116, -0.013895, - 0.041682, 0.040123, -0.030098, 0.041116, -0.013895, - 0.018003, -0.006499, 0.006473, 0.027971, -0.009798, - -0.018103, -0.004995, 0.078060, 0.002514, -0.020604, - 0.095717, 0.011042, 0.046234, -0.020820, -0.019476, - 0.009293, -0.008589, 0.005098, -0.011381, -0.041281, - 0.035459, 0.015213, -0.006203, -0.014431, 0.023448, - 0.013085, 0.014806, -0.061915, -0.001633, -0.026769, - -0.006714, -0.050675, 0.011168, 0.009382, -0.040681, - -0.038705, -0.056840, 0.062170, -0.027693, 0.063781, - 0.047003, 0.036431, 0.092570, 0.025417, 0.039391, - -0.007294, 0.027748, -0.038918, 0.050608, -0.032955, - -0.030486, -0.013325, -0.076063, 0.021825, 0.049655, - -0.004217, -0.015044, -0.028838, 0.038268, -0.054926, - -0.017116, -0.038404, 0.057005, 0.051472, 0.034941, - -0.045637, -0.044424, 0.068229, 0.023310, 0.111071, - -0.057367, 0.053232, 0.073864, -0.013133, -0.055980, - -0.003470, 0.036020, -0.048085, 0.011942, -0.061184, - -0.034908, 0.026391, -0.043534, -0.026727, 0.015053, - -0.015338, 0.018038, -0.039117, -0.078005, -0.002798, - -0.065731, -0.044205, 0.053681, 0.008100, -0.027216, - -0.027337, -0.038352, 0.024975, 0.033125, -0.028453, - 0.000735, 0.026124, -0.011413, -0.019476, -0.031614, - -0.023936, 0.058525, 0.036616, -0.047694, -0.028541, - -0.014919, 0.002415, -0.009389, -0.064857, -0.052966, - 0.099592, 0.076154, 0.030933, 0.016490, 0.002916, - -0.004725, 0.102136, 0.091167, 0.029007, -0.077806, - 0.015896, -0.059444, -0.012959, 0.004842, 0.013298, - 0.019019, -0.033890, -0.003277, -0.010281, -0.065845, - 0.040204, 0.012276, 0.086089, 0.045258, -0.017224, - 0.080884, 0.037878, 0.033322, 0.012892, -0.017077, - -0.028129, -0.044169, -0.053681, -0.080068, -0.000011, - -0.043310, 0.048749, -0.002105, 0.036481, 0.011063, - -0.081217, 0.041239, -0.041250, -0.013109, 0.009451, - -0.020025, -0.031678, 0.040063, 0.052351, -0.019331, - -0.024867, -0.043890, 0.052679, 0.044214, -0.044812, - 0.005892, -0.030736, -0.003230, -0.026167, -0.058686, - -0.008188, -0.032209, -0.063041, -0.041608, 0.074195, - 0.042592, 0.067528, 0.004764, 0.041991, 0.019115, - 0.027419, 0.001071, -0.025373, 0.043167, 0.027185, - -0.097465, -0.038482, -0.071506, 0.036628, 0.117993, - -0.023853, -0.018283, 0.016976, 0.024559, 0.021962, - -0.009949, -0.053475, 0.027617, -0.003803, -0.002549, - -0.047182, -0.030231, -0.024953, 0.024118, 0.071663, - -0.019111, -0.049782, -0.011395, 0.027214, 0.048259, - 0.140306, 0.070906, -0.050526, 0.013215, -0.010279, - -0.022243, -0.032798, -0.043872, 0.018602, 0.017537, - -0.034752, -0.015272, -0.021885, -0.016261, -0.016077, - -0.052604, 0.024562, 0.011688, -0.020700, 0.022588, - -0.026172, 0.018538, 0.038378, -0.015753, -0.001130, - -0.046231, -0.037858, -0.005501, 0.029271, 0.015631, - 0.104464, 0.024119, -0.028040, -0.052956, -0.015750, - 0.017862, 0.055269, 0.013654, -0.048636, -0.019805, - -0.018154, -0.011478, -0.027047, -0.043059, -0.003785, - 0.047084, 0.066795, 0.021454, -0.036487, 0.018210, - 0.047084, 0.066795, 0.021454, -0.036487, 0.018210, - -0.018154, -0.011478, -0.027047, -0.043059, -0.003785, - 0.017862, 0.055269, 0.013654, -0.048636, -0.019805, - 0.104464, 0.024119, -0.028040, -0.052956, -0.015750, - -0.046231, -0.037858, -0.005501, 0.029271, 0.015631, - -0.026172, 0.018538, 0.038378, -0.015753, -0.001130, - -0.052604, 0.024562, 0.011688, -0.020700, 0.022588, - -0.034752, -0.015272, -0.021885, -0.016261, -0.016077, - -0.022243, -0.032798, -0.043872, 0.018602, 0.017537, - 0.140306, 0.070906, -0.050526, 0.013215, -0.010279, - -0.019111, -0.049782, -0.011395, 0.027214, 0.048259, - -0.047182, -0.030231, -0.024953, 0.024118, 0.071663, - -0.009949, -0.053475, 0.027617, -0.003803, -0.002549, - -0.023853, -0.018283, 0.016976, 0.024559, 0.021962, - -0.097465, -0.038482, -0.071506, 0.036628, 0.117993, - 0.027419, 0.001071, -0.025373, 0.043167, 0.027185, - 0.042592, 0.067528, 0.004764, 0.041991, 0.019115, - -0.008188, -0.032209, -0.063041, -0.041608, 0.074195, - 0.005892, -0.030736, -0.003230, -0.026167, -0.058686, - -0.024867, -0.043890, 0.052679, 0.044214, -0.044812, - -0.020025, -0.031678, 0.040063, 0.052351, -0.019331, - -0.081217, 0.041239, -0.041250, -0.013109, 0.009451, - -0.043310, 0.048749, -0.002105, 0.036481, 0.011063, - -0.028129, -0.044169, -0.053681, -0.080068, -0.000011, - 0.098624, -0.009360, -0.021967, -0.048468, 0.009535, - -0.007977, 0.141625, 0.149399, 0.053292, -0.059662, - -0.004383, -0.038744, 0.048962, -0.005189, -0.033578, - -0.004383, -0.038744, 0.048962, -0.005189, -0.033578, - -0.007977, 0.141625, 0.149399, 0.053292, -0.059662, - 0.098624, -0.009360, -0.021967, -0.048468, 0.009535, - -0.006730, -0.021987, -0.025472, -0.087024, 0.024070, - -0.010087, 0.118400, 0.095733, 0.028685, 0.014821, - -0.049468, 0.054109, -0.007012, -0.028281, -0.023773, - -0.031748, -0.076598, 0.036074, 0.094816, -0.012716, - -0.056508, -0.034942, 0.114309, 0.071747, -0.038850, - -0.005120, 0.010170, 0.014553, -0.080981, -0.054515, - -0.023920, -0.005394, -0.084130, -0.018750, 0.150703, - 0.090479, 0.132717, 0.002524, 0.095633, 0.035552, - 0.020428, 0.076955, 0.030958, 0.058034, -0.014190, - -0.131762, -0.087715, -0.009947, 0.078513, 0.106427, - -0.050733, -0.057075, 0.069031, 0.093027, 0.006860, - -0.022375, -0.047834, -0.010630, 0.013764, -0.080459, - -0.037673, -0.003612, -0.067757, 0.070503, 0.084114, - 0.019487, -0.019974, 0.007372, 0.132021, 0.055375, - 0.159777, 0.091247, 0.065575, 0.044793, 0.000185, - -0.043213, -0.056137, 0.036840, 0.011254, 0.024317, - -0.041733, -0.055192, 0.009598, 0.015053, -0.061090, - -0.003941, 0.041190, -0.036332, -0.025683, -0.016063, - 0.024024, 0.025225, 0.013948, 0.026512, 0.017011, - -0.031305, -0.025760, 0.042481, 0.062727, -0.019917, - 0.143409, -0.010770, 0.054589, -0.018871, -0.003741, - 0.022143, 0.006388, 0.092925, 0.012610, 0.023232, - -0.057580, -0.050213, 0.027932, 0.009355, -0.039829, - 0.049391, 0.057353, 0.063220, 0.033246, -0.020246, - 0.049391, 0.057353, 0.063220, 0.033246, -0.020246, - -0.057580, -0.050213, 0.027932, 0.009355, -0.039829, - 0.022143, 0.006388, 0.092925, 0.012610, 0.023232, - 0.143409, -0.010770, 0.054589, -0.018871, -0.003741, - -0.031305, -0.025760, 0.042481, 0.062727, -0.019917, - 0.024024, 0.025225, 0.013948, 0.026512, 0.017011, - -0.003941, 0.041190, -0.036332, -0.025683, -0.016063, - -0.041733, -0.055192, 0.009598, 0.015053, -0.061090, - -0.043213, -0.056137, 0.036840, 0.011254, 0.024317, - 0.159777, 0.091247, 0.065575, 0.044793, 0.000185, - 0.019487, -0.019974, 0.007372, 0.132021, 0.055375, - -0.037673, -0.003612, -0.067757, 0.070503, 0.084114, - -0.022375, -0.047834, -0.010630, 0.013764, -0.080459, - -0.050733, -0.057075, 0.069031, 0.093027, 0.006860, - -0.131762, -0.087715, -0.009947, 0.078513, 0.106427, - 0.020428, 0.076955, 0.030958, 0.058034, -0.014190, - 0.090479, 0.132717, 0.002524, 0.095633, 0.035552, - -0.023920, -0.005394, -0.084130, -0.018750, 0.150703, - -0.005120, 0.010170, 0.014553, -0.080981, -0.054515, - -0.056508, -0.034942, 0.114309, 0.071747, -0.038850, - -0.031748, -0.076598, 0.036074, 0.094816, -0.012716, - -0.049468, 0.054109, -0.007012, -0.028281, -0.023773, - -0.010087, 0.118400, 0.095733, 0.028685, 0.014821, - -0.006730, -0.021987, -0.025472, -0.087024, 0.024070, - -0.040949, -0.017663, -0.076979, -0.065986, 0.031372, - -0.073099, -0.002882, 0.028029, 0.043344, 0.039721, - -0.006916, 0.005708, 0.054644, 0.003362, 0.019681, - -0.021002, -0.006709, 0.009095, -0.019443, 0.036933, - -0.023240, 0.023269, 0.037106, 0.021985, -0.039069, - 0.044367, 0.058379, 0.012713, -0.045342, -0.009442, - -0.001984, -0.028287, -0.079441, -0.048652, -0.026717, - -0.028658, -0.028739, 0.013976, 0.048421, -0.054510, - 0.015733, 0.003676, 0.038316, 0.044971, 0.006355, - 0.040620, -0.012796, -0.002304, -0.006703, -0.009904, - 0.016964, 0.021573, 0.046649, 0.036662, -0.064175, - 0.022885, 0.044952, 0.013284, 0.039523, 0.026906, - 0.044367, 0.058379, 0.012713, -0.045342, -0.009442, - -0.023240, 0.023269, 0.037106, 0.021985, -0.039069, - -0.021002, -0.006709, 0.009095, -0.019443, 0.036933, - -0.006916, 0.005708, 0.054644, 0.003362, 0.019681, - -0.073099, -0.002882, 0.028029, 0.043344, 0.039721, - -0.040949, -0.017663, -0.076979, -0.065986, 0.031372, - 0.022885, 0.044952, 0.013284, 0.039523, 0.026906, - 0.016964, 0.021573, 0.046649, 0.036662, -0.064175, - 0.040620, -0.012796, -0.002304, -0.006703, -0.009904, - 0.015733, 0.003676, 0.038316, 0.044971, 0.006355, - -0.028658, -0.028739, 0.013976, 0.048421, -0.054510, - -0.001984, -0.028287, -0.079441, -0.048652, -0.026717, - 0.000000, - 5.000000, 6.000000, 31.000000, - -0.056995, -0.053734, -0.005650, 0.010924, -0.028735, - -0.020039, -0.010019, -0.037020, 0.011462, -0.031259, - -0.009524, 0.004141, -0.026814, 0.059949, 0.015360, - -0.029441, 0.066522, 0.059977, 0.039246, -0.023590, - -0.042448, 0.012256, 0.067164, 0.011034, -0.048775, - 0.018555, -0.028037, -0.040237, -0.019550, 0.016942, - -0.089189, -0.072370, -0.088681, -0.046311, -0.069614, - 0.057738, 0.017416, 0.041058, 0.021678, -0.040711, - -0.055065, 0.016373, -0.031754, -0.024092, -0.048660, - -0.035697, -0.019234, 0.035145, 0.052327, -0.026185, - 0.046951, 0.055031, 0.058642, 0.009896, 0.003397, - 0.006081, -0.009580, -0.045472, -0.001904, -0.061816, - -0.057369, -0.024286, 0.003357, -0.046316, -0.086517, - -0.046447, -0.002158, 0.031327, 0.047333, -0.042734, - 0.001057, 0.039482, 0.012893, 0.031180, -0.022322, - 0.006297, -0.053485, 0.000077, 0.042010, 0.012794, - 0.064063, 0.004710, 0.010524, -0.000563, 0.028567, - 0.041798, -0.024969, 0.009722, 0.003849, 0.001616, - 0.033999, 0.015412, -0.005743, -0.032341, -0.065754, - 0.010522, 0.043499, 0.013860, -0.028551, -0.031026, - -0.008637, -0.036344, -0.009193, 0.011340, -0.033058, - -0.059731, -0.043931, 0.039749, -0.009468, 0.001185, - 0.024237, 0.009207, -0.014400, 0.022585, 0.089861, - 0.001343, 0.000520, 0.020645, 0.023058, 0.038938, - 0.046945, -0.002291, 0.051688, 0.046372, -0.001774, - 0.028082, 0.004262, -0.009907, 0.039678, 0.082928, - -0.038869, -0.048832, -0.003269, 0.025120, 0.090437, - 0.016927, -0.039694, 0.055900, 0.044534, 0.138300, - 0.034194, 0.028615, 0.029665, 0.036190, 0.150991, - -0.003825, 0.010255, 0.043171, 0.014698, 0.077028, - -0.003825, 0.010255, 0.043171, 0.014698, 0.077028, - 0.034194, 0.028615, 0.029665, 0.036190, 0.150991, - 0.016927, -0.039694, 0.055900, 0.044534, 0.138300, - -0.038869, -0.048832, -0.003269, 0.025120, 0.090437, - 0.028082, 0.004262, -0.009907, 0.039678, 0.082928, - 0.046945, -0.002291, 0.051688, 0.046372, -0.001774, - 0.001343, 0.000520, 0.020645, 0.023058, 0.038938, - 0.024237, 0.009207, -0.014400, 0.022585, 0.089861, - -0.059731, -0.043931, 0.039749, -0.009468, 0.001185, - -0.008637, -0.036344, -0.009193, 0.011340, -0.033058, - 0.010522, 0.043499, 0.013860, -0.028551, -0.031026, - 0.033999, 0.015412, -0.005743, -0.032341, -0.065754, - 0.041798, -0.024969, 0.009722, 0.003849, 0.001616, - 0.064063, 0.004710, 0.010524, -0.000563, 0.028567, - 0.006297, -0.053485, 0.000077, 0.042010, 0.012794, - 0.001057, 0.039482, 0.012893, 0.031180, -0.022322, - -0.046447, -0.002158, 0.031327, 0.047333, -0.042734, - -0.057369, -0.024286, 0.003357, -0.046316, -0.086517, - 0.006081, -0.009580, -0.045472, -0.001904, -0.061816, - 0.046951, 0.055031, 0.058642, 0.009896, 0.003397, - -0.035697, -0.019234, 0.035145, 0.052327, -0.026185, - -0.055065, 0.016373, -0.031754, -0.024092, -0.048660, - 0.057738, 0.017416, 0.041058, 0.021678, -0.040711, - -0.089189, -0.072370, -0.088681, -0.046311, -0.069614, - 0.018555, -0.028037, -0.040237, -0.019550, 0.016942, - -0.042448, 0.012256, 0.067164, 0.011034, -0.048775, - -0.029441, 0.066522, 0.059977, 0.039246, -0.023590, - -0.009524, 0.004141, -0.026814, 0.059949, 0.015360, - -0.020039, -0.010019, -0.037020, 0.011462, -0.031259, - -0.056995, -0.053734, -0.005650, 0.010924, -0.028735, - -0.065309, -0.024762, -0.065084, -0.005815, -0.008833, - -0.030634, -0.046448, 0.011119, 0.066184, -0.006031, - 0.049781, 0.025659, 0.054137, 0.013020, -0.007842, - 0.056692, -0.005177, -0.010128, 0.036193, -0.039270, - -0.029393, -0.012491, -0.009518, 0.030652, -0.041787, - -0.029290, -0.031210, -0.002967, -0.037809, -0.019240, - 0.019728, -0.001514, 0.026728, 0.038303, -0.044830, - 0.000247, 0.058019, 0.085419, 0.079706, -0.032052, - 0.025704, -0.007184, -0.012050, 0.029579, -0.004820, - 0.007645, -0.005672, -0.066028, 0.016607, 0.013169, - -0.022319, -0.023180, -0.019621, 0.023092, -0.030731, - -0.038577, 0.000027, -0.024082, 0.007155, -0.075163, - -0.039218, 0.044860, 0.035410, 0.061526, 0.058571, - -0.039822, -0.017445, 0.027649, 0.078714, -0.000596, - -0.022815, -0.020924, -0.031299, 0.036525, 0.044262, - -0.006947, -0.009575, 0.043010, 0.060431, 0.037114, - -0.000916, -0.012839, -0.002925, 0.011087, -0.018391, - 0.004232, -0.023509, 0.017602, 0.005156, -0.008111, - 0.026106, 0.001610, 0.003772, 0.012904, 0.000509, - 0.020129, 0.011115, 0.008688, 0.041743, 0.009362, - -0.006748, -0.041507, -0.009612, 0.061076, 0.020972, - 0.004366, -0.072242, -0.005221, 0.002309, 0.019372, - -0.008098, -0.041328, -0.033077, 0.001388, -0.034341, - 0.037904, -0.012032, 0.007037, -0.025828, -0.055697, - 0.037904, -0.012032, 0.007037, -0.025828, -0.055697, - -0.008098, -0.041328, -0.033077, 0.001388, -0.034341, - 0.004366, -0.072242, -0.005221, 0.002309, 0.019372, - -0.006748, -0.041507, -0.009612, 0.061076, 0.020972, - 0.020129, 0.011115, 0.008688, 0.041743, 0.009362, - 0.026106, 0.001610, 0.003772, 0.012904, 0.000509, - 0.004232, -0.023509, 0.017602, 0.005156, -0.008111, - -0.000916, -0.012839, -0.002925, 0.011087, -0.018391, - -0.006947, -0.009575, 0.043010, 0.060431, 0.037114, - -0.022815, -0.020924, -0.031299, 0.036525, 0.044262, - -0.039822, -0.017445, 0.027649, 0.078714, -0.000596, - -0.039218, 0.044860, 0.035410, 0.061526, 0.058571, - -0.038577, 0.000027, -0.024082, 0.007155, -0.075163, - -0.022319, -0.023180, -0.019621, 0.023092, -0.030731, - 0.007645, -0.005672, -0.066028, 0.016607, 0.013169, - 0.025704, -0.007184, -0.012050, 0.029579, -0.004820, - 0.000247, 0.058019, 0.085419, 0.079706, -0.032052, - 0.019728, -0.001514, 0.026728, 0.038303, -0.044830, - -0.029290, -0.031210, -0.002967, -0.037809, -0.019240, - -0.029393, -0.012491, -0.009518, 0.030652, -0.041787, - 0.056692, -0.005177, -0.010128, 0.036193, -0.039270, - 0.049781, 0.025659, 0.054137, 0.013020, -0.007842, - -0.030634, -0.046448, 0.011119, 0.066184, -0.006031, - -0.065309, -0.024762, -0.065084, -0.005815, -0.008833, - 0.024901, -0.035845, -0.056965, -0.015028, -0.048689, - -0.016441, 0.061524, 0.069982, 0.029360, -0.094367, - 0.043900, 0.120650, 0.108189, 0.041318, -0.071054, - 0.043900, 0.120650, 0.108189, 0.041318, -0.071054, - -0.016441, 0.061524, 0.069982, 0.029360, -0.094367, - 0.024901, -0.035845, -0.056965, -0.015028, -0.048689, - -0.122462, -0.059568, -0.119365, -0.031776, -0.069565, - -0.003023, -0.031942, 0.053340, 0.094311, -0.054878, - 0.000885, 0.011193, 0.034844, -0.011867, -0.058327, - 0.014602, 0.001915, 0.002063, 0.056814, -0.040895, - -0.008163, 0.034622, 0.009701, 0.040990, 0.001593, - -0.032361, -0.010094, -0.048468, -0.042266, -0.059892, - -0.041576, -0.067725, -0.008655, 0.001215, -0.098394, - -0.067596, 0.004175, 0.099155, 0.062216, -0.059849, - -0.002943, 0.017295, 0.004592, 0.031337, -0.032669, - -0.003212, -0.064043, -0.046837, 0.004602, 0.017443, - -0.006375, -0.024586, -0.006296, 0.006706, -0.000163, - -0.038685, -0.025452, -0.032262, 0.000507, -0.048646, - -0.027787, 0.045274, -0.005781, 0.000057, -0.012352, - -0.034474, 0.007974, 0.042431, 0.023192, -0.022988, - -0.050335, -0.053746, -0.033595, 0.025694, -0.017176, - -0.070321, -0.065606, 0.046213, 0.005391, 0.005485, - 0.002912, -0.011315, -0.014178, -0.035966, 0.068350, - -0.044520, -0.041551, 0.019491, 0.006430, 0.010558, - 0.038383, 0.010514, 0.031121, 0.019148, -0.041675, - -0.001286, 0.010961, 0.044315, 0.007000, 0.003952, - -0.049700, -0.058965, 0.020070, 0.016952, 0.023003, - 0.029891, -0.095857, 0.077794, 0.012187, 0.081088, - 0.002960, -0.005716, -0.017828, 0.003755, 0.078959, - -0.007157, -0.016534, 0.006739, -0.010589, 0.024416, - -0.007157, -0.016534, 0.006739, -0.010589, 0.024416, - 0.002960, -0.005716, -0.017828, 0.003755, 0.078959, - 0.029891, -0.095857, 0.077794, 0.012187, 0.081088, - -0.049700, -0.058965, 0.020070, 0.016952, 0.023003, - -0.001286, 0.010961, 0.044315, 0.007000, 0.003952, - 0.038383, 0.010514, 0.031121, 0.019148, -0.041675, - -0.044520, -0.041551, 0.019491, 0.006430, 0.010558, - 0.002912, -0.011315, -0.014178, -0.035966, 0.068350, - -0.070321, -0.065606, 0.046213, 0.005391, 0.005485, - -0.050335, -0.053746, -0.033595, 0.025694, -0.017176, - -0.034474, 0.007974, 0.042431, 0.023192, -0.022988, - -0.027787, 0.045274, -0.005781, 0.000057, -0.012352, - -0.038685, -0.025452, -0.032262, 0.000507, -0.048646, - -0.006375, -0.024586, -0.006296, 0.006706, -0.000163, - -0.003212, -0.064043, -0.046837, 0.004602, 0.017443, - -0.002943, 0.017295, 0.004592, 0.031337, -0.032669, - -0.067596, 0.004175, 0.099155, 0.062216, -0.059849, - -0.041576, -0.067725, -0.008655, 0.001215, -0.098394, - -0.032361, -0.010094, -0.048468, -0.042266, -0.059892, - -0.008163, 0.034622, 0.009701, 0.040990, 0.001593, - 0.014602, 0.001915, 0.002063, 0.056814, -0.040895, - 0.000885, 0.011193, 0.034844, -0.011867, -0.058327, - -0.003023, -0.031942, 0.053340, 0.094311, -0.054878, - -0.122462, -0.059568, -0.119365, -0.031776, -0.069565, - -0.023419, -0.046908, -0.051266, -0.025207, -0.031254, - 0.058255, 0.041602, -0.001727, 0.012460, -0.005945, - 0.014914, -0.029640, -0.034171, 0.027939, 0.047721, - -0.031611, -0.034862, -0.054435, 0.050838, 0.069634, - -0.020598, -0.013856, 0.003934, 0.122266, 0.069489, - 0.051397, 0.016728, 0.036732, 0.100595, 0.022130, - -0.039480, -0.072541, -0.029791, -0.087338, -0.113157, - 0.040750, 0.052105, 0.093000, 0.035779, -0.067971, - 0.000024, -0.012047, 0.071351, 0.085947, -0.031048, - -0.032827, -0.042068, 0.062284, 0.084122, 0.001948, - -0.056700, -0.042978, 0.026718, 0.066754, 0.007572, - -0.055946, -0.008346, 0.016615, 0.015756, -0.034449, - 0.051397, 0.016728, 0.036732, 0.100595, 0.022130, - -0.020598, -0.013856, 0.003934, 0.122266, 0.069489, - -0.031611, -0.034862, -0.054435, 0.050838, 0.069634, - 0.014914, -0.029640, -0.034171, 0.027939, 0.047721, - 0.058255, 0.041602, -0.001727, 0.012460, -0.005945, - -0.023419, -0.046908, -0.051266, -0.025207, -0.031254, - -0.055946, -0.008346, 0.016615, 0.015756, -0.034449, - -0.056700, -0.042978, 0.026718, 0.066754, 0.007572, - -0.032827, -0.042068, 0.062284, 0.084122, 0.001948, - 0.000024, -0.012047, 0.071351, 0.085947, -0.031048, - 0.040750, 0.052105, 0.093000, 0.035779, -0.067971, - -0.039480, -0.072541, -0.029791, -0.087338, -0.113157, - 0.000000, - 8.000000, 4.000000, 31.000000, - 0.036554, 0.003777, 0.029225, 0.014653, -0.007961, 0.006549, 0.066627, -0.005774, - -0.000281, -0.027000, -0.014857, -0.027593, -0.001196, 0.011852, 0.027820, -0.018892, - -0.080537, -0.032436, 0.033387, -0.018797, -0.009110, -0.004047, -0.032062, -0.035725, - -0.040917, -0.031719, -0.023281, -0.039315, -0.020676, -0.040274, -0.022670, 0.007064, - 0.022625, 0.064583, 0.052829, 0.028693, -0.021323, -0.010077, -0.034641, -0.040991, - 0.004120, 0.070149, 0.003763, -0.013729, -0.019346, -0.014485, 0.037650, 0.035659, - -0.109869, -0.053789, -0.020580, 0.032229, -0.015063, -0.001319, -0.016979, -0.065840, - -0.023080, -0.049995, 0.029079, 0.007719, -0.017353, -0.061659, -0.024865, 0.050636, - 0.021009, -0.028223, -0.024013, -0.028860, 0.008151, 0.095266, 0.059017, 0.038552, - 0.095437, 0.019330, -0.025666, -0.005958, 0.046595, 0.025087, 0.003923, 0.002408, - 0.048759, -0.052548, 0.002040, 0.075153, 0.023785, 0.033977, -0.032295, -0.008205, - -0.036552, -0.031644, 0.034468, 0.097613, 0.000644, 0.006833, 0.024094, -0.031473, - -0.020493, -0.100214, -0.005994, -0.016823, 0.018060, 0.009466, 0.055723, 0.002230, - 0.008728, -0.093546, -0.057696, -0.009955, 0.049190, 0.008401, 0.038773, 0.031910, - 0.029266, -0.088868, -0.012989, 0.009352, 0.039247, -0.010879, 0.009273, 0.015362, - 0.013145, -0.098581, -0.021289, -0.035818, 0.059227, 0.066632, 0.014278, 0.000976, - 0.004396, 0.063601, 0.068744, 0.052836, 0.031237, -0.030265, 0.032440, 0.036073, - 0.021434, -0.012371, -0.046572, -0.052199, 0.043635, -0.033496, -0.015281, -0.020737, - 0.024166, -0.101275, -0.042214, -0.015772, -0.001126, -0.065703, -0.050145, -0.057756, - -0.014631, -0.081717, 0.023365, -0.078880, -0.037433, 0.004340, 0.025686, -0.043663, - 0.107834, 0.086092, 0.099453, 0.047555, 0.049324, 0.022699, -0.030282, 0.039579, - 0.013800, 0.025117, 0.012036, -0.035222, -0.029191, 0.063018, 0.011592, 0.029426, - -0.040088, -0.109946, -0.082067, -0.042024, -0.037944, 0.035785, 0.046817, -0.047793, - -0.040030, -0.079334, 0.056095, 0.004803, 0.015795, 0.022575, 0.046387, -0.066473, - -0.023528, -0.017530, -0.025355, -0.002221, -0.047500, 0.025397, -0.017366, 0.023639, - -0.016178, 0.014537, 0.020538, -0.014889, -0.014371, 0.018914, 0.035698, 0.074462, - -0.046391, -0.056056, -0.022316, 0.019811, -0.001237, 0.070276, 0.042058, 0.026878, - 0.041260, -0.027039, -0.050831, 0.041011, 0.040243, 0.028524, -0.030184, 0.010395, - -0.013561, -0.041815, 0.009552, 0.037153, 0.007481, 0.036189, 0.028625, 0.033634, - -0.026921, -0.029052, 0.002419, 0.041366, -0.007418, 0.089831, 0.042929, 0.048628, - -0.005188, -0.013454, -0.019008, 0.036447, 0.041809, 0.019439, 0.001342, 0.007794, - 0.052279, 0.030538, 0.007823, 0.051337, 0.036402, -0.013564, 0.017056, -0.024268, - -0.012937, -0.048885, -0.002427, 0.056783, -0.022967, 0.047752, -0.023847, -0.051180, - -0.043766, 0.023362, 0.014172, 0.029029, 0.015989, -0.032087, -0.014514, 0.002123, - 0.048053, 0.000462, -0.017763, -0.057549, -0.050864, -0.011916, -0.042450, -0.020171, - 0.003288, -0.026352, -0.014247, 0.006923, 0.018687, -0.002891, -0.032403, -0.023111, - 0.021049, -0.010170, 0.011367, 0.017202, 0.000886, 0.077433, 0.009003, -0.040177, - -0.028906, -0.026090, -0.068224, 0.017642, -0.035733, 0.019104, 0.041570, 0.069400, - 0.021704, 0.014455, 0.002292, -0.030540, -0.046054, -0.003200, -0.041835, -0.007277, - 0.029490, 0.020317, 0.036180, -0.012929, -0.059798, -0.032039, -0.025376, -0.010041, - -0.023307, -0.012761, -0.065358, -0.038631, -0.001946, -0.008232, -0.070097, -0.061869, - -0.004409, 0.058513, -0.015309, 0.047592, 0.051637, 0.010620, 0.066353, 0.052263, - 0.019097, 0.005044, 0.016260, 0.006171, 0.040149, -0.001911, -0.008767, -0.028808, - -0.028872, -0.022006, 0.036110, -0.027943, -0.042660, -0.042974, -0.061683, 0.011215, - -0.032984, -0.077166, -0.016428, -0.013850, 0.013722, 0.020432, -0.002864, -0.030276, - 0.080364, 0.000878, -0.043886, 0.063451, 0.037177, 0.054943, 0.083112, 0.070387, - 0.024813, -0.081043, -0.048140, 0.032556, 0.030770, -0.033379, -0.022762, -0.036499, - 0.023775, -0.005483, -0.017821, 0.001225, -0.000390, -0.047293, -0.041399, 0.034734, - -0.039038, -0.048436, -0.026761, -0.048363, -0.025118, 0.069535, 0.053703, -0.018099, - 0.053173, -0.056895, 0.028198, 0.014525, 0.011387, 0.029675, -0.009683, 0.022087, - 0.085567, 0.004030, -0.022693, -0.034049, 0.021955, 0.001784, -0.011416, 0.002571, - -0.001252, -0.008682, -0.022525, 0.034360, 0.017444, -0.005534, -0.013147, 0.052814, - 0.027922, 0.030485, 0.006814, 0.021547, -0.013108, -0.001922, 0.028493, -0.012675, - 0.013981, 0.007639, 0.005786, -0.032386, -0.006711, 0.014546, -0.063518, 0.014951, - 0.062343, 0.014629, 0.025329, 0.013083, 0.047492, 0.051388, -0.034813, -0.024415, - 0.003070, 0.031099, 0.037847, 0.057118, 0.001414, 0.003153, 0.012152, 0.011587, - 0.024812, 0.055345, 0.003374, 0.043941, -0.023583, 0.007614, 0.077141, 0.037474, - -0.053339, -0.015497, -0.027874, -0.001882, 0.011169, 0.000533, -0.049169, -0.029641, - -0.015377, 0.006546, -0.023563, -0.023981, -0.044666, 0.098085, -0.040962, -0.039744, - 0.029099, 0.015653, 0.021784, 0.004392, 0.008394, 0.076247, -0.028782, -0.028052, - -0.061900, -0.034729, 0.017740, 0.003882, -0.033385, -0.012586, 0.001621, 0.072994, - -0.036178, 0.001756, -0.001121, 0.003359, 0.044937, 0.060939, -0.021130, -0.027371, - 0.012853, -0.014144, -0.037971, -0.005492, -0.018774, 0.025140, -0.011241, -0.014723, - 0.003446, 0.035259, 0.022761, 0.000999, -0.018260, 0.039841, 0.041637, 0.005579, - -0.031579, -0.022090, 0.019095, -0.007635, -0.055028, -0.007820, -0.015825, -0.002595, - 0.040158, -0.000508, 0.019395, -0.027736, 0.049182, 0.037165, -0.008521, 0.045808, - -0.001409, 0.028911, 0.068132, 0.043134, 0.032879, -0.043523, 0.001766, 0.038010, - 0.094940, 0.026485, 0.026452, 0.019676, -0.007325, -0.031308, -0.026825, 0.012276, - -0.050254, -0.042090, -0.027000, -0.032491, -0.014061, 0.004080, 0.031436, -0.044791, - 0.016283, -0.004745, -0.055104, 0.029570, -0.006872, 0.021070, 0.032847, 0.018006, - -0.031659, 0.013099, 0.044081, 0.065342, -0.002704, -0.024705, -0.008149, 0.005983, - 0.001402, 0.056962, 0.044559, -0.018724, -0.050803, -0.037765, -0.023185, -0.023785, - 0.041798, 0.015536, 0.047680, 0.059137, 0.033242, 0.061415, 0.057907, -0.049782, - 0.056690, 0.098927, 0.035594, 0.090224, 0.114198, 0.079953, 0.098613, 0.113518, - -0.011335, 0.010137, 0.041884, -0.007248, -0.045202, -0.010389, -0.043769, -0.023755, - -0.006456, -0.010559, 0.006016, -0.072799, -0.090938, -0.095879, -0.032718, -0.014853, - 0.001738, 0.084818, 0.082948, 0.068886, 0.034950, 0.035929, -0.039835, -0.073616, - 0.083579, 0.240227, 0.095545, 0.072283, 0.086943, 0.047371, 0.072862, 0.049386, - -0.012229, -0.010027, -0.029424, -0.019863, -0.001099, -0.016727, -0.044370, -0.104987, - -0.021758, -0.088421, 0.017151, -0.049235, -0.050079, -0.088882, -0.082071, 0.021402, - -0.013855, -0.063725, -0.009892, -0.026696, -0.016112, 0.026860, 0.059251, -0.003481, - 0.180852, 0.065605, 0.006670, 0.055646, 0.073930, 0.033318, 0.067255, 0.041349, - 0.119678, -0.070648, -0.019398, 0.098929, 0.038699, -0.026321, -0.088710, -0.056537, - -0.003246, -0.043722, -0.043130, -0.002350, -0.045910, -0.054252, -0.013825, -0.002491, - -0.065919, -0.122879, -0.061393, -0.082483, -0.011993, 0.030089, 0.084220, -0.067146, - 0.045728, -0.121469, -0.031086, -0.013402, 0.037565, 0.010345, -0.002914, 0.002691, - 0.123781, -0.077964, -0.055074, -0.026699, 0.006711, -0.056555, -0.026694, 0.009020, - 0.018387, -0.078788, -0.039627, -0.025771, 0.032645, 0.047040, 0.006255, 0.013222, - 0.035022, 0.079090, 0.079650, 0.049394, -0.009882, 0.010384, 0.079796, 0.022378, - 0.031910, -0.019669, -0.037005, -0.062709, 0.028931, 0.010582, -0.063760, -0.008988, - 0.078487, -0.082596, -0.019059, -0.002288, 0.009339, 0.009448, -0.063724, -0.045102, - -0.027270, -0.070592, 0.022568, -0.004412, -0.052484, -0.013738, 0.102283, -0.016865, - 0.103960, 0.094563, 0.046861, 0.050814, 0.021576, 0.050363, 0.051483, 0.020626, - -0.013473, -0.010938, -0.033305, -0.021200, 0.023565, 0.087394, 0.015972, -0.004613, - -0.021293, -0.095498, -0.111906, -0.056179, -0.021076, 0.093314, 0.023161, -0.037356, - 0.005841, -0.046958, 0.031820, 0.001110, -0.001804, 0.077609, 0.053106, -0.061559, - -0.061693, -0.048003, -0.026282, 0.005595, -0.081761, -0.005728, -0.019482, 0.043831, - -0.045662, 0.003519, -0.009390, -0.032505, 0.003727, 0.034058, 0.018740, 0.006788, - -0.022831, -0.056404, -0.041809, 0.007511, -0.004960, 0.032234, -0.002879, -0.006334, - 0.028527, 0.013498, -0.024352, -0.008792, -0.020932, 0.027336, 0.007435, -0.034101, - -0.048174, -0.044342, 0.003465, -0.002648, -0.065476, -0.004470, -0.023008, -0.037148, - -0.003812, -0.042595, -0.006097, 0.001593, 0.028053, 0.100385, -0.003399, 0.048565, - -0.008727, -0.004277, -0.005775, 0.020278, 0.042252, -0.017345, -0.035931, 0.001196, - 0.054535, -0.007490, 0.010059, -0.017211, -0.037070, -0.056338, -0.012463, -0.027512, - -0.048526, -0.053108, -0.027171, -0.000620, -0.027876, -0.013333, 0.008008, -0.084753, - -0.010047, 0.013508, -0.032658, 0.042550, 0.041943, 0.010221, 0.046194, 0.026261, - 0.005096, -0.016828, -0.020704, 0.013061, -0.034935, -0.033411, -0.052798, 0.011478, - 0.008875, 0.016810, 0.026855, -0.019706, -0.019060, -0.023427, -0.048142, -0.013366, - -0.078309, -0.063328, -0.010359, 0.023949, -0.018065, 0.000055, -0.006923, -0.047894, - 0.034123, 0.047009, 0.025593, 0.066234, 0.063401, 0.059755, 0.051457, 0.070262, - 0.077550, 0.007559, 0.019854, 0.063556, 0.031673, 0.068075, 0.051269, 0.017486, - 0.065568, -0.004298, 0.018795, 0.025729, 0.005398, 0.036892, 0.042594, -0.005537, - -0.043569, -0.051591, 0.001129, 0.003319, -0.045530, 0.018322, -0.033283, -0.054719, - 0.002188, -0.000776, 0.011989, 0.047543, 0.085245, 0.109187, 0.044968, 0.069626, - -0.019169, -0.056859, 0.031995, 0.050979, 0.069461, 0.066663, 0.004946, 0.034565, - -0.026738, -0.050844, 0.021810, 0.015014, 0.024321, 0.004038, -0.022594, 0.059167, - 0.016226, 0.000039, 0.000849, 0.030181, 0.026724, 0.088602, 0.114290, 0.053264, - -0.008996, -0.038984, -0.091328, -0.043653, 0.001649, 0.009334, 0.022134, 0.041656, - -0.010983, -0.084786, -0.057426, -0.034726, -0.039950, -0.052714, -0.085157, -0.079162, - 0.050547, 0.003309, 0.039797, 0.005171, -0.056042, -0.036123, -0.010933, -0.042168, - 0.085203, 0.029922, 0.067239, 0.006365, -0.027768, 0.058723, 0.043251, 0.037917, - 0.037502, -0.028190, -0.064105, -0.058346, -0.037130, 0.003510, -0.005209, 0.016856, - -0.025665, -0.109337, -0.068801, -0.030277, -0.037357, -0.018248, -0.090141, -0.109764, - -0.037589, -0.064244, 0.026384, 0.007622, -0.000288, -0.036465, -0.079414, -0.036724, - 10.000000, - 8.000000, 4.000000, 31.000000, - 0.029490, 0.020317, 0.036180, -0.012929, -0.059798, -0.032039, -0.025376, -0.010041, - 0.021704, 0.014455, 0.002292, -0.030540, -0.046054, -0.003200, -0.041835, -0.007277, - -0.028906, -0.026090, -0.068224, 0.017642, -0.035733, 0.019104, 0.041570, 0.069400, - 0.021049, -0.010170, 0.011367, 0.017202, 0.000886, 0.077433, 0.009003, -0.040177, - 0.003288, -0.026352, -0.014247, 0.006923, 0.018687, -0.002891, -0.032403, -0.023111, - 0.048053, 0.000462, -0.017763, -0.057549, -0.050864, -0.011916, -0.042450, -0.020171, - -0.043766, 0.023362, 0.014172, 0.029029, 0.015989, -0.032087, -0.014514, 0.002123, - -0.012937, -0.048885, -0.002427, 0.056783, -0.022967, 0.047752, -0.023847, -0.051180, - 0.052279, 0.030538, 0.007823, 0.051337, 0.036402, -0.013564, 0.017056, -0.024268, - -0.005188, -0.013454, -0.019008, 0.036447, 0.041809, 0.019439, 0.001342, 0.007794, - -0.026921, -0.029052, 0.002419, 0.041366, -0.007418, 0.089831, 0.042929, 0.048628, - -0.013561, -0.041815, 0.009552, 0.037153, 0.007481, 0.036189, 0.028625, 0.033634, - 0.041260, -0.027039, -0.050831, 0.041011, 0.040243, 0.028524, -0.030184, 0.010395, - -0.046391, -0.056056, -0.022316, 0.019811, -0.001237, 0.070276, 0.042058, 0.026878, - -0.016178, 0.014537, 0.020538, -0.014889, -0.014371, 0.018914, 0.035698, 0.074462, - -0.023528, -0.017530, -0.025355, -0.002221, -0.047500, 0.025397, -0.017366, 0.023639, - -0.040030, -0.079334, 0.056095, 0.004803, 0.015795, 0.022575, 0.046387, -0.066473, - -0.040088, -0.109946, -0.082067, -0.042024, -0.037944, 0.035785, 0.046817, -0.047793, - 0.013800, 0.025117, 0.012036, -0.035222, -0.029191, 0.063018, 0.011592, 0.029426, - 0.107834, 0.086092, 0.099453, 0.047555, 0.049324, 0.022699, -0.030282, 0.039579, - -0.014631, -0.081717, 0.023365, -0.078880, -0.037433, 0.004340, 0.025686, -0.043663, - 0.024166, -0.101275, -0.042214, -0.015772, -0.001126, -0.065703, -0.050145, -0.057756, - 0.021434, -0.012371, -0.046572, -0.052199, 0.043635, -0.033496, -0.015281, -0.020737, - 0.004396, 0.063601, 0.068744, 0.052836, 0.031237, -0.030265, 0.032440, 0.036073, - 0.013145, -0.098581, -0.021289, -0.035818, 0.059227, 0.066632, 0.014278, 0.000976, - 0.029266, -0.088868, -0.012989, 0.009352, 0.039247, -0.010879, 0.009273, 0.015362, - 0.008728, -0.093546, -0.057696, -0.009955, 0.049190, 0.008401, 0.038773, 0.031910, - -0.020493, -0.100214, -0.005994, -0.016823, 0.018060, 0.009466, 0.055723, 0.002230, - -0.036552, -0.031644, 0.034468, 0.097613, 0.000644, 0.006833, 0.024094, -0.031473, - 0.048759, -0.052548, 0.002040, 0.075153, 0.023785, 0.033977, -0.032295, -0.008205, - 0.095437, 0.019330, -0.025666, -0.005958, 0.046595, 0.025087, 0.003923, 0.002408, - 0.021009, -0.028223, -0.024013, -0.028860, 0.008151, 0.095266, 0.059017, 0.038552, - -0.023080, -0.049995, 0.029079, 0.007719, -0.017353, -0.061659, -0.024865, 0.050636, - -0.109869, -0.053789, -0.020580, 0.032229, -0.015063, -0.001319, -0.016979, -0.065840, - 0.004120, 0.070149, 0.003763, -0.013729, -0.019346, -0.014485, 0.037650, 0.035659, - 0.022625, 0.064583, 0.052829, 0.028693, -0.021323, -0.010077, -0.034641, -0.040991, - -0.040917, -0.031719, -0.023281, -0.039315, -0.020676, -0.040274, -0.022670, 0.007064, - -0.080537, -0.032436, 0.033387, -0.018797, -0.009110, -0.004047, -0.032062, -0.035725, - -0.000281, -0.027000, -0.014857, -0.027593, -0.001196, 0.011852, 0.027820, -0.018892, - 0.036554, 0.003777, 0.029225, 0.014653, -0.007961, 0.006549, 0.066627, -0.005774, - 0.001402, 0.056962, 0.044559, -0.018724, -0.050803, -0.037765, -0.023185, -0.023785, - -0.031659, 0.013099, 0.044081, 0.065342, -0.002704, -0.024705, -0.008149, 0.005983, - 0.016283, -0.004745, -0.055104, 0.029570, -0.006872, 0.021070, 0.032847, 0.018006, - -0.050254, -0.042090, -0.027000, -0.032491, -0.014061, 0.004080, 0.031436, -0.044791, - 0.094940, 0.026485, 0.026452, 0.019676, -0.007325, -0.031308, -0.026825, 0.012276, - -0.001409, 0.028911, 0.068132, 0.043134, 0.032879, -0.043523, 0.001766, 0.038010, - 0.040158, -0.000508, 0.019395, -0.027736, 0.049182, 0.037165, -0.008521, 0.045808, - -0.031579, -0.022090, 0.019095, -0.007635, -0.055028, -0.007820, -0.015825, -0.002595, - 0.003446, 0.035259, 0.022761, 0.000999, -0.018260, 0.039841, 0.041637, 0.005579, - 0.012853, -0.014144, -0.037971, -0.005492, -0.018774, 0.025140, -0.011241, -0.014723, - -0.036178, 0.001756, -0.001121, 0.003359, 0.044937, 0.060939, -0.021130, -0.027371, - -0.061900, -0.034729, 0.017740, 0.003882, -0.033385, -0.012586, 0.001621, 0.072994, - 0.029099, 0.015653, 0.021784, 0.004392, 0.008394, 0.076247, -0.028782, -0.028052, - -0.015377, 0.006546, -0.023563, -0.023981, -0.044666, 0.098085, -0.040962, -0.039744, - -0.053339, -0.015497, -0.027874, -0.001882, 0.011169, 0.000533, -0.049169, -0.029641, - 0.024812, 0.055345, 0.003374, 0.043941, -0.023583, 0.007614, 0.077141, 0.037474, - 0.003070, 0.031099, 0.037847, 0.057118, 0.001414, 0.003153, 0.012152, 0.011587, - 0.062343, 0.014629, 0.025329, 0.013083, 0.047492, 0.051388, -0.034813, -0.024415, - 0.013981, 0.007639, 0.005786, -0.032386, -0.006711, 0.014546, -0.063518, 0.014951, - 0.027922, 0.030485, 0.006814, 0.021547, -0.013108, -0.001922, 0.028493, -0.012675, - -0.001252, -0.008682, -0.022525, 0.034360, 0.017444, -0.005534, -0.013147, 0.052814, - 0.085567, 0.004030, -0.022693, -0.034049, 0.021955, 0.001784, -0.011416, 0.002571, - 0.053173, -0.056895, 0.028198, 0.014525, 0.011387, 0.029675, -0.009683, 0.022087, - -0.039038, -0.048436, -0.026761, -0.048363, -0.025118, 0.069535, 0.053703, -0.018099, - 0.023775, -0.005483, -0.017821, 0.001225, -0.000390, -0.047293, -0.041399, 0.034734, - 0.024813, -0.081043, -0.048140, 0.032556, 0.030770, -0.033379, -0.022762, -0.036499, - 0.080364, 0.000878, -0.043886, 0.063451, 0.037177, 0.054943, 0.083112, 0.070387, - -0.032984, -0.077166, -0.016428, -0.013850, 0.013722, 0.020432, -0.002864, -0.030276, - -0.028872, -0.022006, 0.036110, -0.027943, -0.042660, -0.042974, -0.061683, 0.011215, - 0.019097, 0.005044, 0.016260, 0.006171, 0.040149, -0.001911, -0.008767, -0.028808, - -0.004409, 0.058513, -0.015309, 0.047592, 0.051637, 0.010620, 0.066353, 0.052263, - -0.023307, -0.012761, -0.065358, -0.038631, -0.001946, -0.008232, -0.070097, -0.061869, - -0.006456, -0.010559, 0.006016, -0.072799, -0.090938, -0.095879, -0.032718, -0.014853, - -0.011335, 0.010137, 0.041884, -0.007248, -0.045202, -0.010389, -0.043769, -0.023755, - 0.056690, 0.098927, 0.035594, 0.090224, 0.114198, 0.079953, 0.098613, 0.113518, - 0.041798, 0.015536, 0.047680, 0.059137, 0.033242, 0.061415, 0.057907, -0.049782, - 0.008875, 0.016810, 0.026855, -0.019706, -0.019060, -0.023427, -0.048142, -0.013366, - 0.005096, -0.016828, -0.020704, 0.013061, -0.034935, -0.033411, -0.052798, 0.011478, - -0.010047, 0.013508, -0.032658, 0.042550, 0.041943, 0.010221, 0.046194, 0.026261, - -0.048526, -0.053108, -0.027171, -0.000620, -0.027876, -0.013333, 0.008008, -0.084753, - 0.054535, -0.007490, 0.010059, -0.017211, -0.037070, -0.056338, -0.012463, -0.027512, - -0.008727, -0.004277, -0.005775, 0.020278, 0.042252, -0.017345, -0.035931, 0.001196, - -0.003812, -0.042595, -0.006097, 0.001593, 0.028053, 0.100385, -0.003399, 0.048565, - -0.048174, -0.044342, 0.003465, -0.002648, -0.065476, -0.004470, -0.023008, -0.037148, - 0.028527, 0.013498, -0.024352, -0.008792, -0.020932, 0.027336, 0.007435, -0.034101, - -0.022831, -0.056404, -0.041809, 0.007511, -0.004960, 0.032234, -0.002879, -0.006334, - -0.045662, 0.003519, -0.009390, -0.032505, 0.003727, 0.034058, 0.018740, 0.006788, - -0.061693, -0.048003, -0.026282, 0.005595, -0.081761, -0.005728, -0.019482, 0.043831, - 0.005841, -0.046958, 0.031820, 0.001110, -0.001804, 0.077609, 0.053106, -0.061559, - -0.021293, -0.095498, -0.111906, -0.056179, -0.021076, 0.093314, 0.023161, -0.037356, - -0.013473, -0.010938, -0.033305, -0.021200, 0.023565, 0.087394, 0.015972, -0.004613, - 0.103960, 0.094563, 0.046861, 0.050814, 0.021576, 0.050363, 0.051483, 0.020626, - -0.027270, -0.070592, 0.022568, -0.004412, -0.052484, -0.013738, 0.102283, -0.016865, - 0.078487, -0.082596, -0.019059, -0.002288, 0.009339, 0.009448, -0.063724, -0.045102, - 0.031910, -0.019669, -0.037005, -0.062709, 0.028931, 0.010582, -0.063760, -0.008988, - 0.035022, 0.079090, 0.079650, 0.049394, -0.009882, 0.010384, 0.079796, 0.022378, - 0.018387, -0.078788, -0.039627, -0.025771, 0.032645, 0.047040, 0.006255, 0.013222, - 0.123781, -0.077964, -0.055074, -0.026699, 0.006711, -0.056555, -0.026694, 0.009020, - 0.045728, -0.121469, -0.031086, -0.013402, 0.037565, 0.010345, -0.002914, 0.002691, - -0.065919, -0.122879, -0.061393, -0.082483, -0.011993, 0.030089, 0.084220, -0.067146, - -0.003246, -0.043722, -0.043130, -0.002350, -0.045910, -0.054252, -0.013825, -0.002491, - 0.119678, -0.070648, -0.019398, 0.098929, 0.038699, -0.026321, -0.088710, -0.056537, - 0.180852, 0.065605, 0.006670, 0.055646, 0.073930, 0.033318, 0.067255, 0.041349, - -0.013855, -0.063725, -0.009892, -0.026696, -0.016112, 0.026860, 0.059251, -0.003481, - -0.021758, -0.088421, 0.017151, -0.049235, -0.050079, -0.088882, -0.082071, 0.021402, - -0.012229, -0.010027, -0.029424, -0.019863, -0.001099, -0.016727, -0.044370, -0.104987, - 0.083579, 0.240227, 0.095545, 0.072283, 0.086943, 0.047371, 0.072862, 0.049386, - 0.001738, 0.084818, 0.082948, 0.068886, 0.034950, 0.035929, -0.039835, -0.073616, - 0.050547, 0.003309, 0.039797, 0.005171, -0.056042, -0.036123, -0.010933, -0.042168, - -0.010983, -0.084786, -0.057426, -0.034726, -0.039950, -0.052714, -0.085157, -0.079162, - -0.008996, -0.038984, -0.091328, -0.043653, 0.001649, 0.009334, 0.022134, 0.041656, - 0.016226, 0.000039, 0.000849, 0.030181, 0.026724, 0.088602, 0.114290, 0.053264, - -0.037589, -0.064244, 0.026384, 0.007622, -0.000288, -0.036465, -0.079414, -0.036724, - -0.025665, -0.109337, -0.068801, -0.030277, -0.037357, -0.018248, -0.090141, -0.109764, - 0.037502, -0.028190, -0.064105, -0.058346, -0.037130, 0.003510, -0.005209, 0.016856, - 0.085203, 0.029922, 0.067239, 0.006365, -0.027768, 0.058723, 0.043251, 0.037917, - 0.065568, -0.004298, 0.018795, 0.025729, 0.005398, 0.036892, 0.042594, -0.005537, - 0.077550, 0.007559, 0.019854, 0.063556, 0.031673, 0.068075, 0.051269, 0.017486, - 0.034123, 0.047009, 0.025593, 0.066234, 0.063401, 0.059755, 0.051457, 0.070262, - -0.078309, -0.063328, -0.010359, 0.023949, -0.018065, 0.000055, -0.006923, -0.047894, - -0.026738, -0.050844, 0.021810, 0.015014, 0.024321, 0.004038, -0.022594, 0.059167, - -0.019169, -0.056859, 0.031995, 0.050979, 0.069461, 0.066663, 0.004946, 0.034565, - 0.002188, -0.000776, 0.011989, 0.047543, 0.085245, 0.109187, 0.044968, 0.069626, - -0.043569, -0.051591, 0.001129, 0.003319, -0.045530, 0.018322, -0.033283, -0.054719, - 9.000000, - 5.000000, 6.000000, 31.000000, - 0.062537, 0.038999, 0.035230, -0.032101, -0.104194, - -0.034794, -0.046582, -0.023927, 0.008743, 0.053311, - 0.016517, -0.041484, 0.006855, 0.075010, 0.054018, - 0.013835, -0.022154, 0.028897, 0.006599, 0.007550, - -0.001427, 0.063481, -0.045302, -0.054073, -0.018532, - 0.070373, 0.009615, -0.074676, -0.053046, 0.009151, - 0.035902, -0.047856, 0.002438, 0.014990, -0.018820, - 0.000193, -0.009108, -0.012904, 0.017014, 0.006038, - -0.024984, 0.005353, 0.065812, 0.069171, 0.042987, - -0.016040, 0.005379, -0.014606, 0.005142, -0.031337, - 0.004773, 0.105202, 0.033220, -0.026354, -0.059668, - 0.028037, -0.013651, -0.011260, -0.005208, -0.058132, - 0.010484, -0.064736, -0.014894, -0.014077, -0.016266, - 0.005153, -0.019870, -0.028646, -0.012281, -0.031025, - -0.003574, -0.004423, 0.016724, -0.008891, -0.023451, - -0.075802, 0.010929, -0.037386, 0.014245, -0.013609, - 0.086101, 0.046489, 0.010360, -0.005361, 0.009386, - 0.087553, -0.023457, 0.005435, -0.002806, -0.046665, - -0.002624, 0.013837, 0.029933, -0.036486, 0.027620, - 0.030148, -0.010836, -0.035144, -0.017005, 0.016661, - 0.043158, -0.006158, -0.026773, -0.045391, 0.023896, - -0.011944, 0.034268, 0.014912, 0.039696, 0.038504, - 0.008991, -0.008381, 0.000620, -0.018679, 0.011066, - 0.069685, -0.032691, -0.010538, 0.004424, 0.010800, - -0.034592, -0.048200, 0.007360, -0.007061, 0.062695, - -0.020198, -0.067860, -0.029307, -0.021513, -0.001640, - 0.008172, 0.028067, 0.004852, -0.014148, -0.022873, - 0.020347, 0.040730, -0.008614, -0.015391, 0.033261, - -0.001937, -0.028729, -0.039864, -0.021677, 0.030027, - 0.067210, -0.031252, 0.019490, 0.024823, 0.030042, - 0.067210, -0.031252, 0.019490, 0.024823, 0.030042, - -0.001937, -0.028729, -0.039864, -0.021677, 0.030027, - 0.020347, 0.040730, -0.008614, -0.015391, 0.033261, - 0.008172, 0.028067, 0.004852, -0.014148, -0.022873, - -0.020198, -0.067860, -0.029307, -0.021513, -0.001640, - -0.034592, -0.048200, 0.007360, -0.007061, 0.062695, - 0.069685, -0.032691, -0.010538, 0.004424, 0.010800, - 0.008991, -0.008381, 0.000620, -0.018679, 0.011066, - -0.011944, 0.034268, 0.014912, 0.039696, 0.038504, - 0.043158, -0.006158, -0.026773, -0.045391, 0.023896, - 0.030148, -0.010836, -0.035144, -0.017005, 0.016661, - -0.002624, 0.013837, 0.029933, -0.036486, 0.027620, - 0.087553, -0.023457, 0.005435, -0.002806, -0.046665, - 0.086101, 0.046489, 0.010360, -0.005361, 0.009386, - -0.075802, 0.010929, -0.037386, 0.014245, -0.013609, - -0.003574, -0.004423, 0.016724, -0.008891, -0.023451, - 0.005153, -0.019870, -0.028646, -0.012281, -0.031025, - 0.010484, -0.064736, -0.014894, -0.014077, -0.016266, - 0.028037, -0.013651, -0.011260, -0.005208, -0.058132, - 0.004773, 0.105202, 0.033220, -0.026354, -0.059668, - -0.016040, 0.005379, -0.014606, 0.005142, -0.031337, - -0.024984, 0.005353, 0.065812, 0.069171, 0.042987, - 0.000193, -0.009108, -0.012904, 0.017014, 0.006038, - 0.035902, -0.047856, 0.002438, 0.014990, -0.018820, - 0.070373, 0.009615, -0.074676, -0.053046, 0.009151, - -0.001427, 0.063481, -0.045302, -0.054073, -0.018532, - 0.013835, -0.022154, 0.028897, 0.006599, 0.007550, - 0.016517, -0.041484, 0.006855, 0.075010, 0.054018, - -0.034794, -0.046582, -0.023927, 0.008743, 0.053311, - 0.062537, 0.038999, 0.035230, -0.032101, -0.104194, - -0.014125, -0.003623, 0.021573, 0.034546, 0.037519, - -0.033968, 0.006878, 0.095458, 0.033388, 0.058644, - 0.018447, -0.074805, 0.016934, 0.005180, 0.060354, - -0.042390, -0.020910, 0.007526, 0.005345, 0.026102, - -0.058368, -0.023850, -0.026504, -0.011296, -0.015375, - -0.024771, 0.030470, -0.027236, 0.010051, -0.065452, - -0.034529, 0.039461, 0.026208, 0.015739, 0.000905, - -0.023130, 0.013602, 0.058382, -0.027201, 0.025966, - -0.010043, -0.024883, 0.029337, 0.085838, 0.045191, - -0.057332, 0.009334, -0.007537, -0.003823, 0.030003, - -0.005034, -0.001242, 0.006038, 0.014076, 0.010624, - 0.014401, 0.004240, 0.036046, 0.015527, -0.015252, - 0.005335, 0.033302, -0.004245, 0.008863, -0.026212, - -0.055587, -0.023314, 0.016369, -0.008367, -0.014090, - -0.063833, -0.042577, -0.023421, -0.008680, -0.014797, - -0.009618, -0.022070, -0.073158, -0.045651, -0.035298, - 0.101370, 0.048983, -0.039563, -0.017349, -0.021206, - 0.058901, 0.053642, -0.035985, 0.008546, 0.029734, - -0.046079, 0.011523, 0.054940, 0.019195, 0.007458, - -0.003291, 0.041611, -0.009615, 0.000332, -0.014789, - 0.022468, 0.040730, -0.055566, -0.038484, -0.037176, - 0.082804, 0.087046, -0.060633, -0.041170, -0.040967, - 0.065782, 0.007986, -0.061449, -0.018276, -0.034189, - -0.048158, 0.035451, 0.036412, 0.007416, 0.070274, - -0.048158, 0.035451, 0.036412, 0.007416, 0.070274, - 0.065782, 0.007986, -0.061449, -0.018276, -0.034189, - 0.082804, 0.087046, -0.060633, -0.041170, -0.040967, - 0.022468, 0.040730, -0.055566, -0.038484, -0.037176, - -0.003291, 0.041611, -0.009615, 0.000332, -0.014789, - -0.046079, 0.011523, 0.054940, 0.019195, 0.007458, - 0.058901, 0.053642, -0.035985, 0.008546, 0.029734, - 0.101370, 0.048983, -0.039563, -0.017349, -0.021206, - -0.009618, -0.022070, -0.073158, -0.045651, -0.035298, - -0.063833, -0.042577, -0.023421, -0.008680, -0.014797, - -0.055587, -0.023314, 0.016369, -0.008367, -0.014090, - 0.005335, 0.033302, -0.004245, 0.008863, -0.026212, - 0.014401, 0.004240, 0.036046, 0.015527, -0.015252, - -0.005034, -0.001242, 0.006038, 0.014076, 0.010624, - -0.057332, 0.009334, -0.007537, -0.003823, 0.030003, - -0.010043, -0.024883, 0.029337, 0.085838, 0.045191, - -0.023130, 0.013602, 0.058382, -0.027201, 0.025966, - -0.034529, 0.039461, 0.026208, 0.015739, 0.000905, - -0.024771, 0.030470, -0.027236, 0.010051, -0.065452, - -0.058368, -0.023850, -0.026504, -0.011296, -0.015375, - -0.042390, -0.020910, 0.007526, 0.005345, 0.026102, - 0.018447, -0.074805, 0.016934, 0.005180, 0.060354, - -0.033968, 0.006878, 0.095458, 0.033388, 0.058644, - -0.014125, -0.003623, 0.021573, 0.034546, 0.037519, - 0.134595, 0.058031, 0.012038, 0.026498, 0.012474, - -0.016045, 0.053095, 0.063617, 0.056239, 0.086517, - -0.002082, -0.055735, 0.017809, 0.037594, 0.026606, - -0.002082, -0.055735, 0.017809, 0.037594, 0.026606, - -0.016045, 0.053095, 0.063617, 0.056239, 0.086517, - 0.134595, 0.058031, 0.012038, 0.026498, 0.012474, - 0.045546, -0.040302, 0.002263, 0.027828, 0.047795, - -0.029034, -0.010784, 0.027754, -0.000241, 0.026084, - 0.002329, -0.044644, 0.025135, 0.055216, 0.064353, - -0.036750, -0.006736, 0.022987, 0.040228, -0.011848, - -0.014662, 0.080443, 0.042724, -0.037599, -0.052775, - 0.024039, 0.018175, -0.042564, -0.026691, -0.088940, - -0.019242, -0.031793, -0.021973, -0.033636, -0.045789, - -0.014791, -0.013969, 0.008438, -0.043647, 0.031168, - -0.042500, -0.039998, 0.012730, 0.035088, -0.017589, - -0.108983, 0.016102, -0.039642, -0.009120, -0.015753, - 0.002114, 0.010469, -0.026386, -0.042882, -0.021953, - 0.051041, -0.050423, 0.005834, -0.030116, -0.098438, - -0.013808, -0.019477, -0.006617, -0.039269, -0.014862, - -0.029792, -0.042501, -0.016639, -0.053797, -0.012609, - -0.038529, -0.046267, -0.043715, -0.058532, -0.037990, - -0.016210, -0.005246, -0.056921, -0.018250, -0.019824, - 0.062134, 0.005296, -0.053177, -0.058814, -0.037854, - 0.055192, 0.016010, -0.046990, -0.018033, 0.007233, - -0.060241, -0.020027, 0.032343, -0.013595, 0.035574, - 0.015847, -0.041712, -0.046138, -0.044077, -0.014541, - 0.087554, 0.038132, -0.059460, -0.057400, -0.062674, - 0.147746, 0.120204, -0.065071, -0.068452, -0.029194, - 0.117651, 0.018763, -0.075123, -0.044990, 0.007477, - 0.042484, -0.008471, 0.043613, -0.022733, 0.070403, - 0.042484, -0.008471, 0.043613, -0.022733, 0.070403, - 0.117651, 0.018763, -0.075123, -0.044990, 0.007477, - 0.147746, 0.120204, -0.065071, -0.068452, -0.029194, - 0.087554, 0.038132, -0.059460, -0.057400, -0.062674, - 0.015847, -0.041712, -0.046138, -0.044077, -0.014541, - -0.060241, -0.020027, 0.032343, -0.013595, 0.035574, - 0.055192, 0.016010, -0.046990, -0.018033, 0.007233, - 0.062134, 0.005296, -0.053177, -0.058814, -0.037854, - -0.016210, -0.005246, -0.056921, -0.018250, -0.019824, - -0.038529, -0.046267, -0.043715, -0.058532, -0.037990, - -0.029792, -0.042501, -0.016639, -0.053797, -0.012609, - -0.013808, -0.019477, -0.006617, -0.039269, -0.014862, - 0.051041, -0.050423, 0.005834, -0.030116, -0.098438, - 0.002114, 0.010469, -0.026386, -0.042882, -0.021953, - -0.108983, 0.016102, -0.039642, -0.009120, -0.015753, - -0.042500, -0.039998, 0.012730, 0.035088, -0.017589, - -0.014791, -0.013969, 0.008438, -0.043647, 0.031168, - -0.019242, -0.031793, -0.021973, -0.033636, -0.045789, - 0.024039, 0.018175, -0.042564, -0.026691, -0.088940, - -0.014662, 0.080443, 0.042724, -0.037599, -0.052775, - -0.036750, -0.006736, 0.022987, 0.040228, -0.011848, - 0.002329, -0.044644, 0.025135, 0.055216, 0.064353, - -0.029034, -0.010784, 0.027754, -0.000241, 0.026084, - 0.045546, -0.040302, 0.002263, 0.027828, 0.047795, - 0.068848, 0.010698, -0.002983, 0.017436, 0.022711, - 0.051660, 0.045900, -0.006366, 0.007348, 0.059817, - 0.033762, 0.024280, -0.000146, 0.028016, 0.041448, - -0.032773, -0.024202, -0.065621, -0.024440, 0.024113, - -0.012424, -0.011812, -0.052033, -0.036228, -0.007787, - 0.073025, -0.010144, -0.011287, 0.003260, 0.005212, - 0.027382, -0.002249, 0.042843, 0.007837, -0.016244, - 0.055662, 0.043610, 0.030717, 0.005999, 0.011441, - -0.005289, 0.045966, 0.032333, 0.062725, 0.033877, - -0.038038, -0.044925, -0.021173, -0.026423, -0.032330, - -0.064364, -0.033170, -0.034438, -0.064742, -0.058187, - -0.025224, 0.004088, 0.016791, -0.022246, -0.042223, - 0.073025, -0.010144, -0.011287, 0.003260, 0.005212, - -0.012424, -0.011812, -0.052033, -0.036228, -0.007787, - -0.032773, -0.024202, -0.065621, -0.024440, 0.024113, - 0.033762, 0.024280, -0.000146, 0.028016, 0.041448, - 0.051660, 0.045900, -0.006366, 0.007348, 0.059817, - 0.068848, 0.010698, -0.002983, 0.017436, 0.022711, - -0.025224, 0.004088, 0.016791, -0.022246, -0.042223, - -0.064364, -0.033170, -0.034438, -0.064742, -0.058187, - -0.038038, -0.044925, -0.021173, -0.026423, -0.032330, - -0.005289, 0.045966, 0.032333, 0.062725, 0.033877, - 0.055662, 0.043610, 0.030717, 0.005999, 0.011441, - 0.027382, -0.002249, 0.042843, 0.007837, -0.016244, - 0.000000, - 5.000000, 6.000000, 31.000000, - 0.080884, 0.037878, 0.033322, 0.012892, -0.017077, - 0.040204, 0.012276, 0.086089, 0.045258, -0.017224, - 0.019019, -0.033890, -0.003277, -0.010281, -0.065845, - 0.015896, -0.059444, -0.012959, 0.004842, 0.013298, - -0.004725, 0.102136, 0.091167, 0.029007, -0.077806, - 0.099592, 0.076154, 0.030933, 0.016490, 0.002916, - -0.014919, 0.002415, -0.009389, -0.064857, -0.052966, - -0.023936, 0.058525, 0.036616, -0.047694, -0.028541, - 0.000735, 0.026124, -0.011413, -0.019476, -0.031614, - -0.027337, -0.038352, 0.024975, 0.033125, -0.028453, - -0.065731, -0.044205, 0.053681, 0.008100, -0.027216, - -0.015338, 0.018038, -0.039117, -0.078005, -0.002798, - -0.034908, 0.026391, -0.043534, -0.026727, 0.015053, - -0.003470, 0.036020, -0.048085, 0.011942, -0.061184, - -0.057367, 0.053232, 0.073864, -0.013133, -0.055980, - -0.045637, -0.044424, 0.068229, 0.023310, 0.111071, - -0.017116, -0.038404, 0.057005, 0.051472, 0.034941, - -0.004217, -0.015044, -0.028838, 0.038268, -0.054926, - -0.030486, -0.013325, -0.076063, 0.021825, 0.049655, - -0.007294, 0.027748, -0.038918, 0.050608, -0.032955, - 0.047003, 0.036431, 0.092570, 0.025417, 0.039391, - -0.038705, -0.056840, 0.062170, -0.027693, 0.063781, - -0.006714, -0.050675, 0.011168, 0.009382, -0.040681, - 0.013085, 0.014806, -0.061915, -0.001633, -0.026769, - 0.035459, 0.015213, -0.006203, -0.014431, 0.023448, - 0.009293, -0.008589, 0.005098, -0.011381, -0.041281, - 0.095717, 0.011042, 0.046234, -0.020820, -0.019476, - -0.018103, -0.004995, 0.078060, 0.002514, -0.020604, - 0.018003, -0.006499, 0.006473, 0.027971, -0.009798, - 0.041682, 0.040123, -0.030098, 0.041116, -0.013895, - 0.041682, 0.040123, -0.030098, 0.041116, -0.013895, - 0.018003, -0.006499, 0.006473, 0.027971, -0.009798, - -0.018103, -0.004995, 0.078060, 0.002514, -0.020604, - 0.095717, 0.011042, 0.046234, -0.020820, -0.019476, - 0.009293, -0.008589, 0.005098, -0.011381, -0.041281, - 0.035459, 0.015213, -0.006203, -0.014431, 0.023448, - 0.013085, 0.014806, -0.061915, -0.001633, -0.026769, - -0.006714, -0.050675, 0.011168, 0.009382, -0.040681, - -0.038705, -0.056840, 0.062170, -0.027693, 0.063781, - 0.047003, 0.036431, 0.092570, 0.025417, 0.039391, - -0.007294, 0.027748, -0.038918, 0.050608, -0.032955, - -0.030486, -0.013325, -0.076063, 0.021825, 0.049655, - -0.004217, -0.015044, -0.028838, 0.038268, -0.054926, - -0.017116, -0.038404, 0.057005, 0.051472, 0.034941, - -0.045637, -0.044424, 0.068229, 0.023310, 0.111071, - -0.057367, 0.053232, 0.073864, -0.013133, -0.055980, - -0.003470, 0.036020, -0.048085, 0.011942, -0.061184, - -0.034908, 0.026391, -0.043534, -0.026727, 0.015053, - -0.015338, 0.018038, -0.039117, -0.078005, -0.002798, - -0.065731, -0.044205, 0.053681, 0.008100, -0.027216, - -0.027337, -0.038352, 0.024975, 0.033125, -0.028453, - 0.000735, 0.026124, -0.011413, -0.019476, -0.031614, - -0.023936, 0.058525, 0.036616, -0.047694, -0.028541, - -0.014919, 0.002415, -0.009389, -0.064857, -0.052966, - 0.099592, 0.076154, 0.030933, 0.016490, 0.002916, - -0.004725, 0.102136, 0.091167, 0.029007, -0.077806, - 0.015896, -0.059444, -0.012959, 0.004842, 0.013298, - 0.019019, -0.033890, -0.003277, -0.010281, -0.065845, - 0.040204, 0.012276, 0.086089, 0.045258, -0.017224, - 0.080884, 0.037878, 0.033322, 0.012892, -0.017077, - -0.028129, -0.044169, -0.053681, -0.080068, -0.000011, - -0.043310, 0.048749, -0.002105, 0.036481, 0.011063, - -0.081217, 0.041239, -0.041250, -0.013109, 0.009451, - -0.020025, -0.031678, 0.040063, 0.052351, -0.019331, - -0.024867, -0.043890, 0.052679, 0.044214, -0.044812, - 0.005892, -0.030736, -0.003230, -0.026167, -0.058686, - -0.008188, -0.032209, -0.063041, -0.041608, 0.074195, - 0.042592, 0.067528, 0.004764, 0.041991, 0.019115, - 0.027419, 0.001071, -0.025373, 0.043167, 0.027185, - -0.097465, -0.038482, -0.071506, 0.036628, 0.117993, - -0.023853, -0.018283, 0.016976, 0.024559, 0.021962, - -0.009949, -0.053475, 0.027617, -0.003803, -0.002549, - -0.047182, -0.030231, -0.024953, 0.024118, 0.071663, - -0.019111, -0.049782, -0.011395, 0.027214, 0.048259, - 0.140306, 0.070906, -0.050526, 0.013215, -0.010279, - -0.022243, -0.032798, -0.043872, 0.018602, 0.017537, - -0.034752, -0.015272, -0.021885, -0.016261, -0.016077, - -0.052604, 0.024562, 0.011688, -0.020700, 0.022588, - -0.026172, 0.018538, 0.038378, -0.015753, -0.001130, - -0.046231, -0.037858, -0.005501, 0.029271, 0.015631, - 0.104464, 0.024119, -0.028040, -0.052956, -0.015750, - 0.017862, 0.055269, 0.013654, -0.048636, -0.019805, - -0.018154, -0.011478, -0.027047, -0.043059, -0.003785, - 0.047084, 0.066795, 0.021454, -0.036487, 0.018210, - 0.047084, 0.066795, 0.021454, -0.036487, 0.018210, - -0.018154, -0.011478, -0.027047, -0.043059, -0.003785, - 0.017862, 0.055269, 0.013654, -0.048636, -0.019805, - 0.104464, 0.024119, -0.028040, -0.052956, -0.015750, - -0.046231, -0.037858, -0.005501, 0.029271, 0.015631, - -0.026172, 0.018538, 0.038378, -0.015753, -0.001130, - -0.052604, 0.024562, 0.011688, -0.020700, 0.022588, - -0.034752, -0.015272, -0.021885, -0.016261, -0.016077, - -0.022243, -0.032798, -0.043872, 0.018602, 0.017537, - 0.140306, 0.070906, -0.050526, 0.013215, -0.010279, - -0.019111, -0.049782, -0.011395, 0.027214, 0.048259, - -0.047182, -0.030231, -0.024953, 0.024118, 0.071663, - -0.009949, -0.053475, 0.027617, -0.003803, -0.002549, - -0.023853, -0.018283, 0.016976, 0.024559, 0.021962, - -0.097465, -0.038482, -0.071506, 0.036628, 0.117993, - 0.027419, 0.001071, -0.025373, 0.043167, 0.027185, - 0.042592, 0.067528, 0.004764, 0.041991, 0.019115, - -0.008188, -0.032209, -0.063041, -0.041608, 0.074195, - 0.005892, -0.030736, -0.003230, -0.026167, -0.058686, - -0.024867, -0.043890, 0.052679, 0.044214, -0.044812, - -0.020025, -0.031678, 0.040063, 0.052351, -0.019331, - -0.081217, 0.041239, -0.041250, -0.013109, 0.009451, - -0.043310, 0.048749, -0.002105, 0.036481, 0.011063, - -0.028129, -0.044169, -0.053681, -0.080068, -0.000011, - 0.098624, -0.009360, -0.021967, -0.048468, 0.009535, - -0.007977, 0.141625, 0.149399, 0.053292, -0.059662, - -0.004383, -0.038744, 0.048962, -0.005189, -0.033578, - -0.004383, -0.038744, 0.048962, -0.005189, -0.033578, - -0.007977, 0.141625, 0.149399, 0.053292, -0.059662, - 0.098624, -0.009360, -0.021967, -0.048468, 0.009535, - -0.006730, -0.021987, -0.025472, -0.087024, 0.024070, - -0.010087, 0.118400, 0.095733, 0.028685, 0.014821, - -0.049468, 0.054109, -0.007012, -0.028281, -0.023773, - -0.031748, -0.076598, 0.036074, 0.094816, -0.012716, - -0.056508, -0.034942, 0.114309, 0.071747, -0.038850, - -0.005120, 0.010170, 0.014553, -0.080981, -0.054515, - -0.023920, -0.005394, -0.084130, -0.018750, 0.150703, - 0.090479, 0.132717, 0.002524, 0.095633, 0.035552, - 0.020428, 0.076955, 0.030958, 0.058034, -0.014190, - -0.131762, -0.087715, -0.009947, 0.078513, 0.106427, - -0.050733, -0.057075, 0.069031, 0.093027, 0.006860, - -0.022375, -0.047834, -0.010630, 0.013764, -0.080459, - -0.037673, -0.003612, -0.067757, 0.070503, 0.084114, - 0.019487, -0.019974, 0.007372, 0.132021, 0.055375, - 0.159777, 0.091247, 0.065575, 0.044793, 0.000185, - -0.043213, -0.056137, 0.036840, 0.011254, 0.024317, - -0.041733, -0.055192, 0.009598, 0.015053, -0.061090, - -0.003941, 0.041190, -0.036332, -0.025683, -0.016063, - 0.024024, 0.025225, 0.013948, 0.026512, 0.017011, - -0.031305, -0.025760, 0.042481, 0.062727, -0.019917, - 0.143409, -0.010770, 0.054589, -0.018871, -0.003741, - 0.022143, 0.006388, 0.092925, 0.012610, 0.023232, - -0.057580, -0.050213, 0.027932, 0.009355, -0.039829, - 0.049391, 0.057353, 0.063220, 0.033246, -0.020246, - 0.049391, 0.057353, 0.063220, 0.033246, -0.020246, - -0.057580, -0.050213, 0.027932, 0.009355, -0.039829, - 0.022143, 0.006388, 0.092925, 0.012610, 0.023232, - 0.143409, -0.010770, 0.054589, -0.018871, -0.003741, - -0.031305, -0.025760, 0.042481, 0.062727, -0.019917, - 0.024024, 0.025225, 0.013948, 0.026512, 0.017011, - -0.003941, 0.041190, -0.036332, -0.025683, -0.016063, - -0.041733, -0.055192, 0.009598, 0.015053, -0.061090, - -0.043213, -0.056137, 0.036840, 0.011254, 0.024317, - 0.159777, 0.091247, 0.065575, 0.044793, 0.000185, - 0.019487, -0.019974, 0.007372, 0.132021, 0.055375, - -0.037673, -0.003612, -0.067757, 0.070503, 0.084114, - -0.022375, -0.047834, -0.010630, 0.013764, -0.080459, - -0.050733, -0.057075, 0.069031, 0.093027, 0.006860, - -0.131762, -0.087715, -0.009947, 0.078513, 0.106427, - 0.020428, 0.076955, 0.030958, 0.058034, -0.014190, - 0.090479, 0.132717, 0.002524, 0.095633, 0.035552, - -0.023920, -0.005394, -0.084130, -0.018750, 0.150703, - -0.005120, 0.010170, 0.014553, -0.080981, -0.054515, - -0.056508, -0.034942, 0.114309, 0.071747, -0.038850, - -0.031748, -0.076598, 0.036074, 0.094816, -0.012716, - -0.049468, 0.054109, -0.007012, -0.028281, -0.023773, - -0.010087, 0.118400, 0.095733, 0.028685, 0.014821, - -0.006730, -0.021987, -0.025472, -0.087024, 0.024070, - -0.040949, -0.017663, -0.076979, -0.065986, 0.031372, - -0.073099, -0.002882, 0.028029, 0.043344, 0.039721, - -0.006916, 0.005708, 0.054644, 0.003362, 0.019681, - -0.021002, -0.006709, 0.009095, -0.019443, 0.036933, - -0.023240, 0.023269, 0.037106, 0.021985, -0.039069, - 0.044367, 0.058379, 0.012713, -0.045342, -0.009442, - -0.001984, -0.028287, -0.079441, -0.048652, -0.026717, - -0.028658, -0.028739, 0.013976, 0.048421, -0.054510, - 0.015733, 0.003676, 0.038316, 0.044971, 0.006355, - 0.040620, -0.012796, -0.002304, -0.006703, -0.009904, - 0.016964, 0.021573, 0.046649, 0.036662, -0.064175, - 0.022885, 0.044952, 0.013284, 0.039523, 0.026906, - 0.044367, 0.058379, 0.012713, -0.045342, -0.009442, - -0.023240, 0.023269, 0.037106, 0.021985, -0.039069, - -0.021002, -0.006709, 0.009095, -0.019443, 0.036933, - -0.006916, 0.005708, 0.054644, 0.003362, 0.019681, - -0.073099, -0.002882, 0.028029, 0.043344, 0.039721, - -0.040949, -0.017663, -0.076979, -0.065986, 0.031372, - 0.022885, 0.044952, 0.013284, 0.039523, 0.026906, - 0.016964, 0.021573, 0.046649, 0.036662, -0.064175, - 0.040620, -0.012796, -0.002304, -0.006703, -0.009904, - 0.015733, 0.003676, 0.038316, 0.044971, 0.006355, - -0.028658, -0.028739, 0.013976, 0.048421, -0.054510, - -0.001984, -0.028287, -0.079441, -0.048652, -0.026717, - 0.000000, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_root.csv b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_root.csv deleted file mode 100755 index d7e11aa3387..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/data/person_root.csv +++ /dev/null @@ -1,313 +0,0 @@ - 2.000000, - 9.000000, 6.000000, 31.000000, - 0.029411, 0.030561, -0.012455, -0.006882, 0.003505, -0.043002, 0.034831, 0.018885, -0.055765, - 0.011397, -0.003854, -0.042681, -0.017881, 0.003145, -0.041660, 0.002799, -0.006488, -0.038910, - -0.049670, -0.030285, -0.088014, -0.001021, 0.018735, -0.028842, 0.005757, 0.028441, -0.007146, - 0.037652, 0.001012, -0.019110, 0.016400, 0.058373, 0.040603, -0.033449, 0.073291, 0.002168, - -0.008589, 0.022222, -0.028357, 0.004165, -0.006088, 0.018106, -0.045113, 0.038343, 0.036944, - 0.017422, -0.010571, 0.023654, 0.054123, 0.043279, -0.052457, -0.020049, 0.106020, 0.069516, - -0.014020, -0.013200, -0.006798, 0.035908, 0.020190, 0.008317, 0.028826, -0.057550, -0.009918, - -0.082371, -0.002962, -0.037985, -0.005545, -0.020485, 0.032788, -0.008951, -0.007647, -0.028057, - -0.012741, -0.007571, 0.002583, -0.003545, 0.020854, -0.006761, 0.031923, 0.060538, 0.011665, - -0.041751, 0.039072, 0.000030, -0.014615, -0.016494, 0.000118, -0.043390, -0.037450, 0.018806, - -0.056307, 0.012492, -0.008906, -0.051623, -0.036596, 0.016481, -0.009188, -0.047026, 0.033754, - 0.039235, 0.000562, -0.004708, 0.016652, -0.000108, -0.018771, -0.009825, 0.020808, 0.056355, - 0.009093, 0.014647, -0.044695, -0.039303, -0.035595, -0.010688, 0.056607, -0.004864, 0.024856, - -0.005134, 0.047677, 0.028975, 0.065371, -0.000497, -0.015682, 0.012130, 0.014967, 0.031265, - -0.003521, 0.015455, -0.034193, 0.018893, 0.035486, -0.027761, 0.036352, 0.044269, -0.032070, - -0.025106, -0.020001, 0.008646, 0.040443, -0.011984, -0.039250, -0.005227, -0.002069, -0.069362, - -0.061023, -0.042115, 0.024315, 0.004899, -0.034274, -0.020386, -0.026124, -0.015610, -0.031641, - 0.004142, -0.033376, 0.000780, -0.018394, -0.017602, 0.026567, 0.027194, -0.030842, 0.045359, - 0.018713, -0.107563, -0.040647, -0.014826, 0.028405, 0.031157, -0.003612, -0.014763, 0.005257, - 0.011687, 0.001445, -0.011330, 0.008441, 0.012242, 0.013614, -0.046273, -0.007324, 0.022740, - 0.018145, 0.081776, 0.009384, 0.018880, -0.016934, -0.000850, 0.013316, 0.005331, 0.032696, - -0.014937, -0.016448, -0.011297, -0.008102, 0.022642, 0.002473, 0.024769, -0.005568, -0.034909, - -0.039834, -0.031552, -0.039483, -0.001156, 0.040923, 0.048883, 0.047953, 0.041274, 0.026418, - -0.030719, -0.045355, -0.043782, -0.036155, -0.000522, 0.050511, -0.014801, -0.034013, 0.047545, - -0.022443, -0.032665, 0.033998, -0.004487, 0.013734, 0.022464, -0.016037, 0.005055, -0.011234, - -0.023345, -0.005009, 0.022467, 0.019351, 0.003101, 0.026629, -0.040365, -0.010260, 0.024059, - 0.050853, -0.008729, -0.028735, 0.012364, 0.006002, 0.010820, -0.001520, -0.050286, 0.037938, - 0.001244, 0.038712, 0.000289, 0.002881, -0.030723, -0.026189, -0.043461, -0.059273, 0.008150, - -0.030108, -0.021391, -0.000122, 0.014545, -0.005575, 0.004612, -0.013525, -0.002738, -0.001972, - 0.011640, -0.013166, 0.006420, -0.017107, 0.011112, 0.005932, 0.021537, 0.004632, -0.001804, - 0.011640, -0.013166, 0.006420, -0.017107, 0.011112, 0.005932, 0.021537, 0.004632, -0.001804, - -0.030108, -0.021391, -0.000122, 0.014545, -0.005575, 0.004612, -0.013525, -0.002738, -0.001972, - 0.001244, 0.038712, 0.000289, 0.002881, -0.030723, -0.026189, -0.043461, -0.059273, 0.008150, - 0.050853, -0.008729, -0.028735, 0.012364, 0.006002, 0.010820, -0.001520, -0.050286, 0.037938, - -0.023345, -0.005009, 0.022467, 0.019351, 0.003101, 0.026629, -0.040365, -0.010260, 0.024059, - -0.022443, -0.032665, 0.033998, -0.004487, 0.013734, 0.022464, -0.016037, 0.005055, -0.011234, - -0.030719, -0.045355, -0.043782, -0.036155, -0.000522, 0.050511, -0.014801, -0.034013, 0.047545, - -0.039834, -0.031552, -0.039483, -0.001156, 0.040923, 0.048883, 0.047953, 0.041274, 0.026418, - -0.014937, -0.016448, -0.011297, -0.008102, 0.022642, 0.002473, 0.024769, -0.005568, -0.034909, - 0.018145, 0.081776, 0.009384, 0.018880, -0.016934, -0.000850, 0.013316, 0.005331, 0.032696, - 0.011687, 0.001445, -0.011330, 0.008441, 0.012242, 0.013614, -0.046273, -0.007324, 0.022740, - 0.018713, -0.107563, -0.040647, -0.014826, 0.028405, 0.031157, -0.003612, -0.014763, 0.005257, - 0.004142, -0.033376, 0.000780, -0.018394, -0.017602, 0.026567, 0.027194, -0.030842, 0.045359, - -0.061023, -0.042115, 0.024315, 0.004899, -0.034274, -0.020386, -0.026124, -0.015610, -0.031641, - -0.025106, -0.020001, 0.008646, 0.040443, -0.011984, -0.039250, -0.005227, -0.002069, -0.069362, - -0.003521, 0.015455, -0.034193, 0.018893, 0.035486, -0.027761, 0.036352, 0.044269, -0.032070, - -0.005134, 0.047677, 0.028975, 0.065371, -0.000497, -0.015682, 0.012130, 0.014967, 0.031265, - 0.009093, 0.014647, -0.044695, -0.039303, -0.035595, -0.010688, 0.056607, -0.004864, 0.024856, - 0.039235, 0.000562, -0.004708, 0.016652, -0.000108, -0.018771, -0.009825, 0.020808, 0.056355, - -0.056307, 0.012492, -0.008906, -0.051623, -0.036596, 0.016481, -0.009188, -0.047026, 0.033754, - -0.041751, 0.039072, 0.000030, -0.014615, -0.016494, 0.000118, -0.043390, -0.037450, 0.018806, - -0.012741, -0.007571, 0.002583, -0.003545, 0.020854, -0.006761, 0.031923, 0.060538, 0.011665, - -0.082371, -0.002962, -0.037985, -0.005545, -0.020485, 0.032788, -0.008951, -0.007647, -0.028057, - -0.014020, -0.013200, -0.006798, 0.035908, 0.020190, 0.008317, 0.028826, -0.057550, -0.009918, - 0.017422, -0.010571, 0.023654, 0.054123, 0.043279, -0.052457, -0.020049, 0.106020, 0.069516, - -0.008589, 0.022222, -0.028357, 0.004165, -0.006088, 0.018106, -0.045113, 0.038343, 0.036944, - 0.037652, 0.001012, -0.019110, 0.016400, 0.058373, 0.040603, -0.033449, 0.073291, 0.002168, - -0.049670, -0.030285, -0.088014, -0.001021, 0.018735, -0.028842, 0.005757, 0.028441, -0.007146, - 0.011397, -0.003854, -0.042681, -0.017881, 0.003145, -0.041660, 0.002799, -0.006488, -0.038910, - 0.029411, 0.030561, -0.012455, -0.006882, 0.003505, -0.043002, 0.034831, 0.018885, -0.055765, - -0.035091, -0.000709, 0.043765, 0.023630, 0.006269, -0.027255, 0.072991, 0.051622, 0.012179, - -0.001538, 0.000406, 0.039649, 0.038602, 0.003310, 0.021582, 0.063968, 0.114059, 0.015234, - 0.006331, 0.009032, 0.012262, 0.032649, 0.017904, -0.011681, -0.002759, 0.035244, 0.004240, - 0.009317, 0.032706, -0.029169, -0.003747, 0.022917, 0.017974, 0.008288, 0.009720, -0.012071, - -0.040787, -0.033856, 0.003229, 0.004118, -0.025984, 0.021046, 0.009886, 0.021755, -0.047029, - -0.020172, 0.004346, -0.036837, -0.048269, -0.074293, -0.054807, 0.012016, 0.051272, -0.047286, - -0.031288, -0.000371, -0.036889, 0.035578, 0.044102, 0.053953, 0.073415, 0.077115, -0.009419, - 0.010990, 0.047847, 0.065051, -0.001493, -0.000367, 0.035297, 0.020654, 0.006278, -0.004437, - -0.016100, -0.045764, 0.017650, 0.029359, 0.019836, 0.002314, 0.061929, 0.007614, -0.011720, - -0.018336, -0.008028, 0.035350, 0.036340, 0.044934, -0.010311, 0.001635, 0.052306, -0.063263, - -0.030994, -0.008699, 0.005747, 0.018357, 0.038414, -0.017041, 0.000345, -0.001020, -0.043392, - -0.011526, -0.027429, 0.013289, 0.007938, -0.017970, -0.014353, -0.007465, 0.018412, -0.008129, - -0.049283, 0.050455, -0.002047, -0.030536, 0.033398, -0.058213, -0.032964, -0.009743, 0.010089, - 0.020756, 0.024549, 0.027784, 0.014061, 0.013837, 0.014444, -0.001081, -0.017543, 0.013006, - 0.020163, -0.040708, -0.008911, 0.025023, 0.008029, 0.021729, -0.003674, -0.056798, -0.015613, - -0.005057, -0.035396, -0.015175, 0.002832, -0.011091, 0.059811, 0.012751, -0.042836, -0.001383, - -0.033431, -0.025062, 0.020272, -0.021236, 0.003460, -0.016385, -0.020740, 0.003452, -0.023393, - -0.010463, 0.047508, 0.017689, -0.017721, -0.000391, 0.030811, 0.015372, 0.012006, -0.053560, - -0.018301, -0.028388, -0.043190, 0.039768, -0.051062, -0.022330, -0.032082, -0.002316, 0.008917, - -0.043309, -0.021377, 0.014485, 0.009985, 0.015043, 0.032971, -0.003271, -0.019392, -0.005175, - 0.021870, 0.010607, -0.047498, -0.037136, -0.034098, 0.023517, -0.003529, -0.000654, -0.036581, - -0.017761, -0.002983, -0.048003, -0.030322, 0.008845, 0.029434, 0.027981, 0.014373, -0.038403, - -0.011303, 0.004846, -0.042339, 0.014150, -0.000270, -0.000616, -0.011527, -0.023141, 0.024754, - 0.042988, -0.010246, -0.006225, -0.023934, -0.020740, 0.000985, 0.021497, -0.053689, -0.042110, - 0.042988, -0.010246, -0.006225, -0.023934, -0.020740, 0.000985, 0.021497, -0.053689, -0.042110, - -0.011303, 0.004846, -0.042339, 0.014150, -0.000270, -0.000616, -0.011527, -0.023141, 0.024754, - -0.017761, -0.002983, -0.048003, -0.030322, 0.008845, 0.029434, 0.027981, 0.014373, -0.038403, - 0.021870, 0.010607, -0.047498, -0.037136, -0.034098, 0.023517, -0.003529, -0.000654, -0.036581, - -0.043309, -0.021377, 0.014485, 0.009985, 0.015043, 0.032971, -0.003271, -0.019392, -0.005175, - -0.018301, -0.028388, -0.043190, 0.039768, -0.051062, -0.022330, -0.032082, -0.002316, 0.008917, - -0.010463, 0.047508, 0.017689, -0.017721, -0.000391, 0.030811, 0.015372, 0.012006, -0.053560, - -0.033431, -0.025062, 0.020272, -0.021236, 0.003460, -0.016385, -0.020740, 0.003452, -0.023393, - -0.005057, -0.035396, -0.015175, 0.002832, -0.011091, 0.059811, 0.012751, -0.042836, -0.001383, - 0.020163, -0.040708, -0.008911, 0.025023, 0.008029, 0.021729, -0.003674, -0.056798, -0.015613, - 0.020756, 0.024549, 0.027784, 0.014061, 0.013837, 0.014444, -0.001081, -0.017543, 0.013006, - -0.049283, 0.050455, -0.002047, -0.030536, 0.033398, -0.058213, -0.032964, -0.009743, 0.010089, - -0.011526, -0.027429, 0.013289, 0.007938, -0.017970, -0.014353, -0.007465, 0.018412, -0.008129, - -0.030994, -0.008699, 0.005747, 0.018357, 0.038414, -0.017041, 0.000345, -0.001020, -0.043392, - -0.018336, -0.008028, 0.035350, 0.036340, 0.044934, -0.010311, 0.001635, 0.052306, -0.063263, - -0.016100, -0.045764, 0.017650, 0.029359, 0.019836, 0.002314, 0.061929, 0.007614, -0.011720, - 0.010990, 0.047847, 0.065051, -0.001493, -0.000367, 0.035297, 0.020654, 0.006278, -0.004437, - -0.031288, -0.000371, -0.036889, 0.035578, 0.044102, 0.053953, 0.073415, 0.077115, -0.009419, - -0.020172, 0.004346, -0.036837, -0.048269, -0.074293, -0.054807, 0.012016, 0.051272, -0.047286, - -0.040787, -0.033856, 0.003229, 0.004118, -0.025984, 0.021046, 0.009886, 0.021755, -0.047029, - 0.009317, 0.032706, -0.029169, -0.003747, 0.022917, 0.017974, 0.008288, 0.009720, -0.012071, - 0.006331, 0.009032, 0.012262, 0.032649, 0.017904, -0.011681, -0.002759, 0.035244, 0.004240, - -0.001538, 0.000406, 0.039649, 0.038602, 0.003310, 0.021582, 0.063968, 0.114059, 0.015234, - -0.035091, -0.000709, 0.043765, 0.023630, 0.006269, -0.027255, 0.072991, 0.051622, 0.012179, - 0.019617, -0.007352, 0.035296, 0.034574, 0.045835, 0.005054, 0.063660, 0.115045, 0.004352, - 0.038522, 0.049628, 0.057931, 0.074331, 0.065218, 0.032193, 0.067449, 0.071489, -0.068250, - 0.010232, -0.020790, -0.038254, 0.052419, 0.038359, -0.006179, -0.004594, 0.002149, -0.040917, - 0.010232, -0.020790, -0.038254, 0.052419, 0.038359, -0.006179, -0.004594, 0.002149, -0.040917, - 0.038522, 0.049628, 0.057931, 0.074331, 0.065218, 0.032193, 0.067449, 0.071489, -0.068250, - 0.019617, -0.007352, 0.035296, 0.034574, 0.045835, 0.005054, 0.063660, 0.115045, 0.004352, - -0.025645, -0.002318, 0.041499, 0.031071, 0.060203, 0.031473, 0.070811, -0.027596, -0.047924, - -0.022900, 0.057128, 0.036851, 0.073445, 0.017736, 0.017628, -0.022192, -0.015158, -0.046229, - 0.009654, 0.016214, 0.010496, 0.007397, -0.019941, -0.033647, -0.002490, 0.025962, 0.008321, - -0.008584, 0.037746, -0.031857, 0.013219, 0.008350, 0.015735, -0.031724, -0.048059, 0.011123, - -0.066191, -0.037985, -0.042766, -0.025162, -0.044404, 0.051964, 0.034720, 0.003909, -0.036374, - 0.047505, 0.014790, -0.055717, -0.006547, -0.063399, -0.043496, 0.011870, 0.042906, 0.006878, - -0.001494, 0.003395, -0.015666, -0.001281, -0.015388, 0.069651, 0.034933, 0.029121, 0.000683, - 0.016077, 0.078963, 0.147008, 0.034940, 0.030392, 0.002531, -0.061841, 0.004428, 0.010624, - 0.013686, 0.014057, -0.020287, 0.058919, 0.059929, -0.032073, 0.022497, 0.009902, -0.034975, - -0.024568, 0.002588, 0.014212, 0.063051, 0.094210, -0.024004, -0.032456, 0.010886, -0.065248, - -0.068690, -0.040330, -0.012012, -0.023585, 0.006608, 0.017777, -0.017138, 0.014081, -0.032258, - -0.008736, -0.054195, -0.007913, -0.013583, -0.015723, 0.013518, -0.035460, -0.006379, 0.046137, - -0.021229, -0.045131, -0.036103, -0.057760, -0.000910, -0.046857, -0.025479, -0.035232, -0.005124, - 0.013734, 0.061755, 0.056687, -0.045301, -0.018332, -0.005401, -0.037045, -0.036061, -0.014314, - -0.011713, 0.100783, 0.039060, 0.010369, -0.038468, 0.000508, 0.035371, -0.060206, -0.017911, - 0.003256, -0.016990, -0.035732, 0.007383, -0.008571, 0.035845, 0.001342, -0.044676, -0.026119, - -0.063609, -0.049853, -0.017399, -0.026273, 0.067159, 0.038073, -0.001139, 0.035208, -0.004469, - -0.028561, -0.031210, -0.030260, -0.039383, -0.022353, 0.060415, -0.002795, -0.011899, 0.000172, - -0.009968, 0.012858, 0.029821, 0.000353, -0.019928, 0.018428, -0.050469, -0.008651, -0.032363, - -0.035672, 0.028967, 0.057316, -0.016601, 0.033698, 0.033013, -0.026349, -0.018108, -0.028910, - 0.021324, 0.039180, -0.024497, 0.021139, -0.015583, 0.004407, 0.021490, -0.031200, -0.033676, - -0.004119, 0.050177, -0.056313, 0.012272, 0.032483, 0.026684, -0.004574, -0.046003, -0.025993, - -0.034958, -0.028057, 0.010098, 0.047914, 0.031973, 0.049161, -0.021915, -0.048267, -0.001148, - 0.018661, -0.004771, 0.044514, -0.018874, -0.049797, 0.002872, 0.002320, -0.037754, -0.023538, - 0.018661, -0.004771, 0.044514, -0.018874, -0.049797, 0.002872, 0.002320, -0.037754, -0.023538, - -0.034958, -0.028057, 0.010098, 0.047914, 0.031973, 0.049161, -0.021915, -0.048267, -0.001148, - -0.004119, 0.050177, -0.056313, 0.012272, 0.032483, 0.026684, -0.004574, -0.046003, -0.025993, - 0.021324, 0.039180, -0.024497, 0.021139, -0.015583, 0.004407, 0.021490, -0.031200, -0.033676, - -0.035672, 0.028967, 0.057316, -0.016601, 0.033698, 0.033013, -0.026349, -0.018108, -0.028910, - -0.009968, 0.012858, 0.029821, 0.000353, -0.019928, 0.018428, -0.050469, -0.008651, -0.032363, - -0.028561, -0.031210, -0.030260, -0.039383, -0.022353, 0.060415, -0.002795, -0.011899, 0.000172, - -0.063609, -0.049853, -0.017399, -0.026273, 0.067159, 0.038073, -0.001139, 0.035208, -0.004469, - 0.003256, -0.016990, -0.035732, 0.007383, -0.008571, 0.035845, 0.001342, -0.044676, -0.026119, - -0.011713, 0.100783, 0.039060, 0.010369, -0.038468, 0.000508, 0.035371, -0.060206, -0.017911, - 0.013734, 0.061755, 0.056687, -0.045301, -0.018332, -0.005401, -0.037045, -0.036061, -0.014314, - -0.021229, -0.045131, -0.036103, -0.057760, -0.000910, -0.046857, -0.025479, -0.035232, -0.005124, - -0.008736, -0.054195, -0.007913, -0.013583, -0.015723, 0.013518, -0.035460, -0.006379, 0.046137, - -0.068690, -0.040330, -0.012012, -0.023585, 0.006608, 0.017777, -0.017138, 0.014081, -0.032258, - -0.024568, 0.002588, 0.014212, 0.063051, 0.094210, -0.024004, -0.032456, 0.010886, -0.065248, - 0.013686, 0.014057, -0.020287, 0.058919, 0.059929, -0.032073, 0.022497, 0.009902, -0.034975, - 0.016077, 0.078963, 0.147008, 0.034940, 0.030392, 0.002531, -0.061841, 0.004428, 0.010624, - -0.001494, 0.003395, -0.015666, -0.001281, -0.015388, 0.069651, 0.034933, 0.029121, 0.000683, - 0.047505, 0.014790, -0.055717, -0.006547, -0.063399, -0.043496, 0.011870, 0.042906, 0.006878, - -0.066191, -0.037985, -0.042766, -0.025162, -0.044404, 0.051964, 0.034720, 0.003909, -0.036374, - -0.008584, 0.037746, -0.031857, 0.013219, 0.008350, 0.015735, -0.031724, -0.048059, 0.011123, - 0.009654, 0.016214, 0.010496, 0.007397, -0.019941, -0.033647, -0.002490, 0.025962, 0.008321, - -0.022900, 0.057128, 0.036851, 0.073445, 0.017736, 0.017628, -0.022192, -0.015158, -0.046229, - -0.025645, -0.002318, 0.041499, 0.031071, 0.060203, 0.031473, 0.070811, -0.027596, -0.047924, - -0.026691, -0.073695, -0.071690, -0.068308, -0.043535, -0.025213, 0.026725, -0.000752, -0.020260, - -0.108919, -0.038652, 0.005704, 0.054819, 0.032720, 0.033638, 0.008457, 0.019632, -0.005139, - -0.071545, -0.009296, -0.023459, 0.045192, 0.020396, -0.006741, 0.021728, 0.031651, -0.014083, - -0.035698, 0.000985, -0.025795, 0.036473, 0.017171, 0.024230, 0.032632, 0.016997, 0.018326, - -0.037940, 0.012326, -0.003490, -0.017554, -0.020910, 0.026235, -0.010174, 0.004190, 0.066891, - 0.003469, -0.011130, -0.004150, 0.040006, 0.015873, 0.016114, 0.073338, 0.062341, 0.080658, - -0.003670, -0.023088, -0.035622, -0.045461, -0.046672, -0.049238, -0.011801, -0.020488, -0.055712, - -0.037817, -0.052436, -0.023193, 0.005549, 0.034550, 0.029897, -0.002000, 0.005016, -0.058663, - 0.016216, -0.011718, -0.040894, -0.005904, 0.033699, 0.008259, -0.023033, -0.021301, -0.064410, - 0.072452, 0.025901, -0.024832, -0.010907, 0.005683, 0.001193, 0.010009, 0.008570, -0.037345, - -0.010127, 0.062549, 0.040198, 0.012392, -0.044787, -0.007424, -0.028538, 0.009788, -0.001124, - -0.006418, 0.025437, 0.046089, 0.053013, 0.067599, 0.024783, 0.018958, 0.033403, 0.014570, - 0.003469, -0.011130, -0.004150, 0.040006, 0.015873, 0.016114, 0.073338, 0.062341, 0.080658, - -0.037940, 0.012326, -0.003490, -0.017554, -0.020910, 0.026235, -0.010174, 0.004190, 0.066891, - -0.035698, 0.000985, -0.025795, 0.036473, 0.017171, 0.024230, 0.032632, 0.016997, 0.018326, - -0.071545, -0.009296, -0.023459, 0.045192, 0.020396, -0.006741, 0.021728, 0.031651, -0.014083, - -0.108919, -0.038652, 0.005704, 0.054819, 0.032720, 0.033638, 0.008457, 0.019632, -0.005139, - -0.026691, -0.073695, -0.071690, -0.068308, -0.043535, -0.025213, 0.026725, -0.000752, -0.020260, - -0.006418, 0.025437, 0.046089, 0.053013, 0.067599, 0.024783, 0.018958, 0.033403, 0.014570, - -0.010127, 0.062549, 0.040198, 0.012392, -0.044787, -0.007424, -0.028538, 0.009788, -0.001124, - 0.072452, 0.025901, -0.024832, -0.010907, 0.005683, 0.001193, 0.010009, 0.008570, -0.037345, - 0.016216, -0.011718, -0.040894, -0.005904, 0.033699, 0.008259, -0.023033, -0.021301, -0.064410, - -0.037817, -0.052436, -0.023193, 0.005549, 0.034550, 0.029897, -0.002000, 0.005016, -0.058663, - -0.003670, -0.023088, -0.035622, -0.045461, -0.046672, -0.049238, -0.011801, -0.020488, -0.055712, - 11.000000, 4.000000, 31.000000, - 0.026959, 0.018789, 0.042944, 0.017043, 0.015888, 0.048672, 0.024571, -0.040523, -0.012724, 0.024320, -0.037690, - 0.006851, -0.001008, -0.082585, 0.006095, 0.042653, 0.000095, -0.072375, -0.039108, -0.010522, 0.088234, 0.032501, - 0.015557, 0.000628, -0.028918, -0.040139, -0.025942, -0.000420, 0.002144, 0.008478, -0.010360, 0.114391, 0.059169, - 0.031612, -0.000632, -0.032783, -0.005592, -0.020886, 0.034695, 0.031287, -0.023320, -0.024480, 0.059706, 0.025361, - -0.041027, -0.074064, -0.028377, 0.042180, 0.035618, -0.001354, -0.030550, -0.017221, 0.039263, -0.022900, -0.081364, - -0.045668, -0.043493, -0.055829, -0.015243, 0.041388, 0.019410, 0.012530, 0.062092, 0.098568, 0.056741, 0.013171, - -0.075837, -0.002488, 0.012937, -0.066006, -0.004504, -0.037036, -0.007607, 0.027855, 0.014973, 0.038700, -0.029747, - -0.052172, -0.043358, -0.072468, -0.033660, 0.040678, 0.040686, -0.024958, 0.055793, 0.033217, 0.031532, 0.028715, - -0.062712, -0.001191, 0.055282, -0.008137, 0.051614, 0.055700, 0.004928, -0.016025, 0.005973, 0.014967, -0.028208, - 0.026883, 0.025917, 0.024114, -0.081222, 0.053809, 0.051994, 0.003041, 0.050551, 0.023345, 0.002800, 0.032614, - -0.056491, 0.051745, 0.049455, -0.035378, 0.016229, 0.004374, -0.007766, -0.047357, -0.012777, 0.020136, 0.021379, - -0.009360, 0.026255, -0.027818, -0.020193, 0.040158, 0.022575, -0.044697, -0.077420, 0.002135, -0.007576, 0.088198, - -0.042358, -0.035816, -0.007672, -0.100801, -0.009487, -0.028157, -0.019524, -0.020399, 0.015715, 0.002007, -0.036633, - 0.065819, 0.004179, 0.081253, -0.045338, 0.011303, -0.004206, 0.037433, 0.016127, -0.027942, -0.009665, -0.009202, - -0.048637, 0.010262, 0.090198, -0.058766, -0.000880, 0.014346, -0.016366, -0.022276, -0.004665, 0.004818, -0.007782, - -0.022508, -0.009890, -0.040296, -0.018851, -0.019146, 0.019450, -0.006134, 0.004554, 0.016312, 0.013049, 0.075997, - -0.055455, 0.015208, 0.025569, 0.022289, 0.046640, -0.077974, -0.014235, -0.020535, -0.048962, -0.036250, -0.007843, - 0.039788, 0.019203, 0.064874, 0.034438, 0.016820, -0.048326, -0.029147, -0.029366, -0.021249, -0.051077, 0.057799, - 0.003148, 0.005813, 0.035566, -0.001593, -0.026311, -0.051256, 0.000637, -0.011114, -0.006711, 0.000111, 0.021488, - -0.091648, 0.007046, 0.019374, 0.018817, 0.028374, 0.010705, 0.024408, 0.044816, -0.032952, 0.051952, 0.018429, - -0.091648, 0.007046, 0.019374, 0.018817, 0.028374, 0.010705, 0.024408, 0.044816, -0.032952, 0.051952, 0.018429, - 0.003148, 0.005813, 0.035566, -0.001593, -0.026311, -0.051256, 0.000637, -0.011114, -0.006711, 0.000111, 0.021488, - 0.039788, 0.019203, 0.064874, 0.034438, 0.016820, -0.048326, -0.029147, -0.029366, -0.021249, -0.051077, 0.057799, - -0.055455, 0.015208, 0.025569, 0.022289, 0.046640, -0.077974, -0.014235, -0.020535, -0.048962, -0.036250, -0.007843, - -0.022508, -0.009890, -0.040296, -0.018851, -0.019146, 0.019450, -0.006134, 0.004554, 0.016312, 0.013049, 0.075997, - -0.048637, 0.010262, 0.090198, -0.058766, -0.000880, 0.014346, -0.016366, -0.022276, -0.004665, 0.004818, -0.007782, - 0.065819, 0.004179, 0.081253, -0.045338, 0.011303, -0.004206, 0.037433, 0.016127, -0.027942, -0.009665, -0.009202, - -0.042358, -0.035816, -0.007672, -0.100801, -0.009487, -0.028157, -0.019524, -0.020399, 0.015715, 0.002007, -0.036633, - -0.009360, 0.026255, -0.027818, -0.020193, 0.040158, 0.022575, -0.044697, -0.077420, 0.002135, -0.007576, 0.088198, - -0.056491, 0.051745, 0.049455, -0.035378, 0.016229, 0.004374, -0.007766, -0.047357, -0.012777, 0.020136, 0.021379, - 0.026883, 0.025917, 0.024114, -0.081222, 0.053809, 0.051994, 0.003041, 0.050551, 0.023345, 0.002800, 0.032614, - -0.062712, -0.001191, 0.055282, -0.008137, 0.051614, 0.055700, 0.004928, -0.016025, 0.005973, 0.014967, -0.028208, - -0.052172, -0.043358, -0.072468, -0.033660, 0.040678, 0.040686, -0.024958, 0.055793, 0.033217, 0.031532, 0.028715, - -0.075837, -0.002488, 0.012937, -0.066006, -0.004504, -0.037036, -0.007607, 0.027855, 0.014973, 0.038700, -0.029747, - -0.045668, -0.043493, -0.055829, -0.015243, 0.041388, 0.019410, 0.012530, 0.062092, 0.098568, 0.056741, 0.013171, - -0.041027, -0.074064, -0.028377, 0.042180, 0.035618, -0.001354, -0.030550, -0.017221, 0.039263, -0.022900, -0.081364, - 0.031612, -0.000632, -0.032783, -0.005592, -0.020886, 0.034695, 0.031287, -0.023320, -0.024480, 0.059706, 0.025361, - 0.015557, 0.000628, -0.028918, -0.040139, -0.025942, -0.000420, 0.002144, 0.008478, -0.010360, 0.114391, 0.059169, - 0.006851, -0.001008, -0.082585, 0.006095, 0.042653, 0.000095, -0.072375, -0.039108, -0.010522, 0.088234, 0.032501, - 0.026959, 0.018789, 0.042944, 0.017043, 0.015888, 0.048672, 0.024571, -0.040523, -0.012724, 0.024320, -0.037690, - -0.038770, -0.055549, 0.029717, 0.042509, 0.023738, 0.068026, -0.014497, 0.076238, 0.052360, 0.064428, -0.062460, - 0.017867, 0.051409, 0.054966, -0.006948, -0.071462, 0.022829, 0.053757, 0.078843, 0.067884, 0.065782, -0.010679, - -0.007606, 0.070740, 0.031241, 0.058857, 0.002497, -0.031599, 0.008374, -0.037821, -0.036056, 0.000223, -0.040464, - 0.017140, 0.014779, 0.001225, -0.036413, -0.026116, 0.005511, 0.025999, 0.024990, 0.016881, 0.034545, -0.048919, - 0.025248, -0.035700, 0.007251, -0.005068, -0.037805, -0.039695, -0.051582, -0.021450, 0.065046, -0.030803, -0.021332, - -0.010767, 0.027885, 0.002326, -0.028243, -0.024647, 0.019672, 0.056917, 0.028798, 0.048030, -0.007077, -0.028339, - -0.082356, 0.013499, 0.043053, 0.007693, -0.032709, -0.004130, -0.003274, 0.012212, 0.012791, -0.060787, -0.043610, - -0.007447, 0.019570, 0.044826, 0.031751, -0.010427, -0.003395, 0.033549, 0.061155, 0.015204, -0.022470, -0.027566, - -0.033817, -0.060643, -0.049747, -0.029915, -0.005910, -0.000511, 0.013246, 0.007726, -0.013652, 0.009568, 0.006497, - 0.079853, 0.092510, -0.006548, -0.009086, 0.024383, 0.054310, -0.003151, -0.014733, -0.013054, -0.000311, 0.041359, - 0.020383, 0.024037, 0.009286, 0.081503, 0.036364, 0.026866, -0.004318, -0.027239, 0.031326, 0.015756, 0.010290, - -0.036790, 0.012262, -0.002440, 0.011112, -0.024680, 0.019655, 0.071398, 0.031153, -0.025788, 0.032089, -0.005348, - -0.037781, -0.031168, -0.022212, 0.002014, -0.020758, -0.004165, -0.017036, 0.014659, -0.035609, -0.061098, 0.021330, - 0.046144, -0.002111, -0.059654, 0.001699, -0.063455, -0.010160, 0.006319, -0.035854, -0.044130, -0.016756, -0.017006, - 0.006068, -0.039913, -0.063411, 0.003948, -0.045613, 0.030166, -0.000487, -0.006489, 0.016100, 0.016336, -0.030315, - -0.005161, 0.026315, -0.086859, -0.003925, -0.010548, 0.022836, 0.006078, 0.021449, 0.001491, -0.028692, -0.013197, - -0.005161, 0.026315, -0.086859, -0.003925, -0.010548, 0.022836, 0.006078, 0.021449, 0.001491, -0.028692, -0.013197, - 0.006068, -0.039913, -0.063411, 0.003948, -0.045613, 0.030166, -0.000487, -0.006489, 0.016100, 0.016336, -0.030315, - 0.046144, -0.002111, -0.059654, 0.001699, -0.063455, -0.010160, 0.006319, -0.035854, -0.044130, -0.016756, -0.017006, - -0.037781, -0.031168, -0.022212, 0.002014, -0.020758, -0.004165, -0.017036, 0.014659, -0.035609, -0.061098, 0.021330, - -0.036790, 0.012262, -0.002440, 0.011112, -0.024680, 0.019655, 0.071398, 0.031153, -0.025788, 0.032089, -0.005348, - 0.020383, 0.024037, 0.009286, 0.081503, 0.036364, 0.026866, -0.004318, -0.027239, 0.031326, 0.015756, 0.010290, - 0.079853, 0.092510, -0.006548, -0.009086, 0.024383, 0.054310, -0.003151, -0.014733, -0.013054, -0.000311, 0.041359, - -0.033817, -0.060643, -0.049747, -0.029915, -0.005910, -0.000511, 0.013246, 0.007726, -0.013652, 0.009568, 0.006497, - -0.007447, 0.019570, 0.044826, 0.031751, -0.010427, -0.003395, 0.033549, 0.061155, 0.015204, -0.022470, -0.027566, - -0.082356, 0.013499, 0.043053, 0.007693, -0.032709, -0.004130, -0.003274, 0.012212, 0.012791, -0.060787, -0.043610, - -0.010767, 0.027885, 0.002326, -0.028243, -0.024647, 0.019672, 0.056917, 0.028798, 0.048030, -0.007077, -0.028339, - 0.025248, -0.035700, 0.007251, -0.005068, -0.037805, -0.039695, -0.051582, -0.021450, 0.065046, -0.030803, -0.021332, - 0.017140, 0.014779, 0.001225, -0.036413, -0.026116, 0.005511, 0.025999, 0.024990, 0.016881, 0.034545, -0.048919, - -0.007606, 0.070740, 0.031241, 0.058857, 0.002497, -0.031599, 0.008374, -0.037821, -0.036056, 0.000223, -0.040464, - 0.017867, 0.051409, 0.054966, -0.006948, -0.071462, 0.022829, 0.053757, 0.078843, 0.067884, 0.065782, -0.010679, - -0.038770, -0.055549, 0.029717, 0.042509, 0.023738, 0.068026, -0.014497, 0.076238, 0.052360, 0.064428, -0.062460, - 0.009136, 0.027281, 0.049760, 0.122861, 0.056537, 0.098337, 0.076522, 0.031147, 0.077289, 0.073231, -0.048546, - 0.011388, 0.049844, -0.017363, 0.070164, 0.051477, 0.058404, 0.042970, 0.042372, -0.013257, 0.098432, -0.022327, - 0.011388, 0.049844, -0.017363, 0.070164, 0.051477, 0.058404, 0.042970, 0.042372, -0.013257, 0.098432, -0.022327, - 0.009136, 0.027281, 0.049760, 0.122861, 0.056537, 0.098337, 0.076522, 0.031147, 0.077289, 0.073231, -0.048546, - -0.064946, -0.071474, 0.047868, 0.141123, 0.087700, 0.081676, -0.039895, 0.055398, 0.049258, 0.007032, -0.130573, - 0.025445, 0.054779, 0.014237, 0.009336, -0.041560, 0.048092, 0.007532, 0.034617, 0.066234, 0.089714, -0.003258, - -0.048476, 0.060481, 0.006214, 0.021465, -0.009781, -0.023464, 0.065495, 0.034086, 0.042981, 0.044939, -0.065205, - -0.035276, -0.022890, -0.039738, -0.033349, 0.002783, 0.011881, 0.019853, 0.077732, 0.035712, 0.058194, -0.051716, - -0.021011, -0.000965, 0.134989, 0.037499, -0.030783, -0.036686, -0.052658, -0.032412, 0.022550, 0.001769, -0.045035, - 0.053074, 0.109147, 0.073701, -0.067595, -0.004059, 0.006991, 0.021336, 0.053793, 0.057480, 0.010838, 0.031367, - -0.115460, 0.078894, 0.033722, -0.038896, -0.026315, -0.014508, -0.015290, -0.043473, 0.010703, -0.009410, 0.001914, - -0.015106, 0.018901, -0.002242, 0.001056, 0.002942, -0.049548, -0.023609, -0.040090, -0.008756, -0.036891, 0.040510, - -0.050268, -0.048287, -0.006372, -0.124684, -0.040822, -0.050565, -0.051562, -0.051689, -0.028916, -0.003366, -0.042004, - 0.120285, 0.095001, 0.077086, -0.054929, -0.005894, 0.022576, 0.011661, -0.004611, -0.050116, -0.029677, -0.017092, - -0.032935, 0.018413, 0.051477, 0.023157, 0.018111, 0.035155, -0.003049, -0.056355, 0.007395, -0.017478, -0.026208, - -0.038422, 0.017385, -0.052263, -0.019699, -0.064965, 0.001865, 0.023191, 0.003918, -0.018386, -0.031928, 0.017386, - -0.053974, 0.017144, 0.012935, -0.001089, -0.014762, -0.051617, -0.003208, -0.050147, -0.039075, -0.065035, -0.038360, - 0.084970, 0.062897, 0.018053, 0.000909, -0.037235, -0.017189, 0.018261, -0.091209, -0.055122, -0.074069, -0.070717, - 0.044408, -0.027451, -0.008272, -0.023838, -0.043009, 0.036954, 0.064543, -0.052581, 0.009735, -0.033696, -0.051641, - -0.067015, -0.001121, -0.053008, -0.010822, 0.010371, 0.059171, 0.044217, 0.005563, 0.023205, 0.003411, -0.030635, - -0.067015, -0.001121, -0.053008, -0.010822, 0.010371, 0.059171, 0.044217, 0.005563, 0.023205, 0.003411, -0.030635, - 0.044408, -0.027451, -0.008272, -0.023838, -0.043009, 0.036954, 0.064543, -0.052581, 0.009735, -0.033696, -0.051641, - 0.084970, 0.062897, 0.018053, 0.000909, -0.037235, -0.017189, 0.018261, -0.091209, -0.055122, -0.074069, -0.070717, - -0.053974, 0.017144, 0.012935, -0.001089, -0.014762, -0.051617, -0.003208, -0.050147, -0.039075, -0.065035, -0.038360, - -0.038422, 0.017385, -0.052263, -0.019699, -0.064965, 0.001865, 0.023191, 0.003918, -0.018386, -0.031928, 0.017386, - -0.032935, 0.018413, 0.051477, 0.023157, 0.018111, 0.035155, -0.003049, -0.056355, 0.007395, -0.017478, -0.026208, - 0.120285, 0.095001, 0.077086, -0.054929, -0.005894, 0.022576, 0.011661, -0.004611, -0.050116, -0.029677, -0.017092, - -0.050268, -0.048287, -0.006372, -0.124684, -0.040822, -0.050565, -0.051562, -0.051689, -0.028916, -0.003366, -0.042004, - -0.015106, 0.018901, -0.002242, 0.001056, 0.002942, -0.049548, -0.023609, -0.040090, -0.008756, -0.036891, 0.040510, - -0.115460, 0.078894, 0.033722, -0.038896, -0.026315, -0.014508, -0.015290, -0.043473, 0.010703, -0.009410, 0.001914, - 0.053074, 0.109147, 0.073701, -0.067595, -0.004059, 0.006991, 0.021336, 0.053793, 0.057480, 0.010838, 0.031367, - -0.021011, -0.000965, 0.134989, 0.037499, -0.030783, -0.036686, -0.052658, -0.032412, 0.022550, 0.001769, -0.045035, - -0.035276, -0.022890, -0.039738, -0.033349, 0.002783, 0.011881, 0.019853, 0.077732, 0.035712, 0.058194, -0.051716, - -0.048476, 0.060481, 0.006214, 0.021465, -0.009781, -0.023464, 0.065495, 0.034086, 0.042981, 0.044939, -0.065205, - 0.025445, 0.054779, 0.014237, 0.009336, -0.041560, 0.048092, 0.007532, 0.034617, 0.066234, 0.089714, -0.003258, - -0.064946, -0.071474, 0.047868, 0.141123, 0.087700, 0.081676, -0.039895, 0.055398, 0.049258, 0.007032, -0.130573, - -0.113930, -0.091797, -0.033616, -0.037951, -0.006268, 0.017121, -0.013633, 0.000864, -0.039789, -0.051632, -0.025088, - -0.063760, 0.012461, 0.083876, 0.037483, 0.084656, 0.070686, 0.048165, 0.039070, 0.018610, 0.026091, 0.044440, - -0.017497, 0.020408, 0.017448, -0.056339, -0.037200, -0.000360, 0.002198, -0.005104, 0.001198, 0.049665, 0.093718, - -0.028371, 0.011735, -0.002689, 0.020721, 0.072718, 0.093836, 0.054295, 0.058903, 0.056000, 0.104780, 0.111881, - -0.041345, -0.059559, -0.070004, -0.040649, -0.049118, -0.042441, -0.052027, -0.029867, -0.014400, -0.049724, -0.128442, - 0.027095, 0.025962, -0.021637, -0.021791, 0.002591, 0.050679, 0.023601, 0.014533, 0.043938, 0.036681, -0.057847, - 0.054634, 0.086744, 0.015688, -0.050679, -0.073653, -0.094170, -0.056683, -0.042088, -0.004560, 0.018779, -0.046074, - -0.021906, 0.041671, 0.038199, 0.022599, 0.028368, 0.022587, 0.017139, 0.019899, 0.030918, 0.057093, -0.008334, - -0.028371, 0.011735, -0.002689, 0.020721, 0.072718, 0.093836, 0.054295, 0.058903, 0.056000, 0.104780, 0.111881, - -0.017497, 0.020408, 0.017448, -0.056339, -0.037200, -0.000360, 0.002198, -0.005104, 0.001198, 0.049665, 0.093718, - -0.063760, 0.012461, 0.083876, 0.037483, 0.084656, 0.070686, 0.048165, 0.039070, 0.018610, 0.026091, 0.044440, - -0.113930, -0.091797, -0.033616, -0.037951, -0.006268, 0.017121, -0.013633, 0.000864, -0.039789, -0.051632, -0.025088, - -0.021906, 0.041671, 0.038199, 0.022599, 0.028368, 0.022587, 0.017139, 0.019899, 0.030918, 0.057093, -0.008334, - 0.054634, 0.086744, 0.015688, -0.050679, -0.073653, -0.094170, -0.056683, -0.042088, -0.004560, 0.018779, -0.046074, - 0.027095, 0.025962, -0.021637, -0.021791, 0.002591, 0.050679, 0.023601, 0.014533, 0.043938, 0.036681, -0.057847, - -0.041345, -0.059559, -0.070004, -0.040649, -0.049118, -0.042441, -0.052027, -0.029867, -0.014400, -0.049724, -0.128442, diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/interface.yaml b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/interface.yaml deleted file mode 100644 index 7b0ad987636..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/interface.yaml +++ /dev/null @@ -1,3 +0,0 @@ -- name: dpm_ttic - publish: [/obj_X/image_obj] - subscribe: [/config/obj_X/dpm, /image_raw] diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/launch/vision_dpm_ttic_detect.launch b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/launch/vision_dpm_ttic_detect.launch deleted file mode 100644 index 1137357e54d..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/launch/vision_dpm_ttic_detect.launch +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/nodes/vision_dpm_ttic_detect/vision_dpm_ttic_detect.cpp b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/nodes/vision_dpm_ttic_detect/vision_dpm_ttic_detect.cpp deleted file mode 100644 index 55526befa27..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/nodes/vision_dpm_ttic_detect/vision_dpm_ttic_detect.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2015-2019 Autoware Foundation. 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 - -#include "autoware_msgs/ImageObj.h" -#include "autoware_config_msgs/ConfigPedestrianDPM.h" - -#include - -#define XSTR(x) #x -#define STR(x) XSTR(x) - -static ros::Publisher image_obj_pub; - -#if defined(HAS_GPU) -static DPMTTICGPU *gpu_model; -static bool use_gpu = true; -#endif -static DPMTTIC *ttic_model; - -static DPMTTICParam ttic_param; - -static std::string object_class;static long int counter; - -static std::string image_topic_name; - -static void set_default_param(DPMTTICParam& param) -{ - param.overlap = 0.4; - param.threshold = -0.5; - param.lambda = 10; - param.num_cells = 8;counter =0; -} - -static void result_to_image_obj_message(autoware_msgs::ImageObj& msg, const DPMTTICResult result) -{ - for (int i = 0; i < result.num; ++i) { - autoware_msgs::ImageRect rect; - - int base = i * 4; - rect.x = result.corner_points[base]; - rect.y = result.corner_points[base+1]; - rect.width = result.corner_points[base+2]; - rect.height = result.corner_points[base+3]; - rect.score = result.score[i]; - - msg.obj.push_back(rect); - } -} - -static void image_raw_cb(const sensor_msgs::Image& image_source) -{ - - cv_bridge::CvImagePtr cv_image = cv_bridge::toCvCopy(image_source, sensor_msgs::image_encodings::BGR8); - IplImage img = cv_image->image; - IplImage *img_ptr = &img; - - autoware_msgs::ImageObj msg; - msg.header = image_source.header; - msg.type = object_class; - -#if defined(HAS_GPU) - if (use_gpu) { - DPMTTICResult result = gpu_model->detect_objects(img_ptr, ttic_param); - result_to_image_obj_message(msg, result); - } else { -#endif - DPMTTICResult result = ttic_model->detect_objects(img_ptr, ttic_param); - result_to_image_obj_message(msg, result); -#if defined(HAS_GPU) - } -#endif - - image_obj_pub.publish(msg); - counter++; -} - -static void config_cb(const autoware_config_msgs::ConfigPedestrianDPM::ConstPtr& param) -{ - ttic_param.threshold = param->score_threshold; - ttic_param.overlap = param->group_threshold; - ttic_param.lambda = param->Lambda; - ttic_param.num_cells = param->num_cells; -} - -#if defined(HAS_GPU) -static std::string get_cubin_path(const ros::NodeHandle& n, const char *default_path) -{ - std::string path; - if (n.hasParam("/car_detector/cubin")) { - n.getParam("/car_detector/cubin", path); - } else { - path = std::string(default_path); - } - - return path; -} -#endif - -int main(int argc, char* argv[]) -{ - ros::init(argc, argv, "dpm_ttic"); - - ros::NodeHandle n; - ros::NodeHandle private_nh("~"); - - if (!private_nh.getParam("image_raw_topic", image_topic_name)) { - image_topic_name = "/image_raw"; - } - - if (!private_nh.getParam("detection_class_name", object_class)) { - object_class = "car"; - } - - std::string comp_csv_path; - if (!private_nh.getParam("comp_model_path", comp_csv_path)) { - comp_csv_path = STR(MODEL_DIR) "car_comp.csv"; - } - - std::string root_csv_path; - if (!private_nh.getParam("root_model_path", root_csv_path)) { - root_csv_path = STR(MODEL_DIR) "car_root.csv"; - } - - std::string part_csv_path; - if (!private_nh.getParam("part_model_path", part_csv_path)) { - part_csv_path = STR(MODEL_DIR) "car_part.csv"; - } - -#if defined(HAS_GPU) - if (!private_nh.getParam("use_gpu", use_gpu)) { - use_gpu = false; - } - - std::string cubin = get_cubin_path(n, STR(DEFAULT_CUBIN)); - if (use_gpu) { - dpm_ttic_gpu_init_cuda(cubin); - } -#endif - - set_default_param(ttic_param); - - const char *com_csv = comp_csv_path.c_str(); - const char *root_csv = root_csv_path.c_str(); - const char *part_csv = part_csv_path.c_str(); - -#if defined(HAS_GPU) - if (use_gpu) { - gpu_model = new DPMTTICGPU(com_csv, root_csv, part_csv); - } else { -#endif - ttic_model = new DPMTTIC(com_csv, root_csv, part_csv); -#if defined(HAS_GPU) - } -#endif - - ros::Subscriber sub = n.subscribe(image_topic_name, 1, image_raw_cb); - image_obj_pub = n.advertise("image_obj", 1); - - ros::Subscriber config_sub; - std::string config_topic("/config"); - config_topic += ros::this_node::getNamespace() + "/dpm"; - config_sub = n.subscribe(config_topic, 1, config_cb); - - ros::spin(); -#if defined(HAS_GPU) - if (use_gpu) { - dpm_ttic_gpu_cleanup_cuda(); - delete gpu_model; - } else { -#endif - delete ttic_model; -#if defined(HAS_GPU) - } -#endif - - return 0; -} diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/package.xml b/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/package.xml deleted file mode 100644 index bb8316e30f6..00000000000 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_dpm_ttic_detect/package.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - vision_dpm_ttic_detect - 1.11.0 - The vision_dpm_ttic_detect package - amc - Apache 2 - - catkin - autoware_build_flags - - cv_bridge - roscpp - sensor_msgs - std_msgs - autoware_config_msgs - autoware_msgs - libdpm_ttic - libopencv-dev - - cv_bridge - roscpp - sensor_msgs - std_msgs - autoware_config_msgs - autoware_msgs - libdpm_ttic - libopencv-dev - - diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_lane_detect/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/packages/vision_lane_detect/CMakeLists.txt index cbddfdcc1c6..96c327efe24 100644 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_lane_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/vision_detector/packages/vision_lane_detect/CMakeLists.txt @@ -41,6 +41,7 @@ target_link_libraries(vision_lane_detect ) add_dependencies(vision_lane_detect ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS vision_lane_detect diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_segment_enet_detect/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/packages/vision_segment_enet_detect/CMakeLists.txt index 76aa0feb22f..a61f6deb37d 100644 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_segment_enet_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/vision_detector/packages/vision_segment_enet_detect/CMakeLists.txt @@ -6,6 +6,7 @@ FIND_PACKAGE(catkin REQUIRED COMPONENTS image_transport roscpp sensor_msgs + autoware_build_flags ) FIND_PACKAGE(CUDA) FIND_PACKAGE(OpenCV REQUIRED) @@ -31,7 +32,9 @@ INCLUDE_DIRECTORIES( ##############################ENet's CAFFE FORK NEEDS TO BE PREVIOUSLY COMPILED#################### set(ENET_CAFFE_PATH "$ENV{HOME}/ENet/caffe-enet/distribute") #################################################################################################### -if (EXISTS "${ENET_CAFFE_PATH}" AND ${CUDA_FOUND}) +AW_CHECK_CUDA() + +if (USE_CUDA AND EXISTS "${ENET_CAFFE_PATH}") ADD_EXECUTABLE(vision_segment_enet_detect nodes/vision_segment_enet_detect/vision_segment_enet_detect_node.cpp diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/CMakeLists.txt b/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/CMakeLists.txt index c19cace836f..b1f44bdd767 100644 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/CMakeLists.txt +++ b/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 2.8.12) project(vision_ssd_detect) -set(ROS_VERSION $ENV{ROS_DISTRO}) - include(FindPkgConfig) find_package(autoware_build_flags REQUIRED) @@ -44,21 +42,20 @@ include_directories( ${catkin_INCLUDE_DIRS} ) -IF (CUDA_FOUND) - include_directories(${CUDA_INCLUDE_DIRS}) - - IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") - link_directories(/usr/lib/arm-linux-gnueabihf/tegra) - endif () -ENDIF () - #####SSD######## ##############################SSD'sFORK of CAFFE NEEDS TO BE PREVIOUSLY COMPILED#################### set(SSD_CAFFE_PATH "$ENV{HOME}/ssdcaffe/distribute") #################################################################################################### -if (EXISTS "${SSD_CAFFE_PATH}") +AW_CHECK_CUDA() + +if (USE_CUDA AND EXISTS "${SSD_CAFFE_PATH}") + include_directories(${CUDA_INCLUDE_DIRS}) + + IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm") + link_directories(/usr/lib/arm-linux-gnueabihf/tegra) + endif () add_executable(vision_ssd_detect src/vision_ssd_detect.cpp src/vision_ssd_detect_node.cpp diff --git a/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/package.xml b/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/package.xml index 47f97d101a6..3eaf26ad413 100644 --- a/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/package.xml +++ b/ros/src/computing/perception/detection/vision_detector/packages/vision_ssd_detect/package.xml @@ -17,7 +17,6 @@ std_msgs autoware_msgs autoware_config_msgs - libdpm_ttic tf gnss libopencv-dev @@ -30,7 +29,6 @@ std_msgs autoware_msgs autoware_config_msgs - libdpm_ttic tf gnss libopencv-dev diff --git a/ros/src/computing/perception/detection/vision_tracker/packages/vision_beyond_track/CMakeLists.txt b/ros/src/computing/perception/detection/vision_tracker/packages/vision_beyond_track/CMakeLists.txt index 8a91e0936f2..940edf1397b 100644 --- a/ros/src/computing/perception/detection/vision_tracker/packages/vision_beyond_track/CMakeLists.txt +++ b/ros/src/computing/perception/detection/vision_tracker/packages/vision_beyond_track/CMakeLists.txt @@ -54,6 +54,7 @@ target_link_libraries(vision_beyond_track add_dependencies(vision_beyond_track ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS beyond_track_lib vision_beyond_track diff --git a/ros/src/computing/perception/detection/visualizers/packages/integrated_viewer/CMakeLists.txt b/ros/src/computing/perception/detection/visualizers/packages/integrated_viewer/CMakeLists.txt index 500aebdd0ec..26a05dff805 100644 --- a/ros/src/computing/perception/detection/visualizers/packages/integrated_viewer/CMakeLists.txt +++ b/ros/src/computing/perception/detection/visualizers/packages/integrated_viewer/CMakeLists.txt @@ -131,5 +131,6 @@ install(FILES add_dependencies(${PROJECT_NAME} ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) #endif() diff --git a/ros/src/computing/perception/localization/lib/ndt_gpu/CMakeLists.txt b/ros/src/computing/perception/localization/lib/ndt_gpu/CMakeLists.txt index 41cfba3c6ef..d070f34edfa 100644 --- a/ros/src/computing/perception/localization/lib/ndt_gpu/CMakeLists.txt +++ b/ros/src/computing/perception/localization/lib/ndt_gpu/CMakeLists.txt @@ -1,7 +1,8 @@ cmake_minimum_required(VERSION 2.8.3) project(ndt_gpu) -find_package(catkin REQUIRED) +find_package(catkin REQUIRED COMPONENTS + autoware_build_flags) find_package(PCL REQUIRED) find_package(CUDA) @@ -18,7 +19,9 @@ else () set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) endif () -if (CUDA_FOUND) +AW_CHECK_CUDA() + +if (USE_CUDA) set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "") if(CMAKE_CROSSCOMPILING) diff --git a/ros/src/computing/perception/localization/lib/ndt_gpu/package.xml b/ros/src/computing/perception/localization/lib/ndt_gpu/package.xml index 4936eaaa71a..d1eb6074d2c 100644 --- a/ros/src/computing/perception/localization/lib/ndt_gpu/package.xml +++ b/ros/src/computing/perception/localization/lib/ndt_gpu/package.xml @@ -7,6 +7,7 @@ Anh Viet Nguyen Apache 2 catkin + autoware_build_flags libpcl-all-dev diff --git a/ros/src/computing/perception/localization/packages/autoware_connector/CMakeLists.txt b/ros/src/computing/perception/localization/packages/autoware_connector/CMakeLists.txt index 1f8a45feafb..c07db0ba518 100644 --- a/ros/src/computing/perception/localization/packages/autoware_connector/CMakeLists.txt +++ b/ros/src/computing/perception/localization/packages/autoware_connector/CMakeLists.txt @@ -34,6 +34,7 @@ target_link_libraries(can_status_translator add_dependencies(can_status_translator ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) add_executable(can_odometry @@ -47,6 +48,7 @@ target_link_libraries(can_odometry add_dependencies(can_odometry ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS can_status_translator diff --git a/ros/src/computing/perception/localization/packages/lidar_localizer/CMakeLists.txt b/ros/src/computing/perception/localization/packages/lidar_localizer/CMakeLists.txt index a8dc9a8fd76..8c9bfebb691 100644 --- a/ros/src/computing/perception/localization/packages/lidar_localizer/CMakeLists.txt +++ b/ros/src/computing/perception/localization/packages/lidar_localizer/CMakeLists.txt @@ -14,14 +14,18 @@ if (OPENMP_FOUND) endif () find_package(CUDA) +find_package(Eigen3 QUIET) +find_package(autoware_build_flags REQUIRED) +find_package(autoware_msgs REQUIRED) +find_package(autoware_config_msgs REQUIRED) + +AW_CHECK_CUDA() -if (CUDA_FOUND) +if (USE_CUDA) add_definitions(-DCUDA_FOUND) list(APPEND PCL_OPENMP_PACKAGES ndt_gpu) endif () -find_package(Eigen3 QUIET) - if (NOT EIGEN3_FOUND) # Fallback to cmake_modules find_package(cmake_modules REQUIRED) @@ -33,12 +37,6 @@ else () set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) endif () - -find_package(autoware_build_flags REQUIRED) - -find_package(autoware_msgs REQUIRED) - -find_package(autoware_config_msgs REQUIRED) find_package(catkin REQUIRED COMPONENTS roscpp std_msgs @@ -51,6 +49,7 @@ find_package(catkin REQUIRED COMPONENTS ndt_tku ndt_cpu autoware_health_checker + jsk_rviz_plugins ${PCL_OPENMP_PACKAGES} autoware_msgs autoware_config_msgs @@ -60,7 +59,15 @@ find_package(catkin REQUIRED COMPONENTS ## catkin specific configuration ## ################################### catkin_package( - CATKIN_DEPENDS std_msgs velodyne_pointcloud autoware_msgs autoware_config_msgs ndt_tku ndt_cpu ${PCL_OPENMP_PACKAGES} + CATKIN_DEPENDS + std_msgs + velodyne_pointcloud + autoware_msgs + autoware_config_msgs + ndt_tku + ndt_cpu + jsk_rviz_plugins + ${PCL_OPENMP_PACKAGES} DEPENDS PCL ) @@ -82,7 +89,7 @@ add_executable(ndt_mapping nodes/ndt_mapping/ndt_mapping.cpp) target_link_libraries(ndt_mapping ${catkin_LIBRARIES}) add_dependencies(ndt_mapping ${catkin_EXPORTED_TARGETS}) -if (CUDA_FOUND) +if (USE_CUDA) target_include_directories(ndt_matching PRIVATE ${CUDA_INCLUDE_DIRS}) target_include_directories(ndt_mapping PRIVATE ${CUDA_INCLUDE_DIRS}) endif () diff --git a/ros/src/computing/perception/localization/packages/lidar_localizer/package.xml b/ros/src/computing/perception/localization/packages/lidar_localizer/package.xml index 0c0c00ce509..8beffb9941c 100644 --- a/ros/src/computing/perception/localization/packages/lidar_localizer/package.xml +++ b/ros/src/computing/perception/localization/packages/lidar_localizer/package.xml @@ -26,6 +26,7 @@ libpcl-all-dev eigen autoware_health_checker + jsk_rviz_plugins roscpp std_msgs @@ -45,6 +46,7 @@ libpcl-all eigen autoware_health_checker + jsk_rviz_plugins diff --git a/ros/src/computing/perception/semantics/packages/object_map/CMakeLists.txt b/ros/src/computing/perception/semantics/packages/object_map/CMakeLists.txt index 5d7e9c100ec..f4368326cbd 100644 --- a/ros/src/computing/perception/semantics/packages/object_map/CMakeLists.txt +++ b/ros/src/computing/perception/semantics/packages/object_map/CMakeLists.txt @@ -80,6 +80,7 @@ add_executable(potential_field ) add_dependencies(potential_field ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) target_link_libraries(potential_field ${catkin_LIBRARIES} diff --git a/ros/src/computing/planning/common/lib/openplanner/op_planner/CMakeLists.txt b/ros/src/computing/planning/common/lib/openplanner/op_planner/CMakeLists.txt index b1013d2df08..e8e47756fa4 100644 --- a/ros/src/computing/planning/common/lib/openplanner/op_planner/CMakeLists.txt +++ b/ros/src/computing/planning/common/lib/openplanner/op_planner/CMakeLists.txt @@ -1,9 +1,6 @@ cmake_minimum_required(VERSION 2.8.3) project(op_planner) -# Get a ros version -set(ROS_VERSION $ENV{ROS_DISTRO}) - find_package(catkin REQUIRED COMPONENTS autoware_build_flags cmake_modules diff --git a/ros/src/computing/planning/common/lib/openplanner/op_ros_helpers/CMakeLists.txt b/ros/src/computing/planning/common/lib/openplanner/op_ros_helpers/CMakeLists.txt index 1afef90403a..bc359910a84 100644 --- a/ros/src/computing/planning/common/lib/openplanner/op_ros_helpers/CMakeLists.txt +++ b/ros/src/computing/planning/common/lib/openplanner/op_ros_helpers/CMakeLists.txt @@ -1,7 +1,5 @@ cmake_minimum_required(VERSION 2.8.3) project(op_ros_helpers) -set(ROS_VERSION $ENV{ROS_DISTRO}) - find_package(autoware_build_flags REQUIRED) @@ -43,10 +41,7 @@ catkin_package( vector_map_msgs ) -SET(CMAKE_CXX_FLAGS "-O2 -g -Wall -Wno-unused-result -DROS ${CMAKE_CXX_FLAGS}") -if ("${ROS_VERSION}" MATCHES "(kinetic)") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DROS_KINETIC") -endif () +SET(CMAKE_CXX_FLAGS "-O2 -g -Wall -Wno-unused-result ${CMAKE_CXX_FLAGS}") include_directories( include diff --git a/ros/src/computing/planning/common/lib/openplanner/op_simu/CMakeLists.txt b/ros/src/computing/planning/common/lib/openplanner/op_simu/CMakeLists.txt index f07973c1339..c788fcd0bc7 100644 --- a/ros/src/computing/planning/common/lib/openplanner/op_simu/CMakeLists.txt +++ b/ros/src/computing/planning/common/lib/openplanner/op_simu/CMakeLists.txt @@ -3,9 +3,6 @@ project(op_simu) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -# Get a ros version -set(ROS_VERSION $ENV{ROS_DISTRO}) - find_package(autoware_build_flags REQUIRED) find_package(catkin REQUIRED COMPONENTS diff --git a/ros/src/computing/planning/common/lib/openplanner/op_utility/CMakeLists.txt b/ros/src/computing/planning/common/lib/openplanner/op_utility/CMakeLists.txt index 5bb854915ab..ade6d31731a 100644 --- a/ros/src/computing/planning/common/lib/openplanner/op_utility/CMakeLists.txt +++ b/ros/src/computing/planning/common/lib/openplanner/op_utility/CMakeLists.txt @@ -3,8 +3,6 @@ project(op_utility) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -set(ROS_VERSION $ENV{ROS_DISTRO}) - find_package(autoware_build_flags REQUIRED) find_package(vector_map_msgs REQUIRED) diff --git a/ros/src/computing/planning/decision/packages/decision_maker/CMakeLists.txt b/ros/src/computing/planning/decision/packages/decision_maker/CMakeLists.txt index f30761c526a..21fd273a16d 100644 --- a/ros/src/computing/planning/decision/packages/decision_maker/CMakeLists.txt +++ b/ros/src/computing/planning/decision/packages/decision_maker/CMakeLists.txt @@ -32,6 +32,7 @@ find_package(catkin REQUIRED COMPONENTS vector_map_msgs rostest rosunit + jsk_rviz_plugins ) catkin_package( @@ -46,6 +47,7 @@ catkin_package( jsk_recognition_msgs amathutils_lib state_machine_lib + jsk_rviz_plugins ) include_directories( include/decision_maker diff --git a/ros/src/computing/planning/decision/packages/decision_maker/package.xml b/ros/src/computing/planning/decision/packages/decision_maker/package.xml index 871302b9687..b742b672468 100644 --- a/ros/src/computing/planning/decision/packages/decision_maker/package.xml +++ b/ros/src/computing/planning/decision/packages/decision_maker/package.xml @@ -24,6 +24,7 @@ state_machine_lib rostest rosunit + jsk_rviz_plugins roscpp std_msgs @@ -37,6 +38,7 @@ dynamic_reconfigure amathutils_lib state_machine_lib + jsk_rviz_plugins diff --git a/ros/src/computing/planning/mission/packages/freespace_planner/CMakeLists.txt b/ros/src/computing/planning/mission/packages/freespace_planner/CMakeLists.txt index f8bd73ff02a..df04e3fed36 100644 --- a/ros/src/computing/planning/mission/packages/freespace_planner/CMakeLists.txt +++ b/ros/src/computing/planning/mission/packages/freespace_planner/CMakeLists.txt @@ -40,6 +40,7 @@ target_link_libraries(astar_navi add_dependencies(astar_navi ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS astar_navi diff --git a/ros/src/computing/planning/motion/packages/dp_planner/CMakeLists.txt b/ros/src/computing/planning/motion/packages/dp_planner/CMakeLists.txt index 0c9c590da78..42120091c63 100644 --- a/ros/src/computing/planning/motion/packages/dp_planner/CMakeLists.txt +++ b/ros/src/computing/planning/motion/packages/dp_planner/CMakeLists.txt @@ -1,6 +1,5 @@ cmake_minimum_required(VERSION 2.8.3) project(dp_planner) -set(ROS_VERSION $ENV{ROS_DISTRO}) find_package(autoware_build_flags REQUIRED) @@ -54,9 +53,6 @@ catkin_package( ########### SET(CMAKE_CXX_FLAGS "-O2 -g -Wall -Wno-unused-result -DROS ${CMAKE_CXX_FLAGS}") -if ("${ROS_VERSION}" MATCHES "(kinetic)") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DROS_KINETIC") -endif () include_directories( include include/plannerh diff --git a/ros/src/computing/planning/motion/packages/op_local_planner/CMakeLists.txt b/ros/src/computing/planning/motion/packages/op_local_planner/CMakeLists.txt index 6d19312901e..b67b56d109d 100644 --- a/ros/src/computing/planning/motion/packages/op_local_planner/CMakeLists.txt +++ b/ros/src/computing/planning/motion/packages/op_local_planner/CMakeLists.txt @@ -1,8 +1,5 @@ cmake_minimum_required(VERSION 2.8.3) project(op_local_planner) -set(ROS_VERSION $ENV{ROS_DISTRO}) - - find_package(autoware_build_flags REQUIRED) @@ -51,10 +48,6 @@ catkin_package( ########### -if ("${ROS_VERSION}" MATCHES "(kinetic)") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DROS_KINETIC") -endif() - include_directories( include ${catkin_INCLUDE_DIRS} diff --git a/ros/src/computing/planning/motion/packages/op_simulation_package/CMakeLists.txt b/ros/src/computing/planning/motion/packages/op_simulation_package/CMakeLists.txt index 0e2cefd2c33..b386d74ec16 100644 --- a/ros/src/computing/planning/motion/packages/op_simulation_package/CMakeLists.txt +++ b/ros/src/computing/planning/motion/packages/op_simulation_package/CMakeLists.txt @@ -47,10 +47,6 @@ catkin_package( ## Build ## ########### -if ("${ROS_VERSION}" MATCHES "(kinetic)") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DROS_KINETIC") -endif() - include_directories( include ${catkin_INCLUDE_DIRS} diff --git a/ros/src/computing/planning/motion/packages/waypoint_follower/CMakeLists.txt b/ros/src/computing/planning/motion/packages/waypoint_follower/CMakeLists.txt index 04a1d371f11..0965d1e9496 100644 --- a/ros/src/computing/planning/motion/packages/waypoint_follower/CMakeLists.txt +++ b/ros/src/computing/planning/motion/packages/waypoint_follower/CMakeLists.txt @@ -66,6 +66,7 @@ include_directories( add_library(libwaypoint_follower lib/libwaypoint_follower.cpp) add_dependencies(libwaypoint_follower ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) target_link_libraries(libwaypoint_follower ${catkin_LIBRARIES}) @@ -90,7 +91,8 @@ add_dependencies(twist_filter add_executable(twist_gate nodes/twist_gate/twist_gate_node.cpp nodes/twist_gate/twist_gate.cpp) target_link_libraries(twist_gate ${catkin_LIBRARIES}) add_dependencies(twist_gate - ${catkin_EXPORTED_TARGETS}) + ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp) ## Install executables and/or libraries install(TARGETS libwaypoint_follower pure_pursuit wf_simulator twist_filter twist_gate diff --git a/ros/src/computing/planning/motion/packages/waypoint_maker/nodes/waypoint_velocity_visualizer/waypoint_velocity_visualizer.cpp b/ros/src/computing/planning/motion/packages/waypoint_maker/nodes/waypoint_velocity_visualizer/waypoint_velocity_visualizer.cpp index a44f2e0b35e..7090ecf1d34 100644 --- a/ros/src/computing/planning/motion/packages/waypoint_maker/nodes/waypoint_velocity_visualizer/waypoint_velocity_visualizer.cpp +++ b/ros/src/computing/planning/motion/packages/waypoint_maker/nodes/waypoint_velocity_visualizer/waypoint_velocity_visualizer.cpp @@ -179,11 +179,7 @@ void WaypointVelocityVisualizer::deleteMarkers() { velocity_marker_array_.markers.clear(); visualization_msgs::Marker marker; -#ifndef ROS_KINETIC - marker.action = visualization_msgs::Marker::DELETE; -#else marker.action = visualization_msgs::Marker::DELETEALL; -#endif velocity_marker_array_.markers.push_back(marker); velocity_marker_pub_.publish(velocity_marker_array_); } diff --git a/ros/src/data/packages/map_file/CMakeLists.txt b/ros/src/data/packages/map_file/CMakeLists.txt index c7cb61eb68b..7ebf9343cd3 100644 --- a/ros/src/data/packages/map_file/CMakeLists.txt +++ b/ros/src/data/packages/map_file/CMakeLists.txt @@ -65,7 +65,10 @@ target_link_libraries(get_file ${CURL_LIBRARIES}) add_executable(points_map_loader nodes/points_map_loader/points_map_loader.cpp) target_link_libraries(points_map_loader ${catkin_LIBRARIES} get_file ${CURL_LIBRARIES} ${PCL_IO_LIBRARIES}) -add_dependencies(points_map_loader ${catkin_EXPORTED_TARGETS}) +add_dependencies(points_map_loader + ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp + ) add_executable(vector_map_loader nodes/vector_map_loader/vector_map_loader.cpp) target_link_libraries(vector_map_loader ${catkin_LIBRARIES} ${vector_map_LIBRARIES} get_file ${CURL_LIBRARIES}) diff --git a/ros/src/driveworks/packages/autoware_driveworks_gmsl_interface/CMakeLists.txt b/ros/src/driveworks/packages/autoware_driveworks_gmsl_interface/CMakeLists.txt index cd50c3bac20..7ce1a627c15 100644 --- a/ros/src/driveworks/packages/autoware_driveworks_gmsl_interface/CMakeLists.txt +++ b/ros/src/driveworks/packages/autoware_driveworks_gmsl_interface/CMakeLists.txt @@ -2,8 +2,13 @@ cmake_minimum_required(VERSION 2.8.3) project(autoware_driveworks_gmsl_interface) find_package(CUDA) - -if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" AND CUDA_FOUND) +find_library(DRIVEWORKS_FOUND NAMES driveworks) +find_library(NVMEDIA_FOUND NAMES nvmedia) +if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" + AND CUDA_FOUND + AND DRIVEWORKS_FOUND + AND NVMEDIA_FOUND +) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(DRIVEWORKS_LINKER_FLAGS "-Wl,--unresolved-symbols=ignore-in-object-files -Wl,--allow-shlib-undefined") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/ros/src/driveworks/packages/autoware_driveworks_interface/CMakeLists.txt b/ros/src/driveworks/packages/autoware_driveworks_interface/CMakeLists.txt index 031059681e8..c3306f2e0f7 100755 --- a/ros/src/driveworks/packages/autoware_driveworks_interface/CMakeLists.txt +++ b/ros/src/driveworks/packages/autoware_driveworks_interface/CMakeLists.txt @@ -18,8 +18,11 @@ find_package(CUDA) catkin_package( CATKIN_DEPENDS std_msgs sensor_msgs autoware_msgs ) - -if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" AND CUDA_FOUND) +find_library(DRIVEWORKS_FOUND NAMES driveworks) +if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "aarch64" + AND CUDA_FOUND + AND DRIVEWORKS_FOUND +) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(DRIVEWORKS_LINKER_FLAGS "-Wl,--unresolved-symbols=ignore-in-object-files -Wl,--allow-shlib-undefined") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") diff --git a/ros/src/sensing/drivers/camera/packages/pointgrey/package.xml b/ros/src/sensing/drivers/camera/packages/pointgrey/package.xml index 5b65d13287f..b62c3bbfc47 100644 --- a/ros/src/sensing/drivers/camera/packages/pointgrey/package.xml +++ b/ros/src/sensing/drivers/camera/packages/pointgrey/package.xml @@ -26,7 +26,6 @@ image_transport v4l-utils - gstreamer0.10-plugins-good gscam diff --git a/ros/src/sensing/fusion/packages/calibration_publisher/CMakeLists.txt b/ros/src/sensing/fusion/packages/calibration_publisher/CMakeLists.txt index 75501d488bc..df5920f4d4c 100644 --- a/ros/src/sensing/fusion/packages/calibration_publisher/CMakeLists.txt +++ b/ros/src/sensing/fusion/packages/calibration_publisher/CMakeLists.txt @@ -43,6 +43,7 @@ add_dependencies(calibration_publisher target_link_libraries(calibration_publisher ${catkin_LIBRARIES} + ${OpenCV_LIBS} ) install(TARGETS calibration_publisher diff --git a/ros/src/sensing/fusion/packages/calibration_publisher/package.xml b/ros/src/sensing/fusion/packages/calibration_publisher/package.xml index 8de30317a75..e732aa228f7 100644 --- a/ros/src/sensing/fusion/packages/calibration_publisher/package.xml +++ b/ros/src/sensing/fusion/packages/calibration_publisher/package.xml @@ -19,5 +19,6 @@ cv_bridge image_transport tf + libopencv-dev \ No newline at end of file diff --git a/ros/src/sensing/fusion/packages/points2image/CMakeLists.txt b/ros/src/sensing/fusion/packages/points2image/CMakeLists.txt index f0655c94e49..6edbc58d26b 100644 --- a/ros/src/sensing/fusion/packages/points2image/CMakeLists.txt +++ b/ros/src/sensing/fusion/packages/points2image/CMakeLists.txt @@ -61,7 +61,10 @@ include_directories( add_library(points_image lib/points_image/points_image.cpp ) -add_dependencies(points_image ${catkin_EXPORTED_TARGETS}) +add_dependencies(points_image + ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp + ) target_link_libraries(points_image ${OpenCV_LIBS} ) diff --git a/ros/src/simulation/gazebo_simulator/worlds/external/osrf_citysim b/ros/src/simulation/gazebo_simulator/worlds/external/osrf_citysim index 53b8483d098..27bd05bc6c7 160000 --- a/ros/src/simulation/gazebo_simulator/worlds/external/osrf_citysim +++ b/ros/src/simulation/gazebo_simulator/worlds/external/osrf_citysim @@ -1 +1 @@ -Subproject commit 53b8483d098999298498854f3795a9f01c5e8828 +Subproject commit 27bd05bc6c762b3ad8c9bb85f678d4b7ce7a27c5 diff --git a/ros/src/socket/packages/tablet_socket/CMakeLists.txt b/ros/src/socket/packages/tablet_socket/CMakeLists.txt index fdd7ca8ff31..3719e07291c 100644 --- a/ros/src/socket/packages/tablet_socket/CMakeLists.txt +++ b/ros/src/socket/packages/tablet_socket/CMakeLists.txt @@ -39,9 +39,12 @@ add_dependencies(tablet_receiver ${catkin_EXPORTED_TARGETS}) add_executable(tablet_sender nodes/tablet_sender/tablet_sender.cpp) target_link_libraries(tablet_sender ${catkin_LIBRARIES}) -add_dependencies(tablet_sender ${catkin_EXPORTED_TARGETS}) +add_dependencies(tablet_sender + ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp + ) install(TARGETS tablet_receiver tablet_sender ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) \ No newline at end of file + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) diff --git a/ros/src/socket/packages/vehicle_socket/CMakeLists.txt b/ros/src/socket/packages/vehicle_socket/CMakeLists.txt index 73f1528c6b0..5dbca5f0896 100644 --- a/ros/src/socket/packages/vehicle_socket/CMakeLists.txt +++ b/ros/src/socket/packages/vehicle_socket/CMakeLists.txt @@ -41,6 +41,7 @@ add_executable(vehicle_sender nodes/vehicle_sender/vehicle_sender.cpp) target_link_libraries(vehicle_sender ${catkin_LIBRARIES}) add_dependencies(vehicle_sender ${catkin_EXPORTED_TARGETS} + autoware_msgs_generate_messages_cpp ) install(TARGETS vehicle_sender vehicle_receiver diff --git a/ros/src/util/packages/autoware_bag_tools/CMakeLists.txt b/ros/src/util/packages/autoware_bag_tools/CMakeLists.txt index d774f392fc3..7b43f04c666 100644 --- a/ros/src/util/packages/autoware_bag_tools/CMakeLists.txt +++ b/ros/src/util/packages/autoware_bag_tools/CMakeLists.txt @@ -3,6 +3,10 @@ project(autoware_bag_tools) find_package(catkin REQUIRED COMPONENTS rospy rosbag nmea_msgs roslib) +find_package(cmake_modules REQUIRED) + +find_package(TinyXML REQUIRED) + catkin_package( CATKIN_DEPENDS rosbag nmea_msgs roslib ) @@ -17,11 +21,11 @@ install(PROGRAMS add_executable(nmea2kml nodes/nmea2kml/nmea2kml.cpp nodes/nmea2kml/ReadNMEASentence.cpp) -target_link_libraries(nmea2kml ${catkin_LIBRARIES}) +target_link_libraries(nmea2kml ${catkin_LIBRARIES} ${TinyXML_LIBRARIES}) add_dependencies(nmea2kml ${catkin_EXPORTED_TARGETS}) install(TARGETS nmea2kml ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) \ No newline at end of file + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) diff --git a/ros/src/util/packages/autoware_bag_tools/package.xml b/ros/src/util/packages/autoware_bag_tools/package.xml index 6fc5c20a919..f77f5eeaf8d 100644 --- a/ros/src/util/packages/autoware_bag_tools/package.xml +++ b/ros/src/util/packages/autoware_bag_tools/package.xml @@ -15,5 +15,8 @@ rosbag nmea_msgs - roslib - \ No newline at end of file + roslib + tinyxml + + cmake_modules + diff --git a/ros/src/util/packages/autoware_launcher/plugins/refs/native_motion_predict.yaml b/ros/src/util/packages/autoware_launcher/plugins/refs/native_motion_predict.yaml index 8984229d41c..d703de467bc 100644 --- a/ros/src/util/packages/autoware_launcher/plugins/refs/native_motion_predict.yaml +++ b/ros/src/util/packages/autoware_launcher/plugins/refs/native_motion_predict.yaml @@ -4,12 +4,13 @@ args: - {name: interval_sec, type: real, default: 0.1} - {name: num_prediction, type: int, default: 10} - {name: sensor_height, type: real, default: 2.0} +- {name: filter_out_close_object_threshold, type: real, default: 1.5} - {name: input_topic, type: str, default: /detection/objects} - panel: widget: node.panel frames: - {target: args.interval_sec, widget: basic.real} - {target: args.num_prediction, widget: basic.int} - {target: args.sensor_height, widget: basic.real} + - {target: args.filter_out_close_object_threshold, widget: basic.real} - {target: args.input_topic, widget: basic.text} \ No newline at end of file diff --git a/ros/src/util/packages/runtime_manager/scripts/computing.yaml b/ros/src/util/packages/runtime_manager/scripts/computing.yaml index bb9c196a490..bca5371bc1e 100755 --- a/ros/src/util/packages/runtime_manager/scripts/computing.yaml +++ b/ros/src/util/packages/runtime_manager/scripts/computing.yaml @@ -126,31 +126,6 @@ subs : desc : vision_detector desc sample subs : - - name : vision_dpm_ttic_detect - desc : vision_dpm_ttic_detect desc sample - cmd : roslaunch vision_dpm_ttic_detect vision_dpm_ttic_detect.launch - param: dpm_ttic - gui : - flags : [ open_dialog, need_camera_info ] - config_dialog : MyDialogCarPedestrian - car_pedestrian_obj_key : { car : car_dpm, pedestrian : pedestrian_dpm } - open_dialog : MyDialogDPM - use_gpu : - flags : [ nl ] - car : - user_category : Detection Target - pedestrian : - border : 16 - flags : [ left ] - part_model_car : - flags : [ hline ] - sel_cam_dialog_only : [ camera_id ] - sel_cam_dialog_allow: [ camera_id ] - camera_id : - border : 16 - flags : [ all ] - sync : - func : self.button_synchronization.GetValue() - name : vision_ssd_detect desc : vision_ssd_detect desc sample cmd : roslaunch vision_ssd_detect vision_ssd_detect.launch