From 948365b1c84df0ee94fbf2711df968d9aa147275 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 11:07:35 +0400 Subject: [PATCH 01/82] Add new app dedicated for training soft cascades. --- apps/sft/CMakeLists.txt | 37 ++++++++++ apps/sft/include/sft/common.hpp | 53 +++++++++++++++ apps/sft/include/sft/octave.hpp | 63 +++++++++++++++++ apps/sft/octave.cpp | 47 +++++++++++++ apps/sft/sft.cpp | 117 ++++++++++++++++++++++++++++++++ 5 files changed, 317 insertions(+) create mode 100644 apps/sft/CMakeLists.txt create mode 100644 apps/sft/include/sft/common.hpp create mode 100644 apps/sft/include/sft/octave.hpp create mode 100644 apps/sft/octave.cpp create mode 100644 apps/sft/sft.cpp diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt new file mode 100644 index 0000000000..3980a29d93 --- /dev/null +++ b/apps/sft/CMakeLists.txt @@ -0,0 +1,37 @@ +if(IOS OR ANDROID) + return() +endif() + +set(the_target stf) +set(name ${the_target}) + +set(OPENCV_${the_target}_DEPS opencv_core opencv_objdetect opencv_highgui opencv_imgproc opencv_ml) +ocv_check_dependencies(${OPENCV_${the_target}_DEPS}) + +if(NOT OCV_DEPENDENCIES_FOUND) + return() +endif() + +project(${the_target}) + +ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include" "${OpenCV_SOURCE_DIR}/include/opencv") +ocv_include_modules(${OPENCV_${the_target}_DEPS}) + +file(GLOB ${the_target}_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) + +add_executable(${the_target} ${${the_target}_SOURCES}) + +target_link_libraries(${the_target} ${OPENCV_${the_target}_DEPS}) + +set_target_properties(${the_target} PROPERTIES + DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" + ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} + RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} + INSTALL_NAME_DIR lib + OUTPUT_NAME ${name}) + +if(ENABLE_SOLUTION_FOLDERS) + set_target_properties(${the_target} PROPERTIES FOLDER "applications") +endif() + +install(TARGETS ${the_target} RUNTIME DESTINATION bin COMPONENT main) \ No newline at end of file diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp new file mode 100644 index 0000000000..86d2355470 --- /dev/null +++ b/apps/sft/include/sft/common.hpp @@ -0,0 +1,53 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __SFT_COMMON_HPP__ +#define __SFT_COMMON_HPP__ + +#include + +namespace sft +{ + using cv::Mat; +} + +#endif \ No newline at end of file diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp new file mode 100644 index 0000000000..dab07ef0fc --- /dev/null +++ b/apps/sft/include/sft/octave.hpp @@ -0,0 +1,63 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __SFT_OCTAVE_HPP__ +#define __SFT_OCTAVE_HPP__ + +#include + +namespace sft +{ + +// used for traning single octave scale +class Octave : public cv::Boost +{ +public: + Octave(); + ~Octave(); + +private: +}; + +} + +#endif \ No newline at end of file diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp new file mode 100644 index 0000000000..a18f082a57 --- /dev/null +++ b/apps/sft/octave.cpp @@ -0,0 +1,47 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include + +sft::Octave::Octave(){} + +sft::Octave::~Octave(){} \ No newline at end of file diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp new file mode 100644 index 0000000000..255919d89b --- /dev/null +++ b/apps/sft/sft.cpp @@ -0,0 +1,117 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +// Trating application for Soft Cascades. + +#include +#include + +int main(int argc, char** argv) +{ +// hard coded now + int nfeatures = 50; + int npositives = 10; + int nnegatives = 10; + int nsamples = npositives + nnegatives; + + sft::Octave boost; + cv::Mat train_data(nfeatures, nsamples, CV_32FC1); + + // cv::RNG rng; + + // for (int y = 0; y < nfeatures; ++y) + // for (int x = 0; x < nsamples; ++x) + // train_data.at(y, x) = rng.uniform(0.f, 1.f); + + // int tflag = CV_COL_SAMPLE; + // Mat responses(nsamples, 1, CV_32FC1); + // for (int y = 0; y < nsamples; ++y) + // responses.at(y, 0) = (y < npositives) ? 1.f : 0.f; + + + // Mat var_idx(1, nfeatures, CV_32SC1); + // for (int x = 0; x < nfeatures; ++x) + // var_idx.at(0, x) = x; + + // // Mat sample_idx; + // Mat sample_idx(1, nsamples, CV_32SC1); + // for (int x = 0; x < nsamples; ++x) + // sample_idx.at(0, x) = x; + + // Mat var_type(1, nfeatures + 1, CV_8UC1); + // for (int x = 0; x < nfeatures; ++x) + // var_type.at(0, x) = CV_VAR_ORDERED; + + // var_type.at(0, nfeatures) = CV_VAR_CATEGORICAL; + + // Mat missing_mask; + + // CvBoostParams params; + // { + // params.max_categories = 10; + // params.max_depth = 2; + // params.min_sample_count = 2; + // params.cv_folds = 0; + // params.truncate_pruned_tree = false; + + // /// ?????????????????? + // params.regression_accuracy = 0.01; + // params.use_surrogates = false; + // params.use_1se_rule = false; + + // ///////// boost params + // params.boost_type = CvBoost::GENTLE; + // params.weak_count = 1; + // params.split_criteria = CvBoost::SQERR; + // params.weight_trim_rate = 0.95; + // } + + // bool update = false; + + // boost.train(train_data, tflag, responses, + // var_idx, sample_idx, var_type, missing_mask, params, update); + + // CvFileStorage* fs = cvOpenFileStorage( "/home/kellan/train_res.xml", 0, CV_STORAGE_WRITE ); + // boost.write(fs, "test_res"); + + // cvReleaseFileStorage( &fs ); +} \ No newline at end of file From 86973f8edea92a7d93f3a9714a1fe55a6e59c574 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 12:19:35 +0400 Subject: [PATCH 02/82] feature pool generation: - use random from tr1 extension - extend cv::Boost --- apps/sft/include/sft/common.hpp | 3 ++ apps/sft/include/sft/octave.hpp | 49 +++++++++++++++++++- apps/sft/include/sft/random.hpp | 75 ++++++++++++++++++++++++++++++ apps/sft/octave.cpp | 79 ++++++++++++++++++++++++++++++- apps/sft/sft.cpp | 82 +++++++++++++++++---------------- 5 files changed, 245 insertions(+), 43 deletions(-) create mode 100644 apps/sft/include/sft/random.hpp diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 86d2355470..6d62dfdb59 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -48,6 +48,9 @@ namespace sft { using cv::Mat; + struct ICF; + typedef std::vector Icfvector; + } #endif \ No newline at end of file diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index dab07ef0fc..9243ef7793 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -44,18 +44,63 @@ #define __SFT_OCTAVE_HPP__ #include +#include namespace sft { +struct ICF +{ + ICF(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} + + bool operator ==(ICF b) + { + return bb == b.bb && channel == b.channel; + } + + bool operator !=(ICF b) + { + return bb != b.bb || channel != b.channel; + } + +private: + cv::Rect bb; + int channel; +}; + +class FeaturePool +{ +public: + FeaturePool(cv::Size model, int nfeatures); + ~FeaturePool(); +private: + void fill(int desired); + + cv::Size model; + int nfeatures; + + Mat integrals; + Mat responces; + + Icfvector pool; + + static const unsigned int seed = 0; + + enum { N_CHANNELS = 10 }; +}; + // used for traning single octave scale -class Octave : public cv::Boost +class Octave : cv::Boost { public: Octave(); - ~Octave(); + virtual ~Octave(); + + virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); private: + CvBoostParams params; }; } diff --git a/apps/sft/include/sft/random.hpp b/apps/sft/include/sft/random.hpp new file mode 100644 index 0000000000..d9d9f7843d --- /dev/null +++ b/apps/sft/include/sft/random.hpp @@ -0,0 +1,75 @@ +#ifndef __SFT_RANDOM_HPP__ +#define __SFT_RANDOM_HPP__ + +#if defined(_MSC_VER) && _MSC_VER >= 1600 + +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} + +#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 + +# if defined (__cplusplus) && __cplusplus > 201100L +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} +# else +# include + +namespace sft { +struct Random +{ + typedef std::tr1::mt19937 engine; + typedef std::tr1::uniform_int uniform; +}; +} +# endif + +#else +#include +namespace rnd { + +typedef cv::RNG engine; + +template +struct uniform_int +{ + uniform_int(const int _min, const int _max) : min(_min), max(_max) {} + T operator() (engine& eng, const int bound) const + { + return (T)eng.uniform(min, bound); + } + + T operator() (engine& eng) const + { + return (T)eng.uniform(min, max); + } + +private: + int min; + int max; +}; + +} + +namespace sft { +struct Random +{ + typedef rnd::engine engine; + typedef rnd::uniform_int uniform; +}; +} + +#endif + +#endif \ No newline at end of file diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index a18f082a57..60eed96f89 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -41,7 +41,84 @@ //M*/ #include +#include +#if defined VISUALIZE_GENERATION +# include +# define show(a, b) \ + do { \ + cv::imshow(a,b); \ + cv::waitkey(0); \ + } while(0) +#else +# define show(a, b) +#endif + +// ============ Octave ============ // sft::Octave::Octave(){} -sft::Octave::~Octave(){} \ No newline at end of file +sft::Octave::~Octave(){} + +bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx, + const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) +{ + bool update = false; + return cv::Boost::train(trainData, CV_COL_SAMPLE, responses, varIdx, sampleIdx, varType, missingDataMask, params, + update); +} + +// ========= FeaturePool ========= // +sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) +{ + CV_Assert(m != cv::Size() && n > 0); + fill(nfeatures); +} + +sft::FeaturePool::~FeaturePool(){} + + +void sft::FeaturePool::fill(int desired) +{ + + int mw = model.width; + int mh = model.height; + + int maxPoolSize = (mw -1) * mw / 2 * (mh - 1) * mh / 2 * N_CHANNELS; + + nfeatures = std::min(desired, maxPoolSize); + + pool.reserve(nfeatures); + + sft::Random::engine eng(seed); + sft::Random::engine eng_ch(seed); + + sft::Random::uniform chRand(0, N_CHANNELS - 1); + + sft::Random::uniform xRand(0, model.width - 2); + sft::Random::uniform yRand(0, model.height - 2); + + sft::Random::uniform wRand(1, model.width - 1); + sft::Random::uniform hRand(1, model.height - 1); + + while (pool.size() < size_t(nfeatures)) + { + int x = xRand(eng); + int y = yRand(eng); + + int w = 1 + wRand(eng, model.width - x - 1); + int h = 1 + hRand(eng, model.height - y - 1); + + CV_Assert(w > 0); + CV_Assert(h > 0); + + CV_Assert(w + x < model.width); + CV_Assert(h + y < model.height); + + int ch = chRand(eng_ch); + + sft::ICF f(x, y, w, h, ch); + + if (std::find(pool.begin(), pool.end(),f) == pool.end()) + pool.push_back(f); + } +} \ No newline at end of file diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 255919d89b..7b98071bae 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -52,63 +52,65 @@ int main(int argc, char** argv) int npositives = 10; int nnegatives = 10; int nsamples = npositives + nnegatives; + cv::Size model(64, 128); sft::Octave boost; cv::Mat train_data(nfeatures, nsamples, CV_32FC1); - // cv::RNG rng; + sft::FeaturePool pool(model, nfeatures); - // for (int y = 0; y < nfeatures; ++y) - // for (int x = 0; x < nsamples; ++x) - // train_data.at(y, x) = rng.uniform(0.f, 1.f); + cv::RNG rng; - // int tflag = CV_COL_SAMPLE; - // Mat responses(nsamples, 1, CV_32FC1); - // for (int y = 0; y < nsamples; ++y) - // responses.at(y, 0) = (y < npositives) ? 1.f : 0.f; + for (int y = 0; y < nfeatures; ++y) + for (int x = 0; x < nsamples; ++x) + train_data.at(y, x) = rng.uniform(0.f, 1.f); + + int tflag = CV_COL_SAMPLE; + cv::Mat responses(nsamples, 1, CV_32FC1); + for (int y = 0; y < nsamples; ++y) + responses.at(y, 0) = (y < npositives) ? 1.f : 0.f; - // Mat var_idx(1, nfeatures, CV_32SC1); - // for (int x = 0; x < nfeatures; ++x) - // var_idx.at(0, x) = x; + cv::Mat var_idx(1, nfeatures, CV_32SC1); + for (int x = 0; x < nfeatures; ++x) + var_idx.at(0, x) = x; - // // Mat sample_idx; - // Mat sample_idx(1, nsamples, CV_32SC1); - // for (int x = 0; x < nsamples; ++x) - // sample_idx.at(0, x) = x; + // Mat sample_idx; + cv::Mat sample_idx(1, nsamples, CV_32SC1); + for (int x = 0; x < nsamples; ++x) + sample_idx.at(0, x) = x; - // Mat var_type(1, nfeatures + 1, CV_8UC1); - // for (int x = 0; x < nfeatures; ++x) - // var_type.at(0, x) = CV_VAR_ORDERED; + cv::Mat var_type(1, nfeatures + 1, CV_8UC1); + for (int x = 0; x < nfeatures; ++x) + var_type.at(0, x) = CV_VAR_ORDERED; - // var_type.at(0, nfeatures) = CV_VAR_CATEGORICAL; + var_type.at(0, nfeatures) = CV_VAR_CATEGORICAL; - // Mat missing_mask; + cv::Mat missing_mask; - // CvBoostParams params; - // { - // params.max_categories = 10; - // params.max_depth = 2; - // params.min_sample_count = 2; - // params.cv_folds = 0; - // params.truncate_pruned_tree = false; + CvBoostParams params; + { + params.max_categories = 10; + params.max_depth = 2; + params.min_sample_count = 2; + params.cv_folds = 0; + params.truncate_pruned_tree = false; - // /// ?????????????????? - // params.regression_accuracy = 0.01; - // params.use_surrogates = false; - // params.use_1se_rule = false; + /// ?????????????????? + params.regression_accuracy = 0.01; + params.use_surrogates = false; + params.use_1se_rule = false; - // ///////// boost params - // params.boost_type = CvBoost::GENTLE; - // params.weak_count = 1; - // params.split_criteria = CvBoost::SQERR; - // params.weight_trim_rate = 0.95; - // } + ///////// boost params + params.boost_type = CvBoost::GENTLE; + params.weak_count = 1; + params.split_criteria = CvBoost::SQERR; + params.weight_trim_rate = 0.95; + } - // bool update = false; + bool update = false; - // boost.train(train_data, tflag, responses, - // var_idx, sample_idx, var_type, missing_mask, params, update); + boost.train(train_data, responses, var_idx, sample_idx, var_type, missing_mask); // CvFileStorage* fs = cvOpenFileStorage( "/home/kellan/train_res.xml", 0, CV_STORAGE_WRITE ); // boost.write(fs, "test_res"); From 554080d89b87dad454ab1e545c56ce320b3015a5 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 12:59:20 +0400 Subject: [PATCH 03/82] add file globbing --- apps/sft/include/sft/common.hpp | 6 +++- apps/sft/include/sft/octave.hpp | 13 ++++++++- apps/sft/include/sft/random.hpp | 42 +++++++++++++++++++++++++++ apps/sft/octave.cpp | 50 ++++++++++++++++++++++++++++++++- apps/sft/sft.cpp | 5 +++- 5 files changed, 112 insertions(+), 4 deletions(-) diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 6d62dfdb59..e1ad52641e 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -49,8 +49,12 @@ namespace sft { using cv::Mat; struct ICF; - typedef std::vector Icfvector; + typedef std::string string; + + typedef std::vector Icfvector; + typedef std::vector svector; } + #endif \ No newline at end of file diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 9243ef7793..e2b206af8c 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -49,6 +49,16 @@ namespace sft { +class Dataset +{ +public: + Dataset(const sft::string& path, const int octave); + +private: + svector pos; + svector neg; +}; + struct ICF { ICF(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} @@ -93,12 +103,13 @@ private: class Octave : cv::Boost { public: - Octave(); + Octave(int logScale); virtual ~Octave(); virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); + int logScale; private: CvBoostParams params; }; diff --git a/apps/sft/include/sft/random.hpp b/apps/sft/include/sft/random.hpp index d9d9f7843d..e184da6294 100644 --- a/apps/sft/include/sft/random.hpp +++ b/apps/sft/include/sft/random.hpp @@ -1,3 +1,45 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + #ifndef __SFT_RANDOM_HPP__ #define __SFT_RANDOM_HPP__ diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 60eed96f89..c8004b724d 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -54,8 +54,10 @@ # define show(a, b) #endif +#include + // ============ Octave ============ // -sft::Octave::Octave(){} +sft::Octave::Octave(int ls) : logScale(ls) {} sft::Octave::~Octave(){} @@ -121,4 +123,50 @@ void sft::FeaturePool::fill(int desired) if (std::find(pool.begin(), pool.end(),f) == pool.end()) pool.push_back(f); } +} + +// ============ Dataset ============ // +namespace { +using namespace sft; + +string itoa(long i) +{ + char s[65]; + sprintf(s, "%ld", i); + return std::string(s); +} + +void glob(const string& path, svector& ret) +{ + glob_t glob_result; + glob(path.c_str(), GLOB_TILDE, 0, &glob_result); + + ret.clear(); + ret.reserve(glob_result.gl_pathc); + + for(uint i = 0; i < glob_result.gl_pathc; ++i) + { + ret.push_back(std::string(glob_result.gl_pathv[i])); + // dprintf("%s\n", ret[i].c_str()); + } + + globfree(&glob_result); +} +} +// in the default case data folders should be alligned as following: +// 1. positives: /octave_/pos/*.png +// 2. negatives: /octave_/neg/*.png +Dataset::Dataset(const string& path, const int oct) +{ + // dprintf("%s\n", "get dataset file names..."); + + // dprintf("%s\n", "Positives globbing..."); + glob(path + "/pos/octave_" + itoa(oct) + "/*.png", pos); + + // dprintf("%s\n", "Negatives globbing..."); + glob(path + "/neg/octave_" + itoa(oct) + "/*.png", neg); + + // Check: files not empty + CV_Assert(pos.size() != size_t(0)); + CV_Assert(neg.size() != size_t(0)); } \ No newline at end of file diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 7b98071bae..e671c21c0c 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -51,13 +51,16 @@ int main(int argc, char** argv) int nfeatures = 50; int npositives = 10; int nnegatives = 10; + int nsamples = npositives + nnegatives; cv::Size model(64, 128); + std::string path = "/home/kellan/cuda-dev/opencv_extra/testdata/sctrain/rescaled-train-2012-10-27-19-02-52"; - sft::Octave boost; + sft::Octave boost(0); cv::Mat train_data(nfeatures, nsamples, CV_32FC1); sft::FeaturePool pool(model, nfeatures); + sft::Dataset(path, boost.logScale); cv::RNG rng; From 4ca760d9c93eb36559aadcc7c22ceddbb8a1d84f Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 13:04:26 +0400 Subject: [PATCH 04/82] debug output information. --- apps/sft/include/sft/common.hpp | 10 ++++++++++ apps/sft/octave.cpp | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index e1ad52641e..25bd699ca3 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -56,5 +56,15 @@ namespace sft typedef std::vector svector; } +// used for noisy printfs +#define WITH_DEBUG_OUT + +#if defined WITH_DEBUG_OUT +# include +# define dprintf(format, ...) \ + do { printf(format, ##__VA_ARGS__); } while (0) +#else +# define dprintf(format, ...) +#endif #endif \ No newline at end of file diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index c8004b724d..613d4c6e3d 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -147,7 +147,7 @@ void glob(const string& path, svector& ret) for(uint i = 0; i < glob_result.gl_pathc; ++i) { ret.push_back(std::string(glob_result.gl_pathv[i])); - // dprintf("%s\n", ret[i].c_str()); + dprintf("%s\n", ret[i].c_str()); } globfree(&glob_result); @@ -158,12 +158,12 @@ void glob(const string& path, svector& ret) // 2. negatives: /octave_/neg/*.png Dataset::Dataset(const string& path, const int oct) { - // dprintf("%s\n", "get dataset file names..."); + dprintf("%s\n", "get dataset file names..."); - // dprintf("%s\n", "Positives globbing..."); + dprintf("%s\n", "Positives globbing..."); glob(path + "/pos/octave_" + itoa(oct) + "/*.png", pos); - // dprintf("%s\n", "Negatives globbing..."); + dprintf("%s\n", "Negatives globbing..."); glob(path + "/neg/octave_" + itoa(oct) + "/*.png", neg); // Check: files not empty From a388884675ca52552d32e0dca31392a1867fadb7 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 14:20:45 +0400 Subject: [PATCH 05/82] Positives preprocessing --- apps/sft/include/sft/octave.hpp | 26 ++++++-- apps/sft/octave.cpp | 115 ++++++++++++++++++++++++++++++-- apps/sft/sft.cpp | 13 ++-- 3 files changed, 140 insertions(+), 14 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index e2b206af8c..51457c9f21 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -54,7 +54,7 @@ class Dataset public: Dataset(const sft::string& path, const int octave); -private: +// private: svector pos; svector neg; }; @@ -83,15 +83,14 @@ class FeaturePool public: FeaturePool(cv::Size model, int nfeatures); ~FeaturePool(); + int size() const { return (int)pool.size(); } + private: void fill(int desired); cv::Size model; int nfeatures; - Mat integrals; - Mat responces; - Icfvector pool; static const unsigned int seed = 0; @@ -103,15 +102,30 @@ private: class Octave : cv::Boost { public: - Octave(int logScale); + Octave(int npositives, int nnegatives, int logScale, int shrinkage); virtual ~Octave(); + virtual bool train(const Dataset& dataset, const FeaturePool& pool); + + int logScale; + +protected: virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); - int logScale; + void processPositives(const Dataset& dataset, const FeaturePool& pool); private: + + int npositives; + int nnegatives; + + int shrinkage; + + Mat integrals; + Mat responses; + CvBoostParams params; + }; } diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 613d4c6e3d..c0690b9021 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -44,7 +44,6 @@ #include #if defined VISUALIZE_GENERATION -# include # define show(a, b) \ do { \ cv::imshow(a,b); \ @@ -55,20 +54,128 @@ #endif #include +#include +#include // ============ Octave ============ // -sft::Octave::Octave(int ls) : logScale(ls) {} +sft::Octave::Octave(int np, int nn, int ls, int shr) +: logScale(ls), npositives(np), nnegatives(nn), shrinkage(shr) +{ + int maxSample = npositives + nnegatives; + responses.create(maxSample, 1, CV_32FC1); +} sft::Octave::~Octave(){} -bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx, +bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { bool update = false; - return cv::Boost::train(trainData, CV_COL_SAMPLE, responses, varIdx, sampleIdx, varType, missingDataMask, params, + return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, update); } +namespace { +using namespace sft; +class Preprocessor +{ +public: + Preprocessor(int shr) : shrinkage(shr) {} + + void apply(const Mat& frame, Mat integrals) + { + CV_Assert(frame.type() == CV_8UC3); + + int h = frame.rows; + int w = frame.cols; + + cv::Mat channels, gray; + + channels.create(h * BINS, w, CV_8UC1); + channels.setTo(0); + + cvtColor(frame, gray, CV_BGR2GRAY); + + cv::Mat df_dx, df_dy, mag, angle; + cv::Sobel(gray, df_dx, CV_32F, 1, 0); + cv::Sobel(gray, df_dy, CV_32F, 0, 1); + + cv::cartToPolar(df_dx, df_dy, mag, angle, true); + mag *= (1.f / (8 * sqrt(2.f))); + + cv::Mat nmag; + mag.convertTo(nmag, CV_8UC1); + + angle *= 6 / 360.f; + + for (int y = 0; y < h; ++y) + { + uchar* magnitude = nmag.ptr(y); + float* ang = angle.ptr(y); + + for (int x = 0; x < w; ++x) + { + channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; + } + } + + cv::Mat luv, shrunk; + cv::cvtColor(frame, luv, CV_BGR2Luv); + + std::vector splited; + for (int i = 0; i < 3; ++i) + splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); + split(luv, splited); + + cv::resize(channels, shrunk, cv::Size(), 1.0 / shrinkage, 1.0 / shrinkage, CV_INTER_AREA); + cv::integral(shrunk, integrals, cv::noArray(), CV_32S); + } + + int shrinkage; + enum {BINS = 10}; +}; +} + +// ToDo: parallelize it +void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& pool) +{ + Preprocessor prepocessor(shrinkage); + + int cols = (64 * pow(2, logScale) + 1) * (128 * pow(2, logScale) + 1); + integrals.create(pool.size(), cols, CV_32SC1); + + int total = 0; + + // float* responce = responce.ptr(0); + for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) + { + const string& curr = *it; + + dprintf("Process candidate positive image %s\n", curr.c_str()); + + cv::Mat channels = integrals.col(total).reshape(0, (128 * pow(2, logScale) + 1)); + + cv::Mat sample = cv::imread(curr); + prepocessor.apply(sample, channels); + responses.ptr(total)[0] = 1.f; + + ++total; + if (total >= npositives) break; + } + + dprintf("Processing positives finished:\n\trequested %d positives, collected %d samples.\n", npositives, total); + + npositives = total; + nnegatives *= total / (float)npositives; +} + +bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) +{ + // 1. fill integrals and classes + return false; + +} + // ========= FeaturePool ========= // sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index e671c21c0c..7c896bca95 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -52,16 +52,21 @@ int main(int argc, char** argv) int npositives = 10; int nnegatives = 10; + int shrinkage = 4; + int octave = 0; + int nsamples = npositives + nnegatives; cv::Size model(64, 128); std::string path = "/home/kellan/cuda-dev/opencv_extra/testdata/sctrain/rescaled-train-2012-10-27-19-02-52"; - sft::Octave boost(0); - cv::Mat train_data(nfeatures, nsamples, CV_32FC1); + sft::Octave boost(npositives, nnegatives, octave, shrinkage); sft::FeaturePool pool(model, nfeatures); - sft::Dataset(path, boost.logScale); + sft::Dataset dataset(path, boost.logScale); + boost.train(dataset, pool); + + cv::Mat train_data(nfeatures, nsamples, CV_32FC1); cv::RNG rng; for (int y = 0; y < nfeatures; ++y) @@ -113,7 +118,7 @@ int main(int argc, char** argv) bool update = false; - boost.train(train_data, responses, var_idx, sample_idx, var_type, missing_mask); + // boost.train(train_data, responses, var_idx, sample_idx, var_type, missing_mask); // CvFileStorage* fs = cvOpenFileStorage( "/home/kellan/train_res.xml", 0, CV_STORAGE_WRITE ); // boost.write(fs, "test_res"); From f6e3e3f049f51888b4d9f89df97f2e51b8e08222 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 15:58:50 +0400 Subject: [PATCH 06/82] add negatives generation --- apps/sft/include/sft/octave.hpp | 4 +- apps/sft/octave.cpp | 76 +++++++++++++++++++++++++++------ apps/sft/sft.cpp | 3 +- 3 files changed, 69 insertions(+), 14 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 51457c9f21..baaa6424db 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -102,7 +102,7 @@ private: class Octave : cv::Boost { public: - Octave(int npositives, int nnegatives, int logScale, int shrinkage); + Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); virtual ~Octave(); virtual bool train(const Dataset& dataset, const FeaturePool& pool); @@ -114,7 +114,9 @@ protected: const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); void processPositives(const Dataset& dataset, const FeaturePool& pool); + void generateNegatives(const Dataset& dataset); private: + cv::Rect boundingBox; int npositives; int nnegatives; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index c0690b9021..35348c6a2e 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -58,8 +58,8 @@ #include // ============ Octave ============ // -sft::Octave::Octave(int np, int nn, int ls, int shr) -: logScale(ls), npositives(np), nnegatives(nn), shrinkage(shr) +sft::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) +: logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) { int maxSample = npositives + nnegatives; responses.create(maxSample, 1, CV_32FC1); @@ -137,41 +137,93 @@ public: } // ToDo: parallelize it +// ToDo: sunch model size and shrinced model size usage/ Now model size mean already shrinked model void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& pool) { Preprocessor prepocessor(shrinkage); - int cols = (64 * pow(2, logScale) + 1) * (128 * pow(2, logScale) + 1); - integrals.create(pool.size(), cols, CV_32SC1); + int w = 64 * pow(2, logScale) /shrinkage; + int h = 128 * pow(2, logScale) /shrinkage * 10; + + integrals.create(pool.size(), (w + 1) * (h + 1), CV_32SC1); int total = 0; - // float* responce = responce.ptr(0); for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) { const string& curr = *it; dprintf("Process candidate positive image %s\n", curr.c_str()); - cv::Mat channels = integrals.col(total).reshape(0, (128 * pow(2, logScale) + 1)); - - cv::Mat sample = cv::imread(curr); + cv::Mat sample = cv::imread(curr); + cv::Mat channels = integrals.col(total).reshape(0, h + 1); prepocessor.apply(sample, channels); + responses.ptr(total)[0] = 1.f; - ++total; - if (total >= npositives) break; + if (++total >= npositives) break; } dprintf("Processing positives finished:\n\trequested %d positives, collected %d samples.\n", npositives, total); - npositives = total; - nnegatives *= total / (float)npositives; + npositives = total; + nnegatives = cvRound(nnegatives * total / (double)npositives); +} + +void sft::Octave::generateNegatives(const Dataset& dataset) +{ + // ToDo: set seed, use offsets + sft::Random::engine eng; + sft::Random::engine idxEng; + + Preprocessor prepocessor(shrinkage); + + int nimages = (int)dataset.neg.size(); + sft::Random::uniform iRand(0, nimages - 1); + + int total = 0; + Mat sum; + for (int i = npositives; i < nnegatives + npositives; ++total) + { + int curr = iRand(idxEng); + + dprintf("View %d-th sample\n", curr); + dprintf("Process %s\n", dataset.neg[curr].c_str()); + + Mat frame = cv::imread(dataset.neg[curr]); + prepocessor.apply(frame, sum); + + int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; + int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; + + sft::Random::uniform wRand(0, maxW); + sft::Random::uniform hRand(0, maxH); + + int dx = wRand(eng); + int dy = hRand(eng); + + sum = sum(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); + + dprintf("generated %d %d\n", dx, dy); + + if (predict(sum)) + { + responses.ptr(i)[0] = 0.f; + sum = sum.reshape(0, 1); + sum.copyTo(integrals.col(i)); + ++i; + } + } + + dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); } bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) { // 1. fill integrals and classes + processPositives(dataset, pool); + generateNegatives(dataset); + return false; } diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 7c896bca95..682a86781f 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -59,7 +59,8 @@ int main(int argc, char** argv) cv::Size model(64, 128); std::string path = "/home/kellan/cuda-dev/opencv_extra/testdata/sctrain/rescaled-train-2012-10-27-19-02-52"; - sft::Octave boost(npositives, nnegatives, octave, shrinkage); + cv::Rect boundingBox(5, 5 ,16, 32); + sft::Octave boost(boundingBox, npositives, nnegatives, octave, shrinkage); sft::FeaturePool pool(model, nfeatures); sft::Dataset dataset(path, boost.logScale); From a8c3431e619fcee08a77ebf8ca2c655f4013782e Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 16:36:35 +0400 Subject: [PATCH 07/82] set parameters --- apps/sft/include/sft/octave.hpp | 1 + apps/sft/octave.cpp | 66 ++++++++++++++++++++++++++++++++- apps/sft/sft.cpp | 2 +- 3 files changed, 66 insertions(+), 3 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index baaa6424db..f99f92b764 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -84,6 +84,7 @@ public: FeaturePool(cv::Size model, int nfeatures); ~FeaturePool(); int size() const { return (int)pool.size(); } + float apply(int fi, int si, const Mat& integrals) const; private: void fill(int desired); diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 35348c6a2e..d255d46432 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -70,8 +70,30 @@ sft::Octave::~Octave(){} bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { + CvBoostParams _params; + { + // tree params + _params.max_categories = 10; + _params.max_depth = 2; + _params.cv_folds = 0; + _params.truncate_pruned_tree = false; + _params.use_surrogates = false; + _params.use_1se_rule = false; + _params.regression_accuracy = 0.0; + + // boost params + _params.boost_type = CvBoost::GENTLE; + _params.split_criteria = CvBoost::SQERR; + _params.weight_trim_rate = 0.95; + + + /// ToDo: move to params + _params.min_sample_count = 2; + _params.weak_count = 1; + } + bool update = false; - return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, + return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, _params, update); } @@ -224,7 +246,42 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) processPositives(dataset, pool); generateNegatives(dataset); - return false; + // 2. only sumple case (all features used) + int nfeatures = pool.size(); + cv::Mat varIdx(1, nfeatures, CV_32SC1); + int* ptr = varIdx.ptr(0); + + for (int x = 0; x < nfeatures; ++x) + ptr[x] = x; + + // 3. only sumple case (all samples used) + int nsamples = npositives + nnegatives; + cv::Mat sampleIdx(1, nsamples, CV_32SC1); + ptr = varIdx.ptr(0); + + for (int x = 0; x < nsamples; ++x) + ptr[x] = x; + + // 4. ICF has an orderable responce. + cv::Mat varType(1, nfeatures + 1, CV_8UC1); + uchar* uptr = varType.ptr(0); + for (int x = 0; x < nfeatures; ++x) + uptr[x] = CV_VAR_ORDERED; + uptr[nfeatures] = CV_VAR_CATEGORICAL; + + cv::Mat trainData(nfeatures, nsamples, CV_32FC1); + for (int fi = 0; fi < nfeatures; ++fi) + { + float* dptr = trainData.ptr(fi); + for (int si = 0; si < nsamples; ++si) + { + dptr[si] = pool.apply(fi, si, integrals); + } + } + + cv::Mat missingMask; + + return train(trainData, responses, varIdx, sampleIdx, varType, missingMask); } @@ -237,6 +294,11 @@ sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) sft::FeaturePool::~FeaturePool(){} +float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const +{ + return 0.f; +} + void sft::FeaturePool::fill(int desired) { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 682a86781f..4794e502e5 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -73,7 +73,7 @@ int main(int argc, char** argv) for (int y = 0; y < nfeatures; ++y) for (int x = 0; x < nsamples; ++x) train_data.at(y, x) = rng.uniform(0.f, 1.f); - +// + int tflag = CV_COL_SAMPLE; cv::Mat responses(nsamples, 1, CV_32FC1); for (int y = 0; y < nsamples; ++y) From a2382ce6a203f03861e7e353f02dd8659aa20944 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 16:45:44 +0400 Subject: [PATCH 08/82] add ability to store/load training configuration --- apps/sft/config.cpp | 154 ++++++++++++++++++++++++++++++++ apps/sft/include/sft/common.hpp | 1 + apps/sft/include/sft/config.hpp | 114 +++++++++++++++++++++++ 3 files changed, 269 insertions(+) create mode 100644 apps/sft/config.cpp create mode 100644 apps/sft/include/sft/config.hpp diff --git a/apps/sft/config.cpp b/apps/sft/config.cpp new file mode 100644 index 0000000000..ca9d02dac9 --- /dev/null +++ b/apps/sft/config.cpp @@ -0,0 +1,154 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include +#include + +sft::Config::Config(): seed(0) {} + +void sft::Config::write(cv::FileStorage& fs) const +{ + fs << "{" + << "trainPath" << trainPath + << "testPath" << testPath + + << "modelWinSize" << modelWinSize + << "offset" << offset + << "octaves" << octaves + + << "positives" << positives + << "negatives" << negatives + << "btpNegatives" << btpNegatives + + << "shrinkage" << shrinkage + + << "treeDepth" << treeDepth + << "weaks" << weaks + << "poolSize" << poolSize + + << "cascadeName" << cascadeName + << "outXmlPath" << outXmlPath + + << "seed" << seed + << "}"; +} + +void sft::Config::read(const cv::FileNode& node) +{ + trainPath = (string)node["trainPath"]; + testPath = (string)node["testPath"]; + + cv::FileNodeIterator nIt = node["modelWinSize"].end(); + modelWinSize = cv::Size((int)*(--nIt), (int)*(--nIt)); + + nIt = node["offset"].end(); + offset = cv::Point2i((int)*(--nIt), (int)*(--nIt)); + + node["octaves"] >> octaves; + + positives = (int)node["positives"]; + negatives = (int)node["negatives"]; + btpNegatives = (int)node["btpNegatives"]; + + shrinkage = (int)node["shrinkage"]; + + treeDepth = (int)node["treeDepth"]; + weaks = (int)node["weaks"]; + poolSize = (int)node["poolSize"]; + + cascadeName = (std::string)node["cascadeName"]; + outXmlPath = (std::string)node["outXmlPath"]; + + seed = (int)node["seed"]; +} + +void sft::write(cv::FileStorage& fs, const string&, const Config& x) +{ + x.write(fs); +} + +void sft::read(const cv::FileNode& node, Config& x, const Config& default_value) +{ + if(node.empty()) + x = default_value; + else + x.read(node); +} + +struct Out +{ + Out(std::ostream& _out): out(_out) {} + template + void operator ()(const T a) const {out << a << " ";} + + std::ostream& out; +}; + +std::ostream& sft::operator<<(std::ostream& out, const Config& m) +{ + out << std::setw(14) << std::left << "trainPath" << m.trainPath << std::endl + << std::setw(14) << std::left << "testPath" << m.testPath << std::endl + + << std::setw(14) << std::left << "modelWinSize" << m.modelWinSize << std::endl + << std::setw(14) << std::left << "offset" << m.offset << std::endl + << std::setw(14) << std::left << "octaves"; + + Out o(out); + for_each(m.octaves.begin(), m.octaves.end(), o); + + out << std::endl + << std::setw(14) << std::left << "positives" << m.positives << std::endl + << std::setw(14) << std::left << "negatives" << m.negatives << std::endl + << std::setw(14) << std::left << "btpNegatives" << m.btpNegatives << std::endl + + << std::setw(14) << std::left << "shrinkage" << m.shrinkage << std::endl + + << std::setw(14) << std::left << "treeDepth" << m.treeDepth << std::endl + << std::setw(14) << std::left << "weaks" << m.weaks << std::endl + << std::setw(14) << std::left << "poolSize" << m.poolSize << std::endl + + << std::setw(14) << std::left << "cascadeName" << m.cascadeName << std::endl + << std::setw(14) << std::left << "outXmlPath" << m.outXmlPath << std::endl + << std::setw(14) << std::left << "seed" << m.seed << std::endl; + + return out; +} \ No newline at end of file diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 25bd699ca3..0f771ccf52 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -54,6 +54,7 @@ namespace sft typedef std::vector Icfvector; typedef std::vector svector; + typedef std::vector ivector; } // used for noisy printfs diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp new file mode 100644 index 0000000000..4a1bca09ee --- /dev/null +++ b/apps/sft/include/sft/config.hpp @@ -0,0 +1,114 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __SFT_CONFIG_HPP__ +#define __SFT_CONFIG_HPP__ + +#include + +#include + +namespace sft { + +struct Config +{ + Config(); + + void write(cv::FileStorage& fs) const; + + void read(const cv::FileNode& node); + + // Paths to a rescaled data + string trainPath; + string testPath; + + // Original model size. + cv::Size modelWinSize; + + // example offset into positive image + cv::Point2i offset; + + // List of octaves for which have to be trained cascades (a list of powers of two) + ivector octaves; + + // Maximum number of positives that should be ised during training + int positives; + + // Initial number of negatives used during training. + int negatives; + + // Number of weak negatives to add each bootstrapping step. + int btpNegatives; + + // Inverse of scale for feature resazing + int shrinkage; + + // Depth on weak classifier's desition tree + int treeDepth; + + // Weak classifiers number in resulted cascade + int weaks; + + // Feature random pool size + int poolSize; + + // file name to store cascade + string cascadeName; + + // path to resulting cascade + string outXmlPath; + + // seed for fandom generation + int seed; + + // // bounding retangle for actual exemple into example window + // cv::Rect exampleWindow; +}; + +// required for cv::FileStorage serialization +void write(cv::FileStorage& fs, const string&, const Config& x); +void read(const cv::FileNode& node, Config& x, const Config& default_value); +std::ostream& operator<<(std::ostream& out, const Config& m); + +} + +#endif \ No newline at end of file From 30b2a9458286b67193cf07fdee5891550e88e488 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 6 Dec 2012 18:28:44 +0400 Subject: [PATCH 09/82] load from config xml and fix integral representation --- apps/sft/octave.cpp | 41 +++++++---- apps/sft/sft.cpp | 172 ++++++++++++++++++++++++++------------------ 2 files changed, 132 insertions(+), 81 deletions(-) diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index d255d46432..3eb0d95caf 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -92,6 +92,8 @@ bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, co _params.weak_count = 1; } + std::cout << "WARNING: " << sampleIdx << std::endl; + bool update = false; return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, _params, update); @@ -104,7 +106,7 @@ class Preprocessor public: Preprocessor(int shr) : shrinkage(shr) {} - void apply(const Mat& frame, Mat integrals) + void apply(const Mat& frame, Mat& integrals) { CV_Assert(frame.type() == CV_8UC3); @@ -178,7 +180,7 @@ void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& po dprintf("Process candidate positive image %s\n", curr.c_str()); cv::Mat sample = cv::imread(curr); - cv::Mat channels = integrals.col(total).reshape(0, h + 1); + cv::Mat channels = integrals.row(total).reshape(0, h + 1); prepocessor.apply(sample, channels); responses.ptr(total)[0] = 1.f; @@ -198,6 +200,9 @@ void sft::Octave::generateNegatives(const Dataset& dataset) sft::Random::engine eng; sft::Random::engine idxEng; + int w = 64 * pow(2, logScale) /shrinkage; + int h = 128 * pow(2, logScale) /shrinkage * 10; + Preprocessor prepocessor(shrinkage); int nimages = (int)dataset.neg.size(); @@ -215,24 +220,33 @@ void sft::Octave::generateNegatives(const Dataset& dataset) Mat frame = cv::imread(dataset.neg[curr]); prepocessor.apply(frame, sum); - int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; - int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; + std::cout << "WARNING: " << frame.cols << " " << frame.rows << std::endl; + std::cout << "WARNING: " << frame.cols / shrinkage << " " << frame.rows / shrinkage << std::endl; - sft::Random::uniform wRand(0, maxW); - sft::Random::uniform hRand(0, maxH); + int maxW = frame.cols / shrinkage - 2 * boundingBox.x - boundingBox.width; + int maxH = frame.rows / shrinkage - 2 * boundingBox.y - boundingBox.height; + + std::cout << "WARNING: " << maxW << " " << maxH << std::endl; + + sft::Random::uniform wRand(0, maxW -1); + sft::Random::uniform hRand(0, maxH -1); int dx = wRand(eng); int dy = hRand(eng); - sum = sum(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); + std::cout << "WARNING: " << dx << " " << dy << std::endl; + std::cout << "WARNING: " << dx + boundingBox.width + 1 << " " << dy + boundingBox.height + 1 << std::endl; + std::cout << "WARNING: " << sum.cols << " " << sum.rows << std::endl; + + sum = sum(cv::Rect(dx, dy, boundingBox.width + 1, boundingBox.height * 10 + 1)); dprintf("generated %d %d\n", dx, dy); - if (predict(sum)) + // if (predict(sum)) { responses.ptr(i)[0] = 0.f; - sum = sum.reshape(0, 1); - sum.copyTo(integrals.col(i)); + // sum = sum.reshape(0, 1); + sum.copyTo(integrals.row(i).reshape(0, h + 1)); ++i; } } @@ -257,7 +271,7 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) // 3. only sumple case (all samples used) int nsamples = npositives + nnegatives; cv::Mat sampleIdx(1, nsamples, CV_32SC1); - ptr = varIdx.ptr(0); + ptr = sampleIdx.ptr(0); for (int x = 0; x < nsamples; ++x) ptr[x] = x; @@ -281,7 +295,10 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) cv::Mat missingMask; - return train(trainData, responses, varIdx, sampleIdx, varType, missingMask); + bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); + if (!ok) + std::cout << "ERROR:tree couldnot be trained" << std::endl; + return ok; } diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 4794e502e5..2328c11e91 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -44,85 +44,119 @@ #include #include +#include int main(int argc, char** argv) { -// hard coded now - int nfeatures = 50; - int npositives = 10; - int nnegatives = 10; + using namespace sft; - int shrinkage = 4; - int octave = 0; + const string keys = + "{help h usage ? | | print this message }" + "{config c | | path to configuration xml }" + ; - int nsamples = npositives + nnegatives; - cv::Size model(64, 128); - std::string path = "/home/kellan/cuda-dev/opencv_extra/testdata/sctrain/rescaled-train-2012-10-27-19-02-52"; + cv::CommandLineParser parser(argc, argv, keys); + parser.about("Soft cascade training application."); - cv::Rect boundingBox(5, 5 ,16, 32); - sft::Octave boost(boundingBox, npositives, nnegatives, octave, shrinkage); - - sft::FeaturePool pool(model, nfeatures); - sft::Dataset dataset(path, boost.logScale); - - boost.train(dataset, pool); - - cv::Mat train_data(nfeatures, nsamples, CV_32FC1); - cv::RNG rng; - - for (int y = 0; y < nfeatures; ++y) - for (int x = 0; x < nsamples; ++x) - train_data.at(y, x) = rng.uniform(0.f, 1.f); -// + - int tflag = CV_COL_SAMPLE; - cv::Mat responses(nsamples, 1, CV_32FC1); - for (int y = 0; y < nsamples; ++y) - responses.at(y, 0) = (y < npositives) ? 1.f : 0.f; - - - cv::Mat var_idx(1, nfeatures, CV_32SC1); - for (int x = 0; x < nfeatures; ++x) - var_idx.at(0, x) = x; - - // Mat sample_idx; - cv::Mat sample_idx(1, nsamples, CV_32SC1); - for (int x = 0; x < nsamples; ++x) - sample_idx.at(0, x) = x; - - cv::Mat var_type(1, nfeatures + 1, CV_8UC1); - for (int x = 0; x < nfeatures; ++x) - var_type.at(0, x) = CV_VAR_ORDERED; - - var_type.at(0, nfeatures) = CV_VAR_CATEGORICAL; - - cv::Mat missing_mask; - - CvBoostParams params; + if (parser.has("help")) { - params.max_categories = 10; - params.max_depth = 2; - params.min_sample_count = 2; - params.cv_folds = 0; - params.truncate_pruned_tree = false; - - /// ?????????????????? - params.regression_accuracy = 0.01; - params.use_surrogates = false; - params.use_1se_rule = false; - - ///////// boost params - params.boost_type = CvBoost::GENTLE; - params.weak_count = 1; - params.split_criteria = CvBoost::SQERR; - params.weight_trim_rate = 0.95; + parser.printMessage(); + return 0; } - bool update = false; + if (!parser.check()) + { + parser.printErrors(); + return 1; + } - // boost.train(train_data, responses, var_idx, sample_idx, var_type, missing_mask); + string configPath = parser.get("config"); + if (configPath.empty()) + { + std::cout << "Configuration file is missing or empty. Could not start training." << std::endl << std::flush; + return 0; + } - // CvFileStorage* fs = cvOpenFileStorage( "/home/kellan/train_res.xml", 0, CV_STORAGE_WRITE ); - // boost.write(fs, "test_res"); + std::cout << "Read configuration from file " << configPath << std::endl; + cv::FileStorage fs(configPath, cv::FileStorage::READ); + if(!fs.isOpened()) + { + std::cout << "Configuration file " << configPath << " can't be opened." << std::endl << std::flush; + return 1; + } - // cvReleaseFileStorage( &fs ); + // 1. load config + sft::Config cfg; + fs["config"] >> cfg; + std::cout << std::endl << "Training will be executed for configuration:" << std::endl << cfg << std::endl; + + // 2. check and open output file + cv::FileStorage fso(cfg.outXmlPath, cv::FileStorage::WRITE); + if(!fs.isOpened()) + { + std::cout << "Training stopped. Output classifier Xml file " << cfg.outXmlPath << " can't be opened." << std::endl << std::flush; + return 1; + } + + // ovector strong; + // strong.reserve(cfg.octaves.size()); + + // fso << "softcascade" << "{" << "octaves" << "["; + + // 3. Train all octaves + for (ivector::const_iterator it = cfg.octaves.begin(); it != cfg.octaves.end(); ++it) + { + int nfeatures = cfg.poolSize; + int npositives = cfg.positives; + int nnegatives = cfg.negatives; + + int shrinkage = cfg.shrinkage; + int octave = *it; + + cv::Size model = cfg.modelWinSize; + std::string path = cfg.trainPath; + + cv::Rect boundingBox(cfg.offset.x / cfg.shrinkage, cfg.offset.y / cfg.shrinkage, + cfg.modelWinSize.width / cfg.shrinkage, cfg.modelWinSize.height / cfg.shrinkage); + + sft::Octave boost(boundingBox, npositives, nnegatives, octave, shrinkage); + + sft::FeaturePool pool(model, nfeatures); + sft::Dataset dataset(path, boost.logScale); + + if (boost.train(dataset, pool)) + { + } + std::cout << "Octave " << octave << " was successfully trained..." << std::endl; + // // d. crain octave + // if (octave.train(pool, cfg.positives, cfg.negatives, cfg.weaks)) + // { + // strong.push_back(octave); + // } + } + + // fso << "]" << "}"; + +// // 3. create Soft Cascade +// // sft::SCascade cascade(cfg.modelWinSize, cfg.octs, cfg.shrinkage); + +// // // 4. Generate feature pool +// // std::vector pool; +// // sft::fillPool(pool, cfg.poolSize, cfg.modelWinSize / cfg.shrinkage, cfg.seed); + +// // // 5. Train all octaves +// // cascade.train(cfg.trainPath); + +// // // 6. Set thresolds +// // cascade.prune(); + +// // // 7. Postprocess +// // cascade.normolize(); + +// // // 8. Write result xml +// // cv::FileStorage ofs(cfg.outXmlPath, cv::FileStorage::WRITE); +// // ofs << cfg.cascadeName << cascade; + + std::cout << "Training complete..." << std::endl; + return 0; } \ No newline at end of file From 883d691c2b4a86144b986c023ea74f5292a1431b Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 7 Dec 2012 13:17:55 +0400 Subject: [PATCH 10/82] fix feature computing --- apps/CMakeLists.txt | 2 ++ apps/sft/include/sft/octave.hpp | 16 ++++++++++++++++ apps/sft/octave.cpp | 6 +++++- apps/sft/sft.cpp | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index 217490b2de..a5db31fe5a 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -1,2 +1,4 @@ add_subdirectory(haartraining) add_subdirectory(traincascade) +add_subdirectory(sft) + diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index f99f92b764..bddb419809 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -73,6 +73,22 @@ struct ICF return bb != b.bb || channel != b.channel; } + + float operator() (const Mat& integrals, const cv::Size& model) const + { + const int* ptr = integrals.ptr(0) + (model.height * channel + bb.y) * model.width + bb.x; + + int a = ptr[0]; + int b = ptr[bb.width]; + + ptr += bb.height * model.width; + + int c = ptr[bb.width]; + int d = ptr[0]; + + return (float)(a - b + c - d); + } + private: cv::Rect bb; int channel; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 3eb0d95caf..7ccd49051f 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -93,6 +93,10 @@ bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, co } std::cout << "WARNING: " << sampleIdx << std::endl; + std::cout << "WARNING: " << trainData << std::endl; + std::cout << "WARNING: " << _responses << std::endl; + std::cout << "WARNING: " << varIdx << std::endl; + std::cout << "WARNING: " << varType << std::endl; bool update = false; return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, _params, @@ -313,7 +317,7 @@ sft::FeaturePool::~FeaturePool(){} float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const { - return 0.f; + return pool[fi](integrals.row(si), model); } diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 2328c11e91..8a96b31023 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -113,7 +113,7 @@ int main(int argc, char** argv) int shrinkage = cfg.shrinkage; int octave = *it; - cv::Size model = cfg.modelWinSize; + cv::Size model = cv::Size(cfg.modelWinSize.width / cfg.shrinkage, cfg.modelWinSize.height / cfg.shrinkage ); std::string path = cfg.trainPath; cv::Rect boundingBox(cfg.offset.x / cfg.shrinkage, cfg.offset.y / cfg.shrinkage, From bfa26fd447f66907e1f90be3325167d6299279c2 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 7 Dec 2012 17:55:58 +0400 Subject: [PATCH 11/82] refactoring --- apps/sft/include/sft/config.hpp | 16 +++++ apps/sft/include/sft/octave.hpp | 15 +++-- apps/sft/octave.cpp | 106 ++++++++++++++++---------------- apps/sft/sft.cpp | 41 +++++------- 4 files changed, 92 insertions(+), 86 deletions(-) diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index 4a1bca09ee..6e512bec45 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -57,6 +57,22 @@ struct Config void read(const cv::FileNode& node); + // Scaled and shrunk model size. + cv::Size model(ivector::const_iterator it) const + { + float octave = powf(2, *it); + return cv::Size( cvRound(modelWinSize.width * octave) / shrinkage, + cvRound(modelWinSize.height * octave) / shrinkage ); + } + + // Scaled but, not shrunk bounding box for object in sample image. + cv::Rect bbox(ivector::const_iterator it) const + { + float octave = powf(2, *it); + return cv::Rect( cvRound(offset.x * octave), cvRound(offset.y * octave), + cvRound(modelWinSize.width * octave), cvRound(modelWinSize.height * octave)); + } + // Paths to a rescaled data string trainPath; string testPath; diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index bddb419809..e03c29e387 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -76,12 +76,14 @@ struct ICF float operator() (const Mat& integrals, const cv::Size& model) const { - const int* ptr = integrals.ptr(0) + (model.height * channel + bb.y) * model.width + bb.x; + int step = model.width + 1; + + const int* ptr = integrals.ptr(0) + (model.height * channel + bb.y) * step + bb.x; int a = ptr[0]; int b = ptr[bb.width]; - ptr += bb.height * model.width; + ptr += bb.height * step; int c = ptr[bb.width]; int d = ptr[0]; @@ -92,13 +94,17 @@ struct ICF private: cv::Rect bb; int channel; + + friend std::ostream& operator<<(std::ostream& out, const ICF& m); }; +std::ostream& operator<<(std::ostream& out, const ICF& m); + class FeaturePool { public: FeaturePool(cv::Size model, int nfeatures); - ~FeaturePool(); + int size() const { return (int)pool.size(); } float apply(int fi, int si, const Mat& integrals) const; @@ -122,7 +128,7 @@ public: Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); virtual ~Octave(); - virtual bool train(const Dataset& dataset, const FeaturePool& pool); + virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); int logScale; @@ -144,7 +150,6 @@ private: Mat responses; CvBoostParams params; - }; } diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 7ccd49051f..e90504f2c9 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -43,16 +43,6 @@ #include #include -#if defined VISUALIZE_GENERATION -# define show(a, b) \ - do { \ - cv::imshow(a,b); \ - cv::waitkey(0); \ - } while(0) -#else -# define show(a, b) -#endif - #include #include #include @@ -63,13 +53,7 @@ sft::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) { int maxSample = npositives + nnegatives; responses.create(maxSample, 1, CV_32FC1); -} -sft::Octave::~Octave(){} - -bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, const cv::Mat& varIdx, - const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) -{ CvBoostParams _params; { // tree params @@ -79,27 +63,35 @@ bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, co _params.truncate_pruned_tree = false; _params.use_surrogates = false; _params.use_1se_rule = false; - _params.regression_accuracy = 0.0; + _params.regression_accuracy = 1.0e-6; // boost params _params.boost_type = CvBoost::GENTLE; _params.split_criteria = CvBoost::SQERR; _params.weight_trim_rate = 0.95; - - /// ToDo: move to params + // simple defaults _params.min_sample_count = 2; _params.weak_count = 1; } - std::cout << "WARNING: " << sampleIdx << std::endl; - std::cout << "WARNING: " << trainData << std::endl; - std::cout << "WARNING: " << _responses << std::endl; - std::cout << "WARNING: " << varIdx << std::endl; - std::cout << "WARNING: " << varType << std::endl; + params = _params; +} + +sft::Octave::~Octave(){} + +bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, const cv::Mat& varIdx, + const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) +{ + + std::cout << "WARNING: sampleIdx " << sampleIdx << std::endl; + std::cout << "WARNING: trainData " << trainData << std::endl; + std::cout << "WARNING: _responses " << _responses << std::endl; + std::cout << "WARNING: varIdx" << varIdx << std::endl; + std::cout << "WARNING: varType" << varType << std::endl; bool update = false; - return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, _params, + return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, update); } @@ -164,29 +156,30 @@ public: }; } -// ToDo: parallelize it +// ToDo: parallelize it, fix curring // ToDo: sunch model size and shrinced model size usage/ Now model size mean already shrinked model void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& pool) { Preprocessor prepocessor(shrinkage); - int w = 64 * pow(2, logScale) /shrinkage; - int h = 128 * pow(2, logScale) /shrinkage * 10; + int w = boundingBox.width; + int h = boundingBox.height; - integrals.create(pool.size(), (w + 1) * (h + 1), CV_32SC1); + integrals.create(pool.size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); int total = 0; - for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) { const string& curr = *it; dprintf("Process candidate positive image %s\n", curr.c_str()); - cv::Mat sample = cv::imread(curr); - cv::Mat channels = integrals.row(total).reshape(0, h + 1); - prepocessor.apply(sample, channels); + cv::Mat sample = cv::imread(curr); + cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); + sample = sample(boundingBox); + + prepocessor.apply(sample, channels); responses.ptr(total)[0] = 1.f; if (++total >= npositives) break; @@ -204,8 +197,8 @@ void sft::Octave::generateNegatives(const Dataset& dataset) sft::Random::engine eng; sft::Random::engine idxEng; - int w = 64 * pow(2, logScale) /shrinkage; - int h = 128 * pow(2, logScale) /shrinkage * 10; + int w = boundingBox.width; + int h = boundingBox.height; Preprocessor prepocessor(shrinkage); @@ -222,15 +215,9 @@ void sft::Octave::generateNegatives(const Dataset& dataset) dprintf("Process %s\n", dataset.neg[curr].c_str()); Mat frame = cv::imread(dataset.neg[curr]); - prepocessor.apply(frame, sum); - std::cout << "WARNING: " << frame.cols << " " << frame.rows << std::endl; - std::cout << "WARNING: " << frame.cols / shrinkage << " " << frame.rows / shrinkage << std::endl; - - int maxW = frame.cols / shrinkage - 2 * boundingBox.x - boundingBox.width; - int maxH = frame.rows / shrinkage - 2 * boundingBox.y - boundingBox.height; - - std::cout << "WARNING: " << maxW << " " << maxH << std::endl; + int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; + int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; sft::Random::uniform wRand(0, maxW -1); sft::Random::uniform hRand(0, maxH -1); @@ -238,19 +225,16 @@ void sft::Octave::generateNegatives(const Dataset& dataset) int dx = wRand(eng); int dy = hRand(eng); - std::cout << "WARNING: " << dx << " " << dy << std::endl; - std::cout << "WARNING: " << dx + boundingBox.width + 1 << " " << dy + boundingBox.height + 1 << std::endl; - std::cout << "WARNING: " << sum.cols << " " << sum.rows << std::endl; + frame = frame(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); - sum = sum(cv::Rect(dx, dy, boundingBox.width + 1, boundingBox.height * 10 + 1)); + cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); + prepocessor.apply(frame, channels); dprintf("generated %d %d\n", dx, dy); - // if (predict(sum)) + // // if (predict(sum)) { responses.ptr(i)[0] = 0.f; - // sum = sum.reshape(0, 1); - sum.copyTo(integrals.row(i).reshape(0, h + 1)); ++i; } } @@ -258,11 +242,18 @@ void sft::Octave::generateNegatives(const Dataset& dataset) dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); } -bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool) +bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth) { + CV_Assert(treeDepth == 2); + CV_Assert(weaks > 0); + + params.max_depth = treeDepth; + params.weak_count = weaks; + // 1. fill integrals and classes processPositives(dataset, pool); generateNegatives(dataset); + // exit(0); // 2. only sumple case (all features used) int nfeatures = pool.size(); @@ -313,8 +304,6 @@ sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) fill(nfeatures); } -sft::FeaturePool::~FeaturePool(){} - float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const { return pool[fi](integrals.row(si), model); @@ -323,13 +312,13 @@ float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const void sft::FeaturePool::fill(int desired) { - int mw = model.width; int mh = model.height; int maxPoolSize = (mw -1) * mw / 2 * (mh - 1) * mh / 2 * N_CHANNELS; nfeatures = std::min(desired, maxPoolSize); + dprintf("Requeste feature pool %d max %d suggested %d\n", desired, maxPoolSize, nfeatures); pool.reserve(nfeatures); @@ -363,10 +352,19 @@ void sft::FeaturePool::fill(int desired) sft::ICF f(x, y, w, h, ch); if (std::find(pool.begin(), pool.end(),f) == pool.end()) + { + // std::cout << f << std::endl; pool.push_back(f); + } } } +std::ostream& sft::operator<<(std::ostream& out, const sft::ICF& m) +{ + out << m.channel << " " << m.bb; + return out; +} + // ============ Dataset ============ // namespace { using namespace sft; diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 8a96b31023..6ea3513473 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -106,47 +106,34 @@ int main(int argc, char** argv) // 3. Train all octaves for (ivector::const_iterator it = cfg.octaves.begin(); it != cfg.octaves.end(); ++it) { + // a. create rangom feature pool int nfeatures = cfg.poolSize; + cv::Size model = cfg.model(it); + std::cout << "Model " << model << std::endl; + sft::FeaturePool pool(model, nfeatures); + nfeatures = pool.size(); + + int npositives = cfg.positives; int nnegatives = cfg.negatives; - int shrinkage = cfg.shrinkage; - int octave = *it; + cv::Rect boundingBox = cfg.bbox(it); + std::cout << "Object bounding box" << boundingBox << std::endl; + + sft::Octave boost(boundingBox, npositives, nnegatives, *it, shrinkage); - cv::Size model = cv::Size(cfg.modelWinSize.width / cfg.shrinkage, cfg.modelWinSize.height / cfg.shrinkage ); std::string path = cfg.trainPath; - - cv::Rect boundingBox(cfg.offset.x / cfg.shrinkage, cfg.offset.y / cfg.shrinkage, - cfg.modelWinSize.width / cfg.shrinkage, cfg.modelWinSize.height / cfg.shrinkage); - - sft::Octave boost(boundingBox, npositives, nnegatives, octave, shrinkage); - - sft::FeaturePool pool(model, nfeatures); sft::Dataset dataset(path, boost.logScale); - if (boost.train(dataset, pool)) + if (boost.train(dataset, pool, cfg.weaks, cfg.treeDepth)) { - } - std::cout << "Octave " << octave << " was successfully trained..." << std::endl; - // // d. crain octave - // if (octave.train(pool, cfg.positives, cfg.negatives, cfg.weaks)) - // { + std::cout << "Octave " << *it << " was successfully trained..." << std::endl; // strong.push_back(octave); - // } + } } // fso << "]" << "}"; -// // 3. create Soft Cascade -// // sft::SCascade cascade(cfg.modelWinSize, cfg.octs, cfg.shrinkage); - -// // // 4. Generate feature pool -// // std::vector pool; -// // sft::fillPool(pool, cfg.poolSize, cfg.modelWinSize / cfg.shrinkage, cfg.seed); - -// // // 5. Train all octaves -// // cascade.train(cfg.trainPath); - // // // 6. Set thresolds // // cascade.prune(); From a89299acb2db7fcbfc3aa6b3506fb5755182ac67 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 7 Dec 2012 18:26:09 +0400 Subject: [PATCH 12/82] store result to xml. --- apps/sft/include/sft/config.hpp | 7 +++++++ apps/sft/include/sft/octave.hpp | 1 + apps/sft/octave.cpp | 5 +++++ apps/sft/sft.cpp | 7 ++++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index 6e512bec45..d0ede665f2 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -73,6 +73,13 @@ struct Config cvRound(modelWinSize.width * octave), cvRound(modelWinSize.height * octave)); } + string resPath(ivector::const_iterator it) const + { + char s[65]; + sprintf(s, "%d", *it); + return std::string(cascadeName) + s + ".xml"; + } + // Paths to a rescaled data string trainPath; string testPath; diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index e03c29e387..08c258b074 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -129,6 +129,7 @@ public: virtual ~Octave(); virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); + virtual void write( CvFileStorage* fs, string name) const; int logScale; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index e90504f2c9..4cb301e574 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -297,6 +297,11 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea } +void sft::Octave::write( CvFileStorage* fs, string name) const +{ + CvBoost::write(fs, name.c_str()); +} + // ========= FeaturePool ========= // sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 6ea3513473..c68a24a604 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -46,6 +46,8 @@ #include #include +#include + int main(int argc, char** argv) { using namespace sft; @@ -128,7 +130,10 @@ int main(int argc, char** argv) if (boost.train(dataset, pool, cfg.weaks, cfg.treeDepth)) { std::cout << "Octave " << *it << " was successfully trained..." << std::endl; - // strong.push_back(octave); + CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); + boost.write(fout, cfg.cascadeName); + // strong.push_back(octave); + cvReleaseFileStorage( &fout); } } From 2e4b8d07cc4dd42301b5a12f6f2dea27230c98e9 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 11 Dec 2012 22:42:13 +0400 Subject: [PATCH 13/82] integrate pruning --- apps/sft/include/sft/octave.hpp | 21 +++++++- apps/sft/octave.cpp | 96 +++++++++++++++++++++++++++++---- apps/sft/sft.cpp | 11 ++-- 3 files changed, 113 insertions(+), 15 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 08c258b074..29532cfd8f 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -125,11 +125,24 @@ private: class Octave : cv::Boost { public: + + enum + { + // Direct backward pruning. (Cha Zhang and Paul Viola) + DBP = 1, + // Multiple instance pruning. (Cha Zhang and Paul Viola) + MIP = 2, + // Originally proposed by L. bourdev and J. brandt + HEURISTIC = 4 + }; + Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); virtual ~Octave(); - virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); - virtual void write( CvFileStorage* fs, string name) const; + virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); + virtual void write( CvFileStorage* fs, string name) const; + virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; + virtual void setRejectThresholds(cv::Mat& thresholds); int logScale; @@ -139,6 +152,8 @@ protected: void processPositives(const Dataset& dataset, const FeaturePool& pool); void generateNegatives(const Dataset& dataset); + + float predict( const Mat& _sample, const cv::Range range) const; private: cv::Rect boundingBox; @@ -151,6 +166,8 @@ private: Mat responses; CvBoostParams params; + + Mat trainData; }; } diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 4cb301e574..1b66c7a234 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -80,21 +80,72 @@ sft::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) sft::Octave::~Octave(){} -bool sft::Octave::train( const cv::Mat& trainData, const cv::Mat& _responses, const cv::Mat& varIdx, +bool sft::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { std::cout << "WARNING: sampleIdx " << sampleIdx << std::endl; - std::cout << "WARNING: trainData " << trainData << std::endl; + std::cout << "WARNING: trainData " << _trainData << std::endl; std::cout << "WARNING: _responses " << _responses << std::endl; std::cout << "WARNING: varIdx" << varIdx << std::endl; std::cout << "WARNING: varType" << varType << std::endl; bool update = false; - return cv::Boost::train(trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, + return cv::Boost::train(_trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, update); } +void sft::Octave::setRejectThresholds(cv::Mat& thresholds) +{ + dprintf("set thresholds according to DBP strategy\n"); + + // labels desided by classifier + cv::Mat desisions(responses.cols, responses.rows, responses.type()); + float* dptr = desisions.ptr(0); + + // mask of samples satisfying the condition + cv::Mat ppmask(responses.cols, responses.rows, CV_8UC1); + uchar* mptr = ppmask.ptr(0); + + int nsamples = npositives + nnegatives; + + cv::Mat stab; + + for (int si = 0; si < nsamples; ++si) + { + float decision = dptr[si] = predict(trainData.col(si), stab, false, false); + mptr[si] = cv::saturate_cast((uint)(responses.ptr(si)[0] == 1.f && decision == 1.f)); + } + + std::cout << "WARNING: responses " << responses << std::endl; + std::cout << "WARNING: desisions " << desisions << std::endl; + std::cout << "WARNING: ppmask " << ppmask << std::endl; + + int weaks = weak->total; + thresholds.create(1, weaks, CV_64FC1); + double* thptr = thresholds.ptr(0); + + cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX)); + + for (int w = 0; w < weaks; ++w) + { + double* rptr = traces.ptr(w); + for (int si = 0; si < nsamples; ++si) + { + cv::Range curr(0, w + 1); + if (mptr[si]) + { + float trace = predict(trainData.col(si), curr); + rptr[si] = trace; + } + } + double mintrace = 0.; + cv::minMaxLoc(traces.row(w), &mintrace); + thptr[w] = mintrace; + std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives) << std::endl; + } +} + namespace { using namespace sft; class Preprocessor @@ -194,10 +245,10 @@ void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& po void sft::Octave::generateNegatives(const Dataset& dataset) { // ToDo: set seed, use offsets - sft::Random::engine eng; - sft::Random::engine idxEng; + sft::Random::engine eng(65633343L); + sft::Random::engine idxEng(764224349868L); - int w = boundingBox.width; + // int w = boundingBox.width; int h = boundingBox.height; Preprocessor prepocessor(shrinkage); @@ -278,7 +329,7 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea uptr[x] = CV_VAR_ORDERED; uptr[nfeatures] = CV_VAR_CATEGORICAL; - cv::Mat trainData(nfeatures, nsamples, CV_32FC1); + trainData.create(nfeatures, nsamples, CV_32FC1); for (int fi = 0; fi < nfeatures; ++fi) { float* dptr = trainData.ptr(fi); @@ -292,11 +343,36 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); if (!ok) - std::cout << "ERROR:tree couldnot be trained" << std::endl; + std::cout << "ERROR: tree can not be trained " << std::endl; + +#if defined SELF_TEST + cv::Mat a(1, nfeatures, CV_32FC1); + cv::Mat votes(1, cvSliceLength( CV_WHOLE_SEQ, weak ), CV_32FC1, cv::Scalar::all(0)); + + std::cout << a.cols << " " << a.rows << " !!!!!!!!!!! " << data->var_all << std::endl; + for (int si = 0; si < nsamples; ++si) + { + // trainData.col(si).copyTo(a.reshape(0,trainData.rows)); + float desision = predict(trainData.col(si), votes, false, true); + std::cout << "desision " << desision << " class " << responses.at(si, 0) << votes < Date: Wed, 12 Dec 2012 00:31:03 +0400 Subject: [PATCH 14/82] commented debug out --- apps/sft/octave.cpp | 28 ++++++++++++++-------------- apps/sft/sft.cpp | 10 +++++++--- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 1b66c7a234..5c44157574 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -84,11 +84,11 @@ bool sft::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, c const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { - std::cout << "WARNING: sampleIdx " << sampleIdx << std::endl; - std::cout << "WARNING: trainData " << _trainData << std::endl; - std::cout << "WARNING: _responses " << _responses << std::endl; - std::cout << "WARNING: varIdx" << varIdx << std::endl; - std::cout << "WARNING: varType" << varType << std::endl; + // std::cout << "WARNING: sampleIdx " << sampleIdx << std::endl; + // std::cout << "WARNING: trainData " << _trainData << std::endl; + // std::cout << "WARNING: _responses " << _responses << std::endl; + // std::cout << "WARNING: varIdx" << varIdx << std::endl; + // std::cout << "WARNING: varType" << varType << std::endl; bool update = false; return cv::Boost::train(_trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, @@ -117,9 +117,9 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) mptr[si] = cv::saturate_cast((uint)(responses.ptr(si)[0] == 1.f && decision == 1.f)); } - std::cout << "WARNING: responses " << responses << std::endl; - std::cout << "WARNING: desisions " << desisions << std::endl; - std::cout << "WARNING: ppmask " << ppmask << std::endl; + // std::cout << "WARNING: responses " << responses << std::endl; + // std::cout << "WARNING: desisions " << desisions << std::endl; + // std::cout << "WARNING: ppmask " << ppmask << std::endl; int weaks = weak->total; thresholds.create(1, weaks, CV_64FC1); @@ -142,7 +142,7 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) double mintrace = 0.; cv::minMaxLoc(traces.row(w), &mintrace); thptr[w] = mintrace; - std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives) << std::endl; + // std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives) << std::endl; } } @@ -223,7 +223,7 @@ void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& po { const string& curr = *it; - dprintf("Process candidate positive image %s\n", curr.c_str()); + // dprintf("Process candidate positive image %s\n", curr.c_str()); cv::Mat sample = cv::imread(curr); @@ -262,8 +262,8 @@ void sft::Octave::generateNegatives(const Dataset& dataset) { int curr = iRand(idxEng); - dprintf("View %d-th sample\n", curr); - dprintf("Process %s\n", dataset.neg[curr].c_str()); + // dprintf("View %d-th sample\n", curr); + // dprintf("Process %s\n", dataset.neg[curr].c_str()); Mat frame = cv::imread(dataset.neg[curr]); @@ -349,12 +349,12 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea cv::Mat a(1, nfeatures, CV_32FC1); cv::Mat votes(1, cvSliceLength( CV_WHOLE_SEQ, weak ), CV_32FC1, cv::Scalar::all(0)); - std::cout << a.cols << " " << a.rows << " !!!!!!!!!!! " << data->var_all << std::endl; + // std::cout << a.cols << " " << a.rows << " !!!!!!!!!!! " << data->var_all << std::endl; for (int si = 0; si < nsamples; ++si) { // trainData.col(si).copyTo(a.reshape(0,trainData.rows)); float desision = predict(trainData.col(si), votes, false, true); - std::cout << "desision " << desision << " class " << responses.at(si, 0) << votes <(si, 0) << votes < Date: Wed, 12 Dec 2012 14:20:42 +0400 Subject: [PATCH 15/82] add xml serialization --- apps/sft/include/sft/octave.hpp | 4 ++ apps/sft/octave.cpp | 85 +++++++++++++++++++++++++++++++++ apps/sft/sft.cpp | 34 +++++++++++-- apps/traincascade/boost.cpp | 3 ++ 4 files changed, 123 insertions(+), 3 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 29532cfd8f..f5fd7888ee 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -144,6 +144,8 @@ public: virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; virtual void setRejectThresholds(cv::Mat& thresholds); + virtual void write( cv::FileStorage &fs, const Mat& thresholds = Mat()) const; + int logScale; protected: @@ -155,6 +157,8 @@ protected: float predict( const Mat& _sample, const cv::Range range) const; private: + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, const float* th = 0) const; + cv::Rect boundingBox; int npositives; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 5c44157574..6b601ab49c 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -47,6 +47,8 @@ #include #include +#include + // ============ Octave ============ // sft::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) : logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) @@ -293,6 +295,89 @@ void sft::Octave::generateNegatives(const Dataset& dataset) dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); } +template int sgn(T val) { + return (T(0) < val) - (val < T(0)); +} + +void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, const float* th) const +{ + std::queue nodes; + nodes.push( tree->get_root()); + const CvDTreeNode* tempNode; + int leafValIdx = 0; + int internalNodeIdx = 1; + float* leafs = new float[(int)pow(2.f, get_params().max_depth)]; + + fs << "{"; + fs << "internalNodes" << "["; + while (!nodes.empty()) + { + tempNode = nodes.front(); + CV_Assert( tempNode->left ); + if ( !tempNode->left->left && !tempNode->left->right) + { + leafs[-leafValIdx] = (float)tempNode->left->value; + fs << leafValIdx-- ; + } + else + { + nodes.push( tempNode->left ); + fs << internalNodeIdx++; + } + CV_Assert( tempNode->right ); + if ( !tempNode->right->left && !tempNode->right->right) + { + leafs[-leafValIdx] = (float)tempNode->right->value; + fs << leafValIdx--; + } + else + { + nodes.push( tempNode->right ); + fs << internalNodeIdx++; + } + int fidx = tempNode->split->var_idx; + fs << fidx; + + fs << tempNode->split->ord.c; + + nodes.pop(); + } + fs << "]"; + + fs << "leafValues" << "["; + for (int ni = 0; ni < -leafValIdx; ni++) + fs << ( (!th) ? leafs[ni] : (sgn(leafs[ni]) * *th)); + fs << "]"; + + fs << "}"; +} + +void sft::Octave::write( cv::FileStorage &fso, const Mat& thresholds) const +{ + fso << "{" + << "scale" << logScale + << "weaks" << weak->total + << "trees" << "["; + // should be replased with the H.L. one + CvSeqReader reader; + cvStartReadSeq( weak, &reader); + + for(int i = 0; i < weak->total; i++ ) + { + CvBoostTree* tree; + CV_READ_SEQ_ELEM( tree, reader ); + + if (!thresholds.empty()) + traverse(tree, fso, thresholds.ptr(0)+ i); + else + traverse(tree, fso); + } + // + + fso << "]" + << "}"; +} + bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth) { CV_Assert(treeDepth == 2); diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 869d50c08f..f3be928d13 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -94,16 +94,41 @@ int main(int argc, char** argv) // 2. check and open output file cv::FileStorage fso(cfg.outXmlPath, cv::FileStorage::WRITE); - if(!fs.isOpened()) + if(!fso.isOpened()) { std::cout << "Training stopped. Output classifier Xml file " << cfg.outXmlPath << " can't be opened." << std::endl << std::flush; return 1; } + cv::FileStorage fsr(cfg.outXmlPath + ".raw.xml" , cv::FileStorage::WRITE); + if(!fsr.isOpened()) + { + std::cout << "Training stopped. Output classifier Xml file " <featureEvaluator->getCls( i ) == 1.0F ) eval[numPos++] = predict( i, true ); + icvSortFlt( &eval[0], numPos, 0 ); + int thresholdIdx = (int)((1.0F - minHitRate) * numPos); + threshold = eval[ thresholdIdx ]; numPosTrue = numPos - thresholdIdx; for( int i = thresholdIdx - 1; i >= 0; i--) From c0910921748334003e9a15fe3054882d43a751ed Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 12 Dec 2012 15:35:01 +0400 Subject: [PATCH 16/82] fix typo --- apps/sft/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt index 3980a29d93..aa3bae2298 100644 --- a/apps/sft/CMakeLists.txt +++ b/apps/sft/CMakeLists.txt @@ -2,7 +2,7 @@ if(IOS OR ANDROID) return() endif() -set(the_target stf) +set(the_target sft) set(name ${the_target}) set(OPENCV_${the_target}_DEPS opencv_core opencv_objdetect opencv_highgui opencv_imgproc opencv_ml) From a8d0e04912104cd29633ad000db438cc5720b420 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 12 Dec 2012 15:35:30 +0400 Subject: [PATCH 17/82] amplement weidhting according to L. Bourdev and J. Brandt paper "Robust Object Detection Via Soft Cascade" --- apps/sft/include/sft/octave.hpp | 2 +- apps/sft/octave.cpp | 8 ++++++++ modules/ml/include/opencv2/ml/ml.hpp | 2 ++ modules/ml/src/boost.cpp | 11 +++++++++-- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index f5fd7888ee..81b73bb68b 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -158,7 +158,7 @@ protected: float predict( const Mat& _sample, const cv::Range range) const; private: void traverse(const CvBoostTree* tree, cv::FileStorage& fs, const float* th = 0) const; - + virtual void initial_weights(double (&p)[2]); cv::Rect boundingBox; int npositives; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 6b601ab49c..e886fbdb8e 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -295,6 +295,7 @@ void sft::Octave::generateNegatives(const Dataset& dataset) dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); } + template int sgn(T val) { return (T(0) < val) - (val < T(0)); } @@ -378,6 +379,13 @@ void sft::Octave::write( cv::FileStorage &fso, const Mat& thresholds) const << "}"; } +void sft::Octave::initial_weights(double (&p)[2]) +{ + double n = data->sample_count; + p[0] = n / (double)(nnegatives) ; + p[1] = n / (double)(npositives); +} + bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth) { CV_Assert(treeDepth == 2); diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 7ba97c8e47..e8e069b161 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -1251,6 +1251,8 @@ protected: virtual void write_params( CvFileStorage* fs ) const; virtual void read_params( CvFileStorage* fs, CvFileNode* node ); + virtual void initial_weights(double (&p)[2]); + CvDTreeTrainData* data; CvBoostParams params; CvSeq* weak; diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 3525a1173a..b644733c46 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -1116,6 +1116,12 @@ bool CvBoost::train( CvMLData* _data, return result; } +void CvBoost::initial_weights(double (&p)[2]) +{ + p[0] = 1.; + p[1] = 1.; +} + void CvBoost::update_weights( CvBoostTree* tree ) { @@ -1159,8 +1165,9 @@ CvBoost::update_weights( CvBoostTree* tree ) // in case of logitboost and gentle adaboost each weak tree is a regression tree, // so we need to convert class labels to floating-point values - double w0 = 1./n; - double p[2] = { 1, 1 }; + double w0 = 1./ n; + double p[2] = { 1., 1. }; + initial_weights(p); cvReleaseMat( &orig_response ); cvReleaseMat( &sum_response ); From 1f01052955b2e003c2484e49857fef9ad6d41116 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 13 Dec 2012 14:31:28 +0400 Subject: [PATCH 18/82] fix inintial weighting --- apps/sft/octave.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index e886fbdb8e..6a02d543ec 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -382,8 +382,8 @@ void sft::Octave::write( cv::FileStorage &fso, const Mat& thresholds) const void sft::Octave::initial_weights(double (&p)[2]) { double n = data->sample_count; - p[0] = n / (double)(nnegatives) ; - p[1] = n / (double)(npositives); + p[0] = n / (2. * (double)(nnegatives)); + p[1] = n / (2. * (double)(npositives)); } bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth) From 4356d345424d8774bcc94f988816c045143d9c14 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 14 Dec 2012 17:57:55 +0400 Subject: [PATCH 19/82] write features to soft cascade xml --- apps/sft/include/sft/octave.hpp | 12 ++++++++---- apps/sft/octave.cpp | 33 ++++++++++++++++++++++++++++----- apps/sft/sft.cpp | 4 ++-- 3 files changed, 38 insertions(+), 11 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 81b73bb68b..6544272880 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -95,9 +95,11 @@ private: cv::Rect bb; int channel; - friend std::ostream& operator<<(std::ostream& out, const ICF& m); + friend void write(cv::FileStorage& fs, const string&, const ICF& f); + friend std::ostream& operator<<(std::ostream& out, const ICF& f); }; +void write(cv::FileStorage& fs, const string&, const ICF& f); std::ostream& operator<<(std::ostream& out, const ICF& m); class FeaturePool @@ -107,6 +109,7 @@ public: int size() const { return (int)pool.size(); } float apply(int fi, int si, const Mat& integrals) const; + void write( cv::FileStorage& fs, int index) const; private: void fill(int desired); @@ -140,11 +143,11 @@ public: virtual ~Octave(); virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); - virtual void write( CvFileStorage* fs, string name) const; virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; virtual void setRejectThresholds(cv::Mat& thresholds); + virtual void write( CvFileStorage* fs, string name) const; - virtual void write( cv::FileStorage &fs, const Mat& thresholds = Mat()) const; + virtual void write( cv::FileStorage &fs, const FeaturePool& pool, const Mat& thresholds = Mat()) const; int logScale; @@ -157,8 +160,9 @@ protected: float predict( const Mat& _sample, const cv::Range range) const; private: - void traverse(const CvBoostTree* tree, cv::FileStorage& fs, const float* th = 0) const; + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const float* th = 0) const; virtual void initial_weights(double (&p)[2]); + cv::Rect boundingBox; int npositives; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 6a02d543ec..bc8ea80f91 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -300,7 +300,7 @@ template int sgn(T val) { return (T(0) < val) - (val < T(0)); } -void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, const float* th) const +void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const float* th) const { std::queue nodes; nodes.push( tree->get_root()); @@ -336,8 +336,10 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, const f nodes.push( tempNode->right ); fs << internalNodeIdx++; } + int fidx = tempNode->split->var_idx; - fs << fidx; + fs << nfeatures; + used[nfeatures++] = fidx; fs << tempNode->split->ord.c; @@ -353,8 +355,11 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, const f fs << "}"; } -void sft::Octave::write( cv::FileStorage &fso, const Mat& thresholds) const +void sft::Octave::write( cv::FileStorage &fso, const FeaturePool& pool, const Mat& thresholds) const { + cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); + int* usedPtr = used.ptr(0); + int nfeatures = 0; fso << "{" << "scale" << logScale << "weaks" << weak->total @@ -369,12 +374,19 @@ void sft::Octave::write( cv::FileStorage &fso, const Mat& thresholds) const CV_READ_SEQ_ELEM( tree, reader ); if (!thresholds.empty()) - traverse(tree, fso, thresholds.ptr(0)+ i); + traverse(tree, fso, nfeatures, usedPtr, thresholds.ptr(0)+ i); else - traverse(tree, fso); + traverse(tree, fso, nfeatures, usedPtr); } // + fso << "]"; + // features + + fso << "features" << "["; + for (int i = 0; i < nfeatures; ++i) + // fso << usedPtr[i]; + pool.write(fso, usedPtr[i]); fso << "]" << "}"; } @@ -483,6 +495,17 @@ float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const return pool[fi](integrals.row(si), model); } +void sft::FeaturePool::write( cv::FileStorage& fs, int index) const +{ + CV_Assert((index > 0) && (index < (int)pool.size())); + fs << pool[index]; +} + +void sft::write(cv::FileStorage& fs, const string&, const ICF& f) +{ + fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; +} + void sft::FeaturePool::fill(int desired) { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index f3be928d13..61f926770b 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -162,8 +162,8 @@ int main(int argc, char** argv) cv::Mat thresholds; boost.setRejectThresholds(thresholds); - boost.write(fso, thresholds); - boost.write(fsr); + boost.write(fso, pool, thresholds); + boost.write(fsr, pool); // std::cout << "thresholds " << thresholds << std::endl; cv::FileStorage tfs(("thresholds." + cfg.resPath(it)).c_str(), cv::FileStorage::WRITE); From ef4b18f341b6f15325189f9712d5a9e113fa347a Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 14 Dec 2012 18:07:29 +0400 Subject: [PATCH 20/82] script for scaling inria dataset for multiple-octaves training --- apps/misk/scale_inria.py | 153 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 apps/misk/scale_inria.py diff --git a/apps/misk/scale_inria.py b/apps/misk/scale_inria.py new file mode 100644 index 0000000000..b81cfe49e6 --- /dev/null +++ b/apps/misk/scale_inria.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python + +import sys, os, os.path, glob, math, cv2 +from datetime import datetime +from optparse import OptionParser + +def parse(ipath, f): + bbs = [] + path = None + for l in f: + box = None + if l.startswith("Bounding box"): + b = [x.strip() for x in l.split(":")[1].split("-")] + c = [x[1:-1].split(",") for x in b] + d = [int(x) for x in sum(c, [])] + bbs.append(d) + + if l.startswith("Image filename"): + path = os.path.join(os.path.join(ipath, ".."), l.split('"')[-2]) + + return (path, bbs) + +def adjust(box, tb, lr): + + mix = int(round(box[0] - lr)) + miy = int(round(box[1] - tb)) + + max = int(round(box[2] + lr)) + may = int(round(box[3] + tb)) + + return [mix, miy, max, may] + +def resize(image, d_w, d_h): + if (d_h < image.shape[0]) or (d_w < image.shape[1]): + ratio = min(d_h / float(image.shape[0]), d_w / float(image.shape[1])) + + kernel_size = int( 5 / (2 * ratio)) + sigma = 0.5 / ratio + image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) + interpolation_type = cv2.INTER_AREA + else: + image_to_resize = image + interpolation_type = cv2.INTER_CUBIC + + return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) + +if __name__ == "__main__": + parser = OptionParser() + parser.add_option("-i", "--input", dest="input", metavar="DIRECTORY", type="string", + help="path to Inria train data folder") + + parser.add_option("-o", "--output", dest="output", metavar="DIRECTORY", type="string", + help="path to store data", default=".") + + parser.add_option("-t", "--target", dest="target", type="string", help="should be train or test", default="train") + + (options, args) = parser.parse_args() + if not options.input: + parser.error("Inria data folder required") + + if options.target not in ["train", "test"]: + parser.error("dataset should contain train or test data") + + octaves = [-1, 0, 1, 2] + + path = os.path.join(options.output, datetime.now().strftime("rescaled-" + options.target + "-%Y-%m-%d-%H-%M-%S")) + os.mkdir(path) + + neg_path = os.path.join(path, "neg") + os.mkdir(neg_path) + + pos_path = os.path.join(path, "pos") + os.mkdir(pos_path) + + print "rescaled Inria training data stored into", path, "\nprocessing", + for each in octaves: + octave = 2**each + + whole_mod_w = int(64 * octave) + 2 * int(20 * octave) + whole_mod_h = int(128 * octave) + 2 * int(20 * octave) + + cpos_path = os.path.join(pos_path, "octave_%d" % each) + os.mkdir(cpos_path) + idx = 0 + + gl = glob.iglob(os.path.join(options.input, "annotations/*.txt")) + for image, boxes in [parse(options.input, open(__p)) for __p in gl]: + for box in boxes: + height = box[3] - box[1] + scale = height / float(96) + + mat = cv2.imread(image) + mat_h, mat_w, _ = mat.shape + + rel_scale = scale / octave + + d_w = whole_mod_w * rel_scale + d_h = whole_mod_h * rel_scale + + top_bottom_border = (d_h - (box[3] - box[1])) / 2.0 + left_right_border = (d_w - (box[2] - box[0])) / 2.0 + + box = adjust(box, top_bottom_border, left_right_border) + inner = [max(0, box[0]), max(0, box[1]), min(mat_w, box[2]), min(mat_h, box[3]) ] + + cropped = mat[inner[1]:inner[3], inner[0]:inner[2], :] + + top = int(max(0, 0 - box[1])) + bottom = int(max(0, box[3] - mat_h)) + left = int(max(0, 0 - box[0])) + right = int(max(0, box[2] - mat_w)) + cropped = cv2.copyMakeBorder(cropped, top, bottom, left, right, cv2.BORDER_REPLICATE) + resized = resize(cropped, whole_mod_w, whole_mod_h) + + out_name = ".png" + if round(math.log(scale)/math.log(2)) < each: + out_name = "_upscaled" + out_name + + cv2.imwrite(os.path.join(cpos_path, "sample_%d" % idx + out_name), resized) + + flipped = cv2.flip(resized, 1) + cv2.imwrite(os.path.join(cpos_path, "sample_%d" % idx + "_mirror" + out_name), flipped) + idx = idx + 1 + print "." , + sys.stdout.flush() + + idx = 0 + cneg_path = os.path.join(neg_path, "octave_%d" % each) + os.mkdir(cneg_path) + + for each in [__n for __n in glob.iglob(os.path.join(options.input, "neg/*.*"))]: + img = cv2.imread(each) + min_shape = (1.5 * whole_mod_h, 1.5 * whole_mod_w) + + if (img.shape[1] <= min_shape[1]) or (img.shape[0] <= min_shape[0]): + out_name = "negative_sample_%i_resized.png" % idx + + ratio = float(img.shape[1]) / img.shape[0] + + if (img.shape[1] <= min_shape[1]): + resized_size = (int(min_shape[1]), int(min_shape[1] / ratio)) + + if (img.shape[0] <= min_shape[0]): + resized_size = (int(min_shape[0] * ratio), int(min_shape[0])) + + img = resize(img, resized_size[0], resized_size[1]) + else: + out_name = "negative_sample_%i.png" % idx + + cv2.imwrite(os.path.join(cneg_path, out_name), img) + idx = idx + 1 + print "." , + sys.stdout.flush() \ No newline at end of file From 23d0e36167f0bc18325f8cc31bac5213433713cc Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 17 Dec 2012 15:13:03 +0400 Subject: [PATCH 21/82] fix floating point precision --- apps/sft/include/sft/octave.hpp | 4 ++-- apps/sft/octave.cpp | 23 ++++++++++------------ apps/sft/sft.cpp | 34 --------------------------------- 3 files changed, 12 insertions(+), 49 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 6544272880..0a5fc17a45 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -147,7 +147,7 @@ public: virtual void setRejectThresholds(cv::Mat& thresholds); virtual void write( CvFileStorage* fs, string name) const; - virtual void write( cv::FileStorage &fs, const FeaturePool& pool, const Mat& thresholds = Mat()) const; + virtual void write( cv::FileStorage &fs, const FeaturePool& pool, const Mat& thresholds) const; int logScale; @@ -160,7 +160,7 @@ protected: float predict( const Mat& _sample, const cv::Range range) const; private: - void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const float* th = 0) const; + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; virtual void initial_weights(double (&p)[2]); cv::Rect boundingBox; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index bc8ea80f91..4e26ad94b2 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -116,7 +116,7 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) for (int si = 0; si < nsamples; ++si) { float decision = dptr[si] = predict(trainData.col(si), stab, false, false); - mptr[si] = cv::saturate_cast((uint)(responses.ptr(si)[0] == 1.f && decision == 1.f)); + mptr[si] = cv::saturate_cast((uint)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); } // std::cout << "WARNING: responses " << responses << std::endl; @@ -144,8 +144,10 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) double mintrace = 0.; cv::minMaxLoc(traces.row(w), &mintrace); thptr[w] = mintrace; - // std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives) << std::endl; + // std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives).rowRange(w, w + 1) << std::endl << std::endl << std::endl << std::endl; } + + std::cout << "WARNING: thresholds " << thresholds << std::endl; } namespace { @@ -300,7 +302,7 @@ template int sgn(T val) { return (T(0) < val) - (val < T(0)); } -void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const float* th) const +void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const { std::queue nodes; nodes.push( tree->get_root()); @@ -310,6 +312,7 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nf float* leafs = new float[(int)pow(2.f, get_params().max_depth)]; fs << "{"; + fs << "treeThreshold" << *th; fs << "internalNodes" << "["; while (!nodes.empty()) { @@ -349,14 +352,16 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nf fs << "leafValues" << "["; for (int ni = 0; ni < -leafValIdx; ni++) - fs << ( (!th) ? leafs[ni] : (sgn(leafs[ni]) * *th)); + fs << leafs[ni];//( (!th) ? leafs[ni] : (sgn(leafs[ni]) * *th)); fs << "]"; + fs << "}"; } void sft::Octave::write( cv::FileStorage &fso, const FeaturePool& pool, const Mat& thresholds) const { + CV_Assert(!thresholds.empty()); cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); int* usedPtr = used.ptr(0); int nfeatures = 0; @@ -373,19 +378,13 @@ void sft::Octave::write( cv::FileStorage &fso, const FeaturePool& pool, const Ma CvBoostTree* tree; CV_READ_SEQ_ELEM( tree, reader ); - if (!thresholds.empty()) - traverse(tree, fso, nfeatures, usedPtr, thresholds.ptr(0)+ i); - else - traverse(tree, fso, nfeatures, usedPtr); + traverse(tree, fso, nfeatures, usedPtr, thresholds.ptr(0) + i); } - // - fso << "]"; // features fso << "features" << "["; for (int i = 0; i < nfeatures; ++i) - // fso << usedPtr[i]; pool.write(fso, usedPtr[i]); fso << "]" << "}"; @@ -409,7 +408,6 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea // 1. fill integrals and classes processPositives(dataset, pool); generateNegatives(dataset); - // exit(0); // 2. only sumple case (all features used) int nfeatures = pool.size(); @@ -550,7 +548,6 @@ void sft::FeaturePool::fill(int desired) if (std::find(pool.begin(), pool.end(),f) == pool.end()) { - // std::cout << f << std::endl; pool.push_back(f); } } diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 61f926770b..c4435fb1eb 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -100,16 +100,6 @@ int main(int argc, char** argv) return 1; } - cv::FileStorage fsr(cfg.outXmlPath + ".raw.xml" , cv::FileStorage::WRITE); - if(!fsr.isOpened()) - { - std::cout << "Training stopped. Output classifier Xml file " < Date: Tue, 18 Dec 2012 22:59:35 +0400 Subject: [PATCH 22/82] add file storage release --- apps/sft/sft.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index c4435fb1eb..9da4c0437e 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -152,6 +152,7 @@ int main(int argc, char** argv) } fso << "]" << "}"; + fso.release(); std::cout << "Training complete..." << std::endl; return 0; } \ No newline at end of file From bda6f39d4847656a13a5a3770607692d511a7717 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 20 Dec 2012 17:54:00 +0400 Subject: [PATCH 23/82] move rescaling script location --- apps/{ => sft}/misk/scale_inria.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/{ => sft}/misk/scale_inria.py (100%) diff --git a/apps/misk/scale_inria.py b/apps/sft/misk/scale_inria.py similarity index 100% rename from apps/misk/scale_inria.py rename to apps/sft/misk/scale_inria.py From d4d47b1e58b27487c4e2d9d13e850d53c0288ff5 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 18 Jan 2013 13:40:57 +0400 Subject: [PATCH 24/82] restore backword compatibility --- modules/ml/src/boost.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index b644733c46..0dc0d28404 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -879,7 +879,6 @@ void CvBoostTree::read( CvFileStorage* fs, CvFileNode* fnode, CvBoost* _ensemble ensemble = _ensemble; } - void CvBoostTree::read( CvFileStorage*, CvFileNode* ) { assert(0); From 19236b6e4316be27fe6da8f534d36c4c3ed8c85c Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 24 Dec 2012 09:33:25 +0400 Subject: [PATCH 25/82] remove dead code --- apps/sft/octave.cpp | 36 +----------------------------------- 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 4e26ad94b2..14f3016a5e 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -85,13 +85,6 @@ sft::Octave::~Octave(){} bool sft::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { - - // std::cout << "WARNING: sampleIdx " << sampleIdx << std::endl; - // std::cout << "WARNING: trainData " << _trainData << std::endl; - // std::cout << "WARNING: _responses " << _responses << std::endl; - // std::cout << "WARNING: varIdx" << varIdx << std::endl; - // std::cout << "WARNING: varType" << varType << std::endl; - bool update = false; return cv::Boost::train(_trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, update); @@ -119,10 +112,6 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) mptr[si] = cv::saturate_cast((uint)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); } - // std::cout << "WARNING: responses " << responses << std::endl; - // std::cout << "WARNING: desisions " << desisions << std::endl; - // std::cout << "WARNING: ppmask " << ppmask << std::endl; - int weaks = weak->total; thresholds.create(1, weaks, CV_64FC1); double* thptr = thresholds.ptr(0); @@ -144,10 +133,7 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) double mintrace = 0.; cv::minMaxLoc(traces.row(w), &mintrace); thptr[w] = mintrace; - // std::cout << "mintrace " << mintrace << std::endl << traces.colRange(0, npositives).rowRange(w, w + 1) << std::endl << std::endl << std::endl << std::endl; } - - std::cout << "WARNING: thresholds " << thresholds << std::endl; } namespace { @@ -211,8 +197,6 @@ public: }; } -// ToDo: parallelize it, fix curring -// ToDo: sunch model size and shrinced model size usage/ Now model size mean already shrinked model void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& pool) { Preprocessor prepocessor(shrinkage); @@ -227,8 +211,6 @@ void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& po { const string& curr = *it; - // dprintf("Process candidate positive image %s\n", curr.c_str()); - cv::Mat sample = cv::imread(curr); cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); @@ -266,9 +248,6 @@ void sft::Octave::generateNegatives(const Dataset& dataset) { int curr = iRand(idxEng); - // dprintf("View %d-th sample\n", curr); - // dprintf("Process %s\n", dataset.neg[curr].c_str()); - Mat frame = cv::imread(dataset.neg[curr]); int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; @@ -352,7 +331,7 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nf fs << "leafValues" << "["; for (int ni = 0; ni < -leafValIdx; ni++) - fs << leafs[ni];//( (!th) ? leafs[ni] : (sgn(leafs[ni]) * *th)); + fs << leafs[ni]; fs << "]"; @@ -447,19 +426,6 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); if (!ok) std::cout << "ERROR: tree can not be trained " << std::endl; - -#if defined SELF_TEST - cv::Mat a(1, nfeatures, CV_32FC1); - cv::Mat votes(1, cvSliceLength( CV_WHOLE_SEQ, weak ), CV_32FC1, cv::Scalar::all(0)); - - // std::cout << a.cols << " " << a.rows << " !!!!!!!!!!! " << data->var_all << std::endl; - for (int si = 0; si < nsamples; ++si) - { - // trainData.col(si).copyTo(a.reshape(0,trainData.rows)); - float desision = predict(trainData.col(si), votes, false, true); - // std::cout << "desision " << desision << " class " << responses.at(si, 0) << votes < Date: Wed, 9 Jan 2013 14:29:14 +0400 Subject: [PATCH 26/82] created abstract FeaturePool class --- apps/sft/include/sft/octave.hpp | 25 ++++++++++------ apps/sft/octave.cpp | 24 ++++++++------- apps/sft/sft.cpp | 6 ++-- modules/ml/include/opencv2/ml/ml.hpp | 11 +++++++ modules/ml/src/octave.cpp | 45 ++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+), 23 deletions(-) create mode 100644 modules/ml/src/octave.cpp diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 0a5fc17a45..1ab5e40300 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -102,28 +102,34 @@ private: void write(cv::FileStorage& fs, const string&, const ICF& f); std::ostream& operator<<(std::ostream& out, const ICF& m); -class FeaturePool +class ICFFeaturePool : public cv::FeaturePool { public: - FeaturePool(cv::Size model, int nfeatures); + ICFFeaturePool(cv::Size model, int nfeatures); - int size() const { return (int)pool.size(); } - float apply(int fi, int si, const Mat& integrals) const; - void write( cv::FileStorage& fs, int index) const; + virtual int size() const { return (int)pool.size(); } + virtual float apply(int fi, int si, const Mat& integrals) const; + virtual void write( cv::FileStorage& fs, int index) const; + + virtual ~ICFFeaturePool(); private: + void fill(int desired); cv::Size model; int nfeatures; - Icfvector pool; + std::vector pool; static const unsigned int seed = 0; enum { N_CHANNELS = 10 }; }; + +using cv::FeaturePool; + // used for traning single octave scale class Octave : cv::Boost { @@ -142,12 +148,13 @@ public: Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); virtual ~Octave(); - virtual bool train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth); + virtual bool train(const Dataset& dataset, const FeaturePool* pool, int weaks, int treeDepth); + virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; virtual void setRejectThresholds(cv::Mat& thresholds); virtual void write( CvFileStorage* fs, string name) const; - virtual void write( cv::FileStorage &fs, const FeaturePool& pool, const Mat& thresholds) const; + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const; int logScale; @@ -155,7 +162,7 @@ protected: virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); - void processPositives(const Dataset& dataset, const FeaturePool& pool); + void processPositives(const Dataset& dataset, const FeaturePool* pool); void generateNegatives(const Dataset& dataset); float predict( const Mat& _sample, const cv::Range range) const; diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 14f3016a5e..693b7b90d9 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -197,14 +197,14 @@ public: }; } -void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool& pool) +void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool* pool) { Preprocessor prepocessor(shrinkage); int w = boundingBox.width; int h = boundingBox.height; - integrals.create(pool.size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); + integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); int total = 0; for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) @@ -338,7 +338,7 @@ void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nf fs << "}"; } -void sft::Octave::write( cv::FileStorage &fso, const FeaturePool& pool, const Mat& thresholds) const +void sft::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, const Mat& thresholds) const { CV_Assert(!thresholds.empty()); cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); @@ -364,7 +364,7 @@ void sft::Octave::write( cv::FileStorage &fso, const FeaturePool& pool, const Ma fso << "features" << "["; for (int i = 0; i < nfeatures; ++i) - pool.write(fso, usedPtr[i]); + pool->write(fso, usedPtr[i]); fso << "]" << "}"; } @@ -376,7 +376,7 @@ void sft::Octave::initial_weights(double (&p)[2]) p[1] = n / (2. * (double)(npositives)); } -bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int weaks, int treeDepth) +bool sft::Octave::train(const Dataset& dataset, const FeaturePool* pool, int weaks, int treeDepth) { CV_Assert(treeDepth == 2); CV_Assert(weaks > 0); @@ -389,7 +389,7 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea generateNegatives(dataset); // 2. only sumple case (all features used) - int nfeatures = pool.size(); + int nfeatures = pool->size(); cv::Mat varIdx(1, nfeatures, CV_32SC1); int* ptr = varIdx.ptr(0); @@ -417,7 +417,7 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool& pool, int wea float* dptr = trainData.ptr(fi); for (int si = 0; si < nsamples; ++si) { - dptr[si] = pool.apply(fi, si, integrals); + dptr[si] = pool->apply(fi, si, integrals); } } @@ -448,18 +448,19 @@ void sft::Octave::write( CvFileStorage* fs, string name) const } // ========= FeaturePool ========= // -sft::FeaturePool::FeaturePool(cv::Size m, int n) : model(m), nfeatures(n) + +sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m), nfeatures(n) { CV_Assert(m != cv::Size() && n > 0); fill(nfeatures); } -float sft::FeaturePool::apply(int fi, int si, const Mat& integrals) const +float sft::ICFFeaturePool::apply(int fi, int si, const Mat& integrals) const { return pool[fi](integrals.row(si), model); } -void sft::FeaturePool::write( cv::FileStorage& fs, int index) const +void sft::ICFFeaturePool::write( cv::FileStorage& fs, int index) const { CV_Assert((index > 0) && (index < (int)pool.size())); fs << pool[index]; @@ -470,8 +471,9 @@ void sft::write(cv::FileStorage& fs, const string&, const ICF& f) fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; } +sft::ICFFeaturePool::~ICFFeaturePool(){} -void sft::FeaturePool::fill(int desired) +void sft::ICFFeaturePool::fill(int desired) { int mw = model.width; int mh = model.height; diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 9da4c0437e..8c40039677 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -117,7 +117,7 @@ int main(int argc, char** argv) int nfeatures = cfg.poolSize; cv::Size model = cfg.model(it); std::cout << "Model " << model << std::endl; - sft::FeaturePool pool(model, nfeatures); + sft::ICFFeaturePool pool(model, nfeatures); nfeatures = pool.size(); @@ -132,7 +132,7 @@ int main(int argc, char** argv) std::string path = cfg.trainPath; sft::Dataset dataset(path, boost.logScale); - if (boost.train(dataset, pool, cfg.weaks, cfg.treeDepth)) + if (boost.train(dataset, &pool, cfg.weaks, cfg.treeDepth)) { CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); boost.write(fout, cfg.cascadeName); @@ -142,7 +142,7 @@ int main(int argc, char** argv) cv::Mat thresholds; boost.setRejectThresholds(thresholds); - boost.write(fso, pool, thresholds); + boost.write(fso, &pool, thresholds); cv::FileStorage tfs(("thresholds." + cfg.resPath(it)).c_str(), cv::FileStorage::WRITE); tfs << "thresholds" << thresholds; diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index e8e069b161..775fab535e 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2132,6 +2132,17 @@ template<> CV_EXPORTS void Ptr::delete_obj(); CV_EXPORTS bool initModule_ml(void); +CV_EXPORTS class FeaturePool +{ +public: + + virtual int size() const = 0; + virtual float apply(int fi, int si, const Mat& integrals) const = 0; + virtual void write( cv::FileStorage& fs, int index) const = 0; + + virtual ~FeaturePool() = 0; +}; + } #endif // __cplusplus diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp new file mode 100644 index 0000000000..a7b7179ca4 --- /dev/null +++ b/modules/ml/src/octave.cpp @@ -0,0 +1,45 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "precomp.hpp" + +cv::FeaturePool::~FeaturePool(){} \ No newline at end of file From a0e93d04826d20d486654e5d9f4afe41532b04cd Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 15:21:04 +0400 Subject: [PATCH 27/82] move image extraction logic from Octave to Dataset class --- apps/sft/include/sft/octave.hpp | 92 +++++++++++++++++++++++--- apps/sft/octave.cpp | 98 +++++++--------------------- modules/ml/include/opencv2/ml/ml.hpp | 2 + 3 files changed, 109 insertions(+), 83 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 1ab5e40300..1d19cdba0b 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -46,17 +46,70 @@ #include #include +#include +#include namespace sft { -class Dataset +class Preprocessor { public: - Dataset(const sft::string& path, const int octave); + Preprocessor() {} -// private: - svector pos; - svector neg; + void apply(const cv::Mat& frame, cv::Mat& integrals) const + { + CV_Assert(frame.type() == CV_8UC3); + + int h = frame.rows; + int w = frame.cols; + + cv::Mat channels, gray; + + channels.create(h * BINS, w, CV_8UC1); + channels.setTo(0); + + cvtColor(frame, gray, CV_BGR2GRAY); + + cv::Mat df_dx, df_dy, mag, angle; + cv::Sobel(gray, df_dx, CV_32F, 1, 0); + cv::Sobel(gray, df_dy, CV_32F, 0, 1); + + cv::cartToPolar(df_dx, df_dy, mag, angle, true); + mag *= (1.f / (8 * sqrt(2.f))); + + cv::Mat nmag; + mag.convertTo(nmag, CV_8UC1); + + angle *= 6 / 360.f; + + for (int y = 0; y < h; ++y) + { + uchar* magnitude = nmag.ptr(y); + float* ang = angle.ptr(y); + + for (int x = 0; x < w; ++x) + { + channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; + } + } + + cv::Mat luv, shrunk; + cv::cvtColor(frame, luv, CV_BGR2Luv); + + std::vector splited; + for (int i = 0; i < 3; ++i) + splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); + split(luv, splited); + + float shrinkage = static_cast(integrals.cols - 1) / channels.cols; + + CV_Assert(shrinkage == 0.25); + + cv::resize(channels, shrunk, cv::Size(), shrinkage, shrinkage, CV_INTER_AREA); + cv::integral(shrunk, integrals, cv::noArray(), CV_32S); + } + + enum {BINS = 10}; }; struct ICF @@ -74,7 +127,7 @@ struct ICF } - float operator() (const Mat& integrals, const cv::Size& model) const + float operator() (const cv::Mat& integrals, const cv::Size& model) const { int step = model.width + 1; @@ -95,11 +148,11 @@ private: cv::Rect bb; int channel; - friend void write(cv::FileStorage& fs, const string&, const ICF& f); + friend void write(cv::FileStorage& fs, const std::string&, const ICF& f); friend std::ostream& operator<<(std::ostream& out, const ICF& f); }; -void write(cv::FileStorage& fs, const string&, const ICF& f); +void write(cv::FileStorage& fs, const std::string&, const ICF& f); std::ostream& operator<<(std::ostream& out, const ICF& m); class ICFFeaturePool : public cv::FeaturePool @@ -108,7 +161,8 @@ public: ICFFeaturePool(cv::Size model, int nfeatures); virtual int size() const { return (int)pool.size(); } - virtual float apply(int fi, int si, const Mat& integrals) const; + virtual float apply(int fi, int si, const cv::Mat& integrals) const; + virtual void preprocess(const cv::Mat& frame, cv::Mat& integrals) const; virtual void write( cv::FileStorage& fs, int index) const; virtual ~ICFFeaturePool(); @@ -124,12 +178,30 @@ private: static const unsigned int seed = 0; + Preprocessor preprocessor; + enum { N_CHANNELS = 10 }; }; using cv::FeaturePool; + + +class Dataset +{ +public: + typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; + Dataset(const sft::string& path, const int octave); + + cv::Mat get(SampleType type, int idx) const; + int available(SampleType type) const; + +private: + svector pos; + svector neg; +}; + // used for traning single octave scale class Octave : cv::Boost { @@ -163,7 +235,7 @@ protected: const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); void processPositives(const Dataset& dataset, const FeaturePool* pool); - void generateNegatives(const Dataset& dataset); + void generateNegatives(const Dataset& dataset, const FeaturePool* pool); float predict( const Mat& _sample, const cv::Range range) const; private: diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index 693b7b90d9..eac165d7f8 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -44,9 +44,6 @@ #include #include -#include -#include - #include // ============ Octave ============ // @@ -138,85 +135,26 @@ void sft::Octave::setRejectThresholds(cv::Mat& thresholds) namespace { using namespace sft; -class Preprocessor -{ -public: - Preprocessor(int shr) : shrinkage(shr) {} - void apply(const Mat& frame, Mat& integrals) - { - CV_Assert(frame.type() == CV_8UC3); - - int h = frame.rows; - int w = frame.cols; - - cv::Mat channels, gray; - - channels.create(h * BINS, w, CV_8UC1); - channels.setTo(0); - - cvtColor(frame, gray, CV_BGR2GRAY); - - cv::Mat df_dx, df_dy, mag, angle; - cv::Sobel(gray, df_dx, CV_32F, 1, 0); - cv::Sobel(gray, df_dy, CV_32F, 0, 1); - - cv::cartToPolar(df_dx, df_dy, mag, angle, true); - mag *= (1.f / (8 * sqrt(2.f))); - - cv::Mat nmag; - mag.convertTo(nmag, CV_8UC1); - - angle *= 6 / 360.f; - - for (int y = 0; y < h; ++y) - { - uchar* magnitude = nmag.ptr(y); - float* ang = angle.ptr(y); - - for (int x = 0; x < w; ++x) - { - channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; - } - } - - cv::Mat luv, shrunk; - cv::cvtColor(frame, luv, CV_BGR2Luv); - - std::vector splited; - for (int i = 0; i < 3; ++i) - splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); - split(luv, splited); - - cv::resize(channels, shrunk, cv::Size(), 1.0 / shrinkage, 1.0 / shrinkage, CV_INTER_AREA); - cv::integral(shrunk, integrals, cv::noArray(), CV_32S); - } - - int shrinkage; - enum {BINS = 10}; -}; } void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool* pool) { - Preprocessor prepocessor(shrinkage); - int w = boundingBox.width; int h = boundingBox.height; integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); int total = 0; - for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) + // for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) + for (int curr = 0; curr < dataset.available( Dataset::POSITIVE); ++curr) { - const string& curr = *it; - - cv::Mat sample = cv::imread(curr); + cv::Mat sample = dataset.get( Dataset::POSITIVE, curr); cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); sample = sample(boundingBox); - prepocessor.apply(sample, channels); + pool->preprocess(sample, channels); responses.ptr(total)[0] = 1.f; if (++total >= npositives) break; @@ -228,7 +166,7 @@ void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool* po nnegatives = cvRound(nnegatives * total / (double)npositives); } -void sft::Octave::generateNegatives(const Dataset& dataset) +void sft::Octave::generateNegatives(const Dataset& dataset, const FeaturePool* pool) { // ToDo: set seed, use offsets sft::Random::engine eng(65633343L); @@ -237,9 +175,7 @@ void sft::Octave::generateNegatives(const Dataset& dataset) // int w = boundingBox.width; int h = boundingBox.height; - Preprocessor prepocessor(shrinkage); - - int nimages = (int)dataset.neg.size(); + int nimages = dataset.available(Dataset::NEGATIVE); sft::Random::uniform iRand(0, nimages - 1); int total = 0; @@ -248,7 +184,7 @@ void sft::Octave::generateNegatives(const Dataset& dataset) { int curr = iRand(idxEng); - Mat frame = cv::imread(dataset.neg[curr]); + Mat frame = dataset.get(Dataset::NEGATIVE, curr); int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; @@ -262,7 +198,7 @@ void sft::Octave::generateNegatives(const Dataset& dataset) frame = frame(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); - prepocessor.apply(frame, channels); + pool->preprocess(frame, channels); dprintf("generated %d %d\n", dx, dy); @@ -386,7 +322,7 @@ bool sft::Octave::train(const Dataset& dataset, const FeaturePool* pool, int wea // 1. fill integrals and classes processPositives(dataset, pool); - generateNegatives(dataset); + generateNegatives(dataset, pool); // 2. only sumple case (all features used) int nfeatures = pool->size(); @@ -455,6 +391,11 @@ sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) fill(nfeatures); } +void sft::ICFFeaturePool::preprocess(const Mat& frame, Mat& integrals) const +{ + preprocessor.apply(frame, integrals); +} + float sft::ICFFeaturePool::apply(int fi, int si, const Mat& integrals) const { return pool[fi](integrals.row(si), model); @@ -571,4 +512,15 @@ Dataset::Dataset(const string& path, const int oct) // Check: files not empty CV_Assert(pos.size() != size_t(0)); CV_Assert(neg.size() != size_t(0)); +} + +cv::Mat Dataset::get(SampleType type, int idx) const +{ + const std::string& src = (type == POSITIVE)? pos[idx]: neg[idx]; + return cv::imread(src); +} + +int Dataset::available(SampleType type) const +{ + return (int)((type == POSITIVE)? pos.size():neg.size()); } \ No newline at end of file diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 775fab535e..ebc5814d21 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2140,6 +2140,8 @@ public: virtual float apply(int fi, int si, const Mat& integrals) const = 0; virtual void write( cv::FileStorage& fs, int index) const = 0; + virtual void preprocess(const Mat& frame, Mat& integrals) const = 0; + virtual ~FeaturePool() = 0; }; From dd8de0c41f50a9b26d5ee2771bd10b60d976e9a9 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 16:03:53 +0400 Subject: [PATCH 28/82] move soft cascade octave to ml module --- apps/sft/include/sft/octave.hpp | 72 +---- apps/sft/octave.cpp | 347 +--------------------- apps/sft/sft.cpp | 6 +- modules/ml/include/opencv2/ml/ml.hpp | 67 ++++- modules/ml/src/octave.cpp | 416 ++++++++++++++++++++++++++- 5 files changed, 498 insertions(+), 410 deletions(-) diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/octave.hpp index 1d19cdba0b..5d5d3b3fe2 100644 --- a/apps/sft/include/sft/octave.hpp +++ b/apps/sft/include/sft/octave.hpp @@ -155,6 +155,9 @@ private: void write(cv::FileStorage& fs, const std::string&, const ICF& f); std::ostream& operator<<(std::ostream& out, const ICF& m); +using cv::FeaturePool; +using cv::Dataset; + class ICFFeaturePool : public cv::FeaturePool { public: @@ -184,79 +187,20 @@ private: }; -using cv::FeaturePool; - - -class Dataset +class ScaledDataset : public Dataset { public: - typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; - Dataset(const sft::string& path, const int octave); + ScaledDataset(const sft::string& path, const int octave); - cv::Mat get(SampleType type, int idx) const; - int available(SampleType type) const; + virtual cv::Mat get(SampleType type, int idx) const; + virtual int available(SampleType type) const; + virtual ~ScaledDataset(); private: svector pos; svector neg; }; - -// used for traning single octave scale -class Octave : cv::Boost -{ -public: - - enum - { - // Direct backward pruning. (Cha Zhang and Paul Viola) - DBP = 1, - // Multiple instance pruning. (Cha Zhang and Paul Viola) - MIP = 2, - // Originally proposed by L. bourdev and J. brandt - HEURISTIC = 4 - }; - - Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); - virtual ~Octave(); - - virtual bool train(const Dataset& dataset, const FeaturePool* pool, int weaks, int treeDepth); - - virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; - virtual void setRejectThresholds(cv::Mat& thresholds); - virtual void write( CvFileStorage* fs, string name) const; - - virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const; - - int logScale; - -protected: - virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); - - void processPositives(const Dataset& dataset, const FeaturePool* pool); - void generateNegatives(const Dataset& dataset, const FeaturePool* pool); - - float predict( const Mat& _sample, const cv::Range range) const; -private: - void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; - virtual void initial_weights(double (&p)[2]); - - cv::Rect boundingBox; - - int npositives; - int nnegatives; - - int shrinkage; - - Mat integrals; - Mat responses; - - CvBoostParams params; - - Mat trainData; -}; - } #endif \ No newline at end of file diff --git a/apps/sft/octave.cpp b/apps/sft/octave.cpp index eac165d7f8..01e91a3693 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/octave.cpp @@ -46,343 +46,6 @@ #include #include -// ============ Octave ============ // -sft::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) -: logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) -{ - int maxSample = npositives + nnegatives; - responses.create(maxSample, 1, CV_32FC1); - - CvBoostParams _params; - { - // tree params - _params.max_categories = 10; - _params.max_depth = 2; - _params.cv_folds = 0; - _params.truncate_pruned_tree = false; - _params.use_surrogates = false; - _params.use_1se_rule = false; - _params.regression_accuracy = 1.0e-6; - - // boost params - _params.boost_type = CvBoost::GENTLE; - _params.split_criteria = CvBoost::SQERR; - _params.weight_trim_rate = 0.95; - - // simple defaults - _params.min_sample_count = 2; - _params.weak_count = 1; - } - - params = _params; -} - -sft::Octave::~Octave(){} - -bool sft::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, - const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) -{ - bool update = false; - return cv::Boost::train(_trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, - update); -} - -void sft::Octave::setRejectThresholds(cv::Mat& thresholds) -{ - dprintf("set thresholds according to DBP strategy\n"); - - // labels desided by classifier - cv::Mat desisions(responses.cols, responses.rows, responses.type()); - float* dptr = desisions.ptr(0); - - // mask of samples satisfying the condition - cv::Mat ppmask(responses.cols, responses.rows, CV_8UC1); - uchar* mptr = ppmask.ptr(0); - - int nsamples = npositives + nnegatives; - - cv::Mat stab; - - for (int si = 0; si < nsamples; ++si) - { - float decision = dptr[si] = predict(trainData.col(si), stab, false, false); - mptr[si] = cv::saturate_cast((uint)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); - } - - int weaks = weak->total; - thresholds.create(1, weaks, CV_64FC1); - double* thptr = thresholds.ptr(0); - - cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX)); - - for (int w = 0; w < weaks; ++w) - { - double* rptr = traces.ptr(w); - for (int si = 0; si < nsamples; ++si) - { - cv::Range curr(0, w + 1); - if (mptr[si]) - { - float trace = predict(trainData.col(si), curr); - rptr[si] = trace; - } - } - double mintrace = 0.; - cv::minMaxLoc(traces.row(w), &mintrace); - thptr[w] = mintrace; - } -} - -namespace { -using namespace sft; - -} - -void sft::Octave::processPositives(const Dataset& dataset, const FeaturePool* pool) -{ - int w = boundingBox.width; - int h = boundingBox.height; - - integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); - - int total = 0; - // for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) - for (int curr = 0; curr < dataset.available( Dataset::POSITIVE); ++curr) - { - cv::Mat sample = dataset.get( Dataset::POSITIVE, curr); - - cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); - sample = sample(boundingBox); - - pool->preprocess(sample, channels); - responses.ptr(total)[0] = 1.f; - - if (++total >= npositives) break; - } - - dprintf("Processing positives finished:\n\trequested %d positives, collected %d samples.\n", npositives, total); - - npositives = total; - nnegatives = cvRound(nnegatives * total / (double)npositives); -} - -void sft::Octave::generateNegatives(const Dataset& dataset, const FeaturePool* pool) -{ - // ToDo: set seed, use offsets - sft::Random::engine eng(65633343L); - sft::Random::engine idxEng(764224349868L); - - // int w = boundingBox.width; - int h = boundingBox.height; - - int nimages = dataset.available(Dataset::NEGATIVE); - sft::Random::uniform iRand(0, nimages - 1); - - int total = 0; - Mat sum; - for (int i = npositives; i < nnegatives + npositives; ++total) - { - int curr = iRand(idxEng); - - Mat frame = dataset.get(Dataset::NEGATIVE, curr); - - int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; - int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; - - sft::Random::uniform wRand(0, maxW -1); - sft::Random::uniform hRand(0, maxH -1); - - int dx = wRand(eng); - int dy = hRand(eng); - - frame = frame(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); - - cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); - pool->preprocess(frame, channels); - - dprintf("generated %d %d\n", dx, dy); - - // // if (predict(sum)) - { - responses.ptr(i)[0] = 0.f; - ++i; - } - } - - dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); -} - - -template int sgn(T val) { - return (T(0) < val) - (val < T(0)); -} - -void sft::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const -{ - std::queue nodes; - nodes.push( tree->get_root()); - const CvDTreeNode* tempNode; - int leafValIdx = 0; - int internalNodeIdx = 1; - float* leafs = new float[(int)pow(2.f, get_params().max_depth)]; - - fs << "{"; - fs << "treeThreshold" << *th; - fs << "internalNodes" << "["; - while (!nodes.empty()) - { - tempNode = nodes.front(); - CV_Assert( tempNode->left ); - if ( !tempNode->left->left && !tempNode->left->right) - { - leafs[-leafValIdx] = (float)tempNode->left->value; - fs << leafValIdx-- ; - } - else - { - nodes.push( tempNode->left ); - fs << internalNodeIdx++; - } - CV_Assert( tempNode->right ); - if ( !tempNode->right->left && !tempNode->right->right) - { - leafs[-leafValIdx] = (float)tempNode->right->value; - fs << leafValIdx--; - } - else - { - nodes.push( tempNode->right ); - fs << internalNodeIdx++; - } - - int fidx = tempNode->split->var_idx; - fs << nfeatures; - used[nfeatures++] = fidx; - - fs << tempNode->split->ord.c; - - nodes.pop(); - } - fs << "]"; - - fs << "leafValues" << "["; - for (int ni = 0; ni < -leafValIdx; ni++) - fs << leafs[ni]; - fs << "]"; - - - fs << "}"; -} - -void sft::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, const Mat& thresholds) const -{ - CV_Assert(!thresholds.empty()); - cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); - int* usedPtr = used.ptr(0); - int nfeatures = 0; - fso << "{" - << "scale" << logScale - << "weaks" << weak->total - << "trees" << "["; - // should be replased with the H.L. one - CvSeqReader reader; - cvStartReadSeq( weak, &reader); - - for(int i = 0; i < weak->total; i++ ) - { - CvBoostTree* tree; - CV_READ_SEQ_ELEM( tree, reader ); - - traverse(tree, fso, nfeatures, usedPtr, thresholds.ptr(0) + i); - } - fso << "]"; - // features - - fso << "features" << "["; - for (int i = 0; i < nfeatures; ++i) - pool->write(fso, usedPtr[i]); - fso << "]" - << "}"; -} - -void sft::Octave::initial_weights(double (&p)[2]) -{ - double n = data->sample_count; - p[0] = n / (2. * (double)(nnegatives)); - p[1] = n / (2. * (double)(npositives)); -} - -bool sft::Octave::train(const Dataset& dataset, const FeaturePool* pool, int weaks, int treeDepth) -{ - CV_Assert(treeDepth == 2); - CV_Assert(weaks > 0); - - params.max_depth = treeDepth; - params.weak_count = weaks; - - // 1. fill integrals and classes - processPositives(dataset, pool); - generateNegatives(dataset, pool); - - // 2. only sumple case (all features used) - int nfeatures = pool->size(); - cv::Mat varIdx(1, nfeatures, CV_32SC1); - int* ptr = varIdx.ptr(0); - - for (int x = 0; x < nfeatures; ++x) - ptr[x] = x; - - // 3. only sumple case (all samples used) - int nsamples = npositives + nnegatives; - cv::Mat sampleIdx(1, nsamples, CV_32SC1); - ptr = sampleIdx.ptr(0); - - for (int x = 0; x < nsamples; ++x) - ptr[x] = x; - - // 4. ICF has an orderable responce. - cv::Mat varType(1, nfeatures + 1, CV_8UC1); - uchar* uptr = varType.ptr(0); - for (int x = 0; x < nfeatures; ++x) - uptr[x] = CV_VAR_ORDERED; - uptr[nfeatures] = CV_VAR_CATEGORICAL; - - trainData.create(nfeatures, nsamples, CV_32FC1); - for (int fi = 0; fi < nfeatures; ++fi) - { - float* dptr = trainData.ptr(fi); - for (int si = 0; si < nsamples; ++si) - { - dptr[si] = pool->apply(fi, si, integrals); - } - } - - cv::Mat missingMask; - - bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); - if (!ok) - std::cout << "ERROR: tree can not be trained " << std::endl; - return ok; - -} - -float sft::Octave::predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const -{ - CvMat sample = _sample, votes = _votes; - return CvBoost::predict(&sample, 0, (_votes.empty())? 0 : &votes, CV_WHOLE_SEQ, raw_mode, return_sum); -} - -float sft::Octave::predict( const Mat& _sample, const cv::Range range) const -{ - CvMat sample = _sample; - return CvBoost::predict(&sample, 0, 0, range, false, true); -} - -void sft::Octave::write( CvFileStorage* fs, string name) const -{ - CvBoost::write(fs, name.c_str()); -} - // ========= FeaturePool ========= // sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m), nfeatures(n) @@ -499,7 +162,7 @@ void glob(const string& path, svector& ret) // in the default case data folders should be alligned as following: // 1. positives: /octave_/pos/*.png // 2. negatives: /octave_/neg/*.png -Dataset::Dataset(const string& path, const int oct) +ScaledDataset::ScaledDataset(const string& path, const int oct) { dprintf("%s\n", "get dataset file names..."); @@ -514,13 +177,15 @@ Dataset::Dataset(const string& path, const int oct) CV_Assert(neg.size() != size_t(0)); } -cv::Mat Dataset::get(SampleType type, int idx) const +cv::Mat ScaledDataset::get(SampleType type, int idx) const { const std::string& src = (type == POSITIVE)? pos[idx]: neg[idx]; return cv::imread(src); } -int Dataset::available(SampleType type) const +int ScaledDataset::available(SampleType type) const { return (int)((type == POSITIVE)? pos.size():neg.size()); -} \ No newline at end of file +} + +ScaledDataset::~ScaledDataset(){} \ No newline at end of file diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 8c40039677..acc89f2d89 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -127,12 +127,12 @@ int main(int argc, char** argv) cv::Rect boundingBox = cfg.bbox(it); std::cout << "Object bounding box" << boundingBox << std::endl; - sft::Octave boost(boundingBox, npositives, nnegatives, *it, shrinkage); + cv::Octave boost(boundingBox, npositives, nnegatives, *it, shrinkage); std::string path = cfg.trainPath; - sft::Dataset dataset(path, boost.logScale); + sft::ScaledDataset dataset(path, boost.logScale); - if (boost.train(dataset, &pool, cfg.weaks, cfg.treeDepth)) + if (boost.train(&dataset, &pool, cfg.weaks, cfg.treeDepth)) { CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); boost.write(fout, cfg.cascadeName); diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index ebc5814d21..98019ebb05 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2142,7 +2142,72 @@ public: virtual void preprocess(const Mat& frame, Mat& integrals) const = 0; - virtual ~FeaturePool() = 0; + virtual ~FeaturePool(); +}; + +class Dataset +{ +public: + typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; + + virtual cv::Mat get(SampleType type, int idx) const = 0; + virtual int available(SampleType type) const = 0; + virtual ~Dataset(); +}; + +// used for traning single octave scale +class Octave : cv::Boost +{ +public: + + enum + { + // Direct backward pruning. (Cha Zhang and Paul Viola) + DBP = 1, + // Multiple instance pruning. (Cha Zhang and Paul Viola) + MIP = 2, + // Originally proposed by L. bourdev and J. brandt + HEURISTIC = 4 + }; + + Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); + virtual ~Octave(); + + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); + + virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; + virtual void setRejectThresholds(cv::Mat& thresholds); + virtual void write( CvFileStorage* fs, string name) const; + + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const; + + int logScale; + +protected: + virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); + + void processPositives(const Dataset* dataset, const FeaturePool* pool); + void generateNegatives(const Dataset* dataset, const FeaturePool* pool); + + float predict( const Mat& _sample, const cv::Range range) const; +private: + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; + virtual void initial_weights(double (&p)[2]); + + cv::Rect boundingBox; + + int npositives; + int nnegatives; + + int shrinkage; + + Mat integrals; + Mat responses; + + CvBoostParams params; + + Mat trainData; }; } diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index a7b7179ca4..e8fc6002c6 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -41,5 +41,419 @@ //M*/ #include "precomp.hpp" +#include -cv::FeaturePool::~FeaturePool(){} \ No newline at end of file +#define WITH_DEBUG_OUT + +#if defined WITH_DEBUG_OUT +# include +# define dprintf(format, ...) \ + do { printf(format, ##__VA_ARGS__); } while (0) +#else +# define dprintf(format, ...) +#endif + +#if defined(_MSC_VER) && _MSC_VER >= 1600 + +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} + +#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 + +# if defined (__cplusplus) && __cplusplus > 201100L +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} +# else +# include + +namespace sft { +struct Random +{ + typedef std::tr1::mt19937 engine; + typedef std::tr1::uniform_int uniform; +}; +} +# endif + +#else +#include +namespace rnd { + +typedef cv::RNG engine; + +template +struct uniform_int +{ + uniform_int(const int _min, const int _max) : min(_min), max(_max) {} + T operator() (engine& eng, const int bound) const + { + return (T)eng.uniform(min, bound); + } + + T operator() (engine& eng) const + { + return (T)eng.uniform(min, max); + } + +private: + int min; + int max; +}; + +} + +namespace sft { +struct Random +{ + typedef rnd::engine engine; + typedef rnd::uniform_int uniform; +}; +} + +#endif + +cv::FeaturePool::~FeaturePool(){} +cv::Dataset::~Dataset(){} + +cv::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) +: logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) +{ + int maxSample = npositives + nnegatives; + responses.create(maxSample, 1, CV_32FC1); + + CvBoostParams _params; + { + // tree params + _params.max_categories = 10; + _params.max_depth = 2; + _params.cv_folds = 0; + _params.truncate_pruned_tree = false; + _params.use_surrogates = false; + _params.use_1se_rule = false; + _params.regression_accuracy = 1.0e-6; + + // boost params + _params.boost_type = CvBoost::GENTLE; + _params.split_criteria = CvBoost::SQERR; + _params.weight_trim_rate = 0.95; + + // simple defaults + _params.min_sample_count = 2; + _params.weak_count = 1; + } + + params = _params; +} + +cv::Octave::~Octave(){} + +bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, + const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) +{ + bool update = false; + return cv::Boost::train(_trainData, CV_COL_SAMPLE, _responses, varIdx, sampleIdx, varType, missingDataMask, params, + update); +} + +void cv::Octave::setRejectThresholds(cv::Mat& thresholds) +{ + dprintf("set thresholds according to DBP strategy\n"); + + // labels desided by classifier + cv::Mat desisions(responses.cols, responses.rows, responses.type()); + float* dptr = desisions.ptr(0); + + // mask of samples satisfying the condition + cv::Mat ppmask(responses.cols, responses.rows, CV_8UC1); + uchar* mptr = ppmask.ptr(0); + + int nsamples = npositives + nnegatives; + + cv::Mat stab; + + for (int si = 0; si < nsamples; ++si) + { + float decision = dptr[si] = predict(trainData.col(si), stab, false, false); + mptr[si] = cv::saturate_cast((uint)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); + } + + int weaks = weak->total; + thresholds.create(1, weaks, CV_64FC1); + double* thptr = thresholds.ptr(0); + + cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX)); + + for (int w = 0; w < weaks; ++w) + { + double* rptr = traces.ptr(w); + for (int si = 0; si < nsamples; ++si) + { + cv::Range curr(0, w + 1); + if (mptr[si]) + { + float trace = predict(trainData.col(si), curr); + rptr[si] = trace; + } + } + double mintrace = 0.; + cv::minMaxLoc(traces.row(w), &mintrace); + thptr[w] = mintrace; + } +} + +void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* pool) +{ + int w = boundingBox.width; + int h = boundingBox.height; + + integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); + + int total = 0; + // for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) + for (int curr = 0; curr < dataset->available( Dataset::POSITIVE); ++curr) + { + cv::Mat sample = dataset->get( Dataset::POSITIVE, curr); + + cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); + sample = sample(boundingBox); + + pool->preprocess(sample, channels); + responses.ptr(total)[0] = 1.f; + + if (++total >= npositives) break; + } + + dprintf("Processing positives finished:\n\trequested %d positives, collected %d samples.\n", npositives, total); + + npositives = total; + nnegatives = cvRound(nnegatives * total / (double)npositives); +} + +void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) +{ + // ToDo: set seed, use offsets + sft::Random::engine eng(65633343L); + sft::Random::engine idxEng(764224349868L); + + // int w = boundingBox.width; + int h = boundingBox.height; + + int nimages = dataset->available(Dataset::NEGATIVE); + sft::Random::uniform iRand(0, nimages - 1); + + int total = 0; + Mat sum; + for (int i = npositives; i < nnegatives + npositives; ++total) + { + int curr = iRand(idxEng); + + Mat frame = dataset->get(Dataset::NEGATIVE, curr); + + int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; + int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; + + sft::Random::uniform wRand(0, maxW -1); + sft::Random::uniform hRand(0, maxH -1); + + int dx = wRand(eng); + int dy = hRand(eng); + + frame = frame(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); + + cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); + pool->preprocess(frame, channels); + + dprintf("generated %d %d\n", dx, dy); + + // // if (predict(sum)) + { + responses.ptr(i)[0] = 0.f; + ++i; + } + } + + dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); +} + + +template int sgn(T val) { + return (T(0) < val) - (val < T(0)); +} + +void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const +{ + std::queue nodes; + nodes.push( tree->get_root()); + const CvDTreeNode* tempNode; + int leafValIdx = 0; + int internalNodeIdx = 1; + float* leafs = new float[(int)pow(2.f, get_params().max_depth)]; + + fs << "{"; + fs << "treeThreshold" << *th; + fs << "internalNodes" << "["; + while (!nodes.empty()) + { + tempNode = nodes.front(); + CV_Assert( tempNode->left ); + if ( !tempNode->left->left && !tempNode->left->right) + { + leafs[-leafValIdx] = (float)tempNode->left->value; + fs << leafValIdx-- ; + } + else + { + nodes.push( tempNode->left ); + fs << internalNodeIdx++; + } + CV_Assert( tempNode->right ); + if ( !tempNode->right->left && !tempNode->right->right) + { + leafs[-leafValIdx] = (float)tempNode->right->value; + fs << leafValIdx--; + } + else + { + nodes.push( tempNode->right ); + fs << internalNodeIdx++; + } + + int fidx = tempNode->split->var_idx; + fs << nfeatures; + used[nfeatures++] = fidx; + + fs << tempNode->split->ord.c; + + nodes.pop(); + } + fs << "]"; + + fs << "leafValues" << "["; + for (int ni = 0; ni < -leafValIdx; ni++) + fs << leafs[ni]; + fs << "]"; + + + fs << "}"; +} + +void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, const Mat& thresholds) const +{ + CV_Assert(!thresholds.empty()); + cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); + int* usedPtr = used.ptr(0); + int nfeatures = 0; + fso << "{" + << "scale" << logScale + << "weaks" << weak->total + << "trees" << "["; + // should be replased with the H.L. one + CvSeqReader reader; + cvStartReadSeq( weak, &reader); + + for(int i = 0; i < weak->total; i++ ) + { + CvBoostTree* tree; + CV_READ_SEQ_ELEM( tree, reader ); + + traverse(tree, fso, nfeatures, usedPtr, thresholds.ptr(0) + i); + } + fso << "]"; + // features + + fso << "features" << "["; + for (int i = 0; i < nfeatures; ++i) + pool->write(fso, usedPtr[i]); + fso << "]" + << "}"; +} + +void cv::Octave::initial_weights(double (&p)[2]) +{ + double n = data->sample_count; + p[0] = n / (2. * (double)(nnegatives)); + p[1] = n / (2. * (double)(npositives)); +} + +bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) +{ + CV_Assert(treeDepth == 2); + CV_Assert(weaks > 0); + + params.max_depth = treeDepth; + params.weak_count = weaks; + + // 1. fill integrals and classes + processPositives(dataset, pool); + generateNegatives(dataset, pool); + + // 2. only sumple case (all features used) + int nfeatures = pool->size(); + cv::Mat varIdx(1, nfeatures, CV_32SC1); + int* ptr = varIdx.ptr(0); + + for (int x = 0; x < nfeatures; ++x) + ptr[x] = x; + + // 3. only sumple case (all samples used) + int nsamples = npositives + nnegatives; + cv::Mat sampleIdx(1, nsamples, CV_32SC1); + ptr = sampleIdx.ptr(0); + + for (int x = 0; x < nsamples; ++x) + ptr[x] = x; + + // 4. ICF has an orderable responce. + cv::Mat varType(1, nfeatures + 1, CV_8UC1); + uchar* uptr = varType.ptr(0); + for (int x = 0; x < nfeatures; ++x) + uptr[x] = CV_VAR_ORDERED; + uptr[nfeatures] = CV_VAR_CATEGORICAL; + + trainData.create(nfeatures, nsamples, CV_32FC1); + for (int fi = 0; fi < nfeatures; ++fi) + { + float* dptr = trainData.ptr(fi); + for (int si = 0; si < nsamples; ++si) + { + dptr[si] = pool->apply(fi, si, integrals); + } + } + + cv::Mat missingMask; + + bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); + if (!ok) + std::cout << "ERROR: tree can not be trained " << std::endl; + return ok; + +} + +float cv::Octave::predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const +{ + CvMat sample = _sample, votes = _votes; + return CvBoost::predict(&sample, 0, (_votes.empty())? 0 : &votes, CV_WHOLE_SEQ, raw_mode, return_sum); +} + +float cv::Octave::predict( const Mat& _sample, const cv::Range range) const +{ + CvMat sample = _sample; + return CvBoost::predict(&sample, 0, 0, range, false, true); +} + +void cv::Octave::write( CvFileStorage* fs, string name) const +{ + CvBoost::write(fs, name.c_str()); +} From a0f2203f222c5a8e7ecfab37a73324e40395d491 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 16:10:05 +0400 Subject: [PATCH 29/82] raplase error output on CV_Error --- modules/ml/src/octave.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index e8fc6002c6..fa34ad1243 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -221,7 +221,6 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); int total = 0; - // for (svector::const_iterator it = dataset.pos.begin(); it != dataset.pos.end(); ++it) for (int curr = 0; curr < dataset->available( Dataset::POSITIVE); ++curr) { cv::Mat sample = dataset->get( Dataset::POSITIVE, curr); @@ -247,7 +246,6 @@ void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* po sft::Random::engine eng(65633343L); sft::Random::engine idxEng(764224349868L); - // int w = boundingBox.width; int h = boundingBox.height; int nimages = dataset->available(Dataset::NEGATIVE); @@ -276,7 +274,6 @@ void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* po pool->preprocess(frame, channels); dprintf("generated %d %d\n", dx, dy); - // // if (predict(sum)) { responses.ptr(i)[0] = 0.f; @@ -436,7 +433,7 @@ bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weak bool ok = train(trainData, responses, varIdx, sampleIdx, varType, missingMask); if (!ok) - std::cout << "ERROR: tree can not be trained " << std::endl; + CV_Error(CV_StsInternal, "ERROR: tree can not be trained"); return ok; } From 184ae44dea1da3e2f6aad2d545ad72103d535b43 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 16:31:09 +0400 Subject: [PATCH 30/82] refactoring --- apps/sft/{octave.cpp => fpool.cpp} | 2 +- apps/sft/include/sft/{octave.hpp => fpool.hpp} | 0 apps/sft/sft.cpp | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename apps/sft/{octave.cpp => fpool.cpp} (99%) rename apps/sft/include/sft/{octave.hpp => fpool.hpp} (100%) diff --git a/apps/sft/octave.cpp b/apps/sft/fpool.cpp similarity index 99% rename from apps/sft/octave.cpp rename to apps/sft/fpool.cpp index 01e91a3693..fafdd0a120 100644 --- a/apps/sft/octave.cpp +++ b/apps/sft/fpool.cpp @@ -40,7 +40,7 @@ // //M*/ -#include +#include #include #include diff --git a/apps/sft/include/sft/octave.hpp b/apps/sft/include/sft/fpool.hpp similarity index 100% rename from apps/sft/include/sft/octave.hpp rename to apps/sft/include/sft/fpool.hpp diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index acc89f2d89..b170792efd 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -43,7 +43,7 @@ // Trating application for Soft Cascades. #include -#include +#include #include #include From e7bab669fa213657fe68ac4faee74c6b7df1882c Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 16:46:21 +0400 Subject: [PATCH 31/82] replace cv::Mat to Input/Output arrays --- apps/sft/fpool.cpp | 2 +- apps/sft/include/sft/fpool.hpp | 9 ++++++--- modules/ml/include/opencv2/ml/ml.hpp | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index fafdd0a120..39e81565f7 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -54,7 +54,7 @@ sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) fill(nfeatures); } -void sft::ICFFeaturePool::preprocess(const Mat& frame, Mat& integrals) const +void sft::ICFFeaturePool::preprocess(cv::InputArray frame, cv::OutputArray integrals) const { preprocessor.apply(frame, integrals); } diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 5d5d3b3fe2..3c93e6d80d 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -56,9 +56,12 @@ class Preprocessor public: Preprocessor() {} - void apply(const cv::Mat& frame, cv::Mat& integrals) const + void apply(cv::InputArray _frame, cv::OutputArray _integrals) const //const cv::Mat& frame, cv::Mat& integrals { - CV_Assert(frame.type() == CV_8UC3); + CV_Assert(_frame.type() == CV_8UC3); + + cv::Mat frame = _frame.getMat(); + cv::Mat& integrals = _integrals.getMatRef(); int h = frame.rows; int w = frame.cols; @@ -165,7 +168,7 @@ public: virtual int size() const { return (int)pool.size(); } virtual float apply(int fi, int si, const cv::Mat& integrals) const; - virtual void preprocess(const cv::Mat& frame, cv::Mat& integrals) const; + virtual void preprocess(cv::InputArray _frame, cv::OutputArray _integrals) const; virtual void write( cv::FileStorage& fs, int index) const; virtual ~ICFFeaturePool(); diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 98019ebb05..e3f3efecd1 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2140,7 +2140,7 @@ public: virtual float apply(int fi, int si, const Mat& integrals) const = 0; virtual void write( cv::FileStorage& fs, int index) const = 0; - virtual void preprocess(const Mat& frame, Mat& integrals) const = 0; + virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; virtual ~FeaturePool(); }; From e47f58f4cec1dc14da502f0256ea5898fbe7a8aa Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 17:07:24 +0400 Subject: [PATCH 32/82] replace Mats to Input/OutputArrays for Octave's public interface --- modules/ml/include/opencv2/ml/ml.hpp | 12 +++++++----- modules/ml/src/octave.cpp | 24 +++++++++++++++++------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index e3f3efecd1..5270d83333 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2171,15 +2171,17 @@ public: }; Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); + virtual void setRejectThresholds(OutputArray thresholds); + virtual void write( CvFileStorage* fs, string name) const; + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; virtual ~Octave(); - virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); - virtual float predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const; - virtual void setRejectThresholds(cv::Mat& thresholds); - virtual void write( CvFileStorage* fs, string name) const; + virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; + + - virtual void write( cv::FileStorage &fs, const FeaturePool* pool, const Mat& thresholds) const; int logScale; diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index fa34ad1243..d9a2db3b1e 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -167,7 +167,7 @@ bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, co update); } -void cv::Octave::setRejectThresholds(cv::Mat& thresholds) +void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds) { dprintf("set thresholds according to DBP strategy\n"); @@ -190,7 +190,8 @@ void cv::Octave::setRejectThresholds(cv::Mat& thresholds) } int weaks = weak->total; - thresholds.create(1, weaks, CV_64FC1); + _thresholds.create(1, weaks, CV_64FC1); + cv::Mat& thresholds = _thresholds.getMatRef(); double* thptr = thresholds.ptr(0); cv::Mat traces(weaks, nsamples, CV_64FC1, cv::Scalar::all(FLT_MAX)); @@ -346,12 +347,13 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe fs << "}"; } -void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, const Mat& thresholds) const +void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const { - CV_Assert(!thresholds.empty()); + CV_Assert(!_thresholds.empty()); cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); int* usedPtr = used.ptr(0); int nfeatures = 0; + cv::Mat thresholds = _thresholds.getMat(); fso << "{" << "scale" << logScale << "weaks" << weak->total @@ -438,10 +440,18 @@ bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weak } -float cv::Octave::predict( const Mat& _sample, Mat& _votes, bool raw_mode, bool return_sum ) const +float cv::Octave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const { - CvMat sample = _sample, votes = _votes; - return CvBoost::predict(&sample, 0, (_votes.empty())? 0 : &votes, CV_WHOLE_SEQ, raw_mode, return_sum); + cv::Mat sample = _sample.getMat(); + CvMat csample = sample; + if (_votes.empty()) + return CvBoost::predict(&csample, 0, 0, CV_WHOLE_SEQ, raw_mode, return_sum); + else + { + cv::Mat votes = _votes.getMat(); + CvMat cvotes = votes; + return CvBoost::predict(&csample, 0, &cvotes, CV_WHOLE_SEQ, raw_mode, return_sum); + } } float cv::Octave::predict( const Mat& _sample, const cv::Range range) const From e35eebd4d408a20d37e1af288a4fd0818a9f0be8 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 17:23:21 +0400 Subject: [PATCH 33/82] fix android build --- apps/sft/include/sft/random.hpp | 2 +- modules/ml/src/octave.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/sft/include/sft/random.hpp b/apps/sft/include/sft/random.hpp index e184da6294..3a3be8bbc7 100644 --- a/apps/sft/include/sft/random.hpp +++ b/apps/sft/include/sft/random.hpp @@ -54,7 +54,7 @@ struct Random }; } -#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 +#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) # if defined (__cplusplus) && __cplusplus > 201100L # include diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index d9a2db3b1e..bf37ba9783 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -64,7 +64,7 @@ struct Random }; } -#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 +#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) # if defined (__cplusplus) && __cplusplus > 201100L # include From dc12b4476a0d6d2cd144cba5eaec74f08aba4979 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 17:56:32 +0400 Subject: [PATCH 34/82] suppress debug out for soft cascade Octave --- apps/sft/sft.cpp | 2 +- modules/ml/include/opencv2/ml/ml.hpp | 11 ++--------- modules/ml/src/octave.cpp | 2 +- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index b170792efd..4432964c10 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -130,7 +130,7 @@ int main(int argc, char** argv) cv::Octave boost(boundingBox, npositives, nnegatives, *it, shrinkage); std::string path = cfg.trainPath; - sft::ScaledDataset dataset(path, boost.logScale); + sft::ScaledDataset dataset(path, *it); if (boost.train(&dataset, &pool, cfg.weaks, cfg.treeDepth)) { diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 5270d83333..7a1d0edc7e 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2175,16 +2175,8 @@ public: virtual void setRejectThresholds(OutputArray thresholds); virtual void write( CvFileStorage* fs, string name) const; virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; - virtual ~Octave(); - - virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; - - - - - int logScale; - + virtual ~Octave(); protected: virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); @@ -2197,6 +2189,7 @@ private: void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; virtual void initial_weights(double (&p)[2]); + int logScale; cv::Rect boundingBox; int npositives; diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index bf37ba9783..b9e59d1a56 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -43,7 +43,7 @@ #include "precomp.hpp" #include -#define WITH_DEBUG_OUT +//#define WITH_DEBUG_OUT #if defined WITH_DEBUG_OUT # include From e2de3b0b8177fd2fc8a881d6579f9199e8907b81 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 9 Jan 2013 21:07:53 +0400 Subject: [PATCH 35/82] fix build inder mac --- apps/sft/fpool.cpp | 2 +- modules/ml/src/octave.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 39e81565f7..7b7c2fa73c 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -150,7 +150,7 @@ void glob(const string& path, svector& ret) ret.clear(); ret.reserve(glob_result.gl_pathc); - for(uint i = 0; i < glob_result.gl_pathc; ++i) + for(unsigned int i = 0; i < glob_result.gl_pathc; ++i) { ret.push_back(std::string(glob_result.gl_pathv[i])); dprintf("%s\n", ret[i].c_str()); diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index b9e59d1a56..8154d20e19 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -186,7 +186,7 @@ void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds) for (int si = 0; si < nsamples; ++si) { float decision = dptr[si] = predict(trainData.col(si), stab, false, false); - mptr[si] = cv::saturate_cast((uint)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); + mptr[si] = cv::saturate_cast((unsigned int)( (responses.ptr(si)[0] == 1.f) && (decision == 1.f))); } int weaks = weak->total; @@ -350,7 +350,7 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const { CV_Assert(!_thresholds.empty()); - cv::Mat used( 1, weak->total * (pow(2, params.max_depth) - 1), CV_32SC1); + cv::Mat used( 1, weak->total * ( pow(2.f, params.max_depth) - 1), CV_32SC1); int* usedPtr = used.ptr(0); int nfeatures = 0; cv::Mat thresholds = _thresholds.getMat(); From 8672ae58e2d1d99b02a1b726a29ae1d915312656 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 10 Jan 2013 00:21:34 +0400 Subject: [PATCH 36/82] fix globbing under win --- apps/sft/fpool.cpp | 73 ++++++++++++++++++++++++++-- apps/sft/include/sft/common.hpp | 3 +- apps/sft/include/sft/config.hpp | 4 +- modules/ml/include/opencv2/ml/ml.hpp | 6 +-- modules/ml/src/octave.cpp | 10 ++-- 5 files changed, 80 insertions(+), 16 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 7b7c2fa73c..23b61e11fa 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -43,7 +43,6 @@ #include #include -#include #include // ========= FeaturePool ========= // @@ -89,8 +88,8 @@ void sft::ICFFeaturePool::fill(int desired) pool.reserve(nfeatures); - sft::Random::engine eng(8854342234L); - sft::Random::engine eng_ch(314152314L); + sft::Random::engine eng(8854342234LU); + sft::Random::engine eng_ch(314152314LU); sft::Random::uniform chRand(0, N_CHANNELS - 1); @@ -142,6 +141,14 @@ string itoa(long i) return std::string(s); } +} + +#if !defined (_WIN32) && ! defined(__MINGW32__) + +#include + +namespace { +using namespace sft; void glob(const string& path, svector& ret) { glob_t glob_result; @@ -158,7 +165,58 @@ void glob(const string& path, svector& ret) globfree(&glob_result); } + } +#else + +#include +namespace { +using namespace sft; +void glob(const string& refRoot, const string& refExt, svector &refvecFiles) +{ + std::string strFilePath; // Filepath + std::string strExtension; // Extension + + std::string strPattern = refRoot + "\\*.*"; + + WIN32_FIND_DATA FileInformation; // File information + HANDLE hFile = ::FindFirstFile(strPattern.c_str(), &FileInformation); + + if(hFile == INVALID_HANDLE_VALUE) + CV_Error(CV_StsBadArg, "Your dataset search path is incorrect"); + + do + { + if(FileInformation.cFileName[0] != '.') + { + strFilePath.erase(); + strFilePath = refRoot + "\\" + FileInformation.cFileName; + + if( !(FileInformation.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) + { + // Check extension + strExtension = FileInformation.cFileName; + strExtension = strExtension.substr(strExtension.rfind(".") + 1); + + if(strExtension == refExt) + // Save filename + refvecFiles.push_back(strFilePath); + } + } + } + while(::FindNextFile(hFile, &FileInformation) == TRUE); + + // Close handle + ::FindClose(hFile); + + DWORD dwError = ::GetLastError(); + if(dwError != ERROR_NO_MORE_FILES) + CV_Error(CV_StsBadArg, "Your dataset search path is incorrect"); +} +} + +#endif + // in the default case data folders should be alligned as following: // 1. positives: /octave_/pos/*.png // 2. negatives: /octave_/neg/*.png @@ -167,10 +225,19 @@ ScaledDataset::ScaledDataset(const string& path, const int oct) dprintf("%s\n", "get dataset file names..."); dprintf("%s\n", "Positives globbing..."); + +#if !defined (_WIN32) && ! defined(__MINGW32__) glob(path + "/pos/octave_" + itoa(oct) + "/*.png", pos); +#else + glob(path + "/pos/octave_" + itoa(oct), "png", pos); +#endif dprintf("%s\n", "Negatives globbing..."); +#if !defined (_WIN32) && ! defined(__MINGW32__) glob(path + "/neg/octave_" + itoa(oct) + "/*.png", neg); +#else + glob(path + "/neg/octave_" + itoa(oct), "png", neg); +#endif // Check: files not empty CV_Assert(pos.size() != size_t(0)); diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 0f771ccf52..4ddc0a3306 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -62,8 +62,7 @@ namespace sft #if defined WITH_DEBUG_OUT # include -# define dprintf(format, ...) \ - do { printf(format, ##__VA_ARGS__); } while (0) +# define dprintf(format, ...) printf(format, ##__VA_ARGS__) #else # define dprintf(format, ...) #endif diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index d0ede665f2..e63b1c9117 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -60,7 +60,7 @@ struct Config // Scaled and shrunk model size. cv::Size model(ivector::const_iterator it) const { - float octave = powf(2, *it); + float octave = powf(2.f, *it); return cv::Size( cvRound(modelWinSize.width * octave) / shrinkage, cvRound(modelWinSize.height * octave) / shrinkage ); } @@ -68,7 +68,7 @@ struct Config // Scaled but, not shrunk bounding box for object in sample image. cv::Rect bbox(ivector::const_iterator it) const { - float octave = powf(2, *it); + float octave = powf(2.f, *it); return cv::Rect( cvRound(offset.x * octave), cvRound(offset.y * octave), cvRound(modelWinSize.width * octave), cvRound(modelWinSize.height * octave)); } diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 7a1d0edc7e..c8bf44fc6f 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2132,7 +2132,7 @@ template<> CV_EXPORTS void Ptr::delete_obj(); CV_EXPORTS bool initModule_ml(void); -CV_EXPORTS class FeaturePool +class CV_EXPORTS FeaturePool { public: @@ -2145,7 +2145,7 @@ public: virtual ~FeaturePool(); }; -class Dataset +class CV_EXPORTS Dataset { public: typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; @@ -2156,7 +2156,7 @@ public: }; // used for traning single octave scale -class Octave : cv::Boost +class CV_EXPORTS Octave : public cv::Boost { public: diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index 8154d20e19..9b36b22d94 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -47,8 +47,7 @@ #if defined WITH_DEBUG_OUT # include -# define dprintf(format, ...) \ - do { printf(format, ##__VA_ARGS__); } while (0) +# define dprintf(format, ...) printf(format, ##__VA_ARGS__) #else # define dprintf(format, ...) #endif @@ -121,7 +120,6 @@ struct Random typedef rnd::uniform_int uniform; }; } - #endif cv::FeaturePool::~FeaturePool(){} @@ -244,8 +242,8 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) { // ToDo: set seed, use offsets - sft::Random::engine eng(65633343L); - sft::Random::engine idxEng(764224349868L); + sft::Random::engine eng(65633343LU); + sft::Random::engine idxEng(764224349868LU); int h = boundingBox.height; @@ -350,7 +348,7 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const { CV_Assert(!_thresholds.empty()); - cv::Mat used( 1, weak->total * ( pow(2.f, params.max_depth) - 1), CV_32SC1); + cv::Mat used( 1, weak->total * ( (int)pow(2.f, params.max_depth) - 1), CV_32SC1); int* usedPtr = used.ptr(0); int nfeatures = 0; cv::Mat thresholds = _thresholds.getMat(); From a28f5a89b35866e5d60f917f250816f789e6efec Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 10 Jan 2013 15:26:35 +0400 Subject: [PATCH 37/82] move preprocessor to objdetect --- apps/sft/fpool.cpp | 1 + apps/sft/include/sft/fpool.hpp | 68 +------------------ .../include/opencv2/objdetect/objdetect.hpp | 12 +++- modules/objdetect/src/icf.cpp | 57 ++++++++++++++++ 4 files changed, 71 insertions(+), 67 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 23b61e11fa..c9493a6252 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -120,6 +120,7 @@ void sft::ICFFeaturePool::fill(int desired) if (std::find(pool.begin(), pool.end(),f) == pool.end()) { pool.push_back(f); + std::cout << f << std::endl; } } } diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 3c93e6d80d..91dc500eca 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -48,73 +48,9 @@ #include #include +#include namespace sft { - -class Preprocessor -{ -public: - Preprocessor() {} - - void apply(cv::InputArray _frame, cv::OutputArray _integrals) const //const cv::Mat& frame, cv::Mat& integrals - { - CV_Assert(_frame.type() == CV_8UC3); - - cv::Mat frame = _frame.getMat(); - cv::Mat& integrals = _integrals.getMatRef(); - - int h = frame.rows; - int w = frame.cols; - - cv::Mat channels, gray; - - channels.create(h * BINS, w, CV_8UC1); - channels.setTo(0); - - cvtColor(frame, gray, CV_BGR2GRAY); - - cv::Mat df_dx, df_dy, mag, angle; - cv::Sobel(gray, df_dx, CV_32F, 1, 0); - cv::Sobel(gray, df_dy, CV_32F, 0, 1); - - cv::cartToPolar(df_dx, df_dy, mag, angle, true); - mag *= (1.f / (8 * sqrt(2.f))); - - cv::Mat nmag; - mag.convertTo(nmag, CV_8UC1); - - angle *= 6 / 360.f; - - for (int y = 0; y < h; ++y) - { - uchar* magnitude = nmag.ptr(y); - float* ang = angle.ptr(y); - - for (int x = 0; x < w; ++x) - { - channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; - } - } - - cv::Mat luv, shrunk; - cv::cvtColor(frame, luv, CV_BGR2Luv); - - std::vector splited; - for (int i = 0; i < 3; ++i) - splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); - split(luv, splited); - - float shrinkage = static_cast(integrals.cols - 1) / channels.cols; - - CV_Assert(shrinkage == 0.25); - - cv::resize(channels, shrunk, cv::Size(), shrinkage, shrinkage, CV_INTER_AREA); - cv::integral(shrunk, integrals, cv::noArray(), CV_32S); - } - - enum {BINS = 10}; -}; - struct ICF { ICF(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} @@ -184,7 +120,7 @@ private: static const unsigned int seed = 0; - Preprocessor preprocessor; + cv::ICFPreprocessor preprocessor; enum { N_CHANNELS = 10 }; }; diff --git a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp index 8d393293e2..83257976d0 100644 --- a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp +++ b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp @@ -488,6 +488,16 @@ protected: Ptr maskGenerator; }; + +class CV_EXPORTS_W ICFPreprocessor +{ +public: + CV_WRAP ICFPreprocessor(); + CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; +protected: + enum {BINS = 10}; +}; + // Implementation of soft (stageless) cascaded detector. class CV_EXPORTS_W SCascade : public Algorithm { @@ -560,7 +570,7 @@ public: virtual void detect(InputArray image, InputArray rois, std::vector& objects) const; // Param rects is an output array of bounding rectangles for detected objects. // Param confs is an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th configence. - CV_WRAP virtual void detect(InputArray image, InputArray rois, CV_OUT OutputArray rects, CV_OUT OutputArray confs) const; + CV_WRAP virtual void detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const; private: void detectNoRoi(const Mat& image, std::vector& objects) const; diff --git a/modules/objdetect/src/icf.cpp b/modules/objdetect/src/icf.cpp index 9d0fb00dc6..a9321276ca 100644 --- a/modules/objdetect/src/icf.cpp +++ b/modules/objdetect/src/icf.cpp @@ -42,6 +42,63 @@ #include "precomp.hpp" +cv::ICFPreprocessor::ICFPreprocessor() {} +void cv::ICFPreprocessor::apply(cv::InputArray _frame, cv::OutputArray _integrals) const +{ + CV_Assert(_frame.type() == CV_8UC3); + + cv::Mat frame = _frame.getMat(); + cv::Mat& integrals = _integrals.getMatRef(); + + int h = frame.rows; + int w = frame.cols; + + cv::Mat channels, gray; + + channels.create(h * BINS, w, CV_8UC1); + channels.setTo(0); + + cvtColor(frame, gray, CV_BGR2GRAY); + + cv::Mat df_dx, df_dy, mag, angle; + cv::Sobel(gray, df_dx, CV_32F, 1, 0); + cv::Sobel(gray, df_dy, CV_32F, 0, 1); + + cv::cartToPolar(df_dx, df_dy, mag, angle, true); + mag *= (1.f / (8 * sqrt(2.f))); + + cv::Mat nmag; + mag.convertTo(nmag, CV_8UC1); + + angle *= 6 / 360.f; + + for (int y = 0; y < h; ++y) + { + uchar* magnitude = nmag.ptr(y); + float* ang = angle.ptr(y); + + for (int x = 0; x < w; ++x) + { + channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; + } + } + + cv::Mat luv, shrunk; + cv::cvtColor(frame, luv, CV_BGR2Luv); + + std::vector splited; + for (int i = 0; i < 3; ++i) + splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); + split(luv, splited); + + float shrinkage = static_cast(integrals.cols - 1) / channels.cols; + + CV_Assert(shrinkage == 0.25); + + cv::resize(channels, shrunk, cv::Size(), shrinkage, shrinkage, CV_INTER_AREA); + cv::integral(shrunk, integrals, cv::noArray(), CV_32S); +} + cv::SCascade::Channels::Channels(int shr) : shrinkage(shr) {} void cv::SCascade::Channels::appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const From c0462358cab2dffc88582b06154c7604d8bd9279 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 10 Jan 2013 15:38:51 +0400 Subject: [PATCH 38/82] fix warnings under win --- apps/sft/config.cpp | 2 ++ apps/sft/include/sft/config.hpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/sft/config.cpp b/apps/sft/config.cpp index ca9d02dac9..d9937220e4 100644 --- a/apps/sft/config.cpp +++ b/apps/sft/config.cpp @@ -121,6 +121,8 @@ struct Out void operator ()(const T a) const {out << a << " ";} std::ostream& out; +private: + Out& operator=(Out const& other); }; std::ostream& sft::operator<<(std::ostream& out, const Config& m) diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index e63b1c9117..dd5e8d5aba 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -60,7 +60,7 @@ struct Config // Scaled and shrunk model size. cv::Size model(ivector::const_iterator it) const { - float octave = powf(2.f, *it); + float octave = powf(2.f, (float)(*it)); return cv::Size( cvRound(modelWinSize.width * octave) / shrinkage, cvRound(modelWinSize.height * octave) / shrinkage ); } @@ -68,7 +68,7 @@ struct Config // Scaled but, not shrunk bounding box for object in sample image. cv::Rect bbox(ivector::const_iterator it) const { - float octave = powf(2.f, *it); + float octave = powf(2.f, (float)(*it)); return cv::Rect( cvRound(offset.x * octave), cvRound(offset.y * octave), cvRound(modelWinSize.width * octave), cvRound(modelWinSize.height * octave)); } From e903ce10ce3dc41992a317c02d75dfca6996f179 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 10 Jan 2013 16:30:18 +0400 Subject: [PATCH 39/82] fix wartings for 32bit build --- apps/sft/fpool.cpp | 13 +++++++++++-- modules/ml/src/octave.cpp | 14 ++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index c9493a6252..2aa55c0b6b 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -76,6 +76,15 @@ void sft::write(cv::FileStorage& fs, const string&, const ICF& f) sft::ICFFeaturePool::~ICFFeaturePool(){} +// #define USE_LONG_SEEDS +#if defined USE_LONG_SEEDS +# define FEATURE_RECT_SEED 8854342234LU +#else +# define FEATURE_RECT_SEED 88543422LU +#endif +# define DCHANNELS_SEED 314152314LU +#undef USE_LONG_SEEDS + void sft::ICFFeaturePool::fill(int desired) { int mw = model.width; @@ -88,8 +97,8 @@ void sft::ICFFeaturePool::fill(int desired) pool.reserve(nfeatures); - sft::Random::engine eng(8854342234LU); - sft::Random::engine eng_ch(314152314LU); + sft::Random::engine eng(FEATURE_RECT_SEED); + sft::Random::engine eng_ch(DCHANNELS_SEED); sft::Random::uniform chRand(0, N_CHANNELS - 1); diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index 9b36b22d94..bb0108897f 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -239,11 +239,21 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo nnegatives = cvRound(nnegatives * total / (double)npositives); } +// #define USE_LONG_SEEDS +#if defined USE_LONG_SEEDS +# define INDEX_ENGINE_SEED 764224349868LU +#else +# define INDEX_ENGINE_SEED 76422434LU +#endif +# define DX_DY_SEED 65633343LU +#undef USE_LONG_SEEDS + + void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) { // ToDo: set seed, use offsets - sft::Random::engine eng(65633343LU); - sft::Random::engine idxEng(764224349868LU); + sft::Random::engine eng(DX_DY_SEED); + sft::Random::engine idxEng(INDEX_ENGINE_SEED); int h = boundingBox.height; From 92e50d952fbf2e190c5282bd75383e36a66f5239 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 10 Jan 2013 21:06:14 +0400 Subject: [PATCH 40/82] caltech parsing script --- apps/sft/misk/scale_caltech.py | 70 ++++++++++++++++++++++++++++++++++ apps/sft/misk/scale_inria.py | 0 2 files changed, 70 insertions(+) create mode 100755 apps/sft/misk/scale_caltech.py mode change 100644 => 100755 apps/sft/misk/scale_inria.py diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py new file mode 100755 index 0000000000..11a0d292bb --- /dev/null +++ b/apps/sft/misk/scale_caltech.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import sys, os, os.path, glob, math, cv2 +from datetime import datetime +from optparse import OptionParser +import re + +start_templates = ["lbl", "pos", "occl"] + +class Sample: + def __init__(self, l): + self + +if __name__ == "__main__": + f = open("/home/kellan/datasets/caltech/set00/V004.txt") + person = re.compile("^lbl=\'person\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") + newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") + pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") + nonarray = re.compile("\;\s+(?!\])|\s+(?!\])") + lastSemicolon = re.compile("\;\s+(?=\])") + qqq = re.compile("(?=\[)\b(?=\d*)") + + goNext = 0 + start = 0 + end = 0 + + modelW = 32 + modelH = 64 + + for l in f: + qq = newobj.match(l) + if qq is not None: + if qq.group(1) == "person": + goNext = 1 + else: + goNext = 0 + print qq.group(0), qq.group(1) + m = person.match(l) + if m is not None: + start = m.group(1) + end = m.group(2) + + print m.group(0), start, end + else: + m = pos.match(l) + if m is not None: + if not goNext: + continue + strarr = re.sub(r"\s", ", ", re.sub(r"\;\s+(?=\])", "]", re.sub(r"\;\s+(?!\])", "],[", re.sub(r"(\[)(\d)", "\\1[\\2", m.group(1))))) + list = eval(strarr) + for idx, box in enumerate(list): + if (box[2] >= 32) or (box[3] >= 64): + x = box[0] + y = box[1] + w = box[2] + h = box[3] + + ratio = w / h + neww = h / 2.0 + offset = (w - neww) / 2.0 + print "HERE is big!! ", box, ratio, offset + if (x + offset) > 0: + id = int(start) + idx + file = "/home/kellan/datasets/caltech/set00/V004.seq/I0%04d.jpg" % id # I00000.jpg + print file + img = cv2.imread(file) + cv2.rectangle(img, (int(x), int(y)), (int(x + w), int(y + h)), (0,255,0), 2) + cv2.imshow("sample", img) + cv2.waitKey(0) + diff --git a/apps/sft/misk/scale_inria.py b/apps/sft/misk/scale_inria.py old mode 100644 new mode 100755 From 31687178d27b5cee36e5f272437a0dd5bfa3c50c Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 11 Jan 2013 14:47:22 +0400 Subject: [PATCH 41/82] implement positive sample extraction --- apps/sft/misk/scale_caltech.py | 119 ++++++++++++++++++++++++++++++--- 1 file changed, 110 insertions(+), 9 deletions(-) diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py index 11a0d292bb..5c618f49e1 100755 --- a/apps/sft/misk/scale_caltech.py +++ b/apps/sft/misk/scale_caltech.py @@ -4,21 +4,15 @@ import sys, os, os.path, glob, math, cv2 from datetime import datetime from optparse import OptionParser import re +import numpy as np -start_templates = ["lbl", "pos", "occl"] -class Sample: - def __init__(self, l): - self - -if __name__ == "__main__": - f = open("/home/kellan/datasets/caltech/set00/V004.txt") +def extract(f): person = re.compile("^lbl=\'person\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") nonarray = re.compile("\;\s+(?!\])|\s+(?!\])") lastSemicolon = re.compile("\;\s+(?=\])") - qqq = re.compile("(?=\[)\b(?=\d*)") goNext = 0 start = 0 @@ -66,5 +60,112 @@ if __name__ == "__main__": img = cv2.imread(file) cv2.rectangle(img, (int(x), int(y)), (int(x + w), int(y + h)), (0,255,0), 2) cv2.imshow("sample", img) - cv2.waitKey(0) + cv2.waitKey(50) +def showPeople(f, path, opath): + newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") + pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") + occl = re.compile("^occl\s*=(\[[0-1|\s]*\])$") + + goNext = 0 + start = 0 + end = 0 + + person_id = -1; + + boxes = [] + occls = [] + + for l in f: + m = newobj.match(l) + if m is not None: + print m.group(1) + if m.group(1) == "person": + goNext = 1 + start = int(m.group(2)) + end = int(m.group(3)) + person_id = person_id + 1 + print m.group(1), person_id, start, end + else: + goNext = 0 + else: + m = pos.match(l) + if m is not None: + if not goNext: + continue + strarr = re.sub(r"\s", ", ", re.sub(r"\;\s+(?=\])", "]", re.sub(r"\;\s+(?!\])", "],[", re.sub(r"(\[)(\d)", "\\1[\\2", m.group(1))))) + boxes = eval(strarr) + else: + m = occl.match(l) + if m is not None: + occls = eval(re.sub(r"\s+(?!\])", ",", m.group(1))) + + if len(boxes) > 0 and len(boxes) == len(occls): + print len(boxes) + for idx, box in enumerate(boxes): + color = (8, 107, 255) + if occls[idx] == 1: + continue + # color = (255, 107, 8) + x = box[0] + y = box[1] + w = box[2] + h = box[3] + id = int(start) - 1 + idx + file = os.path.join(path, "I0%04d.jpg" % id) + + print file + + if (start + id) < end and w > 5 and h > 47: + img = cv2.imread(file) + + fname = re.sub(r"^.*\/(set[0-1]\d)\/(V0\d\d)\.(seq)/(I\d+).jpg$", "\\1_\\2_\\4", file)#os.path.basename(file) + fname = os.path.join(opath, fname + "_%04d." % person_id + "png") + try: + print "->", fname + submat = img[int(y):int(y + h), int(x):int(x + w),:] + cv2.imwrite(fname, submat) + except: + print "something wrong... go next." + pass + cv2.rectangle(img, (int(x), int(y)), (int(x + w), int(y + h)), color, 1) + cv2.imshow("person", img) + + c = cv2.waitKey(10) + if c == 27: + exit(0) + + +if __name__ == "__main__": + parser = OptionParser() + parser.add_option("-i", "--input", dest="input", metavar="DIRECTORY", type="string", + help="path to the Caltech dataset folder.") + + parser.add_option("-o", "--output", dest="output", metavar="DIRECTORY", type="string", + help="path to store data", default=".") + + (options, args) = parser.parse_args() + + if not options.input: + parser.error("Caltech dataset folder is required.") + + opath = os.path.join(options.output, datetime.now().strftime("raw_ge48-" + "-%Y-%m-%d-%H-%M-%S")) + os.mkdir(opath) + + # mat = cv2.imread("/home/kellan/datasets/INRIArescaled/training_set/pos/octave_-1/sample_0.png"); + # cv2.rectangle(mat, (10, 10), (42, 74), (8, 107, 255), 1) + + # cv2.imshow("person", mat) + # cv2.waitKey(0) + # if c == 27: + # exit(0) + + gl = glob.iglob( os.path.join(options.input, "set[0-1][0-9]/V0[0-9][0-9].txt")) + for each in gl: + path, ext = os.path.splitext(each) + path = path + ".seq" + print path + showPeople(open(each), path, opath) + + # f = open("/home/kellan/datasets/caltech/set00/V004.txt") + # extract(f) From 16aacf1780db7beda34d216dd88d3134af57be3f Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 11 Jan 2013 14:49:12 +0400 Subject: [PATCH 42/82] use long seeds --- apps/sft/fpool.cpp | 2 +- modules/ml/src/octave.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 2aa55c0b6b..76a4031cd0 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -76,7 +76,7 @@ void sft::write(cv::FileStorage& fs, const string&, const ICF& f) sft::ICFFeaturePool::~ICFFeaturePool(){} -// #define USE_LONG_SEEDS +#define USE_LONG_SEEDS #if defined USE_LONG_SEEDS # define FEATURE_RECT_SEED 8854342234LU #else diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index bb0108897f..a47d4319ff 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -239,7 +239,7 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo nnegatives = cvRound(nnegatives * total / (double)npositives); } -// #define USE_LONG_SEEDS +#define USE_LONG_SEEDS #if defined USE_LONG_SEEDS # define INDEX_ENGINE_SEED 764224349868LU #else From 56edff90ba2c75409114183ccbc0b291f0deeef7 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 11 Jan 2013 18:17:25 +0400 Subject: [PATCH 43/82] drop deth code --- apps/sft/misk/scale_caltech.py | 69 +--------------------------------- 1 file changed, 1 insertion(+), 68 deletions(-) diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py index 5c618f49e1..d59f09b808 100755 --- a/apps/sft/misk/scale_caltech.py +++ b/apps/sft/misk/scale_caltech.py @@ -6,62 +6,6 @@ from optparse import OptionParser import re import numpy as np - -def extract(f): - person = re.compile("^lbl=\'person\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") - newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") - pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") - nonarray = re.compile("\;\s+(?!\])|\s+(?!\])") - lastSemicolon = re.compile("\;\s+(?=\])") - - goNext = 0 - start = 0 - end = 0 - - modelW = 32 - modelH = 64 - - for l in f: - qq = newobj.match(l) - if qq is not None: - if qq.group(1) == "person": - goNext = 1 - else: - goNext = 0 - print qq.group(0), qq.group(1) - m = person.match(l) - if m is not None: - start = m.group(1) - end = m.group(2) - - print m.group(0), start, end - else: - m = pos.match(l) - if m is not None: - if not goNext: - continue - strarr = re.sub(r"\s", ", ", re.sub(r"\;\s+(?=\])", "]", re.sub(r"\;\s+(?!\])", "],[", re.sub(r"(\[)(\d)", "\\1[\\2", m.group(1))))) - list = eval(strarr) - for idx, box in enumerate(list): - if (box[2] >= 32) or (box[3] >= 64): - x = box[0] - y = box[1] - w = box[2] - h = box[3] - - ratio = w / h - neww = h / 2.0 - offset = (w - neww) / 2.0 - print "HERE is big!! ", box, ratio, offset - if (x + offset) > 0: - id = int(start) + idx - file = "/home/kellan/datasets/caltech/set00/V004.seq/I0%04d.jpg" % id # I00000.jpg - print file - img = cv2.imread(file) - cv2.rectangle(img, (int(x), int(y)), (int(x + w), int(y + h)), (0,255,0), 2) - cv2.imshow("sample", img) - cv2.waitKey(50) - def showPeople(f, path, opath): newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") @@ -152,20 +96,9 @@ if __name__ == "__main__": opath = os.path.join(options.output, datetime.now().strftime("raw_ge48-" + "-%Y-%m-%d-%H-%M-%S")) os.mkdir(opath) - # mat = cv2.imread("/home/kellan/datasets/INRIArescaled/training_set/pos/octave_-1/sample_0.png"); - # cv2.rectangle(mat, (10, 10), (42, 74), (8, 107, 255), 1) - - # cv2.imshow("person", mat) - # cv2.waitKey(0) - # if c == 27: - # exit(0) - gl = glob.iglob( os.path.join(options.input, "set[0-1][0-9]/V0[0-9][0-9].txt")) for each in gl: path, ext = os.path.splitext(each) path = path + ".seq" print path - showPeople(open(each), path, opath) - - # f = open("/home/kellan/datasets/caltech/set00/V004.txt") - # extract(f) + showPeople(open(each), path, opath) \ No newline at end of file From 7a713a4932b245f20ac015593763c1e9d5da1f96 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 11 Jan 2013 20:55:58 +0400 Subject: [PATCH 44/82] collect Caltech positives for 32x64 octave: - resized - cropped - flipped around the x axis --- apps/sft/misk/scale_caltech.py | 92 ++++++++++++++++++++++++++-------- apps/sft/misk/scale_inria.py | 8 +-- 2 files changed, 74 insertions(+), 26 deletions(-) diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py index d59f09b808..02d93b402d 100755 --- a/apps/sft/misk/scale_caltech.py +++ b/apps/sft/misk/scale_caltech.py @@ -6,11 +6,30 @@ from optparse import OptionParser import re import numpy as np +def resize(image, d_w, d_h): + if (d_h < image.shape[0]) or (d_w < image.shape[1]): + ratio = min(d_h / float(image.shape[0]), d_w / float(image.shape[1])) + + kernel_size = int( 5 / (2 * ratio)) + sigma = 0.5 / ratio + image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) + interpolation_type = cv2.INTER_AREA + else: + image_to_resize = image + interpolation_type = cv2.INTER_CUBIC + + return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) + def showPeople(f, path, opath): newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") occl = re.compile("^occl\s*=(\[[0-1|\s]*\])$") + octave = 0.5 + + whole_mod_w = int(64 * octave) + 2 * int(20 * octave) + whole_mod_h = int(128 * octave) + 2 * int(20 * octave) + goNext = 0 start = 0 end = 0 @@ -23,7 +42,6 @@ def showPeople(f, path, opath): for l in f: m = newobj.match(l) if m is not None: - print m.group(1) if m.group(1) == "person": goNext = 1 start = int(m.group(2)) @@ -45,40 +63,70 @@ def showPeople(f, path, opath): occls = eval(re.sub(r"\s+(?!\])", ",", m.group(1))) if len(boxes) > 0 and len(boxes) == len(occls): - print len(boxes) for idx, box in enumerate(boxes): color = (8, 107, 255) if occls[idx] == 1: continue - # color = (255, 107, 8) + x = box[0] y = box[1] w = box[2] h = box[3] + id = int(start) - 1 + idx file = os.path.join(path, "I0%04d.jpg" % id) - print file + if (start + id) >= end or w < 10 or h < 64: + continue - if (start + id) < end and w > 5 and h > 47: - img = cv2.imread(file) + mat = cv2.imread(file) + mat_h, mat_w, _ = mat.shape - fname = re.sub(r"^.*\/(set[0-1]\d)\/(V0\d\d)\.(seq)/(I\d+).jpg$", "\\1_\\2_\\4", file)#os.path.basename(file) - fname = os.path.join(opath, fname + "_%04d." % person_id + "png") - try: - print "->", fname - submat = img[int(y):int(y + h), int(x):int(x + w),:] - cv2.imwrite(fname, submat) - except: - print "something wrong... go next." - pass - cv2.rectangle(img, (int(x), int(y)), (int(x + w), int(y + h)), color, 1) - cv2.imshow("person", img) + scale = h / float(96) + rel_scale = scale / octave - c = cv2.waitKey(10) - if c == 27: - exit(0) + d_w = whole_mod_w * rel_scale + d_h = whole_mod_h * rel_scale + tb = (d_h - h) / 2.0 + lr = (d_w - w) / 2.0 + + x = int(round(x - lr)) + y = int(round(y - tb)) + + w = int(round(w + lr * 2.0)) + h = int(round(h + tb * 2.0)) + + inner = [max(5, x), max(5, y), min(mat_w - 5, x + w), min(mat_h - 5, y + h) ] + cropped = mat[inner[1]:inner[3], inner[0]:inner[2], :] + + top = int(max(0, 0 - y)) + bottom = int(max(0, y + h - mat_h)) + left = int(max(0, 0 - x)) + right = int(max(0, x + w - mat_w)) + + if top < -d_h / 4.0 or bottom > d_h / 4.0 or left < -d_w / 4.0 or right > d_w / 4.0: + continue + + cropped = cv2.copyMakeBorder(cropped, top, bottom, left, right, cv2.BORDER_REPLICATE) + resized = resize(cropped, whole_mod_w, whole_mod_h) + flipped = cv2.flip(resized, 1) + + cv2.imshow("resized", resized) + + c = cv2.waitKey(20) + if c == 27: + exit(0) + + fname = re.sub(r"^.*\/(set[0-1]\d)\/(V0\d\d)\.(seq)/(I\d+).jpg$", "\\1_\\2_\\4", file) + fname = os.path.join(opath, fname + "_%04d." % person_id + "png") + fname_fl = os.path.join(opath, fname + "_mirror_%04d." % person_id + "png") + try: + cv2.imwrite(fname, resized) + cv2.imwrite(fname_fl, flipped) + except: + print "something wrong... go next." + pass if __name__ == "__main__": parser = OptionParser() @@ -93,10 +141,10 @@ if __name__ == "__main__": if not options.input: parser.error("Caltech dataset folder is required.") - opath = os.path.join(options.output, datetime.now().strftime("raw_ge48-" + "-%Y-%m-%d-%H-%M-%S")) + opath = os.path.join(options.output, datetime.now().strftime("raw_ge64_cr_mirr_ts" + "-%Y-%m-%d-%H-%M-%S")) os.mkdir(opath) - gl = glob.iglob( os.path.join(options.input, "set[0-1][0-9]/V0[0-9][0-9].txt")) + gl = glob.iglob( os.path.join(options.input, "set[0-1][0-5]/V0[0-9][0-9].txt")) for each in gl: path, ext = os.path.splitext(each) path = path + ".seq" diff --git a/apps/sft/misk/scale_inria.py b/apps/sft/misk/scale_inria.py index b81cfe49e6..4fc6b8b93e 100755 --- a/apps/sft/misk/scale_inria.py +++ b/apps/sft/misk/scale_inria.py @@ -105,10 +105,10 @@ if __name__ == "__main__": cropped = mat[inner[1]:inner[3], inner[0]:inner[2], :] - top = int(max(0, 0 - box[1])) - bottom = int(max(0, box[3] - mat_h)) - left = int(max(0, 0 - box[0])) - right = int(max(0, box[2] - mat_w)) + top = int(max(0, 0 - box[1])) + bottom = int(max(0, box[3] - mat_h)) + left = int(max(0, 0 - box[0])) + right = int(max(0, box[2] - mat_w)) cropped = cv2.copyMakeBorder(cropped, top, bottom, left, right, cv2.BORDER_REPLICATE) resized = resize(cropped, whole_mod_w, whole_mod_h) From c073138d6de25bce530305352cb8cc6f8cacf4e4 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Sat, 12 Jan 2013 00:52:07 +0400 Subject: [PATCH 45/82] generalize extraction method for any scale --- apps/sft/misk/scale_caltech.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py index 02d93b402d..f0e783fa5d 100755 --- a/apps/sft/misk/scale_caltech.py +++ b/apps/sft/misk/scale_caltech.py @@ -20,19 +20,17 @@ def resize(image, d_w, d_h): return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) -def showPeople(f, path, opath): +def extractPositive(f, path, opath, octave, min_possible): newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") occl = re.compile("^occl\s*=(\[[0-1|\s]*\])$") - octave = 0.5 - - whole_mod_w = int(64 * octave) + 2 * int(20 * octave) + whole_mod_w = int(64 * octave) + 2 * int(20 * octave) whole_mod_h = int(128 * octave) + 2 * int(20 * octave) goNext = 0 - start = 0 - end = 0 + start = 0 + end = 0 person_id = -1; @@ -64,7 +62,6 @@ def showPeople(f, path, opath): if len(boxes) > 0 and len(boxes) == len(occls): for idx, box in enumerate(boxes): - color = (8, 107, 255) if occls[idx] == 1: continue @@ -76,12 +73,13 @@ def showPeople(f, path, opath): id = int(start) - 1 + idx file = os.path.join(path, "I0%04d.jpg" % id) - if (start + id) >= end or w < 10 or h < 64: + if (start + id) >= end or w < 10 or h < min_possible: continue mat = cv2.imread(file) mat_h, mat_w, _ = mat.shape + # let default height of person be 96. scale = h / float(96) rel_scale = scale / octave @@ -131,10 +129,16 @@ def showPeople(f, path, opath): if __name__ == "__main__": parser = OptionParser() parser.add_option("-i", "--input", dest="input", metavar="DIRECTORY", type="string", - help="path to the Caltech dataset folder.") + help="Path to the Caltech dataset folder.") - parser.add_option("-o", "--output", dest="output", metavar="DIRECTORY", type="string", - help="path to store data", default=".") + parser.add_option("-d", "--output-dir", dest="output", metavar="DIRECTORY", type="string", + help="Path to store data", default=".") + + parser.add_option("-o", "--octave", dest="octave", type="float", + help="Octave for a dataset to be scaled", default="0.5") + + parser.add_option("-m", "--min-possible", dest="min_possible", type="int", + help="Minimum possible height for positive.", default="64") (options, args) = parser.parse_args() @@ -149,4 +153,4 @@ if __name__ == "__main__": path, ext = os.path.splitext(each) path = path + ".seq" print path - showPeople(open(each), path, opath) \ No newline at end of file + extractPositive(open(each), path, opath, options.octave, options.min_possible) \ No newline at end of file From 8d9875cc7be253e2009ec8ea4515259e2ffc9c97 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Sat, 12 Jan 2013 03:16:11 +0400 Subject: [PATCH 46/82] add script for negatives extraction --- apps/sft/misk/detections2negatives.py | 81 +++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100755 apps/sft/misk/detections2negatives.py diff --git a/apps/sft/misk/detections2negatives.py b/apps/sft/misk/detections2negatives.py new file mode 100755 index 0000000000..02b045fa34 --- /dev/null +++ b/apps/sft/misk/detections2negatives.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python + +import sys, os, os.path, glob, math, cv2, string, random +from datetime import datetime +from optparse import OptionParser +import re +import numpy as np +from xml.dom import minidom + +def resize(image, d_w, d_h): + if (d_h < image.shape[0]) or (d_w < image.shape[1]): + ratio = min(d_h / float(image.shape[0]), d_w / float(image.shape[1])) + + kernel_size = int( 5 / (2 * ratio)) + sigma = 0.5 / ratio + image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) + interpolation_type = cv2.INTER_AREA + else: + image_to_resize = image + interpolation_type = cv2.INTER_CUBIC + + return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) + +def det2negative(xmldoc, opath): + samples = xmldoc.getElementsByTagName('sample') + for sample in samples: + detections = sample.getElementsByTagName('detections') + detections = minidom.parseString(detections[0].toxml()) + detections = detections.getElementsByTagName("_") + if len(detections) is not 0: + path = sample.getElementsByTagName("path") + path = path[0].firstChild.nodeValue + mat = cv2.imread(path) + mat_h, mat_w, _ = mat.shape + + for detection in detections: + detection = detection.childNodes + for each in detection: + rect = eval(re.sub( r"\b\s\b", ",", re.sub(r"\n", "[", each.nodeValue )) + "]") + print rect + + ratio = 64.0 / rect[3] + + print rect, ratio + mat = resize(mat, int(round(mat_w * ratio)), int(round(mat_h * ratio))) + + rect[0] = int(round(ratio * rect[0])) - 10 + rect[1] = int(round(ratio * rect[1])) - 10 + rect[2] = rect[0] + 32 + 20 + rect[3] = rect[1] + 64 + 20 + try: + cropped = mat[rect[1]:(rect[3]), rect[0]:(rect[2]), :] + cv2.imshow("mat", cropped) + cv2.waitKey(10) + img = os.path.join(opath, ''.join(random.choice(string.lowercase) for i in range(8)) + ".png") + cv2.imwrite(img, cropped) + except: + pass + +if __name__ == "__main__": + + parser = OptionParser() + parser.add_option("-i", "--input", dest="input", metavar="DIRECTORY", type="string", + help="Path to the xml collection folder.") + + parser.add_option("-d", "--output-dir", dest="output", metavar="DIRECTORY", type="string", + help="Path to store data", default=".") + + (options, args) = parser.parse_args() + + if not options.input: + parser.error("Input folder is required.") + + opath = os.path.join(options.output, datetime.now().strftime("negatives" + "-%Y-%m-%d-%H-%M-%S")) + os.mkdir(opath) + + gl = glob.iglob( os.path.join(options.input, "set[0-1][0-9]_V0[0-9][0-9].seq.xml")) + for f in gl: + print f + xmldoc = minidom.parse(f) + det2negative(xmldoc, opath) From 737f5efbfb0714bc7a123547ad04bd9eeaa79f7b Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Sun, 13 Jan 2013 16:48:53 +0400 Subject: [PATCH 47/82] filter samples --- apps/sft/misk/detections2negatives.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/sft/misk/detections2negatives.py b/apps/sft/misk/detections2negatives.py index 02b045fa34..33ccb5fbdf 100755 --- a/apps/sft/misk/detections2negatives.py +++ b/apps/sft/misk/detections2negatives.py @@ -50,10 +50,10 @@ def det2negative(xmldoc, opath): rect[3] = rect[1] + 64 + 20 try: cropped = mat[rect[1]:(rect[3]), rect[0]:(rect[2]), :] - cv2.imshow("mat", cropped) - cv2.waitKey(10) img = os.path.join(opath, ''.join(random.choice(string.lowercase) for i in range(8)) + ".png") - cv2.imwrite(img, cropped) + cr_h, cr_w, _ = cropped.shape + if cr_h is 84 and cr_w is 52: + cv2.imwrite(img, cropped) except: pass @@ -74,7 +74,7 @@ if __name__ == "__main__": opath = os.path.join(options.output, datetime.now().strftime("negatives" + "-%Y-%m-%d-%H-%M-%S")) os.mkdir(opath) - gl = glob.iglob( os.path.join(options.input, "set[0-1][0-9]_V0[0-9][0-9].seq.xml")) + gl = glob.iglob( os.path.join(options.input, "set[0][0]_V0[0][5].seq.xml")) for f in gl: print f xmldoc = minidom.parse(f) From b0905c67bae84c6705607c40dfe1cb0b97d174af Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 14 Jan 2013 12:58:56 +0400 Subject: [PATCH 48/82] minor --- apps/sft/misk/scale_caltech.py | 2 +- modules/ml/src/octave.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misk/scale_caltech.py index f0e783fa5d..5eddc43747 100755 --- a/apps/sft/misk/scale_caltech.py +++ b/apps/sft/misk/scale_caltech.py @@ -148,7 +148,7 @@ if __name__ == "__main__": opath = os.path.join(options.output, datetime.now().strftime("raw_ge64_cr_mirr_ts" + "-%Y-%m-%d-%H-%M-%S")) os.mkdir(opath) - gl = glob.iglob( os.path.join(options.input, "set[0-1][0-5]/V0[0-9][0-9].txt")) + gl = glob.iglob( os.path.join(options.input, "set[0][0]/V0[0-9][0-9].txt")) for each in gl: path, ext = os.path.splitext(each) path = path + ".seq" diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index a47d4319ff..b0358b6f2b 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -43,7 +43,7 @@ #include "precomp.hpp" #include -//#define WITH_DEBUG_OUT +#define WITH_DEBUG_OUT #if defined WITH_DEBUG_OUT # include From 8cd509e58e2d90bf6f04abd7c5b372cbc08f0669 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 16 Jan 2013 14:05:25 +0400 Subject: [PATCH 49/82] Caltech-style ROC testing script --- apps/sft/misk/roc-test.py | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 apps/sft/misk/roc-test.py diff --git a/apps/sft/misk/roc-test.py b/apps/sft/misk/roc-test.py new file mode 100755 index 0000000000..f4a83cb944 --- /dev/null +++ b/apps/sft/misk/roc-test.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +import sys, os, os.path, glob, math, cv2 +from datetime import datetime +from optparse import OptionParser +import numpy + +def draw_rects(img, rects, color): + if rects is None: + return + for x1, y1, x2, y2 in rects: + cv2.rectangle(img, (x1, y1), (x2 + x1, y2 + y1), color, 2) + +if __name__ == "__main__": + parser = OptionParser() + + parser.add_option("-i", "--input", dest="input", type="string", + help="Image sequence pattern.") + + parser.add_option("-c", "--cascade", dest="cascade", metavar="FILE", type="string", + help="Path to the tested detector.") + + parser.add_option("-m", "--min_scale", dest="min_scale", type = "float", + help="Minimum scale to be tested.", default = 0.4) + + parser.add_option("-M", "--max_scale", dest="max_scale", type = "float", + help="Maximum scale to be tested.", default = 5.0) + + parser.add_option("-o", "--output", dest="output", metavar="FILE", type="string", + help="Path to store resultion image.", default="./roc.png") + + parser.add_option("-n", "--nscales", dest="nscales", type="int", + help="Prefered count of scales that should be tested from min to max.", default = 55) + + (options, args) = parser.parse_args() + + if not options.input: + parser.error("Test sequence is requared.") + + if not options.cascade: + parser.error("Xml cascade file is requared.") + + # where we use nms cv::SCascade::DOLLAR == 2 + cascade = cv2.SCascade(options.min_scale, options.max_scale, options.nscales, 2) + xml = cv2.FileStorage(options.cascade, 0) + xml1 = xml.getFirstTopLevelNode() + + cascade.load(xml1) + + camera = cv2.VideoCapture(options.input); + while True: + ret, img = camera.read(); + if not ret: + break; + + rects, confs = cascade.detect(img, rois = None) + + # draw results + if rects is not None: + draw_rects(img, rects[0], (0, 255, 0)) + cv2.imshow("result",img); + if (cv2.waitKey (5) != -1): + break; \ No newline at end of file From ca08101f7eb9fbd2245042313a4bbcd5372a6209 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 16 Jan 2013 18:21:47 +0400 Subject: [PATCH 50/82] caltech ROC test: - parse idl - replase option parser with argument parser --- apps/sft/misk/roc-test.py | 63 ----------------------------------- apps/sft/misk/roc_test.py | 70 +++++++++++++++++++++++++++++++++++++++ apps/sft/misk/sft.py | 42 +++++++++++++++++++++++ 3 files changed, 112 insertions(+), 63 deletions(-) delete mode 100755 apps/sft/misk/roc-test.py create mode 100755 apps/sft/misk/roc_test.py create mode 100644 apps/sft/misk/sft.py diff --git a/apps/sft/misk/roc-test.py b/apps/sft/misk/roc-test.py deleted file mode 100755 index f4a83cb944..0000000000 --- a/apps/sft/misk/roc-test.py +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env python - -import sys, os, os.path, glob, math, cv2 -from datetime import datetime -from optparse import OptionParser -import numpy - -def draw_rects(img, rects, color): - if rects is None: - return - for x1, y1, x2, y2 in rects: - cv2.rectangle(img, (x1, y1), (x2 + x1, y2 + y1), color, 2) - -if __name__ == "__main__": - parser = OptionParser() - - parser.add_option("-i", "--input", dest="input", type="string", - help="Image sequence pattern.") - - parser.add_option("-c", "--cascade", dest="cascade", metavar="FILE", type="string", - help="Path to the tested detector.") - - parser.add_option("-m", "--min_scale", dest="min_scale", type = "float", - help="Minimum scale to be tested.", default = 0.4) - - parser.add_option("-M", "--max_scale", dest="max_scale", type = "float", - help="Maximum scale to be tested.", default = 5.0) - - parser.add_option("-o", "--output", dest="output", metavar="FILE", type="string", - help="Path to store resultion image.", default="./roc.png") - - parser.add_option("-n", "--nscales", dest="nscales", type="int", - help="Prefered count of scales that should be tested from min to max.", default = 55) - - (options, args) = parser.parse_args() - - if not options.input: - parser.error("Test sequence is requared.") - - if not options.cascade: - parser.error("Xml cascade file is requared.") - - # where we use nms cv::SCascade::DOLLAR == 2 - cascade = cv2.SCascade(options.min_scale, options.max_scale, options.nscales, 2) - xml = cv2.FileStorage(options.cascade, 0) - xml1 = xml.getFirstTopLevelNode() - - cascade.load(xml1) - - camera = cv2.VideoCapture(options.input); - while True: - ret, img = camera.read(); - if not ret: - break; - - rects, confs = cascade.detect(img, rois = None) - - # draw results - if rects is not None: - draw_rects(img, rects[0], (0, 255, 0)) - cv2.imshow("result",img); - if (cv2.waitKey (5) != -1): - break; \ No newline at end of file diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py new file mode 100755 index 0000000000..0355ca3a7f --- /dev/null +++ b/apps/sft/misk/roc_test.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python + +import argparse +import sft + +import sys, os, os.path, glob, math, cv2 +from datetime import datetime +import numpy + +def call_parser(f, a): + return eval( "sft.parse_" + f + "('" + a + "')") + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description = 'Plot ROC curve using Caltech mathod of per image detection performance estimation.') + + # positional + parser.add_argument("cascade", help = "Path to the tested detector.") + parser.add_argument("input", help = "Image sequence pattern.") + parser.add_argument("annotations", help = "Path to the annotations.") + + # optional + parser.add_argument("-m", "--min_scale", dest = "min_scale", type = float, metavar= "fl", help = "Minimum scale to be tested.", default = 0.4) + parser.add_argument("-M", "--max_scale", dest = "max_scale", type = float, metavar= "fl", help = "Maximum scale to be tested.", default = 5.0) + parser.add_argument("-o", "--output", dest = "output", type = str, metavar= "path", help = "Path to store resultiong image.", default = "./roc.png") + parser.add_argument("-n", "--nscales", dest = "nscales", type = int, metavar= "n", help = "Prefered count of scales from min to max.", default = 55) + + # required + parser.add_argument("-f", "--anttn-format", dest = "anttn_format", choices = ['inria', 'caltech', "idl"], help = "Annotation file for test sequence.", required = True) + + args = parser.parse_args() + + samples = call_parser(args.anttn_format, args.annotations) + + # where we use nms cv::SCascade::DOLLAR == 2 + cascade = cv2.SCascade(args.min_scale, args.max_scale, args.nscales, 2) + xml = cv2.FileStorage(args.cascade, 0) + dom = xml.getFirstTopLevelNode() + assert cascade.load(dom) + + frame = 0 + pattern = args.input + camera = cv2.VideoCapture(args.input) + while True: + ret, img = camera.read() + if not ret: + break; + + name = pattern % (frame,) + qq = pattern.format(frame) + _, tail = os.path.split(name) + + boxes = samples[tail] + if boxes is not None: + sft.draw_rects(img, boxes, (255, 0, 0), lambda x, y : y) + + frame = frame + 1 + + # sample = samples[] + + + + rects, confs = cascade.detect(img, rois = None) + + # # draw results + if rects is not None: + sft.draw_rects(img, rects[0], (0, 255, 0)) + + cv2.imshow("result", img); + if (cv2.waitKey (5) != -1): + break; \ No newline at end of file diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py new file mode 100644 index 0000000000..6a6e2fea77 --- /dev/null +++ b/apps/sft/misk/sft.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +import cv2, re, glob + +def draw_rects(img, rects, color, l = lambda x, y : x + y): + if rects is not None: + for x1, y1, x2, y2 in rects: + cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) + +class Sample: + def __init__(self, bbs, img): + self.image = img + self.bbs = bb + +def parse_inria(ipath, f): + bbs = [] + path = None + for l in f: + box = None + if l.startswith("Bounding box"): + b = [x.strip() for x in l.split(":")[1].split("-")] + c = [x[1:-1].split(",") for x in b] + d = [int(x) for x in sum(c, [])] + bbs.append(d) + + if l.startswith("Image filename"): + path = l.split('"')[-2] + + return Sample(path, bbs) + +def glob_set(pattern): + return [__n for __n in glob.iglob(pattern)] #glob.iglob(pattern) + +# parse ETH idl file +def parse_idl(f): + map = {} + for l in open(f): + l = re.sub(r"^\"left\/", "{\"", l) + l = re.sub(r"\:", ":[", l) + l = re.sub(r"(\;|\.)$", "]}", l) + map.update(eval(l)) + return map \ No newline at end of file From acdf5444e465be292b1ade7df096a6fa4bec77ca Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 17 Jan 2013 20:35:12 +0400 Subject: [PATCH 51/82] add improved softcascade detector --- data/softcascade/inria_caltech-17.01.2013.xml | 61401 ++++++++++++++++ 1 file changed, 61401 insertions(+) create mode 100644 data/softcascade/inria_caltech-17.01.2013.xml diff --git a/data/softcascade/inria_caltech-17.01.2013.xml b/data/softcascade/inria_caltech-17.01.2013.xml new file mode 100644 index 0000000000..af4d89eda6 --- /dev/null +++ b/data/softcascade/inria_caltech-17.01.2013.xml @@ -0,0 +1,61401 @@ + + + + + + + + + BOOST + ICF + 2 + 64 + 128 + 4 + + <_> + -1 + 1024 + + <_> + -9.4971716403961182e-01 + + 1 2 0 3.7500000000000000e+01 0 -1 1 6.6500000000000000e+01 + -2 -3 2 1.7235000000000000e+03 + + -9.4971716403961182e-01 2.6997840404510498e-01 + 7.8099721670150757e-01 -7.7198696136474609e-01 + <_> + -1.7211276292800903e+00 + + 1 2 3 8.4650000000000000e+02 0 -1 4 1.2500000000000000e+01 + -2 -3 5 5.8500000000000000e+01 + + -5.5446445941925049e-01 7.2089314460754395e-01 + -9.4914066791534424e-01 -4.8974543809890747e-02 + <_> + -2.4981524944305420e+00 + + 1 2 6 2.5000000000000000e+00 0 -1 7 5.9500000000000000e+01 + -2 -3 8 5.6500000000000000e+01 + + -7.7702480554580688e-01 6.2583726644515991e-01 + 5.4469954967498779e-01 -8.8470917940139771e-01 + <_> + -2.1237995624542236e+00 + + 1 2 9 7.8500000000000000e+01 0 -1 10 1.2005000000000000e+03 + -2 -3 11 3.5000000000000000e+00 + + -2.2334083914756775e-03 -9.4934105873107910e-01 + 6.9860899448394775e-01 -5.2581334114074707e-01 + <_> + -1.4558345079421997e+00 + + 1 2 12 5.6550000000000000e+02 0 -1 13 1.5000000000000000e+00 + -2 -3 14 7.2500000000000000e+01 + + -3.4912836551666260e-01 -9.5133358240127563e-01 + -1.3602481782436371e-01 6.6796511411666870e-01 + <_> + -1.5295742750167847e+00 + + 1 2 15 2.7500000000000000e+01 0 -1 16 8.5000000000000000e+00 + -2 -3 17 2.2500000000000000e+01 + + -7.7886241674423218e-01 4.4655936956405640e-01 + -7.3739707469940186e-02 -7.9169273376464844e-01 + <_> + -2.2253897190093994e+00 + + 1 2 18 5.0000000000000000e-01 0 -1 19 1.5000000000000000e+00 + -2 -3 20 2.6925000000000000e+03 + + -8.5955154895782471e-01 5.1408839225769043e-01 + 3.5344448685646057e-01 -6.9581556320190430e-01 + <_> + -1.6767826080322266e+00 + + 1 2 21 4.8050000000000000e+02 0 -1 22 1.2500000000000000e+01 + -2 -3 23 5.5000000000000000e+00 + + -6.2450993061065674e-01 2.5221033021807671e-02 + -6.7134410142898560e-01 6.1318635940551758e-01 + <_> + -1.3603744506835938e+00 + + 1 2 24 1.1435000000000000e+03 0 -1 25 1.7835000000000000e+03 + -2 -3 26 4.2500000000000000e+01 + + -6.0388273000717163e-01 3.1640821695327759e-01 + -8.4853601455688477e-01 6.8783169984817505e-01 + <_> + -1.0207209587097168e+00 + + 1 2 27 3.5000000000000000e+00 0 -1 28 4.9500000000000000e+01 + -2 -3 29 9.0500000000000000e+01 + + 3.3346191048622131e-01 -8.7325519323348999e-01 + -8.2403194904327393e-01 3.3965352177619934e-01 + <_> + -7.3391747474670410e-01 + + 1 2 30 1.5000000000000000e+00 0 -1 31 3.2950000000000000e+02 + -2 -3 32 1.1500000000000000e+01 + + 6.6277317702770233e-02 -6.9447505474090576e-01 + -5.3387427330017090e-01 4.5649796724319458e-01 + <_> + -8.5609853267669678e-01 + + 1 2 33 5.0000000000000000e-01 0 -1 34 9.9450000000000000e+02 + -2 -3 35 6.9500000000000000e+01 + + 4.8371157050132751e-01 -5.3800541162490845e-01 + -7.2787827253341675e-01 3.4235689043998718e-01 + <_> + -5.6636196374893188e-01 + + 1 2 36 6.5000000000000000e+00 0 -1 37 72. -2 -3 38 + 3.0950000000000000e+02 + + -8.5185158252716064e-01 7.3330056667327881e-01 + 2.8973656892776489e-01 -6.7352497577667236e-01 + <_> + -3.7486231327056885e-01 + + 1 2 39 2.5000000000000000e+00 0 -1 40 7.1500000000000000e+01 + -2 -3 41 6.5000000000000000e+00 + + -9.3279057741165161e-01 7.1982288360595703e-01 + -7.4711191654205322e-01 1.9149963557720184e-01 + <_> + -4.8397040367126465e-01 + + 1 2 42 1.1825000000000000e+03 0 -1 43 7.1500000000000000e+01 + -2 -3 44 1000. + + -1.9838142395019531e-01 4.8220044374465942e-01 + -8.3472287654876709e-01 9.5568519830703735e-01 + <_> + -4.4923403859138489e-01 + + 1 2 45 1.4050000000000000e+02 0 -1 46 3.8645000000000000e+03 + -2 -3 47 5.7750000000000000e+02 + + -5.5212533473968506e-01 4.4974172115325928e-01 + -7.6033878326416016e-01 3.4736368805170059e-02 + <_> + -4.2061111330986023e-01 + + 1 2 48 3.2500000000000000e+01 0 -1 49 5.0000000000000000e-01 + -2 -3 50 715. + + 3.7134438753128052e-01 -3.3291110396385193e-01 + -8.0598479509353638e-01 9.6374911069869995e-01 + <_> + -1.9169148802757263e-01 + + 1 2 51 1.0500000000000000e+01 0 -1 52 1.0500000000000000e+01 + -2 -3 53 4.9500000000000000e+01 + + -8.6079102754592896e-01 6.6127598285675049e-01 + 2.2891961038112640e-01 -9.0992504358291626e-01 + <_> + -5.1674181222915649e-01 + + 1 2 54 2.6150000000000000e+02 0 -1 55 3.2695000000000000e+03 + -2 -3 56 1409. + + -9.3132334947586060e-01 9.0150839090347290e-01 + -5.5453002452850342e-01 1.6071465611457825e-01 + <_> + 7.2020828723907471e-02 + + 1 2 57 7.9500000000000000e+01 0 -1 58 2.8025000000000000e+03 + -2 -3 59 9.5000000000000000e+00 + + -7.9213029146194458e-01 5.8876264095306396e-01 + -6.8830287456512451e-01 1.2910151481628418e-01 + <_> + 2.1566778421401978e-01 + + 1 2 60 3.5000000000000000e+00 0 -1 61 1.0500000000000000e+01 + -2 -3 62 1.9500000000000000e+01 + + 4.0831661224365234e-01 -4.9088028073310852e-01 + -6.5012139081954956e-01 3.4508187323808670e-02 + <_> + -2.1515211090445518e-02 + + 1 2 63 2.8050000000000000e+02 0 -1 64 1.3550000000000000e+02 + -2 -3 65 6.4500000000000000e+01 + + -8.1834840774536133e-01 3.4400060772895813e-01 + -6.3054949045181274e-01 1.1890744417905807e-01 + <_> + 3.1621408462524414e-01 + + 1 2 66 9.5000000000000000e+00 0 -1 67 6.1450000000000000e+02 + -2 -3 68 1.3500000000000000e+01 + + 9.3128114938735962e-02 -9.1282945871353149e-01 + -3.9921483397483826e-01 3.3772930502891541e-01 + <_> + 5.6335878372192383e-01 + + 1 2 69 3.7950000000000000e+02 0 -1 70 1.3500000000000000e+01 + -2 -3 71 1.5000000000000000e+00 + + -7.0056474208831787e-01 5.2738833427429199e-01 + 3.5282510519027710e-01 -3.3403894305229187e-01 + <_> + 5.6363087892532349e-01 + + 1 2 72 1.1250000000000000e+02 0 -1 73 5.0000000000000000e-01 + -2 -3 74 1.2050000000000000e+02 + + -4.6730571985244751e-01 2.9215443134307861e-01 + -8.7365627288818359e-01 3.9535489678382874e-01 + <_> + 6.9701683521270752e-01 + + 1 2 75 5.0425000000000000e+03 0 -1 76 4.5000000000000000e+00 + -2 -3 77 6.5000000000000000e+00 + + -6.0965454578399658e-01 1.8540042638778687e-01 + -9.2315214872360229e-01 5.3048878908157349e-01 + <_> + 4.5701298117637634e-01 + + 1 2 78 5.0000000000000000e-01 0 -1 79 6.5000000000000000e+00 + -2 -3 80 2.5000000000000000e+00 + + -2.7668315172195435e-01 5.6005096435546875e-01 + 2.1146409213542938e-01 -5.8390063047409058e-01 + <_> + 5.3680413961410522e-01 + + 1 2 81 1.6385000000000000e+03 0 -1 82 1.6425000000000000e+03 + -2 -3 83 9.5650000000000000e+02 + + -4.7798931598663330e-01 7.4568957090377808e-01 + -6.5293675661087036e-01 7.9791143536567688e-02 + <_> + 7.9123014211654663e-01 + + 1 2 84 2.5000000000000000e+00 0 -1 85 3.5000000000000000e+00 + -2 -3 86 2.7500000000000000e+01 + + -8.4295582771301270e-01 3.1564649939537048e-01 + 2.5442600250244141e-01 -5.3678894042968750e-01 + <_> + 9.9566841125488281e-01 + + 1 2 87 1.5000000000000000e+00 0 -1 88 8.3500000000000000e+01 + -2 -3 89 4.3585000000000000e+03 + + -6.9861388206481934e-01 5.2257591485977173e-01 + 2.0443826913833618e-01 -9.2329531908035278e-01 + <_> + 6.9697165489196777e-01 + + 1 2 90 6.5000000000000000e+00 0 -1 91 5.0000000000000000e-01 + -2 -3 92 1.5500000000000000e+01 + + 5.5905121564865112e-01 -4.5287278294563293e-01 + 4.4855368137359619e-01 -5.0183618068695068e-01 + <_> + 9.2100763320922852e-01 + + 1 2 93 1.5500000000000000e+01 0 -1 94 1727. -2 -3 95 + 4.0650000000000000e+02 + + 8.0813169479370117e-02 -7.7053368091583252e-01 + -6.6791737079620361e-01 5.0257974863052368e-01 + <_> + 1.2186468839645386e+00 + + 1 2 96 2.5000000000000000e+00 0 -1 97 9.4450000000000000e+02 + -2 -3 98 2.8250000000000000e+02 + + 5.1938551664352417e-01 -6.8461489677429199e-01 + 2.9763919115066528e-01 -5.4145312309265137e-01 + <_> + 1.5830533504486084e+00 + + 1 2 99 1.5000000000000000e+00 0 -1 100 + 6.4500000000000000e+01 -2 -3 101 4.1500000000000000e+01 + + 3.6440649628639221e-01 -8.8290220499038696e-01 + -5.5990779399871826e-01 5.2934420108795166e-01 + <_> + 1.6476187705993652e+00 + + 1 2 102 6.3500000000000000e+01 0 -1 103 1272. -2 -3 104 + 3.5000000000000000e+00 + + 7.6397061347961426e-02 -6.9906431436538696e-01 + -3.5238000750541687e-01 4.7082781791687012e-01 + <_> + 1.9613027572631836e+00 + + 1 2 105 1.9050000000000000e+02 0 -1 106 + 2.5950000000000000e+02 -2 -3 107 8.6850000000000000e+02 + + 4.7928789258003235e-01 -5.8920049667358398e-01 + 3.1368392705917358e-01 -7.1384090185165405e-01 + <_> + 1.8639501333236694e+00 + + 1 2 108 4.5000000000000000e+00 0 -1 109 + 2.5000000000000000e+00 -2 -3 110 3.4500000000000000e+01 + + -6.9352459907531738e-01 7.6466333866119385e-01 + -4.9252825975418091e-01 3.0242496728897095e-01 + <_> + 1.8654627799987793e+00 + + 1 2 111 5.5000000000000000e+00 0 -1 112 + 4.6550000000000000e+02 -2 -3 113 6.6500000000000000e+01 + + 3.1676077842712402e-01 -5.6126487255096436e-01 + -7.7573800086975098e-01 5.2215093374252319e-01 + <_> + 2.1480247974395752e+00 + + 1 2 114 6.0500000000000000e+01 0 -1 115 + 2.0500000000000000e+01 -2 -3 116 2.3450000000000000e+02 + + -8.9376759529113770e-01 -1.0997094959020615e-01 + 7.2199839353561401e-01 -5.0327394157648087e-02 + <_> + 1.9088299274444580e+00 + + 1 2 117 7.5000000000000000e+00 0 -1 118 + 4.0500000000000000e+01 -2 -3 119 6.5000000000000000e+00 + + 4.8195198178291321e-02 -7.0370197296142578e-01 + -2.3919497430324554e-01 4.2311295866966248e-01 + <_> + 1.5272409915924072e+00 + + 1 2 120 1.6050000000000000e+02 0 -1 121 + 1.0500000000000000e+01 -2 -3 122 1.0500000000000000e+01 + + 2.4770694971084595e-01 -3.8158890604972839e-01 + -9.7206908464431763e-01 8.9829629659652710e-01 + <_> + 1.9680063724517822e+00 + + 1 2 123 2.5000000000000000e+00 0 -1 124 + 1.9500000000000000e+01 -2 -3 125 2.5735000000000000e+03 + + -4.3100010603666306e-02 -7.5473427772521973e-01 + -3.5048019886016846e-01 4.4076529145240784e-01 + <_> + 2.3465363979339600e+00 + + 1 2 126 1.2500000000000000e+01 0 -1 127 + 1.0555000000000000e+03 -2 -3 128 7.5000000000000000e+00 + + -8.7551236152648926e-01 -6.7303813993930817e-02 + 3.7853002548217773e-01 -3.1027609109878540e-01 + <_> + 2.9033544063568115e+00 + + 1 2 129 8.5000000000000000e+00 0 -1 130 + 5.6250000000000000e+02 -2 -3 131 1.3550000000000000e+02 + + -3.6559425294399261e-02 -7.8142386674880981e-01 + 7.2312414646148682e-01 2.3289153352379799e-02 + <_> + 2.9388859272003174e+00 + + 1 2 132 5.0000000000000000e-01 0 -1 133 + 5.5250000000000000e+02 -2 -3 134 9.5000000000000000e+00 + + -3.9772734045982361e-01 3.6010205745697021e-01 + -5.2232388406991959e-02 -8.5994052886962891e-01 + <_> + 3.1289162635803223e+00 + + 1 2 135 2.5000000000000000e+00 0 -1 136 + 9.3550000000000000e+02 -2 -3 137 3.4500000000000000e+01 + + 6.5386021137237549e-01 -7.9960751533508301e-01 + 5.9937894344329834e-01 -9.3748055398464203e-02 + <_> + 2.9401018619537354e+00 + + 1 2 138 2.3500000000000000e+01 0 -1 139 + 4.9500000000000000e+01 -2 -3 140 3.6500000000000000e+01 + + -2.2960659861564636e-01 6.7244362831115723e-01 + 7.8785783052444458e-01 -9.8723149299621582e-01 + <_> + 3.1424379348754883e+00 + + 1 2 141 2.5000000000000000e+00 0 -1 142 + 5.5000000000000000e+00 -2 -3 143 2361. + + -9.1799181699752808e-01 4.2446807026863098e-01 + 2.0233620703220367e-01 -9.6672892570495605e-01 + <_> + 3.4968855381011963e+00 + + 1 2 144 2.8550000000000000e+02 0 -1 145 + 5.1500000000000000e+01 -2 -3 146 5.6650000000000000e+02 + + -8.5579192638397217e-01 -9.2651106417179108e-02 + 3.8093444705009460e-01 -5.7530546188354492e-01 + <_> + 3.1502232551574707e+00 + + 1 2 147 4.5000000000000000e+00 0 -1 148 + 6.8500000000000000e+01 -2 -3 149 9.5000000000000000e+00 + + -8.9113306999206543e-01 7.8237515687942505e-01 + 3.2001781463623047e-01 -3.7314903736114502e-01 + <_> + 3.8585174083709717e+00 + + 1 2 150 5.0000000000000000e-01 0 -1 151 + 5.5000000000000000e+00 -2 -3 152 4.1050000000000000e+02 + + -4.9204528331756592e-01 7.0829415321350098e-01 + 7.4046157300472260e-02 -6.1383426189422607e-01 + <_> + 3.8080792427062988e+00 + + 1 2 153 3.5500000000000000e+01 0 -1 154 7681. -2 -3 155 + 2.4675000000000000e+03 + + 3.3740982413291931e-02 -7.4226945638656616e-01 + -7.3395508527755737e-01 3.6083909869194031e-01 + <_> + 3.3863887786865234e+00 + + 1 2 156 5.6500000000000000e+01 0 -1 157 + 5.0000000000000000e-01 -2 -3 158 8.4050000000000000e+02 + + 1.7904321849346161e-01 -4.8003113269805908e-01 + -9.6535164117813110e-01 6.9043123722076416e-01 + <_> + 3.6636304855346680e+00 + + 1 2 159 4.5000000000000000e+00 0 -1 160 + 2.5000000000000000e+00 -2 -3 161 5.8950000000000000e+02 + + 2.8943026065826416e-01 -6.7487114667892456e-01 + 2.7724167704582214e-01 -8.2213556766510010e-01 + <_> + 3.8721060752868652e+00 + + 1 2 162 1.2150000000000000e+02 0 -1 163 + 1.4500000000000000e+01 -2 -3 164 1.7500000000000000e+01 + + 2.0847551524639130e-01 -6.2353050708770752e-01 + -9.3967980146408081e-01 1.3107043504714966e-01 + <_> + 3.7894663810729980e+00 + + 1 2 165 2.5000000000000000e+00 0 -1 166 + 1.5500000000000000e+01 -2 -3 167 7.4500000000000000e+01 + + -7.5801634788513184e-01 4.9648978747427464e-03 + 2.7702361345291138e-01 -6.3914996385574341e-01 + <_> + 4.0543885231018066e+00 + + 1 2 168 9.3500000000000000e+01 0 -1 169 + 6.1500000000000000e+01 -2 -3 170 2.8500000000000000e+01 + + -4.7131806612014771e-01 7.3680460453033447e-01 + 3.5524344444274902e-01 -8.2101029157638550e-01 + <_> + 3.9048261642456055e+00 + + 1 2 171 7.5500000000000000e+01 0 -1 172 + 5.0000000000000000e-01 -2 -3 173 1.6500000000000000e+01 + + 4.9885207414627075e-01 -1.4956261217594147e-01 + -9.2175818979740143e-02 -8.9010834693908691e-01 + <_> + 4.4586915969848633e+00 + + 1 2 174 2.6950000000000000e+02 0 -1 175 + 1.7605000000000000e+03 -2 -3 176 2.8545000000000000e+03 + + 8.6131852865219116e-01 -1.3636624813079834e-01 + -7.9446256160736084e-01 5.2974238060414791e-03 + <_> + 4.6468200683593750e+00 + + 1 2 177 8.5000000000000000e+00 0 -1 178 + 1.7250000000000000e+02 -2 -3 179 1.5000000000000000e+00 + + 7.8949034214019775e-01 -6.4925616979598999e-01 + -4.3843978643417358e-01 3.6792558431625366e-01 + <_> + 5.0024299621582031e+00 + + 1 2 180 5.0000000000000000e-01 0 -1 181 + 1.5000000000000000e+00 -2 -3 182 3.2500000000000000e+01 + + -6.3265806436538696e-01 5.1995193958282471e-01 + -5.6129783391952515e-01 3.8019722700119019e-01 + <_> + 4.7194237709045410e+00 + + 1 2 183 4.2650000000000000e+02 0 -1 184 + 8.5000000000000000e+00 -2 -3 185 4.4950000000000000e+02 + + -7.5718921422958374e-01 2.8537952899932861e-01 + -6.2070721387863159e-01 4.7228741645812988e-01 + <_> + 5.0188984870910645e+00 + + 1 2 186 4.5000000000000000e+00 0 -1 187 + 7.5000000000000000e+00 -2 -3 188 2.5500000000000000e+01 + + -7.2133111953735352e-01 5.6136214733123779e-01 + -6.9119346141815186e-01 3.8566098082810640e-03 + <_> + 5.3487014770507812e+00 + + 1 2 189 5.7500000000000000e+01 0 -1 190 + 2.5000000000000000e+00 -2 -3 191 7.8350000000000000e+02 + + -4.0980994701385498e-01 3.2980319857597351e-01 + -8.2106924057006836e-01 8.7380580604076385e-02 + <_> + 5.4926447868347168e+00 + + 1 2 192 4.0550000000000000e+02 0 -1 193 + 1.4450000000000000e+02 -2 -3 194 6.5005000000000000e+03 + + 7.8168880939483643e-01 -9.9427944421768188e-01 + 1.4394305646419525e-01 -8.7959676980972290e-01 + <_> + 4.9957537651062012e+00 + + 1 2 195 4.8150000000000000e+02 0 -1 196 + 1.5000000000000000e+00 -2 -3 197 3.5035000000000000e+03 + + 7.3646187782287598e-02 -4.9689114093780518e-01 + 4.9998056888580322e-01 -8.2785910367965698e-01 + <_> + 5.1939215660095215e+00 + + 1 2 198 2.5000000000000000e+00 0 -1 199 + 5.0000000000000000e-01 -2 -3 200 2.3500000000000000e+01 + + 1.2600880861282349e-01 -7.7916258573532104e-01 + 5.3144866228103638e-01 -1.1227495223283768e-01 + <_> + 5.0181527137756348e+00 + + 1 2 201 8.5000000000000000e+00 0 -1 202 + 4.4750000000000000e+02 -2 -3 203 5.0000000000000000e-01 + + 5.7900190353393555e-02 -7.0389288663864136e-01 + 5.1429390907287598e-01 -1.7576885223388672e-01 + <_> + 5.5697488784790039e+00 + + 1 2 204 1.0500000000000000e+01 0 -1 205 70. -2 -3 206 + 6.7350000000000000e+02 + + -8.7297052145004272e-01 7.0906364917755127e-01 + -1.4972299337387085e-01 5.5159616470336914e-01 + <_> + 5.7136139869689941e+00 + + 1 2 207 1.3650000000000000e+02 0 -1 208 + 1.6175000000000000e+03 -2 -3 209 3.7500000000000000e+01 + + -7.1608042716979980e-01 6.8123096227645874e-01 + -5.4103106260299683e-01 1.4386519789695740e-01 + <_> + 6.0863943099975586e+00 + + 1 2 210 4.2350000000000000e+02 0 -1 211 + 6.5000000000000000e+00 -2 -3 212 1.6500000000000000e+01 + + -5.0391936302185059e-01 3.7278059124946594e-01 + -6.1555516719818115e-01 3.6680406332015991e-01 + <_> + 6.0900993347167969e+00 + + 1 2 213 7.5000000000000000e+00 0 -1 214 + 6.3500000000000000e+01 -2 -3 215 1.7150000000000000e+02 + + -8.1301319599151611e-01 2.1032735705375671e-01 + 2.5279974937438965e-01 -7.4217134714126587e-01 + <_> + 5.8023753166198730e+00 + + 1 2 216 1.2500000000000000e+01 0 -1 217 + 1.5000000000000000e+00 -2 -3 218 2.6500000000000000e+01 + + -7.2685444355010986e-01 7.9898738861083984e-01 + -2.8772389888763428e-01 5.6455093622207642e-01 + <_> + 6.3323311805725098e+00 + + 1 2 219 1.5000000000000000e+00 0 -1 220 + 8.5000000000000000e+00 -2 -3 221 1475. + + -1.4710092544555664e-01 5.2995562553405762e-01 + -5.9936457872390747e-01 6.4512765407562256e-01 + <_> + 6.6095805168151855e+00 + + 1 2 222 1.0050000000000000e+02 0 -1 223 + 1.3850000000000000e+02 -2 -3 224 1.6500000000000000e+01 + + -3.7491708993911743e-01 2.7724933624267578e-01 + -9.3418252468109131e-01 7.3304271697998047e-01 + <_> + 6.3995418548583984e+00 + + 1 2 225 5.0000000000000000e-01 0 -1 226 + 5.0000000000000000e-01 -2 -3 227 404. + + -5.4505115747451782e-01 3.4958031773567200e-01 + 3.8955518603324890e-01 -5.4077529907226562e-01 + <_> + 6.4326496124267578e+00 + + 1 2 228 1.4725000000000000e+03 0 -1 229 + 1.5000000000000000e+00 -2 -3 230 1.8750000000000000e+02 + + -5.1992988586425781e-01 3.2155281305313110e-01 + -8.8109362125396729e-01 1.9341170787811279e-01 + <_> + 6.6780347824096680e+00 + + 1 2 231 4.1500000000000000e+01 0 -1 232 + 3.7950000000000000e+02 -2 -3 233 5.6500000000000000e+01 + + -3.8503032922744751e-01 2.4538502097129822e-01 + -8.7592208385467529e-01 1. + <_> + 6.2248573303222656e+00 + + 1 2 234 7.5000000000000000e+00 0 -1 235 + 3.2500000000000000e+01 -2 -3 236 5.7950000000000000e+02 + + -4.5317751169204712e-01 2.1532684564590454e-01 + 5.8404910564422607e-01 -2.4274602532386780e-01 + <_> + 6.4159698486328125e+00 + + 1 2 237 1.1535000000000000e+03 0 -1 238 + 5.5000000000000000e+00 -2 -3 239 6.4500000000000000e+01 + + -8.7068289518356323e-01 1.9111247360706329e-01 + -9.4053912162780762e-01 4.4355693459510803e-01 + <_> + 7.1638717651367188e+00 + + 1 2 240 1.4050000000000000e+02 0 -1 241 + 5.0000000000000000e-01 -2 -3 242 1.2650000000000000e+02 + + 4.4086909294128418e-01 -5.0150549411773682e-01 + 7.4790221452713013e-01 -9.0757437050342560e-02 + <_> + 6.9956283569335938e+00 + + 1 2 243 4.0550000000000000e+02 0 -1 244 + 3.7650000000000000e+02 -2 -3 245 4524. + + -3.4899798035621643e-01 8.1103372573852539e-01 + -8.7178498506546021e-01 -4.8995027318596840e-03 + <_> + 7.4554481506347656e+00 + + 1 2 246 2.3150000000000000e+02 0 -1 247 + 3.1425000000000000e+03 -2 -3 248 6.5000000000000000e+00 + + 5.2766591310501099e-01 -6.1232703924179077e-01 + -6.5764123201370239e-01 2.0478096604347229e-01 + <_> + 7.2104501724243164e+00 + + 1 2 249 2.9500000000000000e+01 0 -1 250 + 5.0000000000000000e-01 -2 -3 251 2.1500000000000000e+01 + + 4.3428641557693481e-01 -3.1284397840499878e-01 + 8.8815468549728394e-01 -4.8376885056495667e-01 + <_> + 7.4390578269958496e+00 + + 1 2 252 5.5000000000000000e+00 0 -1 253 + 1.3500000000000000e+01 -2 -3 254 6.2500000000000000e+01 + + 7.5515633821487427e-01 -9.5432144403457642e-01 + 2.2860760986804962e-01 -7.0533061027526855e-01 + <_> + 7.9283328056335449e+00 + + 1 2 255 2.5000000000000000e+00 0 -1 256 + 2.2050000000000000e+02 -2 -3 257 6.5000000000000000e+00 + + 2.8305485844612122e-01 -4.7798827290534973e-01 + -6.9612729549407959e-01 4.8927512764930725e-01 + <_> + 7.8133955001831055e+00 + + 1 2 258 9.5000000000000000e+00 0 -1 259 + 4.5000000000000000e+00 -2 -3 260 1.7500000000000000e+01 + + 6.2756460905075073e-01 -7.5498276948928833e-01 + 3.5729703307151794e-01 -4.0417757630348206e-01 + <_> + 8.1147861480712891e+00 + + 1 2 261 5.0000000000000000e-01 0 -1 262 + 5.0000000000000000e-01 -2 -3 263 1.5000000000000000e+00 + + -4.9173495173454285e-01 4.1440054774284363e-01 + 1.4962354302406311e-01 -6.2164884805679321e-01 + <_> + 8.0036125183105469e+00 + + 1 2 264 2.7250000000000000e+02 0 -1 265 + 6.6500000000000000e+01 -2 -3 266 8.6500000000000000e+01 + + 8.9536643028259277e-01 -8.2981568574905396e-01 + -1.1117322742938995e-01 5.5591076612472534e-01 + <_> + 7.9468250274658203e+00 + + 1 2 267 3.4355000000000000e+03 0 -1 268 + 1.2500000000000000e+01 -2 -3 269 5.0000000000000000e-01 + + -5.6787721812725067e-02 6.2517631053924561e-01 + 9.5699685811996460e-01 -8.4953671693801880e-01 + <_> + 8.1981401443481445e+00 + + 1 2 270 5.1255000000000000e+03 0 -1 271 + 7.5500000000000000e+01 -2 -3 272 3.5000000000000000e+00 + + 5.5827653408050537e-01 -8.1833952665328979e-01 + -7.4658811092376709e-01 2.5131568312644958e-01 + <_> + 8.5107431411743164e+00 + + 1 2 273 1.4500000000000000e+01 0 -1 274 + 1.2465000000000000e+03 -2 -3 275 2.5000000000000000e+00 + + -4.7990524768829346e-01 3.1260266900062561e-01 + -7.6885735988616943e-01 2.7144250273704529e-01 + <_> + 8.5296592712402344e+00 + + 1 2 276 8.5000000000000000e+00 0 -1 277 + 4.5000000000000000e+00 -2 -3 278 2.2500000000000000e+01 + + -2.7888947725296021e-01 4.1390788555145264e-01 + -7.5243312120437622e-01 3.8646731525659561e-02 + <_> + 8.1502628326416016e+00 + + 1 2 279 7.5000000000000000e+00 0 -1 280 + 4.5000000000000000e+00 -2 -3 281 6.5000000000000000e+00 + + -9.1697919368743896e-01 2.5899103283882141e-01 + 2.9392924904823303e-01 -3.7939697504043579e-01 + <_> + 8.5284252166748047e+00 + + 1 2 282 7.5000000000000000e+00 0 -1 283 + 4.5000000000000000e+00 -2 -3 284 1.6650000000000000e+02 + + 4.6240034699440002e-01 -5.9770995378494263e-01 + 3.7816286087036133e-01 -4.5079508423805237e-01 + <_> + 8.8317689895629883e+00 + + 1 2 285 5.0000000000000000e-01 0 -1 286 + 1.0500000000000000e+01 -2 -3 287 9.3500000000000000e+01 + + -2.2997814416885376e-01 5.8687257766723633e-01 + -3.8729551434516907e-01 8.3155500888824463e-01 + <_> + 9.0805969238281250e+00 + + 1 2 288 4.5000000000000000e+00 0 -1 289 + 1.5000000000000000e+00 -2 -3 290 9.5500000000000000e+01 + + -5.1435619592666626e-01 6.5646749734878540e-01 + 2.3559592664241791e-01 -5.2417474985122681e-01 + <_> + 9.1131057739257812e+00 + + 1 2 291 1.0550000000000000e+02 0 -1 292 + 2.5000000000000000e+00 -2 -3 293 2.5000000000000000e+00 + + 2.8382772207260132e-01 -7.2767460346221924e-01 + -2.2438500821590424e-01 5.3264546394348145e-01 + <_> + 9.5003452301025391e+00 + + 1 2 294 3.6250000000000000e+02 0 -1 295 + 5.2500000000000000e+01 -2 -3 296 1.0500000000000000e+01 + + -1.5170100331306458e-01 5.5480080842971802e-01 + -5.9511619806289673e-01 9.4855791330337524e-01 + <_> + 9.8572778701782227e+00 + + 1 2 297 1.5000000000000000e+00 0 -1 298 + 5.2450000000000000e+02 -2 -3 299 9.4850000000000000e+02 + + -7.1444231271743774e-01 5.5506742000579834e-01 + -3.6931082606315613e-01 3.5693225264549255e-01 + <_> + 9.9349241256713867e+00 + + 1 2 300 9.4850000000000000e+02 0 -1 301 267. -2 -3 302 + 1.6500000000000000e+01 + + -8.8825285434722900e-01 7.0393162965774536e-01 + -7.8592085838317871e-01 1.2156928423792124e-03 + <_> + 9.9322500228881836e+00 + + 1 2 303 2.5500000000000000e+01 0 -1 304 + 1.5000000000000000e+00 -2 -3 305 159. + + 3.4359598159790039e-01 -2.4455060064792633e-01 1. + -7.8989464044570923e-01 + <_> + 1.0058608055114746e+01 + + 1 2 306 5.0000000000000000e-01 0 -1 307 + 2.2500000000000000e+01 -2 -3 308 1.1515000000000000e+03 + + -9.0996569395065308e-01 9.2380321025848389e-01 + -1.6473907232284546e-01 4.1052249073982239e-01 + <_> + 1.0223997116088867e+01 + + 1 2 309 4.2500000000000000e+01 0 -1 310 + 8.6650000000000000e+02 -2 -3 311 2.2500000000000000e+01 + + 1.9234158098697662e-01 -7.2460043430328369e-01 + -7.9836362600326538e-01 9.6195751428604126e-01 + <_> + 1.0008197784423828e+01 + + 1 2 312 5.5000000000000000e+00 0 -1 313 + 2.6650000000000000e+02 -2 -3 314 3.3500000000000000e+01 + + 1.2523138523101807e-01 -8.6618262529373169e-01 + -2.4275220930576324e-01 4.0779858827590942e-01 + <_> + 1.0062645912170410e+01 + + 1 2 315 5.0000000000000000e-01 0 -1 316 + 1.5500000000000000e+01 -2 -3 317 3.5000000000000000e+00 + + -5.3337979316711426e-01 3.9335799217224121e-01 + 1.6538677737116814e-02 -6.5064489841461182e-01 + <_> + 1.0137523651123047e+01 + + 1 2 318 6.5000000000000000e+00 0 -1 319 + 9.7500000000000000e+01 -2 -3 320 4.2250000000000000e+02 + + -8.1692630052566528e-01 3.2735434174537659e-01 + 3.4575462341308594e-01 -3.3049446344375610e-01 + <_> + 1.0166016578674316e+01 + + 1 2 321 2.5500000000000000e+01 0 -1 322 + 8.5000000000000000e+00 -2 -3 323 1.6500000000000000e+01 + + 9.1644279658794403e-02 -5.2864229679107666e-01 + 6.9183582067489624e-01 -8.6679929494857788e-01 + <_> + 1.0464833259582520e+01 + + 1 2 324 4.3500000000000000e+01 0 -1 325 + 2.0500000000000000e+01 -2 -3 326 8.0500000000000000e+01 + + -7.2728145122528076e-01 7.6082414388656616e-01 + 2.9881590604782104e-01 -7.0052075386047363e-01 + <_> + 1.0593893051147461e+01 + + 1 2 327 754. 0 -1 328 3.1500000000000000e+01 -2 -3 329 + 1.1650000000000000e+02 + + 1.2906002998352051e-01 -9.6310997009277344e-01 + -9.4967085123062134e-01 9.2896288633346558e-01 + <_> + 1.0529273033142090e+01 + + 1 2 330 1.5950000000000000e+02 0 -1 331 + 5.0000000000000000e-01 -2 -3 332 1.0500000000000000e+01 + + 4.0252849459648132e-01 -2.2623433172702789e-01 + -8.2927960157394409e-01 7.9533529281616211e-01 + <_> + 1.0765100479125977e+01 + + 1 2 333 3.7500000000000000e+01 0 -1 334 2857. -2 -3 335 + 2.9500000000000000e+01 + + 1.0000352561473846e-01 -6.7226463556289673e-01 + -2.3132064938545227e-01 6.5264308452606201e-01 + <_> + 1.0927120208740234e+01 + + 1 2 336 1.4500000000000000e+01 0 -1 337 + 1.7500000000000000e+01 -2 -3 338 7.5000000000000000e+00 + + 1. -9.8882341384887695e-01 -8.0750954151153564e-01 + 1.6201967000961304e-01 + <_> + 1.0593936920166016e+01 + + 1 2 339 3.5500000000000000e+01 0 -1 340 + 1.9835000000000000e+03 -2 -3 341 2.3950000000000000e+02 + + -7.7594196796417236e-01 5.6257498264312744e-01 + -3.3318310976028442e-01 7.2988075017929077e-01 + <_> + 1.0573868751525879e+01 + + 1 2 342 4.0345000000000000e+03 0 -1 343 + 1.7500000000000000e+01 -2 -3 344 2.4500000000000000e+01 + + -2.0068552345037460e-02 6.8981468677520752e-01 + -9.6814006567001343e-01 1. + <_> + 1.0650080680847168e+01 + + 1 2 345 7.5000000000000000e+00 0 -1 346 + 1.2500000000000000e+01 -2 -3 347 5.0000000000000000e-01 + + 7.6211549341678619e-02 -5.1685106754302979e-01 + 7.4474209547042847e-01 -4.1124773025512695e-01 + <_> + 1.1117682456970215e+01 + + 1 2 348 2.6150000000000000e+02 0 -1 349 + 3.6500000000000000e+01 -2 -3 350 1.3225000000000000e+03 + + 3.7473414093255997e-02 -7.5915354490280151e-01 + -8.7183421850204468e-01 5.9835737943649292e-01 + <_> + 1.1351815223693848e+01 + + 1 2 351 1.5000000000000000e+00 0 -1 352 + 1.1500000000000000e+01 -2 -3 353 1.5000000000000000e+00 + + -7.5888788700103760e-01 8.4721368551254272e-01 + -5.5274593830108643e-01 2.3413263261318207e-01 + <_> + 1.1546736717224121e+01 + + 1 2 354 1.3500000000000000e+01 0 -1 355 + 6.5450000000000000e+02 -2 -3 356 9.5000000000000000e+00 + + -7.7053505182266235e-01 2.9745939373970032e-01 + -6.9932419061660767e-01 6.4165964722633362e-02 + <_> + 1.1826669692993164e+01 + + 1 2 357 5.0000000000000000e-01 0 -1 358 55. -2 -3 359 + 2.4850000000000000e+02 + + 4.2303827404975891e-01 -5.7265710830688477e-01 + 2.7993318438529968e-01 -8.1947267055511475e-01 + <_> + 1.1284319877624512e+01 + + 1 2 360 5.0000000000000000e-01 0 -1 361 + 6.5000000000000000e+00 -2 -3 362 1.1500000000000000e+01 + + -9.5987164974212646e-01 3.2443001866340637e-01 + -6.4488828182220459e-01 1.1978100985288620e-01 + <_> + 1.1630601882934570e+01 + + 1 2 363 5.0000000000000000e-01 0 -1 364 + 5.0000000000000000e-01 -2 -3 365 8.4500000000000000e+01 + + -8.8305491209030151e-01 3.4628173708915710e-01 + -4.7460108995437622e-01 7.0546346902847290e-01 + <_> + 1.2214597702026367e+01 + + 1 2 366 9.4450000000000000e+02 0 -1 367 + 1.2500000000000000e+01 -2 -3 368 8.5000000000000000e+00 + + 8.7438219785690308e-01 -7.6936721801757812e-01 + -5.2558350563049316e-01 1.2239178270101547e-01 + <_> + 1.2195128440856934e+01 + + 1 2 369 2.7550000000000000e+02 0 -1 370 + 1.7650000000000000e+02 -2 -3 371 2.2735000000000000e+03 + + -1.9470088183879852e-02 -9.6673905849456787e-01 + -4.8436808586120605e-01 3.0466488003730774e-01 + <_> + 1.2251366615295410e+01 + + 1 2 372 5.2650000000000000e+02 0 -1 373 546. -2 -3 374 + 1.1050000000000000e+02 + + -1. 9.5037066936492920e-01 -3.8202244043350220e-01 + 2.0185998082160950e-01 + <_> + 1.2102990150451660e+01 + + 1 2 375 3.2500000000000000e+01 0 -1 376 + 2.1500000000000000e+01 -2 -3 377 8.4500000000000000e+01 + + -3.2463604211807251e-01 3.6814257502555847e-01 + -7.3823076486587524e-01 7.4913966655731201e-01 + <_> + 1.2312093734741211e+01 + + 1 2 378 3.4355000000000000e+03 0 -1 379 + 2.5000000000000000e+00 -2 -3 380 6.3500000000000000e+01 + + -7.8733509778976440e-01 2.0910337567329407e-01 + -9.0931433439254761e-01 3.8765233755111694e-01 + <_> + 1.2890332221984863e+01 + + 1 2 381 3.0500000000000000e+01 0 -1 382 3778. -2 -3 383 + 3.5000000000000000e+00 + + -9.6564710140228271e-01 6.7786568403244019e-01 + -6.9395273923873901e-01 6.1719562858343124e-02 + <_> + 1.2589548110961914e+01 + + 1 2 384 1.9950000000000000e+02 0 -1 385 + 2.5000000000000000e+00 -2 -3 386 8.1500000000000000e+01 + + 3.0389565229415894e-01 -3.0078458786010742e-01 + 9.3047642707824707e-01 -8.3185690641403198e-01 + <_> + 1.3083652496337891e+01 + + 1 2 387 6.8500000000000000e+01 0 -1 388 + 2.9495000000000000e+03 -2 -3 389 1.6500000000000000e+01 + + 4.2328838258981705e-02 -8.1223583221435547e-01 + -2.1020211279392242e-01 5.5431735515594482e-01 + <_> + 1.3218968391418457e+01 + + 1 2 390 1.6705000000000000e+03 0 -1 391 + 2.5500000000000000e+01 -2 -3 392 4.8050000000000000e+02 + + 4.8974525928497314e-01 -5.1326960325241089e-01 + -5.8406698703765869e-01 1.3531610369682312e-01 + <_> + 1.2885004043579102e+01 + + 1 2 393 8.5000000000000000e+00 0 -1 394 + 4.1845000000000000e+03 -2 -3 395 1.3500000000000000e+01 + + -1.3101078569889069e-01 -8.4397506713867188e-01 + 3.3940505981445312e-01 -5.4651063680648804e-01 + <_> + 1.3153897285461426e+01 + + 1 2 396 5.5000000000000000e+00 0 -1 397 + 6.1950000000000000e+02 -2 -3 398 2.8500000000000000e+01 + + 1.9637145102024078e-01 -4.6468892693519592e-01 + 5.5541270971298218e-01 -1. + <_> + 1.3368961334228516e+01 + + 1 2 399 9.5000000000000000e+00 0 -1 400 + 1.5000000000000000e+00 -2 -3 401 5.1500000000000000e+01 + + 9.3293839693069458e-01 -8.3272749185562134e-01 + 2.1506418287754059e-01 -8.0539971590042114e-01 + <_> + 1.3012317657470703e+01 + + 1 2 402 5.5000000000000000e+00 0 -1 403 + 1.5000000000000000e+00 -2 -3 404 8.5000000000000000e+00 + + 7.4536651372909546e-01 -6.8645662069320679e-01 + 3.7242239713668823e-01 -3.5664358735084534e-01 + <_> + 1.3480623245239258e+01 + + 1 2 405 5.0000000000000000e-01 0 -1 406 + 5.5000000000000000e+00 -2 -3 407 1.2950000000000000e+02 + + -3.6363714933395386e-01 4.6830555796623230e-01 + -5.7222759723663330e-01 4.0735042095184326e-01 + <_> + 1.3696137428283691e+01 + + 1 2 408 5.0000000000000000e-01 0 -1 409 + 3.5500000000000000e+01 -2 -3 410 2.4750000000000000e+02 + + -8.6935847997665405e-01 6.8743604421615601e-01 + 2.1551388502120972e-01 -7.8673112392425537e-01 + <_> + 1.3721407890319824e+01 + + 1 2 411 3.8500000000000000e+01 0 -1 412 + 3.8150000000000000e+02 -2 -3 413 6.5000000000000000e+00 + + -5.6747698783874512e-01 8.5023626685142517e-02 + -7.0082569122314453e-01 6.5703827142715454e-01 + <_> + 1.3873306274414062e+01 + + 1 2 414 3.0435000000000000e+03 0 -1 415 29. -2 -3 416 83. + + 1.5189857780933380e-01 -9.3611216545104980e-01 + -9.5821422338485718e-01 6.5282088518142700e-01 + <_> + 1.4014303207397461e+01 + + 1 2 417 5.0000000000000000e-01 0 -1 418 + 5.5000000000000000e+00 -2 -3 419 2.8500000000000000e+01 + + -6.7168551683425903e-01 3.7073549628257751e-01 + -6.0920524597167969e-01 1.5500061213970184e-01 + <_> + 1.4489161491394043e+01 + + 1 2 420 1.0500000000000000e+01 0 -1 421 + 9.2500000000000000e+01 -2 -3 422 9.5000000000000000e+00 + + 4.7485816478729248e-01 -9.3795543909072876e-01 + -4.8096546530723572e-01 3.2066935300827026e-01 + <_> + 1.4712132453918457e+01 + + 1 2 423 5.6500000000000000e+01 0 -1 424 + 1.5500000000000000e+01 -2 -3 425 11. + + -5.4511427879333496e-01 2.2297111153602600e-01 + -9.3687444925308228e-01 9.3418681621551514e-01 + <_> + 1.4426413536071777e+01 + + 1 2 426 9.7450000000000000e+02 0 -1 427 + 8.3850000000000000e+02 -2 -3 428 127. + + 4.5185938477516174e-01 -2.0019924640655518e-01 + 2.9750302433967590e-01 -7.1074008941650391e-01 + <_> + 1.4523365974426270e+01 + + 1 2 429 3.0500000000000000e+01 0 -1 430 + 5.0000000000000000e-01 -2 -3 431 200. + + 9.6951834857463837e-02 -4.6191120147705078e-01 1. -1. + <_> + 1.4775473594665527e+01 + + 1 2 432 5.5000000000000000e+00 0 -1 433 + 3.8500000000000000e+01 -2 -3 434 34. + + -6.4820885658264160e-01 9.7515827417373657e-01 + -8.0702418088912964e-01 2.5210806727409363e-01 + <_> + 1.4361328125000000e+01 + + 1 2 435 9.5500000000000000e+01 0 -1 436 + 1.9250000000000000e+02 -2 -3 437 2.1500000000000000e+01 + + -5.9286040067672729e-01 3.2556504011154175e-01 + 2.8273129463195801e-01 -9.3379873037338257e-01 + <_> + 1.4586226463317871e+01 + + 1 2 438 3412. 0 -1 439 8.5000000000000000e+00 -2 -3 440 100. + + -4.1335216164588928e-01 2.2489830851554871e-01 + -9.9015569686889648e-01 1. + <_> + 1.5102481842041016e+01 + + 1 2 441 4.1150000000000000e+02 0 -1 442 + 5.0500000000000000e+01 -2 -3 443 3.0395000000000000e+03 + + -9.5133119821548462e-01 7.9551450908184052e-02 + 5.3846877813339233e-01 -1.1589291691780090e-01 + <_> + 1.5133154869079590e+01 + + 1 2 444 1.9265000000000000e+03 0 -1 445 + 5.0000000000000000e-01 -2 -3 446 1.0750000000000000e+02 + + 9.7796529531478882e-02 -4.9147978425025940e-01 + 5.6562197208404541e-01 -7.0251446962356567e-01 + <_> + 1.5480172157287598e+01 + + 1 2 447 7.0500000000000000e+01 0 -1 448 239. -2 -3 449 + 1.1755000000000000e+03 + + 4.4128131121397018e-02 -7.7577579021453857e-01 + 3.4701684117317200e-01 -8.5588878393173218e-01 + <_> + 1.5623726844787598e+01 + + 1 2 450 5.0000000000000000e-01 0 -1 451 33. -2 -3 452 + 5.7500000000000000e+01 + + -9.8123723268508911e-01 1. 1.4355540275573730e-01 + -7.0005464553833008e-01 + <_> + 1.5563958168029785e+01 + + 1 2 453 1.5000000000000000e+00 0 -1 454 + 2.8500000000000000e+01 -2 -3 455 47. + + -6.2908321619033813e-01 5.0617432594299316e-01 + -3.7233376502990723e-01 8.5267359018325806e-01 + <_> + 1.5404257774353027e+01 + + 1 2 456 4.1500000000000000e+01 0 -1 457 + 4.5000000000000000e+00 -2 -3 458 1.5000000000000000e+00 + + -9.4914859533309937e-01 9.4575625658035278e-01 + -3.8208422064781189e-01 1.9698897004127502e-01 + <_> + 1.6029253005981445e+01 + + 1 2 459 8.5000000000000000e+00 0 -1 460 + 3.6500000000000000e+01 -2 -3 461 5.5000000000000000e+00 + + -8.4917742013931274e-01 6.1574220657348633e-01 + 8.2632422447204590e-01 -3.3165588974952698e-02 + <_> + 1.5608561515808105e+01 + + 1 2 462 1.3500000000000000e+01 0 -1 463 + 5.3950000000000000e+02 -2 -3 464 5.5000000000000000e+00 + + -9.0597325563430786e-01 2.5814166665077209e-01 + -7.0283818244934082e-01 3.1022888422012329e-01 + <_> + 1.5827486038208008e+01 + + 1 2 465 2.5000000000000000e+00 0 -1 466 + 8.1500000000000000e+01 -2 -3 467 2.0550000000000000e+02 + + -8.6807721853256226e-01 1. 2.1892426908016205e-01 + -6.2899088859558105e-01 + <_> + 1.6221029281616211e+01 + + 1 2 468 8.9850000000000000e+02 0 -1 469 + 4.2050000000000000e+02 -2 -3 470 7.6450000000000000e+02 + + -3.1118813902139664e-02 -8.0856597423553467e-01 + 3.9354413747787476e-01 -7.0517486333847046e-01 + <_> + 1.6183372497558594e+01 + + 1 2 471 2.0545000000000000e+03 0 -1 472 + 2.5050000000000000e+02 -2 -3 473 4.4995000000000000e+03 + + 6.4125961065292358e-01 -8.5631817579269409e-01 + 7.6069533824920654e-01 -3.7658475339412689e-02 + <_> + 1.6466924667358398e+01 + + 1 2 474 7.5000000000000000e+00 0 -1 475 + 4.2895000000000000e+03 -2 -3 476 6.2950000000000000e+02 + + 8.1660963594913483e-02 -7.4422889947891235e-01 + 4.2579609155654907e-01 -4.2402768135070801e-01 + <_> + 1.6026039123535156e+01 + + 1 2 477 5.0000000000000000e-01 0 -1 478 + 1.8500000000000000e+01 -2 -3 479 4.4850000000000000e+02 + + -3.0789500474929810e-01 5.8823746442794800e-01 + -4.4998848438262939e-01 5.3471541404724121e-01 + <_> + 1.6353460311889648e+01 + + 1 2 480 7.6050000000000000e+02 0 -1 481 + 1.9250000000000000e+02 -2 -3 482 6.8500000000000000e+01 + + -6.1745387315750122e-01 9.0257441997528076e-01 + 3.2742044329643250e-01 -7.8960853815078735e-01 + <_> + 1.6734058380126953e+01 + + 1 2 483 2.5000000000000000e+00 0 -1 484 + 1.0500000000000000e+01 -2 -3 485 5.0000000000000000e-01 + + -5.9715515375137329e-01 8.1663769483566284e-01 + 5.2075517177581787e-01 -1.6225169599056244e-01 + <_> + 1.6345090866088867e+01 + + 1 2 486 1.1500000000000000e+01 0 -1 487 + 2.8500000000000000e+01 -2 -3 488 1.7150000000000000e+02 + + 3.0138874053955078e-01 -5.6442081928253174e-01 + 9.8830562829971313e-01 -6.2377959489822388e-01 + <_> + 1.6049247741699219e+01 + + 1 2 489 4.8500000000000000e+01 0 -1 490 + 4.5000000000000000e+00 -2 -3 491 15. + + 3.0436006188392639e-01 -2.9584380984306335e-01 + -9.3031573295593262e-01 8.9746475219726562e-01 + <_> + 1.6490245819091797e+01 + + 1 2 492 1.5500000000000000e+01 0 -1 493 + 1.0500000000000000e+01 -2 -3 494 1.5000000000000000e+00 + + 1.5252333879470825e-01 -6.3438588380813599e-01 + -4.9522089958190918e-01 4.4099876284599304e-01 + <_> + 1.7003578186035156e+01 + + 1 2 495 9.5500000000000000e+01 0 -1 496 + 4.8050000000000000e+02 -2 -3 497 8.8500000000000000e+01 + + -9.6510402858257294e-02 5.1333212852478027e-01 + -8.6270028352737427e-01 7.7527511119842529e-01 + <_> + 1.7326871871948242e+01 + + 1 2 498 5.4050000000000000e+02 0 -1 499 + 9.3500000000000000e+01 -2 -3 500 4075. + + 8.5396260023117065e-01 -4.0819042921066284e-01 + -8.7424677610397339e-01 -4.3737210333347321e-02 + <_> + 1.7417627334594727e+01 + + 1 2 501 4.5000000000000000e+00 0 -1 502 + 2.8565000000000000e+03 -2 -3 503 5.0000000000000000e-01 + + 3.1944847106933594e-01 -7.1486788988113403e-01 + 4.2967954277992249e-01 -7.0940160751342773e-01 + <_> + 1.7675552368164062e+01 + + 1 2 504 2.1500000000000000e+01 0 -1 505 + 3.5000000000000000e+00 -2 -3 506 3946. + + 5.1202677190303802e-02 -8.8791614770889282e-01 + -7.7767062187194824e-01 2.5792467594146729e-01 + <_> + 1.7575408935546875e+01 + + 1 2 507 9.5000000000000000e+00 0 -1 508 + 5.8450000000000000e+02 -2 -3 509 5.0000000000000000e-01 + + 1.6954909265041351e-01 -6.1507350206375122e-01 + -7.3153948783874512e-01 4.1231128573417664e-01 + <_> + 1.7513637542724609e+01 + + 1 2 510 2.7550000000000000e+02 0 -1 511 + 4.4650000000000000e+02 -2 -3 512 1.4500000000000000e+01 + + -6.8732649087905884e-01 9.6409857273101807e-01 + -3.7864384055137634e-01 3.5600626468658447e-01 + <_> + 1.7776586532592773e+01 + + 1 2 513 2.0075000000000000e+03 0 -1 514 + 5.5000000000000000e+00 -2 -3 515 118. + + -4.9108317494392395e-01 2.7656924724578857e-01 + -7.8876090049743652e-01 9.7231864929199219e-01 + <_> + 1.7636518478393555e+01 + + 1 2 516 1.1250000000000000e+02 0 -1 517 + 5.0000000000000000e-01 -2 -3 518 96. + + -6.6741842031478882e-01 2.0427951216697693e-01 + -8.4879159927368164e-01 7.6417601108551025e-01 + <_> + 1.7906213760375977e+01 + + 1 2 519 5.0000000000000000e-01 0 -1 520 + 5.5150000000000000e+02 -2 -3 521 2.5500000000000000e+01 + + -4.4012060761451721e-01 4.9110901355743408e-01 + -7.8305160999298096e-01 -7.4652910232543945e-02 + <_> + 1.7903791427612305e+01 + + 1 2 522 4.5000000000000000e+00 0 -1 523 43. -2 -3 524 + 5.0000000000000000e-01 + + 6.1665916442871094e-01 -7.0740306377410889e-01 + 4.7637423872947693e-01 -1.9755503535270691e-01 + <_> + 1.8408391952514648e+01 + + 1 2 525 5.0000000000000000e-01 0 -1 526 + 1.6500000000000000e+01 -2 -3 527 1.5000000000000000e+00 + + -8.8571590185165405e-01 6.4138215780258179e-01 + 5.0460076332092285e-01 -1.1802505701780319e-01 + <_> + 1.8595077514648438e+01 + + 1 2 528 5.8550000000000000e+02 0 -1 529 + 1.5000000000000000e+00 -2 -3 530 9. + + -6.1554092168807983e-01 1.8668572604656219e-01 + 6.6736525297164917e-01 -9.3229418992996216e-01 + <_> + 1.8598781585693359e+01 + + 1 2 531 1.0500000000000000e+01 0 -1 532 92. -2 -3 533 + 1.0500000000000000e+01 + + -8.5246169567108154e-01 6.4911514520645142e-01 + 7.2167778015136719e-01 -9.1329686343669891e-02 + <_> + 1.8938451766967773e+01 + + 1 2 534 1.9500000000000000e+01 0 -1 535 423. -2 -3 536 + 1.0500000000000000e+01 + + 1.0317068547010422e-01 -6.1221712827682495e-01 + 6.0012447834014893e-01 -5.8523362874984741e-01 + <_> + 1.8760560989379883e+01 + + 1 2 537 1.4500000000000000e+01 0 -1 538 + 8.0950000000000000e+02 -2 -3 539 2.6500000000000000e+01 + + 3.8693800568580627e-01 -4.4410958886146545e-01 + -1.4373737573623657e-01 6.0054707527160645e-01 + <_> + 1.8992055892944336e+01 + + 1 2 540 9.6050000000000000e+02 0 -1 541 + 5.0000000000000000e-01 -2 -3 542 4.2985000000000000e+03 + + 3.1399947404861450e-01 -4.3735453486442566e-01 + 5.6782770156860352e-01 -7.3470437526702881e-01 + <_> + 1.8955116271972656e+01 + + 1 2 543 3.5000000000000000e+00 0 -1 544 + 1.1500000000000000e+01 -2 -3 545 321. + + -8.4036970138549805e-01 6.5071582794189453e-01 + 2.5595465302467346e-01 -5.7423371076583862e-01 + <_> + 1.9468976974487305e+01 + + 1 2 546 8.6500000000000000e+01 0 -1 547 + 2.0500000000000000e+01 -2 -3 548 5.8500000000000000e+01 + + -4.5299276709556580e-01 6.0038709640502930e-01 + 4.3307629227638245e-01 -9.3825417757034302e-01 + <_> + 1.9293138504028320e+01 + + 1 2 549 4.7250000000000000e+02 0 -1 550 1323. -2 -3 551 + 5.9650000000000000e+02 + + 5.0125539302825928e-01 -7.2148317098617554e-01 + 2.1997858583927155e-01 -9.2881590127944946e-01 + <_> + 1.9323114395141602e+01 + + 1 2 552 1314. 0 -1 553 1.9850000000000000e+02 -2 -3 554 + 8.8500000000000000e+01 + + -6.5315421670675278e-03 -9.2719602584838867e-01 + -7.3869484663009644e-01 9.9385118484497070e-01 + <_> + 1.9764301300048828e+01 + + 1 2 555 1.5000000000000000e+00 0 -1 556 + 1.5000000000000000e+00 -2 -3 557 5.0000000000000000e-01 + + -9.3367540836334229e-01 7.1327829360961914e-01 + 4.4118791818618774e-01 -1.8068529665470123e-01 + <_> + 1.9636823654174805e+01 + + 1 2 558 1.0500000000000000e+01 0 -1 559 42. -2 -3 560 + 5.5000000000000000e+00 + + 6.9835877418518066e-01 -4.6136018633842468e-01 + 4.5605877041816711e-01 -4.3727838993072510e-01 + <_> + 1.9982168197631836e+01 + + 1 2 561 2.0995000000000000e+03 0 -1 562 + 2.3500000000000000e+01 -2 -3 563 6.4650000000000000e+02 + + -3.2764279842376709e-01 3.4534373879432678e-01 + -8.4930855035781860e-01 6.6431248188018799e-01 + <_> + 2.0156673431396484e+01 + + 1 2 564 4.7500000000000000e+01 0 -1 565 + 3.5000000000000000e+00 -2 -3 566 2. + + -8.3068168163299561e-01 1.7450474202632904e-01 1. + -9.4794863462448120e-01 + <_> + 2.0342718124389648e+01 + + 1 2 567 6.7050000000000000e+02 0 -1 568 + 3.8850000000000000e+02 -2 -3 569 2.5755000000000000e+03 + + -9.3422073125839233e-01 7.7690583467483521e-01 + 1.8604567646980286e-01 -6.9958645105361938e-01 + <_> + 2.0286355972290039e+01 + + 1 2 570 1.5000000000000000e+00 0 -1 571 + 7.5000000000000000e+00 -2 -3 572 5.0000000000000000e-01 + + -7.9801106452941895e-01 9.1817361116409302e-01 + 5.1868724822998047e-01 -1.3428531587123871e-01 + <_> + 2.0473787307739258e+01 + + 1 2 573 1.1500000000000000e+01 0 -1 574 + 6.5000000000000000e+00 -2 -3 575 4.7500000000000000e+01 + + -2.0607861876487732e-01 3.6932748556137085e-01 + 9.0319371223449707e-01 -7.2204840183258057e-01 + <_> + 2.0658784866333008e+01 + + 1 2 576 7.5000000000000000e+00 0 -1 577 3433. -2 -3 578 + 6.2500000000000000e+01 + + 1.9685469567775726e-01 -4.9899685382843018e-01 + -7.9635071754455566e-01 5.0583815574645996e-01 + <_> + 2.0441154479980469e+01 + + 1 2 579 5.0000000000000000e-01 0 -1 580 + 3.5000000000000000e+00 -2 -3 581 1.8500000000000000e+01 + + -5.8347612619400024e-01 4.0611305832862854e-01 + -5.7296335697174072e-01 2.9519164562225342e-01 + <_> + 2.0645282745361328e+01 + + 1 2 582 143. 0 -1 583 6.8650000000000000e+02 -2 -3 584 649. + + -6.6834068298339844e-01 2.0412844419479370e-01 + -9.8975163698196411e-01 1. + <_> + 2.0787359237670898e+01 + + 1 2 585 5.0000000000000000e-01 0 -1 586 + 1.1050000000000000e+02 -2 -3 587 2.1595000000000000e+03 + + -9.9584645032882690e-01 1. 1.4207656681537628e-01 + -7.9576474428176880e-01 + <_> + 2.0707267761230469e+01 + + 1 2 588 4.0500000000000000e+01 0 -1 589 + 5.0000000000000000e-01 -2 -3 590 4.0500000000000000e+01 + + 1.6863887012004852e-01 -7.4707168340682983e-01 + 2.8594267368316650e-01 -6.7254680395126343e-01 + <_> + 2.0992578506469727e+01 + + 1 2 591 1.5000000000000000e+00 0 -1 592 + 3.5775000000000000e+03 -2 -3 593 2.7500000000000000e+01 + + -5.0894987583160400e-01 3.7313565611839294e-01 + -6.0100066661834717e-01 6.3888049125671387e-01 + <_> + 2.0971927642822266e+01 + + 1 2 594 9.7950000000000000e+02 0 -1 595 + 2.5000000000000000e+00 -2 -3 596 1.2500000000000000e+01 + + -9.5684701204299927e-01 3.9113646745681763e-01 + -7.6442521810531616e-01 3.0187612865120173e-03 + <_> + 2.1057394027709961e+01 + + 1 2 597 1.4905000000000000e+03 0 -1 598 + 9.5000000000000000e+00 -2 -3 599 240. + + -6.4642834663391113e-01 2.3087054491043091e-01 + -7.9448556900024414e-01 7.0878070592880249e-01 + <_> + 2.1131835937500000e+01 + + 1 2 600 5.0000000000000000e-01 0 -1 601 + 1.1500000000000000e+01 -2 -3 602 1.2500000000000000e+01 + + 6.5756827592849731e-01 -4.2822453379631042e-01 + -5.9723109006881714e-01 7.4441045522689819e-02 + <_> + 2.1433628082275391e+01 + + 1 2 603 1.5000000000000000e+00 0 -1 604 + 7.5000000000000000e+00 -2 -3 605 3.5000000000000000e+00 + + -8.7854373455047607e-01 7.6638579368591309e-01 + 3.0179315805435181e-01 -3.0907711386680603e-01 + <_> + 2.1259273529052734e+01 + + 1 2 606 1.2500000000000000e+01 0 -1 607 + 1.1125000000000000e+03 -2 -3 608 1.1500000000000000e+01 + + 4.3398761749267578e-01 -1.8727415800094604e-01 + -8.8575565814971924e-01 1.4398224651813507e-01 + <_> + 2.1612953186035156e+01 + + 1 2 609 1.3315000000000000e+03 0 -1 610 + 4.0350000000000000e+02 -2 -3 611 6.3550000000000000e+02 + + 8.9413803815841675e-01 -6.8928855657577515e-01 + -6.9387888908386230e-01 3.5367938876152039e-01 + <_> + 2.1826734542846680e+01 + + 1 2 612 1.1500000000000000e+01 0 -1 613 738. -2 -3 614 + 1.4500000000000000e+01 + + 8.1296756863594055e-02 -5.6762868165969849e-01 + 6.0727953910827637e-01 -3.7829330563545227e-01 + <_> + 2.1813869476318359e+01 + + 1 2 615 6.5000000000000000e+00 0 -1 616 + 7.7500000000000000e+01 -2 -3 617 1.5000000000000000e+00 + + 2.1756103634834290e-01 -7.3381489515304565e-01 + -6.3975960016250610e-01 3.6597716808319092e-01 + <_> + 2.1798274993896484e+01 + + 1 2 618 9.8500000000000000e+01 0 -1 619 + 8.5000000000000000e+00 -2 -3 620 28. + + -8.9957195520401001e-01 -1.5594468452036381e-02 + 9.6554172039031982e-01 -1. + <_> + 2.2045146942138672e+01 + + 1 2 621 1.0500000000000000e+01 0 -1 622 + 1.2150000000000000e+02 -2 -3 623 7.5000000000000000e+00 + + 2.4687227606773376e-01 -6.0773706436157227e-01 + 6.2245130538940430e-01 -8.7604373693466187e-01 + <_> + 2.2289304733276367e+01 + + 1 2 624 2.1500000000000000e+01 0 -1 625 2144. -2 -3 626 + 5056. + + 7.7314263582229614e-01 -6.9932037591934204e-01 + 2.4415786564350128e-01 -8.8758051395416260e-01 + <_> + 2.2602016448974609e+01 + + 1 2 627 1.5000000000000000e+00 0 -1 628 + 5.0000000000000000e-01 -2 -3 629 8.1195000000000000e+03 + + -7.8916621208190918e-01 2.9944726824760437e-01 + -6.2123262882232666e-01 4.2162239551544189e-01 + <_> + 2.2234420776367188e+01 + + 1 2 630 1.3750000000000000e+02 0 -1 631 + 1.4500000000000000e+01 -2 -3 632 2.7050000000000000e+02 + + -7.3317313194274902e-01 4.4363144040107727e-01 + 7.8055197000503540e-01 -1.7540968954563141e-02 + <_> + 2.2243850708007812e+01 + + 1 2 633 2.2500000000000000e+01 0 -1 634 + 2.3085000000000000e+03 -2 -3 635 42. + + -3.4062522649765015e-01 3.7752479314804077e-01 + -7.3773044347763062e-01 9.6723818778991699e-01 + <_> + 2.2620014190673828e+01 + + 1 2 636 2.5450000000000000e+02 0 -1 637 1638. -2 -3 638 + 7.9500000000000000e+01 + + -1. 5.5116891860961914e-01 5.1822501420974731e-01 + -4.3004354834556580e-01 + <_> + 2.2705764770507812e+01 + + 1 2 639 8.0500000000000000e+01 0 -1 640 + 6.2500000000000000e+01 -2 -3 641 5.5000000000000000e+00 + + 4.8537842929363251e-02 -7.3003268241882324e-01 + -4.5735052227973938e-01 4.5716404914855957e-01 + <_> + 2.3073215484619141e+01 + + 1 2 642 5.0000000000000000e-01 0 -1 643 67. -2 -3 644 + 1.2500000000000000e+01 + + 4.7742471098899841e-01 -4.7727224230766296e-01 + -7.2737669944763184e-01 -3.9639626629650593e-03 + <_> + 2.2770978927612305e+01 + + 1 2 645 5.0000000000000000e-01 0 -1 646 + 3.4500000000000000e+01 -2 -3 647 2.5500000000000000e+01 + + -4.7273349761962891e-01 4.8523208498954773e-01 + -4.1221085190773010e-01 7.4450951814651489e-01 + <_> + 2.3053560256958008e+01 + + 1 2 648 5.8500000000000000e+01 0 -1 649 + 3.5000000000000000e+00 -2 -3 650 4091. + + -6.9219940900802612e-01 2.8258267045021057e-01 + -7.4919438362121582e-01 6.5003573894500732e-01 + <_> + 2.3276559829711914e+01 + + 1 2 651 5.6950000000000000e+02 0 -1 652 + 8.5000000000000000e+00 -2 -3 653 3477. + + -6.9101506471633911e-01 3.5786962509155273e-01 + 2.2299802303314209e-01 -9.4931131601333618e-01 + <_> + 2.3533079147338867e+01 + + 1 2 654 5.5000000000000000e+00 0 -1 655 332. -2 -3 656 + 8.5000000000000000e+00 + + -7.7509003877639771e-01 2.4864099919795990e-01 + -8.9089441299438477e-01 2.5652095675468445e-01 + <_> + 2.3692926406860352e+01 + + 1 2 657 179. 0 -1 658 6.5000000000000000e+00 -2 -3 659 + 2.8500000000000000e+01 + + -6.2848848104476929e-01 1.5984721481800079e-01 + -9.5576328039169312e-01 1. + <_> + 2.3690643310546875e+01 + + 1 2 660 6.5000000000000000e+00 0 -1 661 + 7.7150000000000000e+02 -2 -3 662 1.0650000000000000e+02 + + 5.1587861776351929e-01 -4.7098684310913086e-01 + -7.3770999908447266e-01 -2.2840783931314945e-03 + <_> + 2.3260368347167969e+01 + + 1 2 663 8.2500000000000000e+01 0 -1 664 495. -2 -3 665 + 7.5000000000000000e+00 + + 2.7576848864555359e-01 -4.3027460575103760e-01 + -8.6191612482070923e-01 8.7688070535659790e-01 + <_> + 2.3660942077636719e+01 + + 1 2 666 1.7500000000000000e+01 0 -1 667 + 1.0865000000000000e+03 -2 -3 668 2.0250000000000000e+02 + + 4.7176504135131836e-01 -5.2642983198165894e-01 + 4.0057408809661865e-01 -8.7875026464462280e-01 + <_> + 2.4066463470458984e+01 + + 1 2 669 5.0000000000000000e-01 0 -1 670 + 1.5000000000000000e+00 -2 -3 671 4.7075000000000000e+03 + + -6.6087967157363892e-01 4.0552178025245667e-01 + -6.2758755683898926e-01 1.0652454942464828e-01 + <_> + 2.4266839981079102e+01 + + 1 2 672 2.0350000000000000e+02 0 -1 673 + 2.5000000000000000e+00 -2 -3 674 39. + + 2.8337255120277405e-01 -3.3040466904640198e-01 + -9.6718847751617432e-01 1. + <_> + 2.4499465942382812e+01 + + 1 2 675 4.5000000000000000e+00 0 -1 676 + 8.5500000000000000e+01 -2 -3 677 2.9500000000000000e+01 + + 2.5911253690719604e-01 -9.6787214279174805e-01 + -6.9402277469635010e-01 5.6080824136734009e-01 + <_> + 2.4309822082519531e+01 + + 1 2 678 1971. 0 -1 679 1.9250000000000000e+02 -2 -3 680 + 6.5000000000000000e+00 + + -2.1612957119941711e-01 4.7077748179435730e-01 -1. 1. + <_> + 2.4519950866699219e+01 + + 1 2 681 2.5000000000000000e+00 0 -1 682 + 6.4500000000000000e+01 -2 -3 683 5182. + + -8.2460224628448486e-01 8.7737298011779785e-01 + 2.1012841165065765e-01 -8.8150328397750854e-01 + <_> + 2.4720569610595703e+01 + + 1 2 684 1.3650000000000000e+02 0 -1 685 25. -2 -3 686 + 1.3500000000000000e+01 + + -8.2181477546691895e-01 9.6672326326370239e-01 + -5.3705835342407227e-01 2.0061893761157990e-01 + <_> + 2.4895112991333008e+01 + + 1 2 687 5.6150000000000000e+02 0 -1 688 + 2.2500000000000000e+01 -2 -3 689 5.3500000000000000e+01 + + 3.6230182647705078e-01 -4.9504366517066956e-01 + -7.3248720169067383e-01 2.2656767070293427e-01 + <_> + 2.5140346527099609e+01 + + 1 2 690 8.2750000000000000e+02 0 -1 691 + 2.0500000000000000e+01 -2 -3 692 1.4500000000000000e+01 + + 1. -7.5348693132400513e-01 2.4523276090621948e-01 + -7.0938748121261597e-01 + <_> + 2.5441709518432617e+01 + + 1 2 693 5.5500000000000000e+01 0 -1 694 107. -2 -3 695 1485. + + -9.0809267759323120e-01 3.3544850349426270e-01 + 3.0136233568191528e-01 -5.6638139486312866e-01 + <_> + 2.5376996994018555e+01 + + 1 2 696 8.6950000000000000e+02 0 -1 697 + 7.9550000000000000e+02 -2 -3 698 2.1500000000000000e+01 + + 7.4912220239639282e-01 -3.0485934019088745e-01 + -7.2537702322006226e-01 7.1400356292724609e-01 + <_> + 2.5612064361572266e+01 + + 1 2 699 5.5000000000000000e+00 0 -1 700 138. -2 -3 701 116. + + -7.7075809240341187e-01 3.9907371997833252e-01 + 2.3506735265254974e-01 -8.8968700170516968e-01 + <_> + 2.5189540863037109e+01 + + 1 2 702 5.0000000000000000e-01 0 -1 703 + 6.5000000000000000e+00 -2 -3 704 3.8450000000000000e+02 + + -8.5147231817245483e-01 5.4190635681152344e-01 + -4.4539606571197510e-01 2.2795633971691132e-01 + <_> + 2.5407213211059570e+01 + + 1 2 705 3.3500000000000000e+01 0 -1 706 + 1.1500000000000000e+01 -2 -3 707 1901. + + -7.7322483062744141e-01 2.1767215430736542e-01 + 9.4849103689193726e-01 -8.7567967176437378e-01 + <_> + 2.5786802291870117e+01 + + 1 2 708 8.5000000000000000e+00 0 -1 709 + 2.5000000000000000e+00 -2 -3 710 8.5000000000000000e+00 + + -7.5751757621765137e-01 3.7958872318267822e-01 + -4.7660508751869202e-01 4.8092725872993469e-01 + <_> + 2.5473979949951172e+01 + + 1 2 711 1.5000000000000000e+00 0 -1 712 + 7.4500000000000000e+01 -2 -3 713 5.7500000000000000e+01 + + 2.9737165570259094e-01 -8.2402235269546509e-01 + -6.5980869531631470e-01 6.1398154497146606e-01 + <_> + 2.5540870666503906e+01 + + 1 2 714 3.7350000000000000e+02 0 -1 715 + 2.9505000000000000e+03 -2 -3 716 9.5000000000000000e+00 + + -6.5127277374267578e-01 6.5197062492370605e-01 + -6.7328959703445435e-01 1.1752647906541824e-01 + <_> + 2.5936344146728516e+01 + + 1 2 717 2.8050000000000000e+02 0 -1 718 + 8.2650000000000000e+02 -2 -3 719 1.5500000000000000e+01 + + -5.2938359975814819e-01 3.9547443389892578e-01 + -5.2698332071304321e-01 4.4910645484924316e-01 + <_> + 2.6225696563720703e+01 + + 1 2 720 1.9500000000000000e+01 0 -1 721 + 2.5000000000000000e+00 -2 -3 722 1.4500000000000000e+01 + + 1.6689567267894745e-01 -7.3722118139266968e-01 + -9.5677989721298218e-01 2.8935295343399048e-01 + <_> + 2.6555488586425781e+01 + + 1 2 723 2.5000000000000000e+00 0 -1 724 + 1.2500000000000000e+01 -2 -3 725 1631. + + 4.2182460427284241e-01 -3.9694768190383911e-01 + 4.5795905590057373e-01 -6.3281345367431641e-01 + <_> + 2.6691946029663086e+01 + + 1 2 726 3.5000000000000000e+00 0 -1 727 21. -2 -3 728 + 4.6085000000000000e+03 + + -9.2932611703872681e-01 7.4499356746673584e-01 + -7.0849519968032837e-01 1.8352256715297699e-01 + <_> + 2.6950445175170898e+01 + + 1 2 729 1.4500000000000000e+01 0 -1 730 4. -2 -3 731 + 1.0350000000000000e+02 + + -7.1716350317001343e-01 9.3681764602661133e-01 + 2.5849872827529907e-01 -4.7314143180847168e-01 + <_> + 2.6939081192016602e+01 + + 1 2 732 1.5000000000000000e+00 0 -1 733 + 2.0795000000000000e+03 -2 -3 734 7.5000000000000000e+00 + + 2.1902434527873993e-01 -4.7005906701087952e-01 + -8.4192562103271484e-01 4.5465546846389771e-01 + <_> + 2.7115922927856445e+01 + + 1 2 735 1.6195000000000000e+03 0 -1 736 + 4.0500000000000000e+01 -2 -3 737 1.4615000000000000e+03 + + -8.8821536302566528e-01 9.0963160991668701e-01 + 1.7684206366539001e-01 -9.4462066888809204e-01 + <_> + 2.6933712005615234e+01 + + 1 2 738 7.6500000000000000e+01 0 -1 739 + 2.5000000000000000e+00 -2 -3 740 5.8500000000000000e+01 + + -6.7025911808013916e-01 5.9105753898620605e-01 + -6.4823073148727417e-01 6.9816927425563335e-03 + <_> + 2.7318225860595703e+01 + + 1 2 741 1.0500000000000000e+01 0 -1 742 + 6.5000000000000000e+00 -2 -3 743 5.0000000000000000e-01 + + -9.2393940687179565e-01 4.3340095877647400e-01 + 2.4541635811328888e-01 -5.6279599666595459e-01 + <_> + 2.7502586364746094e+01 + + 1 2 744 1.3500000000000000e+01 0 -1 745 + 1.2225000000000000e+03 -2 -3 746 5.4150000000000000e+02 + + 5.5172622203826904e-01 -7.2232311964035034e-01 + 4.6869617700576782e-01 -1.8173764646053314e-01 + <_> + 2.7214946746826172e+01 + + 1 2 747 1.4150000000000000e+02 0 -1 748 + 3.7950000000000000e+02 -2 -3 749 61. + + -4.1489991545677185e-01 2.9794070124626160e-01 + -8.2065957784652710e-01 8.2294362783432007e-01 + <_> + 2.7621316909790039e+01 + + 1 2 750 1.1500000000000000e+01 0 -1 751 + 4.5000000000000000e+00 -2 -3 752 1.5500000000000000e+01 + + -7.9229009151458740e-01 6.2740081548690796e-01 + -1.7920996248722076e-01 4.1656208038330078e-01 + <_> + 2.7612428665161133e+01 + + 1 2 753 5.0000000000000000e-01 0 -1 754 + 2.8500000000000000e+01 -2 -3 755 4.5000000000000000e+00 + + 3.2633483409881592e-01 -8.3926248550415039e-01 + -5.7256150245666504e-01 4.7886747121810913e-01 + <_> + 2.7621551513671875e+01 + + 1 2 756 3.9500000000000000e+01 0 -1 757 + 4.5000000000000000e+00 -2 -3 758 4.6500000000000000e+01 + + -7.9190528392791748e-01 7.2100400924682617e-01 + -6.1043661832809448e-01 2.2514465451240540e-01 + <_> + 2.7723453521728516e+01 + + 1 2 759 1.6500000000000000e+01 0 -1 760 + 4.4500000000000000e+01 -2 -3 761 2.6500000000000000e+01 + + 2.8901249170303345e-01 -6.9448781013488770e-01 + -6.7865383625030518e-01 2.3160243034362793e-01 + <_> + 2.7726175308227539e+01 + + 1 2 762 1.7575000000000000e+03 0 -1 763 + 4.8150000000000000e+02 -2 -3 764 1.5000000000000000e+00 + + -1.7173323035240173e-01 5.9590691328048706e-01 1. + -9.7047579288482666e-01 + <_> + 2.7928655624389648e+01 + + 1 2 765 4.5000000000000000e+00 0 -1 766 + 1.0065000000000000e+03 -2 -3 767 5.5000000000000000e+00 + + 2.0247912406921387e-01 -7.2847056388854980e-01 + -7.9157161712646484e-01 8.0997580289840698e-01 + <_> + 2.7728637695312500e+01 + + 1 2 768 1.0500000000000000e+01 0 -1 769 + 4.5115000000000000e+03 -2 -3 770 1.7500000000000000e+01 + + 4.2019289731979370e-01 -5.3036731481552124e-01 + 1.8375186249613762e-02 7.1707320213317871e-01 + <_> + 2.7544672012329102e+01 + + 1 2 771 5.0000000000000000e-01 0 -1 772 + 6.5000000000000000e+00 -2 -3 773 141. + + -7.9169616103172302e-02 7.2869366407394409e-01 + -4.0235754847526550e-01 7.5083994865417480e-01 + <_> + 2.7790304183959961e+01 + + 1 2 774 4.9500000000000000e+01 0 -1 775 + 5.5500000000000000e+01 -2 -3 776 2.6500000000000000e+01 + + 2.4563054740428925e-01 -7.8368049860000610e-01 + -8.9967381954193115e-01 5.1768815517425537e-01 + <_> + 2.8035869598388672e+01 + + 1 2 777 2.5000000000000000e+00 0 -1 778 + 6.5000000000000000e+00 -2 -3 779 2.7450000000000000e+02 + + -7.9386472702026367e-01 8.1500089168548584e-01 + 2.4556700885295868e-01 -4.2904964089393616e-01 + <_> + 2.8410558700561523e+01 + + 1 2 780 8.0500000000000000e+01 0 -1 781 + 1.6500000000000000e+01 -2 -3 782 5.4050000000000000e+02 + + 1.7172537744045258e-01 -6.2181609869003296e-01 + -8.8481485843658447e-01 3.7468841671943665e-01 + <_> + 2.8699789047241211e+01 + + 1 2 783 2.9785000000000000e+03 0 -1 784 + 2.5000000000000000e+00 -2 -3 785 1.5435000000000000e+03 + + -4.2753055691719055e-01 2.8923121094703674e-01 + -6.7698192596435547e-01 6.4550709724426270e-01 + <_> + 2.8761243820190430e+01 + + 1 2 786 5.0000000000000000e-01 0 -1 787 + 5.0000000000000000e-01 -2 -3 788 737. + + -6.4694476127624512e-01 6.8557661771774292e-01 + -3.9006941020488739e-02 -8.6166292428970337e-01 + <_> + 2.8647882461547852e+01 + + 1 2 789 6.7500000000000000e+01 0 -1 790 + 5.5000000000000000e+00 -2 -3 791 7. + + 1.9915813207626343e-01 -3.6753433942794800e-01 + 9.2020016908645630e-01 -9.4368237257003784e-01 + <_> + 2.8875740051269531e+01 + + 1 2 792 1.9135000000000000e+03 0 -1 793 + 1.1050000000000000e+02 -2 -3 794 4.5000000000000000e+00 + + 7.2780048847198486e-01 -8.9423495531082153e-01 + -8.4068304300308228e-01 2.2785744071006775e-01 + <_> + 2.9072935104370117e+01 + + 1 2 795 2.5000000000000000e+00 0 -1 796 + 5.5000000000000000e+00 -2 -3 797 1.2500000000000000e+01 + + -8.2929813861846924e-01 7.2042435407638550e-01 + 1.9719591736793518e-01 -5.5431854724884033e-01 + <_> + 2.9138673782348633e+01 + + 1 2 798 1.0050000000000000e+02 0 -1 799 + 1.5000000000000000e+00 -2 -3 800 1.4500000000000000e+01 + + -2.4678048491477966e-01 3.4682708978652954e-01 + -9.5431810617446899e-01 4.5664411783218384e-01 + <_> + 2.9052175521850586e+01 + + 1 2 801 5.0000000000000000e-01 0 -1 802 + 1.5000000000000000e+00 -2 -3 803 6.0500000000000000e+01 + + -9.4168990850448608e-02 7.1325784921646118e-01 + -5.5271577835083008e-01 1.8420556187629700e-01 + <_> + 2.9330022811889648e+01 + + 1 2 804 3.8150000000000000e+02 0 -1 805 + 2.2500000000000000e+01 -2 -3 806 1.4250000000000000e+02 + + -5.2190852165222168e-01 5.3806591033935547e-01 + 4.2104244232177734e-01 -7.3786729574203491e-01 + <_> + 2.9613933563232422e+01 + + 1 2 807 3400. 0 -1 808 6.5000000000000000e+00 -2 -3 809 65. + + -7.2601109743118286e-01 2.8390964865684509e-01 + -7.5218343734741211e-01 8.2199627161026001e-01 + <_> + 2.9662286758422852e+01 + + 1 2 810 3.5500000000000000e+01 0 -1 811 + 4.5000000000000000e+00 -2 -3 812 1.9895000000000000e+03 + + 4.8528853058815002e-01 -4.5970219373703003e-01 + 5.2159059047698975e-01 -3.5259509086608887e-01 + <_> + 3.0010950088500977e+01 + + 1 2 813 3.7500000000000000e+01 0 -1 814 + 1.5000000000000000e+00 -2 -3 815 1.5000000000000000e+00 + + -3.6858716607093811e-01 3.4866285324096680e-01 + 5.0721812248229980e-01 -7.1738111972808838e-01 + <_> + 3.0259206771850586e+01 + + 1 2 816 5.0000000000000000e-01 0 -1 817 + 1.5000000000000000e+00 -2 -3 818 9.5000000000000000e+00 + + -8.2673883438110352e-01 2.4825666844844818e-01 + -6.8298560380935669e-01 5.7589280605316162e-01 + <_> + 3.0020807266235352e+01 + + 1 2 819 83. 0 -1 820 1.0535000000000000e+03 -2 -3 821 + 8.5000000000000000e+00 + + 8.0070614814758301e-01 -2.3839974403381348e-01 + -9.7618216276168823e-01 8.3897125720977783e-01 + <_> + 2.9989406585693359e+01 + + 1 2 822 1.8950000000000000e+02 0 -1 823 + 1.1500000000000000e+01 -2 -3 824 9.4350000000000000e+02 + + -7.3252147436141968e-01 8.0616372823715210e-01 + 6.4727967977523804e-01 -3.1400017440319061e-02 + <_> + 3.0537582397460938e+01 + + 1 2 825 137. 0 -1 826 1.2500000000000000e+01 -2 -3 827 + 1.0500000000000000e+01 + + 2.7069351077079773e-01 -5.2906340360641479e-01 + -6.5592831373214722e-01 6.3111066818237305e-01 + <_> + 3.0424352645874023e+01 + + 1 2 828 3.5000000000000000e+00 0 -1 829 + 5.2500000000000000e+01 -2 -3 830 4.6925000000000000e+03 + + -5.9484475851058960e-01 9.3662506341934204e-01 + -1.9616512954235077e-01 5.3609508275985718e-01 + <_> + 3.0629121780395508e+01 + + 1 2 831 5.6500000000000000e+01 0 -1 832 + 1.4500000000000000e+01 -2 -3 833 1.3250000000000000e+02 + + -5.8516901731491089e-01 2.3027215898036957e-01 1. + -9.8997932672500610e-01 + <_> + 3.0788936614990234e+01 + + 1 2 834 3.5000000000000000e+00 0 -1 835 + 6.5350000000000000e+02 -2 -3 836 11093. + + -9.8764348030090332e-01 4.6165758371353149e-01 + 1.5981569886207581e-01 -6.9765907526016235e-01 + <_> + 3.1141653060913086e+01 + + 1 2 837 4.5000000000000000e+00 0 -1 838 + 4.1450000000000000e+02 -2 -3 839 4.6500000000000000e+01 + + -4.2362187057733536e-02 -7.4213159084320068e-01 + 4.0540441870689392e-01 -7.6012396812438965e-01 + <_> + 3.0861505508422852e+01 + + 1 2 840 5.0000000000000000e-01 0 -1 841 + 5.6050000000000000e+02 -2 -3 842 2.1500000000000000e+01 + + -3.3283695578575134e-01 4.4167187809944153e-01 + -6.5066546201705933e-01 1.7719769477844238e-01 + <_> + 3.1108386993408203e+01 + + 1 2 843 6.5000000000000000e+00 0 -1 844 + 1.6500000000000000e+01 -2 -3 845 1.7550000000000000e+02 + + -5.6530058383941650e-01 3.4583663940429688e-01 + 4.2246490716934204e-01 -4.7493830323219299e-01 + <_> + 3.0905292510986328e+01 + + 1 2 846 5.0000000000000000e-01 0 -1 847 + 5.0000000000000000e-01 -2 -3 848 7.9500000000000000e+01 + + -9.8497194051742554e-01 6.4031112194061279e-01 + 2.4801021814346313e-01 -3.7024465203285217e-01 + <_> + 3.1213197708129883e+01 + + 1 2 849 5.5000000000000000e+00 0 -1 850 + 4.7500000000000000e+01 -2 -3 851 1.5000000000000000e+00 + + 7.6301777362823486e-01 -6.2367314100265503e-01 + -6.4380615949630737e-01 3.0790489912033081e-01 + <_> + 3.1416584014892578e+01 + + 1 2 852 4.3500000000000000e+01 0 -1 853 + 1.0075000000000000e+03 -2 -3 854 5.2500000000000000e+01 + + 2.0338761806488037e-01 -6.1455827951431274e-01 + -7.8569060564041138e-01 9.5953434705734253e-01 + <_> + 3.1777565002441406e+01 + + 1 2 855 6.0500000000000000e+01 0 -1 856 + 8.5000000000000000e+00 -2 -3 857 36. + + -8.4394145011901855e-01 -3.6948818713426590e-02 -1. + 7.5613290071487427e-01 + <_> + 3.1868429183959961e+01 + + 1 2 858 1.0995000000000000e+03 0 -1 859 + 1.5000000000000000e+00 -2 -3 860 5.0000000000000000e-01 + + 6.7010629177093506e-01 -8.0424994230270386e-01 + 3.4220331907272339e-01 -2.0251852273941040e-01 + <_> + 3.2119094848632812e+01 + + 1 2 861 1.2500000000000000e+01 0 -1 862 + 3.1500000000000000e+01 -2 -3 863 3.9500000000000000e+01 + + -8.0597108602523804e-01 8.6892396211624146e-01 + 2.5066429376602173e-01 -6.2346094846725464e-01 + <_> + 3.2155685424804688e+01 + + 1 2 864 1.8950000000000000e+02 0 -1 865 57. -2 -3 866 + 2.5500000000000000e+01 + + -5.4910677671432495e-01 1. 3.7413713335990906e-01 + -2.5834947824478149e-01 + <_> + 3.2015361785888672e+01 + + 1 2 867 1.3550000000000000e+02 0 -1 868 + 5.2750000000000000e+02 -2 -3 869 1.7500000000000000e+01 + + -7.7796685695648193e-01 6.6702580451965332e-01 + -4.7787085175514221e-01 1.4796376228332520e-01 + <_> + 3.1791172027587891e+01 + + 1 2 870 1.0500000000000000e+01 0 -1 871 + 1.5000000000000000e+00 -2 -3 872 1.5000000000000000e+00 + + -2.8536421060562134e-01 4.9085628986358643e-01 + -6.3147133588790894e-01 1.6832475364208221e-01 + <_> + 3.1905895233154297e+01 + + 1 2 873 1.5000000000000000e+00 0 -1 874 42. -2 -3 875 + 9.5000000000000000e+00 + + 3.4199193120002747e-01 -8.8441103696823120e-01 + -1.7228755354881287e-01 4.5159018039703369e-01 + <_> + 3.1859363555908203e+01 + + 1 2 876 5.0000000000000000e-01 0 -1 877 + 2.5500000000000000e+01 -2 -3 878 9.4550000000000000e+02 + + 5.9279948472976685e-01 -2.5542417168617249e-01 + 4.9418550729751587e-01 -4.7456571459770203e-01 + <_> + 3.2239162445068359e+01 + + 1 2 879 5.3500000000000000e+01 0 -1 880 + 4.5000000000000000e+00 -2 -3 881 4.5000000000000000e+00 + + 7.3520237207412720e-01 -6.6513210535049438e-01 + -3.7311753630638123e-01 3.7980049848556519e-01 + <_> + 3.2603000640869141e+01 + + 1 2 882 8.3850000000000000e+02 0 -1 883 + 8.6500000000000000e+01 -2 -3 884 9.5000000000000000e+00 + + -1.6610033810138702e-01 5.5568897724151611e-01 + 2.8593140840530396e-01 -8.1610012054443359e-01 + <_> + 3.2873931884765625e+01 + + 1 2 885 9.5000000000000000e+00 0 -1 886 + 1.4150000000000000e+02 -2 -3 887 4.8500000000000000e+01 + + 2.7093270421028137e-01 -5.1437872648239136e-01 + 8.1497925519943237e-01 -7.3167830705642700e-01 + <_> + 3.2916114807128906e+01 + + 1 2 888 6.7250000000000000e+02 0 -1 889 + 2.5500000000000000e+01 -2 -3 890 9.5000000000000000e+00 + + 2.9060255736112595e-02 -6.9740939140319824e-01 + -6.7421448230743408e-01 4.8431751132011414e-01 + <_> + 3.3245323181152344e+01 + + 1 2 891 1.0500000000000000e+01 0 -1 892 + 8.6500000000000000e+01 -2 -3 893 6.5000000000000000e+00 + + -6.1663192510604858e-01 4.0390256047248840e-01 + -6.7292958498001099e-01 3.2920929789543152e-01 + <_> + 3.3257518768310547e+01 + + 1 2 894 5.0000000000000000e-01 0 -1 895 + 9.5500000000000000e+01 -2 -3 896 5.0000000000000000e-01 + + 3.6125457286834717e-01 -7.1330851316452026e-01 + 5.2750295400619507e-01 -5.3229171037673950e-01 + <_> + 3.3523788452148438e+01 + + 1 2 897 9.5000000000000000e+00 0 -1 898 + 1.5500000000000000e+01 -2 -3 899 4.3650000000000000e+02 + + 7.4386167526245117e-01 -9.6170389652252197e-01 + 3.7622943520545959e-01 -2.1613618731498718e-01 + <_> + 3.3737613677978516e+01 + + 1 2 900 3.5000000000000000e+00 0 -1 901 + 8.5000000000000000e+00 -2 -3 902 2199. + + -6.8732953071594238e-01 4.9332359433174133e-01 + 2.2702258825302124e-01 -9.8770850896835327e-01 + <_> + 3.3653835296630859e+01 + + 1 2 903 1.1500000000000000e+01 0 -1 904 + 7.5000000000000000e+00 -2 -3 905 2.7050000000000000e+02 + + -4.7830480337142944e-01 4.9322032928466797e-01 + -5.1515823602676392e-01 3.1019908189773560e-01 + <_> + 3.3810070037841797e+01 + + 1 2 906 6.5000000000000000e+00 0 -1 907 + 1.0500000000000000e+01 -2 -3 908 867. + + 3.3138540387153625e-01 -2.6744303107261658e-01 + -9.2749148607254028e-01 1. + <_> + 3.4129577636718750e+01 + + 1 2 909 1.6500000000000000e+01 0 -1 910 + 5.3050000000000000e+02 -2 -3 911 1781. + + 6.7194348573684692e-01 -6.2229406833648682e-01 + -7.0593923330307007e-01 3.7362939119338989e-01 + <_> + 3.3717624664306641e+01 + + 1 2 912 5.5000000000000000e+00 0 -1 913 + 5.6550000000000000e+02 -2 -3 914 3.7550000000000000e+02 + + -6.5654790401458740e-01 3.5677254199981689e-01 + 4.5081639289855957e-01 -6.4122611284255981e-01 + <_> + 3.3252494812011719e+01 + + 1 2 915 2.8150000000000000e+02 0 -1 916 + 1.9775000000000000e+03 -2 -3 917 4.4500000000000000e+01 + + 6.7867177724838257e-01 -6.4670372009277344e-01 + -4.6513071656227112e-01 2.1713301539421082e-01 + <_> + 3.3488639831542969e+01 + + 1 2 918 6.2500000000000000e+01 0 -1 919 + 3.5000000000000000e+00 -2 -3 920 1.7500000000000000e+01 + + -7.6731938123703003e-01 2.3614448308944702e-01 + -9.4595444202423096e-01 5.4001647233963013e-01 + <_> + 3.3984142303466797e+01 + + 1 2 921 3.5000000000000000e+00 0 -1 922 + 1.2050000000000000e+02 -2 -3 923 7.5000000000000000e+00 + + -3.0896291136741638e-01 5.7216274738311768e-01 + -6.0472279787063599e-01 4.7352880239486694e-02 + <_> + 3.4265426635742188e+01 + + 1 2 924 1.5000000000000000e+00 0 -1 925 + 2.6150000000000000e+02 -2 -3 926 9.0500000000000000e+01 + + 9.4074803590774536e-01 -6.7150580883026123e-01 + 2.8128537535667419e-01 -4.7385811805725098e-01 + <_> + 3.4247104644775391e+01 + + 1 2 927 5.1875000000000000e+03 0 -1 928 + 1.5000000000000000e+00 -2 -3 929 113. + + -7.9879760742187500e-01 1.5954677760601044e-01 + -9.7634953260421753e-01 6.6887116432189941e-01 + <_> + 3.4600574493408203e+01 + + 1 2 930 2.2945000000000000e+03 0 -1 931 + 3.4500000000000000e+01 -2 -3 932 1.1745000000000000e+03 + + 5.7989984750747681e-01 -4.9893951416015625e-01 + 3.5346877574920654e-01 -8.6138629913330078e-01 + <_> + 3.4355884552001953e+01 + + 1 2 933 2.3500000000000000e+01 0 -1 934 + 2.4500000000000000e+01 -2 -3 935 12. + + -2.4468979239463806e-01 6.1856859922409058e-01 + -9.5042270421981812e-01 8.5911560058593750e-01 + <_> + 3.4614818572998047e+01 + + 1 2 936 1.5000000000000000e+00 0 -1 937 + 4.5000000000000000e+00 -2 -3 938 1.1500000000000000e+01 + + -1.4536230266094208e-01 5.7274234294891357e-01 + -5.6978869438171387e-01 2.8933158516883850e-01 + <_> + 3.5054538726806641e+01 + + 1 2 939 7.5000000000000000e+00 0 -1 940 + 1.6500000000000000e+01 -2 -3 941 1.1500000000000000e+01 + + -9.2453199625015259e-01 4.3971973657608032e-01 + -5.6862127780914307e-01 2.2281785309314728e-01 + <_> + 3.5190509796142578e+01 + + 1 2 942 4.1500000000000000e+01 0 -1 943 + 8.5000000000000000e+00 -2 -3 944 1.1500000000000000e+01 + + -3.6428368091583252e-01 2.7655857801437378e-01 + 6.2536644935607910e-01 -1. + <_> + 3.5339462280273438e+01 + + 1 2 945 6.5000000000000000e+00 0 -1 946 + 1.9750000000000000e+02 -2 -3 947 3.5125000000000000e+03 + + 5.1457303762435913e-01 -5.4887962341308594e-01 + 2.5784909725189209e-01 -9.8039388656616211e-01 + <_> + 3.5533813476562500e+01 + + 1 2 948 2.7350000000000000e+02 0 -1 949 + 2.5000000000000000e+00 -2 -3 950 8.3950000000000000e+02 + + 4.3505680561065674e-01 -8.3620321750640869e-01 + 4.0167236328125000e-01 -2.1417175233364105e-01 + <_> + 3.5286861419677734e+01 + + 1 2 951 1.9050000000000000e+02 0 -1 952 + 1.8500000000000000e+01 -2 -3 953 5.8500000000000000e+01 + + -5.6316858530044556e-01 8.5937762260437012e-01 + 2.4829907715320587e-01 -9.5569574832916260e-01 + <_> + 3.5315326690673828e+01 + + 1 2 954 7.5000000000000000e+00 0 -1 955 + 6.8050000000000000e+02 -2 -3 956 2.7500000000000000e+01 + + -4.6678465604782104e-01 2.5904402136802673e-01 + -9.3793350458145142e-01 5.7032090425491333e-01 + <_> + 3.5714458465576172e+01 + + 1 2 957 4.3085000000000000e+03 0 -1 958 + 2.5000000000000000e+00 -2 -3 959 1.4750000000000000e+02 + + -4.9067273736000061e-01 3.9913412928581238e-01 + -5.7273352146148682e-01 4.2018249630928040e-01 + <_> + 3.5729091644287109e+01 + + 1 2 960 6.5500000000000000e+01 0 -1 961 + 1.0500000000000000e+01 -2 -3 962 5.0000000000000000e-01 + + 2.8838535770773888e-02 -7.4135571718215942e-01 + -8.2152175903320312e-01 5.0204771757125854e-01 + <_> + 3.5779636383056641e+01 + + 1 2 963 2.5000000000000000e+00 0 -1 964 + 5.3500000000000000e+01 -2 -3 965 5.2500000000000000e+01 + + 2.3911122977733612e-01 -9.5493316650390625e-01 + -7.1501338481903076e-01 6.6445010900497437e-01 + <_> + 3.5980289459228516e+01 + + 1 2 966 1.5000000000000000e+00 0 -1 967 + 4.2500000000000000e+01 -2 -3 968 9.9950000000000000e+02 + + 6.1156451702117920e-01 -8.5420590639114380e-01 + 2.0065380632877350e-01 -5.1614391803741455e-01 + <_> + 3.6252574920654297e+01 + + 1 2 969 2.5000000000000000e+00 0 -1 970 + 1.9465000000000000e+03 -2 -3 971 2.0500000000000000e+01 + + -3.4459114074707031e-02 -7.7200150489807129e-01 + 2.9512012004852295e-01 -8.9226943254470825e-01 + <_> + 3.6439735412597656e+01 + + 1 2 972 1.5000000000000000e+00 0 -1 973 41. -2 -3 974 + 5.0500000000000000e+01 + + -9.8086458444595337e-01 8.0683439970016479e-01 + 1.8715959787368774e-01 -5.6646823883056641e-01 + <_> + 3.6728237152099609e+01 + + 1 2 975 3.3500000000000000e+01 0 -1 976 + 9.7885000000000000e+03 -2 -3 977 1.2500000000000000e+01 + + -4.9251038581132889e-02 -9.2625564336776733e-01 + 2.8850206732749939e-01 -5.4534864425659180e-01 + <_> + 3.6843887329101562e+01 + + 1 2 978 2.6500000000000000e+01 0 -1 979 + 1.4500000000000000e+01 -2 -3 980 7.5000000000000000e+00 + + 2.1858909726142883e-01 -3.4160664677619934e-01 + -9.6077054738998413e-01 7.7676713466644287e-01 + <_> + 3.7005241394042969e+01 + + 1 2 981 2.1500000000000000e+01 0 -1 982 + 3.3450000000000000e+02 -2 -3 983 1.1500000000000000e+01 + + 2.9156139120459557e-02 -8.7990653514862061e-01 + -7.2488045692443848e-01 2.2520579397678375e-01 + <_> + 3.6797657012939453e+01 + + 1 2 984 2.6475000000000000e+03 0 -1 985 + 4.2500000000000000e+01 -2 -3 986 8.1550000000000000e+02 + + 2.2682635486125946e-01 -8.1636387109756470e-01 + 6.6246122121810913e-01 -3.4295175224542618e-02 + <_> + 3.6713920593261719e+01 + + 1 2 987 9.6500000000000000e+01 0 -1 988 548. -2 -3 989 + 2.8955000000000000e+03 + + -8.1589114665985107e-01 1. -4.9650618433952332e-01 + 2.2634685039520264e-01 + <_> + 3.6771007537841797e+01 + + 1 2 990 5.0000000000000000e-01 0 -1 991 249. -2 -3 992 + 1.0500000000000000e+01 + + -7.4486887454986572e-01 5.6141883134841919e-01 + 5.7086039334535599e-02 -6.7521327733993530e-01 + <_> + 3.6969486236572266e+01 + + 1 2 993 5.0000000000000000e-01 0 -1 994 + 1.6500000000000000e+01 -2 -3 995 4.8500000000000000e+01 + + -7.2038865089416504e-01 3.5195854306221008e-01 + -4.7452071309089661e-01 7.8814119100570679e-01 + <_> + 3.6943496704101562e+01 + + 1 2 996 3.9950000000000000e+02 0 -1 997 + 1.5405000000000000e+03 -2 -3 998 6.3500000000000000e+01 + + -8.0016517639160156e-01 5.9141719341278076e-01 + -3.4474676847457886e-01 6.8918299674987793e-01 + <_> + 3.7024951934814453e+01 + + 1 2 999 7.5000000000000000e+00 0 -1 1000 738. -2 -3 1001 + 1765. + + 3.1489616632461548e-01 -4.8600602149963379e-01 + 5.3129523992538452e-01 -9.4068831205368042e-01 + <_> + 3.7521724700927734e+01 + + 1 2 1002 9.5000000000000000e+00 0 -1 1003 + 5.0000000000000000e-01 -2 -3 1004 3.8500000000000000e+01 + + 9.6219047904014587e-02 -4.7555413842201233e-01 + -4.6840333938598633e-01 7.9850405454635620e-01 + <_> + 3.7506668090820312e+01 + + 1 2 1005 1.2500000000000000e+01 0 -1 1006 + 1.1350000000000000e+02 -2 -3 1007 1.5000000000000000e+00 + + 2.4384462833404541e-01 -7.9862087965011597e-01 + -6.7412167787551880e-01 3.3874267339706421e-01 + <_> + 3.7641517639160156e+01 + + 1 2 1008 2.7850000000000000e+02 0 -1 1009 + 3.5000000000000000e+00 -2 -3 1010 3.1500000000000000e+01 + + -1.3609230518341064e-01 5.3063559532165527e-01 + -8.7772625684738159e-01 7.2040528059005737e-01 + <_> + 3.7946544647216797e+01 + + 1 2 1011 5.6250000000000000e+02 0 -1 1012 + 5.2650000000000000e+02 -2 -3 1013 1.5000000000000000e+00 + + -9.3572378158569336e-01 3.0502891540527344e-01 + 2.3100011050701141e-01 -6.1786937713623047e-01 + <_> + 3.7772045135498047e+01 + + 1 2 1014 7.6500000000000000e+01 0 -1 1015 1948. -2 -3 1016 + 1.2550000000000000e+02 + + -2.9692053794860840e-01 2.9227754473686218e-01 + -9.4186556339263916e-01 5.1589274406433105e-01 + <_> + 3.8073352813720703e+01 + + 1 2 1017 5.0000000000000000e-01 0 -1 1018 + 2.5000000000000000e+00 -2 -3 1019 5.5000000000000000e+00 + + -9.8587775230407715e-01 3.0130937695503235e-01 + -6.3859581947326660e-01 1.3170623779296875e-01 + <_> + 3.8058353424072266e+01 + + 1 2 1020 5.0000000000000000e-01 0 -1 1021 + 1.5000000000000000e+00 -2 -3 1022 7.2500000000000000e+01 + + -3.0776679515838623e-01 6.3595312833786011e-01 + 3.3159428834915161e-01 -4.0336602926254272e-01 + <_> + 3.8315082550048828e+01 + + 1 2 1023 2.6950000000000000e+02 0 -1 1024 1298. -2 -3 1025 + 1.5225000000000000e+03 + + -1. 7.2444880008697510e-01 -7.8231662511825562e-01 + 9.5456495881080627e-02 + <_> + 3.8383270263671875e+01 + + 1 2 1026 1.0500000000000000e+01 0 -1 1027 + 1.5000000000000000e+00 -2 -3 1028 4.0500000000000000e+01 + + 1.3500446081161499e-01 -6.9345575571060181e-01 + 3.7562793493270874e-01 -4.0624493360519409e-01 + <_> + 3.8140323638916016e+01 + + 1 2 1029 6.5000000000000000e+00 0 -1 1030 + 6.5000000000000000e+00 -2 -3 1031 2.1965000000000000e+03 + + -6.0527449846267700e-01 3.4614467620849609e-01 + -6.4750307798385620e-01 4.4139349460601807e-01 + <_> + 3.8629760742187500e+01 + + 1 2 1032 1.4500000000000000e+01 0 -1 1033 + 1.0500000000000000e+01 -2 -3 1034 5.5000000000000000e+00 + + 3.3208198146894574e-05 -6.7700278759002686e-01 + -4.2626798152923584e-01 4.8943847417831421e-01 + <_> + 3.8434696197509766e+01 + + 1 2 1035 5.0000000000000000e-01 0 -1 1036 + 4.5000000000000000e+00 -2 -3 1037 5.0000000000000000e-01 + + -7.7417689561843872e-01 4.2846640944480896e-01 + 1.6088682413101196e-01 -5.3463542461395264e-01 + <_> + 3.8620567321777344e+01 + + 1 2 1038 8.6450000000000000e+02 0 -1 1039 + 6.8500000000000000e+01 -2 -3 1040 3.0500000000000000e+01 + + 1.8587091565132141e-01 -8.0341529846191406e-01 + -9.0581631660461426e-01 6.2018626928329468e-01 + <_> + 3.8751430511474609e+01 + + 1 2 1041 5.0000000000000000e-01 0 -1 1042 40. -2 -3 1043 + 1.5500000000000000e+01 + + -9.9494683742523193e-01 1. -7.1019542217254639e-01 + 1.3086341321468353e-01 + <_> + 3.8754238128662109e+01 + + 1 2 1044 6.1500000000000000e+01 0 -1 1045 + 5.0000000000000000e-01 -2 -3 1046 2.6500000000000000e+01 + + 3.2929298281669617e-01 -2.4671530723571777e-01 + -8.9316487312316895e-01 1. + <_> + 3.8761310577392578e+01 + + 1 2 1047 1.3750000000000000e+02 0 -1 1048 + 2.8450000000000000e+02 -2 -3 1049 5.0000000000000000e-01 + + -6.3021671772003174e-01 6.5008687973022461e-01 + 5.3065407276153564e-01 -7.9354740679264069e-02 + <_> + 3.8665718078613281e+01 + + 1 2 1050 4.5000000000000000e+00 0 -1 1051 + 3.5500000000000000e+01 -2 -3 1052 9.5000000000000000e+00 + + 5.4490387439727783e-01 -7.6202434301376343e-01 + -9.5591522753238678e-02 4.8457166552543640e-01 + <_> + 3.8905593872070312e+01 + + 1 2 1053 1.7595000000000000e+03 0 -1 1054 + 8.0650000000000000e+02 -2 -3 1055 1001. + + 8.4819895029067993e-01 1.0978246107697487e-02 + -5.8034777641296387e-01 9.6708601713180542e-01 + <_> + 3.9178741455078125e+01 + + 1 2 1056 3.3500000000000000e+01 0 -1 1057 43. -2 -3 1058 + 1.1255000000000000e+03 + + 6.2076139450073242e-01 -7.7601081132888794e-01 + -6.3608288764953613e-01 2.7314889430999756e-01 + <_> + 3.9557754516601562e+01 + + 1 2 1059 2861. 0 -1 1060 1.1500000000000000e+01 -2 -3 1061 + 1059. + + -2.0063874125480652e-01 3.7901291251182556e-01 + -8.7469154596328735e-01 9.3417149782180786e-01 + <_> + 3.9383140563964844e+01 + + 1 2 1062 7.5000000000000000e+00 0 -1 1063 + 3.3500000000000000e+01 -2 -3 1064 6.8250000000000000e+02 + + -3.3701553940773010e-01 6.6878622770309448e-01 + -9.3165141344070435e-01 5.6623113155364990e-01 + <_> + 3.9584621429443359e+01 + + 1 2 1065 4.5500000000000000e+01 0 -1 1066 + 2.5000000000000000e+00 -2 -3 1067 39. + + -8.5348236560821533e-01 2.0148001611232758e-01 + -8.4665966033935547e-01 8.2120579481124878e-01 + <_> + 3.9753597259521484e+01 + + 1 2 1068 2.5000000000000000e+00 0 -1 1069 + 1.5000000000000000e+00 -2 -3 1070 3.5000000000000000e+00 + + -7.8533732891082764e-01 1.9851887226104736e-01 + 4.4824355840682983e-01 -8.0207723379135132e-01 + <_> + 3.9658565521240234e+01 + + 1 2 1071 5.0000000000000000e-01 0 -1 1072 + 1.3915000000000000e+03 -2 -3 1073 1.0500000000000000e+01 + + -4.5468831062316895e-01 3.6562988162040710e-01 + -6.3887000083923340e-01 2.2883546352386475e-01 + <_> + 4.0061527252197266e+01 + + 1 2 1074 5.4650000000000000e+02 0 -1 1075 + 1.3805000000000000e+03 -2 -3 1076 1.0500000000000000e+01 + + -3.7776118516921997e-01 7.9691213369369507e-01 + -6.4302068948745728e-01 4.0739435702562332e-02 + <_> + 4.0449691772460938e+01 + + 1 2 1077 1.3450000000000000e+02 0 -1 1078 3817. -2 -3 1079 + 4.5000000000000000e+00 + + -1. 7.2753727436065674e-01 -8.8736426830291748e-01 + -3.0436256900429726e-02 + <_> + 4.0686050415039062e+01 + + 1 2 1080 3.1500000000000000e+01 0 -1 1081 + 1.6815000000000000e+03 -2 -3 1082 2.5050000000000000e+02 + + 2.3635797202587128e-01 -7.1006488800048828e-01 + -7.7740561962127686e-01 9.4275683164596558e-01 + <_> + 4.0749511718750000e+01 + + 1 2 1083 2.7500000000000000e+01 0 -1 1084 + 2.3500000000000000e+01 -2 -3 1085 1.2500000000000000e+01 + + 6.0146540403366089e-01 -8.0582934617996216e-01 + 3.4961447119712830e-01 -3.5682681202888489e-01 + <_> + 4.0645175933837891e+01 + + 1 2 1086 1.2850000000000000e+02 0 -1 1087 + 1.1500000000000000e+01 -2 -3 1088 2.6500000000000000e+01 + + -4.3760350346565247e-01 3.2760843634605408e-01 + -7.3312211036682129e-01 4.6505972743034363e-01 + <_> + 4.0557418823242188e+01 + + 1 2 1089 668. 0 -1 1090 1.2850000000000000e+02 -2 -3 1091 + 8.7500000000000000e+01 + + 1.1236543208360672e-01 -5.2818536758422852e-01 + -6.8129932880401611e-01 7.0479619503021240e-01 + <_> + 4.0783546447753906e+01 + + 1 2 1092 5.1805000000000000e+03 0 -1 1093 + 4.9500000000000000e+01 -2 -3 1094 2.9500000000000000e+01 + + -4.0594160556793213e-01 3.0208334326744080e-01 + -9.6733921766281128e-01 6.8550550937652588e-01 + <_> + 4.1171627044677734e+01 + + 1 2 1095 7.7500000000000000e+01 0 -1 1096 + 5.0000000000000000e-01 -2 -3 1097 1128. + + 3.8808169960975647e-01 -2.2138407826423645e-01 + -9.7971081733703613e-01 6.8063849210739136e-01 + <_> + 4.1380584716796875e+01 + + 1 2 1098 3.5000000000000000e+00 0 -1 1099 + 4.5000000000000000e+00 -2 -3 1100 1.6550000000000000e+02 + + -8.3179295063018799e-01 8.2458907365798950e-01 + 2.0895628631114960e-01 -6.7757499217987061e-01 + <_> + 4.0977642059326172e+01 + + 1 2 1101 2.6500000000000000e+01 0 -1 1102 + 7.5000000000000000e+00 -2 -3 1103 2.8500000000000000e+01 + + -6.7902231216430664e-01 9.0440295636653900e-02 + 4.5262795686721802e-01 -7.6736658811569214e-01 + <_> + 4.1636299133300781e+01 + + 1 2 1104 8.7150000000000000e+02 0 -1 1105 + 4.8485000000000000e+03 -2 -3 1106 3.3500000000000000e+01 + + 6.8487727642059326e-01 -2.6508599519729614e-01 + -5.6632518768310547e-01 3.0040073394775391e-01 + <_> + 4.1346435546875000e+01 + + 1 2 1107 1.9350000000000000e+02 0 -1 1108 + 5.0500000000000000e+01 -2 -3 1109 1.1775000000000000e+03 + + -3.1608226895332336e-01 6.0885083675384521e-01 + 6.4473861455917358e-01 -8.5411310195922852e-01 + <_> + 4.1030853271484375e+01 + + 1 2 1110 1.5000000000000000e+00 0 -1 1111 + 1.3445000000000000e+03 -2 -3 1112 5.8550000000000000e+02 + + -6.3746362924575806e-01 3.1320965290069580e-01 + -7.2444945573806763e-01 7.5097692012786865e-01 + <_> + 4.1470043182373047e+01 + + 1 2 1113 9.5000000000000000e+00 0 -1 1114 + 2.5000000000000000e+00 -2 -3 1115 2.5000000000000000e+00 + + 4.0508642792701721e-01 -5.0676339864730835e-01 + -8.5707956552505493e-01 4.3919247388839722e-01 + <_> + 4.1580162048339844e+01 + + 1 2 1116 5.7350000000000000e+02 0 -1 1117 + 5.5000000000000000e+00 -2 -3 1118 21. + + -5.1867526769638062e-01 2.3890317976474762e-01 + -8.0498754978179932e-01 1. + <_> + 4.1684749603271484e+01 + + 1 2 1119 9.5000000000000000e+00 0 -1 1120 + 4.7850000000000000e+02 -2 -3 1121 2.1500000000000000e+01 + + 1.0458730161190033e-01 -6.2516999244689941e-01 + -5.9976857900619507e-01 5.1749521493911743e-01 + <_> + 4.1494934082031250e+01 + + 1 2 1122 2.0050000000000000e+02 0 -1 1123 + 2.0500000000000000e+01 -2 -3 1124 6.4500000000000000e+01 + + -3.9138877391815186e-01 2.6315033435821533e-01 + -9.6982121467590332e-01 6.5220332145690918e-01 + <_> + 4.1932003021240234e+01 + + 1 2 1125 1.5000000000000000e+00 0 -1 1126 + 3.5000000000000000e+00 -2 -3 1127 5.0000000000000000e-01 + + -4.0265578031539917e-01 7.8519123792648315e-01 + 2.0901374518871307e-01 -4.3665331602096558e-01 + <_> + 4.1868026733398438e+01 + + 1 2 1128 1.6455000000000000e+03 0 -1 1129 + 1.5000000000000000e+00 -2 -3 1130 1.2425000000000000e+03 + + 7.5446349382400513e-01 -8.0549776554107666e-01 + 6.0434514284133911e-01 -6.3975110650062561e-02 + <_> + 4.2400360107421875e+01 + + 1 2 1131 7.5000000000000000e+00 0 -1 1132 + 6.3500000000000000e+01 -2 -3 1133 5.7650000000000000e+02 + + 5.2017074823379517e-01 -6.9113534688949585e-01 + -1.6708745062351227e-01 5.3233259916305542e-01 + <_> + 4.2345855712890625e+01 + + 1 2 1134 8.5000000000000000e+00 0 -1 1135 + 3.5000000000000000e+00 -2 -3 1136 1.8650000000000000e+02 + + -5.4506361484527588e-02 -7.8135180473327637e-01 + -6.1452972888946533e-01 5.3269100189208984e-01 + <_> + 4.2633274078369141e+01 + + 1 2 1137 2.0500000000000000e+01 0 -1 1138 + 5.6750000000000000e+02 -2 -3 1139 2.9915000000000000e+03 + + 6.6543561220169067e-01 -8.5652673244476318e-01 + 2.8741911053657532e-01 -4.7586393356323242e-01 + <_> + 4.2798049926757812e+01 + + 1 2 1140 9.5000000000000000e+00 0 -1 1141 + 4.9500000000000000e+01 -2 -3 1142 4.5000000000000000e+00 + + 1.6477760672569275e-01 -8.1512105464935303e-01 + -9.8834317922592163e-01 3.6259099841117859e-01 + <_> + 4.2601398468017578e+01 + + 1 2 1143 3.5000000000000000e+00 0 -1 1144 + 1.4500000000000000e+01 -2 -3 1145 2.6500000000000000e+01 + + 4.9031403660774231e-01 -6.7174017429351807e-01 + -6.2569665908813477e-01 3.0628502368927002e-01 + <_> + 4.3207866668701172e+01 + + 1 2 1146 5.0000000000000000e-01 0 -1 1147 338. -2 -3 1148 + 4.7500000000000000e+01 + + 6.0646677017211914e-01 -1.1136221885681152e-01 + -4.9581399559974670e-01 9.1770052909851074e-01 + <_> + 4.3436904907226562e+01 + + 1 2 1149 6.2500000000000000e+01 0 -1 1150 + 1.1500000000000000e+01 -2 -3 1151 6.5000000000000000e+00 + + -6.3020032644271851e-01 2.2903984785079956e-01 + 6.9111466407775879e-01 -9.2438864707946777e-01 + <_> + 4.3182262420654297e+01 + + 1 2 1152 2.4825000000000000e+03 0 -1 1153 + 1.8500000000000000e+01 -2 -3 1154 6.5000000000000000e+00 + + 8.8887816667556763e-01 -7.8725290298461914e-01 + -2.5464150309562683e-01 3.7431335449218750e-01 + <_> + 4.3620674133300781e+01 + + 1 2 1155 2.0895000000000000e+03 0 -1 1156 + 1.0500000000000000e+01 -2 -3 1157 7.1150000000000000e+02 + + 4.3995714187622070e-01 -5.2159392833709717e-01 + -6.2963652610778809e-01 1.1316129565238953e-01 + <_> + 4.3773460388183594e+01 + + 1 2 1158 5.0000000000000000e-01 0 -1 1159 21. -2 -3 1160 + 2647. + + -9.9163711071014404e-01 1. 1.5278881788253784e-01 + -8.0924803018569946e-01 + <_> + 4.3756889343261719e+01 + + 1 2 1161 9.5000000000000000e+00 0 -1 1162 + 1.5285000000000000e+03 -2 -3 1163 2.0500000000000000e+01 + + -7.3516172170639038e-01 -3.3198025077581406e-02 + 4.5004144310951233e-01 -4.9410822987556458e-01 + <_> + 4.3972312927246094e+01 + + 1 2 1164 1.5000000000000000e+00 0 -1 1165 + 1.2500000000000000e+01 -2 -3 1166 4.6250000000000000e+02 + + -8.7030416727066040e-01 1. 6.6300249099731445e-01 + -5.0532888621091843e-02 + <_> + 4.3980846405029297e+01 + + 1 2 1167 1.1500000000000000e+01 0 -1 1168 + 1.5000000000000000e+00 -2 -3 1169 9.5000000000000000e+00 + + 8.9238695800304413e-02 -6.6063672304153442e-01 + -2.1645425260066986e-01 5.4061800241470337e-01 + <_> + 4.4120399475097656e+01 + + 1 2 1170 1.4550000000000000e+02 0 -1 1171 515. -2 -3 1172 + 66. + + -8.7580627202987671e-01 1.3955466449260712e-01 1. -1. + <_> + 4.4321346282958984e+01 + + 1 2 1173 1.2500000000000000e+01 0 -1 1174 + 1.5500000000000000e+01 -2 -3 1175 6.5000000000000000e+00 + + -9.3138593435287476e-01 2.0094390213489532e-01 + -7.9345691204071045e-01 1.3270631432533264e-01 + <_> + 4.4408035278320312e+01 + + 1 2 1176 9.4500000000000000e+01 0 -1 1177 29. -2 -3 1178 + 1.5500000000000000e+01 + + 6.2725901603698730e-01 -5.2600252628326416e-01 + -6.2553745508193970e-01 1.1460914462804794e-01 + <_> + 4.3909595489501953e+01 + + 1 2 1179 6.5000000000000000e+00 0 -1 1180 + 9.7500000000000000e+01 -2 -3 1181 1.5000000000000000e+00 + + -8.3142787218093872e-01 6.9267946481704712e-01 + 4.8009446263313293e-01 -1.2805593013763428e-01 + <_> + 4.4367984771728516e+01 + + 1 2 1182 1.3500000000000000e+01 0 -1 1183 + 7.5000000000000000e+00 -2 -3 1184 5.1500000000000000e+01 + + -7.8150177001953125e-01 6.1593282222747803e-01 + 2.3517456650733948e-01 -8.9078408479690552e-01 + <_> + 4.4526245117187500e+01 + + 1 2 1185 8.1450000000000000e+02 0 -1 1186 27. -2 -3 1187 + 4.3250000000000000e+02 + + -9.6226990222930908e-01 1. 1.5826153755187988e-01 + -6.0127079486846924e-01 + <_> + 4.4509689331054688e+01 + + 1 2 1188 1.7050000000000000e+02 0 -1 1189 + 1.0350000000000000e+02 -2 -3 1190 17. + + -1.7409811913967133e-01 4.0153789520263672e-01 + -9.9094009399414062e-01 1. + <_> + 4.4416912078857422e+01 + + 1 2 1191 5.0000000000000000e-01 0 -1 1192 + 8.5000000000000000e+00 -2 -3 1193 1.9985000000000000e+03 + + -1. 5.3445392847061157e-01 -9.2778779566287994e-02 + -9.9271869659423828e-01 + <_> + 4.4893375396728516e+01 + + 1 2 1194 1.5755000000000000e+03 0 -1 1195 21. -2 -3 1196 + 2.2815000000000000e+03 + + 9.8664927482604980e-01 -1. -6.5728956460952759e-01 + 5.1687292754650116e-02 + <_> + 4.4958042144775391e+01 + + 1 2 1197 979. 0 -1 1198 3.5000000000000000e+00 -2 -3 1199 + 3.3450000000000000e+02 + + 6.4667396247386932e-02 -6.2298679351806641e-01 + 8.3257365226745605e-01 -3.2351174950599670e-01 + <_> + 4.5219623565673828e+01 + + 1 2 1200 2.5000000000000000e+00 0 -1 1201 + 4.5000000000000000e+00 -2 -3 1202 1.1250000000000000e+02 + + -8.0651080608367920e-01 7.8795516490936279e-01 + 2.6158225536346436e-01 -5.9016484022140503e-01 + <_> + 4.4823062896728516e+01 + + 1 2 1203 7.4850000000000000e+02 0 -1 1204 + 3.2500000000000000e+01 -2 -3 1205 697. + + 2.2503770887851715e-01 -3.9656233787536621e-01 + 9.5161718130111694e-01 -2.1432246267795563e-01 + <_> + 4.5530910491943359e+01 + + 1 2 1206 5.4750000000000000e+02 0 -1 1207 + 9.5000000000000000e+00 -2 -3 1208 4752. + + -7.8124099969863892e-01 7.0784658193588257e-01 + -9.6436911821365356e-01 3.5836692899465561e-02 + <_> + 4.5428401947021484e+01 + + 1 2 1209 1.5000000000000000e+00 0 -1 1210 + 1.5500000000000000e+01 -2 -3 1211 1.9455000000000000e+03 + + -1.0250826925039291e-01 5.4916018247604370e-01 + -2.6177955791354179e-02 -9.2129987478256226e-01 + <_> + 4.5787826538085938e+01 + + 1 2 1212 4.5850000000000000e+02 0 -1 1213 + 5.0000000000000000e-01 -2 -3 1214 1.5000000000000000e+00 + + -9.0581798553466797e-01 4.0218245983123779e-01 + -7.4334120750427246e-01 1.0166406631469727e-01 + <_> + 4.5805335998535156e+01 + + 1 2 1215 5.0000000000000000e-01 0 -1 1216 + 2.8965000000000000e+03 -2 -3 1217 1.4500000000000000e+01 + + 3.4860813617706299e-01 -9.2187440395355225e-01 + -5.3543245792388916e-01 5.3708320856094360e-01 + <_> + 4.5891948699951172e+01 + + 1 2 1218 4.2750000000000000e+02 0 -1 1219 + 1.1500000000000000e+01 -2 -3 1220 60. + + 5.4364776611328125e-01 -2.4448615312576294e-01 -1. + 9.3761330842971802e-01 + <_> + 4.6113231658935547e+01 + + 1 2 1221 2.9650000000000000e+02 0 -1 1222 + 3.5500000000000000e+01 -2 -3 1223 2.5000000000000000e+00 + + -8.3336704969406128e-01 -4.9441725015640259e-02 + -7.4142539501190186e-01 5.5442851781845093e-01 + <_> + 4.6227504730224609e+01 + + 1 2 1224 4.1500000000000000e+01 0 -1 1225 + 3.3065000000000000e+03 -2 -3 1226 3870. + + -6.0971248149871826e-01 2.4518391489982605e-01 + -9.2852658033370972e-01 6.7098820209503174e-01 + <_> + 4.6052734375000000e+01 + + 1 2 1227 7.3150000000000000e+02 0 -1 1228 + 6.8500000000000000e+01 -2 -3 1229 7.5000000000000000e+00 + + -3.0568072199821472e-01 2.9724195599555969e-01 + 6.0229831933975220e-01 -9.3976968526840210e-01 + <_> + 4.6391059875488281e+01 + + 1 2 1230 3941. 0 -1 1231 5.4500000000000000e+01 -2 -3 1232 + 1.7855000000000000e+03 + + 3.3832329511642456e-01 -7.9758453369140625e-01 + -6.3498198986053467e-01 6.3038891553878784e-01 + <_> + 4.6504837036132812e+01 + + 1 2 1233 5.0000000000000000e-01 0 -1 1234 + 7.5000000000000000e+00 -2 -3 1235 1501. + + -7.7365416288375854e-01 4.6874764561653137e-01 + -3.5823148488998413e-01 7.9656225442886353e-01 + <_> + 4.6372001647949219e+01 + + 1 2 1236 2.5500000000000000e+01 0 -1 1237 + 1.6500000000000000e+01 -2 -3 1238 5.0000000000000000e-01 + + 4.6493071317672729e-01 -7.0740276575088501e-01 + -4.8780402541160583e-01 3.7291622161865234e-01 + <_> + 4.6678596496582031e+01 + + 1 2 1239 7.9415000000000000e+03 0 -1 1240 + 5.0000000000000000e-01 -2 -3 1241 1.1500000000000000e+01 + + -8.2436817884445190e-01 3.0659627914428711e-01 + -6.5948170423507690e-01 4.5055055618286133e-01 + <_> + 4.6238845825195312e+01 + + 1 2 1242 1.9500000000000000e+01 0 -1 1243 + 8.5000000000000000e+00 -2 -3 1244 6.5500000000000000e+01 + + -6.7113763093948364e-01 2.0902428030967712e-01 + -7.2488105297088623e-01 1. + <_> + 4.6537197113037109e+01 + + 1 2 1245 2.8450000000000000e+02 0 -1 1246 + 4.5000000000000000e+00 -2 -3 1247 1.7550000000000000e+02 + + -6.7054611444473267e-01 8.2255226373672485e-01 + 2.9835110902786255e-01 -5.9376603364944458e-01 + <_> + 4.6529403686523438e+01 + + 1 2 1248 4.2500000000000000e+01 0 -1 1249 + 2.0500000000000000e+01 -2 -3 1250 1.8500000000000000e+01 + + -7.7904900535941124e-03 -8.1963479518890381e-01 + -5.0779378414154053e-01 4.3727734684944153e-01 + <_> + 4.6744403839111328e+01 + + 1 2 1251 4.5000000000000000e+00 0 -1 1252 + 2.8650000000000000e+02 -2 -3 1253 4.5000000000000000e+00 + + -1.9674304127693176e-01 4.5696255564689636e-01 + 7.9865179955959320e-02 -8.0503857135772705e-01 + <_> + 4.6963691711425781e+01 + + 1 2 1254 4.0250000000000000e+02 0 -1 1255 + 1.7045000000000000e+03 -2 -3 1256 5.0000000000000000e-01 + + -5.5684739351272583e-01 7.6402020454406738e-01 + -7.6276898384094238e-01 -2.2674866020679474e-02 + <_> + 4.6687553405761719e+01 + + 1 2 1257 5.0000000000000000e-01 0 -1 1258 + 1.1455000000000000e+03 -2 -3 1259 1.4500000000000000e+01 + + -3.6084955930709839e-01 8.0332660675048828e-01 + -2.7614063024520874e-01 4.3000274896621704e-01 + <_> + 4.6964260101318359e+01 + + 1 2 1260 3.5500000000000000e+01 0 -1 1261 + 6.5000000000000000e+00 -2 -3 1262 1.9950000000000000e+02 + + -5.5664390325546265e-01 2.7670648694038391e-01 + -8.6526918411254883e-01 1. + <_> + 4.7102539062500000e+01 + + 1 2 1263 5.3500000000000000e+01 0 -1 1264 + 1.0075000000000000e+03 -2 -3 1265 4.5000000000000000e+00 + + -9.8485064506530762e-01 7.1059340238571167e-01 + -4.6985602378845215e-01 1.3827921450138092e-01 + <_> + 4.6816654205322266e+01 + + 1 2 1266 2.3500000000000000e+01 0 -1 1267 + 9.5000000000000000e+00 -2 -3 1268 2.5000000000000000e+00 + + 2.5332915782928467e-01 -7.9585695266723633e-01 + -2.8588473796844482e-01 3.4832224249839783e-01 + <_> + 4.7195682525634766e+01 + + 1 2 1269 5.0000000000000000e-01 0 -1 1270 + 4.6605000000000000e+03 -2 -3 1271 3.5250000000000000e+02 + + 3.7902894616127014e-01 -8.4313845634460449e-01 + 1.3045331835746765e-01 -5.6578201055526733e-01 + <_> + 4.7464088439941406e+01 + + 1 2 1272 2.1500000000000000e+01 0 -1 1273 + 5.0000000000000000e-01 -2 -3 1274 242. + + 1.3412712514400482e-01 -7.8316122293472290e-01 + 2.6840490102767944e-01 -7.1992039680480957e-01 + <_> + 4.7629711151123047e+01 + + 1 2 1275 2.5000000000000000e+00 0 -1 1276 + 7.4500000000000000e+01 -2 -3 1277 1.0750000000000000e+02 + + -8.3254098892211914e-01 9.2741733789443970e-01 + 1.6562341153621674e-01 -9.0677899122238159e-01 + <_> + 4.7230899810791016e+01 + + 1 2 1278 5.0000000000000000e-01 0 -1 1279 + 1.5000000000000000e+00 -2 -3 1280 789. + + -4.9992504715919495e-01 4.5887079834938049e-01 + 7.6845002174377441e-01 -3.9880952239036560e-01 + <_> + 4.7315582275390625e+01 + + 1 2 1281 7.7050000000000000e+02 0 -1 1282 + 2.5000000000000000e+00 -2 -3 1283 1.8500000000000000e+01 + + 8.4682360291481018e-02 -6.0419434309005737e-01 + -8.2248067855834961e-01 5.7301843166351318e-01 + <_> + 4.7552246093750000e+01 + + 1 2 1284 6.8500000000000000e+01 0 -1 1285 + 3.4435000000000000e+03 -2 -3 1286 5.0000000000000000e-01 + + 2.3666270077228546e-01 -8.8462197780609131e-01 + 7.7540457248687744e-01 -7.6702028512954712e-01 + <_> + 4.7279457092285156e+01 + + 1 2 1287 5.4650000000000000e+02 0 -1 1288 + 2.7500000000000000e+01 -2 -3 1289 1.2500000000000000e+01 + + -8.9818286895751953e-01 9.3574041128158569e-01 + -2.7278780937194824e-01 3.4087333083152771e-01 + <_> + 4.7695171356201172e+01 + + 1 2 1290 5.5000000000000000e+00 0 -1 1291 + 6.8500000000000000e+01 -2 -3 1292 4.2250000000000000e+02 + + -5.1797193288803101e-01 9.6406042575836182e-01 + 4.1571247577667236e-01 -3.3489051461219788e-01 + <_> + 4.8403869628906250e+01 + + 1 2 1293 1883. 0 -1 1294 8.7550000000000000e+02 -2 -3 1295 + 558. + + -1. 1. 7.0869779586791992e-01 -4.0250223129987717e-02 + <_> + 4.8536903381347656e+01 + + 1 2 1296 2.3500000000000000e+01 0 -1 1297 + 2.5000000000000000e+00 -2 -3 1298 3.5000000000000000e+00 + + 7.9751479625701904e-01 -8.0273920297622681e-01 + -7.9289126396179199e-01 2.0057959854602814e-01 + <_> + 4.8952194213867188e+01 + + 1 2 1299 5.0500000000000000e+01 0 -1 1300 + 5.0000000000000000e-01 -2 -3 1301 15. + + 4.1529166698455811e-01 -1.6719508171081543e-01 + -9.8823583126068115e-01 8.9194875955581665e-01 + <_> + 4.9016838073730469e+01 + + 1 2 1302 3.0500000000000000e+01 0 -1 1303 + 9.4500000000000000e+01 -2 -3 1304 1.4500000000000000e+01 + + -5.3713786602020264e-01 7.3640905320644379e-02 + -9.4347292184829712e-01 9.7819411754608154e-01 + <_> + 4.8526271820068359e+01 + + 1 2 1305 4.5000000000000000e+00 0 -1 1306 + 2.5000000000000000e+00 -2 -3 1307 6.8500000000000000e+01 + + -4.9056568741798401e-01 1.6012768447399139e-01 + 5.9082514047622681e-01 -7.3458278179168701e-01 + <_> + 4.8976272583007812e+01 + + 1 2 1308 4.5000000000000000e+00 0 -1 1309 + 1.5500000000000000e+01 -2 -3 1310 5.9500000000000000e+01 + + -1.9833615422248840e-01 4.4999912381172180e-01 + -5.6295996904373169e-01 8.5850125551223755e-01 + <_> + 4.8976329803466797e+01 + + 1 2 1311 4.5000000000000000e+00 0 -1 1312 + 6.8500000000000000e+01 -2 -3 1313 4.6500000000000000e+01 + + 5.6983328249771148e-05 7.7724099159240723e-01 + -6.1698484420776367e-01 2.9591542482376099e-01 + <_> + 4.9282245635986328e+01 + + 1 2 1314 1.1500000000000000e+01 0 -1 1315 + 1.5000000000000000e+00 -2 -3 1316 103. + + -8.6629253625869751e-01 2.9691928625106812e-01 + -6.9187688827514648e-01 7.6389712095260620e-01 + <_> + 4.9114860534667969e+01 + + 1 2 1317 1.8555000000000000e+03 0 -1 1318 + 6.4500000000000000e+01 -2 -3 1319 2.7350000000000000e+02 + + -1.6738428175449371e-01 5.7460331916809082e-01 + 5.3947240114212036e-01 -7.7280753850936890e-01 + <_> + 4.9352123260498047e+01 + + 1 2 1320 8.5350000000000000e+02 0 -1 1321 + 1.5000000000000000e+00 -2 -3 1322 9.9500000000000000e+01 + + 8.4088134765625000e-01 -7.2172147035598755e-01 + 2.3726405203342438e-01 -9.3316709995269775e-01 + <_> + 4.9501861572265625e+01 + + 1 2 1323 4.5000000000000000e+00 0 -1 1324 + 1.1500000000000000e+01 -2 -3 1325 8.5500000000000000e+01 + + -9.9253803491592407e-01 1. 4.6414378285408020e-01 + -2.0848950743675232e-01 + <_> + 4.9837139129638672e+01 + + 1 2 1326 7.9550000000000000e+02 0 -1 1327 + 2.8050000000000000e+02 -2 -3 1328 1835. + + -8.2946020364761353e-01 9.6943551301956177e-01 + -8.1424975395202637e-01 2.0871644839644432e-02 + <_> + 5.0246009826660156e+01 + + 1 2 1329 8.5000000000000000e+00 0 -1 1330 + 9.1050000000000000e+02 -2 -3 1331 1.5000000000000000e+00 + + 4.0886759757995605e-01 -7.4836260080337524e-01 + -5.7454568147659302e-01 3.2781472802162170e-01 + <_> + 4.9796627044677734e+01 + + 1 2 1332 5.0000000000000000e-01 0 -1 1333 + 6.5000000000000000e+00 -2 -3 1334 2.3500000000000000e+01 + + -9.3218848109245300e-02 8.3576363325119019e-01 + 1.9991603493690491e-01 -4.6900144219398499e-01 + <_> + 5.0063694000244141e+01 + + 1 2 1335 1.5000000000000000e+00 0 -1 1336 + 6.3500000000000000e+01 -2 -3 1337 1.8725000000000000e+03 + + -7.0560324192047119e-01 4.1954356431961060e-01 + -9.6739757061004639e-01 2.6706603169441223e-01 + <_> + 5.0260620117187500e+01 + + 1 2 1338 1.0500000000000000e+01 0 -1 1339 + 2.9500000000000000e+01 -2 -3 1340 342. + + -9.0658597648143768e-02 -7.9617536067962646e-01 + 6.7347729206085205e-01 -2.3987580835819244e-01 + <_> + 5.0467788696289062e+01 + + 1 2 1341 1.0650000000000000e+02 0 -1 1342 + 8.6750000000000000e+02 -2 -3 1343 2.5000000000000000e+00 + + 2.0716853439807892e-01 -7.6313602924346924e-01 + -9.5789188146591187e-01 2.3767970502376556e-01 + <_> + 5.0828540802001953e+01 + + 1 2 1344 5.4500000000000000e+01 0 -1 1345 + 9.8150000000000000e+02 -2 -3 1346 9.5000000000000000e+00 + + -3.1050950288772583e-02 -7.7375942468643188e-01 + -8.2174503803253174e-01 3.6075502634048462e-01 + <_> + 5.0360866546630859e+01 + + 1 2 1347 1.3500000000000000e+01 0 -1 1348 + 5.0000000000000000e-01 -2 -3 1349 1236. + + 1.3057044148445129e-01 -4.6767637133598328e-01 + -6.9840586185455322e-01 7.9119002819061279e-01 + <_> + 5.0256309509277344e+01 + + 1 2 1350 2.5000000000000000e+00 0 -1 1351 + 9.4500000000000000e+01 -2 -3 1352 3.2500000000000000e+01 + + 3.8615158200263977e-01 -9.4876563549041748e-01 + 6.4024305343627930e-01 -1.0455664992332458e-01 + <_> + 5.0560165405273438e+01 + + 1 2 1353 2.5000000000000000e+00 0 -1 1354 + 4.0500000000000000e+01 -2 -3 1355 4.0500000000000000e+01 + + -7.0561832189559937e-01 3.3378389477729797e-01 + 3.0385577678680420e-01 -6.0897898674011230e-01 + <_> + 5.0804115295410156e+01 + + 1 2 1356 1.5500000000000000e+01 0 -1 1357 45. -2 -3 1358 + 7.5000000000000000e+00 + + -8.0861389636993408e-01 1. -4.3904241919517517e-01 + 2.7291506528854370e-01 + <_> + 5.0514347076416016e+01 + + 1 2 1359 1.1050000000000000e+02 0 -1 1360 + 6.3500000000000000e+01 -2 -3 1361 2.3500000000000000e+01 + + -2.8976878523826599e-01 3.2039192318916321e-01 + -8.0150151252746582e-01 6.8203634023666382e-01 + <_> + 5.0776355743408203e+01 + + 1 2 1362 1.0550000000000000e+02 0 -1 1363 + 1.3550000000000000e+02 -2 -3 1364 10068. + + -6.4488768577575684e-01 2.6200938224792480e-01 + -8.9675015211105347e-01 -3.1381275504827499e-02 + <_> + 5.0533866882324219e+01 + + 1 2 1365 6.8500000000000000e+01 0 -1 1366 + 5.0000000000000000e-01 -2 -3 1367 1.6050000000000000e+02 + + 3.1839752197265625e-01 -2.4249233305454254e-01 1. -1. + <_> + 5.0829113006591797e+01 + + 1 2 1368 1.5000000000000000e+00 0 -1 1369 + 6.6350000000000000e+02 -2 -3 1370 5.5000000000000000e+00 + + 6.8838620185852051e-01 -9.3250781297683716e-01 + 2.9524663090705872e-01 -3.2141539454460144e-01 + <_> + 5.0797142028808594e+01 + + 1 2 1371 8.5000000000000000e+00 0 -1 1372 + 2.5000000000000000e+00 -2 -3 1373 5.0000000000000000e-01 + + 4.2804262042045593e-01 -7.1058040857315063e-01 + 7.0905983448028564e-01 -3.1971532851457596e-02 + <_> + 5.1115089416503906e+01 + + 1 2 1374 861. 0 -1 1375 3.5000000000000000e+00 -2 -3 1376 + 1.4500000000000000e+01 + + -4.3287408351898193e-01 3.1794783473014832e-01 + -8.9377957582473755e-01 8.8807784020900726e-02 + <_> + 5.1886703491210938e+01 + + 1 2 1377 1.0955000000000000e+03 0 -1 1378 + 1.1500000000000000e+01 -2 -3 1379 8.7950000000000000e+02 + + 7.7161508798599243e-01 -5.0686275959014893e-01 + -4.5395648479461670e-01 3.3118793368339539e-01 + <_> + 5.1772079467773438e+01 + + 1 2 1380 4.6650000000000000e+02 0 -1 1381 33. -2 -3 1382 + 1.0950000000000000e+02 + + -9.5125919580459595e-01 1. -1.1462553590536118e-01 + 4.7979238629341125e-01 + <_> + 5.2198509216308594e+01 + + 1 2 1383 1.5500000000000000e+01 0 -1 1384 + 2.8250000000000000e+02 -2 -3 1385 2.1500000000000000e+01 + + -5.1369702816009521e-01 4.8207268118858337e-01 + -4.2361307144165039e-01 6.4388936758041382e-01 + <_> + 5.2392532348632812e+01 + + 1 2 1386 2.5000000000000000e+00 0 -1 1387 + 1.2535000000000000e+03 -2 -3 1388 4515. + + 3.2906323671340942e-01 -7.7641272544860840e-01 + 5.5688279867172241e-01 -6.7741048336029053e-01 + <_> + 5.1989242553710938e+01 + + 1 2 1389 5.5000000000000000e+00 0 -1 1390 + 2.2750000000000000e+02 -2 -3 1391 4.3500000000000000e+01 + + 1.5418881177902222e-01 -5.9396916627883911e-01 + -4.6043199300765991e-01 6.2906885147094727e-01 + <_> + 5.2259319305419922e+01 + + 1 2 1392 3.2745000000000000e+03 0 -1 1393 + 1.8650000000000000e+02 -2 -3 1394 277. + + 1. -9.5819205045700073e-01 2.7007547020912170e-01 + -6.1733877658843994e-01 + <_> + 5.2470146179199219e+01 + + 1 2 1395 2.5000000000000000e+00 0 -1 1396 105. -2 -3 1397 + 1.1305000000000000e+03 + + -8.1608760356903076e-01 6.3372832536697388e-01 + -5.9831696748733521e-01 2.1082499623298645e-01 + <_> + 5.2619174957275391e+01 + + 1 2 1398 1.5000000000000000e+00 0 -1 1399 + 3.5500000000000000e+01 -2 -3 1400 6.9565000000000000e+03 + + 8.7191337347030640e-01 -9.5075809955596924e-01 + 1.4903016388416290e-01 -9.4546204805374146e-01 + <_> + 5.2935699462890625e+01 + + 1 2 1401 5.0000000000000000e-01 0 -1 1402 + 8.5000000000000000e+00 -2 -3 1403 5.0000000000000000e-01 + + -8.3433282375335693e-01 2.5846391916275024e-01 + 3.1652534008026123e-01 -2.6149821281433105e-01 + <_> + 5.3098587036132812e+01 + + 1 2 1404 2.6500000000000000e+01 0 -1 1405 + 3.0500000000000000e+01 -2 -3 1406 7.5000000000000000e+00 + + 1.6288678348064423e-01 -6.0522311925888062e-01 + -8.4450155496597290e-01 1. + <_> + 5.3166687011718750e+01 + + 1 2 1407 5.0000000000000000e-01 0 -1 1408 + 5.0000000000000000e-01 -2 -3 1409 2.2500000000000000e+01 + + 4.6929541230201721e-01 -2.5119864940643311e-01 + -6.6509801149368286e-01 1.3742294907569885e-01 + <_> + 5.3216953277587891e+01 + + 1 2 1410 1.0315000000000000e+03 0 -1 1411 + 5.5450000000000000e+02 -2 -3 1412 1.2050000000000000e+02 + + -5.9429639577865601e-01 5.0267767161130905e-02 + -7.4524205923080444e-01 9.9237120151519775e-01 + <_> + 5.2621330261230469e+01 + + 1 2 1413 5.0500000000000000e+01 0 -1 1414 + 9.5000000000000000e+00 -2 -3 1415 197. + + -5.9562218189239502e-01 2.1804636716842651e-01 + -9.5759987831115723e-01 1. + <_> + 5.2961544036865234e+01 + + 1 2 1416 1.5000000000000000e+00 0 -1 1417 + 2.3075000000000000e+03 -2 -3 1418 3.9850000000000000e+02 + + 3.4021046757698059e-01 -8.9926844835281372e-01 + -5.2498364448547363e-01 6.2959104776382446e-01 + <_> + 5.3093982696533203e+01 + + 1 2 1419 8.5000000000000000e+00 0 -1 1420 + 8.5000000000000000e+00 -2 -3 1421 1.0500000000000000e+01 + + -2.6875725388526917e-01 4.4103288650512695e-01 + -7.8084117174148560e-01 2.4891872704029083e-01 + <_> + 5.3610618591308594e+01 + + 1 2 1422 1.1500000000000000e+01 0 -1 1423 + 5.1500000000000000e+01 -2 -3 1424 3.2850000000000000e+02 + + 6.1537820100784302e-01 -7.0333778858184814e-01 + 5.1663792133331299e-01 -1.1682698130607605e-01 + <_> + 5.3337509155273438e+01 + + 1 2 1425 6.5000000000000000e+00 0 -1 1426 + 2.0150000000000000e+02 -2 -3 1427 1.3750000000000000e+02 + + -7.9510349035263062e-01 6.7965596914291382e-01 + -5.7587045431137085e-01 2.8806659579277039e-01 + <_> + 5.3759262084960938e+01 + + 1 2 1428 1.3500000000000000e+01 0 -1 1429 + 5.0000000000000000e-01 -2 -3 1430 2.5500000000000000e+01 + + -8.0888146162033081e-01 -1.0459310561418533e-01 + 4.2175045609474182e-01 -2.2673429548740387e-01 + <_> + 5.4000991821289062e+01 + + 1 2 1431 1.6500000000000000e+01 0 -1 1432 + 4.9500000000000000e+01 -2 -3 1433 3.2500000000000000e+01 + + 2.4172973632812500e-01 -6.6279673576354980e-01 + -7.4276286363601685e-01 3.0321115255355835e-01 + <_> + 5.3984508514404297e+01 + + 1 2 1434 1.1565000000000000e+03 0 -1 1435 + 2.6250000000000000e+02 -2 -3 1436 3893. + + 7.3637932538986206e-01 -3.4883835911750793e-01 + 6.0121822357177734e-01 -8.0439829826354980e-01 + <_> + 5.4098236083984375e+01 + + 1 2 1437 1.3500000000000000e+01 0 -1 1438 + 3.8350000000000000e+02 -2 -3 1439 1.0500000000000000e+01 + + -6.2982290983200073e-01 1.1372609436511993e-01 + -5.9008258581161499e-01 4.2848214507102966e-01 + <_> + 5.4405338287353516e+01 + + 1 2 1440 1.9805000000000000e+03 0 -1 1441 + 1.1275000000000000e+03 -2 -3 1442 2.6500000000000000e+01 + + -5.8803045749664307e-01 3.0710294842720032e-01 + -6.5108889341354370e-01 7.1022272109985352e-01 + <_> + 5.4511505126953125e+01 + + 1 2 1443 4.5000000000000000e+00 0 -1 1444 + 2.5000000000000000e+00 -2 -3 1445 1.8500000000000000e+01 + + -9.6930414438247681e-01 5.6903254985809326e-01 + 3.2619524002075195e-01 -2.4657142162322998e-01 + <_> + 5.3997844696044922e+01 + + 1 2 1446 7.5000000000000000e+00 0 -1 1447 + 3.8850000000000000e+02 -2 -3 1448 2.5000000000000000e+00 + + -5.1365816593170166e-01 7.6742160320281982e-01 + -1.1964958161115646e-01 5.4031091928482056e-01 + <_> + 5.4253089904785156e+01 + + 1 2 1449 1626. 0 -1 1450 1.3550000000000000e+02 -2 -3 1451 + 3.6500000000000000e+01 + + 2.5524312257766724e-01 -9.8179906606674194e-01 + -7.1048241853713989e-01 4.6551769971847534e-01 + <_> + 5.4500720977783203e+01 + + 1 2 1452 1.0500000000000000e+01 0 -1 1453 + 1.6500000000000000e+01 -2 -3 1454 3.5000000000000000e+00 + + -8.2665824890136719e-01 8.4684377908706665e-01 + 2.4763117730617523e-01 -5.0248169898986816e-01 + <_> + 5.4737117767333984e+01 + + 1 2 1455 2.9500000000000000e+01 0 -1 1456 + 2.0445000000000000e+03 -2 -3 1457 2.0750000000000000e+02 + + 3.2250665128231049e-02 -8.2253599166870117e-01 + 2.3639632761478424e-01 -8.4098196029663086e-01 + <_> + 5.4620071411132812e+01 + + 1 2 1458 5.5000000000000000e+00 0 -1 1459 + 3.5500000000000000e+01 -2 -3 1460 1.1350000000000000e+02 + + -3.3707693219184875e-01 2.8938186168670654e-01 + -6.7547446489334106e-01 6.6382431983947754e-01 + <_> + 5.4814952850341797e+01 + + 1 2 1461 1.7065000000000000e+03 0 -1 1462 + 2.5000000000000000e+00 -2 -3 1463 3.0500000000000000e+01 + + -9.4278389215469360e-01 1.9488368928432465e-01 + -7.2809278964996338e-01 9.4887137413024902e-01 + <_> + 5.5078216552734375e+01 + + 1 2 1464 4.9500000000000000e+01 0 -1 1465 + 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 + + -4.3484109640121460e-01 2.6326316595077515e-01 + 4.3786400556564331e-01 -8.4547907114028931e-01 + <_> + 5.5371429443359375e+01 + + 1 2 1467 5.0000000000000000e-01 0 -1 1468 + 9.5000000000000000e+00 -2 -3 1469 1.8500000000000000e+01 + + 3.0153682827949524e-01 -1. -6.4001828432083130e-01 + 1.5916951000690460e-01 + <_> + 5.5277488708496094e+01 + + 1 2 1470 1.5000000000000000e+00 0 -1 1471 + 4.7500000000000000e+01 -2 -3 1472 1.5350000000000000e+02 + + -8.3075433969497681e-01 8.5157310962677002e-01 + 5.2560466527938843e-01 -1.0226363688707352e-01 + <_> + 5.5544731140136719e+01 + + 1 2 1473 5.5000000000000000e+00 0 -1 1474 + 4.7500000000000000e+01 -2 -3 1475 3.5000000000000000e+00 + + -6.9490593671798706e-01 8.3865737915039062e-01 + -5.5749320983886719e-01 2.6724293828010559e-01 + <_> + 5.5245399475097656e+01 + + 1 2 1476 1.9950000000000000e+02 0 -1 1477 2289. -2 -3 1478 + 8.5000000000000000e+00 + + -8.5769319534301758e-01 9.1711401939392090e-01 + -7.0576089620590210e-01 3.7203203886747360e-02 + <_> + 5.5488651275634766e+01 + + 1 2 1479 5.2500000000000000e+01 0 -1 1480 + 1.2950000000000000e+02 -2 -3 1481 9.9500000000000000e+01 + + -8.7117952108383179e-01 2.4325069785118103e-01 1. + -6.1816340684890747e-01 + <_> + 5.6088603973388672e+01 + + 1 2 1482 3.0395000000000000e+03 0 -1 1483 + 8.5000000000000000e+00 -2 -3 1484 3.8500000000000000e+01 + + -6.3812756538391113e-01 5.9995239973068237e-01 + -3.6428934335708618e-01 4.7413027286529541e-01 + <_> + 5.6244201660156250e+01 + + 1 2 1485 5.0000000000000000e-01 0 -1 1486 + 1.5215000000000000e+03 -2 -3 1487 6.7050000000000000e+02 + + 3.1605017185211182e-01 -8.9320194721221924e-01 + -8.2980042695999146e-01 9.8803900182247162e-03 + <_> + 5.6439548492431641e+01 + + 1 2 1488 3.0050000000000000e+02 0 -1 1489 + 2.8550000000000000e+02 -2 -3 1490 5.5000000000000000e+00 + + -6.1809647083282471e-01 3.4896131604909897e-02 + 6.8301624059677124e-01 -6.8873125314712524e-01 + <_> + 5.6426887512207031e+01 + + 1 2 1491 5.8500000000000000e+01 0 -1 1492 + 3.4345000000000000e+03 -2 -3 1493 1.5500000000000000e+01 + + -1.2663759291172028e-02 -8.3325493335723877e-01 + -4.5447880029678345e-01 8.2523274421691895e-01 + <_> + 5.6583915710449219e+01 + + 1 2 1494 1.5000000000000000e+00 0 -1 1495 17. -2 -3 1496 + 4.5000000000000000e+00 + + -9.2977488040924072e-01 1. 4.6097502112388611e-01 + -9.5174610614776611e-02 + <_> + 5.6213527679443359e+01 + + 1 2 1497 2.5000000000000000e+00 0 -1 1498 + 3.1500000000000000e+01 -2 -3 1499 1.7500000000000000e+01 + + -9.0150320529937744e-01 1. -3.7925186753273010e-01 + 2.4965119361877441e-01 + <_> + 5.6820350646972656e+01 + + 1 2 1500 3.2500000000000000e+01 0 -1 1501 + 4.1950000000000000e+02 -2 -3 1502 3.2500000000000000e+01 + + 7.4725711345672607e-01 -2.9326796531677246e-01 + 5.0832718610763550e-01 -3.6488053202629089e-01 + <_> + 5.6534500122070312e+01 + + 1 2 1503 6.5000000000000000e+00 0 -1 1504 + 9.5000000000000000e+00 -2 -3 1505 7.5000000000000000e+00 + + -4.2628404498100281e-01 1.9397723674774170e-01 + 7.4938726425170898e-01 -2.1961294114589691e-01 + <_> + 5.6932621002197266e+01 + + 1 2 1506 2.5000000000000000e+00 0 -1 1507 + 5.7050000000000000e+02 -2 -3 1508 7.7500000000000000e+01 + + 3.9812234044075012e-01 -4.7504433989524841e-01 + -6.2128961086273193e-01 2.6114046573638916e-01 + <_> + 5.6733325958251953e+01 + + 1 2 1509 4.3500000000000000e+01 0 -1 1510 + 1.1500000000000000e+01 -2 -3 1511 5.5000000000000000e+00 + + 8.2605105638504028e-01 -8.1933623552322388e-01 + -7.0437282323837280e-01 2.4815419316291809e-01 + <_> + 5.7121013641357422e+01 + + 1 2 1512 5.0000000000000000e-01 0 -1 1513 + 2.5000000000000000e+00 -2 -3 1514 5.0000000000000000e-01 + + -9.4875234365463257e-01 4.0717402100563049e-01 + 3.7182134389877319e-01 -5.7021689414978027e-01 + <_> + 5.7052574157714844e+01 + + 1 2 1515 3.5000000000000000e+00 0 -1 1516 + 8.2350000000000000e+02 -2 -3 1517 3.5000000000000000e+00 + + -7.7814382314682007e-01 3.1433707475662231e-01 + 1.5364609658718109e-01 -6.9893133640289307e-01 + <_> + 5.7430255889892578e+01 + + 1 2 1518 7.5000000000000000e+00 0 -1 1519 + 2.7150000000000000e+02 -2 -3 1520 5.0000000000000000e-01 + + 3.7767973542213440e-01 -5.5577713251113892e-01 + 5.0659346580505371e-01 -2.3998673260211945e-01 + <_> + 5.7607677459716797e+01 + + 1 2 1521 8.5000000000000000e+00 0 -1 1522 + 3.7500000000000000e+01 -2 -3 1523 3.1500000000000000e+01 + + -9.3116837739944458e-01 1. 1.7742125689983368e-01 + -9.6981590986251831e-01 + <_> + 5.7209033966064453e+01 + + 1 2 1524 1.7500000000000000e+01 0 -1 1525 3333. -2 -3 1526 + 2.9500000000000000e+01 + + 3.5140603780746460e-01 -5.5955231189727783e-01 + 3.5482010245323181e-01 -6.4368051290512085e-01 + <_> + 5.7508213043212891e+01 + + 1 2 1527 1.3295000000000000e+03 0 -1 1528 + 3.5000000000000000e+00 -2 -3 1529 2.9905000000000000e+03 + + 8.6157292127609253e-01 -6.5889972448348999e-01 + 2.9918015003204346e-01 -5.1698189973831177e-01 + <_> + 5.7847724914550781e+01 + + 1 2 1530 5.8500000000000000e+01 0 -1 1531 4269. -2 -3 1532 + 3.5000000000000000e+00 + + -7.0496505498886108e-01 9.6496659517288208e-01 + 3.3951207995414734e-01 -2.9617905616760254e-01 + <_> + 5.8073795318603516e+01 + + 1 2 1533 1.4795000000000000e+03 0 -1 1534 1436. -2 -3 1535 + 3.4500000000000000e+01 + + 5.1324147731065750e-02 -7.3305028676986694e-01 + -9.5588427782058716e-01 8.9802700281143188e-01 + <_> + 5.8258213043212891e+01 + + 1 2 1536 8.5000000000000000e+00 0 -1 1537 + 2.3500000000000000e+01 -2 -3 1538 4.5000000000000000e+00 + + 1.1342080309987068e-02 -7.0464617013931274e-01 + 4.9904069304466248e-01 -2.1743535995483398e-01 + <_> + 5.7891689300537109e+01 + + 1 2 1539 5.0000000000000000e-01 0 -1 1540 + 1.5000000000000000e+00 -2 -3 1541 3.0595000000000000e+03 + + -5.2796399593353271e-01 3.7497097253799438e-01 + -4.9453270435333252e-01 5.0762557983398438e-01 + <_> + 5.8188655853271484e+01 + + 1 2 1542 5.0000000000000000e-01 0 -1 1543 + 1.5000000000000000e+00 -2 -3 1544 3.9500000000000000e+01 + + -8.9199644327163696e-01 2.9696619510650635e-01 + -5.4498016834259033e-01 9.7139292955398560e-01 + <_> + 5.8280239105224609e+01 + + 1 2 1545 3.3500000000000000e+01 0 -1 1546 + 5.0000000000000000e-01 -2 -3 1547 2.3500000000000000e+01 + + 4.4268378615379333e-01 -1.9920051097869873e-01 + 9.4228142499923706e-01 -7.5990098714828491e-01 + <_> + 5.7867527008056641e+01 + + 1 2 1548 7.5000000000000000e+00 0 -1 1549 339. -2 -3 1550 + 2.0555000000000000e+03 + + -8.4151726961135864e-01 3.1999579071998596e-01 + 2.5331634283065796e-01 -9.0427207946777344e-01 + <_> + 5.8132240295410156e+01 + + 1 2 1551 1.5000000000000000e+00 0 -1 1552 + 7.8650000000000000e+02 -2 -3 1553 1.8550000000000000e+02 + + 9.1284018754959106e-01 -7.6456803083419800e-01 + 2.6471161842346191e-01 -5.1480412483215332e-01 + <_> + 5.8396484375000000e+01 + + 1 2 1554 7.2500000000000000e+01 0 -1 1555 + 2.0845000000000000e+03 -2 -3 1556 682. + + 2.6424339413642883e-01 -5.3545671701431274e-01 + 5.8558118343353271e-01 -6.5226233005523682e-01 + <_> + 5.8931407928466797e+01 + + 1 2 1557 4.8500000000000000e+01 0 -1 1558 + 2.0650000000000000e+02 -2 -3 1559 1.5000000000000000e+00 + + -3.9781129360198975e-01 8.4498012065887451e-01 + 5.9064257144927979e-01 -2.2476838529109955e-01 + <_> + 5.9235450744628906e+01 + + 1 2 1560 5.6850000000000000e+02 0 -1 1561 92. -2 -3 1562 + 6.5000000000000000e+00 + + -7.1817409992218018e-01 6.5666520595550537e-01 + -3.9366659522056580e-01 3.7859344482421875e-01 + <_> + 5.8954090118408203e+01 + + 1 2 1563 3.5500000000000000e+01 0 -1 1564 + 4.1500000000000000e+01 -2 -3 1565 1.5000000000000000e+00 + + -3.5591202974319458e-01 2.9819571971893311e-01 + 6.6078835725784302e-01 -7.5122755765914917e-01 + <_> + 5.8992759704589844e+01 + + 1 2 1566 2.5000000000000000e+00 0 -1 1567 + 7.2450000000000000e+02 -2 -3 1568 7.1500000000000000e+01 + + 2.6733225584030151e-01 -8.6994355916976929e-01 + -6.7115420103073120e-01 2.8546950221061707e-01 + <_> + 5.9206840515136719e+01 + + 1 2 1569 125. 0 -1 1570 1.1500000000000000e+01 -2 -3 1571 + 1.7500000000000000e+01 + + -6.3097745180130005e-01 2.1407873928546906e-01 + -8.3158969879150391e-01 4.2057126760482788e-01 + <_> + 5.8675384521484375e+01 + + 1 2 1572 8.2500000000000000e+01 0 -1 1573 + 9.5000000000000000e+00 -2 -3 1574 1.3500000000000000e+01 + + -3.0376458168029785e-01 6.8508493900299072e-01 + -7.6011431217193604e-01 -4.0676746517419815e-02 + <_> + 5.8824657440185547e+01 + + 1 2 1575 5.3500000000000000e+01 0 -1 1576 3877. -2 -3 1577 + 1.9500000000000000e+01 + + -1. 7.3939621448516846e-01 -4.9733954668045044e-01 + 1.4926970005035400e-01 + <_> + 5.8581497192382812e+01 + + 1 2 1578 1.6165000000000000e+03 0 -1 1579 267. -2 -3 1580 + 2.3500000000000000e+01 + + -9.4517678022384644e-01 8.4405893087387085e-01 + -2.4316047132015228e-01 7.9341024160385132e-01 + <_> + 5.8863464355468750e+01 + + 1 2 1581 1.6500000000000000e+01 0 -1 1582 + 5.5000000000000000e+00 -2 -3 1583 4.0500000000000000e+01 + + -3.9863419532775879e-01 2.8196731209754944e-01 + -8.9268469810485840e-01 1. + <_> + 5.9290416717529297e+01 + + 1 2 1584 3.5000000000000000e+00 0 -1 1585 + 5.0000000000000000e-01 -2 -3 1586 3.9500000000000000e+01 + + -7.3463970422744751e-01 4.2695468664169312e-01 + -5.4126203060150146e-01 1.1317404359579086e-01 + <_> + 5.9067043304443359e+01 + + 1 2 1587 5.0000000000000000e-01 0 -1 1588 + 4.0950000000000000e+02 -2 -3 1589 7.2500000000000000e+01 + + -5.0176566839218140e-01 5.1602709293365479e-01 + 3.0980804562568665e-01 -4.6058577299118042e-01 + <_> + 5.9415367126464844e+01 + + 1 2 1590 1.5000000000000000e+00 0 -1 1591 12. -2 -3 1592 + 1.1500000000000000e+01 + + -6.9384574890136719e-01 6.5746247768402100e-01 + 3.4832605719566345e-01 -3.8974580168724060e-01 + <_> + 5.9919109344482422e+01 + + 1 2 1593 1.0845000000000000e+03 0 -1 1594 5947. -2 -3 1595 + 2.5500000000000000e+01 + + 5.0374138355255127e-01 -5.3129601478576660e-01 + -5.8001512289047241e-01 2.0108926296234131e-01 + <_> + 6.0114849090576172e+01 + + 1 2 1596 5.0000000000000000e-01 0 -1 1597 + 3.8650000000000000e+02 -2 -3 1598 8.6750000000000000e+02 + + -8.9583384990692139e-01 5.1855945587158203e-01 + 1.9573992490768433e-01 -9.6577078104019165e-01 + <_> + 5.9724266052246094e+01 + + 1 2 1599 7.0500000000000000e+01 0 -1 1600 + 7.6500000000000000e+01 -2 -3 1601 184. + + -3.9058533310890198e-01 6.3270717859268188e-01 + 7.7843767404556274e-01 -4.2521533370018005e-01 + <_> + 6.0343318939208984e+01 + + 1 2 1602 1.5000000000000000e+00 0 -1 1603 + 2.9250000000000000e+02 -2 -3 1604 1.8500000000000000e+01 + + 6.1905455589294434e-01 -8.7556785345077515e-01 + 9.3074835836887360e-02 -6.4517015218734741e-01 + <_> + 6.0081771850585938e+01 + + 1 2 1605 5.0000000000000000e-01 0 -1 1606 + 6.9450000000000000e+02 -2 -3 1607 4.3500000000000000e+01 + + -2.6154583692550659e-01 4.7799167037010193e-01 + -5.8910161256790161e-01 6.0072517395019531e-01 + <_> + 6.0815013885498047e+01 + + 1 2 1608 2.5000000000000000e+00 0 -1 1609 + 9.5000000000000000e+00 -2 -3 1610 1.5000000000000000e+00 + + -5.3109228610992432e-01 7.3323935270309448e-01 + 2.7432879805564880e-01 -4.7720876336097717e-01 + <_> + 6.1090702056884766e+01 + + 1 2 1611 4.5000000000000000e+00 0 -1 1612 3598. -2 -3 1613 + 2.6500000000000000e+01 + + 3.3982020616531372e-01 -8.5344749689102173e-01 + -7.6124453544616699e-01 2.7569055557250977e-01 + <_> + 6.1016242980957031e+01 + + 1 2 1614 2039. 0 -1 1615 1.3715000000000000e+03 -2 -3 1616 + 6.8500000000000000e+01 + + -7.4461504817008972e-02 7.2212553024291992e-01 + -9.3716764450073242e-01 7.9280626773834229e-01 + <_> + 6.1511177062988281e+01 + + 1 2 1617 1.5500000000000000e+01 0 -1 1618 + 2.7850000000000000e+02 -2 -3 1619 3.6500000000000000e+01 + + 4.9493625760078430e-01 -1.4364461600780487e-01 + -7.4662274122238159e-01 1.7349389195442200e-01 + <_> + 6.1308986663818359e+01 + + 1 2 1620 509. 0 -1 1621 7.8850000000000000e+02 -2 -3 1622 + 1.3385000000000000e+03 + + 1. -8.4440898895263672e-01 -2.0219227671623230e-01 + 3.7608841061592102e-01 + <_> + 6.1725578308105469e+01 + + 1 2 1623 5.0000000000000000e-01 0 -1 1624 + 3.5000000000000000e+00 -2 -3 1625 9.6850000000000000e+02 + + -8.8042527437210083e-01 4.1659390926361084e-01 + -3.2863637804985046e-01 9.1594344377517700e-01 + <_> + 6.1604068756103516e+01 + + 1 2 1626 1.1500000000000000e+01 0 -1 1627 + 1.0950000000000000e+02 -2 -3 1628 5.0000000000000000e-01 + + 3.1871238350868225e-01 -5.2247148752212524e-01 + 4.1599029302597046e-01 -7.9632645845413208e-01 + <_> + 6.1932075500488281e+01 + + 1 2 1629 9.5000000000000000e+00 0 -1 1630 219. -2 -3 1631 + 4.5000000000000000e+00 + + -5.8585010468959808e-02 -7.9883521795272827e-01 + -8.0256676673889160e-01 3.2800525426864624e-01 + <_> + 6.2076450347900391e+01 + + 1 2 1632 1.3850000000000000e+02 0 -1 1633 + 3.5000000000000000e+00 -2 -3 1634 5.6350000000000000e+02 + + -6.1192250251770020e-01 3.7852096557617188e-01 + 4.3628749251365662e-01 -4.0311765670776367e-01 + <_> + 6.2020500183105469e+01 + + 1 2 1635 5.6500000000000000e+01 0 -1 1636 + 9.5000000000000000e+00 -2 -3 1637 1.4245000000000000e+03 + + -5.1858995109796524e-02 -8.9690828323364258e-01 + -2.6840057969093323e-01 4.4323852658271790e-01 + <_> + 6.1941585540771484e+01 + + 1 2 1638 5.0000000000000000e-01 0 -1 1639 9. -2 -3 1640 + 7.5000000000000000e+00 + + 1. -1. 6.7882001399993896e-01 -7.8914739191532135e-02 + <_> + 6.2187667846679688e+01 + + 1 2 1641 1.5000000000000000e+00 0 -1 1642 62. -2 -3 1643 + 2.8500000000000000e+01 + + 2.4608352780342102e-01 -8.4340018033981323e-01 + -6.7122465372085571e-01 3.1627139449119568e-01 + <_> + 6.2444705963134766e+01 + + 1 2 1644 2.5000000000000000e+00 0 -1 1645 + 2.8395000000000000e+03 -2 -3 1646 3.7950000000000000e+02 + + 4.3465691804885864e-01 -8.7070471048355103e-01 + -4.0003356337547302e-01 2.5703859329223633e-01 + <_> + 6.2706104278564453e+01 + + 1 2 1647 1.5000000000000000e+00 0 -1 1648 + 2.6550000000000000e+02 -2 -3 1649 2.1605000000000000e+03 + + 7.4084126949310303e-01 -5.8476543426513672e-01 + 3.2751929759979248e-01 -6.7271316051483154e-01 + <_> + 6.2585681915283203e+01 + + 1 2 1650 5.6500000000000000e+01 0 -1 1651 + 2.7500000000000000e+01 -2 -3 1652 3.4500000000000000e+01 + + -5.1114237308502197e-01 4.1461613774299622e-01 + 5.1251345872879028e-01 -4.7370293736457825e-01 + <_> + 6.2783508300781250e+01 + + 1 2 1653 5.3500000000000000e+01 0 -1 1654 2387. -2 -3 1655 + 1.0785000000000000e+03 + + 1.9782398641109467e-01 -4.3944674730300903e-01 + -8.3261007070541382e-01 6.3095438480377197e-01 + <_> + 6.2716720581054688e+01 + + 1 2 1656 5.5000000000000000e+00 0 -1 1657 + 4.5000000000000000e+00 -2 -3 1658 9.6500000000000000e+01 + + -6.7844653129577637e-01 4.0278115868568420e-01 + 3.6051991581916809e-01 -4.8275879025459290e-01 + <_> + 6.2472888946533203e+01 + + 1 2 1659 3.0500000000000000e+01 0 -1 1660 8368. -2 -3 1661 + 1.3500000000000000e+01 + + -5.5116344243288040e-02 -9.4818419218063354e-01 + 4.0040487051010132e-01 -3.5688531398773193e-01 + <_> + 6.2881244659423828e+01 + + 1 2 1662 1.5000000000000000e+00 0 -1 1663 + 3.5500000000000000e+01 -2 -3 1664 2.3500000000000000e+01 + + 1. -9.0177541971206665e-01 4.0835642814636230e-01 + -1.8136456608772278e-01 + <_> + 6.3022640228271484e+01 + + 1 2 1665 8.5000000000000000e+00 0 -1 1666 + 1.9500000000000000e+01 -2 -3 1667 2.0500000000000000e+01 + + -7.6577585935592651e-01 7.7897077798843384e-01 + -5.0283867120742798e-01 2.9658859968185425e-01 + <_> + 6.3449874877929688e+01 + + 1 2 1668 8.3950000000000000e+02 0 -1 1669 + 1.1335000000000000e+03 -2 -3 1670 2.5000000000000000e+00 + + -6.2557518482208252e-01 4.2723217606544495e-01 + -8.2576507329940796e-01 -1.0434284806251526e-01 + <_> + 6.3252624511718750e+01 + + 1 2 1671 139. 0 -1 1672 5.0000000000000000e-01 -2 -3 1673 + 2.0500000000000000e+01 + + 4.1489660739898682e-01 -1.9724959135055542e-01 + -8.4620368480682373e-01 3.6422318220138550e-01 + <_> + 6.3265483856201172e+01 + + 1 2 1674 6.2150000000000000e+02 0 -1 1675 2672. -2 -3 1676 + 1.5000000000000000e+00 + + 1.2861014343798161e-02 -9.1588306427001953e-01 + -8.4077650308609009e-01 9.4888907670974731e-01 + <_> + 6.3836368560791016e+01 + + 1 2 1677 3.5000000000000000e+00 0 -1 1678 + 2.8950000000000000e+02 -2 -3 1679 7.5000000000000000e+00 + + -5.7555305957794189e-01 2.2934845089912415e-01 + 5.7088255882263184e-01 -1.5547750890254974e-01 + <_> + 6.3863594055175781e+01 + + 1 2 1680 2.5000000000000000e+00 0 -1 1681 + 5.5000000000000000e+00 -2 -3 1682 3.5000000000000000e+00 + + -9.2342543601989746e-01 1. 2.6264595985412598e-01 + -4.0114754438400269e-01 + <_> + 6.3550628662109375e+01 + + 1 2 1683 2.7850000000000000e+02 0 -1 1684 + 4.8250000000000000e+02 -2 -3 1685 3.4155000000000000e+03 + + -6.6107988357543945e-01 5.0213998556137085e-01 + 2.4799732863903046e-01 -9.5342993736267090e-01 + <_> + 6.3861141204833984e+01 + + 1 2 1686 1.2135000000000000e+03 0 -1 1687 + 1.3565000000000000e+03 -2 -3 1688 2.6500000000000000e+01 + + -4.3651562929153442e-01 9.3487417697906494e-01 + -2.5045010447502136e-01 6.4042550325393677e-01 + <_> + 6.3451419830322266e+01 + + 1 2 1689 3.0550000000000000e+02 0 -1 1690 + 2.0865000000000000e+03 -2 -3 1691 1.1500000000000000e+01 + + -5.3299653530120850e-01 6.8890345096588135e-01 + -7.7928084135055542e-01 3.3616758882999420e-02 + <_> + 6.3891139984130859e+01 + + 1 2 1692 1.4500000000000000e+01 0 -1 1693 1392. -2 -3 1694 + 2.1500000000000000e+01 + + -6.9326841831207275e-01 4.3972003459930420e-01 + -5.9055811166763306e-01 1.4402525126934052e-01 + <_> + 6.4478630065917969e+01 + + 1 2 1695 5.0000000000000000e-01 0 -1 1696 + 1.5000000000000000e+00 -2 -3 1697 819. + + -6.1571627855300903e-01 5.8748626708984375e-01 + -4.1089773178100586e-01 5.4873436689376831e-01 + <_> + 6.4206130981445312e+01 + + 1 2 1698 8.6650000000000000e+02 0 -1 1699 + 3.4500000000000000e+01 -2 -3 1700 1.0185000000000000e+03 + + -2.7249464392662048e-01 3.9035290479660034e-01 + 3.8879543542861938e-01 -8.3664953708648682e-01 + <_> + 6.4592948913574219e+01 + + 1 2 1701 9.7500000000000000e+01 0 -1 1702 + 9.5500000000000000e+01 -2 -3 1703 5.3500000000000000e+01 + + -2.3947530984878540e-01 8.5832071304321289e-01 + -3.9922302961349487e-01 3.0327111482620239e-01 + <_> + 6.4378982543945312e+01 + + 1 2 1704 5.0000000000000000e-01 0 -1 1705 + 2.5000000000000000e+00 -2 -3 1706 1.5755000000000000e+03 + + -2.9975247383117676e-01 5.9291505813598633e-01 + 9.0688472986221313e-01 -3.4945115447044373e-01 + <_> + 6.4591911315917969e+01 + + 1 2 1707 4.4050000000000000e+02 0 -1 1708 + 5.0500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 + + 2.1292972564697266e-01 -9.1971194744110107e-01 + 5.7173824310302734e-01 -9.4372731447219849e-01 + <_> + 6.4826133728027344e+01 + + 1 2 1710 1.5000000000000000e+00 0 -1 1711 442. -2 -3 1712 + 5.5250000000000000e+02 + + 2.2733847796916962e-01 -7.3592525720596313e-01 + -5.2650618553161621e-01 2.3422205448150635e-01 + <_> + 6.5069717407226562e+01 + + 1 2 1713 8.5000000000000000e+00 0 -1 1714 + 8.5000000000000000e+00 -2 -3 1715 3.1500000000000000e+01 + + 4.5332247018814087e-01 -8.6987191438674927e-01 + 2.3650217056274414e-01 -5.0223588943481445e-01 + <_> + 6.5310997009277344e+01 + + 1 2 1716 9.5000000000000000e+00 0 -1 1717 + 1.1500000000000000e+01 -2 -3 1718 203. + + -9.7941344976425171e-01 3.6707261204719543e-01 + 3.1545862555503845e-02 -8.0945146083831787e-01 + <_> + 6.5503784179687500e+01 + + 1 2 1719 7.2350000000000000e+02 0 -1 1720 + 6.7950000000000000e+02 -2 -3 1721 4.1850000000000000e+02 + + -7.2629940509796143e-01 1.9278171658515930e-01 + 5.3028446435928345e-01 -9.3524670600891113e-01 + <_> + 6.5250198364257812e+01 + + 1 2 1722 1.2500000000000000e+01 0 -1 1723 + 8.0650000000000000e+02 -2 -3 1724 2.5000000000000000e+00 + + 7.5862687826156616e-01 -4.6297156810760498e-01 + -7.5136619806289673e-01 3.6253631114959717e-01 + <_> + 6.5528388977050781e+01 + + 1 2 1725 9.4500000000000000e+01 0 -1 1726 + 4.8500000000000000e+01 -2 -3 1727 19. + + -6.7188930511474609e-01 6.1620616912841797e-01 + 2.7818998694419861e-01 -8.1198740005493164e-01 + <_> + 6.5322471618652344e+01 + + 1 2 1728 5.0000000000000000e-01 0 -1 1729 + 2.2500000000000000e+01 -2 -3 1730 8.3350000000000000e+02 + + 4.7361961007118225e-01 -9.5221102237701416e-01 + 1.1696549504995346e-01 -5.4392391443252563e-01 + <_> + 6.5620056152343750e+01 + + 1 2 1731 4.9500000000000000e+01 0 -1 1732 946. -2 -3 1733 + 4.8150000000000000e+02 + + 6.7783489823341370e-02 -7.3351651430130005e-01 + -9.0184271335601807e-02 5.8411657810211182e-01 + <_> + 6.5868316650390625e+01 + + 1 2 1734 1.2950000000000000e+02 0 -1 1735 + 2.5000000000000000e+00 -2 -3 1736 4.0650000000000000e+02 + + -5.2412188053131104e-01 2.4825538694858551e-01 + -9.9130809307098389e-01 8.9735072851181030e-01 + <_> + 6.5986862182617188e+01 + + 1 2 1737 4.5000000000000000e+00 0 -1 1738 + 5.0000000000000000e-01 -2 -3 1739 2.0500000000000000e+01 + + -8.2515478134155273e-01 1.1854794621467590e-01 + -6.7809820175170898e-01 2.4897077679634094e-01 + <_> + 6.5959693908691406e+01 + + 1 2 1740 3.8500000000000000e+01 0 -1 1741 + 5.0000000000000000e-01 -2 -3 1742 1.0050000000000000e+02 + + 6.0215097665786743e-01 -2.5286811590194702e-01 + -6.4079183340072632e-01 8.4301076829433441e-02 + <_> + 6.6134086608886719e+01 + + 1 2 1743 8.2500000000000000e+01 0 -1 1744 + 3.5000000000000000e+00 -2 -3 1745 1.9500000000000000e+01 + + -6.8188738822937012e-01 1.7439460754394531e-01 + -9.2948049306869507e-01 1. + <_> + 6.6361648559570312e+01 + + 1 2 1746 814. 0 -1 1747 1.9500000000000000e+01 -2 -3 1748 + 1.0500000000000000e+01 + + -9.7682356834411621e-01 7.5955659151077271e-01 + 2.2756047546863556e-01 -3.8351824879646301e-01 + <_> + 6.6531791687011719e+01 + + 1 2 1749 1308. 0 -1 1750 6.5000000000000000e+00 -2 -3 1751 + 5.0000000000000000e-01 + + 1.7014220356941223e-01 -5.7149434089660645e-01 + 7.9037719964981079e-01 -9.5655971765518188e-01 + <_> + 6.6605209350585938e+01 + + 1 2 1752 3.6500000000000000e+01 0 -1 1753 + 5.0000000000000000e-01 -2 -3 1754 2.5150000000000000e+02 + + 6.6666525602340698e-01 -8.1346422433853149e-01 + 1.6785284876823425e-01 -6.6657412052154541e-01 + <_> + 6.6571502685546875e+01 + + 1 2 1755 1.9500000000000000e+01 0 -1 1756 + 8.0500000000000000e+01 -2 -3 1757 1.5000000000000000e+00 + + -3.3701382577419281e-02 -7.4847251176834106e-01 + -7.7443891763687134e-01 6.1074006557464600e-01 + <_> + 6.6785156250000000e+01 + + 1 2 1758 2.5000000000000000e+00 0 -1 1759 43. -2 -3 1760 + 1.0015000000000000e+03 + + -8.5154837369918823e-01 8.3069330453872681e-01 + 2.1365079283714294e-01 -5.7956165075302124e-01 + <_> + 6.6786399841308594e+01 + + 1 2 1761 1.9050000000000000e+02 0 -1 1762 + 1.0535000000000000e+03 -2 -3 1763 2.4500000000000000e+01 + + 4.5784974098205566e-01 -5.2838063240051270e-01 + 3.2312652468681335e-01 -6.2864887714385986e-01 + <_> + 6.7081779479980469e+01 + + 1 2 1764 1.7500000000000000e+01 0 -1 1765 + 5.5000000000000000e+00 -2 -3 1766 2.1500000000000000e+01 + + -6.3773536682128906e-01 8.6540682241320610e-03 + -7.6469355821609497e-01 5.3673422336578369e-01 + <_> + 6.7328659057617188e+01 + + 1 2 1767 2.7450000000000000e+02 0 -1 1768 + 2.5000000000000000e+00 -2 -3 1769 1.2350000000000000e+02 + + 1.8835125863552094e-01 -8.5055798292160034e-01 + 2.4687612056732178e-01 -7.6298141479492188e-01 + <_> + 6.7479103088378906e+01 + + 1 2 1770 3.2325000000000000e+03 0 -1 1771 + 4.3250000000000000e+02 -2 -3 1772 2.2500000000000000e+01 + + 1.5044631063938141e-01 -5.9252446889877319e-01 + 7.3350501060485840e-01 -3.6927312612533569e-01 + <_> + 6.7486915588378906e+01 + + 1 2 1773 4.3500000000000000e+01 0 -1 1774 + 2.5265000000000000e+03 -2 -3 1775 1.0500000000000000e+01 + + 7.8096417710185051e-03 -8.9472562074661255e-01 + -5.6938666105270386e-01 4.1206309199333191e-01 + <_> + 6.7184608459472656e+01 + + 1 2 1776 1.2500000000000000e+01 0 -1 1777 + 3.5500000000000000e+01 -2 -3 1778 1.7500000000000000e+01 + + -4.4249776005744934e-01 2.9335400462150574e-01 + -6.3165670633316040e-01 7.5325357913970947e-01 + <_> + 6.7494506835937500e+01 + + 1 2 1779 3.7650000000000000e+02 0 -1 1780 + 5.0000000000000000e-01 -2 -3 1781 3.9500000000000000e+01 + + 5.2761709690093994e-01 -7.7626377344131470e-01 + -3.4604665637016296e-01 3.2856348156929016e-01 + <_> + 6.7218788146972656e+01 + + 1 2 1782 5.0000000000000000e-01 0 -1 1783 3854. -2 -3 1784 + 9.9650000000000000e+02 + + -7.3792868852615356e-01 7.5467681884765625e-01 + -2.9438218474388123e-01 5.6371760368347168e-01 + <_> + 6.7561782836914062e+01 + + 1 2 1785 1.6365000000000000e+03 0 -1 1786 + 5.5000000000000000e+00 -2 -3 1787 2.7500000000000000e+01 + + -6.1908555030822754e-01 3.4299522638320923e-01 + -8.5923063755035400e-01 2.6721331477165222e-01 + <_> + 6.7637489318847656e+01 + + 1 2 1788 5.5500000000000000e+01 0 -1 1789 + 2.5000000000000000e+00 -2 -3 1790 5.8500000000000000e+01 + + -9.7663235664367676e-01 7.0542359352111816e-01 + -6.2124180793762207e-01 1.0107668116688728e-02 + <_> + 6.7872940063476562e+01 + + 1 2 1791 1.1435000000000000e+03 0 -1 1792 + 8.4500000000000000e+01 -2 -3 1793 1.5000000000000000e+00 + + 2.3545160889625549e-01 -7.6414716243743896e-01 + 4.4412618875503540e-01 -9.5045959949493408e-01 + <_> + 6.8379867553710938e+01 + + 1 2 1794 5.0000000000000000e-01 0 -1 1795 + 3.5000000000000000e+00 -2 -3 1796 7.5000000000000000e+00 + + 5.0692296028137207e-01 -5.1141291856765747e-01 + -7.6778936386108398e-01 -6.7547991871833801e-02 + <_> + 6.8707763671875000e+01 + + 1 2 1797 1.3500000000000000e+01 0 -1 1798 + 4.5000000000000000e+00 -2 -3 1799 6.5500000000000000e+01 + + -7.2192513942718506e-01 4.4987043738365173e-01 + 3.2790130376815796e-01 -4.7422546148300171e-01 + <_> + 6.8286819458007812e+01 + + 1 2 1800 3.1500000000000000e+01 0 -1 1801 + 1.1415000000000000e+03 -2 -3 1802 1.5500000000000000e+01 + + -4.2094790935516357e-01 2.4803330004215240e-01 -1. 1. + <_> + 6.8052871704101562e+01 + + 1 2 1803 3.8850000000000000e+02 0 -1 1804 + 5.5945000000000000e+03 -2 -3 1805 8.5000000000000000e+00 + + -1. 9.7139048576354980e-01 -3.3056256175041199e-01 + 2.6478901505470276e-01 + <_> + 6.8410385131835938e+01 + + 1 2 1806 5.0000000000000000e-01 0 -1 1807 + 1.5000000000000000e+00 -2 -3 1808 75. + + -5.0366848707199097e-01 4.0760627388954163e-01 + 4.9484097957611084e-01 -6.4907956123352051e-01 + <_> + 6.8928771972656250e+01 + + 1 2 1809 1.2250000000000000e+02 0 -1 1810 + 7.5000000000000000e+00 -2 -3 1811 6.6500000000000000e+01 + + -7.0449191331863403e-01 9.7664463520050049e-01 + -3.6998346447944641e-01 2.0591719448566437e-01 + <_> + 6.9253982543945312e+01 + + 1 2 1812 1.0250000000000000e+02 0 -1 1813 + 3.5000000000000000e+00 -2 -3 1814 3.1250000000000000e+02 + + -8.1731587648391724e-01 3.2521212100982666e-01 + 3.7988114356994629e-01 -6.4639246463775635e-01 + <_> + 6.9205451965332031e+01 + + 1 2 1815 1.2050000000000000e+02 0 -1 1816 + 6.0500000000000000e+01 -2 -3 1817 8.5000000000000000e+00 + + -4.8533525317907333e-02 8.4871995449066162e-01 1. -1. + <_> + 6.9166992187500000e+01 + + 1 2 1818 5.0000000000000000e-01 0 -1 1819 + 4.2550000000000000e+02 -2 -3 1820 1.1500000000000000e+01 + + 4.8487004637718201e-01 -5.4979419708251953e-01 + -4.2108422517776489e-01 4.5939767360687256e-01 + <_> + 6.9126815795898438e+01 + + 1 2 1821 5.8150000000000000e+02 0 -1 1822 + 3.5500000000000000e+01 -2 -3 1823 9.7500000000000000e+01 + + 4.9901461601257324e-01 -8.1184327602386475e-01 + 5.8108931779861450e-01 -6.8361051380634308e-02 + <_> + 6.9228797912597656e+01 + + 1 2 1824 8.5000000000000000e+00 0 -1 1825 + 1.2500000000000000e+01 -2 -3 1826 8.3500000000000000e+01 + + -6.4501130580902100e-01 2.3137541115283966e-01 + 3.7868604063987732e-01 -4.4107386469841003e-01 + <_> + 6.9378318786621094e+01 + + 1 2 1827 5.0000000000000000e-01 0 -1 1828 + 4.9500000000000000e+01 -2 -3 1829 2.2500000000000000e+01 + + 4.1642808914184570e-01 -7.8047537803649902e-01 + -7.4845105409622192e-01 1.1628971993923187e-01 + <_> + 6.9186073303222656e+01 + + 1 2 1830 2.7050000000000000e+02 0 -1 1831 45. -2 -3 1832 + 1.0500000000000000e+01 + + 1. -9.4139373302459717e-01 -1.9224344193935394e-01 + 4.3496173620223999e-01 + <_> + 6.9486175537109375e+01 + + 1 2 1833 1.4050000000000000e+02 0 -1 1834 + 1.5000000000000000e+00 -2 -3 1835 5.5500000000000000e+01 + + -7.3685461282730103e-01 3.0009758472442627e-01 + -6.2791568040847778e-01 2.8461813926696777e-01 + <_> + 6.9622322082519531e+01 + + 1 2 1836 1.0500000000000000e+01 0 -1 1837 + 9.6550000000000000e+02 -2 -3 1838 1.5000000000000000e+00 + + -7.7085101604461670e-01 4.4815340638160706e-01 + 6.2162548303604126e-01 -4.0746492147445679e-01 + <_> + 6.9615928649902344e+01 + + 1 2 1839 1.4500000000000000e+01 0 -1 1840 + 4.0150000000000000e+02 -2 -3 1841 53. + + 6.2382644414901733e-01 -3.1839877367019653e-01 + 5.9402352571487427e-01 -7.7672713994979858e-01 + <_> + 6.9581390380859375e+01 + + 1 2 1842 1.9050000000000000e+02 0 -1 1843 + 1.9350000000000000e+02 -2 -3 1844 6.5000000000000000e+00 + + -6.6475450992584229e-01 3.9425066113471985e-01 + -2.0569822192192078e-01 4.3429613113403320e-01 + <_> + 6.9716117858886719e+01 + + 1 2 1845 1.1500000000000000e+01 0 -1 1846 + 2.5000000000000000e+00 -2 -3 1847 1.5000000000000000e+00 + + -3.3410567045211792e-01 3.6131811141967773e-01 + 3.8923510909080505e-01 -7.3655128479003906e-01 + <_> + 6.9997550964355469e+01 + + 1 2 1848 2.8500000000000000e+01 0 -1 1849 + 1.5000000000000000e+00 -2 -3 1850 2.6500000000000000e+01 + + -4.0613466501235962e-01 2.8143337368965149e-01 + -9.6434587240219116e-01 5.6036943197250366e-01 + <_> + 6.9693450927734375e+01 + + 1 2 1851 2.0350000000000000e+02 0 -1 1852 + 9.9350000000000000e+02 -2 -3 1853 2.2500000000000000e+01 + + 6.5412253141403198e-01 -6.5566647052764893e-01 + -5.3069335222244263e-01 1.0198003053665161e-01 + <_> + 6.9937568664550781e+01 + + 1 2 1854 2.5785000000000000e+03 0 -1 1855 + 2.5000000000000000e+00 -2 -3 1856 5.0000000000000000e-01 + + -5.7543450593948364e-01 2.4412074685096741e-01 1. + -9.1257572174072266e-01 + <_> + 7.0639808654785156e+01 + + 1 2 1857 5.7750000000000000e+02 0 -1 1858 + 4.6500000000000000e+01 -2 -3 1859 1.3150000000000000e+02 + + 7.8946912288665771e-01 -3.5598552227020264e-01 + 6.2578904628753662e-01 -5.0993841886520386e-01 + <_> + 7.0555007934570312e+01 + + 1 2 1860 5.0000000000000000e-01 0 -1 1861 16. -2 -3 1862 + 5.0000000000000000e-01 + + -9.4747436046600342e-01 1. 4.5841571688652039e-01 + -1.7203371226787567e-01 + <_> + 7.0579658508300781e+01 + + 1 2 1863 1.0250000000000000e+02 0 -1 1864 + 1.0500000000000000e+01 -2 -3 1865 1.3550000000000000e+02 + + -7.5043040513992310e-01 -1.3392960652709007e-02 + -5.0063830614089966e-01 4.7692352533340454e-01 + <_> + 7.0888481140136719e+01 + + 1 2 1866 5.0000000000000000e-01 0 -1 1867 + 2.9500000000000000e+01 -2 -3 1868 8.0550000000000000e+02 + + 3.0881932377815247e-01 -8.9407527446746826e-01 + 7.8238004446029663e-01 -5.9828531742095947e-01 + <_> + 7.0740913391113281e+01 + + 1 2 1869 1.2150000000000000e+02 0 -1 1870 + 2.4500000000000000e+01 -2 -3 1871 3.0500000000000000e+01 + + -2.3594596982002258e-01 6.2877231836318970e-01 + -4.9541813135147095e-01 3.6229962110519409e-01 + <_> + 7.1206985473632812e+01 + + 1 2 1872 3.5000000000000000e+00 0 -1 1873 + 1.4275000000000000e+03 -2 -3 1874 2.2500000000000000e+01 + + -9.9479568004608154e-01 3.8346680998802185e-01 + 4.6607276797294617e-01 -1.8312121927738190e-01 + <_> + 7.1451019287109375e+01 + + 1 2 1875 1.8500000000000000e+01 0 -1 1876 65. -2 -3 1877 + 2.5000000000000000e+00 + + -7.7731359004974365e-01 9.2451179027557373e-01 + -5.7414340972900391e-01 2.4403360486030579e-01 + <_> + 7.0688819885253906e+01 + + 1 2 1878 1.5000000000000000e+00 0 -1 1879 + 1.5250000000000000e+02 -2 -3 1880 5.5000000000000000e+00 + + 3.6112758517265320e-01 -5.4053640365600586e-01 + -4.3820820748806000e-02 -7.6219600439071655e-01 + <_> + 7.1147773742675781e+01 + + 1 2 1881 4.1500000000000000e+01 0 -1 1882 + 1.7500000000000000e+01 -2 -3 1883 4.1250000000000000e+02 + + -4.4425949454307556e-01 6.3956463336944580e-01 + -4.9368324875831604e-01 4.5895308256149292e-01 + <_> + 7.1452705383300781e+01 + + 1 2 1884 1.4325000000000000e+03 0 -1 1885 + 1.7500000000000000e+01 -2 -3 1886 23. + + -9.5096543431282043e-02 5.0955659151077271e-01 + -8.3886599540710449e-01 8.5678941011428833e-01 + <_> + 7.1636161804199219e+01 + + 1 2 1887 1.2050000000000000e+02 0 -1 1888 + 8.0050000000000000e+02 -2 -3 1889 1716. + + -6.7043030261993408e-01 1.8345704674720764e-01 + -9.0125375986099243e-01 1. + <_> + 7.1818664550781250e+01 + + 1 2 1890 1.5000000000000000e+00 0 -1 1891 + 5.0000000000000000e-01 -2 -3 1892 808. + + 1.8249766528606415e-01 -5.5717653036117554e-01 -1. + 4.4042342901229858e-01 + <_> + 7.2026985168457031e+01 + + 1 2 1893 3.5000000000000000e+00 0 -1 1894 8. -2 -3 1895 + 2.5000000000000000e+00 + + -9.3179380893707275e-01 1. 2.0832556486129761e-01 + -5.2329808473587036e-01 + <_> + 7.1846588134765625e+01 + + 1 2 1896 1.1950000000000000e+02 0 -1 1897 + 1.9500000000000000e+01 -2 -3 1898 2.8450000000000000e+02 + + -1.8040254712104797e-01 6.0258209705352783e-01 + 5.5354207754135132e-01 -7.1650350093841553e-01 + <_> + 7.1900581359863281e+01 + + 1 2 1899 9.0450000000000000e+02 0 -1 1900 266. -2 -3 1901 + 2.5000000000000000e+00 + + 7.8607088327407837e-01 -7.7522158622741699e-01 + -2.7132809162139893e-01 3.9066424965858459e-01 + <_> + 7.2254920959472656e+01 + + 1 2 1902 1.4500000000000000e+01 0 -1 1903 + 7.5850000000000000e+02 -2 -3 1904 1.3500000000000000e+01 + + -4.3261140584945679e-01 3.5433784127235413e-01 + 2.6537308096885681e-01 -7.9342633485794067e-01 + <_> + 7.2434974670410156e+01 + + 1 2 1905 3.4445000000000000e+03 0 -1 1906 + 2.5000000000000000e+00 -2 -3 1907 5.9500000000000000e+01 + + -6.8569511175155640e-01 1.8006032705307007e-01 + -9.2150622606277466e-01 1. + <_> + 7.2396644592285156e+01 + + 1 2 1908 1.5000000000000000e+00 0 -1 1909 + 2.1500000000000000e+01 -2 -3 1910 1.1500000000000000e+01 + + -3.7500020861625671e-01 4.5450302958488464e-01 + -5.1121622323989868e-01 7.1714913845062256e-01 + <_> + 7.1966697692871094e+01 + + 1 2 1911 3.5500000000000000e+01 0 -1 1912 + 1.6975000000000000e+03 -2 -3 1913 9.5000000000000000e+00 + + 6.2354284524917603e-01 -5.5644631385803223e-01 + -6.0473889112472534e-01 1.6627989709377289e-01 + <_> + 7.2265373229980469e+01 + + 1 2 1914 1.5000000000000000e+00 0 -1 1915 2029. -2 -3 1916 + 165. + + -7.3123896121978760e-01 7.1832627058029175e-01 + 2.9867425560951233e-01 -6.3333243131637573e-01 + <_> + 7.2611221313476562e+01 + + 1 2 1917 7.5000000000000000e+00 0 -1 1918 + 4.9500000000000000e+01 -2 -3 1919 2.3500000000000000e+01 + + -8.9519095420837402e-01 8.1671148538589478e-01 + 4.5284107327461243e-01 -1.4600232243537903e-01 + <_> + 7.3058769226074219e+01 + + 1 2 1920 7.5000000000000000e+00 0 -1 1921 + 6.5000000000000000e+00 -2 -3 1922 4.0500000000000000e+01 + + 8.6240917444229126e-02 -6.9517636299133301e-01 + 4.4754931330680847e-01 -4.5200899243354797e-01 + <_> + 7.3110542297363281e+01 + + 1 2 1923 1.7815000000000000e+03 0 -1 1924 + 1.0005000000000000e+03 -2 -3 1925 3.2945000000000000e+03 + + -8.3461540937423706e-01 9.6288299560546875e-01 + 8.1745308637619019e-01 -5.5225487798452377e-02 + <_> + 7.2996879577636719e+01 + + 1 2 1926 7.5000000000000000e+00 0 -1 1927 + 6.5000000000000000e+00 -2 -3 1928 3.8050000000000000e+02 + + -6.8741214275360107e-01 8.4089756011962891e-01 + -3.3457726240158081e-01 3.7242683768272400e-01 + <_> + 7.3333457946777344e+01 + + 1 2 1929 1.4500000000000000e+01 0 -1 1930 + 2.7500000000000000e+01 -2 -3 1931 2.5500000000000000e+01 + + 3.3657467365264893e-01 -5.5885529518127441e-01 + -7.7352440357208252e-01 7.2826080024242401e-02 + <_> + 7.2824409484863281e+01 + + 1 2 1932 5.5000000000000000e+00 0 -1 1933 + 4.8550000000000000e+02 -2 -3 1934 9.5000000000000000e+00 + + -5.0904840230941772e-01 5.5190944671630859e-01 + -4.8847538232803345e-01 3.6895498633384705e-01 + <_> + 7.3038925170898438e+01 + + 1 2 1935 1.5595000000000000e+03 0 -1 1936 + 2.0500000000000000e+01 -2 -3 1937 2.9500000000000000e+01 + + -3.6917760968208313e-01 3.1854984164237976e-01 + -8.7062478065490723e-01 4.9816086888313293e-01 + <_> + 7.3263801574707031e+01 + + 1 2 1938 1.0015000000000000e+03 0 -1 1939 + 1.5000000000000000e+00 -2 -3 1940 2974. + + -7.0936071872711182e-01 2.2487121820449829e-01 + -8.8643109798431396e-01 7.1286094188690186e-01 + <_> + 7.3553604125976562e+01 + + 1 2 1941 2.5000000000000000e+00 0 -1 1942 + 3.4150000000000000e+02 -2 -3 1943 1173. + + 2.8980860114097595e-01 -6.4726233482360840e-01 + -6.5974622964859009e-01 5.0034427642822266e-01 + <_> + 7.4105926513671875e+01 + + 1 2 1944 1.6585000000000000e+03 0 -1 1945 + 6.7550000000000000e+02 -2 -3 1946 2.2500000000000000e+01 + + -6.1926132440567017e-01 5.5879336595535278e-01 + -6.7974144220352173e-01 1.0105973482131958e-01 + <_> + 7.4186531066894531e+01 + + 1 2 1947 1.1505000000000000e+03 0 -1 1948 + 4.5000000000000000e+00 -2 -3 1949 1.2500000000000000e+01 + + -6.8859964609146118e-01 7.4128083884716034e-02 + -8.4579437971115112e-01 4.9757060408592224e-01 + <_> + 7.4735351562500000e+01 + + 1 2 1950 3.2750000000000000e+02 0 -1 1951 440. -2 -3 1952 + 1255. + + -8.4635180234909058e-01 5.4881960153579712e-01 + -7.5777089595794678e-01 5.4926741868257523e-02 + <_> + 7.4681823730468750e+01 + + 1 2 1953 1.5000000000000000e+00 0 -1 1954 + 5.0500000000000000e+01 -2 -3 1955 5.6500000000000000e+01 + + -7.0232021808624268e-01 8.5282677412033081e-01 + 2.3205398023128510e-01 -8.8023269176483154e-01 + <_> + 7.4392105102539062e+01 + + 1 2 1956 7.5000000000000000e+00 0 -1 1957 + 3.9350000000000000e+02 -2 -3 1958 5.0000000000000000e-01 + + 1.9772809743881226e-01 -7.5726938247680664e-01 + 6.1714029312133789e-01 -8.7271124124526978e-02 + <_> + 7.4673728942871094e+01 + + 1 2 1959 1.5000000000000000e+00 0 -1 1960 + 1.1500000000000000e+01 -2 -3 1961 2.0555000000000000e+03 + + -4.9139803647994995e-01 3.7206640839576721e-01 + 4.2800930142402649e-01 -5.5887550115585327e-01 + <_> + 7.5367835998535156e+01 + + 1 2 1962 1.3650000000000000e+02 0 -1 1963 401. -2 -3 1964 + 7.1500000000000000e+01 + + -9.1597896814346313e-01 6.9410192966461182e-01 + -5.2255064249038696e-01 1.0558886826038361e-01 + <_> + 7.5788253784179688e+01 + + 1 2 1965 8.5000000000000000e+00 0 -1 1966 + 5.0000000000000000e-01 -2 -3 1967 6.0500000000000000e+01 + + -4.4586208462715149e-01 4.2041677236557007e-01 + -7.7125865221023560e-01 1.2018596753478050e-02 + <_> + 7.6069732666015625e+01 + + 1 2 1968 5.6850000000000000e+02 0 -1 1969 + 1.3500000000000000e+01 -2 -3 1970 5.7750000000000000e+02 + + -7.2104036808013916e-01 4.5175212621688843e-01 + 2.8147873282432556e-01 -5.9510231018066406e-01 + <_> + 7.6112258911132812e+01 + + 1 2 1971 5.5000000000000000e+00 0 -1 1972 + 5.5750000000000000e+02 -2 -3 1973 1147. + + -6.9539779424667358e-01 -4.7915484756231308e-02 + 4.5538648962974548e-01 -7.5604480504989624e-01 + <_> + 7.5756111145019531e+01 + + 1 2 1974 5.0000000000000000e-01 0 -1 1975 + 8.5000000000000000e+00 -2 -3 1976 2.5000000000000000e+00 + + -7.6900506019592285e-01 3.4268808364868164e-01 + 1.4950591325759888e-01 -7.2585535049438477e-01 + <_> + 7.6101287841796875e+01 + + 1 2 1977 2.1500000000000000e+01 0 -1 1978 + 3.7500000000000000e+01 -2 -3 1979 3.9500000000000000e+01 + + -3.3152681589126587e-01 3.4517920017242432e-01 + -7.0503693819046021e-01 9.6268767118453979e-01 + <_> + 7.6609313964843750e+01 + + 1 2 1980 1.0500000000000000e+01 0 -1 1981 + 1.2500000000000000e+01 -2 -3 1982 1.4500000000000000e+01 + + -3.1232813000679016e-01 5.2801662683486938e-01 + -6.8980258703231812e-01 4.3460644781589508e-02 + <_> + 7.6257461547851562e+01 + + 1 2 1983 1001. 0 -1 1984 3.5000000000000000e+00 -2 -3 1985 + 8.5000000000000000e+00 + + -1. 5.1140683889389038e-01 -6.1894029378890991e-01 + 9.8859548568725586e-02 + <_> + 7.6508773803710938e+01 + + 1 2 1986 1.3500000000000000e+01 0 -1 1987 + 5.5000000000000000e+00 -2 -3 1988 1.5000000000000000e+00 + + -7.8223472833633423e-01 9.0430533885955811e-01 + -7.6901417970657349e-01 2.5131115317344666e-01 + <_> + 7.6511230468750000e+01 + + 1 2 1989 2.3500000000000000e+01 0 -1 1990 + 7.7500000000000000e+01 -2 -3 1991 5.3500000000000000e+01 + + 2.4585875216871500e-03 -8.1063097715377808e-01 + 9.4792199134826660e-01 -8.4266769886016846e-01 + <_> + 7.7112556457519531e+01 + + 1 2 1992 9.5000000000000000e+00 0 -1 1993 + 1.5000000000000000e+00 -2 -3 1994 1.0500000000000000e+01 + + 7.8646227717399597e-02 -5.8706396818161011e-01 + 7.7305620908737183e-01 -8.0239242315292358e-01 + <_> + 7.6619277954101562e+01 + + 1 2 1995 3.9500000000000000e+01 0 -1 1996 + 1.2350000000000000e+02 -2 -3 1997 1.4750000000000000e+02 + + 3.2390201091766357e-01 -6.6501069068908691e-01 + 3.5864245891571045e-01 -8.1123942136764526e-01 + <_> + 7.7220901489257812e+01 + + 1 2 1998 5.4750000000000000e+02 0 -1 1999 + 5.5350000000000000e+02 -2 -3 2000 7.7450000000000000e+02 + + 6.3919067382812500e-01 -4.2759561538696289e-01 + -4.5995783805847168e-01 3.5977739095687866e-01 + <_> + 7.7378273010253906e+01 + + 1 2 2001 1.9615000000000000e+03 0 -1 2002 + 5.7550000000000000e+02 -2 -3 2003 16. + + -1.8090914189815521e-01 4.4383099675178528e-01 1. -1. + <_> + 7.6999313354492188e+01 + + 1 2 2004 4.5000000000000000e+00 0 -1 2005 + 2.5000000000000000e+00 -2 -3 2006 4.7500000000000000e+01 + + 6.8634140491485596e-01 -8.3962488174438477e-01 + -3.7895882129669189e-01 3.1631174683570862e-01 + <_> + 7.7379386901855469e+01 + + 1 2 2007 2.3500000000000000e+01 0 -1 2008 + 2.5000000000000000e+00 -2 -3 2009 635. + + -5.6043285131454468e-01 3.8007143139839172e-01 + 2.3420706391334534e-02 -8.1111401319503784e-01 + <_> + 7.7814773559570312e+01 + + 1 2 2010 5.0000000000000000e-01 0 -1 2011 + 2.9015000000000000e+03 -2 -3 2012 2.1500000000000000e+01 + + -4.2206180095672607e-01 4.5896497368812561e-01 + -8.3090221881866455e-01 -1.1289356648921967e-01 + <_> + 7.7731140136718750e+01 + + 1 2 2013 3.0050000000000000e+02 0 -1 2014 91. -2 -3 2015 + 1.3750000000000000e+02 + + -8.3637647330760956e-02 4.7793844342231750e-01 + 4.2891168594360352e-01 -9.1970837116241455e-01 + <_> + 7.7703033447265625e+01 + + 1 2 2016 6.5500000000000000e+01 0 -1 2017 + 4.6500000000000000e+01 -2 -3 2018 1.2500000000000000e+01 + + 8.9802670478820801e-01 -7.9725235700607300e-01 + 3.0849361419677734e-01 -3.1823581457138062e-01 + <_> + 7.7592445373535156e+01 + + 1 2 2019 1304. 0 -1 2020 5.0000000000000000e-01 -2 -3 2021 + 1.3550000000000000e+02 + + 1.2925930321216583e-01 -4.4718819856643677e-01 -1. + 9.2844516038894653e-01 + <_> + 7.7784370422363281e+01 + + 1 2 2022 5.2500000000000000e+01 0 -1 2023 669. -2 -3 2024 + 5.8050000000000000e+02 + + 1.9192789494991302e-01 -9.7164040803909302e-01 + -9.6615767478942871e-01 1. + <_> + 7.7990150451660156e+01 + + 1 2 2025 2.5000000000000000e+00 0 -1 2026 + 4.0650000000000000e+02 -2 -3 2027 4.5000000000000000e+00 + + 1.7283387482166290e-01 -9.0685445070266724e-01 + -8.3814066648483276e-01 2.0578315854072571e-01 + <_> + 7.8123832702636719e+01 + + 1 2 2028 5.1965000000000000e+03 0 -1 2029 + 3.5000000000000000e+00 -2 -3 2030 1.2500000000000000e+01 + + -7.2157174348831177e-01 1.3367784023284912e-01 + -9.8569130897521973e-01 1. + <_> + 7.7883827209472656e+01 + + 1 2 2031 5.5000000000000000e+00 0 -1 2032 + 6.5000000000000000e+00 -2 -3 2033 3718. + + -2.4000172317028046e-01 3.8893476128578186e-01 + -9.0298855304718018e-01 -3.4131843596696854e-02 + <_> + 7.8381683349609375e+01 + + 1 2 2034 5.5000000000000000e+00 0 -1 2035 329. -2 -3 2036 + 4.0575000000000000e+03 + + 4.9785295128822327e-01 -1.1255059391260147e-01 + -9.2938506603240967e-01 9.1427725553512573e-01 + <_> + 7.8554908752441406e+01 + + 1 2 2037 4.2500000000000000e+01 0 -1 2038 + 1.0875000000000000e+03 -2 -3 2039 8.3500000000000000e+01 + + 5.7865291833877563e-01 -9.1586309671401978e-01 + 1.7322470247745514e-01 -7.1539419889450073e-01 + <_> + 7.8587066650390625e+01 + + 1 2 2040 77. 0 -1 2041 5.6850000000000000e+02 -2 -3 2042 + 3.7500000000000000e+01 + + -5.7372999191284180e-01 3.2160468399524689e-02 + 9.6851015090942383e-01 -1. + <_> + 7.8467521667480469e+01 + + 1 2 2043 7.5000000000000000e+00 0 -1 2044 + 1.3500000000000000e+01 -2 -3 2045 3.0500000000000000e+01 + + -7.3381966352462769e-01 7.9535079002380371e-01 + -5.9684050083160400e-01 2.6625540852546692e-01 + <_> + 7.8986984252929688e+01 + + 1 2 2046 2.7950000000000000e+02 0 -1 2047 + 5.6050000000000000e+02 -2 -3 2048 3.2500000000000000e+01 + + 5.1946407556533813e-01 -1.8982487916946411e-01 + 7.1982949972152710e-01 -4.8263704776763916e-01 + <_> + 7.8686080932617188e+01 + + 1 2 2049 7.5000000000000000e+00 0 -1 2050 944. -2 -3 2051 + 1.0500000000000000e+01 + + 6.5592408180236816e-01 -5.5339312553405762e-01 + -2.9819217324256897e-01 4.1327166557312012e-01 + <_> + 7.8943367004394531e+01 + + 1 2 2052 1.1500000000000000e+01 0 -1 2053 + 4.0650000000000000e+02 -2 -3 2054 2.5000000000000000e+00 + + -8.3834916353225708e-01 2.5729319453239441e-01 + -7.6927721500396729e-01 3.0943137407302856e-01 + <_> + 7.8510215759277344e+01 + + 1 2 2055 3.3500000000000000e+01 0 -1 2056 + 5.0000000000000000e-01 -2 -3 2057 8.5000000000000000e+00 + + 1.6588112711906433e-01 -4.3315169215202332e-01 + 7.9588627815246582e-01 -4.4464468955993652e-01 + <_> + 7.8833564758300781e+01 + + 1 2 2058 6.5000000000000000e+00 0 -1 2059 + 1.1650000000000000e+02 -2 -3 2060 7.6500000000000000e+01 + + -6.0747748613357544e-01 5.7677578926086426e-01 + 3.2334649562835693e-01 -7.1281516551971436e-01 + <_> + 7.9065544128417969e+01 + + 1 2 2061 114. 0 -1 2062 5.0000000000000000e-01 -2 -3 2063 + 1.1250000000000000e+02 + + 2.3197774589061737e-01 -5.4661935567855835e-01 + 6.7165571451187134e-01 -7.9622262716293335e-01 + <_> + 7.9402275085449219e+01 + + 1 2 2064 2.8050000000000000e+02 0 -1 2065 + 3.9650000000000000e+02 -2 -3 2066 2.9850000000000000e+02 + + -7.8204798698425293e-01 3.3673200011253357e-01 + -6.8767505884170532e-01 2.4135014414787292e-01 + <_> + 7.9591125488281250e+01 + + 1 2 2067 1.5000000000000000e+00 0 -1 2068 + 5.5000000000000000e+00 -2 -3 2069 140. + + -8.4002065658569336e-01 7.2916489839553833e-01 + 1.8884760141372681e-01 -8.0235344171524048e-01 + <_> + 7.9927177429199219e+01 + + 1 2 2070 4.0500000000000000e+01 0 -1 2071 + 8.2850000000000000e+02 -2 -3 2072 1.0500000000000000e+01 + + 3.3605861663818359e-01 -8.6610472202301025e-01 + 2.4379670619964600e-01 -5.3128516674041748e-01 + <_> + 7.9570045471191406e+01 + + 1 2 2073 1182. 0 -1 2074 3.2500000000000000e+01 -2 -3 2075 + 502. + + -3.5713455080986023e-01 2.8106349706649780e-01 + -8.3191645145416260e-01 9.3351656198501587e-01 + <_> + 7.9753128051757812e+01 + + 1 2 2076 2.5000000000000000e+00 0 -1 2077 + 4.7500000000000000e+01 -2 -3 2078 1.2045000000000000e+03 + + 1.8308171629905701e-01 -8.9866495132446289e-01 + 9.4026386737823486e-01 -8.5731178522109985e-01 + <_> + 7.9954711914062500e+01 + + 1 2 2079 9.5000000000000000e+00 0 -1 2080 + 1.0500000000000000e+01 -2 -3 2081 3.4615000000000000e+03 + + 3.0233853030949831e-03 -9.8875284194946289e-01 + 2.0158641040325165e-01 -8.2852333784103394e-01 + <_> + 8.0429855346679688e+01 + + 1 2 2082 4.8050000000000000e+02 0 -1 2083 + 5.2250000000000000e+02 -2 -3 2084 1.2500000000000000e+01 + + 7.6044726371765137e-01 -4.1115388274192810e-01 + -6.2775129079818726e-01 4.9296686053276062e-01 + <_> + 8.0253639221191406e+01 + + 1 2 2085 3.2850000000000000e+02 0 -1 2086 + 2.8500000000000000e+01 -2 -3 2087 2.2500000000000000e+01 + + 6.4995265007019043e-01 -8.1818318367004395e-01 + -4.3594300746917725e-01 2.5837844610214233e-01 + <_> + 8.0712348937988281e+01 + + 1 2 2088 5.5000000000000000e+00 0 -1 2089 + 1.4500000000000000e+01 -2 -3 2090 2.4500000000000000e+01 + + 4.5871067047119141e-01 -1.8673202395439148e-01 + -8.0201834440231323e-01 2.7421653270721436e-01 + <_> + 8.0954566955566406e+01 + + 1 2 2091 1.5000000000000000e+00 0 -1 2092 + 2.5000000000000000e+00 -2 -3 2093 3.5000000000000000e+00 + + 7.1520602703094482e-01 -8.5710084438323975e-01 + -5.3771287202835083e-01 2.4222078919410706e-01 + <_> + 8.0664779663085938e+01 + + 1 2 2094 5.0000000000000000e-01 0 -1 2095 852. -2 -3 2096 + 5.0500000000000000e+01 + + -9.4811320304870605e-01 7.3575115203857422e-01 + -2.8979244828224182e-01 6.3096255064010620e-01 + <_> + 8.0927169799804688e+01 + + 1 2 2097 3407. 0 -1 2098 800. -2 -3 2099 100. + + 2.6239001750946045e-01 -6.4345407485961914e-01 + -9.7739773988723755e-01 1. + <_> + 8.1038581848144531e+01 + + 1 2 2100 2.5000000000000000e+00 0 -1 2101 + 5.5000000000000000e+00 -2 -3 2102 5.0000000000000000e-01 + + 5.0993680953979492e-01 -6.5139651298522949e-01 + 3.4365540742874146e-01 -3.2318025827407837e-01 + <_> + 8.0995506286621094e+01 + + 1 2 2103 1.9500000000000000e+01 0 -1 2104 + 6.3500000000000000e+01 -2 -3 2105 2.7500000000000000e+01 + + -4.3078806251287460e-02 -8.3054763078689575e-01 + 4.1605877876281738e-01 -1. + <_> + 8.1449020385742188e+01 + + 1 2 2106 1.1525000000000000e+03 0 -1 2107 + 2.3500000000000000e+01 -2 -3 2108 5.5000000000000000e+00 + + -3.8596618920564651e-02 -7.3833715915679932e-01 + -8.4264433383941650e-01 4.7351169586181641e-01 + <_> + 8.1674888610839844e+01 + + 1 2 2109 6.5000000000000000e+00 0 -1 2110 + 6.8500000000000000e+01 -2 -3 2111 56. + + 2.2587312757968903e-01 -7.7641236782073975e-01 + -6.7178988456726074e-01 1. + <_> + 8.1059928894042969e+01 + + 1 2 2112 7.5000000000000000e+00 0 -1 2113 + 1.5850000000000000e+02 -2 -3 2114 2.5000000000000000e+00 + + -7.8622096776962280e-01 7.0347315073013306e-01 + 5.0727140903472900e-01 -1.2201854586601257e-01 + <_> + 8.1407531738281250e+01 + + 1 2 2115 1.2500000000000000e+01 0 -1 2116 + 5.5000000000000000e+00 -2 -3 2117 1.3750000000000000e+02 + + -6.2096095085144043e-01 7.2421133518218994e-01 + 3.4760445356369019e-01 -5.3716862201690674e-01 + <_> + 8.1844848632812500e+01 + + 1 2 2118 5.5050000000000000e+02 0 -1 2119 + 3.3500000000000000e+01 -2 -3 2120 9.7950000000000000e+02 + + -7.1007186174392700e-01 6.1295044422149658e-01 + 4.3731164932250977e-01 -1.8890057504177094e-01 + <_> + 8.1697082519531250e+01 + + 1 2 2121 3.7500000000000000e+01 0 -1 2122 + 5.0000000000000000e-01 -2 -3 2123 2.5000000000000000e+00 + + 3.3392754197120667e-01 -8.6948662996292114e-01 + -7.2286629676818848e-01 2.5838151574134827e-01 + <_> + 8.1909507751464844e+01 + + 1 2 2124 4.0500000000000000e+01 0 -1 2125 + 7.5500000000000000e+01 -2 -3 2126 1.0805000000000000e+03 + + -1.9372178614139557e-01 4.5466288924217224e-01 1. + -9.0210074186325073e-01 + <_> + 8.1375953674316406e+01 + + 1 2 2127 5.0000000000000000e-01 0 -1 2128 + 1.5000000000000000e+00 -2 -3 2129 2.1845000000000000e+03 + + -7.8440749645233154e-01 4.0864413976669312e-01 + -5.3355014324188232e-01 3.9062729477882385e-01 + <_> + 8.1887313842773438e+01 + + 1 2 2130 1.2450000000000000e+02 0 -1 2131 + 4.1665000000000000e+03 -2 -3 2132 1.0250000000000000e+02 + + -6.2995404005050659e-01 6.4907240867614746e-01 + 5.1135843992233276e-01 -3.9525008201599121e-01 + <_> + 8.2117805480957031e+01 + + 1 2 2133 5.5000000000000000e+00 0 -1 2134 534. -2 -3 2135 + 2.8500000000000000e+01 + + 8.9746987819671631e-01 -9.2895346879959106e-01 + 2.3048999905586243e-01 -6.7827922105789185e-01 + <_> + 8.1636238098144531e+01 + + 1 2 2136 1.0500000000000000e+01 0 -1 2137 + 6.7500000000000000e+01 -2 -3 2138 4.1500000000000000e+01 + + 4.9451547861099243e-01 -4.8156398534774780e-01 + -3.7169450521469116e-01 5.3676486015319824e-01 + <_> + 8.1995071411132812e+01 + + 1 2 2139 5.0465000000000000e+03 0 -1 2140 + 9.5500000000000000e+01 -2 -3 2141 5.0000000000000000e-01 + + -2.1792615950107574e-01 3.5883331298828125e-01 + 8.3887630701065063e-01 -9.6526902914047241e-01 + <_> + 8.2212608337402344e+01 + + 1 2 2142 1.5500000000000000e+01 0 -1 2143 + 5.5000000000000000e+00 -2 -3 2144 7.5000000000000000e+00 + + -7.6026850938796997e-01 2.1753302216529846e-01 + -7.7944552898406982e-01 2.8800919651985168e-01 + <_> + 8.2952514648437500e+01 + + 1 2 2145 1.0500000000000000e+01 0 -1 2146 + 1.7500000000000000e+01 -2 -3 2147 3.5000000000000000e+00 + + 7.3990541696548462e-01 -3.4350591897964478e-01 + -7.8702974319458008e-01 -3.6859430372714996e-02 + <_> + 8.2764221191406250e+01 + + 1 2 2148 3.8915000000000000e+03 0 -1 2149 + 9.5000000000000000e+00 -2 -3 2150 160. + + -2.7847471833229065e-01 2.9747706651687622e-01 -1. 1. + <_> + 8.3073318481445312e+01 + + 1 2 2151 8.5000000000000000e+00 0 -1 2152 + 7.5000000000000000e+00 -2 -3 2153 3.4500000000000000e+01 + + -3.0019268393516541e-01 4.2716455459594727e-01 + 3.0783307552337646e-01 -7.1251338720321655e-01 + <_> + 8.3382904052734375e+01 + + 1 2 2154 146. 0 -1 2155 6.5000000000000000e+00 -2 -3 2156 + 253. + + -3.7641048431396484e-01 3.0958160758018494e-01 + -9.3819731473922729e-01 1. + <_> + 8.3006187438964844e+01 + + 1 2 2157 3.8500000000000000e+01 0 -1 2158 + 5.4500000000000000e+01 -2 -3 2159 1.9500000000000000e+01 + + -4.9478387832641602e-01 3.9714443683624268e-01 + -1.6719745099544525e-01 6.8846195936203003e-01 + <_> + 8.3494125366210938e+01 + + 1 2 2160 3.9345000000000000e+03 0 -1 2161 1. -2 -3 2162 + 8.0550000000000000e+02 + + 1. -1. 7.6673603057861328e-01 -1.6208630055189133e-02 + <_> + 8.3684944152832031e+01 + + 1 2 2163 4.7150000000000000e+02 0 -1 2164 31. -2 -3 2165 + 8.5000000000000000e+00 + + -7.7217268943786621e-01 4.8103070259094238e-01 + -7.8892275691032410e-02 5.8338689804077148e-01 + <_> + 8.3892440795898438e+01 + + 1 2 2166 308. 0 -1 2167 5.7650000000000000e+02 -2 -3 2168 + 4.1500000000000000e+01 + + 2.0749828219413757e-01 -6.5656942129135132e-01 + -9.0315932035446167e-01 1. + <_> + 8.3916496276855469e+01 + + 1 2 2169 3.0500000000000000e+01 0 -1 2170 + 2.8950000000000000e+02 -2 -3 2171 4773. + + 2.4049011990427971e-02 -5.8593571186065674e-01 + -7.0577090978622437e-01 9.1756677627563477e-01 + <_> + 8.3863990783691406e+01 + + 1 2 2172 444. 0 -1 2173 136. -2 -3 2174 + 1.5000000000000000e+00 + + -7.2386598587036133e-01 7.6625251770019531e-01 + -4.1046851873397827e-01 3.1866103410720825e-01 + <_> + 8.4162803649902344e+01 + + 1 2 2175 4.2450000000000000e+02 0 -1 2176 + 2.5000000000000000e+00 -2 -3 2177 5.4500000000000000e+01 + + -4.9317064881324768e-01 2.9881379008293152e-01 + -6.5457558631896973e-01 6.6832679510116577e-01 + <_> + 8.4366767883300781e+01 + + 1 2 2178 1.7650000000000000e+02 0 -1 2179 + 2.9500000000000000e+01 -2 -3 2180 9.1500000000000000e+01 + + 2.0396536588668823e-01 -5.5911725759506226e-01 1. + -9.1281843185424805e-01 + <_> + 8.4119194030761719e+01 + + 1 2 2181 2.5000000000000000e+00 0 -1 2182 + 1.6500000000000000e+01 -2 -3 2183 1.5000000000000000e+00 + + 3.0720415711402893e-01 -6.1874228715896606e-01 + 4.2462083697319031e-01 -3.2996997237205505e-01 + <_> + 8.4430221557617188e+01 + + 1 2 2184 7.6850000000000000e+02 0 -1 2185 + 1.5000000000000000e+00 -2 -3 2186 1.5500000000000000e+01 + + 2.5913137197494507e-01 -4.6971523761749268e-01 + -4.3263432383537292e-01 5.7092773914337158e-01 + <_> + 8.4639114379882812e+01 + + 1 2 2187 2.8500000000000000e+01 0 -1 2188 + 1.5000000000000000e+00 -2 -3 2189 2.0500000000000000e+01 + + -8.7549871206283569e-01 2.0889294147491455e-01 + -7.7527189254760742e-01 9.5611155033111572e-01 + <_> + 8.4146507263183594e+01 + + 1 2 2190 2.9500000000000000e+01 0 -1 2191 + 1.3500000000000000e+01 -2 -3 2192 1.3500000000000000e+01 + + -4.9260720610618591e-01 1.9271886348724365e-01 + 6.6219002008438110e-01 -8.9827889204025269e-01 + <_> + 8.4403144836425781e+01 + + 1 2 2193 1.9500000000000000e+01 0 -1 2194 + 6.8750000000000000e+02 -2 -3 2195 6.5500000000000000e+01 + + -5.4722160100936890e-01 2.5663515925407410e-01 + -6.7314952611923218e-01 5.6016397476196289e-01 + <_> + 8.4512977600097656e+01 + + 1 2 2196 1.7500000000000000e+01 0 -1 2197 + 8.5000000000000000e+00 -2 -3 2198 4.9500000000000000e+01 + + 5.1628947257995605e-02 -8.8596558570861816e-01 + 2.2394882142543793e-01 -8.4310758113861084e-01 + <_> + 8.4825332641601562e+01 + + 1 2 2199 1.5000000000000000e+00 0 -1 2200 + 8.5000000000000000e+00 -2 -3 2201 4.8500000000000000e+01 + + -9.5332622528076172e-01 3.3586847782135010e-01 + -5.5753439664840698e-01 3.1235861778259277e-01 + <_> + 8.4921630859375000e+01 + + 1 2 2202 3.0035000000000000e+03 0 -1 2203 + 2.5000000000000000e+00 -2 -3 2204 1.3850000000000000e+02 + + -2.7263507246971130e-01 3.0273589491844177e-01 1. + -8.9314818382263184e-01 + <_> + 8.4953636169433594e+01 + + 1 2 2205 1.3650000000000000e+02 0 -1 2206 21. -2 -3 2207 + 1.0450000000000000e+02 + + 9.7071325778961182e-01 -8.3434158563613892e-01 + -1.7443342506885529e-01 4.1703993082046509e-01 + <_> + 8.5531066894531250e+01 + + 1 2 2208 4.0500000000000000e+01 0 -1 2209 + 2.8450000000000000e+02 -2 -3 2210 5.0000000000000000e-01 + + -5.4008752107620239e-01 5.7742959260940552e-01 + 6.5463826060295105e-02 -6.4212870597839355e-01 + <_> + 8.5679679870605469e+01 + + 1 2 2211 6.5000000000000000e+00 0 -1 2212 + 4.2500000000000000e+01 -2 -3 2213 5.5000000000000000e+00 + + -7.2564774751663208e-01 7.0831966400146484e-01 + -6.6582089662551880e-01 2.6227703690528870e-01 + <_> + 8.5235992431640625e+01 + + 1 2 2214 4.5500000000000000e+01 0 -1 2215 + 2.5000000000000000e+00 -2 -3 2216 1.5000000000000000e+00 + + -4.4622960686683655e-01 5.0379693508148193e-01 + 2.8327786922454834e-01 -6.1233770847320557e-01 + <_> + 8.5567344665527344e+01 + + 1 2 2217 5.0000000000000000e-01 0 -1 2218 + 6.0500000000000000e+01 -2 -3 2219 5.0000000000000000e-01 + + 3.3135503530502319e-01 -7.7173143625259399e-01 + 5.3300887346267700e-01 -5.7684963941574097e-01 + <_> + 8.5617721557617188e+01 + + 1 2 2220 1.1500000000000000e+01 0 -1 2221 + 6.7350000000000000e+02 -2 -3 2222 2.1885000000000000e+03 + + 4.9268788099288940e-01 -3.9361280202865601e-01 + 5.4581469297409058e-01 -1. + <_> + 8.5892776489257812e+01 + + 1 2 2223 1.0885000000000000e+03 0 -1 2224 + 1.0950000000000000e+02 -2 -3 2225 1.2500000000000000e+01 + + 8.7355607748031616e-01 -8.9644581079483032e-01 + -3.6866596341133118e-01 2.7505651116371155e-01 + <_> + 8.6008476257324219e+01 + + 1 2 2226 2.5150000000000000e+02 0 -1 2227 + 1.0500000000000000e+01 -2 -3 2228 2.2500000000000000e+01 + + 7.3005491495132446e-01 -8.4803074598312378e-01 + -6.7341393232345581e-01 6.4791239798069000e-02 + <_> + 8.5301307678222656e+01 + + 1 2 2229 9.5000000000000000e+00 0 -1 2230 + 1.0500000000000000e+01 -2 -3 2231 5.5000000000000000e+00 + + -7.0716243982315063e-01 3.0324958264827728e-02 + -3.6973038315773010e-01 5.3505402803421021e-01 + <_> + 8.5578842163085938e+01 + + 1 2 2232 9.9950000000000000e+02 0 -1 2233 + 5.0000000000000000e-01 -2 -3 2234 57. + + -5.4884088039398193e-01 2.7752920985221863e-01 + -7.9685103893280029e-01 5.8429610729217529e-01 + <_> + 8.5900283813476562e+01 + + 1 2 2235 1.4005000000000000e+03 0 -1 2236 + 1.1500000000000000e+01 -2 -3 2237 407. + + -4.8077926039695740e-01 3.2144653797149658e-01 + 8.7326759099960327e-01 -7.6497209072113037e-01 + <_> + 8.6183494567871094e+01 + + 1 2 2238 5.0000000000000000e-01 0 -1 2239 + 1.8500000000000000e+01 -2 -3 2240 2018. + + 5.9915566444396973e-01 -3.6263227462768555e-01 + -4.3329817056655884e-01 7.2292387485504150e-01 + <_> + 8.6417350769042969e+01 + + 1 2 2241 116. 0 -1 2242 7.9500000000000000e+01 -2 -3 2243 + 1.1500000000000000e+01 + + 2.3385088145732880e-01 -7.2572106122970581e-01 + -8.2059645652770996e-01 1. + <_> + 8.6353157043457031e+01 + + 1 2 2244 5.4750000000000000e+02 0 -1 2245 + 4.1650000000000000e+02 -2 -3 2246 7.4835000000000000e+03 + + -3.8013687729835510e-01 7.1552526950836182e-01 + -6.0602325201034546e-01 1.3700281083583832e-01 + <_> + 8.6689994812011719e+01 + + 1 2 2247 2.5000000000000000e+00 0 -1 2248 + 4.9500000000000000e+01 -2 -3 2249 3.1500000000000000e+01 + + -8.8249641656875610e-01 6.3650465011596680e-01 + -2.8715553879737854e-01 3.3683738112449646e-01 + <_> + 8.6457923889160156e+01 + + 1 2 2250 2.0500000000000000e+01 0 -1 2251 + 5.0000000000000000e-01 -2 -3 2252 1.5550000000000000e+02 + + 7.5483375787734985e-01 -5.7755672931671143e-01 + 3.1271988153457642e-01 -9.3355900049209595e-01 + <_> + 8.6848548889160156e+01 + + 1 2 2253 5.0000000000000000e-01 0 -1 2254 + 8.5000000000000000e+00 -2 -3 2255 1.4500000000000000e+01 + + -8.8290500640869141e-01 3.9062538743019104e-01 + 3.0572377145290375e-02 -6.9165939092636108e-01 + <_> + 8.7283264160156250e+01 + + 1 2 2256 5.6500000000000000e+01 0 -1 2257 + 2.5850000000000000e+02 -2 -3 2258 5.6500000000000000e+01 + + 7.9447448253631592e-01 -2.4108846485614777e-01 + -9.5247858762741089e-01 7.4498760700225830e-01 + <_> + 8.7402679443359375e+01 + + 1 2 2259 1.9050000000000000e+02 0 -1 2260 + 8.5000000000000000e+00 -2 -3 2261 1.6050000000000000e+02 + + 7.9782551527023315e-01 -4.8126858472824097e-01 + 3.2817113399505615e-01 -9.2351150512695312e-01 + <_> + 8.7450622558593750e+01 + + 1 2 2262 2.5000000000000000e+00 0 -1 2263 + 1.0750000000000000e+02 -2 -3 2264 1.2500000000000000e+01 + + -9.5446103811264038e-01 3.0746808648109436e-01 + 2.6287922263145447e-01 -5.2057027816772461e-01 + <_> + 8.7063316345214844e+01 + + 1 2 2265 1.6500000000000000e+01 0 -1 2266 + 6.4500000000000000e+01 -2 -3 2267 1.2895000000000000e+03 + + 9.6434988081455231e-02 -8.1099587678909302e-01 + 3.5276085138320923e-01 -6.3035190105438232e-01 + <_> + 8.7586761474609375e+01 + + 1 2 2268 5.5000000000000000e+00 0 -1 2269 + 3.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 + + -8.5307574272155762e-01 -5.4498150944709778e-02 + 5.2659434080123901e-01 -2.1662306785583496e-01 + <_> + 8.7653213500976562e+01 + + 1 2 2271 2.5000000000000000e+00 0 -1 2272 + 1.5000000000000000e+00 -2 -3 2273 239. + + 4.1265711188316345e-01 -2.8464233875274658e-01 + 6.7191797494888306e-01 -6.5316730737686157e-01 + <_> + 8.7628303527832031e+01 + + 1 2 2274 1.5000000000000000e+00 0 -1 2275 + 3.5000000000000000e+00 -2 -3 2276 5.0000000000000000e-01 + + -7.2243005037307739e-01 8.7789368629455566e-01 + 7.9855352640151978e-01 -2.4909071624279022e-02 + <_> + 8.7940948486328125e+01 + + 1 2 2277 8.5000000000000000e+00 0 -1 2278 + 4.4500000000000000e+01 -2 -3 2279 3.5000000000000000e+00 + + 8.1174898147583008e-01 -6.3333249092102051e-01 + -7.8106856346130371e-01 3.1264203786849976e-01 + <_> + 8.8444465637207031e+01 + + 1 2 2280 3.1500000000000000e+01 0 -1 2281 + 3.5000000000000000e+00 -2 -3 2282 5.8500000000000000e+01 + + -8.7983781099319458e-01 6.6502499580383301e-01 + 5.9884071350097656e-01 -3.4494200348854065e-01 + <_> + 8.8562141418457031e+01 + + 1 2 2283 8.8500000000000000e+01 0 -1 2284 + 3.0850000000000000e+02 -2 -3 2285 1.8685000000000000e+03 + + 1.1767382174730301e-01 -7.1909028291702271e-01 + -8.0886626243591309e-01 3.6782959103584290e-01 + <_> + 8.8689140319824219e+01 + + 1 2 2286 2.5000000000000000e+00 0 -1 2287 + 1.5000000000000000e+00 -2 -3 2288 2.9500000000000000e+01 + + -6.8951946496963501e-01 3.7994578480720520e-01 + -4.4435909390449524e-01 7.3357677459716797e-01 + <_> + 8.8993270874023438e+01 + + 1 2 2289 8.5450000000000000e+02 0 -1 2290 + 9.3500000000000000e+01 -2 -3 2291 1.0850000000000000e+02 + + 3.0412796139717102e-01 -5.4215848445892334e-01 + -7.8242719173431396e-01 5.9332287311553955e-01 + <_> + 8.8982391357421875e+01 + + 1 2 2292 1.9350000000000000e+02 0 -1 2293 + 5.0500000000000000e+01 -2 -3 2294 3.3500000000000000e+01 + + -1.0881225578486919e-02 -7.1214753389358521e-01 + -5.7588249444961548e-01 7.9207491874694824e-01 + <_> + 8.8675567626953125e+01 + + 1 2 2295 1.2500000000000000e+01 0 -1 2296 + 2.5000000000000000e+00 -2 -3 2297 1.5000000000000000e+00 + + -8.9892637729644775e-01 1. 3.4347891807556152e-01 + -3.1791657209396362e-01 + <_> + 8.8704269409179688e+01 + + 1 2 2298 1.1500000000000000e+01 0 -1 2299 + 4.7500000000000000e+01 -2 -3 2300 1.1500000000000000e+01 + + -2.4499019980430603e-01 5.0305950641632080e-01 + -7.4506103992462158e-01 1.1293403059244156e-01 + <_> + 8.8582321166992188e+01 + + 1 2 2301 5.0000000000000000e-01 0 -1 2302 + 1.2500000000000000e+01 -2 -3 2303 5.0000000000000000e-01 + + -3.6801630258560181e-01 4.8782908916473389e-01 + 7.5426805019378662e-01 -4.7202652692794800e-01 + <_> + 8.8955085754394531e+01 + + 1 2 2304 5.0000000000000000e-01 0 -1 2305 + 7.9500000000000000e+01 -2 -3 2306 1.0755000000000000e+03 + + 3.7275862693786621e-01 -4.8154482245445251e-01 + 6.9586211442947388e-01 -5.6343889236450195e-01 + <_> + 8.8874618530273438e+01 + + 1 2 2307 8.5500000000000000e+01 0 -1 2308 + 5.3650000000000000e+02 -2 -3 2309 694. + + 6.7843574285507202e-01 -4.6394348144531250e-01 + 6.8638551235198975e-01 -8.8641919195652008e-02 + <_> + 8.9109901428222656e+01 + + 1 2 2310 2.8500000000000000e+01 0 -1 2311 + 2.5000000000000000e+00 -2 -3 2312 6.1150000000000000e+02 + + -8.3614200353622437e-01 2.3528522253036499e-01 + -9.5000904798507690e-01 1. + <_> + 8.8907135009765625e+01 + + 1 2 2313 1.1525000000000000e+03 0 -1 2314 + 7.6850000000000000e+02 -2 -3 2315 3.7500000000000000e+01 + + -2.0276506245136261e-01 4.0722262859344482e-01 + -8.5420507192611694e-01 8.8535934686660767e-01 + <_> + 8.9519294738769531e+01 + + 1 2 2316 5.5000000000000000e+00 0 -1 2317 + 8.3650000000000000e+02 -2 -3 2318 2.5000000000000000e+00 + + 6.1215674877166748e-01 -2.8454613685607910e-01 + -6.7182534933090210e-01 1.3038201630115509e-01 + <_> + 8.9072807312011719e+01 + + 1 2 2319 5.0000000000000000e-01 0 -1 2320 + 1.2500000000000000e+01 -2 -3 2321 5.3500000000000000e+01 + + -3.0968821048736572e-01 6.4217364788055420e-01 + -4.4648653268814087e-01 3.5627630352973938e-01 + <_> + 8.9592712402343750e+01 + + 1 2 2322 2.5000000000000000e+00 0 -1 2323 + 2.6500000000000000e+01 -2 -3 2324 4.5000000000000000e+00 + + -4.7493380308151245e-01 8.2513862848281860e-01 + -2.1184358000755310e-01 5.1990169286727905e-01 + <_> + 8.9800750732421875e+01 + + 1 2 2325 2.6850000000000000e+02 0 -1 2326 + 1.4250000000000000e+02 -2 -3 2327 2.8950000000000000e+02 + + 1. -9.8386675119400024e-01 2.0803783833980560e-01 + -7.4743682146072388e-01 + <_> + 8.9978019714355469e+01 + + 1 2 2328 9.6500000000000000e+01 0 -1 2329 + 5.0000000000000000e-01 -2 -3 2330 1.0500000000000000e+01 + + 3.9577171206474304e-01 -1.8832282721996307e-01 1. + -9.4037795066833496e-01 + <_> + 9.0186340332031250e+01 + + 1 2 2331 9.5000000000000000e+00 0 -1 2332 + 3.9500000000000000e+01 -2 -3 2333 4.1150000000000000e+02 + + 5.1927842199802399e-02 -5.1345849037170410e-01 + -6.9976913928985596e-01 7.2176700830459595e-01 + <_> + 9.0408126831054688e+01 + + 1 2 2334 1.4500000000000000e+01 0 -1 2335 + 5.6950000000000000e+02 -2 -3 2336 2.5000000000000000e+00 + + 5.3421056270599365e-01 -8.4200710058212280e-01 + -7.9201179742813110e-01 2.2178900241851807e-01 + <_> + 9.0207931518554688e+01 + + 1 2 2337 7.5000000000000000e+00 0 -1 2338 + 3.0150000000000000e+02 -2 -3 2339 8.1500000000000000e+01 + + 2.6031082868576050e-01 -5.6561201810836792e-01 + -6.8547034263610840e-01 6.9407206773757935e-01 + <_> + 9.0302421569824219e+01 + + 1 2 2340 3.1555000000000000e+03 0 -1 2341 + 2.5500000000000000e+01 -2 -3 2342 2.0500000000000000e+01 + + -4.6551218628883362e-01 6.1541539430618286e-01 + -5.8543795347213745e-01 4.2197912931442261e-01 + <_> + 9.0720130920410156e+01 + + 1 2 2343 2.2250000000000000e+02 0 -1 2344 + 2.6765000000000000e+03 -2 -3 2345 6.5000000000000000e+00 + + -1. 4.2247042059898376e-01 -5.9496659040451050e-01 + 7.3635950684547424e-02 + <_> + 9.0678649902343750e+01 + + 1 2 2346 2.4985000000000000e+03 0 -1 2347 + 5.5050000000000000e+02 -2 -3 2348 1.7500000000000000e+01 + + -2.6645794510841370e-01 5.7650017738342285e-01 + -6.3965815305709839e-01 1.3717547059059143e-01 + <_> + 9.1026916503906250e+01 + + 1 2 2349 8.5000000000000000e+00 0 -1 2350 + 9.5000000000000000e+00 -2 -3 2351 399. + + 3.4826722741127014e-01 -2.6130944490432739e-01 + -8.7031137943267822e-01 5.0992918014526367e-01 + <_> + 9.0745491027832031e+01 + + 1 2 2352 2.0500000000000000e+01 0 -1 2353 + 2.8415000000000000e+03 -2 -3 2354 1.3195000000000000e+03 + + 3.8361868262290955e-01 -6.5678369998931885e-01 + -7.2137272357940674e-01 2.9168155789375305e-01 + <_> + 9.0282897949218750e+01 + + 1 2 2355 5.0000000000000000e-01 0 -1 2356 + 1.8500000000000000e+01 -2 -3 2357 5.5000000000000000e+00 + + -5.5979007482528687e-01 4.2797699570655823e-01 + -7.2097688913345337e-01 -2.2096272557973862e-02 + <_> + 9.0329040527343750e+01 + + 1 2 2358 5.0000000000000000e-01 0 -1 2359 + 5.0000000000000000e-01 -2 -3 2360 1.3850000000000000e+02 + + -8.6151492595672607e-01 6.3388091325759888e-01 + 4.6142544597387314e-02 -7.7132421731948853e-01 + <_> + 9.0726905822753906e+01 + + 1 2 2361 5.0000000000000000e-01 0 -1 2362 + 1.3605000000000000e+03 -2 -3 2363 4.4500000000000000e+01 + + -4.9816811084747314e-01 3.9786130189895630e-01 + -4.7495251893997192e-01 4.1306164860725403e-01 + <_> + 9.0184005737304688e+01 + + 1 2 2364 1.1225000000000000e+03 0 -1 2365 + 1.6455000000000000e+03 -2 -3 2366 6.5000000000000000e+00 + + -5.4290074110031128e-01 3.3631756901741028e-01 + -6.0382646322250366e-01 2.5190624594688416e-01 + <_> + 9.1035018920898438e+01 + + 1 2 2367 1.2185000000000000e+03 0 -1 2368 + 1.4635000000000000e+03 -2 -3 2369 7.5000000000000000e+00 + + -9.1523426771163940e-01 8.5101437568664551e-01 + -5.3849363327026367e-01 7.0430345833301544e-02 + <_> + 9.1617080688476562e+01 + + 1 2 2370 5.7450000000000000e+02 0 -1 2371 + 7.5000000000000000e+00 -2 -3 2372 1.2500000000000000e+01 + + -5.5275338888168335e-01 5.8206313848495483e-01 + 7.8669518232345581e-02 -6.4758539199829102e-01 + <_> + 9.1865600585937500e+01 + + 1 2 2373 1.5000000000000000e+00 0 -1 2374 31. -2 -3 2375 + 2.5000000000000000e+00 + + 7.1970331668853760e-01 -6.8706613779067993e-01 + -8.0606603622436523e-01 2.4852037429809570e-01 + <_> + 9.1933456420898438e+01 + + 1 2 2376 1.6500000000000000e+01 0 -1 2377 + 2.5350000000000000e+02 -2 -3 2378 2.7500000000000000e+01 + + 6.7855246365070343e-02 -7.4723839759826660e-01 + 3.3876419067382812e-01 -6.6246157884597778e-01 + <_> + 9.2073440551757812e+01 + + 1 2 2379 1.6150000000000000e+02 0 -1 2380 + 3.4905000000000000e+03 -2 -3 2381 29. + + 1.3998487591743469e-01 -9.7840291261672974e-01 + -9.9056637287139893e-01 1. + <_> + 9.2266113281250000e+01 + + 1 2 2382 1.5000000000000000e+00 0 -1 2383 + 3.0500000000000000e+01 -2 -3 2384 1.6500000000000000e+01 + + 4.2297352105379105e-02 -7.5529569387435913e-01 + 3.4410062432289124e-01 -7.4833053350448608e-01 + <_> + 9.2566078186035156e+01 + + 1 2 2385 2352. 0 -1 2386 7.5000000000000000e+00 -2 -3 2387 + 3.6150000000000000e+02 + + -7.9286593198776245e-01 2.6059108972549438e-01 + 7.3781818151473999e-01 -8.2013517618179321e-02 + <_> + 9.2297134399414062e+01 + + 1 2 2388 5.5000000000000000e+00 0 -1 2389 + 1.2500000000000000e+01 -2 -3 2390 4.4500000000000000e+01 + + -7.0269703865051270e-01 4.9800133705139160e-01 + 3.9258196949958801e-01 -2.6894846558570862e-01 + <_> + 9.2234367370605469e+01 + + 1 2 2391 8.8500000000000000e+01 0 -1 2392 + 5.1500000000000000e+01 -2 -3 2393 4.1500000000000000e+01 + + -6.2763020396232605e-02 6.3001161813735962e-01 + -8.5735118389129639e-01 6.4268112182617188e-01 + <_> + 9.2365852355957031e+01 + + 1 2 2394 1.0015000000000000e+03 0 -1 2395 + 7.6050000000000000e+02 -2 -3 2396 5.5000000000000000e+00 + + -3.7476244568824768e-01 2.9709032177925110e-01 + 5.4132920503616333e-01 -8.3887267112731934e-01 + <_> + 9.2131614685058594e+01 + + 1 2 2397 1.5000000000000000e+00 0 -1 2398 + 8.3500000000000000e+01 -2 -3 2399 5.5000000000000000e+00 + + -6.0538351535797119e-01 5.1848065853118896e-01 + -8.3529579639434814e-01 3.1571540236473083e-01 + <_> + 9.2501167297363281e+01 + + 1 2 2400 4.1500000000000000e+01 0 -1 2401 + 5.5000000000000000e+00 -2 -3 2402 5.5000000000000000e+00 + + -8.4844219684600830e-01 3.7978658080101013e-01 + -7.1654027700424194e-01 4.2168378829956055e-02 + <_> + 9.2843521118164062e+01 + + 1 2 2403 2.5000000000000000e+00 0 -1 2404 + 6.4500000000000000e+01 -2 -3 2405 5.4350000000000000e+02 + + 3.3212310075759888e-01 -8.3203417062759399e-01 + 4.9931150674819946e-01 -6.3223975896835327e-01 + <_> + 9.2861694335937500e+01 + + 1 2 2406 8.0500000000000000e+01 0 -1 2407 108. -2 -3 2408 + 1.6755000000000000e+03 + + 1.3975634239614010e-02 -7.8626310825347900e-01 + 5.7174843549728394e-01 -1.2674526870250702e-01 + <_> + 9.2968948364257812e+01 + + 1 2 2409 9.1500000000000000e+01 0 -1 2410 1289. -2 -3 2411 + 3.9500000000000000e+01 + + 1.2590126693248749e-01 -6.0328000783920288e-01 + -4.6332037448883057e-01 6.0493034124374390e-01 + <_> + 9.2898025512695312e+01 + + 1 2 2412 1.1450000000000000e+02 0 -1 2413 + 1.2050000000000000e+02 -2 -3 2414 1.4500000000000000e+01 + + -2.3465740680694580e-01 3.8865172863006592e-01 + -8.5783010721206665e-01 6.1523634195327759e-01 + <_> + 9.3257911682128906e+01 + + 1 2 2415 5.0000000000000000e-01 0 -1 2416 4262. -2 -3 2417 + 4.2050000000000000e+02 + + -9.0746092796325684e-01 6.8183261156082153e-01 + 3.5988852381706238e-01 -2.8322571516036987e-01 + <_> + 9.3038124084472656e+01 + + 1 2 2418 172. 0 -1 2419 5.5000000000000000e+00 -2 -3 2420 + 20. + + -2.1979008615016937e-01 3.5657486319541931e-01 -1. 1. + <_> + 9.3356796264648438e+01 + + 1 2 2421 1.3350000000000000e+02 0 -1 2422 + 1.4055000000000000e+03 -2 -3 2423 5.8950000000000000e+02 + + -9.2216557264328003e-01 3.1866943836212158e-01 + -5.3239977359771729e-01 5.1732164621353149e-01 + <_> + 9.3672409057617188e+01 + + 1 2 2424 5.0000000000000000e-01 0 -1 2425 + 5.0000000000000000e-01 -2 -3 2426 5.0000000000000000e-01 + + -8.1506562232971191e-01 3.1561306118965149e-01 + 5.0408166646957397e-01 -6.1532169580459595e-01 + <_> + 9.3130691528320312e+01 + + 1 2 2427 3.5500000000000000e+01 0 -1 2428 + 3.4305000000000000e+03 -2 -3 2429 505. + + -5.4171895980834961e-01 9.3477241694927216e-02 + 7.5641244649887085e-01 -8.8457739353179932e-01 + <_> + 9.3192596435546875e+01 + + 1 2 2430 6.4150000000000000e+02 0 -1 2431 2249. -2 -3 2432 + 662. + + 6.1905395239591599e-02 -7.2703468799591064e-01 + -9.1928023099899292e-01 9.8033905029296875e-01 + <_> + 9.3644752502441406e+01 + + 1 2 2433 1.5500000000000000e+01 0 -1 2434 + 1.7500000000000000e+01 -2 -3 2435 6.5000000000000000e+00 + + 4.3795633316040039e-01 -4.9344247579574585e-01 + 4.5216166973114014e-01 -3.1545853614807129e-01 + <_> + 9.3540618896484375e+01 + + 1 2 2436 5.0000000000000000e-01 0 -1 2437 + 1.3500000000000000e+01 -2 -3 2438 4.5500000000000000e+01 + + -1.0413412004709244e-01 6.4089792966842651e-01 + -3.8926449418067932e-01 8.7481313943862915e-01 + <_> + 9.3962448120117188e+01 + + 1 2 2439 242. 0 -1 2440 1.1500000000000000e+01 -2 -3 2441 + 2.9500000000000000e+01 + + -1.6308744251728058e-01 4.2182672023773193e-01 + -9.0694606304168701e-01 1. + <_> + 9.4556045532226562e+01 + + 1 2 2442 3.2500000000000000e+01 0 -1 2443 + 2.5000000000000000e+00 -2 -3 2444 1.4500000000000000e+01 + + -6.9347047805786133e-01 6.4435130357742310e-01 + -5.9788930416107178e-01 7.7255569398403168e-02 + <_> + 9.4721496582031250e+01 + + 1 2 2445 1.5500000000000000e+01 0 -1 2446 + 9.5000000000000000e+00 -2 -3 2447 2.9500000000000000e+01 + + -4.3441089987754822e-01 1.6544458270072937e-01 + -6.3126134872436523e-01 7.8642731904983521e-01 + <_> + 9.4984420776367188e+01 + + 1 2 2448 3.8645000000000000e+03 0 -1 2449 + 1.7925000000000000e+03 -2 -3 2450 60. + + -4.4316318631172180e-01 3.3754405379295349e-01 + -7.9294669628143311e-01 8.5425835847854614e-01 + <_> + 9.4582656860351562e+01 + + 1 2 2451 2.5000000000000000e+00 0 -1 2452 165. -2 -3 2453 + 5.2500000000000000e+01 + + 2.6933476328849792e-01 -6.8854063749313354e-01 + -8.7762522697448730e-01 1.4154928922653198e-01 + <_> + 9.4399383544921875e+01 + + 1 2 2454 68. 0 -1 2455 7.6850000000000000e+02 -2 -3 2456 + 4.3500000000000000e+01 + + -1.8327303230762482e-01 4.6131238341331482e-01 + -9.6990627050399780e-01 8.6611026525497437e-01 + <_> + 9.5118980407714844e+01 + + 1 2 2457 1.2225000000000000e+03 0 -1 2458 + 8.0050000000000000e+02 -2 -3 2459 8.2850000000000000e+02 + + -5.3803724050521851e-01 7.1959483623504639e-01 + -8.1214201450347900e-01 -5.1834270358085632e-02 + <_> + 9.4748359680175781e+01 + + 1 2 2460 2.4500000000000000e+01 0 -1 2461 + 5.0500000000000000e+01 -2 -3 2462 5.5000000000000000e+00 + + 7.3085886240005493e-01 -6.9121128320693970e-01 + 3.2903286814689636e-01 -3.7062501907348633e-01 + <_> + 9.4972839355468750e+01 + + 1 2 2463 5.5000000000000000e+00 0 -1 2464 + 2.8450000000000000e+02 -2 -3 2465 3.8915000000000000e+03 + + 4.3351098895072937e-01 -7.3641782999038696e-01 + 2.2448168694972992e-01 -7.1434223651885986e-01 + <_> + 9.5275985717773438e+01 + + 1 2 2466 1.0500000000000000e+01 0 -1 2467 + 5.0000000000000000e-01 -2 -3 2468 4.7250000000000000e+02 + + 9.6811644732952118e-02 -7.6387089490890503e-01 + -3.6428251862525940e-01 3.0314624309539795e-01 + <_> + 9.4958412170410156e+01 + + 1 2 2469 4.8050000000000000e+02 0 -1 2470 68. -2 -3 2471 + 8.5000000000000000e+00 + + -3.1757611036300659e-01 8.6130934953689575e-01 + 4.5709180831909180e-01 -6.0632956027984619e-01 + <_> + 9.5323020935058594e+01 + + 1 2 2472 2.8050000000000000e+02 0 -1 2473 + 8.5000000000000000e+00 -2 -3 2474 3.1500000000000000e+01 + + -5.9738260507583618e-01 3.6461219191551208e-01 + -4.8098289966583252e-01 4.0610322356224060e-01 + <_> + 9.5531364440917969e+01 + + 1 2 2475 9.6500000000000000e+01 0 -1 2476 + 2.5000000000000000e+00 -2 -3 2477 6.5000000000000000e+00 + + -6.9760245084762573e-01 2.0834487676620483e-01 + -9.1544830799102783e-01 1. + <_> + 9.5781745910644531e+01 + + 1 2 2478 8.8500000000000000e+01 0 -1 2479 + 1.2500000000000000e+01 -2 -3 2480 4.6500000000000000e+01 + + -4.0220642089843750e-01 2.5037932395935059e-01 + -7.7450615167617798e-01 1. + <_> + 9.5803649902343750e+01 + + 1 2 2481 5.0000000000000000e-01 0 -1 2482 + 4.3250000000000000e+02 -2 -3 2483 1.4500000000000000e+01 + + 4.0768721699714661e-01 -7.2477263212203979e-01 + 4.5463231205940247e-01 -4.9192586541175842e-01 + <_> + 9.5542800903320312e+01 + + 1 2 2484 8.5000000000000000e+00 0 -1 2485 + 4.5000000000000000e+00 -2 -3 2486 2.7450000000000000e+02 + + -7.1822851896286011e-01 2.5916630029678345e-01 + -5.6648039817810059e-01 3.5922342538833618e-01 + <_> + 9.5895820617675781e+01 + + 1 2 2487 5.2500000000000000e+01 0 -1 2488 + 5.0000000000000000e-01 -2 -3 2489 7.5000000000000000e+00 + + 3.5301324725151062e-01 -3.0667924880981445e-01 + 3.2827284932136536e-01 -8.0632358789443970e-01 + <_> + 9.6157928466796875e+01 + + 1 2 2490 2.5000000000000000e+00 0 -1 2491 + 2.5500000000000000e+01 -2 -3 2492 2.1500000000000000e+01 + + 4.8798337578773499e-01 -9.5308113098144531e-01 + -5.1750040054321289e-01 2.6211360096931458e-01 + <_> + 9.6371978759765625e+01 + + 1 2 2493 4.0500000000000000e+01 0 -1 2494 + 2.5000000000000000e+00 -2 -3 2495 4.1500000000000000e+01 + + -5.9743094444274902e-01 2.1404948830604553e-01 + -8.5050314664840698e-01 5.0623071193695068e-01 + <_> + 9.6368263244628906e+01 + + 1 2 2496 4.3500000000000000e+01 0 -1 2497 + 5.0000000000000000e-01 -2 -3 2498 2.5000000000000000e+00 + + -1. 1. -5.6743723154067993e-01 7.6639793813228607e-02 + <_> + 9.6516090393066406e+01 + + 1 2 2499 5.0000000000000000e-01 0 -1 2500 + 3.5000000000000000e+00 -2 -3 2501 2.7500000000000000e+01 + + -9.6376502513885498e-01 6.0896998643875122e-01 + 1.4782741665840149e-01 -4.4592922925949097e-01 + <_> + 9.5890869140625000e+01 + + 1 2 2502 8.0500000000000000e+01 0 -1 2503 + 1.1025000000000000e+03 -2 -3 2504 5.4150000000000000e+02 + + 1.4774493873119354e-01 -6.2522071599960327e-01 + 6.8708664178848267e-01 -1.1048506200313568e-01 + <_> + 9.6234390258789062e+01 + + 1 2 2505 1.4500000000000000e+01 0 -1 2506 + 2.5000000000000000e+00 -2 -3 2507 5.0000000000000000e-01 + + 1.8957711756229401e-01 -6.4709383249282837e-01 + -4.1520085930824280e-01 3.4351608157157898e-01 + <_> + 9.6572166442871094e+01 + + 1 2 2508 5.0000000000000000e-01 0 -1 2509 + 2.5735000000000000e+03 -2 -3 2510 1173. + + 3.3778050541877747e-01 -6.3639199733734131e-01 + -5.0381755828857422e-01 6.3735854625701904e-01 + <_> + 9.7091682434082031e+01 + + 1 2 2511 1.1450000000000000e+02 0 -1 2512 + 4.0250000000000000e+02 -2 -3 2513 1.3450000000000000e+02 + + 6.2810701131820679e-01 -4.0756353735923767e-01 -1. + 5.1951670646667480e-01 + <_> + 9.7211601257324219e+01 + + 1 2 2514 8.0500000000000000e+01 0 -1 2515 + 6.5000000000000000e+00 -2 -3 2516 4.0500000000000000e+01 + + -7.7606672048568726e-01 6.6768264770507812e-01 + -3.8118714094161987e-01 3.6804616451263428e-01 + <_> + 9.7420547485351562e+01 + + 1 2 2517 1.5000000000000000e+00 0 -1 2518 + 1.6155000000000000e+03 -2 -3 2519 5.7500000000000000e+01 + + 1. -1. 2.0894423127174377e-01 -6.3742393255233765e-01 + <_> + 9.7607200622558594e+01 + + 1 2 2520 1.5000000000000000e+00 0 -1 2521 + 2.9050000000000000e+02 -2 -3 2522 5.0000000000000000e-01 + + -9.8843830823898315e-01 1. 2.6681044697761536e-01 + -3.6110731959342957e-01 + <_> + 9.7423561096191406e+01 + + 1 2 2523 4.5000000000000000e+00 0 -1 2524 + 9.5000000000000000e+00 -2 -3 2525 9.5000000000000000e+00 + + -5.4543578624725342e-01 9.5868372917175293e-01 + -7.5861543416976929e-01 2.6955580711364746e-01 + <_> + 9.7825759887695312e+01 + + 1 2 2526 1.1550000000000000e+02 0 -1 2527 3751. -2 -3 2528 + 280. + + -8.3923083543777466e-01 6.2113016843795776e-01 + -3.8828554749488831e-01 5.3129935264587402e-01 + <_> + 9.8072143554687500e+01 + + 1 2 2529 1.0750000000000000e+02 0 -1 2530 + 5.7750000000000000e+02 -2 -3 2531 2.1500000000000000e+01 + + 2.4638542532920837e-01 -6.5665483474731445e-01 + -8.9632099866867065e-01 6.8391984701156616e-01 + <_> + 9.8402824401855469e+01 + + 1 2 2532 3.5000000000000000e+00 0 -1 2533 + 5.5000000000000000e+00 -2 -3 2534 5.0000000000000000e-01 + + -9.1934508085250854e-01 1. 3.3068060874938965e-01 + -2.1170829236507416e-01 + <_> + 9.8699340820312500e+01 + + 1 2 2535 1.1450000000000000e+02 0 -1 2536 + 5.5000000000000000e+00 -2 -3 2537 36. + + 3.0874010920524597e-01 -2.8325837850570679e-01 + -8.8745921850204468e-01 1. + <_> + 9.8877410888671875e+01 + + 1 2 2538 8.5000000000000000e+00 0 -1 2539 + 9.8500000000000000e+01 -2 -3 2540 1.4500000000000000e+01 + + 6.9435214996337891e-01 -9.1196221113204956e-01 + 2.4511045217514038e-01 -5.1517933607101440e-01 + <_> + 9.8995216369628906e+01 + + 1 2 2541 2.5500000000000000e+01 0 -1 2542 + 1.5500000000000000e+01 -2 -3 2543 3.6050000000000000e+02 + + 1.1780845373868942e-01 -5.3240364789962769e-01 -1. + 7.7188563346862793e-01 + <_> + 9.9240852355957031e+01 + + 1 2 2544 3.5000000000000000e+00 0 -1 2545 + 8.0500000000000000e+01 -2 -3 2546 5.6450000000000000e+02 + + -9.0737903118133545e-01 1. -5.8833694458007812e-01 + 2.4563524127006531e-01 + <_> + 9.8749168395996094e+01 + + 1 2 2547 2.1500000000000000e+01 0 -1 2548 + 2.0500000000000000e+01 -2 -3 2549 3.4500000000000000e+01 + + 4.9037560820579529e-01 -6.0056501626968384e-01 + 2.7949792146682739e-01 -6.7935609817504883e-01 + <_> + 9.9123207092285156e+01 + + 1 2 2550 1.5000000000000000e+00 0 -1 2551 + 8.6750000000000000e+02 -2 -3 2552 7.5000000000000000e+00 + + -7.2623419761657715e-01 5.3740710020065308e-01 + 3.7403845787048340e-01 -2.7497768402099609e-01 + <_> + 9.8746543884277344e+01 + + 1 2 2553 3.1500000000000000e+01 0 -1 2554 + 5.3500000000000000e+01 -2 -3 2555 1.3500000000000000e+01 + + 4.1538569331169128e-01 -4.7679051756858826e-01 + -6.1080145835876465e-01 4.9855870008468628e-01 + <_> + 9.9137901306152344e+01 + + 1 2 2556 4.5000000000000000e+00 0 -1 2557 + 3.5000000000000000e+00 -2 -3 2558 1.3905000000000000e+03 + + -8.8297528028488159e-01 3.9136049151420593e-01 + 4.8427349328994751e-01 -1.3551473617553711e-01 + <_> + 9.9093750000000000e+01 + + 1 2 2559 1.2500000000000000e+01 0 -1 2560 109. -2 -3 2561 + 1.8500000000000000e+01 + + -2.1636287868022919e-01 4.4644072651863098e-01 + -4.5347277075052261e-02 -8.3115756511688232e-01 + <_> + 9.9295211791992188e+01 + + 1 2 2562 2.7550000000000000e+02 0 -1 2563 21. -2 -3 2564 + 400. + + 8.4553992748260498e-01 -7.8862386941909790e-01 + 2.0146845281124115e-01 -9.3354743719100952e-01 + <_> + 9.9591613769531250e+01 + + 1 2 2565 7.1500000000000000e+01 0 -1 2566 + 2.0500000000000000e+01 -2 -3 2567 1.4450000000000000e+02 + + 2.6693066954612732e-01 -6.6290807723999023e-01 + 4.1993066668510437e-01 -4.1178131103515625e-01 + <_> + 9.9774261474609375e+01 + + 1 2 2568 2.7455000000000000e+03 0 -1 2569 + 2.5000000000000000e+00 -2 -3 2570 1.3500000000000000e+01 + + -4.0591225028038025e-01 2.1991367638111115e-01 -1. 1. + <_> + 9.9528968811035156e+01 + + 1 2 2571 1.1500000000000000e+01 0 -1 2572 + 6.5000000000000000e+00 -2 -3 2573 187. + + -2.4529571831226349e-01 4.4422072172164917e-01 + -7.1468102931976318e-01 6.1321121454238892e-01 + <_> + 9.9765602111816406e+01 + + 1 2 2574 1.0015000000000000e+03 0 -1 2575 + 3.5000000000000000e+00 -2 -3 2576 103. + + 3.6130765080451965e-01 -3.1130629777908325e-01 + -8.0834662914276123e-01 6.8982625007629395e-01 + <_> + 9.9243118286132812e+01 + + 1 2 2577 5.7150000000000000e+02 0 -1 2578 36. -2 -3 2579 + 1.5500000000000000e+01 + + -5.2247774600982666e-01 1. -1.2719422578811646e-01 + 4.9271491169929504e-01 + <_> + 9.9417327880859375e+01 + + 1 2 2580 5.0000000000000000e-01 0 -1 2581 + 2.5000000000000000e+00 -2 -3 2582 2.5000000000000000e+00 + + -5.6974679231643677e-01 6.0422992706298828e-01 + -6.1786216497421265e-01 4.9528244882822037e-02 + <_> + 9.9721191406250000e+01 + + 1 2 2583 2.5000000000000000e+00 0 -1 2584 + 2.4500000000000000e+01 -2 -3 2585 1.4250000000000000e+02 + + -6.2716758251190186e-01 7.0882409811019897e-01 + 3.0386608839035034e-01 -8.0423253774642944e-01 + <_> + 9.9943511962890625e+01 + + 1 2 2586 1.8500000000000000e+01 0 -1 2587 + 3.9500000000000000e+01 -2 -3 2588 1.3750000000000000e+02 + + 3.2850837707519531e-01 -8.2033318281173706e-01 + 2.2231689095497131e-01 -6.0138916969299316e-01 + <_> + 9.9831451416015625e+01 + + 1 2 2589 1.3500000000000000e+01 0 -1 2590 + 4.5500000000000000e+01 -2 -3 2591 4.4500000000000000e+01 + + -4.2661905288696289e-01 5.1914167404174805e-01 + 3.8148659467697144e-01 -8.5451364517211914e-01 + <_> + 9.9631042480468750e+01 + + 1 2 2592 1.5000000000000000e+00 0 -1 2593 + 1.0500000000000000e+01 -2 -3 2594 5.0000000000000000e-01 + + -8.8435149192810059e-01 1. 4.5112967491149902e-01 + -2.0040939748287201e-01 + <_> + 9.9837104797363281e+01 + + 1 2 2595 2.5000000000000000e+00 0 -1 2596 + 2.8050000000000000e+02 -2 -3 2597 3.1500000000000000e+01 + + 2.1158181130886078e-01 -8.0644214153289795e-01 + 2.0606023073196411e-01 -9.3066710233688354e-01 + <_> + 1.0016289520263672e+02 + + 1 2 2598 5.0000000000000000e-01 0 -1 2599 + 5.5850000000000000e+02 -2 -3 2600 7.5000000000000000e+00 + + -8.6102581024169922e-01 3.2579025626182556e-01 + -6.1346149444580078e-01 3.3240249752998352e-01 + <_> + 1.0033647155761719e+02 + + 1 2 2601 3.5000000000000000e+00 0 -1 2602 8. -2 -3 2603 + 5.4500000000000000e+01 + + -7.9454857110977173e-01 9.5821666717529297e-01 + 1.7357560992240906e-01 -8.3915024995803833e-01 + <_> + 1.0047587585449219e+02 + + 0 1 2604 2.5000000000000000e+00 0 1 2604 2.5000000000000000e+00 -1 -2 2605 + 8.2050000000000000e+02 + + -1. -1. -5.9203457832336426e-01 1.3940984010696411e-01 + <_> + 1.0109948730468750e+02 + + 1 2 2606 2.0795000000000000e+03 0 -1 2607 + 1.8550000000000000e+02 -2 -3 2608 1.2500000000000000e+01 + + 6.2360501289367676e-01 -1.7042215168476105e-01 + -7.0164740085601807e-01 9.1911442577838898e-02 + <_> + 1.0105032348632812e+02 + + 1 2 2609 4.6500000000000000e+01 0 -1 2610 + 3.9500000000000000e+01 -2 -3 2611 2.5000000000000000e+00 + + 4.8169857263565063e-01 -5.7907623052597046e-01 + 4.6473887562751770e-01 -3.2131230831146240e-01 + <_> + 1.0105367279052734e+02 + + 1 2 2612 6.7350000000000000e+02 0 -1 2613 + 5.0000000000000000e-01 -2 -3 2614 3740. + + 2.7208894491195679e-01 -4.3277686834335327e-01 + 6.5942746400833130e-01 -5.1724559068679810e-01 + <_> + 1.0141363525390625e+02 + + 1 2 2615 5.0000000000000000e-01 0 -1 2616 + 1.5500000000000000e+01 -2 -3 2617 5.0000000000000000e-01 + + -8.2222098112106323e-01 7.9113721847534180e-01 + 6.9188493490219116e-01 -4.8952169716358185e-02 + <_> + 1.0130570983886719e+02 + + 1 2 2618 2.0500000000000000e+01 0 -1 2619 + 8.5000000000000000e+00 -2 -3 2620 2.0050000000000000e+02 + + -1.0792832076549530e-01 5.1927500963211060e-01 + -7.9460966587066650e-01 8.2356446981430054e-01 + <_> + 1.0164145660400391e+02 + + 1 2 2621 2.1500000000000000e+01 0 -1 2622 + 1.5000000000000000e+00 -2 -3 2623 6.0500000000000000e+01 + + 3.3574688434600830e-01 -4.5670211315155029e-01 + -6.3089555501937866e-01 4.8581323027610779e-01 + <_> + 1.0131285095214844e+02 + + 1 2 2624 9.5000000000000000e+00 0 -1 2625 + 7.3500000000000000e+01 -2 -3 2626 9.5000000000000000e+00 + + 3.0599847435951233e-01 -6.1251938343048096e-01 + -2.9742473363876343e-01 4.9433988332748413e-01 + <_> + 1.0162899780273438e+02 + + 1 2 2627 5.5000000000000000e+00 0 -1 2628 + 2.5000000000000000e+00 -2 -3 2629 8.8850000000000000e+02 + + -3.9324402809143066e-01 3.1614956259727478e-01 + -6.8262726068496704e-01 7.5144731998443604e-01 + <_> + 1.0186949920654297e+02 + + 1 2 2630 1.4805000000000000e+03 0 -1 2631 + 1.0500000000000000e+01 -2 -3 2632 15. + + 2.4050149321556091e-01 -3.6888840794563293e-01 -1. 1. + <_> + 1.0191372680664062e+02 + + 1 2 2633 2.2500000000000000e+01 0 -1 2634 + 4.5000000000000000e+00 -2 -3 2635 4.1950000000000000e+02 + + 2.9375064373016357e-01 -3.5744154453277588e-01 + -3.5613030195236206e-01 8.1968200206756592e-01 + <_> + 1.0208142852783203e+02 + + 1 2 2636 3.5000000000000000e+00 0 -1 2637 21. -2 -3 2638 + 3.5000000000000000e+00 + + -8.8189947605133057e-01 9.3166828155517578e-01 + 4.8177376389503479e-01 -1.2354224920272827e-01 + <_> + 1.0226190948486328e+02 + + 1 2 2639 9.5000000000000000e+00 0 -1 2640 + 5.5000000000000000e+00 -2 -3 2641 1.7285000000000000e+03 + + -9.7239077091217041e-01 8.0751657485961914e-02 + 1.8048079311847687e-01 -7.8952634334564209e-01 + <_> + 1.0249628448486328e+02 + + 1 2 2642 5.0000000000000000e-01 0 -1 2643 + 1.5000000000000000e+00 -2 -3 2644 2.4500000000000000e+01 + + 3.4624457359313965e-01 -4.0281239151954651e-01 + -5.5928331613540649e-01 7.1457552909851074e-01 + <_> + 1.0274293518066406e+02 + + 1 2 2645 3.8500000000000000e+01 0 -1 2646 + 1.7500000000000000e+01 -2 -3 2647 1.4450000000000000e+02 + + 1.3477689027786255e-01 -6.1821442842483521e-01 + 5.9605765342712402e-01 -1.6502375900745392e-01 + <_> + 1.0253598785400391e+02 + + 1 2 2648 1.3500000000000000e+01 0 -1 2649 + 5.2550000000000000e+02 -2 -3 2650 2.2735000000000000e+03 + + -7.9840284585952759e-01 2.3721742630004883e-01 + -5.5634832382202148e-01 3.1294867396354675e-01 + <_> + 1.0290502929687500e+02 + + 1 2 2651 5.4750000000000000e+02 0 -1 2652 + 8.3050000000000000e+02 -2 -3 2653 1.1150000000000000e+02 + + -1.4335750043392181e-01 7.7484899759292603e-01 + -6.7993903160095215e-01 1.6464550048112869e-02 + <_> + 1.0276994323730469e+02 + + 1 2 2654 1.3650000000000000e+02 0 -1 2655 + 1.5000000000000000e+00 -2 -3 2656 5.1500000000000000e+01 + + 4.3065854907035828e-01 -2.5181022286415100e-01 + -7.0685976743698120e-01 5.8210808038711548e-01 + <_> + 1.0282818603515625e+02 + + 1 2 2657 3.6500000000000000e+01 0 -1 2658 + 3.5000000000000000e+00 -2 -3 2659 4.5000000000000000e+00 + + -8.7250131368637085e-01 3.3097213506698608e-01 + 4.2310500144958496e-01 -1.7739102244377136e-01 + <_> + 1.0300099945068359e+02 + + 1 2 2660 1.9050000000000000e+02 0 -1 2661 + 1.6500000000000000e+01 -2 -3 2662 6.3500000000000000e+01 + + -6.1183965206146240e-01 7.1433728933334351e-01 + -9.4837844371795654e-02 5.6334847211837769e-01 + <_> + 1.0327600860595703e+02 + + 1 2 2663 1.1345000000000000e+03 0 -1 2664 + 7.5000000000000000e+00 -2 -3 2665 4.5500000000000000e+01 + + -9.7449356317520142e-01 2.7501192688941956e-01 + -6.7455238103866577e-01 5.9240275621414185e-01 + <_> + 1.0331129455566406e+02 + + 1 2 2666 2.2500000000000000e+01 0 -1 2667 + 7.8350000000000000e+02 -2 -3 2668 87. + + 2.1151831746101379e-01 -9.4473469257354736e-01 + 6.7612463235855103e-01 -8.3754408359527588e-01 + <_> + 1.0303090667724609e+02 + + 1 2 2669 1.3500000000000000e+01 0 -1 2670 + 4.7500000000000000e+01 -2 -3 2671 7.6500000000000000e+01 + + -4.5662239193916321e-01 6.4888173341751099e-01 + 5.7376283407211304e-01 -2.1476963162422180e-01 + <_> + 1.0311815643310547e+02 + + 1 2 2672 1.5000000000000000e+00 0 -1 2673 + 3.5000000000000000e+00 -2 -3 2674 5.7500000000000000e+01 + + -2.0579831302165985e-01 4.5064237713813782e-01 + -5.4586839675903320e-01 8.1367361545562744e-01 + <_> + 1.0337432098388672e+02 + + 1 2 2675 3.7850000000000000e+02 0 -1 2676 59. -2 -3 2677 + 2945. + + -6.2283027172088623e-01 7.8782963752746582e-01 + 2.5616112351417542e-01 -1. + <_> + 1.0362288665771484e+02 + + 1 2 2678 1.1500000000000000e+01 0 -1 2679 + 1.7150000000000000e+02 -2 -3 2680 7.5500000000000000e+01 + + 6.3007098436355591e-01 -4.1216814517974854e-01 + 4.8822152614593506e-01 -3.9382278919219971e-01 + <_> + 1.0388551330566406e+02 + + 1 2 2681 1.5000000000000000e+00 0 -1 2682 + 1.6385000000000000e+03 -2 -3 2683 110. + + 3.0745586752891541e-01 -7.9586678743362427e-01 + 2.6261982321739197e-01 -7.6895767450332642e-01 + <_> + 1.0405072021484375e+02 + + 1 2 2684 1.5000000000000000e+00 0 -1 2685 + 5.6850000000000000e+02 -2 -3 2686 4.5000000000000000e+00 + + 9.3116897344589233e-01 -9.6380370855331421e-01 + -7.6854610443115234e-01 1.6521225869655609e-01 + <_> + 1.0400543975830078e+02 + + 1 2 2687 6.2950000000000000e+02 0 -1 2688 + 5.1450000000000000e+02 -2 -3 2689 236. + + -4.5279026031494141e-02 8.4354996681213379e-01 + -6.6148412227630615e-01 6.9928210973739624e-01 + <_> + 1.0376971435546875e+02 + + 1 2 2690 9.4500000000000000e+01 0 -1 2691 + 1.5050000000000000e+02 -2 -3 2692 1.6750000000000000e+02 + + -2.3573163151741028e-01 4.4335815310478210e-01 + 6.1139583587646484e-01 -6.4605855941772461e-01 + <_> + 1.0405144500732422e+02 + + 1 2 2693 4.4500000000000000e+01 0 -1 2694 + 5.6250000000000000e+02 -2 -3 2695 3.8500000000000000e+01 + + 3.8796469569206238e-02 -6.5249174833297729e-01 + -6.0536789894104004e-01 5.4190611839294434e-01 + <_> + 1.0398574066162109e+02 + + 1 2 2696 4.4500000000000000e+01 0 -1 2697 + 5.0000000000000000e-01 -2 -3 2698 5.2500000000000000e+01 + + 4.2008396983146667e-01 -1.4273323118686676e-01 + -7.3499578237533569e-01 1. + <_> + 1.0385164642333984e+02 + + 1 2 2699 3.8500000000000000e+01 0 -1 2700 + 7.5000000000000000e+00 -2 -3 2701 3.5000000000000000e+00 + + 3.1169781088829041e-01 -7.7311396598815918e-01 + -1.3409157097339630e-01 4.9537870287895203e-01 + <_> + 1.0448446655273438e+02 + + 1 2 2702 2.6050000000000000e+02 0 -1 2703 + 1.8350000000000000e+02 -2 -3 2704 7.6350000000000000e+02 + + -1. 9.7587960958480835e-01 -5.2969473600387573e-01 + 1.2663070857524872e-01 + <_> + 1.0484059906005859e+02 + + 1 2 2705 1.1500000000000000e+01 0 -1 2706 + 4.1850000000000000e+02 -2 -3 2707 2.3500000000000000e+01 + + 7.9048752784729004e-02 -8.0509215593338013e-01 + 3.5613477230072021e-01 -5.6644356250762939e-01 + <_> + 1.0512301635742188e+02 + + 1 2 2708 1485. 0 -1 2709 5.5000000000000000e+00 -2 -3 2710 + 5.0000000000000000e-01 + + -7.0782458782196045e-01 2.8242054581642151e-01 + 3.9573973417282104e-01 -9.0347629785537720e-01 + <_> + 1.0531546020507812e+02 + + 1 2 2711 1353. 0 -1 2712 1.7500000000000000e+01 -2 -3 2713 + 1.0750000000000000e+02 + + 2.7195869013667107e-02 -7.5462043285369873e-01 + 3.2506725192070007e-01 -8.6369091272354126e-01 + <_> + 1.0547406768798828e+02 + + 1 2 2714 2.5000000000000000e+00 0 -1 2715 16. -2 -3 2716 + 4.2955000000000000e+03 + + -1. 7.2179090976715088e-01 1.5860775113105774e-01 + -6.5142124891281128e-01 + <_> + 1.0487975311279297e+02 + + 1 2 2717 1.5500000000000000e+01 0 -1 2718 10700. -2 -3 2719 + 1.7875000000000000e+03 + + 2.6182049885392189e-02 -8.4672302007675171e-01 + -7.7213704586029053e-01 3.4896582365036011e-01 + <_> + 1.0509091186523438e+02 + + 1 2 2720 1.5000000000000000e+00 0 -1 2721 + 1.5000000000000000e+00 -2 -3 2722 2.9500000000000000e+01 + + -8.2644587755203247e-01 2.1116006374359131e-01 + -7.3146438598632812e-01 9.5215821266174316e-01 + <_> + 1.0519564056396484e+02 + + 1 2 2723 3.0500000000000000e+01 0 -1 2724 + 3.4935000000000000e+03 -2 -3 2725 5.7500000000000000e+01 + + -1. 6.9735002517700195e-01 -5.7586830854415894e-01 + 1.0472767800092697e-01 + <_> + 1.0569725799560547e+02 + + 1 2 2726 2.4450000000000000e+02 0 -1 2727 644. -2 -3 2728 + 2.3500000000000000e+01 + + -8.5404765605926514e-01 5.0162208080291748e-01 + -5.6405150890350342e-01 3.5492885112762451e-01 + <_> + 1.0524179077148438e+02 + + 1 2 2729 4.7500000000000000e+01 0 -1 2730 + 2.7650000000000000e+02 -2 -3 2731 2818. + + -4.5547124743461609e-01 3.0731198191642761e-01 + -7.2488194704055786e-01 7.7106243371963501e-01 + <_> + 1.0491101074218750e+02 + + 1 2 2732 3.5000000000000000e+00 0 -1 2733 1511. -2 -3 2734 + 1.7155000000000000e+03 + + 4.6164187788963318e-01 -6.6047859191894531e-01 + -3.3077949285507202e-01 3.7580975890159607e-01 + <_> + 1.0527840423583984e+02 + + 1 2 2735 5.0000000000000000e-01 0 -1 2736 + 1.5000000000000000e+00 -2 -3 2737 9.7750000000000000e+02 + + -5.6398648023605347e-01 3.6739850044250488e-01 + 1.4843972027301788e-01 -7.5591593980789185e-01 + <_> + 1.0569275665283203e+02 + + 1 2 2738 1.3500000000000000e+01 0 -1 2739 + 1.5000000000000000e+00 -2 -3 2740 2.5000000000000000e+00 + + 4.4956609606742859e-01 -5.2449923753738403e-01 + -9.4341361522674561e-01 4.1434991359710693e-01 + <_> + 1.0587648010253906e+02 + + 1 2 2741 2.1515000000000000e+03 0 -1 2742 + 2.6500000000000000e+01 -2 -3 2743 3.0500000000000000e+01 + + 1.8371918797492981e-01 -9.8738479614257812e-01 + -9.1896229982376099e-01 4.3715295195579529e-01 + <_> + 1.0598551177978516e+02 + + 1 2 2744 1.6500000000000000e+01 0 -1 2745 + 4.5000000000000000e+00 -2 -3 2746 1.5175000000000000e+03 + + 1.0903272777795792e-01 -7.6156085729598999e-01 + 3.4190380573272705e-01 -5.6521832942962646e-01 + <_> + 1.0585959625244141e+02 + + 1 2 2747 3.5000000000000000e+00 0 -1 2748 + 1.8650000000000000e+02 -2 -3 2749 1.7500000000000000e+01 + + -8.6969417333602905e-01 8.7447375059127808e-01 + -1.2591452896595001e-01 4.7273957729339600e-01 + <_> + 1.0568214416503906e+02 + + 1 2 2750 245. 0 -1 2751 5.5000000000000000e+00 -2 -3 2752 + 3.5000000000000000e+00 + + 5.2921187877655029e-01 -4.8938277363777161e-01 + 3.0937749147415161e-01 -5.0696980953216553e-01 + <_> + 1.0601576232910156e+02 + + 1 2 2753 1.7500000000000000e+01 0 -1 2754 + 1.1395000000000000e+03 -2 -3 2755 1.0950000000000000e+02 + + 2.8152284026145935e-01 -7.8550308942794800e-01 + 3.3361354470252991e-01 -5.6299263238906860e-01 + <_> + 1.0640065765380859e+02 + + 1 2 2756 5.0000000000000000e-01 0 -1 2757 + 1.5000000000000000e+00 -2 -3 2758 4.5000000000000000e+00 + + -3.8055318593978882e-01 3.8489964604377747e-01 + -5.7636463642120361e-01 4.3075269460678101e-01 + <_> + 1.0641130828857422e+02 + + 1 2 2759 5.7050000000000000e+02 0 -1 2760 + 1.4500000000000000e+01 -2 -3 2761 1.1835000000000000e+03 + + -6.4392197132110596e-01 3.5690125823020935e-01 + 2.9891923069953918e-01 -9.5714271068572998e-01 + <_> + 1.0660404968261719e+02 + + 1 2 2762 1.5000000000000000e+00 0 -1 2763 + 5.9150000000000000e+02 -2 -3 2764 1.1535000000000000e+03 + + -8.0829763412475586e-01 8.4891957044601440e-01 + 1.9274589419364929e-01 -7.3956298828125000e-01 + <_> + 1.0652481079101562e+02 + + 1 2 2765 5.3500000000000000e+01 0 -1 2766 + 3.0950000000000000e+02 -2 -3 2767 8.2500000000000000e+01 + + 2.0712941884994507e-01 -3.6751377582550049e-01 + 7.9296332597732544e-01 -1. + <_> + 1.0692726898193359e+02 + + 1 2 2768 6.6500000000000000e+01 0 -1 2769 1074. -2 -3 2770 + 1.1500000000000000e+01 + + 1.1640611104667187e-02 -8.8242655992507935e-01 + 4.0245753526687622e-01 -6.6962105035781860e-01 + <_> + 1.0722780609130859e+02 + + 1 2 2771 400. 0 -1 2772 258. -2 -3 2773 242. + + 9.5710533857345581e-01 -6.8693101406097412e-01 + 5.1057505607604980e-01 -1.5650358796119690e-01 + <_> + 1.0750185394287109e+02 + + 1 2 2774 3.5000000000000000e+00 0 -1 2775 + 2.0500000000000000e+01 -2 -3 2776 51. + + -6.6889345645904541e-01 9.8602853715419769e-02 + 5.0510036945343018e-01 -7.3887240886688232e-01 + <_> + 1.0781588745117188e+02 + + 1 2 2777 4.5000000000000000e+00 0 -1 2778 + 1.1525000000000000e+03 -2 -3 2779 2.7500000000000000e+01 + + -8.5173243284225464e-01 5.9037590026855469e-01 + 8.2559481263160706e-02 -5.7935595512390137e-01 + <_> + 1.0813179016113281e+02 + + 1 2 2780 1.3500000000000000e+01 0 -1 2781 + 7.6750000000000000e+02 -2 -3 2782 9.5000000000000000e+00 + + -8.5958725214004517e-01 7.9117491841316223e-02 + -8.4548884630203247e-01 3.1590864062309265e-01 + <_> + 1.0812385559082031e+02 + + 1 2 2783 2.5500000000000000e+01 0 -1 2784 + 4.5000000000000000e+00 -2 -3 2785 4.1500000000000000e+01 + + -5.3340083360671997e-01 2.1516241133213043e-01 + -8.2421797513961792e-01 5.7744872570037842e-01 + <_> + 1.0778499603271484e+02 + + 1 2 2786 4.5000000000000000e+00 0 -1 2787 + 1.8050000000000000e+02 -2 -3 2788 5.7500000000000000e+01 + + 3.2442337274551392e-01 -6.3051867485046387e-01 + -5.6196290254592896e-01 1. + <_> + 1.0795186614990234e+02 + + 1 2 2789 9.5000000000000000e+00 0 -1 2790 + 2.9500000000000000e+01 -2 -3 2791 2.4845000000000000e+03 + + -9.0732103586196899e-01 1. -4.3962568044662476e-01 + 2.4967047572135925e-01 + <_> + 1.0834626007080078e+02 + + 1 2 2792 7642. 0 -1 2793 2.9500000000000000e+01 -2 -3 2794 + 1.5500000000000000e+01 + + 4.5714893937110901e-01 -1. -7.8440755605697632e-01 + -2.9551941901445389e-02 + <_> + 1.0802055358886719e+02 + + 1 2 2795 1.3445000000000000e+03 0 -1 2796 + 5.0000000000000000e-01 -2 -3 2797 2.5000000000000000e+00 + + 1.8776105344295502e-01 -5.1964151859283447e-01 + -3.2570576667785645e-01 5.8407723903656006e-01 + <_> + 1.0869297790527344e+02 + + 1 2 2798 3.5000000000000000e+00 0 -1 2799 + 2.6650000000000000e+02 -2 -3 2800 6.8550000000000000e+02 + + 7.9688948392868042e-01 -5.5319869518280029e-01 + 6.7242574691772461e-01 -5.3342822939157486e-03 + <_> + 1.0871336364746094e+02 + + 1 2 2801 1.3550000000000000e+02 0 -1 2802 + 7.8850000000000000e+02 -2 -3 2803 5.3500000000000000e+01 + + -4.0466487407684326e-01 8.8463294506072998e-01 + 4.2380827665328979e-01 -8.9209264516830444e-01 + <_> + 1.0827619934082031e+02 + + 1 2 2804 6.5500000000000000e+01 0 -1 2805 + 1.7500000000000000e+01 -2 -3 2806 2.8950000000000000e+02 + + 1.1377986520528793e-01 -6.0579437017440796e-01 + 5.5230200290679932e-01 -5.3584653139114380e-01 + <_> + 1.0870999145507812e+02 + + 1 2 2807 1.5500000000000000e+01 0 -1 2808 + 3.7850000000000000e+02 -2 -3 2809 2.7750000000000000e+02 + + 3.2576033473014832e-01 -8.8590908050537109e-01 + 4.3379050493240356e-01 -1.6937582194805145e-01 + <_> + 1.0839844512939453e+02 + + 1 2 2810 2.8500000000000000e+01 0 -1 2811 + 3.8500000000000000e+01 -2 -3 2812 2.5500000000000000e+01 + + -3.1154349446296692e-01 6.3721460103988647e-01 + -7.1922361850738525e-01 6.2959849834442139e-01 + <_> + 1.0877592468261719e+02 + + 1 2 2813 1.2500000000000000e+01 0 -1 2814 + 1.3695000000000000e+03 -2 -3 2815 6.5000000000000000e+00 + + -5.5014491081237793e-01 3.7747702002525330e-01 + -6.9611859321594238e-01 1.2586995959281921e-01 + <_> + 1.0896472930908203e+02 + + 1 2 2816 3.1050000000000000e+02 0 -1 2817 + 2.8850000000000000e+02 -2 -3 2818 146. + + 1.8880467116832733e-01 -6.9542157649993896e-01 + -9.3111920356750488e-01 5.6534785032272339e-01 + <_> + 1.0875339508056641e+02 + + 1 2 2819 2.1500000000000000e+01 0 -1 2820 + 2.5000000000000000e+00 -2 -3 2821 1.1850000000000000e+02 + + 7.7443844079971313e-01 -8.0098474025726318e-01 + 3.5482531785964966e-01 -2.7317541837692261e-01 + <_> + 1.0921239471435547e+02 + + 1 2 2822 4.5000000000000000e+00 0 -1 2823 + 8.5000000000000000e+00 -2 -3 2824 8.3500000000000000e+01 + + 4.5899707078933716e-01 -6.2516170740127563e-01 + -4.3385741114616394e-01 5.6751209497451782e-01 + <_> + 1.0947447967529297e+02 + + 1 2 2825 7.5000000000000000e+00 0 -1 2826 + 5.5000000000000000e+00 -2 -3 2827 7.3950000000000000e+02 + + -7.4130195379257202e-01 7.1468836069107056e-01 + -9.7212868928909302e-01 2.6208582520484924e-01 + <_> + 1.0889431762695312e+02 + + 1 2 2828 9.5000000000000000e+00 0 -1 2829 + 8.8350000000000000e+02 -2 -3 2830 1.4285000000000000e+03 + + -5.8016383647918701e-01 4.6283417940139771e-01 + 4.0902158617973328e-01 -3.3674991130828857e-01 + <_> + 1.0909661865234375e+02 + + 1 2 2831 2.3500000000000000e+01 0 -1 2832 + 6.5000000000000000e+00 -2 -3 2833 1.6500000000000000e+01 + + -1. 1. 2.0230437815189362e-01 -6.2151867151260376e-01 + <_> + 1.0936666107177734e+02 + + 1 2 2834 2.7500000000000000e+01 0 -1 2835 + 2.8500000000000000e+01 -2 -3 2836 1.5000000000000000e+00 + + -3.1645810604095459e-01 2.7004209160804749e-01 + 7.3447245359420776e-01 -9.4543099403381348e-01 + <_> + 1.0990542602539062e+02 + + 1 2 2837 6.5000000000000000e+00 0 -1 2838 + 3.3500000000000000e+01 -2 -3 2839 1.7175000000000000e+03 + + 7.3429244756698608e-01 -5.4267537593841553e-01 + -5.2236169576644897e-02 -8.0465143918991089e-01 + <_> + 1.0978697204589844e+02 + + 1 2 2840 2.6850000000000000e+02 0 -1 2841 22. -2 -3 2842 + 8.0500000000000000e+01 + + 1. -9.7474074363708496e-01 -1.1845187842845917e-01 + 5.4515546560287476e-01 + <_> + 1.1009104156494141e+02 + + 1 2 2843 2.5000000000000000e+00 0 -1 2844 736. -2 -3 2845 + 1.9500000000000000e+01 + + -8.2810074090957642e-01 8.5732799768447876e-01 + 3.0406644940376282e-01 -4.0139013528823853e-01 + <_> + 1.1043927764892578e+02 + + 1 2 2846 1.8500000000000000e+01 0 -1 2847 + 1.3500000000000000e+01 -2 -3 2848 3.0500000000000000e+01 + + 2.1801793575286865e-01 -6.8923234939575195e-01 + 3.4824138879776001e-01 -3.9184293150901794e-01 + <_> + 1.1031699371337891e+02 + + 1 2 2849 1.5000000000000000e+00 0 -1 2850 + 6.5000000000000000e+00 -2 -3 2851 1.3150000000000000e+02 + + -8.8171523809432983e-01 4.3543782830238342e-01 + 2.0244181156158447e-01 -5.7358783483505249e-01 + <_> + 1.1005198669433594e+02 + + 1 2 2852 5.0000000000000000e-01 0 -1 2853 + 1.5000000000000000e+00 -2 -3 2854 3.5000000000000000e+00 + + -5.9932529926300049e-01 3.0936628580093384e-01 + 4.5090380311012268e-01 -5.8973568677902222e-01 + <_> + 1.1043847656250000e+02 + + 1 2 2855 1.1535000000000000e+03 0 -1 2856 + 2.5000000000000000e+00 -2 -3 2857 3.3500000000000000e+01 + + 7.6080255210399628e-02 -5.6420469284057617e-01 + -9.0285736322402954e-01 5.2813625335693359e-01 + <_> + 1.1080448150634766e+02 + + 1 2 2858 4.2250000000000000e+02 0 -1 2859 + 1.2500000000000000e+01 -2 -3 2860 6.1500000000000000e+01 + + 3.6600381135940552e-01 -4.2345437407493591e-01 + -6.1723202466964722e-01 3.4586450457572937e-01 + <_> + 1.1106856536865234e+02 + + 1 2 2861 9.5000000000000000e+00 0 -1 2862 + 2.9500000000000000e+01 -2 -3 2863 37. + + -7.5375384092330933e-01 1.6478213667869568e-01 + 2.6408138871192932e-01 -9.8490983247756958e-01 + <_> + 1.1055361175537109e+02 + + 1 2 2864 7.5000000000000000e+00 0 -1 2865 + 4.9500000000000000e+01 -2 -3 2866 5.5000000000000000e+00 + + -5.1494854688644409e-01 5.8261644840240479e-01 + -6.6320908069610596e-01 3.6188036203384399e-01 + <_> + 1.1039524841308594e+02 + + 1 2 2867 2.3500000000000000e+01 0 -1 2868 + 9.3500000000000000e+01 -2 -3 2869 1.9350000000000000e+02 + + 6.8907684087753296e-01 -1.5836885571479797e-01 + -4.8703750967979431e-01 1.7068152129650116e-01 + <_> + 1.1064450073242188e+02 + + 1 2 2870 8.6450000000000000e+02 0 -1 2871 + 4.6500000000000000e+01 -2 -3 2872 2.5500000000000000e+01 + + -5.4546362161636353e-01 2.4925331771373749e-01 + -8.3844619989395142e-01 8.3821475505828857e-01 + <_> + 1.1088278198242188e+02 + + 1 2 2873 1.5000000000000000e+00 0 -1 2874 + 1.3350000000000000e+02 -2 -3 2875 5.0000000000000000e-01 + + -7.7887850999832153e-01 2.3828317224979401e-01 + 4.8272988200187683e-01 -7.2873306274414062e-01 + <_> + 1.1105001068115234e+02 + + 1 2 2876 71. 0 -1 2877 7.5000000000000000e+00 -2 -3 2878 + 8.5000000000000000e+00 + + -8.5053944587707520e-01 1.6722814738750458e-01 + -9.4403290748596191e-01 6.4887309074401855e-01 + <_> + 1.1167649841308594e+02 + + 1 2 2879 3.7850000000000000e+02 0 -1 2880 60. -2 -3 2881 + 9.5750000000000000e+02 + + -8.7580990791320801e-01 1.5962736308574677e-01 + 6.2649267911911011e-01 -9.5386557281017303e-02 + <_> + 1.1183348846435547e+02 + + 1 2 2882 3.8500000000000000e+01 0 -1 2883 + 3.5000000000000000e+00 -2 -3 2884 12. + + 2.6490542292594910e-01 -3.1465035676956177e-01 + 9.2486298084259033e-01 -9.5018434524536133e-01 + <_> + 1.1203981018066406e+02 + + 1 2 2885 7.5000000000000000e+00 0 -1 2886 + 9.8500000000000000e+01 -2 -3 2887 74. + + -9.7645151615142822e-01 1. 2.0632074773311615e-01 + -9.1167140007019043e-01 + <_> + 1.1171997833251953e+02 + + 1 2 2888 5.0000000000000000e-01 0 -1 2889 + 5.5000000000000000e+00 -2 -3 2890 1.1500000000000000e+01 + + -3.1983077526092529e-01 3.1867963075637817e-01 + -7.6559156179428101e-01 4.0382763836532831e-04 + <_> + 1.1211449432373047e+02 + + 1 2 2891 2.1305000000000000e+03 0 -1 2892 + 9.5000000000000000e+00 -2 -3 2893 240. + + -3.2820355892181396e-01 3.9451143145561218e-01 + -6.1393386125564575e-01 8.8679784536361694e-01 + <_> + 1.1231577301025391e+02 + + 1 2 2894 1.0015000000000000e+03 0 -1 2895 + 1.1445000000000000e+03 -2 -3 2896 4.5000000000000000e+00 + + -2.2687128186225891e-01 3.6754199862480164e-01 + 6.3371849060058594e-01 -7.9295963048934937e-01 + <_> + 1.1249615478515625e+02 + + 1 2 2897 2.7500000000000000e+01 0 -1 2898 + 8.5000000000000000e+00 -2 -3 2899 37. + + -7.1115958690643311e-01 1.8038435280323029e-01 + -9.7455215454101562e-01 6.9934636354446411e-01 + <_> + 1.1233912658691406e+02 + + 1 2 2900 2.6050000000000000e+02 0 -1 2901 + 1.0865000000000000e+03 -2 -3 2902 9.5000000000000000e+00 + + -1. 9.7971618175506592e-01 -3.2329601049423218e-01 + 2.7071443200111389e-01 + <_> + 1.1283988952636719e+02 + + 1 2 2903 5.5500000000000000e+01 0 -1 2904 + 4.3535000000000000e+03 -2 -3 2905 2.5450000000000000e+02 + + -7.9977166652679443e-01 7.4463641643524170e-01 + 7.4907875061035156e-01 -2.6945650577545166e-01 + <_> + 1.1258075714111328e+02 + + 1 2 2906 2.5000000000000000e+00 0 -1 2907 + 5.0000000000000000e-01 -2 -3 2908 8.4500000000000000e+01 + + 1. -8.3365887403488159e-01 -2.3259581625461578e-01 + 3.6352834105491638e-01 + <_> + 1.1218470764160156e+02 + + 1 2 2909 5.8500000000000000e+01 0 -1 2910 + 1.5000000000000000e+00 -2 -3 2911 1.4500000000000000e+01 + + 2.9657179117202759e-01 -3.9605233073234558e-01 + -8.2379591464996338e-01 8.8194245100021362e-01 + <_> + 1.1259869384765625e+02 + + 1 2 2912 1.6500000000000000e+01 0 -1 2913 336. -2 -3 2914 + 5.5500000000000000e+01 + + 4.8623585700988770e-01 -5.5348306894302368e-01 + 4.7885289788246155e-01 -7.1009427309036255e-01 + <_> + 1.1295644378662109e+02 + + 1 2 2915 8.5000000000000000e+00 0 -1 2916 531. -2 -3 2917 + 4.5000000000000000e+00 + + 9.0240961313247681e-01 -5.4123049974441528e-01 + -7.9777017235755920e-03 7.5631076097488403e-01 + <_> + 1.1320769500732422e+02 + + 1 2 2918 2.7550000000000000e+02 0 -1 2919 + 2.5500000000000000e+01 -2 -3 2920 4.7575000000000000e+03 + + -7.4220085144042969e-01 6.7942351102828979e-01 + 2.5125479698181152e-01 -8.1848102807998657e-01 + <_> + 1.1344058227539062e+02 + + 1 2 2921 2.5000000000000000e+00 0 -1 2922 1986. -2 -3 2923 + 95. + + -6.4574551582336426e-01 2.3289002478122711e-01 + -7.1047574281692505e-01 4.2588540911674500e-01 + <_> + 1.1300727844238281e+02 + + 1 2 2924 5.0000000000000000e-01 0 -1 2925 + 2.5000000000000000e+00 -2 -3 2926 1062. + + -5.7494455575942993e-01 4.5384889841079712e-01 + 7.2286838293075562e-01 -4.3494719266891479e-01 + <_> + 1.1288256072998047e+02 + + 1 2 2927 3.1500000000000000e+01 0 -1 2928 + 3.5000000000000000e+00 -2 -3 2929 16. + + -7.3260617256164551e-01 1.8130634725093842e-01 -1. 1. + <_> + 1.1306512451171875e+02 + + 1 2 2930 1.2150000000000000e+02 0 -1 2931 + 8.5000000000000000e+00 -2 -3 2932 4.3500000000000000e+01 + + -7.4935305118560791e-01 1.8256729841232300e-01 + -8.5249531269073486e-01 6.5636491775512695e-01 + <_> + 1.1327575683593750e+02 + + 1 2 2933 1.5000000000000000e+00 0 -1 2934 + 2.1500000000000000e+01 -2 -3 2935 1.5000000000000000e+00 + + -4.9801164865493774e-01 2.1062798798084259e-01 + 9.2823314666748047e-01 -8.5738253593444824e-01 + <_> + 1.1357308197021484e+02 + + 1 2 2936 6.4500000000000000e+01 0 -1 2937 + 4.8065000000000000e+03 -2 -3 2938 2.5000000000000000e+00 + + -1. 6.2009447813034058e-01 -5.3834468126296997e-01 + 1.5692129731178284e-01 + <_> + 1.1360353851318359e+02 + + 1 2 2939 1.3500000000000000e+01 0 -1 2940 + 3.3045000000000000e+03 -2 -3 2941 3.7500000000000000e+01 + + -7.1004110574722290e-01 3.1958633661270142e-01 + -5.8265125751495361e-01 6.3131624460220337e-01 + <_> + 1.1372930908203125e+02 + + 1 2 2942 1.4650000000000000e+02 0 -1 2943 + 1.6500000000000000e+01 -2 -3 2944 1.1500000000000000e+01 + + 3.4133225679397583e-01 -5.4960429668426514e-01 + 5.1201045513153076e-01 -6.1359316110610962e-01 + <_> + 1.1392496490478516e+02 + + 1 2 2945 4.4500000000000000e+01 0 -1 2946 + 5.0000000000000000e-01 -2 -3 2947 9.7750000000000000e+02 + + 6.2203013896942139e-01 -6.3180530071258545e-01 + 5.6117540597915649e-01 -1.3368546962738037e-01 + <_> + 1.1346260070800781e+02 + + 1 2 2948 5.5500000000000000e+01 0 -1 2949 + 5.0000000000000000e-01 -2 -3 2950 80. + + 2.3815618455410004e-01 -4.6236431598663330e-01 + 9.0325075387954712e-01 -9.0121394395828247e-01 + <_> + 1.1379386901855469e+02 + + 1 2 2951 9.4500000000000000e+01 0 -1 2952 + 7.5000000000000000e+00 -2 -3 2953 1.1550000000000000e+02 + + -4.6673280000686646e-01 3.3126986026763916e-01 + 9.0798473358154297e-01 -7.4096632003784180e-01 + <_> + 1.1406409454345703e+02 + + 1 2 2954 7.5000000000000000e+00 0 -1 2955 + 8.6500000000000000e+01 -2 -3 2956 1.4500000000000000e+01 + + -9.2672061920166016e-01 7.3485738039016724e-01 + -4.7021928429603577e-01 2.7022856473922729e-01 + <_> + 1.1425277709960938e+02 + + 1 2 2957 8.5350000000000000e+02 0 -1 2958 + 5.0000000000000000e-01 -2 -3 2959 6.8850000000000000e+02 + + 6.2956070899963379e-01 -7.4446845054626465e-01 + 1.8867783248424530e-01 -9.8959106206893921e-01 + <_> + 1.1466915893554688e+02 + + 1 2 2960 1.5000000000000000e+00 0 -1 2961 + 3.5000000000000000e+00 -2 -3 2962 8.5850000000000000e+02 + + 3.6259412765502930e-02 -6.7085331678390503e-01 + 4.1638222336769104e-01 -4.7934916615486145e-01 + <_> + 1.1474370574951172e+02 + + 1 2 2963 9.5000000000000000e+00 0 -1 2964 + 8.5000000000000000e+00 -2 -3 2965 1.7500000000000000e+01 + + -6.9327950477600098e-01 8.3167332410812378e-01 + 2.6488289237022400e-01 -5.8886319398880005e-01 + <_> + 1.1511044311523438e+02 + + 1 2 2966 5.4650000000000000e+02 0 -1 2967 14. -2 -3 2968 + 8.5000000000000000e+00 + + -9.2996919155120850e-01 5.8129179477691650e-01 + 3.6674419045448303e-01 -2.4709728360176086e-01 + <_> + 1.1493881225585938e+02 + + 1 2 2969 5.5000000000000000e+00 0 -1 2970 + 8.5500000000000000e+01 -2 -3 2971 1.3950000000000000e+02 + + -1.7163147032260895e-01 4.9650168418884277e-01 + 5.4086452722549438e-01 -7.1398860216140747e-01 + <_> + 1.1525379943847656e+02 + + 1 2 2972 7.5000000000000000e+00 0 -1 2973 + 9.7500000000000000e+01 -2 -3 2974 7.5000000000000000e+00 + + -9.4871836900711060e-01 8.4198021888732910e-01 + 7.7815693616867065e-01 -4.4086512178182602e-02 + <_> + 1.1525665283203125e+02 + + 1 2 2975 2.5000000000000000e+00 0 -1 2976 + 4.1500000000000000e+01 -2 -3 2977 3.2350000000000000e+02 + + 4.9186840653419495e-01 -7.5632154941558838e-01 + 2.8518673498183489e-03 -8.1358987092971802e-01 + <_> + 1.1538195037841797e+02 + + 1 2 2978 1.7500000000000000e+01 0 -1 2979 + 9.2105000000000000e+03 -2 -3 2980 5.5250000000000000e+02 + + 1.2530399858951569e-01 -7.3197114467620850e-01 + -6.1813545227050781e-01 4.5981425046920776e-01 + <_> + 1.1562681579589844e+02 + + 1 2 2981 5.0000000000000000e-01 0 -1 2982 + 1.5000000000000000e+00 -2 -3 2983 1.1850000000000000e+02 + + -6.4110070466995239e-01 3.4923154115676880e-01 + -6.6522723436355591e-01 4.2554613947868347e-01 + <_> + 1.1559072113037109e+02 + + 1 2 2984 5.0000000000000000e-01 0 -1 2985 + 5.0000000000000000e-01 -2 -3 2986 1.1500000000000000e+01 + + -5.1298755407333374e-01 4.5155742764472961e-01 + -4.8606547713279724e-01 6.4945244789123535e-01 + <_> + 1.1585576629638672e+02 + + 1 2 2987 7.7500000000000000e+01 0 -1 2988 + 2.5000000000000000e+00 -2 -3 2989 2.8500000000000000e+01 + + 2.6504445075988770e-01 -5.9735137224197388e-01 + 5.0929725170135498e-01 -8.4812289476394653e-01 + <_> + 1.1602140808105469e+02 + + 1 2 2990 1315. 0 -1 2991 2.6950000000000000e+02 -2 -3 2992 + 3292. + + 1. -9.5098608732223511e-01 1.6564650833606720e-01 + -9.7165077924728394e-01 + <_> + 1.1634813690185547e+02 + + 1 2 2993 2.8550000000000000e+02 0 -1 2994 + 1.8950000000000000e+02 -2 -3 2995 4.2450000000000000e+02 + + 1.7797231674194336e-01 -7.0725780725479126e-01 + 3.2672277092933655e-01 -4.6791586279869080e-01 + <_> + 1.1600035858154297e+02 + + 1 2 2996 1.2500000000000000e+01 0 -1 2997 + 2.7500000000000000e+01 -2 -3 2998 1.9500000000000000e+01 + + -8.3542865514755249e-01 8.1487077474594116e-01 + -1.1515256017446518e-01 5.5976140499114990e-01 + <_> + 1.1629707336425781e+02 + + 1 2 2999 3.4500000000000000e+01 0 -1 3000 + 5.4500000000000000e+01 -2 -3 3001 3.5000000000000000e+00 + + 2.9671633243560791e-01 -8.1005460023880005e-01 + 4.5441552996635437e-01 -6.3396769762039185e-01 + <_> + 1.1664207458496094e+02 + + 1 2 3002 1.5000000000000000e+00 0 -1 3003 + 6.5000000000000000e+00 -2 -3 3004 1.9500000000000000e+01 + + -7.5282824039459229e-01 8.6983382701873779e-01 + -3.2741194963455200e-01 3.4500163793563843e-01 + <_> + 1.1623783111572266e+02 + + 1 2 3005 5.0000000000000000e-01 0 -1 3006 + 3.8475000000000000e+03 -2 -3 3007 4.7500000000000000e+01 + + -4.6906247735023499e-01 4.3219438195228577e-01 + -5.9196656942367554e-01 3.5415863990783691e-01 + <_> + 1.1682369232177734e+02 + + 1 2 3008 3.5450000000000000e+02 0 -1 3009 2759. -2 -3 3010 + 2.6500000000000000e+01 + + -6.3874697685241699e-01 5.8586502075195312e-01 + -7.2635281085968018e-01 2.0415544509887695e-02 + <_> + 1.1681407165527344e+02 + + 1 2 3011 5.7750000000000000e+02 0 -1 3012 + 1.0500000000000000e+01 -2 -3 3013 3.8965000000000000e+03 + + -9.6233375370502472e-03 -8.1473666429519653e-01 + 6.1106562614440918e-01 -7.2611153125762939e-01 + <_> + 1.1703710937500000e+02 + + 1 2 3014 2.5000000000000000e+00 0 -1 3015 + 6.0515000000000000e+03 -2 -3 3016 9.5000000000000000e+00 + + 2.2303590178489685e-01 -7.8184336423873901e-01 + -7.8855013847351074e-01 5.3229647874832153e-01 + <_> + 1.1659355926513672e+02 + + 1 2 3017 1.5500000000000000e+01 0 -1 3018 + 5.6500000000000000e+01 -2 -3 3019 5.5000000000000000e+00 + + -4.4354486465454102e-01 2.7184101939201355e-01 + -9.1781646013259888e-01 4.9616247415542603e-01 + <_> + 1.1686206054687500e+02 + + 1 2 3020 2.3500000000000000e+01 0 -1 3021 + 1.5000000000000000e+00 -2 -3 3022 1039. + + -6.9499677419662476e-01 2.6850062608718872e-01 + 5.3405404090881348e-01 -8.1517779827117920e-01 + <_> + 1.1712821960449219e+02 + + 1 2 3023 1.1500000000000000e+01 0 -1 3024 + 9.3650000000000000e+02 -2 -3 3025 1.2500000000000000e+01 + + -8.8214719295501709e-01 4.2026668787002563e-01 + -6.5273833274841309e-01 3.7967935204505920e-02 + <_> + 1.1673587799072266e+02 + + 1 2 3026 5.0000000000000000e-01 0 -1 3027 + 3.5000000000000000e+00 -2 -3 3028 3.8500000000000000e+01 + + -5.4606467485427856e-01 4.1681709885597229e-01 + -5.9122633934020996e-01 2.8970411419868469e-01 + <_> + 1.1750084686279297e+02 + + 1 2 3029 1.6500000000000000e+01 0 -1 3030 15. -2 -3 3031 + 1.9855000000000000e+03 + + 9.6899873018264771e-01 -1. -8.1302636861801147e-01 + 3.7165968678891659e-03 + <_> + 1.1750557708740234e+02 + + 1 2 3032 8.2150000000000000e+02 0 -1 3033 + 3.5000000000000000e+00 -2 -3 3034 5.0000000000000000e-01 + + -8.6601996421813965e-01 5.9305047988891602e-01 + -8.5805094242095947e-01 4.7341291792690754e-03 + <_> + 1.1816818237304688e+02 + + 1 2 3035 1.6850000000000000e+02 0 -1 3036 + 1.5000000000000000e+00 -2 -3 3037 1.7500000000000000e+01 + + -1. 6.6260558366775513e-01 -6.9309425354003906e-01 + 5.9965264052152634e-02 + <_> + 1.1821002197265625e+02 + + 1 2 3038 620. 0 -1 3039 1182. -2 -3 3040 + 1.5115000000000000e+03 + + 4.1837029159069061e-02 -7.9592239856719971e-01 -1. + 9.2407900094985962e-01 + <_> + 1.1791598510742188e+02 + + 1 2 3041 1.5000000000000000e+00 0 -1 3042 + 5.0000000000000000e-01 -2 -3 3043 6.5000000000000000e+00 + + -7.0829302072525024e-01 4.5243009924888611e-01 + -6.9395291805267334e-01 7.5258597731590271e-02 + <_> + 1.1805176544189453e+02 + + 1 2 3044 229. 0 -1 3045 1.9835000000000000e+03 -2 -3 3046 + 6.5500000000000000e+01 + + 1.3577787578105927e-01 -9.8038744926452637e-01 1. + -9.8189878463745117e-01 + <_> + 1.1815481567382812e+02 + + 1 2 3047 4.5000000000000000e+00 0 -1 3048 3. -2 -3 3049 + 5.0555000000000000e+03 + + -1. 6.8868088722229004e-01 1.0305030643939972e-01 + -9.2723184823989868e-01 + <_> + 1.1790955352783203e+02 + + 1 2 3050 2.4500000000000000e+01 0 -1 3051 + 8.1500000000000000e+01 -2 -3 3052 1.1500000000000000e+01 + + -2.4526403844356537e-01 7.3126202821731567e-01 + 8.8459062576293945e-01 -1. + <_> + 1.1719922637939453e+02 + + 1 2 3053 3.5000000000000000e+00 0 -1 3054 161. -2 -3 3055 + 2.3055000000000000e+03 + + 3.4097507596015930e-01 -7.3160159587860107e-01 + -7.1032357215881348e-01 2.1932438015937805e-01 + <_> + 1.1802425384521484e+02 + + 1 2 3056 1.0775000000000000e+03 0 -1 3057 1069. -2 -3 3058 + 3.4500000000000000e+01 + + -1. 8.2502609491348267e-01 -3.4417897462844849e-01 + 3.8862380385398865e-01 + <_> + 1.1822765350341797e+02 + + 1 2 3059 5.6500000000000000e+01 0 -1 3060 + 3.5000000000000000e+00 -2 -3 3061 1.5500000000000000e+01 + + -9.4351071119308472e-01 2.0340043306350708e-01 + -9.6025758981704712e-01 9.0146809816360474e-01 + <_> + 1.1837182617187500e+02 + + 1 2 3062 1.9150000000000000e+02 0 -1 3063 + 6.0500000000000000e+01 -2 -3 3064 80. + + 1.4417025446891785e-01 -6.5984970331192017e-01 + -9.8928850889205933e-01 9.0138816833496094e-01 + <_> + 1.1857872009277344e+02 + + 1 2 3065 2.1500000000000000e+01 0 -1 3066 + 5.0000000000000000e-01 -2 -3 3067 2330. + + 5.4495859146118164e-01 -7.0084166526794434e-01 + 2.0690013468265533e-01 -9.6294975280761719e-01 + <_> + 1.1802633666992188e+02 + + 1 2 3068 5.7550000000000000e+02 0 -1 3069 + 1.4750000000000000e+02 -2 -3 3070 3.4500000000000000e+01 + + -5.5238926410675049e-01 1.9023463129997253e-01 + -5.1289671659469604e-01 4.9855348467826843e-01 + + <_> + 2 + + 2 3 4 10 + <_> + 1 + + 2 13 3 2 + <_> + 9 + + 2 6 4 3 + <_> + 7 + + 3 7 2 5 + <_> + 0 + + 2 7 4 4 + <_> + 5 + + 4 0 2 11 + <_> + 1 + + 3 13 2 1 + <_> + 3 + + 0 4 7 2 + <_> + 4 + + 2 8 4 5 + <_> + 0 + + 2 2 5 11 + <_> + 7 + + 3 3 2 11 + <_> + 5 + + 0 14 6 1 + <_> + 8 + + 1 0 6 1 + <_> + 3 + + 1 14 6 1 + <_> + 3 + + 1 3 4 7 + <_> + 4 + + 3 5 2 9 + <_> + 1 + + 1 12 6 2 + <_> + 1 + + 0 5 7 3 + <_> + 3 + + 4 14 3 1 + <_> + 5 + + 2 11 5 2 + <_> + 9 + + 3 4 2 10 + <_> + 8 + + 0 3 5 1 + <_> + 2 + + 5 3 2 4 + <_> + 5 + + 3 1 2 5 + <_> + 9 + + 3 8 2 4 + <_> + 9 + + 1 0 1 13 + <_> + 0 + + 3 10 2 3 + <_> + 2 + + 0 14 6 1 + <_> + 1 + + 3 1 2 9 + <_> + 3 + + 0 2 4 6 + <_> + 4 + + 3 2 2 1 + <_> + 7 + + 1 9 6 1 + <_> + 2 + + 1 7 3 5 + <_> + 5 + + 3 14 4 1 + <_> + 9 + + 0 5 7 1 + <_> + 5 + + 5 1 2 12 + <_> + 0 + + 1 1 3 6 + <_> + 3 + + 2 4 2 8 + <_> + 1 + + 0 0 6 15 + <_> + 1 + + 2 12 3 2 + <_> + 5 + + 4 3 3 3 + <_> + 1 + + 3 1 2 8 + <_> + 7 + + 3 6 3 4 + <_> + 5 + + 2 5 5 7 + <_> + 7 + + 3 0 2 2 + <_> + 9 + + 4 5 1 1 + <_> + 9 + + 0 0 7 4 + <_> + 8 + + 1 6 6 1 + <_> + 4 + + 3 9 3 4 + <_> + 5 + + 1 14 3 1 + <_> + 7 + + 2 1 1 3 + <_> + 2 + + 2 7 4 4 + <_> + 5 + + 2 8 2 3 + <_> + 1 + + 3 4 2 8 + <_> + 9 + + 3 5 1 2 + <_> + 8 + + 0 6 7 5 + <_> + 7 + + 0 13 7 2 + <_> + 7 + + 3 6 2 1 + <_> + 7 + + 3 0 4 15 + <_> + 3 + + 1 5 5 1 + <_> + 4 + + 4 14 2 1 + <_> + 5 + + 3 13 4 2 + <_> + 3 + + 2 9 3 4 + <_> + 9 + + 0 6 1 2 + <_> + 9 + + 6 1 1 1 + <_> + 0 + + 2 2 3 10 + <_> + 5 + + 4 6 2 7 + <_> + 7 + + 2 2 4 3 + <_> + 4 + + 3 1 2 7 + <_> + 8 + + 2 3 4 1 + <_> + 4 + + 0 0 3 1 + <_> + 3 + + 0 14 5 1 + <_> + 1 + + 2 4 4 9 + <_> + 3 + + 2 4 1 3 + <_> + 1 + + 0 9 7 2 + <_> + 9 + + 0 4 7 5 + <_> + 2 + + 4 2 3 4 + <_> + 3 + + 2 10 1 1 + <_> + 2 + + 4 14 3 1 + <_> + 2 + + 1 11 4 2 + <_> + 4 + + 0 0 4 2 + <_> + 9 + + 3 4 2 6 + <_> + 9 + + 6 0 1 12 + <_> + 8 + + 2 6 5 2 + <_> + 5 + + 4 9 2 4 + <_> + 2 + + 4 7 1 2 + <_> + 4 + + 3 9 2 5 + <_> + 1 + + 4 12 1 2 + <_> + 5 + + 2 3 5 3 + <_> + 9 + + 4 5 3 10 + <_> + 5 + + 0 5 3 2 + <_> + 1 + + 0 3 2 4 + <_> + 4 + + 5 0 2 3 + <_> + 5 + + 4 4 3 2 + <_> + 7 + + 2 0 5 5 + <_> + 9 + + 0 0 3 1 + <_> + 4 + + 3 1 1 5 + <_> + 9 + + 3 6 1 7 + <_> + 1 + + 1 0 6 14 + <_> + 3 + + 0 14 7 1 + <_> + 4 + + 2 8 4 5 + <_> + 4 + + 0 1 1 10 + <_> + 3 + + 1 4 6 6 + <_> + 7 + + 1 5 6 5 + <_> + 0 + + 3 10 2 3 + <_> + 8 + + 4 2 1 2 + <_> + 9 + + 3 5 2 1 + <_> + 9 + + 0 6 1 6 + <_> + 4 + + 4 1 1 8 + <_> + 1 + + 4 7 1 1 + <_> + 2 + + 2 6 5 9 + <_> + 5 + + 1 14 6 1 + <_> + 7 + + 3 6 1 5 + <_> + 3 + + 2 2 3 4 + <_> + 0 + + 0 2 6 11 + <_> + 1 + + 3 13 1 2 + <_> + 7 + + 6 1 1 6 + <_> + 5 + + 5 3 1 7 + <_> + 4 + + 2 5 3 10 + <_> + 1 + + 1 13 4 1 + <_> + 1 + + 0 13 6 2 + <_> + 2 + + 1 13 5 2 + <_> + 2 + + 5 7 2 1 + <_> + 2 + + 1 12 5 1 + <_> + 1 + + 3 0 1 13 + <_> + 8 + + 0 5 3 9 + <_> + 5 + + 2 1 3 7 + <_> + 7 + + 0 14 6 1 + <_> + 2 + + 2 0 3 2 + <_> + 3 + + 3 1 1 5 + <_> + 9 + + 3 8 2 2 + <_> + 7 + + 4 5 1 3 + <_> + 0 + + 0 13 2 1 + <_> + 9 + + 1 2 2 2 + <_> + 0 + + 3 13 4 2 + <_> + 3 + + 2 9 2 4 + <_> + 8 + + 1 4 5 2 + <_> + 7 + + 3 6 1 1 + <_> + 2 + + 4 3 2 2 + <_> + 5 + + 3 4 4 2 + <_> + 0 + + 4 2 1 7 + <_> + 1 + + 3 0 1 10 + <_> + 4 + + 3 2 1 7 + <_> + 8 + + 1 1 6 4 + <_> + 8 + + 4 0 3 1 + <_> + 2 + + 4 1 3 13 + <_> + 9 + + 4 7 1 4 + <_> + 1 + + 3 12 2 3 + <_> + 3 + + 0 4 4 3 + <_> + 4 + + 3 11 1 4 + <_> + 1 + + 1 0 4 2 + <_> + 4 + + 3 0 4 5 + <_> + 7 + + 3 7 2 3 + <_> + 0 + + 3 7 4 6 + <_> + 9 + + 0 0 5 11 + <_> + 9 + + 0 1 6 3 + <_> + 3 + + 0 0 3 6 + <_> + 3 + + 1 14 6 1 + <_> + 8 + + 6 2 1 9 + <_> + 2 + + 2 11 4 2 + <_> + 4 + + 3 9 1 5 + <_> + 9 + + 0 5 1 4 + <_> + 1 + + 3 5 4 8 + <_> + 2 + + 2 13 4 2 + <_> + 1 + + 5 10 2 1 + <_> + 0 + + 2 5 1 7 + <_> + 2 + + 1 8 3 4 + <_> + 4 + + 2 8 4 6 + <_> + 1 + + 0 7 5 7 + <_> + 5 + + 1 4 6 2 + <_> + 1 + + 6 12 1 2 + <_> + 1 + + 2 1 3 11 + <_> + 3 + + 1 10 1 2 + <_> + 1 + + 3 4 2 6 + <_> + 9 + + 4 5 1 2 + <_> + 7 + + 4 1 3 7 + <_> + 8 + + 3 0 3 10 + <_> + 5 + + 3 3 3 3 + <_> + 7 + + 6 6 1 8 + <_> + 4 + + 3 2 2 2 + <_> + 0 + + 2 14 5 1 + <_> + 5 + + 2 11 4 2 + <_> + 3 + + 0 7 3 4 + <_> + 9 + + 6 4 1 3 + <_> + 1 + + 1 12 6 2 + <_> + 9 + + 3 1 3 1 + <_> + 1 + + 0 0 7 2 + <_> + 2 + + 4 6 2 7 + <_> + 4 + + 4 1 3 7 + <_> + 4 + + 3 2 2 12 + <_> + 1 + + 2 0 2 4 + <_> + 7 + + 3 3 2 3 + <_> + 9 + + 6 0 1 3 + <_> + 7 + + 1 1 4 1 + <_> + 9 + + 1 3 5 9 + <_> + 8 + + 2 3 5 1 + <_> + 5 + + 3 13 4 2 + <_> + 8 + + 2 2 4 9 + <_> + 3 + + 1 3 1 7 + <_> + 1 + + 1 3 1 4 + <_> + 4 + + 3 5 2 10 + <_> + 5 + + 5 5 1 6 + <_> + 7 + + 0 8 4 2 + <_> + 2 + + 5 14 2 1 + <_> + 1 + + 1 13 6 2 + <_> + 3 + + 2 2 2 6 + <_> + 8 + + 0 6 7 1 + <_> + 9 + + 4 9 1 1 + <_> + 9 + + 0 6 2 6 + <_> + 0 + + 2 2 2 12 + <_> + 9 + + 0 5 3 1 + <_> + 1 + + 3 12 3 2 + <_> + 5 + + 4 8 1 5 + <_> + 4 + + 0 3 5 3 + <_> + 1 + + 2 13 5 1 + <_> + 4 + + 0 1 7 6 + <_> + 4 + + 0 12 7 3 + <_> + 5 + + 0 5 3 2 + <_> + 2 + + 4 10 2 2 + <_> + 2 + + 3 14 3 1 + <_> + 2 + + 2 6 1 8 + <_> + 7 + + 2 0 4 2 + <_> + 1 + + 3 4 3 9 + <_> + 9 + + 0 1 1 1 + <_> + 3 + + 3 4 2 1 + <_> + 0 + + 0 13 2 2 + <_> + 3 + + 2 4 1 3 + <_> + 9 + + 3 4 1 3 + <_> + 7 + + 1 6 4 4 + <_> + 3 + + 3 11 3 2 + <_> + 7 + + 0 1 1 1 + <_> + 1 + + 4 8 1 7 + <_> + 8 + + 3 3 2 2 + <_> + 0 + + 3 4 1 11 + <_> + 2 + + 5 2 1 5 + <_> + 5 + + 5 1 1 11 + <_> + 7 + + 3 8 4 2 + <_> + 9 + + 3 9 2 4 + <_> + 5 + + 2 6 3 7 + <_> + 3 + + 2 3 5 3 + <_> + 7 + + 3 14 1 1 + <_> + 5 + + 0 0 5 1 + <_> + 7 + + 4 5 1 3 + <_> + 9 + + 4 4 1 3 + <_> + 8 + + 6 4 1 4 + <_> + 7 + + 0 3 7 12 + <_> + 7 + + 3 10 4 1 + <_> + 9 + + 3 0 2 11 + <_> + 3 + + 2 2 1 4 + <_> + 0 + + 2 10 4 2 + <_> + 1 + + 2 0 5 2 + <_> + 0 + + 1 13 6 2 + <_> + 1 + + 3 0 2 9 + <_> + 7 + + 6 1 1 1 + <_> + 4 + + 2 8 4 5 + <_> + 5 + + 4 1 1 2 + <_> + 7 + + 1 2 1 5 + <_> + 0 + + 0 11 7 2 + <_> + 3 + + 2 3 4 3 + <_> + 4 + + 0 12 5 3 + <_> + 2 + + 1 4 3 2 + <_> + 3 + + 4 14 3 1 + <_> + 0 + + 3 12 4 1 + <_> + 5 + + 1 13 4 2 + <_> + 9 + + 2 0 1 2 + <_> + 7 + + 6 1 1 2 + <_> + 3 + + 2 0 2 14 + <_> + 9 + + 1 4 6 4 + <_> + 5 + + 4 5 3 1 + <_> + 1 + + 0 0 6 2 + <_> + 8 + + 0 2 6 9 + <_> + 7 + + 0 11 2 1 + <_> + 1 + + 6 6 1 8 + <_> + 1 + + 3 5 2 5 + <_> + 9 + + 4 0 3 3 + <_> + 3 + + 3 3 1 1 + <_> + 4 + + 4 11 1 4 + <_> + 1 + + 4 12 2 2 + <_> + 0 + + 3 9 3 4 + <_> + 2 + + 3 4 2 8 + <_> + 1 + + 3 7 4 1 + <_> + 0 + + 1 13 6 1 + <_> + 4 + + 4 1 1 8 + <_> + 4 + + 2 6 1 9 + <_> + 4 + + 3 1 4 14 + <_> + 5 + + 1 14 6 1 + <_> + 5 + + 2 9 3 4 + <_> + 3 + + 0 3 5 3 + <_> + 1 + + 0 0 7 2 + <_> + 5 + + 0 2 7 1 + <_> + 7 + + 3 7 2 1 + <_> + 0 + + 0 2 7 11 + <_> + 4 + + 0 6 2 4 + <_> + 1 + + 2 12 3 1 + <_> + 7 + + 3 7 4 1 + <_> + 5 + + 4 1 2 12 + <_> + 2 + + 1 8 1 1 + <_> + 4 + + 3 2 1 4 + <_> + 7 + + 2 14 3 1 + <_> + 8 + + 2 0 5 2 + <_> + 9 + + 4 5 1 7 + <_> + 9 + + 6 2 1 2 + <_> + 3 + + 0 7 4 7 + <_> + 4 + + 3 8 2 5 + <_> + 2 + + 5 13 2 2 + <_> + 7 + + 4 8 1 5 + <_> + 5 + + 3 11 3 2 + <_> + 3 + + 2 11 4 2 + <_> + 8 + + 5 4 2 6 + <_> + 1 + + 4 5 1 10 + <_> + 9 + + 3 9 2 3 + <_> + 0 + + 1 3 4 1 + <_> + 3 + + 2 2 1 7 + <_> + 7 + + 1 2 1 7 + <_> + 5 + + 4 4 2 9 + <_> + 5 + + 0 14 4 1 + <_> + 5 + + 0 2 5 5 + <_> + 1 + + 5 3 1 4 + <_> + 1 + + 1 12 4 2 + <_> + 3 + + 0 1 4 6 + <_> + 9 + + 4 5 3 1 + <_> + 3 + + 0 0 2 4 + <_> + 3 + + 1 0 5 1 + <_> + 5 + + 1 12 3 3 + <_> + 2 + + 2 3 4 10 + <_> + 1 + + 1 13 1 1 + <_> + 4 + + 0 8 2 7 + <_> + 7 + + 0 13 2 2 + <_> + 1 + + 6 13 1 2 + <_> + 5 + + 4 2 2 10 + <_> + 1 + + 2 3 5 10 + <_> + 5 + + 3 14 4 1 + <_> + 5 + + 4 0 2 1 + <_> + 5 + + 5 4 2 8 + <_> + 7 + + 1 1 3 13 + <_> + 3 + + 0 4 3 6 + <_> + 1 + + 4 0 2 14 + <_> + 7 + + 2 1 1 1 + <_> + 3 + + 3 3 2 9 + <_> + 7 + + 1 7 1 1 + <_> + 7 + + 0 4 7 8 + <_> + 7 + + 1 2 1 1 + <_> + 9 + + 2 5 4 7 + <_> + 4 + + 0 7 1 3 + <_> + 5 + + 4 5 2 1 + <_> + 3 + + 2 12 3 1 + <_> + 1 + + 2 8 2 4 + <_> + 2 + + 2 14 1 1 + <_> + 7 + + 3 13 2 1 + <_> + 5 + + 1 11 6 4 + <_> + 8 + + 0 6 7 2 + <_> + 4 + + 4 1 1 5 + <_> + 1 + + 3 3 2 2 + <_> + 5 + + 3 3 2 2 + <_> + 1 + + 0 5 5 2 + <_> + 8 + + 0 0 7 1 + <_> + 1 + + 1 7 6 1 + <_> + 5 + + 4 12 2 1 + <_> + 7 + + 6 11 1 2 + <_> + 1 + + 1 0 5 14 + <_> + 0 + + 0 11 1 3 + <_> + 1 + + 2 4 3 8 + <_> + 2 + + 1 5 2 3 + <_> + 3 + + 2 14 5 1 + <_> + 5 + + 3 11 4 3 + <_> + 5 + + 4 3 2 7 + <_> + 9 + + 3 7 1 7 + <_> + 1 + + 2 9 4 3 + <_> + 3 + + 3 3 2 3 + <_> + 9 + + 5 1 2 1 + <_> + 7 + + 6 12 1 2 + <_> + 8 + + 1 5 6 4 + <_> + 9 + + 2 4 2 2 + <_> + 8 + + 0 5 2 3 + <_> + 1 + + 0 10 7 4 + <_> + 4 + + 3 9 3 4 + <_> + 3 + + 2 5 2 9 + <_> + 3 + + 2 3 2 7 + <_> + 9 + + 1 4 6 4 + <_> + 1 + + 2 12 3 2 + <_> + 3 + + 1 3 4 3 + <_> + 7 + + 4 5 1 1 + <_> + 7 + + 2 0 5 15 + <_> + 2 + + 5 4 2 2 + <_> + 1 + + 0 8 5 7 + <_> + 5 + + 2 14 5 1 + <_> + 7 + + 5 5 1 4 + <_> + 5 + + 1 5 6 7 + <_> + 7 + + 1 0 6 9 + <_> + 4 + + 1 5 6 2 + <_> + 9 + + 4 6 2 6 + <_> + 1 + + 0 5 5 2 + <_> + 8 + + 2 6 5 1 + <_> + 0 + + 4 8 2 5 + <_> + 9 + + 0 4 6 5 + <_> + 2 + + 3 13 4 2 + <_> + 3 + + 2 9 1 2 + <_> + 7 + + 1 9 6 2 + <_> + 2 + + 1 1 4 1 + <_> + 5 + + 2 3 5 3 + <_> + 4 + + 6 2 1 12 + <_> + 4 + + 2 8 3 5 + <_> + 2 + + 1 11 5 2 + <_> + 4 + + 1 7 1 8 + <_> + 3 + + 2 13 4 2 + <_> + 1 + + 3 5 2 1 + <_> + 4 + + 4 1 1 8 + <_> + 3 + + 2 0 4 10 + <_> + 1 + + 3 12 1 2 + <_> + 3 + + 0 4 7 1 + <_> + 4 + + 2 1 5 14 + <_> + 4 + + 0 6 2 5 + <_> + 8 + + 2 0 4 1 + <_> + 5 + + 3 10 3 3 + <_> + 9 + + 4 4 3 7 + <_> + 4 + + 2 5 5 1 + <_> + 3 + + 2 3 5 3 + <_> + 2 + + 2 14 3 1 + <_> + 0 + + 2 1 3 4 + <_> + 5 + + 5 1 1 10 + <_> + 0 + + 2 0 5 2 + <_> + 1 + + 0 3 7 4 + <_> + 4 + + 6 4 1 3 + <_> + 1 + + 3 7 2 6 + <_> + 2 + + 2 7 4 5 + <_> + 5 + + 5 11 1 1 + <_> + 7 + + 0 7 4 3 + <_> + 9 + + 3 5 2 3 + <_> + 7 + + 3 6 2 1 + <_> + 0 + + 1 10 3 2 + <_> + 3 + + 0 13 2 1 + <_> + 7 + + 4 14 1 1 + <_> + 0 + + 2 6 2 6 + <_> + 0 + + 3 10 4 3 + <_> + 7 + + 4 14 1 1 + <_> + 8 + + 4 3 1 1 + <_> + 8 + + 0 7 2 1 + <_> + 0 + + 3 13 3 2 + <_> + 8 + + 1 1 5 7 + <_> + 4 + + 2 2 2 6 + <_> + 0 + + 0 4 7 3 + <_> + 9 + + 0 1 1 3 + <_> + 2 + + 2 3 4 5 + <_> + 9 + + 3 1 2 11 + <_> + 8 + + 3 3 2 10 + <_> + 2 + + 5 13 2 2 + <_> + 1 + + 1 1 4 11 + <_> + 3 + + 1 4 5 9 + <_> + 7 + + 1 6 3 2 + <_> + 8 + + 1 9 4 3 + <_> + 3 + + 1 11 4 2 + <_> + 0 + + 3 7 1 7 + <_> + 4 + + 2 8 4 5 + <_> + 1 + + 0 0 7 1 + <_> + 1 + + 3 3 2 11 + <_> + 5 + + 5 3 2 3 + <_> + 7 + + 3 11 1 2 + <_> + 4 + + 3 6 2 7 + <_> + 3 + + 1 4 1 2 + <_> + 1 + + 3 12 3 3 + <_> + 4 + + 0 4 7 1 + <_> + 4 + + 0 13 5 2 + <_> + 0 + + 1 13 5 2 + <_> + 9 + + 1 0 2 2 + <_> + 4 + + 6 9 1 2 + <_> + 2 + + 4 2 2 4 + <_> + 5 + + 4 4 2 8 + <_> + 1 + + 3 1 4 14 + <_> + 7 + + 2 13 4 2 + <_> + 9 + + 4 8 1 3 + <_> + 7 + + 3 6 2 4 + <_> + 9 + + 6 0 1 15 + <_> + 9 + + 5 4 2 1 + <_> + 9 + + 2 4 3 11 + <_> + 2 + + 1 11 5 2 + <_> + 8 + + 0 4 5 9 + <_> + 7 + + 3 7 2 4 + <_> + 0 + + 0 13 3 2 + <_> + 0 + + 1 8 6 4 + <_> + 7 + + 3 10 2 2 + <_> + 8 + + 2 2 4 2 + <_> + 8 + + 4 3 1 2 + <_> + 1 + + 3 7 2 7 + <_> + 2 + + 5 2 1 4 + <_> + 5 + + 4 4 1 3 + <_> + 5 + + 3 14 4 1 + <_> + 4 + + 1 11 6 1 + <_> + 5 + + 1 0 3 3 + <_> + 7 + + 3 8 2 3 + <_> + 3 + + 0 0 3 4 + <_> + 1 + + 0 0 7 2 + <_> + 5 + + 0 8 6 4 + <_> + 3 + + 3 1 2 5 + <_> + 4 + + 3 5 1 10 + <_> + 4 + + 2 4 4 1 + <_> + 1 + + 0 2 7 4 + <_> + 8 + + 6 5 1 5 + <_> + 1 + + 0 8 6 3 + <_> + 9 + + 3 4 2 2 + <_> + 7 + + 1 4 1 1 + <_> + 7 + + 0 4 7 11 + <_> + 2 + + 0 14 6 1 + <_> + 9 + + 2 5 5 4 + <_> + 3 + + 3 14 4 1 + <_> + 5 + + 4 2 2 11 + <_> + 1 + + 3 9 2 3 + <_> + 8 + + 0 6 7 6 + <_> + 3 + + 1 5 4 1 + <_> + 7 + + 1 2 3 4 + <_> + 0 + + 2 12 5 1 + <_> + 9 + + 1 2 1 2 + <_> + 7 + + 1 1 1 2 + <_> + 4 + + 3 1 2 8 + <_> + 9 + + 0 4 7 2 + <_> + 1 + + 1 12 3 2 + <_> + 5 + + 3 2 4 4 + <_> + 1 + + 2 4 4 9 + <_> + 2 + + 3 2 2 2 + <_> + 1 + + 0 10 7 1 + <_> + 2 + + 5 13 2 2 + <_> + 9 + + 2 3 4 1 + <_> + 3 + + 1 6 6 3 + <_> + 2 + + 4 8 2 5 + <_> + 7 + + 3 8 1 2 + <_> + 2 + + 2 14 3 1 + <_> + 4 + + 3 2 2 2 + <_> + 1 + + 3 2 2 3 + <_> + 4 + + 3 5 1 5 + <_> + 9 + + 0 6 1 4 + <_> + 3 + + 2 4 2 3 + <_> + 4 + + 0 12 6 3 + <_> + 1 + + 1 13 6 2 + <_> + 3 + + 2 4 5 4 + <_> + 4 + + 1 12 5 3 + <_> + 0 + + 3 10 3 3 + <_> + 7 + + 0 11 7 1 + <_> + 0 + + 3 13 3 2 + <_> + 5 + + 4 4 3 2 + <_> + 9 + + 4 6 1 6 + <_> + 2 + + 2 7 3 5 + <_> + 8 + + 2 5 5 2 + <_> + 3 + + 1 1 1 3 + <_> + 8 + + 3 2 4 11 + <_> + 1 + + 3 1 1 10 + <_> + 4 + + 1 5 6 1 + <_> + 4 + + 0 1 7 14 + <_> + 1 + + 1 10 6 4 + <_> + 4 + + 0 9 1 2 + <_> + 1 + + 5 13 2 2 + <_> + 8 + + 2 0 5 1 + <_> + 9 + + 1 4 5 2 + <_> + 9 + + 2 14 4 1 + <_> + 7 + + 5 0 2 3 + <_> + 4 + + 0 8 7 7 + <_> + 5 + + 4 2 2 12 + <_> + 3 + + 2 11 5 2 + <_> + 5 + + 1 11 2 1 + <_> + 3 + + 6 11 1 3 + <_> + 5 + + 1 5 6 1 + <_> + 4 + + 2 1 5 14 + <_> + 2 + + 0 14 6 1 + <_> + 7 + + 3 5 4 5 + <_> + 0 + + 0 0 3 8 + <_> + 7 + + 1 0 1 3 + <_> + 1 + + 3 4 2 8 + <_> + 1 + + 4 11 3 3 + <_> + 1 + + 0 1 3 6 + <_> + 9 + + 0 6 1 5 + <_> + 8 + + 5 4 1 4 + <_> + 9 + + 0 5 6 3 + <_> + 5 + + 4 10 2 3 + <_> + 5 + + 5 7 1 2 + <_> + 5 + + 4 13 3 2 + <_> + 4 + + 2 11 5 1 + <_> + 4 + + 3 2 3 2 + <_> + 4 + + 0 8 6 6 + <_> + 3 + + 3 2 1 3 + <_> + 7 + + 1 0 6 11 + <_> + 0 + + 2 2 5 12 + <_> + 5 + + 0 14 4 1 + <_> + 3 + + 3 7 3 4 + <_> + 0 + + 4 8 2 3 + <_> + 4 + + 2 8 5 7 + <_> + 9 + + 6 0 1 5 + <_> + 7 + + 2 0 3 1 + <_> + 1 + + 3 12 2 2 + <_> + 3 + + 0 3 4 4 + <_> + 9 + + 3 7 3 5 + <_> + 3 + + 2 3 4 8 + <_> + 4 + + 0 6 1 3 + <_> + 4 + + 2 10 3 4 + <_> + 3 + + 2 14 5 1 + <_> + 9 + + 0 2 2 13 + <_> + 4 + + 0 9 2 2 + <_> + 9 + + 0 5 7 1 + <_> + 1 + + 3 1 2 7 + <_> + 0 + + 3 10 3 3 + <_> + 7 + + 2 6 4 4 + <_> + 2 + + 3 3 2 9 + <_> + 7 + + 1 2 1 1 + <_> + 4 + + 3 9 1 3 + <_> + 2 + + 3 7 2 3 + <_> + 5 + + 0 5 7 1 + <_> + 3 + + 0 11 5 2 + <_> + 5 + + 3 11 2 2 + <_> + 2 + + 0 14 6 1 + <_> + 4 + + 2 11 2 2 + <_> + 9 + + 2 8 4 2 + <_> + 2 + + 2 11 3 2 + <_> + 8 + + 0 6 7 2 + <_> + 7 + + 1 3 1 10 + <_> + 7 + + 0 2 1 13 + <_> + 2 + + 4 10 2 3 + <_> + 7 + + 1 11 6 2 + <_> + 1 + + 0 0 7 2 + <_> + 2 + + 2 7 2 4 + <_> + 7 + + 0 0 1 2 + <_> + 4 + + 3 2 2 3 + <_> + 5 + + 3 3 4 4 + <_> + 1 + + 1 12 6 2 + <_> + 5 + + 3 5 1 5 + <_> + 5 + + 0 14 7 1 + <_> + 1 + + 3 4 4 9 + <_> + 3 + + 0 13 6 2 + <_> + 5 + + 4 2 2 11 + <_> + 9 + + 3 5 2 8 + <_> + 9 + + 2 5 5 7 + <_> + 5 + + 0 14 5 1 + <_> + 5 + + 3 11 3 3 + <_> + 8 + + 0 2 7 12 + <_> + 9 + + 6 3 1 1 + <_> + 2 + + 0 3 1 8 + <_> + 9 + + 3 4 2 1 + <_> + 4 + + 3 8 2 5 + <_> + 7 + + 0 8 5 7 + <_> + 0 + + 0 10 4 2 + <_> + 7 + + 1 9 5 1 + <_> + 7 + + 2 3 4 11 + <_> + 7 + + 3 6 2 1 + <_> + 3 + + 1 4 6 8 + <_> + 7 + + 2 6 2 1 + <_> + 0 + + 2 11 4 2 + <_> + 2 + + 5 13 2 2 + <_> + 4 + + 1 2 6 4 + <_> + 4 + + 2 7 5 3 + <_> + 4 + + 0 1 1 1 + <_> + 3 + + 3 0 4 9 + <_> + 4 + + 4 0 2 2 + <_> + 3 + + 1 10 6 5 + <_> + 0 + + 2 2 2 6 + <_> + 9 + + 0 0 7 4 + <_> + 8 + + 3 2 3 2 + <_> + 3 + + 3 4 1 1 + <_> + 9 + + 2 3 4 6 + <_> + 4 + + 4 1 1 7 + <_> + 7 + + 3 14 2 1 + <_> + 5 + + 4 6 3 9 + <_> + 1 + + 3 0 4 13 + <_> + 1 + + 2 12 4 2 + <_> + 3 + + 2 0 4 1 + <_> + 4 + + 1 14 6 1 + <_> + 8 + + 1 8 4 2 + <_> + 1 + + 1 6 6 8 + <_> + 3 + + 2 4 2 8 + <_> + 7 + + 1 0 1 8 + <_> + 4 + + 0 3 5 3 + <_> + 2 + + 2 9 3 4 + <_> + 9 + + 2 4 4 2 + <_> + 1 + + 1 1 4 13 + <_> + 0 + + 0 13 2 2 + <_> + 3 + + 1 4 2 3 + <_> + 8 + + 0 0 7 7 + <_> + 7 + + 1 14 1 1 + <_> + 2 + + 3 13 2 2 + <_> + 3 + + 1 4 4 2 + <_> + 1 + + 4 9 1 3 + <_> + 1 + + 2 13 3 2 + <_> + 0 + + 2 10 4 2 + <_> + 8 + + 2 1 5 4 + <_> + 8 + + 3 3 2 1 + <_> + 0 + + 2 4 1 1 + <_> + 1 + + 3 12 2 2 + <_> + 5 + + 1 4 6 2 + <_> + 9 + + 3 4 4 9 + <_> + 9 + + 6 1 1 1 + <_> + 0 + + 0 9 3 2 + <_> + 2 + + 3 6 3 7 + <_> + 9 + + 0 5 2 2 + <_> + 2 + + 2 0 3 3 + <_> + 3 + + 0 3 7 3 + <_> + 9 + + 0 1 2 3 + <_> + 1 + + 0 7 6 7 + <_> + 0 + + 1 13 4 2 + <_> + 0 + + 1 2 5 12 + <_> + 1 + + 0 13 5 2 + <_> + 7 + + 3 5 3 5 + <_> + 8 + + 2 2 1 9 + <_> + 9 + + 2 4 2 3 + <_> + 2 + + 2 3 2 11 + <_> + 1 + + 2 12 3 2 + <_> + 3 + + 0 0 5 7 + <_> + 1 + + 0 11 7 2 + <_> + 5 + + 1 13 4 2 + <_> + 5 + + 4 6 3 8 + <_> + 8 + + 5 6 1 4 + <_> + 1 + + 0 0 1 6 + <_> + 3 + + 0 3 6 4 + <_> + 9 + + 3 0 1 14 + <_> + 4 + + 3 9 1 6 + <_> + 1 + + 3 2 1 10 + <_> + 5 + + 5 9 1 2 + <_> + 0 + + 2 14 3 1 + <_> + 4 + + 2 8 4 6 + <_> + 5 + + 3 3 4 3 + <_> + 7 + + 1 0 1 8 + <_> + 7 + + 3 0 4 15 + <_> + 3 + + 1 3 3 2 + <_> + 9 + + 2 5 2 1 + <_> + 9 + + 6 0 1 6 + <_> + 5 + + 4 9 1 5 + <_> + 5 + + 0 5 7 2 + <_> + 4 + + 4 6 3 3 + <_> + 1 + + 0 4 7 5 + <_> + 3 + + 0 14 7 1 + <_> + 1 + + 4 5 1 7 + <_> + 9 + + 3 3 1 12 + <_> + 1 + + 4 0 1 11 + <_> + 4 + + 2 2 3 4 + <_> + 8 + + 0 5 7 7 + <_> + 3 + + 1 7 3 7 + <_> + 3 + + 6 6 1 1 + <_> + 2 + + 3 1 4 9 + <_> + 5 + + 4 2 1 1 + <_> + 9 + + 1 7 5 3 + <_> + 0 + + 1 10 6 3 + <_> + 9 + + 0 6 2 6 + <_> + 3 + + 5 6 2 8 + <_> + 9 + + 0 7 5 2 + <_> + 7 + + 4 6 1 2 + <_> + 5 + + 5 1 1 8 + <_> + 0 + + 2 3 5 6 + <_> + 0 + + 2 0 5 2 + <_> + 1 + + 2 12 4 2 + <_> + 5 + + 0 11 2 3 + <_> + 3 + + 1 5 6 2 + <_> + 9 + + 3 4 1 9 + <_> + 7 + + 1 8 4 2 + <_> + 1 + + 2 1 4 12 + <_> + 8 + + 2 3 4 1 + <_> + 1 + + 0 10 5 1 + <_> + 4 + + 3 1 2 8 + <_> + 1 + + 3 7 2 1 + <_> + 5 + + 3 8 2 5 + <_> + 2 + + 4 14 2 1 + <_> + 4 + + 3 8 2 5 + <_> + 3 + + 6 1 1 1 + <_> + 2 + + 2 3 4 10 + <_> + 2 + + 4 4 2 1 + <_> + 7 + + 3 14 1 1 + <_> + 1 + + 0 5 5 2 + <_> + 2 + + 0 12 7 3 + <_> + 2 + + 5 4 1 11 + <_> + 8 + + 1 2 6 3 + <_> + 8 + + 0 3 5 1 + <_> + 1 + + 6 1 1 7 + <_> + 5 + + 2 4 1 1 + <_> + 9 + + 3 6 1 7 + <_> + 4 + + 6 9 1 1 + <_> + 5 + + 5 4 1 6 + <_> + 9 + + 3 2 3 11 + <_> + 4 + + 0 9 2 3 + <_> + 5 + + 3 14 4 1 + <_> + 3 + + 1 12 5 1 + <_> + 3 + + 0 3 4 8 + <_> + 1 + + 3 2 2 10 + <_> + 1 + + 1 13 2 2 + <_> + 2 + + 5 1 1 6 + <_> + 1 + + 4 10 3 3 + <_> + 4 + + 6 10 1 2 + <_> + 7 + + 4 7 3 1 + <_> + 0 + + 2 2 4 10 + <_> + 1 + + 3 5 2 8 + <_> + 9 + + 1 0 2 2 + <_> + 9 + + 0 5 7 3 + <_> + 2 + + 4 2 3 2 + <_> + 7 + + 1 10 6 2 + <_> + 1 + + 3 0 4 2 + <_> + 5 + + 3 2 4 1 + <_> + 7 + + 3 7 2 4 + <_> + 5 + + 1 4 6 2 + <_> + 0 + + 1 1 6 1 + <_> + 1 + + 2 10 1 1 + <_> + 9 + + 6 0 1 14 + <_> + 7 + + 6 11 1 3 + <_> + 1 + + 5 8 2 6 + <_> + 3 + + 2 9 2 4 + <_> + 3 + + 0 12 3 1 + <_> + 2 + + 3 13 4 2 + <_> + 4 + + 2 8 5 6 + <_> + 2 + + 2 7 1 2 + <_> + 2 + + 1 6 5 1 + <_> + 3 + + 1 14 6 1 + <_> + 5 + + 3 12 2 1 + <_> + 3 + + 0 1 4 6 + <_> + 8 + + 2 0 4 1 + <_> + 4 + + 0 6 3 2 + <_> + 9 + + 4 9 1 1 + <_> + 7 + + 0 5 7 5 + <_> + 1 + + 3 1 2 8 + <_> + 1 + + 0 5 3 3 + <_> + 2 + + 4 3 2 10 + <_> + 4 + + 3 4 1 10 + <_> + 9 + + 0 4 7 2 + <_> + 1 + + 2 0 2 9 + <_> + 4 + + 3 2 1 4 + <_> + 4 + + 1 14 6 1 + <_> + 0 + + 1 13 1 1 + <_> + 3 + + 2 11 4 2 + <_> + 2 + + 0 12 2 1 + <_> + 3 + + 2 3 2 8 + <_> + 9 + + 1 5 4 2 + <_> + 0 + + 4 6 2 6 + <_> + 8 + + 3 3 2 1 + <_> + 4 + + 0 0 4 1 + <_> + 7 + + 1 8 6 3 + <_> + 7 + + 4 14 1 1 + <_> + 4 + + 1 12 6 3 + <_> + 5 + + 3 2 4 4 + <_> + 1 + + 0 12 5 1 + <_> + 3 + + 0 3 3 3 + <_> + 8 + + 0 0 7 7 + <_> + 1 + + 3 7 2 6 + <_> + 0 + + 0 2 6 4 + <_> + 1 + + 2 4 4 10 + <_> + 1 + + 3 12 2 3 + <_> + 7 + + 2 3 4 1 + <_> + 9 + + 0 4 7 11 + <_> + 0 + + 2 10 3 1 + <_> + 7 + + 1 11 6 1 + <_> + 1 + + 4 4 1 11 + <_> + 0 + + 2 14 3 1 + <_> + 9 + + 2 14 4 1 + <_> + 5 + + 4 5 3 2 + <_> + 1 + + 1 3 4 2 + <_> + 2 + + 2 10 3 2 + <_> + 4 + + 1 1 4 14 + <_> + 1 + + 1 0 4 2 + <_> + 3 + + 2 2 3 2 + <_> + 7 + + 3 6 2 1 + <_> + 4 + + 4 1 1 8 + <_> + 4 + + 0 0 6 15 + <_> + 5 + + 3 3 2 2 + <_> + 4 + + 4 3 3 4 + <_> + 9 + + 0 5 7 1 + <_> + 3 + + 1 4 3 2 + <_> + 3 + + 0 4 7 2 + <_> + 1 + + 3 12 3 3 + <_> + 2 + + 0 5 4 9 + <_> + 9 + + 0 0 2 4 + <_> + 2 + + 2 10 3 2 + <_> + 2 + + 0 14 3 1 + <_> + 5 + + 2 5 3 7 + <_> + 2 + + 2 9 3 4 + <_> + 4 + + 1 11 6 2 + <_> + 8 + + 4 0 2 1 + <_> + 0 + + 2 9 3 3 + <_> + 1 + + 3 4 3 6 + <_> + 9 + + 4 6 1 1 + <_> + 9 + + 0 11 4 1 + <_> + 3 + + 2 3 1 10 + <_> + 2 + + 2 0 4 2 + <_> + 1 + + 2 13 1 1 + <_> + 2 + + 4 0 1 1 + <_> + 5 + + 2 11 4 2 + <_> + 4 + + 2 1 5 14 + <_> + 3 + + 3 1 1 5 + <_> + 5 + + 1 14 6 1 + <_> + 4 + + 3 4 1 11 + <_> + 9 + + 3 7 1 7 + <_> + 3 + + 1 4 5 9 + <_> + 1 + + 0 3 7 4 + <_> + 4 + + 3 2 2 3 + <_> + 7 + + 3 6 2 5 + <_> + 2 + + 3 1 4 12 + <_> + 1 + + 0 0 6 3 + <_> + 2 + + 1 13 4 2 + <_> + 1 + + 2 0 4 13 + <_> + 7 + + 3 7 2 1 + <_> + 8 + + 0 6 7 1 + <_> + 4 + + 2 12 4 3 + <_> + 2 + + 0 11 7 4 + <_> + 4 + + 4 7 3 4 + <_> + 1 + + 0 10 4 4 + <_> + 5 + + 5 2 1 11 + <_> + 3 + + 4 14 3 1 + <_> + 1 + + 4 12 3 3 + <_> + 4 + + 1 14 5 1 + <_> + 2 + + 2 7 4 4 + <_> + 7 + + 1 8 1 1 + <_> + 7 + + 1 7 2 3 + <_> + 3 + + 0 4 3 2 + <_> + 4 + + 2 7 3 1 + <_> + 9 + + 4 5 3 5 + <_> + 4 + + 3 6 2 6 + <_> + 1 + + 0 7 5 3 + <_> + 7 + + 3 4 2 1 + <_> + 5 + + 3 14 4 1 + <_> + 1 + + 2 9 2 3 + <_> + 7 + + 1 0 4 1 + <_> + 0 + + 2 10 5 3 + <_> + 9 + + 4 5 2 2 + <_> + 9 + + 6 0 1 13 + <_> + 0 + + 3 13 4 2 + <_> + 8 + + 3 1 2 3 + <_> + 8 + + 1 13 4 1 + <_> + 7 + + 0 9 6 1 + <_> + 9 + + 3 3 2 7 + <_> + 5 + + 4 0 3 6 + <_> + 4 + + 2 8 4 5 + <_> + 2 + + 4 2 3 4 + <_> + 4 + + 3 7 3 1 + <_> + 0 + + 0 1 5 1 + <_> + 1 + + 0 7 7 7 + <_> + 4 + + 4 3 3 2 + <_> + 4 + + 3 3 2 3 + <_> + 9 + + 4 4 1 2 + <_> + 4 + + 2 0 5 6 + <_> + 9 + + 1 3 6 6 + <_> + 3 + + 2 11 5 2 + <_> + 3 + + 0 0 3 9 + <_> + 8 + + 3 2 4 6 + <_> + 4 + + 0 8 7 7 + <_> + 8 + + 5 0 2 6 + <_> + 3 + + 0 0 2 3 + <_> + 0 + + 2 3 2 2 + <_> + 1 + + 0 13 7 2 + <_> + 2 + + 0 14 5 1 + <_> + 5 + + 3 12 4 2 + <_> + 0 + + 5 7 2 2 + <_> + 3 + + 1 0 6 1 + <_> + 2 + + 2 2 4 9 + <_> + 3 + + 0 4 2 3 + <_> + 1 + + 1 11 1 4 + <_> + 1 + + 0 13 5 1 + <_> + 0 + + 4 6 2 9 + <_> + 5 + + 4 0 1 7 + <_> + 7 + + 5 11 2 3 + <_> + 9 + + 1 8 6 4 + <_> + 9 + + 1 3 1 2 + <_> + 4 + + 0 12 2 3 + <_> + 9 + + 1 5 6 1 + <_> + 8 + + 3 3 2 1 + <_> + 1 + + 1 10 2 1 + <_> + 1 + + 3 5 2 8 + <_> + 5 + + 5 5 2 1 + <_> + 7 + + 3 12 2 3 + <_> + 3 + + 0 7 6 7 + <_> + 7 + + 0 6 7 8 + <_> + 1 + + 6 10 1 4 + <_> + 9 + + 3 1 1 1 + <_> + 3 + + 1 3 3 10 + <_> + 1 + + 0 5 6 2 + <_> + 2 + + 2 12 4 1 + <_> + 5 + + 2 14 4 1 + <_> + 4 + + 2 8 3 5 + <_> + 3 + + 2 4 3 3 + <_> + 3 + + 1 5 3 2 + <_> + 7 + + 3 8 2 1 + <_> + 9 + + 0 5 7 1 + <_> + 0 + + 2 11 4 1 + <_> + 9 + + 0 8 7 2 + <_> + 2 + + 2 13 4 2 + <_> + 1 + + 4 0 1 9 + <_> + 3 + + 2 6 2 4 + <_> + 4 + + 3 8 3 6 + <_> + 2 + + 2 5 4 8 + <_> + 9 + + 0 0 7 10 + <_> + 3 + + 2 13 5 2 + <_> + 4 + + 2 5 5 1 + <_> + 0 + + 0 8 4 2 + <_> + 2 + + 2 4 1 2 + <_> + 5 + + 4 2 2 11 + <_> + 7 + + 6 1 1 9 + <_> + 4 + + 2 3 3 8 + <_> + 8 + + 0 3 4 7 + <_> + 7 + + 5 3 1 1 + <_> + 9 + + 3 5 1 6 + <_> + 7 + + 2 14 2 1 + <_> + 7 + + 6 2 1 3 + <_> + 9 + + 0 0 7 3 + <_> + 1 + + 0 0 6 1 + <_> + 7 + + 0 6 1 7 + <_> + 1 + + 4 5 1 7 + <_> + 3 + + 4 14 3 1 + <_> + 3 + + 3 0 4 8 + <_> + 0 + + 0 9 6 2 + <_> + 7 + + 1 3 2 4 + <_> + 7 + + 2 3 4 10 + <_> + 3 + + 0 2 4 3 + <_> + 0 + + 3 9 1 4 + <_> + 7 + + 1 11 6 2 + <_> + 8 + + 1 1 6 3 + <_> + 1 + + 0 10 2 1 + <_> + 3 + + 5 12 1 2 + <_> + 4 + + 4 6 3 9 + <_> + 3 + + 1 5 5 2 + <_> + 7 + + 0 6 4 1 + <_> + 1 + + 3 12 2 2 + <_> + 1 + + 1 4 6 11 + <_> + 1 + + 3 3 2 1 + <_> + 3 + + 1 0 5 1 + <_> + 9 + + 0 5 4 1 + <_> + 9 + + 0 11 2 2 + <_> + 0 + + 0 10 2 4 + <_> + 1 + + 2 4 3 8 + <_> + 7 + + 1 8 4 7 + <_> + 1 + + 0 9 7 2 + <_> + 3 + + 0 14 4 1 + <_> + 5 + + 4 6 2 7 + <_> + 4 + + 3 1 1 3 + <_> + 4 + + 6 1 1 3 + <_> + 4 + + 3 2 2 3 + <_> + 7 + + 4 5 1 2 + <_> + 9 + + 4 5 1 2 + <_> + 8 + + 0 7 7 2 + <_> + 8 + + 3 5 4 4 + <_> + 2 + + 1 4 2 5 + <_> + 4 + + 0 1 2 2 + <_> + 4 + + 2 9 4 4 + <_> + 5 + + 1 0 6 1 + <_> + 1 + + 4 11 3 3 + <_> + 9 + + 0 0 5 3 + <_> + 5 + + 0 5 7 1 + <_> + 1 + + 1 5 6 2 + <_> + 2 + + 2 11 4 2 + <_> + 2 + + 5 13 2 2 + <_> + 0 + + 2 1 2 7 + <_> + 5 + + 3 14 4 1 + <_> + 9 + + 3 9 2 3 + <_> + 1 + + 5 12 2 3 + <_> + 1 + + 2 6 5 2 + <_> + 1 + + 3 12 2 2 + <_> + 5 + + 4 3 3 2 + <_> + 0 + + 0 8 7 4 + <_> + 1 + + 2 7 3 5 + <_> + 0 + + 0 13 3 1 + <_> + 0 + + 1 10 3 2 + <_> + 9 + + 6 3 1 1 + <_> + 9 + + 3 7 2 1 + <_> + 0 + + 4 0 1 2 + <_> + 4 + + 4 0 1 9 + <_> + 4 + + 1 7 6 8 + <_> + 3 + + 3 1 1 4 + <_> + 7 + + 1 5 4 5 + <_> + 9 + + 3 5 2 3 + <_> + 7 + + 3 1 4 1 + <_> + 5 + + 3 1 3 13 + <_> + 4 + + 2 0 5 15 + <_> + 8 + + 0 0 4 3 + <_> + 9 + + 1 5 5 4 + <_> + 3 + + 1 5 5 1 + <_> + 7 + + 0 3 3 2 + <_> + 1 + + 5 13 1 1 + <_> + 5 + + 5 4 2 2 + <_> + 9 + + 2 7 5 1 + <_> + 4 + + 4 2 1 13 + <_> + 1 + + 2 10 4 3 + <_> + 0 + + 1 4 3 2 + <_> + 0 + + 3 14 2 1 + <_> + 5 + + 2 11 4 2 + <_> + 2 + + 1 13 6 2 + <_> + 4 + + 4 11 1 1 + <_> + 9 + + 0 1 5 2 + <_> + 4 + + 1 7 5 1 + <_> + 9 + + 3 4 2 2 + <_> + 9 + + 0 2 2 5 + <_> + 3 + + 2 3 3 3 + <_> + 7 + + 3 5 2 2 + <_> + 7 + + 1 2 6 13 + <_> + 4 + + 2 7 4 3 + <_> + 4 + + 2 9 3 4 + <_> + 7 + + 3 5 2 8 + <_> + 7 + + 2 1 1 1 + <_> + 2 + + 2 5 4 7 + <_> + 7 + + 3 12 1 1 + <_> + 2 + + 0 13 7 2 + <_> + 1 + + 3 0 4 13 + <_> + 1 + + 1 12 5 2 + <_> + 1 + + 4 10 3 1 + <_> + 7 + + 0 0 1 5 + <_> + 7 + + 0 6 1 2 + <_> + 3 + + 0 3 4 9 + <_> + 9 + + 2 4 4 9 + <_> + 3 + + 2 3 4 10 + <_> + 4 + + 2 6 4 2 + <_> + 2 + + 2 4 5 4 + <_> + 5 + + 3 14 4 1 + <_> + 7 + + 2 3 4 2 + <_> + 1 + + 3 0 1 10 + <_> + 4 + + 3 2 1 2 + <_> + 4 + + 2 2 4 13 + <_> + 5 + + 5 4 2 6 + <_> + 1 + + 2 13 1 2 + <_> + 4 + + 3 8 2 5 + <_> + 7 + + 0 11 7 2 + <_> + 9 + + 0 5 7 5 + <_> + 0 + + 1 10 5 3 + <_> + 8 + + 3 3 2 1 + <_> + 1 + + 0 10 7 1 + <_> + 8 + + 1 3 6 2 + <_> + 2 + + 3 14 2 1 + <_> + 9 + + 0 7 2 5 + <_> + 8 + + 0 5 3 2 + <_> + 3 + + 1 5 4 1 + <_> + 1 + + 0 5 5 2 + <_> + 0 + + 1 11 6 2 + <_> + 9 + + 3 10 2 2 + <_> + 1 + + 3 12 3 2 + <_> + 3 + + 0 0 1 3 + <_> + 5 + + 4 0 1 5 + <_> + 7 + + 3 9 4 2 + <_> + 4 + + 2 3 5 5 + <_> + 1 + + 3 1 4 13 + <_> + 2 + + 1 8 5 5 + <_> + 2 + + 2 2 4 5 + <_> + 4 + + 1 14 6 1 + <_> + 2 + + 5 1 1 5 + <_> + 3 + + 4 13 3 2 + <_> + 9 + + 6 0 1 12 + <_> + 4 + + 0 11 3 4 + <_> + 9 + + 3 7 3 3 + <_> + 0 + + 2 11 5 2 + <_> + 4 + + 1 0 5 15 + <_> + 8 + + 1 6 6 1 + <_> + 2 + + 2 7 1 4 + <_> + 3 + + 2 14 4 1 + <_> + 8 + + 0 0 1 2 + <_> + 5 + + 4 2 2 13 + <_> + 8 + + 3 8 1 6 + <_> + 9 + + 0 5 7 3 + <_> + 5 + + 2 14 5 1 + <_> + 1 + + 3 3 2 9 + <_> + 4 + + 2 6 1 2 + <_> + 4 + + 3 2 2 3 + <_> + 4 + + 2 10 5 5 + <_> + 3 + + 2 2 3 10 + <_> + 5 + + 0 14 4 1 + <_> + 7 + + 1 2 3 2 + <_> + 0 + + 1 9 5 2 + <_> + 4 + + 2 8 4 5 + <_> + 1 + + 1 4 4 7 + <_> + 4 + + 0 0 7 4 + <_> + 9 + + 0 0 3 6 + <_> + 7 + + 6 1 1 1 + <_> + 5 + + 5 6 1 5 + <_> + 9 + + 3 5 3 5 + <_> + 1 + + 5 6 1 4 + <_> + 9 + + 2 13 5 1 + <_> + 1 + + 3 12 2 2 + <_> + 5 + + 1 6 4 1 + <_> + 9 + + 4 9 3 6 + <_> + 5 + + 3 5 4 1 + <_> + 8 + + 3 0 4 4 + <_> + 5 + + 2 12 4 3 + <_> + 3 + + 3 3 2 3 + <_> + 2 + + 3 3 2 4 + <_> + 7 + + 5 2 2 6 + <_> + 5 + + 4 9 2 4 + <_> + 2 + + 0 10 2 3 + <_> + 3 + + 2 4 1 6 + <_> + 1 + + 0 12 4 3 + <_> + 7 + + 3 0 1 14 + <_> + 7 + + 3 5 2 2 + <_> + 1 + + 1 5 2 3 + <_> + 0 + + 2 3 3 10 + <_> + 4 + + 6 9 1 2 + <_> + 7 + + 3 7 2 1 + <_> + 4 + + 3 5 2 10 + <_> + 1 + + 3 3 2 5 + <_> + 1 + + 1 12 4 2 + <_> + 3 + + 0 1 4 6 + <_> + 1 + + 0 0 6 1 + <_> + 4 + + 0 3 6 3 + <_> + 1 + + 4 0 1 5 + <_> + 1 + + 3 2 2 8 + <_> + 9 + + 0 1 3 2 + <_> + 1 + + 4 5 1 8 + <_> + 9 + + 6 6 1 3 + <_> + 4 + + 0 1 7 5 + <_> + 3 + + 0 0 4 10 + <_> + 4 + + 1 10 1 2 + <_> + 2 + + 1 1 3 1 + <_> + 2 + + 3 4 3 9 + <_> + 7 + + 3 2 2 9 + <_> + 9 + + 2 4 3 4 + <_> + 2 + + 1 2 2 3 + <_> + 8 + + 1 5 6 4 + <_> + 7 + + 0 11 4 2 + <_> + 1 + + 3 9 1 3 + <_> + 7 + + 3 8 2 2 + <_> + 1 + + 6 9 1 5 + <_> + 4 + + 6 9 1 3 + <_> + 1 + + 2 4 4 9 + <_> + 7 + + 3 3 2 3 + <_> + 7 + + 4 5 1 1 + <_> + 7 + + 2 8 5 2 + <_> + 9 + + 3 5 2 2 + <_> + 1 + + 1 13 6 2 + <_> + 7 + + 0 2 7 13 + <_> + 0 + + 2 14 2 1 + <_> + 0 + + 1 11 4 2 + <_> + 9 + + 0 5 7 2 + <_> + 7 + + 0 10 7 1 + <_> + 3 + + 2 10 2 3 + <_> + 4 + + 3 2 2 1 + <_> + 5 + + 3 14 4 1 + <_> + 9 + + 3 2 2 10 + <_> + 5 + + 5 9 1 3 + <_> + 7 + + 6 1 1 2 + <_> + 4 + + 0 12 6 3 + <_> + 5 + + 4 3 2 11 + <_> + 7 + + 5 14 2 1 + <_> + 0 + + 2 2 4 8 + <_> + 1 + + 1 7 6 2 + <_> + 1 + + 4 8 1 7 + <_> + 9 + + 1 0 6 4 + <_> + 8 + + 2 2 4 10 + <_> + 9 + + 0 5 1 5 + <_> + 3 + + 2 3 4 10 + <_> + 1 + + 0 0 1 9 + <_> + 7 + + 0 6 7 7 + <_> + 1 + + 1 2 2 9 + <_> + 9 + + 3 1 4 3 + <_> + 3 + + 4 13 3 2 + <_> + 1 + + 1 12 5 2 + <_> + 7 + + 5 1 2 4 + <_> + 2 + + 2 8 5 6 + <_> + 7 + + 1 7 1 1 + <_> + 5 + + 5 4 2 1 + <_> + 9 + + 0 0 7 8 + <_> + 5 + + 3 11 4 2 + <_> + 4 + + 1 5 1 3 + <_> + 2 + + 1 4 3 2 + <_> + 1 + + 3 0 2 10 + <_> + 3 + + 0 3 4 2 + <_> + 8 + + 2 3 3 1 + <_> + 4 + + 3 0 1 1 + <_> + 1 + + 2 1 5 12 + <_> + 3 + + 2 3 2 10 + <_> + 1 + + 2 5 3 5 + <_> + 5 + + 4 1 2 8 + <_> + 0 + + 4 13 3 2 + <_> + 8 + + 6 7 1 3 + <_> + 2 + + 2 13 3 2 + <_> + 9 + + 4 4 1 3 + <_> + 8 + + 0 3 3 6 + <_> + 4 + + 3 3 2 2 + <_> + 1 + + 1 0 6 2 + <_> + 8 + + 2 3 3 4 + <_> + 1 + + 6 8 1 3 + <_> + 1 + + 2 4 4 3 + <_> + 5 + + 0 3 4 4 + <_> + 3 + + 0 0 6 8 + <_> + 7 + + 3 6 2 1 + <_> + 7 + + 2 4 4 8 + <_> + 1 + + 0 4 5 1 + <_> + 2 + + 1 7 5 5 + <_> + 1 + + 2 2 1 10 + <_> + 4 + + 3 2 2 2 + <_> + 5 + + 2 13 2 2 + <_> + 8 + + 0 1 6 8 + <_> + 7 + + 1 11 6 1 + <_> + 3 + + 2 4 2 9 + <_> + 1 + + 1 4 1 3 + <_> + 4 + + 2 1 5 14 + <_> + 1 + + 3 12 2 2 + <_> + 5 + + 1 4 6 2 + <_> + 1 + + 1 11 6 2 + <_> + 2 + + 5 13 2 2 + <_> + 5 + + 4 11 3 2 + <_> + 9 + + 3 4 3 2 + <_> + 8 + + 1 3 2 4 + <_> + 3 + + 0 13 3 2 + <_> + 2 + + 2 3 2 11 + <_> + 4 + + 2 8 5 5 + <_> + 9 + + 1 6 6 4 + <_> + 2 + + 0 4 3 1 + <_> + 9 + + 5 1 2 2 + <_> + 5 + + 2 4 4 1 + <_> + 5 + + 3 5 4 2 + <_> + 1 + + 6 12 1 3 + <_> + 5 + + 4 2 3 3 + <_> + 9 + + 4 5 3 1 + <_> + 7 + + 2 2 4 12 + <_> + 8 + + 2 12 3 3 + <_> + 7 + + 0 11 7 2 + <_> + 2 + + 1 7 6 5 + <_> + 4 + + 0 6 1 8 + <_> + 1 + + 3 2 1 11 + <_> + 1 + + 3 4 2 8 + <_> + 5 + + 0 11 2 3 + <_> + 1 + + 0 10 1 1 + <_> + 0 + + 1 10 3 2 + <_> + 8 + + 0 1 1 1 + <_> + 1 + + 0 7 2 6 + <_> + 1 + + 3 7 4 1 + <_> + 2 + + 4 10 1 3 + <_> + 4 + + 3 2 2 13 + <_> + 5 + + 4 13 3 2 + <_> + 2 + + 0 8 3 5 + <_> + 3 + + 0 4 5 2 + <_> + 4 + + 3 11 2 2 + <_> + 1 + + 2 12 4 2 + <_> + 2 + + 0 10 6 3 + <_> + 2 + + 0 13 5 2 + <_> + 3 + + 3 3 4 2 + <_> + 3 + + 0 3 7 3 + <_> + 7 + + 0 6 5 4 + <_> + 0 + + 1 3 6 6 + <_> + 9 + + 3 11 2 1 + <_> + 8 + + 3 1 3 3 + <_> + 4 + + 4 13 3 2 + <_> + 8 + + 2 0 1 1 + <_> + 3 + + 3 8 4 6 + <_> + 1 + + 4 0 1 5 + <_> + 7 + + 3 7 2 1 + <_> + 9 + + 2 4 2 3 + <_> + 8 + + 5 1 1 3 + <_> + 7 + + 0 3 3 12 + <_> + 4 + + 4 1 1 10 + <_> + 7 + + 1 8 6 3 + <_> + 5 + + 3 3 2 2 + <_> + 1 + + 0 0 6 1 + <_> + 3 + + 3 4 2 2 + <_> + 4 + + 3 5 2 10 + <_> + 1 + + 4 12 1 2 + <_> + 3 + + 0 4 3 5 + <_> + 8 + + 2 7 4 5 + <_> + 4 + + 2 7 5 1 + <_> + 1 + + 1 2 6 2 + <_> + 7 + + 0 9 4 1 + <_> + 1 + + 2 7 3 7 + <_> + 9 + + 3 9 2 3 + <_> + 3 + + 3 12 1 3 + <_> + 2 + + 3 3 3 10 + <_> + 9 + + 0 5 7 1 + <_> + 5 + + 4 6 3 5 + <_> + 5 + + 5 5 2 1 + <_> + 5 + + 3 14 4 1 + <_> + 9 + + 1 0 3 3 + <_> + 0 + + 0 2 5 2 + <_> + 8 + + 3 10 1 1 + <_> + 7 + + 3 5 1 1 + <_> + 1 + + 3 13 1 2 + <_> + 3 + + 0 3 5 2 + <_> + 1 + + 4 8 1 7 + <_> + 4 + + 1 3 4 7 + <_> + 1 + + 1 13 2 1 + <_> + 0 + + 2 11 5 2 + <_> + 0 + + 4 2 3 12 + <_> + 5 + + 1 5 6 7 + <_> + 5 + + 4 4 2 1 + <_> + 5 + + 1 0 3 15 + <_> + 9 + + 0 2 1 1 + <_> + 8 + + 0 0 7 15 + <_> + 1 + + 3 4 2 9 + <_> + 2 + + 1 12 1 2 + <_> + 1 + + 1 3 5 11 + <_> + 5 + + 2 11 4 3 + <_> + 8 + + 0 9 7 1 + <_> + 0 + + 3 13 4 2 + <_> + 3 + + 2 3 3 3 + <_> + 1 + + 2 2 1 8 + <_> + 1 + + 1 0 4 2 + <_> + 7 + + 3 6 2 5 + <_> + 4 + + 3 1 1 5 + <_> + 3 + + 2 9 4 1 + <_> + 9 + + 2 6 4 2 + <_> + 4 + + 2 12 2 3 + <_> + 7 + + 4 11 2 4 + <_> + 8 + + 2 3 5 1 + <_> + 4 + + 2 0 4 1 + <_> + 0 + + 2 0 4 13 + <_> + 1 + + 0 9 7 2 + <_> + 8 + + 0 0 1 3 + <_> + 1 + + 0 10 2 1 + <_> + 3 + + 0 14 6 1 + <_> + 7 + + 4 6 3 4 + <_> + 9 + + 2 3 3 11 + <_> + 3 + + 2 4 2 1 + <_> + 7 + + 1 2 1 5 + <_> + 5 + + 4 4 3 9 + <_> + 7 + + 0 1 5 14 + <_> + 8 + + 4 6 1 2 + <_> + 1 + + 1 0 6 14 + <_> + 1 + + 2 12 2 2 + <_> + 3 + + 0 3 6 3 + <_> + 8 + + 1 10 6 2 + <_> + 5 + + 2 11 5 2 + <_> + 1 + + 1 0 6 13 + <_> + 9 + + 1 3 4 12 + <_> + 3 + + 2 4 1 3 + <_> + 5 + + 1 5 4 1 + <_> + 0 + + 0 13 2 1 + <_> + 1 + + 6 13 1 2 + <_> + 4 + + 3 9 2 5 + <_> + 3 + + 6 7 1 2 + <_> + 4 + + 6 2 1 1 + <_> + 3 + + 4 14 3 1 + <_> + 4 + + 0 9 7 2 + <_> + 7 + + 6 0 1 5 + <_> + 9 + + 5 0 2 2 + <_> + 5 + + 1 2 6 8 + <_> + 1 + + 3 4 2 8 + <_> + 0 + + 2 7 4 4 + <_> + 8 + + 3 7 2 1 + <_> + 5 + + 0 14 7 1 + <_> + 9 + + 2 5 4 4 + <_> + 7 + + 3 11 3 1 + <_> + 4 + + 3 11 2 2 + <_> + 2 + + 4 6 2 5 + <_> + 5 + + 3 11 2 2 + <_> + 4 + + 3 1 2 7 + <_> + 4 + + 1 0 6 15 + <_> + 7 + + 1 11 6 1 + <_> + 1 + + 1 12 4 2 + <_> + 7 + + 0 3 1 1 + <_> + 9 + + 1 2 1 1 + <_> + 3 + + 2 9 3 4 + <_> + 5 + + 4 10 1 2 + <_> + 4 + + 3 6 3 6 + <_> + 2 + + 0 13 7 2 + <_> + 1 + + 3 0 2 10 + <_> + 4 + + 0 3 2 5 + <_> + 8 + + 1 5 6 2 + <_> + 9 + + 2 5 2 1 + <_> + 8 + + 2 1 5 8 + <_> + 5 + + 0 5 7 1 + <_> + 8 + + 3 0 1 4 + <_> + 1 + + 3 3 4 5 + <_> + 9 + + 0 4 7 2 + <_> + 8 + + 1 0 3 4 + <_> + 3 + + 0 0 2 4 + <_> + 2 + + 3 2 4 4 + <_> + 2 + + 4 2 1 6 + <_> + 5 + + 0 0 7 2 + <_> + 3 + + 0 4 2 5 + <_> + 8 + + 1 9 2 2 + <_> + 5 + + 4 1 1 2 + <_> + 7 + + 1 6 6 3 + <_> + 4 + + 1 7 6 7 + <_> + 4 + + 0 7 7 1 + <_> + 1 + + 1 13 6 2 + <_> + 2 + + 3 3 2 1 + <_> + 0 + + 2 14 3 1 + <_> + 0 + + 1 7 6 5 + <_> + 7 + + 1 6 6 7 + <_> + 1 + + 1 8 6 6 + <_> + 5 + + 0 14 7 1 + <_> + 2 + + 2 6 5 8 + <_> + 3 + + 1 4 4 6 + <_> + 9 + + 3 7 2 6 + <_> + 1 + + 2 10 5 3 + <_> + 2 + + 1 10 4 1 + <_> + 4 + + 2 8 3 6 + <_> + 0 + + 2 4 1 8 + <_> + 1 + + 0 8 7 1 + <_> + 0 + + 0 11 1 3 + <_> + 2 + + 3 13 2 1 + <_> + 1 + + 1 13 4 1 + <_> + 3 + + 2 10 2 3 + <_> + 3 + + 2 0 1 10 + <_> + 7 + + 3 4 1 4 + <_> + 2 + + 5 0 2 6 + <_> + 5 + + 2 8 5 3 + <_> + 1 + + 6 8 1 6 + <_> + 7 + + 3 7 2 4 + <_> + 8 + + 1 1 6 4 + <_> + 3 + + 0 2 3 5 + <_> + 1 + + 1 0 1 15 + <_> + 9 + + 6 14 1 1 + <_> + 7 + + 3 6 4 1 + <_> + 9 + + 3 1 2 11 + <_> + 1 + + 3 0 2 8 + <_> + 0 + + 2 10 4 3 + <_> + 2 + + 3 14 2 1 + <_> + 7 + + 3 12 3 3 + <_> + 8 + + 0 6 7 1 + <_> + 7 + + 2 13 2 1 + <_> + 8 + + 0 0 1 3 + <_> + 1 + + 1 0 6 1 + <_> + 3 + + 0 4 7 2 + <_> + 9 + + 1 4 6 4 + <_> + 5 + + 5 1 1 10 + <_> + 5 + + 2 11 4 4 + <_> + 3 + + 4 9 2 4 + <_> + 4 + + 0 14 7 1 + <_> + 1 + + 2 12 3 2 + <_> + 3 + + 0 4 4 1 + <_> + 0 + + 0 2 4 6 + <_> + 7 + + 0 6 1 1 + <_> + 9 + + 3 9 3 1 + <_> + 7 + + 4 5 1 1 + <_> + 4 + + 6 9 1 2 + <_> + 3 + + 1 5 4 1 + <_> + 2 + + 3 1 1 4 + <_> + 3 + + 0 14 7 1 + <_> + 7 + + 4 7 3 2 + <_> + 5 + + 4 1 3 8 + <_> + 2 + + 2 3 4 11 + <_> + 4 + + 2 4 3 10 + <_> + 4 + + 3 2 2 7 + <_> + 1 + + 4 5 1 2 + <_> + 1 + + 3 2 2 7 + <_> + 1 + + 0 0 7 1 + <_> + 4 + + 4 9 1 3 + <_> + 9 + + 1 1 6 1 + <_> + 4 + + 3 8 1 4 + <_> + 5 + + 4 4 2 2 + <_> + 9 + + 3 4 2 1 + <_> + 5 + + 0 14 4 1 + <_> + 1 + + 1 12 6 2 + <_> + 3 + + 0 4 4 1 + <_> + 1 + + 6 13 1 2 + <_> + 2 + + 2 10 4 3 + <_> + 7 + + 1 1 6 12 + <_> + 0 + + 0 13 7 2 + <_> + 8 + + 0 6 7 2 + <_> + 4 + + 4 11 3 4 + <_> + 9 + + 0 6 7 3 + <_> + 0 + + 0 2 6 10 + <_> + 8 + + 1 1 4 11 + <_> + 0 + + 2 8 1 2 + <_> + 7 + + 1 1 2 4 + <_> + 7 + + 2 6 4 4 + <_> + 0 + + 4 3 2 9 + <_> + 0 + + 2 3 1 9 + <_> + 4 + + 3 5 2 10 + <_> + 2 + + 3 8 1 2 + <_> + 2 + + 5 13 2 1 + <_> + 5 + + 3 11 3 4 + <_> + 9 + + 0 1 7 3 + <_> + 5 + + 0 11 1 1 + <_> + 3 + + 0 11 6 2 + <_> + 0 + + 1 4 2 3 + <_> + 4 + + 3 1 1 12 + <_> + 0 + + 2 14 4 1 + <_> + 1 + + 0 3 5 5 + <_> + 4 + + 3 1 2 5 + <_> + 7 + + 3 14 2 1 + <_> + 8 + + 0 1 7 3 + <_> + 2 + + 4 4 3 2 + <_> + 9 + + 3 10 2 3 + <_> + 1 + + 1 2 6 11 + <_> + 1 + + 1 7 6 5 + <_> + 9 + + 3 5 3 5 + <_> + 7 + + 3 6 2 4 + <_> + 2 + + 4 1 2 13 + <_> + 7 + + 6 2 1 1 + <_> + 3 + + 2 14 5 1 + <_> + 8 + + 3 2 3 2 + <_> + 3 + + 1 3 3 5 + <_> + 1 + + 3 12 3 2 + <_> + 4 + + 2 10 4 3 + <_> + 0 + + 2 6 5 7 + <_> + 4 + + 2 13 5 1 + <_> + 5 + + 2 14 5 1 + <_> + 9 + + 2 7 5 1 + <_> + 4 + + 0 7 7 4 + <_> + 1 + + 3 2 4 11 + <_> + 3 + + 1 3 5 4 + <_> + 1 + + 5 10 2 1 + <_> + 7 + + 6 3 1 2 + <_> + 3 + + 2 9 3 4 + <_> + 5 + + 4 2 2 5 + <_> + 7 + + 3 6 2 1 + <_> + 7 + + 1 2 6 13 + <_> + 4 + + 2 4 4 4 + <_> + 9 + + 3 7 2 6 + <_> + 9 + + 6 2 1 2 + <_> + 2 + + 1 10 4 1 + <_> + 2 + + 1 4 3 1 + <_> + 0 + + 1 2 3 3 + <_> + 5 + + 0 3 1 10 + <_> + 0 + + 0 1 5 1 + <_> + 2 + + 3 3 2 2 + <_> + 5 + + 5 0 2 9 + <_> + 3 + + 4 13 3 2 + <_> + 9 + + 0 8 3 1 + <_> + 7 + + 3 5 1 2 + <_> + 3 + + 2 9 2 2 + <_> + 1 + + 6 10 1 2 + <_> + 4 + + 1 11 6 1 + <_> + 7 + + 1 10 6 3 + <_> + 9 + + 0 0 7 6 + <_> + 2 + + 3 10 4 3 + <_> + 4 + + 3 2 2 2 + <_> + 8 + + 2 3 4 1 + <_> + 9 + + 1 8 6 1 + <_> + 0 + + 2 0 2 13 + <_> + 3 + + 2 4 2 9 + <_> + 3 + + 1 3 5 11 + <_> + 1 + + 1 0 5 2 + <_> + 8 + + 6 7 1 3 + <_> + 1 + + 3 4 2 6 + <_> + 2 + + 3 14 2 1 + <_> + 9 + + 2 0 1 5 + <_> + 0 + + 0 7 7 2 + <_> + 4 + + 1 14 6 1 + <_> + 1 + + 2 13 4 2 + <_> + 3 + + 1 10 1 5 + <_> + 0 + + 1 11 5 2 + <_> + 7 + + 0 2 7 11 + <_> + 5 + + 0 1 6 6 + <_> + 7 + + 3 7 2 8 + <_> + 7 + + 0 11 6 2 + <_> + 5 + + 1 10 6 3 + <_> + 1 + + 0 5 3 2 + <_> + 7 + + 2 11 5 1 + <_> + 4 + + 0 5 3 3 + <_> + 7 + + 0 4 1 11 + <_> + 9 + + 2 5 2 3 + <_> + 8 + + 0 5 7 2 + <_> + 0 + + 0 6 1 3 + <_> + 3 + + 3 2 1 10 + <_> + 7 + + 1 0 5 1 + <_> + 5 + + 1 13 6 2 + <_> + 1 + + 1 4 5 8 + <_> + 3 + + 4 14 3 1 + <_> + 5 + + 5 5 1 8 + <_> + 7 + + 1 4 1 3 + <_> + 1 + + 3 1 1 10 + <_> + 9 + + 6 3 1 1 + <_> + 2 + + 0 2 1 3 + <_> + 9 + + 0 6 4 1 + <_> + 3 + + 2 4 4 9 + <_> + 1 + + 1 5 6 2 + <_> + 8 + + 0 0 1 15 + <_> + 1 + + 3 12 2 2 + <_> + 7 + + 4 9 1 1 + <_> + 4 + + 0 12 5 3 + <_> + 0 + + 2 14 3 1 + <_> + 4 + + 2 8 4 5 + <_> + 3 + + 2 3 3 2 + <_> + 5 + + 3 3 3 2 + <_> + 9 + + 2 7 3 7 + <_> + 8 + + 2 3 4 1 + <_> + 0 + + 2 11 3 1 + <_> + 9 + + 4 6 2 1 + <_> + 9 + + 2 4 5 3 + <_> + 1 + + 3 10 4 4 + <_> + 4 + + 0 5 1 6 + <_> + 4 + + 2 11 3 3 + <_> + 3 + + 0 4 7 2 + <_> + 7 + + 1 1 3 12 + <_> + 9 + + 0 5 4 2 + <_> + 4 + + 4 1 1 8 + <_> + 1 + + 3 7 3 1 + <_> + 1 + + 1 1 6 6 + <_> + 2 + + 2 6 4 8 + <_> + 9 + + 1 0 6 10 + <_> + 2 + + 0 13 7 2 + <_> + 3 + + 1 5 3 2 + <_> + 7 + + 3 8 2 1 + <_> + 4 + + 3 5 2 10 + <_> + 1 + + 1 12 4 2 + <_> + 2 + + 5 1 2 2 + <_> + 5 + + 4 2 2 13 + <_> + 9 + + 3 4 2 3 + <_> + 8 + + 3 1 4 3 + <_> + 1 + + 1 4 6 1 + <_> + 1 + + 1 4 5 9 + <_> + 5 + + 3 14 4 1 + <_> + 4 + + 0 6 3 2 + <_> + 7 + + 1 1 3 1 + <_> + 7 + + 2 4 4 6 + <_> + 5 + + 1 2 5 1 + <_> + 0 + + 2 3 1 4 + <_> + 8 + + 2 3 3 1 + <_> + 0 + + 2 8 2 2 + <_> + 2 + + 2 8 3 3 + <_> + 5 + + 2 9 2 2 + <_> + 3 + + 2 13 3 1 + <_> + 9 + + 3 1 1 2 + <_> + 8 + + 2 6 5 1 + <_> + 8 + + 2 0 5 7 + <_> + 9 + + 3 4 1 9 + <_> + 9 + + 6 5 1 10 + <_> + 0 + + 3 10 3 2 + <_> + 7 + + 1 9 6 1 + <_> + 7 + + 1 1 3 14 + <_> + 1 + + 2 6 4 4 + <_> + 1 + + 2 9 4 3 + <_> + 7 + + 4 0 2 15 + <_> + 2 + + 0 11 6 2 + <_> + 5 + + 3 13 3 2 + <_> + 5 + + 2 11 4 2 + <_> + 7 + + 6 0 1 5 + <_> + 7 + + 3 6 2 5 + <_> + 3 + + 2 4 4 7 + <_> + 7 + + 2 12 4 3 + <_> + 7 + + 1 6 3 1 + <_> + 8 + + 4 2 1 1 + <_> + 3 + + 2 6 5 4 + <_> + 3 + + 0 14 6 1 + <_> + 5 + + 2 12 5 3 + <_> + 9 + + 2 4 3 4 + <_> + 9 + + 0 6 1 3 + <_> + 1 + + 3 2 2 8 + <_> + 4 + + 0 1 2 5 + <_> + 4 + + 3 2 1 4 + <_> + 7 + + 3 2 3 5 + <_> + 9 + + 6 1 1 4 + <_> + 5 + + 5 2 2 8 + <_> + 4 + + 5 0 2 11 + <_> + 4 + + 3 9 3 4 + <_> + 1 + + 0 0 7 2 + <_> + 1 + + 2 2 4 7 + <_> + 7 + + 3 7 1 3 + <_> + 9 + + 2 5 5 1 + <_> + 9 + + 0 6 1 5 + <_> + 9 + + 3 9 3 1 + <_> + 3 + + 0 5 6 1 + <_> + 9 + + 2 4 3 2 + <_> + 0 + + 2 11 5 2 + <_> + 8 + + 0 1 1 1 + <_> + 1 + + 4 6 3 5 + <_> + 1 + + 2 2 2 1 + <_> + 0 + + 0 13 3 2 + <_> + 1 + + 3 6 2 4 + <_> + 9 + + 0 5 6 1 + <_> + 2 + + 2 4 4 9 + <_> + 7 + + 3 2 2 10 + <_> + 8 + + 1 3 5 1 + <_> + 4 + + 0 8 4 7 + <_> + 1 + + 3 12 1 3 + <_> + 7 + + 3 0 2 1 + <_> + 5 + + 3 2 3 2 + <_> + 2 + + 5 4 1 1 + <_> + 3 + + 2 1 2 12 + <_> + 4 + + 2 5 3 10 + <_> + 5 + + 1 12 1 2 + <_> + 1 + + 0 10 6 4 + <_> + 1 + + 0 12 7 1 + <_> + 1 + + 3 10 2 4 + <_> + 2 + + 0 4 1 10 + <_> + 7 + + 3 2 2 11 + <_> + 0 + + 3 11 3 2 + <_> + 4 + + 1 11 6 1 + <_> + 9 + + 3 9 3 3 + <_> + 5 + + 0 14 4 1 + <_> + 2 + + 5 11 2 4 + <_> + 0 + + 2 3 4 10 + <_> + 1 + + 3 3 2 4 + <_> + 7 + + 4 7 1 2 + <_> + 0 + + 0 1 1 11 + <_> + 1 + + 2 1 3 11 + <_> + 3 + + 3 11 3 2 + <_> + 1 + + 3 1 1 8 + <_> + 0 + + 1 10 4 3 + <_> + 9 + + 0 5 7 1 + <_> + 8 + + 4 2 1 2 + <_> + 9 + + 1 5 4 2 + <_> + 0 + + 1 13 6 2 + <_> + 0 + + 1 3 6 1 + <_> + 1 + + 6 12 1 3 + <_> + 4 + + 4 1 2 11 + <_> + 9 + + 1 2 1 2 + <_> + 4 + + 2 14 4 1 + <_> + 1 + + 3 4 3 10 + <_> + 7 + + 0 10 7 4 + <_> + 7 + + 0 11 7 1 + <_> + 1 + + 3 4 2 6 + <_> + 5 + + 4 4 3 9 + <_> + 9 + + 0 4 6 3 + <_> + 3 + + 2 1 1 11 + <_> + 4 + + 0 8 7 1 + <_> + 1 + + 3 1 2 14 + <_> + 5 + + 0 4 1 3 + <_> + 8 + + 1 0 4 1 + <_> + 0 + + 6 9 1 5 + <_> + 2 + + 2 4 4 9 + <_> + 5 + + 1 13 6 2 + <_> + 9 + + 0 1 2 14 + <_> + 7 + + 1 2 2 3 + <_> + 7 + + 1 6 6 3 + <_> + 0 + + 0 2 4 3 + <_> + 3 + + 1 3 3 2 + <_> + 7 + + 2 5 1 2 + <_> + 5 + + 3 3 2 3 + <_> + 3 + + 2 4 4 9 + <_> + 9 + + 3 8 2 4 + <_> + 4 + + 2 8 4 6 + <_> + 5 + + 1 11 2 3 + <_> + 1 + + 1 4 1 3 + <_> + 2 + + 4 13 2 2 + <_> + 1 + + 1 12 4 2 + <_> + 4 + + 1 7 6 3 + <_> + 1 + + 3 7 2 2 + <_> + 1 + + 2 4 3 8 + <_> + 1 + + 6 13 1 2 + <_> + 8 + + 1 6 6 2 + <_> + 3 + + 6 6 1 3 + <_> + 9 + + 2 5 3 1 + <_> + 8 + + 1 1 6 10 + <_> + 5 + + 5 4 1 3 + <_> + 0 + + 5 14 2 1 + <_> + 5 + + 4 10 2 3 + <_> + 7 + + 3 5 2 1 + <_> + 7 + + 4 8 1 5 + <_> + 3 + + 3 5 4 2 + <_> + 0 + + 0 2 4 10 + <_> + 5 + + 0 1 4 14 + <_> + 1 + + 2 12 4 2 + <_> + 7 + + 1 6 1 5 + <_> + 1 + + 0 11 7 2 + <_> + 5 + + 4 3 3 3 + <_> + 5 + + 1 4 3 10 + <_> + 3 + + 1 10 1 2 + <_> + 9 + + 4 8 3 1 + <_> + 4 + + 6 9 1 3 + <_> + 7 + + 0 3 1 12 + <_> + 7 + + 1 7 1 2 + <_> + 7 + + 6 2 1 2 + <_> + 2 + + 4 6 2 5 + <_> + 4 + + 1 9 1 4 + <_> + 1 + + 1 1 2 13 + <_> + 3 + + 3 14 4 1 + <_> + 1 + + 3 11 3 2 + <_> + 4 + + 3 1 2 7 + <_> + 9 + + 0 1 2 1 + <_> + 7 + + 5 1 2 1 + <_> + 5 + + 5 6 1 5 + <_> + 9 + + 0 7 1 1 + <_> + 3 + + 0 4 3 3 + <_> + 3 + + 0 0 4 5 + <_> + 4 + + 3 6 2 6 + <_> + 9 + + 0 1 7 1 + <_> + 2 + + 0 0 2 6 + <_> + 4 + + 1 7 6 1 + <_> + 9 + + 4 4 1 3 + <_> + 1 + + 3 0 2 10 + <_> + 8 + + 3 3 2 1 + <_> + 1 + + 0 1 5 13 + <_> + 2 + + 1 11 4 2 + <_> + 2 + + 0 13 5 2 + <_> + 5 + + 2 5 1 7 + <_> + 0 + + 3 13 4 1 + <_> + 4 + + 3 8 2 5 + <_> + 4 + + 3 2 1 3 + <_> + 4 + + 2 7 4 1 + <_> + 7 + + 1 2 1 5 + <_> + 9 + + 5 1 1 7 + <_> + 5 + + 3 0 2 6 + <_> + 9 + + 1 6 6 3 + <_> + 3 + + 2 4 2 3 + <_> + 1 + + 0 0 2 6 + <_> + 8 + + 0 6 6 1 + <_> + 4 + + 2 0 5 15 + <_> + 1 + + 0 1 7 8 + <_> + 5 + + 4 11 3 2 + <_> + 3 + + 4 9 2 6 + <_> + 0 + + 0 12 2 2 + <_> + 3 + + 0 4 6 9 + <_> + 1 + + 2 13 2 2 + <_> + 9 + + 2 3 1 1 + <_> + 2 + + 5 14 2 1 + <_> + 1 + + 6 13 1 2 + <_> + 9 + + 2 4 3 2 + <_> + 7 + + 2 8 2 1 + <_> + 0 + + 2 2 2 10 + <_> + 3 + + 2 8 2 3 + <_> + 1 + + 3 12 2 3 + <_> + 7 + + 2 2 5 2 + <_> + 4 + + 3 7 2 8 + <_> + 4 + + 3 3 4 7 + <_> + 1 + + 3 13 3 1 + <_> + 5 + + 0 11 5 2 + <_> + 5 + + 0 14 5 1 + <_> + 1 + + 2 3 5 10 + <_> + 0 + + 4 13 3 2 + <_> + 2 + + 4 4 3 9 + <_> + 0 + + 4 11 2 2 + <_> + 9 + + 4 1 3 1 + <_> + 9 + + 0 6 5 2 + <_> + 4 + + 0 9 4 2 + <_> + 5 + + 0 3 1 6 + <_> + 4 + + 0 8 5 6 + <_> + 9 + + 3 13 3 2 + <_> + 7 + + 5 1 1 9 + <_> + 5 + + 4 2 1 1 + <_> + 0 + + 4 1 2 1 + <_> + 9 + + 2 0 2 3 + <_> + 0 + + 1 2 3 4 + <_> + 5 + + 5 4 1 2 + <_> + 2 + + 3 14 3 1 + <_> + 7 + + 3 6 2 1 + <_> + 0 + + 5 0 1 14 + <_> + 7 + + 1 9 5 1 + <_> + 7 + + 0 7 2 8 + <_> + 9 + + 2 5 1 2 + <_> + 1 + + 0 7 5 1 + <_> + 1 + + 3 5 2 5 + <_> + 8 + + 1 0 1 8 + <_> + 1 + + 2 9 4 3 + <_> + 9 + + 3 5 4 6 + <_> + 3 + + 2 9 2 4 + <_> + 2 + + 1 9 5 2 + <_> + 5 + + 0 14 7 1 + <_> + 5 + + 4 2 2 11 + <_> + 0 + + 5 7 2 1 + <_> + 7 + + 0 6 1 1 + <_> + 9 + + 2 3 2 6 + <_> + 3 + + 1 5 4 1 + <_> + 1 + + 4 12 1 2 + <_> + 9 + + 0 8 2 7 + <_> + 1 + + 2 11 5 4 + <_> + 2 + + 3 3 2 8 + <_> + 1 + + 0 5 2 7 + <_> + 4 + + 3 5 2 10 + <_> + 1 + + 4 1 1 8 + <_> + 0 + + 0 1 7 1 + <_> + 4 + + 0 2 7 2 + <_> + 9 + + 6 0 1 13 + <_> + 7 + + 3 1 4 1 + <_> + 9 + + 3 3 3 8 + <_> + 4 + + 2 2 3 4 + <_> + 5 + + 6 0 1 2 + <_> + 8 + + 2 7 4 1 + <_> + 1 + + 3 5 2 5 + <_> + 3 + + 1 12 5 3 + <_> + 5 + + 4 1 3 4 + <_> + 1 + + 0 0 6 2 + <_> + 7 + + 0 13 7 1 + <_> + 5 + + 5 5 2 1 + <_> + 7 + + 2 6 4 4 + <_> + 0 + + 0 2 4 6 + <_> + 3 + + 0 9 7 1 + <_> + 9 + + 0 5 7 1 + <_> + 5 + + 2 11 4 2 + <_> + 7 + + 1 2 6 4 + <_> + 5 + + 2 14 5 1 + <_> + 1 + + 0 0 7 14 + <_> + 9 + + 2 2 4 2 + <_> + 9 + + 2 7 4 3 + <_> + 9 + + 0 7 1 5 + <_> + 0 + + 3 8 3 5 + <_> + 8 + + 5 4 2 6 + <_> + 1 + + 1 4 6 1 + <_> + 2 + + 2 7 5 4 + <_> + 7 + + 1 11 6 1 + <_> + 7 + + 4 0 1 11 + <_> + 7 + + 2 12 4 3 + <_> + 1 + + 3 12 1 2 + <_> + 3 + + 0 3 4 2 + <_> + 1 + + 3 7 2 6 + <_> + 3 + + 0 3 2 6 + <_> + 7 + + 1 3 4 2 + <_> + 5 + + 2 0 1 3 + <_> + 2 + + 5 13 2 2 + <_> + 2 + + 3 0 4 6 + <_> + 9 + + 2 4 5 3 + <_> + 7 + + 3 5 2 2 + <_> + 7 + + 2 2 4 4 + <_> + 5 + + 2 5 5 7 + <_> + 2 + + 2 1 3 2 + <_> + 5 + + 3 3 3 1 + <_> + 3 + + 2 1 2 12 + <_> + 8 + + 3 1 2 3 + <_> + 5 + + 5 0 1 4 + <_> + 9 + + 2 4 4 1 + <_> + 2 + + 5 3 1 4 + <_> + 9 + + 2 1 1 4 + <_> + 9 + + 3 9 2 4 + <_> + 2 + + 0 14 3 1 + <_> + 2 + + 3 3 2 8 + <_> + 3 + + 0 14 6 1 + <_> + 4 + + 3 8 2 5 + <_> + 0 + + 2 6 5 7 + <_> + 0 + + 0 10 7 1 + <_> + 0 + + 2 0 5 2 + <_> + 3 + + 0 5 7 2 + <_> + 5 + + 4 4 3 2 + <_> + 7 + + 1 7 6 3 + <_> + 1 + + 3 0 2 8 + <_> + 2 + + 4 9 2 4 + <_> + 4 + + 3 1 2 8 + <_> + 1 + + 3 7 2 1 + <_> + 3 + + 0 11 5 2 + <_> + 1 + + 4 10 3 1 + <_> + 1 + + 2 4 4 8 + <_> + 4 + + 4 11 3 3 + <_> + 4 + + 1 9 1 2 + <_> + 0 + + 1 14 4 1 + <_> + 2 + + 2 1 3 1 + <_> + 3 + + 2 3 2 10 + <_> + 7 + + 6 2 1 3 + <_> + 4 + + 1 1 6 6 + <_> + 9 + + 3 5 2 2 + <_> + 7 + + 0 7 6 1 + <_> + 8 + + 3 3 2 4 + <_> + 8 + + 2 1 5 4 + <_> + 8 + + 0 3 6 1 + <_> + 1 + + 4 0 3 9 + <_> + 4 + + 4 1 1 8 + <_> + 4 + + 0 6 2 4 + <_> + 5 + + 1 5 6 6 + <_> + 4 + + 3 4 1 11 + <_> + 1 + + 2 12 2 2 + <_> + 7 + + 0 8 4 2 + <_> + 0 + + 0 13 3 1 + <_> + 9 + + 0 0 7 3 + <_> + 5 + + 0 5 6 3 + <_> + 1 + + 0 0 6 14 + <_> + 1 + + 0 10 5 4 + <_> + 9 + + 0 13 1 1 + <_> + 0 + + 1 1 6 12 + <_> + 4 + + 2 0 5 15 + <_> + 1 + + 4 5 1 7 + <_> + 7 + + 1 0 2 3 + <_> + 3 + + 4 14 3 1 + <_> + 9 + + 4 1 1 1 + <_> + 1 + + 0 13 2 2 + <_> + 7 + + 2 12 4 1 + <_> + 9 + + 1 8 2 2 + <_> + 3 + + 0 4 4 1 + <_> + 7 + + 1 2 2 5 + <_> + 0 + + 1 10 5 3 + <_> + 9 + + 1 4 6 6 + <_> + 1 + + 3 0 1 10 + <_> + 4 + + 0 8 1 1 + <_> + 5 + + 0 10 1 5 + <_> + 2 + + 1 11 4 2 + <_> + 8 + + 0 0 3 13 + <_> + 5 + + 4 14 3 1 + <_> + 7 + + 0 11 7 1 + <_> + 7 + + 0 0 3 9 + <_> + 7 + + 4 14 1 1 + <_> + 9 + + 1 7 4 2 + <_> + 4 + + 0 3 6 3 + <_> + 3 + + 0 3 4 3 + <_> + 8 + + 3 2 3 2 + <_> + 5 + + 0 9 3 6 + <_> + 4 + + 2 2 3 4 + <_> + 1 + + 3 2 2 4 + <_> + 2 + + 1 3 4 9 + <_> + 7 + + 0 6 2 2 + <_> + 9 + + 3 5 4 1 + <_> + 7 + + 3 5 1 1 + <_> + 5 + + 5 3 1 7 + <_> + 9 + + 3 7 1 7 + <_> + 4 + + 1 5 6 2 + <_> + 2 + + 0 13 7 1 + <_> + 9 + + 6 0 1 3 + <_> + 1 + + 6 8 1 1 + <_> + 2 + + 0 11 6 2 + <_> + 3 + + 1 10 1 2 + <_> + 2 + + 3 8 3 1 + <_> + 1 + + 0 13 5 1 + <_> + 3 + + 2 4 3 10 + <_> + 4 + + 2 8 4 6 + <_> + 5 + + 3 2 4 8 + <_> + 3 + + 0 14 6 1 + <_> + 1 + + 0 10 3 5 + <_> + 9 + + 4 8 1 2 + <_> + 9 + + 0 11 3 1 + <_> + 7 + + 3 13 1 2 + <_> + 3 + + 2 9 2 3 + <_> + 5 + + 3 9 1 1 + <_> + 1 + + 2 4 4 9 + <_> + 0 + + 2 2 4 11 + <_> + 7 + + 5 2 2 11 + <_> + 0 + + 1 13 6 1 + <_> + 7 + + 3 6 3 4 + <_> + 2 + + 2 7 5 8 + <_> + 7 + + 3 0 2 1 + <_> + 2 + + 3 14 2 1 + <_> + 1 + + 3 4 2 8 + <_> + 9 + + 3 3 1 9 + <_> + 5 + + 3 2 4 4 + <_> + 4 + + 4 4 1 11 + <_> + 9 + + 2 6 4 6 + <_> + 8 + + 2 3 5 1 + <_> + 9 + + 2 5 2 2 + <_> + 2 + + 1 6 3 7 + <_> + 7 + + 1 1 1 7 + <_> + 1 + + 0 5 7 3 + <_> + 1 + + 3 7 4 3 + <_> + 5 + + 0 14 7 1 + <_> + 1 + + 2 9 4 3 + <_> + 3 + + 0 6 4 2 + <_> + 5 + + 4 10 3 3 + <_> + 4 + + 2 8 2 6 + <_> + 4 + + 3 1 1 7 + <_> + 1 + + 2 0 5 2 + <_> + 7 + + 3 6 2 8 + <_> + 1 + + 0 10 7 1 + <_> + 8 + + 1 1 5 7 + <_> + 7 + + 3 3 1 7 + <_> + 0 + + 0 4 7 3 + <_> + 3 + + 1 5 3 1 + <_> + 4 + + 1 4 4 7 + <_> + 2 + + 5 14 2 1 + <_> + 2 + + 5 0 2 7 + <_> + 1 + + 1 2 5 6 + <_> + 4 + + 3 9 2 4 + <_> + 8 + + 0 5 6 2 + <_> + 4 + + 0 13 4 2 + <_> + 2 + + 0 11 6 2 + <_> + 2 + + 2 13 3 2 + <_> + 1 + + 5 12 2 3 + <_> + 5 + + 4 3 2 3 + <_> + 1 + + 3 12 4 2 + <_> + 5 + + 0 0 7 5 + <_> + 4 + + 3 14 3 1 + <_> + 4 + + 1 7 6 3 + <_> + 1 + + 3 7 3 1 + <_> + 1 + + 2 1 4 12 + <_> + 9 + + 0 2 2 2 + <_> + 1 + + 4 7 1 7 + <_> + 9 + + 0 5 7 1 + <_> + 2 + + 2 3 4 10 + <_> + 4 + + 0 6 2 3 + <_> + 1 + + 2 12 3 2 + <_> + 1 + + 4 4 1 10 + <_> + 3 + + 0 4 5 6 + <_> + 9 + + 1 1 2 4 + <_> + 5 + + 3 14 4 1 + <_> + 5 + + 2 11 4 3 + <_> + 9 + + 1 1 5 3 + <_> + 7 + + 2 7 3 1 + <_> + 7 + + 1 1 6 14 + <_> + 7 + + 2 2 3 1 + <_> + 5 + + 2 2 3 5 + <_> + 9 + + 3 8 1 4 + <_> + 4 + + 3 8 2 5 + <_> + 5 + + 5 7 1 5 + <_> + 7 + + 3 11 1 2 + <_> + 3 + + 1 4 3 8 + <_> + 9 + + 0 4 7 5 + <_> + 8 + + 2 3 1 1 + <_> + 0 + + 0 3 1 8 + <_> + 2 + + 2 4 2 2 + <_> + 0 + + 0 1 4 4 + <_> + 5 + + 6 0 1 5 + <_> + 1 + + 5 0 2 9 + <_> + 5 + + 1 0 5 2 + <_> + 4 + + 3 0 1 6 + <_> + 8 + + 2 1 5 8 + <_> + 3 + + 2 9 2 4 + <_> + 3 + + 1 1 6 6 + <_> + 2 + + 1 13 5 2 + <_> + 5 + + 3 10 3 3 + <_> + 7 + + 4 5 1 1 + <_> + 1 + + 2 10 4 5 + <_> + 1 + + 3 13 2 2 + <_> + 7 + + 3 6 2 1 + <_> + 5 + + 5 0 2 10 + <_> + 1 + + 2 12 3 2 + <_> + 3 + + 3 0 1 7 + <_> + 8 + + 0 6 7 6 + <_> + 4 + + 3 4 2 5 + <_> + 9 + + 3 4 3 2 + <_> + 8 + + 1 0 5 1 + <_> + 1 + + 2 10 5 1 + <_> + 4 + + 2 7 5 1 + <_> + 1 + + 0 0 6 14 + <_> + 9 + + 3 9 2 2 + <_> + 1 + + 5 3 1 5 + <_> + 0 + + 1 10 4 2 + <_> + 7 + + 3 10 2 2 + <_> + 8 + + 1 4 5 10 + <_> + 7 + + 0 14 7 1 + <_> + 7 + + 1 2 1 1 + <_> + 5 + + 3 3 2 2 + <_> + 9 + + 0 5 3 1 + <_> + 1 + + 4 1 1 7 + <_> + 3 + + 1 4 5 2 + <_> + 4 + + 0 1 7 6 + <_> + 3 + + 0 12 6 3 + <_> + 7 + + 6 11 1 3 + <_> + 2 + + 2 12 4 1 + <_> + 4 + + 2 9 4 5 + <_> + 0 + + 0 13 2 1 + <_> + 8 + + 2 6 4 2 + <_> + 4 + + 0 11 1 3 + <_> + 4 + + 1 11 5 3 + <_> + 1 + + 6 12 1 3 + <_> + 1 + + 2 12 3 2 + <_> + 5 + + 4 4 3 1 + <_> + 5 + + 1 1 3 2 + <_> + 3 + + 3 5 3 7 + <_> + 4 + + 2 11 5 4 + <_> + 2 + + 0 4 4 2 + <_> + 9 + + 1 1 1 5 + <_> + 3 + + 1 1 2 6 + <_> + 3 + + 0 2 3 7 + <_> + 1 + + 1 5 3 4 + <_> + 1 + + 3 4 2 8 + <_> + 2 + + 0 14 7 1 + <_> + 2 + + 3 4 3 9 + <_> + 1 + + 0 7 5 3 + <_> + 9 + + 0 5 7 3 + <_> + 4 + + 4 2 1 3 + <_> + 9 + + 6 4 1 1 + <_> + 9 + + 6 1 1 1 + <_> + 7 + + 2 1 1 1 + <_> + 2 + + 0 3 6 10 + <_> + 4 + + 2 5 3 10 + <_> + 8 + + 4 1 1 3 + <_> + 1 + + 3 8 2 1 + <_> + 1 + + 3 12 3 2 + <_> + 5 + + 3 4 4 2 + <_> + 0 + + 2 4 2 8 + <_> + 7 + + 4 7 1 1 + <_> + 0 + + 5 2 1 7 + <_> + 1 + + 0 0 7 1 + <_> + 5 + + 1 14 3 1 + <_> + 4 + + 2 8 4 5 + <_> + 3 + + 0 14 6 1 + <_> + 3 + + 2 11 3 2 + <_> + 9 + + 4 6 1 5 + <_> + 9 + + 2 9 3 5 + <_> + 9 + + 6 1 1 8 + <_> + 7 + + 6 11 1 3 + <_> + 4 + + 3 1 2 7 + <_> + 7 + + 6 1 1 7 + <_> + 1 + + 1 5 5 2 + <_> + 0 + + 5 3 2 10 + <_> + 3 + + 3 1 1 5 + <_> + 1 + + 2 13 2 2 + <_> + 0 + + 4 8 2 4 + <_> + 9 + + 0 5 7 1 + <_> + 3 + + 2 4 1 4 + <_> + 4 + + 2 4 4 4 + <_> + 7 + + 2 5 3 5 + <_> + 0 + + 2 6 3 6 + <_> + 7 + + 0 9 6 1 + <_> + 0 + + 1 14 6 1 + <_> + 2 + + 2 0 3 3 + <_> + 7 + + 5 0 2 6 + <_> + 1 + + 3 5 4 8 + <_> + 1 + + 0 3 7 3 + <_> + 3 + + 4 3 1 2 + <_> + 9 + + 3 5 2 2 + <_> + 9 + + 0 2 1 3 + <_> + 8 + + 1 2 6 13 + <_> + 1 + + 3 1 1 9 + <_> + 0 + + 0 10 7 3 + <_> + 5 + + 0 6 6 4 + <_> + 1 + + 6 5 1 10 + <_> + 0 + + 0 1 1 14 + <_> + 4 + + 0 8 5 7 + <_> + 3 + + 6 11 1 3 + <_> + 1 + + 0 12 7 2 + <_> + 1 + + 2 3 1 9 + <_> + 3 + + 0 4 7 2 + <_> + 9 + + 4 5 2 1 + <_> + 2 + + 2 0 3 11 + <_> + 8 + + 4 2 1 2 + <_> + 4 + + 3 6 2 9 + <_> + 1 + + 0 13 6 2 + <_> + 1 + + 2 12 2 2 + <_> + 3 + + 0 1 4 8 + <_> + 2 + + 0 4 4 1 + <_> + 3 + + 0 5 6 2 + <_> + 7 + + 0 7 2 1 + <_> + 7 + + 3 6 3 4 + <_> + 5 + + 4 7 1 6 + <_> + 3 + + 3 8 3 2 + <_> + 5 + + 1 13 3 1 + <_> + 4 + + 3 11 2 1 + <_> + 2 + + 0 14 5 1 + <_> + 7 + + 3 10 2 3 + <_> + 4 + + 3 2 1 4 + <_> + 1 + + 3 2 1 2 + <_> + 1 + + 0 1 5 1 + <_> + 2 + + 4 6 2 7 + <_> + 7 + + 3 11 1 2 + <_> + 1 + + 3 12 2 3 + <_> + 7 + + 4 5 1 1 + <_> + 1 + + 4 1 2 7 + <_> + 7 + + 2 5 1 2 + <_> + 3 + + 1 3 5 10 + <_> + 7 + + 0 7 7 1 + <_> + 8 + + 0 0 4 5 + <_> + 3 + + 1 10 1 4 + <_> + 3 + + 2 11 4 2 + <_> + 0 + + 2 10 3 2 + <_> + 9 + + 3 10 2 3 + <_> + 5 + + 1 0 3 10 + <_> + 3 + + 2 3 3 9 + <_> + 8 + + 6 5 1 2 + <_> + 4 + + 2 9 3 6 + <_> + 0 + + 2 8 5 6 + <_> + 2 + + 2 3 3 8 + <_> + 3 + + 6 5 1 2 + <_> + 3 + + 3 14 4 1 + <_> + 0 + + 2 8 3 2 + <_> + 2 + + 0 7 6 6 + <_> + 5 + + 5 4 1 7 + <_> + 1 + + 3 5 1 2 + <_> + 1 + + 3 0 2 9 + <_> + 0 + + 5 0 1 5 + <_> + 0 + + 2 14 2 1 + <_> + 4 + + 3 2 4 7 + <_> + 9 + + 3 2 1 8 + <_> + 0 + + 0 3 6 8 + <_> + 9 + + 4 8 1 4 + <_> + 7 + + 0 8 5 2 + <_> + 4 + + 3 8 2 5 + <_> + 1 + + 2 10 4 3 + <_> + 8 + + 0 12 6 1 + <_> + 9 + + 5 6 2 4 + <_> + 8 + + 2 6 4 2 + <_> + 5 + + 3 0 3 3 + <_> + 1 + + 0 11 5 1 + <_> + 9 + + 0 5 6 1 + <_> + 0 + + 4 12 3 1 + <_> + 2 + + 4 13 3 2 + <_> + 5 + + 3 2 3 4 + <_> + 3 + + 0 0 3 6 + <_> + 1 + + 3 13 1 1 + <_> + 0 + + 3 10 3 2 + <_> + 2 + + 5 3 2 3 + <_> + 9 + + 1 0 1 2 + <_> + 7 + + 3 1 4 1 + <_> + 9 + + 3 8 2 1 + <_> + 1 + + 0 11 6 2 + <_> + 0 + + 0 12 2 3 + <_> + 5 + + 0 4 5 5 + <_> + 5 + + 5 5 2 1 + <_> + 1 + + 1 2 3 7 + <_> + 9 + + 0 0 1 3 + <_> + 0 + + 1 8 6 4 + <_> + 8 + + 0 6 1 6 + <_> + 1 + + 4 2 1 9 + <_> + 5 + + 3 13 4 2 + <_> + 1 + + 1 0 6 15 + <_> + 3 + + 2 4 2 8 + <_> + 8 + + 4 0 3 11 + <_> + 4 + + 0 7 1 4 + <_> + 2 + + 1 4 3 10 + <_> + 7 + + 0 8 2 2 + <_> + 9 + + 3 10 4 5 + <_> + 4 + + 1 4 3 2 + <_> + 9 + + 3 1 2 9 + <_> + 9 + + 0 3 2 2 + <_> + 2 + + 2 10 4 3 + <_> + 5 + + 0 14 7 1 + <_> + 1 + + 4 5 1 7 + <_> + 7 + + 3 11 3 1 + <_> + 5 + + 4 5 2 9 + <_> + 9 + + 3 6 3 7 + <_> + 8 + + 0 6 7 2 + <_> + 5 + + 3 14 4 1 + <_> + 3 + + 2 2 2 11 + <_> + 4 + + 3 2 2 2 + <_> + 1 + + 0 0 7 1 + <_> + 5 + + 2 11 3 3 + <_> + 4 + + 2 1 4 14 + <_> + 0 + + 0 14 4 1 + <_> + 9 + + 1 7 2 5 + <_> + 3 + + 0 3 4 3 + <_> + 9 + + 1 8 4 2 + <_> + 9 + + 6 0 1 12 + <_> + 1 + + 0 10 1 1 + <_> + 9 + + 3 6 1 9 + <_> + 9 + + 0 4 1 11 + <_> + 0 + + 3 11 4 2 + <_> + 7 + + 1 10 5 2 + <_> + 4 + + 1 7 6 3 + <_> + 1 + + 0 0 7 2 + <_> + 4 + + 3 2 1 4 + <_> + 5 + + 0 5 7 7 + <_> + 1 + + 3 12 3 2 + <_> + 5 + + 5 1 1 12 + <_> + 7 + + 1 9 5 1 + <_> + 4 + + 3 8 2 5 + <_> + 1 + + 0 13 6 2 + <_> + 9 + + 3 1 2 12 + <_> + 2 + + 2 5 4 2 + <_> + 0 + + 2 11 3 1 + <_> + 1 + + 0 9 7 3 + <_> + 2 + + 2 13 5 2 + <_> + 7 + + 0 8 5 7 + <_> + 3 + + 3 6 4 1 + <_> + 7 + + 3 4 2 4 + <_> + 4 + + 4 1 1 7 + <_> + 1 + + 3 3 2 3 + <_> + 4 + + 2 2 4 4 + <_> + 1 + + 1 2 6 4 + <_> + 5 + + 1 4 6 2 + <_> + 0 + + 2 3 2 3 + <_> + 9 + + 0 5 7 1 + <_> + 8 + + 2 2 4 2 + <_> + 5 + + 0 8 4 3 + <_> + 1 + + 4 13 1 1 + <_> + 3 + + 2 4 2 9 + <_> + 5 + + 2 3 4 4 + <_> + 4 + + 2 6 3 9 + <_> + 2 + + 3 4 2 9 + <_> + 2 + + 0 11 5 1 + <_> + 3 + + 0 14 7 1 + <_> + 4 + + 2 8 4 5 + <_> + 9 + + 2 12 2 2 + <_> + 3 + + 1 4 6 8 + <_> + 7 + + 0 8 3 1 + <_> + 7 + + 0 6 5 4 + <_> + 5 + + 4 0 3 12 + <_> + 7 + + 1 0 5 4 + <_> + 4 + + 4 1 3 9 + <_> + 1 + + 3 5 4 8 + <_> + 1 + + 0 7 7 7 + <_> + 5 + + 0 0 4 1 + <_> + 3 + + 2 9 4 1 + <_> + 8 + + 2 4 4 11 + <_> + 9 + + 4 8 1 3 + <_> + 2 + + 3 4 4 9 + <_> + 2 + + 2 10 3 1 + <_> + 4 + + 3 12 2 1 + <_> + 7 + + 3 11 2 1 + <_> + 7 + + 1 4 6 7 + <_> + 9 + + 3 1 2 2 + <_> + 2 + + 5 14 2 1 + <_> + 5 + + 3 11 3 2 + <_> + 4 + + 0 0 3 2 + <_> + 3 + + 0 0 1 14 + <_> + 8 + + 4 0 3 12 + <_> + 7 + + 6 8 1 4 + <_> + 7 + + 6 0 1 3 + <_> + 7 + + 1 6 6 4 + <_> + 8 + + 0 6 7 1 + <_> + 5 + + 4 2 1 11 + <_> + 4 + + 2 8 3 7 + <_> + 3 + + 4 6 1 3 + <_> + 0 + + 2 14 5 1 + <_> + 3 + + 1 11 5 3 + <_> + 4 + + 2 0 3 2 + <_> + 4 + + 2 1 5 14 + <_> + 3 + + 1 5 5 1 + <_> + 0 + + 2 0 4 1 + <_> + 7 + + 1 7 1 1 + <_> + 0 + + 1 2 3 3 + <_> + 4 + + 1 7 3 4 + <_> + 0 + + 3 9 1 4 + <_> + 1 + + 1 13 4 1 + <_> + 3 + + 2 1 5 6 + <_> + 9 + + 4 2 3 9 + <_> + 9 + + 0 1 1 13 + <_> + 3 + + 2 1 1 13 + <_> + 3 + + 2 14 4 1 + <_> + 1 + + 2 11 5 4 + <_> + 5 + + 4 0 3 7 + <_> + 1 + + 2 6 3 6 + <_> + 8 + + 5 3 2 4 + <_> + 0 + + 0 1 3 3 + <_> + 9 + + 4 4 1 9 + <_> + 9 + + 6 6 1 6 + <_> + 9 + + 0 14 6 1 + <_> + 0 + + 1 8 5 6 + <_> + 1 + + 0 2 6 11 + <_> + 5 + + 1 14 6 1 + <_> + 4 + + 4 1 1 9 + <_> + 8 + + 6 11 1 3 + <_> + 8 + + 2 1 5 8 + <_> + 3 + + 0 3 3 5 + <_> + 4 + + 0 7 2 2 + <_> + 8 + + 2 0 5 1 + <_> + 8 + + 1 6 5 1 + <_> + 5 + + 4 4 3 3 + <_> + 0 + + 3 1 3 1 + <_> + 9 + + 1 5 1 2 + <_> + 1 + + 2 12 5 2 + <_> + 3 + + 0 5 7 1 + <_> + 1 + + 0 11 6 2 + <_> + 2 + + 4 2 2 4 + <_> + 5 + + 5 11 1 3 + <_> + 5 + + 1 1 3 8 + <_> + 5 + + 0 3 5 3 + <_> + 5 + + 1 5 6 1 + <_> + 2 + + 2 14 4 1 + <_> + 9 + + 6 6 1 3 + <_> + 4 + + 0 12 7 3 + <_> + 2 + + 2 10 4 3 + <_> + 1 + + 3 7 4 1 + <_> + 9 + + 0 2 2 1 + <_> + 1 + + 3 0 2 12 + <_> + 3 + + 4 14 3 1 + <_> + 1 + + 3 4 3 4 + <_> + 1 + + 2 12 3 2 + <_> + 0 + + 0 4 5 7 + <_> + 3 + + 3 2 3 8 + <_> + 4 + + 2 10 3 4 + <_> + 3 + + 2 9 2 4 + <_> + 0 + + 2 10 4 3 + <_> + 4 + + 2 0 5 15 + <_> + 1 + + 0 12 4 1 + <_> + 4 + + 3 2 1 4 + <_> + 1 + + 0 0 7 1 + <_> + 1 + + 1 9 1 6 + <_> + 4 + + 3 5 2 10 + <_> + 0 + + 2 2 4 10 + <_> + 7 + + 1 5 6 4 + <_> + 7 + + 1 8 4 2 + <_> + 4 + + 2 7 5 4 + <_> + 4 + + 0 1 6 1 + <_> + 3 + + 3 3 1 2 + <_> + 5 + + 1 14 3 1 + <_> + 9 + + 0 5 6 3 + <_> + 8 + + 0 3 1 12 + <_> + 3 + + 0 0 4 11 + <_> + 9 + + 3 4 1 3 + <_> + 9 + + 6 0 1 1 + <_> + 7 + + 1 3 1 2 + <_> + 0 + + 3 8 4 4 + <_> + 5 + + 5 3 1 9 + <_> + 1 + + 3 11 2 3 + <_> + 9 + + 3 7 2 6 + <_> + 4 + + 2 8 4 5 + <_> + 1 + + 4 0 1 10 + <_> + 8 + + 6 5 1 3 + <_> + 0 + + 2 14 2 1 + <_> + 3 + + 2 2 1 5 + <_> + 0 + + 3 4 1 1 + <_> + 1 + + 2 4 3 7 + <_> + 7 + + 3 4 1 3 + <_> + 7 + + 2 0 5 15 + <_> + 7 + + 3 4 2 1 + <_> + 1 + + 2 5 4 8 + <_> + 9 + + 3 9 1 4 + <_> + 0 + + 1 3 4 1 + <_> + 3 + + 2 7 2 6 + <_> + 3 + + 0 12 3 1 + <_> + 5 + + 3 14 4 1 + <_> + 1 + + 0 2 7 5 + <_> + 4 + + 3 14 3 1 + <_> + 5 + + 3 4 1 3 + <_> + 2 + + 3 4 2 8 + <_> + 7 + + 0 11 4 1 + <_> + 0 + + 1 13 5 2 + <_> + 0 + + 3 10 2 3 + <_> + 1 + + 2 8 4 3 + <_> + 7 + + 1 8 1 6 + <_> + 1 + + 6 6 1 8 + <_> + 5 + + 0 2 6 3 + <_> + 8 + + 3 1 2 3 + <_> + 2 + + 4 5 3 8 + <_> + 7 + + 3 8 1 1 + <_> + 1 + + 1 11 1 4 + <_> + 1 + + 2 13 2 1 + <_> + 9 + + 3 1 2 3 + <_> + 2 + + 2 0 3 2 + <_> + 3 + + 2 1 2 6 + <_> + 7 + + 3 6 2 1 + <_> + 4 + + 0 3 5 3 + <_> + 5 + + 2 7 3 4 + <_> + 3 + + 3 12 1 1 + <_> + 9 + + 3 1 2 5 + <_> + 4 + + 0 8 7 1 + <_> + 1 + + 1 6 6 8 + <_> + 4 + + 3 11 2 4 + <_> + 9 + + 5 1 2 1 + <_> + 7 + + 2 1 1 1 + <_> + 7 + + 1 14 2 1 + <_> + 5 + + 1 5 6 7 + <_> + 4 + + 2 9 4 6 + <_> + 5 + + 0 6 7 9 + <_> + 8 + + 0 1 7 4 + <_> + 3 + + 3 3 1 4 + <_> + 4 + + 3 12 2 1 + <_> + 2 + + 0 13 5 2 + <_> + 2 + + 1 11 4 2 + <_> + 3 + + 0 3 6 7 + <_> + 9 + + 0 5 7 1 + <_> + 1 + + 3 9 1 3 + <_> + 4 + + 2 0 4 8 + <_> + 8 + + 3 2 3 2 + <_> + 4 + + 1 0 4 1 + <_> + 5 + + 5 3 1 10 + <_> + 0 + + 0 11 2 4 + <_> + 1 + + 4 10 1 4 + <_> + 2 + + 3 3 3 1 + <_> + 1 + + 3 13 1 2 + <_> + 2 + + 1 10 5 1 + <_> + 4 + + 0 8 5 7 + <_> + 4 + + 1 5 4 8 + <_> + 4 + + 1 1 5 14 + <_> + 1 + + 2 1 4 12 + <_> + 4 + + 4 2 3 3 + <_> + 1 + + 3 12 2 2 + <_> + 4 + + 4 8 2 6 + <_> + 5 + + 3 11 4 2 + <_> + 2 + + 0 6 1 6 + <_> + 3 + + 1 14 6 1 + <_> + 3 + + 2 9 2 3 + <_> + 7 + + 1 2 1 7 + <_> + 1 + + 6 13 1 2 + <_> + 1 + + 3 5 2 1 + <_> + 8 + + 0 0 6 1 + <_> + 5 + + 4 4 1 2 + <_> + 4 + + 3 1 1 8 + <_> + 1 + + 3 7 2 1 + <_> + 4 + + 3 3 2 8 + <_> + 1 + + 2 10 5 3 + <_> + 9 + + 4 2 3 2 + <_> + 9 + + 2 7 5 3 + <_> + 7 + + 1 11 3 1 + <_> + 2 + + 2 10 3 3 + <_> + 5 + + 4 4 3 9 + <_> + 7 + + 6 5 1 2 + <_> + 3 + + 2 13 3 1 + <_> + 8 + + 0 6 7 1 + <_> + 2 + + 3 13 4 2 + <_> + 9 + + 3 0 2 13 + <_> + 4 + + 3 2 2 2 + <_> + 1 + + 3 2 2 2 + <_> + 4 + + 1 2 2 2 + <_> + 4 + + 3 8 2 4 + <_> + 3 + + 6 5 1 5 + <_> + 8 + + 3 6 2 1 + <_> + 1 + + 0 5 6 2 + <_> + 0 + + 2 14 2 1 + <_> + 1 + + 0 5 3 3 + <_> + 3 + + 2 4 1 6 + <_> + 7 + + 6 3 1 2 + <_> + 5 + + 2 11 4 3 + <_> + 5 + + 0 14 7 1 + <_> + 3 + + 2 12 5 2 + <_> + 8 + + 0 4 1 9 + <_> + 9 + + 0 5 2 5 + <_> + 4 + + 1 11 6 1 + <_> + 4 + + 3 12 2 1 + <_> + 4 + + 6 6 1 5 + <_> + 1 + + 0 0 7 2 + <_> + 9 + + 1 0 1 3 + <_> + 1 + + 3 10 2 4 + <_> + 5 + + 4 4 3 1 + <_> + 4 + + 2 14 4 1 + <_> + 2 + + 3 2 2 9 + <_> + 5 + + 2 7 2 4 + <_> + 9 + + 1 7 6 2 + <_> + 2 + + 3 14 2 1 + <_> + 1 + + 3 11 1 1 + <_> + 0 + + 5 7 1 4 + <_> + 2 + + 4 1 2 12 + <_> + 4 + + 3 4 2 9 + <_> + 7 + + 1 8 1 2 + <_> + 4 + + 3 1 2 8 + <_> + 7 + + 3 14 3 1 + <_> + 8 + + 1 5 6 4 + <_> + 9 + + 3 5 2 2 + <_> + 9 + + 0 3 2 3 + <_> + 7 + + 0 12 1 2 + <_> + 1 + + 3 0 4 13 + <_> + 3 + + 1 14 6 1 + <_> + 3 + + 2 6 2 6 + <_> + 0 + + 2 3 4 10 + <_> + 3 + + 4 9 2 2 + <_> + 0 + + 3 5 3 1 + <_> + 8 + + 3 3 2 1 + <_> + 1 + + 6 8 1 3 + <_> + 3 + + 1 4 3 8 + <_> + 9 + + 0 5 2 4 + <_> + 1 + + 0 12 7 2 + <_> + 3 + + 0 0 3 4 + <_> + 1 + + 3 4 2 6 + <_> + 8 + + 3 10 2 4 + <_> + 1 + + 2 0 5 12 + <_> + 5 + + 4 4 3 2 + <_> + 1 + + 0 10 7 1 + <_> + 2 + + 1 1 6 5 + <_> + 0 + + 2 14 3 1 + <_> + 0 + + 2 5 1 7 + <_> + 1 + + 2 0 3 3 + <_> + 8 + + 2 0 4 1 + <_> + 0 + + 1 9 4 3 + <_> + 8 + + 1 0 6 5 + <_> + 3 + + 0 4 3 2 + <_> + 7 + + 3 8 3 2 + <_> + 1 + + 0 0 3 8 + <_> + 5 + + 3 3 2 2 + <_> + 9 + + 4 1 1 12 + <_> + 4 + + 2 8 5 6 + <_> + 5 + + 2 11 4 3 + <_> + 8 + + 0 7 1 6 + <_> + 1 + + 3 2 2 7 + <_> + 7 + + 3 7 2 4 + <_> + 7 + + 3 4 2 2 + <_> + 7 + + 1 1 1 1 + <_> + 4 + + 2 2 4 11 + <_> + 1 + + 1 0 6 14 + <_> + 7 + + 1 11 5 1 + <_> + 5 + + 4 0 3 6 + <_> + 9 + + 4 8 1 4 + <_> + 4 + + 2 1 5 7 + <_> + 4 + + 4 2 3 5 + <_> + 3 + + 1 14 6 1 + <_> + 3 + + 0 4 3 2 + <_> + 0 + + 2 6 5 7 + <_> + 1 + + 1 5 2 7 + <_> + 3 + + 3 1 1 3 + <_> + 9 + + 2 5 2 1 + <_> + 8 + + 0 12 2 1 + <_> + 8 + + 2 0 2 4 + <_> + 3 + + 2 9 3 4 + <_> + 9 + + 5 6 1 3 + <_> + 2 + + 0 13 7 2 + <_> + 7 + + 3 5 3 5 + <_> + 0 + + 2 1 3 4 + <_> + 1 + + 0 1 5 1 + <_> + 7 + + 0 13 7 2 + <_> + 4 + + 1 12 6 3 + <_> + 1 + + 1 11 6 2 + <_> + 1 + + 2 12 4 2 + <_> + 5 + + 5 5 2 1 + <_> + 9 + + 2 5 5 6 + <_> + 0 + + 2 10 5 3 + <_> + 9 + + 0 3 7 11 + <_> + 9 + + 6 0 1 13 + <_> + 2 + + 1 14 2 1 + <_> + 5 + + 3 3 2 4 + <_> + 0 + + 0 2 1 7 + <_> + 7 + + 4 5 1 1 + <_> + 7 + + 1 1 5 14 + <_> + 0 + + 2 3 5 6 + <_> + 7 + + 1 11 4 1 + <_> + 7 + + 3 3 2 9 + <_> + 5 + + 5 6 1 7 + <_> + 4 + + 2 8 3 6 + <_> + 9 + + 3 2 2 1 + <_> + 7 + + 1 1 2 8 + <_> + 1 + + 0 12 6 1 + <_> + 7 + + 2 5 4 9 + <_> + 8 + + 1 5 6 3 + <_> + 2 + + 5 14 2 1 + <_> + 2 + + 2 11 4 2 + <_> + 9 + + 0 5 7 1 + <_> + 5 + + 1 5 6 1 + <_> + 2 + + 1 1 3 2 + <_> + 4 + + 0 3 6 2 + <_> + 9 + + 0 5 5 3 + <_> + 4 + + 1 5 5 1 + <_> + 3 + + 2 5 5 1 + <_> + 3 + + 2 1 1 12 + <_> + 1 + + 2 2 1 7 + <_> + 7 + + 2 6 4 4 + <_> + 1 + + 3 1 1 10 + <_> + 7 + + 3 2 1 1 + <_> + 5 + + 4 9 2 4 + <_> + 7 + + 0 6 2 2 + <_> + 0 + + 3 13 4 2 + <_> + 3 + + 0 9 2 5 + <_> + 2 + + 1 6 3 7 + <_> + 8 + + 5 8 2 6 + <_> + 1 + + 2 4 4 9 + <_> + 5 + + 1 14 3 1 + <_> + 4 + + 3 2 1 4 + <_> + 4 + + 6 9 1 1 + <_> + 8 + + 4 1 2 3 + <_> + 2 + + 0 2 1 8 + <_> + 8 + + 3 1 4 3 + <_> + 1 + + 3 13 3 1 + <_> + 9 + + 5 10 2 2 + <_> + 9 + + 3 9 2 4 + <_> + 5 + + 4 4 3 3 + <_> + 7 + + 1 9 6 1 + <_> + 4 + + 1 8 5 3 + <_> + 3 + + 1 4 5 9 + <_> + 7 + + 0 6 7 3 + <_> + 2 + + 0 13 4 1 + <_> + 7 + + 0 6 1 8 + <_> + 9 + + 3 6 2 1 + <_> + 7 + + 3 4 1 5 + <_> + 1 + + 3 7 4 1 + <_> + 4 + + 3 3 4 5 + <_> + 4 + + 4 8 2 7 + <_> + 1 + + 0 0 7 2 + <_> + 7 + + 3 5 2 10 + <_> + 4 + + 3 5 2 10 + <_> + 1 + + 2 2 5 3 + <_> + 8 + + 3 0 2 4 + <_> + 2 + + 2 2 5 3 + <_> + 1 + + 0 5 5 2 + <_> + 5 + + 4 8 2 5 + <_> + 0 + + 3 3 1 11 + <_> + 0 + + 4 13 3 2 + <_> + 1 + + 1 10 5 5 + <_> + 4 + + 1 0 5 2 + <_> + 1 + + 1 12 6 2 + <_> + 3 + + 1 4 3 1 + <_> + 9 + + 1 0 6 3 + <_> + 9 + + 2 3 5 11 + <_> + 2 + + 3 0 2 3 + <_> + 0 + + 2 10 5 3 + <_> + 8 + + 3 6 2 7 + <_> + 5 + + 1 13 3 2 + <_> + 2 + + 1 12 4 1 + <_> + 5 + + 4 2 1 4 + <_> + 9 + + 3 7 2 1 + <_> + 7 + + 1 11 6 2 + <_> + 7 + + 4 14 1 1 + <_> + 7 + + 5 2 2 2 + <_> + 1 + + 3 7 2 6 + <_> + 2 + + 4 1 3 12 + <_> + 4 + + 3 4 2 9 + <_> + 7 + + 3 9 3 1 + <_> + 4 + + 1 3 4 7 + <_> + 8 + + 3 8 2 2 + <_> + 7 + + 3 3 2 2 + <_> + 3 + + 0 4 4 2 + <_> + 0 + + 2 1 2 5 + <_> + 5 + + 3 6 4 6 + <_> + 2 + + 0 13 7 2 + <_> + 9 + + 2 0 5 2 + <_> + 0 + + 1 12 3 1 + <_> + 1 + + 0 0 6 14 + <_> + 9 + + 3 10 2 1 + <_> + 1 + + 0 3 7 4 + <_> + 3 + + 2 1 2 13 + <_> + 4 + + 0 6 1 8 + <_> + 7 + + 3 6 2 1 + <_> + 1 + + 0 4 2 3 + <_> + 0 + + 1 13 6 1 + <_> + 3 + + 2 3 2 10 + <_> + 4 + + 4 0 1 11 + <_> + 1 + + 4 3 1 5 + <_> + 8 + + 3 1 2 4 + <_> + 1 + + 1 13 2 2 + <_> + 9 + + 1 1 6 1 + <_> + 9 + + 3 0 2 5 + <_> + 2 + + 2 0 4 12 + <_> + 3 + + 6 6 1 4 + <_> + 2 + + 1 2 4 1 + <_> + 4 + + 3 8 2 5 + <_> + 5 + + 4 1 2 12 + <_> + 1 + + 5 0 2 7 + <_> + 1 + + 5 1 2 8 + <_> + 3 + + 1 11 6 4 + <_> + 9 + + 1 5 6 2 + <_> + 9 + + 6 0 1 2 + <_> + 7 + + 2 11 1 1 + <_> + 3 + + 0 0 5 6 + <_> + 1 + + 6 10 1 4 + <_> + 7 + + 3 0 4 1 + <_> + 3 + + 2 0 4 2 + <_> + 4 + + 3 3 4 5 + <_> + 4 + + 1 13 4 2 + <_> + 5 + + 2 10 3 5 + <_> + 5 + + 2 11 4 2 + <_> + 4 + + 1 12 1 2 + <_> + 4 + + 1 7 6 7 + <_> + 0 + + 0 13 2 1 + <_> + 3 + + 1 4 2 3 + <_> + 4 + + 0 0 7 2 + <_> + 8 + + 5 4 2 6 + <_> + 5 + + 3 13 4 2 + <_> + 2 + + 2 6 5 9 + <_> + 9 + + 4 5 3 1 + <_> + 4 + + 0 8 7 1 + <_> + 3 + + 1 0 3 6 + <_> + 2 + + 5 0 1 15 + <_> + 0 + + 4 6 3 7 + <_> + 1 + + 1 12 1 3 + <_> + 1 + + 2 13 3 1 + <_> + 5 + + 3 2 2 4 + <_> + 0 + + 2 4 2 8 + <_> + 4 + + 3 5 2 10 + <_> + 7 + + 3 7 2 1 + <_> + 8 + + 3 3 2 1 + <_> + 9 + + 3 9 2 3 + <_> + 0 + + 1 3 5 10 + <_> + 2 + + 3 1 2 2 + <_> + 5 + + 3 14 3 1 + <_> + 9 + + 6 7 1 1 + <_> + 3 + + 0 14 5 1 + <_> + 1 + + 2 4 3 8 + <_> + 1 + + 3 0 1 14 + <_> + 4 + + 2 4 1 2 + <_> + 8 + + 2 3 4 1 + <_> + 1 + + 1 5 6 6 + <_> + 9 + + 4 4 1 7 + <_> + 0 + + 2 10 3 3 + <_> + 4 + + 0 14 6 1 + <_> + 1 + + 3 4 2 3 + <_> + 1 + + 1 12 6 2 + <_> + 5 + + 2 3 5 3 + <_> + 1 + + 3 9 2 5 + <_> + 2 + + 4 14 2 1 + <_> + 2 + + 2 11 4 2 + <_> + 3 + + 1 6 5 1 + <_> + 7 + + 0 6 5 5 + <_> + 5 + + 0 3 4 3 + <_> + 7 + + 1 2 1 1 + <_> + 9 + + 0 5 7 1 + <_> + 8 + + 2 0 4 3 + <_> + 0 + + 1 7 3 3 + <_> + 4 + + 3 9 2 4 + <_> + 2 + + 2 7 4 4 + <_> + 2 + + 3 10 4 2 + <_> + 9 + + 2 5 2 1 + <_> + 8 + + 1 4 6 2 + <_> + 5 + + 4 5 3 1 + <_> + 7 + + 3 5 1 2 + <_> + 7 + + 0 3 7 12 + <_> + 7 + + 3 9 2 4 + <_> + 1 + + 3 12 2 2 + <_> + 3 + + 0 1 7 1 + <_> + 3 + + 1 3 5 10 + <_> + 4 + + 2 8 4 5 + <_> + 3 + + 1 13 2 1 + <_> + 4 + + 4 0 2 2 + <_> + 1 + + 1 7 6 2 + <_> + 7 + + 1 1 1 8 + <_> + 4 + + 2 3 4 4 + <_> + 5 + + 5 4 1 10 + <_> + 9 + + 2 5 2 2 + <_> + 3 + + 3 4 1 1 + <_> + 9 + + 1 2 2 1 + <_> + 1 + + 4 10 1 4 + <_> + 9 + + 2 3 3 11 + <_> + 4 + + 3 11 2 1 + <_> + 8 + + 0 5 7 3 + <_> + 5 + + 3 4 3 8 + <_> + 2 + + 5 13 2 2 + <_> + 3 + + 2 3 3 2 + <_> + 9 + + 4 3 2 4 + <_> + 1 + + 6 13 1 2 + <_> + 1 + + 4 10 2 4 + <_> + 3 + + 6 6 1 4 + <_> + 1 + + 3 4 4 9 + <_> + 2 + + 3 3 2 9 + <_> + 1 + + 6 6 1 5 + <_> + 0 + + 3 14 1 1 + <_> + 0 + + 2 6 4 6 + <_> + 2 + + 0 13 7 1 + <_> + 7 + + 3 6 2 1 + <_> + 7 + + 0 1 7 14 + <_> + 1 + + 2 4 3 1 + <_> + 1 + + 3 5 2 5 + <_> + 9 + + 1 0 6 4 + <_> + 3 + + 2 2 1 8 + <_> + 7 + + 4 14 1 1 + <_> + 4 + + 0 12 6 3 + <_> + 1 + + 0 0 1 3 + <_> + 2 + + 2 3 5 6 + <_> + 4 + + 2 7 5 2 + <_> + 9 + + 0 5 7 1 + <_> + 5 + + 4 3 3 3 + <_> + 0 + + 2 14 5 1 + <_> + 1 + + 2 5 5 6 + <_> + 1 + + 0 2 7 4 + <_> + 4 + + 2 2 3 4 + <_> + 7 + + 3 9 1 4 + <_> + 1 + + 2 12 3 3 + <_> + 3 + + 0 3 5 3 + <_> + 4 + + 1 7 6 4 + <_> + 8 + + 2 1 3 3 + <_> + 4 + + 2 14 5 1 + <_> + 8 + + 0 3 7 1 + <_> + 3 + + 1 4 1 2 + <_> + 5 + + 0 10 3 4 + <_> + 9 + + 0 6 2 3 + <_> + 0 + + 2 5 2 8 + <_> + 2 + + 3 11 1 3 + <_> + 4 + + 0 11 1 3 + <_> + 9 + + 5 1 2 2 + <_> + 0 + + 2 3 2 1 + <_> + 4 + + 3 8 2 4 + <_> + 2 + + 0 14 6 1 + <_> + 5 + + 2 5 5 10 + <_> + 7 + + 5 11 1 3 + <_> + 1 + + 1 12 5 2 + <_> + 3 + + 0 1 4 6 + <_> + 4 + + 2 12 5 3 + <_> + 1 + + 0 0 4 2 + <_> + 1 + + 4 10 1 5 + <_> + 7 + + 3 8 2 2 + <_> + 2 + + 2 10 4 3 + <_> + 9 + + 0 0 6 11 + <_> + 9 + + 1 2 2 2 + <_> + 0 + + 0 13 2 1 + <_> + 5 + + 2 11 4 2 + <_> + 3 + + 0 4 6 6 + <_> + 5 + + 3 14 4 1 + <_> + 5 + + 4 4 1 2 + <_> + 0 + + 5 8 1 2 + <_> + 1 + + 3 6 3 7 + <_> + 0 + + 3 14 2 1 + <_> + 1 + + 0 5 7 4 + <_> + 7 + + 0 1 2 14 + <_> + 9 + + 3 4 2 1 + <_> + 7 + + 1 10 4 5 + <_> + 8 + + 4 0 3 1 + <_> + 8 + + 2 4 1 2 + <_> + 9 + + 4 9 3 1 + <_> + 1 + + 5 7 2 7 + <_> + 5 + + 0 2 1 8 + <_> + 2 + + 4 10 3 3 + <_> + 4 + + 2 9 3 5 + <_> + 4 + + 0 1 2 5 + <_> + 1 + + 5 1 2 7 + <_> + 4 + + 4 1 1 5 + <_> + 1 + + 3 7 2 1 + <_> + 5 + + 0 5 7 2 + <_> + 3 + + 4 14 3 1 + <_> + 9 + + 1 0 2 14 + <_> + 4 + + 0 0 1 11 + <_> + 7 + + 0 9 7 1 + <_> + 7 + + 1 3 5 12 + <_> + 3 + + 0 9 5 4 + <_> + 8 + + 0 6 6 1 + <_> + 2 + + 0 13 5 2 + <_> + 8 + + 2 2 5 8 + <_> + 1 + + 3 11 1 1 + <_> + 9 + + 1 5 6 7 + <_> + 2 + + 1 12 3 1 + <_> + 2 + + 5 2 1 8 + <_> + 5 + + 4 4 2 10 + <_> + 1 + + 4 3 3 6 + <_> + 4 + + 3 8 2 5 + <_> + 3 + + 2 9 2 3 + <_> + 7 + + 1 8 6 3 + <_> + 1 + + 0 5 7 2 + <_> + 8 + + 0 0 5 2 + <_> + 5 + + 4 2 2 3 + <_> + 4 + + 6 2 1 1 + <_> + 1 + + 3 0 1 9 + <_> + 0 + + 3 8 4 4 + <_> + 7 + + 6 11 1 1 + <_> + 2 + + 2 1 2 3 + <_> + 8 + + 0 5 7 3 + <_> + 9 + + 3 4 2 3 + <_> + 1 + + 0 13 7 1 + <_> + 3 + + 2 4 1 3 + <_> + 7 + + 1 2 1 4 + <_> + 2 + + 4 2 3 3 + <_> + 3 + + 2 1 2 5 + <_> + 7 + + 6 0 1 3 + <_> + 7 + + 3 6 3 4 + <_> + 8 + + 4 0 2 8 + <_> + 5 + + 0 14 7 1 + <_> + 5 + + 3 11 3 2 + <_> + 4 + + 3 2 2 2 + <_> + 1 + + 1 10 6 5 + <_> + 8 + + 0 1 5 4 + <_> + 7 + + 5 5 1 3 + <_> + 1 + + 4 10 3 4 + <_> + 0 + + 6 7 1 1 + <_> + 9 + + 0 4 7 5 + <_> + 0 + + 2 3 2 2 + <_> + 3 + + 0 3 5 3 + <_> + 0 + + 0 14 7 1 + <_> + 3 + + 0 13 5 1 + <_> + 4 + + 0 0 6 7 + <_> + 8 + + 4 1 2 12 + <_> + 9 + + 3 7 1 8 + <_> + 9 + + 6 6 1 8 + <_> + 2 + + 0 10 6 2 + <_> + 1 + + 3 7 2 6 + <_> + 5 + + 3 3 2 8 + <_> + 1 + + 3 10 1 1 + <_> + 2 + + 2 1 4 14 + <_> + 4 + + 2 8 4 5 + <_> + 3 + + 1 3 3 4 + <_> + 3 + + 2 5 2 9 + <_> + 1 + + 3 1 3 2 + <_> + 9 + + 2 8 4 4 + <_> + 8 + + 0 3 6 1 + <_> + 7 + + 4 14 1 1 + <_> + 0 + + 3 2 3 11 + <_> + 0 + 1024 + + <_> + -8.4679585695266724e-01 + + 1 2 0 7.7750000000000000e+02 0 -1 1 5.8850000000000000e+02 + -2 -3 2 2.5500000000000000e+01 + + -8.4679585695266724e-01 7.5506496429443359e-01 + -6.9044047594070435e-01 6.3049119710922241e-01 + <_> + -1.6734303236007690e+00 + + 1 2 3 1.9500000000000000e+01 0 -1 4 1.5500000000000000e+01 + -2 -3 5 1.4500000000000000e+01 + + -7.5389009714126587e-01 6.4812886714935303e-01 + -2.1629486978054047e-01 -8.2663446664810181e-01 + <_> + -1.8291370868682861e+00 + + 1 2 6 1.3500000000000000e+01 0 -1 7 2.0350000000000000e+02 + -2 -3 8 3.0050000000000000e+02 + + -1.5570680797100067e-01 -8.0992084741592407e-01 + 6.8644106388092041e-01 -5.6922149658203125e-01 + <_> + -1.7377158403396606e+00 + + 1 2 9 3.6500000000000000e+01 0 -1 10 2.4500000000000000e+01 + -2 -3 11 2.8150000000000000e+02 + + -8.2347095012664795e-01 3.0225446820259094e-01 + 6.9995605945587158e-01 -1.7914050817489624e-01 + <_> + -2.2347910404205322e+00 + + 1 2 12 2.0550000000000000e+02 0 -1 13 6.7500000000000000e+01 + -2 -3 14 8.6350000000000000e+02 + + -4.9707528948783875e-01 1.7866376042366028e-01 + 7.4965566396713257e-01 5.7663144543766975e-03 + <_> + -1.8678615093231201e+00 + + 1 2 15 1.5150000000000000e+02 0 -1 16 1.0500000000000000e+01 + -2 -3 17 4.3255000000000000e+03 + + -2.6820951700210571e-01 6.4194840192794800e-01 + -6.7160737514495850e-01 6.3368387520313263e-02 + <_> + -2.0991549491882324e+00 + + 1 2 18 1.5000000000000000e+00 0 -1 19 2.9500000000000000e+01 + -2 -3 20 5.0000000000000000e-01 + + -5.0631237030029297e-01 5.5947405099868774e-01 + 7.0312672853469849e-01 -4.0578368306159973e-01 + <_> + -2.0249555110931396e+00 + + 1 2 21 5.2500000000000000e+01 0 -1 22 7.5000000000000000e+00 + -2 -3 23 4.3500000000000000e+01 + + -7.6095990836620331e-02 -7.4784129858016968e-01 + 5.0073879957199097e-01 -3.8508036732673645e-01 + <_> + -2.0100402832031250e+00 + + 1 2 24 3.7650000000000000e+02 0 -1 25 4.1500000000000000e+01 + -2 -3 26 2.5250000000000000e+02 + + -5.6506282091140747e-01 2.3158341646194458e-01 + -8.8750278949737549e-01 8.2055127620697021e-01 + <_> + -1.6451328992843628e+00 + + 1 2 27 7.5000000000000000e+00 0 -1 28 1.8500000000000000e+01 + -2 -3 29 2.2500000000000000e+01 + + -6.0027003288269043e-01 3.8312932848930359e-01 + 2.1947205066680908e-01 -5.9093552827835083e-01 + <_> + -2.0925648212432861e+00 + + 1 2 30 1.1500000000000000e+01 0 -1 31 9.5000000000000000e+00 + -2 -3 32 2.6350000000000000e+02 + + -4.6565398573875427e-01 5.0306195020675659e-01 + 4.4449210166931152e-01 -6.1473309993743896e-01 + <_> + -1.5271776914596558e+00 + + 1 2 33 5.0000000000000000e-01 0 -1 34 1.2500000000000000e+01 + -2 -3 35 3.6500000000000000e+01 + + -7.7037209272384644e-01 5.6538718938827515e-01 + -5.0570178031921387e-01 1.6205248236656189e-01 + <_> + -1.1876722574234009e+00 + + 1 2 36 3.5000000000000000e+00 0 -1 37 1.5000000000000000e+00 + -2 -3 38 2.5150000000000000e+02 + + -7.4505090713500977e-01 3.8910430669784546e-01 + -5.9720128774642944e-01 7.2264879941940308e-02 + <_> + -1.1631057262420654e+00 + + 1 2 39 2.7950000000000000e+02 0 -1 40 1.7065000000000000e+03 + -2 -3 41 1.2495000000000000e+03 + + 2.4566594511270523e-02 7.9330480098724365e-01 + 5.6873923540115356e-01 -4.0141937136650085e-01 + <_> + -8.4218001365661621e-01 + + 1 2 42 4.2525000000000000e+03 0 -1 43 4.5000000000000000e+00 + -2 -3 44 1.5175000000000000e+03 + + 3.2092568278312683e-01 -4.5945590734481812e-01 + -8.0667120218276978e-01 4.0151047706604004e-01 + <_> + -1.3475534915924072e+00 + + 1 2 45 2.3500000000000000e+01 0 -1 46 8.8500000000000000e+01 + -2 -3 47 9.2150000000000000e+02 + + 3.0066493153572083e-01 -5.0537353754043579e-01 + 3.6820709705352783e-01 -9.1408914327621460e-01 + <_> + -9.5874893665313721e-01 + + 1 2 48 5.7550000000000000e+02 0 -1 49 6.7550000000000000e+02 + -2 -3 50 5.0000000000000000e-01 + + -8.4770929813385010e-01 3.3511099219322205e-01 + 3.8880458474159241e-01 -1.9090360403060913e-01 + <_> + -8.5856813192367554e-01 + + 1 2 51 6.1500000000000000e+01 0 -1 52 1.5000000000000000e+00 + -2 -3 53 1158. + + 5.0987577438354492e-01 -3.8584578037261963e-01 + -5.0875252485275269e-01 5.5896055698394775e-01 + <_> + -6.4911109209060669e-01 + + 1 2 54 2.2050000000000000e+02 0 -1 55 2.5750000000000000e+02 + -2 -3 56 2.1450000000000000e+02 + + -6.3486647605895996e-01 2.0945706963539124e-01 + -8.4773159027099609e-01 4.1636252403259277e-01 + <_> + -4.9586555361747742e-01 + + 1 2 57 3.5000000000000000e+00 0 -1 58 2.5000000000000000e+00 + -2 -3 59 3.2500000000000000e+01 + + -7.5921803712844849e-01 4.6488901972770691e-01 + -6.8810594081878662e-01 -2.7040589600801468e-02 + <_> + -4.7253912687301636e-01 + + 1 2 60 2.5000000000000000e+00 0 -1 61 4.5000000000000000e+00 + -2 -3 62 3.2500000000000000e+01 + + -7.9894185066223145e-01 6.2211072444915771e-01 + -5.4600864648818970e-01 2.3326411843299866e-02 + <_> + -5.5614802986383438e-02 + + 1 2 63 2.4500000000000000e+01 0 -1 64 2.2500000000000000e+01 + -2 -3 65 1.5000000000000000e+00 + + -1.4692783355712891e-01 4.1692432761192322e-01 + 3.2402262091636658e-01 -8.1831818819046021e-01 + <_> + 2.4737248197197914e-02 + + 1 2 66 3.4500000000000000e+01 0 -1 67 5.0000000000000000e-01 + -2 -3 68 8.1750000000000000e+02 + + 4.9493959546089172e-01 -4.3111301958560944e-02 + 4.1624513268470764e-01 -6.5285211801528931e-01 + <_> + -3.8909688591957092e-01 + + 1 2 69 4.6500000000000000e+01 0 -1 70 1.1950000000000000e+02 + -2 -3 71 5.0000000000000000e-01 + + 3.9863130450248718e-01 -6.7247897386550903e-01 + 5.4888677597045898e-01 -1.2822744250297546e-01 + <_> + -7.9226568341255188e-02 + + 1 2 72 1.1500000000000000e+01 0 -1 73 2.3550000000000000e+02 + -2 -3 74 1.2550000000000000e+02 + + 9.7892753779888153e-02 -7.6417064666748047e-01 + -5.4467469453811646e-01 3.0987030267715454e-01 + <_> + -1.9954596646130085e-03 + + 1 2 75 1.5000000000000000e+00 0 -1 76 1.5000000000000000e+00 + -2 -3 77 1.0500000000000000e+01 + + -4.4582867622375488e-01 4.6034806966781616e-01 + 9.2526301741600037e-02 -5.5669903755187988e-01 + <_> + -1.2115581892430782e-02 + + 1 2 78 1.4500000000000000e+01 0 -1 79 2.5000000000000000e+00 + -2 -3 80 1284. + + -1.0120121762156487e-02 -5.9989041090011597e-01 + -1.7805591225624084e-01 6.3028931617736816e-01 + <_> + 3.5972565412521362e-01 + + 1 2 81 1.9650000000000000e+02 0 -1 82 9.5000000000000000e+00 + -2 -3 83 1.0625000000000000e+03 + + -2.0688037574291229e-01 3.7184122204780579e-01 + 7.2959977388381958e-01 -6.4402073621749878e-01 + <_> + 3.0813610553741455e-01 + + 1 2 84 1.1050000000000000e+02 0 -1 85 4.5000000000000000e+00 + -2 -3 86 6.6500000000000000e+01 + + -8.8497090339660645e-01 3.9636072516441345e-01 + 6.6349333524703979e-01 -5.1589541137218475e-02 + <_> + 2.5005090236663818e-01 + + 1 2 87 2.0550000000000000e+02 0 -1 88 3.5000000000000000e+00 + -2 -3 89 8.5000000000000000e+00 + + 3.3133915066719055e-01 -3.9812210202217102e-01 + -6.8591558933258057e-01 4.8487389087677002e-01 + <_> + 5.8778470754623413e-01 + + 1 2 90 1.3950000000000000e+02 0 -1 91 1.9500000000000000e+01 + -2 -3 92 3.5000000000000000e+00 + + -6.3595020771026611e-01 5.8211249113082886e-01 + 4.3087210506200790e-02 -5.4251241683959961e-01 + <_> + 8.2915985584259033e-01 + + 1 2 93 4.5000000000000000e+00 0 -1 94 2929. -2 -3 95 + 3.9500000000000000e+01 + + 3.6084750294685364e-01 -5.3846013545989990e-01 + 3.9264413714408875e-01 -2.5116056203842163e-01 + <_> + 9.1550654172897339e-01 + + 1 2 96 1.2500000000000000e+01 0 -1 97 4.4500000000000000e+01 + -2 -3 98 7.5500000000000000e+01 + + -3.1323480606079102e-01 3.6048817634582520e-01 + 6.6347086429595947e-01 -6.9799762964248657e-01 + <_> + 1.0855576992034912e+00 + + 1 2 99 2.7500000000000000e+01 0 -1 100 + 8.5000000000000000e+00 -2 -3 101 5.5000000000000000e+00 + + -3.5093611478805542e-01 3.0252355337142944e-01 + 1.6355676949024200e-01 -8.4324830770492554e-01 + <_> + 1.0639545917510986e+00 + + 1 2 102 1.5000000000000000e+00 0 -1 103 + 3.7500000000000000e+01 -2 -3 104 5.1500000000000000e+01 + + -3.3908194303512573e-01 4.2347168922424316e-01 + -4.4102880358695984e-01 4.3833139538764954e-01 + <_> + 9.0562820434570312e-01 + + 1 2 105 4.5000000000000000e+00 0 -1 106 + 9.5000000000000000e+00 -2 -3 107 5.5000000000000000e+00 + + -5.8544105291366577e-01 3.8719829916954041e-01 + 1.4575521647930145e-01 -4.6634963154792786e-01 + <_> + 1.0761597156524658e+00 + + 1 2 108 1.4500000000000000e+01 0 -1 109 + 1.2545000000000000e+03 -2 -3 110 1.0850000000000000e+02 + + 2.5986677408218384e-01 -4.0740066766738892e-01 + 4.9753630161285400e-01 -6.2639516592025757e-01 + <_> + 1.5152643918991089e+00 + + 1 2 111 7.8250000000000000e+02 0 -1 112 + 1.2265000000000000e+03 -2 -3 113 2.1500000000000000e+01 + + -5.9889906644821167e-01 5.2061015367507935e-01 + 4.3910467624664307e-01 -2.6094654202461243e-01 + <_> + 1.4136078357696533e+00 + + 1 2 114 1.0500000000000000e+01 0 -1 115 1696. -2 -3 116 + 5.0000000000000000e-01 + + 1. -9.7255414724349976e-01 3.5954985022544861e-01 + -1.7254945635795593e-01 + <_> + 1.4225575923919678e+00 + + 1 2 117 3.8500000000000000e+01 0 -1 118 + 1.0250000000000000e+02 -2 -3 119 8.5000000000000000e+00 + + -2.4716213345527649e-01 3.7233117222785950e-01 + 4.1007906198501587e-01 -7.6787543296813965e-01 + <_> + 1.7332764863967896e+00 + + 1 2 120 6.5000000000000000e+00 0 -1 121 + 6.5000000000000000e+00 -2 -3 122 5.1500000000000000e+01 + + -8.0807107686996460e-01 3.1071880459785461e-01 + -7.6486444473266602e-01 -4.4724285602569580e-02 + <_> + 1.8922506570816040e+00 + + 1 2 123 5.0000000000000000e-01 0 -1 124 + 6.5000000000000000e+00 -2 -3 125 2.5175000000000000e+03 + + -4.5441693067550659e-01 5.4230731725692749e-01 + -3.1970790028572083e-01 7.5582736730575562e-01 + <_> + 1.6188565492630005e+00 + + 1 2 126 8.2450000000000000e+02 0 -1 127 + 1.5500000000000000e+01 -2 -3 128 1.2500000000000000e+01 + + -2.7339416742324829e-01 3.4306022524833679e-01 + 1.7286354303359985e-01 -6.8018329143524170e-01 + <_> + 1.6078552007675171e+00 + + 1 2 129 4.2050000000000000e+02 0 -1 130 263. -2 -3 131 + 8.4450000000000000e+02 + + 5.0138735771179199e-01 -4.4576519727706909e-01 + 2.3392482101917267e-01 -3.9459699392318726e-01 + <_> + 1.8623019456863403e+00 + + 1 2 132 2.0850000000000000e+02 0 -1 133 + 5.5000000000000000e+00 -2 -3 134 4.5000000000000000e+00 + + 4.0980271995067596e-02 -6.1965447664260864e-01 + -7.8912788629531860e-01 5.9828245639801025e-01 + <_> + 1.7021096944808960e+00 + + 1 2 135 4.2500000000000000e+01 0 -1 136 + 6.5000000000000000e+00 -2 -3 137 2.2500000000000000e+01 + + 4.1077250242233276e-01 -5.9424054622650146e-01 + 4.9294531345367432e-01 -1.6019217669963837e-01 + <_> + 1.9233746528625488e+00 + + 1 2 138 1.5000000000000000e+00 0 -1 139 + 1.6500000000000000e+01 -2 -3 140 8.7500000000000000e+01 + + -6.7251849174499512e-01 9.7932207584381104e-01 + 2.2126492857933044e-01 -6.2606680393218994e-01 + <_> + 2.1816830635070801e+00 + + 1 2 141 6.8500000000000000e+01 0 -1 142 + 9.6500000000000000e+01 -2 -3 143 4.3350000000000000e+02 + + -3.1670400500297546e-01 2.5830829143524170e-01 + -8.8838213682174683e-01 4.1476368904113770e-01 + <_> + 2.2655973434448242e+00 + + 1 2 144 1.6500000000000000e+01 0 -1 145 + 5.5000000000000000e+00 -2 -3 146 3.0500000000000000e+01 + + 5.9501928091049194e-01 -3.1914636492729187e-01 + -3.8668751716613770e-01 3.1921181082725525e-01 + <_> + 2.6427345275878906e+00 + + 1 2 147 6.5000000000000000e+00 0 -1 148 + 2.4500000000000000e+01 -2 -3 149 1.1500000000000000e+01 + + -4.5482164621353149e-01 4.6515238285064697e-01 + -5.1726001501083374e-01 2.0654375851154327e-01 + <_> + 1.9806412458419800e+00 + + 1 2 150 2.8850000000000000e+02 0 -1 151 + 5.5000000000000000e+00 -2 -3 152 1.1515000000000000e+03 + + -6.6209328174591064e-01 1.8325349688529968e-01 + 4.9089592695236206e-01 -8.4841215610504150e-01 + <_> + 2.4156589508056641e+00 + + 1 2 153 5.0000000000000000e-01 0 -1 154 2811. -2 -3 155 + 5.0000000000000000e-01 + + 4.3501755595207214e-01 -6.5484809875488281e-01 + 4.1686266660690308e-01 -4.1646206378936768e-01 + <_> + 2.7843391895294189e+00 + + 1 2 156 1.1350000000000000e+02 0 -1 157 + 3.3450000000000000e+02 -2 -3 158 3.5000000000000000e+00 + + 3.6868026852607727e-01 -6.1238104104995728e-01 + 6.8396532535552979e-01 -1.2954165227711201e-02 + <_> + 2.8158543109893799e+00 + + 1 2 159 4.2550000000000000e+02 0 -1 160 + 5.6050000000000000e+02 -2 -3 161 3.8500000000000000e+01 + + -5.9484893083572388e-01 3.1515140086412430e-02 + -7.0635133981704712e-01 6.2144660949707031e-01 + <_> + 3.0259079933166504e+00 + + 1 2 162 7.5000000000000000e+00 0 -1 163 + 4.5000000000000000e+00 -2 -3 164 1.6375000000000000e+03 + + -7.1446412801742554e-01 3.4102836251258850e-01 + 3.5541319847106934e-01 -4.5499989390373230e-01 + <_> + 3.3236474990844727e+00 + + 1 2 165 1.5000000000000000e+00 0 -1 166 + 1.0500000000000000e+01 -2 -3 167 5.0000000000000000e-01 + + -7.0691192150115967e-01 5.4418134689331055e-01 + 3.7381768226623535e-01 -3.6192026734352112e-01 + <_> + 3.2000217437744141e+00 + + 1 2 168 1.0500000000000000e+01 0 -1 169 + 6.5000000000000000e+00 -2 -3 170 3.5000000000000000e+00 + + -1.1653541773557663e-01 -8.1098204851150513e-01 + 3.6642596125602722e-01 -2.8248944878578186e-01 + <_> + 3.2462809085845947e+00 + + 1 2 171 1.9850000000000000e+02 0 -1 172 + 2.9500000000000000e+01 -2 -3 173 8.1500000000000000e+01 + + -3.9297759532928467e-01 5.5565875768661499e-01 + 5.2605623006820679e-01 -3.3815068006515503e-01 + <_> + 3.4681446552276611e+00 + + 1 2 174 5.7550000000000000e+02 0 -1 175 338. -2 -3 176 + 1.1515000000000000e+03 + + -7.6464962959289551e-01 9.0472358465194702e-01 + 6.2902992963790894e-01 -3.9204329252243042e-02 + <_> + 3.6334233283996582e+00 + + 1 2 177 4167. 0 -1 178 6.5000000000000000e+00 -2 -3 179 + 3.5000000000000000e+00 + + -9.1638332605361938e-01 1.6527870297431946e-01 + 4.8254090547561646e-01 -8.9626789093017578e-01 + <_> + 3.9205143451690674e+00 + + 1 2 180 6.5000000000000000e+00 0 -1 181 + 1.2500000000000000e+01 -2 -3 182 8.5000000000000000e+00 + + 6.7690986394882202e-01 -2.3904214799404144e-01 + -4.0556749701499939e-01 2.2106994688510895e-01 + <_> + 3.8434190750122070e+00 + + 1 2 183 5.0000000000000000e-01 0 -1 184 + 1.3500000000000000e+01 -2 -3 185 2.6500000000000000e+01 + + -3.2586407661437988e-01 4.4005537033081055e-01 + -6.4374852180480957e-01 1.0862501710653305e-01 + <_> + 3.7773578166961670e+00 + + 1 2 186 1.6500000000000000e+01 0 -1 187 + 9.5000000000000000e+00 -2 -3 188 8.5000000000000000e+00 + + -9.3096941709518433e-01 2.3926372826099396e-01 + 5.1413863897323608e-01 -5.5257624387741089e-01 + <_> + 4.1896114349365234e+00 + + 1 2 189 1.2500000000000000e+01 0 -1 190 + 7.5000000000000000e+00 -2 -3 191 36. + + -6.8173252046108246e-02 5.3156542778015137e-01 + -6.3870549201965332e-01 5.8901703357696533e-01 + <_> + 4.1023836135864258e+00 + + 1 2 192 6.7500000000000000e+01 0 -1 193 + 8.0500000000000000e+01 -2 -3 194 3.9500000000000000e+01 + + 1.7302609980106354e-01 -5.5641782283782959e-01 + -8.8721150159835815e-01 1. + <_> + 4.1807246208190918e+00 + + 1 2 195 1.5235000000000000e+03 0 -1 196 + 2.6952500000000000e+04 -2 -3 197 1.8235000000000000e+03 + + -3.0445727705955505e-01 7.7833265066146851e-01 + 8.7232065200805664e-01 -2.4321475625038147e-01 + <_> + 4.2723703384399414e+00 + + 1 2 198 6.5000000000000000e+00 0 -1 199 + 7.5000000000000000e+00 -2 -3 200 3.4175000000000000e+03 + + 1.3138349354267120e-01 -5.8236575126647949e-01 + 2.2224109619855881e-02 6.9834595918655396e-01 + <_> + 4.6446409225463867e+00 + + 1 2 201 2.1500000000000000e+01 0 -1 202 + 4.5000000000000000e+00 -2 -3 203 7.5000000000000000e+00 + + 1.9490295648574829e-01 -7.6766520738601685e-01 + 3.7227055430412292e-01 -2.2965273261070251e-01 + <_> + 4.2965531349182129e+00 + + 1 2 204 3.5000000000000000e+00 0 -1 205 + 1.1500000000000000e+01 -2 -3 206 1.5000000000000000e+00 + + -2.8419467806816101e-01 4.3421781063079834e-01 + -5.4377484321594238e-01 1.9981886446475983e-01 + <_> + 4.6640934944152832e+00 + + 1 2 207 705. 0 -1 208 1.7500000000000000e+01 -2 -3 209 + 5.0000000000000000e-01 + + 2.7177429199218750e-01 -8.8838618993759155e-01 + 3.6754038929939270e-01 -1.2962521612644196e-01 + <_> + 4.5903968811035156e+00 + + 1 2 210 3.4500000000000000e+01 0 -1 211 + 2.2850000000000000e+02 -2 -3 212 4.5000000000000000e+00 + + 7.0602458715438843e-01 -7.7238667011260986e-01 + 4.3168050050735474e-01 -1.4236643910408020e-01 + <_> + 4.4601187705993652e+00 + + 1 2 213 1.8500000000000000e+01 0 -1 214 + 5.0000000000000000e-01 -2 -3 215 1.6450000000000000e+02 + + 7.2294287383556366e-02 -4.4637727737426758e-01 + 5.0045186281204224e-01 -8.8895571231842041e-01 + <_> + 4.6810216903686523e+00 + + 1 2 216 1.5000000000000000e+00 0 -1 217 + 3.5000000000000000e+00 -2 -3 218 2.2500000000000000e+01 + + 7.5774848461151123e-01 -8.5371148586273193e-01 + -3.8080200552940369e-01 2.2090284526348114e-01 + <_> + 4.5454678535461426e+00 + + 1 2 219 5.0000000000000000e-01 0 -1 220 + 2.4500000000000000e+01 -2 -3 221 1.3950000000000000e+02 + + -1.9623221457004547e-01 9.1209959983825684e-01 + 2.2579464316368103e-01 -3.2021987438201904e-01 + <_> + 4.7205095291137695e+00 + + 1 2 222 6.8250000000000000e+02 0 -1 223 + 5.8750000000000000e+02 -2 -3 224 4.9250000000000000e+02 + + -6.1928713321685791e-01 4.4073671102523804e-01 + 5.2129870653152466e-01 -9.0712592005729675e-02 + <_> + 5.0539321899414062e+00 + + 1 2 225 1.5500000000000000e+01 0 -1 226 + 6.3500000000000000e+01 -2 -3 227 3.5000000000000000e+00 + + 3.9318233728408813e-01 -3.8358560204505920e-01 + 4.2106309533119202e-01 -5.5091488361358643e-01 + <_> + 5.2054772377014160e+00 + + 1 2 228 3.1500000000000000e+01 0 -1 229 + 2.3500000000000000e+01 -2 -3 230 3.3750000000000000e+02 + + -6.1581993103027344e-01 7.1099334955215454e-01 + 2.9412022233009338e-01 -7.1934843063354492e-01 + <_> + 5.1629271507263184e+00 + + 1 2 231 3.2950000000000000e+02 0 -1 232 + 5.0000000000000000e-01 -2 -3 233 1864. + + 2.0024216175079346e-01 -3.3125820755958557e-01 + 9.7632443904876709e-01 -8.2965487241744995e-01 + <_> + 5.4650130271911621e+00 + + 1 2 234 4.0550000000000000e+02 0 -1 235 + 2.7750000000000000e+02 -2 -3 236 5.7155000000000000e+03 + + 2.2284466028213501e-01 -4.8526307940483093e-01 + 8.1116855144500732e-01 -1.5218812972307205e-02 + <_> + 5.4984669685363770e+00 + + 1 2 237 4.5000000000000000e+00 0 -1 238 + 1.7500000000000000e+01 -2 -3 239 2.9500000000000000e+01 + + -6.3221347332000732e-01 3.8014096021652222e-01 + -6.2983202934265137e-01 1.1483613401651382e-01 + <_> + 5.4328503608703613e+00 + + 1 2 240 2.2500000000000000e+01 0 -1 241 + 3.2750000000000000e+02 -2 -3 242 5.5250000000000000e+02 + + 2.7665451169013977e-01 -4.1230320930480957e-01 + 5.8497339487075806e-01 -9.2561680078506470e-01 + <_> + 5.2271656990051270e+00 + + 1 2 243 2.5000000000000000e+00 0 -1 244 + 1.5000000000000000e+00 -2 -3 245 4.1500000000000000e+01 + + -6.2440222501754761e-01 3.4950828552246094e-01 + -4.4587394595146179e-01 3.7627801299095154e-01 + <_> + 5.7503991127014160e+00 + + 1 2 246 2.5500000000000000e+01 0 -1 247 + 1.7500000000000000e+01 -2 -3 248 1742. + + 1.7403741180896759e-01 -4.8115825653076172e-01 + -8.1405687332153320e-01 5.2323335409164429e-01 + <_> + 5.9725828170776367e+00 + + 1 2 249 2.5000000000000000e+00 0 -1 250 + 1.8750000000000000e+02 -2 -3 251 3.0750000000000000e+02 + + 5.0755202770233154e-01 -9.1562610864639282e-01 + 2.2218362987041473e-01 -5.9081828594207764e-01 + <_> + 5.9053583145141602e+00 + + 1 2 252 4.4500000000000000e+01 0 -1 253 + 7.5000000000000000e+00 -2 -3 254 2.3500000000000000e+01 + + 2.7661845088005066e-01 -7.2863763570785522e-01 + 2.9604527354240417e-01 -3.9353659749031067e-01 + <_> + 6.2247257232666016e+00 + + 1 2 255 2.7915000000000000e+03 0 -1 256 + 5.0000000000000000e-01 -2 -3 257 2.7750000000000000e+02 + + 5.7657641172409058e-01 -5.8752876520156860e-01 + 7.3920065164566040e-01 -5.6199613958597183e-02 + <_> + 6.3211832046508789e+00 + + 1 2 258 1.5000000000000000e+00 0 -1 259 + 1.5950000000000000e+02 -2 -3 260 9.5000000000000000e+00 + + 3.8729599118232727e-01 -8.2186138629913330e-01 + -7.5912064313888550e-01 -9.1310448944568634e-02 + <_> + 6.1939978599548340e+00 + + 1 2 261 5.0000000000000000e-01 0 -1 262 + 1.1500000000000000e+01 -2 -3 263 2.5000000000000000e+00 + + -6.8085348606109619e-01 3.7691861391067505e-01 + 3.6999684572219849e-01 -4.1802382469177246e-01 + <_> + 6.5674057006835938e+00 + + 1 2 264 4.6500000000000000e+01 0 -1 265 + 1.6500000000000000e+01 -2 -3 266 2.5500000000000000e+01 + + -2.4361716583371162e-02 -7.4328392744064331e-01 + 3.7340793013572693e-01 -3.1576988101005554e-01 + <_> + 6.4908089637756348e+00 + + 1 2 267 6.5000000000000000e+00 0 -1 268 + 1.5000000000000000e+00 -2 -3 269 5.0000000000000000e-01 + + -9.5202457904815674e-01 7.6004970073699951e-01 + 4.0044522285461426e-01 -1.8293106555938721e-01 + <_> + 6.7305116653442383e+00 + + 1 2 270 1.3450000000000000e+02 0 -1 271 69. -2 -3 272 + 2.5500000000000000e+01 + + -3.7816595286130905e-02 -9.0281504392623901e-01 + -5.4295367002487183e-01 2.3970291018486023e-01 + <_> + 6.8999171257019043e+00 + + 1 2 273 2.5000000000000000e+00 0 -1 274 + 2.5000000000000000e+00 -2 -3 275 1.5000000000000000e+00 + + -5.0667393207550049e-01 3.6585667729377747e-01 + 3.1221818923950195e-01 -4.8534518480300903e-01 + <_> + 7.0018959045410156e+00 + + 1 2 276 3.5000000000000000e+00 0 -1 277 + 3.5000000000000000e+00 -2 -3 278 266. + + -3.6587709188461304e-01 6.2320345640182495e-01 + -3.9827787876129150e-01 2.4151444435119629e-01 + <_> + 7.1498341560363770e+00 + + 1 2 279 6.5000000000000000e+00 0 -1 280 + 3.7500000000000000e+01 -2 -3 281 3.3550000000000000e+02 + + 5.1520365476608276e-01 -6.4510118961334229e-01 + -4.8505461215972900e-01 1.4793802797794342e-01 + <_> + 7.0538568496704102e+00 + + 1 2 282 1540. 0 -1 283 2.2500000000000000e+01 -2 -3 284 + 5.0500000000000000e+01 + + -2.7819830179214478e-01 3.7289941310882568e-01 + -5.9334021806716919e-01 5.5907440185546875e-01 + <_> + 7.3145952224731445e+00 + + 1 2 285 5.0000000000000000e-01 0 -1 286 + 5.0500000000000000e+01 -2 -3 287 5.0000000000000000e-01 + + -6.9114875793457031e-01 4.3989965319633484e-01 + 2.9516109824180603e-01 -5.3384852409362793e-01 + <_> + 7.2128500938415527e+00 + + 1 2 288 7.5000000000000000e+00 0 -1 289 + 8.5000000000000000e+00 -2 -3 290 8.7500000000000000e+01 + + -5.5619347095489502e-01 5.4719102382659912e-01 + 3.2581725716590881e-01 -6.7037367820739746e-01 + <_> + 7.0432367324829102e+00 + + 1 2 291 2.5000000000000000e+00 0 -1 292 + 3.5000000000000000e+00 -2 -3 293 1.6805000000000000e+03 + + -1.8180048465728760e-01 4.9322417378425598e-01 + 1.2089827656745911e-01 -5.3679817914962769e-01 + <_> + 7.1085200309753418e+00 + + 1 2 294 8.0250000000000000e+02 0 -1 295 + 3.5000000000000000e+00 -2 -3 296 1.5465000000000000e+03 + + 4.4113153219223022e-01 -4.7889050841331482e-01 + 4.8183086514472961e-01 -2.7461019158363342e-01 + <_> + 7.4934172630310059e+00 + + 1 2 297 5.5000000000000000e+00 0 -1 298 + 9.5000000000000000e+00 -2 -3 299 5.0000000000000000e-01 + + -7.8466171026229858e-01 3.8489729166030884e-01 + 1.2428891658782959e-01 -5.3000146150588989e-01 + <_> + 7.7679367065429688e+00 + + 1 2 300 4.5000000000000000e+00 0 -1 301 + 3.8500000000000000e+01 -2 -3 302 1.0500000000000000e+01 + + -5.8519446849822998e-01 1.3908083736896515e-01 + 3.4237712621688843e-01 -5.5784845352172852e-01 + <_> + 8.2031955718994141e+00 + + 1 2 303 1.0500000000000000e+01 0 -1 304 + 1.5000000000000000e+00 -2 -3 305 1.1500000000000000e+01 + + -3.8500145077705383e-01 4.3525907397270203e-01 + -7.3580604791641235e-01 -1.5477402135729790e-02 + <_> + 7.8415699005126953e+00 + + 1 2 306 1.1500000000000000e+01 0 -1 307 + 1.9950000000000000e+02 -2 -3 308 2.1050000000000000e+02 + + 3.0834931135177612e-01 -5.2214068174362183e-01 + -6.1229497194290161e-01 1.6261228919029236e-01 + <_> + 8.1340169906616211e+00 + + 1 2 309 4.4500000000000000e+01 0 -1 310 + 5.0000000000000000e-01 -2 -3 311 2.7750000000000000e+02 + + 3.8989096879959106e-01 -4.0270605683326721e-01 + -3.7438669800758362e-01 4.9117839336395264e-01 + <_> + 8.0494565963745117e+00 + + 1 2 312 2.9215000000000000e+03 0 -1 313 5981. -2 -3 314 + 1.4500000000000000e+01 + + -8.4560506045818329e-02 5.6669616699218750e-01 + -6.5312331914901733e-01 1.4199882745742798e-01 + <_> + 8.1713457107543945e+00 + + 1 2 315 8.1500000000000000e+01 0 -1 316 66. -2 -3 317 371. + + 4.5325097441673279e-01 -3.0569469928741455e-01 + 5.9206598997116089e-01 -6.7238986492156982e-01 + <_> + 8.2347335815429688e+00 + + 1 2 318 4.1450000000000000e+02 0 -1 319 + 5.0000000000000000e-01 -2 -3 320 410. + + 3.8724437355995178e-01 -3.1869423389434814e-01 + 8.7538170814514160e-01 -9.7314991056919098e-02 + <_> + 8.5628070831298828e+00 + + 1 2 321 1.0500000000000000e+01 0 -1 322 + 5.0000000000000000e-01 -2 -3 323 2.5000000000000000e+00 + + 7.2377610206604004e-01 -8.4155076742172241e-01 + 3.2807359099388123e-01 -2.0454038679599762e-01 + <_> + 8.5264968872070312e+00 + + 1 2 324 9.9150000000000000e+02 0 -1 325 + 7.0350000000000000e+02 -2 -3 326 6. + + 1.8747280538082123e-01 -3.3632183074951172e-01 + 8.6560744047164917e-01 -9.4016164541244507e-01 + <_> + 8.5532627105712891e+00 + + 1 2 327 1.1500000000000000e+01 0 -1 328 + 2.7450000000000000e+02 -2 -3 329 5.0000000000000000e-01 + + 8.5004931688308716e-01 -8.5131084918975830e-01 + 4.0861058235168457e-01 -1.2481645494699478e-01 + <_> + 8.7125473022460938e+00 + + 1 2 330 4.9350000000000000e+02 0 -1 331 + 1.0500000000000000e+01 -2 -3 332 488. + + 3.3095937967300415e-01 -9.6550559997558594e-01 + 1.5928384661674500e-01 -7.0109528303146362e-01 + <_> + 8.5748119354248047e+00 + + 1 2 333 5.8750000000000000e+02 0 -1 334 + 5.3965000000000000e+03 -2 -3 335 1.9550000000000000e+02 + + -5.2717298269271851e-01 7.5915068387985229e-01 + 6.2651741504669189e-01 -7.6558768749237061e-02 + <_> + 8.5311050415039062e+00 + + 1 2 336 3.5000000000000000e+00 0 -1 337 + 1.8500000000000000e+01 -2 -3 338 1.1500000000000000e+01 + + -5.9637790918350220e-01 6.7646257579326630e-02 + 6.4769101142883301e-01 -3.3726450055837631e-02 + <_> + 9.0640134811401367e+00 + + 1 2 339 1.5000000000000000e+00 0 -1 340 + 2.5000000000000000e+00 -2 -3 341 3.4500000000000000e+01 + + -6.8097436428070068e-01 6.0266649723052979e-01 + -3.0453455448150635e-01 4.0144833922386169e-01 + <_> + 8.9831085205078125e+00 + + 1 2 342 2.5000000000000000e+00 0 -1 343 + 2.1750000000000000e+02 -2 -3 344 3.1850000000000000e+02 + + 9.3521779775619507e-01 -8.8511615991592407e-01 + -8.0904886126518250e-02 4.7593075037002563e-01 + <_> + 9.3769168853759766e+00 + + 1 2 345 1.8345000000000000e+03 0 -1 346 7548. -2 -3 347 + 2.5000000000000000e+00 + + -9.6914649009704590e-01 8.2535630464553833e-01 + 9.6199281513690948e-02 -4.2918723821640015e-01 + <_> + 9.3018980026245117e+00 + + 1 2 348 3.4500000000000000e+01 0 -1 349 + 5.0000000000000000e-01 -2 -3 350 4.5000000000000000e+00 + + 7.7495819330215454e-01 -7.7019518613815308e-01 + -6.7532777786254883e-01 2.1935020387172699e-01 + <_> + 9.5473661422729492e+00 + + 1 2 351 3.5000000000000000e+00 0 -1 352 + 3.8150000000000000e+02 -2 -3 353 2.5000000000000000e+00 + + 2.4546769261360168e-01 -9.4206953048706055e-01 + 5.2967166900634766e-01 -5.7282263040542603e-01 + <_> + 9.3910045623779297e+00 + + 1 2 354 4.2500000000000000e+01 0 -1 355 + 2.5000000000000000e+00 -2 -3 356 2.5000000000000000e+00 + + 4.9605733156204224e-01 -8.9919465780258179e-01 + 4.6279174089431763e-01 -1.5636166930198669e-01 + <_> + 9.2007036209106445e+00 + + 1 2 357 3.0750000000000000e+02 0 -1 358 + 5.0000000000000000e-01 -2 -3 359 1.7500000000000000e+01 + + 9.5931455492973328e-02 -5.2677857875823975e-01 + -6.8146902322769165e-01 4.2670670151710510e-01 + <_> + 9.4172534942626953e+00 + + 1 2 360 436. 0 -1 361 1.0500000000000000e+01 -2 -3 362 + 1.4150000000000000e+02 + + -4.8916128277778625e-01 2.1654944121837616e-01 + -9.5991367101669312e-01 2.0731329917907715e-02 + <_> + 9.3878002166748047e+00 + + 1 2 363 2.1500000000000000e+01 0 -1 364 + 5.0000000000000000e-01 -2 -3 365 7.5000000000000000e+00 + + 6.1134243011474609e-01 -1.5622694790363312e-01 + -2.9453342780470848e-02 -6.6399675607681274e-01 + <_> + 9.3314304351806641e+00 + + 1 2 366 5.6500000000000000e+01 0 -1 367 + 2.3500000000000000e+01 -2 -3 368 4.5000000000000000e+00 + + -7.5016134977340698e-01 6.0379421710968018e-01 + 5.0015795230865479e-01 -5.6369733065366745e-02 + <_> + 9.8574962615966797e+00 + + 1 2 369 3.5000000000000000e+00 0 -1 370 2013. -2 -3 371 + 1.9500000000000000e+01 + + 8.2091175019741058e-02 -6.4141482114791870e-01 + -1.7478708922863007e-01 5.2606624364852905e-01 + <_> + 1.0064584732055664e+01 + + 1 2 372 2.0650000000000000e+02 0 -1 373 + 1.7500000000000000e+01 -2 -3 374 1.0450000000000000e+02 + + -1.0901508852839470e-02 -6.5456998348236084e-01 + 6.3896632194519043e-01 -1.6473773121833801e-01 + <_> + 1.0252257347106934e+01 + + 1 2 375 5.5000000000000000e+00 0 -1 376 + 3.4500000000000000e+01 -2 -3 377 5.5000000000000000e+00 + + 3.2374709844589233e-01 -5.0062644481658936e-01 + -7.0661611855030060e-02 -7.5508368015289307e-01 + <_> + 1.0398225784301758e+01 + + 1 2 378 2.5000000000000000e+00 0 -1 379 + 5.2500000000000000e+01 -2 -3 380 1.8785000000000000e+03 + + -9.0781456232070923e-01 1. -6.3530296087265015e-01 + 1.4596807956695557e-01 + <_> + 1.0281527519226074e+01 + + 1 2 381 4.8500000000000000e+01 0 -1 382 + 1.2500000000000000e+01 -2 -3 383 2.7950000000000000e+02 + + 1.5367124974727631e-01 -8.4021937847137451e-01 + 4.6640846133232117e-01 -1.1669804900884628e-01 + <_> + 1.0402153968811035e+01 + + 1 2 384 6.5750000000000000e+02 0 -1 385 + 2.5000000000000000e+00 -2 -3 386 1.2991500000000000e+04 + + 1.8093550205230713e-01 -3.1117281317710876e-01 + 8.3136463165283203e-01 -9.4209736585617065e-01 + <_> + 1.0749721527099609e+01 + + 1 2 387 1.5500000000000000e+01 0 -1 388 3147. -2 -3 389 + 5.0000000000000000e-01 + + 5.8778691291809082e-01 -8.4557241201400757e-01 + 3.5276123881340027e-01 -1.5734243392944336e-01 + <_> + 1.0613196372985840e+01 + + 1 2 390 2.9405000000000000e+03 0 -1 391 + 5.0000000000000000e-01 -2 -3 392 4.5500000000000000e+01 + + 3.9040172100067139e-01 -1.3652552664279938e-01 + -9.2412209510803223e-01 -8.2783259451389313e-02 + <_> + 1.0694108009338379e+01 + + 1 2 393 5.0500000000000000e+01 0 -1 394 + 5.0000000000000000e-01 -2 -3 395 4.5000000000000000e+00 + + 4.7963955998420715e-01 -7.4252939224243164e-01 + -6.8665945529937744e-01 1.9869653880596161e-01 + <_> + 1.0847300529479980e+01 + + 1 2 396 1.4500000000000000e+01 0 -1 397 + 5.5000000000000000e+00 -2 -3 398 1.5000000000000000e+00 + + -6.5649849176406860e-01 3.1507906317710876e-01 + 5.9824740886688232e-01 -4.3184515833854675e-01 + <_> + 1.0666165351867676e+01 + + 1 2 399 2.5000000000000000e+00 0 -1 400 + 4.5000000000000000e+00 -2 -3 401 5.0000000000000000e-01 + + -3.0361318588256836e-01 4.3227225542068481e-01 + 3.5962799191474915e-01 -4.3973237276077271e-01 + <_> + 1.0870504379272461e+01 + + 1 2 402 2.6500000000000000e+01 0 -1 403 + 1.5000000000000000e+00 -2 -3 404 8.4500000000000000e+01 + + 1.6933162510395050e-01 -5.0010979175567627e-01 + -3.3642402291297913e-01 4.9337503314018250e-01 + <_> + 1.0975853919982910e+01 + + 1 2 405 2.5000000000000000e+00 0 -1 406 + 1.4795000000000000e+03 -2 -3 407 1.5000000000000000e+00 + + 5.9212744235992432e-02 -6.0414147377014160e-01 + 5.3754031658172607e-01 -1.4943325519561768e-01 + <_> + 1.1088579177856445e+01 + + 1 2 408 1.9500000000000000e+01 0 -1 409 + 8.0500000000000000e+01 -2 -3 410 2.5000000000000000e+00 + + -5.4455469362437725e-03 7.1131867170333862e-01 + 1.2728694081306458e-01 -5.3219115734100342e-01 + <_> + 1.1411317825317383e+01 + + 1 2 411 6.5000000000000000e+00 0 -1 412 + 5.0000000000000000e-01 -2 -3 413 5.0000000000000000e-01 + + -9.8449540138244629e-01 7.5238209962844849e-01 + 3.2273903489112854e-01 -2.0153416693210602e-01 + <_> + 1.1409852027893066e+01 + + 1 2 414 3.2650000000000000e+02 0 -1 415 + 4.5000000000000000e+00 -2 -3 416 1.0500000000000000e+01 + + 1.5437091886997223e-01 -3.4433943033218384e-01 + 8.3089745044708252e-01 -8.7578713893890381e-01 + <_> + 1.1487524032592773e+01 + + 1 2 417 9.4500000000000000e+01 0 -1 418 + 5.3150000000000000e+02 -2 -3 419 1.5000000000000000e+00 + + 7.5558461248874664e-02 -7.0222413539886475e-01 + 4.5731905102729797e-01 -1.0453109443187714e-01 + <_> + 1.1415844917297363e+01 + + 1 2 420 2.0350000000000000e+02 0 -1 421 + 5.1500000000000000e+01 -2 -3 422 1.4350000000000000e+02 + + -8.8595420122146606e-02 -8.2399624586105347e-01 + 7.0543432235717773e-01 8.3339767297729850e-04 + <_> + 1.1137701034545898e+01 + + 1 2 423 1.1500000000000000e+01 0 -1 424 + 2.7850000000000000e+02 -2 -3 425 1231. + + 2.5673583149909973e-01 -2.7814364433288574e-01 + 7.7550095319747925e-01 -6.8776667118072510e-01 + <_> + 1.1352587699890137e+01 + + 1 2 426 1.5000000000000000e+00 0 -1 427 + 4.2500000000000000e+01 -2 -3 428 436. + + -8.6447370052337646e-01 3.8263612985610962e-01 + 2.1488623321056366e-01 -6.5995728969573975e-01 + <_> + 1.1502726554870605e+01 + + 1 2 429 4.5000000000000000e+00 0 -1 430 + 8.9500000000000000e+01 -2 -3 431 1.2500000000000000e+01 + + -5.1148355007171631e-01 4.3896585702896118e-01 + -4.8310482501983643e-01 1.8991161882877350e-01 + <_> + 1.1872124671936035e+01 + + 1 2 432 5.0000000000000000e-01 0 -1 433 + 4.5000000000000000e+00 -2 -3 434 1.1500000000000000e+01 + + -5.1016438007354736e-01 3.6939758062362671e-01 + 1.1107332259416580e-01 -6.3128584623336792e-01 + <_> + 1.1897380828857422e+01 + + 1 2 435 1.5000000000000000e+00 0 -1 436 + 8.5000000000000000e+00 -2 -3 437 1.4500000000000000e+01 + + -7.3261368274688721e-01 5.7636475563049316e-01 + -4.3446037173271179e-01 2.1413095295429230e-01 + <_> + 1.1853853225708008e+01 + + 1 2 438 3706. 0 -1 439 1.5000000000000000e+00 -2 -3 440 + 4410. + + 5.6994712352752686e-01 -4.3527409434318542e-02 + -7.2693550586700439e-01 4.1713526844978333e-01 + <_> + 1.1845816612243652e+01 + + 1 2 441 6.5000000000000000e+00 0 -1 442 + 1.5500000000000000e+01 -2 -3 443 5.3500000000000000e+01 + + -8.0371825024485588e-03 -5.7360154390335083e-01 + 5.8637946844100952e-01 -4.5183259248733521e-01 + <_> + 1.1606418609619141e+01 + + 1 2 444 5.7500000000000000e+01 0 -1 445 + 1.3650000000000000e+02 -2 -3 446 3.3595000000000000e+03 + + 4.9911895394325256e-01 -5.3746724128723145e-01 + -2.3939760029315948e-01 3.7778580188751221e-01 + <_> + 1.1980805397033691e+01 + + 1 2 447 4.5000000000000000e+00 0 -1 448 + 3.5000000000000000e+00 -2 -3 449 1.1500000000000000e+01 + + -7.3552447557449341e-01 3.7438639998435974e-01 + -4.0720772743225098e-01 4.5558989048004150e-01 + <_> + 1.2240980148315430e+01 + + 1 2 450 2.0950000000000000e+02 0 -1 451 + 3.5000000000000000e+00 -2 -3 452 2.0450000000000000e+02 + + 2.6017466187477112e-01 -4.3274480104446411e-01 + 6.6186487674713135e-01 -1.9433960318565369e-01 + <_> + 1.1877487182617188e+01 + + 1 2 453 8.7500000000000000e+01 0 -1 454 + 3.3500000000000000e+01 -2 -3 455 1.9500000000000000e+01 + + -3.6349293589591980e-01 2.8466138243675232e-01 + -8.9488905668258667e-01 2.0050047338008881e-01 + <_> + 1.2315251350402832e+01 + + 1 2 456 6.5000000000000000e+00 0 -1 457 + 2.8500000000000000e+01 -2 -3 458 1.1500000000000000e+01 + + -4.2718878388404846e-01 4.3776413798332214e-01 + -4.0096122026443481e-01 4.4375243782997131e-01 + <_> + 1.2738058090209961e+01 + + 1 2 459 2.5000000000000000e+00 0 -1 460 + 5.5000000000000000e+00 -2 -3 461 4.2050000000000000e+02 + + -1. 4.2698940634727478e-01 1.3992704451084137e-01 + -4.4792297482490540e-01 + <_> + 1.2678054809570312e+01 + + 1 2 462 4.6035000000000000e+03 0 -1 463 + 1.2500000000000000e+01 -2 -3 464 1.6885000000000000e+03 + + -6.3804382085800171e-01 2.8076967597007751e-01 + 7.0788478851318359e-01 -6.0002621263265610e-02 + <_> + 1.2586655616760254e+01 + + 1 2 465 2.1150000000000000e+02 0 -1 466 + 3.5000000000000000e+00 -2 -3 467 3.1365000000000000e+03 + + 3.2408985495567322e-01 -3.3107626438140869e-01 + 8.7245899438858032e-01 -1.1116035282611847e-01 + <_> + 1.2680603027343750e+01 + + 1 2 468 2.2500000000000000e+01 0 -1 469 + 4.5500000000000000e+01 -2 -3 470 4.8500000000000000e+01 + + 9.3947365880012512e-02 -5.0669384002685547e-01 + 6.3860702514648438e-01 -5.6095314025878906e-01 + <_> + 1.2646597862243652e+01 + + 1 2 471 5.7750000000000000e+02 0 -1 472 2607. -2 -3 473 + 8.4850000000000000e+02 + + -8.0222898721694946e-01 4.9571409821510315e-01 + 6.9677603244781494e-01 -3.4005377441644669e-02 + <_> + 1.3080556869506836e+01 + + 1 2 474 3.5000000000000000e+00 0 -1 475 + 2.9025000000000000e+03 -2 -3 476 1.4500000000000000e+01 + + 6.3582272268831730e-03 -7.6159459352493286e-01 + 4.4750732183456421e-01 -1.8545417487621307e-01 + <_> + 1.3341848373413086e+01 + + 1 2 477 2.5000000000000000e+00 0 -1 478 + 1.3500000000000000e+01 -2 -3 479 5.0000000000000000e-01 + + -4.0977507829666138e-01 3.4295764565467834e-01 + 9.3431934714317322e-02 -7.1162647008895874e-01 + <_> + 1.2996747970581055e+01 + + 1 2 480 5.5000000000000000e+00 0 -1 481 + 6.5000000000000000e+00 -2 -3 482 3.1450000000000000e+02 + + -5.9179306030273438e-01 5.3183627128601074e-01 + 2.9362958669662476e-01 -5.2066570520401001e-01 + <_> + 1.3275168418884277e+01 + + 1 2 483 5.0000000000000000e-01 0 -1 484 + 5.8550000000000000e+02 -2 -3 485 1.2025000000000000e+03 + + -4.2056784033775330e-01 5.3556817770004272e-01 + 5.9011709690093994e-01 -3.4758779406547546e-01 + <_> + 1.3466418266296387e+01 + + 1 2 486 5.5000000000000000e+00 0 -1 487 + 5.0000000000000000e-01 -2 -3 488 14734. + + 4.4770663976669312e-01 -8.6989867687225342e-01 + 1.9124945998191833e-01 -7.6927727460861206e-01 + <_> + 1.3708694458007812e+01 + + 1 2 489 3.5150000000000000e+02 0 -1 490 + 2.4500000000000000e+01 -2 -3 491 1.2500000000000000e+01 + + 5.4361712932586670e-01 -9.3802767992019653e-01 + 2.4227620661258698e-01 -3.2380709052085876e-01 + <_> + 1.3621360778808594e+01 + + 1 2 492 1.5750000000000000e+02 0 -1 493 45. -2 -3 494 + 6.5000000000000000e+00 + + 4.8756289482116699e-01 -6.2756335735321045e-01 + 5.6488978862762451e-01 -8.7333582341670990e-02 + <_> + 1.3719803810119629e+01 + + 1 2 495 1.4500000000000000e+01 0 -1 496 + 3.2785000000000000e+03 -2 -3 497 1.2500000000000000e+01 + + -8.3579055964946747e-02 -9.0902733802795410e-01 + 4.0620484948158264e-01 -2.2033128142356873e-01 + <_> + 1.3743362426757812e+01 + + 1 2 498 1.7500000000000000e+01 0 -1 499 + 2.5500000000000000e+01 -2 -3 500 446. + + 5.8430969715118408e-02 -5.6837719678878784e-01 + -1.8840381503105164e-01 6.9564127922058105e-01 + <_> + 1.3924007415771484e+01 + + 1 2 501 8.0450000000000000e+02 0 -1 502 + 4.0500000000000000e+01 -2 -3 503 2.5000000000000000e+00 + + -4.7573506832122803e-01 2.6540222764015198e-01 + -3.4159180521965027e-01 5.4993849992752075e-01 + <_> + 1.4126693725585938e+01 + + 1 2 504 2.5000000000000000e+00 0 -1 505 3876. -2 -3 506 + 7.5000000000000000e+00 + + 4.1770899295806885e-01 -3.8963168859481812e-01 + 1.9346395134925842e-01 -5.6205403804779053e-01 + <_> + 1.4377063751220703e+01 + + 1 2 507 1.0630500000000000e+04 0 -1 508 + 1.7500000000000000e+01 -2 -3 509 5.0000000000000000e-01 + + 4.2469942569732666e-01 -6.3991433382034302e-01 + 7.5341060757637024e-02 -5.3553485870361328e-01 + <_> + 1.4237608909606934e+01 + + 1 2 510 5.7500000000000000e+01 0 -1 511 + 6.5000000000000000e+00 -2 -3 512 2.8500000000000000e+01 + + 5.4694686084985733e-02 -5.2880686521530151e-01 + -3.4901857376098633e-01 4.7299972176551819e-01 + <_> + 1.4564194679260254e+01 + + 1 2 513 7.5000000000000000e+00 0 -1 514 + 8.5000000000000000e+00 -2 -3 515 4.5000000000000000e+00 + + -5.7572060823440552e-01 4.0378063917160034e-01 + 1.7233282327651978e-01 -5.5302166938781738e-01 + <_> + 1.4479125976562500e+01 + + 1 2 516 4.1500000000000000e+01 0 -1 517 + 5.0000000000000000e-01 -2 -3 518 3.5000000000000000e+00 + + 6.9208496809005737e-01 -9.3342530727386475e-01 + 4.8711183667182922e-01 -8.5068866610527039e-02 + <_> + 1.4771840095520020e+01 + + 1 2 519 3.2350000000000000e+02 0 -1 520 + 6.8500000000000000e+01 -2 -3 521 2.9050000000000000e+02 + + -5.6921553611755371e-01 7.5075703859329224e-01 + 3.0680647492408752e-01 -5.3018033504486084e-01 + <_> + 1.4921194076538086e+01 + + 1 2 522 9.5000000000000000e+00 0 -1 523 178. -2 -3 524 + 1.5000000000000000e+00 + + 2.7555197477340698e-01 -8.4987080097198486e-01 + 7.1478825807571411e-01 -4.7535741329193115e-01 + <_> + 1.5011672019958496e+01 + + 1 2 525 3.5500000000000000e+01 0 -1 526 + 4.9450000000000000e+02 -2 -3 527 151. + + -4.1447910666465759e-01 9.0478152036666870e-02 + 7.2348231077194214e-01 -8.4134203195571899e-01 + <_> + 1.5009381294250488e+01 + + 1 2 528 1.0075000000000000e+03 0 -1 529 + 4.6135000000000000e+03 -2 -3 530 5.0000000000000000e-01 + + -1.3591668009757996e-01 5.0908648967742920e-01 + 4.3699756264686584e-02 -6.3745105266571045e-01 + <_> + 1.4872577667236328e+01 + + 1 2 531 4.9500000000000000e+01 0 -1 532 + 7.5000000000000000e+00 -2 -3 533 2.6500000000000000e+01 + + 5.5888742208480835e-02 -5.8190774917602539e-01 + -7.9333829879760742e-01 5.4325503110885620e-01 + <_> + 1.5080644607543945e+01 + + 1 2 534 4.7500000000000000e+01 0 -1 535 + 1.4500000000000000e+01 -2 -3 536 2.7500000000000000e+01 + + -8.9569383859634399e-01 2.0806635916233063e-01 + -7.5062823295593262e-01 2.4852557480335236e-01 + <_> + 1.5080853462219238e+01 + + 1 2 537 6.5000000000000000e+00 0 -1 538 + 8.5000000000000000e+00 -2 -3 539 3.8050000000000000e+02 + + -6.1480957269668579e-01 3.2939058542251587e-01 + 4.0805706381797791e-01 -4.6099272370338440e-01 + <_> + 1.4875501632690430e+01 + + 1 2 540 1.0500000000000000e+01 0 -1 541 + 1.5000000000000000e+00 -2 -3 542 478. + + -9.0150666236877441e-01 3.4228125214576721e-01 + -5.9740513563156128e-01 8.7162934243679047e-02 + <_> + 1.5382561683654785e+01 + + 1 2 543 5.5000000000000000e+00 0 -1 544 + 5.0000000000000000e-01 -2 -3 545 2.5500000000000000e+01 + + -3.2944935560226440e-01 5.0705975294113159e-01 + -3.9558005332946777e-01 3.1945833563804626e-01 + <_> + 1.5631669998168945e+01 + + 1 2 546 1.5000000000000000e+00 0 -1 547 + 1.1500000000000000e+01 -2 -3 548 3.5000000000000000e+00 + + -5.0148051977157593e-01 3.6997869610786438e-01 + 7.7569979429244995e-01 -3.7318921089172363e-01 + <_> + 1.5227413177490234e+01 + + 1 2 549 5.5000000000000000e+00 0 -1 550 + 2.5000000000000000e+00 -2 -3 551 8.2500000000000000e+01 + + 9.7206316888332367e-02 -5.2512657642364502e-01 + 5.3593277931213379e-01 -5.2903693914413452e-01 + <_> + 1.5712855339050293e+01 + + 1 2 552 1.5000000000000000e+00 0 -1 553 + 1.1500000000000000e+01 -2 -3 554 1.5000000000000000e+00 + + -5.5320370197296143e-01 5.5974000692367554e-01 + -4.7809949517250061e-01 1.2362124770879745e-01 + <_> + 1.5475475311279297e+01 + + 1 2 555 1.1150000000000000e+02 0 -1 556 107. -2 -3 557 + 5.4500000000000000e+01 + + 2.2000953555107117e-01 -5.7901185750961304e-01 + 5.5795150995254517e-01 -2.0629312098026276e-01 + <_> + 1.5877110481262207e+01 + + 1 2 558 5.0000000000000000e-01 0 -1 559 + 4.7500000000000000e+01 -2 -3 560 4.0850000000000000e+02 + + 4.0163558721542358e-01 -6.5443444252014160e-01 + 3.9427250623703003e-01 -4.3203008174896240e-01 + <_> + 1.5799601554870605e+01 + + 1 2 561 2.0250000000000000e+02 0 -1 562 + 5.0000000000000000e-01 -2 -3 563 2399. + + 1.2356969714164734e-01 -5.3489917516708374e-01 + 4.6495470404624939e-01 -5.8487701416015625e-01 + <_> + 1.6042089462280273e+01 + + 1 2 564 7.0450000000000000e+02 0 -1 565 + 4.4500000000000000e+01 -2 -3 566 288. + + 4.8793616890907288e-01 -8.4778493642807007e-01 + -4.3374565243721008e-01 2.4248743057250977e-01 + <_> + 1.6111749649047852e+01 + + 1 2 567 1.8500000000000000e+01 0 -1 568 + 1.2500000000000000e+01 -2 -3 569 5.0000000000000000e-01 + + -4.8669865727424622e-01 2.7788683772087097e-01 + 3.6192622780799866e-01 -5.7420414686203003e-01 + <_> + 1.6021078109741211e+01 + + 1 2 570 8.3450000000000000e+02 0 -1 571 4451. -2 -3 572 + 3.2950000000000000e+02 + + 5.3921067714691162e-01 -4.8135292530059814e-01 + -2.9889726638793945e-01 6.0160857439041138e-01 + <_> + 1.6436674118041992e+01 + + 1 2 573 1.2500000000000000e+01 0 -1 574 + 6.5000000000000000e+00 -2 -3 575 2.9500000000000000e+01 + + 4.3214797973632812e-01 -2.8101849555969238e-01 + 6.6012543439865112e-01 -7.0270007848739624e-01 + <_> + 1.6612668991088867e+01 + + 1 2 576 4.4500000000000000e+01 0 -1 577 3724. -2 -3 578 + 7.5000000000000000e+00 + + 6.2758970260620117e-01 -5.7332456111907959e-01 + -7.3119300603866577e-01 2.5508829951286316e-01 + <_> + 1.6793443679809570e+01 + + 1 2 579 1.5000000000000000e+00 0 -1 580 + 2.5500000000000000e+01 -2 -3 581 2.3500000000000000e+01 + + -6.3251662254333496e-01 4.4916898012161255e-01 + 4.5003961771726608e-02 -5.9809100627899170e-01 + <_> + 1.6161096572875977e+01 + + 1 2 582 1.5000000000000000e+00 0 -1 583 + 1.5000000000000000e+00 -2 -3 584 2.0500000000000000e+01 + + -7.4945521354675293e-01 6.5612715482711792e-01 + -6.3234704732894897e-01 7.2132863104343414e-02 + <_> + 1.6042703628540039e+01 + + 1 2 585 2.7500000000000000e+01 0 -1 586 + 1.3500000000000000e+01 -2 -3 587 2.5000000000000000e+00 + + -1.1839324980974197e-01 3.9118841290473938e-01 + 2.9518869519233704e-01 -8.5212147235870361e-01 + <_> + 1.6447755813598633e+01 + + 1 2 588 5.0000000000000000e-01 0 -1 589 + 5.0000000000000000e-01 -2 -3 590 5.0000000000000000e-01 + + -8.3366543054580688e-01 4.0505367517471313e-01 + 4.8622503876686096e-02 -5.6565636396408081e-01 + <_> + 1.7133924484252930e+01 + + 1 2 591 2.0350000000000000e+02 0 -1 592 334. -2 -3 593 + 3.0050000000000000e+02 + + -3.5271939635276794e-01 8.6447751522064209e-01 + 7.1061849594116211e-01 -1.1952371150255203e-01 + <_> + 1.6702384948730469e+01 + + 1 2 594 4.5000000000000000e+00 0 -1 595 + 2.8500000000000000e+01 -2 -3 596 1.2500000000000000e+01 + + -3.9405979216098785e-02 6.6947597265243530e-01 + -4.9912232160568237e-01 1.0251764953136444e-01 + <_> + 1.7397886276245117e+01 + + 1 2 597 2.2450000000000000e+02 0 -1 598 42. -2 -3 599 + 4.2500000000000000e+01 + + 7.0597994327545166e-01 -9.4353288412094116e-01 + -6.9157105684280396e-01 2.2714031860232353e-02 + <_> + 1.7262920379638672e+01 + + 1 2 600 3.1500000000000000e+01 0 -1 601 + 1.0450000000000000e+02 -2 -3 602 5.0000000000000000e-01 + + -1.3496619462966919e-01 4.4948977231979370e-01 + 1.4885289967060089e-01 -8.6381590366363525e-01 + <_> + 1.7465213775634766e+01 + + 1 2 603 1.4500000000000000e+01 0 -1 604 + 2.5000000000000000e+00 -2 -3 605 2.5000000000000000e+00 + + -7.1829992532730103e-01 3.5132697224617004e-01 + 4.2205992341041565e-01 -4.3211916089057922e-01 + <_> + 1.7307765960693359e+01 + + 1 2 606 5.5000000000000000e+00 0 -1 607 + 1.6500000000000000e+01 -2 -3 608 1.5000000000000000e+00 + + -4.3471553921699524e-01 5.3184741735458374e-01 + 1.5001934766769409e-01 -5.0502711534500122e-01 + <_> + 1.7614244461059570e+01 + + 1 2 609 2.1950000000000000e+02 0 -1 610 + 3.5000000000000000e+00 -2 -3 611 3.5000000000000000e+00 + + 9.3997812271118164e-01 -9.3997251987457275e-01 + 3.0647855997085571e-01 -2.0921668410301208e-01 + <_> + 1.7706068038940430e+01 + + 1 2 612 5.7500000000000000e+01 0 -1 613 + 5.5450000000000000e+02 -2 -3 614 6271. + + 2.8178128600120544e-01 -6.5705215930938721e-01 + 2.1660777926445007e-01 -8.9905387163162231e-01 + <_> + 1.7754480361938477e+01 + + 1 2 615 5.0000000000000000e-01 0 -1 616 + 1.6500000000000000e+01 -2 -3 617 5.0000000000000000e-01 + + -6.6525924205780029e-01 5.8488470315933228e-01 + 2.6185688376426697e-01 -3.7666809558868408e-01 + <_> + 1.7758506774902344e+01 + + 1 2 618 5.8750000000000000e+02 0 -1 619 + 5.0000000000000000e-01 -2 -3 620 7.9050000000000000e+02 + + 6.1497175693511963e-01 -5.2589684724807739e-01 + 5.6739014387130737e-01 -1.2997034192085266e-01 + <_> + 1.8137268066406250e+01 + + 1 2 621 1.2500000000000000e+01 0 -1 622 + 2.7500000000000000e+01 -2 -3 623 9.5000000000000000e+00 + + 2.7133096009492874e-02 -7.4169838428497314e-01 + -5.5511766672134399e-01 3.7876096367835999e-01 + <_> + 1.8127597808837891e+01 + + 1 2 624 1.3500000000000000e+01 0 -1 625 + 1.6500000000000000e+01 -2 -3 626 7.0050000000000000e+02 + + -9.9238857626914978e-02 5.2959042787551880e-01 + 1.2502020597457886e-01 -6.9074809551239014e-01 + <_> + 1.8081335067749023e+01 + + 1 2 627 1.2500000000000000e+01 0 -1 628 2. -2 -3 629 + 5.0000000000000000e-01 + + -9.4234240055084229e-01 1. 3.8502028584480286e-01 + -1.8359494209289551e-01 + <_> + 1.8053295135498047e+01 + + 1 2 630 2.7500000000000000e+01 0 -1 631 + 5.9500000000000000e+01 -2 -3 632 4.1500000000000000e+01 + + -4.9844527244567871e-01 2.2154885530471802e-01 + 1.6719245910644531e-01 -8.5411649942398071e-01 + <_> + 1.8328479766845703e+01 + + 1 2 633 1.2564500000000000e+04 0 -1 634 + 4.5000000000000000e+00 -2 -3 635 1.4450000000000000e+02 + + -5.1779359579086304e-01 3.0374595522880554e-01 + -7.3483371734619141e-01 7.6394975185394287e-02 + <_> + 1.8571502685546875e+01 + + 1 2 636 2.5000000000000000e+00 0 -1 637 + 2.6750000000000000e+02 -2 -3 638 6.4350000000000000e+02 + + -8.5374289751052856e-01 4.6067333221435547e-01 + -4.1071122884750366e-01 3.6673283576965332e-01 + <_> + 1.8682445526123047e+01 + + 1 2 639 2.0650000000000000e+02 0 -1 640 + 4.2500000000000000e+01 -2 -3 641 1.1500000000000000e+01 + + -5.0848436355590820e-01 2.4837252497673035e-01 + -6.5386766195297241e-01 4.2162042856216431e-01 + <_> + 1.8954551696777344e+01 + + 1 2 642 6.5000000000000000e+00 0 -1 643 + 3.0500000000000000e+01 -2 -3 644 2.2500000000000000e+01 + + -5.9916085004806519e-01 2.7210691571235657e-01 + -1.1765263974666595e-01 -8.1677961349487305e-01 + <_> + 1.8866088867187500e+01 + + 1 2 645 1.5000000000000000e+00 0 -1 646 + 6.5000000000000000e+00 -2 -3 647 1.1150000000000000e+02 + + 5.0670212507247925e-01 -2.6341021060943604e-01 + -4.3560948967933655e-01 3.6474627256393433e-01 + <_> + 1.8741416931152344e+01 + + 1 2 648 4.1500000000000000e+01 0 -1 649 + 6.5000000000000000e+00 -2 -3 650 1.5000000000000000e+00 + + 5.2751459181308746e-02 -6.6522449254989624e-01 + 3.3934053778648376e-01 -4.9355345964431763e-01 + <_> + 1.8643299102783203e+01 + + 1 2 651 5.9775000000000000e+03 0 -1 652 + 1.8165000000000000e+03 -2 -3 653 1.4355000000000000e+03 + + 5.5302268266677856e-01 -4.7563236951828003e-01 + 6.5803569555282593e-01 -9.8118394613265991e-02 + <_> + 1.8880964279174805e+01 + + 1 2 654 1.2650000000000000e+02 0 -1 655 + 2.5000000000000000e+00 -2 -3 656 1.3500000000000000e+01 + + -7.5744998455047607e-01 2.8973925113677979e-01 + -5.4551291465759277e-01 8.2080578804016113e-01 + <_> + 1.8557128906250000e+01 + + 1 2 657 4.6500000000000000e+01 0 -1 658 1647. -2 -3 659 + 1.0500000000000000e+01 + + 1.0912799835205078e-01 -8.0168753862380981e-01 + 3.0439880490303040e-01 -3.2383540272712708e-01 + <_> + 1.9214336395263672e+01 + + 1 2 660 1.6085000000000000e+03 0 -1 661 + 2.0950000000000000e+02 -2 -3 662 2.9750000000000000e+02 + + -3.6497074365615845e-01 7.4361735582351685e-01 + 7.8719192743301392e-01 -1.0578166693449020e-02 + <_> + 1.9558198928833008e+01 + + 1 2 663 5.5000000000000000e+00 0 -1 664 141. -2 -3 665 + 1.2500000000000000e+01 + + 4.0406695008277893e-01 -7.0202612876892090e-01 + -4.2011860013008118e-01 6.0265243053436279e-01 + <_> + 1.9143066406250000e+01 + + 1 2 666 1.1500000000000000e+01 0 -1 667 + 8.5000000000000000e+00 -2 -3 668 2.1150000000000000e+02 + + -4.1513276100158691e-01 4.5337858796119690e-01 + 3.6399593949317932e-01 -7.8625452518463135e-01 + <_> + 1.9362360000610352e+01 + + 1 2 669 3.1500000000000000e+01 0 -1 670 + 3.5000000000000000e+00 -2 -3 671 1.5500000000000000e+01 + + -5.3197765350341797e-01 2.7408641576766968e-01 + -6.3501793146133423e-01 4.3600288033485413e-01 + <_> + 1.9299673080444336e+01 + + 1 2 672 3.5000000000000000e+00 0 -1 673 + 1.3500000000000000e+01 -2 -3 674 6918. + + -4.8876148462295532e-01 4.8771849274635315e-01 + -3.5163021087646484e-01 5.7008403539657593e-01 + <_> + 1.9273160934448242e+01 + + 1 2 675 4.2150000000000000e+02 0 -1 676 + 2.2035000000000000e+03 -2 -3 677 4125. + + -1. 4.3742546439170837e-01 -6.3171046972274780e-01 + -1.2324055656790733e-02 + <_> + 1.9674695968627930e+01 + + 1 2 678 5.0000000000000000e-01 0 -1 679 + 1.0500000000000000e+01 -2 -3 680 6.7150000000000000e+02 + + -2.4401791393756866e-01 5.4219561815261841e-01 + 4.5299509167671204e-01 -4.0972766280174255e-01 + <_> + 1.9536827087402344e+01 + + 1 2 681 80. 0 -1 682 9.5000000000000000e+00 -2 -3 683 + 1.1950000000000000e+02 + + 9.7771358489990234e-01 -1. -2.7852934598922729e-01 + 3.1141099333763123e-01 + <_> + 1.9679944992065430e+01 + + 1 2 684 5.5000000000000000e+00 0 -1 685 + 5.5000000000000000e+00 -2 -3 686 4.5000000000000000e+00 + + -3.4437903761863708e-01 4.5901042222976685e-01 + 1.4311666786670685e-01 -5.8588796854019165e-01 + <_> + 1.9943355560302734e+01 + + 1 2 687 2.9500000000000000e+01 0 -1 688 + 6.5000000000000000e+00 -2 -3 689 2.4500000000000000e+01 + + -5.8437657356262207e-01 2.6341116428375244e-01 + -6.2989181280136108e-01 2.0000371336936951e-01 + <_> + 1.9625724792480469e+01 + + 1 2 690 2.0850000000000000e+02 0 -1 691 + 2.3305000000000000e+03 -2 -3 692 866. + + -3.1762993335723877e-01 5.5581647157669067e-01 + 5.3226226568222046e-01 -4.7602936625480652e-01 + <_> + 1.9914857864379883e+01 + + 1 2 693 8.7850000000000000e+02 0 -1 694 + 6.5050000000000000e+02 -2 -3 695 1.2605000000000000e+03 + + 2.8913190960884094e-01 -8.0038177967071533e-01 + -7.6349312067031860e-01 1.2914163060486317e-02 + <_> + 2.0337768554687500e+01 + + 1 2 696 1.8500000000000000e+01 0 -1 697 51. -2 -3 698 + 5.0000000000000000e-01 + + 2.0884056389331818e-01 -6.6362190246582031e-01 + 4.8303022980690002e-01 -1.5653999149799347e-01 + <_> + 2.0547544479370117e+01 + + 1 2 699 5.5000000000000000e+00 0 -1 700 + 4.4500000000000000e+01 -2 -3 701 52. + + -5.9065473079681396e-01 2.0977459847927094e-01 + -7.6793259382247925e-01 5.2228933572769165e-01 + <_> + 2.0560253143310547e+01 + + 1 2 702 4.5000000000000000e+00 0 -1 703 + 2.4650000000000000e+02 -2 -3 704 4.8500000000000000e+01 + + 4.7756865620613098e-01 -6.9306534528732300e-01 + -4.7408469021320343e-02 -7.5790488719940186e-01 + <_> + 2.0091964721679688e+01 + + 1 2 705 3.8500000000000000e+01 0 -1 706 + 5.0000000000000000e-01 -2 -3 707 458. + + 4.1837117075920105e-01 -5.6005704402923584e-01 + -4.6829015016555786e-01 3.3648452162742615e-01 + <_> + 2.0445671081542969e+01 + + 1 2 708 4.5000000000000000e+00 0 -1 709 + 2.7895000000000000e+03 -2 -3 710 1.1500000000000000e+01 + + -3.6157336831092834e-01 3.5370638966560364e-01 + -5.6435430049896240e-01 6.2603580951690674e-01 + <_> + 2.0708145141601562e+01 + + 1 2 711 1.1245000000000000e+03 0 -1 712 + 4.5000000000000000e+00 -2 -3 713 1.4500000000000000e+01 + + -6.9924837350845337e-01 4.3067482113838196e-01 + -4.2009061574935913e-01 2.6247435808181763e-01 + <_> + 2.1024463653564453e+01 + + 1 2 714 5.5000000000000000e+00 0 -1 715 + 1.1500000000000000e+01 -2 -3 716 7.5000000000000000e+00 + + -8.0043709278106689e-01 3.1631988286972046e-01 + -5.1429873704910278e-01 2.7576768398284912e-01 + <_> + 2.0803630828857422e+01 + + 1 2 717 5.8750000000000000e+02 0 -1 718 3981. -2 -3 719 + 1.9550000000000000e+02 + + -5.4785442352294922e-01 7.9078370332717896e-01 + 6.8359661102294922e-01 -2.8464736416935921e-02 + <_> + 2.1062959671020508e+01 + + 1 2 720 2.5000000000000000e+00 0 -1 721 + 1.5000000000000000e+00 -2 -3 722 3.4050000000000000e+02 + + -6.4614498615264893e-01 7.4008464813232422e-01 + -2.5458994507789612e-01 4.7160488367080688e-01 + <_> + 2.1148992538452148e+01 + + 1 2 723 2.5000000000000000e+00 0 -1 724 + 1.9500000000000000e+01 -2 -3 725 1.1365000000000000e+03 + + -7.9459643363952637e-01 4.0373617410659790e-01 + 1.7909039556980133e-01 -4.8390582203865051e-01 + <_> + 2.1316343307495117e+01 + + 1 2 726 596. 0 -1 727 2.9500000000000000e+01 -2 -3 728 + 9.7500000000000000e+01 + + -3.1621825695037842e-01 2.6443120837211609e-01 + -7.2724926471710205e-01 3.8569703698158264e-01 + <_> + 2.1407173156738281e+01 + + 1 2 729 3.5000000000000000e+00 0 -1 730 + 1.2500000000000000e+01 -2 -3 731 1.6250000000000000e+02 + + -5.2135920524597168e-01 3.0805602669715881e-01 + -5.1675158739089966e-01 8.4476417303085327e-01 + <_> + 2.1468662261962891e+01 + + 1 2 732 2.5000000000000000e+00 0 -1 733 + 9.5000000000000000e+00 -2 -3 734 1.5000000000000000e+00 + + 4.6017938852310181e-01 -8.2636475563049316e-02 + 5.0263375043869019e-01 -6.4655619859695435e-01 + <_> + 2.1531848907470703e+01 + + 1 2 735 1.6500000000000000e+01 0 -1 736 + 1.5000000000000000e+00 -2 -3 737 132. + + 6.3187964260578156e-02 -4.6502736210823059e-01 + -5.3921943902969360e-01 6.6515022516250610e-01 + <_> + 2.1421955108642578e+01 + + 1 2 738 1.4500000000000000e+01 0 -1 739 + 5.5000000000000000e+00 -2 -3 740 4.5000000000000000e+00 + + 7.3170220851898193e-01 -7.9929661750793457e-01 + 4.2181393504142761e-01 -1.0989431291818619e-01 + <_> + 2.1327116012573242e+01 + + 1 2 741 3.5000000000000000e+00 0 -1 742 35. -2 -3 743 + 2.5000000000000000e+00 + + -8.3855998516082764e-01 4.6628227829933167e-01 + 4.7352400422096252e-01 -9.4839885830879211e-02 + <_> + 2.1836402893066406e+01 + + 1 2 744 1.7500000000000000e+01 0 -1 745 555. -2 -3 746 + 1.0500000000000000e+01 + + 9.3723833560943604e-01 -9.0897613763809204e-01 + -7.3575176298618317e-02 5.0928729772567749e-01 + <_> + 2.2053348541259766e+01 + + 1 2 747 5.0000000000000000e-01 0 -1 748 + 1.6500000000000000e+01 -2 -3 749 6.5850000000000000e+02 + + 3.9292082190513611e-01 -5.4508280754089355e-01 + -3.8765028119087219e-01 7.9302084445953369e-01 + <_> + 2.2000936508178711e+01 + + 1 2 750 1.2495000000000000e+03 0 -1 751 + 7.5650000000000000e+02 -2 -3 752 8.5000000000000000e+00 + + -8.3031547069549561e-01 6.1485505104064941e-01 + -7.2577434778213501e-01 -3.1862542033195496e-02 + <_> + 2.2258289337158203e+01 + + 1 2 753 1.7050000000000000e+02 0 -1 754 + 2.7500000000000000e+01 -2 -3 755 171. + + 2.5735321640968323e-01 -4.8002240061759949e-01 + -8.0062097311019897e-01 3.0654129385948181e-01 + <_> + 2.2328397750854492e+01 + + 1 2 756 1.2550000000000000e+02 0 -1 757 + 4.9850000000000000e+02 -2 -3 758 4.4150000000000000e+02 + + -5.5743676424026489e-01 7.0109486579895020e-02 + 4.4649991393089294e-01 -7.7318650484085083e-01 + <_> + 2.2216890335083008e+01 + + 1 2 759 6.5000000000000000e+00 0 -1 760 + 1.5000000000000000e+00 -2 -3 761 1.4500000000000000e+01 + + -5.4395025968551636e-01 3.0336576700210571e-01 + -7.8275823593139648e-01 1.5390900894999504e-02 + <_> + 2.2302726745605469e+01 + + 1 2 762 1.5000000000000000e+00 0 -1 763 + 5.7500000000000000e+01 -2 -3 764 2.0645000000000000e+03 + + 4.8738116025924683e-01 -3.1202495098114014e-01 + -4.3800228834152222e-01 2.9288199543952942e-01 + <_> + 2.2548938751220703e+01 + + 1 2 765 4.9500000000000000e+01 0 -1 766 + 3.8500000000000000e+01 -2 -3 767 5.1500000000000000e+01 + + 4.8418575525283813e-01 -6.1569869518280029e-01 + 2.4621097743511200e-01 -7.1180444955825806e-01 + <_> + 2.2475860595703125e+01 + + 1 2 768 4.5000000000000000e+00 0 -1 769 + 1.7850000000000000e+02 -2 -3 770 2.4500000000000000e+01 + + -6.3133555650711060e-01 3.8137707114219666e-01 + -3.6368274688720703e-01 6.6181749105453491e-01 + <_> + 2.2855289459228516e+01 + + 1 2 771 4284. 0 -1 772 1.0550000000000000e+02 -2 -3 773 + 2.6500000000000000e+01 + + -1.8270370364189148e-01 5.1926845312118530e-01 + -4.9393907189369202e-01 3.6390557885169983e-01 + <_> + 2.2716596603393555e+01 + + 1 2 774 4.5000000000000000e+00 0 -1 775 + 2.5500000000000000e+01 -2 -3 776 6.0350000000000000e+02 + + -5.2201086282730103e-01 4.4320568442344666e-01 + -4.9849912524223328e-01 2.6197108626365662e-01 + <_> + 2.2941522598266602e+01 + + 1 2 777 5.7850000000000000e+02 0 -1 778 + 6.8250000000000000e+02 -2 -3 779 2.6500000000000000e+01 + + -7.4641335010528564e-01 9.6406400203704834e-01 + 2.2492493689060211e-01 -7.7606719732284546e-01 + <_> + 2.3111333847045898e+01 + + 1 2 780 2.9650000000000000e+02 0 -1 781 + 9.5000000000000000e+00 -2 -3 782 4.2500000000000000e+01 + + -6.2134265899658203e-01 1.6981208324432373e-01 + -8.7735611200332642e-01 6.5406101942062378e-01 + <_> + 2.3225652694702148e+01 + + 1 2 783 5.0000000000000000e-01 0 -1 784 + 3.5000000000000000e+00 -2 -3 785 1.1050000000000000e+02 + + 4.8261573910713196e-01 -1.2186601758003235e-01 + -6.2313985824584961e-01 1.7973627150058746e-01 + <_> + 2.3488880157470703e+01 + + 1 2 786 5.0000000000000000e-01 0 -1 787 + 2.5000000000000000e+00 -2 -3 788 4.1500000000000000e+01 + + -8.2940989732742310e-01 4.9927219748497009e-01 + -5.5514144897460938e-01 4.2520754039287567e-02 + <_> + 2.3246582031250000e+01 + + 1 2 789 1.7500000000000000e+01 0 -1 790 + 3.5000000000000000e+00 -2 -3 791 3.7500000000000000e+01 + + 2.3804731667041779e-01 -3.6675044894218445e-01 + -7.8130763769149780e-01 4.6650439500808716e-01 + <_> + 2.3027326583862305e+01 + + 1 2 792 2.0450000000000000e+02 0 -1 793 + 6.4350000000000000e+02 -2 -3 794 1.0050000000000000e+02 + + 6.1607003211975098e-01 -3.5964947938919067e-01 + 6.6453498601913452e-01 -1.7912100255489349e-01 + <_> + 2.3406442642211914e+01 + + 1 2 795 5.0000000000000000e-01 0 -1 796 + 6.5000000000000000e+00 -2 -3 797 5.0000000000000000e-01 + + -8.2512348890304565e-01 3.7911432981491089e-01 + 3.5871699452400208e-01 -4.4794848561286926e-01 + <_> + 2.3616649627685547e+01 + + 1 2 798 2.8500000000000000e+01 0 -1 799 + 4.7450000000000000e+02 -2 -3 800 2.9250000000000000e+02 + + 6.9855457544326782e-01 -7.0031523704528809e-01 + 2.1020780503749847e-01 -7.6559376716613770e-01 + <_> + 2.4126110076904297e+01 + + 1 2 801 2.7500000000000000e+01 0 -1 802 + 6.5000000000000000e+00 -2 -3 803 4.0500000000000000e+01 + + -2.3670162260532379e-01 5.7600808143615723e-01 + 7.9060065746307373e-01 -6.8735271692276001e-01 + <_> + 2.4140369415283203e+01 + + 1 2 804 5.0000000000000000e-01 0 -1 805 + 5.0000000000000000e-01 -2 -3 806 4.5000000000000000e+00 + + -9.1332882642745972e-01 5.2299410104751587e-01 + -7.9110765457153320e-01 -2.8204634785652161e-02 + <_> + 2.4360799789428711e+01 + + 1 2 807 4.5000000000000000e+00 0 -1 808 + 1.3185000000000000e+03 -2 -3 809 5.3500000000000000e+01 + + -8.1156605482101440e-01 2.2043134272098541e-01 + 2.7905371785163879e-01 -7.4440413713455200e-01 + <_> + 2.4109243392944336e+01 + + 1 2 810 1.3500000000000000e+01 0 -1 811 + 5.0000000000000000e-01 -2 -3 812 4.4500000000000000e+01 + + 2.3124285042285919e-01 -6.3171100616455078e-01 + -8.5163635015487671e-01 3.0160894989967346e-01 + <_> + 2.4255434036254883e+01 + + 1 2 813 1.5650000000000000e+02 0 -1 814 + 3.5000000000000000e+00 -2 -3 815 4.3500000000000000e+01 + + -7.0664036273956299e-01 1.4619015157222748e-01 + -7.6265025138854980e-01 9.5157426595687866e-01 + <_> + 2.4288377761840820e+01 + + 1 2 816 8.3850000000000000e+02 0 -1 817 + 1.6815000000000000e+03 -2 -3 818 3.7500000000000000e+01 + + -1.9312603771686554e-01 7.6522910594940186e-01 + -5.9187997132539749e-02 -8.7799388170242310e-01 + <_> + 2.4200824737548828e+01 + + 1 2 819 2.3685000000000000e+03 0 -1 820 + 6.4500000000000000e+01 -2 -3 821 2218. + + -2.3894232511520386e-01 3.3463284373283386e-01 + 9.7570341825485229e-01 -1. + <_> + 2.4393486022949219e+01 + + 1 2 822 1.5000000000000000e+00 0 -1 823 + 6.2500000000000000e+01 -2 -3 824 5.0000000000000000e-01 + + 3.8941594958305359e-01 -6.3870257139205933e-01 + 2.9708841443061829e-01 -4.5916315913200378e-01 + <_> + 2.3864915847778320e+01 + + 1 2 825 5.8500000000000000e+01 0 -1 826 + 5.0000000000000000e-01 -2 -3 827 5.0550000000000000e+02 + + 1.0665965825319290e-01 -5.2857077121734619e-01 + 4.3078324198722839e-01 -6.8552410602569580e-01 + <_> + 2.4371673583984375e+01 + + 1 2 828 4.6500000000000000e+01 0 -1 829 + 2.8500000000000000e+01 -2 -3 830 2.5000000000000000e+00 + + -4.6691280603408813e-01 9.4536936283111572e-01 + 5.0675743818283081e-01 -7.4976824223995209e-02 + <_> + 2.4283998489379883e+01 + + 1 2 831 8.5000000000000000e+00 0 -1 832 + 4.5000000000000000e+00 -2 -3 833 5.0000000000000000e-01 + + 1.1491531878709793e-01 -5.4051393270492554e-01 + 5.9726655483245850e-01 -8.7674349546432495e-02 + <_> + 2.4178682327270508e+01 + + 1 2 834 2.4500000000000000e+01 0 -1 835 31. -2 -3 836 + 2.5000000000000000e+00 + + -1.4163693785667419e-01 -8.9226043224334717e-01 + 4.4437414407730103e-01 -1.0531529039144516e-01 + <_> + 2.4790372848510742e+01 + + 1 2 837 2.5500000000000000e+01 0 -1 838 + 3.3050000000000000e+02 -2 -3 839 5.0000000000000000e-01 + + -6.6818559169769287e-01 9.3957829475402832e-01 + 6.1168950796127319e-01 -2.6481609791517258e-02 + <_> + 2.4897542953491211e+01 + + 1 2 840 5.0000000000000000e-01 0 -1 841 + 5.0000000000000000e-01 -2 -3 842 2407. + + -3.7540107965469360e-01 5.3918349742889404e-01 + 4.6452194452285767e-01 -4.5957338809967041e-01 + <_> + 2.5076763153076172e+01 + + 1 2 843 228. 0 -1 844 182. -2 -3 845 3.3500000000000000e+01 + + 1.7922003567218781e-01 -6.3466674089431763e-01 + -9.4654053449630737e-01 1. + <_> + 2.5344453811645508e+01 + + 1 2 846 2.1050000000000000e+02 0 -1 847 950. -2 -3 848 + 6.5000000000000000e+00 + + 3.8418850302696228e-01 -3.3828052878379822e-01 + -9.4338703155517578e-01 5.6358563899993896e-01 + <_> + 2.5327934265136719e+01 + + 1 2 849 5.7850000000000000e+02 0 -1 850 2721. -2 -3 851 + 5.7950000000000000e+02 + + -7.7749001979827881e-01 7.9369461536407471e-01 + 6.1001539230346680e-01 -3.9780076593160629e-02 + <_> + 2.5586107254028320e+01 + + 1 2 852 1.5500000000000000e+01 0 -1 853 + 5.0000000000000000e-01 -2 -3 854 7.5000000000000000e+00 + + 6.5170124173164368e-02 -8.7068217992782593e-01 + 3.4386867284774780e-01 -3.1679311394691467e-01 + <_> + 2.5956110000610352e+01 + + 1 2 855 4.1250000000000000e+02 0 -1 856 + 9.5000000000000000e+00 -2 -3 857 1.2500000000000000e+01 + + -9.4299390912055969e-02 4.5086464285850525e-01 + 2.8941693902015686e-01 -7.5506448745727539e-01 + <_> + 2.5679136276245117e+01 + + 1 2 858 1.5500000000000000e+01 0 -1 859 + 3.5500000000000000e+01 -2 -3 860 1.5500000000000000e+01 + + 5.7768863439559937e-01 -9.8376011848449707e-01 + 2.2712181508541107e-01 -3.7263166904449463e-01 + <_> + 2.5702135086059570e+01 + + 1 2 861 5.2500000000000000e+01 0 -1 862 + 1.1305000000000000e+03 -2 -3 863 213. + + 2.2998491302132607e-02 -5.8967226743698120e-01 + 6.5218383073806763e-01 -8.2674098014831543e-01 + <_> + 2.5561569213867188e+01 + + 1 2 864 5.5500000000000000e+01 0 -1 865 + 9.5000000000000000e+00 -2 -3 866 3.1350000000000000e+02 + + 2.0403856039047241e-01 -5.6006175279617310e-01 + -1.6610753536224365e-01 5.0708794593811035e-01 + <_> + 2.5522092819213867e+01 + + 1 2 867 5.0000000000000000e-01 0 -1 868 5. -2 -3 869 + 3.8500000000000000e+01 + + -5.3519564867019653e-01 5.9799957275390625e-01 + -6.4083904027938843e-01 8.0231800675392151e-03 + <_> + 2.5928745269775391e+01 + + 1 2 870 2.7500000000000000e+01 0 -1 871 + 6.5000000000000000e+00 -2 -3 872 3.4500000000000000e+01 + + 6.7719250917434692e-01 1.6834596171975136e-02 + -4.1419923305511475e-01 4.9665707349777222e-01 + <_> + 2.5877567291259766e+01 + + 1 2 873 4.2500000000000000e+01 0 -1 874 + 1.5000000000000000e+00 -2 -3 875 1.2500000000000000e+01 + + 7.5778728723526001e-01 -6.9553768634796143e-01 + 5.8824920654296875e-01 -5.1177542656660080e-02 + <_> + 2.6253459930419922e+01 + + 1 2 876 2.0450000000000000e+02 0 -1 877 + 5.5000000000000000e+00 -2 -3 878 2.0750000000000000e+02 + + 1.4472042024135590e-01 -5.3407484292984009e-01 + 5.5299741029739380e-01 -2.1952067315578461e-01 + <_> + 2.5972379684448242e+01 + + 1 2 879 5.0000000000000000e-01 0 -1 880 + 9.2500000000000000e+01 -2 -3 881 2.8150000000000000e+02 + + -4.9287506937980652e-01 4.8725369572639465e-01 + 2.1028327941894531e-01 -4.5818585157394409e-01 + <_> + 2.6239015579223633e+01 + + 1 2 882 3.3450000000000000e+02 0 -1 883 + 2.9500000000000000e+01 -2 -3 884 1.9500000000000000e+01 + + -2.7773824334144592e-01 2.6663535833358765e-01 + 9.2568081617355347e-01 -1. + <_> + 2.6405815124511719e+01 + + 1 2 885 7.5000000000000000e+00 0 -1 886 + 1.5500000000000000e+01 -2 -3 887 2.9500000000000000e+01 + + -1.3278310000896454e-01 5.4445451498031616e-01 + -4.4695791602134705e-01 5.7305967807769775e-01 + <_> + 2.6828212738037109e+01 + + 1 2 888 3.1750000000000000e+02 0 -1 889 + 8.5000000000000000e+00 -2 -3 890 1.9950000000000000e+02 + + 5.8375543355941772e-01 -1.7268431186676025e-01 + -6.6015034914016724e-01 4.4744126498699188e-02 + <_> + 2.7001083374023438e+01 + + 1 2 891 7.4500000000000000e+01 0 -1 892 + 9.5000000000000000e+00 -2 -3 893 1.0500000000000000e+01 + + -7.7140247821807861e-01 1.7287059128284454e-01 + -9.5679062604904175e-01 2.9170122742652893e-01 + <_> + 2.6600372314453125e+01 + + 1 2 894 5.0000000000000000e-01 0 -1 895 + 1.5000000000000000e+00 -2 -3 896 1.5000000000000000e+00 + + -6.1320728063583374e-01 3.7253630161285400e-01 + 5.1001715660095215e-01 -4.2740473151206970e-01 + <_> + 2.6939287185668945e+01 + + 1 2 897 742. 0 -1 898 1.5000000000000000e+00 -2 -3 899 + 4.6500000000000000e+01 + + 6.4842426776885986e-01 -6.8702745437622070e-01 + 5.3773084655404091e-03 7.0070070028305054e-01 + <_> + 2.7120637893676758e+01 + + 1 2 900 4.7500000000000000e+01 0 -1 901 + 2.1500000000000000e+01 -2 -3 902 155. + + -2.1175275743007660e-01 3.5446098446846008e-01 + 3.6745795607566833e-01 -7.7352613210678101e-01 + <_> + 2.6940479278564453e+01 + + 1 2 903 5.5000000000000000e+00 0 -1 904 + 5.0000000000000000e-01 -2 -3 905 5.0000000000000000e-01 + + -4.2342516779899597e-01 4.6100237965583801e-01 + 7.2207629680633545e-02 -5.1426035165786743e-01 + <_> + 2.6880437850952148e+01 + + 1 2 906 4.1050000000000000e+02 0 -1 907 + 3.5000000000000000e+00 -2 -3 908 1.0185000000000000e+03 + + 7.6362460851669312e-01 -2.9716432094573975e-01 + 6.9237434864044189e-01 -6.0041967779397964e-02 + <_> + 2.6966255187988281e+01 + + 1 2 909 5.0000000000000000e-01 0 -1 910 28. -2 -3 911 + 2.5000000000000000e+00 + + -7.3636984825134277e-01 8.9863502979278564e-01 + 5.1865053176879883e-01 -1.0253517329692841e-01 + <_> + 2.7442039489746094e+01 + + 1 2 912 2.3500000000000000e+01 0 -1 913 + 2.5000000000000000e+00 -2 -3 914 550. + + 1.5000563859939575e-01 -4.6704238653182983e-01 + -6.6705381870269775e-01 4.7578340768814087e-01 + <_> + 2.7651542663574219e+01 + + 1 2 915 2.0050000000000000e+02 0 -1 916 + 2.5000000000000000e+00 -2 -3 917 3.5000000000000000e+00 + + -6.6723048686981201e-01 2.0950356125831604e-01 + 3.3526617288589478e-01 -7.9762780666351318e-01 + <_> + 2.7623653411865234e+01 + + 1 2 918 8.5000000000000000e+00 0 -1 919 + 5.5000000000000000e+00 -2 -3 920 5.5000000000000000e+00 + + -8.1512671709060669e-01 1.2574225664138794e-01 + 4.8598203063011169e-01 -1.5266139805316925e-01 + <_> + 2.7450769424438477e+01 + + 1 2 921 5.5000000000000000e+00 0 -1 922 + 6.5000000000000000e+00 -2 -3 923 5.0000000000000000e-01 + + -2.1216700971126556e-01 5.0396865606307983e-01 + 5.1462185382843018e-01 -4.5113617181777954e-01 + <_> + 2.7734930038452148e+01 + + 1 2 924 644. 0 -1 925 1.1500000000000000e+01 -2 -3 926 + 1.2050000000000000e+02 + + 2.5870633125305176e-01 -8.3483195304870605e-01 + -6.0892283916473389e-01 2.8416162729263306e-01 + <_> + 2.7435287475585938e+01 + + 1 2 927 2.5000000000000000e+00 0 -1 928 + 1.5000000000000000e+00 -2 -3 929 658. + + -9.0528321266174316e-01 5.4103326797485352e-01 + -2.9964354634284973e-01 4.7055888175964355e-01 + <_> + 2.7890865325927734e+01 + + 1 2 930 2.6065000000000000e+03 0 -1 931 + 3.0950000000000000e+02 -2 -3 932 3.6500000000000000e+01 + + -1.2102564424276352e-01 4.5557883381843567e-01 + -9.6796959638595581e-01 4.1553020477294922e-01 + <_> + 2.7985542297363281e+01 + + 1 2 933 1.2535000000000000e+03 0 -1 934 + 6.4950000000000000e+02 -2 -3 935 4.1650000000000000e+02 + + 6.4220869541168213e-01 -4.2341175675392151e-01 + 5.5095940828323364e-01 -3.7539717555046082e-01 + <_> + 2.8142776489257812e+01 + + 1 2 936 5.0000000000000000e-01 0 -1 937 + 4.5000000000000000e+00 -2 -3 938 3.7500000000000000e+01 + + -3.2875818014144897e-01 4.3458873033523560e-01 + -5.8713775873184204e-01 1.6683255136013031e-01 + <_> + 2.8195165634155273e+01 + + 1 2 939 7.7450000000000000e+02 0 -1 940 + 2.5000000000000000e+00 -2 -3 941 7.9250000000000000e+02 + + 3.3088469505310059e-01 -7.3728382587432861e-01 + 4.7910848259925842e-01 -1.5558865666389465e-01 + <_> + 2.8348829269409180e+01 + + 1 2 942 2.2850000000000000e+02 0 -1 943 + 2.7500000000000000e+01 -2 -3 944 5.2500000000000000e+01 + + -9.7540810704231262e-02 4.9717679619789124e-01 + -8.4607970714569092e-01 3.1448280811309814e-01 + <_> + 2.8368389129638672e+01 + + 1 2 945 5.5000000000000000e+00 0 -1 946 + 5.5000000000000000e+00 -2 -3 947 5.0000000000000000e-01 + + -7.9352790117263794e-01 4.7426006197929382e-01 + 3.1184694170951843e-01 -3.9333003759384155e-01 + <_> + 2.8678846359252930e+01 + + 1 2 948 9.5500000000000000e+01 0 -1 949 + 1.3250000000000000e+02 -2 -3 950 85. + + 8.9399956166744232e-02 -7.3296272754669189e-01 + -7.4362647533416748e-01 3.2927182316780090e-01 + <_> + 2.8603195190429688e+01 + + 1 2 951 2.3500000000000000e+01 0 -1 952 + 5.5000000000000000e+00 -2 -3 953 1.5500000000000000e+01 + + 2.9263785481452942e-01 -2.7861267328262329e-01 + 2.4879254400730133e-02 -8.7280374765396118e-01 + <_> + 2.8429206848144531e+01 + + 1 2 954 5.0000000000000000e-01 0 -1 955 + 7.5000000000000000e+00 -2 -3 956 1.1050000000000000e+02 + + -4.9112609028816223e-01 4.5099055767059326e-01 + -6.6482228040695190e-01 3.8441817741841078e-03 + <_> + 2.8728115081787109e+01 + + 1 2 957 4.5000000000000000e+00 0 -1 958 + 3.0500000000000000e+01 -2 -3 959 9.5000000000000000e+00 + + 3.4782031178474426e-01 -4.3692314624786377e-01 + -5.0424945354461670e-01 4.8909524083137512e-01 + <_> + 2.9034227371215820e+01 + + 1 2 960 8.5000000000000000e+00 0 -1 961 1313. -2 -3 962 + 7.5000000000000000e+00 + + 4.1847491264343262e-01 -7.2316378355026245e-01 + 5.3542798757553101e-01 -6.9837749004364014e-02 + <_> + 2.9042299270629883e+01 + + 1 2 963 8.2350000000000000e+02 0 -1 964 + 6.1500000000000000e+01 -2 -3 965 1.0848500000000000e+04 + + -2.7015477418899536e-01 2.4192942678928375e-01 + 9.2728316783905029e-01 -1. + <_> + 2.9266605377197266e+01 + + 1 2 966 3.5500000000000000e+01 0 -1 967 + 1.1500000000000000e+01 -2 -3 968 474. + + 3.2317626476287842e-01 -2.3886755108833313e-01 + -9.2069733142852783e-01 9.9993713200092316e-02 + <_> + 2.9196119308471680e+01 + + 1 2 969 1.5000000000000000e+00 0 -1 970 50. -2 -3 971 + 4.5000000000000000e+00 + + -8.8119459152221680e-01 1.5396067500114441e-01 + 3.5588577389717102e-01 -1.8907056748867035e-01 + <_> + 2.8916269302368164e+01 + + 1 2 972 2.7500000000000000e+01 0 -1 973 78. -2 -3 974 + 1.4750000000000000e+02 + + 9.6468514204025269e-01 -2.7984911203384399e-01 + 5.2942144870758057e-01 -5.4215109348297119e-01 + <_> + 2.9137155532836914e+01 + + 1 2 975 2.3500000000000000e+01 0 -1 976 + 5.7850000000000000e+02 -2 -3 977 2.9250000000000000e+02 + + 2.3396319150924683e-01 -8.4364879131317139e-01 + -3.0435711145401001e-01 3.2314890623092651e-01 + <_> + 2.9115297317504883e+01 + + 1 2 978 5.0000000000000000e-01 0 -1 979 + 3.9550000000000000e+02 -2 -3 980 5.5000000000000000e+00 + + 3.9777445793151855e-01 -7.7888238430023193e-01 + -4.1580772399902344e-01 3.4073171019554138e-01 + <_> + 2.9551794052124023e+01 + + 1 2 981 1.8785000000000000e+03 0 -1 982 + 5.9715000000000000e+03 -2 -3 983 6.4250000000000000e+02 + + -1.2244975566864014e-01 6.9085955619812012e-01 + -5.9161955118179321e-01 2.9289481043815613e-01 + <_> + 2.9916490554809570e+01 + + 1 2 984 3.6500000000000000e+01 0 -1 985 + 5.5000000000000000e+00 -2 -3 986 6.5000000000000000e+00 + + -8.7442290782928467e-01 9.8645307123661041e-02 + 4.4346800446510315e-01 -1.5005703270435333e-01 + <_> + 2.9763261795043945e+01 + + 1 2 987 3.2500000000000000e+01 0 -1 988 + 1.0500000000000000e+01 -2 -3 989 4.6500000000000000e+01 + + -3.8456574082374573e-01 3.4571200609207153e-01 + 5.5213904380798340e-01 -5.1309728622436523e-01 + <_> + 3.0075271606445312e+01 + + 1 2 990 5.5000000000000000e+00 0 -1 991 3216. -2 -3 992 57. + + 3.7469649314880371e-01 -7.7058547735214233e-01 + -6.3845652341842651e-01 4.0090378373861313e-02 + <_> + 3.0020376205444336e+01 + + 1 2 993 6.6650000000000000e+02 0 -1 994 + 1.5000000000000000e+00 -2 -3 995 1.6650000000000000e+02 + + 6.1095565557479858e-01 -6.7465776205062866e-01 + 2.2271032631397247e-01 -8.2703709602355957e-01 + <_> + 2.9878087997436523e+01 + + 1 2 996 5.5000000000000000e+00 0 -1 997 + 1.1500000000000000e+01 -2 -3 998 6.2500000000000000e+01 + + -4.6279782056808472e-01 1.8749718368053436e-01 + 6.7090582847595215e-01 -1.3304303586483002e-01 + <_> + 2.9944360733032227e+01 + + 1 2 999 1.5000000000000000e+00 0 -1 1000 + 2.5000000000000000e+00 -2 -3 1001 2.5000000000000000e+00 + + -1. 4.3671074509620667e-01 6.6273018717765808e-02 + -5.3205168247222900e-01 + <_> + 2.9942871093750000e+01 + + 1 2 1002 5.5000000000000000e+00 0 -1 1003 + 3.7450000000000000e+02 -2 -3 1004 4.5000000000000000e+00 + + 6.1623644828796387e-01 -4.8089489340782166e-01 + 5.9936344623565674e-01 -3.1623546034097672e-02 + <_> + 3.0450216293334961e+01 + + 1 2 1005 7.8750000000000000e+02 0 -1 1006 + 6.7550000000000000e+02 -2 -3 1007 7.0250000000000000e+02 + + -4.9125915765762329e-01 5.5245697498321533e-01 + 5.0734555721282959e-01 -1.7348597943782806e-01 + <_> + 3.0483926773071289e+01 + + 1 2 1008 2.2350000000000000e+02 0 -1 1009 + 5.5000000000000000e+00 -2 -3 1010 2.4500000000000000e+01 + + 5.1597571372985840e-01 -3.2840871810913086e-01 + -4.1519615054130554e-01 3.1820172071456909e-01 + <_> + 3.0558099746704102e+01 + + 1 2 1011 4.8500000000000000e+01 0 -1 1012 + 5.5000000000000000e+00 -2 -3 1013 2.0500000000000000e+01 + + 7.4174232780933380e-02 -6.8477684259414673e-01 + -9.2985051870346069e-01 3.0161842703819275e-01 + <_> + 3.0625425338745117e+01 + + 1 2 1014 1.8500000000000000e+01 0 -1 1015 + 9.3500000000000000e+01 -2 -3 1016 1.4050000000000000e+02 + + -8.1940811872482300e-01 2.9973128437995911e-01 + 7.6479032635688782e-02 -6.5602862834930420e-01 + <_> + 3.0697441101074219e+01 + + 1 2 1017 3.7500000000000000e+01 0 -1 1018 + 2.1500000000000000e+01 -2 -3 1019 5804. + + -4.4756698608398438e-01 2.7423384785652161e-01 + -6.8169790506362915e-01 2.0900464057922363e-01 + <_> + 3.0949892044067383e+01 + + 1 2 1020 5.0000000000000000e-01 0 -1 1021 + 5.5000000000000000e+00 -2 -3 1022 4.5000000000000000e+00 + + -6.4901775121688843e-01 2.5245016813278198e-01 + 2.4039171636104584e-01 -6.1729639768600464e-01 + <_> + 3.0929098129272461e+01 + + 1 2 1023 5.0000000000000000e-01 0 -1 1024 + 6.5000000000000000e+00 -2 -3 1025 1.4500000000000000e+01 + + -3.9928469061851501e-01 5.0110679864883423e-01 + -7.4043375253677368e-01 -4.4123314321041107e-02 + <_> + 3.1333951950073242e+01 + + 1 2 1026 6.5000000000000000e+00 0 -1 1027 + 2.1500000000000000e+01 -2 -3 1028 3.9500000000000000e+01 + + -5.8101430535316467e-02 6.1747199296951294e-01 + 2.6098625734448433e-02 -6.9707942008972168e-01 + <_> + 3.1116010665893555e+01 + + 1 2 1029 2.0150000000000000e+02 0 -1 1030 + 5.0000000000000000e-01 -2 -3 1031 2.8750000000000000e+02 + + 2.9852050542831421e-01 -4.3055999279022217e-01 + 6.7561793327331543e-01 -8.7017469108104706e-02 + <_> + 3.1032897949218750e+01 + + 1 2 1032 8.5000000000000000e+00 0 -1 1033 + 3.5000000000000000e+00 -2 -3 1034 2.3500000000000000e+01 + + -8.2436734437942505e-01 7.9362380504608154e-01 + 3.3129659295082092e-01 -2.2134104371070862e-01 + <_> + 3.0731082916259766e+01 + + 1 2 1035 1.5500000000000000e+01 0 -1 1036 + 1.5000000000000000e+00 -2 -3 1037 2.0500000000000000e+01 + + 5.2363544702529907e-01 -8.2277619838714600e-01 + 3.4363475441932678e-01 -3.0181473493576050e-01 + <_> + 3.1582773208618164e+01 + + 1 2 1038 2.3500000000000000e+01 0 -1 1039 256. -2 -3 1040 + 1245. + + 4.0018074214458466e-02 -5.4246288537979126e-01 + -7.1379941701889038e-01 8.5168963670730591e-01 + <_> + 3.0922315597534180e+01 + + 1 2 1041 1.1500000000000000e+01 0 -1 1042 + 9.7500000000000000e+01 -2 -3 1043 4.2050000000000000e+02 + + 3.3170649409294128e-01 -6.6045612096786499e-01 + -1.4949633181095123e-01 5.1487708091735840e-01 + <_> + 3.0648450851440430e+01 + + 1 2 1044 5.7750000000000000e+02 0 -1 1045 + 5.0000000000000000e-01 -2 -3 1046 3.8250000000000000e+02 + + 4.8874342441558838e-01 -8.4576064348220825e-01 + 6.7698836326599121e-01 -6.0642462223768234e-02 + <_> + 3.0702632904052734e+01 + + 1 2 1047 2.2500000000000000e+01 0 -1 1048 + 1.2950000000000000e+02 -2 -3 1049 3.5650000000000000e+02 + + 5.4180499166250229e-02 -5.0506794452667236e-01 + 7.7279126644134521e-01 -4.4330042600631714e-01 + <_> + 3.1123544692993164e+01 + + 1 2 1050 2.1500000000000000e+01 0 -1 1051 + 1.8500000000000000e+01 -2 -3 1052 5.9500000000000000e+01 + + -3.4420540928840637e-01 5.7321655750274658e-01 + 4.2091187834739685e-01 -6.6199111938476562e-01 + <_> + 3.0851852416992188e+01 + + 1 2 1053 1.5000000000000000e+00 0 -1 1054 + 4.5000000000000000e+00 -2 -3 1055 5.0000000000000000e-01 + + -8.3376497030258179e-01 5.1961439847946167e-01 + 1.9672468304634094e-01 -3.8548988103866577e-01 + <_> + 3.1271551132202148e+01 + + 1 2 1056 5.5000000000000000e+00 0 -1 1057 + 1.5000000000000000e+00 -2 -3 1058 3.2500000000000000e+01 + + 1.9125646352767944e-01 -4.8435854911804199e-01 + 6.1247032880783081e-01 -2.2513453662395477e-01 + <_> + 3.1481870651245117e+01 + + 1 2 1059 2.6500000000000000e+01 0 -1 1060 160. -2 -3 1061 + 1.5000000000000000e+00 + + 5.5120378732681274e-01 -7.5941944122314453e-01 + 4.1089880466461182e-01 -1.3137997686862946e-01 + <_> + 3.1036325454711914e+01 + + 1 2 1062 1.5500000000000000e+01 0 -1 1063 + 1.4500000000000000e+01 -2 -3 1064 2.1500000000000000e+01 + + 3.4304007887840271e-02 -6.1823207139968872e-01 + -2.7733555436134338e-01 6.1952215433120728e-01 + <_> + 3.1423891067504883e+01 + + 1 2 1065 2.5450000000000000e+02 0 -1 1066 + 1.2500000000000000e+01 -2 -3 1067 1.4500000000000000e+01 + + 4.7979310154914856e-01 -9.3194240331649780e-01 + -1.1963248252868652e-01 4.4283005595207214e-01 + <_> + 3.0981994628906250e+01 + + 1 2 1068 4.5000000000000000e+00 0 -1 1069 + 1.5000000000000000e+00 -2 -3 1070 5.0000000000000000e-01 + + -7.1386426687240601e-01 3.3223813772201538e-01 + 5.5634075403213501e-01 -4.5681276917457581e-01 + <_> + 3.1151826858520508e+01 + + 1 2 1071 8.3500000000000000e+01 0 -1 1072 + 6.5000000000000000e+00 -2 -3 1073 32. + + -6.9022941589355469e-01 1.6983160376548767e-01 + -7.8779727220535278e-01 1. + <_> + 3.1287761688232422e+01 + + 1 2 1074 4.2250000000000000e+02 0 -1 1075 + 1.6785000000000000e+03 -2 -3 1076 3.4085000000000000e+03 + + -2.1672263741493225e-01 7.0122992992401123e-01 + -5.5317509174346924e-01 1.3593602180480957e-01 + <_> + 3.1590259552001953e+01 + + 1 2 1077 3.1150000000000000e+02 0 -1 1078 + 1.1500000000000000e+01 -2 -3 1079 1.5000000000000000e+00 + + -4.2860367894172668e-01 3.0249705910682678e-01 + 8.6132842302322388e-01 -5.9583419561386108e-01 + <_> + 3.1790189743041992e+01 + + 1 2 1080 9.3500000000000000e+01 0 -1 1081 + 8.5000000000000000e+00 -2 -3 1082 2.5000000000000000e+00 + + -8.5307538509368896e-01 1.9993139803409576e-01 + 5.2050822973251343e-01 -7.1924048662185669e-01 + <_> + 3.1949237823486328e+01 + + 1 2 1083 1.5000000000000000e+00 0 -1 1084 + 1.8500000000000000e+01 -2 -3 1085 4.7500000000000000e+01 + + -8.7075895071029663e-01 4.1160404682159424e-01 + -4.2329508066177368e-01 3.9578995108604431e-01 + <_> + 3.1551105499267578e+01 + + 1 2 1086 5.0000000000000000e-01 0 -1 1087 + 7.1500000000000000e+01 -2 -3 1088 5.0000000000000000e-01 + + 4.7251659631729126e-01 -6.8467688560485840e-01 + 3.0512693524360657e-01 -3.9813303947448730e-01 + <_> + 3.1931394577026367e+01 + + 1 2 1089 1.9150000000000000e+02 0 -1 1090 + 4.5000000000000000e+00 -2 -3 1091 7.6950000000000000e+02 + + 1.9683115184307098e-01 -5.8899974822998047e-01 + -6.5470945835113525e-01 3.8028964400291443e-01 + <_> + 3.2017967224121094e+01 + + 1 2 1092 7.5000000000000000e+00 0 -1 1093 + 2.8500000000000000e+01 -2 -3 1094 3.7500000000000000e+01 + + 2.7054101228713989e-01 -5.6520724296569824e-01 + -6.2938737869262695e-01 8.6574614048004150e-02 + <_> + 3.2285461425781250e+01 + + 1 2 1095 5.8750000000000000e+02 0 -1 1096 + 5.0000000000000000e-01 -2 -3 1097 1.5500000000000000e+01 + + 1.0511577874422073e-01 -6.9365251064300537e-01 + -6.4478015899658203e-01 2.6749077439308167e-01 + <_> + 3.2811119079589844e+01 + + 1 2 1098 2.1500000000000000e+01 0 -1 1099 + 4.1500000000000000e+01 -2 -3 1100 559. + + -2.0592536032199860e-01 3.7386643886566162e-01 + 7.8755700588226318e-01 -6.8481349945068359e-01 + <_> + 3.2689319610595703e+01 + + 1 2 1101 5.7550000000000000e+02 0 -1 1102 + 3.5000000000000000e+00 -2 -3 1103 9.6500000000000000e+01 + + 3.9178147912025452e-01 -1.2180019915103912e-01 + -9.6077018976211548e-01 -1.4056563377380371e-01 + <_> + 3.2619079589843750e+01 + + 1 2 1104 2.5000000000000000e+00 0 -1 1105 43. -2 -3 1106 + 2.5000000000000000e+00 + + -8.9122837781906128e-01 4.5819079875946045e-01 + 5.5948436260223389e-01 -7.0240341126918793e-02 + <_> + 3.3039958953857422e+01 + + 1 2 1107 2.3955000000000000e+03 0 -1 1108 + 1.2535000000000000e+03 -2 -3 1109 4.0405000000000000e+03 + + 2.9499965906143188e-01 -2.6054748892784119e-01 + 9.8911577463150024e-01 -1. + <_> + 3.3041172027587891e+01 + + 1 2 1110 2.0850000000000000e+02 0 -1 1111 + 2.7500000000000000e+01 -2 -3 1112 4.5000000000000000e+00 + + -6.7137396335601807e-01 1.2141949264332652e-03 + 6.0118967294692993e-01 -2.0657041668891907e-01 + <_> + 3.2776119232177734e+01 + + 1 2 1113 3.5000000000000000e+00 0 -1 1114 + 6.5000000000000000e+00 -2 -3 1115 3.0500000000000000e+01 + + -2.2868818044662476e-01 5.7510751485824585e-01 + -3.6484047770500183e-01 5.1262056827545166e-01 + <_> + 3.2935546875000000e+01 + + 1 2 1116 5.0000000000000000e-01 0 -1 1117 + 2.5000000000000000e+00 -2 -3 1118 5.0000000000000000e-01 + + -7.3760849237442017e-01 4.5924603939056396e-01 + 1.5942642092704773e-01 -4.6601155400276184e-01 + <_> + 3.2656055450439453e+01 + + 1 2 1119 3.3500000000000000e+01 0 -1 1120 + 3.4500000000000000e+01 -2 -3 1121 3.9150000000000000e+02 + + -2.7949050068855286e-01 3.4181603789329529e-01 + 7.1765547990798950e-01 -7.6309484243392944e-01 + <_> + 3.2747634887695312e+01 + + 1 2 1122 2.5000000000000000e+00 0 -1 1123 + 2.5000000000000000e+00 -2 -3 1124 3.5250000000000000e+02 + + -7.4318218231201172e-01 5.3260874748229980e-01 + -5.0913441181182861e-01 9.1580078005790710e-02 + <_> + 3.3188011169433594e+01 + + 1 2 1125 5.6500000000000000e+01 0 -1 1126 + 3.2500000000000000e+01 -2 -3 1127 3.9500000000000000e+01 + + -6.4126682281494141e-01 4.9496468901634216e-01 + -3.9145907759666443e-01 4.4037669897079468e-01 + <_> + 3.3416931152343750e+01 + + 1 2 1128 7.0500000000000000e+01 0 -1 1129 + 1.1500000000000000e+01 -2 -3 1130 9.5000000000000000e+00 + + -3.8201475143432617e-01 2.2891646623611450e-01 + -8.5659736394882202e-01 6.1013686656951904e-01 + <_> + 3.3275886535644531e+01 + + 1 2 1131 4.0500000000000000e+01 0 -1 1132 + 1.9500000000000000e+01 -2 -3 1133 1.3500000000000000e+01 + + 2.6871705055236816e-01 -6.3255614042282104e-01 + 2.3965831100940704e-01 -6.3516211509704590e-01 + <_> + 3.3399391174316406e+01 + + 1 2 1134 5.5000000000000000e+00 0 -1 1135 + 8.5000000000000000e+00 -2 -3 1136 3.0500000000000000e+01 + + -6.6200548410415649e-01 1.5101595222949982e-01 + -7.6606094837188721e-01 2.5947886705398560e-01 + <_> + 3.3559207916259766e+01 + + 1 2 1137 6.5000000000000000e+00 0 -1 1138 + 8.2500000000000000e+01 -2 -3 1139 1.6500000000000000e+01 + + 7.6681274175643921e-01 -6.3294899463653564e-01 + -5.5192285776138306e-01 2.3842744529247284e-02 + <_> + 3.3856239318847656e+01 + + 1 2 1140 1.0500000000000000e+01 0 -1 1141 + 1.7350000000000000e+02 -2 -3 1142 2.7550000000000000e+02 + + 2.9703170061111450e-01 -5.5057585239410400e-01 + -6.4888852834701538e-01 1.1229314655065536e-01 + <_> + 3.3721168518066406e+01 + + 1 2 1143 3.5000000000000000e+00 0 -1 1144 126. -2 -3 1145 + 2.5000000000000000e+00 + + 9.2471975088119507e-01 -7.2330892086029053e-01 + 3.9742922782897949e-01 -1.3506934046745300e-01 + <_> + 3.4096935272216797e+01 + + 1 2 1146 2.3500000000000000e+01 0 -1 1147 + 1.9500000000000000e+01 -2 -3 1148 6.6500000000000000e+01 + + -5.5066823959350586e-01 3.2355815172195435e-01 + 3.7576669454574585e-01 -2.6415929198265076e-01 + <_> + 3.4108264923095703e+01 + + 1 2 1149 1.5000000000000000e+00 0 -1 1150 + 6.5000000000000000e+00 -2 -3 1151 5.0500000000000000e+01 + + -9.7412526607513428e-01 5.2388346195220947e-01 + -4.9519532918930054e-01 1.9004400074481964e-01 + <_> + 3.3904502868652344e+01 + + 1 2 1152 7.7250000000000000e+02 0 -1 1153 77. -2 -3 1154 + 4.8350000000000000e+02 + + -6.9026130437850952e-01 8.2613104581832886e-01 + 6.4011102914810181e-01 -8.1689134240150452e-02 + <_> + 3.4277988433837891e+01 + + 1 2 1155 5.0000000000000000e-01 0 -1 1156 + 7.3150000000000000e+02 -2 -3 1157 5.0000000000000000e-01 + + 4.5011767745018005e-01 -2.4998305737972260e-01 + 8.2632339000701904e-01 -4.2073485255241394e-01 + <_> + 3.4078739166259766e+01 + + 1 2 1158 2.0950000000000000e+02 0 -1 1159 + 1.6755000000000000e+03 -2 -3 1160 6.1815000000000000e+03 + + -2.7588048577308655e-01 9.5124208927154541e-01 + 6.4596521854400635e-01 -3.6611458659172058e-01 + <_> + 3.4438789367675781e+01 + + 1 2 1161 1.5500000000000000e+01 0 -1 1162 + 2.1500000000000000e+01 -2 -3 1163 4.4500000000000000e+01 + + -3.0783519148826599e-01 3.6005032062530518e-01 + 4.5609518885612488e-01 -6.2639898061752319e-01 + <_> + 3.4638523101806641e+01 + + 1 2 1164 3.1500000000000000e+01 0 -1 1165 + 7.5000000000000000e+00 -2 -3 1166 3.2350000000000000e+02 + + -9.4682770967483521e-01 1.9973398745059967e-01 + -6.2348783016204834e-01 6.9902861118316650e-01 + <_> + 3.4201782226562500e+01 + + 1 2 1167 7.5000000000000000e+00 0 -1 1168 + 1.5000000000000000e+00 -2 -3 1169 1.2500000000000000e+01 + + 3.3168455958366394e-01 -4.3674397468566895e-01 + -6.4757126569747925e-01 2.0459994673728943e-01 + <_> + 3.4516929626464844e+01 + + 1 2 1170 1.6500000000000000e+01 0 -1 1171 + 5.0000000000000000e-01 -2 -3 1172 675. + + 2.3890937864780426e-01 -5.7110768556594849e-01 + 3.1514799594879150e-01 -1. + <_> + 3.4619071960449219e+01 + + 1 2 1173 8.6500000000000000e+01 0 -1 1174 + 4.5000000000000000e+00 -2 -3 1175 1.7500000000000000e+01 + + 7.6261973381042480e-01 -8.6133646965026855e-01 -1. + 1.0214501619338989e-01 + <_> + 3.4869640350341797e+01 + + 1 2 1176 5.0000000000000000e-01 0 -1 1177 + 1.2315000000000000e+03 -2 -3 1178 5.0000000000000000e-01 + + 3.7597665190696716e-01 -6.9864195585250854e-01 + 2.0625047385692596e-01 -4.8068267107009888e-01 + <_> + 3.5086204528808594e+01 + + 1 2 1179 1.6500000000000000e+01 0 -1 1180 + 8.3500000000000000e+01 -2 -3 1181 7.5000000000000000e+00 + + 1.4784654974937439e-01 -8.3145272731781006e-01 + -6.7620545625686646e-01 2.1656262874603271e-01 + <_> + 3.4877140045166016e+01 + + 1 2 1182 5.0000000000000000e-01 0 -1 1183 + 3.5000000000000000e+00 -2 -3 1184 969. + + -6.4537084102630615e-01 2.7460998296737671e-01 + -5.3607624769210815e-01 2.8266566991806030e-01 + <_> + 3.5179489135742188e+01 + + 1 2 1185 1.5000000000000000e+00 0 -1 1186 + 7.2500000000000000e+01 -2 -3 1187 3.1500000000000000e+01 + + 9.7988271713256836e-01 -5.9574514627456665e-01 + -1.8132425844669342e-01 5.5573570728302002e-01 + <_> + 3.5144893646240234e+01 + + 1 2 1188 5.0000000000000000e-01 0 -1 1189 + 2.6500000000000000e+01 -2 -3 1190 8.1650000000000000e+02 + + -4.2640584707260132e-01 5.2214205265045166e-01 + 8.3740442991256714e-01 -2.8797909617424011e-01 + <_> + 3.5558689117431641e+01 + + 1 2 1191 5.0000000000000000e-01 0 -1 1192 + 2.6500000000000000e+01 -2 -3 1193 1.2500000000000000e+01 + + -4.3793568015098572e-01 4.1379487514495850e-01 + 1.8940502405166626e-01 -5.4046261310577393e-01 + <_> + 3.5233970642089844e+01 + + 1 2 1194 4.7500000000000000e+01 0 -1 1195 + 8.5000000000000000e+00 -2 -3 1196 338. + + 1.5260761976242065e-01 -4.2628118395805359e-01 + 5.9790462255477905e-01 -5.5013555288314819e-01 + <_> + 3.5332725524902344e+01 + + 1 2 1197 5.0000000000000000e-01 0 -1 1198 + 3.6500000000000000e+01 -2 -3 1199 1.7500000000000000e+01 + + -6.2585823237895966e-02 6.3506704568862915e-01 + -3.5257333517074585e-01 5.9659516811370850e-01 + <_> + 3.5257114410400391e+01 + + 1 2 1200 3.5000000000000000e+00 0 -1 1201 + 7.5000000000000000e+00 -2 -3 1202 1.8500000000000000e+01 + + -9.3612766265869141e-01 3.4692686796188354e-01 + 5.0016778707504272e-01 -7.5611986219882965e-02 + <_> + 3.5595767974853516e+01 + + 1 2 1203 1.0500000000000000e+01 0 -1 1204 + 1.8500000000000000e+01 -2 -3 1205 1.5000000000000000e+00 + + -9.5243799686431885e-01 7.0761454105377197e-01 + 3.3865371346473694e-01 -1.8447074294090271e-01 + <_> + 3.5873832702636719e+01 + + 1 2 1206 1.6350000000000000e+02 0 -1 1207 + 9.1500000000000000e+01 -2 -3 1208 19. + + -1.3119605183601379e-01 4.0907257795333862e-01 + -8.4312802553176880e-01 9.1352003812789917e-01 + <_> + 3.6231769561767578e+01 + + 1 2 1209 4.5000000000000000e+00 0 -1 1210 + 1.5000000000000000e+00 -2 -3 1211 2.0500000000000000e+01 + + -4.6025198698043823e-01 3.4153524041175842e-01 + -5.0537836551666260e-01 3.5793614387512207e-01 + <_> + 3.6177539825439453e+01 + + 1 2 1212 1.5500000000000000e+01 0 -1 1213 + 4.5000000000000000e+00 -2 -3 1214 5.8650000000000000e+02 + + -3.4014788269996643e-01 3.7431231141090393e-01 + -8.9153337478637695e-01 -8.3685964345932007e-02 + <_> + 3.5921119689941406e+01 + + 1 2 1215 5.0000000000000000e-01 0 -1 1216 + 8.5500000000000000e+01 -2 -3 1217 3.3350000000000000e+02 + + 7.2648537158966064e-01 -8.4184181690216064e-01 + -2.5641769170761108e-01 5.9225118160247803e-01 + <_> + 3.5762935638427734e+01 + + 1 2 1218 5.0695000000000000e+03 0 -1 1219 + 4.1865000000000000e+03 -2 -3 1220 1.8500000000000000e+01 + + -1.5818408131599426e-01 7.5127458572387695e-01 + -4.1771730780601501e-01 1.6759181022644043e-01 + <_> + 3.6343830108642578e+01 + + 1 2 1221 5.5000000000000000e+00 0 -1 1222 161. -2 -3 1223 + 5.5000000000000000e+00 + + -7.1770183742046356e-02 -8.2580149173736572e-01 + 6.3310110569000244e-01 -1.1210992932319641e-02 + <_> + 3.6239753723144531e+01 + + 1 2 1224 2.9500000000000000e+01 0 -1 1225 + 2.2500000000000000e+01 -2 -3 1226 2.5000000000000000e+00 + + -5.7685142755508423e-01 5.9265869855880737e-01 + 5.8708161115646362e-01 -1.0407686233520508e-01 + <_> + 3.6570693969726562e+01 + + 1 2 1227 2.6050000000000000e+02 0 -1 1228 + 5.1500000000000000e+01 -2 -3 1229 194. + + -1.3848701119422913e-01 3.8530793786048889e-01 + -9.9199587106704712e-01 7.3519229888916016e-01 + <_> + 3.6172859191894531e+01 + + 1 2 1230 4.5000000000000000e+00 0 -1 1231 2985. -2 -3 1232 + 4.1050000000000000e+02 + + 7.0713436603546143e-01 -7.4149054288864136e-01 + -3.9783236384391785e-01 1.8219061195850372e-01 + <_> + 3.6474601745605469e+01 + + 1 2 1233 7.2850000000000000e+02 0 -1 1234 + 1.0500000000000000e+01 -2 -3 1235 9.5000000000000000e+00 + + -8.5275667905807495e-01 3.0174070596694946e-01 + 5.2034640312194824e-01 -4.9349766969680786e-01 + <_> + 3.6498180389404297e+01 + + 1 2 1236 4.8500000000000000e+01 0 -1 1237 + 9.5000000000000000e+00 -2 -3 1238 4.5000000000000000e+00 + + 7.8738486766815186e-01 -7.6111316680908203e-01 + 5.0128465890884399e-01 -1.1157950758934021e-01 + <_> + 3.6698276519775391e+01 + + 1 2 1239 2.8850000000000000e+02 0 -1 1240 + 2.0500000000000000e+01 -2 -3 1241 1.2805000000000000e+03 + + -4.7094190120697021e-01 2.0009694993495941e-01 1. + -9.3752562999725342e-01 + <_> + 3.6857143402099609e+01 + + 1 2 1242 3.5000000000000000e+00 0 -1 1243 2854. -2 -3 1244 + 5.0000000000000000e-01 + + 4.4445955753326416e-01 -6.2877982854843140e-01 + 2.8415599465370178e-01 -4.0654498338699341e-01 + <_> + 3.6661224365234375e+01 + + 1 2 1245 6.3850000000000000e+02 0 -1 1246 + 1.3500000000000000e+01 -2 -3 1247 2.5000000000000000e+00 + + -2.8753396868705750e-01 4.5057922601699829e-01 + -9.3399870395660400e-01 6.8900948762893677e-01 + <_> + 3.7027565002441406e+01 + + 1 2 1248 1.1500000000000000e+01 0 -1 1249 + 3.5000000000000000e+00 -2 -3 1250 482. + + -8.2890731096267700e-01 3.8032263517379761e-01 + -6.3736891746520996e-01 2.2181304171681404e-02 + <_> + 3.7302738189697266e+01 + + 1 2 1251 1.5000000000000000e+00 0 -1 1252 + 6.5000000000000000e+00 -2 -3 1253 2.1500000000000000e+01 + + -8.7263113260269165e-01 2.7517196536064148e-01 + -6.8864667415618896e-01 -1.0606539435684681e-02 + <_> + 3.7514694213867188e+01 + + 1 2 1254 5.0000000000000000e-01 0 -1 1255 + 1.6555000000000000e+03 -2 -3 1256 2.5500000000000000e+01 + + 5.4653161764144897e-01 -3.8731038570404053e-01 + -2.6684281229972839e-01 5.9316390752792358e-01 + <_> + 3.7565513610839844e+01 + + 1 2 1257 5.7450000000000000e+02 0 -1 1258 + 2.9450000000000000e+02 -2 -3 1259 3.4500000000000000e+01 + + -7.9943376779556274e-01 1. 3.4340542554855347e-01 + -2.2570419311523438e-01 + <_> + 3.7413349151611328e+01 + + 1 2 1260 189. 0 -1 1261 5.0000000000000000e-01 -2 -3 1262 + 2.0500000000000000e+01 + + 7.8168439865112305e-01 -8.3374607563018799e-01 + -1.9817931950092316e-01 3.6079603433609009e-01 + <_> + 3.7554840087890625e+01 + + 1 2 1263 298. 0 -1 1264 3022. -2 -3 1265 + 1.9350000000000000e+02 + + -1.1193416081368923e-02 8.7101829051971436e-01 + 2.1728983521461487e-01 -4.2951995134353638e-01 + <_> + 3.7603076934814453e+01 + + 1 2 1266 1.1500000000000000e+01 0 -1 1267 + 2.5000000000000000e+00 -2 -3 1268 1.0050000000000000e+02 + + 1.7867322266101837e-01 -4.2928701639175415e-01 + 5.2659392356872559e-01 -6.2002837657928467e-01 + <_> + 3.7885494232177734e+01 + + 1 2 1269 1.4500000000000000e+01 0 -1 1270 + 2.5000000000000000e+00 -2 -3 1271 8.0500000000000000e+01 + + 1.8106105923652649e-01 -7.7528846263885498e-01 + -5.8309614658355713e-01 2.8241708874702454e-01 + <_> + 3.7499431610107422e+01 + + 1 2 1272 3.5500000000000000e+01 0 -1 1273 + 2.5000000000000000e+00 -2 -3 1274 7.5000000000000000e+00 + + -9.1437792778015137e-01 5.1539105176925659e-01 + -3.8606551289558411e-01 3.3163914084434509e-01 + <_> + 3.7937980651855469e+01 + + 1 2 1275 1.3500000000000000e+01 0 -1 1276 + 1.4500000000000000e+01 -2 -3 1277 7.9500000000000000e+01 + + -7.2145909070968628e-02 6.0647141933441162e-01 + -6.2856364250183105e-01 8.6137987673282623e-02 + <_> + 3.8185783386230469e+01 + + 1 2 1278 1.4500000000000000e+01 0 -1 1279 73. -2 -3 1280 + 1.0500000000000000e+01 + + -9.4152975082397461e-01 1. 2.4780233204364777e-01 + -4.0907081961631775e-01 + <_> + 3.7849395751953125e+01 + + 1 2 1281 5.0000000000000000e-01 0 -1 1282 + 4.5000000000000000e+00 -2 -3 1283 5.0000000000000000e-01 + + -5.0824928283691406e-01 5.6237548589706421e-01 + 5.4402673244476318e-01 -3.3638605475425720e-01 + <_> + 3.8386943817138672e+01 + + 1 2 1284 2.0450000000000000e+02 0 -1 1285 + 6.7250000000000000e+02 -2 -3 1286 1.2385000000000000e+03 + + 3.9266860485076904e-01 -3.8152101635932922e-01 + 5.9661215543746948e-01 -3.8554838299751282e-01 + <_> + 3.8467891693115234e+01 + + 1 2 1287 5.5000000000000000e+00 0 -1 1288 + 9.0500000000000000e+01 -2 -3 1289 1.5000000000000000e+00 + + 2.1883549168705940e-02 -6.2764549255371094e-01 + 7.0444834232330322e-01 -4.4701110571622849e-02 + <_> + 3.8550418853759766e+01 + + 1 2 1290 2.8350000000000000e+02 0 -1 1291 + 1.4500000000000000e+01 -2 -3 1292 58. + + -8.5395231842994690e-02 5.9592086076736450e-01 + 9.0824156999588013e-01 -8.9943450689315796e-01 + <_> + 3.8631130218505859e+01 + + 1 2 1293 2.5000000000000000e+00 0 -1 1294 + 9.5000000000000000e+00 -2 -3 1295 5.5000000000000000e+00 + + -3.6073815822601318e-01 5.3091663122177124e-01 + 1.6989825665950775e-01 -4.6344351768493652e-01 + <_> + 3.8474849700927734e+01 + + 1 2 1296 5.7750000000000000e+02 0 -1 1297 + 1.9250000000000000e+02 -2 -3 1298 2.6195000000000000e+03 + + -8.1247472763061523e-01 2.9322347044944763e-01 + 3.5261180996894836e-01 -2.4546836316585541e-01 + <_> + 3.8279983520507812e+01 + + 1 2 1299 4.4500000000000000e+01 0 -1 1300 1096. -2 -3 1301 + 5.0000000000000000e-01 + + 6.6110774874687195e-02 -7.6391810178756714e-01 + 5.6174814701080322e-01 -7.3350854218006134e-02 + <_> + 3.8626735687255859e+01 + + 1 2 1302 3.4350000000000000e+02 0 -1 1303 + 5.0000000000000000e-01 -2 -3 1304 7.1750000000000000e+02 + + 3.5977458953857422e-01 -2.1690338850021362e-01 + 9.9256932735443115e-01 -1. + <_> + 3.8572544097900391e+01 + + 1 2 1305 1.1500000000000000e+01 0 -1 1306 + 1.2500000000000000e+01 -2 -3 1307 5.0000000000000000e-01 + + -9.2809075117111206e-01 8.5182946920394897e-01 + 4.9062111973762512e-01 -5.4192960262298584e-02 + <_> + 3.8948635101318359e+01 + + 1 2 1308 4.2550000000000000e+02 0 -1 1309 + 7.6500000000000000e+01 -2 -3 1310 8986. + + -4.5830437541007996e-01 1.6672098636627197e-01 + 7.7317571640014648e-01 -2.2485339641571045e-01 + <_> + 3.9342456817626953e+01 + + 1 2 1311 6.9500000000000000e+01 0 -1 1312 + 3.5500000000000000e+01 -2 -3 1313 1.0545000000000000e+03 + + -1.2714000418782234e-02 6.2372517585754395e-01 + -5.7864826917648315e-01 5.6230723857879639e-01 + <_> + 3.9216064453125000e+01 + + 1 2 1314 5.2750000000000000e+02 0 -1 1315 + 1.9048500000000000e+04 -2 -3 1316 4.5000000000000000e+00 + + -1. 7.7397161722183228e-01 1.6222594678401947e-01 + -3.9657172560691833e-01 + <_> + 3.9446334838867188e+01 + + 1 2 1317 3.5000000000000000e+00 0 -1 1318 + 6.3500000000000000e+01 -2 -3 1319 288. + + 3.8338693976402283e-01 -9.0452802181243896e-01 + -5.4537796974182129e-01 2.3026967048645020e-01 + <_> + 3.9339183807373047e+01 + + 1 2 1320 1.1500000000000000e+01 0 -1 1321 + 5.0000000000000000e-01 -2 -3 1322 3472. + + 3.7719848752021790e-01 -2.7750793099403381e-01 + -7.6843172311782837e-01 3.3132901880890131e-03 + <_> + 3.9513347625732422e+01 + + 1 2 1323 2.1500000000000000e+01 0 -1 1324 + 4.5000000000000000e+00 -2 -3 1325 1.1500000000000000e+01 + + 1.7416687309741974e-01 -4.6917149424552917e-01 + 5.5244189500808716e-01 -4.0332382917404175e-01 + <_> + 3.9441356658935547e+01 + + 1 2 1326 2.5500000000000000e+01 0 -1 1327 + 5.0000000000000000e-01 -2 -3 1328 4.5000000000000000e+00 + + 1.5569829940795898e-01 -8.3738613128662109e-01 + 5.1308917999267578e-01 -9.2380218207836151e-02 + <_> + 3.9830265045166016e+01 + + 1 2 1329 6.8500000000000000e+01 0 -1 1330 + 1.2500000000000000e+01 -2 -3 1331 2043. + + -1.6650912165641785e-01 3.8890799880027771e-01 + -8.0130118131637573e-01 8.2459330558776855e-01 + <_> + 3.9304054260253906e+01 + + 1 2 1332 5.0000000000000000e-01 0 -1 1333 3671. -2 -3 1334 + 3.8850000000000000e+02 + + 4.6532985568046570e-01 -4.4042190909385681e-01 + -5.5587589740753174e-01 1.3195018470287323e-01 + <_> + 3.9642890930175781e+01 + + 1 2 1335 8.5000000000000000e+00 0 -1 1336 + 2.1500000000000000e+01 -2 -3 1337 4.7350000000000000e+02 + + -5.9328550100326538e-01 3.3883699774742126e-01 + -6.9553929567337036e-01 1.5794724225997925e-01 + <_> + 3.9908969879150391e+01 + + 1 2 1338 5.5000000000000000e+00 0 -1 1339 + 1.3500000000000000e+01 -2 -3 1340 1.7500000000000000e+01 + + -6.7269146442413330e-01 2.6607844233512878e-01 + 6.0325987637042999e-02 -6.9073736667633057e-01 + <_> + 3.9898288726806641e+01 + + 1 2 1341 2.5950000000000000e+02 0 -1 1342 + 1.5500000000000000e+01 -2 -3 1343 1467. + + -7.4252463877201080e-02 6.0873824357986450e-01 + 8.6466276645660400e-01 -9.0673094987869263e-01 + <_> + 4.0200969696044922e+01 + + 1 2 1344 2.2500000000000000e+01 0 -1 1345 + 2.5000000000000000e+00 -2 -3 1346 9.5000000000000000e+00 + + -6.9203126430511475e-01 3.0267745256423950e-01 + 5.9105551242828369e-01 -5.3770178556442261e-01 + <_> + 4.0379238128662109e+01 + + 1 2 1347 2.9500000000000000e+01 0 -1 1348 + 8.3450000000000000e+02 -2 -3 1349 2.5000000000000000e+00 + + 3.7345203757286072e-01 -8.9355528354644775e-01 + 5.5846959352493286e-01 -5.8389563113451004e-02 + <_> + 4.0466419219970703e+01 + + 1 2 1350 3.1150000000000000e+02 0 -1 1351 + 5.0000000000000000e-01 -2 -3 1352 43. + + 3.1653991341590881e-01 -4.0619984269142151e-01 + -9.6266198158264160e-01 5.1727998256683350e-01 + <_> + 4.0718650817871094e+01 + + 1 2 1353 2.6150000000000000e+02 0 -1 1354 98. -2 -3 1355 + 8.5000000000000000e+00 + + -5.2089494466781616e-01 2.5222977995872498e-01 + -6.5091305971145630e-01 5.5701977014541626e-01 + <_> + 4.0246669769287109e+01 + + 1 2 1356 5.0000000000000000e-01 0 -1 1357 + 7.5000000000000000e+00 -2 -3 1358 2.0850000000000000e+02 + + -7.2299337387084961e-01 5.0567185878753662e-01 + -4.7197958827018738e-01 2.6619127392768860e-01 + <_> + 4.0419990539550781e+01 + + 1 2 1359 5.4705000000000000e+03 0 -1 1360 + 5.4750000000000000e+02 -2 -3 1361 1.5750000000000000e+02 + + 1.7332153022289276e-01 -6.0361874103546143e-01 + -9.6441686153411865e-01 1. + <_> + 4.1056423187255859e+01 + + 1 2 1362 5.0000000000000000e-01 0 -1 1363 + 3.5000000000000000e+00 -2 -3 1364 7.8350000000000000e+02 + + 6.3643354177474976e-01 -8.3072267472743988e-02 + -3.8505536317825317e-01 5.1825720071792603e-01 + <_> + 4.0787433624267578e+01 + + 1 2 1365 8.5000000000000000e+00 0 -1 1366 + 4.1250000000000000e+02 -2 -3 1367 3.0850000000000000e+02 + + -2.2618213668465614e-02 -7.3404783010482788e-01 + 5.4074966907501221e-01 -6.5069526433944702e-01 + <_> + 4.0980438232421875e+01 + + 1 2 1368 1.0750000000000000e+02 0 -1 1369 + 4.5500000000000000e+01 -2 -3 1370 1.5500000000000000e+01 + + 2.9288902878761292e-01 -7.8175473213195801e-01 + 4.1299736499786377e-01 -2.0014704763889313e-01 + <_> + 4.0946659088134766e+01 + + 1 2 1371 2.2500000000000000e+01 0 -1 1372 + 1.6500000000000000e+01 -2 -3 1373 2.5000000000000000e+00 + + -6.0043293237686157e-01 2.2489283978939056e-01 + 5.3942525386810303e-01 -1.2392763793468475e-01 + <_> + 4.0625984191894531e+01 + + 1 2 1374 5.8450000000000000e+02 0 -1 1375 3981. -2 -3 1376 + 3.8850000000000000e+02 + + -6.5919399261474609e-01 7.3984676599502563e-01 + 6.0902094841003418e-01 -5.9394266456365585e-02 + <_> + 4.1078342437744141e+01 + + 1 2 1377 1.5000000000000000e+00 0 -1 1378 + 9.5000000000000000e+00 -2 -3 1379 2.5000000000000000e+00 + + -9.4205194711685181e-01 5.8499878644943237e-01 + 4.5235899090766907e-01 -1.7015253007411957e-01 + <_> + 4.1278953552246094e+01 + + 1 2 1380 2.7950000000000000e+02 0 -1 1381 + 2.7950000000000000e+02 -2 -3 1382 7572. + + -1.0575494915246964e-01 7.5965499877929688e-01 + -5.6243377923965454e-01 1.3653093576431274e-01 + <_> + 4.1171962738037109e+01 + + 1 2 1383 5.5000000000000000e+00 0 -1 1384 + 8.6950000000000000e+02 -2 -3 1385 3.5000000000000000e+00 + + 3.1256729364395142e-01 -4.9650138616561890e-01 + 5.3703850507736206e-01 -1.0799391567707062e-01 + <_> + 4.1153244018554688e+01 + + 1 2 1386 1.5000000000000000e+00 0 -1 1387 + 8.5000000000000000e+00 -2 -3 1388 1.4500000000000000e+01 + + -1.8950442969799042e-01 5.2447348833084106e-01 + -4.3827834725379944e-01 3.5529047250747681e-01 + <_> + 4.1464454650878906e+01 + + 1 2 1389 2.7500000000000000e+01 0 -1 1390 + 3.1500000000000000e+01 -2 -3 1391 4.5000000000000000e+00 + + -3.4287273883819580e-01 3.1121128797531128e-01 + 2.0723707973957062e-01 -7.9717916250228882e-01 + <_> + 4.1779788970947266e+01 + + 1 2 1392 1.5000000000000000e+00 0 -1 1393 + 1.8265000000000000e+03 -2 -3 1394 2.8650000000000000e+02 + + 8.0022591352462769e-01 -2.8835564851760864e-01 + 3.1533339619636536e-01 -3.5018000006675720e-01 + <_> + 4.2194210052490234e+01 + + 1 2 1395 2.2500000000000000e+01 0 -1 1396 + 2.2500000000000000e+01 -2 -3 1397 7.5000000000000000e+00 + + 7.3232901096343994e-01 -7.3244142532348633e-01 + 3.6955040693283081e-01 -2.0323853194713593e-01 + <_> + 4.1935131072998047e+01 + + 1 2 1398 9.4500000000000000e+01 0 -1 1399 + 4.0500000000000000e+01 -2 -3 1400 2.2500000000000000e+01 + + 1.9609075784683228e-01 -4.6288254857063293e-01 + 6.2146210670471191e-01 -3.8049280643463135e-01 + <_> + 4.2215938568115234e+01 + + 1 2 1401 2.9500000000000000e+01 0 -1 1402 + 5.0000000000000000e-01 -2 -3 1403 1.0500000000000000e+01 + + 3.9385579526424408e-02 -7.3405563831329346e-01 + -5.1055783033370972e-01 2.8080457448959351e-01 + <_> + 4.2273452758789062e+01 + + 1 2 1404 4.5450000000000000e+02 0 -1 1405 + 5.8750000000000000e+02 -2 -3 1406 9.5000000000000000e+00 + + -3.3196282386779785e-01 2.5219461321830750e-01 + 7.2692161798477173e-01 -8.5374397039413452e-01 + <_> + 4.2540458679199219e+01 + + 1 2 1407 1.5000000000000000e+00 0 -1 1408 + 1.0500000000000000e+01 -2 -3 1409 3.7950000000000000e+02 + + -5.1572650671005249e-01 2.6700666546821594e-01 + 5.4633575677871704e-01 -6.4842927455902100e-01 + <_> + 4.2285171508789062e+01 + + 1 2 1410 4.5000000000000000e+00 0 -1 1411 + 4.8500000000000000e+01 -2 -3 1412 1.1500000000000000e+01 + + -4.3229374289512634e-01 5.2580875158309937e-01 + -3.8174706697463989e-01 6.1482822895050049e-01 + <_> + 4.2519309997558594e+01 + + 1 2 1413 1.2500000000000000e+01 0 -1 1414 + 7.5000000000000000e+00 -2 -3 1415 3.7500000000000000e+01 + + -6.5897458791732788e-01 2.3413842916488647e-01 + -6.6297173500061035e-01 9.3680036067962646e-01 + <_> + 4.2602912902832031e+01 + + 1 2 1416 2.7850000000000000e+02 0 -1 1417 + 6.7750000000000000e+02 -2 -3 1418 6.5750000000000000e+02 + + -5.7975625991821289e-01 6.0615879297256470e-01 + -4.7606697678565979e-01 1.9234745204448700e-01 + <_> + 4.2477813720703125e+01 + + 1 2 1419 3.5000000000000000e+00 0 -1 1420 + 5.0000000000000000e-01 -2 -3 1421 9.6750000000000000e+02 + + -1. 5.3890687227249146e-01 -2.7986538410186768e-01 + 5.5624389648437500e-01 + <_> + 4.2815971374511719e+01 + + 1 2 1422 2.5000000000000000e+00 0 -1 1423 3470. -2 -3 1424 + 1.3150000000000000e+02 + + 3.3815622329711914e-01 -6.8323451280593872e-01 + -5.7661479711532593e-01 1.8929332494735718e-01 + <_> + 4.2939407348632812e+01 + + 1 2 1425 1835. 0 -1 1426 1485. -2 -3 1427 + 5.0000000000000000e-01 + + -9.3249452114105225e-01 8.5018444061279297e-01 + 1.2343621253967285e-01 -4.1629931330680847e-01 + <_> + 4.2931537628173828e+01 + + 1 2 1428 6.5000000000000000e+00 0 -1 1429 + 9.5000000000000000e+00 -2 -3 1430 8.3500000000000000e+01 + + -5.8253604173660278e-01 2.3116320371627808e-01 + 4.4566446542739868e-01 -2.5381112098693848e-01 + <_> + 4.2532341003417969e+01 + + 1 2 1431 801. 0 -1 1432 1.4500000000000000e+01 -2 -3 1433 + 2.2500000000000000e+01 + + 2.3233406245708466e-01 -8.8682103157043457e-01 + 2.7638220787048340e-01 -3.9919924736022949e-01 + <_> + 4.2818271636962891e+01 + + 1 2 1434 3.3500000000000000e+01 0 -1 1435 + 5.0000000000000000e-01 -2 -3 1436 5.5000000000000000e+00 + + 2.6199400424957275e-01 -7.7381122112274170e-01 + 3.9374157786369324e-01 -1.9156071543693542e-01 + <_> + 4.3225166320800781e+01 + + 1 2 1437 3.0650000000000000e+02 0 -1 1438 + 3.5000000000000000e+00 -2 -3 1439 2.2750000000000000e+02 + + 1.6485489904880524e-01 -5.3608208894729614e-01 + 4.0689289569854736e-01 -6.9017094373703003e-01 + <_> + 4.3414455413818359e+01 + + 1 2 1440 4.9500000000000000e+01 0 -1 1441 + 3.2550000000000000e+02 -2 -3 1442 7.5500000000000000e+01 + + -7.2704082727432251e-01 9.2259776592254639e-01 + 1.8928927183151245e-01 -7.1190369129180908e-01 + <_> + 4.3530220031738281e+01 + + 1 2 1443 8.5000000000000000e+00 0 -1 1444 + 5.5000000000000000e+00 -2 -3 1445 33. + + -2.6097178459167480e-01 3.5981386899948120e-01 + 5.5373930931091309e-01 -5.9446001052856445e-01 + <_> + 4.3589599609375000e+01 + + 1 2 1446 1.7500000000000000e+01 0 -1 1447 + 1.5000000000000000e+00 -2 -3 1448 7.1500000000000000e+01 + + -8.9150971174240112e-01 4.0421536564826965e-01 + -5.9817147254943848e-01 1.3356564939022064e-01 + <_> + 4.3756496429443359e+01 + + 1 2 1449 2.7150000000000000e+02 0 -1 1450 + 3.1500000000000000e+01 -2 -3 1451 7.5000000000000000e+00 + + -7.5597035884857178e-01 7.5368809700012207e-01 + 2.0741133391857147e-01 -3.4641715884208679e-01 + <_> + 4.4184627532958984e+01 + + 1 2 1452 3.4445000000000000e+03 0 -1 1453 + 1.3500000000000000e+01 -2 -3 1454 7.5000000000000000e+00 + + -3.4672267735004425e-02 6.4763146638870239e-01 + -5.8406358957290649e-01 9.5271444320678711e-01 + <_> + 4.4115615844726562e+01 + + 1 2 1455 351. 0 -1 1456 5.5000000000000000e+00 -2 -3 1457 + 1.3150000000000000e+02 + + 1. -9.0385907888412476e-01 5.6236469745635986e-01 + -6.9008864462375641e-02 + <_> + 4.3778049468994141e+01 + + 1 2 1458 2.1950000000000000e+02 0 -1 1459 + 1.7500000000000000e+01 -2 -3 1460 1446. + + 1.1805868148803711e-01 -4.6155539155006409e-01 + 8.1571227312088013e-01 -4.5998147130012512e-01 + <_> + 4.3705924987792969e+01 + + 1 2 1461 5.4500000000000000e+01 0 -1 1462 + 5.0000000000000000e-01 -2 -3 1463 2.0500000000000000e+01 + + 1.5270361304283142e-01 -7.6259005069732666e-01 + -4.3407937884330750e-01 3.2683727145195007e-01 + <_> + 4.3761566162109375e+01 + + 1 2 1464 1.5000000000000000e+00 0 -1 1465 + 2.5000000000000000e+00 -2 -3 1466 2.5000000000000000e+00 + + -4.2883574962615967e-01 4.9130806326866150e-01 + 7.2157061100006104e-01 -3.4332326054573059e-01 + <_> + 4.4159553527832031e+01 + + 1 2 1467 1.8850000000000000e+02 0 -1 1468 + 4.4500000000000000e+01 -2 -3 1469 1.6865000000000000e+03 + + -1.2656107544898987e-01 3.9798957109451294e-01 + -8.5940158367156982e-01 7.5859928131103516e-01 + <_> + 4.4086994171142578e+01 + + 1 2 1470 3.5000000000000000e+00 0 -1 1471 + 1.6500000000000000e+01 -2 -3 1472 2.0500000000000000e+01 + + -7.1025812625885010e-01 3.1149634718894958e-01 + 4.1715073585510254e-01 -5.0822889804840088e-01 + <_> + 4.4548297882080078e+01 + + 1 2 1473 5.0000000000000000e-01 0 -1 1474 + 6.3500000000000000e+01 -2 -3 1475 1.4450000000000000e+02 + + -1.9292996823787689e-01 5.2084052562713623e-01 + -1.8266052007675171e-02 -7.4490708112716675e-01 + <_> + 4.4444839477539062e+01 + + 1 2 1476 5.5000000000000000e+00 0 -1 1477 + 1.8500000000000000e+01 -2 -3 1478 2.1500000000000000e+01 + + -5.8617092669010162e-02 5.7820588350296021e-01 + -4.1243070363998413e-01 6.0866367816925049e-01 + <_> + 4.4468860626220703e+01 + + 1 2 1479 4.5000000000000000e+00 0 -1 1480 + 2.3450000000000000e+02 -2 -3 1481 1.4500000000000000e+01 + + 2.8463301062583923e-01 -8.2563692331314087e-01 + -5.8707511425018311e-01 2.5017964839935303e-01 + <_> + 4.4571441650390625e+01 + + 1 2 1482 3.3450000000000000e+02 0 -1 1483 + 2.1500000000000000e+01 -2 -3 1484 946. + + -4.3612629175186157e-01 1.0257755219936371e-01 + 9.7813111543655396e-01 -8.0724465847015381e-01 + <_> + 4.4642127990722656e+01 + + 1 2 1485 1.5000000000000000e+00 0 -1 1486 + 8.5000000000000000e+00 -2 -3 1487 2.0500000000000000e+01 + + -9.3800437450408936e-01 6.0421532392501831e-01 + -6.4370167255401611e-01 2.7616502717137337e-02 + <_> + 4.4928077697753906e+01 + + 1 2 1488 5.0000000000000000e-01 0 -1 1489 + 2.6500000000000000e+01 -2 -3 1490 7.9250000000000000e+02 + + -6.6210180521011353e-02 6.4315652847290039e-01 + 6.9847983121871948e-01 -3.6571246385574341e-01 + <_> + 4.4592266082763672e+01 + + 1 2 1491 5.0000000000000000e-01 0 -1 1492 + 5.5350000000000000e+02 -2 -3 1493 1.5000000000000000e+00 + + -3.8149592280387878e-01 6.3860899209976196e-01 + 3.4885448217391968e-01 -3.3581241965293884e-01 + <_> + 4.4829784393310547e+01 + + 1 2 1494 1.5500000000000000e+01 0 -1 1495 + 2.7850000000000000e+02 -2 -3 1496 3.5000000000000000e+00 + + 6.8045026063919067e-01 -8.0610173940658569e-01 + -5.2162581682205200e-01 2.3751950263977051e-01 + <_> + 4.5090461730957031e+01 + + 1 2 1497 2.3500000000000000e+01 0 -1 1498 + 5.5000000000000000e+00 -2 -3 1499 1.3500000000000000e+01 + + -1.3596580922603607e-01 4.8954018950462341e-01 + -5.6967926025390625e-01 3.6096325516700745e-01 + <_> + 4.5232925415039062e+01 + + 1 2 1500 2154. 0 -1 1501 2.7550000000000000e+02 -2 -3 1502 + 128. + + 1.4246465265750885e-01 -8.8002961874008179e-01 1. + -9.7181195020675659e-01 + <_> + 4.5529132843017578e+01 + + 1 2 1503 5.8750000000000000e+02 0 -1 1504 3981. -2 -3 1505 + 5.0000000000000000e-01 + + -5.8577227592468262e-01 5.8029693365097046e-01 + 4.0880706906318665e-01 -2.0956511795520782e-01 + <_> + 4.5304393768310547e+01 + + 1 2 1506 1.6785000000000000e+03 0 -1 1507 + 4.2005000000000000e+03 -2 -3 1508 359. + + 2.9394268989562988e-02 8.0651479959487915e-01 + -3.3733904361724854e-01 6.9124865531921387e-01 + <_> + 4.5737625122070312e+01 + + 1 2 1509 2.7500000000000000e+01 0 -1 1510 + 5.0000000000000000e-01 -2 -3 1511 2.5000000000000000e+00 + + 2.7190417051315308e-01 -6.8398970365524292e-01 + 5.1673895120620728e-01 -5.9552457183599472e-02 + <_> + 4.5805149078369141e+01 + + 1 2 1512 5.6550000000000000e+02 0 -1 1513 + 1.1500000000000000e+01 -2 -3 1514 1.3500000000000000e+01 + + -5.3953158855438232e-01 4.1888201236724854e-01 + -7.7625131607055664e-01 -1.5986794605851173e-02 + <_> + 4.5724216461181641e+01 + + 1 2 1515 1.0500000000000000e+01 0 -1 1516 + 5.5000000000000000e+00 -2 -3 1517 25. + + 4.2757162451744080e-01 -2.2005110979080200e-01 + -5.4273819923400879e-01 8.9083051681518555e-01 + <_> + 4.5885368347167969e+01 + + 1 2 1518 238. 0 -1 1519 9.5000000000000000e+00 -2 -3 1520 + 2.0850000000000000e+02 + + -9.5597231388092041e-01 5.2587646245956421e-01 + 1.6115142405033112e-01 -7.6278209686279297e-01 + <_> + 4.5789482116699219e+01 + + 1 2 1521 2.9500000000000000e+01 0 -1 1522 + 2.6500000000000000e+01 -2 -3 1523 1.5450000000000000e+02 + + 1.6601219773292542e-01 -7.7067446708679199e-01 + -6.6907399892807007e-01 2.2051426768302917e-01 + <_> + 4.5806617736816406e+01 + + 1 2 1524 4.5000000000000000e+00 0 -1 1525 + 1.1500000000000000e+01 -2 -3 1526 3.5000000000000000e+00 + + -5.7005125284194946e-01 2.7322229743003845e-01 + 7.9801094532012939e-01 -5.2006053924560547e-01 + <_> + 4.6323131561279297e+01 + + 1 2 1527 1.3500000000000000e+01 0 -1 1528 + 3.4500000000000000e+01 -2 -3 1529 3.5000000000000000e+00 + + -5.5972643196582794e-02 5.1800715923309326e-01 + 3.3099360764026642e-02 -9.6488022804260254e-01 + <_> + 4.6282222747802734e+01 + + 1 2 1530 7.7250000000000000e+02 0 -1 1531 + 1.3500000000000000e+01 -2 -3 1532 1.1545000000000000e+03 + + -1.0771922767162323e-02 -8.7211072444915771e-01 + 7.0063769817352295e-01 -4.2402658611536026e-02 + <_> + 4.6205421447753906e+01 + + 1 2 1533 1.5000000000000000e+00 0 -1 1534 + 1.1500000000000000e+01 -2 -3 1535 1.5500000000000000e+01 + + -7.8480374813079834e-01 4.9849182367324829e-01 + 2.8026169538497925e-01 -3.8838988542556763e-01 + <_> + 4.6704681396484375e+01 + + 1 2 1536 2.5650000000000000e+02 0 -1 1537 + 9.5000000000000000e+00 -2 -3 1538 3.6145000000000000e+03 + + 8.8258177042007446e-01 -1. -6.1924713850021362e-01 + 6.9299057126045227e-02 + <_> + 4.6858192443847656e+01 + + 1 2 1539 1.6500000000000000e+01 0 -1 1540 + 2.1950000000000000e+02 -2 -3 1541 5.0000000000000000e-01 + + 3.5154920816421509e-01 -7.6912820339202881e-01 + 4.3404066562652588e-01 -1.0876829922199249e-01 + <_> + 4.6701599121093750e+01 + + 1 2 1542 3.5000000000000000e+00 0 -1 1543 + 4.1500000000000000e+01 -2 -3 1544 4.5000000000000000e+00 + + -8.0593466758728027e-01 6.3903629779815674e-01 + 4.0837219357490540e-01 -1.5659359097480774e-01 + <_> + 4.6904064178466797e+01 + + 1 2 1545 2.9500000000000000e+01 0 -1 1546 + 1.5000000000000000e+00 -2 -3 1547 219. + + -4.2634201049804688e-01 2.0246233046054840e-01 + -8.5641664266586304e-01 1. + <_> + 4.6656322479248047e+01 + + 1 2 1548 6.5000000000000000e+00 0 -1 1549 + 3.2500000000000000e+01 -2 -3 1550 4.1650000000000000e+02 + + -2.4700936675071716e-01 6.6941606998443604e-01 + 3.2602754235267639e-01 -3.6878246068954468e-01 + <_> + 4.6564968109130859e+01 + + 1 2 1551 1.2450000000000000e+02 0 -1 1552 + 5.5000000000000000e+00 -2 -3 1553 2.4150000000000000e+02 + + 4.5446833968162537e-01 -3.7261262536048889e-01 + 4.6772354841232300e-01 -7.1237772703170776e-01 + <_> + 4.6805198669433594e+01 + + 1 2 1554 4.5000000000000000e+00 0 -1 1555 + 7.3500000000000000e+01 -2 -3 1556 1.9500000000000000e+01 + + 2.4023169279098511e-01 -4.3494370579719543e-01 + -8.5679495334625244e-01 5.3150933980941772e-01 + <_> + 4.6938976287841797e+01 + + 1 2 1557 2.0850000000000000e+02 0 -1 1558 + 1.5000000000000000e+00 -2 -3 1559 4.5000000000000000e+00 + + 1.3377590477466583e-01 -4.7894757986068726e-01 + -7.4763888120651245e-01 4.7673630714416504e-01 + <_> + 4.7246456146240234e+01 + + 1 2 1560 2.5000000000000000e+00 0 -1 1561 6. -2 -3 1562 + 1.5000000000000000e+00 + + -9.0447050333023071e-01 8.6583727598190308e-01 + 3.0747944116592407e-01 -2.1712197363376617e-01 + <_> + 4.7012886047363281e+01 + + 1 2 1563 1.0500000000000000e+01 0 -1 1564 + 2.5000000000000000e+00 -2 -3 1565 2.4500000000000000e+01 + + -8.6812806129455566e-01 7.4207389354705811e-01 + -4.6920669078826904e-01 2.0873917639255524e-01 + <_> + 4.7398384094238281e+01 + + 1 2 1566 5.0000000000000000e-01 0 -1 1567 + 4.1500000000000000e+01 -2 -3 1568 1.2365000000000000e+03 + + -2.2475609183311462e-01 5.0746756792068481e-01 + -5.6809660047292709e-02 -7.4659413099288940e-01 + <_> + 4.7630195617675781e+01 + + 1 2 1569 7.5000000000000000e+00 0 -1 1570 + 4.5500000000000000e+01 -2 -3 1571 27. + + 2.3181208968162537e-01 -6.4988273382186890e-01 + -6.4328664541244507e-01 6.1851358413696289e-01 + <_> + 4.7380603790283203e+01 + + 1 2 1572 5.5000000000000000e+00 0 -1 1573 + 2.5000000000000000e+00 -2 -3 1574 1.8650000000000000e+02 + + 6.1403033323585987e-03 -5.5332463979721069e-01 + 4.5167797803878784e-01 -7.4148744344711304e-01 + <_> + 4.7716838836669922e+01 + + 1 2 1575 5.0500000000000000e+01 0 -1 1576 340. -2 -3 1577 + 1.5000000000000000e+00 + + 4.3912079930305481e-01 -7.3454135656356812e-01 + 6.4382767677307129e-01 -1.5953628346323967e-02 + <_> + 4.7556518554687500e+01 + + 1 2 1578 8.4500000000000000e+01 0 -1 1579 311. -2 -3 1580 + 5.0000000000000000e-01 + + 8.0123282968997955e-02 -7.0855069160461426e-01 + 4.7582688927650452e-01 -1.6031953692436218e-01 + <_> + 4.7572052001953125e+01 + + 1 2 1581 4.1250000000000000e+02 0 -1 1582 + 2.5000000000000000e+00 -2 -3 1583 1.0405000000000000e+03 + + 5.3272254765033722e-02 -6.1080712080001831e-01 + 5.7476472854614258e-01 -3.3661961555480957e-01 + <_> + 4.7565738677978516e+01 + + 1 2 1584 8.1450000000000000e+02 0 -1 1585 + 5.7750000000000000e+02 -2 -3 1586 8.5000000000000000e+00 + + 8.0671536922454834e-01 -4.1966786980628967e-01 + 1.6598591208457947e-01 -3.8562926650047302e-01 + <_> + 4.7773296356201172e+01 + + 1 2 1587 1.5000000000000000e+00 0 -1 1588 1174. -2 -3 1589 + 3.9500000000000000e+01 + + 1. -9.7881591320037842e-01 2.0755772292613983e-01 + -5.1666331291198730e-01 + <_> + 4.8310127258300781e+01 + + 1 2 1590 1.9500000000000000e+01 0 -1 1591 + 5.0000000000000000e-01 -2 -3 1592 3.5000000000000000e+00 + + 7.0349156856536865e-01 -7.1407133340835571e-01 + 5.4187601804733276e-01 -9.5178633928298950e-02 + <_> + 4.8071701049804688e+01 + + 1 2 1593 801. 0 -1 1594 8.5000000000000000e+00 -2 -3 1595 + 8.5000000000000000e+00 + + -2.3842808604240417e-01 4.0528839826583862e-01 + 8.4955078363418579e-01 -9.1280186176300049e-01 + <_> + 4.8208892822265625e+01 + + 1 2 1596 6.5000000000000000e+00 0 -1 1597 + 4.1500000000000000e+01 -2 -3 1598 1.8500000000000000e+01 + + -9.3895512819290161e-01 3.3225542306900024e-01 + -5.6959801912307739e-01 1.9758279621601105e-01 + <_> + 4.8468334197998047e+01 + + 1 2 1599 644. 0 -1 1600 3.1500000000000000e+01 -2 -3 1601 + 2.5500000000000000e+01 + + 4.6466782689094543e-01 -7.2437942028045654e-01 + 2.5944426655769348e-01 -5.1669490337371826e-01 + <_> + 4.8280807495117188e+01 + + 1 2 1602 5.8750000000000000e+02 0 -1 1603 998. -2 -3 1604 + 1.9450000000000000e+02 + + -5.6361049413681030e-01 8.2740515470504761e-01 + 7.3864108324050903e-01 -3.1339693814516068e-02 + <_> + 4.8574962615966797e+01 + + 1 2 1605 2.3450000000000000e+02 0 -1 1606 + 1.5000000000000000e+00 -2 -3 1607 1.4050000000000000e+02 + + 3.6085158586502075e-01 -1.9539615511894226e-01 + -9.4802927970886230e-01 2.6839014887809753e-01 + <_> + 4.8454341888427734e+01 + + 1 2 1608 3.9500000000000000e+01 0 -1 1609 + 5.0000000000000000e-01 -2 -3 1610 1.6650000000000000e+02 + + 1.0862217843532562e-01 -5.7014846801757812e-01 + 3.1803789734840393e-01 -8.6990028619766235e-01 + <_> + 4.8686836242675781e+01 + + 1 2 1611 7.5000000000000000e+00 0 -1 1612 + 4.4500000000000000e+01 -2 -3 1613 5.0000000000000000e-01 + + 4.4552764296531677e-01 -9.6768623590469360e-01 + 3.7845483422279358e-01 -2.0616437494754791e-01 + <_> + 4.8645317077636719e+01 + + 1 2 1614 2.1500000000000000e+01 0 -1 1615 + 5.7500000000000000e+01 -2 -3 1616 9.2500000000000000e+01 + + 2.0209166407585144e-01 -3.7205338478088379e-01 + 6.6951900720596313e-01 -9.7072052955627441e-01 + <_> + 4.8846817016601562e+01 + + 1 2 1617 1.8500000000000000e+01 0 -1 1618 + 1.9500000000000000e+01 -2 -3 1619 2.7500000000000000e+01 + + -9.0423774719238281e-01 4.2085230350494385e-01 + 2.0150278508663177e-01 -6.7301428318023682e-01 + <_> + 4.8628437042236328e+01 + + 1 2 1620 291. 0 -1 1621 6.5000000000000000e+00 -2 -3 1622 + 1.1500000000000000e+01 + + 2.5333371758460999e-01 -9.6325629949569702e-01 + -6.0980123281478882e-01 1.4127761125564575e-01 + <_> + 4.8402679443359375e+01 + + 1 2 1623 2.1050000000000000e+02 0 -1 1624 + 6.5000000000000000e+00 -2 -3 1625 3.2500000000000000e+01 + + 3.4403830766677856e-02 -5.8541810512542725e-01 + -6.9637399911880493e-01 4.9845540523529053e-01 + <_> + 4.8841716766357422e+01 + + 1 2 1626 7.5000000000000000e+00 0 -1 1627 + 4.9500000000000000e+01 -2 -3 1628 1.1500000000000000e+01 + + 4.3903854489326477e-01 -6.2086170911788940e-01 + -6.5002232789993286e-01 -1.5730377286672592e-02 + <_> + 4.9389339447021484e+01 + + 1 2 1629 80. 0 -1 1630 3.5000000000000000e+00 -2 -3 1631 + 1.0255000000000000e+03 + + 3.1859183311462402e-01 -4.2584937810897827e-01 + -8.9118802547454834e-01 5.4762154817581177e-01 + <_> + 4.8809658050537109e+01 + + 1 2 1632 5.0000000000000000e-01 0 -1 1633 + 9.1500000000000000e+01 -2 -3 1634 1.5500000000000000e+01 + + -2.0882329344749451e-01 5.9099739789962769e-01 + 3.5995401442050934e-02 -5.7967907190322876e-01 + <_> + 4.9262874603271484e+01 + + 1 2 1635 2.3500000000000000e+01 0 -1 1636 2138. -2 -3 1637 + 7.4500000000000000e+01 + + 2.5881242752075195e-01 -6.5358424186706543e-01 + -4.4690254330635071e-01 4.5321631431579590e-01 + <_> + 4.9810745239257812e+01 + + 1 2 1638 2.8905000000000000e+03 0 -1 1639 + 1.4034500000000000e+04 -2 -3 1640 5.0000000000000000e-01 + + 5.9278053045272827e-01 -9.4314843416213989e-01 + 3.9468899369239807e-01 -2.7942237257957458e-01 + <_> + 4.9740810394287109e+01 + + 1 2 1641 5.0000000000000000e-01 0 -1 1642 13. -2 -3 1643 + 6.4500000000000000e+01 + + -9.7298115491867065e-01 7.5200670957565308e-01 + 1.9612585008144379e-01 -5.2234607934951782e-01 + <_> + 4.9890090942382812e+01 + + 1 2 1644 7.5000000000000000e+00 0 -1 1645 + 8.5000000000000000e+00 -2 -3 1646 381. + + -5.6059420108795166e-01 5.0415074825286865e-01 + 4.8369589447975159e-01 -3.1803038716316223e-01 + <_> + 4.9964401245117188e+01 + + 1 2 1647 5.0000000000000000e-01 0 -1 1648 + 6.5000000000000000e+00 -2 -3 1649 1.5500000000000000e+01 + + -9.7737157344818115e-01 5.3311198949813843e-01 + -4.1340222954750061e-01 2.4446828663349152e-01 + <_> + 5.0132915496826172e+01 + + 1 2 1650 1.0500000000000000e+01 0 -1 1651 + 9.5000000000000000e+00 -2 -3 1652 182. + + -2.6112908124923706e-01 4.9358665943145752e-01 + 6.2064582109451294e-01 -4.5646050572395325e-01 + <_> + 5.0014610290527344e+01 + + 1 2 1653 6.5000000000000000e+00 0 -1 1654 2329. -2 -3 1655 + 6.6350000000000000e+02 + + 4.0677326917648315e-01 -7.2954016923904419e-01 + -5.2711308002471924e-01 2.2369565069675446e-01 + <_> + 5.0282009124755859e+01 + + 1 2 1656 1513. 0 -1 1657 6.6500000000000000e+01 -2 -3 1658 + 2.0125000000000000e+03 + + -9.2653149366378784e-01 5.6927061080932617e-01 + 6.3748288154602051e-01 -6.0769841074943542e-02 + <_> + 5.0116958618164062e+01 + + 1 2 1659 1.4500000000000000e+01 0 -1 1660 + 3.5000000000000000e+00 -2 -3 1661 1.6500000000000000e+01 + + -8.6243766546249390e-01 8.8660824298858643e-01 + 4.5358371734619141e-01 -1.6504985094070435e-01 + <_> + 5.0264678955078125e+01 + + 1 2 1662 1.1500000000000000e+01 0 -1 1663 + 4.5000000000000000e+00 -2 -3 1664 4.3500000000000000e+01 + + -8.9545702934265137e-01 1. 2.3749004304409027e-01 + -4.1009184718132019e-01 + <_> + 5.0537300109863281e+01 + + 1 2 1665 6.5000000000000000e+00 0 -1 1666 + 1.1500000000000000e+01 -2 -3 1667 4.8500000000000000e+01 + + 1.8909458816051483e-01 -6.9768869876861572e-01 + -3.7118515372276306e-01 2.7262043952941895e-01 + <_> + 5.0127769470214844e+01 + + 1 2 1668 2.5000000000000000e+00 0 -1 1669 49. -2 -3 1670 + 1.5000000000000000e+00 + + -7.0132219791412354e-01 4.8064956068992615e-01 + 2.1170513331890106e-01 -4.0953138470649719e-01 + <_> + 5.0477714538574219e+01 + + 1 2 1671 2.5000000000000000e+00 0 -1 1672 + 1.5650000000000000e+02 -2 -3 1673 1.1995000000000000e+03 + + 3.4994655847549438e-01 -7.3900407552719116e-01 + -6.3774943351745605e-01 -4.0900995954871178e-03 + <_> + 5.0603004455566406e+01 + + 1 2 1674 2.7950000000000000e+02 0 -1 1675 8514. -2 -3 1676 + 4.0500000000000000e+01 + + 9.1369850561022758e-03 8.2339012622833252e-01 + -5.2016735076904297e-01 1.2528854608535767e-01 + <_> + 5.0545921325683594e+01 + + 1 2 1677 3.5000000000000000e+00 0 -1 1678 + 3.9500000000000000e+01 -2 -3 1679 1.6500000000000000e+01 + + -1.4933063089847565e-01 4.4103890657424927e-01 + -5.4845666885375977e-01 3.5070386528968811e-01 + <_> + 5.0866680145263672e+01 + + 1 2 1680 5.1950000000000000e+02 0 -1 1681 + 1.2150000000000000e+02 -2 -3 1682 1.5000000000000000e+00 + + -1.7503215372562408e-01 3.2076016068458557e-01 + 5.0803476572036743e-01 -9.5718288421630859e-01 + <_> + 5.0898628234863281e+01 + + 1 2 1683 5.0000000000000000e-01 0 -1 1684 + 6.5000000000000000e+00 -2 -3 1685 1.5500000000000000e+01 + + -8.3207756280899048e-01 7.2688364982604980e-01 + 8.6272723972797394e-02 -4.6617463231086731e-01 + <_> + 5.0805313110351562e+01 + + 1 2 1686 5.7750000000000000e+02 0 -1 1687 + 6.5000000000000000e+00 -2 -3 1688 1.3950000000000000e+02 + + -8.3755981922149658e-01 5.7054156064987183e-01 + 4.9337804317474365e-01 -9.3315914273262024e-02 + <_> + 5.0919166564941406e+01 + + 1 2 1689 1.5095000000000000e+03 0 -1 1690 + 7.5000000000000000e+00 -2 -3 1691 6720. + + 2.1196880936622620e-01 -3.8356184959411621e-01 + 5.3207170963287354e-01 -7.4764668941497803e-01 + <_> + 5.0936717987060547e+01 + + 1 2 1692 4.0500000000000000e+01 0 -1 1693 + 1.5000000000000000e+00 -2 -3 1694 5.0000000000000000e-01 + + -3.7224005907773972e-02 -8.9793884754180908e-01 + 7.6496970653533936e-01 1.7551671713590622e-02 + <_> + 5.1368896484375000e+01 + + 1 2 1695 2.5550000000000000e+02 0 -1 1696 1484. -2 -3 1697 + 7.5000000000000000e+00 + + -1. 9.0734022855758667e-01 -2.2103266417980194e-01 + 4.3218004703521729e-01 + <_> + 5.1568653106689453e+01 + + 1 2 1698 8.1615000000000000e+03 0 -1 1699 + 5.0000000000000000e-01 -2 -3 1700 28. + + -9.8341357707977295e-01 1.9975320994853973e-01 + -1.2860924005508423e-01 -9.3606525659561157e-01 + <_> + 5.1350795745849609e+01 + + 1 2 1701 5.0000000000000000e-01 0 -1 1702 + 1.8500000000000000e+01 -2 -3 1703 3.5000000000000000e+00 + + -7.4128049612045288e-01 3.7650343775749207e-01 + 3.4844925999641418e-01 -4.2916879057884216e-01 + <_> + 5.1636371612548828e+01 + + 1 2 1704 3.5000000000000000e+00 0 -1 1705 32. -2 -3 1706 + 1.5000000000000000e+00 + + 1. -9.1778641939163208e-01 -3.0592209100723267e-01 + 2.8557664155960083e-01 + <_> + 5.2074638366699219e+01 + + 1 2 1707 4.5000000000000000e+00 0 -1 1708 + 2.5500000000000000e+01 -2 -3 1709 5.5000000000000000e+00 + + -1.7822149395942688e-01 4.3826532363891602e-01 + -5.1980108022689819e-01 4.8558112978935242e-01 + <_> + 5.1970214843750000e+01 + + 1 2 1710 5.9500000000000000e+01 0 -1 1711 + 1.0500000000000000e+01 -2 -3 1712 544. + + 3.5063171386718750e-01 -3.3192864060401917e-01 + -6.3897025585174561e-01 2.3550751805305481e-01 + <_> + 5.2024555206298828e+01 + + 1 2 1713 4.5000000000000000e+00 0 -1 1714 + 1.3950000000000000e+02 -2 -3 1715 1.5000000000000000e+00 + + 2.8414461016654968e-01 -5.8255207538604736e-01 + -6.8949204683303833e-01 3.0280160903930664e-01 + <_> + 5.1652011871337891e+01 + + 1 2 1716 1.5000000000000000e+00 0 -1 1717 + 1.0500000000000000e+01 -2 -3 1718 2.5000000000000000e+00 + + -6.4423668384552002e-01 7.1819794178009033e-01 + 1.2163987010717392e-01 -4.3241024017333984e-01 + <_> + 5.2231746673583984e+01 + + 1 2 1719 2.1550000000000000e+02 0 -1 1720 + 5.0000000000000000e-01 -2 -3 1721 1966. + + 1.3263493776321411e-01 -4.2725384235382080e-01 + 8.6758172512054443e-01 -2.6626121997833252e-01 + <_> + 5.2511852264404297e+01 + + 1 2 1722 5.3450000000000000e+02 0 -1 1723 + 1.1500000000000000e+01 -2 -3 1724 4.5000000000000000e+00 + + 2.5023856759071350e-01 -8.6206442117691040e-01 + -4.7992885112762451e-01 2.8010553121566772e-01 + <_> + 5.2546646118164062e+01 + + 1 2 1725 1.2500000000000000e+01 0 -1 1726 + 3.2500000000000000e+01 -2 -3 1727 5.8895000000000000e+03 + + -1.0283301770687103e-01 5.0622606277465820e-01 + 3.4796718508005142e-02 -7.5529223680496216e-01 + <_> + 5.2223571777343750e+01 + + 1 2 1728 5.0000000000000000e-01 0 -1 1729 + 5.8550000000000000e+02 -2 -3 1730 2.0500000000000000e+01 + + -3.2307562232017517e-01 4.2715775966644287e-01 + 5.5647647380828857e-01 -4.0453824400901794e-01 + <_> + 5.2863487243652344e+01 + + 1 2 1731 3.3595000000000000e+03 0 -1 1732 + 1.6685000000000000e+03 -2 -3 1733 7.5000000000000000e+00 + + -1.1682216823101044e-01 7.5274443626403809e-01 + -3.0044618248939514e-01 7.6707494258880615e-01 + <_> + 5.3050804138183594e+01 + + 1 2 1734 1.5000000000000000e+00 0 -1 1735 + 1.5500000000000000e+01 -2 -3 1736 1.5000000000000000e+00 + + 6.9346052408218384e-01 -9.0690630674362183e-01 + -9.2264664173126221e-01 1.8731895089149475e-01 + <_> + 5.3262607574462891e+01 + + 1 2 1737 5.0000000000000000e-01 0 -1 1738 + 3.5000000000000000e+00 -2 -3 1739 3.3550000000000000e+02 + + -3.2821202278137207e-01 5.9129446744918823e-01 + -5.1578968763351440e-01 9.9953614175319672e-02 + <_> + 5.3258419036865234e+01 + + 1 2 1740 1.9500000000000000e+01 0 -1 1741 + 1.2500000000000000e+01 -2 -3 1742 1.5000000000000000e+00 + + 3.8119539618492126e-01 -1.9959560036659241e-01 + 6.4132863283157349e-01 -7.4302184581756592e-01 + <_> + 5.3413326263427734e+01 + + 1 2 1743 7.6500000000000000e+01 0 -1 1744 + 5.8750000000000000e+02 -2 -3 1745 5.5000000000000000e+00 + + -7.1226209402084351e-01 1.5490560233592987e-01 + -9.5072907209396362e-01 1. + <_> + 5.3368370056152344e+01 + + 1 2 1746 1.4355000000000000e+03 0 -1 1747 + 2.5293500000000000e+04 -2 -3 1748 3.5000000000000000e+00 + + -4.4957466423511505e-02 7.0797920227050781e-01 + 2.4098557233810425e-01 -5.3875494003295898e-01 + <_> + 5.3336959838867188e+01 + + 1 2 1749 2.5500000000000000e+01 0 -1 1750 + 2.0500000000000000e+01 -2 -3 1751 2.7375000000000000e+03 + + -7.6909404993057251e-01 -4.0910251438617706e-02 + -8.7062567472457886e-02 6.8476140499114990e-01 + <_> + 5.3268756866455078e+01 + + 1 2 1752 3.7500000000000000e+01 0 -1 1753 2449. -2 -3 1754 + 3.4085000000000000e+03 + + 2.9082170128822327e-01 -3.9411529898643494e-01 + 6.2446767091751099e-01 -7.7681422233581543e-01 + <_> + 5.3295890808105469e+01 + + 1 2 1755 1.5500000000000000e+01 0 -1 1756 + 1.5000000000000000e+00 -2 -3 1757 6.3500000000000000e+01 + + 2.3223483562469482e-01 -3.3189105987548828e-01 + 8.2484543323516846e-01 -1. + <_> + 5.3821460723876953e+01 + + 1 2 1758 7.5000000000000000e+00 0 -1 1759 32. -2 -3 1760 + 3.5000000000000000e+00 + + 7.7407427132129669e-02 -9.0338480472564697e-01 + 5.2557128667831421e-01 -8.5458166897296906e-02 + <_> + 5.3644256591796875e+01 + + 1 2 1761 2.3500000000000000e+01 0 -1 1762 + 1.7500000000000000e+01 -2 -3 1763 5.5500000000000000e+01 + + 1.9049738347530365e-01 -6.4127218723297119e-01 + -5.8284378051757812e-01 3.6358082294464111e-01 + <_> + 5.3565219879150391e+01 + + 1 2 1764 5.0000000000000000e-01 0 -1 1765 + 5.5000000000000000e+00 -2 -3 1766 6.2650000000000000e+02 + + -9.1313230991363525e-01 3.1892377138137817e-01 + -5.0848573446273804e-01 4.0014332532882690e-01 + <_> + 5.3612766265869141e+01 + + 1 2 1767 2.7500000000000000e+01 0 -1 1768 + 1.1850000000000000e+02 -2 -3 1769 6.5000000000000000e+00 + + -1.1785164475440979e-01 4.6228489279747009e-01 + 8.3617496490478516e-01 -7.2740668058395386e-01 + <_> + 5.3733577728271484e+01 + + 1 2 1770 1.3500000000000000e+01 0 -1 1771 + 6.5000000000000000e+00 -2 -3 1772 1.3500000000000000e+01 + + -4.3037781119346619e-01 4.0931895375251770e-01 + -8.7283575534820557e-01 -1.1174897849559784e-01 + <_> + 5.3474098205566406e+01 + + 1 2 1773 2.2500000000000000e+01 0 -1 1774 + 1.5000000000000000e+00 -2 -3 1775 6.8500000000000000e+01 + + -4.9783071875572205e-01 3.2450476288795471e-01 + -5.4798841476440430e-01 4.3143227696418762e-01 + <_> + 5.3782051086425781e+01 + + 1 2 1776 7.5000000000000000e+00 0 -1 1777 + 7.5000000000000000e+00 -2 -3 1778 5.8850000000000000e+02 + + 3.0795454978942871e-01 -4.3086576461791992e-01 + 2.5671597104519606e-03 -7.0709168910980225e-01 + <_> + 5.4081798553466797e+01 + + 1 2 1779 4.1250000000000000e+02 0 -1 1780 2532. -2 -3 1781 + 4.2500000000000000e+01 + + 1.1845014244318008e-01 -4.8000225424766541e-01 + -7.1575754880905151e-01 4.8367628455162048e-01 + <_> + 5.3729518890380859e+01 + + 1 2 1782 4.5000000000000000e+00 0 -1 1783 + 4.0500000000000000e+01 -2 -3 1784 5.0000000000000000e-01 + + -6.5016943216323853e-01 4.5923739671707153e-01 + 7.4234819412231445e-01 -3.5227757692337036e-01 + <_> + 5.3706134796142578e+01 + + 1 2 1785 1.7500000000000000e+01 0 -1 1786 + 2.0500000000000000e+01 -2 -3 1787 35. + + -2.3385923355817795e-02 5.5982124805450439e-01 + -7.7798545360565186e-01 5.9317058324813843e-01 + <_> + 5.4069709777832031e+01 + + 1 2 1788 3.0650000000000000e+02 0 -1 1789 + 6.7500000000000000e+01 -2 -3 1790 1.5000000000000000e+00 + + -2.0442806184291840e-01 3.6357563734054565e-01 + 4.3344959616661072e-01 -7.8407233953475952e-01 + <_> + 5.4122543334960938e+01 + + 1 2 1791 6.9550000000000000e+02 0 -1 1792 + 2.0150000000000000e+02 -2 -3 1793 1.5500000000000000e+01 + + -2.8922367095947266e-01 4.2674824595451355e-01 + -6.8660050630569458e-01 5.2831500768661499e-02 + <_> + 5.4034683227539062e+01 + + 1 2 1794 5.0000000000000000e-01 0 -1 1795 + 5.9715000000000000e+03 -2 -3 1796 4.5000000000000000e+00 + + -5.2834486961364746e-01 4.5531541109085083e-01 + 1.1746359616518021e-01 -4.9576222896575928e-01 + <_> + 5.4980464935302734e+01 + + 1 2 1797 1.3500000000000000e+01 0 -1 1798 + 2.9450000000000000e+02 -2 -3 1799 7.5000000000000000e+00 + + -3.2881252467632294e-02 -9.8305457830429077e-01 + 9.4577944278717041e-01 -1. + <_> + 5.5089954376220703e+01 + + 1 2 1800 2.5000000000000000e+00 0 -1 1801 39. -2 -3 1802 + 9.4950000000000000e+02 + + -1. 1. 1.6094356775283813e-01 -5.4309475421905518e-01 + <_> + 5.5099483489990234e+01 + + 1 2 1803 5.7850000000000000e+02 0 -1 1804 + 4.2500000000000000e+01 -2 -3 1805 5.7750000000000000e+02 + + -7.0962339639663696e-01 1. 7.6542943716049194e-01 + -4.1924782097339630e-02 + <_> + 5.4866825103759766e+01 + + 1 2 1806 1328. 0 -1 1807 1.5000000000000000e+00 -2 -3 1808 + 5.5285000000000000e+03 + + 3.6924600601196289e-01 -2.3265689611434937e-01 + 9.9105215072631836e-01 -8.4446805715560913e-01 + <_> + 5.5432411193847656e+01 + + 1 2 1809 2.5500000000000000e+01 0 -1 1810 + 1.1500000000000000e+01 -2 -3 1811 7.4350000000000000e+02 + + -3.2548126578330994e-01 2.2827453911304474e-01 + 7.1661698818206787e-01 -1. + <_> + 5.5408927917480469e+01 + + 1 2 1812 5.0000000000000000e-01 0 -1 1813 + 3.5000000000000000e+00 -2 -3 1814 2.4500000000000000e+01 + + -7.4099457263946533e-01 3.7504613399505615e-01 + -6.2640714645385742e-01 8.4968566894531250e-02 + <_> + 5.5198207855224609e+01 + + 1 2 1815 1.5000000000000000e+00 0 -1 1816 + 6.5000000000000000e+00 -2 -3 1817 2.2500000000000000e+01 + + -1. 6.4012116193771362e-01 -2.1071846783161163e-01 + 6.4778321981430054e-01 + <_> + 5.5283359527587891e+01 + + 1 2 1818 2.5000000000000000e+00 0 -1 1819 + 5.0000000000000000e-01 -2 -3 1820 2.4550000000000000e+02 + + 4.5631405711174011e-01 -1.3484077155590057e-01 + -5.9344494342803955e-01 1.6467481851577759e-01 + <_> + 5.5470157623291016e+01 + + 1 2 1821 3.5000000000000000e+00 0 -1 1822 + 9.5000000000000000e+00 -2 -3 1823 9.5000000000000000e+00 + + 1. -1. -4.3856528401374817e-01 1.8679495155811310e-01 + <_> + 5.5202453613281250e+01 + + 1 2 1824 5.6150000000000000e+02 0 -1 1825 4192. -2 -3 1826 + 1.2425000000000000e+03 + + -1.4592270553112030e-01 5.8146274089813232e-01 + -5.5671817064285278e-01 1.2355826795101166e-01 + <_> + 5.5569751739501953e+01 + + 1 2 1827 2.1500000000000000e+01 0 -1 1828 + 5.5000000000000000e+00 -2 -3 1829 1.6500000000000000e+01 + + -6.8071776628494263e-01 3.6730051040649414e-01 + -1.3501003384590149e-01 -9.1282844543457031e-01 + <_> + 5.5779064178466797e+01 + + 1 2 1830 3.3500000000000000e+01 0 -1 1831 + 9.5000000000000000e+00 -2 -3 1832 1.5500000000000000e+01 + + 3.2467505335807800e-01 -7.8718549013137817e-01 + 5.1464933156967163e-01 -1.6156230866909027e-01 + <_> + 5.5348117828369141e+01 + + 1 2 1833 3.7650000000000000e+02 0 -1 1834 + 5.5750000000000000e+02 -2 -3 1835 1.5000000000000000e+00 + + -8.1101077795028687e-01 6.3146162033081055e-01 + 1.3779489696025848e-01 -4.3094816803932190e-01 + <_> + 5.5919422149658203e+01 + + 1 2 1836 3.7500000000000000e+01 0 -1 1837 + 5.0000000000000000e-01 -2 -3 1838 8.8500000000000000e+01 + + 3.4091222286224365e-01 -3.4007987380027771e-01 + 5.7130312919616699e-01 -6.3140660524368286e-01 + <_> + 5.5871620178222656e+01 + + 1 2 1839 7.5000000000000000e+00 0 -1 1840 + 1.6500000000000000e+01 -2 -3 1841 6.4500000000000000e+01 + + -2.2035612165927887e-01 -9.4882357120513916e-01 + 5.1813077926635742e-01 -4.7800488770008087e-02 + <_> + 5.6252223968505859e+01 + + 1 2 1842 1.1950000000000000e+02 0 -1 1843 + 9.5500000000000000e+01 -2 -3 1844 3.6850000000000000e+02 + + 3.8002592325210571e-01 -3.4263178706169128e-01 + 5.1846081018447876e-01 -7.4162709712982178e-01 + <_> + 5.6455226898193359e+01 + + 1 2 1845 5.0000000000000000e-01 0 -1 1846 12. -2 -3 1847 + 3.2995000000000000e+03 + + -9.0239804983139038e-01 3.5835075378417969e-01 + -3.9121779799461365e-01 8.4680241346359253e-01 + <_> + 5.6692668914794922e+01 + + 1 2 1848 2.5000000000000000e+00 0 -1 1849 + 5.0000000000000000e-01 -2 -3 1850 3.0500000000000000e+01 + + -8.6832201480865479e-01 3.5786366462707520e-01 + -6.5906804800033569e-01 3.1783048063516617e-02 + <_> + 5.6752792358398438e+01 + + 1 2 1851 1.0500000000000000e+01 0 -1 1852 + 6.5500000000000000e+01 -2 -3 1853 1.4500000000000000e+01 + + -4.6706490218639374e-02 -8.7982815504074097e-01 + 5.6353557109832764e-01 -6.0297027230262756e-02 + <_> + 5.6775104522705078e+01 + + 1 2 1854 2.0150000000000000e+02 0 -1 1855 + 1.0500000000000000e+01 -2 -3 1856 2.8650000000000000e+02 + + 7.4959583580493927e-02 -5.7888466119766235e-01 + 6.6168105602264404e-01 -9.9754244089126587e-02 + <_> + 5.6972690582275391e+01 + + 1 2 1857 1.6150000000000000e+02 0 -1 1858 + 1.5500000000000000e+01 -2 -3 1859 24. + + -7.3095875978469849e-01 1.9758741557598114e-01 + -8.8720643520355225e-01 1. + <_> + 5.7200763702392578e+01 + + 1 2 1860 5.0000000000000000e-01 0 -1 1861 + 8.8500000000000000e+01 -2 -3 1862 1.8500000000000000e+01 + + 3.3610743284225464e-01 -8.8137799501419067e-01 + -6.0375785827636719e-01 1.2033233046531677e-01 + <_> + 5.7070457458496094e+01 + + 1 2 1863 2.1500000000000000e+01 0 -1 1864 + 1.4500000000000000e+01 -2 -3 1865 5.6500000000000000e+01 + + -9.7666543722152710e-01 7.4382346868515015e-01 + 4.3915370106697083e-01 -1.3030719757080078e-01 + <_> + 5.6970527648925781e+01 + + 1 2 1866 1.0500000000000000e+01 0 -1 1867 + 8.5000000000000000e+00 -2 -3 1868 142. + + -3.9075690507888794e-01 2.1810866892337799e-01 + 7.3304098844528198e-01 -1.5522833168506622e-01 + <_> + 5.7172351837158203e+01 + + 1 2 1869 8.3500000000000000e+01 0 -1 1870 + 5.0000000000000000e-01 -2 -3 1871 4.5000000000000000e+00 + + 4.7355487942695618e-01 -8.4495109319686890e-01 + -8.0800145864486694e-01 2.0182393491268158e-01 + <_> + 5.7369266510009766e+01 + + 1 2 1872 1.3500000000000000e+01 0 -1 1873 + 2.2050000000000000e+02 -2 -3 1874 1.5000000000000000e+00 + + 3.0745425820350647e-01 -5.7873797416687012e-01 + 7.1144923567771912e-02 -7.0968645811080933e-01 + <_> + 5.7163673400878906e+01 + + 1 2 1875 3.0500000000000000e+01 0 -1 1876 + 1.7955000000000000e+03 -2 -3 1877 1.9500000000000000e+01 + + 4.0770485997200012e-01 -6.0543429851531982e-01 + 3.7602424621582031e-01 -2.8918644785881042e-01 + <_> + 5.6786552429199219e+01 + + 1 2 1878 6.8500000000000000e+01 0 -1 1879 + 5.5000000000000000e+00 -2 -3 1880 2.8500000000000000e+01 + + 1.1757279932498932e-01 -5.8252972364425659e-01 + -3.8951548933982849e-01 5.1052653789520264e-01 + <_> + 5.6868556976318359e+01 + + 1 2 1881 6.5000000000000000e+00 0 -1 1882 + 2.5000000000000000e+00 -2 -3 1883 2.6950000000000000e+02 + + 8.2006074488162994e-02 -5.1789224147796631e-01 + 5.3505361080169678e-01 -9.4605493545532227e-01 + <_> + 5.7130115509033203e+01 + + 1 2 1884 8.5000000000000000e+00 0 -1 1885 + 1.9150000000000000e+02 -2 -3 1886 2.9450000000000000e+02 + + 4.5292165875434875e-01 -4.3888345360755920e-01 + 4.7173380851745605e-01 -5.1566743850708008e-01 + <_> + 5.7406742095947266e+01 + + 1 2 1887 5.5000000000000000e+00 0 -1 1888 + 4.5000000000000000e+00 -2 -3 1889 7.9850000000000000e+02 + + -3.7859401106834412e-01 5.5919343233108521e-01 + -5.8277565240859985e-01 6.6450834274291992e-02 + <_> + 5.7422473907470703e+01 + + 1 2 1890 5.6150000000000000e+02 0 -1 1891 4961. -2 -3 1892 + 4.8705000000000000e+03 + + -4.5244730426929891e-04 8.3497661352157593e-01 + -6.8882519006729126e-01 1.5732206404209137e-02 + <_> + 5.7687702178955078e+01 + + 1 2 1893 1.4500000000000000e+01 0 -1 1894 + 4.1335000000000000e+03 -2 -3 1895 7.1500000000000000e+01 + + 2.6522731781005859e-01 -8.9758622646331787e-01 + -6.0936498641967773e-01 4.6634823083877563e-01 + <_> + 5.7540111541748047e+01 + + 1 2 1896 2.9500000000000000e+01 0 -1 1897 + 5.5000000000000000e+00 -2 -3 1898 1.5000000000000000e+00 + + -9.3110167980194092e-01 1. 3.9634063839912415e-01 + -1.9126465916633606e-01 + <_> + 5.7616504669189453e+01 + + 1 2 1899 7.5000000000000000e+00 0 -1 1900 397. -2 -3 1901 + 1.5000000000000000e+00 + + 7.1867322921752930e-01 -5.4185843467712402e-01 + 5.2771824598312378e-01 -1.5528239309787750e-01 + <_> + 5.7763866424560547e+01 + + 1 2 1902 2.1500000000000000e+01 0 -1 1903 + 1.7050000000000000e+02 -2 -3 1904 1.6500000000000000e+01 + + 2.9671201109886169e-01 -8.4789550304412842e-01 + -5.6201756000518799e-01 2.5604116916656494e-01 + <_> + 5.7565292358398438e+01 + + 1 2 1905 5.0000000000000000e-01 0 -1 1906 + 2.1350000000000000e+02 -2 -3 1907 3.6950000000000000e+02 + + 5.7148373126983643e-01 -8.4696042537689209e-01 + -3.0725291371345520e-01 5.5036330223083496e-01 + <_> + 5.7710926055908203e+01 + + 1 2 1908 1.2500000000000000e+01 0 -1 1909 + 4.5000000000000000e+00 -2 -3 1910 2.4500000000000000e+01 + + -6.8967974185943604e-01 3.9181429147720337e-01 + -6.0330241918563843e-01 2.1838249266147614e-01 + <_> + 5.8008132934570312e+01 + + 1 2 1911 9.5000000000000000e+00 0 -1 1912 270. -2 -3 1913 + 3.0500000000000000e+01 + + 2.9720637202262878e-01 -7.7370458841323853e-01 + -7.1012228727340698e-01 1.2770961225032806e-01 + <_> + 5.8256633758544922e+01 + + 1 2 1914 6.3500000000000000e+01 0 -1 1915 + 3.7500000000000000e+01 -2 -3 1916 3.0500000000000000e+01 + + -4.4066715240478516e-01 8.2518380880355835e-01 + 2.9887351393699646e-01 -4.9117338657379150e-01 + <_> + 5.8460075378417969e+01 + + 1 2 1917 1.2500000000000000e+01 0 -1 1918 + 3.1500000000000000e+01 -2 -3 1919 5.0000000000000000e-01 + + -3.4090422093868256e-02 5.7412135601043701e-01 + 7.2392117977142334e-01 -6.3018786907196045e-01 + <_> + 5.8618007659912109e+01 + + 1 2 1920 5.0000000000000000e-01 0 -1 1921 + 1.5500000000000000e+01 -2 -3 1922 5.0000000000000000e-01 + + -9.6668690443038940e-01 3.7771463394165039e-01 + 2.2855560481548309e-01 -4.7967869043350220e-01 + <_> + 5.8478435516357422e+01 + + 1 2 1923 7.5000000000000000e+00 0 -1 1924 + 1.5000000000000000e+00 -2 -3 1925 5.0000000000000000e-01 + + 4.2515745759010315e-01 -5.5478894710540771e-01 + 4.5419645309448242e-01 -1.3957175612449646e-01 + <_> + 5.8872611999511719e+01 + + 1 2 1926 1.8350000000000000e+02 0 -1 1927 + 4.0500000000000000e+01 -2 -3 1928 6.6500000000000000e+01 + + -2.0008619129657745e-01 3.9417695999145508e-01 + -9.6238315105438232e-01 1. + <_> + 5.8883186340332031e+01 + + 1 2 1929 1.2500000000000000e+01 0 -1 1930 + 3.5000000000000000e+00 -2 -3 1931 2.1050000000000000e+02 + + 6.1217731237411499e-01 -1.9048878923058510e-02 + -7.2783750295639038e-01 8.3897627890110016e-02 + <_> + 5.8808357238769531e+01 + + 1 2 1932 4.6500000000000000e+01 0 -1 1933 + 3.5000000000000000e+00 -2 -3 1934 2.8650000000000000e+02 + + 1.3248841464519501e-01 -6.7872178554534912e-01 + 4.7229564189910889e-01 -1.4815118908882141e-01 + <_> + 5.9144462585449219e+01 + + 1 2 1935 1.4500000000000000e+01 0 -1 1936 + 1.6500000000000000e+01 -2 -3 1937 9.5000000000000000e+00 + + -6.5575122833251953e-01 6.0179513692855835e-01 + 3.3610317111015320e-01 -2.4818602204322815e-01 + <_> + 5.9101814270019531e+01 + + 1 2 1938 5.0000000000000000e-01 0 -1 1939 + 2.5000000000000000e+00 -2 -3 1940 2.3500000000000000e+01 + + 6.1000245809555054e-01 -4.2646210640668869e-02 + -5.3324443101882935e-01 3.5818785429000854e-01 + <_> + 5.8948040008544922e+01 + + 1 2 1941 7.5000000000000000e+00 0 -1 1942 + 4.5000000000000000e+00 -2 -3 1943 5.0000000000000000e-01 + + -8.8669669628143311e-01 7.7529543638229370e-01 + 3.8582339882850647e-01 -1.5377666056156158e-01 + <_> + 5.9593772888183594e+01 + + 1 2 1944 3.5525000000000000e+03 0 -1 1945 + 3.4500000000000000e+01 -2 -3 1946 167. + + -2.2072853147983551e-01 3.3567503094673157e-01 1. -1. + <_> + 5.9370800018310547e+01 + + 1 2 1947 7.5000000000000000e+00 0 -1 1948 3474. -2 -3 1949 + 9.5000000000000000e+00 + + 3.4637100994586945e-02 -5.9609389305114746e-01 + 5.9798693656921387e-01 -1.3024185597896576e-01 + <_> + 5.9757068634033203e+01 + + 1 2 1950 1.1500000000000000e+01 0 -1 1951 + 4.4500000000000000e+01 -2 -3 1952 2.5000000000000000e+00 + + -9.1445469856262207e-01 8.4411728382110596e-01 + 3.8626831769943237e-01 -1.6962867975234985e-01 + <_> + 5.9796058654785156e+01 + + 1 2 1953 5.8750000000000000e+02 0 -1 1954 + 3.5000000000000000e+00 -2 -3 1955 3.9150000000000000e+02 + + 2.4987047910690308e-01 -6.1070859432220459e-01 + 7.2914922237396240e-01 -7.8055180609226227e-02 + <_> + 5.9801254272460938e+01 + + 1 2 1956 5.5850000000000000e+02 0 -1 1957 + 4.7500000000000000e+01 -2 -3 1958 1.8500000000000000e+01 + + -1.1270057410001755e-01 6.9968527555465698e-01 + 5.1938942633569241e-03 -7.4568808078765869e-01 + <_> + 6.0010192871093750e+01 + + 1 2 1959 4.8500000000000000e+01 0 -1 1960 + 6.5000000000000000e+00 -2 -3 1961 7.5000000000000000e+00 + + -7.4147862195968628e-01 2.0893752574920654e-01 + -7.3173969984054565e-01 3.0364623665809631e-01 + <_> + 5.9708690643310547e+01 + + 1 2 1962 5.0000000000000000e-01 0 -1 1963 + 3.5000000000000000e+00 -2 -3 1964 2.2500000000000000e+01 + + -9.1378659009933472e-01 5.2321916818618774e-01 + -3.0149966478347778e-01 6.9747513532638550e-01 + <_> + 6.0059795379638672e+01 + + 1 2 1965 4.1500000000000000e+01 0 -1 1966 + 1.5000000000000000e+00 -2 -3 1967 4.5500000000000000e+01 + + 7.6339656114578247e-01 -6.3636028766632080e-01 + 3.5110288858413696e-01 -2.9607880115509033e-01 + <_> + 6.0240623474121094e+01 + + 1 2 1968 4.5000000000000000e+00 0 -1 1969 + 1.5000000000000000e+00 -2 -3 1970 3.0850000000000000e+02 + + -6.1838161945343018e-01 1.8083088099956512e-01 + -1.4869785308837891e-01 5.0236159563064575e-01 + <_> + 6.0387596130371094e+01 + + 1 2 1971 1.6250000000000000e+02 0 -1 1972 + 4.5000000000000000e+00 -2 -3 1973 4.4650000000000000e+02 + + 6.7135459184646606e-01 1.1329505359753966e-03 + -6.6079312562942505e-01 1.4697253704071045e-01 + <_> + 6.0387634277343750e+01 + + 1 2 1974 3.5000000000000000e+00 0 -1 1975 + 1.8500000000000000e+01 -2 -3 1976 3.5500000000000000e+01 + + 3.3784970641136169e-01 -4.8918390274047852e-01 + -5.6978744268417358e-01 1.3324360549449921e-01 + <_> + 6.0022872924804688e+01 + + 1 2 1977 2.0850000000000000e+02 0 -1 1978 + 3.5000000000000000e+00 -2 -3 1979 2.2500000000000000e+01 + + 2.4730446934700012e-01 -3.6476173996925354e-01 + -6.7308956384658813e-01 5.9900748729705811e-01 + <_> + 6.0411987304687500e+01 + + 1 2 1980 4.6500000000000000e+01 0 -1 1981 + 7.5000000000000000e+00 -2 -3 1982 1.6500000000000000e+01 + + -7.1475833654403687e-01 3.5484632849693298e-01 + 3.8911363482475281e-01 -1.7250961065292358e-01 + <_> + 6.0604080200195312e+01 + + 1 2 1983 5.0000000000000000e-01 0 -1 1984 + 6.5000000000000000e+00 -2 -3 1985 4.5000000000000000e+00 + + -5.3925055265426636e-01 4.7325718402862549e-01 + 1.9209517538547516e-01 -4.6254682540893555e-01 + <_> + 6.0539005279541016e+01 + + 1 2 1986 3.5500000000000000e+01 0 -1 1987 97. -2 -3 1988 + 5.5000000000000000e+00 + + 6.5639108419418335e-01 -8.1671226024627686e-01 + 5.2336204051971436e-01 -6.5074905753135681e-02 + <_> + 6.0846366882324219e+01 + + 1 2 1989 3.1350000000000000e+02 0 -1 1990 + 1.6190500000000000e+04 -2 -3 1991 1.1005000000000000e+03 + + 4.3834140896797180e-01 -3.6532020568847656e-01 + 6.3986539840698242e-01 -4.1561451554298401e-01 + <_> + 6.0749099731445312e+01 + + 1 2 1992 3.5000000000000000e+00 0 -1 1993 + 1.6050000000000000e+02 -2 -3 1994 4.5000000000000000e+00 + + 3.9444553852081299e-01 -5.1368337869644165e-01 + -6.9115257263183594e-01 1.9162381067872047e-02 + <_> + 6.0911582946777344e+01 + + 1 2 1995 3.1500000000000000e+01 0 -1 1996 39. -2 -3 1997 + 1.5000000000000000e+00 + + -9.1950684785842896e-01 1. -7.2641021013259888e-01 + 1.6248121857643127e-01 + <_> + 6.0922454833984375e+01 + + 1 2 1998 5.5000000000000000e+00 0 -1 1999 + 1.0500000000000000e+01 -2 -3 2000 1.5805000000000000e+03 + + -7.5020366907119751e-01 3.5568973422050476e-01 + -4.8083752393722534e-01 3.0702778697013855e-01 + <_> + 6.1254642486572266e+01 + + 1 2 2001 3.3650000000000000e+02 0 -1 2002 + 5.0000000000000000e-01 -2 -3 2003 7.5000000000000000e+00 + + 7.5214070081710815e-01 -5.6389236450195312e-01 + 3.4662494063377380e-01 -2.9536944627761841e-01 + <_> + 6.1591125488281250e+01 + + 1 2 2004 2.5500000000000000e+01 0 -1 2005 + 1.4500000000000000e+01 -2 -3 2006 1.5000000000000000e+00 + + 1.3703818619251251e-01 -4.9739819765090942e-01 + -6.2935429811477661e-01 5.6868934631347656e-01 + <_> + 6.1522079467773438e+01 + + 1 2 2007 2.0500000000000000e+01 0 -1 2008 + 8.5500000000000000e+01 -2 -3 2009 4.5500000000000000e+01 + + 7.8972160816192627e-01 -6.7304050922393799e-01 + 2.6793375611305237e-01 -6.3064610958099365e-01 + <_> + 6.1685386657714844e+01 + + 1 2 2010 4.7055000000000000e+03 0 -1 2011 + 7.5000000000000000e+00 -2 -3 2012 34. + + -6.3200688362121582e-01 1.6331009566783905e-01 + -9.4863635301589966e-01 8.0065780878067017e-01 + <_> + 6.1566181182861328e+01 + + 1 2 2013 7.2950000000000000e+02 0 -1 2014 + 2.0350000000000000e+02 -2 -3 2015 2.1500000000000000e+01 + + -1.1920681595802307e-01 6.4878600835800171e-01 + -5.8408319950103760e-01 3.3495616912841797e-01 + <_> + 6.2094886779785156e+01 + + 1 2 2016 9.5000000000000000e+00 0 -1 2017 + 3.5000000000000000e+00 -2 -3 2018 2.3500000000000000e+01 + + 5.2870643138885498e-01 -5.9091903269290924e-02 + 1.4992588758468628e-01 -7.4673342704772949e-01 + <_> + 6.1996501922607422e+01 + + 1 2 2019 3.4500000000000000e+01 0 -1 2020 + 9.6500000000000000e+01 -2 -3 2021 7.5000000000000000e+00 + + -9.8386786878108978e-02 5.0483143329620361e-01 + 1.5602034330368042e-01 -6.9411128759384155e-01 + <_> + 6.2363922119140625e+01 + + 1 2 2022 1.4965000000000000e+03 0 -1 2023 61. -2 -3 2024 + 8.5250000000000000e+02 + + -9.3483263254165649e-01 1. 5.6837409734725952e-01 + -8.3574697375297546e-02 + <_> + 6.2407440185546875e+01 + + 1 2 2025 5977. 0 -1 2026 2.5000000000000000e+00 -2 -3 2027 + 2.1421500000000000e+04 + + 2.2136372327804565e-01 -6.3119232654571533e-01 + 9.1829413175582886e-01 4.3518073856830597e-02 + <_> + 6.2328540802001953e+01 + + 1 2 2028 9.5000000000000000e+00 0 -1 2029 + 3.8550000000000000e+02 -2 -3 2030 6.5000000000000000e+00 + + 7.9880517721176147e-01 -3.3323591947555542e-01 + -9.3455439805984497e-01 3.5605767369270325e-01 + <_> + 6.2549594879150391e+01 + + 1 2 2031 1.2500000000000000e+01 0 -1 2032 + 2.5000000000000000e+00 -2 -3 2033 1.4500000000000000e+01 + + 4.2225402593612671e-01 -2.8828126192092896e-01 + -4.3309009075164795e-01 6.5534549951553345e-01 + <_> + 6.2636714935302734e+01 + + 1 2 2034 417. 0 -1 2035 1.1500000000000000e+01 -2 -3 2036 7. + + -2.1113002672791481e-02 8.4205090999603271e-01 + -9.7738903760910034e-01 5.3100347518920898e-01 + <_> + 6.2861415863037109e+01 + + 1 2 2037 2.5000000000000000e+00 0 -1 2038 + 5.5000000000000000e+00 -2 -3 2039 3.6500000000000000e+01 + + -7.6132452487945557e-01 3.6051002144813538e-01 + -5.7641249895095825e-01 1.5012158453464508e-01 + <_> + 6.2900104522705078e+01 + + 1 2 2040 5.0000000000000000e-01 0 -1 2041 + 3.5000000000000000e+00 -2 -3 2042 6.5000000000000000e+00 + + -9.3149966001510620e-01 2.9147976636886597e-01 + -6.3701289892196655e-01 5.4918531328439713e-02 + <_> + 6.2879768371582031e+01 + + 1 2 2043 1.5000000000000000e+00 0 -1 2044 + 2.5000000000000000e+00 -2 -3 2045 1.5000000000000000e+00 + + 6.6399359703063965e-01 -1.0929831862449646e-01 + 7.8133702278137207e-02 -4.7019696235656738e-01 + <_> + 6.2129520416259766e+01 + + 1 2 2046 1.3650000000000000e+02 0 -1 2047 + 2.1215000000000000e+03 -2 -3 2048 1.9500000000000000e+01 + + 1.4869627356529236e-01 -7.8195393085479736e-01 + -5.4876875877380371e-01 2.9066467285156250e-01 + <_> + 6.2598121643066406e+01 + + 1 2 2049 5.5000000000000000e+00 0 -1 2050 + 2.0500000000000000e+01 -2 -3 2051 3.3450000000000000e+02 + + -2.8021445870399475e-01 4.6860334277153015e-01 + -4.1921630501747131e-01 9.1871756315231323e-01 + <_> + 6.2898983001708984e+01 + + 1 2 2052 5.8750000000000000e+02 0 -1 2053 + 3.3150000000000000e+02 -2 -3 2054 258. + + -5.8121073246002197e-01 7.2862756252288818e-01 + 3.0086198449134827e-01 -6.1838138103485107e-01 + <_> + 6.3007404327392578e+01 + + 1 2 2055 2.7950000000000000e+02 0 -1 2056 + 5.0500000000000000e+01 -2 -3 2057 3.5000000000000000e+00 + + -7.9203374683856964e-02 6.8916302919387817e-01 + 2.2891193628311157e-01 -4.4382786750793457e-01 + <_> + 6.3243953704833984e+01 + + 1 2 2058 8.5000000000000000e+00 0 -1 2059 + 3.2650000000000000e+02 -2 -3 2060 2.1500000000000000e+01 + + -1. 2.3655229806900024e-01 -5.4432135820388794e-01 + 8.4973216056823730e-01 + <_> + 6.3190502166748047e+01 + + 1 2 2061 3.1500000000000000e+01 0 -1 2062 + 6.4500000000000000e+01 -2 -3 2063 1.5500000000000000e+01 + + -1.7394508421421051e-01 3.4196874499320984e-01 + -7.9306966066360474e-01 7.7552306652069092e-01 + <_> + 6.3256435394287109e+01 + + 1 2 2064 5.0000000000000000e-01 0 -1 2065 + 4.5000000000000000e+00 -2 -3 2066 1.6500000000000000e+01 + + -6.4375263452529907e-01 4.6298280358314514e-01 + 6.5930701792240143e-02 -6.0258072614669800e-01 + <_> + 6.3547569274902344e+01 + + 1 2 2067 3.5000000000000000e+00 0 -1 2068 + 2.9665000000000000e+03 -2 -3 2069 2.5000000000000000e+00 + + 2.6696309447288513e-01 -6.1605608463287354e-01 + 5.8771264553070068e-01 -7.7434383332729340e-02 + <_> + 6.3455562591552734e+01 + + 1 2 2070 2.6500000000000000e+01 0 -1 2071 + 1.0435000000000000e+03 -2 -3 2072 2.2500000000000000e+01 + + -3.0468648672103882e-01 2.7090394496917725e-01 -1. + 7.8004688024520874e-01 + <_> + 6.3757442474365234e+01 + + 1 2 2073 1.0350000000000000e+02 0 -1 2074 + 1.0500000000000000e+01 -2 -3 2075 2.5000000000000000e+00 + + -3.8403138518333435e-01 3.0187815427780151e-01 + 3.1422126293182373e-01 -7.1062839031219482e-01 + <_> + 6.3906417846679688e+01 + + 1 2 2076 4.5000000000000000e+00 0 -1 2077 + 1.5000000000000000e+00 -2 -3 2078 4.8150000000000000e+02 + + -7.3861616849899292e-01 4.0836670994758606e-01 + -5.5579960346221924e-01 1.4897711575031281e-01 + <_> + 6.4099327087402344e+01 + + 1 2 2079 2.5500000000000000e+01 0 -1 2080 + 5.7650000000000000e+02 -2 -3 2081 1.8500000000000000e+01 + + -5.5475443601608276e-01 1.9290663301944733e-01 + -7.1113204956054688e-01 5.3957355022430420e-01 + <_> + 6.3918937683105469e+01 + + 1 2 2082 3.5000000000000000e+00 0 -1 2083 + 9.7500000000000000e+01 -2 -3 2084 3.5000000000000000e+00 + + -3.3335947990417480e-01 2.7078640460968018e-01 + 3.7570750713348389e-01 -7.7115553617477417e-01 + <_> + 6.3970809936523438e+01 + + 1 2 2085 3.5000000000000000e+00 0 -1 2086 + 1.9850000000000000e+02 -2 -3 2087 2.3500000000000000e+01 + + 6.5109664201736450e-01 -1.3773214817047119e-01 + -5.4258519411087036e-01 5.1870465278625488e-02 + <_> + 6.4214424133300781e+01 + + 1 2 2088 1.2500000000000000e+01 0 -1 2089 + 3.2450000000000000e+02 -2 -3 2090 6.5000000000000000e+00 + + 4.3517467379570007e-01 -9.6950376033782959e-01 + 2.5978988409042358e-01 -2.7689433097839355e-01 + <_> + 6.4605529785156250e+01 + + 1 2 2091 327. 0 -1 2092 5.0000000000000000e-01 -2 -3 2093 + 1.5500000000000000e+01 + + 2.3849301040172577e-01 -5.6138235330581665e-01 + -6.2119048833847046e-01 3.9110702276229858e-01 + <_> + 6.4053535461425781e+01 + + 1 2 2094 1.8500000000000000e+01 0 -1 2095 + 1.4500000000000000e+01 -2 -3 2096 1.7225000000000000e+03 + + -7.9772460460662842e-01 2.5171506404876709e-01 + 4.5911735296249390e-01 -5.6817436218261719e-01 + <_> + 6.4624084472656250e+01 + + 1 2 2097 1.3500000000000000e+01 0 -1 2098 + 3.8450000000000000e+02 -2 -3 2099 2.5000000000000000e+00 + + 6.7918819189071655e-01 -6.8560796976089478e-01 + 5.7055342197418213e-01 -1.1227272450923920e-01 + <_> + 6.4599174499511719e+01 + + 1 2 2100 3.9950000000000000e+02 0 -1 2101 + 6.5000000000000000e+00 -2 -3 2102 2.6500000000000000e+01 + + 2.6946315169334412e-01 -6.8496251106262207e-01 + -1.4580105245113373e-01 4.0004068613052368e-01 + <_> + 6.4730812072753906e+01 + + 1 2 2103 5.0000000000000000e-01 0 -1 2104 + 1.0500000000000000e+01 -2 -3 2105 2.5000000000000000e+00 + + -4.1157549619674683e-01 3.9449948072433472e-01 + 1.3164354860782623e-01 -5.7457894086837769e-01 + <_> + 6.4550361633300781e+01 + + 1 2 2106 6.1500000000000000e+01 0 -1 2107 + 4.2500000000000000e+01 -2 -3 2108 5.0000000000000000e-01 + + -6.7661024630069733e-02 4.9807086586952209e-01 + 2.6868519186973572e-01 -5.6513643264770508e-01 + <_> + 6.4741752624511719e+01 + + 1 2 2109 1.5000000000000000e+00 0 -1 2110 + 1.4500000000000000e+01 -2 -3 2111 5.0000000000000000e-01 + + -5.7091879844665527e-01 4.6459051966667175e-01 + 2.1071271598339081e-01 -4.8713284730911255e-01 + <_> + 6.4659866333007812e+01 + + 1 2 2112 2.5000000000000000e+00 0 -1 2113 + 1.0500000000000000e+01 -2 -3 2114 2.5000000000000000e+00 + + 8.9292472600936890e-01 -9.4043314456939697e-01 + 5.3616881370544434e-01 -8.1886835396289825e-02 + <_> + 6.4854621887207031e+01 + + 1 2 2115 5.7500000000000000e+01 0 -1 2116 + 6.5000000000000000e+00 -2 -3 2117 1399. + + 1.7543983459472656e-01 -5.9518599510192871e-01 + -6.6982376575469971e-01 3.6574700474739075e-01 + <_> + 6.4909034729003906e+01 + + 1 2 2118 2.7650000000000000e+02 0 -1 2119 2618. -2 -3 2120 + 4.3500000000000000e+01 + + 5.1149606704711914e-01 -7.5715744495391846e-01 + 5.4412230849266052e-02 -5.4240036010742188e-01 + <_> + 6.5523689270019531e+01 + + 1 2 2121 2.0850000000000000e+02 0 -1 2122 + 1.5000000000000000e+00 -2 -3 2123 2.1500000000000000e+01 + + 2.8490218520164490e-01 -4.3338671326637268e-01 + -4.2747175693511963e-01 6.1465066671371460e-01 + <_> + 6.5561706542968750e+01 + + 1 2 2124 212. 0 -1 2125 4.5500000000000000e+01 -2 -3 2126 + 2.5150000000000000e+02 + + -5.5702477693557739e-01 3.5860374569892883e-01 + -6.7760747671127319e-01 3.8017414510250092e-02 + <_> + 6.5649497985839844e+01 + + 1 2 2127 5.9500000000000000e+01 0 -1 2128 + 3.5000000000000000e+00 -2 -3 2129 6.5000000000000000e+00 + + -7.9711538553237915e-01 2.5381851196289062e-01 + 4.2455443739891052e-01 -1.7120632529258728e-01 + <_> + 6.5992294311523438e+01 + + 1 2 2130 3.5000000000000000e+00 0 -1 2131 + 1.6250000000000000e+02 -2 -3 2132 2.2500000000000000e+01 + + -3.3420738577842712e-01 6.4248228073120117e-01 + 6.8257737159729004e-01 -1.6899804770946503e-01 + <_> + 6.6213569641113281e+01 + + 1 2 2133 5.5000000000000000e+00 0 -1 2134 + 7.3500000000000000e+01 -2 -3 2135 9.4500000000000000e+01 + + 2.2127301990985870e-01 -7.9195356369018555e-01 + -6.8413102626800537e-01 8.0674022436141968e-01 + <_> + 6.5891929626464844e+01 + + 1 2 2136 5.1500000000000000e+01 0 -1 2137 + 3.5000000000000000e+00 -2 -3 2138 3.6750000000000000e+02 + + 3.1779468059539795e-01 -3.8076880574226379e-01 + 6.2580502033233643e-01 -3.2678863406181335e-01 + <_> + 6.5933746337890625e+01 + + 1 2 2139 1.1500000000000000e+01 0 -1 2140 + 2.5000000000000000e+00 -2 -3 2141 4.5000000000000000e+00 + + 1.1745031177997589e-01 -4.3131595849990845e-01 + 6.6705638170242310e-01 -2.3260143399238586e-01 + <_> + 6.5980415344238281e+01 + + 1 2 2142 3.5000000000000000e+00 0 -1 2143 + 2.5000000000000000e+00 -2 -3 2144 5.0000000000000000e-01 + + 7.7854001522064209e-01 -8.4415936470031738e-01 + 5.8085924386978149e-01 -2.8965638950467110e-02 + <_> + 6.5784027099609375e+01 + + 1 2 2145 4.7500000000000000e+01 0 -1 2146 + 2.5000000000000000e+00 -2 -3 2147 3.5000000000000000e+00 + + 3.7243506312370300e-01 -6.9404041767120361e-01 + 3.7178915739059448e-01 -1.9639030098915100e-01 + <_> + 6.6053306579589844e+01 + + 1 2 2148 4.7350000000000000e+02 0 -1 2149 + 4.7500000000000000e+01 -2 -3 2150 2.2500000000000000e+01 + + -3.7930485606193542e-01 2.6928251981735229e-01 + -6.6765409708023071e-01 4.6291077136993408e-01 + <_> + 6.6251876831054688e+01 + + 1 2 2151 1.7500000000000000e+01 0 -1 2152 + 3.2650000000000000e+02 -2 -3 2153 1.5500000000000000e+01 + + -1. 1.9857025146484375e-01 -6.2745827436447144e-01 + 4.3167012929916382e-01 + <_> + 6.6497039794921875e+01 + + 1 2 2154 2.8500000000000000e+01 0 -1 2155 + 2.6500000000000000e+01 -2 -3 2156 4.1500000000000000e+01 + + -8.1000304222106934e-01 6.9051915407180786e-01 + -2.8902414441108704e-01 4.2377713322639465e-01 + <_> + 6.6451217651367188e+01 + + 1 2 2157 4.1250000000000000e+02 0 -1 2158 + 1.6500000000000000e+01 -2 -3 2159 3.0650000000000000e+02 + + 2.3259440436959267e-02 -6.3648867607116699e-01 + 7.6639103889465332e-01 -1.8078628182411194e-01 + <_> + 6.6132827758789062e+01 + + 1 2 2160 2.1500000000000000e+01 0 -1 2161 + 8.7550000000000000e+02 -2 -3 2162 1.6500000000000000e+01 + + -3.3872911334037781e-01 2.7060332894325256e-01 + -6.3514488935470581e-01 9.0211552381515503e-01 + <_> + 6.6081367492675781e+01 + + 1 2 2163 5.7650000000000000e+02 0 -1 2164 681. -2 -3 2165 + 1.7175000000000000e+03 + + -7.8227895498275757e-01 8.6135381460189819e-01 + 8.2487636804580688e-01 -5.1461022347211838e-02 + <_> + 6.5997879028320312e+01 + + 1 2 2166 1.8500000000000000e+01 0 -1 2167 + 4.5000000000000000e+00 -2 -3 2168 3.5500000000000000e+01 + + -8.3486534655094147e-02 6.0638916492462158e-01 + -4.8585453629493713e-01 2.9007250070571899e-01 + <_> + 6.6484413146972656e+01 + + 1 2 2169 1.2995000000000000e+03 0 -1 2170 + 4.6065000000000000e+03 -2 -3 2171 2.5000000000000000e+00 + + -2.7341315150260925e-01 5.3913331031799316e-01 + 4.8653602600097656e-01 -4.5589551329612732e-01 + <_> + 6.6919540405273438e+01 + + 1 2 2172 2.8500000000000000e+01 0 -1 2173 143. -2 -3 2174 + 1.3500000000000000e+01 + + 4.0857741236686707e-01 -7.9653608798980713e-01 + 4.3512815237045288e-01 -1.2409269809722900e-01 + <_> + 6.6548828125000000e+01 + + 1 2 2175 3.6500000000000000e+01 0 -1 2176 + 3.8500000000000000e+01 -2 -3 2177 3.0015000000000000e+03 + + -3.7071618437767029e-01 3.0769228935241699e-01 + -5.6432120501995087e-02 7.5577193498611450e-01 + <_> + 6.6935661315917969e+01 + + 1 2 2178 221. 0 -1 2179 5.0000000000000000e-01 -2 -3 2180 + 6.5000000000000000e+00 + + 3.8683256506919861e-01 -1.6335722804069519e-01 + 3.1397402286529541e-01 -8.9784342050552368e-01 + <_> + 6.6811462402343750e+01 + + 1 2 2181 1.6500000000000000e+01 0 -1 2182 + 9.7500000000000000e+01 -2 -3 2183 4.5000000000000000e+00 + + 1.9564503431320190e-01 -6.8224984407424927e-01 + 3.6420011520385742e-01 -2.7474680542945862e-01 + <_> + 6.7206642150878906e+01 + + 1 2 2184 2.8150000000000000e+02 0 -1 2185 + 5.3500000000000000e+01 -2 -3 2186 2.1950000000000000e+02 + + 3.9518028497695923e-01 -7.5029599666595459e-01 + -4.5047336816787720e-01 4.4910728931427002e-01 + <_> + 6.6829307556152344e+01 + + 1 2 2187 6.2550000000000000e+02 0 -1 2188 + 2.7045000000000000e+03 -2 -3 2189 7.5250000000000000e+02 + + -1.0180658102035522e-01 4.7846919298171997e-01 + -9.1966360807418823e-01 -3.8947533816099167e-02 + <_> + 6.6750717163085938e+01 + + 1 2 2190 4.7350000000000000e+02 0 -1 2191 + 5.7500000000000000e+01 -2 -3 2192 5.0000000000000000e-01 + + -7.8587010502815247e-02 6.3941407203674316e-01 + 7.1196836233139038e-01 -7.2520041465759277e-01 + <_> + 6.7127670288085938e+01 + + 1 2 2193 2.5000000000000000e+00 0 -1 2194 + 1.5500000000000000e+01 -2 -3 2195 2.5000000000000000e+00 + + -4.7885441780090332e-01 3.2798525691032410e-01 + 8.6548590660095215e-01 5.7965524494647980e-02 + <_> + 6.7040710449218750e+01 + + 1 2 2196 2.5000000000000000e+00 0 -1 2197 + 1.9500000000000000e+01 -2 -3 2198 1.2500000000000000e+01 + + -5.5627369880676270e-01 5.8527511358261108e-01 + -5.7549017667770386e-01 6.9125495851039886e-02 + <_> + 6.7134475708007812e+01 + + 1 2 2199 2.5000000000000000e+00 0 -1 2200 + 1.4215000000000000e+03 -2 -3 2201 5.0000000000000000e-01 + + 3.7880736589431763e-01 -4.5164510607719421e-01 + 5.3598467260599136e-02 -5.7012593746185303e-01 + <_> + 6.7369125366210938e+01 + + 1 2 2202 5.5000000000000000e+00 0 -1 2203 + 5.5000000000000000e+00 -2 -3 2204 1.5000000000000000e+00 + + -9.4780540466308594e-01 7.3004895448684692e-01 + 6.4780569076538086e-01 -5.0393346697092056e-02 + <_> + 6.7813079833984375e+01 + + 1 2 2205 1.2500000000000000e+01 0 -1 2206 9948. -2 -3 2207 + 2.0450000000000000e+02 + + -4.2956997640430927e-03 -9.1839849948883057e-01 + -1.5275211632251740e-01 4.4395634531974792e-01 + <_> + 6.8058036804199219e+01 + + 1 2 2208 4.0500000000000000e+01 0 -1 2209 + 5.0000000000000000e-01 -2 -3 2210 4.7500000000000000e+01 + + 2.4495334923267365e-01 -9.5012718439102173e-01 + 1.7766039073467255e-01 -4.3439298868179321e-01 + <_> + 6.7814498901367188e+01 + + 1 2 2211 1.5500000000000000e+01 0 -1 2212 + 7.5000000000000000e+00 -2 -3 2213 1.4500000000000000e+01 + + 3.4375911951065063e-01 -6.9197601079940796e-01 + -7.6082307100296021e-01 2.3456893861293793e-01 + <_> + 6.7533103942871094e+01 + + 1 2 2214 8.1500000000000000e+01 0 -1 2215 + 1.1500000000000000e+01 -2 -3 2216 1.9500000000000000e+01 + + 2.6256918907165527e-01 -2.8139856457710266e-01 + -8.1822723150253296e-01 2.4620606005191803e-01 + <_> + 6.7985069274902344e+01 + + 1 2 2217 2.6500000000000000e+01 0 -1 2218 + 9.5000000000000000e+00 -2 -3 2219 4.5000000000000000e+00 + + -1.2688148021697998e-01 -9.2650556564331055e-01 + 4.5196792483329773e-01 -1.2886488437652588e-01 + <_> + 6.8211486816406250e+01 + + 1 2 2220 1.9500000000000000e+01 0 -1 2221 + 9.4500000000000000e+01 -2 -3 2222 1.8500000000000000e+01 + + -4.5716031454503536e-03 -9.2506814002990723e-01 + 2.2641468048095703e-01 -5.4319751262664795e-01 + <_> + 6.8062339782714844e+01 + + 1 2 2223 1.5000000000000000e+00 0 -1 2224 + 1.1350000000000000e+02 -2 -3 2225 3.5000000000000000e+00 + + -1.4914712309837341e-01 6.2766093015670776e-01 + 5.2602481842041016e-01 -3.3082970976829529e-01 + <_> + 6.8320228576660156e+01 + + 1 2 2226 6.7500000000000000e+01 0 -1 2227 + 4.5000000000000000e+00 -2 -3 2228 8.3350000000000000e+02 + + -7.0059794187545776e-01 2.5789487361907959e-01 + 2.8099337220191956e-01 -6.9175392389297485e-01 + <_> + 6.8181999206542969e+01 + + 1 2 2229 1.2500000000000000e+01 0 -1 2230 + 3.1350000000000000e+02 -2 -3 2231 9.4565000000000000e+03 + + 1.9189414381980896e-01 -3.9976862072944641e-01 + 5.6042033433914185e-01 -9.6583509445190430e-01 + <_> + 6.8313468933105469e+01 + + 1 2 2232 9.5000000000000000e+00 0 -1 2233 1313. -2 -3 2234 + 7.9450000000000000e+02 + + 6.0552877187728882e-01 -7.1993356943130493e-01 + -1.9865931570529938e-01 3.5071191191673279e-01 + <_> + 6.8655784606933594e+01 + + 1 2 2235 5.5000000000000000e+00 0 -1 2236 + 1.5500000000000000e+01 -2 -3 2237 4.2500000000000000e+01 + + -8.3366417884826660e-01 3.4231638908386230e-01 + -5.7617366313934326e-01 1.2723289430141449e-01 + <_> + 6.8312980651855469e+01 + + 1 2 2238 1.5000000000000000e+00 0 -1 2239 + 1.0500000000000000e+01 -2 -3 2240 3.2950000000000000e+02 + + -6.2311822175979614e-01 5.3832811117172241e-01 + -3.4280434250831604e-01 6.2301361560821533e-01 + <_> + 6.8748611450195312e+01 + + 1 2 2241 5.5000000000000000e+00 0 -1 2242 + 6.3500000000000000e+01 -2 -3 2243 1.4355000000000000e+03 + + 4.3563413619995117e-01 -7.9157996177673340e-01 + 6.3327491283416748e-02 -5.8212018013000488e-01 + <_> + 6.8442298889160156e+01 + + 1 2 2244 2.0500000000000000e+01 0 -1 2245 + 8.5000000000000000e+00 -2 -3 2246 1.3350000000000000e+02 + + -3.0631437897682190e-01 2.6373180747032166e-01 + 7.2269374132156372e-01 -8.2843840122222900e-01 + <_> + 6.8691452026367188e+01 + + 1 2 2247 5.8450000000000000e+02 0 -1 2248 1991. -2 -3 2249 + 1.9550000000000000e+02 + + -5.8844625949859619e-01 7.2171705961227417e-01 + 5.9379982948303223e-01 -8.8590703904628754e-02 + <_> + 6.8854362487792969e+01 + + 1 2 2250 2.2450000000000000e+02 0 -1 2251 + 3.5000000000000000e+00 -2 -3 2252 4.4500000000000000e+01 + + 4.1746988892555237e-01 -1.5201584994792938e-01 + -7.8322100639343262e-01 4.8759365081787109e-01 + <_> + 6.8978080749511719e+01 + + 1 2 2253 1.1350000000000000e+02 0 -1 2254 + 4.5000000000000000e+00 -2 -3 2255 4.5500000000000000e+01 + + 1.2371577322483063e-01 -6.8989777565002441e-01 + 3.5007947683334351e-01 -7.2059243917465210e-01 + <_> + 6.9356269836425781e+01 + + 1 2 2256 1.9500000000000000e+01 0 -1 2257 + 1.0500000000000000e+01 -2 -3 2258 1.3500000000000000e+01 + + 2.8434163331985474e-01 -4.2419987916946411e-01 + 5.7273209095001221e-01 -1.0273739695549011e-01 + <_> + 6.9808845520019531e+01 + + 1 2 2259 5.5000000000000000e+00 0 -1 2260 + 1.8500000000000000e+01 -2 -3 2261 1.5000000000000000e+00 + + -8.0742955207824707e-01 8.1550550460815430e-01 + 4.5257565379142761e-01 -1.1754118651151657e-01 + <_> + 6.9490539550781250e+01 + + 1 2 2262 5.3500000000000000e+01 0 -1 2263 80. -2 -3 2264 + 2.9500000000000000e+01 + + -5.4256713390350342e-01 5.4104971885681152e-01 + 3.5188353061676025e-01 -3.0036619305610657e-01 + <_> + 6.9366668701171875e+01 + + 1 2 2265 2.6065000000000000e+03 0 -1 2266 + 3.1350000000000000e+02 -2 -3 2267 5.5000000000000000e+00 + + -1.2386845052242279e-01 4.6345305442810059e-01 + 6.0491842031478882e-01 -9.4304585456848145e-01 + <_> + 6.9713836669921875e+01 + + 1 2 2268 1.7500000000000000e+01 0 -1 2269 + 2.5000000000000000e+00 -2 -3 2270 5.0000000000000000e-01 + + -8.5482913255691528e-01 3.4717017412185669e-01 + 1.7867124080657959e-01 -6.1432170867919922e-01 + <_> + 7.0036468505859375e+01 + + 1 2 2271 7.5000000000000000e+00 0 -1 2272 + 2.3500000000000000e+01 -2 -3 2273 1.5500000000000000e+01 + + -9.8486787080764771e-01 3.2262811064720154e-01 + -5.6460940837860107e-01 1.9223406910896301e-01 + <_> + 6.9981750488281250e+01 + + 1 2 2274 1.7250000000000000e+02 0 -1 2275 + 5.0000000000000000e-01 -2 -3 2276 5.6500000000000000e+01 + + 2.4282279610633850e-01 -3.6108613014221191e-01 + 5.9585607051849365e-01 -6.8952751159667969e-01 + <_> + 6.9557426452636719e+01 + + 1 2 2277 1.5000000000000000e+00 0 -1 2278 7. -2 -3 2279 + 4.2050000000000000e+02 + + 1. -7.2186136245727539e-01 2.3051606118679047e-01 + -4.9865522980690002e-01 + <_> + 6.9593688964843750e+01 + + 1 2 2280 3.5000000000000000e+00 0 -1 2281 + 5.5000000000000000e+00 -2 -3 2282 1.5000000000000000e+00 + + 3.6256898194551468e-02 -5.9310066699981689e-01 + 6.1099308729171753e-01 -5.2162308245897293e-02 + <_> + 6.9190055847167969e+01 + + 1 2 2283 5.0000000000000000e-01 0 -1 2284 + 1.5000000000000000e+00 -2 -3 2285 3.1950000000000000e+02 + + -5.6549012660980225e-01 4.1545909643173218e-01 + -4.0363189578056335e-01 6.4397597312927246e-01 + <_> + 6.9152801513671875e+01 + + 1 2 2286 1.2500000000000000e+01 0 -1 2287 + 1.3500000000000000e+01 -2 -3 2288 1.5000000000000000e+00 + + 8.4121584892272949e-02 -8.1945008039474487e-01 + 5.4119038581848145e-01 -3.7251871079206467e-02 + <_> + 6.9844085693359375e+01 + + 1 2 2289 4.1950000000000000e+02 0 -1 2290 3338. -2 -3 2291 + 1.7450000000000000e+02 + + -1.0648692399263382e-01 6.9128334522247314e-01 + -4.1935205459594727e-01 2.4380990862846375e-01 + <_> + 7.0174018859863281e+01 + + 1 2 2292 1.5500000000000000e+01 0 -1 2293 + 2.6500000000000000e+01 -2 -3 2294 1.5000000000000000e+00 + + -5.6438052654266357e-01 3.2993179559707642e-01 + 1.9468745589256287e-01 -5.9477233886718750e-01 + <_> + 7.0660224914550781e+01 + + 1 2 2295 1.0150000000000000e+02 0 -1 2296 + 5.0000000000000000e-01 -2 -3 2297 2.6500000000000000e+01 + + 4.8620355129241943e-01 -1.8835483491420746e-01 + -5.4727905988693237e-01 5.2561342716217041e-01 + <_> + 7.0732994079589844e+01 + + 1 2 2298 1.4450000000000000e+02 0 -1 2299 + 2.5000000000000000e+00 -2 -3 2300 1.5000000000000000e+00 + + 7.2770319879055023e-02 -6.6459918022155762e-01 + 4.1657650470733643e-01 -3.1872367858886719e-01 + <_> + 7.0376434326171875e+01 + + 1 2 2301 2.7750000000000000e+02 0 -1 2302 + 2.8500000000000000e+01 -2 -3 2303 2.2500000000000000e+01 + + -4.7953361272811890e-01 5.4570424556732178e-01 + 3.0004525184631348e-01 -3.5655823349952698e-01 + <_> + 7.0656318664550781e+01 + + 1 2 2304 5.8750000000000000e+02 0 -1 2305 + 1.0500000000000000e+01 -2 -3 2306 7.1500000000000000e+01 + + -1.0104954242706299e-01 -8.7880355119705200e-01 + -8.3692330121994019e-01 2.7988719940185547e-01 + <_> + 7.0784782409667969e+01 + + 1 2 2307 1.4500000000000000e+01 0 -1 2308 + 1.0450000000000000e+02 -2 -3 2309 67. + + 6.7218846082687378e-01 -3.5151880979537964e-01 + -6.5867102146148682e-01 4.6130353212356567e-01 + <_> + 7.0990669250488281e+01 + + 1 2 2310 334. 0 -1 2311 3.3500000000000000e+01 -2 -3 2312 + 8.1750000000000000e+02 + + -3.3783861994743347e-01 3.0199536681175232e-01 + -9.2741793394088745e-01 2.6250743865966797e-01 + <_> + 7.1334205627441406e+01 + + 1 2 2313 1.4500000000000000e+01 0 -1 2314 + 1.4500000000000000e+01 -2 -3 2315 3.6500000000000000e+01 + + -2.9965308308601379e-01 4.6802315115928650e-01 + -4.5157477259635925e-01 6.7555361986160278e-01 + <_> + 7.1500701904296875e+01 + + 1 2 2316 5.0000000000000000e-01 0 -1 2317 87. -2 -3 2318 + 5.5000000000000000e+00 + + 3.0542531609535217e-01 -5.7673245668411255e-01 + 2.7094784379005432e-01 -5.7631582021713257e-01 + <_> + 7.1793479919433594e+01 + + 1 2 2319 4.5000000000000000e+00 0 -1 2320 + 3.0500000000000000e+01 -2 -3 2321 1.8005000000000000e+03 + + -9.6369409561157227e-01 1. 2.9277887940406799e-01 + -2.4375233054161072e-01 + <_> + 7.1967315673828125e+01 + + 1 2 2322 2.5000000000000000e+00 0 -1 2323 4880. -2 -3 2324 + 3.2500000000000000e+01 + + 3.0087158083915710e-01 -5.3540611267089844e-01 + -6.9770932197570801e-01 -8.8338237255811691e-03 + <_> + 7.1673614501953125e+01 + + 1 2 2325 1.1500000000000000e+01 0 -1 2326 + 5.0000000000000000e-01 -2 -3 2327 2.5000000000000000e+00 + + 3.5899358987808228e-01 -5.2653604745864868e-01 + 5.8578026294708252e-01 -3.2805901020765305e-02 + <_> + 7.1711250305175781e+01 + + 1 2 2328 1.8500000000000000e+01 0 -1 2329 + 1.8050000000000000e+02 -2 -3 2330 35. + + 3.5447284579277039e-01 -5.9741777181625366e-01 + -7.3350757360458374e-01 2.8574359416961670e-01 + <_> + 7.1695281982421875e+01 + + 1 2 2331 2.0850000000000000e+02 0 -1 2332 1048. -2 -3 2333 + 5.5000000000000000e+00 + + -3.0666926503181458e-01 9.4038575887680054e-01 + -7.0172363519668579e-01 4.9131000041961670e-01 + <_> + 7.1706031799316406e+01 + + 1 2 2334 2.8850000000000000e+02 0 -1 2335 1736. -2 -3 2336 + 1.5000000000000000e+00 + + 1.0753270238637924e-02 7.3304736614227295e-01 + 5.3744524717330933e-01 -5.2062910795211792e-01 + <_> + 7.1823760986328125e+01 + + 1 2 2337 1.6500000000000000e+01 0 -1 2338 + 7.5000000000000000e+00 -2 -3 2339 1.5000000000000000e+00 + + -7.8876292705535889e-01 3.3360600471496582e-01 + 1.1772559583187103e-01 -5.7080477476119995e-01 + <_> + 7.2228584289550781e+01 + + 1 2 2340 2.5000000000000000e+00 0 -1 2341 + 4.6500000000000000e+01 -2 -3 2342 1.5250000000000000e+02 + + -2.1400362253189087e-01 4.0482848882675171e-01 + -6.2977635860443115e-01 3.5589864850044250e-01 + <_> + 7.2438087463378906e+01 + + 1 2 2343 1.6500000000000000e+01 0 -1 2344 3901. -2 -3 2345 + 2.7500000000000000e+01 + + 2.0950204133987427e-01 -5.5380266904830933e-01 + -7.4909400939941406e-01 5.2945792675018311e-01 + <_> + 7.2360771179199219e+01 + + 1 2 2346 2.4500000000000000e+01 0 -1 2347 + 7.5000000000000000e+00 -2 -3 2348 1.8500000000000000e+01 + + 3.7871867418289185e-01 -7.5313919782638550e-01 + 5.1331257820129395e-01 -9.7519315779209137e-02 + <_> + 7.1928703308105469e+01 + + 1 2 2349 8.0500000000000000e+01 0 -1 2350 + 8.6500000000000000e+01 -2 -3 2351 139. + + 5.2605316042900085e-02 -6.2711888551712036e-01 + -3.3864989876747131e-01 4.3293687701225281e-01 + <_> + 7.2465637207031250e+01 + + 1 2 2352 3.5000000000000000e+00 0 -1 2353 + 3.5000000000000000e+00 -2 -3 2354 458. + + -8.2156580686569214e-01 5.3693503141403198e-01 + -7.5703012943267822e-01 7.3093846440315247e-03 + <_> + 7.2306266784667969e+01 + + 1 2 2355 1.5000000000000000e+00 0 -1 2356 + 2.2500000000000000e+01 -2 -3 2357 5.0000000000000000e-01 + + -8.8483113050460815e-01 2.5380238890647888e-01 + 1.9247277081012726e-01 -5.5495434999465942e-01 + <_> + 7.2351318359375000e+01 + + 1 2 2358 5.0000000000000000e-01 0 -1 2359 + 1.1500000000000000e+01 -2 -3 2360 2.0550000000000000e+02 + + -6.4710837602615356e-01 3.3967879414558411e-01 + 4.5056350529193878e-02 -6.6342002153396606e-01 + <_> + 7.2549964904785156e+01 + + 1 2 2361 3.1500000000000000e+01 0 -1 2362 + 5.5000000000000000e+00 -2 -3 2363 1.1150000000000000e+02 + + -9.2634866014122963e-03 -5.6539881229400635e-01 + 5.9193736314773560e-01 -6.0422807931900024e-01 + <_> + 7.2340164184570312e+01 + + 1 2 2364 1.4550000000000000e+02 0 -1 2365 87. -2 -3 2366 + 2.0500000000000000e+01 + + 7.1558344364166260e-01 -6.7444592714309692e-01 + 2.4655258655548096e-01 -4.4633221626281738e-01 + <_> + 7.2298965454101562e+01 + + 1 2 2367 5.0000000000000000e-01 0 -1 2368 + 1.6500000000000000e+01 -2 -3 2369 1.1650000000000000e+02 + + -6.4155972003936768e-01 5.6763589382171631e-01 + 4.5910947024822235e-02 -5.7516378164291382e-01 + <_> + 7.2460647583007812e+01 + + 1 2 2370 1.0500000000000000e+01 0 -1 2371 776. -2 -3 2372 + 3.0350000000000000e+02 + + 1. -7.5311285257339478e-01 1.6168554127216339e-01 + -9.7889220714569092e-01 + <_> + 7.2329025268554688e+01 + + 1 2 2373 6.8250000000000000e+02 0 -1 2374 + 9.8350000000000000e+02 -2 -3 2375 8.4550000000000000e+02 + + -5.8907532691955566e-01 6.2361657619476318e-01 + 6.0256063938140869e-01 -1.3162477314472198e-01 + <_> + 7.2692337036132812e+01 + + 1 2 2376 9.5000000000000000e+00 0 -1 2377 587. -2 -3 2378 + 6.2850000000000000e+02 + + 1.8354943394660950e-01 -6.3397884368896484e-01 + 3.6331036686897278e-01 -4.3740653991699219e-01 + <_> + 7.3099296569824219e+01 + + 1 2 2379 5.0000000000000000e-01 0 -1 2380 + 5.5000000000000000e+00 -2 -3 2381 1.5000000000000000e+00 + + 4.0695956349372864e-01 -2.3705665767192841e-01 + 5.4972708225250244e-01 -5.1312422752380371e-01 + <_> + 7.3302726745605469e+01 + + 1 2 2382 8.7050000000000000e+02 0 -1 2383 + 1.5000000000000000e+00 -2 -3 2384 2.9500000000000000e+01 + + 3.9779379963874817e-01 -6.3519412279129028e-01 + -8.4823501110076904e-01 3.2447892427444458e-01 + <_> + 7.3023147583007812e+01 + + 1 2 2385 5.0000000000000000e-01 0 -1 2386 + 3.8500000000000000e+01 -2 -3 2387 1.5775000000000000e+03 + + -2.5971448421478271e-01 5.4386669397354126e-01 + -4.0062361955642700e-01 4.5868498086929321e-01 + <_> + 7.3163795471191406e+01 + + 1 2 2388 2.7500000000000000e+01 0 -1 2389 + 5.0000000000000000e-01 -2 -3 2390 4.6500000000000000e+01 + + 1.4064319431781769e-01 -4.5721408724784851e-01 + 8.3929353952407837e-01 -5.6752306222915649e-01 + <_> + 7.3411483764648438e+01 + + 1 2 2391 3.5000000000000000e+00 0 -1 2392 21. -2 -3 2393 + 1.0850000000000000e+02 + + -7.8916430473327637e-01 1. 2.4769315123558044e-01 + -4.8368823528289795e-01 + <_> + 7.3806152343750000e+01 + + 1 2 2394 6.5000000000000000e+00 0 -1 2395 + 2.2500000000000000e+01 -2 -3 2396 1.9500000000000000e+01 + + -4.2384034395217896e-01 3.9466390013694763e-01 + 1.2428787350654602e-01 -5.8119755983352661e-01 + <_> + 7.3893051147460938e+01 + + 1 2 2397 6.2500000000000000e+01 0 -1 2398 + 2.5000000000000000e+00 -2 -3 2399 8.5000000000000000e+00 + + 8.6900889873504639e-02 -5.0835818052291870e-01 + 6.4387518167495728e-01 -3.4420084953308105e-01 + <_> + 7.4370101928710938e+01 + + 1 2 2400 2.0250000000000000e+02 0 -1 2401 + 2.6500000000000000e+01 -2 -3 2402 1.0250000000000000e+02 + + -3.3534547686576843e-01 7.1747875213623047e-01 + 5.8294051885604858e-01 -2.0199438929557800e-01 + <_> + 7.3817878723144531e+01 + + 1 2 2403 2.2250000000000000e+02 0 -1 2404 495. -2 -3 2405 + 1.1150000000000000e+02 + + -9.2125439643859863e-01 4.6380558609962463e-01 + -8.2408124208450317e-01 -5.1385825499892235e-03 + <_> + 7.4274734497070312e+01 + + 1 2 2406 5.0000000000000000e-01 0 -1 2407 + 6.5000000000000000e+00 -2 -3 2408 4.5000000000000000e+00 + + -5.4510724544525146e-01 4.5685729384422302e-01 + -4.1785773634910583e-01 3.7173369526863098e-01 + <_> + 7.4214447021484375e+01 + + 1 2 2409 4.3515000000000000e+03 0 -1 2410 + 7.1850000000000000e+02 -2 -3 2411 6.1445000000000000e+03 + + -5.5608157068490982e-02 6.8498140573501587e-01 + -8.1597936153411865e-01 -6.0283310711383820e-02 + <_> + 7.4526939392089844e+01 + + 1 2 2412 1.5000000000000000e+00 0 -1 2413 + 4.5000000000000000e+00 -2 -3 2414 1.7500000000000000e+01 + + -2.5446805357933044e-01 8.0654889345169067e-01 + 4.4617369771003723e-02 -4.9571081995964050e-01 + <_> + 7.4664260864257812e+01 + + 1 2 2415 2.1500000000000000e+01 0 -1 2416 + 9.5000000000000000e+00 -2 -3 2417 5.0000000000000000e-01 + + 2.5834673643112183e-01 -6.3097542524337769e-01 + 5.6628465652465820e-01 -1.0652445256710052e-01 + <_> + 7.4835792541503906e+01 + + 1 2 2418 1.9500000000000000e+01 0 -1 2419 + 2.1650000000000000e+02 -2 -3 2420 3.5000000000000000e+00 + + -3.4473347663879395e-01 3.5953617095947266e-01 + -7.8647011518478394e-01 4.7845369577407837e-01 + <_> + 7.5001464843750000e+01 + + 1 2 2421 4.3350000000000000e+02 0 -1 2422 + 9.5000000000000000e+00 -2 -3 2423 5.0000000000000000e-01 + + -7.6833075284957886e-01 1.6567093133926392e-01 1. + -9.3112909793853760e-01 + <_> + 7.5096672058105469e+01 + + 1 2 2424 1.9500000000000000e+01 0 -1 2425 + 2.5500000000000000e+01 -2 -3 2426 2.5165000000000000e+03 + + -7.1183577179908752e-02 5.7713252305984497e-01 + -7.3037630319595337e-01 9.5210477709770203e-02 + <_> + 7.4955039978027344e+01 + + 1 2 2427 5.5000000000000000e+00 0 -1 2428 + 8.0500000000000000e+01 -2 -3 2429 4.0500000000000000e+01 + + 3.1543654203414917e-01 -5.0912439823150635e-01 + -6.9998091459274292e-01 1.5216259658336639e-01 + <_> + 7.4920089721679688e+01 + + 1 2 2430 1.1215000000000000e+03 0 -1 2431 + 3.8850000000000000e+02 -2 -3 2432 4.1195000000000000e+03 + + 4.6712434291839600e-01 -4.7107401490211487e-01 + -8.0701512098312378e-01 -4.6098276972770691e-02 + <_> + 7.4982124328613281e+01 + + 1 2 2433 1.8500000000000000e+01 0 -1 2434 + 3.5500000000000000e+01 -2 -3 2435 3.5000000000000000e+00 + + -3.7868845462799072e-01 5.3733342885971069e-01 + 5.9916520118713379e-01 -1.3988719880580902e-01 + <_> + 7.5354972839355469e+01 + + 1 2 2436 2.5000000000000000e+00 0 -1 2437 + 4.5000000000000000e+00 -2 -3 2438 2.3500000000000000e+01 + + 3.7731003016233444e-02 -8.0526626110076904e-01 + 4.1983363032341003e-01 -1.6427561640739441e-01 + <_> + 7.5353942871093750e+01 + + 1 2 2439 3.8500000000000000e+01 0 -1 2440 + 5.0000000000000000e-01 -2 -3 2441 1.5250000000000000e+02 + + 4.1628280282020569e-01 -5.9752076864242554e-01 + 2.2085283696651459e-01 -7.8762036561965942e-01 + <_> + 7.4907821655273438e+01 + + 1 2 2442 9.5000000000000000e+00 0 -1 2443 + 5.5000000000000000e+00 -2 -3 2444 1.3500000000000000e+01 + + -6.2543123960494995e-01 2.9037654399871826e-01 + -6.6800427436828613e-01 2.3413531482219696e-01 + <_> + 7.5347267150878906e+01 + + 1 2 2445 5.0000000000000000e-01 0 -1 2446 + 7.5000000000000000e+00 -2 -3 2447 1.5000000000000000e+00 + + -7.7953171730041504e-01 4.3944290280342102e-01 + 2.1482174098491669e-01 -4.5657783746719360e-01 + <_> + 7.5632286071777344e+01 + + 1 2 2448 1.8500000000000000e+01 0 -1 2449 + 1.0500000000000000e+01 -2 -3 2450 3.7500000000000000e+01 + + -3.2795214653015137e-01 2.8501552343368530e-01 + -7.3039668798446655e-01 3.0266335606575012e-01 + <_> + 7.5784385681152344e+01 + + 1 2 2451 5.0000000000000000e-01 0 -1 2452 + 4.5000000000000000e+00 -2 -3 2453 9.5500000000000000e+01 + + -7.9435759782791138e-01 2.8812354803085327e-01 + 3.0145803093910217e-01 -5.5056422948837280e-01 + <_> + 7.5934288024902344e+01 + + 1 2 2454 1.2500000000000000e+01 0 -1 2455 + 1.1500000000000000e+01 -2 -3 2456 9.5000000000000000e+00 + + -5.4109108448028564e-01 3.4966334700584412e-01 + 2.2563920915126801e-01 -6.0146200656890869e-01 + <_> + 7.5664039611816406e+01 + + 1 2 2457 1.5000000000000000e+00 0 -1 2458 + 2.0500000000000000e+01 -2 -3 2459 1.7500000000000000e+01 + + -6.3995569944381714e-02 5.8523094654083252e-01 + -6.0602784156799316e-01 9.1935232281684875e-02 + <_> + 7.5729660034179688e+01 + + 1 2 2460 5.0000000000000000e-01 0 -1 2461 + 1.5000000000000000e+00 -2 -3 2462 5.7500000000000000e+01 + + -3.9503663778305054e-01 6.0793364048004150e-01 + -5.8376723527908325e-01 2.0124232396483421e-02 + <_> + 7.6041374206542969e+01 + + 1 2 2463 2.5000000000000000e+00 0 -1 2464 + 4.5850000000000000e+02 -2 -3 2465 2.8500000000000000e+01 + + 3.1171244382858276e-01 -1. -6.6108351945877075e-01 + 2.7302114292979240e-02 + <_> + 7.5795768737792969e+01 + + 1 2 2466 1.9650000000000000e+02 0 -1 2467 + 6.2950000000000000e+02 -2 -3 2468 8.3500000000000000e+01 + + -2.5152391195297241e-01 6.5583813190460205e-01 + -7.8791797161102295e-01 9.4210775569081306e-04 + <_> + 7.5857429504394531e+01 + + 1 2 2469 4.5000000000000000e+00 0 -1 2470 + 8.0500000000000000e+01 -2 -3 2471 1.1845000000000000e+03 + + 4.5618292689323425e-01 -2.6651117205619812e-01 + 6.1658360064029694e-02 -5.8446490764617920e-01 + <_> + 7.6416542053222656e+01 + + 1 2 2472 4.0950000000000000e+02 0 -1 2473 + 1.5950000000000000e+02 -2 -3 2474 3.6500000000000000e+01 + + -3.3679732680320740e-01 6.7494618892669678e-01 + -5.3805744647979736e-01 5.5911004543304443e-01 + <_> + 7.5964401245117188e+01 + + 1 2 2475 2159. 0 -1 2476 9.5000000000000000e+00 -2 -3 2477 + 2.7550000000000000e+02 + + -9.7294098138809204e-01 3.4394034743309021e-01 + 7.5755751132965088e-01 -4.5213976502418518e-01 + <_> + 7.6349334716796875e+01 + + 1 2 2478 5.0000000000000000e-01 0 -1 2479 109. -2 -3 2480 + 7.5000000000000000e+00 + + -8.3041268587112427e-01 3.8493672013282776e-01 + 1.9105611741542816e-01 -5.4174506664276123e-01 + <_> + 7.6266555786132812e+01 + + 1 2 2481 5.7850000000000000e+02 0 -1 2482 + 1.5000000000000000e+00 -2 -3 2483 2.8750000000000000e+02 + + 5.4517310857772827e-01 -8.3548069000244141e-01 + 5.4728341102600098e-01 -8.2781173288822174e-02 + <_> + 7.6401138305664062e+01 + + 1 2 2484 3.9500000000000000e+01 0 -1 2485 + 4.8500000000000000e+01 -2 -3 2486 1.5450000000000000e+02 + + -3.2842093706130981e-01 4.5771333575248718e-01 + 5.4719090461730957e-01 -5.5783140659332275e-01 + <_> + 7.6629852294921875e+01 + + 1 2 2487 5.0000000000000000e-01 0 -1 2488 + 9.8695000000000000e+03 -2 -3 2489 6.5000000000000000e+00 + + 3.5277694463729858e-01 -8.9051485061645508e-01 + 1.5630321204662323e-01 -5.0492966175079346e-01 + <_> + 7.7012748718261719e+01 + + 1 2 2490 3.4250000000000000e+02 0 -1 2491 + 5.0000000000000000e-01 -2 -3 2492 1.0500000000000000e+01 + + 6.1497741937637329e-01 -4.2811819911003113e-01 + -6.7799770832061768e-01 3.8289925456047058e-01 + <_> + 7.7173255920410156e+01 + + 1 2 2493 6.3500000000000000e+01 0 -1 2494 + 4.2500000000000000e+01 -2 -3 2495 1.0450000000000000e+02 + + -7.6624304056167603e-01 1.6050516068935394e-01 + -9.2148023843765259e-01 7.9243576526641846e-01 + <_> + 7.7233604431152344e+01 + + 1 2 2496 3.5000000000000000e+00 0 -1 2497 + 2.9500000000000000e+01 -2 -3 2498 9.5000000000000000e+00 + + 4.3042707443237305e-01 -7.0397478342056274e-01 + -5.7992899417877197e-01 6.0347892343997955e-02 + <_> + 7.7677680969238281e+01 + + 1 2 2499 7.7750000000000000e+02 0 -1 2500 + 3.5000000000000000e+00 -2 -3 2501 3.9050000000000000e+02 + + 2.6784166693687439e-01 -7.3122310638427734e-01 + 6.9813531637191772e-01 -5.0064746290445328e-02 + <_> + 7.7810462951660156e+01 + + 1 2 2502 1.2500000000000000e+01 0 -1 2503 46. -2 -3 2504 + 4.7550000000000000e+02 + + 7.4502938985824585e-01 -9.3451422452926636e-01 + 1.7553819715976715e-01 -6.0448014736175537e-01 + <_> + 7.8011604309082031e+01 + + 1 2 2505 5.0000000000000000e-01 0 -1 2506 + 1.5000000000000000e+00 -2 -3 2507 2.1500000000000000e+01 + + 5.5112600326538086e-01 -7.1465468406677246e-01 + -6.2684929370880127e-01 2.0114150643348694e-01 + <_> + 7.7726852416992188e+01 + + 1 2 2508 2.5000000000000000e+00 0 -1 2509 + 1.5000000000000000e+00 -2 -3 2510 2.2275000000000000e+03 + + -6.1417835950851440e-01 6.4539062976837158e-01 + 2.3531807959079742e-01 -3.7372583150863647e-01 + <_> + 7.7838409423828125e+01 + + 1 2 2511 4.0435000000000000e+03 0 -1 2512 + 1.6050000000000000e+02 -2 -3 2513 12334. + + -3.2763364911079407e-01 7.1799826622009277e-01 + 4.0013375878334045e-01 -8.6134457588195801e-01 + <_> + 7.7509208679199219e+01 + + 1 2 2514 5.0000000000000000e-01 0 -1 2515 + 3.5000000000000000e+00 -2 -3 2516 4.1050000000000000e+02 + + -5.3890359401702881e-01 3.9034625887870789e-01 + 3.8619524240493774e-01 -5.2792149782180786e-01 + <_> + 7.7868835449218750e+01 + + 1 2 2517 5.0000000000000000e-01 0 -1 2518 + 4.5000000000000000e+00 -2 -3 2519 5.0000000000000000e-01 + + -4.3116971850395203e-01 3.5963350534439087e-01 + 3.4538099169731140e-01 -4.9176117777824402e-01 + <_> + 7.8107124328613281e+01 + + 1 2 2520 8.5000000000000000e+00 0 -1 2521 303. -2 -3 2522 + 1.3550000000000000e+02 + + 3.4497961401939392e-01 -3.9331153035163879e-01 + 6.7525440454483032e-01 -6.4588183164596558e-01 + <_> + 7.7949096679687500e+01 + + 1 2 2523 4.5000000000000000e+00 0 -1 2524 + 4.4500000000000000e+01 -2 -3 2525 9.5000000000000000e+00 + + -8.7561493273824453e-04 6.5230095386505127e-01 + -5.9499686956405640e-01 2.8807112574577332e-01 + <_> + 7.7715606689453125e+01 + + 1 2 2526 5.7500000000000000e+01 0 -1 2527 + 1.9500000000000000e+01 -2 -3 2528 4.5000000000000000e+00 + + -2.3348997533321381e-01 3.4078663587570190e-01 + 8.8998430967330933e-01 -8.2743632793426514e-01 + <_> + 7.7412117004394531e+01 + + 1 2 2529 1.5500000000000000e+01 0 -1 2530 + 7.5000000000000000e+00 -2 -3 2531 1.2500000000000000e+01 + + -8.8361167907714844e-01 4.6851965785026550e-01 + 7.6548218727111816e-01 -3.4992104768753052e-01 + <_> + 7.7919708251953125e+01 + + 1 2 2532 1.4500000000000000e+01 0 -1 2533 + 4.3250000000000000e+02 -2 -3 2534 1.5000000000000000e+00 + + 1.6036920249462128e-01 -4.6338194608688354e-01 + -7.4071860313415527e-01 5.0758624076843262e-01 + <_> + 7.7726272583007812e+01 + + 1 2 2535 8.0500000000000000e+01 0 -1 2536 + 3.7500000000000000e+01 -2 -3 2537 2.5000000000000000e+00 + + -1.9343656301498413e-01 3.6727836728096008e-01 1. + -8.6589008569717407e-01 + <_> + 7.8272102355957031e+01 + + 1 2 2538 5.0000000000000000e-01 0 -1 2539 + 4.5000000000000000e+00 -2 -3 2540 658. + + -5.3998571634292603e-01 5.4582929611206055e-01 + -3.1522071361541748e-01 7.1490818262100220e-01 + <_> + 7.8563529968261719e+01 + + 1 2 2541 4.5000000000000000e+00 0 -1 2542 + 1.4500000000000000e+01 -2 -3 2543 1.6500000000000000e+01 + + 5.0465071201324463e-01 -4.6871420741081238e-01 + 5.3199578076601028e-02 -5.5464112758636475e-01 + <_> + 7.8416564941406250e+01 + + 1 2 2544 1.3450000000000000e+02 0 -1 2545 + 1.9500000000000000e+01 -2 -3 2546 3.5000000000000000e+00 + + -8.7330028414726257e-02 -7.5999724864959717e-01 + 5.3803235292434692e-01 -1.4696989953517914e-01 + <_> + 7.8487602233886719e+01 + + 1 2 2547 6.5000000000000000e+00 0 -1 2548 + 5.0000000000000000e-01 -2 -3 2549 1.7500000000000000e+01 + + 7.1036763489246368e-02 -7.1582734584808350e-01 + 5.4787242412567139e-01 -1.1151381582021713e-01 + <_> + 7.8819152832031250e+01 + + 1 2 2550 2.0750000000000000e+02 0 -1 2551 + 2.0735000000000000e+03 -2 -3 2552 4304. + + 2.2555717825889587e-01 -4.1814169287681580e-01 + 6.8767857551574707e-01 -2.6335984468460083e-01 + <_> + 7.9293106079101562e+01 + + 1 2 2553 1.8500000000000000e+01 0 -1 2554 + 4.1500000000000000e+01 -2 -3 2555 1.8500000000000000e+01 + + -8.1884217262268066e-01 1. 4.7395563125610352e-01 + -1.8633662164211273e-01 + <_> + 7.9529563903808594e+01 + + 1 2 2556 3.3500000000000000e+01 0 -1 2557 + 1.9850000000000000e+02 -2 -3 2558 1.3050000000000000e+02 + + 5.9216380119323730e-01 -7.9069614410400391e-01 + 2.3645764589309692e-01 -5.4375654458999634e-01 + <_> + 7.9264884948730469e+01 + + 1 2 2559 5.2500000000000000e+01 0 -1 2560 + 6.0500000000000000e+01 -2 -3 2561 3.1500000000000000e+01 + + 9.8454810678958893e-02 -6.2080347537994385e-01 + 3.8626289367675781e-01 -4.1950720548629761e-01 + <_> + 7.9011604309082031e+01 + + 1 2 2562 2.9550000000000000e+02 0 -1 2563 + 3.9500000000000000e+01 -2 -3 2564 2.5000000000000000e+00 + + -6.1641591787338257e-01 2.5828385353088379e-01 + 6.0895466804504395e-01 -5.8573886752128601e-02 + <_> + 7.9083618164062500e+01 + + 1 2 2565 2.8500000000000000e+01 0 -1 2566 + 5.0000000000000000e-01 -2 -3 2567 5.5000000000000000e+00 + + -3.0742061138153076e-01 2.8055912256240845e-01 + -7.9475212097167969e-01 8.2691472768783569e-01 + <_> + 7.9463661193847656e+01 + + 1 2 2568 5.0000000000000000e-01 0 -1 2569 + 1.5000000000000000e+00 -2 -3 2570 6.3050000000000000e+02 + + -1.2270902097225189e-01 7.1463072299957275e-01 + -4.2850509285926819e-01 2.2205479443073273e-01 + <_> + 7.9607894897460938e+01 + + 1 2 2571 3.5000000000000000e+00 0 -1 2572 + 3.5000000000000000e+00 -2 -3 2573 5.0000000000000000e-01 + + -9.3542063236236572e-01 5.4489326477050781e-01 + 2.0372124016284943e-01 -3.9889475703239441e-01 + <_> + 7.9263900756835938e+01 + + 1 2 2574 2.7950000000000000e+02 0 -1 2575 13730. -2 -3 2576 + 7.5000000000000000e+00 + + -7.3570191860198975e-02 7.3383468389511108e-01 + 4.3032327294349670e-01 -3.4399634599685669e-01 + <_> + 7.9479598999023438e+01 + + 1 2 2577 3.5000000000000000e+00 0 -1 2578 + 1.6500000000000000e+01 -2 -3 2579 168. + + 5.7104247808456421e-01 -8.0473148822784424e-01 + 2.1569329500198364e-01 -8.4493541717529297e-01 + <_> + 7.9719924926757812e+01 + + 1 2 2580 1.8500000000000000e+01 0 -1 2581 + 2.5500000000000000e+01 -2 -3 2582 5.8750000000000000e+02 + + -7.7445679903030396e-01 8.1580907106399536e-01 + -3.5785317420959473e-01 2.4033224582672119e-01 + <_> + 7.9651489257812500e+01 + + 1 2 2583 1.9750000000000000e+02 0 -1 2584 + 2.9845000000000000e+03 -2 -3 2585 8.7950000000000000e+02 + + -6.2534831464290619e-02 6.7511278390884399e-01 + 5.5172812938690186e-01 -4.6909588575363159e-01 + <_> + 7.9875663757324219e+01 + + 1 2 2586 4.3500000000000000e+01 0 -1 2587 + 3.0350000000000000e+02 -2 -3 2588 1.5000000000000000e+00 + + -9.0566140413284302e-01 2.2416961193084717e-01 + 6.5261769294738770e-01 -7.8972738981246948e-01 + <_> + 7.9825202941894531e+01 + + 1 2 2589 1.8500000000000000e+01 0 -1 2590 + 7.8500000000000000e+01 -2 -3 2591 5.5000000000000000e+00 + + -5.0458520650863647e-02 6.2098169326782227e-01 + -6.2433195114135742e-01 7.0211088657379150e-01 + <_> + 7.9897819519042969e+01 + + 1 2 2592 5.0000000000000000e-01 0 -1 2593 + 7.5000000000000000e+00 -2 -3 2594 3.6500000000000000e+01 + + -4.5179387927055359e-01 4.7666555643081665e-01 + -5.4754704236984253e-01 7.9487584531307220e-02 + <_> + 8.0220909118652344e+01 + + 1 2 2595 1.5000000000000000e+00 0 -1 2596 + 3.5000000000000000e+00 -2 -3 2597 2.3025000000000000e+03 + + 5.9295910596847534e-01 -4.7368842363357544e-01 + 3.2309135794639587e-01 -3.6595731973648071e-01 + <_> + 8.0416793823242188e+01 + + 1 2 2598 5.7650000000000000e+02 0 -1 2599 + 6.8250000000000000e+02 -2 -3 2600 423. + + -8.3457779884338379e-01 9.4248223304748535e-01 + 1.9588518142700195e-01 -8.9797055721282959e-01 + <_> + 8.0621925354003906e+01 + + 1 2 2601 4.3500000000000000e+01 0 -1 2602 + 4.5000000000000000e+00 -2 -3 2603 1.6500000000000000e+01 + + 5.7445579767227173e-01 -7.1823668479919434e-01 + -8.5307145118713379e-01 2.0513093471527100e-01 + <_> + 8.0483642578125000e+01 + + 1 2 2604 1.5000000000000000e+00 0 -1 2605 + 1.3500000000000000e+01 -2 -3 2606 1.5000000000000000e+00 + + -8.1219720840454102e-01 2.1613596379756927e-01 + 8.3621460199356079e-01 -6.8892109394073486e-01 + <_> + 8.0708099365234375e+01 + + 1 2 2607 1.5000000000000000e+00 0 -1 2608 + 1.5000000000000000e+00 -2 -3 2609 1.5000000000000000e+00 + + -4.5658573508262634e-01 4.5419740676879883e-01 + 3.7913042306900024e-01 -4.2572236061096191e-01 + <_> + 8.0967964172363281e+01 + + 1 2 2610 1.7225000000000000e+03 0 -1 2611 904. -2 -3 2612 + 48. + + -4.9103862047195435e-01 2.5986543297767639e-01 + -6.5187561511993408e-01 7.3263108730316162e-01 + <_> + 8.1015785217285156e+01 + + 1 2 2613 8.5500000000000000e+01 0 -1 2614 + 3.2500000000000000e+01 -2 -3 2615 1.6500000000000000e+01 + + 3.0590304732322693e-01 -6.0726463794708252e-01 + 4.5478045940399170e-01 -2.1701261401176453e-01 + <_> + 8.1222023010253906e+01 + + 1 2 2616 1.1500000000000000e+01 0 -1 2617 + 3.5000000000000000e+00 -2 -3 2618 570. + + 4.0577322244644165e-01 -2.8158581256866455e-01 + -7.0219916105270386e-01 7.8437590599060059e-01 + <_> + 8.1114990234375000e+01 + + 1 2 2619 1.5000000000000000e+00 0 -1 2620 + 5.0000000000000000e-01 -2 -3 2621 5.0000000000000000e-01 + + 4.7717106342315674e-01 -8.8117665052413940e-01 + 3.8160988688468933e-01 -1.6836205124855042e-01 + <_> + 8.0563499450683594e+01 + + 1 2 2622 2.5500000000000000e+01 0 -1 2623 + 1.2500000000000000e+01 -2 -3 2624 5.9500000000000000e+01 + + -5.5149054527282715e-01 3.2653099298477173e-01 + 3.5567849874496460e-01 -6.7506045103073120e-01 + <_> + 8.1009407043457031e+01 + + 1 2 2625 3.5000000000000000e+00 0 -1 2626 + 2.2985000000000000e+03 -2 -3 2627 5.5000000000000000e+00 + + 4.4590899348258972e-01 -2.8159150481224060e-01 + -5.6732189655303955e-01 2.0876012742519379e-01 + <_> + 8.1270759582519531e+01 + + 1 2 2628 1.3500000000000000e+01 0 -1 2629 + 4.4500000000000000e+01 -2 -3 2630 3.9500000000000000e+01 + + 1.7286604642868042e-01 -7.5421804189682007e-01 + 2.6134765148162842e-01 -5.9037572145462036e-01 + <_> + 8.1395576477050781e+01 + + 1 2 2631 4.4750000000000000e+02 0 -1 2632 + 1.9500000000000000e+01 -2 -3 2633 2.7965000000000000e+03 + + 1.2481955438852310e-01 -4.5122003555297852e-01 + 7.7366709709167480e-01 -3.6004805564880371e-01 + <_> + 8.1301132202148438e+01 + + 1 2 2634 2.5000000000000000e+00 0 -1 2635 6. -2 -3 2636 + 1.3995000000000000e+03 + + 1. -1. 4.4335600733757019e-01 -9.4446659088134766e-02 + <_> + 8.1370132446289062e+01 + + 1 2 2637 4.1250000000000000e+02 0 -1 2638 + 1.5000000000000000e+00 -2 -3 2639 7.5000000000000000e+00 + + 6.9000430405139923e-02 -4.9422886967658997e-01 + -9.1928571462631226e-01 4.6428659558296204e-01 + <_> + 8.1621879577636719e+01 + + 1 2 2640 2.8500000000000000e+01 0 -1 2641 + 2.6500000000000000e+01 -2 -3 2642 1.5500000000000000e+01 + + -4.7164541482925415e-01 2.5174945592880249e-01 + 1.3210830092430115e-01 -8.8470876216888428e-01 + <_> + 8.2271644592285156e+01 + + 1 2 2643 2.5000000000000000e+00 0 -1 2644 + 1.0500000000000000e+01 -2 -3 2645 86. + + -6.9350771605968475e-02 6.4976197481155396e-01 + -7.7881592512130737e-01 -6.0378432273864746e-02 + <_> + 8.2486991882324219e+01 + + 1 2 2646 2.7500000000000000e+01 0 -1 2647 + 4.5000000000000000e+00 -2 -3 2648 6.5000000000000000e+00 + + -8.2361882925033569e-01 3.2168322801589966e-01 + 2.4581556022167206e-01 -5.5088657140731812e-01 + <_> + 8.2648330688476562e+01 + + 1 2 2649 1.1500000000000000e+01 0 -1 2650 + 2.5000000000000000e+00 -2 -3 2651 552. + + 5.5005900561809540e-02 -6.6145080327987671e-01 + -9.3321514129638672e-01 2.9643073678016663e-01 + <_> + 8.2730377197265625e+01 + + 1 2 2652 1835. 0 -1 2653 9026. -2 -3 2654 + 5.0000000000000000e-01 + + -8.2883286476135254e-01 9.0321773290634155e-01 + 8.2042239606380463e-02 -4.4094491004943848e-01 + <_> + 8.2976600646972656e+01 + + 1 2 2655 7.5000000000000000e+00 0 -1 2656 27. -2 -3 2657 + 7.7500000000000000e+01 + + -6.6883772611618042e-01 8.2824200391769409e-01 + 2.4622967839241028e-01 -7.1693640947341919e-01 + <_> + 8.2621650695800781e+01 + + 1 2 2658 8.5000000000000000e+00 0 -1 2659 + 5.0000000000000000e-01 -2 -3 2660 55. + + 2.1821559965610504e-01 -3.5495325922966003e-01 + -5.7552605867385864e-01 6.4010292291641235e-01 + <_> + 8.2944847106933594e+01 + + 1 2 2661 5.5000000000000000e+00 0 -1 2662 9109. -2 -3 2663 + 3.0500000000000000e+01 + + 3.6217045038938522e-02 -6.7411881685256958e-01 + 4.6031165122985840e-01 -1.3432784378528595e-01 + <_> + 8.2844596862792969e+01 + + 1 2 2664 4.5000000000000000e+00 0 -1 2665 + 1.9500000000000000e+01 -2 -3 2666 5.0000000000000000e-01 + + -6.6067945957183838e-01 6.5172028541564941e-01 + 5.3896325826644897e-01 -1.0024529695510864e-01 + <_> + 8.2988021850585938e+01 + + 1 2 2667 2.3500000000000000e+01 0 -1 2668 + 3.5000000000000000e+00 -2 -3 2669 5.5500000000000000e+01 + + 3.6205202341079712e-01 -4.8302540183067322e-01 + -3.1453946232795715e-01 4.5836016535758972e-01 + <_> + 8.3242561340332031e+01 + + 1 2 2670 9.0500000000000000e+01 0 -1 2671 + 4.1500000000000000e+01 -2 -3 2672 3.9500000000000000e+01 + + 2.5454065203666687e-01 -3.1304958462715149e-01 + -9.7736436128616333e-01 6.2847685813903809e-01 + <_> + 8.3276382446289062e+01 + + 1 2 2673 1.7500000000000000e+01 0 -1 2674 + 8.3500000000000000e+01 -2 -3 2675 5.5000000000000000e+00 + + 5.6938213109970093e-01 -9.2754542827606201e-01 + 3.0042541027069092e-01 -2.8111898899078369e-01 + <_> + 8.2934799194335938e+01 + + 1 2 2676 3.3500000000000000e+01 0 -1 2677 + 3.6050000000000000e+02 -2 -3 2678 94. + + -3.8239040970802307e-01 1.4262221753597260e-01 + 7.1967273950576782e-01 -7.4638730287551880e-01 + <_> + 8.3355155944824219e+01 + + 1 2 2679 6.5000000000000000e+00 0 -1 2680 25. -2 -3 2681 + 1.5000000000000000e+00 + + -9.2031919956207275e-01 1. 4.2035222053527832e-01 + -1.8400678038597107e-01 + <_> + 8.3341117858886719e+01 + + 1 2 2682 2.7550000000000000e+02 0 -1 2683 + 3.9500000000000000e+01 -2 -3 2684 1.7500000000000000e+01 + + -3.1554982066154480e-01 2.4787786602973938e-01 + -9.8996192216873169e-01 1. + <_> + 8.3088867187500000e+01 + + 1 2 2685 5.0000000000000000e-01 0 -1 2686 + 3.4500000000000000e+01 -2 -3 2687 3.3250000000000000e+02 + + 7.6295363903045654e-01 -3.0974990129470825e-01 + -2.5224679708480835e-01 6.2690478563308716e-01 + <_> + 8.3444519042968750e+01 + + 1 2 2688 1.5000000000000000e+00 0 -1 2689 + 6.6500000000000000e+01 -2 -3 2690 5.0000000000000000e-01 + + -4.7374388575553894e-01 3.5564544796943665e-01 + 2.2661061584949493e-01 -5.4821664094924927e-01 + <_> + 8.3531219482421875e+01 + + 1 2 2691 1.5450000000000000e+02 0 -1 2692 + 3.2500000000000000e+01 -2 -3 2693 1.9500000000000000e+01 + + -2.1394637227058411e-01 8.1045120954513550e-01 + -4.8737204074859619e-01 8.6701557040214539e-02 + <_> + 8.3356086730957031e+01 + + 1 2 2694 3.5000000000000000e+00 0 -1 2695 + 9.5000000000000000e+00 -2 -3 2696 2.1500000000000000e+01 + + -3.3526990562677383e-02 5.4166865348815918e-01 + -6.0305202007293701e-01 7.6919454336166382e-01 + <_> + 8.3536964416503906e+01 + + 1 2 2697 2.7950000000000000e+02 0 -1 2698 + 2.1500000000000000e+01 -2 -3 2699 3.5045000000000000e+03 + + -4.9123385548591614e-01 5.2362555265426636e-01 + -7.9040545225143433e-01 -3.3013910055160522e-02 + <_> + 8.3796424865722656e+01 + + 1 2 2700 9.5000000000000000e+00 0 -1 2701 + 4.5000000000000000e+00 -2 -3 2702 1.7500000000000000e+01 + + 4.8670431971549988e-01 -2.3416480422019958e-01 + -4.7568261623382568e-01 2.2792084515094757e-01 + <_> + 8.4059371948242188e+01 + + 1 2 2703 5.5500000000000000e+01 0 -1 2704 + 5.0000000000000000e-01 -2 -3 2705 3.9185000000000000e+03 + + 2.2618722915649414e-01 -9.2116522789001465e-01 + -3.2166120409965515e-01 2.6295122504234314e-01 + <_> + 8.4028038024902344e+01 + + 1 2 2706 1.1500000000000000e+01 0 -1 2707 15. -2 -3 2708 + 4.5000000000000000e+00 + + 8.7838518619537354e-01 -8.4853267669677734e-01 + 3.6655527353286743e-01 -1.8356652557849884e-01 + <_> + 8.3846260070800781e+01 + + 1 2 2709 5.5000000000000000e+00 0 -1 2710 325. -2 -3 2711 + 9.5000000000000000e+00 + + -8.7982141971588135e-01 1. 3.4321373701095581e-01 + -1.8177768588066101e-01 + <_> + 8.4174667358398438e+01 + + 1 2 2712 9.5000000000000000e+00 0 -1 2713 + 1.9050000000000000e+02 -2 -3 2714 4.5000000000000000e+00 + + 6.9107550382614136e-01 -7.7517443895339966e-01 + 5.7090425491333008e-01 -1.1606752872467041e-01 + <_> + 8.4324356079101562e+01 + + 1 2 2715 2.7500000000000000e+01 0 -1 2716 + 4.0885000000000000e+03 -2 -3 2717 8.5000000000000000e+00 + + 8.7019419670104980e-01 -8.7088418006896973e-01 + 2.1278975903987885e-01 -4.6584972739219666e-01 + <_> + 8.4102806091308594e+01 + + 1 2 2718 2.1250000000000000e+02 0 -1 2719 + 5.6500000000000000e+01 -2 -3 2720 5.0000000000000000e-01 + + 2.1476839482784271e-01 -4.4505792856216431e-01 1. + -7.7488011121749878e-01 + <_> + 8.4038200378417969e+01 + + 1 2 2721 9.4500000000000000e+01 0 -1 2722 + 1.5000000000000000e+00 -2 -3 2723 98. + + 1.9173437356948853e-01 -5.0092142820358276e-01 + -4.4755691289901733e-01 4.7253641486167908e-01 + <_> + 8.4137344360351562e+01 + + 1 2 2724 1.1515000000000000e+03 0 -1 2725 + 2.0050000000000000e+02 -2 -3 2726 4.8500000000000000e+01 + + -8.2353651523590088e-02 5.8139425516128540e-01 + 3.6044213920831680e-02 -6.4356809854507446e-01 + <_> + 8.4309326171875000e+01 + + 1 2 2727 1.0500000000000000e+01 0 -1 2728 2663. -2 -3 2729 + 2.4250000000000000e+02 + + 4.7916080802679062e-02 -5.9066039323806763e-01 + 7.3575264215469360e-01 -8.9028924703598022e-01 + <_> + 8.4420402526855469e+01 + + 1 2 2730 5.4665000000000000e+03 0 -1 2731 + 1.5000000000000000e+00 -2 -3 2732 4.6500000000000000e+01 + + 2.7950283885002136e-01 -2.4711169302463531e-01 + -9.4440460205078125e-01 1. + <_> + 8.4394798278808594e+01 + + 1 2 2733 1.1050000000000000e+02 0 -1 2734 63. -2 -3 2735 + 6.4650000000000000e+02 + + 4.1327634453773499e-01 -8.2762449979782104e-01 + -2.5601835921406746e-02 7.5820297002792358e-01 + <_> + 8.4607276916503906e+01 + + 1 2 2736 2.5000000000000000e+00 0 -1 2737 + 2.5500000000000000e+01 -2 -3 2738 1.0500000000000000e+01 + + -3.7000726908445358e-02 6.8266022205352783e-01 + 1.4960629865527153e-02 -6.4148795604705811e-01 + <_> + 8.5164596557617188e+01 + + 1 2 2739 5.3500000000000000e+01 0 -1 2740 + 2.9500000000000000e+01 -2 -3 2741 1.0850000000000000e+02 + + -1.2329825013875961e-01 5.5731654167175293e-01 + -8.3035022020339966e-01 7.4285131692886353e-01 + <_> + 8.5318458557128906e+01 + + 1 2 2742 6.0500000000000000e+01 0 -1 2743 + 5.5750000000000000e+02 -2 -3 2744 2.4455000000000000e+03 + + -9.1876357793807983e-01 1.5386807918548584e-01 1. + -8.4595882892608643e-01 + <_> + 8.5138092041015625e+01 + + 1 2 2745 1.4500000000000000e+01 0 -1 2746 133. -2 -3 2747 + 1.5000000000000000e+00 + + 9.3546825647354126e-01 -7.7808952331542969e-01 + 4.2497289180755615e-01 -1.8036651611328125e-01 + <_> + 8.5170181274414062e+01 + + 1 2 2748 2.6500000000000000e+01 0 -1 2749 + 1.6500000000000000e+01 -2 -3 2750 3.0550000000000000e+02 + + 9.9500669166445732e-03 -6.0836273431777954e-01 + 5.2151191234588623e-01 -3.4265536069869995e-01 + <_> + 8.5376792907714844e+01 + + 1 2 2751 3.5000000000000000e+00 0 -1 2752 + 1.6500000000000000e+01 -2 -3 2753 4.2500000000000000e+01 + + 4.3600571155548096e-01 -8.0105257034301758e-01 + -5.1988095045089722e-01 2.0660850405693054e-01 + <_> + 8.5609893798828125e+01 + + 1 2 2754 1.0500000000000000e+01 0 -1 2755 + 1.5000000000000000e+00 -2 -3 2756 2.5000000000000000e+00 + + -6.2382709980010986e-01 4.6645849943161011e-01 + 3.5961329936981201e-02 -5.3663784265518188e-01 + <_> + 8.5939903259277344e+01 + + 1 2 2757 9.5500000000000000e+01 0 -1 2758 11828. -2 -3 2759 + 3.8450000000000000e+02 + + -7.1205846965312958e-02 -9.5047873258590698e-01 + 3.3001002669334412e-01 -5.8486175537109375e-01 + <_> + 8.5633140563964844e+01 + + 1 2 2760 1.5000000000000000e+00 0 -1 2761 + 7.5000000000000000e+00 -2 -3 2762 1.5605000000000000e+03 + + -1.8193472921848297e-01 5.5474883317947388e-01 + 6.6240763664245605e-01 -3.6709865927696228e-01 + <_> + 8.5665580749511719e+01 + + 1 2 2763 5.0000000000000000e-01 0 -1 2764 + 3.5000000000000000e+00 -2 -3 2765 1.6500000000000000e+01 + + -6.3473922014236450e-01 4.5258450508117676e-01 + -6.2842214107513428e-01 3.2442636787891388e-02 + <_> + 8.5813781738281250e+01 + + 1 2 2766 1.8050000000000000e+02 0 -1 2767 + 1.5000000000000000e+00 -2 -3 2768 6.5000000000000000e+00 + + -8.1317859888076782e-01 1.4819937944412231e-01 + 7.9641395807266235e-01 -9.0252667665481567e-01 + <_> + 8.6130287170410156e+01 + + 1 2 2769 2.5000000000000000e+00 0 -1 2770 + 1.5000000000000000e+00 -2 -3 2771 1.0850000000000000e+02 + + -8.2908695936203003e-01 6.0830992460250854e-01 + -3.5930514335632324e-01 2.5600242614746094e-01 + <_> + 8.5960426330566406e+01 + + 1 2 2772 3.5000000000000000e+00 0 -1 2773 + 2.5000000000000000e+00 -2 -3 2774 3.5000000000000000e+00 + + 4.0980219841003418e-01 -8.7654078006744385e-01 + 3.7149679660797119e-01 -1.6985960304737091e-01 + <_> + 8.5911773681640625e+01 + + 1 2 2775 2.0750000000000000e+02 0 -1 2776 + 2.5000000000000000e+00 -2 -3 2777 4.0550000000000000e+02 + + 6.4895875751972198e-02 -5.2602392435073853e-01 + 8.3245736360549927e-01 -4.8650942742824554e-02 + <_> + 8.6134010314941406e+01 + + 1 2 2778 6.2500000000000000e+01 0 -1 2779 + 3.6650000000000000e+02 -2 -3 2780 4.5500000000000000e+01 + + -7.8410977125167847e-01 2.2223210334777832e-01 + -8.4461647272109985e-01 7.4402904510498047e-01 + <_> + 8.6428909301757812e+01 + + 1 2 2781 2.5000000000000000e+00 0 -1 2782 + 6.5000000000000000e+00 -2 -3 2783 4.1750000000000000e+02 + + 5.1555430889129639e-01 -1.5588639676570892e-01 + 1.7773015797138214e-01 -5.0610744953155518e-01 + <_> + 8.6826782226562500e+01 + + 1 2 2784 1.5505000000000000e+03 0 -1 2785 + 5.0000000000000000e-01 -2 -3 2786 1.4500000000000000e+01 + + 3.5983416438102722e-01 -5.7004302740097046e-01 + -5.4764652252197266e-01 3.9787346124649048e-01 + <_> + 8.7037475585937500e+01 + + 1 2 2787 5.0000000000000000e-01 0 -1 2788 + 8.5000000000000000e+00 -2 -3 2789 5.0000000000000000e-01 + + -7.9977160692214966e-01 3.6234867572784424e-01 + 2.8641289472579956e-01 -4.9720412492752075e-01 + <_> + 8.6423477172851562e+01 + + 1 2 2790 1.4500000000000000e+01 0 -1 2791 47. -2 -3 2792 + 3.2500000000000000e+01 + + 4.9334439635276794e-01 -7.6565510034561157e-01 + 2.7979478240013123e-01 -3.8790243864059448e-01 + <_> + 8.6541648864746094e+01 + + 1 2 2793 3.8500000000000000e+01 0 -1 2794 + 1.5000000000000000e+00 -2 -3 2795 2.0850000000000000e+02 + + 1.1817480623722076e-01 -4.9608191847801208e-01 + 4.3412643671035767e-01 -8.0814820528030396e-01 + <_> + 8.6554786682128906e+01 + + 1 2 2796 5.0000000000000000e-01 0 -1 2797 + 5.0000000000000000e-01 -2 -3 2798 1.5500000000000000e+01 + + -7.7674239873886108e-01 4.3930459022521973e-01 + 1.3139089569449425e-02 -6.7160016298294067e-01 + <_> + 8.6836524963378906e+01 + + 1 2 2799 2.1500000000000000e+01 0 -1 2800 + 3.2750000000000000e+02 -2 -3 2801 1.2500000000000000e+01 + + -3.1266799569129944e-01 6.9435644149780273e-01 + -5.9980082511901855e-01 6.5070140361785889e-01 + <_> + 8.6815773010253906e+01 + + 1 2 2802 9.8850000000000000e+02 0 -1 2803 + 4.5000000000000000e+00 -2 -3 2804 3.1500000000000000e+01 + + 7.5975960493087769e-01 -1.4526490122079849e-02 + -4.3337148427963257e-01 3.4662330150604248e-01 + <_> + 8.6753486633300781e+01 + + 1 2 2805 5.8750000000000000e+02 0 -1 2806 + 4.0050000000000000e+02 -2 -3 2807 5.8550000000000000e+02 + + -5.1701253652572632e-01 8.5829895734786987e-01 + 6.8487954139709473e-01 -6.2283929437398911e-02 + <_> + 8.7153579711914062e+01 + + 1 2 2808 5.0000000000000000e-01 0 -1 2809 + 2.5000000000000000e+00 -2 -3 2810 9.3050000000000000e+02 + + -7.2558873891830444e-01 4.3454471230506897e-01 + -8.1130824983119965e-02 -8.3618861436843872e-01 + <_> + 8.7351936340332031e+01 + + 1 2 2811 3.5000000000000000e+00 0 -1 2812 + 7.5000000000000000e+00 -2 -3 2813 1.5000000000000000e+00 + + -9.6148520708084106e-01 4.0121293067932129e-01 + 1.6389970481395721e-01 -5.4697543382644653e-01 + <_> + 8.7288108825683594e+01 + + 1 2 2814 9.8500000000000000e+01 0 -1 2815 + 1.5000000000000000e+00 -2 -3 2816 5.0000000000000000e-01 + + 3.0000725388526917e-01 -5.5716449022293091e-01 + 6.8792611360549927e-01 -6.3822388648986816e-02 + <_> + 8.7567855834960938e+01 + + 1 2 2817 1.2500000000000000e+01 0 -1 2818 + 5.5000000000000000e+00 -2 -3 2819 3.2500000000000000e+01 + + -6.0839080810546875e-01 2.7974289655685425e-01 + -9.0464597940444946e-01 -9.1534465551376343e-02 + <_> + 8.7742805480957031e+01 + + 1 2 2820 2.9050000000000000e+02 0 -1 2821 + 4.0350000000000000e+02 -2 -3 2822 1.5000000000000000e+00 + + -1.1221635341644287e-01 6.0925048589706421e-01 + 3.3704385161399841e-01 -5.3282082080841064e-01 + <_> + 8.7797904968261719e+01 + + 1 2 2823 1.4500000000000000e+01 0 -1 2824 1690. -2 -3 2825 + 7.4500000000000000e+01 + + 5.5097710341215134e-02 -8.7218642234802246e-01 + -7.2020220756530762e-01 3.5318741202354431e-01 + <_> + 8.8284759521484375e+01 + + 1 2 2826 2.2450000000000000e+02 0 -1 2827 + 1.9500000000000000e+01 -2 -3 2828 1.9535000000000000e+03 + + -1.3064707815647125e-01 4.8685196042060852e-01 + -8.4640699625015259e-01 1.8381766974925995e-01 + <_> + 8.8222618103027344e+01 + + 1 2 2829 5.0000000000000000e-01 0 -1 2830 + 1.2500000000000000e+01 -2 -3 2831 4.5000000000000000e+00 + + -5.3857803344726562e-01 5.4414546489715576e-01 + 1.8226167559623718e-01 -5.0997644662857056e-01 + <_> + 8.8490211486816406e+01 + + 1 2 2832 8.5000000000000000e+00 0 -1 2833 1990. -2 -3 2834 + 3.5000000000000000e+00 + + -3.3869510889053345e-01 8.5612648725509644e-01 + 6.6255128383636475e-01 -1.8713159859180450e-01 + <_> + 8.8309280395507812e+01 + + 1 2 2835 5.0000000000000000e-01 0 -1 2836 + 1.5350000000000000e+02 -2 -3 2837 3.0500000000000000e+01 + + 3.7325781583786011e-01 -9.1693335771560669e-01 + -3.7281343340873718e-01 4.3598929047584534e-01 + <_> + 8.8545036315917969e+01 + + 1 2 2838 2.5000000000000000e+00 0 -1 2839 + 3.5000000000000000e+00 -2 -3 2840 9.5000000000000000e+00 + + -8.1305176019668579e-01 2.3575115203857422e-01 + 8.2359343767166138e-01 -5.0804460048675537e-01 + <_> + 8.8620689392089844e+01 + + 1 2 2841 4.7950000000000000e+02 0 -1 2842 + 7.4550000000000000e+02 -2 -3 2843 3.5000000000000000e+00 + + -1. 5.5236303806304932e-01 -4.9426826834678650e-01 + 7.5652711093425751e-02 + <_> + 8.8498481750488281e+01 + + 1 2 2844 5.0000000000000000e-01 0 -1 2845 + 5.0000000000000000e-01 -2 -3 2846 9.6500000000000000e+01 + + -8.3736324310302734e-01 3.9632564783096313e-01 + -7.2766882181167603e-01 4.8122378066182137e-03 + <_> + 8.8912002563476562e+01 + + 1 2 2847 3.5000000000000000e+00 0 -1 2848 + 5.0000000000000000e-01 -2 -3 2849 1.5000000000000000e+00 + + 7.1133011579513550e-01 -1.0473229736089706e-01 + 3.0710890889167786e-01 -4.0350064635276794e-01 + <_> + 8.9316238403320312e+01 + + 1 2 2850 1.6500000000000000e+01 0 -1 2851 + 1.5000000000000000e+00 -2 -3 2852 7.5000000000000000e+00 + + 8.4607600001618266e-04 -7.6641041040420532e-01 + -3.1311124563217163e-01 4.4425663352012634e-01 + <_> + 8.9348419189453125e+01 + + 1 2 2853 1.1500000000000000e+01 0 -1 2854 + 1.7500000000000000e+01 -2 -3 2855 2.0500000000000000e+01 + + -9.8593395948410034e-01 1. 2.4410592019557953e-01 + -3.1496018171310425e-01 + <_> + 8.9189270019531250e+01 + + 1 2 2856 1.6500000000000000e+01 0 -1 2857 + 6.5000000000000000e+00 -2 -3 2858 74. + + 8.4461316466331482e-02 -4.1109508275985718e-01 + 9.0820807218551636e-01 -3.5371799021959305e-02 + <_> + 8.9124603271484375e+01 + + 1 2 2859 5.8750000000000000e+02 0 -1 2860 9863. -2 -3 2861 + 1.2500000000000000e+01 + + -6.3491946458816528e-01 4.8731520771980286e-01 + -5.2020323276519775e-01 3.2958313822746277e-01 + <_> + 8.9286071777343750e+01 + + 1 2 2862 9.7500000000000000e+01 0 -1 2863 + 2.1950000000000000e+02 -2 -3 2864 5.0000000000000000e-01 + + 4.2516252398490906e-01 -1. 2.8237330913543701e-01 + -5.0328004360198975e-01 + <_> + 8.9424316406250000e+01 + + 1 2 2865 5.2500000000000000e+01 0 -1 2866 61. -2 -3 2867 + 1.7500000000000000e+01 + + 5.0655448436737061e-01 -5.1969325542449951e-01 + 3.5390514135360718e-01 -4.7365185618400574e-01 + <_> + 8.9726875305175781e+01 + + 1 2 2868 5.8500000000000000e+01 0 -1 2869 + 1.4500000000000000e+01 -2 -3 2870 42. + + 3.0255803465843201e-01 -2.0427562296390533e-01 + -8.5021793842315674e-01 7.0594644546508789e-01 + <_> + 8.9578895568847656e+01 + + 1 2 2871 1.0500000000000000e+01 0 -1 2872 + 1.1950000000000000e+02 -2 -3 2873 24. + + -2.4734574556350708e-01 3.1361401081085205e-01 + 8.7930864095687866e-01 -1. + <_> + 8.9768898010253906e+01 + + 1 2 2874 7.5000000000000000e+00 0 -1 2875 + 7.4500000000000000e+01 -2 -3 2876 2.8500000000000000e+01 + + 3.1221041083335876e-01 -7.0097410678863525e-01 + 2.4191275238990784e-01 -5.3588688373565674e-01 + <_> + 8.9684265136718750e+01 + + 1 2 2877 3.5000000000000000e+00 0 -1 2878 + 2.7950000000000000e+02 -2 -3 2879 4.1500000000000000e+01 + + 1.2314370274543762e-01 -6.7686629295349121e-01 + -3.6168605089187622e-01 3.5209780931472778e-01 + <_> + 8.9795585632324219e+01 + + 1 2 2880 2.1050000000000000e+02 0 -1 2881 + 3.5000000000000000e+00 -2 -3 2882 1.0500000000000000e+01 + + 5.2586346864700317e-01 -3.2540410757064819e-01 + -8.8829517364501953e-01 4.9435129761695862e-01 + <_> + 8.9792076110839844e+01 + + 1 2 2883 2.5000000000000000e+00 0 -1 2884 + 2.9500000000000000e+01 -2 -3 2885 3.9250000000000000e+02 + + -6.1523008346557617e-01 3.7085807323455811e-01 + 9.0023398399353027e-02 -6.0440886020660400e-01 + <_> + 8.9958946228027344e+01 + + 1 2 2886 1.0500000000000000e+01 0 -1 2887 + 1.2500000000000000e+01 -2 -3 2888 1.8500000000000000e+01 + + -5.9052956104278564e-01 2.1934990584850311e-01 + -5.8395588397979736e-01 5.4426544904708862e-01 + <_> + 8.9670410156250000e+01 + + 1 2 2889 1.5000000000000000e+00 0 -1 2890 + 2.5000000000000000e+00 -2 -3 2891 8.5000000000000000e+00 + + -8.5811334848403931e-01 5.2128863334655762e-01 + -3.4101697802543640e-01 2.6454553008079529e-01 + <_> + 8.9847396850585938e+01 + + 1 2 2892 1.4500000000000000e+01 0 -1 2893 + 1.1500000000000000e+01 -2 -3 2894 6.6500000000000000e+01 + + -3.8977336883544922e-01 4.3855726718902588e-01 + -5.0296223163604736e-01 1.7698343098163605e-01 + <_> + 9.0157752990722656e+01 + + 1 2 2895 5.0000000000000000e-01 0 -1 2896 + 8.5000000000000000e+00 -2 -3 2897 4.5000000000000000e+00 + + -4.1999164223670959e-01 3.1035554409027100e-01 + 2.2039012610912323e-01 -5.3406608104705811e-01 + <_> + 9.0098411560058594e+01 + + 1 2 2898 5.0000000000000000e-01 0 -1 2899 + 2.1750000000000000e+02 -2 -3 2900 1.9500000000000000e+01 + + -5.9334795922040939e-02 6.7584723234176636e-01 + -5.2655130624771118e-01 2.6948010921478271e-01 + <_> + 9.0537551879882812e+01 + + 1 2 2901 5.0000000000000000e-01 0 -1 2902 + 7.5000000000000000e+00 -2 -3 2903 2.2500000000000000e+01 + + -6.9564437866210938e-01 4.3913722038269043e-01 + -3.6194628477096558e-01 3.8801836967468262e-01 + <_> + 9.0335647583007812e+01 + + 1 2 2904 1.5000000000000000e+00 0 -1 2905 + 5.4550000000000000e+02 -2 -3 2906 2.5000000000000000e+00 + + 1. -9.8192542791366577e-01 3.3667489886283875e-01 + -2.0190110802650452e-01 + <_> + 9.0692535400390625e+01 + + 1 2 2907 1.5000000000000000e+00 0 -1 2908 + 8.5000000000000000e+00 -2 -3 2909 344. + + -4.5181885361671448e-01 3.5688367486000061e-01 + -5.9278815984725952e-01 6.4385175704956055e-02 + <_> + 9.0584419250488281e+01 + + 1 2 2910 4.6500000000000000e+01 0 -1 2911 + 2.5000000000000000e+00 -2 -3 2912 6.5000000000000000e+00 + + 4.3527498841285706e-01 -1.0811836272478104e-01 + -6.3831877708435059e-01 1. + <_> + 9.0788459777832031e+01 + + 1 2 2913 294. 0 -1 2914 14. -2 -3 2915 + 4.4500000000000000e+01 + + -8.4630513191223145e-01 1. 2.0404133200645447e-01 + -4.8527365922927856e-01 + <_> + 9.0862548828125000e+01 + + 1 2 2916 3.3500000000000000e+01 0 -1 2917 52. -2 -3 2918 + 5.2705000000000000e+03 + + 7.2816586494445801e-01 -5.4465806484222412e-01 + -1.1197114735841751e-01 5.4565620422363281e-01 + <_> + 9.0902687072753906e+01 + + 1 2 2919 4.1050000000000000e+02 0 -1 2920 139. -2 -3 2921 + 1.5000000000000000e+00 + + -9.1185075044631958e-01 6.4714074134826660e-01 + 1.9417783617973328e-01 -3.6837339401245117e-01 + <_> + 9.0985298156738281e+01 + + 1 2 2922 5.7650000000000000e+02 0 -1 2923 + 2.9450000000000000e+02 -2 -3 2924 3.9150000000000000e+02 + + -8.4534245729446411e-01 1. 4.4867873191833496e-01 + -1.7172452807426453e-01 + <_> + 9.1107513427734375e+01 + + 1 2 2925 3.5000000000000000e+00 0 -1 2926 + 1.5500000000000000e+01 -2 -3 2927 4.2500000000000000e+01 + + -8.3989793062210083e-01 8.9864379167556763e-01 + 2.8704452514648438e-01 -2.8833448886871338e-01 + <_> + 9.1266738891601562e+01 + + 1 2 2928 4.9775000000000000e+03 0 -1 2929 + 4.5000000000000000e+00 -2 -3 2930 1.9865000000000000e+03 + + -7.4095195531845093e-01 1.5922544896602631e-01 + -9.0941101312637329e-01 1.8585844337940216e-01 + <_> + 9.1225799560546875e+01 + + 1 2 2931 5.0000000000000000e-01 0 -1 2932 + 4.5000000000000000e+00 -2 -3 2933 1.4500000000000000e+01 + + -7.6407551765441895e-01 5.0083768367767334e-01 + -7.2587943077087402e-01 -5.0088282674551010e-02 + <_> + 9.0573638916015625e+01 + + 1 2 2934 8.5000000000000000e+00 0 -1 2935 + 2.7500000000000000e+01 -2 -3 2936 9.5000000000000000e+00 + + -7.4017934501171112e-02 5.9898555278778076e-01 + 1.7782434821128845e-01 -6.5216350555419922e-01 + <_> + 9.0737045288085938e+01 + + 1 2 2937 5.0000000000000000e-01 0 -1 2938 + 1.0450000000000000e+02 -2 -3 2939 1.6950000000000000e+02 + + 6.0130667686462402e-01 -9.1431754827499390e-01 + -4.1352280974388123e-01 1.6340811550617218e-01 + <_> + 9.1356544494628906e+01 + + 1 2 2940 1.5000000000000000e+00 0 -1 2941 + 7.5000000000000000e+00 -2 -3 2942 1.6805000000000000e+03 + + -2.0215752720832825e-01 6.1950212717056274e-01 + -5.5768364667892456e-01 3.5280909389257431e-02 + <_> + 9.0944335937500000e+01 + + 1 2 2943 1.1155000000000000e+03 0 -1 2944 + 1.3500000000000000e+01 -2 -3 2945 4.1950000000000000e+02 + + 6.8771177530288696e-01 -9.7811706364154816e-02 + -4.1221308708190918e-01 1.9626976549625397e-01 + <_> + 9.1227783203125000e+01 + + 1 2 2946 1.7535000000000000e+03 0 -1 2947 + 6.5000000000000000e+00 -2 -3 2948 8.3500000000000000e+01 + + 2.8345218300819397e-01 -2.8811171650886536e-01 + -9.1736477613449097e-01 1. + <_> + 9.1561256408691406e+01 + + 1 2 2949 3.9500000000000000e+01 0 -1 2950 169. -2 -3 2951 + 3.5000000000000000e+00 + + -7.5076478719711304e-01 8.8347315788269043e-01 + 3.4602180123329163e-01 -2.1803687512874603e-01 + <_> + 9.0775177001953125e+01 + + 1 2 2952 1.2550000000000000e+02 0 -1 2953 + 8.5000000000000000e+00 -2 -3 2954 156. + + -3.8729524612426758e-01 2.9583999514579773e-01 + -7.9863160848617554e-01 3.9145687222480774e-01 + <_> + 9.1042625427246094e+01 + + 1 2 2955 2.5000000000000000e+00 0 -1 2956 + 2.5750000000000000e+02 -2 -3 2957 4685. + + 2.6745319366455078e-01 -6.6209262609481812e-01 + -7.7674686908721924e-01 7.1668751537799835e-02 + <_> + 9.1575469970703125e+01 + + 1 2 2958 1.0500000000000000e+01 0 -1 2959 + 1.0550000000000000e+02 -2 -3 2960 4.5500000000000000e+01 + + 5.3284192085266113e-01 -3.2092022895812988e-01 + -9.5425200462341309e-01 5.0468903779983521e-01 + <_> + 9.1930732727050781e+01 + + 1 2 2961 1.2500000000000000e+01 0 -1 2962 + 1.8950000000000000e+02 -2 -3 2963 2.5000000000000000e+00 + + -2.8867003321647644e-01 3.5526236891746521e-01 + 2.9676264524459839e-01 -6.0322642326354980e-01 + <_> + 9.2231742858886719e+01 + + 1 2 2964 7.5000000000000000e+00 0 -1 2965 + 1.9500000000000000e+01 -2 -3 2966 4.1500000000000000e+01 + + -7.3552119731903076e-01 3.0101212859153748e-01 + -5.0962239503860474e-01 5.0894033908843994e-01 + <_> + 9.2388069152832031e+01 + + 1 2 2967 1.1500000000000000e+01 0 -1 2968 + 1.5000000000000000e+00 -2 -3 2969 2.6500000000000000e+01 + + 1.5632244944572449e-01 -4.4891685247421265e-01 + 6.4296531677246094e-01 -5.9720402956008911e-01 + <_> + 9.2552001953125000e+01 + + 1 2 2970 1.0675000000000000e+03 0 -1 2971 + 4.3756500000000000e+04 -2 -3 2972 4.9450000000000000e+02 + + -1. 8.0944263935089111e-01 -3.8900658488273621e-01 + 1.6393135488033295e-01 + <_> + 9.2899009704589844e+01 + + 1 2 2973 2.5000000000000000e+00 0 -1 2974 + 1.4055000000000000e+03 -2 -3 2975 1.8500000000000000e+01 + + 1.6320782899856567e-01 -5.9554386138916016e-01 + -7.9579621553421021e-01 3.4700983762741089e-01 + <_> + 9.2847854614257812e+01 + + 1 2 2976 8.5500000000000000e+01 0 -1 2977 + 1.2550000000000000e+02 -2 -3 2978 5.5000000000000000e+00 + + -1. 9.6116375923156738e-01 2.2865201532840729e-01 + -2.7930772304534912e-01 + <_> + 9.2859100341796875e+01 + + 1 2 2979 1.1350000000000000e+02 0 -1 2980 + 2.0500000000000000e+01 -2 -3 2981 1.6150000000000000e+02 + + 1.7545458674430847e-01 -7.0411294698715210e-01 + 3.2774302363395691e-01 -6.4024138450622559e-01 + <_> + 9.2426673889160156e+01 + + 1 2 2982 2.5000000000000000e+00 0 -1 2983 + 2.7500000000000000e+01 -2 -3 2984 1.0350000000000000e+02 + + 6.4859634637832642e-01 -6.6807705163955688e-01 + 2.5129410624504089e-01 -4.3242052197456360e-01 + <_> + 9.2854904174804688e+01 + + 1 2 2985 3.0050000000000000e+02 0 -1 2986 333. -2 -3 2987 + 3.2045000000000000e+03 + + -3.9532727003097534e-01 8.3435887098312378e-01 + 4.2823007702827454e-01 -3.9525333046913147e-01 + <_> + 9.3196861267089844e+01 + + 1 2 2988 2.5000000000000000e+00 0 -1 2989 + 6.5000000000000000e+00 -2 -3 2990 4.8895000000000000e+03 + + -8.9721941947937012e-01 3.4195712208747864e-01 + 6.4947992563247681e-01 -4.5169207453727722e-01 + <_> + 9.3306480407714844e+01 + + 1 2 2991 2.7500000000000000e+01 0 -1 2992 + 1.5000000000000000e+00 -2 -3 2993 4.5000000000000000e+00 + + 1.0962056368589401e-01 -4.2897370457649231e-01 + 9.1374301910400391e-01 -6.3376551866531372e-01 + <_> + 9.3460906982421875e+01 + + 1 2 2994 1.0500000000000000e+01 0 -1 2995 + 3.5000000000000000e+00 -2 -3 2996 3.5000000000000000e+00 + + 2.2791311144828796e-01 -5.2986472845077515e-01 + 4.5877307653427124e-01 -1.7966294288635254e-01 + <_> + 9.3358589172363281e+01 + + 1 2 2997 3.4500000000000000e+01 0 -1 2998 222. -2 -3 2999 + 2.0750000000000000e+02 + + 7.5331348180770874e-01 -9.4210654497146606e-01 + -1.0231721401214600e-01 4.7118717432022095e-01 + <_> + 9.3666183471679688e+01 + + 1 2 3000 2.2500000000000000e+01 0 -1 3001 + 1.8450000000000000e+02 -2 -3 3002 2.5000000000000000e+00 + + -3.5824659466743469e-01 3.0759900808334351e-01 + 6.4143782854080200e-01 -6.5782296657562256e-01 + <_> + 9.3088340759277344e+01 + + 1 2 3003 1.3350000000000000e+02 0 -1 3004 830. -2 -3 3005 + 2.4500000000000000e+01 + + -6.9563269615173340e-01 6.3497310876846313e-01 + -5.7784938812255859e-01 6.1700064688920975e-02 + <_> + 9.2995674133300781e+01 + + 1 2 3006 4.5500000000000000e+01 0 -1 3007 + 1.5000000000000000e+00 -2 -3 3008 6.6500000000000000e+01 + + 4.5369678735733032e-01 -9.2660412192344666e-02 + -7.4712693691253662e-01 6.0710644721984863e-01 + <_> + 9.2739532470703125e+01 + + 1 2 3009 1.2950000000000000e+02 0 -1 3010 1144. -2 -3 3011 + 4.2850000000000000e+02 + + -7.0763772726058960e-01 9.4605678319931030e-01 + -2.5614449381828308e-01 4.1044127941131592e-01 + <_> + 9.2615875244140625e+01 + + 1 2 3012 2.3500000000000000e+01 0 -1 3013 36. -2 -3 3014 + 5.0000000000000000e-01 + + 8.3025622367858887e-01 -8.2933390140533447e-01 + 4.6695771813392639e-01 -1.2365625053644180e-01 + <_> + 9.3196029663085938e+01 + + 1 2 3015 2.0450000000000000e+02 0 -1 3016 + 1.0500000000000000e+01 -2 -3 3017 524. + + -1.5761210024356842e-01 5.8015257120132446e-01 + -8.8289064168930054e-01 2.2438578307628632e-01 + <_> + 9.3732429504394531e+01 + + 1 2 3018 3.3500000000000000e+01 0 -1 3019 + 1.8500000000000000e+01 -2 -3 3020 6.6500000000000000e+01 + + 4.8793593049049377e-01 -5.8576709032058716e-01 + 5.3640323877334595e-01 -8.2473360002040863e-02 + <_> + 9.3099838256835938e+01 + + 1 2 3021 1.3500000000000000e+01 0 -1 3022 + 5.0000000000000000e-01 -2 -3 3023 1.4500000000000000e+01 + + 3.0108803510665894e-01 -6.3259094953536987e-01 + -7.1200174093246460e-01 2.7906426787376404e-01 + <_> + 9.3105216979980469e+01 + + 1 2 3024 3.9050000000000000e+02 0 -1 3025 1243. -2 -3 3026 + 4.2050000000000000e+02 + + -8.8503718376159668e-01 9.7225552797317505e-01 + 5.3784158080816269e-03 -7.7111572027206421e-01 + <_> + 9.3588562011718750e+01 + + 1 2 3027 1.2850000000000000e+02 0 -1 3028 + 9.5000000000000000e+00 -2 -3 3029 3.5000000000000000e+00 + + 3.3606645464897156e-01 -5.4860621690750122e-01 + 4.8334029316902161e-01 -1.3527640700340271e-01 + <_> + 9.3835968017578125e+01 + + 1 2 3030 4.5000000000000000e+00 0 -1 3031 + 4.5000000000000000e+00 -2 -3 3032 1.3415000000000000e+03 + + -7.8450918197631836e-01 1.6970160603523254e-01 + -5.8498537540435791e-01 2.4740667641162872e-01 + <_> + 9.4142906188964844e+01 + + 1 2 3033 4.3500000000000000e+01 0 -1 3034 + 4.5000000000000000e+00 -2 -3 3035 3.2500000000000000e+01 + + 3.0693769454956055e-01 -2.6115962862968445e-01 + -8.9926475286483765e-01 7.7170163393020630e-01 + <_> + 9.4121742248535156e+01 + + 1 2 3036 3.3500000000000000e+01 0 -1 3037 5772. -2 -3 3038 + 8.2650000000000000e+02 + + 6.0314506292343140e-01 -8.1919574737548828e-01 + -2.1161338314414024e-02 7.4580943584442139e-01 + <_> + 9.3867355346679688e+01 + + 1 2 3039 1.5000000000000000e+00 0 -1 3040 + 2.5000000000000000e+00 -2 -3 3041 7.6500000000000000e+01 + + -1. 6.5151697397232056e-01 -2.5439009070396423e-01 + 4.9923765659332275e-01 + <_> + 9.4093467712402344e+01 + + 1 2 3042 7584. 0 -1 3043 5.1250000000000000e+02 -2 -3 3044 + 1.1500000000000000e+01 + + -4.7158271074295044e-01 2.2611454129219055e-01 + -8.3964759111404419e-01 4.5222747325897217e-01 + <_> + 9.4337669372558594e+01 + + 1 2 3045 1.5625000000000000e+03 0 -1 3046 + 1.0615000000000000e+03 -2 -3 3047 2.5000000000000000e+00 + + -1. 9.3781590461730957e-01 2.4420407414436340e-01 + -2.9586532711982727e-01 + <_> + 9.4508171081542969e+01 + + 1 2 3048 1.3500000000000000e+01 0 -1 3049 23. -2 -3 3050 + 1.5245000000000000e+03 + + -8.5904693603515625e-01 1.7050011456012726e-01 + 9.2488127946853638e-01 -9.8964858055114746e-01 + <_> + 9.4239341735839844e+01 + + 1 2 3051 5.0000000000000000e-01 0 -1 3052 + 5.5000000000000000e+00 -2 -3 3053 1.8500000000000000e+01 + + -8.7914295494556427e-02 5.4742050170898438e-01 + -4.5447856187820435e-01 4.4385817646980286e-01 + <_> + 9.4594245910644531e+01 + + 1 2 3054 1.5000000000000000e+00 0 -1 3055 + 1.5500000000000000e+01 -2 -3 3056 1.1500000000000000e+01 + + 3.5490357875823975e-01 -4.3068945407867432e-01 + -6.6280466318130493e-01 3.0311322771012783e-03 + <_> + 9.4814491271972656e+01 + + 1 2 3057 3.5000000000000000e+00 0 -1 3058 + 5.0000000000000000e-01 -2 -3 3059 4.0550000000000000e+02 + + 7.0450115203857422e-01 -7.8278595209121704e-01 + 2.2024388611316681e-01 -4.0765863656997681e-01 + <_> + 9.4579345703125000e+01 + + 1 2 3060 1.5500000000000000e+01 0 -1 3061 + 1.5000000000000000e+00 -2 -3 3062 1934. + + 1.5189912915229797e-01 -4.7490403056144714e-01 + -2.3514933884143829e-01 6.0529416799545288e-01 + <_> + 9.4922325134277344e+01 + + 1 2 3063 5.0000000000000000e-01 0 -1 3064 + 3.0500000000000000e+01 -2 -3 3065 1.1500000000000000e+01 + + -3.8056674599647522e-01 5.7760846614837646e-01 + -4.7326391935348511e-01 1.4074583351612091e-01 + <_> + 9.5195831298828125e+01 + + 1 2 3066 2.7500000000000000e+01 0 -1 3067 + 1.5500000000000000e+01 -2 -3 3068 1.3500000000000000e+01 + + -3.2090973854064941e-01 2.7350622415542603e-01 + 1.3395747169852257e-02 -8.1775778532028198e-01 + <_> + 9.5786506652832031e+01 + + 1 2 3069 4.5000000000000000e+00 0 -1 3070 + 4.3500000000000000e+01 -2 -3 3071 1.0235000000000000e+03 + + -2.7497810125350952e-01 5.9067696332931519e-01 + -5.4431802034378052e-01 7.7079035341739655e-02 + + <_> + 8 + + 6 5 4 2 + <_> + 8 + + 7 5 2 3 + <_> + 2 + + 4 18 5 10 + <_> + 5 + + 4 28 11 3 + <_> + 0 + + 6 22 6 6 + <_> + 4 + + 6 19 4 5 + <_> + 1 + + 6 27 5 2 + <_> + 7 + + 7 5 2 1 + <_> + 4 + + 4 9 8 22 + <_> + 5 + + 8 4 5 9 + <_> + 2 + + 8 6 4 4 + <_> + 9 + + 7 19 2 1 + <_> + 8 + + 8 6 1 2 + <_> + 0 + + 6 18 5 7 + <_> + 9 + + 7 14 2 3 + <_> + 4 + + 0 18 12 13 + <_> + 1 + + 4 26 7 3 + <_> + 7 + + 0 28 13 3 + <_> + 1 + + 5 10 6 1 + <_> + 1 + + 1 3 10 7 + <_> + 4 + + 0 30 15 1 + <_> + 2 + + 4 12 3 16 + <_> + 0 + + 4 28 8 2 + <_> + 5 + + 3 28 11 3 + <_> + 4 + + 3 10 9 19 + <_> + 3 + + 1 3 7 10 + <_> + 7 + + 8 12 1 1 + <_> + 0 + + 7 10 2 4 + <_> + 0 + + 8 14 4 11 + <_> + 3 + + 0 11 2 20 + <_> + 1 + + 7 4 2 4 + <_> + 4 + + 7 3 2 2 + <_> + 4 + + 2 2 11 8 + <_> + 4 + + 6 18 1 4 + <_> + 1 + + 1 16 5 12 + <_> + 2 + + 7 21 3 7 + <_> + 2 + + 8 30 7 1 + <_> + 5 + + 6 26 7 2 + <_> + 7 + + 14 28 1 2 + <_> + 9 + + 7 12 2 1 + <_> + 9 + + 3 1 12 1 + <_> + 9 + + 7 19 3 3 + <_> + 7 + + 6 5 9 3 + <_> + 3 + + 3 28 2 2 + <_> + 9 + + 5 1 3 3 + <_> + 3 + + 5 8 1 18 + <_> + 7 + + 7 5 2 1 + <_> + 3 + + 0 1 12 25 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 7 1 + <_> + 1 + + 6 12 3 1 + <_> + 5 + + 10 9 2 15 + <_> + 3 + + 13 21 2 9 + <_> + 7 + + 4 29 8 2 + <_> + 1 + + 5 11 6 17 + <_> + 7 + + 12 24 1 6 + <_> + 8 + + 7 12 2 1 + <_> + 0 + + 8 9 4 2 + <_> + 5 + + 7 10 6 3 + <_> + 0 + + 1 4 9 4 + <_> + 4 + + 0 30 13 1 + <_> + 1 + + 2 27 7 3 + <_> + 3 + + 3 9 10 3 + <_> + 0 + + 2 28 13 1 + <_> + 0 + + 6 24 4 4 + <_> + 2 + + 6 16 4 1 + <_> + 4 + + 1 9 2 10 + <_> + 5 + + 5 29 5 1 + <_> + 9 + + 7 15 3 2 + <_> + 2 + + 5 18 6 10 + <_> + 7 + + 7 22 2 2 + <_> + 0 + + 13 21 2 1 + <_> + 4 + + 6 4 5 3 + <_> + 4 + + 0 9 15 17 + <_> + 3 + + 4 1 5 30 + <_> + 3 + + 6 15 3 1 + <_> + 5 + + 8 5 3 2 + <_> + 5 + + 0 0 15 1 + <_> + 1 + + 6 27 3 2 + <_> + 5 + + 1 29 2 2 + <_> + 7 + + 0 27 3 4 + <_> + 4 + + 9 13 6 18 + <_> + 1 + + 3 7 12 1 + <_> + 9 + + 5 23 8 1 + <_> + 7 + + 12 30 3 1 + <_> + 3 + + 12 27 2 1 + <_> + 7 + + 5 13 1 2 + <_> + 8 + + 7 6 1 2 + <_> + 3 + + 14 13 1 16 + <_> + 0 + + 5 5 8 2 + <_> + 9 + + 9 14 1 1 + <_> + 5 + + 9 13 3 12 + <_> + 5 + + 9 30 6 1 + <_> + 4 + + 4 27 8 1 + <_> + 7 + + 3 12 9 7 + <_> + 4 + + 9 7 1 24 + <_> + 2 + + 8 8 4 1 + <_> + 2 + + 8 19 2 10 + <_> + 3 + + 2 13 2 15 + <_> + 2 + + 0 28 15 1 + <_> + 2 + + 3 26 8 2 + <_> + 3 + + 4 28 7 1 + <_> + 3 + + 11 23 1 3 + <_> + 0 + + 9 15 4 16 + <_> + 1 + + 2 7 9 2 + <_> + 4 + + 6 22 3 3 + <_> + 3 + + 5 5 1 25 + <_> + 1 + + 2 20 12 1 + <_> + 1 + + 5 28 6 1 + <_> + 8 + + 1 30 13 1 + <_> + 4 + + 3 16 12 4 + <_> + 8 + + 6 5 4 2 + <_> + 8 + + 2 23 12 1 + <_> + 4 + + 1 29 9 2 + <_> + 4 + + 9 6 4 14 + <_> + 7 + + 0 4 3 16 + <_> + 1 + + 9 10 1 3 + <_> + 3 + + 1 0 13 1 + <_> + 5 + + 3 5 10 8 + <_> + 5 + + 7 7 2 7 + <_> + 5 + + 6 28 5 2 + <_> + 3 + + 2 24 7 4 + <_> + 4 + + 6 1 3 17 + <_> + 0 + + 1 21 1 5 + <_> + 0 + + 1 11 6 5 + <_> + 9 + + 0 30 15 1 + <_> + 8 + + 2 30 8 1 + <_> + 0 + + 7 19 3 7 + <_> + 4 + + 2 24 12 2 + <_> + 9 + + 1 13 1 3 + <_> + 7 + + 7 5 2 1 + <_> + 9 + + 6 10 2 3 + <_> + 8 + + 8 6 1 2 + <_> + 5 + + 6 17 2 3 + <_> + 1 + + 6 27 4 4 + <_> + 2 + + 5 18 5 10 + <_> + 2 + + 14 0 1 29 + <_> + 5 + + 2 20 3 9 + <_> + 1 + + 5 27 6 1 + <_> + 4 + + 7 30 2 1 + <_> + 4 + + 5 24 5 6 + <_> + 4 + + 3 9 12 2 + <_> + 5 + + 9 7 4 20 + <_> + 7 + + 10 10 3 1 + <_> + 3 + + 2 28 13 3 + <_> + 5 + + 14 22 1 7 + <_> + 0 + + 4 7 2 4 + <_> + 3 + + 8 15 2 4 + <_> + 0 + + 7 19 4 9 + <_> + 4 + + 7 11 1 8 + <_> + 4 + + 2 11 13 11 + <_> + 4 + + 6 4 4 6 + <_> + 8 + + 4 22 2 6 + <_> + 4 + + 7 19 2 2 + <_> + 9 + + 6 4 3 6 + <_> + 4 + + 2 29 8 1 + <_> + 3 + + 1 9 6 16 + <_> + 7 + + 8 3 3 2 + <_> + 5 + + 6 12 3 2 + <_> + 8 + + 6 6 2 2 + <_> + 7 + + 1 25 2 4 + <_> + 4 + + 6 1 3 17 + <_> + 1 + + 5 11 4 3 + <_> + 5 + + 9 9 5 4 + <_> + 9 + + 6 14 3 4 + <_> + 2 + + 4 9 4 1 + <_> + 5 + + 2 5 6 8 + <_> + 2 + + 6 10 3 1 + <_> + 1 + + 9 26 5 3 + <_> + 0 + + 1 30 8 1 + <_> + 1 + + 9 22 1 3 + <_> + 2 + + 5 6 7 18 + <_> + 2 + + 11 6 1 14 + <_> + 3 + + 1 4 2 21 + <_> + 8 + + 7 5 2 3 + <_> + 9 + + 13 17 2 1 + <_> + 8 + + 8 24 6 2 + <_> + 7 + + 4 5 5 5 + <_> + 2 + + 4 25 9 3 + <_> + 4 + + 0 29 12 1 + <_> + 5 + + 1 28 9 3 + <_> + 1 + + 6 20 4 3 + <_> + 0 + + 5 25 4 1 + <_> + 1 + + 9 9 2 1 + <_> + 1 + + 3 6 9 4 + <_> + 3 + + 5 8 1 18 + <_> + 5 + + 0 19 2 7 + <_> + 3 + + 3 18 11 4 + <_> + 5 + + 5 12 1 16 + <_> + 0 + + 9 3 3 2 + <_> + 3 + + 6 5 3 1 + <_> + 1 + + 6 7 6 2 + <_> + 3 + + 0 27 13 2 + <_> + 4 + + 2 9 12 3 + <_> + 4 + + 10 24 4 2 + <_> + 9 + + 0 22 11 1 + <_> + 9 + + 1 0 14 14 + <_> + 9 + + 7 9 2 7 + <_> + 1 + + 4 27 4 1 + <_> + 2 + + 9 28 4 3 + <_> + 8 + + 6 6 2 17 + <_> + 2 + + 5 23 9 4 + <_> + 0 + + 10 9 4 3 + <_> + 2 + + 6 13 3 2 + <_> + 4 + + 13 29 2 2 + <_> + 5 + + 8 5 3 4 + <_> + 4 + + 13 8 1 1 + <_> + 7 + + 4 30 11 1 + <_> + 3 + + 8 15 3 15 + <_> + 1 + + 6 22 1 2 + <_> + 3 + + 1 5 8 6 + <_> + 7 + + 13 0 2 3 + <_> + 0 + + 6 10 3 2 + <_> + 2 + + 7 8 4 2 + <_> + 1 + + 10 9 1 2 + <_> + 3 + + 7 10 3 13 + <_> + 5 + + 3 26 9 1 + <_> + 4 + + 2 0 13 4 + <_> + 4 + + 5 0 4 8 + <_> + 2 + + 11 23 4 3 + <_> + 5 + + 10 9 3 13 + <_> + 9 + + 9 10 1 1 + <_> + 8 + + 5 6 7 1 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 0 17 1 5 + <_> + 5 + + 5 28 8 2 + <_> + 4 + + 2 10 5 8 + <_> + 0 + + 2 29 6 2 + <_> + 0 + + 6 21 5 7 + <_> + 0 + + 3 22 2 5 + <_> + 3 + + 0 6 5 25 + <_> + 9 + + 5 1 2 1 + <_> + 4 + + 7 18 2 2 + <_> + 9 + + 6 8 3 4 + <_> + 8 + + 6 6 2 2 + <_> + 9 + + 5 10 1 2 + <_> + 8 + + 3 5 7 8 + <_> + 5 + + 3 21 2 3 + <_> + 2 + + 4 12 3 16 + <_> + 5 + + 11 5 1 21 + <_> + 0 + + 4 7 2 4 + <_> + 7 + + 7 12 2 3 + <_> + 0 + + 6 6 8 25 + <_> + 2 + + 8 30 6 1 + <_> + 5 + + 9 25 5 2 + <_> + 3 + + 5 9 1 14 + <_> + 1 + + 3 28 10 1 + <_> + 4 + + 13 3 1 19 + <_> + 7 + + 0 27 15 2 + <_> + 1 + + 7 3 2 6 + <_> + 7 + + 10 13 1 7 + <_> + 4 + + 3 12 8 19 + <_> + 5 + + 8 5 5 10 + <_> + 4 + + 6 0 2 8 + <_> + 5 + + 8 0 4 3 + <_> + 9 + + 3 3 10 2 + <_> + 3 + + 12 20 2 5 + <_> + 9 + + 7 17 2 1 + <_> + 5 + + 1 30 5 1 + <_> + 3 + + 3 0 8 6 + <_> + 0 + + 6 24 4 4 + <_> + 3 + + 7 14 1 2 + <_> + 4 + + 5 6 9 5 + <_> + 5 + + 6 16 3 3 + <_> + 2 + + 4 18 5 10 + <_> + 1 + + 4 18 11 3 + <_> + 0 + + 4 28 10 2 + <_> + 1 + + 4 13 9 6 + <_> + 1 + + 11 15 1 4 + <_> + 1 + + 9 10 1 3 + <_> + 7 + + 9 30 2 1 + <_> + 1 + + 4 17 6 12 + <_> + 2 + + 0 6 10 4 + <_> + 2 + + 5 1 1 4 + <_> + 0 + + 6 0 2 8 + <_> + 2 + + 3 10 4 1 + <_> + 4 + + 1 30 12 1 + <_> + 1 + + 4 27 9 1 + <_> + 7 + + 11 25 2 1 + <_> + 1 + + 7 19 2 7 + <_> + 4 + + 12 26 3 5 + <_> + 5 + + 2 5 10 22 + <_> + 7 + + 7 5 4 3 + <_> + 4 + + 2 25 13 3 + <_> + 2 + + 6 18 3 4 + <_> + 2 + + 8 16 1 2 + <_> + 0 + + 6 17 7 12 + <_> + 0 + + 12 21 2 1 + <_> + 1 + + 6 4 4 2 + <_> + 4 + + 7 3 2 2 + <_> + 4 + + 10 0 2 17 + <_> + 5 + + 9 29 6 1 + <_> + 2 + + 6 26 7 1 + <_> + 9 + + 6 8 3 4 + <_> + 8 + + 6 5 4 2 + <_> + 2 + + 14 17 1 13 + <_> + 8 + + 0 30 15 1 + <_> + 0 + + 7 13 2 4 + <_> + 3 + + 3 10 8 4 + <_> + 0 + + 1 14 2 1 + <_> + 1 + + 6 28 5 1 + <_> + 5 + + 10 7 3 7 + <_> + 1 + + 3 29 3 1 + <_> + 3 + + 1 22 2 8 + <_> + 3 + + 4 25 2 5 + <_> + 3 + + 4 5 3 4 + <_> + 2 + + 6 1 2 4 + <_> + 4 + + 3 14 7 14 + <_> + 8 + + 7 6 1 2 + <_> + 3 + + 3 9 2 14 + <_> + 4 + + 2 29 9 1 + <_> + 7 + + 12 30 3 1 + <_> + 9 + + 6 12 4 5 + <_> + 9 + + 1 0 14 3 + <_> + 1 + + 7 4 2 4 + <_> + 2 + + 6 18 4 9 + <_> + 7 + + 3 13 1 2 + <_> + 2 + + 4 13 11 12 + <_> + 8 + + 6 13 4 1 + <_> + 1 + + 6 11 5 2 + <_> + 8 + + 11 16 2 2 + <_> + 1 + + 4 20 3 11 + <_> + 5 + + 2 28 7 2 + <_> + 1 + + 10 29 2 1 + <_> + 9 + + 13 25 2 3 + <_> + 9 + + 6 19 1 5 + <_> + 5 + + 9 29 2 2 + <_> + 2 + + 5 5 10 3 + <_> + 7 + + 0 10 2 8 + <_> + 2 + + 0 30 4 1 + <_> + 7 + + 9 29 6 2 + <_> + 3 + + 8 2 1 29 + <_> + 4 + + 1 0 10 23 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 6 6 9 + <_> + 8 + + 7 9 2 1 + <_> + 1 + + 7 28 4 1 + <_> + 3 + + 1 10 12 1 + <_> + 5 + + 7 8 1 19 + <_> + 4 + + 3 30 10 1 + <_> + 3 + + 4 4 1 11 + <_> + 0 + + 7 18 3 4 + <_> + 4 + + 7 7 4 5 + <_> + 7 + + 11 1 1 12 + <_> + 8 + + 7 7 3 1 + <_> + 9 + + 7 9 2 7 + <_> + 9 + + 10 11 5 12 + <_> + 2 + + 6 10 3 1 + <_> + 2 + + 4 19 7 9 + <_> + 1 + + 0 0 15 1 + <_> + 3 + + 4 5 6 2 + <_> + 3 + + 11 20 1 3 + <_> + 3 + + 5 0 8 15 + <_> + 4 + + 10 11 1 12 + <_> + 0 + + 6 16 7 11 + <_> + 5 + + 6 6 1 25 + <_> + 5 + + 3 22 2 4 + <_> + 5 + + 0 7 13 16 + <_> + 4 + + 6 21 4 1 + <_> + 4 + + 5 1 6 5 + <_> + 4 + + 5 0 8 27 + <_> + 1 + + 4 26 6 3 + <_> + 7 + + 8 9 1 1 + <_> + 0 + + 1 28 11 3 + <_> + 3 + + 2 22 1 2 + <_> + 0 + + 7 9 1 6 + <_> + 3 + + 4 9 4 20 + <_> + 5 + + 3 8 1 21 + <_> + 4 + + 6 22 4 3 + <_> + 1 + + 4 7 4 1 + <_> + 9 + + 10 9 2 7 + <_> + 2 + + 11 6 1 18 + <_> + 8 + + 7 6 1 2 + <_> + 4 + + 5 29 6 2 + <_> + 8 + + 8 3 1 1 + <_> + 3 + + 8 17 1 5 + <_> + 3 + + 2 28 12 2 + <_> + 0 + + 0 8 1 5 + <_> + 3 + + 3 23 4 4 + <_> + 1 + + 13 2 2 7 + <_> + 8 + + 5 6 10 2 + <_> + 0 + + 7 18 6 10 + <_> + 3 + + 12 17 3 14 + <_> + 9 + + 8 15 1 2 + <_> + 9 + + 0 0 4 1 + <_> + 0 + + 9 9 4 1 + <_> + 9 + + 4 5 6 13 + <_> + 0 + + 5 3 6 6 + <_> + 9 + + 5 22 6 4 + <_> + 0 + + 11 4 1 1 + <_> + 7 + + 14 1 1 19 + <_> + 4 + + 8 17 3 1 + <_> + 5 + + 9 13 4 6 + <_> + 5 + + 9 2 3 22 + <_> + 0 + + 0 28 8 1 + <_> + 4 + + 6 4 5 3 + <_> + 5 + + 14 10 1 14 + <_> + 5 + + 7 24 5 4 + <_> + 3 + + 10 18 1 8 + <_> + 5 + + 8 30 6 1 + <_> + 2 + + 6 26 6 2 + <_> + 1 + + 4 10 4 2 + <_> + 3 + + 5 8 1 18 + <_> + 4 + + 8 29 7 1 + <_> + 7 + + 13 28 1 1 + <_> + 1 + + 7 28 3 1 + <_> + 7 + + 2 25 4 4 + <_> + 4 + + 12 30 3 1 + <_> + 4 + + 7 19 3 7 + <_> + 5 + + 9 8 5 7 + <_> + 5 + + 2 19 1 5 + <_> + 1 + + 2 22 5 8 + <_> + 1 + + 3 24 2 2 + <_> + 0 + + 6 29 1 2 + <_> + 9 + + 5 28 2 1 + <_> + 0 + + 7 10 3 2 + <_> + 2 + + 4 28 6 1 + <_> + 0 + + 3 7 5 22 + <_> + 7 + + 2 8 9 1 + <_> + 3 + + 6 17 1 2 + <_> + 8 + + 8 6 1 2 + <_> + 3 + + 3 0 6 4 + <_> + 9 + + 7 13 1 1 + <_> + 2 + + 4 22 3 1 + <_> + 9 + + 8 19 1 2 + <_> + 8 + + 10 15 4 3 + <_> + 5 + + 9 10 3 3 + <_> + 3 + + 9 3 6 4 + <_> + 4 + + 1 12 11 18 + <_> + 5 + + 1 28 4 3 + <_> + 3 + + 1 3 8 14 + <_> + 4 + + 7 11 1 8 + <_> + 0 + + 7 9 1 1 + <_> + 2 + + 5 25 4 3 + <_> + 5 + + 5 1 4 3 + <_> + 4 + + 5 18 5 2 + <_> + 5 + + 2 18 11 3 + <_> + 1 + + 7 4 2 4 + <_> + 7 + + 13 4 1 25 + <_> + 2 + + 13 19 2 4 + <_> + 9 + + 4 0 7 4 + <_> + 1 + + 8 27 1 2 + <_> + 4 + + 3 29 11 1 + <_> + 4 + + 6 26 4 4 + <_> + 0 + + 7 17 5 10 + <_> + 9 + + 2 30 1 1 + <_> + 7 + + 12 18 3 13 + <_> + 4 + + 6 22 3 3 + <_> + 1 + + 5 25 3 6 + <_> + 2 + + 7 20 3 1 + <_> + 8 + + 7 6 1 2 + <_> + 2 + + 4 9 4 2 + <_> + 8 + + 4 25 1 2 + <_> + 4 + + 4 9 8 5 + <_> + 5 + + 8 5 5 8 + <_> + 4 + + 3 28 9 1 + <_> + 2 + + 7 29 7 2 + <_> + 2 + + 6 19 5 12 + <_> + 4 + + 14 23 1 4 + <_> + 5 + + 6 17 2 3 + <_> + 2 + + 3 17 5 7 + <_> + 9 + + 7 8 1 3 + <_> + 9 + + 2 3 11 3 + <_> + 1 + + 4 28 4 1 + <_> + 9 + + 6 7 2 6 + <_> + 8 + + 6 6 1 2 + <_> + 2 + + 14 17 1 13 + <_> + 8 + + 3 0 6 5 + <_> + 2 + + 7 24 3 3 + <_> + 4 + + 1 28 11 3 + <_> + 2 + + 6 27 5 4 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 4 4 3 9 + <_> + 8 + + 6 0 3 3 + <_> + 1 + + 4 7 6 1 + <_> + 9 + + 6 14 5 4 + <_> + 3 + + 0 9 1 18 + <_> + 1 + + 9 10 1 3 + <_> + 1 + + 7 12 8 6 + <_> + 4 + + 7 18 2 2 + <_> + 3 + + 6 2 1 8 + <_> + 0 + + 3 9 3 1 + <_> + 4 + + 3 15 11 14 + <_> + 1 + + 6 11 6 1 + <_> + 8 + + 7 5 2 3 + <_> + 9 + + 7 14 3 3 + <_> + 4 + + 3 11 4 9 + <_> + 2 + + 8 7 1 11 + <_> + 7 + + 0 12 9 10 + <_> + 7 + + 0 27 10 1 + <_> + 0 + + 6 5 3 18 + <_> + 5 + + 4 28 5 3 + <_> + 2 + + 4 9 8 22 + <_> + 7 + + 7 17 1 2 + <_> + 2 + + 6 13 4 2 + <_> + 0 + + 5 5 6 3 + <_> + 7 + + 8 13 3 14 + <_> + 0 + + 10 0 2 5 + <_> + 1 + + 3 28 8 1 + <_> + 4 + + 12 7 1 24 + <_> + 7 + + 1 28 2 2 + <_> + 8 + + 6 5 4 2 + <_> + 0 + + 6 18 5 4 + <_> + 4 + + 11 6 4 2 + <_> + 0 + + 7 10 3 1 + <_> + 7 + + 14 0 1 28 + <_> + 5 + + 9 27 6 3 + <_> + 8 + + 0 4 4 27 + <_> + 0 + + 5 28 8 1 + <_> + 1 + + 6 12 3 1 + <_> + 5 + + 10 10 4 9 + <_> + 5 + + 5 0 2 5 + <_> + 4 + + 4 4 6 5 + <_> + 4 + + 2 29 9 1 + <_> + 1 + + 5 26 7 3 + <_> + 2 + + 2 20 2 4 + <_> + 0 + + 6 17 7 12 + <_> + 3 + + 10 25 5 6 + <_> + 3 + + 10 17 1 10 + <_> + 2 + + 0 0 12 28 + <_> + 5 + + 9 8 5 7 + <_> + 4 + + 3 12 9 16 + <_> + 0 + + 13 22 2 4 + <_> + 3 + + 6 0 5 11 + <_> + 1 + + 0 2 8 2 + <_> + 1 + + 6 7 6 2 + <_> + 8 + + 8 3 1 5 + <_> + 4 + + 8 2 4 13 + <_> + 9 + + 8 10 1 7 + <_> + 9 + + 2 3 11 3 + <_> + 2 + + 11 28 2 1 + <_> + 0 + + 9 4 1 24 + <_> + 0 + + 5 28 4 2 + <_> + 4 + + 7 0 2 18 + <_> + 4 + + 4 9 9 3 + <_> + 4 + + 7 7 6 14 + <_> + 4 + + 6 25 3 5 + <_> + 4 + + 5 13 2 5 + <_> + 3 + + 3 24 8 3 + <_> + 8 + + 5 20 2 2 + <_> + 3 + + 1 22 2 8 + <_> + 1 + + 2 27 8 2 + <_> + 7 + + 10 28 5 1 + <_> + 4 + + 7 20 3 5 + <_> + 4 + + 8 26 2 2 + <_> + 0 + + 5 24 4 3 + <_> + 4 + + 12 30 3 1 + <_> + 2 + + 4 24 6 4 + <_> + 2 + + 12 10 3 7 + <_> + 1 + + 8 27 1 2 + <_> + 5 + + 1 29 3 2 + <_> + 1 + + 11 23 3 8 + <_> + 2 + + 8 10 1 5 + <_> + 2 + + 11 0 2 15 + <_> + 1 + + 11 20 1 3 + <_> + 3 + + 3 8 5 16 + <_> + 7 + + 7 5 2 1 + <_> + 3 + + 0 19 4 10 + <_> + 1 + + 6 22 1 2 + <_> + 3 + + 4 27 11 2 + <_> + 9 + + 10 10 3 1 + <_> + 8 + + 8 6 1 2 + <_> + 0 + + 8 8 2 1 + <_> + 8 + + 1 26 11 2 + <_> + 7 + + 4 30 11 1 + <_> + 1 + + 3 18 11 12 + <_> + 2 + + 0 0 12 28 + <_> + 0 + + 13 8 2 6 + <_> + 1 + + 3 22 4 7 + <_> + 2 + + 2 30 8 1 + <_> + 9 + + 9 19 1 6 + <_> + 7 + + 3 16 9 4 + <_> + 9 + + 5 1 2 1 + <_> + 2 + + 7 9 5 1 + <_> + 4 + + 3 28 9 3 + <_> + 5 + + 5 0 6 2 + <_> + 5 + + 8 5 5 10 + <_> + 9 + + 5 17 7 4 + <_> + 2 + + 4 25 9 3 + <_> + 2 + + 9 16 2 2 + <_> + 5 + + 10 9 3 19 + <_> + 1 + + 4 10 7 4 + <_> + 0 + + 13 24 2 7 + <_> + 0 + + 7 24 3 5 + <_> + 4 + + 4 3 6 4 + <_> + 4 + + 11 15 2 5 + <_> + 0 + + 11 13 1 10 + <_> + 1 + + 1 25 1 5 + <_> + 5 + + 11 22 1 2 + <_> + 1 + + 8 26 1 4 + <_> + 3 + + 8 18 1 1 + <_> + 8 + + 7 6 1 2 + <_> + 9 + + 14 24 1 2 + <_> + 8 + + 11 6 1 3 + <_> + 2 + + 5 4 5 1 + <_> + 2 + + 6 3 4 7 + <_> + 1 + + 7 4 2 4 + <_> + 7 + + 9 7 1 5 + <_> + 0 + + 0 10 9 3 + <_> + 0 + + 4 4 7 7 + <_> + 5 + + 4 28 9 2 + <_> + 2 + + 6 17 6 12 + <_> + 0 + + 13 25 1 3 + <_> + 0 + + 1 3 13 1 + <_> + 0 + + 5 6 7 2 + <_> + 0 + + 5 10 4 2 + <_> + 1 + + 7 19 2 6 + <_> + 4 + + 5 13 6 9 + <_> + 1 + + 6 17 4 1 + <_> + 7 + + 2 28 6 1 + <_> + 0 + + 11 21 3 6 + <_> + 4 + + 13 29 2 2 + <_> + 3 + + 4 3 3 18 + <_> + 7 + + 7 5 4 3 + <_> + 7 + + 1 0 3 10 + <_> + 2 + + 6 12 3 1 + <_> + 5 + + 1 11 14 3 + <_> + 0 + + 6 15 3 1 + <_> + 8 + + 7 5 2 3 + <_> + 1 + + 2 0 11 3 + <_> + 8 + + 11 18 4 2 + <_> + 4 + + 4 26 7 2 + <_> + 2 + + 5 28 10 3 + <_> + 2 + + 4 5 7 2 + <_> + 4 + + 6 29 5 2 + <_> + 1 + + 5 28 6 2 + <_> + 9 + + 7 12 1 5 + <_> + 2 + + 3 17 6 7 + <_> + 3 + + 8 25 1 1 + <_> + 3 + + 2 22 1 2 + <_> + 3 + + 5 0 9 1 + <_> + 3 + + 3 0 6 13 + <_> + 3 + + 7 6 3 11 + <_> + 7 + + 8 1 7 14 + <_> + 5 + + 3 26 8 2 + <_> + 2 + + 7 12 6 15 + <_> + 0 + + 7 8 1 7 + <_> + 8 + + 14 0 1 3 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 1 30 2 1 + <_> + 7 + + 3 28 1 1 + <_> + 0 + + 5 25 4 1 + <_> + 3 + + 5 28 3 2 + <_> + 0 + + 9 12 3 19 + <_> + 3 + + 1 16 2 9 + <_> + 3 + + 11 24 3 1 + <_> + 1 + + 4 22 7 1 + <_> + 5 + + 10 7 2 20 + <_> + 0 + + 6 19 4 10 + <_> + 5 + + 4 28 9 2 + <_> + 5 + + 11 29 1 1 + <_> + 9 + + 1 0 14 3 + <_> + 9 + + 7 9 2 7 + <_> + 9 + + 8 13 2 5 + <_> + 4 + + 9 17 5 14 + <_> + 1 + + 7 27 8 2 + <_> + 4 + + 5 24 1 2 + <_> + 2 + + 5 18 6 10 + <_> + 7 + + 9 3 1 26 + <_> + 2 + + 8 16 2 3 + <_> + 8 + + 8 4 2 8 + <_> + 8 + + 6 6 1 2 + <_> + 8 + + 11 5 1 3 + <_> + 0 + + 3 29 5 2 + <_> + 4 + + 4 9 3 22 + <_> + 5 + + 10 19 3 1 + <_> + 1 + + 8 4 2 5 + <_> + 4 + + 7 4 3 1 + <_> + 4 + + 5 0 7 10 + <_> + 1 + + 5 9 6 4 + <_> + 0 + + 6 25 5 2 + <_> + 0 + + 4 8 2 2 + <_> + 5 + + 1 25 2 6 + <_> + 3 + + 3 9 4 6 + <_> + 7 + + 7 24 6 7 + <_> + 9 + + 6 20 1 3 + <_> + 8 + + 7 5 6 4 + <_> + 8 + + 1 10 14 3 + <_> + 2 + + 8 9 2 1 + <_> + 5 + + 8 5 3 4 + <_> + 8 + + 5 19 7 1 + <_> + 7 + + 6 3 4 1 + <_> + 5 + + 12 25 2 2 + <_> + 2 + + 7 14 6 12 + <_> + 2 + + 5 30 8 1 + <_> + 2 + + 3 26 8 2 + <_> + 2 + + 9 19 5 1 + <_> + 4 + + 9 13 2 11 + <_> + 1 + + 6 27 4 4 + <_> + 1 + + 6 4 2 6 + <_> + 8 + + 8 6 1 2 + <_> + 9 + + 5 0 5 3 + <_> + 8 + + 5 28 8 1 + <_> + 9 + + 6 12 3 2 + <_> + 1 + + 0 2 12 24 + <_> + 8 + + 6 11 3 4 + <_> + 4 + + 4 3 4 6 + <_> + 7 + + 4 3 1 1 + <_> + 1 + + 9 10 1 3 + <_> + 0 + + 7 28 1 3 + <_> + 0 + + 6 16 7 11 + <_> + 4 + + 1 22 5 4 + <_> + 0 + + 1 28 12 1 + <_> + 4 + + 5 12 8 15 + <_> + 4 + + 1 27 5 4 + <_> + 2 + + 6 18 4 11 + <_> + 3 + + 13 20 1 10 + <_> + 7 + + 5 29 6 1 + <_> + 1 + + 7 24 2 2 + <_> + 9 + + 3 3 10 2 + <_> + 0 + + 6 8 1 2 + <_> + 9 + + 4 9 4 2 + <_> + 5 + + 10 12 1 15 + <_> + 5 + + 10 7 1 7 + <_> + 5 + + 6 17 2 3 + <_> + 3 + + 2 21 7 6 + <_> + 3 + + 6 3 1 3 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 6 5 8 + <_> + 8 + + 7 9 2 1 + <_> + 5 + + 13 22 2 9 + <_> + 2 + + 6 25 4 2 + <_> + 7 + + 10 29 1 2 + <_> + 5 + + 5 29 8 1 + <_> + 5 + + 9 12 3 16 + <_> + 9 + + 6 16 4 2 + <_> + 7 + + 7 6 2 2 + <_> + 4 + + 7 0 2 18 + <_> + 2 + + 1 10 7 5 + <_> + 1 + + 4 10 5 1 + <_> + 0 + + 4 2 3 11 + <_> + 9 + + 11 17 1 1 + <_> + 3 + + 0 26 1 3 + <_> + 5 + + 4 1 3 5 + <_> + 0 + + 13 11 2 4 + <_> + 2 + + 8 23 2 3 + <_> + 4 + + 1 30 3 1 + <_> + 7 + + 5 30 2 1 + <_> + 3 + + 5 0 1 27 + <_> + 2 + + 9 24 4 6 + <_> + 5 + + 6 15 1 8 + <_> + 1 + + 5 26 6 2 + <_> + 0 + + 9 15 1 13 + <_> + 4 + + 3 20 10 1 + <_> + 4 + + 4 6 9 6 + <_> + 7 + + 2 1 5 5 + <_> + 2 + + 8 8 4 1 + <_> + 1 + + 6 12 3 1 + <_> + 0 + + 2 7 6 1 + <_> + 9 + + 12 2 1 4 + <_> + 8 + + 10 18 1 13 + <_> + 8 + + 6 5 4 2 + <_> + 0 + + 5 5 8 2 + <_> + 0 + + 7 0 5 14 + <_> + 4 + + 1 9 11 1 + <_> + 1 + + 0 4 14 6 + <_> + 0 + + 6 14 6 12 + <_> + 8 + + 7 3 1 5 + <_> + 0 + + 6 12 8 17 + <_> + 5 + + 5 28 6 1 + <_> + 5 + + 3 26 9 1 + <_> + 3 + + 6 5 4 2 + <_> + 3 + + 6 15 3 1 + <_> + 1 + + 9 8 3 14 + <_> + 7 + + 0 30 14 1 + <_> + 3 + + 4 6 11 5 + <_> + 7 + + 13 0 1 1 + <_> + 1 + + 11 25 2 6 + <_> + 3 + + 1 30 9 1 + <_> + 7 + + 4 27 5 1 + <_> + 5 + + 2 14 7 1 + <_> + 9 + + 3 13 5 6 + <_> + 5 + + 9 7 4 21 + <_> + 1 + + 6 4 2 6 + <_> + 0 + + 7 10 3 2 + <_> + 2 + + 3 12 4 14 + <_> + 9 + + 13 29 2 2 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 7 1 + <_> + 2 + + 4 28 11 1 + <_> + 4 + + 3 10 11 13 + <_> + 1 + + 5 27 6 4 + <_> + 5 + + 0 6 1 14 + <_> + 4 + + 6 29 1 1 + <_> + 2 + + 7 30 8 1 + <_> + 3 + + 3 9 3 18 + <_> + 4 + + 7 20 2 3 + <_> + 1 + + 4 15 8 4 + <_> + 2 + + 4 22 6 9 + <_> + 2 + + 3 28 5 2 + <_> + 0 + + 13 22 1 2 + <_> + 0 + + 9 17 5 3 + <_> + 8 + + 8 6 1 2 + <_> + 9 + + 5 9 5 1 + <_> + 8 + + 8 3 1 1 + <_> + 1 + + 10 9 1 2 + <_> + 1 + + 4 13 9 6 + <_> + 1 + + 6 11 6 1 + <_> + 5 + + 9 3 4 10 + <_> + 8 + + 12 20 1 5 + <_> + 5 + + 4 0 9 11 + <_> + 2 + + 7 8 4 2 + <_> + 2 + + 12 25 2 1 + <_> + 3 + + 1 6 3 5 + <_> + 2 + + 12 24 2 2 + <_> + 5 + + 6 26 7 2 + <_> + 3 + + 6 26 7 2 + <_> + 2 + + 6 10 3 1 + <_> + 8 + + 4 6 7 2 + <_> + 4 + + 0 10 4 13 + <_> + 4 + + 6 4 5 3 + <_> + 0 + + 2 30 5 1 + <_> + 3 + + 3 0 5 13 + <_> + 4 + + 5 0 3 24 + <_> + 1 + + 11 20 3 8 + <_> + 2 + + 3 12 1 7 + <_> + 9 + + 7 17 2 3 + <_> + 9 + + 7 3 3 4 + <_> + 5 + + 2 29 13 2 + <_> + 9 + + 0 29 7 2 + <_> + 0 + + 5 21 5 6 + <_> + 9 + + 7 7 2 7 + <_> + 0 + + 14 14 1 3 + <_> + 2 + + 8 26 6 5 + <_> + 5 + + 2 24 1 7 + <_> + 5 + + 10 10 4 9 + <_> + 2 + + 8 16 1 2 + <_> + 5 + + 1 11 13 14 + <_> + 2 + + 4 18 5 10 + <_> + 0 + + 4 8 2 2 + <_> + 2 + + 6 16 4 1 + <_> + 1 + + 5 28 6 1 + <_> + 5 + + 0 9 1 15 + <_> + 1 + + 9 22 1 2 + <_> + 0 + + 3 4 3 13 + <_> + 3 + + 6 25 6 4 + <_> + 4 + + 4 20 8 1 + <_> + 0 + + 7 19 4 9 + <_> + 9 + + 7 1 1 2 + <_> + 4 + + 7 17 4 2 + <_> + 1 + + 9 10 1 3 + <_> + 4 + + 9 7 1 4 + <_> + 8 + + 9 25 5 5 + <_> + 3 + + 0 18 7 11 + <_> + 1 + + 2 12 12 7 + <_> + 5 + + 5 7 7 1 + <_> + 8 + + 6 6 1 2 + <_> + 9 + + 7 13 1 7 + <_> + 4 + + 5 0 2 13 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 1 2 14 + <_> + 8 + + 6 8 3 2 + <_> + 1 + + 2 26 11 2 + <_> + 2 + + 11 28 2 1 + <_> + 1 + + 5 8 1 6 + <_> + 8 + + 9 26 1 4 + <_> + 1 + + 8 6 2 3 + <_> + 4 + + 2 24 12 2 + <_> + 2 + + 5 16 4 11 + <_> + 4 + + 8 14 5 17 + <_> + 0 + + 5 28 6 2 + <_> + 0 + + 9 16 2 10 + <_> + 7 + + 7 4 8 1 + <_> + 0 + + 7 10 3 17 + <_> + 3 + + 3 12 4 12 + <_> + 0 + + 7 7 3 5 + <_> + 7 + + 7 30 3 1 + <_> + 5 + + 0 21 3 2 + <_> + 5 + + 1 9 3 17 + <_> + 5 + + 1 8 14 3 + <_> + 4 + + 12 8 1 23 + <_> + 0 + + 4 28 10 2 + <_> + 5 + + 5 15 1 10 + <_> + 0 + + 6 18 6 10 + <_> + 2 + + 0 29 15 2 + <_> + 0 + + 10 19 4 4 + <_> + 8 + + 7 6 1 2 + <_> + 3 + + 13 23 2 5 + <_> + 8 + + 11 5 2 1 + <_> + 4 + + 7 18 2 2 + <_> + 3 + + 2 0 8 14 + <_> + 9 + + 5 22 2 1 + <_> + 9 + + 14 24 1 2 + <_> + 5 + + 11 13 1 18 + <_> + 5 + + 10 28 5 3 + <_> + 4 + + 5 29 7 1 + <_> + 1 + + 6 27 6 2 + <_> + 1 + + 13 5 1 9 + <_> + 7 + + 7 6 2 2 + <_> + 0 + + 3 3 2 3 + <_> + 2 + + 5 6 8 18 + <_> + 4 + + 6 23 4 6 + <_> + 0 + + 3 2 3 14 + <_> + 4 + + 6 19 2 2 + <_> + 3 + + 7 14 1 2 + <_> + 3 + + 10 12 4 3 + <_> + 0 + + 7 10 2 4 + <_> + 7 + + 3 19 1 12 + <_> + 2 + + 14 17 1 9 + <_> + 2 + + 7 8 5 3 + <_> + 5 + + 3 28 11 3 + <_> + 5 + + 10 9 3 6 + <_> + 7 + + 6 15 3 1 + <_> + 0 + + 12 8 2 4 + <_> + 5 + + 10 8 1 4 + <_> + 0 + + 10 9 1 1 + <_> + 8 + + 6 6 2 2 + <_> + 2 + + 3 1 12 3 + <_> + 9 + + 8 10 1 7 + <_> + 1 + + 4 27 5 1 + <_> + 2 + + 7 18 2 3 + <_> + 4 + + 0 30 8 1 + <_> + 1 + + 3 28 10 1 + <_> + 3 + + 7 16 4 1 + <_> + 7 + + 12 22 3 4 + <_> + 4 + + 3 14 7 14 + <_> + 1 + + 7 3 2 6 + <_> + 1 + + 2 30 10 1 + <_> + 0 + + 8 26 6 5 + <_> + 2 + + 9 9 4 1 + <_> + 5 + + 9 28 5 3 + <_> + 1 + + 3 10 10 1 + <_> + 3 + + 6 2 1 8 + <_> + 0 + + 1 10 2 3 + <_> + 7 + + 5 29 9 1 + <_> + 2 + + 7 8 3 9 + <_> + 3 + + 2 8 7 20 + <_> + 3 + + 13 23 2 6 + <_> + 3 + + 5 25 6 2 + <_> + 9 + + 0 0 4 1 + <_> + 8 + + 6 25 4 6 + <_> + 8 + + 7 7 3 1 + <_> + 1 + + 1 0 10 2 + <_> + 9 + + 7 14 3 3 + <_> + 7 + + 5 16 6 1 + <_> + 9 + + 6 19 3 1 + <_> + 0 + + 7 10 1 1 + <_> + 0 + + 6 5 3 4 + <_> + 1 + + 1 7 9 3 + <_> + 8 + + 6 5 4 2 + <_> + 3 + + 5 28 10 1 + <_> + 8 + + 10 7 2 4 + <_> + 4 + + 3 8 9 13 + <_> + 4 + + 8 3 1 17 + <_> + 1 + + 8 4 1 12 + <_> + 3 + + 2 19 1 11 + <_> + 3 + + 4 23 6 4 + <_> + 0 + + 6 15 3 1 + <_> + 0 + + 5 12 5 17 + <_> + 4 + + 4 6 8 19 + <_> + 2 + + 6 1 4 27 + <_> + 0 + + 5 11 9 1 + <_> + 1 + + 8 10 2 4 + <_> + 5 + + 12 25 3 6 + <_> + 5 + + 2 27 1 3 + <_> + 2 + + 3 25 7 3 + <_> + 1 + + 5 0 4 30 + <_> + 0 + + 4 25 1 5 + <_> + 4 + + 9 8 1 17 + <_> + 5 + + 3 18 1 4 + <_> + 1 + + 5 26 5 3 + <_> + 9 + + 5 9 5 2 + <_> + 1 + + 6 19 4 5 + <_> + 9 + + 8 28 5 1 + <_> + 5 + + 10 9 2 15 + <_> + 9 + + 6 3 3 22 + <_> + 4 + + 11 27 3 4 + <_> + 2 + + 5 1 2 4 + <_> + 7 + + 5 29 2 2 + <_> + 5 + + 8 3 2 4 + <_> + 2 + + 9 3 3 13 + <_> + 0 + + 6 10 3 2 + <_> + 0 + + 5 22 3 5 + <_> + 7 + + 6 3 4 1 + <_> + 0 + + 0 14 4 17 + <_> + 3 + + 3 5 4 9 + <_> + 7 + + 0 11 3 5 + <_> + 8 + + 7 7 3 1 + <_> + 2 + + 0 30 4 1 + <_> + 4 + + 0 18 12 13 + <_> + 0 + + 9 18 2 1 + <_> + 9 + + 7 8 1 13 + <_> + 9 + + 1 0 14 3 + <_> + 8 + + 4 12 3 2 + <_> + 2 + + 4 19 7 9 + <_> + 2 + + 4 15 1 8 + <_> + 3 + + 8 20 2 4 + <_> + 2 + + 8 6 4 4 + <_> + 5 + + 9 7 2 2 + <_> + 2 + + 0 28 14 2 + <_> + 5 + + 7 15 1 7 + <_> + 7 + + 0 15 7 3 + <_> + 3 + + 3 7 3 12 + <_> + 7 + + 5 30 9 1 + <_> + 2 + + 13 23 2 8 + <_> + 1 + + 8 24 6 6 + <_> + 4 + + 7 4 3 1 + <_> + 1 + + 7 4 2 4 + <_> + 1 + + 0 17 9 7 + <_> + 5 + + 2 30 6 1 + <_> + 2 + + 0 24 9 3 + <_> + 1 + + 6 11 6 1 + <_> + 1 + + 5 28 6 1 + <_> + 8 + + 2 17 1 4 + <_> + 0 + + 1 3 9 1 + <_> + 8 + + 6 5 4 2 + <_> + 7 + + 11 24 2 2 + <_> + 8 + + 14 18 1 7 + <_> + 7 + + 7 5 1 3 + <_> + 1 + + 5 25 4 1 + <_> + 2 + + 8 23 2 6 + <_> + 3 + + 5 11 3 17 + <_> + 3 + + 6 14 1 15 + <_> + 4 + + 4 6 9 6 + <_> + 4 + + 6 29 9 2 + <_> + 7 + + 11 27 3 1 + <_> + 9 + + 7 15 1 1 + <_> + 0 + + 1 28 14 2 + <_> + 0 + + 7 19 4 8 + <_> + 8 + + 5 6 7 8 + <_> + 1 + + 10 9 1 1 + <_> + 3 + + 4 19 9 2 + <_> + 1 + + 10 19 4 3 + <_> + 4 + + 7 20 4 1 + <_> + 3 + + 5 15 1 14 + <_> + 0 + + 5 5 6 3 + <_> + 2 + + 8 11 1 7 + <_> + 5 + + 10 10 3 4 + <_> + 0 + + 7 1 5 5 + <_> + 8 + + 7 6 1 2 + <_> + 3 + + 9 16 2 2 + <_> + 9 + + 8 15 1 2 + <_> + 1 + + 3 27 7 4 + <_> + 1 + + 11 24 1 1 + <_> + 4 + + 0 29 10 2 + <_> + 2 + + 3 24 8 4 + <_> + 0 + + 0 21 3 10 + <_> + 2 + + 4 28 9 2 + <_> + 0 + + 7 18 1 5 + <_> + 7 + + 8 7 2 1 + <_> + 7 + + 1 24 2 7 + <_> + 1 + + 7 6 5 3 + <_> + 7 + + 6 14 2 1 + <_> + 7 + + 4 27 1 4 + <_> + 8 + + 7 5 2 3 + <_> + 3 + + 13 14 1 6 + <_> + 8 + + 4 3 1 4 + <_> + 2 + + 11 10 1 8 + <_> + 1 + + 8 7 6 16 + <_> + 3 + + 0 8 11 13 + <_> + 3 + + 5 7 1 15 + <_> + 0 + + 5 20 3 2 + <_> + 3 + + 1 6 8 2 + <_> + 2 + + 4 9 4 1 + <_> + 0 + + 3 4 4 6 + <_> + 3 + + 8 2 1 3 + <_> + 1 + + 8 27 1 2 + <_> + 3 + + 14 21 1 4 + <_> + 4 + + 1 9 2 10 + <_> + 5 + + 9 12 3 15 + <_> + 7 + + 3 12 1 6 + <_> + 2 + + 9 30 5 1 + <_> + 3 + + 6 5 4 2 + <_> + 4 + + 9 20 1 11 + <_> + 4 + + 2 6 8 3 + <_> + 7 + + 4 24 1 7 + <_> + 0 + + 6 7 3 12 + <_> + 5 + + 6 26 5 2 + <_> + 5 + + 3 21 2 3 + <_> + 2 + + 3 20 7 2 + <_> + 4 + + 0 30 8 1 + <_> + 3 + + 1 27 10 4 + <_> + 2 + + 5 5 10 2 + <_> + 4 + + 12 22 3 3 + <_> + 9 + + 7 8 1 3 + <_> + 9 + + 7 1 2 6 + <_> + 8 + + 7 6 3 11 + <_> + 8 + + 8 29 3 1 + <_> + 1 + + 7 3 3 7 + <_> + 0 + + 9 19 1 12 + <_> + 4 + + 9 5 2 26 + <_> + 4 + + 9 9 4 13 + <_> + 4 + + 1 23 12 1 + <_> + 2 + + 8 10 1 5 + <_> + 5 + + 10 12 3 19 + <_> + 4 + + 7 11 2 14 + <_> + 0 + + 14 19 1 3 + <_> + 4 + + 5 9 10 3 + <_> + 4 + + 8 22 1 4 + <_> + 2 + + 4 3 6 23 + <_> + 2 + + 14 16 1 13 + <_> + 7 + + 3 19 1 12 + <_> + 5 + + 8 28 3 3 + <_> + 3 + + 5 0 9 1 + <_> + 0 + + 11 10 1 19 + <_> + 8 + + 7 5 2 3 + <_> + 4 + + 5 20 5 1 + <_> + 0 + + 6 21 5 7 + <_> + 3 + + 13 21 2 5 + <_> + 3 + + 1 7 4 8 + <_> + 8 + + 6 18 3 2 + <_> + 7 + + 7 6 2 2 + <_> + 1 + + 7 19 2 5 + <_> + 5 + + 11 8 3 22 + <_> + 1 + + 11 20 2 8 + <_> + 5 + + 11 1 1 20 + <_> + 4 + + 0 30 13 1 + <_> + 9 + + 1 29 7 2 + <_> + 9 + + 5 19 3 3 + <_> + 9 + + 5 6 5 5 + <_> + 8 + + 7 6 1 2 + <_> + 2 + + 5 19 4 11 + <_> + 4 + + 2 29 2 2 + <_> + 0 + + 7 10 3 2 + <_> + 1 + + 8 27 4 2 + <_> + 2 + + 7 8 4 2 + <_> + 0 + + 2 28 2 2 + <_> + 3 + + 2 12 5 3 + <_> + 3 + + 7 14 1 2 + <_> + 2 + + 6 18 3 4 + <_> + 0 + + 5 22 3 5 + <_> + 2 + + 5 1 5 27 + <_> + 0 + + 5 28 7 1 + <_> + 3 + + 5 26 8 2 + <_> + 7 + + 13 21 1 4 + <_> + 7 + + 9 17 1 1 + <_> + 7 + + 13 30 1 1 + <_> + 2 + + 11 4 1 16 + <_> + 5 + + 12 18 2 12 + <_> + 5 + + 8 9 5 4 + <_> + 5 + + 3 23 1 2 + <_> + 4 + + 0 9 4 7 + <_> + 2 + + 3 28 5 2 + <_> + 4 + + 9 8 1 17 + <_> + 3 + + 6 2 1 8 + <_> + 0 + + 6 4 1 6 + <_> + 0 + + 6 18 6 10 + <_> + 0 + + 2 2 11 2 + <_> + 4 + + 9 1 3 16 + <_> + 4 + + 7 4 5 4 + <_> + 4 + + 4 29 8 1 + <_> + 0 + + 6 7 6 10 + <_> + 7 + + 7 28 1 2 + <_> + 5 + + 3 26 7 2 + <_> + 7 + + 7 13 1 8 + <_> + 4 + + 5 20 8 1 + <_> + 1 + + 3 27 10 2 + <_> + 0 + + 0 8 9 1 + <_> + 4 + + 8 26 6 5 + <_> + 5 + + 4 24 1 7 + <_> + 2 + + 2 11 4 11 + <_> + 2 + + 6 21 5 7 + <_> + 8 + + 6 5 4 2 + <_> + 3 + + 3 7 2 11 + <_> + 8 + + 2 21 1 5 + <_> + 2 + + 5 8 1 1 + <_> + 9 + + 7 12 1 5 + <_> + 2 + + 6 9 4 2 + <_> + 8 + + 8 6 1 2 + <_> + 9 + + 12 24 2 5 + <_> + 8 + + 11 0 3 19 + <_> + 3 + + 0 26 4 3 + <_> + 3 + + 4 13 2 15 + <_> + 7 + + 8 19 1 1 + <_> + 2 + + 9 0 2 8 + <_> + 4 + + 7 3 2 18 + <_> + 9 + + 14 2 1 2 + <_> + 1 + + 6 22 4 2 + <_> + 5 + + 12 30 2 1 + <_> + 5 + + 10 20 1 6 + <_> + 2 + + 3 6 7 2 + <_> + 1 + + 6 11 5 2 + <_> + 3 + + 0 6 10 19 + <_> + 7 + + 6 29 1 2 + <_> + 3 + + 6 9 3 8 + <_> + 0 + + 2 12 10 7 + <_> + 2 + + 1 16 2 1 + <_> + 7 + + 1 15 8 1 + <_> + 4 + + 7 18 2 2 + <_> + 3 + + 6 5 9 3 + <_> + 5 + + 0 19 15 8 + <_> + 2 + + 1 25 8 3 + <_> + 2 + + 13 14 1 1 + <_> + 1 + + 13 3 2 12 + <_> + 7 + + 0 24 7 1 + <_> + 3 + + 0 28 15 2 + <_> + 1 + + 4 21 7 5 + <_> + 5 + + 5 14 1 10 + <_> + 1 + + 9 10 1 3 + <_> + 1 + + 1 7 14 5 + <_> + 8 + + 0 16 3 3 + <_> + 1 + + 5 9 1 2 + <_> + 4 + + 8 9 3 19 + <_> + 5 + + 3 21 2 9 + <_> + 0 + + 6 19 2 12 + <_> + 1 + + 5 17 6 3 + <_> + 3 + + 2 19 13 11 + <_> + 0 + + 9 9 1 2 + <_> + 5 + + 9 8 6 4 + <_> + 0 + + 3 8 4 1 + <_> + 1 + + 3 22 3 8 + <_> + 1 + + 2 19 3 4 + <_> + 5 + + 13 1 1 30 + <_> + 5 + + 5 19 7 6 + <_> + 2 + + 0 23 9 1 + <_> + 5 + + 6 17 3 1 + <_> + 4 + + 11 0 3 21 + <_> + 1 + + 2 4 12 5 + <_> + 5 + + 1 13 1 7 + <_> + 1 + + 4 3 5 1 + <_> + 5 + + 9 5 1 7 + <_> + 0 + + 7 18 4 2 + <_> + 5 + + 5 28 8 2 + <_> + 5 + + 3 26 7 2 + <_> + 8 + + 7 5 2 3 + <_> + 4 + + 1 30 8 1 + <_> + 4 + + 2 6 5 7 + <_> + 9 + + 7 1 1 2 + <_> + 9 + + 7 13 4 9 + <_> + 9 + + 3 3 10 3 + <_> + 1 + + 3 4 6 2 + <_> + 1 + + 5 28 6 1 + <_> + 4 + + 4 5 11 9 + <_> + 3 + + 2 16 1 11 + <_> + 0 + + 6 20 5 7 + <_> + 4 + + 10 1 1 8 + <_> + 3 + + 11 22 1 6 + <_> + 4 + + 5 12 6 17 + <_> + 5 + + 10 10 4 8 + <_> + 5 + + 2 1 5 13 + <_> + 5 + + 4 2 8 2 + <_> + 7 + + 2 21 12 2 + <_> + 8 + + 6 6 2 2 + <_> + 9 + + 7 12 1 5 + <_> + 0 + + 2 4 4 12 + <_> + 3 + + 2 15 2 12 + <_> + 2 + + 4 1 3 26 + <_> + 4 + + 0 4 13 4 + <_> + 5 + + 13 15 1 11 + <_> + 5 + + 4 0 9 11 + <_> + 5 + + 7 0 5 7 + <_> + 9 + + 6 19 2 5 + <_> + 1 + + 7 19 2 5 + <_> + 7 + + 2 11 11 2 + <_> + 1 + + 5 9 6 1 + <_> + 7 + + 7 29 2 2 + <_> + 2 + + 8 8 4 1 + <_> + 1 + + 4 27 8 1 + <_> + 4 + + 0 29 14 1 + <_> + 4 + + 8 7 4 8 + <_> + 7 + + 10 28 5 1 + <_> + 2 + + 8 16 1 2 + <_> + 3 + + 2 24 7 4 + <_> + 1 + + 11 15 3 8 + <_> + 5 + + 1 26 1 5 + <_> + 8 + + 3 27 8 2 + <_> + 2 + + 10 9 3 2 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 3 1 + <_> + 4 + + 3 10 12 3 + <_> + 7 + + 2 27 2 2 + <_> + 4 + + 3 24 8 2 + <_> + 3 + + 5 5 1 14 + <_> + 7 + + 6 12 3 2 + <_> + 8 + + 0 4 15 2 + <_> + 8 + + 10 3 2 1 + <_> + 4 + + 6 26 4 2 + <_> + 2 + + 7 11 2 3 + <_> + 4 + + 5 21 5 8 + <_> + 0 + + 5 5 6 3 + <_> + 5 + + 2 13 1 10 + <_> + 4 + + 4 0 6 22 + <_> + 1 + + 5 15 5 11 + <_> + 4 + + 8 3 1 17 + <_> + 2 + + 7 25 3 1 + <_> + 5 + + 6 28 7 2 + <_> + 5 + + 11 13 1 9 + <_> + 0 + + 9 14 3 11 + <_> + 2 + + 5 16 4 11 + <_> + 5 + + 3 15 7 12 + <_> + 5 + + 12 17 3 2 + <_> + 4 + + 7 18 2 2 + <_> + 1 + + 7 27 3 3 + <_> + 4 + + 7 12 3 3 + <_> + 8 + + 8 6 1 2 + <_> + 9 + + 5 16 1 5 + <_> + 8 + + 6 25 4 3 + <_> + 3 + + 6 20 1 5 + <_> + 4 + + 3 26 10 5 + <_> + 4 + + 7 21 3 2 + <_> + 3 + + 3 0 9 10 + <_> + 0 + + 3 9 5 1 + <_> + 3 + + 7 7 6 5 + <_> + 5 + + 3 30 11 1 + <_> + 2 + + 4 26 9 4 + <_> + 0 + + 0 29 9 1 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 9 5 2 1 + <_> + 9 + + 7 10 3 6 + <_> + 5 + + 8 5 5 10 + <_> + 7 + + 3 5 10 2 + <_> + 2 + + 14 22 1 4 + <_> + 9 + + 8 1 2 1 + <_> + 2 + + 4 9 4 1 + <_> + 8 + + 8 1 1 6 + <_> + 3 + + 2 9 7 5 + <_> + 4 + + 1 21 2 4 + <_> + 0 + + 8 9 2 1 + <_> + 8 + + 6 6 2 2 + <_> + 2 + + 6 18 5 10 + <_> + 8 + + 1 4 14 6 + <_> + 3 + + 6 9 3 12 + <_> + 3 + + 5 4 2 9 + <_> + 8 + + 6 12 5 2 + <_> + 9 + + 6 8 2 2 + <_> + 9 + + 1 5 14 11 + <_> + 5 + + 6 8 4 1 + <_> + 5 + + 6 4 4 3 + <_> + 0 + + 0 20 15 10 + <_> + 7 + + 0 27 6 1 + <_> + 2 + + 5 1 2 4 + <_> + 4 + + 8 23 1 1 + <_> + 9 + + 2 2 8 3 + <_> + 1 + + 3 28 8 1 + <_> + 2 + + 4 30 11 1 + <_> + 1 + + 4 3 5 1 + <_> + 0 + + 7 19 4 9 + <_> + 0 + + 13 24 1 5 + <_> + 3 + + 10 18 1 8 + <_> + 4 + + 1 9 14 2 + <_> + 1 + + 7 4 2 4 + <_> + 7 + + 9 27 3 4 + <_> + 1 + + 9 10 1 3 + <_> + 7 + + 14 0 1 26 + <_> + 5 + + 2 9 13 20 + <_> + 0 + + 7 11 2 3 + <_> + 3 + + 4 9 2 19 + <_> + 7 + + 3 16 1 4 + <_> + 5 + + 5 29 4 2 + <_> + 0 + + 3 25 9 5 + <_> + 3 + + 7 29 8 2 + <_> + 4 + + 3 11 9 14 + <_> + 4 + + 8 11 1 8 + <_> + 8 + + 6 21 4 4 + <_> + 3 + + 0 23 3 7 + <_> + 3 + + 3 23 4 4 + <_> + 5 + + 5 18 3 6 + <_> + 5 + + 8 2 5 10 + <_> + 7 + + 2 4 3 5 + <_> + 2 + + 4 10 7 1 + <_> + 3 + + 3 9 9 18 + <_> + 3 + + 5 28 6 1 + <_> + 4 + + 1 6 10 8 + <_> + 3 + + 0 0 5 26 + <_> + 2 + + 5 0 5 31 + <_> + 5 + + 10 25 2 1 + <_> + 2 + + 8 9 1 3 + <_> + 2 + + 3 24 6 4 + <_> + 8 + + 8 6 1 2 + <_> + 7 + + 2 5 8 4 + <_> + 8 + + 10 2 1 5 + <_> + 5 + + 2 7 2 16 + <_> + 0 + + 2 27 1 3 + <_> + 1 + + 1 17 4 2 + <_> + 9 + + 13 25 1 5 + <_> + 4 + + 7 3 2 2 + <_> + 8 + + 6 28 4 1 + <_> + 1 + + 1 10 14 12 + <_> + 3 + + 4 4 5 23 + <_> + 5 + + 1 16 10 8 + <_> + 2 + + 6 10 3 4 + <_> + 5 + + 7 21 5 5 + <_> + 5 + + 9 16 3 5 + <_> + 3 + + 14 24 1 6 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 6 5 8 + <_> + 8 + + 8 16 2 2 + <_> + 1 + + 4 27 10 1 + <_> + 1 + + 5 26 7 2 + <_> + 4 + + 5 20 8 1 + <_> + 9 + + 9 11 1 2 + <_> + 9 + + 8 1 2 1 + <_> + 8 + + 8 4 3 25 + <_> + 1 + + 6 28 5 1 + <_> + 8 + + 8 28 3 3 + <_> + 4 + + 6 29 4 1 + <_> + 4 + + 7 21 3 2 + <_> + 5 + + 10 18 1 11 + <_> + 2 + + 7 9 5 1 + <_> + 5 + + 0 21 3 6 + <_> + 2 + + 3 22 7 6 + <_> + 0 + + 6 10 3 2 + <_> + 2 + + 11 24 2 6 + <_> + 7 + + 14 17 1 13 + <_> + 8 + + 4 3 3 1 + <_> + 4 + + 5 3 6 6 + <_> + 5 + + 1 16 6 15 + <_> + 3 + + 3 29 5 2 + <_> + 0 + + 6 18 4 12 + <_> + 4 + + 10 0 3 13 + <_> + 0 + + 7 11 2 6 + <_> + 5 + + 3 10 12 3 + <_> + 1 + + 7 1 3 2 + <_> + 1 + + 4 26 6 3 + <_> + 4 + + 1 11 11 19 + <_> + 8 + + 7 5 2 3 + <_> + 3 + + 12 11 1 20 + <_> + 5 + + 12 30 2 1 + <_> + 0 + + 5 26 8 4 + <_> + 8 + + 11 21 4 1 + <_> + 1 + + 3 10 10 1 + <_> + 4 + + 7 1 4 18 + <_> + 2 + + 7 20 3 1 + <_> + 5 + + 5 28 4 2 + <_> + 0 + + 2 4 6 5 + <_> + 3 + + 5 7 2 3 + <_> + 9 + + 8 19 1 2 + <_> + 9 + + 5 6 5 1 + <_> + 7 + + 1 22 2 3 + <_> + 2 + + 14 14 1 13 + <_> + 1 + + 2 21 3 6 + <_> + 9 + + 14 1 1 6 + <_> + 1 + + 5 11 3 2 + <_> + 7 + + 14 4 1 22 + <_> + 0 + + 6 4 3 24 + <_> + 9 + + 7 9 2 7 + <_> + 9 + + 9 17 6 2 + <_> + 0 + + 7 10 1 1 + <_> + 3 + + 6 2 1 8 + <_> + 0 + + 5 6 1 6 + <_> + 3 + + 5 0 10 4 + <_> + 7 + + 2 30 11 1 + <_> + 1 + + 7 16 3 11 + <_> + 1 + + 9 10 2 7 + <_> + 2 + + 5 20 6 8 + <_> + 0 + + 10 8 2 2 + <_> + 3 + + 8 13 1 7 + <_> + 8 + + 7 7 3 1 + <_> + 0 + + 5 28 8 1 + <_> + 8 + + 8 3 1 2 + <_> + 0 + + 5 17 7 11 + <_> + 9 + + 11 6 2 1 + <_> + 4 + + 2 27 5 4 + <_> + 5 + + 8 28 3 3 + <_> + 1 + + 7 28 6 1 + <_> + 7 + + 7 20 1 1 + <_> + 4 + + 7 18 3 8 + <_> + 1 + + 11 21 2 8 + <_> + 2 + + 6 18 5 10 + <_> + 9 + + 6 18 1 2 + <_> + 4 + + 9 6 4 18 + <_> + 1 + + 12 23 1 7 + <_> + 7 + + 14 1 1 24 + <_> + 0 + + 4 8 2 2 + <_> + 1 + + 13 12 2 1 + <_> + 7 + + 0 27 10 1 + <_> + 3 + + 8 23 7 8 + <_> + 7 + + 7 13 3 1 + <_> + 8 + + 7 6 1 2 + <_> + 4 + + 9 9 6 3 + <_> + 8 + + 2 6 13 1 + <_> + 5 + + 8 3 5 12 + <_> + 2 + + 2 25 1 3 + <_> + 4 + + 6 2 5 6 + <_> + 3 + + 10 23 1 4 + <_> + 4 + + 5 26 5 2 + <_> + 3 + + 11 17 1 14 + <_> + 4 + + 3 12 10 9 + <_> + 4 + + 4 14 7 7 + <_> + 7 + + 11 11 2 5 + <_> + 4 + + 8 20 2 3 + <_> + 5 + + 7 19 5 9 + <_> + 4 + + 4 16 9 4 + <_> + 5 + + 2 28 1 2 + <_> + 3 + + 4 8 8 7 + <_> + 9 + + 8 13 1 1 + <_> + 0 + + 6 9 2 3 + <_> + 0 + + 5 5 5 3 + <_> + 5 + + 9 20 3 2 + <_> + 2 + + 8 30 6 1 + <_> + 3 + + 2 0 4 16 + <_> + 1 + + 11 19 2 5 + <_> + 9 + + 14 24 1 2 + <_> + 1 + + 4 27 6 3 + <_> + 9 + + 7 9 2 3 + <_> + 4 + + 6 22 4 3 + <_> + 3 + + 3 19 12 4 + <_> + 3 + + 4 12 2 15 + <_> + 3 + + 2 22 1 2 + <_> + 3 + + 4 10 2 13 + <_> + 9 + + 7 14 2 3 + <_> + 2 + + 6 10 3 1 + <_> + 9 + + 12 2 2 2 + <_> + 5 + + 4 3 6 1 + <_> + 3 + + 2 5 7 4 + <_> + 7 + + 12 14 1 9 + <_> + 1 + + 4 4 4 4 + <_> + 4 + + 9 28 5 3 + <_> + 1 + + 8 27 6 1 + <_> + 1 + + 11 23 2 2 + <_> + 7 + + 2 5 12 1 + <_> + 3 + + 1 12 7 11 + <_> + 9 + + 8 24 1 1 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 6 5 8 + <_> + 1 + + 10 9 1 2 + <_> + 9 + + 6 7 2 6 + <_> + 9 + + 3 3 10 3 + <_> + 8 + + 7 9 1 3 + <_> + 0 + + 6 21 5 7 + <_> + 5 + + 10 29 5 2 + <_> + 0 + + 13 27 2 4 + <_> + 9 + + 7 18 1 4 + <_> + 3 + + 3 21 6 4 + <_> + 2 + + 6 5 5 3 + <_> + 1 + + 5 10 4 3 + <_> + 0 + + 5 28 6 1 + <_> + 0 + + 11 15 2 2 + <_> + 7 + + 1 27 7 1 + <_> + 5 + + 10 11 2 1 + <_> + 1 + + 5 12 8 12 + <_> + 4 + + 7 0 2 18 + <_> + 3 + + 1 22 10 3 + <_> + 2 + + 3 5 8 25 + <_> + 5 + + 7 16 1 4 + <_> + 5 + + 9 5 2 12 + <_> + 4 + + 4 29 11 2 + <_> + 2 + + 9 1 2 2 + <_> + 2 + + 8 21 2 7 + <_> + 4 + + 7 27 1 4 + <_> + 8 + + 6 5 4 2 + <_> + 5 + + 1 12 3 6 + <_> + 8 + + 1 20 6 2 + <_> + 4 + + 7 17 4 2 + <_> + 1 + + 6 27 9 3 + <_> + 5 + + 13 1 1 23 + <_> + 9 + + 8 9 1 2 + <_> + 5 + + 11 30 4 1 + <_> + 9 + + 7 0 2 13 + <_> + 3 + + 5 2 1 29 + <_> + 7 + + 10 8 2 3 + <_> + 2 + + 4 29 2 2 + <_> + 3 + + 4 12 11 1 + <_> + 3 + + 1 13 12 4 + <_> + 0 + + 6 10 3 2 + <_> + 4 + + 2 9 5 2 + <_> + 1 + + 5 27 5 1 + <_> + 8 + + 6 22 2 1 + <_> + 3 + + 12 19 2 7 + <_> + 5 + + 8 16 4 12 + <_> + 9 + + 6 17 3 1 + <_> + 2 + + 6 14 8 10 + <_> + 4 + + 4 28 8 3 + <_> + 4 + + 4 16 9 12 + <_> + 0 + + 7 29 1 2 + <_> + 4 + + 3 28 11 3 + <_> + 4 + + 4 16 5 2 + <_> + 8 + + 8 6 1 2 + <_> + 2 + + 7 8 1 4 + <_> + 1 + + 12 24 2 7 + <_> + 1 + + 7 3 2 6 + <_> + 4 + + 7 4 3 1 + <_> + 2 + + 1 29 2 2 + <_> + 2 + + 2 24 6 7 + <_> + 5 + + 7 27 2 1 + <_> + 0 + + 5 4 10 4 + <_> + 1 + + 8 11 2 2 + <_> + 2 + + 4 20 6 7 + <_> + 8 + + 6 28 4 3 + <_> + 5 + + 8 28 3 2 + <_> + 3 + + 1 0 13 1 + <_> + 2 + + 3 15 3 2 + <_> + 1 + + 8 27 1 2 + <_> + 5 + + 1 22 1 4 + <_> + 4 + + 1 26 11 4 + <_> + 5 + + 9 0 3 20 + <_> + 7 + + 7 21 2 4 + <_> + 0 + + 7 14 2 3 + <_> + 0 + + 6 4 3 24 + <_> + 7 + + 7 6 2 2 + <_> + 2 + + 7 13 1 1 + <_> + 8 + + 6 6 2 2 + <_> + 0 + + 7 10 3 1 + <_> + 8 + + 12 15 1 10 + <_> + 9 + + 7 15 3 2 + <_> + 7 + + 6 16 5 1 + <_> + 1 + + 7 18 2 7 + <_> + 1 + + 7 23 2 6 + <_> + 9 + + 2 5 9 1 + <_> + 0 + + 8 3 4 3 + <_> + 3 + + 4 2 4 9 + <_> + 4 + + 6 21 5 3 + <_> + 2 + + 4 9 4 2 + <_> + 9 + + 13 17 1 5 + <_> + 2 + + 9 25 1 4 + <_> + 0 + + 10 28 2 3 + <_> + 1 + + 4 10 10 1 + <_> + 0 + + 7 9 6 17 + <_> + 0 + + 10 10 1 10 + <_> + 7 + + 5 29 9 1 + <_> + 3 + + 0 17 5 14 + <_> + 3 + + 3 1 11 1 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 7 6 2 5 + <_> + 8 + + 7 8 2 1 + <_> + 4 + + 2 12 11 11 + <_> + 2 + + 9 30 4 1 + <_> + 3 + + 9 0 6 14 + <_> + 3 + + 4 12 2 15 + <_> + 4 + + 1 30 4 1 + <_> + 0 + + 1 16 6 8 + <_> + 2 + + 4 25 9 3 + <_> + 3 + + 10 4 5 25 + <_> + 2 + + 8 16 1 2 + <_> + 1 + + 6 7 3 3 + <_> + 7 + + 9 12 1 1 + <_> + 4 + + 3 5 8 3 + <_> + 5 + + 8 5 5 7 + <_> + 1 + + 5 8 8 1 + <_> + 2 + + 3 27 4 3 + <_> + 7 + + 2 27 8 1 + <_> + 4 + + 0 27 13 2 + <_> + 2 + + 6 17 3 11 + <_> + 8 + + 8 6 1 2 + <_> + 0 + + 11 0 2 3 + <_> + 4 + + 1 3 11 5 + <_> + 0 + + 3 28 5 3 + <_> + 1 + + 7 15 4 7 + <_> + 1 + + 2 27 10 1 + <_> + 0 + + 6 18 4 9 + <_> + 1 + + 4 24 9 1 + <_> + 9 + + 14 8 1 8 + <_> + 2 + + 8 9 2 1 + <_> + 2 + + 8 1 4 29 + <_> + 2 + + 4 2 3 4 + <_> + 2 + + 5 5 6 3 + <_> + 7 + + 2 14 8 5 + <_> + 7 + + 9 30 1 1 + <_> + 9 + + 5 16 3 7 + <_> + 7 + + 3 13 7 13 + <_> + 2 + + 14 22 1 7 + <_> + 4 + + 8 26 7 2 + <_> + 0 + + 3 8 4 1 + <_> + 3 + + 7 25 6 5 + <_> + 1 + + 6 4 4 2 + <_> + 4 + + 7 3 2 2 + <_> + 4 + + 3 8 10 23 + <_> + 1 + + 7 9 5 1 + <_> + 1 + + 4 13 9 6 + <_> + 1 + + 5 28 6 1 + <_> + 5 + + 10 11 4 1 + <_> + 2 + + 6 5 1 3 + <_> + 5 + + 9 4 6 9 + <_> + 1 + + 5 11 4 3 + <_> + 7 + + 7 6 5 3 + <_> + 7 + + 11 26 1 5 + <_> + 8 + + 4 6 8 2 + <_> + 0 + + 4 12 2 10 + <_> + 8 + + 1 16 3 7 + <_> + 5 + + 9 14 3 13 + <_> + 1 + + 13 22 2 1 + <_> + 4 + + 1 29 14 2 + <_> + 1 + + 3 27 10 4 + <_> + 3 + + 3 30 1 1 + <_> + 2 + + 0 23 4 8 + <_> + 0 + + 6 25 5 2 + <_> + 5 + + 13 7 1 24 + <_> + 3 + + 2 5 6 9 + <_> + 0 + + 7 15 3 2 + <_> + 0 + + 9 0 3 31 + <_> + 0 + + 7 10 3 1 + <_> + 3 + + 13 19 1 3 + <_> + 4 + + 12 9 3 19 + <_> + 8 + + 7 6 3 4 + <_> + 9 + + 8 15 1 2 + <_> + 9 + + 0 1 15 4 + <_> + 1 + + 6 4 7 4 + <_> + 5 + + 6 28 4 1 + <_> + 0 + + 6 19 4 10 + <_> + 2 + + 4 18 5 1 + <_> + 4 + + 3 1 10 24 + <_> + 3 + + 1 9 6 16 + <_> + 1 + + 9 16 2 3 + <_> + 4 + + 1 30 8 1 + <_> + 1 + + 4 24 5 5 + <_> + 3 + + 0 10 1 21 + <_> + 8 + + 7 5 2 3 + <_> + 1 + + 2 19 1 2 + <_> + 9 + + 7 20 1 1 + <_> + 9 + + 10 28 5 2 + <_> + 1 + + 6 19 4 5 + <_> + 9 + + 7 5 2 21 + <_> + 2 + + 5 19 6 10 + <_> + 4 + + 3 29 5 1 + <_> + 0 + + 4 22 1 7 + <_> + 9 + + 8 9 1 2 + <_> + 9 + + 7 3 2 6 + <_> + 0 + + 10 16 1 2 + <_> + 7 + + 1 0 2 28 + <_> + 5 + + 6 26 7 2 + <_> + 3 + + 10 23 4 6 + <_> + 2 + + 1 29 2 2 + <_> + 0 + + 3 3 3 19 + <_> + 0 + + 2 11 7 1 + <_> + 5 + + 9 2 1 14 + <_> + 7 + + 13 19 2 1 + <_> + 3 + + 5 26 3 1 + <_> + 2 + + 12 26 1 5 + <_> + 5 + + 11 7 1 24 + <_> + 4 + + 5 24 1 2 + <_> + 4 + + 5 11 2 19 + <_> + 5 + + 5 0 1 6 + <_> + 7 + + 8 13 2 2 + <_> + 3 + + 6 5 1 6 + <_> + 9 + + 10 30 1 1 + <_> + 1 + + 8 25 2 4 + <_> + 2 + + 6 9 4 2 + <_> + 5 + + 12 10 3 13 + <_> + 5 + + 9 30 6 1 + <_> + 8 + + 7 6 1 2 + <_> + 4 + + 13 12 2 1 + <_> + 8 + + 5 4 6 3 + <_> + 7 + + 4 30 8 1 + <_> + 1 + + 7 16 3 10 + <_> + 0 + + 9 14 3 4 + <_> + 1 + + 5 10 7 2 + <_> + 4 + + 7 2 1 27 + <_> + 8 + + 0 9 3 20 + <_> + 1 + + 6 22 1 2 + <_> + 8 + + 7 5 2 3 + <_> + 3 + + 0 12 3 19 + <_> + 9 + + 4 8 8 3 + <_> + 9 + + 5 4 4 3 + <_> + 0 + + 4 10 1 1 + <_> + 1 + + 14 2 1 14 + <_> + 0 + + 2 18 11 3 + <_> + 5 + + 7 26 8 2 + <_> + 1 + + 10 15 1 3 + <_> + 1 + + 4 22 1 6 + <_> + 5 + + 2 5 10 22 + <_> + 4 + + 12 27 2 4 + <_> + 0 + + 1 29 14 1 + <_> + 5 + + 3 4 2 5 + <_> + 4 + + 4 9 3 9 + <_> + 7 + + 11 25 2 6 + <_> + 0 + + 4 0 1 1 + <_> + 9 + + 8 13 2 5 + <_> + 9 + + 4 15 11 16 + <_> + 5 + + 11 16 1 7 + <_> + 1 + + 3 28 10 1 + <_> + 3 + + 4 9 2 19 + <_> + 7 + + 1 27 13 2 + <_> + 1 + + 6 23 4 4 + <_> + 7 + + 14 4 1 17 + <_> + 9 + + 7 22 5 5 + <_> + 4 + + 6 15 5 1 + <_> + 5 + + 0 24 5 1 + <_> + 3 + + 5 11 8 2 + <_> + 2 + + 1 25 9 2 + <_> + 3 + + 12 3 2 20 + <_> + 5 + + 5 22 1 8 + <_> + 4 + + 6 4 4 5 + <_> + 3 + + 1 15 2 16 + <_> + 0 + + 2 19 8 12 + <_> + 1 + + 10 9 1 2 + <_> + 1 + + 4 3 5 8 + <_> + 8 + + 8 10 1 6 + <_> + 5 + + 2 0 7 2 + <_> + 2 + + 4 16 6 12 + <_> + 5 + + 7 11 1 18 + <_> + 2 + + 5 3 6 2 + <_> + 0 + + 5 5 5 3 + <_> + 2 + + 0 0 4 7 + <_> + 1 + + 4 10 6 4 + <_> + 1 + + 8 27 2 3 + <_> + 0 + + 9 15 2 12 + <_> + 1 + + 6 22 4 2 + <_> + 5 + + 12 28 2 3 + <_> + 8 + + 0 20 3 2 + <_> + 8 + + 6 6 2 2 + <_> + 9 + + 12 12 3 6 + <_> + 3 + + 4 1 5 12 + <_> + 0 + + 6 10 3 2 + <_> + 2 + + 4 15 5 16 + <_> + 0 + + 2 1 8 2 + <_> + 5 + + 3 29 10 1 + <_> + 2 + + 9 9 4 2 + <_> + 1 + + 13 4 2 5 + <_> + 4 + + 3 15 10 15 + <_> + 5 + + 2 8 11 5 + <_> + 5 + + 8 22 1 5 + <_> + 7 + + 4 5 6 1 + <_> + 7 + + 2 27 1 3 + <_> + 4 + + 7 12 1 12 + <_> + 2 + + 0 30 4 1 + <_> + 8 + + 8 4 7 9 + <_> + 2 + + 8 14 2 4 + <_> + 3 + + 3 10 2 1 + <_> + 3 + + 3 0 9 10 + <_> + 3 + + 14 0 1 1 + <_> + 2 + + 0 25 10 2 + <_> + 2 + + 8 7 2 4 + <_> + 8 + + 4 30 9 1 + <_> + 8 + + 7 5 2 3 + <_> + 5 + + 10 11 4 2 + <_> + 8 + + 6 8 3 2 + <_> + 9 + + 5 1 4 2 + <_> + 0 + + 7 8 1 9 + <_> + 9 + + 6 0 3 11 + <_> + 0 + + 4 7 2 4 + <_> + 3 + + 6 6 8 1 + <_> + 3 + + 1 7 12 20 + <_> + 4 + + 6 21 3 1 + <_> + 1 + + 11 19 2 10 + <_> + 3 + + 4 7 1 21 + <_> + 3 + + 13 21 2 9 + <_> + 3 + + 0 8 7 4 + <_> + 2 + + 7 24 2 3 + <_> + 5 + + 6 28 3 1 + <_> + 4 + + 8 18 1 2 + <_> + 0 + + 2 9 8 17 + <_> + 4 + + 9 8 3 12 + <_> + 1 + + 2 25 9 6 + <_> + 2 + + 6 24 5 4 + <_> + 9 + + 7 18 2 2 + <_> + 9 + + 3 3 10 3 + <_> + 8 + + 7 6 3 4 + <_> + 4 + + 1 29 9 2 + <_> + 1 + + 2 27 7 3 + <_> + 3 + + 3 28 6 2 + <_> + 0 + + 7 17 5 10 + <_> + 2 + + 13 2 1 28 + <_> + 3 + + 10 16 2 10 + <_> + 8 + + 7 1 2 2 + <_> + 8 + + 7 5 2 3 + <_> + 2 + + 9 30 4 1 + <_> + 0 + + 9 17 3 6 + <_> + 0 + + 0 20 1 10 + <_> + 0 + + 6 12 5 6 + <_> + 1 + + 8 27 6 2 + <_> + 5 + + 0 29 9 2 + <_> + 4 + + 9 20 5 11 + <_> + 2 + + 7 14 6 12 + <_> + 8 + + 10 24 1 1 + <_> + 2 + + 1 17 14 9 + <_> + 1 + + 10 9 1 2 + <_> + 4 + + 8 7 5 13 + <_> + 9 + + 1 28 10 2 + <_> + 4 + + 4 20 7 1 + <_> + 4 + + 8 4 1 8 + <_> + 2 + + 6 23 4 8 + <_> + 3 + + 5 9 1 14 + <_> + 1 + + 2 11 12 5 + <_> + 0 + + 7 10 3 7 + <_> + 8 + + 7 6 1 2 + <_> + 0 + + 4 28 11 2 + <_> + 9 + + 8 15 1 2 + <_> + 0 + + 0 13 4 16 + <_> + 3 + + 3 21 6 8 + <_> + 5 + + 12 15 1 4 + <_> + 1 + + 6 12 3 1 + <_> + 5 + + 10 3 4 6 + <_> + 2 + + 9 9 2 6 + <_> + 0 + + 0 3 8 10 + <_> + 1 + + 8 27 5 1 + <_> + 7 + + 5 11 1 1 + <_> + 0 + + 4 8 2 2 + <_> + 4 + + 7 3 2 2 + <_> + 3 + + 2 0 4 16 + <_> + 7 + + 3 28 2 1 + <_> + 5 + + 1 20 1 6 + <_> + 5 + + 9 9 5 4 + <_> + 5 + + 2 0 11 1 + <_> + 4 + + 3 13 7 17 + <_> + 4 + + 6 29 2 2 + <_> + 2 + + 6 0 4 9 + <_> + 7 + + 6 5 3 18 + <_> + 2 + + 6 10 5 2 + <_> + 3 + + 3 11 4 12 + <_> + 4 + + 8 29 5 2 + <_> + 4 + + 4 4 6 5 + <_> + 1 + + 8 27 1 2 + <_> + 5 + + 1 29 3 2 + <_> + 4 + + 8 1 6 18 + <_> + 5 + + 3 26 7 1 + <_> + 8 + + 13 27 1 2 + <_> + 3 + + 0 6 5 25 + <_> + 4 + + 6 22 4 3 + <_> + 1 + + 7 23 2 6 + <_> + 8 + + 6 5 4 2 + <_> + 9 + + 6 8 2 2 + <_> + 9 + + 4 2 7 5 + <_> + 8 + + 4 10 7 7 + <_> + 5 + + 2 30 13 1 + <_> + 7 + + 6 5 4 6 + <_> + 0 + + 5 24 6 4 + <_> + 2 + + 4 14 6 12 + <_> + 3 + + 14 22 1 3 + <_> + 5 + + 6 15 1 5 + <_> + 0 + + 5 26 6 2 + <_> + 9 + + 4 20 3 1 + <_> + 3 + + 11 24 3 1 + <_> + 5 + + 9 4 4 9 + <_> + 7 + + 6 3 4 1 + <_> + 4 + + 5 4 6 5 + <_> + 2 + + 3 8 3 1 + <_> + 8 + + 5 24 2 1 + <_> + 7 + + 10 9 1 2 + <_> + 4 + + 11 28 4 3 + <_> + 0 + + 2 5 5 4 + <_> + 2 + + 11 10 1 16 + <_> + 0 + + 9 3 3 2 + <_> + 4 + + 1 5 7 18 + <_> + 4 + + 5 25 6 3 + <_> + 3 + + 10 0 4 15 + <_> + 2 + + 9 9 2 6 + <_> + 3 + + 5 0 9 1 + <_> + 3 + + 9 21 6 1 + <_> + 0 + + 5 19 8 2 + <_> + 2 + + 11 21 3 1 + <_> + 3 + + 7 14 1 2 + <_> + 5 + + 8 11 5 11 + <_> + 2 + + 9 17 1 2 + <_> + 1 + + 4 28 8 1 + <_> + 5 + + 4 8 3 2 + <_> + 0 + + 12 26 1 1 + <_> + 1 + + 5 13 6 13 + <_> + 3 + + 4 10 2 13 + <_> + 1 + + 7 5 2 4 + <_> + 2 + + 4 29 10 1 + <_> + 4 + + 5 21 5 4 + <_> + 8 + + 8 6 1 2 + <_> + 2 + + 4 18 5 10 + <_> + 2 + + 14 17 1 14 + <_> + 9 + + 8 15 1 2 + <_> + 1 + + 4 4 7 4 + <_> + 4 + + 7 3 2 4 + <_> + 4 + + 11 29 4 2 + <_> + 1 + + 8 11 2 1 + <_> + 2 + + 1 30 12 1 + <_> + 2 + + 6 7 5 2 + <_> + 1 + + 1 27 9 4 + <_> + 5 + + 14 2 1 2 + <_> + 0 + + 2 27 1 3 + <_> + 9 + + 1 1 7 3 + <_> + 1 + + 4 4 4 4 + <_> + 9 + + 8 8 1 1 + <_> + 5 + + 10 7 1 7 + <_> + 7 + + 11 0 4 9 + <_> + 2 + + 7 11 4 2 + <_> + 2 + + 3 24 9 4 + <_> + 5 + + 9 19 4 8 + <_> + 5 + + 5 21 1 5 + <_> + 8 + + 7 5 2 3 + <_> + 0 + + 7 12 3 5 + <_> + 8 + + 10 4 1 4 + <_> + 9 + + 6 15 2 2 + <_> + 5 + + 9 17 4 10 + <_> + 4 + + 1 9 8 1 + <_> + 5 + + 4 28 11 3 + <_> + 0 + + 7 0 3 8 + <_> + 5 + + 10 25 1 2 + <_> + 2 + + 6 10 3 1 + <_> + 3 + + 2 10 6 3 + <_> + 4 + + 12 22 3 2 + <_> + 2 + + 5 18 5 10 + <_> + 3 + + 14 2 1 22 + <_> + 4 + + 13 7 2 13 + <_> + 1 + + 7 28 5 1 + <_> + 1 + + 5 27 2 1 + <_> + 8 + + 7 7 3 1 + <_> + 4 + + 6 17 8 14 + <_> + 3 + + 3 2 9 1 + <_> + 7 + + 1 22 2 2 + <_> + 2 + + 7 30 7 1 + <_> + 3 + + 7 8 3 2 + <_> + 5 + + 8 10 6 3 + <_> + 8 + + 1 30 2 1 + <_> + 3 + + 7 14 1 2 + <_> + 2 + + 8 20 1 6 + <_> + 0 + + 6 18 6 10 + <_> + 2 + + 9 13 4 1 + <_> + 3 + + 11 20 4 4 + <_> + 2 + + 8 16 1 2 + <_> + 5 + + 9 9 4 4 + <_> + 2 + + 7 14 6 1 + <_> + 2 + + 1 10 12 6 + <_> + 7 + + 8 17 1 5 + <_> + 5 + + 0 21 5 3 + <_> + 8 + + 5 6 3 1 + <_> + 9 + + 4 8 7 17 + <_> + 8 + + 2 3 2 5 + <_> + 5 + + 0 30 8 1 + <_> + 4 + + 2 12 8 10 + <_> + 4 + + 4 27 8 1 + <_> + 7 + + 7 30 1 1 + <_> + 5 + + 11 9 1 6 + <_> + 5 + + 3 26 9 1 + <_> + 1 + + 3 10 10 1 + <_> + 0 + + 2 3 3 14 + <_> + 8 + + 7 11 5 3 + <_> + 7 + + 1 30 4 1 + <_> + 3 + + 11 19 2 6 + <_> + 3 + + 4 29 4 2 + <_> + 0 + + 5 24 4 3 + <_> + 2 + + 2 10 1 14 + <_> + 2 + + 14 1 1 11 + <_> + 5 + + 7 2 4 6 + <_> + 7 + + 6 3 4 1 + <_> + 3 + + 1 0 13 1 + <_> + 7 + + 6 5 9 3 + <_> + 2 + + 1 25 8 3 + <_> + 2 + + 9 23 1 8 + <_> + 9 + + 7 12 1 5 + <_> + 8 + + 8 6 1 2 + <_> + 1 + + 6 7 3 3 + <_> + 1 + + 3 29 4 1 + <_> + 0 + + 14 19 1 10 + <_> + 4 + + 14 1 1 26 + <_> + 2 + + 0 28 14 2 + <_> + 2 + + 4 20 9 7 + <_> + 5 + + 7 16 2 5 + <_> + 8 + + 4 6 8 2 + <_> + 0 + + 5 7 10 2 + <_> + 8 + + 6 0 3 3 + <_> + 9 + + 1 0 14 3 + <_> + 5 + + 4 3 6 1 + <_> + 9 + + 1 7 8 19 + <_> + 1 + + 4 28 7 1 + <_> + 9 + + 7 8 1 3 + <_> + 2 + + 5 5 10 2 + <_> + 4 + + 1 29 7 2 + <_> + 1 + + 9 10 1 3 + <_> + 3 + + 4 11 3 1 + <_> + 3 + + 0 7 9 15 + <_> + 0 + + 4 8 2 1 + <_> + 3 + + 12 25 2 1 + <_> + 2 + + 9 30 6 1 + <_> + 3 + + 1 25 12 2 + <_> + 3 + + 6 22 4 6 + <_> + 3 + + 11 24 1 1 + <_> + 0 + + 5 17 7 3 + <_> + 1 + + 2 27 5 1 + <_> + 2 + + 4 9 4 1 + <_> + 5 + + 3 28 5 1 + <_> + 1 + + 4 20 3 1 + <_> + 2 + + 3 5 6 24 + <_> + 7 + + 8 0 1 31 + <_> + 4 + + 7 2 2 15 + <_> + 2 + + 6 13 3 2 + <_> + 3 + + 4 19 4 6 + <_> + 9 + + 14 13 1 2 + <_> + 8 + + 7 5 2 3 + <_> + 9 + + 0 27 1 2 + <_> + 4 + + 3 12 9 15 + <_> + 9 + + 7 15 1 2 + <_> + 5 + + 9 7 4 10 + <_> + 5 + + 11 16 1 7 + <_> + 0 + + 3 28 6 1 + <_> + 7 + + 2 28 12 1 + <_> + 1 + + 13 17 1 5 + <_> + 4 + + 1 9 11 1 + <_> + 4 + + 6 4 9 5 + <_> + 2 + + 2 1 5 1 + <_> + 4 + + 7 18 2 2 + <_> + 1 + + 5 14 7 6 + <_> + 4 + + 6 29 8 2 + <_> + 1 + + 7 28 4 1 + <_> + 9 + + 6 23 3 7 + <_> + 0 + + 10 8 2 2 + <_> + 0 + + 9 20 1 7 + <_> + 8 + + 7 5 1 10 + <_> + 0 + + 5 3 6 6 + <_> + 8 + + 13 18 1 1 + <_> + 2 + + 4 23 5 4 + <_> + 5 + + 1 29 12 1 + <_> + 4 + + 6 22 2 4 + <_> + 1 + + 9 21 5 5 + <_> + 7 + + 10 28 2 2 + <_> + 1 + + 12 22 1 9 + <_> + 8 + + 7 5 2 3 + <_> + 5 + + 1 13 1 7 + <_> + 3 + + 0 27 1 3 + <_> + 3 + + 3 4 6 16 + <_> + 4 + + 2 28 9 1 + <_> + 0 + + 7 10 3 2 + <_> + 7 + + 12 6 2 1 + <_> + 1 + + 8 4 3 6 + <_> + 5 + + 7 20 8 5 + <_> + 7 + + 2 21 4 2 + <_> + 5 + + 11 29 4 2 + <_> + 5 + + 2 5 11 20 + <_> + 3 + + 10 18 1 3 + <_> + 4 + + 4 4 5 4 + <_> + 1 + + 6 10 6 3 + <_> + 3 + + 4 16 8 6 + <_> + 8 + + 11 20 2 9 + <_> + 1 + + 3 27 8 3 + <_> + 7 + + 7 19 3 5 + <_> + 2 + + 0 23 6 1 + <_> + 7 + + 14 23 1 6 + <_> + 1 + + 5 20 6 4 + <_> + 3 + + 5 8 1 18 + <_> + 1 + + 5 9 1 2 + <_> + 4 + + 0 8 8 4 + <_> + 1 + + 1 20 7 1 + <_> + 2 + + 13 2 2 22 + <_> + 2 + + 9 5 5 8 + <_> + 5 + + 7 17 2 1 + <_> + 3 + + 10 23 1 4 + <_> + 5 + + 7 23 7 5 + <_> + 5 + + 14 24 1 2 + <_> + 0 + + 5 6 7 2 + <_> + 3 + + 9 20 6 10 + <_> + 4 + + 0 30 13 1 + <_> + 2 + + 2 23 10 5 + <_> + 2 + + 4 8 4 3 + <_> + 7 + + 4 29 10 2 + <_> + 9 + + 7 17 2 1 + <_> + 7 + + 2 16 9 2 + <_> + 3 + + 0 20 4 10 + <_> + 8 + + 8 6 1 2 + <_> + 2 + + 4 2 3 2 + <_> + 4 + + 6 2 5 6 + <_> + 7 + + 7 5 2 1 + <_> + 0 + + 7 12 5 16 + <_> + 5 + + 5 2 7 21 + <_> + 3 + + 3 0 6 13 + <_> + 0 + + 4 7 2 2 + <_> + 0 + + 7 10 2 4 + <_> + 1 + + 4 27 2 1 + <_> + 9 + + 4 24 1 1 + <_> + 4 + + 1 3 1 16 + <_> + 2 + + 8 28 1 3 + <_> + 1 + + 8 12 2 14 + <_> + 0 + + 8 3 1 25 + <_> + 3 + + 3 9 2 14 + <_> + 0 + + 7 7 1 12 + <_> + 0 + + 0 2 7 25 + <_> + 4 + + 7 11 1 8 + <_> + 5 + + 7 29 8 1 + <_> + 4 + + 13 16 1 3 + <_> + 4 + + 7 7 4 5 + <_> + 3 + + 2 1 10 3 + <_> + 1 + + 8 10 2 4 + <_> + 2 + + 5 18 6 10 + <_> + 2 + + 13 13 2 13 + <_> + 2 + + 6 16 3 1 + <_> + 4 + + 1 9 12 22 + <_> + 5 + + 1 10 11 6 + <_> + 1 + + 2 23 3 2 + <_> + 5 + + 4 28 5 3 + <_> + 7 + + 2 28 12 1 + <_> + 1 + + 7 28 4 1 + <_> + 7 + + 5 11 1 1 + <_> + 3 + + 2 5 6 9 + <_> + 2 + + 7 23 3 6 + <_> + 8 + + 6 6 2 2 + <_> + 5 + + 6 6 2 4 + <_> + 8 + + 4 3 3 1 + <_> + 0 + + 2 28 13 1 + <_> + 7 + + 9 25 5 3 + <_> + 1 + + 11 23 1 3 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 7 1 + <_> + 8 + + 5 19 6 3 + <_> + 1 + + 1 10 14 2 + <_> + 1 + + 5 7 6 1 + <_> + 3 + + 1 24 9 2 + <_> + 9 + + 8 11 1 9 + <_> + 9 + + 2 3 11 3 + <_> + 2 + + 8 23 7 1 + <_> + 2 + + 2 5 9 4 + <_> + 7 + + 8 21 3 1 + <_> + 2 + + 5 3 6 2 + <_> + 5 + + 9 11 5 4 + <_> + 2 + + 10 5 2 10 + <_> + 7 + + 4 27 6 4 + <_> + 1 + + 5 11 6 17 + <_> + 0 + + 9 29 2 1 + <_> + 4 + + 0 28 6 3 + <_> + 0 + + 7 19 3 7 + <_> + 7 + + 6 14 2 1 + <_> + 4 + + 10 15 4 1 + <_> + 9 + + 5 9 1 2 + <_> + 4 + + 5 2 3 5 + <_> + 8 + + 7 6 1 2 + <_> + 8 + + 9 30 6 1 + <_> + 8 + + 9 10 3 9 + <_> + 9 + + 10 29 5 1 + <_> + 3 + + 0 1 9 23 + <_> + 3 + + 3 9 3 8 + <_> + 5 + + 4 20 2 2 + <_> + 1 + + 7 28 3 1 + <_> + 2 + + 6 5 3 2 + <_> + 1 + + 6 21 3 5 + <_> + 3 + + 10 18 1 8 + <_> + 3 + + 4 19 6 8 + <_> + 1 + + 8 1 1 18 + <_> + 0 + + 7 10 3 1 + <_> + 7 + + 1 11 3 3 + <_> + 1 + + 6 2 2 1 + <_> + 0 + + 5 25 7 3 + <_> + 4 + + 12 5 2 1 + <_> + 3 + + 13 23 2 8 + <_> + 0 + + 5 5 6 3 + <_> + 9 + + 3 15 10 7 + <_> + 8 + + 8 6 1 2 + <_> + 7 + + 10 30 1 1 + <_> + 2 + + 10 29 3 2 + <_> + 4 + + 4 9 9 3 + <_> + 4 + + 5 4 7 3 + <_> + 3 + + 6 22 7 2 + <_> + 3 + + 5 3 1 28 + <_> + 5 + + 1 26 10 5 + <_> + 4 + + 7 20 3 4 + <_> + 2 + + 6 19 4 2 + <_> + 2 + + 5 19 4 11 + <_> + 3 + + 1 28 11 2 + <_> + 2 + + 2 20 2 4 + <_> + 3 + + 6 5 9 3 + <_> + 4 + + 9 7 4 24 + <_> + 3 + + 6 0 5 1 + <_> + 2 + + 8 10 1 5 + <_> + 5 + + 2 3 4 28 + <_> + 3 + + 2 0 9 2 + <_> + 4 + + 2 28 12 3 + <_> + 1 + + 11 22 3 8 + <_> + 9 + + 5 8 1 6 + <_> + 0 + + 4 8 2 2 + <_> + 7 + + 7 12 2 3 + <_> + 9 + + 7 14 4 15 + <_> + 1 + + 4 26 6 3 + <_> + 9 + + 5 9 5 2 + <_> + 8 + + 6 5 4 2 + <_> + 3 + + 0 28 9 1 + <_> + 2 + + 5 17 4 14 + <_> + 0 + + 7 19 3 7 + <_> + 4 + + 4 20 7 1 + <_> + 0 + + 10 14 3 9 + <_> + 9 + + 7 1 1 2 + <_> + 0 + + 13 15 1 8 + <_> + 0 + + 5 2 3 6 + <_> + 9 + + 8 13 2 5 + <_> + 1 + + 1 7 8 1 + <_> + 4 + + 7 3 2 2 + <_> + 4 + + 10 3 3 15 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 8 4 5 + <_> + 8 + + 7 9 2 1 + <_> + 4 + + 3 8 9 13 + <_> + 2 + + 7 30 8 1 + <_> + 2 + + 10 9 4 3 + <_> + 2 + + 4 18 10 10 + <_> + 4 + + 0 29 15 1 + <_> + 5 + + 13 16 1 14 + <_> + 1 + + 6 27 5 2 + <_> + 5 + + 0 15 3 16 + <_> + 4 + + 9 28 5 2 + <_> + 2 + + 1 26 10 2 + <_> + 5 + + 2 13 1 9 + <_> + 3 + + 7 14 2 2 + <_> + 3 + + 1 10 14 4 + <_> + 0 + + 11 9 4 11 + <_> + 3 + + 0 21 15 1 + <_> + 8 + + 6 25 4 6 + <_> + 8 + + 7 7 3 1 + <_> + 3 + + 1 29 13 2 + <_> + 4 + + 9 9 6 3 + <_> + 1 + + 4 15 8 4 + <_> + 4 + + 7 18 2 2 + <_> + 5 + + 6 16 3 3 + <_> + 2 + + 1 11 6 15 + <_> + 1 + + 7 7 4 3 + <_> + 5 + + 8 4 4 20 + <_> + 1 + + 7 9 5 1 + <_> + 5 + + 13 8 1 22 + <_> + 1 + + 14 5 1 9 + <_> + 2 + + 9 21 4 10 + <_> + 8 + + 11 2 1 4 + <_> + 0 + + 7 20 1 4 + <_> + 5 + + 1 29 7 2 + <_> + 5 + + 7 16 1 3 + <_> + 1 + + 6 12 3 1 + <_> + 5 + + 7 10 7 1 + <_> + 9 + + 13 5 1 2 + <_> + 1 + + 6 26 5 4 + <_> + 2 + + 14 6 1 24 + <_> + 1 + + 13 29 2 2 + <_> + 9 + + 5 21 3 1 + <_> + 9 + + 5 4 6 4 + <_> + 2 + + 8 4 4 23 + <_> + 5 + + 5 28 8 2 + <_> + 5 + + 10 5 2 25 + <_> + 5 + + 14 24 1 6 + <_> + 4 + + 8 9 4 18 + <_> + 0 + + 8 9 1 1 + <_> + 2 + + 11 9 1 6 + <_> + 0 + + 3 15 9 15 + <_> + 0 + + 0 13 1 14 + <_> + 3 + + 5 30 2 1 + <_> + 9 + + 7 17 2 1 + <_> + 2 + + 5 4 6 6 + <_> + 5 + + 10 17 4 9 + <_> + 8 + + 7 5 2 3 + <_> + 2 + + 5 1 2 4 + <_> + 7 + + 4 30 2 1 + <_> + 1 + + 7 4 2 4 + <_> + 7 + + 10 10 1 4 + <_> + 2 + + 7 0 7 10 + <_> + 4 + + 3 6 10 17 + <_> + 3 + + 3 7 5 7 + <_> + 7 + + 11 27 3 2 + <_> + 0 + + 1 3 13 1 + <_> + 0 + + 7 0 3 8 + <_> + 1 + + 0 8 13 1 + <_> + 1 + + 9 23 1 1 + <_> + 3 + + 7 5 2 13 + <_> + 5 + + 2 10 2 6 + <_> + 5 + + 5 23 9 2 + <_> + 0 + + 7 9 1 19 + <_> + 8 + + 3 29 9 2 + <_> + 2 + + 8 30 5 1 + <_> + 7 + + 4 3 4 8 + <_> + 1 + + 3 27 8 3 + <_> + 2 + + 5 26 8 2 + <_> + 0 + + 0 15 1 13 + <_> + 4 + + 7 30 8 1 + <_> + 4 + + 5 4 7 3 + <_> + 7 + + 2 4 4 1 + <_> + 5 + + 8 4 5 9 + <_> + 8 + + 7 6 1 2 + <_> + 9 + + 3 28 3 2 + <_> + 5 + + 0 10 7 2 + <_> + 9 + + 10 9 1 2 + <_> + 9 + + 4 0 3 4 + <_> + 5 + + 13 21 2 5 + <_> + 0 + + 11 2 1 12 + <_> + 1 + + 11 21 3 10 + <_> + 4 + + 9 17 1 4 + <_> + 3 + + 7 14 1 2 + <_> + 3 + + 6 4 2 24 + <_> + 9 + + 12 28 1 1 + <_> + 3 + + 14 21 1 9 + <_> + 7 + + 13 0 1 26 + <_> + 0 + + 9 24 3 2 + <_> + 0 + + 7 19 4 9 + <_> + 2 + + 13 1 1 30 + <_> + 3 + + 9 16 2 15 + <_> + 5 + + 10 11 4 15 + <_> + 1 + + 9 15 6 13 + <_> + 3 + + 1 5 6 19 + <_> + 5 + + 4 19 1 10 + <_> + 5 + + 3 25 11 2 + <_> + 7 + + 5 29 6 1 + <_> + 3 + + 11 23 1 2 + <_> + 0 + + 0 3 8 10 + <_> + 2 + + 3 8 3 1 + <_> + 1 + + 8 11 2 1 + <_> + 1 + + 9 4 6 10 + <_> + 4 + + 1 2 14 10 + <_> + 4 + + 5 25 6 3 + <_> + 1 + + 5 18 4 2 + <_> + 4 + + 3 24 6 6 + <_> + 2 + + 3 1 7 27 + <_> + 1 + + 1 8 11 22 + <_> + 3 + + 9 0 4 2 + <_> + 2 + + 3 29 6 1 + <_> + 3 + + 2 24 12 4 + <_> + 4 + + 1 10 5 16 + <_> + 1 + + 5 27 6 4 + <_> + 9 + + 7 9 2 3 + <_> + 5 + + 3 7 7 13 + <_> + 8 + + 5 6 7 1 + <_> + 8 + + 7 6 2 5 + <_> + 9 + + 6 10 2 3 + <_> + 1 + + 8 4 2 5 + <_> + 7 + + 7 13 2 6 + <_> + 8 + + 10 26 3 2 + <_> + 4 + + 8 23 1 1 + <_> + 0 + + 3 29 5 2 + <_> + 4 + + 6 18 2 5 + <_> + 7 + + 3 19 1 12 + <_> + 4 + + 0 29 9 2 + <_> + 4 + + 2 15 6 13 + <_> + 2 + + 8 9 2 1 + <_> + 5 + + 8 0 6 7 + <_> + 8 + + 7 11 5 3 + <_> + 2 + + 7 8 4 2 + <_> + 1 + + 6 10 2 1 + <_> + 5 + + 10 4 4 4 + <_> + 4 + + 7 7 4 5 + <_> + 1 + + 2 24 3 1 + <_> + 4 + + 10 9 5 10 + <_> + 5 + + 2 21 1 10 + <_> + 3 + + 4 9 2 19 + <_> + 0 + + 0 2 1 28 + <_> + 2 + + 7 20 4 8 + <_> + 0 + + 7 10 3 1 + <_> + 5 + + 8 28 5 1 + <_> + 8 + + 8 6 1 2 + <_> + 5 + + 10 8 1 5 + <_> + 8 + + 8 3 1 1 + <_> + 7 + + 7 5 1 3 + <_> + 7 + + 0 27 15 1 + <_> + 3 + + 3 5 11 9 + <_> + 0 + + 13 15 2 1 + <_> + 0 + + 8 13 6 4 + <_> + 1 + + 9 28 1 1 + <_> + 9 + + 7 12 5 6 + <_> + 9 + + 6 2 1 5 + <_> + 7 + + 2 7 11 7 + <_> + 0 + + 1 17 1 14 + <_> + 0 + + 5 4 1 15 + <_> + 4 + + 1 29 12 1 + <_> + 2 + + 4 23 6 5 + <_> + 4 + + 3 8 1 17 + <_> + 2 + + 7 15 2 1 + <_> + 1 + + 3 28 7 1 + <_> + 8 + + 7 6 1 2 + <_> + 5 + + 9 1 1 12 + <_> + 1 + + 5 1 6 30 + <_> + 3 + + 5 1 1 30 + <_> + 3 + + 11 24 4 3 + <_> + 1 + + 4 10 7 4 + <_> + 4 + + 7 0 1 22 + <_> + 7 + + 4 27 11 2 + <_> + 2 + + 8 30 6 1 + <_> + 4 + + 3 20 10 5 + <_> + 0 + + 10 13 5 5 + <_> + 9 + + 7 7 1 8 + <_> + 7 + + 7 15 3 1 + <_> + 8 + + 1 10 14 3 + <_> + 1 + + 4 6 4 4 + <_> + 4 + + 1 6 6 3 + <_> + 0 + + 3 28 4 1 + <_> + 1 + + 5 27 4 2 + <_> + 5 + + 13 19 1 9 + <_> + 4 + + 1 9 14 2 + <_> + 2 + + 5 18 5 10 + <_> + 5 + + 14 0 1 7 + <_> + 4 + + 3 3 4 14 + <_> + 3 + + 4 29 5 2 + <_> + 2 + + 6 5 5 3 + <_> + 1 + + 3 8 9 1 + <_> + 4 + + 7 18 2 2 + <_> + 1 + + 4 13 9 6 + <_> + 1 + + 7 16 5 1 + <_> + 4 + + 12 27 2 4 + <_> + 2 + + 1 26 10 2 + <_> + 4 + + 7 12 2 11 + <_> + 0 + + 7 10 1 1 + <_> + 5 + + 9 9 5 4 + <_> + 8 + + 14 20 1 1 + <_> + 3 + + 1 22 2 7 + <_> + 3 + + 3 9 4 6 + <_> + 4 + + 6 22 4 4 + <_> + 5 + + 11 30 3 1 + <_> + 3 + + 4 22 3 4 + <_> + 5 + + 2 26 11 1 + <_> + 3 + + 6 15 3 1 + <_> + 0 + + 5 5 5 1 + <_> + 0 + + 6 12 4 15 + <_> + 2 + + 3 3 3 1 + <_> + 4 + + 2 9 10 20 + <_> + 4 + + 2 4 9 3 + <_> + 7 + + 8 20 1 4 + <_> + 7 + + 13 22 2 6 + <_> + 2 + + 6 1 4 27 + <_> + 3 + + 1 28 9 1 + <_> + 1 + + 3 11 9 7 + <_> + 8 + + 0 18 4 3 + <_> + 8 + + 6 6 2 2 + <_> + 9 + + 13 7 1 1 + <_> + 4 + + 6 2 3 17 + <_> + 9 + + 7 7 1 15 + <_> + 0 + + 6 22 6 6 + <_> + 9 + + 12 17 1 2 + <_> + 5 + + 14 24 1 2 + <_> + 7 + + 1 30 3 1 + <_> + 5 + + 8 10 2 5 + <_> + 8 + + 7 5 2 3 + <_> + 4 + + 9 14 2 5 + <_> + 8 + + 7 0 1 3 + <_> + 2 + + 10 5 2 10 + <_> + 5 + + 10 10 4 5 + <_> + 0 + + 6 0 7 8 + <_> + 1 + + 6 12 3 1 + <_> + 7 + + 2 11 6 10 + <_> + 4 + + 9 10 6 2 + <_> + 7 + + 1 30 3 1 + <_> + 3 + + 14 22 1 8 + <_> + 2 + + 6 2 3 7 + <_> + 2 + + 0 28 15 2 + <_> + 0 + + 6 16 7 11 + <_> + 1 + + 8 20 7 5 + <_> + 3 + + 10 18 1 8 + <_> + 4 + + 0 12 3 3 + <_> + 1 + + 7 4 2 4 + <_> + 8 + + 8 5 4 2 + <_> + 2 + + 5 1 2 4 + <_> + 8 + + 10 7 4 1 + <_> + 1 + + 3 26 8 5 + <_> + 7 + + 8 20 1 2 + <_> + 4 + + 1 0 10 23 + <_> + 4 + + 7 3 2 2 + <_> + 0 + + 0 23 4 6 + <_> + 5 + + 7 21 6 7 + <_> + 4 + + 0 30 13 1 + <_> + 1 + + 4 27 10 1 + <_> + 9 + + 6 9 4 4 + <_> + 8 + + 6 1 4 10 + <_> + 9 + + 14 19 1 1 + <_> + 9 + + 6 3 4 19 + <_> + 0 + + 8 9 1 1 + <_> + 3 + + 5 6 4 4 + <_> + 9 + + 8 15 1 3 + <_> + 0 + + 4 27 1 1 + <_> + 2 + + 5 25 4 3 + <_> + 1 + + 8 10 2 4 + <_> + 0 + + 3 9 3 1 + <_> + 7 + + 6 12 3 2 + <_> + 0 + + 0 15 4 13 + <_> + 2 + + 8 30 6 1 + <_> + 2 + + 8 20 3 11 + <_> + 0 + + 7 20 4 1 + <_> + 3 + + 2 0 9 2 + <_> + 0 + + 5 5 5 3 + <_> + 2 + + 6 10 4 4 + <_> + 4 + + 6 17 4 7 + <_> + 4 + + 8 6 3 17 + <_> + 1 + + 6 18 5 7 + <_> + 1 + + 5 28 6 1 + <_> + 7 + + 10 0 5 1 + <_> + 1 + + 13 6 2 8 + <_> + 4 + + 11 23 4 6 + <_> + 3 + + 5 12 2 15 + <_> + 3 + + 12 23 3 7 + <_> + 0 + + 7 10 3 1 + <_> + 0 + + 2 13 5 5 + <_> + 9 + + 0 0 4 1 + <_> + 2 + + 5 1 2 4 + <_> + 3 + + 9 20 3 2 + <_> + 4 + + 1 29 7 2 + <_> + 5 + + 2 3 9 11 + <_> + 3 + + 0 26 4 5 + <_> + 2 + + 0 11 1 5 + <_> + 0 + + 5 26 5 2 + <_> + 1 + + 8 12 1 3 + <_> + 0 + + 1 28 8 3 + <_> + 8 + + 7 6 1 2 + <_> + 9 + + 6 14 3 5 + <_> + 8 + + 13 7 2 21 + <_> + 2 + + 5 15 4 11 + <_> + 0 + + 9 26 6 2 + <_> + 5 + + 5 17 4 5 + <_> + 2 + + 10 0 3 22 + <_> + 7 + + 3 22 7 1 + <_> + 2 + + 8 2 7 7 + <_> + 3 + + 3 7 3 12 + <_> + 7 + + 8 5 1 1 + <_> + 3 + + 3 2 2 6 + <_> + 8 + + 5 6 3 1 + <_> + 0 + + 6 18 5 4 + <_> + 5 + + 9 29 6 2 + <_> + 4 + + 11 15 2 5 + <_> + 1 + + 8 27 2 1 + <_> + 4 + + 5 19 1 1 + <_> + 1 + + 7 9 5 1 + <_> + 4 + + 7 8 4 1 + <_> + 7 + + 4 28 5 1 + <_> + 4 + + 6 22 4 3 + <_> + 1 + + 7 15 2 14 + <_> + 5 + + 2 27 1 3 + <_> + 9 + + 7 15 1 2 + <_> + 9 + + 1 1 14 7 + <_> + 3 + + 12 19 3 9 + <_> + 5 + + 3 26 7 2 + <_> + 2 + + 1 0 4 11 + <_> + 1 + + 5 12 7 10 + <_> + 3 + + 1 6 8 4 + <_> + 2 + + 11 9 1 6 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 2 9 2 1 + <_> + 8 + + 5 10 5 6 + <_> + 8 + + 5 9 3 3 + <_> + 3 + + 2 28 8 3 + <_> + 7 + + 3 27 10 1 + <_> + 2 + + 4 29 6 1 + <_> + 5 + + 0 19 2 7 + <_> + 5 + + 10 8 2 17 + <_> + 2 + + 13 25 1 1 + <_> + 1 + + 9 10 1 3 + <_> + 4 + + 8 5 3 8 + <_> + 3 + + 5 21 4 7 + <_> + 4 + + 7 17 4 2 + <_> + 5 + + 7 30 4 1 + <_> + 8 + + 3 24 8 3 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 7 1 + <_> + 1 + + 0 13 8 18 + <_> + 5 + + 8 5 5 10 + <_> + 1 + + 6 9 7 6 + <_> + 4 + + 7 0 2 20 + <_> + 2 + + 8 16 1 1 + <_> + 2 + + 5 16 4 11 + <_> + 2 + + 8 10 1 5 + <_> + 5 + + 8 28 4 1 + <_> + 3 + + 7 26 7 1 + <_> + 2 + + 6 9 4 2 + <_> + 7 + + 8 5 4 3 + <_> + 7 + + 13 19 2 9 + <_> + 0 + + 1 9 3 5 + <_> + 3 + + 3 11 5 14 + <_> + 1 + + 3 17 7 9 + <_> + 3 + + 0 21 2 8 + <_> + 2 + + 8 26 4 1 + <_> + 0 + + 13 15 1 14 + <_> + 7 + + 7 27 7 1 + <_> + 4 + + 3 26 6 2 + <_> + 2 + + 3 29 6 1 + <_> + 4 + + 8 18 1 2 + <_> + 1 + + 7 3 5 5 + <_> + 4 + + 6 3 3 2 + <_> + 4 + + 0 27 5 4 + <_> + 5 + + 6 28 4 1 + <_> + 7 + + 5 7 10 2 + <_> + 1 + + 9 27 1 2 + <_> + 0 + + 7 19 3 7 + <_> + 7 + + 11 11 1 1 + <_> + 4 + + 6 7 1 16 + <_> + 7 + + 6 9 3 1 + <_> + 5 + + 4 28 11 3 + <_> + 7 + + 7 5 6 3 + <_> + 2 + + 0 25 10 2 + <_> + 4 + + 12 4 2 17 + <_> + 9 + + 6 19 5 2 + <_> + 8 + + 6 6 2 2 + <_> + 4 + + 6 21 3 2 + <_> + 2 + + 5 5 10 2 + <_> + 5 + + 2 0 7 2 + <_> + 5 + + 9 4 4 9 + <_> + 2 + + 6 10 4 4 + <_> + 0 + + 10 8 2 2 + <_> + 0 + + 9 6 4 3 + <_> + 2 + + 2 18 9 11 + <_> + 4 + + 3 9 12 2 + <_> + 4 + + 3 11 4 9 + <_> + 0 + + 6 13 3 4 + <_> + 1 + + 5 27 10 1 + <_> + 2 + + 8 28 5 1 + <_> + 8 + + 1 11 6 1 + <_> + 9 + + 7 9 2 7 + <_> + 8 + + 0 17 14 7 + <_> + 0 + + 7 10 1 1 + <_> + 0 + + 5 3 1 20 + <_> + 0 + + 4 6 1 19 + <_> + 4 + + 6 23 4 6 + <_> + 2 + + 6 5 1 3 + <_> + 5 + + 3 29 3 2 + <_> + 1 + + 8 4 5 20 + <_> + 1 + + 5 28 7 1 + <_> + 8 + + 0 3 4 23 + <_> + 4 + + 5 28 7 3 + <_> + 2 + + 5 25 5 2 + <_> + 5 + + 2 3 1 6 + <_> + 3 + + 9 8 2 1 + <_> + 3 + + 4 12 2 8 + <_> + 2 + + 14 12 1 15 + <_> + 5 + + 10 10 5 9 + <_> + 5 + + 10 3 4 6 + <_> + 4 + + 3 9 3 9 + <_> + 1 + + 7 6 2 10 + <_> + 4 + + 4 6 9 6 + <_> + 3 + + 4 18 11 11 + <_> + 1 + + 8 10 2 4 + <_> + 2 + + 10 8 3 4 + <_> + 7 + + 1 30 3 1 + <_> + 2 + + 12 12 2 19 + <_> + 5 + + 3 19 9 3 + <_> + 0 + + 4 9 1 6 + <_> + 5 + + 5 21 1 4 + <_> + 3 + + 2 12 9 9 + <_> + 0 + + 6 19 4 10 + <_> + 5 + + 10 26 1 3 + <_> + 0 + + 6 15 2 3 + <_> + 1 + + 11 22 2 8 + <_> + 9 + + 2 22 1 2 + <_> + 5 + + 12 30 3 1 + <_> + 2 + + 6 0 7 16 + <_> + 3 + + 8 21 2 1 + <_> + 7 + + 5 10 1 4 + <_> + 7 + + 3 5 1 1 + <_> + 1 + + 4 6 7 3 + <_> + 5 + + 5 1 1 2 + <_> + 4 + + 7 3 2 2 + <_> + 0 + + 7 18 4 2 + <_> + 9 + + 8 15 1 2 + <_> + 2 + + 4 20 9 4 + <_> + 8 + + 5 5 6 6 + <_> + 3 + + 4 28 7 2 + <_> + 5 + + 1 20 1 6 + <_> + 2 + + 2 26 7 1 + <_> + 0 + + 5 15 7 13 + <_> + 2 + + 9 3 4 1 + <_> + 9 + + 5 3 7 4 + <_> + 2 + + 1 23 7 6 + <_> + 4 + + 5 2 7 8 + <_> + 4 + + 10 14 4 2 + <_> + 3 + + 6 3 5 4 + <_> + 9 + + 13 30 2 1 + <_> + 3 + + 7 12 2 5 + <_> + 1 + + 6 26 5 4 + <_> + 7 + + 7 19 2 4 + <_> + 1 + + 6 29 5 2 + <_> + 5 + + 3 10 11 5 + <_> + 9 + + 9 21 3 10 + <_> + 2 + + 12 28 3 2 + <_> + 4 + + 3 0 5 18 + <_> + 5 + + 6 0 7 4 + <_> + 5 + + 0 29 14 2 + <_> + 5 + + 1 4 6 10 + <_> + 4 + + 8 22 1 4 + <_> + 3 + + 8 9 7 12 + <_> + 9 + + 6 16 4 2 + <_> + 8 + + 8 6 1 2 + <_> + 3 + + 0 14 3 15 + <_> + 2 + + 7 20 3 1 + <_> + 8 + + 1 29 13 2 + <_> + 3 + + 0 3 4 23 + <_> + 7 + + 2 5 8 4 + <_> + 2 + + 8 16 1 2 + <_> + 0 + + 6 22 2 5 + <_> + 3 + + 1 3 11 12 + <_> + 5 + + 0 15 15 9 + <_> + 9 + + 14 1 1 4 + <_> + 0 + + 7 10 3 1 + <_> + 1 + + 3 28 10 1 + <_> + 4 + + 0 29 10 1 + <_> + 0 + + 8 26 7 3 + <_> + 0 + + 6 24 4 4 + <_> + 1 + + 0 23 15 2 + <_> + 3 + + 2 0 9 2 + <_> + 8 + + 7 5 2 3 + <_> + 9 + + 6 20 9 2 + <_> + 5 + + 7 23 7 5 + <_> + 7 + + 6 0 5 1 + <_> + 5 + + 2 30 6 1 + <_> + 3 + + 5 5 1 14 + <_> + 4 + + 2 8 1 11 + <_> + 0 + + 1 2 7 20 + <_> + 4 + + 3 6 2 8 + <_> + 5 + + 4 16 5 7 + <_> + 0 + + 6 18 6 10 + <_> + 3 + + 9 20 2 9 + <_> + 0 + + 8 27 7 2 + <_> + 4 + + 9 20 4 1 + <_> + 2 + + 5 14 6 15 + <_> + 7 + + 3 4 10 10 + <_> + 5 + + 1 18 14 13 + <_> + 1 + + 6 11 6 1 + <_> + 1 + + 7 14 6 3 + <_> + 9 + + 6 11 3 4 + <_> + 0 + + 2 27 1 3 + <_> + 5 + + 9 4 1 11 + <_> + 2 + + 3 25 8 2 + <_> + 4 + + 4 12 6 13 + <_> + 1 + + 7 23 2 6 + <_> + 1 + + 5 15 6 2 + <_> + 2 + + 10 19 1 10 + <_> + 2 + + 5 25 4 3 + <_> + 5 + + 9 5 4 13 + <_> + 1 + + 7 3 2 6 + <_> + 4 + + 4 28 8 2 + <_> + 0 + + 7 11 1 5 + <_> + 8 + + 8 6 1 2 + <_> + 1 + + 7 1 3 2 + <_> + 8 + + 10 4 1 4 + <_> + 3 + + 5 27 10 3 + <_> + 7 + + 2 28 9 1 + <_> + 2 + + 7 17 3 5 + <_> + 4 + + 0 30 5 1 + <_> + 2 + + 8 11 1 7 + <_> + 9 + + 6 16 1 3 + <_> + 9 + + 2 0 11 1 + <_> + 0 + + 6 3 5 1 + <_> + 0 + + 5 5 6 3 + <_> + 0 + + 7 29 1 2 + <_> + 5 + + 2 18 11 3 + <_> + 2 + + 3 8 3 1 + <_> + 3 + + 5 0 1 27 + <_> + 7 + + 12 11 2 1 + <_> + 5 + + 1 28 9 3 + <_> + 0 + + 6 19 2 12 + <_> + 2 + + 8 28 5 1 + <_> + 3 + + 0 5 3 23 + <_> + 4 + + 7 18 2 2 + <_> + 1 + + 4 17 8 2 + <_> + 4 + + 6 29 5 2 + <_> + 0 + + 4 7 2 4 + <_> + 9 + + 7 1 1 2 + <_> + 2 + + 10 0 1 19 + <_> + 9 + + 8 15 1 7 + <_> + 4 + + 6 22 4 3 + <_> + 1 + + 7 3 2 6 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 6 1 4 + <_> + 8 + + 1 10 1 6 + <_> + 1 + + 6 12 3 1 + <_> + 1 + + 3 3 7 3 + <_> + 8 + + 7 28 3 3 + <_> + 4 + + 9 18 2 4 + <_> + 1 + + 9 18 4 11 + <_> + 4 + + 6 21 4 1 + <_> + 5 + + 9 9 4 20 + <_> + 2 + + 13 21 2 5 + <_> + 0 + + 13 21 2 1 + <_> + 5 + + 6 28 5 2 + <_> + 2 + + 1 26 10 2 + <_> + 1 + + 4 3 2 19 + <_> + 9 + + 9 12 1 2 + <_> + 8 + + 6 6 2 2 + <_> + 3 + + 11 20 1 10 + <_> + 4 + + 6 4 5 3 + <_> + 7 + + 6 3 9 2 + <_> + 3 + + 3 1 6 14 + <_> + 4 + + 2 9 12 12 + <_> + 4 + + 7 10 2 10 + <_> + 7 + + 6 27 8 2 + <_> + 2 + + 6 10 3 1 + <_> + 2 + + 7 10 7 7 + <_> + 2 + + 5 30 10 1 + <_> + 5 + + 9 25 2 3 + <_> + 9 + + 3 28 12 1 + <_> + 2 + + 10 25 1 4 + <_> + 1 + + 5 20 2 1 + <_> + 5 + + 9 6 6 7 + <_> + 0 + + 11 10 1 12 + <_> + 3 + + 7 14 1 2 + <_> + 3 + + 3 10 5 4 + <_> + 3 + + 0 0 9 4 + <_> + 8 + + 2 21 5 1 + <_> + 8 + + 6 5 4 2 + <_> + 1 + + 7 28 4 1 + <_> + 4 + + 7 23 1 2 + <_> + 1 + + 7 24 2 4 + <_> + 2 + + 6 13 6 18 + <_> + 0 + + 5 28 8 1 + <_> + 0 + + 11 20 1 2 + <_> + 0 + + 7 8 2 3 + <_> + 2 + + 6 6 4 3 + <_> + 1 + + 9 10 1 3 + <_> + 1 + + 8 4 2 5 + <_> + 3 + + 2 21 7 6 + <_> + 3 + + 0 24 11 3 + <_> + 4 + + 3 28 7 2 + <_> + 2 + + 11 11 2 3 + <_> + 0 + + 9 3 3 2 + <_> + 5 + + 6 10 4 10 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 6 4 5 20 + <_> + 0 + + 6 24 7 3 + <_> + 8 + + 8 18 1 1 + <_> + 1 + + 2 2 5 14 + <_> + 0 + + 4 25 1 3 + <_> + 5 + + 8 3 4 11 + <_> + 7 + + 11 13 1 3 + <_> + 5 + + 3 0 12 1 + <_> + 4 + + 11 13 3 7 + <_> + 5 + + 4 28 10 2 + <_> + 2 + + 11 19 1 12 + <_> + 0 + + 5 20 1 3 + <_> + 5 + + 10 8 3 19 + <_> + 3 + + 0 26 6 1 + <_> + 2 + + 0 12 2 4 + <_> + 4 + + 7 8 5 6 + <_> + 5 + + 6 8 4 6 + <_> + 1 + + 4 7 6 1 + <_> + 9 + + 8 9 1 2 + <_> + 3 + + 4 11 11 5 + <_> + 8 + + 8 6 1 2 + <_> + 5 + + 0 14 2 15 + <_> + 0 + + 4 5 10 2 + <_> + 5 + + 7 12 1 3 + <_> + 3 + + 4 1 2 25 + <_> + 8 + + 12 18 2 2 + <_> + 3 + + 0 27 3 3 + <_> + 2 + + 6 17 3 11 + <_> + 1 + + 7 28 3 1 + <_> + 4 + + 5 18 5 2 + <_> + 0 + + 8 16 3 6 + <_> + 2 + + 7 23 2 2 + <_> + 0 + + 9 8 3 5 + <_> + 0 + + 7 19 6 4 + <_> + 0 + + 3 12 12 3 + <_> + 3 + + 8 18 1 1 + <_> + 1 + + 2 6 9 3 + <_> + 2 + + 7 2 5 2 + <_> + 1 + + 5 9 1 2 + <_> + 4 + + 0 0 11 14 + <_> + 2 + + 7 8 4 2 + <_> + 2 + + 8 9 2 1 + <_> + 2 + + 3 25 7 3 + <_> + 1 + + 5 27 5 1 + <_> + 0 + + 5 2 3 6 + <_> + 7 + + 0 19 7 2 + <_> + 2 + + 5 1 1 4 + <_> + 2 + + 3 22 1 2 + <_> + 5 + + 8 9 4 4 + <_> + 7 + + 4 30 3 1 + <_> + 4 + + 4 9 9 3 + <_> + 2 + + 7 11 2 3 + <_> + 0 + + 10 24 1 1 + <_> + 7 + + 1 27 4 2 + <_> + 1 + + 14 8 1 5 + <_> + 0 + + 12 22 3 7 + <_> + 4 + + 7 0 2 18 + <_> + 7 + + 8 20 1 2 + <_> + 8 + + 8 4 2 26 + <_> + 9 + + 8 15 1 3 + <_> + 1 + + 0 5 15 19 + <_> + 2 + + 4 9 4 1 + <_> + 8 + + 7 5 2 3 + <_> + 8 + + 5 6 3 1 + <_> + 8 + + 14 12 1 4 + <_> + 2 + + 1 6 10 1 + <_> + 0 + + 11 25 1 3 + <_> + 1 + + 6 19 4 8 + <_> + 7 + + 1 14 8 4 + <_> + 3 + + 0 25 11 2 + <_> + 9 + + 2 29 13 1 + <_> + 0 + + 3 27 1 4 + <_> + 1 + + 7 27 4 4 + <_> + 4 + + 5 4 7 3 + <_> + 0 + + 7 11 2 3 + <_> + 0 + + 8 17 4 4 + <_> + 2 + + 13 8 1 14 + <_> + 3 + + 13 26 2 4 + <_> + 0 + + 3 2 6 6 + <_> + 2 + + 5 5 7 16 + <_> + 2 + + 2 8 4 1 + <_> + 3 + + 4 0 1 14 + <_> + 9 + + 6 0 6 2 + <_> + 9 + + 5 14 2 4 + <_> + 1 + + 1 3 13 1 + <_> + 8 + + 6 6 2 2 + <_> + 8 + + 4 26 8 2 + <_> + 3 + + 8 17 4 1 + <_> + 4 + + 2 2 11 2 + <_> + 0 + + 6 16 6 10 + <_> + 9 + + 0 22 1 1 + <_> + 0 + + 4 29 3 2 + <_> + 4 + + 9 22 6 8 + <_> + 1 + + 8 26 4 3 + <_> + 3 + + 5 1 7 11 + <_> + 4 + + 7 29 3 1 + <_> + 4 + + 3 12 9 15 + <_> + 7 + + 0 28 14 3 + <_> + 2 + + 8 8 4 1 + <_> + 7 + + 6 9 3 1 + <_> + 7 + + 8 30 1 1 + <_> + 5 + + 4 30 11 1 + <_> + 5 + + 3 5 12 16 + <_> + 5 + + 12 13 1 6 + <_> + 0 + + 7 10 3 2 + <_> + 0 + + 3 0 4 14 + <_> + 2 + + 4 5 3 4 + <_> + 2 + + 5 19 4 1 + <_> + 1 + + 6 10 3 2 + <_> + 5 + + 1 1 12 1 + <_> + 9 + + 10 19 2 4 + <_> + 9 + + 1 0 13 27 + <_> + 8 + + 8 3 1 5 + <_> + 1 + + 7 28 3 1 + <_> + 9 + + 8 9 2 5 + <_> + 1 + + 5 4 6 9 + <_> + 7 + + 6 3 4 1 + <_> + 7 + + 14 24 1 5 + <_> + 3 + + 2 17 1 12 + <_> + 0 + + 4 14 7 16 + <_> + 1 + + 6 2 1 25 + <_> + 0 + + 0 13 4 16 + <_> + 4 + + 12 8 3 4 + <_> + 0 + + 0 18 13 4 + <_> + 8 + + 2 30 1 1 + <_> + 8 + + 7 7 3 1 + <_> + 9 + + 10 28 1 2 + <_> + 8 + + 11 1 3 10 + <_> + 4 + + 1 30 4 1 + <_> + 1 + + 2 22 5 8 + <_> + 9 + + 4 25 6 6 + <_> + 0 + + 4 6 1 6 + <_> + 5 + + 12 30 3 1 + <_> + 3 + + 7 10 1 1 + <_> + 2 + + 4 26 7 2 + <_> + 1 + + 5 1 4 3 + <_> + 4 + + 9 20 1 4 + <_> + 3 + + 2 2 7 9 + <_> + 7 + + 13 0 2 3 + <_> + 8 + + 6 6 1 2 + <_> + 3 + + 3 28 8 2 + <_> + 7 + + 13 24 1 3 + <_> + 2 + + 3 29 9 1 + <_> + 7 + + 7 13 3 1 + <_> + 7 + + 1 0 4 5 + <_> + 0 + + 5 5 6 3 + <_> + 0 + + 4 3 9 2 + <_> + 3 + + 2 17 2 2 + <_> + 0 + + 12 5 1 18 + <_> + 9 + + 7 10 1 1 + <_> + 9 + + 3 5 9 1 + <_> + 8 + + 8 12 4 1 + <_> + 3 + + 3 9 3 18 + <_> + 7 + + 8 26 1 1 + <_> + 1 + + 9 10 1 3 + <_> + 4 + + 5 10 5 21 + <_> + 1 + + 9 27 2 2 + <_> + 7 + + 6 9 3 1 + <_> + 2 + + 4 21 6 7 + <_> + 4 + + 2 18 9 8 + <_> + 5 + + 4 24 10 7 + <_> + 4 + + 6 4 5 3 + <_> + 2 + + 11 23 4 1 + <_> + 3 + + 5 3 1 28 + <_> + 9 + + 6 20 1 3 + <_> + 9 + + 4 25 5 2 + <_> + 4 + + 3 0 10 21 + <_> + 5 + + 9 11 6 17 + <_> + 0 + + 1 28 14 2 + <_> + 2 + + 6 10 3 1 + <_> + 0 + + 6 25 5 2 + <_> + 0 + + 6 27 7 1 + <_> + 8 + + 4 6 7 2 + <_> + 4 + + 12 15 3 5 + <_> + 3 + + 8 13 1 5 + <_> + 0 + + 6 22 2 5 + <_> + 4 + + 2 3 6 11 + <_> + 8 + + 1 17 6 10 + <_> + 9 + + 3 28 5 1 + <_> + 4 + + 0 30 10 1 + <_> + 1 + + 6 25 3 4 + <_> + 5 + + 10 8 3 8 + <_> + 7 + + 13 0 2 25 + <_> + 7 + + 5 30 8 1 + <_> + 3 + + 6 21 1 3 + <_> + 9 + + 6 8 3 4 + <_> + 9 + + 6 5 3 3 + <_> + 5 + + 4 29 10 1 + <_> + 1 + + 9 23 1 3 + <_> + 5 + + 9 11 4 20 + <_> + 9 + + 0 22 11 1 + <_> + 1 + + 5 9 1 2 + <_> + 5 + + 7 26 4 1 + <_> + 0 + + 6 23 1 7 + <_> + 3 + + 10 25 2 1 + <_> + 2 + + 3 29 6 2 + <_> + 1 + + 13 2 1 14 + <_> + 3 + + 6 26 8 2 + <_> + 1 + + 11 3 1 5 + <_> + 4 + + 3 12 12 19 + <_> + 1 + + 5 28 6 1 + <_> + 3 + + 10 30 5 1 + <_> + 7 + + 0 26 5 4 + <_> + 1 + + 5 11 3 2 + <_> + 0 + + 3 1 4 14 + <_> + 1 + + 7 4 2 4 + <_> + 3 + + 3 28 8 2 + <_> + 0 + + 7 19 3 7 + <_> + 4 + + 1 29 9 2 + <_> + 0 + + 6 10 3 2 + <_> + 5 + + 8 3 5 8 + <_> + 8 + + 7 4 1 10 + <_> + 1 + 1024 + + <_> + -9.1824179887771606e-01 + + 1 2 0 2.3365000000000000e+03 0 -1 1 8.3500000000000000e+01 + -2 -3 2 2.9050000000000000e+02 + + -1.9275911152362823e-01 -9.1824179887771606e-01 + 7.1353024244308472e-01 -4.2490604519844055e-01 + <_> + -1.3566842079162598e+00 + + 1 2 3 4.5500000000000000e+01 0 -1 4 5.6350000000000000e+02 + -2 -3 5 1.5150000000000000e+02 + + -5.7629632949829102e-01 -9.8518949747085571e-01 + 5.2551275491714478e-01 -4.3844240903854370e-01 + <_> + -1.6601251363754272e+00 + + 1 2 6 1.6500000000000000e+01 0 -1 7 1.3417500000000000e+04 + -2 -3 8 3.2850000000000000e+02 + + -1.4283974468708038e-01 -7.6407837867736816e-01 + 6.7369973659515381e-01 -3.0344095826148987e-01 + <_> + -1.7210527658462524e+00 + + 1 2 9 8.3500000000000000e+01 0 -1 10 5.7950000000000000e+02 + -2 -3 11 5.2165000000000000e+03 + + 2.7889367938041687e-01 -7.9177212715148926e-01 + -5.5426341295242310e-01 4.3222227692604065e-01 + <_> + -1.8265457153320312e+00 + + 1 2 12 1.0500000000000000e+01 0 -1 13 2.2500000000000000e+01 + -2 -3 14 2.4415000000000000e+03 + + -4.9315950274467468e-01 5.7787740230560303e-01 + -5.9864276647567749e-01 1.2489826977252960e-01 + <_> + -1.6793980598449707e+00 + + 1 2 15 1.8205000000000000e+03 0 -1 16 2.2445000000000000e+03 + -2 -3 17 2.5000000000000000e+00 + + 3.1089431140571833e-03 8.0035644769668579e-01 + 9.4315350055694580e-02 -5.7833504676818848e-01 + <_> + -1.5442515611648560e+00 + + 1 2 18 3.4500000000000000e+01 0 -1 19 4293. -2 -3 20 + 1.5545000000000000e+03 + + -6.1589881777763367e-02 -9.2765086889266968e-01 + 2.9719692468643188e-01 -6.1971640586853027e-01 + <_> + -1.8196758031845093e+00 + + 1 2 21 1.1500000000000000e+01 0 -1 22 2.1500000000000000e+01 + -2 -3 23 6.5500000000000000e+01 + + -4.4309207797050476e-01 4.5466747879981995e-01 + -6.7477458715438843e-01 -2.8885286301374435e-02 + <_> + -1.6610682010650635e+00 + + 1 2 24 5.0950000000000000e+02 0 -1 25 27777. -2 -3 26 + 2.4715000000000000e+03 + + 5.2616196870803833e-01 -4.0959128737449646e-01 + 5.7547372579574585e-01 -3.0137240886688232e-01 + <_> + -1.5959914922714233e+00 + + 1 2 27 5.0000000000000000e-01 0 -1 28 2.5000000000000000e+00 + -2 -3 29 1.7450000000000000e+02 + + -7.2784364223480225e-01 4.9311363697052002e-01 + -6.9787085056304932e-01 -1.9121825695037842e-02 + <_> + -1.1109679937362671e+00 + + 1 2 30 1.7500000000000000e+01 0 -1 31 1.0500000000000000e+01 + -2 -3 32 1.6835000000000000e+03 + + -6.9948041439056396e-01 4.8122453689575195e-01 + -3.8041490316390991e-01 7.8814607858657837e-01 + <_> + -1.3001022338867188e+00 + + 1 2 33 5.5000000000000000e+00 0 -1 34 1.4500000000000000e+01 + -2 -3 35 4.3500000000000000e+01 + + -6.2981390953063965e-01 4.1833153367042542e-01 + -5.5634695291519165e-01 2.0092706382274628e-01 + <_> + -1.2552416324615479e+00 + + 1 2 36 1.5000000000000000e+00 0 -1 37 6.0500000000000000e+01 + -2 -3 38 3.5000000000000000e+00 + + -2.3229536414146423e-01 4.8632022738456726e-01 + 1.0821102559566498e-01 -5.4847836494445801e-01 + <_> + -9.5746147632598877e-01 + + 1 2 39 5.0000000000000000e-01 0 -1 40 5.5000000000000000e+00 + -2 -3 41 1.5500000000000000e+01 + + -9.0162736177444458e-01 3.7442612648010254e-01 + -1.9469287246465683e-02 -6.7447566986083984e-01 + <_> + -8.0001801252365112e-01 + + 1 2 42 3.7500000000000000e+01 0 -1 43 3.1595000000000000e+03 + -2 -3 44 1.2465000000000000e+03 + + 1.6209787130355835e-01 -9.0783798694610596e-01 + 2.1256938576698303e-01 -7.1468418836593628e-01 + <_> + -1.2121976613998413e+00 + + 1 2 45 5.2500000000000000e+01 0 -1 46 5.0000000000000000e-01 + -2 -3 47 7606. + + 3.2595899701118469e-01 -4.1217961907386780e-01 + -1.9886784255504608e-01 7.2802597284317017e-01 + <_> + -1.0095448493957520e+00 + + 1 2 48 1.2645000000000000e+03 0 -1 49 1.3995000000000000e+03 + -2 -3 50 17217. + + 1.4752689003944397e-01 -4.5374435186386108e-01 + 7.4328523874282837e-01 -3.0514815449714661e-01 + <_> + -8.2125085592269897e-01 + + 1 2 51 1.2450000000000000e+02 0 -1 52 4.5000000000000000e+00 + -2 -3 53 6.5500000000000000e+01 + + -9.2579865455627441e-01 1.8829397857189178e-01 + 6.2581911683082581e-02 -9.3276327848434448e-01 + <_> + -8.5726839303970337e-01 + + 1 2 54 1.2500000000000000e+01 0 -1 55 3.5000000000000000e+00 + -2 -3 56 2.4500000000000000e+01 + + -9.3079727888107300e-01 5.4834127426147461e-01 + -7.4245822429656982e-01 -3.6017529666423798e-02 + <_> + -3.7141740322113037e-01 + + 1 2 57 2.5000000000000000e+00 0 -1 58 9.0500000000000000e+01 + -2 -3 59 1.1450000000000000e+02 + + -2.6328250765800476e-01 4.8585096001625061e-01 + -4.2119786143302917e-01 3.4775453805923462e-01 + <_> + -2.9893672466278076e-01 + + 1 2 60 1.8150000000000000e+02 0 -1 61 1.6500000000000000e+01 + -2 -3 62 4.3500000000000000e+01 + + 3.9467984437942505e-01 -2.8166392445564270e-01 + -6.6281062364578247e-01 1.6430251300334930e-02 + <_> + -5.2570968866348267e-01 + + 1 2 63 2.8935000000000000e+03 0 -1 64 7.5000000000000000e+00 + -2 -3 65 10970. + + 2.7466580271720886e-01 -8.6028146743774414e-01 + 3.1712412834167480e-01 -2.8514662384986877e-01 + <_> + -3.3981230854988098e-01 + + 1 2 66 4.3500000000000000e+01 0 -1 67 5.0500000000000000e+01 + -2 -3 68 1.2950000000000000e+02 + + 1.5071904659271240e-01 -6.7942529916763306e-01 + 3.4536096453666687e-01 -5.4448747634887695e-01 + <_> + -3.2909783720970154e-01 + + 1 2 69 4.0500000000000000e+01 0 -1 70 9.8750000000000000e+02 + -2 -3 71 4.5000000000000000e+00 + + -2.0841991528868675e-02 -6.2886476516723633e-01 + 7.4424326419830322e-01 9.9408831447362900e-03 + <_> + -6.2298193573951721e-02 + + 1 2 72 4.6085000000000000e+03 0 -1 73 3.8500000000000000e+01 + -2 -3 74 5.7850000000000000e+02 + + -7.5020188093185425e-01 5.4516482353210449e-01 + 5.7250261306762695e-01 -9.2801190912723541e-02 + <_> + -1.5894679725170135e-01 + + 1 2 75 5.0000000000000000e-01 0 -1 76 1.5000000000000000e+00 + -2 -3 77 2.5750000000000000e+02 + + -7.4547845125198364e-01 4.9561309814453125e-01 + 5.8993577957153320e-01 -3.1674036383628845e-01 + <_> + 4.0653568506240845e-01 + + 1 2 78 2.5335000000000000e+03 0 -1 79 2.4500000000000000e+01 + -2 -3 80 8.9905000000000000e+03 + + 2.6614660024642944e-01 -3.2352310419082642e-01 + 6.4184278249740601e-01 -3.7356415390968323e-01 + <_> + -1.8076049163937569e-03 + + 1 2 81 5.0000000000000000e-01 0 -1 82 1.2500000000000000e+01 + -2 -3 83 2.4500000000000000e+01 + + -4.9844339489936829e-01 4.9451184272766113e-01 + -5.1162499189376831e-01 1.4680899679660797e-01 + <_> + 2.9161420464515686e-01 + + 1 2 84 1.3500000000000000e+01 0 -1 85 1.2500000000000000e+01 + -2 -3 86 1.5115000000000000e+03 + + -7.0512425899505615e-01 4.7449973225593567e-01 + -4.5257037878036499e-01 1.9849643111228943e-01 + <_> + 2.6676848530769348e-01 + + 1 2 87 5.0500000000000000e+01 0 -1 88 6.5500000000000000e+01 + -2 -3 89 1.4650000000000000e+02 + + -2.0592364668846130e-01 3.0830872058868408e-01 + -8.7131351232528687e-01 8.3726328611373901e-01 + <_> + 1.9189073145389557e-01 + + 1 2 90 3.6050000000000000e+02 0 -1 91 1.0350000000000000e+02 + -2 -3 92 7.4500000000000000e+01 + + -8.2260921597480774e-02 5.0565969944000244e-01 + -9.1390937566757202e-01 -1.8902081251144409e-01 + <_> + 5.3643327951431274e-01 + + 1 2 93 2.0500000000000000e+01 0 -1 94 4.4500000000000000e+01 + -2 -3 95 7.3785000000000000e+03 + + -8.0922812223434448e-01 3.4454253315925598e-01 + -1.5407036058604717e-02 -7.4269419908523560e-01 + <_> + 4.3825522065162659e-01 + + 1 2 96 1.0224500000000000e+04 0 -1 97 4.5000000000000000e+00 + -2 -3 98 4.0035000000000000e+03 + + 2.9326722025871277e-01 -3.9492443203926086e-01 + 6.2416630983352661e-01 -1.4834968745708466e-01 + <_> + 9.0073168277740479e-01 + + 1 2 99 2.5000000000000000e+00 0 -1 100 + 3.8395000000000000e+03 -2 -3 101 5.5000000000000000e+00 + + 6.1362767219543457e-01 -5.9424567967653275e-02 + -6.8450838327407837e-01 2.6574308052659035e-02 + <_> + 1.0332926511764526e+00 + + 1 2 102 5.4500000000000000e+01 0 -1 103 + 5.0000000000000000e-01 -2 -3 104 4.5000000000000000e+00 + + 1.4594553411006927e-01 -8.0310869216918945e-01 + 4.9081337451934814e-01 -1.0566046833992004e-01 + <_> + 1.2107890844345093e+00 + + 1 2 105 2.5000000000000000e+00 0 -1 106 608. -2 -3 107 + 1.0250000000000000e+02 + + -6.9540244340896606e-01 8.6690729856491089e-01 + 1.7749644815921783e-01 -8.1727051734924316e-01 + <_> + 1.1315129995346069e+00 + + 1 2 108 1.0450000000000000e+02 0 -1 109 106. -2 -3 110 + 4.7350000000000000e+02 + + -4.4595441222190857e-01 4.8524639010429382e-01 + 3.8998365402221680e-01 -4.3752849102020264e-01 + <_> + 1.3212180137634277e+00 + + 1 2 111 5.0000000000000000e-01 0 -1 112 + 3.1500000000000000e+01 -2 -3 113 8.5000000000000000e+00 + + -7.6347488164901733e-01 6.1377680301666260e-01 + 3.2435289025306702e-01 -3.2852920889854431e-01 + <_> + 1.5280661582946777e+00 + + 1 2 114 31599. 0 -1 115 8.7950000000000000e+02 -2 -3 116 + 1.4950000000000000e+02 + + -4.4413706660270691e-01 2.0684811472892761e-01 + -9.2896610498428345e-01 7.2677606344223022e-01 + <_> + 1.3401062488555908e+00 + + 1 2 117 4.5000000000000000e+00 0 -1 118 + 5.0000000000000000e-01 -2 -3 119 1.7500000000000000e+01 + + -8.9902228116989136e-01 7.3140519857406616e-01 + 2.5528132915496826e-01 -3.2260772585868835e-01 + <_> + 1.5880639553070068e+00 + + 1 2 120 2.3500000000000000e+01 0 -1 121 + 2.3415000000000000e+03 -2 -3 122 1.8500000000000000e+01 + + -7.2909480333328247e-01 -6.7116706632077694e-03 + -8.0022460222244263e-01 3.6795264482498169e-01 + <_> + 1.7455346584320068e+00 + + 1 2 123 1.9715000000000000e+03 0 -1 124 + 4.5635000000000000e+03 -2 -3 125 4.4850000000000000e+02 + + -6.1536699533462524e-01 3.9649611711502075e-01 + -5.3931379318237305e-01 1.9903500378131866e-01 + <_> + 1.4469091892242432e+00 + + 1 2 126 9.5000000000000000e+00 0 -1 127 + 1.0219500000000000e+04 -2 -3 128 4.0500000000000000e+01 + + 6.1238449811935425e-01 -1.6160279512405396e-01 + -5.3765082359313965e-01 2.1599884331226349e-01 + <_> + 1.6631983518600464e+00 + + 1 2 129 1.3050000000000000e+02 0 -1 130 + 1.2500000000000000e+01 -2 -3 131 48. + + -6.8314427137374878e-01 2.1628913283348083e-01 + 7.3021888732910156e-01 -8.3048707246780396e-01 + <_> + 1.3611874580383301e+00 + + 1 2 132 5691. 0 -1 133 1.4550000000000000e+02 -2 -3 134 + 6621. + + 6.3320666551589966e-02 -5.2526509761810303e-01 + 9.5597380399703979e-01 -8.6907690763473511e-01 + <_> + 1.6279634237289429e+00 + + 1 2 135 2.3500000000000000e+01 0 -1 136 + 2.5000000000000000e+00 -2 -3 137 5.0500000000000000e+01 + + 3.9147856831550598e-01 -8.5339552164077759e-01 + 2.6677599549293518e-01 -3.8106775283813477e-01 + <_> + 2.0351922512054443e+00 + + 1 2 138 4.9500000000000000e+01 0 -1 139 + 1.8500000000000000e+01 -2 -3 140 7.5000000000000000e+00 + + 4.8707169294357300e-01 -5.0664901733398438e-01 + 5.0869596004486084e-01 -1.1930328607559204e-01 + <_> + 2.1048190593719482e+00 + + 1 2 141 6.5000000000000000e+00 0 -1 142 + 2.0500000000000000e+01 -2 -3 143 2.8945000000000000e+03 + + 2.2332985699176788e-01 -6.0333216190338135e-01 + 3.1961753964424133e-01 -4.8080846667289734e-01 + <_> + 2.5272200107574463e+00 + + 1 2 144 1.2755000000000000e+03 0 -1 145 + 1.6450000000000000e+02 -2 -3 146 33. + + 8.7598457932472229e-02 -4.3963542580604553e-01 + -8.7583345174789429e-01 6.2399446964263916e-01 + <_> + 2.3983705043792725e+00 + + 1 2 147 5.5000000000000000e+00 0 -1 148 + 1.2500000000000000e+01 -2 -3 149 3.2715000000000000e+03 + + -6.9637626409530640e-01 3.5001280903816223e-01 + -6.8439531326293945e-01 5.0571694970130920e-02 + <_> + 2.1697113513946533e+00 + + 1 2 150 666. 0 -1 151 1.0675000000000000e+03 -2 -3 152 + 1.0650000000000000e+02 + + -2.1497508883476257e-01 7.4145573377609253e-01 + -4.1339716315269470e-01 1.7802318930625916e-01 + <_> + 2.3894040584564209e+00 + + 1 2 153 1.5000000000000000e+00 0 -1 154 + 4.2500000000000000e+01 -2 -3 155 1.0950000000000000e+02 + + -8.8204550743103027e-01 3.3967906236648560e-01 + -9.1087028384208679e-02 -8.9394873380661011e-01 + <_> + 2.2878415584564209e+00 + + 1 2 156 6.4500000000000000e+01 0 -1 157 11. -2 -3 158 + 4.4500000000000000e+01 + + 7.8926539421081543e-01 -8.1914222240447998e-01 + 5.7366627454757690e-01 -1.0156247764825821e-01 + <_> + 2.4907975196838379e+00 + + 1 2 159 5.8650000000000000e+02 0 -1 160 + 1.7625000000000000e+03 -2 -3 161 5.0000000000000000e-01 + + -5.2814042568206787e-01 2.0295590162277222e-01 + 4.9193066358566284e-01 -8.6553698778152466e-01 + <_> + 2.8328115940093994e+00 + + 1 2 162 1.1500000000000000e+01 0 -1 163 + 1.5045000000000000e+03 -2 -3 164 3.1500000000000000e+01 + + 5.6902194023132324e-01 -3.8489398360252380e-01 + 5.4847592115402222e-01 -9.3145422637462616e-02 + <_> + 2.9363400936126709e+00 + + 1 2 165 1.5500000000000000e+01 0 -1 166 + 1.2500000000000000e+01 -2 -3 167 1.5500000000000000e+01 + + 9.5472264289855957e-01 -9.1838270425796509e-01 + -1.0293316841125488e-01 4.3570974469184875e-01 + <_> + 2.8884809017181396e+00 + + 1 2 168 5.5000000000000000e+00 0 -1 169 + 3.2250000000000000e+02 -2 -3 170 3.3305000000000000e+03 + + 5.2823734283447266e-01 -6.2273854017257690e-01 + 2.4218171834945679e-01 -3.8004037737846375e-01 + <_> + 3.2581679821014404e+00 + + 1 2 171 1.1585000000000000e+03 0 -1 172 + 2.0525000000000000e+03 -2 -3 173 6.6950000000000000e+02 + + -7.3419857025146484e-01 5.7153469324111938e-01 + 7.6942658424377441e-01 -4.6774842776358128e-03 + <_> + 3.2552568912506104e+00 + + 1 2 174 4.7500000000000000e+01 0 -1 175 + 5.0000000000000000e-01 -2 -3 176 1.5550000000000000e+02 + + 1.8964821100234985e-01 -5.6353724002838135e-01 + -6.1556345224380493e-01 3.0847749114036560e-01 + <_> + 3.1983842849731445e+00 + + 1 2 177 4.3150000000000000e+02 0 -1 178 + 5.8500000000000000e+01 -2 -3 179 5.0000000000000000e-01 + + -5.6872483342885971e-02 5.8359992504119873e-01 + 4.7400984168052673e-01 -7.4053239822387695e-01 + <_> + 3.4817969799041748e+00 + + 1 2 180 9.5000000000000000e+00 0 -1 181 25. -2 -3 182 + 6.2500000000000000e+01 + + -6.4430248737335205e-01 3.9208996295928955e-01 + -4.2771559953689575e-01 3.0624631047248840e-01 + <_> + 3.0476233959197998e+00 + + 1 2 183 2.5000000000000000e+00 0 -1 184 + 1.3250000000000000e+02 -2 -3 185 3.4150000000000000e+02 + + 5.3614073991775513e-01 -5.6767416000366211e-01 + -3.0754956603050232e-01 8.0505007505416870e-01 + <_> + 3.4105541706085205e+00 + + 1 2 186 5.8500000000000000e+01 0 -1 187 + 5.2250000000000000e+02 -2 -3 188 8.4500000000000000e+01 + + -3.9508250355720520e-01 2.8085133433341980e-01 + 6.1845648288726807e-01 -2.1672628819942474e-01 + <_> + 3.4716253280639648e+00 + + 1 2 189 3238. 0 -1 190 7.6925000000000000e+03 -2 -3 191 + 1.4250000000000000e+02 + + 5.7400876283645630e-01 -6.7538954317569733e-02 + -8.3562213182449341e-01 6.1071071773767471e-02 + <_> + 3.3441829681396484e+00 + + 1 2 192 1.3500000000000000e+01 0 -1 193 + 1.3500000000000000e+01 -2 -3 194 5.5000000000000000e+00 + + -6.8424683809280396e-01 5.4655539989471436e-01 + 4.5958670973777771e-01 -1.2744228541851044e-01 + <_> + 3.2567305564880371e+00 + + 1 2 195 4.5050000000000000e+02 0 -1 196 + 7.5000000000000000e+00 -2 -3 197 102. + + 2.0710256695747375e-01 -4.7517296671867371e-01 + -2.6671493053436279e-01 5.8150058984756470e-01 + <_> + 3.5595970153808594e+00 + + 1 2 198 1.5500000000000000e+01 0 -1 199 + 1.6405000000000000e+03 -2 -3 200 3.2500000000000000e+01 + + -6.0164546966552734e-01 3.0286654829978943e-01 + 2.1122010052204132e-01 -5.7218044996261597e-01 + <_> + 3.7392544746398926e+00 + + 1 2 201 6.5000000000000000e+00 0 -1 202 + 3.5000000000000000e+00 -2 -3 203 1.6450000000000000e+02 + + 2.2506394982337952e-01 -8.6310726404190063e-01 + 1.7965751886367798e-01 -6.9324779510498047e-01 + <_> + 3.7078585624694824e+00 + + 1 2 204 8.1450000000000000e+02 0 -1 205 1890. -2 -3 206 + 8.1750000000000000e+02 + + -3.2595106959342957e-01 8.0182307958602905e-01 + 6.8428695201873779e-01 -2.1671128273010254e-01 + <_> + 4.0834798812866211e+00 + + 1 2 207 7524. 0 -1 208 29059. -2 -3 209 + 5.0000000000000000e-01 + + -9.4072461128234863e-02 6.2213033437728882e-01 + 4.1094872355461121e-01 -3.1383806467056274e-01 + <_> + 3.9115695953369141e+00 + + 1 2 210 1.8500000000000000e+01 0 -1 211 387. -2 -3 212 + 2.3750000000000000e+02 + + 4.2355090379714966e-01 -8.8622373342514038e-01 + 2.1309094130992889e-01 -5.3503811359405518e-01 + <_> + 4.2166790962219238e+00 + + 1 2 213 5.3500000000000000e+01 0 -1 214 1081. -2 -3 215 + 2.5000000000000000e+00 + + 8.1005847454071045e-01 -9.5809775590896606e-01 + 3.0510938167572021e-01 -2.3649103939533234e-01 + <_> + 4.2742543220520020e+00 + + 1 2 216 5.0000000000000000e-01 0 -1 217 + 3.5000000000000000e+00 -2 -3 218 1.9500000000000000e+01 + + -6.7842203378677368e-01 6.1577528715133667e-01 + -6.2877601385116577e-01 5.7575210928916931e-02 + <_> + 4.5262427330017090e+00 + + 1 2 219 2.3500000000000000e+01 0 -1 220 + 6.5500000000000000e+01 -2 -3 221 7200. + + -1.2643574178218842e-01 4.4764062762260437e-01 + 8.0391228199005127e-01 -5.6298023462295532e-01 + <_> + 4.3622655868530273e+00 + + 1 2 222 5.0000000000000000e-01 0 -1 223 + 5.0000000000000000e-01 -2 -3 224 8.5000000000000000e+00 + + -6.9282239675521851e-01 5.0668609142303467e-01 + 2.8447443246841431e-01 -3.2788425683975220e-01 + <_> + 4.3866205215454102e+00 + + 1 2 225 1.8500000000000000e+01 0 -1 226 + 3.0500000000000000e+01 -2 -3 227 3.5000000000000000e+00 + + 1.6534422338008881e-01 -6.7988771200180054e-01 + 5.8741343021392822e-01 -7.3899636045098305e-03 + <_> + 4.6229195594787598e+00 + + 1 2 228 3.5500000000000000e+01 0 -1 229 + 2.4250000000000000e+02 -2 -3 230 1.4995000000000000e+03 + + -2.7123320102691650e-01 4.3727341294288635e-01 + 6.2667381763458252e-01 -8.1948131322860718e-01 + <_> + 4.4684619903564453e+00 + + 1 2 231 1.3050000000000000e+02 0 -1 232 + 7.4500000000000000e+01 -2 -3 233 3.4250000000000000e+02 + + 4.2552286386489868e-01 -6.8802464008331299e-01 + -3.5543212294578552e-01 8.2571202516555786e-01 + <_> + 4.7353043556213379e+00 + + 1 2 234 2.4500000000000000e+01 0 -1 235 + 5.2500000000000000e+01 -2 -3 236 2.1500000000000000e+01 + + 1.4997267723083496e-01 -9.4012928009033203e-01 + -3.1085640192031860e-01 2.6684227585792542e-01 + <_> + 5.1284918785095215e+00 + + 1 2 237 1.5000000000000000e+00 0 -1 238 246. -2 -3 239 + 5.1500000000000000e+01 + + -1.4119525253772736e-01 8.4309184551239014e-01 + 8.1866653636097908e-03 -5.9627658128738403e-01 + <_> + 5.2100868225097656e+00 + + 1 2 240 1.2225000000000000e+03 0 -1 241 8510. -2 -3 242 + 4.1076500000000000e+04 + + -3.3349204063415527e-01 4.1161355376243591e-01 + 4.6106973290443420e-01 -8.5954028367996216e-01 + <_> + 5.1655635833740234e+00 + + 1 2 243 1.4225500000000000e+04 0 -1 244 + 5.6765000000000000e+03 -2 -3 245 3.5000000000000000e+00 + + -4.4523153454065323e-02 6.2628918886184692e-01 + 2.0545418560504913e-01 -5.4939305782318115e-01 + <_> + 5.3291592597961426e+00 + + 1 2 246 4.5000000000000000e+00 0 -1 247 5. -2 -3 248 + 4.5035000000000000e+03 + + -8.5104453563690186e-01 7.7873927354812622e-01 + -8.5507243871688843e-01 -6.3659679144620895e-03 + <_> + 5.4979724884033203e+00 + + 1 2 249 7.7350000000000000e+02 0 -1 250 + 5.0745000000000000e+03 -2 -3 251 6.5000000000000000e+00 + + 4.5453670620918274e-01 -6.6669577360153198e-01 + 1.7272062599658966e-01 -4.8215919733047485e-01 + <_> + 5.1418399810791016e+00 + + 1 2 252 3.3500000000000000e+01 0 -1 253 + 4.8500000000000000e+01 -2 -3 254 1.1625000000000000e+03 + + 5.2197024226188660e-02 -8.2986247539520264e-01 + -4.2942497134208679e-01 2.6862683892250061e-01 + <_> + 5.3069186210632324e+00 + + 1 2 255 7.3500000000000000e+01 0 -1 256 + 6.5000000000000000e+00 -2 -3 257 293. + + -8.3037430047988892e-01 1.6507858037948608e-01 + -8.6482697725296021e-01 5.6237572431564331e-01 + <_> + 5.8320169448852539e+00 + + 1 2 258 5.2500000000000000e+01 0 -1 259 + 5.0000000000000000e-01 -2 -3 260 483. + + 4.2582702636718750e-01 -3.5350418090820312e-01 + 5.2509862184524536e-01 -8.3165860176086426e-01 + <_> + 5.4062981605529785e+00 + + 1 2 261 7.2850000000000000e+02 0 -1 262 27703. -2 -3 263 + 1.1950000000000000e+02 + + 6.5644961595535278e-01 -9.5847475528717041e-01 + 2.1147368848323822e-01 -4.5759904384613037e-01 + <_> + 5.3856034278869629e+00 + + 1 2 264 2.1500000000000000e+01 0 -1 265 + 1.6105000000000000e+03 -2 -3 266 1.5000000000000000e+00 + + -2.0694794133305550e-02 -7.2058790922164917e-01 + 7.0882946252822876e-01 -9.4017720222473145e-01 + <_> + 5.3594450950622559e+00 + + 1 2 267 1.9500000000000000e+01 0 -1 268 + 1.5500000000000000e+01 -2 -3 269 5.0000000000000000e-01 + + 4.6942609548568726e-01 -4.7919079661369324e-01 + 5.4369747638702393e-01 -2.6158468797802925e-02 + <_> + 5.5568313598632812e+00 + + 1 2 270 3.8500000000000000e+01 0 -1 271 5311. -2 -3 272 + 1.0750000000000000e+02 + + 2.8408360481262207e-01 -9.0222167968750000e-01 + 1.9738645851612091e-01 -5.9748172760009766e-01 + <_> + 6.0750946998596191e+00 + + 1 2 273 3654. 0 -1 274 5.0000000000000000e-01 -2 -3 275 180. + + 1.3075743615627289e-01 -4.2956027388572693e-01 + -7.0136785507202148e-01 6.2402111291885376e-01 + <_> + 6.0776939392089844e+00 + + 1 2 276 2.5000000000000000e+00 0 -1 277 + 1.3500000000000000e+01 -2 -3 278 1.1750000000000000e+02 + + -9.0228682756423950e-01 1. 1.6657561063766479e-01 + -6.4917582273483276e-01 + <_> + 6.0489621162414551e+00 + + 1 2 279 1.2455000000000000e+03 0 -1 280 + 3.2550000000000000e+02 -2 -3 281 9.3250000000000000e+02 + + -2.8672853112220764e-01 6.7820680141448975e-01 + 6.3100266456604004e-01 -2.2533583641052246e-01 + <_> + 6.3533391952514648e+00 + + 1 2 282 1.8769500000000000e+04 0 -1 283 + 7.5450000000000000e+02 -2 -3 284 1.4500000000000000e+01 + + -7.3246711492538452e-01 4.0920761227607727e-01 + 9.1864340007305145e-02 -5.1933372020721436e-01 + <_> + 6.3807511329650879e+00 + + 1 2 285 4.9950000000000000e+02 0 -1 286 + 7.5000000000000000e+00 -2 -3 287 4.9500000000000000e+01 + + 2.5379750132560730e-01 -9.2118155956268311e-01 + -5.7641644030809402e-02 5.3151047229766846e-01 + <_> + 6.4591631889343262e+00 + + 1 2 288 2.5500000000000000e+01 0 -1 289 + 1.1500000000000000e+01 -2 -3 290 1.7405000000000000e+03 + + -9.0133595466613770e-01 2.3147261142730713e-01 + -5.1077365875244141e-01 7.7433860301971436e-01 + <_> + 6.7583456039428711e+00 + + 1 2 291 5.0000000000000000e-01 0 -1 292 + 3.6500000000000000e+01 -2 -3 293 6.5000000000000000e+00 + + -1.6842520236968994e-01 7.2404229640960693e-01 + 4.3139779567718506e-01 -3.6949115991592407e-01 + <_> + 6.6043167114257812e+00 + + 1 2 294 1.0500000000000000e+01 0 -1 295 + 2.5500000000000000e+01 -2 -3 296 1.0750000000000000e+02 + + 6.2449771165847778e-01 -6.7510235309600830e-01 + 3.5289931297302246e-01 -1.5402862429618835e-01 + <_> + 6.4769744873046875e+00 + + 1 2 297 1.6750000000000000e+02 0 -1 298 + 3.4500000000000000e+01 -2 -3 299 2.1500000000000000e+01 + + 1.1882825195789337e-01 -6.5167319774627686e-01 + -7.6285523176193237e-01 3.4674841165542603e-01 + <_> + 6.6450757980346680e+00 + + 1 2 300 8.5000000000000000e+00 0 -1 301 + 1.3500000000000000e+01 -2 -3 302 116. + + -5.9631282091140747e-01 2.7127423882484436e-01 + -5.6467700004577637e-01 3.7385278940200806e-01 + <_> + 6.8429255485534668e+00 + + 1 2 303 5.5500000000000000e+01 0 -1 304 + 3.5000000000000000e+00 -2 -3 305 3.3250000000000000e+02 + + -8.3910179138183594e-01 4.3193608522415161e-01 + -3.7392577528953552e-01 6.6540867090225220e-01 + <_> + 7.0322842597961426e+00 + + 1 2 306 6.3500000000000000e+01 0 -1 307 + 2.0845000000000000e+03 -2 -3 308 1.2500000000000000e+01 + + -5.9658832848072052e-02 -8.6379587650299072e-01 + 4.7707024216651917e-01 -1.4790077507495880e-01 + <_> + 6.9630532264709473e+00 + + 1 2 309 1.6150000000000000e+02 0 -1 310 29256. -2 -3 311 + 2.5000000000000000e+00 + + -8.2682120800018311e-01 4.9407878518104553e-01 + 5.2456849813461304e-01 -6.9230861961841583e-02 + <_> + 6.9075293540954590e+00 + + 1 2 312 5.0000000000000000e-01 0 -1 313 + 8.5000000000000000e+00 -2 -3 314 8.4975000000000000e+03 + + -7.3926454782485962e-01 4.6552142500877380e-01 + 5.8614385128021240e-01 -3.0694326758384705e-01 + <_> + 7.0862822532653809e+00 + + 1 2 315 8.2550000000000000e+02 0 -1 316 + 4.6500000000000000e+01 -2 -3 317 5.0695000000000000e+03 + + -2.9908904433250427e-01 5.3665381669998169e-01 + 6.0632449388504028e-01 -4.8383909463882446e-01 + <_> + 7.3064808845520020e+00 + + 1 2 318 1.2500000000000000e+01 0 -1 319 + 4.7350000000000000e+02 -2 -3 320 1.3500000000000000e+01 + + -1.4890976250171661e-01 5.1700884103775024e-01 + 2.2019901871681213e-01 -5.0205707550048828e-01 + <_> + 7.5856218338012695e+00 + + 1 2 321 4.5000000000000000e+00 0 -1 322 + 2.5000000000000000e+00 -2 -3 323 1.7875000000000000e+03 + + -6.5830785036087036e-01 5.2842289209365845e-01 + -4.4524073600769043e-01 1.5747387707233429e-01 + <_> + 7.5183806419372559e+00 + + 1 2 324 7.8500000000000000e+01 0 -1 325 + 2.1500000000000000e+01 -2 -3 326 283. + + 4.9533292651176453e-01 -3.2849147915840149e-01 + -8.8443028926849365e-01 -4.6591479331254959e-02 + <_> + 7.2458000183105469e+00 + + 1 2 327 2.9500000000000000e+01 0 -1 328 + 4.5000000000000000e+00 -2 -3 329 1.2500000000000000e+01 + + 3.8163262605667114e-01 -5.6158578395843506e-01 + -5.1157724857330322e-01 3.5844418406486511e-01 + <_> + 7.7198004722595215e+00 + + 1 2 330 1.7500000000000000e+01 0 -1 331 + 8.5000000000000000e+00 -2 -3 332 94. + + -1.6375185549259186e-01 4.7400090098381042e-01 + -8.1118392944335938e-01 -3.4891348332166672e-02 + <_> + 7.6042866706848145e+00 + + 1 2 333 1.5500000000000000e+01 0 -1 334 + 2.8500000000000000e+01 -2 -3 335 1.1255000000000000e+03 + + -2.7163597941398621e-01 4.8851761221885681e-01 + -4.1841214895248413e-01 5.2421635389328003e-01 + <_> + 7.8545336723327637e+00 + + 1 2 336 5.0000000000000000e-01 0 -1 337 + 6.5000000000000000e+00 -2 -3 338 1.5755000000000000e+03 + + -5.1451754570007324e-01 5.8292496204376221e-01 + 5.4736447334289551e-01 -2.9082155227661133e-01 + <_> + 8.2435092926025391e+00 + + 1 2 339 2.5000000000000000e+00 0 -1 340 298. -2 -3 341 + 3.4500000000000000e+01 + + 5.5548179149627686e-01 -4.2350277304649353e-01 + -4.2017799615859985e-01 3.3250615000724792e-01 + <_> + 8.1081476211547852e+00 + + 1 2 342 2306. 0 -1 343 4.8350000000000000e+02 -2 -3 344 + 2.0550000000000000e+02 + + -7.4824672937393188e-01 8.6650526523590088e-01 + 2.9151761531829834e-01 -3.6584287881851196e-01 + <_> + 7.9108762741088867e+00 + + 0 1 345 2758. 0 1 345 2758. -1 -2 346 2.1500000000000000e+01 + + -1. -1. 2.9584947228431702e-01 -1.9727160036563873e-01 + <_> + 8.1822175979614258e+00 + + 1 2 347 2.3500000000000000e+01 0 -1 348 282. -2 -3 349 + 4.5000000000000000e+00 + + 4.1519537568092346e-01 -7.7347069978713989e-01 + 2.7134174108505249e-01 -2.6304042339324951e-01 + <_> + 8.1136093139648438e+00 + + 1 2 350 6.6500000000000000e+01 0 -1 351 + 1.4500000000000000e+01 -2 -3 352 3.4500000000000000e+01 + + -8.0191783607006073e-02 -7.9695141315460205e-01 + 4.5921468734741211e-01 -4.6219456195831299e-01 + <_> + 8.4452056884765625e+00 + + 1 2 353 5.0000000000000000e-01 0 -1 354 + 1.1750000000000000e+02 -2 -3 355 1.4615000000000000e+03 + + 6.2617254257202148e-01 -6.0764908790588379e-01 + -2.9064002633094788e-01 7.1891576051712036e-01 + <_> + 8.4361963272094727e+00 + + 1 2 356 7.3500000000000000e+01 0 -1 357 825. -2 -3 358 + 6.5000000000000000e+00 + + 6.0967606306076050e-01 -7.7204084396362305e-01 + 6.0940122604370117e-01 -9.0096443891525269e-03 + <_> + 8.7065010070800781e+00 + + 1 2 359 3.1500000000000000e+01 0 -1 360 + 1.1475500000000000e+04 -2 -3 361 262. + + 4.0798941254615784e-01 -6.3121789693832397e-01 + -4.9538758397102356e-01 2.7030462026596069e-01 + <_> + 8.5846290588378906e+00 + + 1 2 362 1.4500000000000000e+01 0 -1 363 + 1.3524500000000000e+04 -2 -3 364 1.5650000000000000e+02 + + 6.1740058660507202e-01 -1.2187176942825317e-01 + -4.5620942115783691e-01 2.4483670294284821e-01 + <_> + 8.5813455581665039e+00 + + 1 2 365 1.9500000000000000e+01 0 -1 366 + 2.4550000000000000e+02 -2 -3 367 1.5150000000000000e+02 + + -3.2830052077770233e-03 -7.3917645215988159e-01 + 8.6923849582672119e-01 -3.4717652201652527e-01 + <_> + 8.3619909286499023e+00 + + 1 2 368 8.5000000000000000e+00 0 -1 369 915. -2 -3 370 + 5.0000000000000000e-01 + + -4.7836102545261383e-02 -8.9932316541671753e-01 + 3.6531907320022583e-01 -2.1935538947582245e-01 + <_> + 8.8194007873535156e+00 + + 1 2 371 5.3500000000000000e+01 0 -1 372 + 4.5000000000000000e+00 -2 -3 373 3.5000000000000000e+00 + + 1.0001569986343384e-01 -6.3893711566925049e-01 + 4.5741054415702820e-01 -1.3190703094005585e-01 + <_> + 8.5848417282104492e+00 + + 1 2 374 1.2185000000000000e+03 0 -1 375 + 5.6500000000000000e+01 -2 -3 376 7.8650000000000000e+02 + + -3.6798512935638428e-01 6.3582497835159302e-01 + 8.7271928787231445e-01 4.6488631516695023e-02 + <_> + 8.7026214599609375e+00 + + 1 2 377 3.7500000000000000e+01 0 -1 378 + 8.1500000000000000e+01 -2 -3 379 2.2350000000000000e+02 + + -1.1387371271848679e-01 4.8333024978637695e-01 + 5.4781770706176758e-01 -6.5416949987411499e-01 + <_> + 8.9529705047607422e+00 + + 1 2 380 2.0500000000000000e+01 0 -1 381 + 7.5000000000000000e+00 -2 -3 382 1.3235000000000000e+03 + + -7.0283526182174683e-01 2.5034907460212708e-01 + -7.6881372928619385e-01 1.7487525939941406e-01 + <_> + 9.0659570693969727e+00 + + 1 2 383 3.5000000000000000e+00 0 -1 384 + 6.5000000000000000e+00 -2 -3 385 7.0250000000000000e+02 + + -9.7807765007019043e-01 4.7183737158775330e-01 + 1.1298649013042450e-01 -4.7387996315956116e-01 + <_> + 9.2564897537231445e+00 + + 1 2 386 7.0650000000000000e+02 0 -1 387 + 2.7500000000000000e+01 -2 -3 388 3.8150000000000000e+02 + + -4.3204694986343384e-01 4.6149665117263794e-01 + -4.5656362175941467e-01 4.0426468849182129e-01 + <_> + 9.5633430480957031e+00 + + 1 2 389 1.7250000000000000e+02 0 -1 390 + 1.4350000000000000e+02 -2 -3 391 2168. + + 3.0685371160507202e-01 -6.7446005344390869e-01 + -5.6666123867034912e-01 5.7540327310562134e-01 + <_> + 9.4047651290893555e+00 + + 1 2 392 5.0000000000000000e-01 0 -1 393 36. -2 -3 394 + 6.5000000000000000e+00 + + -8.9199495315551758e-01 6.9151669740676880e-01 + 3.1148543953895569e-01 -3.2515323162078857e-01 + <_> + 9.8578929901123047e+00 + + 1 2 395 1.6500000000000000e+01 0 -1 396 + 8.5000000000000000e+00 -2 -3 397 6655. + + -6.3973349332809448e-01 -2.6324391365051270e-02 + 4.5312842726707458e-01 -7.6435673236846924e-01 + <_> + 1.0109946250915527e+01 + + 1 2 398 8.1850000000000000e+02 0 -1 399 5. -2 -3 400 + 1.5000000000000000e+00 + + 1. -9.7892904281616211e-01 2.5205332040786743e-01 + -2.3775234818458557e-01 + <_> + 1.0110588073730469e+01 + + 1 2 401 8.9500000000000000e+01 0 -1 402 + 1.9500000000000000e+01 -2 -3 403 3.3150000000000000e+02 + + 6.0288328677415848e-02 -5.5889946222305298e-01 + -6.6790217161178589e-01 4.9099177122116089e-01 + <_> + 1.0178493499755859e+01 + + 1 2 404 8.3500000000000000e+01 0 -1 405 + 5.0000000000000000e-01 -2 -3 406 4.5500000000000000e+01 + + 6.6644616425037384e-02 -4.7016331553459167e-01 + 6.9829040765762329e-01 -7.4734330177307129e-01 + <_> + 1.0367170333862305e+01 + + 1 2 407 3.1968500000000000e+04 0 -1 408 + 1.4500000000000000e+01 -2 -3 409 1.9650000000000000e+02 + + -8.8887441158294678e-01 1.8867671489715576e-01 + -6.9990497827529907e-01 7.3294508457183838e-01 + <_> + 1.0330060958862305e+01 + + 1 2 410 3.0500000000000000e+01 0 -1 411 + 4.5000000000000000e+00 -2 -3 412 2.2500000000000000e+01 + + 4.1319993138313293e-01 -1.7337587475776672e-01 + -6.1255306005477905e-01 5.2832174301147461e-01 + <_> + 1.0422311782836914e+01 + + 1 2 413 1.5750000000000000e+02 0 -1 414 2858. -2 -3 415 267. + + 9.2250838875770569e-02 -6.7853665351867676e-01 + -5.2487850189208984e-01 3.7964582443237305e-01 + <_> + 1.0936569213867188e+01 + + 1 2 416 5.5000000000000000e+00 0 -1 417 + 1.5000000000000000e+00 -2 -3 418 4.1500000000000000e+01 + + -7.1109032630920410e-01 5.2976405620574951e-01 + -7.1571081876754761e-01 -3.8149278610944748e-02 + <_> + 1.0785615921020508e+01 + + 1 2 419 5.5000000000000000e+00 0 -1 420 + 2.5000000000000000e+00 -2 -3 421 5.1050000000000000e+02 + + -7.9414331912994385e-01 5.1595968008041382e-01 + -5.1001089811325073e-01 2.4380905926227570e-01 + <_> + 1.1078557014465332e+01 + + 1 2 422 6.2045000000000000e+03 0 -1 423 + 2.1500000000000000e+01 -2 -3 424 7.3450000000000000e+02 + + -5.1469475030899048e-01 2.9294142127037048e-01 + 8.0896812677383423e-01 -6.5453553199768066e-01 + <_> + 1.1050524711608887e+01 + + 1 2 425 1.2500000000000000e+01 0 -1 426 + 3.1250000000000000e+02 -2 -3 427 2.7950000000000000e+02 + + 7.0064479112625122e-01 -3.8257476687431335e-01 + 1.9552476704120636e-01 -4.3830174207687378e-01 + <_> + 1.1334832191467285e+01 + + 1 2 428 1.8675000000000000e+03 0 -1 429 + 6.5000000000000000e+00 -2 -3 430 1.1475000000000000e+03 + + 3.7387716770172119e-01 -7.6267945766448975e-01 + -5.4317325353622437e-01 2.8430745005607605e-01 + <_> + 1.1113101959228516e+01 + + 1 2 431 1.4850000000000000e+02 0 -1 432 + 8.3500000000000000e+01 -2 -3 433 3.7500000000000000e+01 + + -3.8298897445201874e-02 -6.6938400268554688e-01 + 4.6958562731742859e-01 -2.8687629103660583e-01 + <_> + 1.0955561637878418e+01 + + 1 2 434 4.3500000000000000e+01 0 -1 435 + 5.5000000000000000e+00 -2 -3 436 1.9500000000000000e+01 + + 1.3246925175189972e-01 -5.9307396411895752e-01 + 4.5207285881042480e-01 -1.5754084289073944e-01 + <_> + 1.1154244422912598e+01 + + 1 2 437 3.5500000000000000e+01 0 -1 438 149. -2 -3 439 + 1.0764500000000000e+04 + + 1.6496022045612335e-01 -8.5004007816314697e-01 + 1.9868306815624237e-01 -7.6483601331710815e-01 + <_> + 1.1040904045104980e+01 + + 1 2 440 1.7500000000000000e+01 0 -1 441 + 2.7650000000000000e+02 -2 -3 442 6.0650000000000000e+02 + + 3.8257870078086853e-01 -8.7649303674697876e-01 + 5.6843882799148560e-01 -1.1334086209535599e-01 + <_> + 1.0785296440124512e+01 + + 1 2 443 2.0850000000000000e+02 0 -1 444 + 5.0000000000000000e-01 -2 -3 445 153. + + 2.4452392756938934e-01 -4.5549276471138000e-01 + 5.3557026386260986e-01 -2.5560736656188965e-01 + <_> + 1.1557132720947266e+01 + + 1 2 446 3.1695000000000000e+03 0 -1 447 17097. -2 -3 448 + 1.6791500000000000e+04 + + -8.1668007373809814e-01 8.2250398397445679e-01 + -3.6227312684059143e-01 1.6900251805782318e-01 + <_> + 1.1418401718139648e+01 + + 1 2 449 1.7705000000000000e+03 0 -1 450 + 4.6565000000000000e+03 -2 -3 451 4.5550000000000000e+02 + + -1.8939907848834991e-01 5.5706465244293213e-01 + 2.2822033613920212e-02 -6.7216074466705322e-01 + <_> + 1.1332237243652344e+01 + + 1 2 452 1.9500000000000000e+01 0 -1 453 + 5.0000000000000000e-01 -2 -3 454 168. + + 9.8821230232715607e-02 -9.9127775430679321e-01 + 2.8800103068351746e-01 -3.2348513603210449e-01 + <_> + 1.1800554275512695e+01 + + 1 2 455 9.6500000000000000e+01 0 -1 456 + 3.5000000000000000e+00 -2 -3 457 1.2085000000000000e+03 + + 1.2269663810729980e-01 -4.6963310241699219e-01 + 4.6831732988357544e-01 -7.5347024202346802e-01 + <_> + 1.1746677398681641e+01 + + 1 2 458 2.6500000000000000e+01 0 -1 459 + 1.2500000000000000e+01 -2 -3 460 6.2500000000000000e+01 + + 2.9853442311286926e-01 -6.0757899284362793e-01 + 4.3772074580192566e-01 -1.3283115625381470e-01 + <_> + 1.1710562705993652e+01 + + 1 2 461 3.4500000000000000e+01 0 -1 462 + 5.0000000000000000e-01 -2 -3 463 2.0950000000000000e+02 + + 3.1521999835968018e-01 -5.5736678838729858e-01 + 6.7748945951461792e-01 -3.6115031689405441e-02 + <_> + 1.1582207679748535e+01 + + 1 2 464 1.5000000000000000e+00 0 -1 465 + 1.4750000000000000e+02 -2 -3 466 5.0000000000000000e-01 + + -9.5662528276443481e-01 8.8448798656463623e-01 + 5.0583779811859131e-01 -1.2840148806571960e-01 + <_> + 1.1577805519104004e+01 + + 1 2 467 2.6250000000000000e+02 0 -1 468 + 8.5000000000000000e+00 -2 -3 469 2.7050000000000000e+02 + + 5.8746252208948135e-02 -5.1417016983032227e-01 + -4.4025536626577377e-03 7.2468632459640503e-01 + <_> + 1.1909842491149902e+01 + + 1 2 470 3.0500000000000000e+01 0 -1 471 + 9.1500000000000000e+01 -2 -3 472 3.2500000000000000e+01 + + 2.6228722929954529e-01 -8.3183318376541138e-01 + 3.3203727006912231e-01 -2.0215129852294922e-01 + <_> + 1.1820110321044922e+01 + + 1 2 473 3.6150000000000000e+02 0 -1 474 + 7.5500000000000000e+01 -2 -3 475 1.6500000000000000e+01 + + 3.4021586179733276e-02 -7.3799329996109009e-01 + 5.9181433916091919e-01 -8.9732393622398376e-02 + <_> + 1.2058867454528809e+01 + + 1 2 476 2.1850000000000000e+02 0 -1 477 + 1.3970500000000000e+04 -2 -3 478 3.5405000000000000e+03 + + 2.3875749111175537e-01 -3.4735745191574097e-01 + 8.4880095720291138e-01 -3.6369037628173828e-01 + <_> + 1.2003521919250488e+01 + + 1 2 479 1.2045000000000000e+03 0 -1 480 + 5.0000000000000000e-01 -2 -3 481 6.6500000000000000e+01 + + 1.9498512148857117e-01 -4.0264678001403809e-01 + 6.4470326900482178e-01 -4.2276349663734436e-01 + <_> + 1.2398437500000000e+01 + + 1 2 482 1.7500000000000000e+01 0 -1 483 13266. -2 -3 484 + 2.3500000000000000e+01 + + 1.0403804481029510e-01 -7.6852244138717651e-01 + 3.9491611719131470e-01 -1.4494727551937103e-01 + <_> + 1.2834873199462891e+01 + + 1 2 485 8.5000000000000000e+00 0 -1 486 + 1.9500000000000000e+01 -2 -3 487 2.5000000000000000e+00 + + 2.4885479360818863e-02 -6.1086690425872803e-01 + -3.8872721791267395e-01 4.3643516302108765e-01 + <_> + 1.2477423667907715e+01 + + 1 2 488 6.6500000000000000e+01 0 -1 489 + 2.9500000000000000e+01 -2 -3 490 4.4500000000000000e+01 + + -8.9354419708251953e-01 3.1559488177299500e-01 + -5.1763534545898438e-01 2.7538600564002991e-01 + <_> + 1.3054378509521484e+01 + + 1 2 491 8.2350000000000000e+02 0 -1 492 + 9.1500000000000000e+01 -2 -3 493 3.0550000000000000e+02 + + -5.0999827682971954e-02 5.7695519924163818e-01 + -8.2453000545501709e-01 2.1885833144187927e-01 + <_> + 1.3001498222351074e+01 + + 1 2 494 3.5000000000000000e+00 0 -1 495 + 4.5000000000000000e+00 -2 -3 496 1.2545000000000000e+03 + + -3.3553498983383179e-01 4.7332924604415894e-01 + -4.0103676915168762e-01 2.5861555337905884e-01 + <_> + 1.2748070716857910e+01 + + 1 2 497 7.2500000000000000e+01 0 -1 498 + 1.2078500000000000e+04 -2 -3 499 6.1500000000000000e+01 + + -5.6012886762619019e-01 5.0949209928512573e-01 + -3.8095393776893616e-01 3.5849356651306152e-01 + <_> + 1.3219707489013672e+01 + + 1 2 500 5.0000000000000000e-01 0 -1 501 + 4.5000000000000000e+00 -2 -3 502 2.5000000000000000e+00 + + -8.3156263828277588e-01 4.7163730859756470e-01 + 1.4885266125202179e-01 -4.8097932338714600e-01 + <_> + 1.3100829124450684e+01 + + 1 2 503 1.5500000000000000e+01 0 -1 504 + 6.5000000000000000e+00 -2 -3 505 1.6745000000000000e+03 + + 4.8601552844047546e-02 -8.4098070859909058e-01 + 4.4885209202766418e-01 -1.1887902766466141e-01 + <_> + 1.3153789520263672e+01 + + 1 2 506 1.9750000000000000e+02 0 -1 507 + 5.0000000000000000e-01 -2 -3 508 1.3850000000000000e+02 + + 3.5855168104171753e-01 -1.6984774172306061e-01 + -8.2890641689300537e-01 8.5591834783554077e-01 + <_> + 1.3473151206970215e+01 + + 1 2 509 2.0500000000000000e+01 0 -1 510 + 2.3500000000000000e+01 -2 -3 511 8.1050000000000000e+02 + + 3.1073799729347229e-01 -9.3193674087524414e-01 + -1.7174348235130310e-01 4.0613415837287903e-01 + <_> + 1.3465453147888184e+01 + + 1 2 512 2.1265000000000000e+03 0 -1 513 + 9.2950000000000000e+02 -2 -3 514 3.5000000000000000e+00 + + -7.6984455808997154e-03 7.1764069795608521e-01 + 2.0267011225223541e-01 -6.4554244279861450e-01 + <_> + 1.3577540397644043e+01 + + 1 2 515 2.7500000000000000e+01 0 -1 516 36. -2 -3 517 + 4.1350000000000000e+02 + + 1.5204006433486938e-01 -8.1754583120346069e-01 + -9.6264392137527466e-02 4.6634069085121155e-01 + <_> + 1.3565153121948242e+01 + + 1 2 518 8.2500000000000000e+01 0 -1 519 + 8.4500000000000000e+01 -2 -3 520 9545. + + 3.0989632010459900e-01 -6.6030853986740112e-01 + -6.4033728837966919e-01 -2.4311884772032499e-03 + <_> + 1.3631966590881348e+01 + + 1 2 521 2.3500000000000000e+01 0 -1 522 + 5.2500000000000000e+01 -2 -3 523 3.1500000000000000e+01 + + -3.1883838772773743e-01 2.8375336527824402e-01 + 6.9719344377517700e-01 -6.3891428709030151e-01 + <_> + 1.3900455474853516e+01 + + 1 2 524 5.1500000000000000e+01 0 -1 525 + 4.5000000000000000e+00 -2 -3 526 22871. + + -6.8288409709930420e-01 3.8537871837615967e-01 + 2.3610968887805939e-01 -4.6725943684577942e-01 + <_> + 1.3885604858398438e+01 + + 1 2 527 6.3917500000000000e+04 0 -1 528 + 6.5000000000000000e+00 -2 -3 529 9.7500000000000000e+01 + + 1.8357095122337341e-01 -8.4825068712234497e-01 + 4.4022575020790100e-01 -1.7257900536060333e-01 + <_> + 1.4077846527099609e+01 + + 1 2 530 1.9305000000000000e+03 0 -1 531 + 4.5000000000000000e+00 -2 -3 532 5275. + + 3.3539947867393494e-01 -2.5358977913856506e-01 + 8.1407654285430908e-01 -8.9784932136535645e-01 + <_> + 1.4307449340820312e+01 + + 1 2 533 4.2500000000000000e+01 0 -1 534 + 3.2250000000000000e+02 -2 -3 535 1.5000000000000000e+00 + + 8.7229333817958832e-02 -9.4649451971054077e-01 + -5.4333996772766113e-01 2.2960273921489716e-01 + <_> + 1.4230868339538574e+01 + + 1 2 536 4.7500000000000000e+01 0 -1 537 + 5.0000000000000000e-01 -2 -3 538 7.5500000000000000e+01 + + 5.4770493507385254e-01 -7.6581157743930817e-02 + -8.0993747711181641e-01 1. + <_> + 1.4503654479980469e+01 + + 1 2 539 2.1500000000000000e+01 0 -1 540 + 6.7525000000000000e+03 -2 -3 541 3.1500000000000000e+01 + + -1.3048166036605835e-01 -8.7906163930892944e-01 + 2.7278691530227661e-01 -4.8766756057739258e-01 + <_> + 1.4462507247924805e+01 + + 1 2 542 5.0950000000000000e+02 0 -1 543 + 4.8500000000000000e+01 -2 -3 544 2334. + + -4.5064944028854370e-01 1.7299294471740723e-01 + 7.4772566556930542e-01 -4.1147492825984955e-02 + <_> + 1.4535001754760742e+01 + + 1 2 545 3.5000000000000000e+00 0 -1 546 + 4.5000000000000000e+00 -2 -3 547 3.1500000000000000e+01 + + -9.2824006080627441e-01 5.8265477418899536e-01 + -3.6995452642440796e-01 2.3856091499328613e-01 + <_> + 1.4815734863281250e+01 + + 1 2 548 2.0500000000000000e+01 0 -1 549 + 4.5000000000000000e+00 -2 -3 550 5.2500000000000000e+01 + + -8.9162200689315796e-01 2.8073275089263916e-01 + 9.8183512687683105e-02 -7.3680752515792847e-01 + <_> + 1.4583820343017578e+01 + + 1 2 551 1.0500000000000000e+01 0 -1 552 10. -2 -3 553 + 9.0500000000000000e+01 + + -8.9265322685241699e-01 2.6653656363487244e-01 + -4.8498126864433289e-01 4.9194815754890442e-01 + <_> + 1.4590086936950684e+01 + + 1 2 554 1.4075000000000000e+03 0 -1 555 + 8.5000000000000000e+00 -2 -3 556 2.2350000000000000e+02 + + 7.2318482398986816e-01 -6.5714889764785767e-01 + 1.9554860889911652e-02 7.8212785720825195e-01 + <_> + 1.4370420455932617e+01 + + 1 2 557 1.3055000000000000e+03 0 -1 558 + 6.3615000000000000e+03 -2 -3 559 5.5050000000000000e+02 + + 6.6717378795146942e-02 7.7986842393875122e-01 + 4.8897069692611694e-01 -4.9088051915168762e-01 + <_> + 1.4557469367980957e+01 + + 1 2 560 2.0500000000000000e+01 0 -1 561 + 1.9500000000000000e+01 -2 -3 562 7.5000000000000000e+00 + + -6.0846841335296631e-01 7.7918326854705811e-01 + 4.8263064026832581e-01 -1.0205705463886261e-01 + <_> + 1.4732933044433594e+01 + + 1 2 563 9.5000000000000000e+00 0 -1 564 + 5.0000000000000000e-01 -2 -3 565 4.5000000000000000e+00 + + -8.2908272743225098e-01 4.2271518707275391e-01 + 3.5304966568946838e-01 -3.6941051483154297e-01 + <_> + 1.4693087577819824e+01 + + 1 2 566 1.7250000000000000e+02 0 -1 567 59. -2 -3 568 + 1.1475000000000000e+03 + + 1.8885573744773865e-01 -5.3026914596557617e-01 + 3.7803548574447632e-01 -4.6766680479049683e-01 + <_> + 1.4745432853698730e+01 + + 1 2 569 1.3495000000000000e+03 0 -1 570 + 1.8257500000000000e+04 -2 -3 571 2.3425000000000000e+03 + + 6.3086611032485962e-01 -8.6466968059539795e-01 + -5.3896957635879517e-01 5.2345264703035355e-02 + <_> + 1.4932119369506836e+01 + + 1 2 572 2.2500000000000000e+01 0 -1 573 + 1.5000000000000000e+00 -2 -3 574 201. + + 3.3922508358955383e-01 -2.9905751347541809e-01 + 6.2781113386154175e-01 -6.2289994955062866e-01 + <_> + 1.4913761138916016e+01 + + 1 2 575 5.5000000000000000e+00 0 -1 576 + 2.3500000000000000e+01 -2 -3 577 3.1500000000000000e+01 + + -1.2805154547095299e-02 -8.7636989355087280e-01 + 5.5972194671630859e-01 -1.8357984721660614e-02 + <_> + 1.5149147987365723e+01 + + 1 2 578 9.5500000000000000e+01 0 -1 579 + 1.7500000000000000e+01 -2 -3 580 2.3500000000000000e+01 + + 3.1609076261520386e-01 -7.7603405714035034e-01 + -5.4710090160369873e-01 2.3538668453693390e-01 + <_> + 1.5329943656921387e+01 + + 1 2 581 6.5000000000000000e+00 0 -1 582 + 1.2500000000000000e+01 -2 -3 583 1.1050000000000000e+02 + + -6.9671869277954102e-01 4.9136134982109070e-01 + -4.6433421969413757e-01 2.6395168900489807e-01 + <_> + 1.5564647674560547e+01 + + 1 2 584 5.6215000000000000e+03 0 -1 585 + 1.2250000000000000e+02 -2 -3 586 2.3500000000000000e+01 + + 2.3470385372638702e-01 -3.8976871967315674e-01 + -7.1197110414505005e-01 8.2057034969329834e-01 + <_> + 1.5355414390563965e+01 + + 1 2 587 38. 0 -1 588 5.0000000000000000e-01 -2 -3 589 538. + + 1.3751998543739319e-01 -5.2037465572357178e-01 + -5.0987344980239868e-01 4.1290232539176941e-01 + <_> + 1.5045125007629395e+01 + + 1 2 590 1.5645000000000000e+03 0 -1 591 + 5.4325000000000000e+03 -2 -3 592 1.2175000000000000e+03 + + -5.2137178182601929e-01 8.4993147850036621e-01 + -3.6553221940994263e-01 1.5015892684459686e-01 + <_> + 1.5401144027709961e+01 + + 1 2 593 4.9850000000000000e+02 0 -1 594 + 7.4750000000000000e+02 -2 -3 595 1.1765000000000000e+03 + + -6.4674472808837891e-01 3.5601863265037537e-01 + 4.2863798141479492e-01 -5.4054826498031616e-01 + <_> + 1.5869146347045898e+01 + + 1 2 596 1.7500000000000000e+01 0 -1 597 + 1.4500000000000000e+01 -2 -3 598 1.5500000000000000e+01 + + -6.3737052679061890e-01 4.6800240874290466e-01 + 2.9216369986534119e-01 -4.2118266224861145e-01 + <_> + 1.5621976852416992e+01 + + 1 2 599 1.2028050000000000e+05 0 -1 600 + 5.0000000000000000e-01 -2 -3 601 1.6150000000000000e+02 + + 5.1389163732528687e-01 -9.5765459537506104e-01 + -2.4716944992542267e-01 3.0435198545455933e-01 + <_> + 1.5864768028259277e+01 + + 1 2 602 805. 0 -1 603 9.9500000000000000e+01 -2 -3 604 142. + + 2.4279133975505829e-01 -5.3714054822921753e-01 + -7.2764933109283447e-01 9.6386188268661499e-01 + <_> + 1.6094741821289062e+01 + + 1 2 605 1.3500000000000000e+01 0 -1 606 + 3.8500000000000000e+01 -2 -3 607 6.3500000000000000e+01 + + -6.6710120439529419e-01 6.3659375905990601e-01 + 5.6683868169784546e-01 -7.7470704913139343e-02 + <_> + 1.6352821350097656e+01 + + 1 2 608 2.4500000000000000e+01 0 -1 609 321. -2 -3 610 + 2.1500000000000000e+01 + + 3.7493336200714111e-01 -4.8655620217323303e-01 + -3.4665739536285400e-01 4.6393311023712158e-01 + <_> + 1.6565885543823242e+01 + + 1 2 611 99. 0 -1 612 2.7500000000000000e+01 -2 -3 613 18. + + -4.0105590224266052e-01 2.1306316554546356e-01 + 9.1738814115524292e-01 -9.6910119056701660e-01 + <_> + 1.6171833038330078e+01 + + 1 2 614 6.2500000000000000e+01 0 -1 615 850. -2 -3 616 + 6.4350000000000000e+02 + + 3.9383631944656372e-01 -3.4801158308982849e-01 + -5.9990471601486206e-01 2.6293095946311951e-01 + <_> + 1.6745443344116211e+01 + + 1 2 617 1.2715000000000000e+03 0 -1 618 + 4.5000000000000000e+00 -2 -3 619 1.0584500000000000e+04 + + 3.5729202628135681e-01 -3.7123405933380127e-01 + 5.7361000776290894e-01 -7.0969957113265991e-01 + <_> + 1.6956495285034180e+01 + + 1 2 620 3.6500000000000000e+01 0 -1 621 + 1.5000000000000000e+00 -2 -3 622 3.2500000000000000e+01 + + 4.9200624227523804e-01 -8.8115519285202026e-01 + -6.2640070915222168e-01 2.1105219423770905e-01 + <_> + 1.6578645706176758e+01 + + 1 2 623 5.5850000000000000e+02 0 -1 624 + 1.2405000000000000e+03 -2 -3 625 6.2065000000000000e+03 + + -3.0536270141601562e-01 5.6700426340103149e-01 + 5.8548355102539062e-01 -3.8756856322288513e-01 + <_> + 1.6797395706176758e+01 + + 1 2 626 6.3500000000000000e+01 0 -1 627 + 2.6050000000000000e+02 -2 -3 628 3.4035000000000000e+03 + + 2.1875059604644775e-01 -8.0542641878128052e-01 + 7.2240287065505981e-01 -7.4785083532333374e-01 + <_> + 1.7109027862548828e+01 + + 1 2 629 3.8500000000000000e+01 0 -1 630 + 8.5000000000000000e+00 -2 -3 631 6.5000000000000000e+00 + + 6.9990634918212891e-01 -6.7117756605148315e-01 + 5.0323921442031860e-01 -9.7235314548015594e-02 + <_> + 1.7138694763183594e+01 + + 1 2 632 2.2500000000000000e+01 0 -1 633 + 3.5000000000000000e+00 -2 -3 634 2.5850000000000000e+02 + + 2.9667703434824944e-02 -6.7911773920059204e-01 + -3.2311308383941650e-01 3.8892340660095215e-01 + <_> + 1.7337394714355469e+01 + + 1 2 635 1.5450000000000000e+02 0 -1 636 + 2.5000000000000000e+00 -2 -3 637 3.1450000000000000e+02 + + -7.9533338546752930e-01 1.9869966804981232e-01 + -6.8889272212982178e-01 6.1526125669479370e-01 + <_> + 1.7321151733398438e+01 + + 1 2 638 1.0500000000000000e+01 0 -1 639 36. -2 -3 640 + 2.1500000000000000e+01 + + -8.3758604526519775e-01 3.5460218787193298e-01 + 2.2363138198852539e-01 -5.2678769826889038e-01 + <_> + 1.7182849884033203e+01 + + 1 2 641 4.6085000000000000e+03 0 -1 642 + 5.8500000000000000e+01 -2 -3 643 1.9495000000000000e+03 + + -7.5954502820968628e-01 4.3844437599182129e-01 + 5.2219676971435547e-01 -1.3830167055130005e-01 + <_> + 1.6850194931030273e+01 + + 1 2 644 1.5000000000000000e+00 0 -1 645 + 5.3500000000000000e+01 -2 -3 646 5.0000000000000000e-01 + + -3.6336588859558105e-01 3.9829358458518982e-01 + 1.3566142320632935e-01 -5.0935441255569458e-01 + <_> + 1.7548809051513672e+01 + + 1 2 647 5.0000000000000000e-01 0 -1 648 + 4.5000000000000000e+00 -2 -3 649 4.8150000000000000e+02 + + -6.3685965538024902e-01 6.9861376285552979e-01 + -2.4660472571849823e-01 5.1089668273925781e-01 + <_> + 1.7800493240356445e+01 + + 1 2 650 8.4115000000000000e+03 0 -1 651 + 3.5000000000000000e+00 -2 -3 652 1.0500000000000000e+01 + + -4.2067098617553711e-01 2.5168481469154358e-01 + 3.3256745338439941e-01 -8.4237796068191528e-01 + <_> + 1.7848138809204102e+01 + + 1 2 653 1.0500000000000000e+01 0 -1 654 69. -2 -3 655 + 9.5500000000000000e+01 + + -6.9294911623001099e-01 4.2984691262245178e-01 + -6.0193759202957153e-01 4.7644726932048798e-02 + <_> + 1.7507314682006836e+01 + + 1 2 656 8.5000000000000000e+00 0 -1 657 + 8.5000000000000000e+00 -2 -3 658 6.4500000000000000e+01 + + -1. 5.8663016557693481e-01 -3.4082308411598206e-01 + 3.3277565240859985e-01 + <_> + 1.7846509933471680e+01 + + 1 2 659 6.9500000000000000e+01 0 -1 660 + 1.5500000000000000e+01 -2 -3 661 1.5000000000000000e+00 + + 3.3919540047645569e-01 -2.3123474419116974e-01 + -6.8450891971588135e-01 1.9382451474666595e-01 + <_> + 1.7992757797241211e+01 + + 1 2 662 1.2135000000000000e+03 0 -1 663 + 5.5000000000000000e+00 -2 -3 664 9912. + + 1.4624653756618500e-01 -5.0702661275863647e-01 + 5.2294051647186279e-01 -3.3612698316574097e-01 + <_> + 1.8306097030639648e+01 + + 1 2 665 1.1150000000000000e+02 0 -1 666 + 2.9500000000000000e+01 -2 -3 667 131. + + 2.2407530248165131e-01 -4.9484744668006897e-01 + 4.4897791743278503e-01 -5.9033888578414917e-01 + <_> + 1.8481115341186523e+01 + + 1 2 668 5.4500000000000000e+01 0 -1 669 + 4.5000000000000000e+00 -2 -3 670 1.0450000000000000e+02 + + 9.0135312080383301e-01 -8.8288795948028564e-01 + 1.7501948773860931e-01 -5.7581090927124023e-01 + <_> + 1.8067760467529297e+01 + + 1 2 671 3.3500000000000000e+01 0 -1 672 + 5.0000000000000000e-01 -2 -3 673 9.3500000000000000e+01 + + 3.3020740747451782e-01 -5.1798826456069946e-01 + -4.4331407546997070e-01 3.4977889060974121e-01 + <_> + 1.8271715164184570e+01 + + 1 2 674 1.6950000000000000e+02 0 -1 675 + 5.5000000000000000e+00 -2 -3 676 1.5850000000000000e+02 + + -7.4128860235214233e-01 2.0395421981811523e-01 + -6.4517414569854736e-01 1. + <_> + 1.8107772827148438e+01 + + 1 2 677 3.4335000000000000e+03 0 -1 678 + 6.8955000000000000e+03 -2 -3 679 8.2335000000000000e+03 + + -1.0244774073362350e-01 7.3749846220016479e-01 + -4.6216171979904175e-01 7.2175997495651245e-01 + <_> + 1.8459823608398438e+01 + + 1 2 680 4.5000000000000000e+00 0 -1 681 149. -2 -3 682 + 3.5000000000000000e+00 + + -8.7881535291671753e-01 3.5205116868019104e-01 + 2.8036254644393921e-01 -4.4955471158027649e-01 + <_> + 1.8034639358520508e+01 + + 1 2 683 9.2500000000000000e+01 0 -1 684 + 6.0500000000000000e+01 -2 -3 685 1.0795000000000000e+03 + + 3.0652499198913574e-01 -4.2518511414527893e-01 + 4.2748662829399109e-01 -7.5712633132934570e-01 + <_> + 1.8265748977661133e+01 + + 1 2 686 4137. 0 -1 687 4.5000000000000000e+00 -2 -3 688 + 2.2500000000000000e+01 + + 2.6524448394775391e-01 -8.7384039163589478e-01 + 2.3110976815223694e-01 -4.6121290326118469e-01 + <_> + 1.8894989013671875e+01 + + 1 2 689 8.2650000000000000e+02 0 -1 690 + 3.0650000000000000e+02 -2 -3 691 5.6025000000000000e+03 + + -3.5010933876037598e-01 4.3205916881561279e-01 + 6.2924057245254517e-01 -4.4751787185668945e-01 + <_> + 1.9186059951782227e+01 + + 1 2 692 1.1500000000000000e+01 0 -1 693 10537. -2 -3 694 + 2.8500000000000000e+01 + + 7.5397258996963501e-01 -8.4067875146865845e-01 + 2.9107019305229187e-01 -2.9084861278533936e-01 + <_> + 1.9097457885742188e+01 + + 1 2 695 5.0000000000000000e-01 0 -1 696 + 2.3365000000000000e+03 -2 -3 697 53. + + -2.0022928714752197e-01 5.5956262350082397e-01 + -3.5728842020034790e-01 6.0947358608245850e-01 + <_> + 1.9231519699096680e+01 + + 1 2 698 2.9250000000000000e+02 0 -1 699 7389. -2 -3 700 + 7.1615000000000000e+03 + + 4.6205502748489380e-01 -3.7696495652198792e-01 + -5.6401371955871582e-01 1.2572592496871948e-01 + <_> + 1.9182878494262695e+01 + + 1 2 701 1.5000000000000000e+00 0 -1 702 2558. -2 -3 703 + 2.5000000000000000e+00 + + 5.7061773538589478e-01 -8.8573408126831055e-01 + 5.6795483827590942e-01 -4.8640340566635132e-02 + <_> + 1.9205448150634766e+01 + + 1 2 704 6.7250000000000000e+02 0 -1 705 + 4.5185000000000000e+03 -2 -3 706 1.6950000000000000e+02 + + 2.2569710388779640e-02 -5.9597754478454590e-01 -1. + 9.1055244207382202e-01 + <_> + 1.9722917556762695e+01 + + 1 2 707 5.2150000000000000e+02 0 -1 708 + 2.2500000000000000e+01 -2 -3 709 22. + + -3.8346976041793823e-01 1.7193076014518738e-01 + -7.7268058061599731e-01 5.1746833324432373e-01 + <_> + 1.9223962783813477e+01 + + 1 2 710 1.6450000000000000e+02 0 -1 711 + 6.0500000000000000e+01 -2 -3 712 4.4500000000000000e+01 + + 2.2410076856613159e-01 -6.7257648706436157e-01 + -6.6855657100677490e-01 8.4185588359832764e-01 + <_> + 1.9324115753173828e+01 + + 1 2 713 3.1500000000000000e+01 0 -1 714 885. -2 -3 715 458. + + 3.4352478384971619e-01 -6.2290155887603760e-01 + -1.5769523382186890e-01 4.6984970569610596e-01 + <_> + 1.9645074844360352e+01 + + 1 2 716 1.5000000000000000e+00 0 -1 717 + 2.7500000000000000e+01 -2 -3 718 5.0000000000000000e-01 + + -1.5117371082305908e-01 5.1611447334289551e-01 + 3.8312494754791260e-01 -4.8121353983879089e-01 + <_> + 1.9339143753051758e+01 + + 1 2 719 355. 0 -1 720 5.5000000000000000e+00 -2 -3 721 + 4.1500000000000000e+01 + + -3.9813804626464844e-01 2.2346007823944092e-01 1. + -8.0484783649444580e-01 + <_> + 1.9826204299926758e+01 + + 1 2 722 5.0000000000000000e-01 0 -1 723 + 1.4145000000000000e+03 -2 -3 724 2.2500000000000000e+01 + + 4.8705908656120300e-01 -4.7939151525497437e-01 + -4.1103795170783997e-01 3.4255331754684448e-01 + <_> + 2.0040077209472656e+01 + + 1 2 725 1.5585000000000000e+03 0 -1 726 + 7.5450000000000000e+02 -2 -3 727 7.0250000000000000e+02 + + -6.1711019277572632e-01 2.1387414634227753e-01 + 8.2314563915133476e-03 -8.8682103157043457e-01 + <_> + 1.9832237243652344e+01 + + 1 2 728 3.7250000000000000e+02 0 -1 729 + 1.2500000000000000e+01 -2 -3 730 5.0000000000000000e-01 + + 6.4650267362594604e-01 -6.3438403606414795e-01 + 8.2046084105968475e-02 -4.0398535132408142e-01 + <_> + 2.0015359878540039e+01 + + 1 2 731 616. 0 -1 732 5.3950000000000000e+02 -2 -3 733 + 1.6500000000000000e+01 + + 8.7944704294204712e-01 -8.7063318490982056e-01 + -7.1043938398361206e-01 1.8312272429466248e-01 + <_> + 1.9969459533691406e+01 + + 1 2 734 5.5500000000000000e+01 0 -1 735 + 1.8500000000000000e+01 -2 -3 736 463. + + -4.5961013436317444e-01 5.2103579044342041e-01 + -6.5900236368179321e-01 -4.5900702476501465e-02 + <_> + 1.9850994110107422e+01 + + 1 2 737 1.5000000000000000e+00 0 -1 738 + 3.5500000000000000e+01 -2 -3 739 1.3995000000000000e+03 + + -4.4971930980682373e-01 5.4433470964431763e-01 + 1.3450010120868683e-01 -4.4755488634109497e-01 + <_> + 1.9611703872680664e+01 + + 1 2 740 1.2185000000000000e+03 0 -1 741 + 2.5000000000000000e+00 -2 -3 742 2.0500000000000000e+01 + + -1.1004138737916946e-02 -6.4876526594161987e-01 + 5.7901018857955933e-01 -2.3929107189178467e-01 + <_> + 1.9846769332885742e+01 + + 1 2 743 9.5000000000000000e+00 0 -1 744 26. -2 -3 745 + 7.5000000000000000e+00 + + 2.8899505734443665e-01 -7.0432722568511963e-01 + 2.3506632447242737e-01 -6.7175412178039551e-01 + <_> + 1.9991693496704102e+01 + + 1 2 746 5.5000000000000000e+00 0 -1 747 119. -2 -3 748 + 1.2950000000000000e+02 + + 1. -9.5935773849487305e-01 1.4492283761501312e-01 + -6.2346059083938599e-01 + <_> + 2.0697137832641602e+01 + + 1 2 749 108. 0 -1 750 5.5000000000000000e+00 -2 -3 751 + 6.0050000000000000e+02 + + 2.0598402619361877e-01 -3.1419786810874939e-01 + 7.0544409751892090e-01 -9.1675537824630737e-01 + <_> + 2.0869754791259766e+01 + + 1 2 752 2.1500000000000000e+01 0 -1 753 + 8.5000000000000000e+00 -2 -3 754 5.2500000000000000e+01 + + -9.2930352687835693e-01 1. 1.7261737585067749e-01 + -7.1494102478027344e-01 + <_> + 2.0861036300659180e+01 + + 1 2 755 5.0000000000000000e-01 0 -1 756 + 6.5000000000000000e+00 -2 -3 757 36104. + + -9.8012816905975342e-01 3.0874124169349670e-01 + -4.9350947141647339e-01 1.4333745837211609e-01 + <_> + 2.0605552673339844e+01 + + 1 2 758 5.4500000000000000e+01 0 -1 759 + 5.6350000000000000e+02 -2 -3 760 1.5625000000000000e+03 + + 2.8180310130119324e-01 -3.0899211764335632e-01 + 6.7988240718841553e-01 -8.8957315683364868e-01 + <_> + 2.0792449951171875e+01 + + 1 2 761 7.4500000000000000e+01 0 -1 762 + 2.1350000000000000e+02 -2 -3 763 4.5000000000000000e+00 + + 7.5075513124465942e-01 -8.8623046875000000e-01 + 4.6418187022209167e-01 -9.8970189690589905e-02 + <_> + 2.0991796493530273e+01 + + 1 2 764 3985. 0 -1 765 5.5000000000000000e+00 -2 -3 766 + 5.5000000000000000e+00 + + 3.1011736392974854e-01 -2.7613282203674316e-01 -1. + 8.9613044261932373e-01 + <_> + 2.1320064544677734e+01 + + 1 2 767 2.8500000000000000e+01 0 -1 768 + 2.6250000000000000e+02 -2 -3 769 2.6500000000000000e+01 + + 7.0724177360534668e-01 -4.7540894150733948e-01 + 3.2826820015907288e-01 -6.3711547851562500e-01 + <_> + 2.1143175125122070e+01 + + 1 2 770 1.7500000000000000e+01 0 -1 771 + 5.8500000000000000e+01 -2 -3 772 7704. + + -6.2765136361122131e-02 4.9819609522819519e-01 + 1.8703785538673401e-01 -9.2927688360214233e-01 + <_> + 2.1136123657226562e+01 + + 1 2 773 4.5000000000000000e+00 0 -1 774 + 1.5000000000000000e+00 -2 -3 775 6.3500000000000000e+01 + + -8.5042881965637207e-01 3.7720718979835510e-01 + -6.6263186931610107e-01 -7.0531466044485569e-03 + <_> + 2.0957967758178711e+01 + + 1 2 776 2.3355000000000000e+03 0 -1 777 + 1.6655000000000000e+03 -2 -3 778 7.7950000000000000e+02 + + -5.8912044763565063e-01 7.2663074731826782e-01 + 7.1329838037490845e-01 -9.2555418610572815e-02 + <_> + 2.1328319549560547e+01 + + 1 2 779 4.5000000000000000e+00 0 -1 780 + 1.7500000000000000e+01 -2 -3 781 116. + + 5.8393400907516479e-01 -5.6582391262054443e-01 + -7.0427477359771729e-01 -3.2516807317733765e-02 + <_> + 2.1190340042114258e+01 + + 1 2 782 5.0000000000000000e-01 0 -1 783 + 5.5000000000000000e+00 -2 -3 784 2.2500000000000000e+01 + + -7.9387390613555908e-01 4.3818581104278564e-01 + -4.3716219067573547e-01 2.7609312534332275e-01 + <_> + 2.1414947509765625e+01 + + 1 2 785 1.7500000000000000e+01 0 -1 786 + 2.0500000000000000e+01 -2 -3 787 3.4500000000000000e+01 + + -3.2550397515296936e-01 2.9646944999694824e-01 + 3.9801727980375290e-02 -8.1744748353958130e-01 + <_> + 2.1027912139892578e+01 + + 1 2 788 3.5000000000000000e+00 0 -1 789 + 1.0500000000000000e+01 -2 -3 790 3.0015000000000000e+03 + + -5.8203905820846558e-01 3.9097124338150024e-01 + 4.4877341389656067e-01 -4.5889684557914734e-01 + <_> + 2.1614578247070312e+01 + + 1 2 791 1.2545000000000000e+03 0 -1 792 + 5.0000000000000000e-01 -2 -3 793 21. + + 3.3954218029975891e-01 -3.9357089996337891e-01 + -7.9993861913681030e-01 5.8666568994522095e-01 + <_> + 2.2001014709472656e+01 + + 1 2 794 1.5495000000000000e+03 0 -1 795 751. -2 -3 796 + 1.4500000000000000e+01 + + -6.1558878421783447e-01 4.7567668557167053e-01 + 3.8643726706504822e-01 -4.9177539348602295e-01 + <_> + 2.2125329971313477e+01 + + 1 2 797 3.5500000000000000e+01 0 -1 798 + 1.0450000000000000e+02 -2 -3 799 1.2500000000000000e+01 + + 1.7887133359909058e-01 -8.5177820920944214e-01 + 4.1519433259963989e-01 -1.6076141595840454e-01 + <_> + 2.2388074874877930e+01 + + 1 2 800 550. 0 -1 801 3445. -2 -3 802 2.1850000000000000e+02 + + 1. -8.8448894023895264e-01 -2.4786205589771271e-01 + 2.6274520158767700e-01 + <_> + 2.2539171218872070e+01 + + 1 2 803 116554. 0 -1 804 1.7350000000000000e+02 -2 -3 805 + 8.9500000000000000e+01 + + 2.4936345219612122e-01 -6.2610012292861938e-01 + -6.6242986917495728e-01 4.0655055642127991e-01 + <_> + 2.2177883148193359e+01 + + 1 2 806 4.5000000000000000e+00 0 -1 807 + 5.0000000000000000e-01 -2 -3 808 3.5065000000000000e+03 + + -7.4715948104858398e-01 3.9860600233078003e-01 + -5.3111910820007324e-01 1.2362924218177795e-01 + <_> + 2.2504861831665039e+01 + + 1 2 809 1.4865000000000000e+03 0 -1 810 + 5.0000000000000000e-01 -2 -3 811 29. + + 1.3726322352886200e-01 -6.5520441532135010e-01 + -7.5685930252075195e-01 3.2698005437850952e-01 + <_> + 2.2686376571655273e+01 + + 1 2 812 5.2500000000000000e+01 0 -1 813 + 2.6500000000000000e+01 -2 -3 814 3.0500000000000000e+01 + + -1.5744365751743317e-01 5.0805997848510742e-01 + -7.4109727144241333e-01 3.1853440403938293e-01 + <_> + 2.2791370391845703e+01 + + 1 2 815 2.3450000000000000e+02 0 -1 816 + 2.5000000000000000e+00 -2 -3 817 147638. + + -8.8153153657913208e-02 5.4080992937088013e-01 + 4.0426537394523621e-01 -6.1521077156066895e-01 + <_> + 2.2746583938598633e+01 + + 1 2 818 2.2500000000000000e+01 0 -1 819 + 3.7650000000000000e+02 -2 -3 820 3.5000000000000000e+00 + + 8.3446598052978516e-01 -8.2142156362533569e-01 + 6.4422589540481567e-01 -4.4787917286157608e-02 + <_> + 2.2948705673217773e+01 + + 1 2 821 1.0500000000000000e+01 0 -1 822 201. -2 -3 823 + 6.7500000000000000e+01 + + -2.8939151763916016e-01 3.3829051256179810e-01 + -5.8153116703033447e-01 3.8105338811874390e-01 + <_> + 2.2919631958007812e+01 + + 1 2 824 4.5000000000000000e+00 0 -1 825 + 5.2075000000000000e+03 -2 -3 826 3.8500000000000000e+01 + + 6.2978500127792358e-01 -1.7962990701198578e-01 + -6.0869598388671875e-01 -2.9075229540467262e-02 + <_> + 2.3112272262573242e+01 + + 1 2 827 456. 0 -1 828 2.1500000000000000e+01 -2 -3 829 271. + + -6.7311352491378784e-01 1.9264096021652222e-01 + -7.6656156778335571e-01 7.5126051902770996e-01 + <_> + 2.3314619064331055e+01 + + 1 2 830 9.5000000000000000e+00 0 -1 831 62. -2 -3 832 + 1.0250000000000000e+02 + + 5.3542816638946533e-01 -7.8225767612457275e-01 + -4.1664305329322815e-01 2.2309158742427826e-01 + <_> + 2.3092792510986328e+01 + + 1 2 833 1.6245000000000000e+03 0 -1 834 + 2.1405000000000000e+03 -2 -3 835 2.3500000000000000e+01 + + 7.6887971162796021e-01 -7.8312724828720093e-01 + 3.3704435825347900e-01 -2.2182606160640717e-01 + <_> + 2.3098850250244141e+01 + + 1 2 836 5.7500000000000000e+01 0 -1 837 30. -2 -3 838 + 1.1750000000000000e+02 + + -3.9047434926033020e-01 7.0053535699844360e-01 + 6.3777458667755127e-01 -1.5085510909557343e-01 + <_> + 2.3334737777709961e+01 + + 1 2 839 1.9350000000000000e+02 0 -1 840 20715. -2 -3 841 + 3.5000000000000000e+00 + + -1.6165058314800262e-01 5.8560174703598022e-01 + 6.2762081623077393e-02 -5.0060212612152100e-01 + <_> + 2.3548194885253906e+01 + + 1 2 842 1.5500000000000000e+01 0 -1 843 + 4.5000000000000000e+00 -2 -3 844 318. + + 6.7111068964004517e-01 -8.1105804443359375e-01 + 2.1345792710781097e-01 -6.4082610607147217e-01 + <_> + 2.3465780258178711e+01 + + 1 2 845 1.5000000000000000e+00 0 -1 846 + 9.6250000000000000e+02 -2 -3 847 1.0500000000000000e+01 + + 3.3311456441879272e-01 -7.9367685317993164e-01 + 5.8400928974151611e-01 -8.2414992153644562e-02 + <_> + 2.3698833465576172e+01 + + 1 2 848 2.5750000000000000e+02 0 -1 849 + 2.0622500000000000e+04 -2 -3 850 133. + + -2.1840496361255646e-01 6.1215102672576904e-01 + 7.2797334194183350e-01 -7.8106528520584106e-01 + <_> + 2.4240703582763672e+01 + + 1 2 851 62616. 0 -1 852 5.1750000000000000e+02 -2 -3 853 + 2.0985000000000000e+03 + + -7.3088161647319794e-02 5.4187005758285522e-01 + -9.7861820459365845e-01 8.4708303213119507e-01 + <_> + 2.4200925827026367e+01 + + 1 2 854 13008. 0 -1 855 1571. -2 -3 856 45. + + 6.6456145048141479e-01 -3.9776403456926346e-02 + -8.6307746171951294e-01 1. + <_> + 2.4082960128784180e+01 + + 1 2 857 3.5000000000000000e+00 0 -1 858 + 9.5000000000000000e+00 -2 -3 859 3.5000000000000000e+00 + + -1. 1. 2.9574161767959595e-01 -2.3182141780853271e-01 + <_> + 2.4084737777709961e+01 + + 1 2 860 3.7500000000000000e+01 0 -1 861 245. -2 -3 862 + 7.5000000000000000e+00 + + 4.1369399428367615e-01 -4.1193068027496338e-01 + 5.4411876201629639e-01 -1.9174022972583771e-01 + <_> + 2.3971153259277344e+01 + + 1 2 863 7.2500000000000000e+01 0 -1 864 + 2.5500000000000000e+01 -2 -3 865 5620. + + 4.0953439474105835e-01 -7.1287387609481812e-01 + 2.9135236144065857e-01 -4.4266882538795471e-01 + <_> + 2.4037570953369141e+01 + + 1 2 866 2.4500000000000000e+01 0 -1 867 + 2.1500000000000000e+01 -2 -3 868 1.3850000000000000e+02 + + -6.6728180646896362e-01 8.0503904819488525e-01 + 2.9000800848007202e-01 -3.3851844072341919e-01 + <_> + 2.4266254425048828e+01 + + 1 2 869 5.0000000000000000e-01 0 -1 870 + 1.7250000000000000e+02 -2 -3 871 2.2350000000000000e+02 + + 4.8248341679573059e-01 -3.8941776752471924e-01 + -3.1365787982940674e-01 5.1915067434310913e-01 + <_> + 2.4528257369995117e+01 + + 1 2 872 4.3500000000000000e+01 0 -1 873 38. -2 -3 874 + 1.8500000000000000e+01 + + 8.9310199022293091e-02 -7.2979074716567993e-01 + -8.7608027458190918e-01 2.6200246810913086e-01 + <_> + 2.4948534011840820e+01 + + 1 2 875 1.7500000000000000e+01 0 -1 876 + 5.0000000000000000e-01 -2 -3 877 1.9050000000000000e+02 + + 1.2763984501361847e-01 -6.1743724346160889e-01 + 4.2027613520622253e-01 -3.6524018645286560e-01 + <_> + 2.4699710845947266e+01 + + 1 2 878 1.5500000000000000e+01 0 -1 879 + 9.5000000000000000e+00 -2 -3 880 1.1950000000000000e+02 + + -7.6706290245056152e-01 4.8537570238113403e-01 + -5.4855662584304810e-01 8.2174651324748993e-02 + <_> + 2.4984062194824219e+01 + + 1 2 881 1.5000000000000000e+00 0 -1 882 + 1.4500000000000000e+01 -2 -3 883 7.4500000000000000e+01 + + -9.5929491519927979e-01 2.8435263037681580e-01 + -5.6600302457809448e-01 1.5080869197845459e-01 + <_> + 2.5305467605590820e+01 + + 1 2 884 1.5000000000000000e+00 0 -1 885 + 1.4500000000000000e+01 -2 -3 886 5.2150000000000000e+02 + + 3.2140514254570007e-01 -7.5512856245040894e-01 + -5.6036186218261719e-01 1.1670445650815964e-01 + <_> + 2.5274513244628906e+01 + + 1 2 887 1.9500000000000000e+01 0 -1 888 + 1.0650000000000000e+02 -2 -3 889 8.4050000000000000e+02 + + -8.7158387899398804e-01 4.3117862939834595e-01 + 1.4426548779010773e-01 -4.6586552262306213e-01 + <_> + 2.4883895874023438e+01 + + 1 2 890 3.0650000000000000e+02 0 -1 891 + 5.0000000000000000e-01 -2 -3 892 4.5500000000000000e+01 + + 1.8699711561203003e-01 -3.9061647653579712e-01 + -7.0082974433898926e-01 6.7297667264938354e-01 + <_> + 2.5504806518554688e+01 + + 1 2 893 5.0000000000000000e-01 0 -1 894 + 3.1151500000000000e+04 -2 -3 895 500. + + 6.5120726823806763e-01 -4.1004878282546997e-01 + -4.7606337070465088e-01 9.5995731651782990e-02 + <_> + 2.5152439117431641e+01 + + 1 2 896 5.5000000000000000e+00 0 -1 897 + 1.9500000000000000e+01 -2 -3 898 5.9500000000000000e+01 + + -1.2321064621210098e-01 6.1841166019439697e-01 + -3.6375361680984497e-01 5.2369672060012817e-01 + <_> + 2.5155344009399414e+01 + + 1 2 899 1.8674500000000000e+04 0 -1 900 + 2.1850000000000000e+02 -2 -3 901 8562. + + -1.6005823388695717e-02 6.5699905157089233e-01 + -9.5848602056503296e-01 5.1249152421951294e-01 + <_> + 2.5483896255493164e+01 + + 1 2 902 9.1500000000000000e+01 0 -1 903 + 5.4500000000000000e+01 -2 -3 904 1673. + + -1.8930622935295105e-01 3.2855287194252014e-01 + 3.8335686922073364e-01 -9.2048138380050659e-01 + <_> + 2.5274023056030273e+01 + + 1 2 905 9.0500000000000000e+01 0 -1 906 + 2.9500000000000000e+01 -2 -3 907 161. + + 1.9278690218925476e-01 -4.3163070082664490e-01 + -8.2271754741668701e-01 6.6138559579849243e-01 + <_> + 2.5197338104248047e+01 + + 1 2 908 6.0500000000000000e+01 0 -1 909 + 3.5000000000000000e+00 -2 -3 910 2.1500000000000000e+01 + + 1.6147840023040771e-01 -7.2664386034011841e-01 + 6.0210800170898438e-01 -7.6684340834617615e-02 + <_> + 2.5375751495361328e+01 + + 1 2 911 1.2500000000000000e+01 0 -1 912 + 1.0500000000000000e+01 -2 -3 913 3.5000000000000000e+00 + + 3.1757584214210510e-01 -9.6368086338043213e-01 + 3.0798566341400146e-01 -2.2424852848052979e-01 + <_> + 2.5239341735839844e+01 + + 1 2 914 2.0500000000000000e+01 0 -1 915 + 5.0000000000000000e-01 -2 -3 916 5.2500000000000000e+01 + + 5.4820358753204346e-01 -2.6598191261291504e-01 + 6.2160044908523560e-01 -6.1119222640991211e-01 + <_> + 2.5769451141357422e+01 + + 1 2 917 8.5000000000000000e+00 0 -1 918 + 3.5000000000000000e+00 -2 -3 919 785. + + -5.2361053228378296e-01 1.3663402758538723e-02 + 5.3010904788970947e-01 -5.6690508127212524e-01 + <_> + 2.6132120132446289e+01 + + 1 2 920 3.5000000000000000e+00 0 -1 921 + 5.5000000000000000e+00 -2 -3 922 2.7500000000000000e+01 + + -3.4756454825401306e-01 6.6776388883590698e-01 + -3.2966667413711548e-01 3.6266979575157166e-01 + <_> + 2.5398084640502930e+01 + + 1 2 923 3.7500000000000000e+01 0 -1 924 + 4.5450000000000000e+02 -2 -3 925 76. + + -5.9789156913757324e-01 2.5262823700904846e-01 + -7.3403567075729370e-01 2.0674343407154083e-01 + <_> + 2.5510837554931641e+01 + + 1 2 926 11321. 0 -1 927 2.5000000000000000e+00 -2 -3 928 + 1.1450000000000000e+02 + + -8.3973264694213867e-01 1.1275193840265274e-01 + -9.1843432188034058e-01 8.7821447849273682e-01 + <_> + 2.6130455017089844e+01 + + 1 2 929 6.5000000000000000e+00 0 -1 930 3083. -2 -3 931 + 3.0875000000000000e+03 + + 4.2603471875190735e-01 -3.6732077598571777e-01 + -4.1711282730102539e-01 6.1961770057678223e-01 + <_> + 2.6262090682983398e+01 + + 1 2 932 17935. 0 -1 933 425. -2 -3 934 + 2.7176500000000000e+04 + + 4.5509326457977295e-01 -6.6757386922836304e-01 + -5.3166776895523071e-01 1.3163578510284424e-01 + <_> + 2.6658596038818359e+01 + + 1 2 935 1.7500000000000000e+01 0 -1 936 + 1.1745000000000000e+03 -2 -3 937 5.0000000000000000e-01 + + 2.5388157367706299e-01 -7.9901087284088135e-01 + 4.5095619559288025e-01 -1.0241491347551346e-01 + <_> + 2.6969305038452148e+01 + + 1 2 938 3.0500000000000000e+01 0 -1 939 + 2.4500000000000000e+01 -2 -3 940 2.2500000000000000e+01 + + 5.1047235727310181e-02 -8.9242154359817505e-01 + 3.1070950627326965e-01 -2.6842564344406128e-01 + <_> + 2.6705583572387695e+01 + + 1 2 941 1.3050000000000000e+02 0 -1 942 + 3.4500000000000000e+01 -2 -3 943 2.2150000000000000e+02 + + -1.1592853814363480e-01 -7.7454018592834473e-01 + 4.5384824275970459e-01 -3.1817260384559631e-01 + <_> + 2.6782285690307617e+01 + + 1 2 944 1.7735000000000000e+03 0 -1 945 + 9.5000000000000000e+00 -2 -3 946 4.5705000000000000e+03 + + -3.9006590843200684e-02 -9.5107847452163696e-01 + -6.5736269950866699e-01 1.7125985026359558e-01 + <_> + 2.7105680465698242e+01 + + 1 2 947 1.7625000000000000e+03 0 -1 948 + 1.3850000000000000e+02 -2 -3 949 1.9750000000000000e+02 + + 3.6351567506790161e-01 -5.5703014135360718e-01 + 1.4079628884792328e-01 -5.2406501770019531e-01 + <_> + 2.7263711929321289e+01 + + 1 2 950 2.5000000000000000e+00 0 -1 951 + 5.1850000000000000e+02 -2 -3 952 1.0500000000000000e+01 + + 6.5141850709915161e-01 -9.1679638624191284e-01 + 2.9593178629875183e-01 -2.6542136073112488e-01 + <_> + 2.6919979095458984e+01 + + 1 2 953 1286. 0 -1 954 5.0500000000000000e+01 -2 -3 955 + 9549. + + 2.3069593310356140e-01 -3.4373316168785095e-01 + 7.6501649618148804e-01 -1.6475467383861542e-01 + <_> + 2.7302589416503906e+01 + + 1 2 956 3.0500000000000000e+01 0 -1 957 + 3.5000000000000000e+00 -2 -3 958 20. + + 4.2295122146606445e-01 -5.0685709714889526e-01 + -6.1503076553344727e-01 3.8261166214942932e-01 + <_> + 2.7030504226684570e+01 + + 1 2 959 1.5000000000000000e+00 0 -1 960 + 4.2500000000000000e+01 -2 -3 961 7879. + + -8.3279174566268921e-01 3.1151020526885986e-01 + 5.7181537151336670e-01 -4.0998581051826477e-01 + <_> + 2.7195131301879883e+01 + + 1 2 962 1.9550000000000000e+02 0 -1 963 + 9.7500000000000000e+01 -2 -3 964 1.7450000000000000e+02 + + 1.7131289839744568e-01 -7.6953160762786865e-01 + -8.5992205142974854e-01 9.4537514448165894e-01 + <_> + 2.7257419586181641e+01 + + 1 2 965 5.1150000000000000e+02 0 -1 966 + 2.3335000000000000e+03 -2 -3 967 37646. + + -5.3452479839324951e-01 5.5600736290216446e-02 + 9.5302796363830566e-01 -8.5994201898574829e-01 + <_> + 2.7456840515136719e+01 + + 1 2 968 2.7500000000000000e+01 0 -1 969 + 4.5000000000000000e+00 -2 -3 970 3.2250000000000000e+02 + + 2.6460289955139160e-01 -3.8417342305183411e-01 + 4.4693005084991455e-01 -8.1004393100738525e-01 + <_> + 2.7806034088134766e+01 + + 1 2 971 2.3500000000000000e+01 0 -1 972 + 7.6500000000000000e+01 -2 -3 973 1.2500000000000000e+01 + + -5.5745208263397217e-01 3.4919399023056030e-01 + 3.5557851195335388e-01 -5.3877633810043335e-01 + <_> + 2.7538705825805664e+01 + + 1 2 974 7.9500000000000000e+01 0 -1 975 + 1.4500000000000000e+01 -2 -3 976 87. + + 2.8678986430168152e-01 -2.9876446723937988e-01 + 8.6640423536300659e-01 -1. + <_> + 2.7824981689453125e+01 + + 1 2 977 2.5550000000000000e+02 0 -1 978 + 4.5000000000000000e+00 -2 -3 979 4.8500000000000000e+01 + + 2.7033209800720215e-01 -5.0700926780700684e-01 + -6.5432757139205933e-01 3.9897635579109192e-01 + <_> + 2.8039585113525391e+01 + + 1 2 980 8.5500000000000000e+01 0 -1 981 + 1.2500000000000000e+01 -2 -3 982 2.1150000000000000e+02 + + -9.3840378522872925e-01 2.1460363268852234e-01 + -7.5958758592605591e-01 3.2656311988830566e-01 + <_> + 2.8358228683471680e+01 + + 1 2 983 2.5000000000000000e+00 0 -1 984 154. -2 -3 985 + 5.5000000000000000e+00 + + 1.8448559939861298e-01 -8.2974767684936523e-01 + 3.1864368915557861e-01 -2.1115814149379730e-01 + <_> + 2.7895002365112305e+01 + + 1 2 986 1.5500000000000000e+01 0 -1 987 3760. -2 -3 988 + 7.4650000000000000e+02 + + 5.6718933582305908e-01 -4.6322652697563171e-01 + -1.5654714405536652e-01 4.8763912916183472e-01 + <_> + 2.8411203384399414e+01 + + 1 2 989 3.6500000000000000e+01 0 -1 990 + 5.5000000000000000e+00 -2 -3 991 177. + + 1.9065493345260620e-01 -4.4433963298797607e-01 + 5.1620143651962280e-01 -6.8428224325180054e-01 + <_> + 2.8243703842163086e+01 + + 1 2 992 2.2550000000000000e+02 0 -1 993 + 1.0702500000000000e+04 -2 -3 994 2.1500000000000000e+01 + + 9.7185559570789337e-02 -8.7033015489578247e-01 + 2.9659673571586609e-01 -4.0642136335372925e-01 + <_> + 2.8063882827758789e+01 + + 1 2 995 1.1500000000000000e+01 0 -1 996 29. -2 -3 997 + 6.5000000000000000e+00 + + -1. 1. 3.6489042639732361e-01 -1.7982187867164612e-01 + <_> + 2.8595172882080078e+01 + + 1 2 998 3.4500000000000000e+01 0 -1 999 + 3.2500000000000000e+01 -2 -3 1000 1.1750000000000000e+02 + + 7.5150117278099060e-02 -5.3011858463287354e-01 + -3.1684866547584534e-01 5.3129112720489502e-01 + <_> + 2.8468202590942383e+01 + + 1 2 1001 1.6628500000000000e+04 0 -1 1002 + 1.0500000000000000e+01 -2 -3 1003 3.3545000000000000e+03 + + 6.4890080690383911e-01 -6.3209486007690430e-01 + 6.6508811712265015e-01 -1.2697088718414307e-01 + <_> + 2.8374160766601562e+01 + + 1 2 1004 8.5000000000000000e+00 0 -1 1005 + 8.5000000000000000e+00 -2 -3 1006 1.5000000000000000e+00 + + 5.2094990015029907e-01 -9.4638687372207642e-01 + 4.4523945450782776e-01 -9.4041898846626282e-02 + <_> + 2.8551000595092773e+01 + + 1 2 1007 3.1950000000000000e+02 0 -1 1008 + 6.6500000000000000e+01 -2 -3 1009 9.5000000000000000e+00 + + 6.6274866461753845e-02 -9.6256363391876221e-01 + -4.5958206057548523e-01 1.7684090137481689e-01 + <_> + 2.8745084762573242e+01 + + 1 2 1010 1.2350000000000000e+02 0 -1 1011 + 5.5000000000000000e+00 -2 -3 1012 2.3500000000000000e+01 + + -8.1710654497146606e-01 1.9408319890499115e-01 + -6.5851712226867676e-01 6.5294885635375977e-01 + <_> + 2.8799137115478516e+01 + + 1 2 1013 1.5000000000000000e+00 0 -1 1014 6367. -2 -3 1015 + 4.7500000000000000e+01 + + -5.7579481601715088e-01 6.5927535295486450e-01 + 3.2614521682262421e-02 -5.5185180902481079e-01 + <_> + 2.9203039169311523e+01 + + 1 2 1016 4.8500000000000000e+01 0 -1 1017 1563. -2 -3 1018 + 174. + + -1.8832503259181976e-01 8.4307962656021118e-01 + 6.7039912939071655e-01 -9.4139146804809570e-01 + <_> + 2.8794641494750977e+01 + + 1 2 1019 3.3355000000000000e+03 0 -1 1020 + 6.6555000000000000e+03 -2 -3 1021 8.7150000000000000e+02 + + -9.0944504737854004e-01 4.4833663105964661e-01 + -4.0839809179306030e-01 1.7850229144096375e-01 + <_> + 2.8677459716796875e+01 + + 1 2 1022 1.2185000000000000e+03 0 -1 1023 + 8.2550000000000000e+02 -2 -3 1024 3.0550000000000000e+02 + + -3.4955474734306335e-01 6.4450144767761230e-01 + 6.0581982135772705e-01 -1.1718237400054932e-01 + <_> + 2.8913532257080078e+01 + + 1 2 1025 2.7500000000000000e+01 0 -1 1026 + 2.7500000000000000e+01 -2 -3 1027 4.3500000000000000e+01 + + -8.5049676895141602e-01 2.3607361316680908e-01 + 7.3098081350326538e-01 -6.9291877746582031e-01 + <_> + 2.9108362197875977e+01 + + 1 2 1028 7.5000000000000000e+00 0 -1 1029 + 9.5000000000000000e+00 -2 -3 1030 4.5000000000000000e+00 + + -8.3998674154281616e-01 3.6129420995712280e-01 + 9.7287259995937347e-02 -5.4456633329391479e-01 + <_> + 2.8601478576660156e+01 + + 1 2 1031 6.9500000000000000e+01 0 -1 1032 3194. -2 -3 1033 + 1194. + + 1.1185812205076218e-01 -5.0688385963439941e-01 + -5.2819758653640747e-01 4.6284502744674683e-01 + <_> + 2.8964368820190430e+01 + + 1 2 1034 2.5000000000000000e+00 0 -1 1035 + 3.5000000000000000e+00 -2 -3 1036 5.5000000000000000e+00 + + -6.3642036914825439e-01 3.6289060115814209e-01 + 7.4139624834060669e-01 -4.1967025399208069e-01 + <_> + 2.9433172225952148e+01 + + 1 2 1037 3.0500000000000000e+01 0 -1 1038 + 5.0000000000000000e-01 -2 -3 1039 7.9500000000000000e+01 + + 3.6465510725975037e-01 -3.9573243260383606e-01 + -6.1006444692611694e-01 4.6880471706390381e-01 + <_> + 2.9406284332275391e+01 + + 1 2 1040 850. 0 -1 1041 8.3500000000000000e+01 -2 -3 1042 + 503. + + -1.3215389847755432e-01 5.3341400623321533e-01 + -6.0456317663192749e-01 1.4337512850761414e-01 + <_> + 2.9681335449218750e+01 + + 1 2 1043 5.0000000000000000e-01 0 -1 1044 + 2.2500000000000000e+01 -2 -3 1045 7.1050000000000000e+02 + + -8.8528215885162354e-02 6.7735338211059570e-01 + -4.3227946758270264e-01 2.7505078911781311e-01 + <_> + 2.9964553833007812e+01 + + 1 2 1046 9.8500000000000000e+01 0 -1 1047 + 3.1500000000000000e+01 -2 -3 1048 2.7650000000000000e+02 + + 2.8321748971939087e-01 -3.9361628890037537e-01 + -8.2609468698501587e-01 2.6064848899841309e-01 + <_> + 2.9945455551147461e+01 + + 1 2 1049 8.7500000000000000e+01 0 -1 1050 + 2.2385000000000000e+03 -2 -3 1051 6.4500000000000000e+01 + + 6.9241017103195190e-01 -1.5301111340522766e-01 + -6.6095316410064697e-01 -1.9096992909908295e-02 + <_> + 3.0012765884399414e+01 + + 1 2 1052 1.2500000000000000e+01 0 -1 1053 + 9.5000000000000000e+00 -2 -3 1054 5.0750000000000000e+02 + + -8.3019262552261353e-01 6.7893797159194946e-01 + -1.2832325696945190e-01 4.3415006995201111e-01 + <_> + 2.9930473327636719e+01 + + 1 2 1055 1.8500000000000000e+01 0 -1 1056 + 1.2500000000000000e+01 -2 -3 1057 8.5000000000000000e+00 + + -3.6613929271697998e-01 4.8394933342933655e-01 + 1.7974837124347687e-01 -4.4913277029991150e-01 + <_> + 3.0477281570434570e+01 + + 1 2 1058 5.1950000000000000e+02 0 -1 1059 + 4.4500000000000000e+01 -2 -3 1060 114. + + -7.6940767467021942e-02 5.4680854082107544e-01 + -8.7260067462921143e-01 6.8811720609664917e-01 + <_> + 3.0773675918579102e+01 + + 1 2 1061 1.0450000000000000e+02 0 -1 1062 + 2.8150000000000000e+02 -2 -3 1063 1125. + + 5.4583191871643066e-01 -5.2532721310853958e-02 + -7.8279995918273926e-01 3.1823691725730896e-01 + <_> + 3.0351808547973633e+01 + + 1 2 1064 3.5000000000000000e+00 0 -1 1065 + 1.5500000000000000e+01 -2 -3 1066 55. + + -7.3623555898666382e-01 3.5894340276718140e-01 + -4.2186784744262695e-01 4.3861863017082214e-01 + <_> + 3.0537498474121094e+01 + + 1 2 1067 4307. 0 -1 1068 1160. -2 -3 1069 + 2.1660500000000000e+04 + + -7.8279590606689453e-01 4.5567861199378967e-01 + 1.8568974733352661e-01 -8.9434182643890381e-01 + <_> + 3.0696584701538086e+01 + + 1 2 1070 4.4285000000000000e+03 0 -1 1071 + 5.0000000000000000e-01 -2 -3 1072 3.1735000000000000e+03 + + 2.0552167296409607e-01 -4.5957171916961670e-01 + 7.2746735811233521e-01 -9.0351656079292297e-02 + <_> + 3.0743759155273438e+01 + + 1 2 1073 3.7500000000000000e+01 0 -1 1074 + 9.5000000000000000e+00 -2 -3 1075 1.6750000000000000e+02 + + -1.5780667960643768e-01 4.7251480817794800e-01 + -6.7792648077011108e-01 4.7175608575344086e-02 + <_> + 3.0970186233520508e+01 + + 1 2 1076 3.3550000000000000e+02 0 -1 1077 + 1.5850000000000000e+02 -2 -3 1078 6.7500000000000000e+01 + + 2.2642576694488525e-01 -7.5154268741607666e-01 + -7.6098370552062988e-01 -2.8098121285438538e-02 + <_> + 3.0785564422607422e+01 + + 1 2 1079 3.5000000000000000e+00 0 -1 1080 + 1.0750000000000000e+02 -2 -3 1081 5.5000000000000000e+00 + + -1. 1. 3.4101343154907227e-01 -1.8462051451206207e-01 + <_> + 3.0677804946899414e+01 + + 1 2 1082 1.8745000000000000e+03 0 -1 1083 8. -2 -3 1084 + 2.7950000000000000e+02 + + 3.8025709986686707e-01 -9.3898135423660278e-01 + 4.3168732523918152e-01 -1.0776055604219437e-01 + <_> + 3.1114505767822266e+01 + + 1 2 1085 1.2235000000000000e+03 0 -1 1086 502. -2 -3 1087 + 1.4500000000000000e+01 + + -3.4203383326530457e-01 8.8017475605010986e-01 + -6.2440735101699829e-01 4.3670186400413513e-01 + <_> + 3.0781503677368164e+01 + + 1 2 1088 1.0765000000000000e+03 0 -1 1089 + 1.4445000000000000e+03 -2 -3 1090 6.5000000000000000e+00 + + -1.0597463697195053e-01 5.4891431331634521e-01 + 2.9310002923011780e-01 -3.9375761151313782e-01 + <_> + 3.1352016448974609e+01 + + 1 2 1091 5.2500000000000000e+01 0 -1 1092 + 1.5000000000000000e+00 -2 -3 1093 272. + + 6.0849022865295410e-01 -2.5873470306396484e-01 + 5.7051157951354980e-01 -1. + <_> + 3.1657224655151367e+01 + + 1 2 1094 5.5000000000000000e+00 0 -1 1095 + 1.6500000000000000e+01 -2 -3 1096 30152. + + -9.6481657028198242e-01 8.0561167001724243e-01 + 4.4867545366287231e-01 -1.1930578947067261e-01 + <_> + 3.1797657012939453e+01 + + 1 2 1097 4.5000000000000000e+00 0 -1 1098 + 1.4500000000000000e+01 -2 -3 1099 3.4500000000000000e+01 + + -3.8230931758880615e-01 6.5411078929901123e-01 + 4.3631002306938171e-02 -7.3598957061767578e-01 + <_> + 3.1739580154418945e+01 + + 1 2 1100 6.5000000000000000e+00 0 -1 1101 + 3.5000000000000000e+00 -2 -3 1102 2.5500000000000000e+01 + + 2.6922503113746643e-01 -9.2841345071792603e-01 + -5.8075804263353348e-02 5.9674555063247681e-01 + <_> + 3.2161308288574219e+01 + + 1 2 1103 5.0000000000000000e-01 0 -1 1104 + 1.5500000000000000e+01 -2 -3 1105 1.5000000000000000e+00 + + -7.3271411657333374e-01 4.2172768712043762e-01 + 1.8879570066928864e-01 -4.8092129826545715e-01 + <_> + 3.1522403717041016e+01 + + 1 2 1106 1.7500000000000000e+01 0 -1 1107 + 3.5000000000000000e+00 -2 -3 1108 5.1500000000000000e+01 + + 4.1741237044334412e-01 -6.3890427350997925e-01 + -2.4483518302440643e-01 3.4861907362937927e-01 + <_> + 3.1028701782226562e+01 + + 1 2 1109 1.6500000000000000e+01 0 -1 1110 + 7.5500000000000000e+01 -2 -3 1111 1.5595000000000000e+03 + + 2.1001176536083221e-01 -5.4036855697631836e-01 + 8.2853209972381592e-01 -6.6984134912490845e-01 + <_> + 3.0648044586181641e+01 + + 1 2 1112 1.3500000000000000e+01 0 -1 1113 + 5.0000000000000000e-01 -2 -3 1114 5.5000000000000000e+00 + + 2.0337771624326706e-02 -6.9217932224273682e-01 + 3.1262809038162231e-01 -3.8065665960311890e-01 + <_> + 3.0457332611083984e+01 + + 1 2 1115 1.0425000000000000e+03 0 -1 1116 + 2.1105000000000000e+03 -2 -3 1117 5.0000000000000000e-01 + + 8.5383254289627075e-01 -9.4994091987609863e-01 + 3.6234918236732483e-01 -1.9071219861507416e-01 + <_> + 3.0355703353881836e+01 + + 1 2 1118 417. 0 -1 1119 47393. -2 -3 1120 + 1.3500000000000000e+01 + + 1.4608249068260193e-01 -7.7895587682723999e-01 + 5.4214590787887573e-01 -1.0162991285324097e-01 + <_> + 3.0591539382934570e+01 + + 1 2 1121 1.0505000000000000e+03 0 -1 1122 + 3.5000000000000000e+00 -2 -3 1123 1.2500000000000000e+01 + + 2.6039215922355652e-01 -8.2724225521087646e-01 + 2.3583582043647766e-01 -4.2682540416717529e-01 + <_> + 3.1194660186767578e+01 + + 1 2 1124 4.6185000000000000e+03 0 -1 1125 + 1.0500000000000000e+01 -2 -3 1126 1.9150000000000000e+02 + + -8.0647492408752441e-01 1.1079805344343185e-01 + 6.0312074422836304e-01 -8.1773541867733002e-02 + <_> + 3.0726728439331055e+01 + + 1 2 1127 1.3500000000000000e+01 0 -1 1128 + 4.5000000000000000e+00 -2 -3 1129 4.1550000000000000e+02 + + -6.2268900871276855e-01 3.8671565055847168e-01 + 2.8028538823127747e-01 -4.6793088316917419e-01 + <_> + 3.1088666915893555e+01 + + 1 2 1130 8.5000000000000000e+00 0 -1 1131 + 5.8445000000000000e+03 -2 -3 1132 2.8500000000000000e+01 + + -3.3040379639714956e-04 -9.1474950313568115e-01 + 3.6193940043449402e-01 -1.4911226928234100e-01 + <_> + 3.1474407196044922e+01 + + 1 2 1133 1.5500000000000000e+01 0 -1 1134 + 3.5000000000000000e+00 -2 -3 1135 1.2525000000000000e+03 + + 6.4907115697860718e-01 -5.0786149501800537e-01 + -2.0913411676883698e-01 3.8573962450027466e-01 + <_> + 3.1632471084594727e+01 + + 1 2 1136 6.5000000000000000e+00 0 -1 1137 + 3.7500000000000000e+01 -2 -3 1138 3.5500000000000000e+01 + + 6.3346821069717407e-01 -5.2402967214584351e-01 + -4.6075040102005005e-01 1.5806287527084351e-01 + <_> + 3.1587083816528320e+01 + + 1 2 1139 2.8950000000000000e+02 0 -1 1140 + 1.2865000000000000e+03 -2 -3 1141 8.0500000000000000e+01 + + -4.5387003570795059e-02 6.0369354486465454e-01 + -8.8128578662872314e-01 1.6069179773330688e-01 + <_> + 3.1416742324829102e+01 + + 1 2 1142 6.0500000000000000e+01 0 -1 1143 2554. -2 -3 1144 + 2.5000000000000000e+00 + + 5.8986186981201172e-01 -7.9697668552398682e-01 + 4.0921381115913391e-01 -1.7034149169921875e-01 + <_> + 3.1597267150878906e+01 + + 1 2 1145 7.5000000000000000e+00 0 -1 1146 + 1.2500000000000000e+01 -2 -3 1147 3.3500000000000000e+01 + + -7.0123994350433350e-01 9.0972447395324707e-01 + 1.8052530288696289e-01 -7.1117341518402100e-01 + <_> + 3.1853481292724609e+01 + + 1 2 1148 2.5000000000000000e+00 0 -1 1149 + 1.6500000000000000e+01 -2 -3 1150 50. + + -4.6300759911537170e-01 2.5621402263641357e-01 + -5.8134639263153076e-01 6.4391428232192993e-01 + <_> + 3.2041400909423828e+01 + + 1 2 1151 1.5000000000000000e+00 0 -1 1152 + 5.5000000000000000e+00 -2 -3 1153 6.6500000000000000e+01 + + 4.4350862503051758e-01 -6.5627163648605347e-01 + -4.0067231655120850e-01 3.3987161517143250e-01 + <_> + 3.2274913787841797e+01 + + 1 2 1154 2.2500000000000000e+01 0 -1 1155 121. -2 -3 1156 + 4.0750000000000000e+02 + + -5.6885540485382080e-01 2.3351371288299561e-01 + 6.7405563592910767e-01 -5.4761618375778198e-01 + <_> + 3.2459445953369141e+01 + + 1 2 1157 2.1500000000000000e+01 0 -1 1158 + 1.2500000000000000e+01 -2 -3 1159 1.9500000000000000e+01 + + -8.8360142707824707e-01 2.5230798125267029e-01 + 1.1890246719121933e-01 -5.4317802190780640e-01 + <_> + 3.2713863372802734e+01 + + 1 2 1160 3.9500000000000000e+01 0 -1 1161 + 4.5000000000000000e+00 -2 -3 1162 2.2635000000000000e+03 + + 4.9993959069252014e-01 -4.6222266554832458e-01 + -8.2206004858016968e-01 2.5441682338714600e-01 + <_> + 3.2391437530517578e+01 + + 1 2 1163 1.8500000000000000e+01 0 -1 1164 + 2.2500000000000000e+01 -2 -3 1165 1.1500000000000000e+01 + + -8.3650416135787964e-01 2.8401935100555420e-01 + 2.4446329474449158e-01 -5.4215461015701294e-01 + <_> + 3.2313743591308594e+01 + + 1 2 1166 2.1500000000000000e+01 0 -1 1167 + 4.4750000000000000e+02 -2 -3 1168 7.5000000000000000e+00 + + 2.8188237547874451e-01 -7.0770967006683350e-01 + 5.1904022693634033e-01 -7.7693074941635132e-02 + <_> + 3.2547096252441406e+01 + + 1 2 1169 3.8500000000000000e+01 0 -1 1170 + 1.0500000000000000e+01 -2 -3 1171 5.4500000000000000e+01 + + -5.1064568758010864e-01 2.3335392773151398e-01 + -7.8815060853958130e-01 1.9936113059520721e-01 + <_> + 3.2640663146972656e+01 + + 1 2 1172 2.5000000000000000e+00 0 -1 1173 + 5.5000000000000000e+00 -2 -3 1174 1330. + + -4.3339151144027710e-01 4.2221209406852722e-01 + -3.6630377173423767e-01 7.0252496004104614e-01 + <_> + 3.2781063079833984e+01 + + 1 2 1175 1.5000000000000000e+00 0 -1 1176 + 3.5000000000000000e+00 -2 -3 1177 5.0000000000000000e-01 + + 4.3612757325172424e-01 -8.5796296596527100e-01 + 2.6683306694030762e-01 -2.6626828312873840e-01 + <_> + 3.3000972747802734e+01 + + 1 2 1178 2.8150000000000000e+02 0 -1 1179 + 1.5500000000000000e+01 -2 -3 1180 4.6500000000000000e+01 + + 3.4552884101867676e-01 -5.2619069814682007e-01 + -3.2900866866111755e-01 4.3776753544807434e-01 + <_> + 3.3018821716308594e+01 + + 1 2 1181 5.0000000000000000e-01 0 -1 1182 + 1.0500000000000000e+01 -2 -3 1183 2.6450000000000000e+02 + + -4.9559688568115234e-01 7.7334856986999512e-01 + 5.2793127298355103e-01 -2.3107841610908508e-01 + <_> + 3.3071189880371094e+01 + + 1 2 1184 4.6025000000000000e+03 0 -1 1185 + 1.8500000000000000e+01 -2 -3 1186 6.8250000000000000e+02 + + -7.4181526899337769e-01 5.9372335672378540e-01 + 4.7619059681892395e-01 -1.1885309964418411e-01 + <_> + 3.3085533142089844e+01 + + 1 2 1187 1.6350000000000000e+02 0 -1 1188 + 2.7500000000000000e+01 -2 -3 1189 142. + + -4.1260236501693726e-01 2.7891275286674500e-01 + -7.0465636253356934e-01 7.5747251510620117e-01 + <_> + 3.3357414245605469e+01 + + 1 2 1190 5.0000000000000000e-01 0 -1 1191 + 5.6500000000000000e+01 -2 -3 1192 5.2150000000000000e+02 + + 6.4778029918670654e-01 -1.1932287365198135e-01 + -4.1650903224945068e-01 2.5428086519241333e-01 + <_> + 3.3322494506835938e+01 + + 1 2 1193 8.2350000000000000e+02 0 -1 1194 + 8.2650000000000000e+02 -2 -3 1195 1.3500000000000000e+01 + + 2.8512652497738600e-03 6.5731632709503174e-01 + 4.5999297499656677e-01 -6.2862813472747803e-01 + <_> + 3.3176986694335938e+01 + + 1 2 1196 1.3500000000000000e+01 0 -1 1197 70. -2 -3 1198 + 5.0000000000000000e-01 + + -6.6250026226043701e-01 7.0421558618545532e-01 + 3.7571212649345398e-01 -2.3801752924919128e-01 + <_> + 3.3435741424560547e+01 + + 1 2 1199 58282. 0 -1 1200 913. -2 -3 1201 + 1.0850000000000000e+02 + + -5.6440210342407227e-01 2.8217953443527222e-01 + -8.7045669555664062e-01 -8.5198663175106049e-02 + <_> + 3.3617641448974609e+01 + + 1 2 1202 1.5000000000000000e+00 0 -1 1203 + 1.5000000000000000e+00 -2 -3 1204 1.7675000000000000e+03 + + -7.3653697967529297e-01 7.6336652040481567e-01 + -2.4504181742668152e-01 5.5397576093673706e-01 + <_> + 3.3626171112060547e+01 + + 1 2 1205 3.5000000000000000e+00 0 -1 1206 + 1.5500000000000000e+01 -2 -3 1207 153. + + -2.8129413723945618e-01 5.9369409084320068e-01 + 8.5296230390667915e-03 -6.9582235813140869e-01 + <_> + 3.3975147247314453e+01 + + 1 2 1208 5.0000000000000000e-01 0 -1 1209 + 1.0500000000000000e+01 -2 -3 1210 2.0500000000000000e+01 + + -8.0083674192428589e-01 3.4897685050964355e-01 + -3.5385957360267639e-01 7.3448055982589722e-01 + <_> + 3.3426464080810547e+01 + + 1 2 1211 2.7950000000000000e+02 0 -1 1212 + 5.4975000000000000e+03 -2 -3 1213 7.5000000000000000e+00 + + -1.4607962965965271e-01 7.2142803668975830e-01 + 1.4154955744743347e-01 -5.4868251085281372e-01 + <_> + 3.3620513916015625e+01 + + 1 2 1214 1.1500000000000000e+01 0 -1 1215 + 2.5550000000000000e+02 -2 -3 1216 72. + + 5.8608335256576538e-01 -9.2741596698760986e-01 + 1.9404979050159454e-01 -6.2724816799163818e-01 + <_> + 3.3949718475341797e+01 + + 1 2 1217 1.9500000000000000e+01 0 -1 1218 + 2.6950000000000000e+02 -2 -3 1219 5.2500000000000000e+01 + + -8.2725256681442261e-02 -8.0563539266586304e-01 + -4.9098122119903564e-01 3.2920604944229126e-01 + <_> + 3.3907009124755859e+01 + + 1 2 1220 2.5500000000000000e+01 0 -1 1221 + 5.0000000000000000e-01 -2 -3 1222 5.0500000000000000e+01 + + 5.3421282768249512e-01 -4.2710851877927780e-02 + -8.4883642196655273e-01 -6.9108068943023682e-02 + <_> + 3.4569347381591797e+01 + + 1 2 1223 3.4500000000000000e+01 0 -1 1224 + 4.5000000000000000e+00 -2 -3 1225 4.2500000000000000e+01 + + 2.8448584675788879e-01 -3.0913567543029785e-01 + 6.9974571466445923e-01 -7.2145628929138184e-01 + <_> + 3.4406383514404297e+01 + + 1 2 1226 4.7500000000000000e+01 0 -1 1227 82. -2 -3 1228 + 476. + + -5.3745925426483154e-01 5.8132463693618774e-01 + 3.7321224808692932e-01 -6.0607558488845825e-01 + <_> + 3.4350345611572266e+01 + + 1 2 1229 4.5000000000000000e+00 0 -1 1230 161. -2 -3 1231 + 9.5000000000000000e+00 + + 5.7543116807937622e-01 -9.4070035219192505e-01 + 7.6428997516632080e-01 -5.6036282330751419e-02 + <_> + 3.4673534393310547e+01 + + 1 2 1232 1.2645000000000000e+03 0 -1 1233 1086. -2 -3 1234 + 9549. + + -2.5683671236038208e-01 8.2724517583847046e-01 + 7.0296716690063477e-01 -3.6435613036155701e-01 + <_> + 3.5003284454345703e+01 + + 1 2 1235 1.2850000000000000e+02 0 -1 1236 + 8.6235000000000000e+03 -2 -3 1237 2.6500000000000000e+01 + + 5.9038841724395752e-01 3.4432813990861177e-03 + -6.4016550779342651e-02 -9.3743759393692017e-01 + <_> + 3.5226799011230469e+01 + + 1 2 1238 9.3500000000000000e+01 0 -1 1239 13. -2 -3 1240 + 4.4500000000000000e+01 + + -6.7835944890975952e-01 3.3737751841545105e-01 + -7.8561329841613770e-01 -3.7122413516044617e-02 + <_> + 3.5086704254150391e+01 + + 1 2 1241 6.5000000000000000e+00 0 -1 1242 786. -2 -3 1243 + 4.6850000000000000e+02 + + -8.7093526124954224e-01 4.2933362722396851e-01 + -5.2467578649520874e-01 1.0233493894338608e-01 + <_> + 3.5434925079345703e+01 + + 1 2 1244 5.0650000000000000e+02 0 -1 1245 + 6.3500000000000000e+01 -2 -3 1246 2.5000000000000000e+00 + + -3.4057748317718506e-01 5.2575647830963135e-01 + -5.7031583786010742e-01 4.1367042064666748e-01 + <_> + 3.5402851104736328e+01 + + 1 2 1247 5.0000000000000000e-01 0 -1 1248 857. -2 -3 1249 + 1.3850000000000000e+02 + + 6.1650615930557251e-01 -2.0817196369171143e-01 + -2.5478323921561241e-02 -7.6659142971038818e-01 + <_> + 3.4968181610107422e+01 + + 1 2 1250 5.8500000000000000e+01 0 -1 1251 + 1.1500000000000000e+01 -2 -3 1252 5.5500000000000000e+01 + + 1.2099618464708328e-01 -4.4126412272453308e-01 + 6.0897779464721680e-01 -7.8737002611160278e-01 + <_> + 3.5193428039550781e+01 + + 1 2 1253 4.7500000000000000e+01 0 -1 1254 1423. -2 -3 1255 + 3.4500000000000000e+01 + + 4.8643037676811218e-02 -8.9261955022811890e-01 + 2.2524681687355042e-01 -6.2001824378967285e-01 + <_> + 3.5623695373535156e+01 + + 1 2 1256 2.0500000000000000e+01 0 -1 1257 + 5.5000000000000000e+00 -2 -3 1258 6.5000000000000000e+00 + + -8.9247786998748779e-01 7.9152870178222656e-01 + 4.3026548624038696e-01 -1.4470897614955902e-01 + <_> + 3.5538761138916016e+01 + + 1 2 1259 18647. 0 -1 1260 8.7850000000000000e+02 -2 -3 1261 + 50. + + 1.3848523795604706e-01 -6.2565112113952637e-01 + -3.0781137943267822e-01 5.9695762395858765e-01 + <_> + 3.5170146942138672e+01 + + 1 2 1262 2.0500000000000000e+01 0 -1 1263 + 9.5500000000000000e+01 -2 -3 1264 3.2450000000000000e+02 + + -1.9358770549297333e-01 5.9224104881286621e-01 + -3.6861309409141541e-01 7.9692333936691284e-01 + <_> + 3.5719684600830078e+01 + + 1 2 1265 1.5000000000000000e+00 0 -1 1266 + 3.4500000000000000e+01 -2 -3 1267 1.7725000000000000e+03 + + 5.4953765869140625e-01 -4.1827628016471863e-01 + 3.4924019128084183e-02 -6.3267588615417480e-01 + <_> + 3.6021175384521484e+01 + + 1 2 1268 1.3500000000000000e+01 0 -1 1269 + 5.0000000000000000e-01 -2 -3 1270 3476. + + 3.0730965733528137e-01 -7.1827191114425659e-01 + -3.3407485485076904e-01 3.0149033665657043e-01 + <_> + 3.6000087738037109e+01 + + 1 2 1271 2.1105000000000000e+03 0 -1 1272 + 1.2865000000000000e+03 -2 -3 1273 31. + + -6.6124044358730316e-02 6.6440200805664062e-01 + -7.0062541961669922e-01 8.8496291637420654e-01 + <_> + 3.6138973236083984e+01 + + 1 2 1274 6.5000000000000000e+00 0 -1 1275 + 4.0500000000000000e+01 -2 -3 1276 2.5000000000000000e+00 + + -1.8909309804439545e-01 4.3955674767494202e-01 + 8.3517062664031982e-01 -5.2926576137542725e-01 + <_> + 3.6462543487548828e+01 + + 1 2 1277 1.5000000000000000e+00 0 -1 1278 + 1.9500000000000000e+01 -2 -3 1279 2.9500000000000000e+01 + + 5.2272623777389526e-01 -5.3356873989105225e-01 + -4.3614375591278076e-01 1.6707921028137207e-01 + <_> + 3.6346103668212891e+01 + + 1 2 1280 5.4500000000000000e+01 0 -1 1281 3. -2 -3 1282 + 2.5000000000000000e+00 + + 9.2645227909088135e-01 -9.1626834869384766e-01 + 4.3882593512535095e-01 -1.1643892526626587e-01 + <_> + 3.6447643280029297e+01 + + 1 2 1283 4.3500000000000000e+01 0 -1 1284 + 4.5000000000000000e+00 -2 -3 1285 1.4250000000000000e+02 + + 2.8414136171340942e-01 -5.2052396535873413e-01 + 3.3975440263748169e-01 -4.2113724350929260e-01 + <_> + 3.6367126464843750e+01 + + 1 2 1286 2.2500000000000000e+01 0 -1 1287 + 1.0535000000000000e+03 -2 -3 1288 1.9500000000000000e+01 + + 4.4179165363311768e-01 -7.4734365940093994e-01 + 5.4282104969024658e-01 -8.0516710877418518e-02 + <_> + 3.6575954437255859e+01 + + 1 2 1289 2.5000000000000000e+00 0 -1 1290 + 1.5000000000000000e+00 -2 -3 1291 2.4500000000000000e+01 + + -3.8550149649381638e-02 -9.4949018955230713e-01 + 2.0882803201675415e-01 -4.6319213509559631e-01 + <_> + 3.6657161712646484e+01 + + 1 2 1292 1.6115000000000000e+03 0 -1 1293 3672. -2 -3 1294 + 545. + + 8.2763051986694336e-01 -4.8815292119979858e-01 + -5.2512788772583008e-01 8.1207208335399628e-02 + <_> + 3.6598300933837891e+01 + + 1 2 1295 6.0500000000000000e+01 0 -1 1296 + 1.1250000000000000e+02 -2 -3 1297 1.5350000000000000e+02 + + -5.8857690542936325e-02 4.7229456901550293e-01 + -8.1495660543441772e-01 7.3461961746215820e-01 + <_> + 3.6517520904541016e+01 + + 1 2 1298 9.4500000000000000e+01 0 -1 1299 + 4.8500000000000000e+01 -2 -3 1300 235. + + 4.8253452777862549e-01 -8.0779984593391418e-02 + -9.4696474075317383e-01 9.1954904794692993e-01 + <_> + 3.6136314392089844e+01 + + 1 2 1301 7.6150000000000000e+02 0 -1 1302 + 1.3500000000000000e+01 -2 -3 1303 3.7500000000000000e+01 + + 4.7050821781158447e-01 -6.8645346164703369e-01 + 1.8845686316490173e-01 -6.1942416429519653e-01 + <_> + 3.6255367279052734e+01 + + 1 2 1304 2.5500000000000000e+01 0 -1 1305 + 9.5000000000000000e+00 -2 -3 1306 2.4243500000000000e+04 + + -8.6751174926757812e-01 1. 1.1905297636985779e-01 + -7.7261626720428467e-01 + <_> + 3.6847282409667969e+01 + + 1 2 1307 2.5245000000000000e+03 0 -1 1308 + 1.2500000000000000e+01 -2 -3 1309 19. + + 1.8480798602104187e-01 -4.1162934899330139e-01 + -7.0126670598983765e-01 5.9191262722015381e-01 + <_> + 3.6736129760742188e+01 + + 1 2 1310 1.9500000000000000e+01 0 -1 1311 + 3.5000000000000000e+00 -2 -3 1312 9.9500000000000000e+01 + + -4.2743122577667236e-01 3.4077543020248413e-01 + -5.2904611825942993e-01 6.4898627996444702e-01 + <_> + 3.7165416717529297e+01 + + 1 2 1313 57. 0 -1 1314 7.5000000000000000e+00 -2 -3 1315 + 1.4750000000000000e+02 + + -2.9288327693939209e-01 4.2928928136825562e-01 + -5.1645982265472412e-01 3.7259963154792786e-01 + <_> + 3.6963829040527344e+01 + + 1 2 1316 1.5000000000000000e+00 0 -1 1317 + 1.5000000000000000e+00 -2 -3 1318 2.5550000000000000e+02 + + -4.8823645710945129e-01 6.1563092470169067e-01 + 6.7905879020690918e-01 -2.7743032574653625e-01 + <_> + 3.6947120666503906e+01 + + 1 2 1319 1.1545000000000000e+03 0 -1 1320 2066. -2 -3 1321 + 7.7350000000000000e+02 + + -7.2975975275039673e-01 6.6057509183883667e-01 + 6.6289925575256348e-01 -1.6708238050341606e-02 + <_> + 3.6795619964599609e+01 + + 1 2 1322 63. 0 -1 1323 5.7500000000000000e+01 -2 -3 1324 + 2.8500000000000000e+01 + + -1.5150213241577148e-01 3.7273296713829041e-01 + -8.2537877559661865e-01 8.6949664354324341e-01 + <_> + 3.7259391784667969e+01 + + 1 2 1325 1.0500000000000000e+01 0 -1 1326 + 1.6500000000000000e+01 -2 -3 1327 346. + + 4.6377313137054443e-01 -7.5801903009414673e-01 + -3.5662418603897095e-01 9.6071028709411621e-01 + <_> + 3.7495296478271484e+01 + + 1 2 1328 6.0500000000000000e+01 0 -1 1329 + 1.5500000000000000e+01 -2 -3 1330 2.6850000000000000e+02 + + 5.3055459260940552e-01 -6.3604164123535156e-01 + -6.7990607023239136e-01 2.4123270809650421e-01 + <_> + 3.7374149322509766e+01 + + 1 2 1331 2.5000000000000000e+00 0 -1 1332 + 1.3500000000000000e+01 -2 -3 1333 2.5000000000000000e+00 + + -9.0581423044204712e-01 5.8284395933151245e-01 + 3.0152860283851624e-01 -3.4942194819450378e-01 + <_> + 3.7766971588134766e+01 + + 1 2 1334 5.5000000000000000e+00 0 -1 1335 23. -2 -3 1336 + 3.0250000000000000e+02 + + -9.5462155342102051e-01 1. 3.9282312989234924e-01 + -1.1600174754858017e-01 + <_> + 3.8006900787353516e+01 + + 1 2 1337 3955. 0 -1 1338 1.6500000000000000e+01 -2 -3 1339 + 3.8500000000000000e+01 + + 3.4476998448371887e-01 -5.3807318210601807e-01 + -6.4139670133590698e-01 3.3075565099716187e-01 + <_> + 3.7836151123046875e+01 + + 1 2 1340 1.4500000000000000e+01 0 -1 1341 + 4.2050000000000000e+02 -2 -3 1342 4.5000000000000000e+00 + + 6.6126942634582520e-02 -8.9179468154907227e-01 + 2.5128620862960815e-01 -4.3012529611587524e-01 + <_> + 3.7504901885986328e+01 + + 1 2 1343 3.5000000000000000e+00 0 -1 1344 + 2.1500000000000000e+01 -2 -3 1345 3.6500000000000000e+01 + + -6.9118273258209229e-01 5.3941005468368530e-01 + 4.0820264816284180e-01 -3.3124980330467224e-01 + <_> + 3.7869743347167969e+01 + + 1 2 1346 8.5000000000000000e+00 0 -1 1347 8240. -2 -3 1348 + 1.8500000000000000e+01 + + -1.8303586402907968e-03 -7.9149729013442993e-01 + 3.6484044790267944e-01 -2.6800584793090820e-01 + <_> + 3.7688228607177734e+01 + + 1 2 1349 1.2135000000000000e+03 0 -1 1350 75. -2 -3 1351 + 5.6750000000000000e+02 + + -3.7686902284622192e-01 5.8311319351196289e-01 + 7.0945566892623901e-01 -1.8151518702507019e-01 + <_> + 3.7513351440429688e+01 + + 1 2 1352 3.5000000000000000e+00 0 -1 1353 35. -2 -3 1354 + 1.1500000000000000e+01 + + -9.6617668867111206e-01 1. 4.0123063325881958e-01 + -1.7487519979476929e-01 + <_> + 3.7691390991210938e+01 + + 1 2 1355 2.3050000000000000e+02 0 -1 1356 + 1.1500000000000000e+01 -2 -3 1357 2.8500000000000000e+01 + + -5.4078394174575806e-01 1.7803618311882019e-01 + 6.0750162601470947e-01 -9.6443849802017212e-01 + <_> + 3.8156455993652344e+01 + + 1 2 1358 6.5000000000000000e+00 0 -1 1359 + 1.0500000000000000e+01 -2 -3 1360 354. + + 4.6506500244140625e-01 -3.7838381528854370e-01 + -3.8703271746635437e-01 5.6163036823272705e-01 + <_> + 3.8427524566650391e+01 + + 1 2 1361 1.2500000000000000e+01 0 -1 1362 + 4.5000000000000000e+00 -2 -3 1363 449. + + 5.1386022567749023e-01 -6.1507451534271240e-01 + 3.0157905817031860e-01 -6.5344727039337158e-01 + <_> + 3.8548820495605469e+01 + + 1 2 1364 5.0000000000000000e-01 0 -1 1365 + 1.5000000000000000e+00 -2 -3 1366 3.8950000000000000e+02 + + -3.3223056793212891e-01 5.4063457250595093e-01 + 9.0788081288337708e-02 -5.4981482028961182e-01 + <_> + 3.8257041931152344e+01 + + 1 2 1367 1.6650000000000000e+02 0 -1 1368 + 5.0000000000000000e-01 -2 -3 1369 7.6500000000000000e+01 + + 2.8060472011566162e-01 -2.9178059101104736e-01 + -7.8990536928176880e-01 9.2143142223358154e-01 + <_> + 3.8675960540771484e+01 + + 1 2 1370 1.8500000000000000e+01 0 -1 1371 + 2.3500000000000000e+01 -2 -3 1372 4.5000000000000000e+00 + + -5.0728912465274334e-03 -8.4625685214996338e-01 + 4.8941537737846375e-01 -1.3043193519115448e-01 + <_> + 3.9024429321289062e+01 + + 1 2 1373 8.5000000000000000e+00 0 -1 1374 + 8.1295000000000000e+03 -2 -3 1375 1.1250000000000000e+02 + + 1.5426757931709290e-01 -7.5539046525955200e-01 + -3.0081889033317566e-01 3.4846922755241394e-01 + <_> + 3.8698005676269531e+01 + + 1 2 1376 9.5000000000000000e+00 0 -1 1377 + 5.5000000000000000e+00 -2 -3 1378 3.4500000000000000e+01 + + -7.7566885948181152e-01 5.3590404987335205e-01 + -3.2642310857772827e-01 3.3310726284980774e-01 + <_> + 3.8178993225097656e+01 + + 1 2 1379 2.6450000000000000e+02 0 -1 1380 + 4.6255000000000000e+03 -2 -3 1381 1.5000000000000000e+00 + + -3.2790592312812805e-01 3.8349342346191406e-01 + 3.5417640209197998e-01 -5.1901257038116455e-01 + <_> + 3.8603790283203125e+01 + + 1 2 1382 7.7450000000000000e+02 0 -1 1383 + 5.4450000000000000e+02 -2 -3 1384 4.9500000000000000e+01 + + 4.2479729652404785e-01 -6.4129936695098877e-01 + -3.8530099391937256e-01 4.2106175422668457e-01 + <_> + 3.9316322326660156e+01 + + 1 2 1385 1.2285000000000000e+03 0 -1 1386 19974. -2 -3 1387 + 2.0675000000000000e+03 + + -3.2134270668029785e-01 6.0310727357864380e-01 + 7.1253037452697754e-01 -1.8411901593208313e-01 + <_> + 3.8982051849365234e+01 + + 1 2 1388 2254. 0 -1 1389 23971. -2 -3 1390 + 2.5000000000000000e+00 + + 1.3044491410255432e-02 8.1400823593139648e-01 + 3.9543354511260986e-01 -4.9717214703559875e-01 + <_> + 3.9231285095214844e+01 + + 1 2 1391 7888. 0 -1 1392 1.2500000000000000e+01 -2 -3 1393 + 6.5000000000000000e+00 + + -9.9114888906478882e-01 1. 2.4923273921012878e-01 + -3.9778175950050354e-01 + <_> + 3.9200939178466797e+01 + + 1 2 1394 8.2500000000000000e+01 0 -1 1395 + 2.5000000000000000e+00 -2 -3 1396 2.7500000000000000e+01 + + 5.9092748165130615e-01 -6.6723209619522095e-01 + 4.0493550896644592e-01 -2.8249517083168030e-01 + <_> + 3.9109848022460938e+01 + + 1 2 1397 1.0500000000000000e+01 0 -1 1398 + 3.4150000000000000e+02 -2 -3 1399 1.5000000000000000e+00 + + 1.1704797297716141e-01 -7.8680926561355591e-01 + 5.4690092802047729e-01 -9.1091230511665344e-02 + <_> + 3.9430786132812500e+01 + + 1 2 1400 7.5000000000000000e+00 0 -1 1401 + 5.6350000000000000e+02 -2 -3 1402 9.5000000000000000e+00 + + 1. -1. 5.3584295511245728e-01 -1.1434395611286163e-01 + <_> + 3.9888351440429688e+01 + + 1 2 1403 576. 0 -1 1404 2.3765000000000000e+03 -2 -3 1405 + 1.8500000000000000e+01 + + 9.3801420927047729e-01 -7.2940248250961304e-01 + -9.7766503691673279e-02 4.5756503939628601e-01 + <_> + 3.9605831146240234e+01 + + 1 2 1406 5.5000000000000000e+00 0 -1 1407 + 6.5000000000000000e+00 -2 -3 1408 1.7500000000000000e+01 + + -9.3598860502243042e-01 6.3315272331237793e-01 + 1.0997077822685242e-01 -4.5688989758491516e-01 + <_> + 4.0259593963623047e+01 + + 1 2 1409 1.2785000000000000e+03 0 -1 1410 + 5.0000000000000000e-01 -2 -3 1411 1.0150000000000000e+02 + + 2.8614109754562378e-01 -3.0422577261924744e-01 + -5.3765338659286499e-01 7.5021845102310181e-01 + <_> + 4.0646686553955078e+01 + + 1 2 1412 9.3750000000000000e+02 0 -1 1413 + 2.5500000000000000e+01 -2 -3 1414 6.4650000000000000e+02 + + -1.8467088043689728e-01 3.8709565997123718e-01 -1. 1. + <_> + 4.0781440734863281e+01 + + 1 2 1415 5.0000000000000000e-01 0 -1 1416 62. -2 -3 1417 + 5.3500000000000000e+01 + + 6.4194250106811523e-01 -6.9881826639175415e-01 + -3.3652466535568237e-01 2.9932817816734314e-01 + <_> + 4.0840915679931641e+01 + + 1 2 1418 2.5000000000000000e+00 0 -1 1419 13192. -2 -3 1420 + 2.4950000000000000e+02 + + -9.9075198173522949e-01 8.7482362985610962e-01 + 2.9631823301315308e-01 -2.0155780017375946e-01 + <_> + 4.1011356353759766e+01 + + 1 2 1421 4.8150000000000000e+02 0 -1 1422 + 1.0450000000000000e+02 -2 -3 1423 8.5000000000000000e+00 + + -2.5319704785943031e-02 -7.4390411376953125e-01 + -8.1089955568313599e-01 7.6437503099441528e-01 + <_> + 4.0876789093017578e+01 + + 1 2 1424 5.5000000000000000e+00 0 -1 1425 + 2.5000000000000000e+00 -2 -3 1426 1.5000000000000000e+00 + + 1. -9.8024749755859375e-01 3.7663710117340088e-01 + -1.3456873595714569e-01 + <_> + 4.0677371978759766e+01 + + 1 2 1427 2.1500000000000000e+01 0 -1 1428 + 1.1125000000000000e+03 -2 -3 1429 2.3500000000000000e+01 + + 4.5568805187940598e-02 -8.6155319213867188e-01 + 3.0837088823318481e-01 -1.9941620528697968e-01 + <_> + 4.0941162109375000e+01 + + 1 2 1430 9.4500000000000000e+01 0 -1 1431 447. -2 -3 1432 + 8.9500000000000000e+01 + + 2.0531620085239410e-01 -6.4759564399719238e-01 + 2.6378956437110901e-01 -6.0503029823303223e-01 + <_> + 4.0695613861083984e+01 + + 1 2 1433 8.1450000000000000e+02 0 -1 1434 + 9.9250000000000000e+02 -2 -3 1435 2.1450000000000000e+02 + + -6.1355805397033691e-01 3.9234723895788193e-02 + 4.3808567523956299e-01 -7.3097014427185059e-01 + <_> + 4.1197418212890625e+01 + + 1 2 1436 1.8769500000000000e+04 0 -1 1437 1329. -2 -3 1438 + 5.4500000000000000e+01 + + 5.0180602073669434e-01 -3.4298053383827209e-01 + 6.9242316484451294e-01 -3.7215092778205872e-01 + <_> + 4.1157611846923828e+01 + + 1 2 1439 3.1500000000000000e+01 0 -1 1440 + 1.8500000000000000e+01 -2 -3 1441 1.5000000000000000e+00 + + 6.7518281936645508e-01 -7.6596146821975708e-01 + 5.7309043407440186e-01 -3.9805334061384201e-02 + <_> + 4.0718166351318359e+01 + + 1 2 1442 9.3500000000000000e+01 0 -1 1443 + 8.5000000000000000e+00 -2 -3 1444 1.6950000000000000e+02 + + 7.0507103204727173e-01 -4.3868264555931091e-01 + 4.2583593726158142e-01 -4.3944749236106873e-01 + <_> + 4.1168849945068359e+01 + + 1 2 1445 1.5000000000000000e+00 0 -1 1446 + 1.5500000000000000e+01 -2 -3 1447 5.0000000000000000e-01 + + -5.8355963230133057e-01 8.2266020774841309e-01 + 4.5068329572677612e-01 -1.3382685184478760e-01 + <_> + 4.1473163604736328e+01 + + 1 2 1448 5.6500000000000000e+01 0 -1 1449 + 3.3500000000000000e+01 -2 -3 1450 2.1550000000000000e+02 + + 2.5085982680320740e-01 -3.7931889295578003e-01 + 6.7997491359710693e-01 -1. + <_> + 4.1634220123291016e+01 + + 1 2 1451 5.4500000000000000e+01 0 -1 1452 + 9.5000000000000000e+00 -2 -3 1453 1.7250000000000000e+02 + + -7.9712128639221191e-01 8.5313194990158081e-01 + 1.6105654835700989e-01 -9.5611929893493652e-01 + <_> + 4.1978507995605469e+01 + + 1 2 1454 1.1615000000000000e+03 0 -1 1455 + 2.0525000000000000e+03 -2 -3 1456 5.8650000000000000e+02 + + -7.1788591146469116e-01 4.8950648307800293e-01 + 4.8551353812217712e-01 -1.9422738254070282e-01 + <_> + 4.2004768371582031e+01 + + 1 2 1457 4.6500000000000000e+01 0 -1 1458 + 3.5000000000000000e+00 -2 -3 1459 7.0350000000000000e+02 + + 3.9823031425476074e-01 -6.6477078199386597e-01 + -1.1496587097644806e-01 4.9930962920188904e-01 + <_> + 4.1885951995849609e+01 + + 1 2 1460 4.4500000000000000e+01 0 -1 1461 + 3.5000000000000000e+00 -2 -3 1462 4. + + 4.4042432308197021e-01 -1.1881566792726517e-01 + 8.4207451343536377e-01 -8.6268407106399536e-01 + <_> + 4.2072120666503906e+01 + + 1 2 1463 2.0500000000000000e+01 0 -1 1464 10. -2 -3 1465 + 5.5000000000000000e+00 + + -9.8040562868118286e-01 1. 3.3258756995201111e-01 + -1.7096966505050659e-01 + <_> + 4.2217323303222656e+01 + + 1 2 1466 1.3500000000000000e+01 0 -1 1467 47. -2 -3 1468 + 1.3325000000000000e+03 + + -6.6619759798049927e-01 5.1798510551452637e-01 + -1.2162621133029461e-03 7.3543995618820190e-01 + <_> + 4.2318325042724609e+01 + + 1 2 1469 4.5000000000000000e+00 0 -1 1470 + 1.9500000000000000e+01 -2 -3 1471 1.5585000000000000e+03 + + -9.6737003326416016e-01 6.0924607515335083e-01 + 5.8938968181610107e-01 -2.8636392951011658e-01 + <_> + 4.2444244384765625e+01 + + 1 2 1472 2.7500000000000000e+01 0 -1 1473 + 1.8247500000000000e+04 -2 -3 1474 6.5605000000000000e+03 + + -1.1921727657318115e-01 4.3995112180709839e-01 + -7.6667350530624390e-01 4.6777427196502686e-01 + <_> + 4.2317867279052734e+01 + + 1 2 1475 4.5000000000000000e+00 0 -1 1476 15. -2 -3 1477 + 3.2500000000000000e+01 + + -9.6039277315139771e-01 1. 3.9408209919929504e-01 + -1.2637579441070557e-01 + <_> + 4.2575748443603516e+01 + + 1 2 1478 367. 0 -1 1479 2578. -2 -3 1480 + 2.0050000000000000e+02 + + 5.2356463670730591e-01 -6.4678192138671875e-01 + 3.1403809785842896e-01 -3.7955451011657715e-01 + <_> + 4.2238155364990234e+01 + + 1 2 1481 5.4500000000000000e+01 0 -1 1482 + 1.8450000000000000e+02 -2 -3 1483 5.6550000000000000e+02 + + -7.5117689371109009e-01 3.9905190467834473e-01 + 1.0141634941101074e-01 -6.3857173919677734e-01 + <_> + 4.2032226562500000e+01 + + 1 2 1484 3.5500000000000000e+01 0 -1 1485 + 1.1500000000000000e+01 -2 -3 1486 4.2500000000000000e+01 + + -6.1570602655410767e-01 3.6179527640342712e-01 + 4.0053242444992065e-01 -2.0592956244945526e-01 + <_> + 4.2406646728515625e+01 + + 1 2 1487 3.6150000000000000e+02 0 -1 1488 + 7.6500000000000000e+01 -2 -3 1489 2.5000000000000000e+00 + + 2.1660387516021729e-01 -3.7647891044616699e-01 + 6.7929941415786743e-01 -8.0690664052963257e-01 + <_> + 4.2598564147949219e+01 + + 1 2 1490 3.2350000000000000e+02 0 -1 1491 + 9.5000000000000000e+00 -2 -3 1492 1.0350000000000000e+02 + + 2.8338834643363953e-01 -2.8749933838844299e-01 + -4.2244365811347961e-01 8.4098398685455322e-01 + <_> + 4.2448162078857422e+01 + + 1 2 1493 6.8500000000000000e+01 0 -1 1494 + 1.9500000000000000e+01 -2 -3 1495 2.8500000000000000e+01 + + 4.4642934203147888e-01 -8.8521170616149902e-01 + 3.8606628775596619e-01 -1.5039834380149841e-01 + <_> + 4.2684196472167969e+01 + + 1 2 1496 1.1350000000000000e+02 0 -1 1497 + 1.2195000000000000e+03 -2 -3 1498 465. + + -3.4444883465766907e-01 2.3603120446205139e-01 + 7.6531344652175903e-01 -3.9807590842247009e-01 + <_> + 4.2983776092529297e+01 + + 1 2 1499 1.5725000000000000e+03 0 -1 1500 + 7.6500000000000000e+01 -2 -3 1501 5.5000000000000000e+00 + + -3.2652869820594788e-01 2.9957908391952515e-01 + 3.3552268147468567e-01 -7.9458123445510864e-01 + <_> + 4.3334823608398438e+01 + + 1 2 1502 2.2500000000000000e+01 0 -1 1503 + 1.5000000000000000e+00 -2 -3 1504 9.5000000000000000e+00 + + -5.7209235429763794e-01 3.5104992985725403e-01 + 3.1476601958274841e-02 -5.8574450016021729e-01 + <_> + 4.3509834289550781e+01 + + 1 2 1505 51199. 0 -1 1506 5.5950000000000000e+02 -2 -3 1507 + 9.3125000000000000e+03 + + 3.0665323138237000e-01 -1.8138632178306580e-01 + -9.8618561029434204e-01 1. + <_> + 4.3432380676269531e+01 + + 1 2 1508 2.3365000000000000e+03 0 -1 1509 1614. -2 -3 1510 + 2.9285000000000000e+03 + + -6.6426819562911987e-01 5.2347922325134277e-01 + 6.3229858875274658e-01 -7.7455088496208191e-02 + <_> + 4.3682022094726562e+01 + + 1 2 1511 1.4850000000000000e+02 0 -1 1512 + 3.4500000000000000e+01 -2 -3 1513 4351. + + -4.1966313123703003e-01 2.4964161217212677e-01 + -9.2960160970687866e-01 -1.1052240431308746e-01 + <_> + 4.3838462829589844e+01 + + 1 2 1514 1.5000000000000000e+00 0 -1 1515 + 5.6150000000000000e+02 -2 -3 1516 2.5215000000000000e+03 + + -7.1278488636016846e-01 4.3191543221473694e-01 + -4.5729264616966248e-01 2.2259603440761566e-01 + <_> + 4.3913276672363281e+01 + + 1 2 1517 452. 0 -1 1518 1.5850000000000000e+02 -2 -3 1519 + 3.6500000000000000e+01 + + 2.7823349833488464e-01 -4.4655042886734009e-01 + -7.6742780208587646e-01 1.3798709213733673e-01 + <_> + 4.3755275726318359e+01 + + 1 2 1520 1.2150000000000000e+02 0 -1 1521 + 6.1500000000000000e+01 -2 -3 1522 2.4150000000000000e+02 + + 5.8016028255224228e-02 -5.8355945348739624e-01 + -6.6341340541839600e-01 4.4974878430366516e-01 + <_> + 4.3783382415771484e+01 + + 1 2 1523 1.0750000000000000e+02 0 -1 1524 + 4.5000000000000000e+00 -2 -3 1525 1080. + + 1.8615058064460754e-01 -4.8687478899955750e-01 + 4.3972969055175781e-01 -9.3779921531677246e-01 + <_> + 4.3861518859863281e+01 + + 1 2 1526 8.6500000000000000e+01 0 -1 1527 + 1.5000000000000000e+00 -2 -3 1528 1.1050000000000000e+02 + + 4.7667163610458374e-01 -4.0568494796752930e-01 + -6.4215010404586792e-01 2.9706746339797974e-02 + <_> + 4.4278926849365234e+01 + + 1 2 1529 1.7500000000000000e+01 0 -1 1530 + 1.4500000000000000e+01 -2 -3 1531 7.5500000000000000e+01 + + -6.9139021635055542e-01 6.4281481504440308e-01 + 1.8875285983085632e-02 8.0112278461456299e-01 + <_> + 4.4180038452148438e+01 + + 1 2 1532 1.3500000000000000e+01 0 -1 1533 + 3.7500000000000000e+01 -2 -3 1534 5.5000000000000000e+00 + + -5.8149468898773193e-01 3.6302325129508972e-01 + 2.1482136845588684e-01 -4.8260265588760376e-01 + <_> + 4.4126861572265625e+01 + + 1 2 1535 1.1500000000000000e+01 0 -1 1536 + 4.1450000000000000e+02 -2 -3 1537 448. + + 6.4174473285675049e-01 -5.1509088277816772e-01 + 3.2752755284309387e-01 -4.6536535024642944e-01 + <_> + 4.4402042388916016e+01 + + 1 2 1538 2.3500000000000000e+01 0 -1 1539 + 1.5000000000000000e+00 -2 -3 1540 1.2750000000000000e+02 + + 4.6208882704377174e-03 -7.9509699344635010e-01 + 2.7518290281295776e-01 -5.4167103767395020e-01 + <_> + 4.4075366973876953e+01 + + 1 2 1541 5.0000000000000000e-01 0 -1 1542 + 1.1500000000000000e+01 -2 -3 1543 1.1150000000000000e+02 + + -6.2465864419937134e-01 6.2209093570709229e-01 + -4.6270170807838440e-01 1.2467093765735626e-01 + <_> + 4.4579692840576172e+01 + + 1 2 1544 1.8500000000000000e+01 0 -1 1545 + 6.9500000000000000e+01 -2 -3 1546 4.0500000000000000e+01 + + 5.0432658195495605e-01 -1.5816394984722137e-01 + -6.3987523317337036e-01 1.9685916602611542e-01 + <_> + 4.4788379669189453e+01 + + 1 2 1547 1.2850000000000000e+02 0 -1 1548 + 1.3644850000000000e+05 -2 -3 1549 4.5000000000000000e+00 + + -1.3887935876846313e-01 -8.6476135253906250e-01 + 5.3407603502273560e-01 -1.0505830496549606e-01 + <_> + 4.4465953826904297e+01 + + 1 2 1550 1.0077500000000000e+04 0 -1 1551 + 1.9500000000000000e+01 -2 -3 1552 2.8365000000000000e+03 + + 1.8253329396247864e-01 -5.4899621009826660e-01 + 7.3290371894836426e-01 -1.2869638204574585e-01 + <_> + 4.4705356597900391e+01 + + 1 2 1553 7.0500000000000000e+01 0 -1 1554 + 2.6950000000000000e+02 -2 -3 1555 1.0050000000000000e+02 + + 1.6822533309459686e-01 -6.7410588264465332e-01 + 2.3940414190292358e-01 -7.4502784013748169e-01 + <_> + 4.4884269714355469e+01 + + 1 2 1556 1680. 0 -1 1557 7.5000000000000000e+00 -2 -3 1558 + 3.5850000000000000e+02 + + 2.8662183880805969e-01 -9.1832697391510010e-01 + 1.7891472578048706e-01 -5.9693121910095215e-01 + <_> + 4.4728557586669922e+01 + + 1 2 1559 1.7555000000000000e+03 0 -1 1560 19. -2 -3 1561 + 2332. + + -5.2603626251220703e-01 7.1634864807128906e-01 + -6.1052620410919189e-01 -4.9342345446348190e-03 + <_> + 4.4819171905517578e+01 + + 1 2 1562 1.3750000000000000e+02 0 -1 1563 + 1.5750000000000000e+02 -2 -3 1564 1.3050000000000000e+02 + + -6.0166075825691223e-02 5.8633291721343994e-01 + -8.1866687536239624e-01 1. + <_> + 4.4643035888671875e+01 + + 1 2 1565 6.3500000000000000e+01 0 -1 1566 + 1.9500000000000000e+01 -2 -3 1567 552. + + -7.2267347574234009e-01 2.3417486250400543e-01 + 4.9026021361351013e-01 -6.2466406822204590e-01 + <_> + 4.4639259338378906e+01 + + 1 2 1568 3.5000000000000000e+00 0 -1 1569 + 2.4500000000000000e+01 -2 -3 1570 8.2150000000000000e+02 + + -3.5061278939247131e-01 4.3918311595916748e-01 + 4.6116840094327927e-02 -6.6601943969726562e-01 + <_> + 4.4594688415527344e+01 + + 1 2 1571 1.3500000000000000e+01 0 -1 1572 + 8.5000000000000000e+00 -2 -3 1573 2.1500000000000000e+01 + + -2.5554552674293518e-02 -8.3599025011062622e-01 + 6.3880258798599243e-01 -4.4572211802005768e-02 + <_> + 4.4976432800292969e+01 + + 1 2 1574 9.0350000000000000e+02 0 -1 1575 + 2.0500000000000000e+01 -2 -3 1576 1.2615000000000000e+03 + + 3.8174423575401306e-01 -2.4711053073406219e-01 + -7.3085212707519531e-01 1.3097274303436279e-01 + <_> + 4.5154560089111328e+01 + + 1 2 1577 3.2500000000000000e+01 0 -1 1578 41. -2 -3 1579 + 1153. + + 1.3735578954219818e-01 -9.0119731426239014e-01 + -8.0212074518203735e-01 1.7812842130661011e-01 + <_> + 4.5438049316406250e+01 + + 1 2 1580 3.4500000000000000e+01 0 -1 1581 + 1.4500000000000000e+01 -2 -3 1582 1.8650000000000000e+02 + + 7.1418809890747070e-01 -4.1756910085678101e-01 + 3.2309561967849731e-01 -6.6359835863113403e-01 + <_> + 4.5376655578613281e+01 + + 1 2 1583 5.7500000000000000e+01 0 -1 1584 + 3.4835000000000000e+03 -2 -3 1585 1.6677500000000000e+04 + + 9.3545570969581604e-02 -6.6382712125778198e-01 + -6.0366630554199219e-01 3.5915172100067139e-01 + <_> + 4.5476417541503906e+01 + + 1 2 1586 1.2235000000000000e+03 0 -1 1587 + 5.0000000000000000e-01 -2 -3 1588 2.0550000000000000e+02 + + 9.9763244390487671e-02 -5.6198817491531372e-01 + 5.3732144832611084e-01 -2.9778870940208435e-01 + <_> + 4.5174198150634766e+01 + + 1 2 1589 2.5750000000000000e+02 0 -1 1590 + 3.4500000000000000e+01 -2 -3 1591 4.5000000000000000e+00 + + -5.3968584537506104e-01 9.1056388616561890e-01 + 2.8303310275077820e-01 -3.0222162604331970e-01 + <_> + 4.5571937561035156e+01 + + 1 2 1592 3.5500000000000000e+01 0 -1 1593 + 2.5000000000000000e+00 -2 -3 1594 9.5000000000000000e+00 + + 8.1757766008377075e-01 -9.3560528755187988e-01 + 4.8287272453308105e-01 -1.0781970620155334e-01 + <_> + 4.5820465087890625e+01 + + 1 2 1595 2.6500000000000000e+01 0 -1 1596 + 9.5000000000000000e+00 -2 -3 1597 64. + + 1.6339369118213654e-01 -4.8592147231101990e-01 + -8.0971640348434448e-01 4.2723599076271057e-01 + <_> + 4.5875530242919922e+01 + + 1 2 1598 4.8150000000000000e+02 0 -1 1599 + 1.9285000000000000e+03 -2 -3 1600 1.1625000000000000e+03 + + -7.9999005794525146e-01 1.8668703734874725e-01 + 6.2736529111862183e-01 -1.2364284694194794e-01 + <_> + 4.6327709197998047e+01 + + 1 2 1601 8.9450000000000000e+02 0 -1 1602 + 1.5000000000000000e+00 -2 -3 1603 6634. + + 1.7092481255531311e-02 -6.5232801437377930e-01 + 5.6317013502120972e-01 -4.4582167267799377e-01 + <_> + 4.6148258209228516e+01 + + 1 2 1604 43039. 0 -1 1605 1.5500000000000000e+01 -2 -3 1606 + 3.8225000000000000e+03 + + -1. 4.9083131551742554e-01 -3.1666326522827148e-01 + 6.4053624868392944e-01 + <_> + 4.6105995178222656e+01 + + 1 2 1607 3.5000000000000000e+00 0 -1 1608 21. -2 -3 1609 + 2.6500000000000000e+01 + + -9.7276186943054199e-01 1. 3.7125155329704285e-01 + -1.5020866692066193e-01 + <_> + 4.6445560455322266e+01 + + 1 2 1610 1.4450000000000000e+02 0 -1 1611 + 1.0500000000000000e+01 -2 -3 1612 6.4500000000000000e+01 + + 5.7516593486070633e-02 -5.1498800516128540e-01 + 8.0552762746810913e-01 -1. + <_> + 4.6819828033447266e+01 + + 1 2 1613 8.8500000000000000e+01 0 -1 1614 + 5.0000000000000000e-01 -2 -3 1615 3.1500000000000000e+01 + + 2.4280284345149994e-01 -5.9024065732955933e-01 + 4.4487208127975464e-01 -1.7842440307140350e-01 + <_> + 4.6427459716796875e+01 + + 1 2 1616 3.1500000000000000e+01 0 -1 1617 + 3.6500000000000000e+01 -2 -3 1618 1.1135000000000000e+03 + + -3.8508945703506470e-01 5.4531073570251465e-01 + -3.9237090945243835e-01 5.3639191389083862e-01 + <_> + 4.6388378143310547e+01 + + 1 2 1619 1.3495000000000000e+03 0 -1 1620 + 1.2865000000000000e+03 -2 -3 1621 1.5000000000000000e+00 + + -3.9079591631889343e-02 7.2226065397262573e-01 + 1.6772003471851349e-01 -8.0866611003875732e-01 + <_> + 4.6664485931396484e+01 + + 1 2 1622 5.7650000000000000e+02 0 -1 1623 38772. -2 -3 1624 + 3.5000000000000000e+00 + + -6.7578887939453125e-01 4.5766559243202209e-01 + 3.2720005512237549e-01 -3.8240414857864380e-01 + <_> + 4.6878482818603516e+01 + + 1 2 1625 1.6500000000000000e+01 0 -1 1626 + 3.1050000000000000e+02 -2 -3 1627 1.9500000000000000e+01 + + 3.3941693603992462e-02 -8.9211910963058472e-01 + -7.0304632186889648e-01 2.1399846673011780e-01 + <_> + 4.6925651550292969e+01 + + 1 2 1628 1.0285000000000000e+03 0 -1 1629 + 2.7950000000000000e+02 -2 -3 1630 9.5000000000000000e+00 + + 4.1127714514732361e-01 -1.3439148664474487e-01 + -7.5179332494735718e-01 3.4586694836616516e-01 + <_> + 4.7010379791259766e+01 + + 1 2 1631 2.4500000000000000e+01 0 -1 1632 + 1.1265000000000000e+03 -2 -3 1633 5.5000000000000000e+00 + + -5.5471497774124146e-01 8.4728397428989410e-02 + -6.6250604391098022e-01 5.0282490253448486e-01 + <_> + 4.7003398895263672e+01 + + 1 2 1634 5.5000000000000000e+00 0 -1 1635 + 1.3500000000000000e+01 -2 -3 1636 5.3500000000000000e+01 + + -6.1465358734130859e-01 5.2310514450073242e-01 + -6.9816145114600658e-03 -6.2556844949722290e-01 + <_> + 4.7450687408447266e+01 + + 1 2 1637 8.5000000000000000e+00 0 -1 1638 + 1.9500000000000000e+01 -2 -3 1639 7.3500000000000000e+01 + + 1.8994300067424774e-01 -5.1936614513397217e-01 + -5.1978632807731628e-02 5.4172980785369873e-01 + <_> + 4.7289505004882812e+01 + + 1 2 1640 4.5000000000000000e+00 0 -1 1641 + 5.0000000000000000e-01 -2 -3 1642 7.9500000000000000e+01 + + -9.3673211336135864e-01 4.2628908157348633e-01 + -6.1518812179565430e-01 3.8786195218563080e-02 + <_> + 4.7609291076660156e+01 + + 1 2 1643 9.0500000000000000e+01 0 -1 1644 + 1.7500000000000000e+01 -2 -3 1645 5.5500000000000000e+01 + + 2.5377960875630379e-02 8.4010601043701172e-01 + -5.5201697349548340e-01 9.3266852200031281e-02 + <_> + 4.6873203277587891e+01 + + 1 2 1646 181. 0 -1 1647 3.2500000000000000e+01 -2 -3 1648 + 1.5500000000000000e+01 + + -2.4539522826671600e-01 3.0167981982231140e-01 + -7.8757899999618530e-01 1. + <_> + 4.7333202362060547e+01 + + 1 2 1649 3.5000000000000000e+00 0 -1 1650 + 3.6450000000000000e+02 -2 -3 1651 131. + + 4.5999684929847717e-01 -8.5532951354980469e-01 + -7.6767379045486450e-01 -4.0166407823562622e-02 + <_> + 4.7809810638427734e+01 + + 1 2 1652 2.3415000000000000e+03 0 -1 1653 + 5.5550000000000000e+02 -2 -3 1654 7.8650000000000000e+02 + + 1.0606591403484344e-01 -7.2960245609283447e-01 + 4.7661080956459045e-01 -1.5633082389831543e-01 + <_> + 4.8187953948974609e+01 + + 1 2 1655 5.0500000000000000e+01 0 -1 1656 + 2.7500000000000000e+01 -2 -3 1657 4.6500000000000000e+01 + + -3.6588409543037415e-01 2.0847728848457336e-01 + 5.3038245439529419e-01 -9.1906154155731201e-01 + <_> + 4.8385017395019531e+01 + + 1 2 1658 2.5000000000000000e+00 0 -1 1659 + 5.0000000000000000e-01 -2 -3 1660 5.0000000000000000e-01 + + -8.3917874097824097e-01 3.5120227932929993e-01 + 4.4822514057159424e-02 -5.4643929004669189e-01 + <_> + 4.7983116149902344e+01 + + 1 2 1661 1.7500000000000000e+01 0 -1 1662 46. -2 -3 1663 + 4.8500000000000000e+01 + + -8.7424659729003906e-01 4.0549939870834351e-01 + -4.3008446693420410e-01 3.0111113190650940e-01 + <_> + 4.7767936706542969e+01 + + 1 2 1664 3.7250000000000000e+02 0 -1 1665 + 1.9500000000000000e+01 -2 -3 1666 1.7500000000000000e+01 + + -2.1517898142337799e-01 3.3102101087570190e-01 + -7.5989711284637451e-01 2.0524039864540100e-01 + <_> + 4.7636989593505859e+01 + + 1 2 1667 5.0000000000000000e-01 0 -1 1668 + 3.5000000000000000e+00 -2 -3 1669 2.2050000000000000e+02 + + -5.5064278841018677e-01 4.6156671643257141e-01 + -3.4933045506477356e-01 3.1964045763015747e-01 + <_> + 4.8035350799560547e+01 + + 1 2 1670 5.5000000000000000e+00 0 -1 1671 + 1.6500000000000000e+01 -2 -3 1672 1.5000000000000000e+00 + + 5.4588496685028076e-01 -5.2224334329366684e-02 1. + -9.5129132270812988e-01 + <_> + 4.8075088500976562e+01 + + 1 2 1673 5.8500000000000000e+01 0 -1 1674 + 1.7500000000000000e+01 -2 -3 1675 60. + + 3.9737168699502945e-02 -4.9285057187080383e-01 + 5.5449837446212769e-01 -5.8396834135055542e-01 + <_> + 4.8273761749267578e+01 + + 1 2 1676 5.5000000000000000e+00 0 -1 1677 + 2.4500000000000000e+01 -2 -3 1678 5.5450000000000000e+02 + + 1.7725417017936707e-01 -8.1391674280166626e-01 + -5.4412531852722168e-01 2.6674869656562805e-01 + <_> + 4.8013420104980469e+01 + + 1 2 1679 8.5000000000000000e+00 0 -1 1680 1955. -2 -3 1681 + 96. + + 1.7242313921451569e-01 -9.2252993583679199e-01 + 1.7602242529392242e-01 -6.7200791835784912e-01 + <_> + 4.8326412200927734e+01 + + 1 2 1682 3.0104500000000000e+04 0 -1 1683 + 2.8050000000000000e+02 -2 -3 1684 2.7154500000000000e+04 + + 3.1299278140068054e-01 -1.8952211737632751e-01 + -9.5317900180816650e-01 1. + <_> + 4.8304637908935547e+01 + + 1 2 1685 5.4500000000000000e+01 0 -1 1686 + 4.4650000000000000e+02 -2 -3 1687 3.5000000000000000e+00 + + 2.1255780756473541e-01 -8.1515192985534668e-01 + 6.9879400730133057e-01 -2.3700682446360588e-02 + <_> + 4.8183525085449219e+01 + + 1 2 1688 2.5000000000000000e+00 0 -1 1689 128. -2 -3 1690 + 3.5450000000000000e+02 + + -8.0286073684692383e-01 8.9803677797317505e-01 + 3.0971682071685791e-01 -2.6458665728569031e-01 + <_> + 4.8420330047607422e+01 + + 1 2 1691 4.5000000000000000e+00 0 -1 1692 1348. -2 -3 1693 + 1.6500000000000000e+01 + + 2.1627983450889587e-01 -9.3673717975616455e-01 + 2.7623519301414490e-01 -2.4342669546604156e-01 + <_> + 4.8284450531005859e+01 + + 1 2 1694 5.0350000000000000e+02 0 -1 1695 + 5.1950000000000000e+02 -2 -3 1696 7.8350000000000000e+02 + + -3.7904888391494751e-01 9.6044069528579712e-01 + 7.1280044317245483e-01 -2.8820293024182320e-02 + <_> + 4.8518047332763672e+01 + + 1 2 1697 7.3500000000000000e+01 0 -1 1698 + 1.0750000000000000e+02 -2 -3 1699 1.0508500000000000e+04 + + 2.3359699547290802e-01 -3.2509902119636536e-01 + -5.7240724563598633e-01 6.9403934478759766e-01 + <_> + 4.8881092071533203e+01 + + 1 2 1700 1.9500000000000000e+01 0 -1 1701 + 2.5000000000000000e+00 -2 -3 1702 5.7450000000000000e+02 + + 7.0620238780975342e-02 -6.4059627056121826e-01 + -5.6051510572433472e-01 3.6304420232772827e-01 + <_> + 4.8674976348876953e+01 + + 1 2 1703 1.6500000000000000e+01 0 -1 1704 2698. -2 -3 1705 + 1.8500000000000000e+01 + + -9.4122928380966187e-01 1. 3.0906781554222107e-01 + -2.2473946213722229e-01 + <_> + 4.8650527954101562e+01 + + 1 2 1706 285. 0 -1 1707 2.5000000000000000e+00 -2 -3 1708 + 2.9500000000000000e+01 + + -6.1351448297500610e-01 6.1334443092346191e-01 + -5.3962910175323486e-01 9.5953509211540222e-02 + <_> + 4.8581436157226562e+01 + + 1 2 1709 1.5000000000000000e+00 0 -1 1710 + 7.2500000000000000e+01 -2 -3 1711 2.5000000000000000e+00 + + -1.5018194913864136e-01 5.4274356365203857e-01 + 3.2649326324462891e-01 -4.6085461974143982e-01 + <_> + 4.8824050903320312e+01 + + 1 2 1712 7.5000000000000000e+00 0 -1 1713 + 1.3500000000000000e+01 -2 -3 1714 1.4750000000000000e+02 + + -9.4072926044464111e-01 4.9135723710060120e-01 + -3.6922344565391541e-01 2.8209823369979858e-01 + <_> + 4.9051761627197266e+01 + + 1 2 1715 1.2945000000000000e+03 0 -1 1716 + 2.5000000000000000e+00 -2 -3 1717 12557. + + 2.2771342098712921e-01 -3.0103012919425964e-01 + 8.6664509773254395e-01 -6.4184981584548950e-01 + <_> + 4.9400878906250000e+01 + + 1 2 1718 3.7500000000000000e+01 0 -1 1719 + 1.5000000000000000e+00 -2 -3 1720 1.7395000000000000e+03 + + 5.5372547358274460e-02 -6.4846998453140259e-01 + -5.1582384109497070e-01 3.7294328212738037e-01 + <_> + 4.9400951385498047e+01 + + 1 2 1721 1.9500000000000000e+01 0 -1 1722 + 2.7500000000000000e+01 -2 -3 1723 1.5500000000000000e+01 + + -1.0849715210497379e-02 -6.8436485528945923e-01 + -2.9969093203544617e-01 8.8249796628952026e-01 + <_> + 4.9150127410888672e+01 + + 1 2 1724 6695. 0 -1 1725 4.1995000000000000e+03 -2 -3 1726 + 3060. + + 6.0968101024627686e-01 -1.8973879516124725e-01 + 6.7397463321685791e-01 -2.9114890098571777e-01 + <_> + 4.9635650634765625e+01 + + 1 2 1727 1.2185000000000000e+03 0 -1 1728 + 6.7250000000000000e+02 -2 -3 1729 4.4500000000000000e+01 + + -3.2244133949279785e-01 8.5333442687988281e-01 + -6.7660027742385864e-01 4.8552277684211731e-01 + <_> + 4.9185047149658203e+01 + + 1 2 1730 4.6500000000000000e+01 0 -1 1731 + 1.7535000000000000e+03 -2 -3 1732 8.8500000000000000e+01 + + 1.1635149270296097e-01 -4.5060265064239502e-01 + -8.2891207933425903e-01 8.0917561054229736e-01 + <_> + 4.9572048187255859e+01 + + 1 2 1733 3.5000000000000000e+00 0 -1 1734 + 1.2500000000000000e+01 -2 -3 1735 4.4115000000000000e+03 + + -7.0214819908142090e-01 3.8700041174888611e-01 + -4.7868278622627258e-01 1.9085995852947235e-01 + <_> + 4.9520980834960938e+01 + + 1 2 1736 6.4500000000000000e+01 0 -1 1737 + 1.0850000000000000e+02 -2 -3 1738 9.5775000000000000e+03 + + -5.1066368818283081e-02 6.1802017688751221e-01 + -8.5373187065124512e-01 7.1274143457412720e-01 + <_> + 4.9744472503662109e+01 + + 1 2 1739 2.5000000000000000e+00 0 -1 1740 + 1.8500000000000000e+01 -2 -3 1741 8.5000000000000000e+00 + + -8.1709325313568115e-01 4.6844825148582458e-01 + 2.2349253296852112e-01 -4.7425210475921631e-01 + <_> + 5.0045192718505859e+01 + + 1 2 1742 1.2500000000000000e+01 0 -1 1743 + 7.5000000000000000e+00 -2 -3 1744 4.5000000000000000e+00 + + 4.9264114350080490e-02 -5.9978258609771729e-01 + 3.0072054266929626e-01 -7.8326350450515747e-01 + <_> + 5.0417678833007812e+01 + + 1 2 1745 4.1500000000000000e+01 0 -1 1746 + 3.5000000000000000e+00 -2 -3 1747 614. + + 4.2858477681875229e-02 -6.5439593791961670e-01 + 3.7248274683952332e-01 -6.0121566057205200e-01 + <_> + 5.0184413909912109e+01 + + 1 2 1748 1.8500000000000000e+01 0 -1 1749 + 1.9500000000000000e+01 -2 -3 1750 4.2335000000000000e+03 + + -3.9789116382598877e-01 3.3808970451354980e-01 + -6.7741900682449341e-01 -6.1766817234456539e-03 + <_> + 5.0395923614501953e+01 + + 1 2 1751 7.8500000000000000e+01 0 -1 1752 621. -2 -3 1753 + 1.1150000000000000e+02 + + -5.8525377511978149e-01 4.6244528889656067e-01 + -6.4186108112335205e-01 -1.5577160753309727e-02 + <_> + 5.0368152618408203e+01 + + 1 2 1754 7.4500000000000000e+01 0 -1 1755 + 8.0500000000000000e+01 -2 -3 1756 5.5000000000000000e+00 + + 2.7840653061866760e-01 -5.0665259361267090e-01 + 2.8003776073455811e-01 -6.6763132810592651e-01 + <_> + 5.0609447479248047e+01 + + 1 2 1757 4.5000000000000000e+00 0 -1 1758 + 5.0000000000000000e-01 -2 -3 1759 1.0050000000000000e+02 + + 1.4921510219573975e-01 -6.7458331584930420e-01 + 2.4129594862461090e-01 -7.1370732784271240e-01 + <_> + 5.0734519958496094e+01 + + 1 2 1760 8.1450000000000000e+02 0 -1 1761 + 3.1750000000000000e+02 -2 -3 1762 4.1450000000000000e+02 + + -3.4531843662261963e-01 5.5791461467742920e-01 + 5.3364270925521851e-01 -3.7804716825485229e-01 + <_> + 5.0482379913330078e+01 + + 1 2 1763 1.5500000000000000e+01 0 -1 1764 + 6.5000000000000000e+00 -2 -3 1765 2.7500000000000000e+01 + + -7.7612209320068359e-01 2.8200766444206238e-01 + -6.6070902347564697e-01 5.4497551918029785e-01 + <_> + 5.0946456909179688e+01 + + 1 2 1766 1.3055000000000000e+03 0 -1 1767 13080. -2 -3 1768 + 1.5000000000000000e+00 + + -1.6180552542209625e-02 6.9708949327468872e-01 + 1.5789812803268433e-01 -6.3250225782394409e-01 + <_> + 5.0942211151123047e+01 + + 1 2 1769 5.5000000000000000e+00 0 -1 1770 + 1.6500000000000000e+01 -2 -3 1771 1.1500000000000000e+01 + + -6.9032448530197144e-01 4.8323771357536316e-01 + -5.8806318044662476e-01 -4.2477925308048725e-03 + <_> + 5.0879100799560547e+01 + + 1 2 1772 3.2500000000000000e+01 0 -1 1773 + 1.5000000000000000e+00 -2 -3 1774 203. + + 7.2742664813995361e-01 -9.5186221599578857e-01 + 2.9152801632881165e-01 -2.9612061381340027e-01 + <_> + 5.1405494689941406e+01 + + 1 2 1775 5.9500000000000000e+01 0 -1 1776 + 5.0000000000000000e-01 -2 -3 1777 5.1500000000000000e+01 + + 2.0475186407566071e-01 -4.3729728460311890e-01 + 5.2639096975326538e-01 -5.4126620292663574e-01 + <_> + 5.1545295715332031e+01 + + 1 2 1778 5.1500000000000000e+01 0 -1 1779 113. -2 -3 1780 + 14. + + -8.7603360414505005e-01 1.3980150222778320e-01 1. + -9.8559749126434326e-01 + <_> + 5.1772174835205078e+01 + + 1 2 1781 5.0000000000000000e-01 0 -1 1782 + 5.0000000000000000e-01 -2 -3 1783 6.9500000000000000e+01 + + -8.5320812463760376e-01 5.4211145639419556e-01 + -4.2864811420440674e-01 1.9388379156589508e-01 + <_> + 5.1395809173583984e+01 + + 1 2 1784 4.1500000000000000e+01 0 -1 1785 + 2.4500000000000000e+01 -2 -3 1786 1.0350000000000000e+02 + + -3.6399099230766296e-01 2.9955938458442688e-01 + -6.9159519672393799e-01 4.9095645546913147e-01 + <_> + 5.1332057952880859e+01 + + 1 2 1787 1.1545000000000000e+03 0 -1 1788 + 1.0500000000000000e+01 -2 -3 1789 7.7350000000000000e+02 + + -8.4412866830825806e-01 2.4716804921627045e-01 + 6.3626372814178467e-01 -6.3753142952919006e-02 + <_> + 5.1058708190917969e+01 + + 1 2 1790 2.5000000000000000e+00 0 -1 1791 156. -2 -3 1792 + 667. + + 5.6390190124511719e-01 -7.4146884679794312e-01 + -2.7334854006767273e-01 6.9182580709457397e-01 + <_> + 5.1457290649414062e+01 + + 1 2 1793 1.8500000000000000e+01 0 -1 1794 125. -2 -3 1795 + 6.5000000000000000e+00 + + -5.9387379884719849e-01 8.3531779050827026e-01 + 6.5114057064056396e-01 -2.6395700871944427e-02 + <_> + 5.1741825103759766e+01 + + 1 2 1796 5.5000000000000000e+00 0 -1 1797 + 8.0500000000000000e+01 -2 -3 1798 6.5500000000000000e+01 + + 5.2819365262985229e-01 -3.8713422417640686e-01 + -6.3428682088851929e-01 3.1973972916603088e-02 + <_> + 5.1987751007080078e+01 + + 1 2 1799 9.2950000000000000e+02 0 -1 1800 + 1.7500000000000000e+01 -2 -3 1801 3.3500000000000000e+01 + + 2.9681459069252014e-01 -6.8903458118438721e-01 + -5.5376708507537842e-01 2.4592779576778412e-01 + <_> + 5.1639968872070312e+01 + + 1 2 1802 5.0000000000000000e-01 0 -1 1803 727. -2 -3 1804 + 1195. + + 4.7003021836280823e-01 -8.6940318346023560e-01 + -3.4778383374214172e-01 9.5309317111968994e-01 + <_> + 5.1864089965820312e+01 + + 1 2 1805 1.6500000000000000e+01 0 -1 1806 + 1.5500000000000000e+01 -2 -3 1807 1.4500000000000000e+01 + + -8.4845769405364990e-01 2.4072749912738800e-01 + 2.2412241995334625e-01 -5.8960992097854614e-01 + <_> + 5.1842327117919922e+01 + + 1 2 1808 1.3500000000000000e+01 0 -1 1809 + 1.1693500000000000e+04 -2 -3 1810 108. + + -2.1761292591691017e-02 -7.1312093734741211e-01 -1. + 7.1802109479904175e-01 + <_> + 5.2474052429199219e+01 + + 1 2 1811 5.6500000000000000e+01 0 -1 1812 + 2.7150000000000000e+02 -2 -3 1813 4.7050000000000000e+02 + + 4.8798479139804840e-02 -6.1629486083984375e-01 + 6.3172489404678345e-01 -7.8125256299972534e-01 + <_> + 5.2882488250732422e+01 + + 1 2 1814 2.7500000000000000e+01 0 -1 1815 + 2.7950000000000000e+02 -2 -3 1816 1.2500000000000000e+01 + + 1.4727012813091278e-01 -4.5306998491287231e-01 + -9.6783083677291870e-01 4.0843614935874939e-01 + <_> + 5.2590320587158203e+01 + + 1 2 1817 1.2500000000000000e+01 0 -1 1818 2332. -2 -3 1819 + 2.0500000000000000e+01 + + -4.0328302979469299e-01 3.9351496100425720e-01 + -4.5640042424201965e-01 7.0570003986358643e-01 + <_> + 5.2686405181884766e+01 + + 1 2 1820 2.8450000000000000e+02 0 -1 1821 + 5.1375000000000000e+03 -2 -3 1822 5524. + + -6.9284421205520630e-01 5.7867264747619629e-01 + -5.0904291868209839e-01 4.2930658906698227e-02 + <_> + 5.2665336608886719e+01 + + 1 2 1823 5.0000000000000000e-01 0 -1 1824 + 1.0500000000000000e+01 -2 -3 1825 3.1050000000000000e+02 + + -6.9999736547470093e-01 5.0521236658096313e-01 + -2.1066894754767418e-02 -6.7034846544265747e-01 + <_> + 5.2668560028076172e+01 + + 1 2 1826 1.5000000000000000e+00 0 -1 1827 + 4.5000000000000000e+00 -2 -3 1828 3.9500000000000000e+01 + + -8.5607993602752686e-01 2.3388290405273438e-01 + -4.7936838865280151e-01 6.4502292871475220e-01 + <_> + 5.2418178558349609e+01 + + 1 2 1829 2.5000000000000000e+00 0 -1 1830 + 1.2500000000000000e+01 -2 -3 1831 3.7450000000000000e+02 + + -2.5030246376991272e-01 4.1110610961914062e-01 + -4.8104089498519897e-01 2.8128054738044739e-01 + <_> + 5.2447761535644531e+01 + + 1 2 1832 1.4500000000000000e+01 0 -1 1833 + 1.6038500000000000e+04 -2 -3 1834 6.5000000000000000e+00 + + 6.2847787141799927e-01 -3.8954043388366699e-01 + 2.9580958187580109e-02 -6.1391896009445190e-01 + <_> + 5.2839599609375000e+01 + + 1 2 1835 8.0500000000000000e+01 0 -1 1836 + 1.4845000000000000e+03 -2 -3 1837 1.1500000000000000e+01 + + -4.2797079682350159e-01 7.2983002662658691e-01 + -4.2472079396247864e-01 3.9183807373046875e-01 + <_> + 5.3161972045898438e+01 + + 1 2 1838 169. 0 -1 1839 2.3500000000000000e+01 -2 -3 1840 + 3.0500000000000000e+01 + + 3.2237488031387329e-01 -2.9692310094833374e-01 + 5.2028205245733261e-02 -8.3673799037933350e-01 + <_> + 5.3484062194824219e+01 + + 1 2 1841 9.5000000000000000e+00 0 -1 1842 + 4.1565000000000000e+03 -2 -3 1843 924. + + 1.3346555642783642e-02 -7.3501825332641602e-01 + -5.0849604606628418e-01 3.2209011912345886e-01 + <_> + 5.3532875061035156e+01 + + 1 2 1844 5.0550000000000000e+02 0 -1 1845 + 5.5000000000000000e+00 -2 -3 1846 8.2500000000000000e+01 + + 3.6607748270034790e-01 -4.2199668288230896e-01 + -7.4034929275512695e-01 3.8815331459045410e-01 + <_> + 5.3596260070800781e+01 + + 1 2 1847 1.9550000000000000e+02 0 -1 1848 + 7.6850000000000000e+02 -2 -3 1849 7.7350000000000000e+02 + + -3.7186509370803833e-01 4.2454031109809875e-01 + 4.2895314097404480e-01 -4.3257468938827515e-01 + <_> + 5.3252147674560547e+01 + + 1 2 1850 4.2500000000000000e+01 0 -1 1851 + 4.5500000000000000e+01 -2 -3 1852 2.9500000000000000e+01 + + 3.5978814959526062e-01 -7.1406579017639160e-01 + -4.4595164060592651e-01 5.2671235799789429e-01 + <_> + 5.3540912628173828e+01 + + 1 2 1853 2.0500000000000000e+01 0 -1 1854 276. -2 -3 1855 + 1.2850000000000000e+02 + + 3.2382410764694214e-01 -6.7686492204666138e-01 + 2.8876608610153198e-01 -5.3703272342681885e-01 + <_> + 5.4058471679687500e+01 + + 1 2 1856 1.1065000000000000e+03 0 -1 1857 + 4.5000000000000000e+00 -2 -3 1858 1570. + + -4.9808049201965332e-01 5.8341735601425171e-01 + -4.8129281401634216e-01 1.1452827602624893e-01 + <_> + 5.3559310913085938e+01 + + 1 2 1859 5.0000000000000000e-01 0 -1 1860 + 9.0500000000000000e+01 -2 -3 1861 1.4250000000000000e+02 + + 4.2286753654479980e-01 -7.5187528133392334e-01 + -5.5336773395538330e-01 1.0487236082553864e-01 + <_> + 5.3792110443115234e+01 + + 1 2 1862 5.5000000000000000e+00 0 -1 1863 + 5.2850000000000000e+02 -2 -3 1864 6.5000000000000000e+00 + + -9.8098456859588623e-01 2.5169646739959717e-01 + 3.1981575489044189e-01 -2.3502953350543976e-01 + <_> + 5.4220581054687500e+01 + + 1 2 1865 1.4500000000000000e+01 0 -1 1866 + 2.4025000000000000e+03 -2 -3 1867 4.5000000000000000e+00 + + 2.7904801070690155e-02 -8.8576656579971313e-01 + 4.2847126722335815e-01 -1.1248188465833664e-01 + <_> + 5.4116458892822266e+01 + + 1 2 1868 3.0500000000000000e+01 0 -1 1869 + 1.0500000000000000e+01 -2 -3 1870 1.5000000000000000e+00 + + 2.2367130219936371e-01 -9.1485178470611572e-01 + 5.5012780427932739e-01 -1.0412286967039108e-01 + <_> + 5.4431377410888672e+01 + + 1 2 1871 1110. 0 -1 1872 2.4500000000000000e+01 -2 -3 1873 + 8.7500000000000000e+01 + + 6.6319614648818970e-02 -9.0293776988983154e-01 + -2.7686271071434021e-01 3.1491985917091370e-01 + <_> + 5.3841773986816406e+01 + + 1 2 1874 3.1500000000000000e+01 0 -1 1875 + 5.2950000000000000e+02 -2 -3 1876 2.8335000000000000e+03 + + 4.3545942753553391e-03 7.3121100664138794e-01 + 3.2255075871944427e-02 -6.5287035703659058e-01 + <_> + 5.3977920532226562e+01 + + 1 2 1877 4.4635000000000000e+03 0 -1 1878 + 3.5000000000000000e+00 -2 -3 1879 1.2150000000000000e+02 + + -8.3098447322845459e-01 1.3614629209041595e-01 -1. 1. + <_> + 5.4538074493408203e+01 + + 1 2 1880 2.0500000000000000e+01 0 -1 1881 + 7.8500000000000000e+01 -2 -3 1882 5.0500000000000000e+01 + + -7.4102438986301422e-02 6.1979264020919800e-01 + 8.4239649772644043e-01 -8.3167529106140137e-01 + <_> + 5.4199844360351562e+01 + + 0 1 1883 5.5000000000000000e+00 0 1 1883 5.5000000000000000e+00 -1 -2 1884 + 2.3500000000000000e+01 + + -1. -1. 1.8631875514984131e-01 -3.9786672592163086e-01 + <_> + 5.4321243286132812e+01 + + 1 2 1885 100108. 0 -1 1886 2.4450000000000000e+02 -2 -3 1887 + 9.5000000000000000e+00 + + -6.4501583576202393e-01 1.2139873951673508e-01 + -9.8769044876098633e-01 1. + <_> + 5.4476604461669922e+01 + + 1 2 1888 3.0500000000000000e+01 0 -1 1889 832. -2 -3 1890 + 3.8650000000000000e+02 + + 4.7927451133728027e-01 -3.6918625235557556e-01 + 4.3850061297416687e-01 -4.2658120393753052e-01 + <_> + 5.4880313873291016e+01 + + 1 2 1891 4.5000000000000000e+00 0 -1 1892 + 1.8500000000000000e+01 -2 -3 1893 9.5000000000000000e+00 + + -8.9552253484725952e-01 1. 4.0370723605155945e-01 + -1.3244532048702240e-01 + <_> + 5.4826488494873047e+01 + + 1 2 1894 3.3500000000000000e+01 0 -1 1895 + 5.0000000000000000e-01 -2 -3 1896 1.5000000000000000e+00 + + 5.2266705036163330e-01 -4.9189320206642151e-01 + 4.7518423199653625e-01 -1.8694840371608734e-01 + <_> + 5.4719253540039062e+01 + + 1 2 1897 1.3250000000000000e+02 0 -1 1898 197. -2 -3 1899 + 5.5000000000000000e+00 + + -2.5596961379051208e-02 -8.0278450250625610e-01 + 5.8479261398315430e-01 -1.0723467171192169e-01 + <_> + 5.4927463531494141e+01 + + 1 2 1900 3.5000000000000000e+00 0 -1 1901 + 2.7500000000000000e+01 -2 -3 1902 4.5000000000000000e+00 + + -9.8025721311569214e-01 1. 5.0813627243041992e-01 + -9.1872639954090118e-02 + <_> + 5.5091140747070312e+01 + + 1 2 1903 3.5500000000000000e+01 0 -1 1904 590. -2 -3 1905 + 9.5000000000000000e+00 + + 3.2067620754241943e-01 -8.1219708919525146e-01 + 3.9956301450729370e-01 -1.7662063241004944e-01 + <_> + 5.5048011779785156e+01 + + 1 2 1906 1.5500000000000000e+01 0 -1 1907 + 2.5000000000000000e+00 -2 -3 1908 1.1500000000000000e+01 + + 4.5108359307050705e-02 -5.7894098758697510e-01 + 5.1151078939437866e-01 -6.0667592287063599e-01 + <_> + 5.4623245239257812e+01 + + 1 2 1909 2.6500000000000000e+01 0 -1 1910 + 1.1500000000000000e+01 -2 -3 1911 2.0250000000000000e+02 + + 4.0922752022743225e-01 -6.0327196121215820e-01 + 3.5508340597152710e-01 -4.1403025388717651e-01 + <_> + 5.4938964843750000e+01 + + 1 2 1912 4.4450000000000000e+02 0 -1 1913 + 4.8075000000000000e+03 -2 -3 1914 5.0000000000000000e-01 + + 3.7132555246353149e-01 -9.4460356235504150e-01 + 3.1572005152702332e-01 -2.5736778974533081e-01 + <_> + 5.5008499145507812e+01 + + 1 2 1915 2.4350000000000000e+02 0 -1 1916 + 1.6500000000000000e+01 -2 -3 1917 98. + + 6.9533005356788635e-02 -5.5879753828048706e-01 + 5.2043431997299194e-01 -5.5762660503387451e-01 + <_> + 5.5581649780273438e+01 + + 1 2 1918 1.2755000000000000e+03 0 -1 1919 + 1.5000000000000000e+00 -2 -3 1920 1.4500000000000000e+01 + + 2.7316585183143616e-01 -3.9282438158988953e-01 + -8.5869687795639038e-01 5.7315075397491455e-01 + <_> + 5.5420215606689453e+01 + + 1 2 1921 3.7635000000000000e+03 0 -1 1922 + 1.0904500000000000e+04 -2 -3 1923 6.9750000000000000e+02 + + -8.7749630212783813e-02 7.8290265798568726e-01 + 3.7081098556518555e-01 -3.9786884188652039e-01 + <_> + 5.5134284973144531e+01 + + 1 2 1924 3.5000000000000000e+00 0 -1 1925 + 1.5000000000000000e+00 -2 -3 1926 1.3535000000000000e+03 + + -8.4669679403305054e-01 5.6518930196762085e-01 + -2.8593066334724426e-01 7.8882968425750732e-01 + <_> + 5.5399112701416016e+01 + + 1 2 1927 1.4500000000000000e+01 0 -1 1928 + 9.5000000000000000e+00 -2 -3 1929 2.1950000000000000e+02 + + 3.6673456430435181e-01 -8.0567514896392822e-01 + 2.6483070850372314e-01 -5.4888963699340820e-01 + <_> + 5.5665115356445312e+01 + + 1 2 1930 1.0500000000000000e+01 0 -1 1931 + 4.3500000000000000e+01 -2 -3 1932 2.2500000000000000e+01 + + -8.0224722623825073e-01 7.3296892642974854e-01 + 3.1390979886054993e-01 -2.7697941660881042e-01 + <_> + 5.5662361145019531e+01 + + 1 2 1933 5.0000000000000000e-01 0 -1 1934 + 1.0500000000000000e+01 -2 -3 1935 609. + + -4.6577224135398865e-01 3.6372005939483643e-01 + -6.7203342914581299e-02 -8.5283303260803223e-01 + <_> + 5.5597713470458984e+01 + + 1 2 1936 4.8150000000000000e+02 0 -1 1937 897. -2 -3 1938 + 6.0015000000000000e+03 + + -7.0950525999069214e-01 3.6562061309814453e-01 + 7.1085697412490845e-01 -6.4645722508430481e-02 + <_> + 5.5976200103759766e+01 + + 1 2 1939 1.7500000000000000e+01 0 -1 1940 + 2.6500000000000000e+01 -2 -3 1941 2.7195000000000000e+03 + + -6.9570225477218628e-01 3.7848454713821411e-01 + 3.8467934727668762e-01 -3.8020190596580505e-01 + <_> + 5.6158012390136719e+01 + + 1 2 1942 2.6002500000000000e+04 0 -1 1943 + 5.5000000000000000e+00 -2 -3 1944 933. + + 5.2110773324966431e-01 -7.8237217664718628e-01 + -8.0685955286026001e-01 1.8181376159191132e-01 + <_> + 5.6510974884033203e+01 + + 1 2 1945 6.5000000000000000e+00 0 -1 1946 + 7.7950000000000000e+02 -2 -3 1947 1.1350000000000000e+02 + + 8.0221951007843018e-01 -5.5787330865859985e-01 + -2.5150266289710999e-01 3.5296073555946350e-01 + <_> + 5.6669940948486328e+01 + + 1 2 1948 1.2500000000000000e+01 0 -1 1949 + 2.1500000000000000e+01 -2 -3 1950 3.7500000000000000e+01 + + -8.1347912549972534e-01 3.3844006061553955e-01 + -5.6976383924484253e-01 1.5896809101104736e-01 + <_> + 5.6639522552490234e+01 + + 1 2 1951 5.0000000000000000e-01 0 -1 1952 + 1.0350000000000000e+02 -2 -3 1953 979. + + 5.6548482179641724e-01 -7.8466528654098511e-01 + -4.1022753715515137e-01 1.7647762596607208e-01 + <_> + 5.6746051788330078e+01 + + 1 2 1954 4.7655500000000000e+04 0 -1 1955 1217. -2 -3 1956 + 2.6650000000000000e+02 + + -6.9296687841415405e-01 2.6075837016105652e-01 + -7.9774957895278931e-01 1.7970228567719460e-02 + <_> + 5.6479259490966797e+01 + + 1 2 1957 1.2650000000000000e+02 0 -1 1958 + 1.9500000000000000e+01 -2 -3 1959 491. + + -2.6678943634033203e-01 3.8788908720016479e-01 + 9.1776609420776367e-01 -4.6553900837898254e-01 + <_> + 5.6557636260986328e+01 + + 1 2 1960 4.7500000000000000e+01 0 -1 1961 + 9.6450000000000000e+02 -2 -3 1962 5.0000000000000000e-01 + + 3.0366006493568420e-01 -8.8815379142761230e-01 + 4.8105791211128235e-01 -8.4002502262592316e-02 + <_> + 5.6977615356445312e+01 + + 1 2 1963 1.9350000000000000e+02 0 -1 1964 + 1.0500000000000000e+01 -2 -3 1965 316. + + 1.2478869408369064e-01 -5.4758942127227783e-01 + 4.1997796297073364e-01 -2.8715902566909790e-01 + <_> + 5.6940200805664062e+01 + + 1 2 1966 1.3500000000000000e+01 0 -1 1967 + 9.5000000000000000e+00 -2 -3 1968 4.5000000000000000e+00 + + 5.6444692611694336e-01 -5.1318335533142090e-01 + 4.1364780068397522e-01 -2.3452880978584290e-01 + <_> + 5.7376541137695312e+01 + + 1 2 1969 6.5000000000000000e+00 0 -1 1970 + 5.2500000000000000e+01 -2 -3 1971 2.6500000000000000e+01 + + -3.1519573926925659e-01 4.3634009361267090e-01 + -5.3644794225692749e-01 3.0770981311798096e-01 + <_> + 5.7745677947998047e+01 + + 1 2 1972 9.5000000000000000e+00 0 -1 1973 + 1.7125000000000000e+03 -2 -3 1974 2095. + + -5.8112341910600662e-02 5.0887292623519897e-01 + 2.3396022617816925e-01 -5.9023892879486084e-01 + <_> + 5.7668346405029297e+01 + + 1 2 1975 1.3835000000000000e+03 0 -1 1976 + 2.3365000000000000e+03 -2 -3 1977 5.0000000000000000e-01 + + -2.2391898930072784e-01 4.7256642580032349e-01 + 4.1642077267169952e-03 -6.2670201063156128e-01 + <_> + 5.7691123962402344e+01 + + 1 2 1978 2.7250000000000000e+02 0 -1 1979 + 8.0950000000000000e+02 -2 -3 1980 1.4500000000000000e+01 + + -2.9949793219566345e-01 7.5373744964599609e-01 + 2.2777365520596504e-02 -5.4332214593887329e-01 + <_> + 5.7523948669433594e+01 + + 1 2 1981 2.5500000000000000e+01 0 -1 1982 + 3.5000000000000000e+00 -2 -3 1983 9.5000000000000000e+00 + + 2.7234396338462830e-01 -7.7871346473693848e-01 + 4.1143327951431274e-01 -1.6717562079429626e-01 + <_> + 5.7792133331298828e+01 + + 1 2 1984 3.0500000000000000e+01 0 -1 1985 + 6.5000000000000000e+00 -2 -3 1986 4.7850000000000000e+02 + + 4.2716450989246368e-02 -6.7291486263275146e-01 + 3.2022616267204285e-01 -6.1982798576354980e-01 + <_> + 5.8013004302978516e+01 + + 1 2 1987 3.4500000000000000e+01 0 -1 1988 + 9.5000000000000000e+00 -2 -3 1989 3.9350000000000000e+02 + + -5.1402336359024048e-01 2.2087192535400391e-01 + -7.2181683778762817e-01 1.9793330132961273e-01 + <_> + 5.8191169738769531e+01 + + 1 2 1990 9.7500000000000000e+01 0 -1 1991 + 6.2250000000000000e+02 -2 -3 1992 9.5500000000000000e+01 + + 1.7816618084907532e-01 -4.8832407593727112e-01 + -9.5159941911697388e-01 6.5016353130340576e-01 + <_> + 5.8067699432373047e+01 + + 1 2 1993 2.5000000000000000e+00 0 -1 1994 + 2.2500000000000000e+01 -2 -3 1995 1.4500000000000000e+01 + + 5.9863173961639404e-01 -1.2370918691158295e-01 + -5.3876280784606934e-01 2.5208535790443420e-01 + <_> + 5.8372417449951172e+01 + + 1 2 1996 1.8075000000000000e+03 0 -1 1997 + 4.5000000000000000e+00 -2 -3 1998 7.4500000000000000e+01 + + 3.9194607734680176e-01 -3.2276815176010132e-01 + 5.3963506221771240e-01 -6.4209002256393433e-01 + <_> + 5.8342327117919922e+01 + + 1 2 1999 7.5000000000000000e+00 0 -1 2000 + 1.3500000000000000e+01 -2 -3 2001 3.5000000000000000e+00 + + -9.3360573053359985e-01 1. 3.0816203355789185e-01 + -1.9820201396942139e-01 + <_> + 5.8525230407714844e+01 + + 1 2 2002 5.4500000000000000e+01 0 -1 2003 + 3.1500000000000000e+01 -2 -3 2004 5.5000000000000000e+00 + + -6.9942277669906616e-01 1. 2.0665432512760162e-01 + -4.8230728507041931e-01 + <_> + 5.8137825012207031e+01 + + 1 2 2005 5.0000000000000000e-01 0 -1 2006 + 6.5000000000000000e+00 -2 -3 2007 1.6255000000000000e+03 + + -9.1363656520843506e-01 3.4000685811042786e-01 + 3.6237233877182007e-01 -3.8740426301956177e-01 + <_> + 5.7477180480957031e+01 + + 1 2 2008 1.6500000000000000e+01 0 -1 2009 + 3.3050000000000000e+02 -2 -3 2010 1.8250000000000000e+02 + + 4.0280374884605408e-01 -6.6064602136611938e-01 + 2.3912283778190613e-01 -6.5312945842742920e-01 + <_> + 5.7596790313720703e+01 + + 1 2 2011 3.5000000000000000e+00 0 -1 2012 + 2.2850000000000000e+02 -2 -3 2013 6.7050000000000000e+02 + + -5.6311067193746567e-02 7.3480677604675293e-01 + -7.8913259506225586e-01 -5.2745390683412552e-02 + <_> + 5.7969238281250000e+01 + + 1 2 2014 1.2195000000000000e+03 0 -1 2015 + 1.5000000000000000e+00 -2 -3 2016 44231. + + 3.7240502238273621e-01 -3.7414985895156860e-01 + 5.3368985652923584e-01 -3.4466567635536194e-01 + <_> + 5.7981628417968750e+01 + + 1 2 2017 1.6650000000000000e+02 0 -1 2018 + 2.0500000000000000e+01 -2 -3 2019 1.3500000000000000e+01 + + -2.3047098517417908e-01 4.0283700823783875e-01 + -8.8833373785018921e-01 9.4913655519485474e-01 + <_> + 5.8304691314697266e+01 + + 1 2 2020 1.7500000000000000e+01 0 -1 2021 + 2.2500000000000000e+01 -2 -3 2022 1.3950000000000000e+02 + + -9.7246366739273071e-01 4.5725116133689880e-01 + -3.3056676387786865e-01 3.2306280732154846e-01 + <_> + 5.8687774658203125e+01 + + 1 2 2023 3.6050000000000000e+02 0 -1 2024 + 2.1500000000000000e+01 -2 -3 2025 5.7150000000000000e+02 + + -1.9407491385936737e-01 4.0379062294960022e-01 + -7.1832591295242310e-01 1.6718479990959167e-01 + <_> + 5.8403263092041016e+01 + + 1 2 2026 3.5000000000000000e+00 0 -1 2027 + 1.5000000000000000e+00 -2 -3 2028 1.1125000000000000e+03 + + -7.1120482683181763e-01 5.4733234643936157e-01 + -3.0521857738494873e-01 5.3309994935989380e-01 + <_> + 5.8206588745117188e+01 + + 1 2 2029 9.8550000000000000e+02 0 -1 2030 + 8.5000000000000000e+00 -2 -3 2031 6.5000000000000000e+00 + + -6.1662030220031738e-01 4.3150734901428223e-01 + 1.1408390849828720e-01 -5.7918250560760498e-01 + <_> + 5.8434097290039062e+01 + + 1 2 2032 1.2500000000000000e+01 0 -1 2033 + 9.7500000000000000e+01 -2 -3 2034 8574. + + 4.1095575690269470e-01 -6.6425901651382446e-01 + 2.2750854492187500e-01 -6.5870326757431030e-01 + <_> + 5.8159267425537109e+01 + + 1 2 2035 790. 0 -1 2036 26812. -2 -3 2037 + 5.2150000000000000e+02 + + -8.0263590812683105e-01 8.7009161710739136e-01 + -2.7483054995536804e-01 3.0290663242340088e-01 + <_> + 5.8559719085693359e+01 + + 1 2 2038 1.5550000000000000e+02 0 -1 2039 + 3.6500000000000000e+01 -2 -3 2040 1752. + + -1.1953184753656387e-01 4.0045145153999329e-01 + 8.7820923328399658e-01 -9.3850684165954590e-01 + <_> + 5.8625492095947266e+01 + + 1 2 2041 5.0000000000000000e-01 0 -1 2042 + 2.5000000000000000e+00 -2 -3 2043 6.5000000000000000e+00 + + -7.3991537094116211e-01 7.3110866546630859e-01 + 2.8890112042427063e-01 -2.9580232501029968e-01 + <_> + 5.8505027770996094e+01 + + 1 2 2044 6.7500000000000000e+01 0 -1 2045 + 5.6500000000000000e+01 -2 -3 2046 9.8500000000000000e+01 + + -4.7034713625907898e-01 6.4461517333984375e-01 + 3.4142866730690002e-01 -8.6112099885940552e-01 + <_> + 5.8600910186767578e+01 + + 1 2 2047 8.0500000000000000e+01 0 -1 2048 + 1.8650000000000000e+02 -2 -3 2049 590. + + -7.2916746139526367e-01 3.1004229187965393e-01 + -6.6359126567840576e-01 9.5881775021553040e-02 + <_> + 5.8711597442626953e+01 + + 1 2 2050 5.0000000000000000e-01 0 -1 2051 + 7.5450000000000000e+02 -2 -3 2052 3.2650000000000000e+02 + + -9.2816257476806641e-01 4.2444109916687012e-01 + -4.2585963010787964e-01 3.1073370575904846e-01 + <_> + 5.8032016754150391e+01 + + 1 2 2053 60937. 0 -1 2054 416. -2 -3 2055 + 4.5000000000000000e+00 + + 1.7063696682453156e-01 -6.7958027124404907e-01 + 8.7877064943313599e-01 -9.5674747228622437e-01 + <_> + 5.8740566253662109e+01 + + 1 2 2056 1.5000000000000000e+00 0 -1 2057 + 3.5000000000000000e+00 -2 -3 2058 4.6500000000000000e+01 + + -7.4752992391586304e-01 7.0855057239532471e-01 + -6.8028306961059570e-01 2.6557485107332468e-03 + <_> + 5.9213050842285156e+01 + + 1 2 2059 7.5000000000000000e+00 0 -1 2060 + 4.5000000000000000e+00 -2 -3 2061 2.9750000000000000e+02 + + -1.6750365495681763e-01 4.7248429059982300e-01 + 1.6587665677070618e-01 -5.7748597860336304e-01 + <_> + 5.9422805786132812e+01 + + 1 2 2062 9.5000000000000000e+00 0 -1 2063 + 2.4500000000000000e+01 -2 -3 2064 7.5000000000000000e+00 + + 2.3164252936840057e-01 -8.6614209413528442e-01 + -8.4939008951187134e-01 2.0975443720817566e-01 + <_> + 5.8884654998779297e+01 + + 1 2 2065 6.2500000000000000e+01 0 -1 2066 + 1.0500000000000000e+01 -2 -3 2067 252. + + 1.0844799689948559e-02 -5.3815227746963501e-01 + 7.5545585155487061e-01 -4.2718842625617981e-01 + <_> + 5.9134284973144531e+01 + + 1 2 2068 2.3365000000000000e+03 0 -1 2069 + 1.2850000000000000e+02 -2 -3 2070 3.4845000000000000e+03 + + 8.5452580451965332e-01 -5.0535249710083008e-01 + 7.7388888597488403e-01 -6.3630655407905579e-02 + <_> + 5.9335205078125000e+01 + + 1 2 2071 7.5000000000000000e+00 0 -1 2072 + 6.5000000000000000e+00 -2 -3 2073 2.1450000000000000e+02 + + -8.2057535648345947e-01 2.0091684162616730e-01 + -6.9147127866744995e-01 6.4241760969161987e-01 + <_> + 5.9819751739501953e+01 + + 1 2 2074 1.4500000000000000e+01 0 -1 2075 + 1.3500000000000000e+01 -2 -3 2076 4.9500000000000000e+01 + + -9.3421977758407593e-01 4.8454797267913818e-01 + -3.7337201833724976e-01 3.2126367092132568e-01 + <_> + 5.9756664276123047e+01 + + 1 2 2077 3.7550000000000000e+02 0 -1 2078 + 8.1500000000000000e+01 -2 -3 2079 14. + + -6.3086077570915222e-02 5.7233673334121704e-01 1. + -9.5777195692062378e-01 + <_> + 6.0291542053222656e+01 + + 1 2 2080 3.5000000000000000e+00 0 -1 2081 + 2.5000000000000000e+00 -2 -3 2082 1.7500000000000000e+01 + + -7.0069408416748047e-01 6.3710403442382812e-01 + -4.9769634008407593e-01 1.1464314162731171e-01 + <_> + 6.0335617065429688e+01 + + 1 2 2083 6.0500000000000000e+01 0 -1 2084 235. -2 -3 2085 + 6.5500000000000000e+01 + + 6.0332548618316650e-01 -4.5363491773605347e-01 + -7.2721785306930542e-01 2.7224572841078043e-03 + <_> + 5.9978572845458984e+01 + + 1 2 2086 2145. 0 -1 2087 5.0000000000000000e-01 -2 -3 2088 + 1.1500000000000000e+01 + + 6.9418591260910034e-01 -7.1563631296157837e-01 + -5.4690980911254883e-01 2.3341998457908630e-01 + <_> + 6.0145259857177734e+01 + + 1 2 2089 4.8350000000000000e+02 0 -1 2090 + 5.3500000000000000e+01 -2 -3 2091 5.0550000000000000e+02 + + 5.3724527359008789e-01 -1.2441903352737427e-01 + -6.5049791336059570e-01 2.5399866700172424e-01 + <_> + 6.0507656097412109e+01 + + 1 2 2092 2.7500000000000000e+01 0 -1 2093 + 5.5000000000000000e+00 -2 -3 2094 5.0500000000000000e+01 + + 1.4425510168075562e-01 -7.4231290817260742e-01 + -2.6776736974716187e-01 3.6239382624626160e-01 + <_> + 6.0473968505859375e+01 + + 1 2 2095 5.0000000000000000e-01 0 -1 2096 + 2.5500000000000000e+01 -2 -3 2097 1587. + + -7.2751653194427490e-01 4.5861607789993286e-01 + 5.5637544393539429e-01 -3.6810955405235291e-01 + <_> + 6.0842075347900391e+01 + + 1 2 2098 5.1150000000000000e+02 0 -1 2099 1169. -2 -3 2100 + 2.0150000000000000e+02 + + -3.0562120676040649e-01 8.1614106893539429e-01 + 7.2896146774291992e-01 -1.8503957986831665e-01 + <_> + 6.0462539672851562e+01 + + 1 2 2101 8.3500000000000000e+01 0 -1 2102 + 3.0500000000000000e+01 -2 -3 2103 2.9850000000000000e+02 + + -8.2488976418972015e-02 4.4352260231971741e-01 + 5.2298051118850708e-01 -8.3577710390090942e-01 + <_> + 6.1029483795166016e+01 + + 1 2 2104 5.0000000000000000e-01 0 -1 2105 + 1.6500000000000000e+01 -2 -3 2106 2.8650000000000000e+02 + + -6.2287323176860809e-02 5.6694161891937256e-01 + -5.0430041551589966e-01 2.6749575138092041e-01 + <_> + 6.0533782958984375e+01 + + 1 2 2107 1.5000000000000000e+00 0 -1 2108 86. -2 -3 2109 + 1.5000000000000000e+00 + + 4.6476197242736816e-01 -3.5366341471672058e-01 + 1.1941082775592804e-01 -4.9569913744926453e-01 + <_> + 6.1014225006103516e+01 + + 1 2 2110 8.5500000000000000e+01 0 -1 2111 + 7.1500000000000000e+01 -2 -3 2112 3.0050000000000000e+02 + + -3.2236501574516296e-01 5.3735041618347168e-01 + 4.8043999075889587e-01 -8.1549012660980225e-01 + <_> + 6.1214355468750000e+01 + + 1 2 2113 5.0000000000000000e-01 0 -1 2114 5423. -2 -3 2115 + 3.2500000000000000e+01 + + 6.3166511058807373e-01 -1.0317980498075485e-01 + -8.1713062524795532e-01 -4.8018395900726318e-02 + <_> + 6.1207153320312500e+01 + + 1 2 2116 6.9750000000000000e+02 0 -1 2117 + 2.3500000000000000e+01 -2 -3 2118 1299. + + -5.5850952863693237e-01 4.5436400175094604e-01 + -4.2946615815162659e-01 4.6700772643089294e-01 + <_> + 6.1372627258300781e+01 + + 1 2 2119 9.7500000000000000e+01 0 -1 2120 + 1.2500000000000000e+01 -2 -3 2121 8.8500000000000000e+01 + + -9.3579089641571045e-01 1.6547182202339172e-01 + -8.7968140840530396e-01 5.9617185592651367e-01 + <_> + 6.1535186767578125e+01 + + 1 2 2122 4.0550000000000000e+02 0 -1 2123 + 8.5000000000000000e+00 -2 -3 2124 5.5500000000000000e+01 + + -5.4796415567398071e-01 2.2591431438922882e-01 + -6.4731520414352417e-01 6.6429591178894043e-01 + <_> + 6.1438594818115234e+01 + + 1 2 2125 7.5000000000000000e+00 0 -1 2126 + 1.6500000000000000e+01 -2 -3 2127 2.0464500000000000e+04 + + -7.6974302530288696e-01 5.8108645677566528e-01 + 1.4914943277835846e-01 -4.0168645977973938e-01 + <_> + 6.1837162017822266e+01 + + 1 2 2128 1.9150000000000000e+02 0 -1 2129 + 2.5000000000000000e+00 -2 -3 2130 2.3500000000000000e+01 + + 3.0682370066642761e-01 -6.2734222412109375e-01 + -3.0841422080993652e-01 3.9856877923011780e-01 + <_> + 6.1491020202636719e+01 + + 1 2 2131 9.5000000000000000e+00 0 -1 2132 + 1.0286500000000000e+04 -2 -3 2133 1.5750000000000000e+02 + + 4.2527648806571960e-01 -3.4614086151123047e-01 + -6.1684650182723999e-01 1.9758818671107292e-02 + <_> + 6.1886714935302734e+01 + + 1 2 2134 1.7500000000000000e+01 0 -1 2135 + 9.2500000000000000e+01 -2 -3 2136 18. + + -1.2079064548015594e-01 3.9569309353828430e-01 + 3.3188980817794800e-01 -8.7485474348068237e-01 + <_> + 6.1790431976318359e+01 + + 1 2 2137 2.1500000000000000e+01 0 -1 2138 + 2.2500000000000000e+01 -2 -3 2139 4.5000000000000000e+00 + + -5.2500929683446884e-02 6.8664622306823730e-01 + 1.5717932581901550e-01 -6.7684161663055420e-01 + <_> + 6.2245330810546875e+01 + + 1 2 2140 1.2135000000000000e+03 0 -1 2141 + 4.5000000000000000e+00 -2 -3 2142 5.2865000000000000e+03 + + 3.3859279751777649e-01 -4.2644050717353821e-01 + 5.0935482978820801e-01 -4.1733506321907043e-01 + <_> + 6.2387325286865234e+01 + + 1 2 2143 4.5000000000000000e+00 0 -1 2144 + 1.0500000000000000e+01 -2 -3 2145 209. + + 1.3510234653949738e-01 -9.6185976266860962e-01 + 1.4199161529541016e-01 -8.5389542579650879e-01 + <_> + 6.2084945678710938e+01 + + 1 2 2146 11208. 0 -1 2147 5.0000000000000000e-01 -2 -3 2148 + 20248. + + 1.5907059609889984e-01 -3.8836613297462463e-01 + 8.0494099855422974e-01 -7.7658468484878540e-01 + <_> + 6.1984123229980469e+01 + + 1 2 2149 2.3500000000000000e+01 0 -1 2150 + 2.3650000000000000e+02 -2 -3 2151 5.0000000000000000e-01 + + 1. -1. 4.0856447815895081e-01 -1.0082300007343292e-01 + <_> + 6.2277572631835938e+01 + + 1 2 2152 1.2115000000000000e+03 0 -1 2153 + 1.5000000000000000e+00 -2 -3 2154 4.2995000000000000e+03 + + 4.2784088850021362e-01 -8.9822685718536377e-01 + 2.9345232248306274e-01 -2.5083908438682556e-01 + <_> + 6.2472473144531250e+01 + + 1 2 2155 9.4500000000000000e+01 0 -1 2156 + 1.0500000000000000e+01 -2 -3 2157 68. + + 6.5589077770709991e-02 -7.7099108695983887e-01 + -7.4427002668380737e-01 1.9490025937557220e-01 + <_> + 6.2016971588134766e+01 + + 1 2 2158 2.5000000000000000e+00 0 -1 2159 + 1.2500000000000000e+01 -2 -3 2160 5.5500000000000000e+01 + + 4.2139071226119995e-01 -5.5164831876754761e-01 + -4.5550110936164856e-01 3.6315539479255676e-01 + <_> + 6.2252468109130859e+01 + + 1 2 2161 1.5685000000000000e+03 0 -1 2162 + 4.5000000000000000e+00 -2 -3 2163 7.7500000000000000e+01 + + 4.6763184666633606e-01 -7.2583413124084473e-01 + -4.7358104586601257e-01 2.3549596965312958e-01 + <_> + 6.1926944732666016e+01 + + 1 2 2164 5.0000000000000000e-01 0 -1 2165 + 2.9500000000000000e+01 -2 -3 2166 1.5000000000000000e+00 + + -8.4635341167449951e-01 4.7176876664161682e-01 + 1.2360874563455582e-01 -4.4846296310424805e-01 + <_> + 6.2441539764404297e+01 + + 1 2 2167 1.3650000000000000e+02 0 -1 2168 + 7.5000000000000000e+00 -2 -3 2169 1.6500000000000000e+01 + + 3.0158129334449768e-01 -3.6455678939819336e-01 + -9.0578240156173706e-01 5.1459383964538574e-01 + <_> + 6.1964569091796875e+01 + + 1 2 2170 8.5000000000000000e+00 0 -1 2171 + 1.3226500000000000e+04 -2 -3 2172 6.4500000000000000e+01 + + -8.5410606861114502e-01 2.6482892036437988e-01 + -4.7696748375892639e-01 6.1308634281158447e-01 + <_> + 6.1803714752197266e+01 + + 1 2 2173 2.6500000000000000e+01 0 -1 2174 + 4.5000000000000000e+00 -2 -3 2175 5.0000000000000000e-01 + + 5.8156448602676392e-01 -8.6257112026214600e-01 + 4.0267577767372131e-01 -1.6085536777973175e-01 + <_> + 6.2505237579345703e+01 + + 1 2 2176 4.2500000000000000e+01 0 -1 2177 + 7.9662500000000000e+04 -2 -3 2178 2.2050000000000000e+02 + + 4.3292667716741562e-02 -8.7512964010238647e-01 + -2.3395214229822159e-02 7.0152431726455688e-01 + <_> + 6.2662498474121094e+01 + + 1 2 2179 2.2535000000000000e+03 0 -1 2180 5489. -2 -3 2181 + 6.5000000000000000e+00 + + -1.3394173979759216e-01 6.8779164552688599e-01 + 4.8814722895622253e-01 -3.9524573087692261e-01 + <_> + 6.2619869232177734e+01 + + 1 2 2182 3.0135000000000000e+03 0 -1 2183 4966. -2 -3 2184 + 5.5000000000000000e+00 + + -3.0220034718513489e-01 8.1261235475540161e-01 + 1.7436875402927399e-01 -3.7351670861244202e-01 + <_> + 6.2884567260742188e+01 + + 1 2 2185 2.5000000000000000e+00 0 -1 2186 286. -2 -3 2187 + 2.9500000000000000e+01 + + 8.4548860788345337e-01 -9.6311759948730469e-01 + -3.5037949681282043e-01 2.6469662785530090e-01 + <_> + 6.2971755981445312e+01 + + 1 2 2188 4.5000000000000000e+00 0 -1 2189 + 5.6350000000000000e+02 -2 -3 2190 1.7500000000000000e+01 + + 3.5842654109001160e-01 -7.6083594560623169e-01 + -6.3569843769073486e-01 1.1528482288122177e-01 + <_> + 6.2904327392578125e+01 + + 1 2 2191 19751. 0 -1 2192 5709. -2 -3 2193 + 5.0000000000000000e-01 + + 5.8615106344223022e-01 -6.7431032657623291e-02 + 8.1077980995178223e-01 -7.9040503501892090e-01 + <_> + 6.3428482055664062e+01 + + 1 2 2194 5.2150000000000000e+02 0 -1 2195 112. -2 -3 2196 + 4.8500000000000000e+01 + + -2.9560300707817078e-01 6.3393580913543701e-01 + -7.4229598045349121e-01 5.2415388822555542e-01 + <_> + 6.3408718109130859e+01 + + 1 2 2197 2.2850000000000000e+02 0 -1 2198 + 9.5000000000000000e+00 -2 -3 2199 8.5000000000000000e+00 + + -6.5528714656829834e-01 3.2386130094528198e-01 + -5.1321542263031006e-01 3.7662333250045776e-01 + <_> + 6.3479297637939453e+01 + + 1 2 2200 1.0500000000000000e+01 0 -1 2201 + 1.2875000000000000e+03 -2 -3 2202 1.1550000000000000e+02 + + -6.5136082470417023e-02 5.4068171977996826e-01 + -5.4428064823150635e-01 3.5270053148269653e-01 + <_> + 6.3459232330322266e+01 + + 1 2 2203 5.6350000000000000e+02 0 -1 2204 + 3.6500000000000000e+01 -2 -3 2205 2.7500000000000000e+01 + + -2.6665899157524109e-01 2.9732996225357056e-01 + 8.9094859361648560e-01 -7.8570848703384399e-01 + <_> + 6.3715244293212891e+01 + + 1 2 2206 1.3750000000000000e+02 0 -1 2207 + 5.5950000000000000e+02 -2 -3 2208 1.7350000000000000e+02 + + 8.2382661104202271e-01 -9.3905463814735413e-02 + -7.7598297595977783e-01 -6.1380777508020401e-02 + <_> + 6.4063674926757812e+01 + + 1 2 2209 1.5000000000000000e+00 0 -1 2210 + 1.1500000000000000e+01 -2 -3 2211 3.1850000000000000e+02 + + -8.9411342144012451e-01 3.4842905402183533e-01 + -4.4360893964767456e-01 4.8869660496711731e-01 + <_> + 6.4111953735351562e+01 + + 1 2 2212 2.5000000000000000e+00 0 -1 2213 + 4.1500000000000000e+01 -2 -3 2214 5.0000000000000000e-01 + + -2.3706158995628357e-01 4.4370284676551819e-01 + 5.4362642765045166e-01 -5.1952922344207764e-01 + <_> + 6.4159660339355469e+01 + + 1 2 2215 1.5000000000000000e+00 0 -1 2216 + 5.7500000000000000e+01 -2 -3 2217 1.0775000000000000e+03 + + -2.5581914931535721e-02 6.6174793243408203e-01 + 4.0115654468536377e-01 -3.5893636941909790e-01 + <_> + 6.4437599182128906e+01 + + 1 2 2218 921. 0 -1 2219 4.5000000000000000e+00 -2 -3 2220 + 2.9045000000000000e+03 + + 3.1526345014572144e-01 -7.0185899734497070e-01 + 2.7793204784393311e-01 -4.8113667964935303e-01 + <_> + 6.4332015991210938e+01 + + 1 2 2221 1.8985000000000000e+03 0 -1 2222 + 7.8250000000000000e+02 -2 -3 2223 2.1500000000000000e+01 + + -2.8789478540420532e-01 6.2446802854537964e-01 + -7.3467957973480225e-01 7.2612441144883633e-03 + <_> + 6.4401939392089844e+01 + + 1 2 2224 2.5000000000000000e+00 0 -1 2225 + 3.7500000000000000e+01 -2 -3 2226 5.4850000000000000e+02 + + -6.1204963922500610e-01 6.2827998399734497e-01 + -5.4985451698303223e-01 6.9924682378768921e-02 + <_> + 6.4601165771484375e+01 + + 1 2 2227 3.5000000000000000e+00 0 -1 2228 + 4.4500000000000000e+01 -2 -3 2229 6.5000000000000000e+00 + + -3.2580995559692383e-01 5.1435238122940063e-01 + 5.3874686360359192e-02 -5.6130063533782959e-01 + <_> + 6.4761596679687500e+01 + + 1 2 2230 7.5000000000000000e+00 0 -1 2231 + 3.5000000000000000e+00 -2 -3 2232 5.5500000000000000e+01 + + -7.5083559751510620e-01 3.6957365274429321e-01 + -4.0680039674043655e-02 -7.7190446853637695e-01 + <_> + 6.4306961059570312e+01 + + 1 2 2233 160. 0 -1 2234 127. -2 -3 2235 + 9.1500000000000000e+01 + + 2.1852338314056396e-01 -6.8148994445800781e-01 + -4.8492997884750366e-01 3.1643366813659668e-01 + <_> + 6.4767280578613281e+01 + + 1 2 2236 2.5000000000000000e+00 0 -1 2237 + 7.5250000000000000e+02 -2 -3 2238 4.5000000000000000e+00 + + 4.6031954884529114e-01 -6.2284696102142334e-01 + 4.7282892465591431e-01 -4.0902397036552429e-01 + <_> + 6.4466903686523438e+01 + + 1 2 2239 1.4250000000000000e+02 0 -1 2240 + 4.5000000000000000e+00 -2 -3 2241 1.5000000000000000e+00 + + 1.0185246169567108e-01 -5.8319956064224243e-01 + -6.2095612287521362e-01 4.2880809307098389e-01 + <_> + 6.4761924743652344e+01 + + 1 2 2242 1.1605000000000000e+03 0 -1 2243 2073. -2 -3 2244 + 4.6555000000000000e+03 + + -7.2359293699264526e-01 7.9880434274673462e-01 + 6.1722189188003540e-01 -1.1455553770065308e-01 + <_> + 6.5016494750976562e+01 + + 1 2 2245 1.0350000000000000e+02 0 -1 2246 + 4.4850000000000000e+02 -2 -3 2247 6.2550000000000000e+02 + + -6.7635171115398407e-02 4.6874949336051941e-01 + -8.0271768569946289e-01 3.7331908941268921e-01 + <_> + 6.5212265014648438e+01 + + 1 2 2248 6.2150000000000000e+02 0 -1 2249 326. -2 -3 2250 + 1.5000000000000000e+00 + + 1.9577379524707794e-01 -7.0703411102294922e-01 + 5.1214373111724854e-01 -7.2338587045669556e-01 + <_> + 6.5121826171875000e+01 + + 1 2 2251 9.7500000000000000e+01 0 -1 2252 + 2.3550000000000000e+02 -2 -3 2253 1.9500000000000000e+01 + + 4.6985685825347900e-01 -8.9037990570068359e-01 + 4.9876618385314941e-01 -9.0437032282352448e-02 + <_> + 6.5343742370605469e+01 + + 1 2 2254 1.9500000000000000e+01 0 -1 2255 1133. -2 -3 2256 + 1.0050000000000000e+02 + + 4.8251938819885254e-01 -6.2672054767608643e-01 + 2.2191496193408966e-01 -7.7584463357925415e-01 + <_> + 6.5446708679199219e+01 + + 1 2 2257 1.2555000000000000e+03 0 -1 2258 1315. -2 -3 2259 + 1.4525000000000000e+03 + + 5.0016152858734131e-01 -3.4823906421661377e-01 + 8.1143665313720703e-01 -3.6510743200778961e-02 + <_> + 6.5472305297851562e+01 + + 1 2 2260 5.8500000000000000e+01 0 -1 2261 + 9.2250000000000000e+02 -2 -3 2262 9.2500000000000000e+01 + + 2.5597516447305679e-02 -7.3596054315567017e-01 + 7.7482932806015015e-01 -2.4384480714797974e-01 + <_> + 6.5680641174316406e+01 + + 1 2 2263 2.8500000000000000e+01 0 -1 2264 + 1.9500000000000000e+01 -2 -3 2265 5.0000000000000000e-01 + + -5.1095438003540039e-01 2.7406066656112671e-01 + 4.7238901257514954e-02 -7.9554700851440430e-01 + <_> + 6.5828727722167969e+01 + + 1 2 2266 6.5000000000000000e+00 0 -1 2267 46. -2 -3 2268 + 2.3350000000000000e+02 + + 4.0098896622657776e-01 -3.0355367064476013e-01 + -5.7611280679702759e-01 2.4870538711547852e-01 + <_> + 6.6055801391601562e+01 + + 1 2 2269 1.1235000000000000e+03 0 -1 2270 1791. -2 -3 2271 + 2.2500000000000000e+01 + + 4.2222037911415100e-01 -5.7381504774093628e-01 + -5.7501715421676636e-01 2.7313375473022461e-01 + <_> + 6.5979278564453125e+01 + + 1 2 2272 1.6500000000000000e+01 0 -1 2273 + 1.1500000000000000e+01 -2 -3 2274 3.6500000000000000e+01 + + -1. 7.4951916933059692e-01 -2.2320111095905304e-01 + 6.2808310985565186e-01 + <_> + 6.5982803344726562e+01 + + 1 2 2275 8.8500000000000000e+01 0 -1 2276 + 5.0000000000000000e-01 -2 -3 2277 303. + + -4.2098733782768250e-01 4.7041663527488708e-01 + -8.3091259002685547e-01 3.5231374204158783e-03 + <_> + 6.5862815856933594e+01 + + 1 2 2278 5.0000000000000000e-01 0 -1 2279 + 7.5000000000000000e+00 -2 -3 2280 1.8500000000000000e+01 + + -3.1455779075622559e-01 6.9095128774642944e-01 + -3.3799609541893005e-01 3.8651108741760254e-01 + <_> + 6.5698982238769531e+01 + + 1 2 2281 2.5000000000000000e+00 0 -1 2282 + 6.5000000000000000e+00 -2 -3 2283 1.6500000000000000e+01 + + 1.1540318280458450e-01 -8.0706399679183960e-01 + 4.5586335659027100e-01 -1.6382929682731628e-01 + <_> + 6.5865753173828125e+01 + + 1 2 2284 4.1500000000000000e+01 0 -1 2285 322. -2 -3 2286 + 5.0000000000000000e-01 + + -7.6401643455028534e-02 7.0236140489578247e-01 + 8.3611255884170532e-01 -3.3973169326782227e-01 + <_> + 6.6324913024902344e+01 + + 1 2 2287 1180. 0 -1 2288 5.0000000000000000e-01 -2 -3 2289 + 4.9850000000000000e+02 + + 5.4826909303665161e-01 -6.1790186166763306e-01 + 4.9796470999717712e-01 -7.6435178518295288e-02 + <_> + 6.6116767883300781e+01 + + 1 2 2290 1.0086500000000000e+04 0 -1 2291 + 5.0000000000000000e-01 -2 -3 2292 1.4915000000000000e+03 + + 2.2847035527229309e-01 -5.0997734069824219e-01 + 5.6548178195953369e-01 -2.0814302563667297e-01 + <_> + 6.6620307922363281e+01 + + 1 2 2293 1.2195000000000000e+03 0 -1 2294 + 1.9055000000000000e+03 -2 -3 2295 2.0550000000000000e+02 + + -3.3149933815002441e-01 6.4176028966903687e-01 + 6.0821473598480225e-01 -3.0888804793357849e-01 + <_> + 6.6746444702148438e+01 + + 1 2 2296 2.5000000000000000e+00 0 -1 2297 + 1.0150000000000000e+02 -2 -3 2298 7.2585000000000000e+03 + + 5.9253281354904175e-01 -3.7904369831085205e-01 + 2.6760953664779663e-01 -4.0275105834007263e-01 + <_> + 6.6943595886230469e+01 + + 1 2 2299 1.1500000000000000e+01 0 -1 2300 + 2.4500000000000000e+01 -2 -3 2301 4.5000000000000000e+00 + + -9.8942744731903076e-01 1. -5.9422683715820312e-01 + 1.9715292751789093e-01 + <_> + 6.6331527709960938e+01 + + 1 2 2302 2.4500000000000000e+01 0 -1 2303 + 8.7500000000000000e+01 -2 -3 2304 3.4500000000000000e+01 + + -2.3940645158290863e-01 3.9157524704933167e-01 + 1.0247871279716492e-01 -7.5354349613189697e-01 + <_> + 6.6475265502929688e+01 + + 1 2 2305 6.5000000000000000e+00 0 -1 2306 + 2.3500000000000000e+01 -2 -3 2307 3.3500000000000000e+01 + + -7.6529741287231445e-01 4.5638066530227661e-01 + -5.1855069398880005e-01 1.4373423159122467e-01 + <_> + 6.6999214172363281e+01 + + 1 2 2308 9.4500000000000000e+01 0 -1 2309 + 2.0500000000000000e+01 -2 -3 2310 195. + + -7.4185177683830261e-02 5.2394580841064453e-01 + 3.7441125512123108e-01 -9.3662869930267334e-01 + <_> + 6.7006050109863281e+01 + + 1 2 2311 3026. 0 -1 2312 2.2500000000000000e+01 -2 -3 2313 + 2.8500000000000000e+01 + + -8.7473273277282715e-01 5.1518291234970093e-01 + -6.7311668395996094e-01 6.8403608165681362e-03 + <_> + 6.7129646301269531e+01 + + 1 2 2314 1.7500000000000000e+01 0 -1 2315 + 4.4500000000000000e+01 -2 -3 2316 2961. + + -2.2424821555614471e-01 3.6378455162048340e-01 + -7.0937103033065796e-01 1.6935887932777405e-01 + <_> + 6.7392829895019531e+01 + + 1 2 2317 5.5000000000000000e+00 0 -1 2318 + 1.0500000000000000e+01 -2 -3 2319 46. + + 6.3752532005310059e-01 -1.6769923269748688e-01 + -3.9633530378341675e-01 2.1741947531700134e-01 + <_> + 6.7652908325195312e+01 + + 1 2 2320 4.0500000000000000e+01 0 -1 2321 + 3.7750000000000000e+02 -2 -3 2322 288. + + 7.8108507394790649e-01 -8.9046698808670044e-01 + 2.6008096337318420e-01 -3.1209379434585571e-01 + <_> + 6.7522987365722656e+01 + + 1 2 2323 2.8450000000000000e+02 0 -1 2324 + 2.1500000000000000e+01 -2 -3 2325 3.1615000000000000e+03 + + -2.6827138662338257e-01 4.4363465905189514e-01 + -5.0426739454269409e-01 3.2839775085449219e-01 + <_> + 6.7682723999023438e+01 + + 1 2 2326 1.4550000000000000e+02 0 -1 2327 + 5.0000000000000000e-01 -2 -3 2328 187. + + 3.3854234218597412e-01 -1.9424141943454742e-01 + -7.8695666790008545e-01 1.0578002780675888e-01 + <_> + 6.7990608215332031e+01 + + 1 2 2329 1.4500000000000000e+01 0 -1 2330 55. -2 -3 2331 + 4.1500000000000000e+01 + + 9.3669831752777100e-01 -7.9035413265228271e-01 + 4.7996759414672852e-01 -1.4678025245666504e-01 + <_> + 6.7773666381835938e+01 + + 1 2 2332 4.4450000000000000e+02 0 -1 2333 + 6.5000000000000000e+00 -2 -3 2334 87. + + 3.0000856518745422e-01 -5.1463776826858521e-01 + -4.2596080899238586e-01 5.2854359149932861e-01 + <_> + 6.8242584228515625e+01 + + 1 2 2335 2.3325000000000000e+03 0 -1 2336 10142. -2 -3 2337 + 1.9550000000000000e+02 + + -6.1795878410339355e-01 7.2833043336868286e-01 + 5.5236649513244629e-01 -7.2167828679084778e-02 + <_> + 6.7640380859375000e+01 + + 1 2 2338 1.9500000000000000e+01 0 -1 2339 + 5.5000000000000000e+00 -2 -3 2340 3.7500000000000000e+01 + + -9.1623830795288086e-01 2.8547397255897522e-01 + 2.7238869667053223e-01 -6.8565303087234497e-01 + <_> + 6.8166297912597656e+01 + + 1 2 2341 887. 0 -1 2342 1.8950000000000000e+02 -2 -3 2343 + 1.6500000000000000e+01 + + 5.8323717117309570e-01 -8.4304898977279663e-01 + 5.2591782808303833e-01 -1.1249145865440369e-01 + <_> + 6.7966316223144531e+01 + + 1 2 2344 1.3500000000000000e+01 0 -1 2345 + 5.0500000000000000e+01 -2 -3 2346 5.5000000000000000e+00 + + -5.7582974433898926e-01 8.8582295179367065e-01 + 4.5189410448074341e-01 -1.9998365640640259e-01 + <_> + 6.8363616943359375e+01 + + 1 2 2347 9519. 0 -1 2348 9.9355000000000000e+03 -2 -3 2349 + 1.5000000000000000e+00 + + -5.6369476020336151e-02 5.6953996419906616e-01 + 6.4817821979522705e-01 -6.5638613700866699e-01 + <_> + 6.8680084228515625e+01 + + 1 2 2350 1.4500000000000000e+01 0 -1 2351 + 2.2500000000000000e+01 -2 -3 2352 4.9500000000000000e+01 + + -1.3236002624034882e-01 6.2589818239212036e-01 + -4.6971350908279419e-01 3.0481177568435669e-01 + <_> + 6.8636512756347656e+01 + + 1 2 2353 2.3491500000000000e+04 0 -1 2354 + 1.5000000000000000e+00 -2 -3 2355 31. + + 2.9175955057144165e-01 -2.0415711402893066e-01 -1. 1. + <_> + 6.8339431762695312e+01 + + 1 2 2356 2.1500000000000000e+01 0 -1 2357 + 5.0000000000000000e-01 -2 -3 2358 2.5000000000000000e+00 + + 4.2874211072921753e-01 -4.4592785835266113e-01 + -9.4336575269699097e-01 3.3847200870513916e-01 + <_> + 6.8127563476562500e+01 + + 1 2 2359 2.7500000000000000e+01 0 -1 2360 + 4.5000000000000000e+00 -2 -3 2361 1.2500000000000000e+01 + + 1.4308325946331024e-01 -5.4449397325515747e-01 + 5.8717787265777588e-01 -2.1186867356300354e-01 + <_> + 6.8410385131835938e+01 + + 1 2 2362 9.5000000000000000e+00 0 -1 2363 + 5.5000000000000000e+00 -2 -3 2364 1.2850000000000000e+02 + + -1.1505768448114395e-01 -9.6275746822357178e-01 + 2.8282612562179565e-01 -3.5639968514442444e-01 + <_> + 6.8815826416015625e+01 + + 1 2 2365 1.9125000000000000e+03 0 -1 2366 + 6.5000000000000000e+00 -2 -3 2367 1.2925000000000000e+03 + + 7.6003736257553101e-01 -1.8823170661926270e-01 + -3.1990632414817810e-01 3.2092514634132385e-01 + <_> + 6.8693199157714844e+01 + + 1 2 2368 1.5500000000000000e+01 0 -1 2369 + 4.0445000000000000e+03 -2 -3 2370 1.3500000000000000e+01 + + 2.2088183462619781e-01 -8.6471045017242432e-01 + 4.9937435984611511e-01 -1.2262738496065140e-01 + <_> + 6.9212486267089844e+01 + + 1 2 2371 1.1500000000000000e+01 0 -1 2372 + 1.2500000000000000e+01 -2 -3 2373 1.3250000000000000e+02 + + -5.8216619491577148e-01 7.6504099369049072e-01 + -4.9605194479227066e-02 5.4096341133117676e-01 + <_> + 6.9281822204589844e+01 + + 1 2 2374 3.4500000000000000e+01 0 -1 2375 + 6.5000000000000000e+00 -2 -3 2376 1.5000000000000000e+00 + + -7.0201843976974487e-01 3.5367730259895325e-01 1. + -3.9128544926643372e-01 + <_> + 6.9379959106445312e+01 + + 1 2 2377 8.7500000000000000e+01 0 -1 2378 + 7.5000000000000000e+00 -2 -3 2379 273. + + -5.3956866264343262e-01 3.2018893957138062e-01 + -5.9921985864639282e-01 2.5184553861618042e-01 + <_> + 6.9302131652832031e+01 + + 1 2 2380 5.0000000000000000e-01 0 -1 2381 + 4.4500000000000000e+01 -2 -3 2382 1.9204500000000000e+04 + + -5.0899110734462738e-02 6.8976759910583496e-01 + -7.7828548848628998e-02 -9.1394501924514771e-01 + <_> + 6.9691947937011719e+01 + + 1 2 2383 6.7500000000000000e+01 0 -1 2384 + 3.2850000000000000e+02 -2 -3 2385 1224. + + 1.1171031743288040e-02 7.3188757896423340e-01 + -8.6419099569320679e-01 2.1196028217673302e-02 + <_> + 6.9572067260742188e+01 + + 1 2 2386 1.1235000000000000e+03 0 -1 2387 + 8.4050000000000000e+02 -2 -3 2388 1.5500000000000000e+01 + + -1.5439936518669128e-01 6.1207121610641479e-01 + 1.9708819687366486e-01 -4.6194908022880554e-01 + <_> + 6.9861968994140625e+01 + + 1 2 2389 9.1500000000000000e+01 0 -1 2390 + 1.0500000000000000e+01 -2 -3 2391 4.1495000000000000e+03 + + 1.0701948404312134e-01 -5.6979161500930786e-01 + -9.6821188926696777e-02 7.0975506305694580e-01 + <_> + 7.0039260864257812e+01 + + 1 2 2392 1.1500000000000000e+01 0 -1 2393 2897. -2 -3 2394 + 2.4350000000000000e+02 + + -9.1259753704071045e-01 1. 1.7728993296623230e-01 + -7.3356288671493530e-01 + <_> + 6.9705703735351562e+01 + + 1 2 2395 5.0000000000000000e-01 0 -1 2396 + 2.0500000000000000e+01 -2 -3 2397 4.6500000000000000e+01 + + -5.2813202142715454e-01 4.4198977947235107e-01 + -4.8570594191551208e-01 1.9584445655345917e-01 + <_> + 6.9970062255859375e+01 + + 1 2 2398 5.0000000000000000e-01 0 -1 2399 + 3.1500000000000000e+01 -2 -3 2400 3831. + + -6.4685755968093872e-01 7.3702591657638550e-01 + -2.6504144072532654e-01 5.5941796302795410e-01 + <_> + 6.9949569702148438e+01 + + 1 2 2401 5.0000000000000000e-01 0 -1 2402 5. -2 -3 2403 + 4.5000000000000000e+00 + + -8.8435417413711548e-01 5.8749139308929443e-01 + 2.7166697382926941e-01 -3.1555649638175964e-01 + <_> + 7.0117141723632812e+01 + + 1 2 2404 2596. 0 -1 2405 9.1496500000000000e+04 -2 -3 2406 + 1.5000000000000000e+00 + + -7.8573900461196899e-01 1.6757574677467346e-01 + 8.5581427812576294e-01 -9.4101238250732422e-01 + <_> + 7.0224205017089844e+01 + + 1 2 2407 5749. 0 -1 2408 79. -2 -3 2409 208. + + 1. -1. 1.0706392675638199e-01 -7.7825403213500977e-01 + <_> + 7.0221618652343750e+01 + + 1 2 2410 5.1855000000000000e+03 0 -1 2411 + 4.6500000000000000e+01 -2 -3 2412 8.5000000000000000e+00 + + -3.6203452944755554e-01 3.4422519803047180e-01 + -2.5855610147118568e-03 -7.1835225820541382e-01 + <_> + 7.0728790283203125e+01 + + 1 2 2413 1.3500000000000000e+01 0 -1 2414 + 1.0950000000000000e+02 -2 -3 2415 5.3500000000000000e+01 + + 1.9084104895591736e-01 -8.0712783336639404e-01 + 5.5798757076263428e-01 -1.0734169185161591e-01 + <_> + 7.0351577758789062e+01 + + 1 2 2416 1.3405000000000000e+03 0 -1 2417 + 3.5000000000000000e+00 -2 -3 2418 342. + + 4.1194143891334534e-01 -3.7721332907676697e-01 + -5.5014234781265259e-01 5.2194917201995850e-01 + <_> + 7.0136901855468750e+01 + + 1 2 2419 3.7345000000000000e+03 0 -1 2420 + 3.2500000000000000e+01 -2 -3 2421 9.8500000000000000e+01 + + 3.2743006944656372e-01 -2.1467541158199310e-01 + -8.1029343605041504e-01 7.0203500986099243e-01 + <_> + 6.9686508178710938e+01 + + 1 2 2422 1.2185000000000000e+03 0 -1 2423 + 1.5000000000000000e+00 -2 -3 2424 4.8755000000000000e+03 + + 2.0333147048950195e-01 -4.5039632916450500e-01 + 4.4757398962974548e-01 -5.9627413749694824e-01 + <_> + 7.0005889892578125e+01 + + 1 2 2425 6.4500000000000000e+01 0 -1 2426 + 3.7150000000000000e+02 -2 -3 2427 6.7750000000000000e+02 + + 2.6681974530220032e-01 -5.9953171014785767e-01 + 3.1938493251800537e-01 -6.9817471504211426e-01 + <_> + 7.0428718566894531e+01 + + 1 2 2428 2.6500000000000000e+01 0 -1 2429 + 1.7650000000000000e+02 -2 -3 2430 1.0500000000000000e+01 + + -7.5495415367186069e-03 -6.1552453041076660e-01 + -5.8272439241409302e-01 7.1704763174057007e-01 + <_> + 7.0936927795410156e+01 + + 1 2 2431 1.0950000000000000e+02 0 -1 2432 + 1.2500000000000000e+01 -2 -3 2433 3.4500000000000000e+01 + + 6.7761175334453583e-02 -6.1159509420394897e-01 + 5.0820809602737427e-01 -1.4290602505207062e-01 + <_> + 7.1328254699707031e+01 + + 1 2 2434 37. 0 -1 2435 108. -2 -3 2436 + 7.5000000000000000e+00 + + 5.2559959888458252e-01 -9.0183192491531372e-01 + 3.9132472872734070e-01 -1.6153934597969055e-01 + <_> + 7.1377151489257812e+01 + + 1 2 2437 1.5000000000000000e+00 0 -1 2438 + 4.1500000000000000e+01 -2 -3 2439 136. + + -1.6022360324859619e-01 4.5697069168090820e-01 + -5.8138531446456909e-01 5.7625991106033325e-01 + <_> + 7.1590606689453125e+01 + + 1 2 2440 2.2950000000000000e+02 0 -1 2441 986. -2 -3 2442 + 2.5000000000000000e+00 + + -5.5947124958038330e-01 2.1345110237598419e-01 + 5.1724910736083984e-01 -7.9673564434051514e-01 + <_> + 7.1604888916015625e+01 + + 1 2 2443 9.5000000000000000e+00 0 -1 2444 + 2.3500000000000000e+01 -2 -3 2445 1.0550000000000000e+02 + + -4.6063753962516785e-01 3.1602507829666138e-01 + -5.2265387773513794e-01 6.4050400257110596e-01 + <_> + 7.1843421936035156e+01 + + 1 2 2446 2.3365000000000000e+03 0 -1 2447 + 1.3333500000000000e+04 -2 -3 2448 7.8250000000000000e+02 + + -5.7870197296142578e-01 9.2290049791336060e-01 + 6.9137138128280640e-01 -1.5123842656612396e-01 + <_> + 7.1939323425292969e+01 + + 1 2 2449 3.5000000000000000e+00 0 -1 2450 + 1.8500000000000000e+01 -2 -3 2451 6.1500000000000000e+01 + + -5.3932064771652222e-01 4.5498287677764893e-01 + -6.5867853164672852e-01 9.6776336431503296e-02 + <_> + 7.1796112060546875e+01 + + 1 2 2452 1.0050000000000000e+02 0 -1 2453 + 6.5000000000000000e+00 -2 -3 2454 9.9500000000000000e+01 + + 2.1488319337368011e-01 -3.8114818930625916e-01 + -9.3055361509323120e-01 9.2053020000457764e-01 + <_> + 7.1826210021972656e+01 + + 1 2 2455 5.3875000000000000e+03 0 -1 2456 + 4.0150000000000000e+02 -2 -3 2457 203. + + 3.6667090654373169e-01 -3.2799699902534485e-01 + -2.9070058465003967e-01 6.2547647953033447e-01 + <_> + 7.1566932678222656e+01 + + 1 2 2458 1164. 0 -1 2459 12122. -2 -3 2460 + 1.2565000000000000e+03 + + -8.4399074316024780e-01 8.6422222852706909e-01 + -2.5927615165710449e-01 3.1698527932167053e-01 + <_> + 7.2048255920410156e+01 + + 1 2 2461 7.0500000000000000e+01 0 -1 2462 + 5.0000000000000000e-01 -2 -3 2463 113. + + 4.2299839854240417e-01 -3.7696704268455505e-01 + 4.8132598400115967e-01 -8.4420484304428101e-01 + <_> + 7.2493713378906250e+01 + + 1 2 2464 1.5000000000000000e+00 0 -1 2465 24. -2 -3 2466 + 1.1650000000000000e+02 + + -7.3568606376647949e-01 4.4545513391494751e-01 + 4.5487869530916214e-02 -6.0882014036178589e-01 + <_> + 7.2295455932617188e+01 + + 1 2 2467 2.6500000000000000e+01 0 -1 2468 + 2.5000000000000000e+00 -2 -3 2469 1.9500000000000000e+01 + + 1.9328838586807251e-01 -9.2098551988601685e-01 + 2.8382617235183716e-01 -3.1953519582748413e-01 + <_> + 7.2064254760742188e+01 + + 1 2 2470 5.6500000000000000e+01 0 -1 2471 + 3.5000000000000000e+00 -2 -3 2472 2.2450000000000000e+02 + + 2.8244340419769287e-01 -2.9833537340164185e-01 -1. + 8.5370278358459473e-01 + <_> + 7.2284309387207031e+01 + + 1 2 2473 4.9500000000000000e+01 0 -1 2474 4038. -2 -3 2475 + 1.0500000000000000e+01 + + 3.4302046895027161e-01 -8.1761771440505981e-01 + -7.4983465671539307e-01 2.2005748748779297e-01 + <_> + 7.2424072265625000e+01 + + 1 2 2476 5.0000000000000000e-01 0 -1 2477 + 4.9525000000000000e+03 -2 -3 2478 1.2500000000000000e+01 + + 3.8115087151527405e-01 -6.6690814495086670e-01 + 1.3976120948791504e-01 -5.6789624691009521e-01 + <_> + 7.2313995361328125e+01 + + 1 2 2479 3.2500000000000000e+01 0 -1 2480 + 1.1926500000000000e+04 -2 -3 2481 6.0500000000000000e+01 + + -6.5613843500614166e-02 -7.5880628824234009e-01 + 2.2690546512603760e-01 -6.3682055473327637e-01 + <_> + 7.2143783569335938e+01 + + 1 2 2482 5.0000000000000000e-01 0 -1 2483 + 5.7535000000000000e+03 -2 -3 2484 5.5000000000000000e+00 + + -9.2257243394851685e-01 8.5957908630371094e-01 + 3.2697901129722595e-01 -1.7020969092845917e-01 + <_> + 7.2681999206542969e+01 + + 1 2 2485 7.1500000000000000e+01 0 -1 2486 188. -2 -3 2487 + 177. + + -2.7773711085319519e-01 6.7274010181427002e-01 + -3.3517399430274963e-01 7.5859177112579346e-01 + <_> + 7.2897277832031250e+01 + + 1 2 2488 6.7500000000000000e+01 0 -1 2489 + 2.1500000000000000e+01 -2 -3 2490 7.0500000000000000e+01 + + -7.9514396190643311e-01 2.1528589725494385e-01 1. + -7.2838509082794189e-01 + <_> + 7.2998519897460938e+01 + + 1 2 2491 6.5000000000000000e+00 0 -1 2492 161. -2 -3 2493 + 9578. + + 6.2451672554016113e-01 -1.9713717699050903e-01 + 1.0124062746763229e-01 -5.1373565196990967e-01 + <_> + 7.3003601074218750e+01 + + 1 2 2494 2.3415000000000000e+03 0 -1 2495 + 7.6500000000000000e+01 -2 -3 2496 1.4555000000000000e+03 + + -6.9544225931167603e-01 3.1051948666572571e-01 + 7.0642524957656860e-01 1.7271263524889946e-02 + <_> + 7.3047424316406250e+01 + + 1 2 2497 1.5500000000000000e+01 0 -1 2498 + 1.1500000000000000e+01 -2 -3 2499 5.7500000000000000e+01 + + 3.4771478176116943e-01 -8.5552608966827393e-01 + 3.6829981207847595e-01 -1.8874453008174896e-01 + <_> + 7.3427375793457031e+01 + + 1 2 2500 6.2500000000000000e+01 0 -1 2501 34698. -2 -3 2502 + 8.5000000000000000e+00 + + 1.6296713054180145e-01 -6.3167887926101685e-01 + 3.7994962930679321e-01 -4.6771416068077087e-01 + <_> + 7.3244293212890625e+01 + + 1 2 2503 2.3500000000000000e+01 0 -1 2504 + 3.8500000000000000e+01 -2 -3 2505 427. + + -2.9058054089546204e-01 5.2562189102172852e-01 + 6.4414465427398682e-01 -8.3316773176193237e-01 + <_> + 7.3628913879394531e+01 + + 1 2 2506 4.5000000000000000e+00 0 -1 2507 + 8.5000000000000000e+00 -2 -3 2508 1.6925000000000000e+03 + + -2.7814975380897522e-01 4.8170346021652222e-01 + -6.5349429845809937e-01 5.4887872189283371e-02 + <_> + 7.3769676208496094e+01 + + 1 2 2509 15430. 0 -1 2510 1.5950000000000000e+02 -2 -3 2511 + 1.2615000000000000e+03 + + 4.3867623805999756e-01 -7.6247996091842651e-01 + -4.5795723795890808e-01 2.0065939426422119e-01 + <_> + 7.3981689453125000e+01 + + 1 2 2512 7.3500000000000000e+01 0 -1 2513 + 2.6500000000000000e+01 -2 -3 2514 4.1500000000000000e+01 + + -6.2215524911880493e-01 2.1201618015766144e-01 + -7.7795881032943726e-01 7.5186353921890259e-01 + <_> + 7.3843399047851562e+01 + + 1 2 2515 3.5000000000000000e+00 0 -1 2516 9. -2 -3 2517 + 1.7500000000000000e+01 + + -1. 6.5247339010238647e-01 -5.3328835964202881e-01 + 6.5298572182655334e-02 + <_> + 7.3923049926757812e+01 + + 1 2 2518 5.2950000000000000e+02 0 -1 2519 + 1.8500000000000000e+01 -2 -3 2520 6.4500000000000000e+01 + + 2.7425521612167358e-01 -7.6726049184799194e-01 + 2.3897975683212280e-01 -5.1008826494216919e-01 + <_> + 7.3826148986816406e+01 + + 1 2 2521 7.0500000000000000e+01 0 -1 2522 + 2.8500000000000000e+01 -2 -3 2523 3.5000000000000000e+00 + + 1.1504331231117249e-01 -6.4958560466766357e-01 + 6.4581304788589478e-01 -9.6902929246425629e-02 + <_> + 7.4119972229003906e+01 + + 1 2 2524 163. 0 -1 2525 2.0450000000000000e+02 -2 -3 2526 + 1486. + + 7.2227291762828827e-02 -4.8131951689720154e-01 + 6.7641806602478027e-01 -1. + <_> + 7.4284828186035156e+01 + + 1 2 2527 9.5000000000000000e+00 0 -1 2528 + 5.4500000000000000e+01 -2 -3 2529 3.5000000000000000e+00 + + 2.1673867106437683e-01 -9.8935294151306152e-01 + -8.0995440483093262e-01 1.6485558450222015e-01 + <_> + 7.3767173767089844e+01 + + 1 2 2530 3.3500000000000000e+01 0 -1 2531 + 2.0500000000000000e+01 -2 -3 2532 326. + + 8.5764698684215546e-02 -5.1765644550323486e-01 + -3.3359569311141968e-01 5.3560173511505127e-01 + <_> + 7.4017349243164062e+01 + + 1 2 2533 1144. 0 -1 2534 1038. -2 -3 2535 227. + + -8.5851883888244629e-01 8.0733579397201538e-01 + 2.5017657876014709e-01 -4.6748492121696472e-01 + <_> + 7.4431625366210938e+01 + + 1 2 2536 8.6500000000000000e+01 0 -1 2537 7. -2 -3 2538 + 4.7500000000000000e+01 + + 5.0281429290771484e-01 -6.8806976079940796e-01 + 4.1427880525588989e-01 -1.3120372593402863e-01 + <_> + 7.4155914306640625e+01 + + 1 2 2539 2.8500000000000000e+01 0 -1 2540 + 1.2500000000000000e+01 -2 -3 2541 352. + + 4.0651530027389526e-01 -2.7571403980255127e-01 + 6.4302980899810791e-01 -6.1632806062698364e-01 + <_> + 7.4377723693847656e+01 + + 1 2 2542 4.5500000000000000e+01 0 -1 2543 + 4.5000000000000000e+00 -2 -3 2544 1.5000000000000000e+00 + + 2.1374966204166412e-01 -8.0584329366683960e-01 + -6.8813514709472656e-01 2.2180862724781036e-01 + <_> + 7.4892883300781250e+01 + + 1 2 2545 7.2450000000000000e+02 0 -1 2546 + 8.2650000000000000e+02 -2 -3 2547 2.5000000000000000e+00 + + -1.0470861941576004e-01 5.1516324281692505e-01 + 1.2213422358036041e-01 -7.9457265138626099e-01 + <_> + 7.4932922363281250e+01 + + 1 2 2548 1.4925000000000000e+03 0 -1 2549 + 2.5625000000000000e+03 -2 -3 2550 4.0125000000000000e+03 + + -1.9472637213766575e-03 8.4926861524581909e-01 + 4.0032647550106049e-02 -7.9371875524520874e-01 + <_> + 7.5366584777832031e+01 + + 1 2 2551 5.0000000000000000e-01 0 -1 2552 + 3.5150000000000000e+02 -2 -3 2553 7.6500000000000000e+01 + + -6.7581409215927124e-01 4.3366453051567078e-01 + -6.9250804185867310e-01 1.4782861806452274e-02 + <_> + 7.5361564636230469e+01 + + 1 2 2554 1.4550000000000000e+02 0 -1 2555 + 1.3500000000000000e+01 -2 -3 2556 3.7950000000000000e+02 + + -9.2167288064956665e-01 2.2473543882369995e-01 + -6.1316716670989990e-01 5.3515338897705078e-01 + <_> + 7.5602142333984375e+01 + + 1 2 2557 1.7500000000000000e+01 0 -1 2558 + 3.0150000000000000e+02 -2 -3 2559 5.9500000000000000e+01 + + -2.0176244899630547e-02 7.6716834306716919e-01 + -6.2594699859619141e-01 2.9301643371582031e-02 + <_> + 7.5772842407226562e+01 + + 1 2 2560 7.0205000000000000e+03 0 -1 2561 + 7.5000000000000000e+00 -2 -3 2562 182. + + -7.9505175352096558e-01 1.7069797217845917e-01 + -8.2258385419845581e-01 7.3946392536163330e-01 + <_> + 7.5877098083496094e+01 + + 1 2 2563 4.5500000000000000e+01 0 -1 2564 + 6.8445000000000000e+03 -2 -3 2565 7.9500000000000000e+01 + + 3.9029154181480408e-01 -1.7648826539516449e-01 + -5.5182862281799316e-01 4.6366956830024719e-01 + <_> + 7.5638267517089844e+01 + + 1 2 2566 5.1850000000000000e+02 0 -1 2567 + 4.5000000000000000e+00 -2 -3 2568 5.0500000000000000e+01 + + 2.6328665018081665e-01 -3.8584133982658386e-01 + -6.9626593589782715e-01 5.0637173652648926e-01 + <_> + 7.5725959777832031e+01 + + 1 2 2569 1.9950000000000000e+02 0 -1 2570 + 1.8500000000000000e+01 -2 -3 2571 3.6500000000000000e+01 + + -4.1137224435806274e-01 2.0416383445262909e-01 + -9.0335428714752197e-01 8.9813232421875000e-01 + <_> + 7.5224937438964844e+01 + + 1 2 2572 7.5000000000000000e+00 0 -1 2573 + 2.5500000000000000e+01 -2 -3 2574 2.8450000000000000e+02 + + -7.3831039667129517e-01 3.6077511310577393e-01 + 3.1331515312194824e-01 -5.0101745128631592e-01 + <_> + 7.5449661254882812e+01 + + 1 2 2575 5.0000000000000000e-01 0 -1 2576 + 3.7665000000000000e+03 -2 -3 2577 8.2500000000000000e+01 + + 7.5498217344284058e-01 -1.5097464621067047e-01 + -3.8953059911727905e-01 2.2472013533115387e-01 + <_> + 7.5411880493164062e+01 + + 1 2 2578 4493. 0 -1 2579 2.5500000000000000e+01 -2 -3 2580 + 2.4500000000000000e+01 + + 2.1087837219238281e-01 -2.8623789548873901e-01 -1. + 9.5196199417114258e-01 + <_> + 7.5614067077636719e+01 + + 1 2 2581 1.0500000000000000e+01 0 -1 2582 17. -2 -3 2583 + 103. + + -7.5117886066436768e-01 9.0265202522277832e-01 + 2.0218542218208313e-01 -7.3936897516250610e-01 + <_> + 7.5999168395996094e+01 + + 1 2 2584 3.8500000000000000e+01 0 -1 2585 5086. -2 -3 2586 + 5.4500000000000000e+01 + + 5.9127920866012573e-01 -5.5186152458190918e-01 + 6.0463196039199829e-01 -9.3399420380592346e-02 + <_> + 7.6240371704101562e+01 + + 1 2 2587 2.7500000000000000e+01 0 -1 2588 + 3.5000000000000000e+00 -2 -3 2589 91. + + -6.9810129702091217e-02 -8.4188365936279297e-01 + 2.4120073020458221e-01 -6.5708816051483154e-01 + <_> + 7.6235023498535156e+01 + + 1 2 2590 1.9500000000000000e+01 0 -1 2591 + 1.6500000000000000e+01 -2 -3 2592 4.5000000000000000e+00 + + 3.0514994263648987e-01 -3.2603117823600769e-01 + -4.3177062273025513e-01 8.1372964382171631e-01 + <_> + 7.6073257446289062e+01 + + 1 2 2593 1.2135000000000000e+03 0 -1 2594 + 1.5725000000000000e+03 -2 -3 2595 5.0650000000000000e+02 + + 4.9728196859359741e-01 -4.1840994358062744e-01 + 6.4058172702789307e-01 -1.6176456212997437e-01 + <_> + 7.6243354797363281e+01 + + 1 2 2596 2.5000000000000000e+00 0 -1 2597 + 4.2500000000000000e+01 -2 -3 2598 1.0500000000000000e+01 + + 2.2679857909679413e-01 -6.9367134571075439e-01 + 5.3237688541412354e-01 -5.3971223533153534e-02 + <_> + 7.6326980590820312e+01 + + 1 2 2599 5.0500000000000000e+01 0 -1 2600 + 3.5000000000000000e+00 -2 -3 2601 6.9315000000000000e+03 + + 2.1303455531597137e-01 -6.3557696342468262e-01 + -1.9230200350284576e-01 4.7144305706024170e-01 + <_> + 7.6166137695312500e+01 + + 1 2 2602 6905. 0 -1 2603 5.9785000000000000e+03 -2 -3 2604 + 2.5000000000000000e+00 + + -4.6545404940843582e-02 6.8220782279968262e-01 + 1.9928511977195740e-01 -5.4866182804107666e-01 + <_> + 7.6497024536132812e+01 + + 1 2 2605 3.5000000000000000e+00 0 -1 2606 + 1.5000000000000000e+00 -2 -3 2607 1.5500000000000000e+01 + + 1. -9.3044626712799072e-01 3.3089175820350647e-01 + -2.4615941941738129e-01 + <_> + 7.6440460205078125e+01 + + 1 2 2608 9.8500000000000000e+01 0 -1 2609 + 2.1950000000000000e+02 -2 -3 2610 1.5000000000000000e+00 + + -5.9206131845712662e-02 -7.2229409217834473e-01 + -7.6280659437179565e-01 4.8397278785705566e-01 + <_> + 7.6623970031738281e+01 + + 1 2 2611 6.5500000000000000e+01 0 -1 2612 + 5.0000000000000000e-01 -2 -3 2613 1.0050000000000000e+02 + + 3.7457340955734253e-01 -9.0597450733184814e-01 + 1.8351505696773529e-01 -5.7986891269683838e-01 + <_> + 7.6471252441406250e+01 + + 1 2 2614 1.1615000000000000e+03 0 -1 2615 + 2.0525000000000000e+03 -2 -3 2616 7.8150000000000000e+02 + + -7.5747263431549072e-01 8.2365345954895020e-01 + 4.9958717823028564e-01 -1.5272425115108490e-01 + <_> + 7.6615051269531250e+01 + + 1 2 2617 1.2950000000000000e+02 0 -1 2618 + 4.0500000000000000e+01 -2 -3 2619 2.5000000000000000e+00 + + -8.1159070134162903e-02 5.3420531749725342e-01 + 3.5195964574813843e-01 -8.9636689424514771e-01 + <_> + 7.6877807617187500e+01 + + 1 2 2620 2.2050000000000000e+02 0 -1 2621 + 9.5000000000000000e+00 -2 -3 2622 1.5500000000000000e+01 + + 1.3451068103313446e-01 -4.0673348307609558e-01 + -8.1775653362274170e-01 7.4299770593643188e-01 + <_> + 7.6823638916015625e+01 + + 1 2 2623 2.4500000000000000e+01 0 -1 2624 + 5.9500000000000000e+01 -2 -3 2625 5.1515000000000000e+03 + + -7.1872109174728394e-01 7.7110481262207031e-01 + 3.9283660054206848e-01 -1.6952608525753021e-01 + <_> + 7.6773773193359375e+01 + + 1 2 2626 8.5000000000000000e+00 0 -1 2627 + 3.5000000000000000e+00 -2 -3 2628 1.8450000000000000e+02 + + -6.7384725809097290e-01 6.7822283506393433e-01 + -3.4205380082130432e-01 2.1638515591621399e-01 + <_> + 7.6982254028320312e+01 + + 1 2 2629 2.8500000000000000e+01 0 -1 2630 245. -2 -3 2631 + 61. + + 2.0848464965820312e-01 -6.2569552659988403e-01 + -8.1863158941268921e-01 8.4820270538330078e-01 + <_> + 7.6841300964355469e+01 + + 1 2 2632 2.1500000000000000e+01 0 -1 2633 + 3.5000000000000000e+00 -2 -3 2634 5.0000000000000000e-01 + + -8.5113090276718140e-01 7.8649562597274780e-01 + 4.1131305694580078e-01 -1.4095856249332428e-01 + <_> + 7.7013679504394531e+01 + + 1 2 2635 7.4950000000000000e+02 0 -1 2636 + 9.5000000000000000e+00 -2 -3 2637 7.9500000000000000e+01 + + 1.7237815260887146e-01 -4.3325147032737732e-01 + -1.0799569636583328e-01 6.9663918018341064e-01 + <_> + 7.7435089111328125e+01 + + 1 2 2638 1.7500000000000000e+01 0 -1 2639 174. -2 -3 2640 + 12650. + + 2.8112256526947021e-01 -5.1195782423019409e-01 + 4.2141020298004150e-01 -5.3448003530502319e-01 + <_> + 7.7268295288085938e+01 + + 1 2 2641 503. 0 -1 2642 1.3950000000000000e+02 -2 -3 2643 + 5.5000000000000000e+00 + + 5.8834999799728394e-01 -8.3229357004165649e-01 + 3.7692824006080627e-01 -1.6679267585277557e-01 + <_> + 7.7178421020507812e+01 + + 1 2 2644 1.3500000000000000e+01 0 -1 2645 + 2.5000000000000000e+00 -2 -3 2646 4.5000000000000000e+00 + + -6.5913814306259155e-01 5.2206271886825562e-01 + 4.7852468490600586e-01 -8.9874200522899628e-02 + <_> + 7.7000297546386719e+01 + + 1 2 2647 2.6500000000000000e+01 0 -1 2648 + 9.5000000000000000e+00 -2 -3 2649 4.5000000000000000e+00 + + -8.1166177988052368e-01 4.6178385615348816e-01 + 3.5849693417549133e-01 -1.7812377214431763e-01 + <_> + 7.7597846984863281e+01 + + 1 2 2650 5.0000000000000000e-01 0 -1 2651 + 5.5000000000000000e+00 -2 -3 2652 6.2500000000000000e+01 + + -7.4793010950088501e-01 4.5227390527725220e-01 + -2.8616324067115784e-01 7.2525143623352051e-01 + <_> + 7.7900642395019531e+01 + + 1 2 2653 3.9500000000000000e+01 0 -1 2654 26. -2 -3 2655 + 5218. + + 5.8358985185623169e-01 -4.8778259754180908e-01 + 3.0279731750488281e-01 -8.5277533531188965e-01 + <_> + 7.7819618225097656e+01 + + 1 2 2656 9.5000000000000000e+00 0 -1 2657 6301. -2 -3 2658 + 6.5000000000000000e+00 + + 9.1035622358322144e-01 -9.4324058294296265e-01 + 4.2837977409362793e-01 -1.6642063856124878e-01 + <_> + 7.7973083496093750e+01 + + 1 2 2659 1.0500000000000000e+01 0 -1 2660 + 2.5595000000000000e+03 -2 -3 2661 3.0950000000000000e+02 + + -4.6133957803249359e-02 5.8160132169723511e-01 + -5.6929016113281250e-01 4.2342483997344971e-01 + <_> + 7.7966255187988281e+01 + + 1 2 2662 6.5000000000000000e+00 0 -1 2663 + 2.9250000000000000e+02 -2 -3 2664 4.7550000000000000e+02 + + -1.8533475697040558e-02 8.2740765810012817e-01 + -7.0250022411346436e-01 -6.8264966830611229e-03 + <_> + 7.7632484436035156e+01 + + 1 2 2665 2.5750000000000000e+02 0 -1 2666 + 3.7515000000000000e+03 -2 -3 2667 3.5000000000000000e+00 + + -9.5757788419723511e-01 8.6831378936767578e-01 + 2.1071645617485046e-01 -3.3376976847648621e-01 + <_> + 7.7842147827148438e+01 + + 1 2 2668 1.6650000000000000e+02 0 -1 2669 196. -2 -3 2670 + 2.5150000000000000e+02 + + 1.5279424190521240e-01 -6.0143697261810303e-01 + 5.7514303922653198e-01 -2.5379255414009094e-01 + <_> + 7.7947998046875000e+01 + + 1 2 2671 1.9500000000000000e+01 0 -1 2672 + 1.8850000000000000e+02 -2 -3 2673 3.5000000000000000e+00 + + -9.4067907333374023e-01 1. 4.1685935854911804e-01 + -1.3797542452812195e-01 + <_> + 7.8399063110351562e+01 + + 1 2 2674 2.5500000000000000e+01 0 -1 2675 + 2.5000000000000000e+00 -2 -3 2676 7.0765000000000000e+03 + + 2.0323142409324646e-01 -4.4056713581085205e-01 + -7.2788339853286743e-01 4.5106858015060425e-01 + <_> + 7.8570816040039062e+01 + + 1 2 2677 42. 0 -1 2678 1.8550000000000000e+02 -2 -3 2679 + 2.6500000000000000e+01 + + 8.6221927404403687e-01 -8.9485520124435425e-01 + -6.2209093570709229e-01 1.7175154387950897e-01 + <_> + 7.8441680908203125e+01 + + 1 2 2680 6.1500000000000000e+01 0 -1 2681 + 5.0000000000000000e-01 -2 -3 2682 1.9650000000000000e+02 + + 4.3466070294380188e-01 -1.2913754582405090e-01 + 3.0203801393508911e-01 -7.8498184680938721e-01 + <_> + 7.8473335266113281e+01 + + 1 2 2683 2.4500000000000000e+01 0 -1 2684 + 1.3505000000000000e+03 -2 -3 2685 1.1150000000000000e+02 + + 1.2745502591133118e-01 -5.3675878047943115e-01 + 7.7312016487121582e-01 3.1652595847845078e-02 + <_> + 7.8451828002929688e+01 + + 1 2 2686 2.3145000000000000e+03 0 -1 2687 267. -2 -3 2688 + 13841. + + -6.8013966083526611e-01 6.3926976919174194e-01 + 5.1043254137039185e-01 -5.8976538479328156e-02 + <_> + 7.8873893737792969e+01 + + 1 2 2689 2.3050000000000000e+02 0 -1 2690 + 8.5500000000000000e+01 -2 -3 2691 1.8500000000000000e+01 + + 1.5697926282882690e-01 -4.9062812328338623e-01 + -2.8371900320053101e-01 5.3703123331069946e-01 + <_> + 7.8867477416992188e+01 + + 1 2 2692 1.7500000000000000e+01 0 -1 2693 + 2.3500000000000000e+01 -2 -3 2694 2.9850000000000000e+02 + + -8.6949959397315979e-02 4.9665886163711548e-01 + 4.2928251624107361e-01 -7.4992567300796509e-01 + <_> + 7.9131950378417969e+01 + + 1 2 2695 8.7500000000000000e+01 0 -1 2696 + 1.9850000000000000e+02 -2 -3 2697 84. + + 2.6447936892509460e-01 -4.0403616428375244e-01 + -7.4564838409423828e-01 7.5660055875778198e-01 + <_> + 7.8859619140625000e+01 + + 1 2 2698 1.8500000000000000e+01 0 -1 2699 193. -2 -3 2700 + 3.5000000000000000e+00 + + 6.6051805019378662e-01 -6.8317562341690063e-01 + 4.0860527753829956e-01 -1.5469188988208771e-01 + <_> + 7.9192871093750000e+01 + + 1 2 2701 1.0450000000000000e+02 0 -1 2702 + 2.1250000000000000e+02 -2 -3 2703 368. + + 2.8573963046073914e-01 -5.1572942733764648e-01 + 3.3325448632240295e-01 -7.9736381769180298e-01 + <_> + 7.9073951721191406e+01 + + 1 2 2704 5.0000000000000000e-01 0 -1 2705 + 1.3350000000000000e+02 -2 -3 2706 8.5000000000000000e+00 + + -7.5674408674240112e-01 4.2235055565834045e-01 + -6.1476016044616699e-01 3.5760600119829178e-02 + <_> + 7.9772453308105469e+01 + + 1 2 2707 1622. 0 -1 2708 5.6850000000000000e+02 -2 -3 2709 + 2.3500000000000000e+01 + + 3.7303709983825684e-01 -2.6838380098342896e-01 + 8.5874927043914795e-01 -6.8010163307189941e-01 + <_> + 7.9616546630859375e+01 + + 1 2 2710 5.1150000000000000e+02 0 -1 2711 + 2.0500000000000000e+01 -2 -3 2712 6.2385000000000000e+03 + + -2.7740508317947388e-01 6.4964014291763306e-01 + 6.8416231870651245e-01 -1.4068825542926788e-01 + <_> + 7.9560432434082031e+01 + + 1 2 2713 2.0500000000000000e+01 0 -1 2714 152. -2 -3 2715 + 118. + + 3.3152368664741516e-01 -7.2081387042999268e-01 + -7.7464383840560913e-01 -7.1336306631565094e-02 + <_> + 7.9178382873535156e+01 + + 1 2 2716 5.0000000000000000e-01 0 -1 2717 + 5.0000000000000000e-01 -2 -3 2718 2.8550000000000000e+02 + + -8.7511628866195679e-01 4.4366469979286194e-01 + 2.7641782164573669e-01 -3.8205233216285706e-01 + <_> + 7.9044113159179688e+01 + + 1 2 2719 3.6758500000000000e+04 0 -1 2720 119. -2 -3 2721 + 9.8250000000000000e+02 + + -8.9374190568923950e-01 1. 4.1436728835105896e-01 + -1.3426418602466583e-01 + <_> + 7.8986122131347656e+01 + + 1 2 2722 5.0000000000000000e-01 0 -1 2723 + 2.2500000000000000e+01 -2 -3 2724 4.5000000000000000e+00 + + -8.2067567110061646e-01 3.4801307320594788e-01 + -6.9476479291915894e-01 -5.7994190603494644e-02 + <_> + 7.9108413696289062e+01 + + 1 2 2725 4.2500000000000000e+01 0 -1 2726 + 1.8500000000000000e+01 -2 -3 2727 3.0500000000000000e+01 + + -4.1990894079208374e-01 5.0099647045135498e-01 + -5.2207231521606445e-01 1.2229448556900024e-01 + <_> + 7.9801383972167969e+01 + + 1 2 2728 8.2550000000000000e+02 0 -1 2729 + 5.0000000000000000e-01 -2 -3 2730 6.1765000000000000e+03 + + 3.1118586659431458e-01 -3.7582796812057495e-01 + 6.9296795129776001e-01 -9.2976748943328857e-02 + <_> + 8.0057861328125000e+01 + + 1 2 2731 7.5350000000000000e+02 0 -1 2732 + 5.8500000000000000e+01 -2 -3 2733 1.5000000000000000e+00 + + -2.4525830149650574e-01 2.5647372007369995e-01 + 8.4999513626098633e-01 -9.9117010831832886e-01 + <_> + 7.9780632019042969e+01 + + 1 2 2734 5.0000000000000000e-01 0 -1 2735 108. -2 -3 2736 + 7.1500000000000000e+01 + + 6.9359833002090454e-01 -6.9194906949996948e-01 + -2.7722206711769104e-01 4.1715595126152039e-01 + <_> + 8.0145835876464844e+01 + + 1 2 2737 2.0500000000000000e+01 0 -1 2738 + 4.5000000000000000e+00 -2 -3 2739 7.6500000000000000e+01 + + -9.7951823472976685e-01 3.6520305275917053e-01 + -3.8517192006111145e-01 4.9779340624809265e-01 + <_> + 7.9998329162597656e+01 + + 1 2 2740 1.1165000000000000e+03 0 -1 2741 + 4.5500000000000000e+01 -2 -3 2742 7.7500000000000000e+01 + + -9.2406588792800903e-01 1. 3.6648508906364441e-01 + -1.4751173555850983e-01 + <_> + 8.0417495727539062e+01 + + 1 2 2743 7905. 0 -1 2744 1.4950000000000000e+02 -2 -3 2745 + 98. + + 3.2732751220464706e-02 -7.6812428236007690e-01 + -7.5380378961563110e-01 4.7367131710052490e-01 + <_> + 7.9864738464355469e+01 + + 1 2 2746 6.5000000000000000e+00 0 -1 2747 + 1.2235000000000000e+03 -2 -3 2748 27. + + 5.5213552713394165e-01 -6.3920162618160248e-02 + -9.2558085918426514e-01 -1.1656486988067627e-01 + <_> + 7.9995124816894531e+01 + + 1 2 2749 2.1150000000000000e+02 0 -1 2750 + 1.6500000000000000e+01 -2 -3 2751 34. + + 2.0876583456993103e-01 -3.5845145583152771e-01 + -7.5983208417892456e-01 6.1741626262664795e-01 + <_> + 8.0029579162597656e+01 + + 1 2 2752 1.0500000000000000e+01 0 -1 2753 + 3.0150000000000000e+02 -2 -3 2754 3.5000000000000000e+00 + + 1.8833340704441071e-01 -4.5257857441902161e-01 + -8.7599718570709229e-01 3.9588588476181030e-01 + <_> + 8.0429824829101562e+01 + + 1 2 2755 1.7500000000000000e+01 0 -1 2756 + 5.5950000000000000e+02 -2 -3 2757 3.8500000000000000e+01 + + 9.0497744083404541e-01 -3.4649524092674255e-01 + 4.0024894475936890e-01 -4.3823891878128052e-01 + <_> + 8.0367797851562500e+01 + + 1 2 2758 5.0000000000000000e-01 0 -1 2759 + 1.0032500000000000e+04 -2 -3 2760 1.4500000000000000e+01 + + -7.4333506822586060e-01 4.4759553670883179e-01 + -6.5220975875854492e-01 5.3118625655770302e-03 + <_> + 8.0484443664550781e+01 + + 1 2 2761 7.5500000000000000e+01 0 -1 2762 + 8.4500000000000000e+01 -2 -3 2763 51. + + -4.7128376364707947e-01 3.0099546909332275e-01 + -5.9575259685516357e-01 4.5461925864219666e-01 + <_> + 8.0230026245117188e+01 + + 1 2 2764 6.6250000000000000e+02 0 -1 2765 4812. -2 -3 2766 + 9.5000000000000000e+00 + + -8.2453155517578125e-01 8.0837249755859375e-01 + 3.8529312610626221e-01 -2.5441926717758179e-01 + <_> + 8.0529327392578125e+01 + + 1 2 2767 5.9500000000000000e+01 0 -1 2768 + 1.6050000000000000e+02 -2 -3 2769 1.5000000000000000e+00 + + 3.9788705110549927e-01 -9.0285009145736694e-01 + 2.9930576682090759e-01 -2.6814186573028564e-01 + <_> + 8.0221504211425781e+01 + + 1 2 2770 3.0500000000000000e+01 0 -1 2771 + 4.5000000000000000e+00 -2 -3 2772 1.4475000000000000e+03 + + -9.4630533456802368e-01 8.2679504156112671e-01 + 2.5290638208389282e-01 -3.0782324075698853e-01 + <_> + 8.0379684448242188e+01 + + 1 2 2773 5.0645000000000000e+03 0 -1 2774 + 3.2500000000000000e+01 -2 -3 2775 3.5325000000000000e+03 + + -6.8182122707366943e-01 2.9198646545410156e-01 + 5.7170498371124268e-01 -9.3514062464237213e-02 + <_> + 8.0165153503417969e+01 + + 1 2 2776 1.5500000000000000e+01 0 -1 2777 + 1.2765000000000000e+03 -2 -3 2778 2.5000000000000000e+00 + + -1.2029168428853154e-03 6.6435748338699341e-01 + 5.4809719324111938e-01 -6.2805855274200439e-01 + <_> + 8.0611167907714844e+01 + + 1 2 2779 2.5000000000000000e+00 0 -1 2780 + 2.1500000000000000e+01 -2 -3 2781 1.2050000000000000e+02 + + -2.4764390289783478e-01 4.4601744413375854e-01 + 1.6960276663303375e-01 -5.8656966686248779e-01 + <_> + 8.0892166137695312e+01 + + 1 2 2782 5.4500000000000000e+01 0 -1 2783 + 9.7350000000000000e+02 -2 -3 2784 1.0500000000000000e+01 + + 2.7698031067848206e-01 -8.4596508741378784e-01 + 2.8099426627159119e-01 -3.0595216155052185e-01 + <_> + 8.1190002441406250e+01 + + 1 2 2785 3.5000000000000000e+00 0 -1 2786 + 9.4500000000000000e+01 -2 -3 2787 15. + + -2.3588234186172485e-01 2.9783576726913452e-01 1. + -9.3145948648452759e-01 + <_> + 8.0872680664062500e+01 + + 1 2 2788 5.0000000000000000e-01 0 -1 2789 34. -2 -3 2790 + 404. + + -9.7627913951873779e-01 4.5835772156715393e-01 + 3.3686440438032150e-02 -6.0926121473312378e-01 + <_> + 8.1137512207031250e+01 + + 1 2 2791 4.2500000000000000e+01 0 -1 2792 + 7.5000000000000000e+00 -2 -3 2793 1.0500000000000000e+01 + + 4.3087863922119141e-01 -5.4735422134399414e-01 + -7.4202680587768555e-01 2.6482933759689331e-01 + <_> + 8.1074195861816406e+01 + + 1 2 2794 6045. 0 -1 2795 3582. -2 -3 2796 + 1.4355000000000000e+03 + + 5.6150436401367188e-01 -6.3314586877822876e-02 + -9.8905169963836670e-01 1. + <_> + 8.1611145019531250e+01 + + 1 2 2797 1.7500000000000000e+01 0 -1 2798 + 6.3500000000000000e+01 -2 -3 2799 2.5000000000000000e+00 + + -9.5531716942787170e-02 5.3694951534271240e-01 + 4.7020646929740906e-01 -5.0288665294647217e-01 + <_> + 8.1308403015136719e+01 + + 1 2 2800 5.5000000000000000e+00 0 -1 2801 110. -2 -3 2802 + 2.5000000000000000e+00 + + -9.1038602590560913e-01 7.3705679178237915e-01 + 2.4539317190647125e-01 -3.0274006724357605e-01 + <_> + 8.0943153381347656e+01 + + 1 2 2803 4.9550000000000000e+02 0 -1 2804 + 1.0500000000000000e+01 -2 -3 2805 1.7500000000000000e+01 + + 1.8987993896007538e-01 -3.6525547504425049e-01 -1. + 8.1189829111099243e-01 + <_> + 8.1049530029296875e+01 + + 1 2 2806 1.7050000000000000e+02 0 -1 2807 + 5.5000000000000000e+00 -2 -3 2808 6.3500000000000000e+01 + + 5.0011897087097168e-01 -2.4462732672691345e-01 + 6.2346208095550537e-01 -5.9039413928985596e-01 + <_> + 8.1308738708496094e+01 + + 1 2 2809 3.8500000000000000e+01 0 -1 2810 + 8.6500000000000000e+01 -2 -3 2811 8.8500000000000000e+01 + + -3.8746827840805054e-01 2.5921225547790527e-01 + 6.4567667245864868e-01 -3.9673528075218201e-01 + <_> + 8.1096168518066406e+01 + + 1 2 2812 4.5000000000000000e+00 0 -1 2813 + 3.6500000000000000e+01 -2 -3 2814 1.2500000000000000e+01 + + 8.4782302379608154e-01 -9.7110116481781006e-01 + 3.3998885750770569e-01 -2.1257449686527252e-01 + <_> + 8.1410560607910156e+01 + + 1 2 2815 4.5000000000000000e+00 0 -1 2816 + 7.5500000000000000e+01 -2 -3 2817 1.4500000000000000e+01 + + -1. 1. 3.1439647078514099e-01 -1.7778587341308594e-01 + <_> + 8.1814201354980469e+01 + + 1 2 2818 3.9500000000000000e+01 0 -1 2819 + 6.4750000000000000e+02 -2 -3 2820 9.5000000000000000e+00 + + 2.4708394706249237e-01 -9.2105174064636230e-01 + 4.0363448858261108e-01 -1.2905533611774445e-01 + <_> + 8.1573196411132812e+01 + + 1 2 2821 3.0500000000000000e+01 0 -1 2822 + 5.0000000000000000e-01 -2 -3 2823 5.0500000000000000e+01 + + 4.9701321125030518e-01 -5.6365805864334106e-01 + 2.8191345930099487e-01 -5.3536522388458252e-01 + <_> + 8.1956001281738281e+01 + + 1 2 2824 4.6085000000000000e+03 0 -1 2825 + 1.3250000000000000e+02 -2 -3 2826 1.9750000000000000e+02 + + -7.4937385320663452e-01 9.3439608812332153e-01 + 3.8280078768730164e-01 -2.6699417829513550e-01 + <_> + 8.1513214111328125e+01 + + 1 2 2827 3.0500000000000000e+01 0 -1 2828 + 5.5000000000000000e+00 -2 -3 2829 9.9235000000000000e+03 + + 2.1246223151683807e-01 -4.4278442859649658e-01 + -8.1646180152893066e-01 5.1293396949768066e-01 + <_> + 8.1699577331542969e+01 + + 1 2 2830 1.1650000000000000e+02 0 -1 2831 + 8.2500000000000000e+01 -2 -3 2832 3.5000000000000000e+00 + + 1.8636158108711243e-01 -4.9596223235130310e-01 + -8.9908498525619507e-01 1. + <_> + 8.2445182800292969e+01 + + 1 2 2833 1903. 0 -1 2834 2.5000000000000000e+00 -2 -3 2835 + 6.0445000000000000e+03 + + 1.8896391987800598e-01 -3.2746449112892151e-01 + 7.4561136960983276e-01 -7.9816836118698120e-01 + <_> + 8.2831352233886719e+01 + + 1 2 2836 2.7500000000000000e+01 0 -1 2837 469. -2 -3 2838 + 1.2175000000000000e+03 + + 7.7044230699539185e-01 -9.5174908638000488e-01 + -1.4690612256526947e-01 3.8616815209388733e-01 + <_> + 8.2686500549316406e+01 + + 1 2 2839 2895. 0 -1 2840 4.3500000000000000e+01 -2 -3 2841 + 34. + + -1.4485244452953339e-01 4.4888463616371155e-01 + 3.6486008763313293e-01 -8.1205248832702637e-01 + <_> + 8.2188568115234375e+01 + + 1 2 2842 3.5000000000000000e+00 0 -1 2843 2070. -2 -3 2844 + 4.7500000000000000e+01 + + -6.9201928377151489e-01 3.1747218966484070e-01 + -4.9793621897697449e-01 5.4417175054550171e-01 + <_> + 8.2745765686035156e+01 + + 1 2 2845 2.5000000000000000e+00 0 -1 2846 + 7.5000000000000000e+00 -2 -3 2847 1.8500000000000000e+01 + + -8.4509557485580444e-01 5.5719637870788574e-01 + 1.7902635037899017e-01 -4.2469331622123718e-01 + <_> + 8.2670654296875000e+01 + + 1 2 2848 1.3500000000000000e+01 0 -1 2849 + 9.4650000000000000e+02 -2 -3 2850 7.8500000000000000e+01 + + -3.3974867314100266e-02 -8.2525712251663208e-01 + -4.6273630857467651e-01 6.6797983646392822e-01 + <_> + 8.2877090454101562e+01 + + 1 2 2851 1.4500000000000000e+01 0 -1 2852 + 1.1915000000000000e+03 -2 -3 2853 3.9500000000000000e+01 + + 6.6358172893524170e-01 -7.2160053253173828e-01 + -6.6055583953857422e-01 2.0643877983093262e-01 + <_> + 8.2504707336425781e+01 + + 1 2 2854 4.5000000000000000e+00 0 -1 2855 + 1.6250000000000000e+02 -2 -3 2856 6.5000000000000000e+00 + + 1.9229575991630554e-02 6.7639851570129395e-01 + 7.7679026126861572e-01 -3.7238210439682007e-01 + <_> + 8.1991981506347656e+01 + + 1 2 2857 1.8500000000000000e+01 0 -1 2858 + 1.5500000000000000e+01 -2 -3 2859 7.5000000000000000e+00 + + -6.6943126916885376e-01 2.8580504655838013e-01 + 5.7573765516281128e-01 -5.1273131370544434e-01 + <_> + 8.2700317382812500e+01 + + 1 2 2860 2.5335000000000000e+03 0 -1 2861 + 5.5000000000000000e+00 -2 -3 2862 9017. + + 4.5291054248809814e-01 -3.1770652532577515e-01 + 7.0833772420883179e-01 -5.8668452501296997e-01 + <_> + 8.3036483764648438e+01 + + 1 2 2863 1.2665000000000000e+03 0 -1 2864 + 2.7950000000000000e+02 -2 -3 2865 1.6050000000000000e+02 + + 5.6190413236618042e-01 -9.4979606568813324e-02 + -5.6120347976684570e-01 6.9735217094421387e-01 + <_> + 8.3268234252929688e+01 + + 1 2 2866 3.1500000000000000e+01 0 -1 2867 + 2.2850000000000000e+02 -2 -3 2868 338. + + 2.9099774360656738e-01 -8.5712206363677979e-01 + -7.3761904239654541e-01 2.3174422979354858e-01 + <_> + 8.3142601013183594e+01 + + 1 2 2869 1.3500000000000000e+01 0 -1 2870 + 7.5500000000000000e+01 -2 -3 2871 7.5000000000000000e+00 + + -6.1628973484039307e-01 8.9499497413635254e-01 + 5.3249603509902954e-01 -1.2562887370586395e-01 + <_> + 8.3346061706542969e+01 + + 1 2 2872 5.8500000000000000e+01 0 -1 2873 + 1.4500000000000000e+01 -2 -3 2874 2.3655000000000000e+03 + + -5.8924037218093872e-01 2.0346269011497498e-01 + 6.8413233757019043e-01 -7.3724877834320068e-01 + <_> + 8.3734870910644531e+01 + + 1 2 2875 1.5500000000000000e+01 0 -1 2876 + 2.4500000000000000e+01 -2 -3 2877 842. + + -9.6514111757278442e-01 4.5274001359939575e-01 + -4.4388589262962341e-01 1.6307270526885986e-01 + <_> + 8.3378517150878906e+01 + + 1 2 2878 2.3415000000000000e+03 0 -1 2879 + 1.1135000000000000e+03 -2 -3 2880 1.4450000000000000e+02 + + -6.0065728425979614e-01 4.9152576923370361e-01 + 3.9019897580146790e-01 -3.5635352134704590e-01 + <_> + 8.3842796325683594e+01 + + 1 2 2881 7.7500000000000000e+01 0 -1 2882 + 1.5000000000000000e+00 -2 -3 2883 34. + + 3.0433416366577148e-01 -3.4621056914329529e-01 + -2.3730756342411041e-01 7.2603577375411987e-01 + <_> + 8.4082458496093750e+01 + + 1 2 2884 5.0000000000000000e-01 0 -1 2885 + 1.5000000000000000e+00 -2 -3 2886 2.4500000000000000e+01 + + -8.4981471300125122e-01 4.6478056907653809e-01 + -4.4265326857566833e-01 2.3966242372989655e-01 + <_> + 8.4403526306152344e+01 + + 1 2 2887 1.9735000000000000e+03 0 -1 2888 61716. -2 -3 2889 + 7.1250000000000000e+02 + + 3.2107087969779968e-01 -7.3176121711730957e-01 + -4.2035382986068726e-01 6.5387272834777832e-01 + <_> + 8.3859382629394531e+01 + + 1 2 2890 5.1500000000000000e+01 0 -1 2891 + 5.4500000000000000e+01 -2 -3 2892 9.4500000000000000e+01 + + -8.5267591476440430e-01 3.3089217543601990e-01 + -5.4414278268814087e-01 1.4185604453086853e-01 + <_> + 8.4165733337402344e+01 + + 1 2 2893 2.5000000000000000e+00 0 -1 2894 170. -2 -3 2895 + 5.0000000000000000e-01 + + -7.4921059608459473e-01 1. 3.0634912848472595e-01 + -2.8711661696434021e-01 + <_> + 8.4014938354492188e+01 + + 1 2 2896 5.0000000000000000e-01 0 -1 2897 + 4.5000000000000000e+00 -2 -3 2898 1.5000000000000000e+00 + + -4.4929865002632141e-01 7.1007603406906128e-01 + 5.1218295097351074e-01 -2.8127226233482361e-01 + <_> + 8.3658638000488281e+01 + + 1 2 2899 6.2500000000000000e+01 0 -1 2900 + 7.7500000000000000e+01 -2 -3 2901 5.4650000000000000e+02 + + 1.7899210751056671e-01 -3.5629883408546448e-01 + 6.6323882341384888e-01 -6.2932920455932617e-01 + <_> + 8.4031822204589844e+01 + + 1 2 2902 4.3500000000000000e+01 0 -1 2903 + 2.5000000000000000e+00 -2 -3 2904 1.4450000000000000e+02 + + 2.9303130507469177e-01 -7.2133332490921021e-01 + 3.7318074703216553e-01 -2.9929837584495544e-01 + <_> + 8.4148094177246094e+01 + + 1 2 2905 4.4500000000000000e+01 0 -1 2906 + 5.5000000000000000e+00 -2 -3 2907 1218. + + 1.1627596616744995e-01 -6.5344148874282837e-01 + -6.1276328563690186e-01 3.0713844299316406e-01 + <_> + 8.3736122131347656e+01 + + 1 2 2908 2.2500000000000000e+01 0 -1 2909 + 7.5000000000000000e+00 -2 -3 2910 4945. + + 2.0239315927028656e-01 -4.1197755932807922e-01 + -6.5554910898208618e-01 5.7477289438247681e-01 + <_> + 8.3684288024902344e+01 + + 1 2 2911 6.1500000000000000e+01 0 -1 2912 + 3.5000000000000000e+00 -2 -3 2913 3.6500000000000000e+01 + + 2.9327356815338135e-01 -5.5817484855651855e-01 + 7.1029824018478394e-01 -5.1831677556037903e-02 + <_> + 8.3512733459472656e+01 + + 1 2 2914 5.4500000000000000e+01 0 -1 2915 + 1.5000000000000000e+00 -2 -3 2916 6.5000000000000000e+00 + + -9.4946056604385376e-01 4.1890572756528854e-02 + 3.9327812194824219e-01 -1.7155566811561584e-01 + <_> + 8.4089424133300781e+01 + + 1 2 2917 9.3500000000000000e+01 0 -1 2918 2760. -2 -3 2919 + 1.1250000000000000e+02 + + -2.4497070908546448e-01 9.6521437168121338e-01 + 5.7669252157211304e-01 -7.6096898317337036e-01 + <_> + 8.4561004638671875e+01 + + 1 2 2920 5.0000000000000000e-01 0 -1 2921 + 6.5000000000000000e+00 -2 -3 2922 6.9750000000000000e+02 + + -5.3141713142395020e-01 4.7158041596412659e-01 + 2.2022259235382080e-01 -4.3360495567321777e-01 + <_> + 8.4944801330566406e+01 + + 1 2 2923 1.4050000000000000e+02 0 -1 2924 + 5.0000000000000000e-01 -2 -3 2925 7.4850000000000000e+02 + + 1.5521393716335297e-01 -5.1790440082550049e-01 + 3.8379338383674622e-01 -4.4605687260627747e-01 + <_> + 8.5207305908203125e+01 + + 1 2 2926 1.5500000000000000e+01 0 -1 2927 + 3.3500000000000000e+01 -2 -3 2928 255. + + -2.9250434041023254e-01 6.5829980373382568e-01 + -6.5028876066207886e-01 5.1617544889450073e-01 + <_> + 8.5524932861328125e+01 + + 1 2 2929 2.4500000000000000e+01 0 -1 2930 + 2.8500000000000000e+01 -2 -3 2931 4.2500000000000000e+01 + + -1. 3.1762468814849854e-01 3.0006918311119080e-01 + -5.6320971250534058e-01 + <_> + 8.5334136962890625e+01 + + 1 2 2932 3.5000000000000000e+00 0 -1 2933 + 1.5500000000000000e+01 -2 -3 2934 2457. + + -4.4446155428886414e-01 4.3577027320861816e-01 + 4.5368546247482300e-01 -4.4899699091911316e-01 + <_> + 8.5264480590820312e+01 + + 1 2 2935 5.0000000000000000e-01 0 -1 2936 115. -2 -3 2937 + 2.5000000000000000e+00 + + -9.1964131593704224e-01 4.9966832995414734e-01 + 5.8283418416976929e-01 -6.9656021893024445e-02 + <_> + 8.5903366088867188e+01 + + 1 2 2938 7.1500000000000000e+01 0 -1 2939 + 5.4500000000000000e+01 -2 -3 2940 143. + + 1.6550585627555847e-01 -4.3812391161918640e-01 + 6.3888710737228394e-01 -5.4803293943405151e-01 + <_> + 8.6248062133789062e+01 + + 1 2 2941 2.5000000000000000e+00 0 -1 2942 + 9.0500000000000000e+01 -2 -3 2943 1.0500000000000000e+01 + + 1.0908889025449753e-01 -8.8574463129043579e-01 + 3.4469136595726013e-01 -2.0632795989513397e-01 + <_> + 8.6533218383789062e+01 + + 1 2 2944 2.1500000000000000e+01 0 -1 2945 + 4.5000000000000000e+00 -2 -3 2946 4.4500000000000000e+01 + + -4.4494426250457764e-01 8.8365721702575684e-01 + 2.8515672683715820e-01 -8.1787091493606567e-01 + <_> + 8.7068389892578125e+01 + + 1 2 2947 8.2650000000000000e+02 0 -1 2948 + 4.5000000000000000e+00 -2 -3 2949 1.9675500000000000e+04 + + 3.3902516961097717e-01 -3.3688139915466309e-01 + 5.3517556190490723e-01 -6.7757689952850342e-01 + <_> + 8.6810844421386719e+01 + + 1 2 2950 2.5500000000000000e+01 0 -1 2951 + 2.5000000000000000e+00 -2 -3 2952 1.3035000000000000e+03 + + 9.1093343496322632e-01 -8.2202631235122681e-01 + 3.2981109619140625e-01 -2.5754809379577637e-01 + <_> + 8.6275955200195312e+01 + + 1 2 2953 2.2369500000000000e+04 0 -1 2954 + 1.5000000000000000e+00 -2 -3 2955 9.5285000000000000e+03 + + 1.4417627826333046e-02 -6.9124591350555420e-01 + 3.7811917066574097e-01 -5.3488659858703613e-01 + <_> + 8.6942420959472656e+01 + + 1 2 2956 1.0645000000000000e+03 0 -1 2957 + 3.5000000000000000e+00 -2 -3 2958 7.5000000000000000e+00 + + 1.4049446582794189e-01 -3.5957664251327515e-01 + 9.1249042749404907e-01 -1.7921762168407440e-01 + <_> + 8.7227539062500000e+01 + + 1 2 2959 9.5000000000000000e+00 0 -1 2960 199. -2 -3 2961 + 6.6465000000000000e+03 + + 8.8686686754226685e-01 -6.7846179008483887e-01 + -3.4822642803192139e-01 2.8511366248130798e-01 + <_> + 8.7103866577148438e+01 + + 1 2 2962 6.5000000000000000e+00 0 -1 2963 + 1.5000000000000000e+00 -2 -3 2964 4.3450000000000000e+02 + + 1.8375012278556824e-01 -5.8300310373306274e-01 + -7.8263854980468750e-01 5.0758910179138184e-01 + <_> + 8.7249404907226562e+01 + + 1 2 2965 1.8500000000000000e+01 0 -1 2966 + 8.5000000000000000e+00 -2 -3 2967 9.5000000000000000e+00 + + -9.1379207372665405e-01 1. -6.0623198747634888e-01 + 1.4554040133953094e-01 + <_> + 8.6942718505859375e+01 + + 1 2 2968 3.5000000000000000e+00 0 -1 2969 + 2.3355000000000000e+03 -2 -3 2970 2.5850000000000000e+02 + + 6.3676542043685913e-01 -4.5731505751609802e-01 + 4.5318025350570679e-01 -3.0669227242469788e-01 + <_> + 8.6748542785644531e+01 + + 1 2 2971 2.1500000000000000e+01 0 -1 2972 + 1.6500000000000000e+01 -2 -3 2973 4.3450000000000000e+02 + + -1.9417463243007660e-01 4.5977392792701721e-01 + 7.4417084455490112e-01 -9.2871183156967163e-01 + <_> + 8.6213851928710938e+01 + + 1 2 2974 4.6500000000000000e+01 0 -1 2975 6986. -2 -3 2976 + 1.0655000000000000e+03 + + -3.5974133014678955e-01 3.9904057979583740e-01 + -5.3468620777130127e-01 4.4506999850273132e-01 + <_> + 8.6651367187500000e+01 + + 1 2 2977 7.7450000000000000e+02 0 -1 2978 39564. -2 -3 2979 + 3.5000000000000000e+00 + + 4.3751135468482971e-01 -8.3221775293350220e-01 + 9.5911510288715363e-02 -5.8185952901840210e-01 + <_> + 8.7053947448730469e+01 + + 1 2 2980 1.3150000000000000e+02 0 -1 2981 + 1.8650000000000000e+02 -2 -3 2982 4.2550000000000000e+02 + + 4.1247457265853882e-01 -4.4629332423210144e-01 + 4.0258339047431946e-01 -6.6914594173431396e-01 + <_> + 8.7472679138183594e+01 + + 1 2 2983 6.9750000000000000e+02 0 -1 2984 + 1.0500000000000000e+01 -2 -3 2985 1.8735000000000000e+03 + + -7.6271665096282959e-01 4.1873174905776978e-01 + -6.8841624259948730e-01 -2.3577280342578888e-02 + <_> + 8.7495330810546875e+01 + + 1 2 2986 5.0000000000000000e-01 0 -1 2987 + 2.9500000000000000e+01 -2 -3 2988 1.4750000000000000e+02 + + -7.6370656490325928e-01 6.4419740438461304e-01 + -2.4485288560390472e-01 6.6281813383102417e-01 + <_> + 8.6983520507812500e+01 + + 1 2 2989 1.2135000000000000e+03 0 -1 2990 + 8.0250000000000000e+02 -2 -3 2991 1.0500000000000000e+01 + + -4.0576335787773132e-01 5.1596242189407349e-01 + 4.4931706786155701e-01 -5.1181161403656006e-01 + <_> + 8.7748497009277344e+01 + + 1 2 2992 1.4555000000000000e+03 0 -1 2993 + 2.3355000000000000e+03 -2 -3 2994 4.5000000000000000e+00 + + -8.6321972310543060e-02 7.6497226953506470e-01 + 3.1687757372856140e-01 -4.1308388113975525e-01 + <_> + 8.7668098449707031e+01 + + 1 2 2995 7.3500000000000000e+01 0 -1 2996 + 7.5000000000000000e+00 -2 -3 2997 1.8415000000000000e+03 + + -8.0395199358463287e-02 4.9477747082710266e-01 + 5.0139939785003662e-01 -9.4019854068756104e-01 + <_> + 8.7603317260742188e+01 + + 1 2 2998 1.0350000000000000e+02 0 -1 2999 + 5.0000000000000000e-01 -2 -3 3000 6.6500000000000000e+01 + + 5.5032008886337280e-01 -6.4781084656715393e-02 + -6.9391334056854248e-01 2.6454237103462219e-01 + <_> + 8.7899932861328125e+01 + + 1 2 3001 4.1850000000000000e+02 0 -1 3002 + 2.5000000000000000e+00 -2 -3 3003 4.4350000000000000e+02 + + 8.3208960294723511e-01 -9.7579640150070190e-01 + 4.5810779929161072e-01 -9.8539277911186218e-02 + <_> + 8.7558662414550781e+01 + + 1 2 3004 1.4500000000000000e+01 0 -1 3005 + 4.5000000000000000e+00 -2 -3 3006 4093. + + 1.3818612694740295e-01 -5.0276112556457520e-01 + 3.9290004968643188e-01 -9.0650981664657593e-01 + <_> + 8.7562660217285156e+01 + + 1 2 3007 3.0500000000000000e+01 0 -1 3008 15. -2 -3 3009 + 6.8500000000000000e+01 + + 5.8721613883972168e-01 -9.5952403545379639e-01 + 1.5953540802001953e-01 -7.3017132282257080e-01 + <_> + 8.7263595581054688e+01 + + 1 2 3010 4.6550000000000000e+02 0 -1 3011 + 8.5000000000000000e+00 -2 -3 3012 3.0500000000000000e+01 + + 2.5965842604637146e-01 -4.5460721850395203e-01 + -6.6170775890350342e-01 4.6810474991798401e-01 + <_> + 8.7385635375976562e+01 + + 1 2 3013 3.7500000000000000e+01 0 -1 3014 + 6.7500000000000000e+01 -2 -3 3015 9.0500000000000000e+01 + + -4.7775322198867798e-01 3.0159825086593628e-01 + -7.1135115623474121e-01 1.2204105406999588e-01 + <_> + 8.7448921203613281e+01 + + 1 2 3016 3.4500000000000000e+01 0 -1 3017 + 1.3500000000000000e+01 -2 -3 3018 2.9500000000000000e+01 + + -4.3366974592208862e-01 4.3953391909599304e-01 + -6.8973690271377563e-01 6.3285768032073975e-02 + <_> + 8.7470863342285156e+01 + + 1 2 3019 9.5000000000000000e+00 0 -1 3020 + 3.5750000000000000e+02 -2 -3 3021 2.1500000000000000e+01 + + 5.9902238845825195e-01 -4.9095529317855835e-01 + -6.0496187210083008e-01 2.1941423416137695e-02 + <_> + 8.8030609130859375e+01 + + 1 2 3022 7.5000000000000000e+00 0 -1 3023 + 1.4250000000000000e+02 -2 -3 3024 4.8500000000000000e+01 + + -1.1742883920669556e-01 5.5974942445755005e-01 + -6.6814047098159790e-01 1.0357101261615753e-01 + <_> + 8.8298561096191406e+01 + + 1 2 3025 5.0000000000000000e-01 0 -1 3026 + 2.5000000000000000e+00 -2 -3 3027 6.5000000000000000e+00 + + -7.9518532752990723e-01 3.9527121186256409e-01 + 2.6795190572738647e-01 -4.4711253046989441e-01 + <_> + 8.8873558044433594e+01 + + 1 2 3028 5.0650000000000000e+02 0 -1 3029 + 2.7150000000000000e+02 -2 -3 3030 5.1550000000000000e+02 + + 4.9458679556846619e-01 -3.8078719377517700e-01 + 5.7499361038208008e-01 -2.4514666199684143e-01 + <_> + 8.8112663269042969e+01 + + 1 2 3031 1.5500000000000000e+01 0 -1 3032 + 3.1500000000000000e+01 -2 -3 3033 511. + + -2.6782530546188354e-01 3.8774058222770691e-01 + 3.4897887706756592e-01 -7.6089125871658325e-01 + <_> + 8.8039482116699219e+01 + + 1 2 3034 230. 0 -1 3035 6.6500000000000000e+01 -2 -3 3036 + 4.0500000000000000e+01 + + -7.3185198009014130e-02 5.7667195796966553e-01 + 3.2658204436302185e-01 -8.0915856361389160e-01 + <_> + 8.8365722656250000e+01 + + 1 2 3037 5.0000000000000000e-01 0 -1 3038 + 2.9500000000000000e+01 -2 -3 3039 4.5000000000000000e+00 + + 3.2624712586402893e-01 -5.5316114425659180e-01 + -2.4152111727744341e-03 -6.9509941339492798e-01 + <_> + 8.8882514953613281e+01 + + 1 2 3040 3.0500000000000000e+01 0 -1 3041 + 1.1150000000000000e+02 -2 -3 3042 5.0000000000000000e-01 + + 5.2429902553558350e-01 -8.9993971586227417e-01 + 5.1678961515426636e-01 -8.6023628711700439e-02 + <_> + 8.8496650695800781e+01 + + 1 2 3043 2.8500000000000000e+01 0 -1 3044 + 1.1385000000000000e+03 -2 -3 3045 1.0500000000000000e+01 + + 5.3370710462331772e-02 -7.7716881036758423e-01 + 4.8879763484001160e-01 -1.4188981056213379e-01 + <_> + 8.8710388183593750e+01 + + 1 2 3046 3286. 0 -1 3047 1.8500000000000000e+01 -2 -3 3048 + 14770. + + 5.7567560672760010e-01 -7.7623206377029419e-01 + -8.3764082193374634e-01 2.1373493969440460e-01 + <_> + 8.8465957641601562e+01 + + 1 2 3049 4.5000000000000000e+00 0 -1 3050 + 6.8500000000000000e+01 -2 -3 3051 7.2550000000000000e+02 + + -9.8398631811141968e-01 1. 1.4620523154735565e-01 + -4.8840534687042236e-01 + <_> + 8.8379966735839844e+01 + + 1 2 3052 4.6350000000000000e+02 0 -1 3053 + 1.0005000000000000e+03 -2 -3 3054 12544. + + 1.2718398869037628e-01 -4.7662603855133057e-01 + 6.7666745185852051e-01 -9.6875000000000000e-01 + <_> + 8.8453712463378906e+01 + + 1 2 3055 6.2500000000000000e+01 0 -1 3056 + 2.5000000000000000e+00 -2 -3 3057 2.7450000000000000e+02 + + 7.3742903769016266e-02 -4.8088160157203674e-01 + 7.9391783475875854e-01 -9.5094847679138184e-01 + <_> + 8.8360649108886719e+01 + + 1 2 3058 5.1085000000000000e+03 0 -1 3059 + 1.5000000000000000e+00 -2 -3 3060 59. + + 4.7250562906265259e-01 -9.3059159815311432e-02 + -9.8921388387680054e-01 1. + <_> + 8.8759475708007812e+01 + + 1 2 3061 4.3500000000000000e+01 0 -1 3062 + 2.5000000000000000e+00 -2 -3 3063 9.5000000000000000e+00 + + 1.8726401031017303e-01 -9.5795679092407227e-01 + 3.9882484078407288e-01 -1.5403895080089569e-01 + <_> + 8.8777908325195312e+01 + + 1 2 3064 1.8150000000000000e+02 0 -1 3065 + 1.1500000000000000e+01 -2 -3 3066 4.0500000000000000e+01 + + 2.5865679979324341e-01 -5.4600328207015991e-01 + 6.9991689920425415e-01 1.8433349207043648e-02 + <_> + 8.9012145996093750e+01 + + 1 2 3067 2.6500000000000000e+01 0 -1 3068 + 2.0500000000000000e+01 -2 -3 3069 1.1550000000000000e+02 + + 7.8764355182647705e-01 -8.8436836004257202e-01 + 2.3423436284065247e-01 -3.8715034723281860e-01 + + <_> + 8 + + 12 12 8 3 + <_> + 7 + + 16 11 1 1 + <_> + 1 + + 14 19 7 32 + <_> + 5 + + 9 8 13 9 + <_> + 7 + + 17 11 8 1 + <_> + 5 + + 7 55 24 8 + <_> + 1 + + 13 54 6 3 + <_> + 9 + + 11 40 8 12 + <_> + 4 + + 11 32 9 31 + <_> + 2 + + 9 41 12 14 + <_> + 7 + + 14 33 5 5 + <_> + 7 + + 8 60 22 3 + <_> + 4 + + 11 38 10 3 + <_> + 4 + + 12 8 6 10 + <_> + 8 + + 12 12 8 3 + <_> + 9 + + 18 19 1 13 + <_> + 9 + + 14 3 16 1 + <_> + 1 + + 13 21 6 2 + <_> + 0 + + 12 10 11 6 + <_> + 7 + + 15 0 1 49 + <_> + 5 + + 1 1 18 48 + <_> + 2 + + 14 58 10 2 + <_> + 2 + + 7 51 11 5 + <_> + 1 + + 11 53 10 4 + <_> + 8 + + 16 12 1 5 + <_> + 9 + + 10 35 10 21 + <_> + 8 + + 11 54 12 2 + <_> + 4 + + 13 44 1 4 + <_> + 1 + + 11 50 5 6 + <_> + 3 + + 7 9 6 36 + <_> + 0 + + 13 25 5 7 + <_> + 3 + + 7 20 9 7 + <_> + 9 + + 29 48 1 10 + <_> + 2 + + 6 62 18 1 + <_> + 2 + + 9 49 11 7 + <_> + 5 + + 21 20 1 32 + <_> + 1 + + 11 19 1 4 + <_> + 1 + + 14 10 12 9 + <_> + 1 + + 12 24 6 2 + <_> + 4 + + 15 36 4 1 + <_> + 0 + + 16 31 11 7 + <_> + 4 + + 8 41 17 1 + <_> + 2 + + 11 11 12 6 + <_> + 7 + + 15 6 2 23 + <_> + 3 + + 16 3 13 48 + <_> + 1 + + 13 54 6 3 + <_> + 1 + + 11 19 11 1 + <_> + 7 + + 0 49 9 8 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 15 17 2 5 + <_> + 8 + + 3 1 9 18 + <_> + 5 + + 8 56 19 4 + <_> + 1 + + 14 54 6 8 + <_> + 2 + + 19 52 10 6 + <_> + 4 + + 8 59 20 3 + <_> + 0 + + 18 51 12 9 + <_> + 4 + + 13 8 10 5 + <_> + 5 + + 26 35 3 2 + <_> + 0 + + 11 36 11 12 + <_> + 2 + + 19 18 4 13 + <_> + 4 + + 15 40 14 10 + <_> + 0 + + 10 57 7 3 + <_> + 2 + + 7 30 6 5 + <_> + 7 + + 2 61 22 2 + <_> + 0 + + 26 42 3 15 + <_> + 7 + + 12 5 7 12 + <_> + 5 + + 19 17 10 6 + <_> + 7 + + 16 11 1 1 + <_> + 4 + + 10 18 16 5 + <_> + 3 + + 10 8 1 50 + <_> + 9 + + 18 40 1 7 + <_> + 2 + + 14 25 3 9 + <_> + 8 + + 14 9 6 8 + <_> + 5 + + 22 39 2 10 + <_> + 8 + + 16 1 1 6 + <_> + 0 + + 17 19 2 2 + <_> + 2 + + 17 9 3 11 + <_> + 9 + + 16 18 2 1 + <_> + 8 + + 12 12 8 3 + <_> + 5 + + 1 57 29 5 + <_> + 8 + + 10 53 12 7 + <_> + 1 + + 13 20 1 4 + <_> + 1 + + 15 53 7 4 + <_> + 0 + + 11 49 11 2 + <_> + 0 + + 29 43 2 17 + <_> + 0 + + 11 51 16 4 + <_> + 7 + + 25 51 2 6 + <_> + 2 + + 18 56 9 3 + <_> + 2 + + 8 49 16 5 + <_> + 4 + + 0 42 26 1 + <_> + 4 + + 2 16 11 24 + <_> + 1 + + 3 11 17 6 + <_> + 3 + + 11 6 8 10 + <_> + 0 + + 6 44 2 18 + <_> + 0 + + 1 7 12 21 + <_> + 9 + + 14 20 3 17 + <_> + 9 + + 14 0 10 7 + <_> + 1 + + 2 1 27 2 + <_> + 9 + + 14 18 3 9 + <_> + 4 + + 13 42 8 1 + <_> + 7 + + 28 3 2 22 + <_> + 3 + + 9 52 6 2 + <_> + 3 + + 6 11 9 11 + <_> + 1 + + 15 36 2 5 + <_> + 0 + + 18 21 2 5 + <_> + 1 + + 15 52 2 5 + <_> + 7 + + 15 62 3 1 + <_> + 5 + + 6 1 21 2 + <_> + 5 + + 20 12 4 28 + <_> + 2 + + 21 7 3 27 + <_> + 5 + + 25 10 6 50 + <_> + 0 + + 13 33 1 8 + <_> + 3 + + 4 26 10 17 + <_> + 2 + + 10 18 7 4 + <_> + 7 + + 11 9 17 11 + <_> + 7 + + 24 46 1 15 + <_> + 0 + + 13 35 3 16 + <_> + 4 + + 0 61 26 2 + <_> + 0 + + 10 58 16 4 + <_> + 3 + + 0 56 27 2 + <_> + 0 + + 11 42 11 2 + <_> + 8 + + 12 12 8 3 + <_> + 4 + + 18 8 3 19 + <_> + 8 + + 29 36 1 20 + <_> + 8 + + 14 9 6 8 + <_> + 9 + + 14 60 3 1 + <_> + 1 + + 18 17 2 9 + <_> + 9 + + 10 37 8 9 + <_> + 1 + + 8 56 21 1 + <_> + 3 + + 1 56 22 4 + <_> + 3 + + 7 50 11 6 + <_> + 5 + + 2 60 29 3 + <_> + 9 + + 11 57 11 3 + <_> + 1 + + 15 33 5 21 + <_> + 9 + + 13 16 6 7 + <_> + 1 + + 13 5 6 12 + <_> + 2 + + 13 26 8 4 + <_> + 4 + + 29 4 2 13 + <_> + 5 + + 17 9 5 10 + <_> + 0 + + 0 39 6 19 + <_> + 5 + + 14 24 3 4 + <_> + 2 + + 7 39 14 1 + <_> + 5 + + 27 14 2 35 + <_> + 8 + + 3 62 28 1 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 4 0 26 8 + <_> + 5 + + 9 8 13 9 + <_> + 2 + + 4 45 5 2 + <_> + 2 + + 9 28 5 14 + <_> + 7 + + 8 60 16 2 + <_> + 7 + + 17 30 3 4 + <_> + 7 + + 21 32 5 5 + <_> + 2 + + 16 17 8 9 + <_> + 2 + + 17 34 2 2 + <_> + 5 + + 19 16 10 22 + <_> + 4 + + 24 54 6 9 + <_> + 1 + + 10 53 20 9 + <_> + 5 + + 0 34 7 26 + <_> + 4 + + 0 58 22 5 + <_> + 1 + + 7 17 16 22 + <_> + 7 + + 0 51 9 4 + <_> + 3 + + 21 50 2 4 + <_> + 3 + + 10 21 1 13 + <_> + 7 + + 15 7 6 6 + <_> + 3 + + 13 26 4 9 + <_> + 0 + + 7 45 20 4 + <_> + 1 + + 22 5 1 54 + <_> + 1 + + 11 8 12 1 + <_> + 2 + + 8 57 15 2 + <_> + 4 + + 16 40 11 14 + <_> + 9 + + 15 18 6 4 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 16 11 7 3 + <_> + 8 + + 20 9 1 7 + <_> + 1 + + 3 55 22 2 + <_> + 0 + + 17 17 3 2 + <_> + 3 + + 6 0 11 27 + <_> + 4 + + 12 4 11 22 + <_> + 1 + + 13 14 13 3 + <_> + 0 + + 10 62 14 1 + <_> + 0 + + 14 19 3 6 + <_> + 2 + + 11 4 8 13 + <_> + 2 + + 17 37 2 17 + <_> + 4 + + 12 47 11 1 + <_> + 2 + + 6 55 15 7 + <_> + 9 + + 28 22 1 2 + <_> + 2 + + 9 32 2 23 + <_> + 8 + + 11 13 5 1 + <_> + 2 + + 4 38 3 21 + <_> + 7 + + 14 12 1 28 + <_> + 9 + + 13 36 5 11 + <_> + 2 + + 5 11 17 8 + <_> + 1 + + 15 53 7 4 + <_> + 0 + + 16 45 5 1 + <_> + 1 + + 12 46 8 2 + <_> + 7 + + 24 49 2 2 + <_> + 3 + + 15 25 3 7 + <_> + 5 + + 16 16 14 9 + <_> + 1 + + 18 20 3 7 + <_> + 7 + + 6 53 18 2 + <_> + 1 + + 7 19 18 3 + <_> + 1 + + 16 10 6 6 + <_> + 5 + + 10 29 1 33 + <_> + 5 + + 9 56 22 5 + <_> + 8 + + 17 13 2 4 + <_> + 8 + + 23 10 2 9 + <_> + 8 + + 8 7 1 8 + <_> + 9 + + 12 21 2 27 + <_> + 9 + + 9 2 19 11 + <_> + 1 + + 7 38 11 1 + <_> + 3 + + 4 14 6 18 + <_> + 7 + + 24 7 1 8 + <_> + 1 + + 20 46 11 8 + <_> + 2 + + 5 39 14 16 + <_> + 7 + + 9 3 7 9 + <_> + 0 + + 5 47 1 7 + <_> + 1 + + 13 21 6 2 + <_> + 5 + + 16 10 6 3 + <_> + 2 + + 11 12 12 2 + <_> + 5 + + 6 0 24 1 + <_> + 5 + + 2 18 22 3 + <_> + 9 + + 17 16 3 18 + <_> + 0 + + 14 32 2 3 + <_> + 2 + + 10 34 5 3 + <_> + 2 + + 14 25 3 9 + <_> + 1 + + 6 54 8 4 + <_> + 5 + + 4 31 15 5 + <_> + 0 + + 29 44 1 17 + <_> + 2 + + 11 41 10 2 + <_> + 5 + + 21 13 3 42 + <_> + 2 + + 1 24 30 23 + <_> + 4 + + 6 39 14 11 + <_> + 2 + + 11 59 20 3 + <_> + 9 + + 30 47 1 2 + <_> + 3 + + 5 48 13 6 + <_> + 1 + + 5 41 21 7 + <_> + 1 + + 26 8 2 22 + <_> + 5 + + 9 61 18 2 + <_> + 2 + + 9 22 16 24 + <_> + 4 + + 9 18 5 8 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 23 9 7 8 + <_> + 9 + + 12 10 6 43 + <_> + 9 + + 11 14 11 9 + <_> + 9 + + 6 9 20 2 + <_> + 3 + + 24 44 1 17 + <_> + 1 + + 4 1 23 5 + <_> + 2 + + 17 3 4 15 + <_> + 9 + + 11 1 18 2 + <_> + 8 + + 16 2 2 4 + <_> + 7 + + 5 10 10 3 + <_> + 0 + + 0 48 3 7 + <_> + 0 + + 12 10 11 6 + <_> + 7 + + 16 11 1 1 + <_> + 8 + + 14 12 3 4 + <_> + 1 + + 19 20 3 15 + <_> + 5 + + 15 20 15 4 + <_> + 5 + + 19 19 4 43 + <_> + 1 + + 13 54 6 3 + <_> + 4 + + 13 36 3 4 + <_> + 1 + + 6 44 20 9 + <_> + 7 + + 5 49 4 6 + <_> + 8 + + 17 41 13 22 + <_> + 5 + + 12 56 14 7 + <_> + 4 + + 14 8 5 1 + <_> + 7 + + 12 0 9 1 + <_> + 2 + + 19 61 1 1 + <_> + 0 + + 12 51 10 3 + <_> + 0 + + 4 4 23 4 + <_> + 5 + + 13 30 4 1 + <_> + 3 + + 2 18 12 10 + <_> + 7 + + 15 8 16 6 + <_> + 0 + + 2 53 9 7 + <_> + 7 + + 4 62 23 1 + <_> + 1 + + 13 20 1 4 + <_> + 0 + + 11 26 13 22 + <_> + 4 + + 8 14 3 16 + <_> + 0 + + 21 28 1 3 + <_> + 1 + + 17 34 3 18 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 30 22 1 2 + <_> + 8 + + 3 13 3 3 + <_> + 9 + + 12 29 7 19 + <_> + 8 + + 12 11 8 1 + <_> + 3 + + 2 56 24 1 + <_> + 7 + + 19 60 11 1 + <_> + 0 + + 26 42 3 15 + <_> + 5 + + 21 18 2 12 + <_> + 4 + + 4 43 26 1 + <_> + 0 + + 12 50 14 5 + <_> + 8 + + 13 17 5 3 + <_> + 0 + + 17 18 3 1 + <_> + 5 + + 19 8 4 10 + <_> + 4 + + 0 61 26 2 + <_> + 1 + + 14 53 3 9 + <_> + 7 + + 8 36 1 1 + <_> + 4 + + 26 30 3 30 + <_> + 2 + + 9 37 14 13 + <_> + 3 + + 0 20 2 43 + <_> + 4 + + 10 8 14 4 + <_> + 2 + + 19 61 7 2 + <_> + 2 + + 9 47 8 9 + <_> + 3 + + 10 4 1 53 + <_> + 5 + + 13 3 2 38 + <_> + 0 + + 11 7 4 10 + <_> + 9 + + 30 17 1 2 + <_> + 2 + + 17 13 6 14 + <_> + 7 + + 14 25 4 5 + <_> + 1 + + 11 22 11 2 + <_> + 7 + + 23 53 4 1 + <_> + 8 + + 2 4 19 15 + <_> + 5 + + 2 59 24 1 + <_> + 0 + + 13 18 3 1 + <_> + 3 + + 8 21 5 11 + <_> + 9 + + 12 28 8 8 + <_> + 8 + + 17 13 2 4 + <_> + 2 + + 16 45 3 6 + <_> + 8 + + 17 50 6 8 + <_> + 1 + + 7 21 21 1 + <_> + 3 + + 11 2 17 33 + <_> + 2 + + 30 27 1 34 + <_> + 5 + + 12 29 1 16 + <_> + 5 + + 19 42 5 5 + <_> + 7 + + 0 51 4 4 + <_> + 7 + + 16 11 1 1 + <_> + 0 + + 6 58 23 1 + <_> + 3 + + 7 8 15 28 + <_> + 1 + + 15 8 4 8 + <_> + 0 + + 13 24 3 7 + <_> + 1 + + 15 53 7 4 + <_> + 1 + + 11 19 1 18 + <_> + 1 + + 7 27 8 3 + <_> + 2 + + 11 39 19 6 + <_> + 5 + + 26 30 2 12 + <_> + 5 + + 13 9 8 6 + <_> + 9 + + 29 2 1 7 + <_> + 2 + + 19 39 2 3 + <_> + 0 + + 15 40 15 2 + <_> + 9 + + 16 17 2 6 + <_> + 5 + + 12 57 6 3 + <_> + 1 + + 11 39 7 24 + <_> + 1 + + 9 56 16 1 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 16 12 1 5 + <_> + 8 + + 27 61 2 1 + <_> + 7 + + 2 55 28 3 + <_> + 4 + + 12 45 6 6 + <_> + 1 + + 8 45 5 12 + <_> + 7 + + 16 34 2 4 + <_> + 2 + + 2 50 5 1 + <_> + 5 + + 13 47 8 8 + <_> + 5 + + 21 56 5 5 + <_> + 5 + + 19 56 3 7 + <_> + 1 + + 11 19 11 1 + <_> + 3 + + 10 20 11 6 + <_> + 9 + + 23 23 1 9 + <_> + 5 + + 17 25 10 18 + <_> + 7 + + 7 23 3 8 + <_> + 3 + + 14 34 5 5 + <_> + 3 + + 10 8 1 50 + <_> + 8 + + 1 32 8 15 + <_> + 7 + + 14 59 4 1 + <_> + 3 + + 20 38 2 11 + <_> + 7 + + 0 4 22 6 + <_> + 0 + + 6 20 7 11 + <_> + 4 + + 14 8 5 1 + <_> + 5 + + 0 42 11 13 + <_> + 4 + + 10 9 3 28 + <_> + 0 + + 13 43 9 4 + <_> + 7 + + 18 2 4 4 + <_> + 4 + + 18 39 1 2 + <_> + 4 + + 14 8 6 11 + <_> + 5 + + 13 40 2 8 + <_> + 1 + + 13 21 6 2 + <_> + 8 + + 14 12 3 4 + <_> + 2 + + 17 39 3 7 + <_> + 8 + + 14 17 4 2 + <_> + 2 + + 12 58 15 2 + <_> + 2 + + 9 43 7 12 + <_> + 7 + + 17 25 1 5 + <_> + 4 + + 12 41 9 2 + <_> + 2 + + 17 3 4 15 + <_> + 7 + + 28 28 3 3 + <_> + 0 + + 25 44 5 3 + <_> + 0 + + 17 35 8 8 + <_> + 9 + + 17 32 1 5 + <_> + 9 + + 29 1 1 5 + <_> + 1 + + 13 55 3 2 + <_> + 5 + + 10 5 18 31 + <_> + 4 + + 3 18 3 44 + <_> + 2 + + 3 56 15 7 + <_> + 7 + + 30 44 1 13 + <_> + 1 + + 8 6 15 1 + <_> + 2 + + 11 0 8 24 + <_> + 5 + + 13 15 2 10 + <_> + 1 + + 10 15 13 1 + <_> + 4 + + 11 12 7 4 + <_> + 7 + + 10 10 20 2 + <_> + 7 + + 22 51 7 4 + <_> + 5 + + 14 17 6 8 + <_> + 4 + + 15 36 4 1 + <_> + 1 + + 11 53 10 4 + <_> + 1 + + 18 21 6 5 + <_> + 7 + + 6 57 4 1 + <_> + 2 + + 17 17 4 10 + <_> + 2 + + 13 18 1 1 + <_> + 0 + + 10 54 5 4 + <_> + 7 + + 0 29 17 13 + <_> + 2 + + 8 46 12 8 + <_> + 2 + + 7 10 3 26 + <_> + 1 + + 30 38 1 18 + <_> + 2 + + 16 60 14 1 + <_> + 1 + + 2 43 1 8 + <_> + 2 + + 9 36 21 9 + <_> + 7 + + 4 47 18 2 + <_> + 7 + + 6 46 1 5 + <_> + 2 + + 5 37 2 11 + <_> + 1 + + 11 46 1 14 + <_> + 1 + + 26 8 5 20 + <_> + 2 + + 16 14 2 8 + <_> + 2 + + 11 12 12 2 + <_> + 8 + + 16 12 1 5 + <_> + 8 + + 6 54 15 4 + <_> + 2 + + 8 52 16 4 + <_> + 7 + + 18 40 4 7 + <_> + 3 + + 0 56 27 2 + <_> + 1 + + 5 31 15 18 + <_> + 9 + + 16 18 2 1 + <_> + 7 + + 4 59 24 1 + <_> + 5 + + 1 57 15 3 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 0 4 6 27 + <_> + 5 + + 29 19 2 43 + <_> + 2 + + 15 22 5 6 + <_> + 5 + + 18 48 11 7 + <_> + 0 + + 27 48 4 13 + <_> + 3 + + 6 4 20 1 + <_> + 0 + + 12 10 11 6 + <_> + 4 + + 3 41 23 14 + <_> + 7 + + 27 4 4 14 + <_> + 1 + + 10 52 10 5 + <_> + 9 + + 29 61 2 1 + <_> + 7 + + 14 25 4 3 + <_> + 1 + + 1 5 15 13 + <_> + 2 + + 19 35 2 3 + <_> + 4 + + 5 18 23 5 + <_> + 9 + + 15 18 6 4 + <_> + 9 + + 23 14 8 17 + <_> + 8 + + 12 8 6 28 + <_> + 8 + + 25 13 3 6 + <_> + 8 + + 14 9 6 8 + <_> + 4 + + 20 3 6 52 + <_> + 3 + + 5 49 21 4 + <_> + 1 + + 12 40 6 6 + <_> + 2 + + 11 54 20 9 + <_> + 0 + + 13 36 9 8 + <_> + 1 + + 10 62 13 1 + <_> + 0 + + 12 24 15 39 + <_> + 5 + + 14 9 9 4 + <_> + 0 + + 1 21 2 33 + <_> + 2 + + 28 7 3 23 + <_> + 1 + + 14 53 10 4 + <_> + 3 + + 29 42 2 9 + <_> + 4 + + 13 35 9 27 + <_> + 5 + + 18 19 6 5 + <_> + 0 + + 17 22 12 12 + <_> + 0 + + 17 19 2 2 + <_> + 0 + + 0 42 19 11 + <_> + 5 + + 19 56 6 4 + <_> + 7 + + 8 49 2 1 + <_> + 1 + + 13 5 6 12 + <_> + 5 + + 3 22 18 15 + <_> + 1 + + 15 21 6 7 + <_> + 2 + + 3 16 19 29 + <_> + 5 + + 13 15 5 40 + <_> + 3 + + 16 32 3 10 + <_> + 8 + + 17 11 1 2 + <_> + 9 + + 10 29 5 20 + <_> + 8 + + 18 34 3 11 + <_> + 9 + + 26 47 2 4 + <_> + 1 + + 8 18 1 4 + <_> + 3 + + 21 43 4 11 + <_> + 3 + + 8 9 9 4 + <_> + 7 + + 9 37 13 16 + <_> + 3 + + 5 56 17 2 + <_> + 3 + + 11 53 9 1 + <_> + 4 + + 10 39 2 12 + <_> + 1 + + 8 52 2 4 + <_> + 3 + + 0 20 2 43 + <_> + 3 + + 6 37 15 10 + <_> + 5 + + 19 22 6 3 + <_> + 5 + + 15 0 15 30 + <_> + 0 + + 21 30 7 8 + <_> + 5 + + 19 19 4 32 + <_> + 3 + + 21 45 1 10 + <_> + 0 + + 15 51 5 4 + <_> + 8 + + 14 12 3 4 + <_> + 7 + + 16 11 1 1 + <_> + 7 + + 1 44 17 16 + <_> + 2 + + 18 13 2 12 + <_> + 0 + + 17 18 3 1 + <_> + 1 + + 11 55 7 5 + <_> + 2 + + 13 58 2 5 + <_> + 3 + + 10 15 1 42 + <_> + 5 + + 0 25 5 15 + <_> + 9 + + 16 17 2 6 + <_> + 2 + + 8 54 23 5 + <_> + 4 + + 15 36 4 1 + <_> + 1 + + 7 48 24 2 + <_> + 5 + + 14 5 7 10 + <_> + 0 + + 2 44 14 6 + <_> + 8 + + 17 13 2 4 + <_> + 8 + + 23 43 3 7 + <_> + 8 + + 13 12 1 9 + <_> + 3 + + 2 46 4 5 + <_> + 5 + + 21 2 1 52 + <_> + 3 + + 11 5 17 4 + <_> + 7 + + 22 57 3 1 + <_> + 4 + + 10 20 21 4 + <_> + 5 + + 12 57 18 3 + <_> + 9 + + 10 4 6 11 + <_> + 0 + + 13 45 3 4 + <_> + 1 + + 13 54 6 3 + <_> + 4 + + 8 45 18 1 + <_> + 4 + + 12 42 8 8 + <_> + 1 + + 5 50 11 4 + <_> + 9 + + 14 16 5 33 + <_> + 8 + + 15 10 13 52 + <_> + 3 + + 15 9 15 1 + <_> + 8 + + 27 61 1 1 + <_> + 9 + + 27 0 1 12 + <_> + 2 + + 14 16 4 5 + <_> + 9 + + 14 10 2 16 + <_> + 3 + + 8 11 6 20 + <_> + 7 + + 24 19 1 9 + <_> + 0 + + 14 43 6 2 + <_> + 1 + + 12 15 1 26 + <_> + 1 + + 8 6 15 1 + <_> + 0 + + 2 60 27 1 + <_> + 1 + + 2 14 21 2 + <_> + 7 + + 7 23 13 5 + <_> + 4 + + 24 56 2 7 + <_> + 8 + + 11 13 5 1 + <_> + 0 + + 10 42 12 3 + <_> + 8 + + 19 0 1 23 + <_> + 5 + + 9 61 20 2 + <_> + 0 + + 19 50 8 10 + <_> + 1 + + 16 55 9 2 + <_> + 0 + + 13 33 5 4 + <_> + 3 + + 18 27 8 9 + <_> + 3 + + 28 32 3 21 + <_> + 4 + + 15 42 4 4 + <_> + 2 + + 16 2 8 16 + <_> + 2 + + 7 2 1 47 + <_> + 7 + + 21 61 10 2 + <_> + 2 + + 29 31 2 32 + <_> + 8 + + 17 11 1 2 + <_> + 9 + + 11 19 9 1 + <_> + 9 + + 30 15 1 43 + <_> + 9 + + 24 34 1 4 + <_> + 2 + + 7 51 11 5 + <_> + 0 + + 22 42 1 11 + <_> + 5 + + 3 62 20 1 + <_> + 1 + + 7 20 11 3 + <_> + 3 + + 2 21 9 2 + <_> + 2 + + 25 34 1 18 + <_> + 5 + + 19 14 5 33 + <_> + 7 + + 28 13 1 1 + <_> + 5 + + 1 0 15 44 + <_> + 9 + + 12 32 1 10 + <_> + 7 + + 1 40 14 8 + <_> + 8 + + 12 12 8 3 + <_> + 1 + + 11 8 13 1 + <_> + 0 + + 27 47 1 15 + <_> + 4 + + 8 16 14 7 + <_> + 1 + + 8 55 8 3 + <_> + 0 + + 0 55 28 4 + <_> + 4 + + 7 56 17 4 + <_> + 3 + + 5 13 20 8 + <_> + 1 + + 3 19 4 19 + <_> + 4 + + 13 8 10 5 + <_> + 1 + + 16 18 7 3 + <_> + 4 + + 1 17 26 3 + <_> + 1 + + 11 53 10 4 + <_> + 7 + + 29 2 2 16 + <_> + 2 + + 6 55 21 5 + <_> + 1 + + 29 25 2 3 + <_> + 2 + + 10 50 10 4 + <_> + 4 + + 13 38 2 4 + <_> + 7 + + 24 46 1 9 + <_> + 9 + + 12 17 4 3 + <_> + 9 + + 4 9 6 7 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 9 7 5 1 + <_> + 7 + + 27 41 2 10 + <_> + 8 + + 11 16 3 4 + <_> + 5 + + 14 29 5 7 + <_> + 3 + + 9 24 2 33 + <_> + 5 + + 23 27 4 10 + <_> + 8 + + 3 10 28 46 + <_> + 0 + + 23 46 2 5 + <_> + 5 + + 15 8 9 19 + <_> + 4 + + 10 13 14 37 + <_> + 0 + + 4 57 23 3 + <_> + 1 + + 4 42 26 1 + <_> + 1 + + 15 53 7 4 + <_> + 1 + + 5 61 24 1 + <_> + 4 + + 14 49 7 12 + <_> + 0 + + 11 49 11 2 + <_> + 7 + + 14 10 3 2 + <_> + 1 + + 13 8 3 11 + <_> + 1 + + 11 41 4 9 + <_> + 5 + + 21 2 1 52 + <_> + 1 + + 14 32 9 6 + <_> + 2 + + 10 55 15 5 + <_> + 1 + + 11 28 20 29 + <_> + 1 + + 7 22 20 24 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 15 16 2 10 + <_> + 9 + + 13 8 5 13 + <_> + 3 + + 1 49 18 7 + <_> + 1 + + 11 21 14 3 + <_> + 2 + + 11 4 8 13 + <_> + 9 + + 16 39 4 1 + <_> + 9 + + 16 11 3 3 + <_> + 9 + + 16 13 3 15 + <_> + 5 + + 10 0 13 3 + <_> + 3 + + 12 52 19 7 + <_> + 8 + + 8 45 12 3 + <_> + 0 + + 12 10 11 6 + <_> + 3 + + 19 42 9 13 + <_> + 5 + + 15 57 10 3 + <_> + 0 + + 17 51 7 5 + <_> + 1 + + 12 24 6 2 + <_> + 7 + + 11 61 3 1 + <_> + 1 + + 8 18 15 8 + <_> + 4 + + 15 13 6 5 + <_> + 3 + + 17 16 6 25 + <_> + 4 + + 15 42 4 5 + <_> + 4 + + 16 25 12 21 + <_> + 4 + + 11 37 3 11 + <_> + 8 + + 14 9 6 8 + <_> + 1 + + 27 49 4 6 + <_> + 8 + + 30 12 1 20 + <_> + 2 + + 0 21 1 6 + <_> + 3 + + 7 15 10 11 + <_> + 4 + + 15 36 4 1 + <_> + 1 + + 21 2 3 7 + <_> + 1 + + 15 8 4 8 + <_> + 9 + + 28 2 3 1 + <_> + 7 + + 15 10 13 4 + <_> + 1 + + 15 52 2 5 + <_> + 4 + + 8 34 11 3 + <_> + 0 + + 14 28 5 5 + <_> + 0 + + 14 30 9 27 + <_> + 1 + + 16 7 4 26 + <_> + 3 + + 28 45 3 16 + <_> + 0 + + 14 49 16 5 + <_> + 0 + + 11 15 1 41 + <_> + 0 + + 6 50 6 10 + <_> + 1 + + 11 22 11 2 + <_> + 3 + + 30 60 1 2 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 17 16 5 2 + <_> + 9 + + 7 35 11 6 + <_> + 2 + + 11 39 19 6 + <_> + 3 + + 18 40 5 17 + <_> + 5 + + 12 52 7 10 + <_> + 3 + + 3 47 24 8 + <_> + 3 + + 0 22 5 24 + <_> + 3 + + 22 43 5 10 + <_> + 1 + + 9 54 5 6 + <_> + 2 + + 13 62 8 1 + <_> + 4 + + 12 5 9 15 + <_> + 4 + + 18 14 3 38 + <_> + 2 + + 17 3 4 15 + <_> + 5 + + 6 4 23 2 + <_> + 9 + + 9 19 12 2 + <_> + 9 + + 5 10 24 2 + <_> + 8 + + 15 17 2 35 + <_> + 0 + + 3 43 1 9 + <_> + 7 + + 7 50 3 3 + <_> + 5 + + 15 29 5 3 + <_> + 0 + + 20 25 7 10 + <_> + 7 + + 16 11 1 1 + <_> + 0 + + 0 23 28 17 + <_> + 7 + + 6 60 21 3 + <_> + 1 + + 10 30 15 2 + <_> + 5 + + 21 57 3 6 + <_> + 8 + + 17 13 2 4 + <_> + 8 + + 13 14 1 3 + <_> + 8 + + 5 54 18 3 + <_> + 2 + + 7 51 11 5 + <_> + 8 + + 1 0 19 6 + <_> + 1 + + 17 20 6 5 + <_> + 4 + + 13 44 1 4 + <_> + 8 + + 12 12 8 3 + <_> + 2 + + 18 41 2 10 + <_> + 8 + + 2 61 3 1 + <_> + 9 + + 18 2 1 50 + <_> + 9 + + 0 60 16 3 + <_> + 2 + + 19 25 10 2 + <_> + 7 + + 3 23 5 13 + <_> + 2 + + 14 23 3 6 + <_> + 9 + + 28 46 2 2 + <_> + 9 + + 8 50 5 6 + <_> + 2 + + 10 2 10 28 + <_> + 8 + + 16 12 1 5 + <_> + 2 + + 11 41 10 2 + <_> + 5 + + 20 0 2 32 + <_> + 5 + + 4 55 17 8 + <_> + 0 + + 21 0 8 3 + <_> + 3 + + 8 22 5 2 + <_> + 5 + + 14 9 9 4 + <_> + 7 + + 14 0 12 1 + <_> + 7 + + 20 58 4 1 + <_> + 2 + + 26 47 1 4 + <_> + 1 + + 2 55 27 1 + <_> + 2 + + 19 35 2 3 + <_> + 1 + + 9 13 7 27 + <_> + 3 + + 12 5 1 19 + <_> + 1 + + 12 15 1 26 + <_> + 2 + + 11 16 2 2 + <_> + 7 + + 13 12 10 1 + <_> + 0 + + 21 20 1 12 + <_> + 8 + + 0 62 15 1 + <_> + 8 + + 12 11 8 1 + <_> + 7 + + 11 60 6 1 + <_> + 8 + + 20 4 1 4 + <_> + 3 + + 11 62 9 1 + <_> + 0 + + 16 18 2 1 + <_> + 7 + + 2 62 13 1 + <_> + 9 + + 27 61 4 1 + <_> + 1 + + 13 5 6 12 + <_> + 4 + + 11 40 8 11 + <_> + 3 + + 10 15 1 42 + <_> + 3 + + 0 13 15 37 + <_> + 0 + + 8 50 2 5 + <_> + 3 + + 9 42 10 10 + <_> + 9 + + 15 17 2 5 + <_> + 8 + + 14 12 3 4 + <_> + 1 + + 8 18 1 4 + <_> + 2 + + 21 56 3 6 + <_> + 1 + + 5 56 21 1 + <_> + 5 + + 1 25 5 24 + <_> + 5 + + 10 56 3 1 + <_> + 4 + + 0 17 15 7 + <_> + 7 + + 26 33 1 6 + <_> + 4 + + 10 18 16 5 + <_> + 2 + + 20 15 4 11 + <_> + 0 + + 19 17 3 7 + <_> + 5 + + 18 1 10 22 + <_> + 5 + + 18 16 8 12 + <_> + 5 + + 22 19 1 13 + <_> + 3 + + 17 29 2 10 + <_> + 4 + + 15 36 4 1 + <_> + 1 + + 8 51 17 4 + <_> + 7 + + 0 52 28 10 + <_> + 2 + + 14 16 8 3 + <_> + 7 + + 14 25 4 3 + <_> + 7 + + 27 12 1 8 + <_> + 0 + + 11 36 14 16 + <_> + 7 + + 30 21 1 11 + <_> + 0 + + 25 39 2 8 + <_> + 9 + + 0 1 24 1 + <_> + 0 + + 7 57 21 1 + <_> + 0 + + 9 5 2 13 + <_> + 2 + + 6 52 15 3 + <_> + 9 + + 24 44 2 1 + <_> + 4 + + 2 61 4 2 + <_> + 5 + + 19 54 3 3 + <_> + 5 + + 19 48 6 8 + <_> + 9 + + 15 37 5 11 + <_> + 0 + + 4 46 2 7 + <_> + 3 + + 4 23 7 6 + <_> + 4 + + 13 8 8 9 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 16 8 1 17 + <_> + 8 + + 14 17 4 2 + <_> + 1 + + 14 46 4 4 + <_> + 5 + + 7 60 20 1 + <_> + 2 + + 7 39 16 11 + <_> + 1 + + 13 21 3 2 + <_> + 1 + + 17 9 5 12 + <_> + 1 + + 9 56 8 1 + <_> + 5 + + 30 46 1 14 + <_> + 0 + + 10 37 20 2 + <_> + 0 + + 12 26 3 14 + <_> + 0 + + 13 33 1 8 + <_> + 1 + + 14 53 3 9 + <_> + 9 + + 16 15 1 22 + <_> + 8 + + 14 12 3 4 + <_> + 1 + + 11 19 11 1 + <_> + 5 + + 17 9 5 10 + <_> + 8 + + 9 3 8 2 + <_> + 8 + + 12 11 8 1 + <_> + 5 + + 26 42 3 19 + <_> + 0 + + 12 10 11 6 + <_> + 4 + + 14 41 12 19 + <_> + 4 + + 13 40 4 6 + <_> + 7 + + 6 55 7 2 + <_> + 8 + + 18 54 12 3 + <_> + 2 + + 1 38 25 11 + <_> + 7 + + 4 0 21 42 + <_> + 0 + + 12 0 8 11 + <_> + 4 + + 14 23 4 11 + <_> + 0 + + 18 21 2 5 + <_> + 5 + + 19 21 10 1 + <_> + 9 + + 12 0 2 12 + <_> + 7 + + 12 60 7 2 + <_> + 2 + + 26 45 3 1 + <_> + 3 + + 4 30 21 5 + <_> + 2 + + 6 57 23 2 + <_> + 5 + + 15 50 6 5 + <_> + 1 + + 23 44 2 7 + <_> + 1 + + 21 27 5 30 + <_> + 1 + + 15 55 2 1 + <_> + 9 + + 0 16 24 45 + <_> + 2 + + 11 11 12 6 + <_> + 7 + + 4 30 2 10 + <_> + 2 + + 23 8 2 10 + <_> + 4 + + 10 21 2 5 + <_> + 1 + + 6 0 14 28 + <_> + 3 + + 6 38 3 12 + <_> + 0 + + 0 48 3 7 + <_> + 9 + + 12 14 3 12 + <_> + 0 + + 13 8 7 8 + <_> + 3 + + 11 41 14 17 + <_> + 0 + + 12 50 16 6 + <_> + 3 + + 15 47 7 11 + <_> + 3 + + 4 56 15 3 + <_> + 4 + + 11 46 10 4 + <_> + 0 + + 13 36 9 8 + <_> + 8 + + 16 8 1 17 + <_> + 9 + + 15 18 3 6 + <_> + 3 + + 14 34 5 5 + <_> + 3 + + 6 23 7 8 + <_> + 3 + + 11 26 6 3 + <_> + 0 + + 12 19 9 11 + <_> + 8 + + 19 41 2 1 + <_> + 8 + + 18 11 9 24 + <_> + 3 + + 15 28 2 3 + <_> + 3 + + 7 50 11 6 + <_> + 4 + + 20 6 5 10 + <_> + 4 + + 14 1 7 21 + <_> + 1 + + 16 54 2 4 + <_> + 9 + + 28 48 1 7 + <_> + 4 + + 14 56 7 4 + <_> + 5 + + 19 9 3 41 + <_> + 9 + + 0 52 14 9 + <_> + 2 + + 18 54 10 7 + <_> + 9 + + 11 8 8 49 + <_> + 8 + + 11 13 5 1 + <_> + 8 + + 29 12 2 9 + <_> + 7 + + 28 4 3 24 + <_> + 9 + + 12 17 4 3 + <_> + 0 + + 14 43 6 2 + <_> + 0 + + 11 7 4 10 + <_> + 0 + + 12 1 2 5 + <_> + 1 + + 12 24 6 2 + <_> + 5 + + 19 14 5 7 + <_> + 7 + + 14 10 3 2 + <_> + 2 + + 19 30 1 8 + <_> + 7 + + 20 61 1 1 + <_> + 5 + + 1 57 29 5 + <_> + 8 + + 16 51 6 9 + <_> + 2 + + 7 51 13 5 + <_> + 4 + + 16 19 4 2 + <_> + 1 + + 15 33 5 21 + <_> + 1 + + 20 19 3 2 + <_> + 5 + + 8 31 4 27 + <_> + 8 + + 17 11 1 2 + <_> + 1 + + 26 8 5 20 + <_> + 0 + + 6 3 21 5 + <_> + 0 + + 9 33 15 6 + <_> + 1 + + 14 56 14 1 + <_> + 2 + + 7 59 2 2 + <_> + 4 + + 2 54 12 8 + <_> + 0 + + 13 25 5 7 + <_> + 3 + + 7 20 9 7 + <_> + 2 + + 10 42 13 9 + <_> + 1 + + 29 36 1 3 + <_> + 3 + + 22 2 4 31 + <_> + 0 + + 19 32 4 15 + <_> + 0 + + 17 18 3 1 + <_> + 3 + + 0 47 1 7 + <_> + 8 + + 16 12 1 5 + <_> + 2 + + 8 56 9 7 + <_> + 2 + + 0 38 24 20 + <_> + 9 + + 17 31 1 6 + <_> + 9 + + 14 59 1 2 + <_> + 4 + + 17 38 1 4 + <_> + 0 + + 12 10 11 6 + <_> + 1 + + 13 21 6 2 + <_> + 7 + + 3 10 26 10 + <_> + 0 + + 7 12 14 35 + <_> + 3 + + 20 42 2 6 + <_> + 0 + + 10 43 6 5 + <_> + 1 + + 10 55 14 1 + <_> + 8 + + 9 48 13 13 + <_> + 8 + + 17 11 1 2 + <_> + 8 + + 9 57 12 5 + <_> + 5 + + 6 1 21 2 + <_> + 5 + + 17 9 5 10 + <_> + 9 + + 9 43 12 1 + <_> + 3 + + 24 46 7 7 + <_> + 4 + + 29 29 2 8 + <_> + 5 + + 17 9 5 10 + <_> + 1 + + 10 53 15 5 + <_> + 5 + + 4 62 16 1 + <_> + 4 + + 25 52 4 8 + <_> + 0 + + 11 52 17 4 + <_> + 4 + + 9 0 1 43 + <_> + 5 + + 11 34 2 3 + <_> + 2 + + 9 41 11 1 + <_> + 4 + + 9 61 13 2 + <_> + 3 + + 28 25 1 34 + <_> + 2 + + 19 26 7 1 + <_> + 3 + + 8 18 8 1 + <_> + 5 + + 2 35 19 26 + <_> + 3 + + 15 25 3 7 + <_> + 5 + + 25 23 3 9 + <_> + 0 + + 14 41 1 18 + <_> + 2 + + 12 58 15 2 + <_> + 7 + + 26 60 3 3 + <_> + 0 + + 24 31 3 15 + <_> + 7 + + 5 7 6 10 + <_> + 1 + + 12 8 8 4 + <_> + 5 + + 20 42 4 11 + <_> + 1 + + 16 5 8 2 + <_> + 7 + + 15 6 2 12 + <_> + 9 + + 12 1 19 1 + <_> + 9 + + 10 16 4 32 + <_> + 3 + + 11 41 14 17 + <_> + 8 + + 9 12 10 27 + <_> + 3 + + 8 9 9 4 + <_> + 7 + + 7 2 3 8 + <_> + 1 + + 13 20 1 4 + <_> + 1 + + 13 5 6 12 + <_> + 0 + + 28 19 2 43 + <_> + 4 + + 3 23 1 16 + <_> + 5 + + 18 29 5 25 + <_> + 2 + + 25 55 5 8 + <_> + 4 + + 11 34 11 14 + <_> + 7 + + 6 59 9 4 + <_> + 5 + + 25 45 3 15 + <_> + 8 + + 14 9 6 8 + <_> + 8 + + 29 28 1 18 + <_> + 5 + + 21 1 5 13 + <_> + 8 + + 19 41 2 1 + <_> + 1 + + 13 54 6 3 + <_> + 9 + + 29 31 1 4 + <_> + 0 + + 5 61 9 2 + <_> + 8 + + 14 12 3 4 + <_> + 7 + + 19 32 1 1 + <_> + 8 + + 5 5 6 15 + <_> + 0 + + 13 49 9 4 + <_> + 4 + + 13 46 4 7 + <_> + 4 + + 14 13 9 7 + <_> + 0 + + 17 18 3 1 + <_> + 3 + + 8 36 16 11 + <_> + 9 + + 14 24 6 10 + <_> + 3 + + 0 54 31 4 + <_> + 1 + + 17 43 4 9 + <_> + 5 + + 20 16 3 22 + <_> + 9 + + 0 48 1 3 + <_> + 8 + + 12 12 8 3 + <_> + 9 + + 14 17 6 39 + <_> + 0 + + 11 42 11 2 + <_> + 2 + + 17 17 1 20 + <_> + 2 + + 0 32 10 15 + <_> + 2 + + 16 57 7 6 + <_> + 5 + + 14 9 13 13 + <_> + 0 + + 13 25 5 7 + <_> + 2 + + 20 17 2 14 + <_> + 3 + + 23 35 3 14 + <_> + 2 + + 16 8 1 24 + <_> + 3 + + 3 19 10 27 + <_> + 1 + + 4 34 25 1 + <_> + 1 + + 6 13 6 23 + <_> + 1 + + 17 16 2 31 + <_> + 2 + + 13 10 13 7 + <_> + 5 + + 10 20 3 33 + <_> + 1 + + 15 52 2 5 + <_> + 2 + + 9 6 17 18 + <_> + 2 + + 30 20 1 11 + <_> + 3 + + 29 7 1 28 + <_> + 7 + + 6 5 20 4 + <_> + 7 + + 6 49 4 2 + <_> + 4 + + 13 7 5 4 + <_> + 3 + + 20 42 2 6 + <_> + 1 + + 12 5 2 49 + <_> + 3 + + 7 9 11 33 + <_> + 7 + + 0 5 22 6 + <_> + 3 + + 3 36 12 1 + <_> + 0 + + 17 33 9 11 + <_> + 0 + + 17 27 5 9 + <_> + 1 + + 16 18 7 3 + <_> + 1 + + 16 55 9 2 + <_> + 4 + + 10 41 8 7 + <_> + 4 + + 11 1 8 16 + <_> + 9 + + 10 6 15 8 + <_> + 2 + + 6 4 24 4 + <_> + 9 + + 9 19 12 2 + <_> + 5 + + 13 8 11 4 + <_> + 0 + + 1 19 2 38 + <_> + 5 + + 14 36 1 8 + <_> + 7 + + 22 53 9 1 + <_> + 5 + + 11 5 4 35 + <_> + 5 + + 18 19 6 5 + <_> + 1 + + 17 33 3 24 + <_> + 2 + + 6 50 11 4 + <_> + 3 + + 8 42 2 4 + <_> + 5 + + 16 57 4 6 + <_> + 8 + + 11 8 11 6 + <_> + 4 + + 9 18 5 8 + <_> + 2 + + 17 40 5 5 + <_> + 9 + + 29 19 1 9 + <_> + 0 + + 24 5 5 16 + <_> + 9 + + 18 35 2 12 + <_> + 9 + + 2 9 5 11 + <_> + 7 + + 24 49 2 4 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 17 13 2 4 + <_> + 8 + + 14 5 1 3 + <_> + 5 + + 10 55 5 4 + <_> + 1 + + 9 52 11 10 + <_> + 0 + + 7 56 19 4 + <_> + 4 + + 9 37 17 1 + <_> + 0 + + 9 33 15 6 + <_> + 5 + + 13 31 1 10 + <_> + 5 + + 20 3 2 24 + <_> + 7 + + 9 43 18 2 + <_> + 7 + + 2 12 18 1 + <_> + 0 + + 14 26 2 3 + <_> + 3 + + 4 26 9 4 + <_> + 0 + + 22 40 4 9 + <_> + 1 + + 9 56 16 1 + <_> + 5 + + 5 62 11 1 + <_> + 3 + + 2 9 18 8 + <_> + 4 + + 11 28 20 35 + <_> + 5 + + 15 43 10 10 + <_> + 7 + + 24 49 2 2 + <_> + 1 + + 13 20 1 4 + <_> + 1 + + 16 9 1 27 + <_> + 3 + + 11 20 19 26 + <_> + 2 + + 22 55 9 8 + <_> + 3 + + 0 40 2 15 + <_> + 3 + + 8 8 5 27 + <_> + 7 + + 18 11 1 1 + <_> + 9 + + 12 20 2 8 + <_> + 4 + + 12 9 13 5 + <_> + 3 + + 7 50 11 6 + <_> + 5 + + 22 45 1 10 + <_> + 8 + + 11 13 5 1 + <_> + 3 + + 20 38 2 17 + <_> + 5 + + 17 8 6 6 + <_> + 3 + + 15 25 3 7 + <_> + 4 + + 10 1 13 19 + <_> + 1 + + 13 14 17 2 + <_> + 1 + + 12 3 6 3 + <_> + 8 + + 5 61 1 1 + <_> + 8 + + 14 5 1 3 + <_> + 9 + + 21 62 7 1 + <_> + 4 + + 18 41 1 8 + <_> + 1 + + 12 54 11 7 + <_> + 2 + + 9 27 1 28 + <_> + 8 + + 8 12 15 3 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 14 11 3 45 + <_> + 9 + + 13 4 10 3 + <_> + 0 + + 22 3 1 7 + <_> + 9 + + 16 15 1 22 + <_> + 2 + + 12 60 19 3 + <_> + 2 + + 8 41 15 1 + <_> + 3 + + 3 50 25 6 + <_> + 4 + + 15 9 14 15 + <_> + 2 + + 12 5 5 14 + <_> + 2 + + 15 46 5 12 + <_> + 0 + + 11 7 4 10 + <_> + 3 + + 10 47 18 3 + <_> + 5 + + 6 35 1 17 + <_> + 9 + + 24 4 5 3 + <_> + 5 + + 14 1 15 5 + <_> + 9 + + 19 20 1 2 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 0 53 3 1 + <_> + 3 + + 10 8 5 8 + <_> + 8 + + 29 30 1 11 + <_> + 8 + + 13 26 15 1 + <_> + 3 + + 29 42 2 15 + <_> + 1 + + 13 54 6 3 + <_> + 4 + + 14 35 8 5 + <_> + 5 + + 10 47 11 11 + <_> + 2 + + 6 50 11 4 + <_> + 3 + + 6 49 4 5 + <_> + 9 + + 10 29 12 18 + <_> + 5 + + 9 60 18 3 + <_> + 3 + + 10 15 1 42 + <_> + 1 + + 17 20 6 5 + <_> + 4 + + 28 16 3 18 + <_> + 3 + + 19 41 1 21 + <_> + 0 + + 18 35 3 4 + <_> + 0 + + 13 18 3 1 + <_> + 0 + + 1 23 14 6 + <_> + 0 + + 28 49 3 2 + <_> + 1 + + 13 14 13 3 + <_> + 0 + + 11 27 8 3 + <_> + 0 + + 11 48 14 5 + <_> + 5 + + 14 62 12 1 + <_> + 4 + + 20 6 1 43 + <_> + 9 + + 12 17 4 3 + <_> + 0 + + 11 13 17 1 + <_> + 3 + + 30 43 1 3 + <_> + 0 + + 4 53 2 2 + <_> + 7 + + 2 55 14 2 + <_> + 8 + + 22 32 1 22 + <_> + 1 + + 13 21 3 2 + <_> + 2 + + 8 12 15 35 + <_> + 7 + + 8 1 13 46 + <_> + 5 + + 12 33 4 5 + <_> + 7 + + 9 62 16 1 + <_> + 5 + + 7 58 14 3 + <_> + 2 + + 15 0 10 1 + <_> + 8 + + 14 9 6 8 + <_> + 1 + + 2 55 6 1 + <_> + 8 + + 17 6 2 1 + <_> + 1 + + 15 36 1 17 + <_> + 1 + + 5 50 11 4 + <_> + 9 + + 13 15 1 3 + <_> + 0 + + 13 43 9 4 + <_> + 7 + + 0 14 2 41 + <_> + 5 + + 7 37 2 24 + <_> + 3 + + 10 1 1 27 + <_> + 4 + + 13 44 7 9 + <_> + 9 + + 30 3 1 9 + <_> + 1 + + 4 34 25 1 + <_> + 3 + + 4 56 15 3 + <_> + 2 + + 11 49 16 2 + <_> + 2 + + 8 52 17 11 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 1 2 2 32 + <_> + 5 + + 20 15 3 46 + <_> + 7 + + 7 14 3 26 + <_> + 3 + + 15 28 2 3 + <_> + 2 + + 6 51 8 6 + <_> + 3 + + 2 50 5 2 + <_> + 5 + + 3 47 14 1 + <_> + 1 + + 29 61 2 1 + <_> + 1 + + 20 47 3 14 + <_> + 2 + + 16 45 3 6 + <_> + 4 + + 0 61 3 2 + <_> + 1 + + 18 46 3 1 + <_> + 2 + + 13 38 2 18 + <_> + 3 + + 4 0 12 1 + <_> + 3 + + 5 10 9 31 + <_> + 9 + + 25 51 3 1 + <_> + 5 + + 26 33 2 13 + <_> + 5 + + 18 18 9 10 + <_> + 3 + + 13 23 2 16 + <_> + 1 + + 8 53 7 6 + <_> + 3 + + 27 38 3 21 + <_> + 7 + + 5 59 17 2 + <_> + 4 + + 0 23 2 8 + <_> + 7 + + 23 54 1 1 + <_> + 1 + + 11 19 1 18 + <_> + 1 + + 13 8 3 11 + <_> + 7 + + 14 20 3 3 + <_> + 1 + + 18 17 2 9 + <_> + 5 + + 19 56 4 7 + <_> + 5 + + 14 49 9 5 + <_> + 3 + + 8 22 3 10 + <_> + 4 + + 12 39 3 3 + <_> + 1 + + 16 49 11 3 + <_> + 9 + + 6 52 1 8 + <_> + 4 + + 27 23 2 13 + <_> + 4 + + 4 58 19 2 + <_> + 5 + + 16 30 1 1 + <_> + 5 + + 7 30 17 17 + <_> + 0 + + 2 38 3 21 + <_> + 4 + + 16 7 3 17 + <_> + 1 + + 8 6 15 1 + <_> + 2 + + 18 29 5 13 + <_> + 9 + + 15 27 2 1 + <_> + 8 + + 14 9 6 8 + <_> + 1 + + 3 53 5 1 + <_> + 8 + + 26 27 1 7 + <_> + 4 + + 11 5 2 48 + <_> + 3 + + 10 4 1 53 + <_> + 1 + + 4 42 26 1 + <_> + 0 + + 17 19 2 2 + <_> + 4 + + 12 39 8 10 + <_> + 8 + + 16 12 1 5 + <_> + 8 + + 9 62 8 1 + <_> + 8 + + 17 13 2 4 + <_> + 2 + + 23 36 3 22 + <_> + 1 + + 15 53 7 4 + <_> + 1 + + 3 59 18 2 + <_> + 4 + + 18 39 1 2 + <_> + 7 + + 8 8 22 20 + <_> + 7 + + 2 53 10 2 + <_> + 5 + + 16 26 7 15 + <_> + 4 + + 0 62 24 1 + <_> + 1 + + 4 56 7 7 + <_> + 9 + + 29 0 1 11 + <_> + 0 + + 12 33 5 2 + <_> + 5 + + 7 32 8 7 + <_> + 4 + + 5 18 23 5 + <_> + 3 + + 23 49 2 1 + <_> + 0 + + 11 49 11 6 + <_> + 5 + + 21 20 1 6 + <_> + 9 + + 16 18 2 1 + <_> + 9 + + 14 1 3 13 + <_> + 3 + + 19 48 1 15 + <_> + 4 + + 1 17 26 3 + <_> + 5 + + 0 24 30 26 + <_> + 5 + + 15 58 12 4 + <_> + 0 + + 11 49 11 2 + <_> + 1 + + 6 21 13 20 + <_> + 3 + + 11 9 15 7 + <_> + 2 + + 11 56 7 4 + <_> + 1 + + 16 23 2 5 + <_> + 4 + + 10 8 14 4 + <_> + 1 + + 2 15 17 1 + <_> + 2 + + 11 17 6 3 + <_> + 1 + + 20 13 1 22 + <_> + 5 + + 17 9 5 10 + <_> + 2 + + 16 13 8 8 + <_> + 5 + + 14 0 12 17 + <_> + 5 + + 10 38 14 3 + <_> + 7 + + 21 40 1 7 + <_> + 5 + + 12 34 7 6 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 12 22 5 2 + <_> + 8 + + 5 5 6 15 + <_> + 1 + + 10 15 4 20 + <_> + 9 + + 13 13 3 21 + <_> + 4 + + 28 20 1 16 + <_> + 7 + + 16 11 1 1 + <_> + 4 + + 8 52 9 6 + <_> + 1 + + 11 53 10 4 + <_> + 1 + + 16 18 7 3 + <_> + 7 + + 1 51 12 2 + <_> + 7 + + 12 60 2 2 + <_> + 8 + + 11 13 5 1 + <_> + 1 + + 10 56 10 1 + <_> + 2 + + 29 1 2 21 + <_> + 4 + + 15 36 4 1 + <_> + 9 + + 19 41 1 6 + <_> + 4 + + 1 51 7 12 + <_> + 0 + + 22 19 1 33 + <_> + 5 + + 16 57 5 6 + <_> + 2 + + 5 37 2 11 + <_> + 2 + + 10 42 9 16 + <_> + 7 + + 2 53 10 2 + <_> + 4 + + 8 45 18 1 + <_> + 5 + + 17 15 9 10 + <_> + 3 + + 25 60 3 1 + <_> + 3 + + 29 22 2 11 + <_> + 9 + + 9 56 18 7 + <_> + 8 + + 27 60 3 3 + <_> + 0 + + 7 15 9 7 + <_> + 3 + + 13 21 3 10 + <_> + 3 + + 8 11 6 20 + <_> + 9 + + 30 17 1 2 + <_> + 5 + + 12 56 2 5 + <_> + 1 + + 30 41 1 20 + <_> + 9 + + 12 17 4 3 + <_> + 1 + + 15 53 7 4 + <_> + 0 + + 0 48 3 7 + <_> + 8 + + 12 11 18 2 + <_> + 8 + + 10 55 5 4 + <_> + 8 + + 14 12 3 4 + <_> + 2 + + 19 40 1 12 + <_> + 1 + + 13 21 6 2 + <_> + 4 + + 13 8 10 5 + <_> + 1 + + 7 11 22 1 + <_> + 4 + + 18 41 1 8 + <_> + 3 + + 7 62 13 1 + <_> + 1 + + 9 56 16 1 + <_> + 0 + + 14 30 9 21 + <_> + 1 + + 19 2 10 11 + <_> + 3 + + 21 47 1 8 + <_> + 2 + + 9 48 9 6 + <_> + 1 + + 21 35 1 15 + <_> + 3 + + 4 26 3 29 + <_> + 0 + + 14 11 15 3 + <_> + 7 + + 2 46 21 1 + <_> + 2 + + 25 10 2 18 + <_> + 4 + + 12 14 4 5 + <_> + 3 + + 25 46 4 2 + <_> + 4 + + 9 12 1 11 + <_> + 9 + + 19 39 1 12 + <_> + 7 + + 14 11 9 3 + <_> + 7 + + 6 41 1 7 + <_> + 2 + + 5 58 21 2 + <_> + 5 + + 20 14 9 8 + <_> + 4 + + 3 31 27 3 + <_> + 5 + + 6 1 21 2 + <_> + 7 + + 16 11 1 1 + <_> + 4 + + 13 24 5 27 + <_> + 7 + + 22 60 6 2 + <_> + 4 + + 1 34 20 4 + <_> + 1 + + 15 33 2 8 + <_> + 5 + + 14 40 12 10 + <_> + 2 + + 15 48 2 3 + <_> + 9 + + 15 7 3 51 + <_> + 8 + + 12 12 8 3 + <_> + 3 + + 14 34 5 5 + <_> + 5 + + 17 9 5 10 + <_> + 1 + + 18 20 3 7 + <_> + 4 + + 15 6 3 4 + <_> + 5 + + 2 22 14 3 + <_> + 4 + + 10 29 3 19 + <_> + 1 + + 11 44 1 14 + <_> + 3 + + 6 39 5 16 + <_> + 0 + + 9 51 2 5 + <_> + 2 + + 9 50 4 5 + <_> + 9 + + 16 18 2 1 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 16 11 7 3 + <_> + 8 + + 14 17 4 2 + <_> + 2 + + 26 53 5 7 + <_> + 5 + + 16 47 8 7 + <_> + 3 + + 7 50 8 1 + <_> + 4 + + 8 47 23 1 + <_> + 2 + + 5 59 14 1 + <_> + 9 + + 20 57 1 2 + <_> + 1 + + 23 8 8 22 + <_> + 3 + + 17 50 8 11 + <_> + 0 + + 8 19 21 25 + <_> + 2 + + 14 23 3 6 + <_> + 5 + + 8 22 20 6 + <_> + 4 + + 8 60 7 3 + <_> + 1 + + 12 51 3 12 + <_> + 5 + + 11 57 2 6 + <_> + 7 + + 26 0 3 1 + <_> + 7 + + 12 59 12 3 + <_> + 0 + + 25 50 6 11 + <_> + 0 + + 6 52 25 5 + <_> + 5 + + 14 9 9 4 + <_> + 7 + + 17 11 8 1 + <_> + 5 + + 24 56 1 4 + <_> + 0 + + 18 18 2 7 + <_> + 3 + + 6 22 14 7 + <_> + 0 + + 3 0 17 9 + <_> + 3 + + 11 12 2 9 + <_> + 7 + + 17 8 14 7 + <_> + 4 + + 8 41 17 1 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 22 38 3 10 + <_> + 9 + + 15 32 2 2 + <_> + 2 + + 21 27 9 10 + <_> + 3 + + 16 53 14 2 + <_> + 0 + + 13 24 3 7 + <_> + 1 + + 14 43 10 9 + <_> + 1 + + 14 53 3 9 + <_> + 1 + + 12 31 10 8 + <_> + 2 + + 10 57 19 1 + <_> + 1 + + 9 32 5 2 + <_> + 1 + + 0 34 13 14 + <_> + 5 + + 14 52 9 3 + <_> + 1 + + 4 1 23 5 + <_> + 2 + + 2 49 23 11 + <_> + 1 + + 13 20 1 4 + <_> + 4 + + 12 19 12 1 + <_> + 8 + + 10 39 2 2 + <_> + 9 + + 30 38 1 1 + <_> + 4 + + 13 44 1 4 + <_> + 1 + + 18 28 8 15 + <_> + 1 + + 28 5 2 23 + <_> + 5 + + 16 55 8 4 + <_> + 4 + + 20 18 2 4 + <_> + 2 + + 8 41 15 1 + <_> + 7 + + 15 2 2 56 + <_> + 4 + + 12 4 9 12 + <_> + 3 + + 4 56 15 3 + <_> + 2 + + 5 51 13 5 + <_> + 5 + + 21 25 1 18 + <_> + 4 + + 21 18 7 32 + <_> + 8 + + 14 9 6 8 + <_> + 1 + + 11 19 11 1 + <_> + 8 + + 0 14 1 8 + <_> + 7 + + 6 8 1 3 + <_> + 5 + + 13 46 2 11 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 6 10 11 18 + <_> + 8 + + 5 14 4 5 + <_> + 9 + + 13 16 4 4 + <_> + 9 + + 10 1 13 13 + <_> + 0 + + 5 47 1 16 + <_> + 7 + + 1 48 29 7 + <_> + 0 + + 0 4 1 5 + <_> + 2 + + 18 61 7 1 + <_> + 2 + + 18 15 8 18 + <_> + 1 + + 14 17 5 10 + <_> + 3 + + 16 32 4 7 + <_> + 0 + + 19 29 5 7 + <_> + 7 + + 12 15 5 1 + <_> + 4 + + 13 36 3 4 + <_> + 1 + + 13 5 6 12 + <_> + 8 + + 29 56 2 3 + <_> + 1 + + 11 45 8 5 + <_> + 7 + + 11 59 3 3 + <_> + 8 + + 21 55 5 5 + <_> + 3 + + 10 21 1 13 + <_> + 5 + + 15 24 4 7 + <_> + 2 + + 17 3 4 15 + <_> + 5 + + 7 2 10 2 + <_> + 8 + + 14 12 3 4 + <_> + 1 + + 13 21 6 2 + <_> + 2 + + 10 8 20 7 + <_> + 5 + + 0 33 27 15 + <_> + 0 + + 11 42 11 2 + <_> + 1 + + 9 17 11 9 + <_> + 5 + + 6 59 13 1 + <_> + 4 + + 11 46 10 4 + <_> + 1 + + 13 54 6 3 + <_> + 1 + + 5 50 11 4 + <_> + 9 + + 10 15 3 30 + <_> + 1 + + 4 30 22 11 + <_> + 9 + + 28 2 3 1 + <_> + 8 + + 28 62 1 1 + <_> + 1 + + 19 28 7 6 + <_> + 4 + + 28 9 3 26 + <_> + 1 + + 3 44 16 2 + <_> + 2 + + 30 36 1 8 + <_> + 2 + + 7 51 13 5 + <_> + 9 + + 17 19 2 4 + <_> + 2 + + 10 56 10 3 + <_> + 5 + + 16 16 14 9 + <_> + 7 + + 16 38 2 4 + <_> + 2 + + 15 0 7 6 + <_> + 8 + + 17 13 2 4 + <_> + 7 + + 23 49 4 3 + <_> + 1 + + 7 25 10 10 + <_> + 9 + + 12 29 7 19 + <_> + 7 + + 17 28 1 12 + <_> + 7 + + 18 6 1 2 + <_> + 5 + + 14 5 7 10 + <_> + 0 + + 0 2 3 60 + <_> + 5 + + 13 14 3 2 + <_> + 1 + + 16 7 4 26 + <_> + 0 + + 25 47 6 16 + <_> + 1 + + 8 18 15 8 + <_> + 1 + + 13 55 3 2 + <_> + 0 + + 14 54 1 5 + <_> + 4 + + 15 36 4 1 + <_> + 2 + + 8 24 3 9 + <_> + 1 + + 20 10 1 42 + <_> + 5 + + 4 31 15 5 + <_> + 3 + + 10 5 7 17 + <_> + 2 + + 9 52 3 1 + <_> + 4 + + 3 59 10 4 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 16 11 7 3 + <_> + 8 + + 11 37 1 6 + <_> + 1 + + 11 53 14 4 + <_> + 5 + + 5 57 24 1 + <_> + 7 + + 24 50 2 3 + <_> + 5 + + 13 58 6 4 + <_> + 4 + + 13 43 2 6 + <_> + 3 + + 25 42 6 6 + <_> + 5 + + 14 40 12 10 + <_> + 4 + + 11 53 3 1 + <_> + 3 + + 20 42 2 6 + <_> + 2 + + 11 12 12 2 + <_> + 3 + + 12 42 2 9 + <_> + 8 + + 14 12 3 4 + <_> + 2 + + 11 17 6 3 + <_> + 2 + + 12 6 14 12 + <_> + 9 + + 16 17 2 6 + <_> + 5 + + 20 56 3 7 + <_> + 8 + + 9 20 14 13 + <_> + 7 + + 24 16 1 42 + <_> + 0 + + 18 52 8 6 + <_> + 5 + + 21 50 7 2 + <_> + 2 + + 12 20 7 8 + <_> + 2 + + 10 22 15 36 + <_> + 7 + + 13 6 9 7 + <_> + 4 + + 28 2 3 38 + <_> + 5 + + 10 56 20 6 + <_> + 7 + + 7 55 5 1 + <_> + 9 + + 15 32 2 2 + <_> + 1 + + 3 14 24 3 + <_> + 4 + + 16 7 2 2 + <_> + 1 + + 2 19 25 2 + <_> + 2 + + 18 14 5 44 + <_> + 7 + + 16 11 1 1 + <_> + 0 + + 28 32 1 1 + <_> + 9 + + 30 1 1 2 + <_> + 3 + + 24 45 6 4 + <_> + 3 + + 3 2 10 15 + <_> + 3 + + 1 43 18 12 + <_> + 0 + + 2 19 4 42 + <_> + 2 + + 4 42 5 8 + <_> + 0 + + 19 25 3 18 + <_> + 8 + + 13 14 4 3 + <_> + 0 + + 13 13 6 38 + <_> + 8 + + 22 52 3 5 + <_> + 7 + + 10 61 1 1 + <_> + 2 + + 16 23 3 13 + <_> + 1 + + 11 35 8 4 + <_> + 1 + + 10 55 12 1 + <_> + 1 + + 13 40 12 1 + <_> + 7 + + 6 29 19 16 + <_> + 9 + + 13 27 2 2 + <_> + 9 + + 30 3 1 55 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 16 43 2 8 + <_> + 8 + + 7 8 5 6 + <_> + 3 + + 11 53 20 5 + <_> + 0 + + 12 10 11 6 + <_> + 9 + + 30 4 1 31 + <_> + 0 + + 17 17 3 2 + <_> + 7 + + 22 56 4 3 + <_> + 8 + + 12 12 8 3 + <_> + 1 + + 17 34 13 21 + <_> + 4 + + 7 15 5 22 + <_> + 4 + + 25 13 1 21 + <_> + 5 + + 22 18 3 32 + <_> + 0 + + 15 17 10 7 + <_> + 3 + + 5 10 14 23 + <_> + 1 + + 11 53 14 4 + <_> + 2 + + 14 62 15 1 + <_> + 5 + + 0 28 18 28 + <_> + 7 + + 18 11 1 1 + <_> + 2 + + 13 32 2 1 + <_> + 4 + + 9 6 8 12 + <_> + 3 + + 3 49 10 6 + <_> + 2 + + 11 40 7 1 + <_> + 5 + + 7 18 2 15 + <_> + 5 + + 11 15 5 3 + <_> + 5 + + 9 8 13 9 + <_> + 4 + + 4 60 12 2 + <_> + 3 + + 8 18 9 2 + <_> + 5 + + 5 1 18 48 + <_> + 3 + + 0 13 18 13 + <_> + 2 + + 0 52 22 2 + <_> + 0 + + 5 47 1 7 + <_> + 4 + + 10 18 16 5 + <_> + 1 + + 12 24 6 2 + <_> + 2 + + 6 35 6 10 + <_> + 0 + + 7 12 13 7 + <_> + 3 + + 8 56 9 3 + <_> + 4 + + 13 38 8 11 + <_> + 4 + + 16 22 2 17 + <_> + 0 + + 15 33 8 24 + <_> + 7 + + 1 2 30 40 + <_> + 3 + + 20 37 2 5 + <_> + 9 + + 14 0 10 7 + <_> + 5 + + 14 29 5 7 + <_> + 9 + + 15 15 2 10 + <_> + 5 + + 13 14 12 10 + <_> + 7 + + 14 10 3 2 + <_> + 5 + + 20 1 7 5 + <_> + 7 + + 0 62 28 1 + <_> + 0 + + 26 42 3 15 + <_> + 1 + + 13 44 14 11 + <_> + 9 + + 20 29 1 13 + <_> + 4 + + 11 38 13 7 + <_> + 8 + + 12 12 8 3 + <_> + 5 + + 0 50 7 12 + <_> + 2 + + 15 37 4 25 + <_> + 5 + + 18 7 1 40 + <_> + 2 + + 21 55 9 7 + <_> + 5 + + 15 47 14 8 + <_> + 7 + + 14 25 4 3 + <_> + 4 + + 12 39 3 3 + <_> + 3 + + 10 8 1 50 + <_> + 4 + + 5 16 23 30 + <_> + 1 + + 15 53 7 4 + <_> + 5 + + 1 57 18 2 + <_> + 4 + + 14 58 12 5 + <_> + 8 + + 30 54 1 9 + <_> + 4 + + 0 26 3 5 + <_> + 7 + + 24 36 3 4 + <_> + 0 + + 12 10 11 6 + <_> + 4 + + 3 39 26 5 + <_> + 7 + + 5 50 5 7 + <_> + 5 + + 15 49 10 4 + <_> + 0 + + 0 38 9 15 + <_> + 3 + + 16 41 14 6 + <_> + 1 + + 11 55 10 5 + <_> + 7 + + 14 0 1 31 + <_> + 9 + + 28 0 2 62 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 16 18 2 1 + <_> + 8 + + 16 53 1 2 + <_> + 9 + + 16 18 2 1 + <_> + 1 + + 13 18 18 6 + <_> + 5 + + 15 60 15 2 + <_> + 3 + + 5 38 19 9 + <_> + 0 + + 1 24 3 26 + <_> + 2 + + 30 25 1 26 + <_> + 0 + + 11 42 11 2 + <_> + 1 + + 11 35 8 4 + <_> + 4 + + 6 9 11 16 + <_> + 8 + + 16 12 1 5 + <_> + 8 + + 24 23 4 5 + <_> + 8 + + 28 12 1 12 + <_> + 9 + + 26 2 3 2 + <_> + 1 + + 18 23 3 1 + <_> + 9 + + 15 14 3 14 + <_> + 9 + + 0 31 22 14 + <_> + 2 + + 8 48 11 9 + <_> + 8 + + 6 20 5 7 + <_> + 1 + + 13 52 3 10 + <_> + 1 + + 24 36 4 1 + <_> + 4 + + 13 44 7 7 + <_> + 2 + + 18 16 4 15 + <_> + 5 + + 11 56 12 1 + <_> + 2 + + 1 40 29 1 + <_> + 2 + + 12 38 11 10 + <_> + 1 + + 11 19 11 1 + <_> + 3 + + 17 34 2 13 + <_> + 2 + + 12 20 7 7 + <_> + 2 + + 11 11 12 6 + <_> + 9 + + 21 62 7 1 + <_> + 8 + + 1 62 13 1 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 13 39 1 8 + <_> + 8 + + 17 3 3 2 + <_> + 8 + + 13 2 8 52 + <_> + 5 + + 30 37 1 22 + <_> + 0 + + 9 31 18 3 + <_> + 7 + + 20 11 4 1 + <_> + 1 + + 5 12 14 6 + <_> + 4 + + 8 3 14 46 + <_> + 9 + + 16 18 2 1 + <_> + 5 + + 20 33 2 2 + <_> + 4 + + 15 6 3 4 + <_> + 9 + + 30 1 1 8 + <_> + 2 + + 6 51 8 6 + <_> + 5 + + 9 58 17 2 + <_> + 5 + + 17 28 14 5 + <_> + 1 + + 19 20 3 15 + <_> + 3 + + 10 21 1 13 + <_> + 1 + + 8 17 6 13 + <_> + 0 + + 10 46 8 7 + <_> + 0 + + 13 25 2 6 + <_> + 2 + + 22 30 3 11 + <_> + 1 + + 16 7 4 26 + <_> + 1 + + 14 33 5 21 + <_> + 1 + + 16 53 2 4 + <_> + 0 + + 22 29 5 8 + <_> + 3 + + 4 53 21 5 + <_> + 0 + + 10 50 16 3 + <_> + 0 + + 20 49 2 1 + <_> + 0 + + 25 44 5 3 + <_> + 7 + + 28 41 2 1 + <_> + 7 + + 14 59 1 2 + <_> + 8 + + 12 12 8 3 + <_> + 9 + + 13 27 2 2 + <_> + 8 + + 20 39 2 4 + <_> + 1 + + 12 15 1 26 + <_> + 5 + + 21 2 1 52 + <_> + 4 + + 6 7 8 7 + <_> + 1 + + 13 21 6 2 + <_> + 1 + + 4 54 4 9 + <_> + 4 + + 18 39 1 2 + <_> + 0 + + 4 39 5 7 + <_> + 3 + + 7 23 7 30 + <_> + 1 + + 16 26 9 4 + <_> + 4 + + 18 5 6 41 + <_> + 1 + + 13 14 13 3 + <_> + 3 + + 3 43 11 1 + <_> + 0 + + 17 19 2 2 + <_> + 4 + + 11 12 7 4 + <_> + 8 + + 17 11 1 2 + <_> + 5 + + 30 0 1 2 + <_> + 4 + + 2 59 28 3 + <_> + 0 + + 27 49 4 9 + <_> + 5 + + 20 10 2 18 + <_> + 3 + + 1 7 16 1 + <_> + 5 + + 27 15 2 12 + <_> + 1 + + 20 52 1 11 + <_> + 5 + + 9 57 14 6 + <_> + 7 + + 26 51 3 4 + <_> + 2 + + 6 50 11 4 + <_> + 7 + + 11 24 16 2 + <_> + 5 + + 10 58 13 5 + <_> + 7 + + 10 9 17 10 + <_> + 9 + + 19 19 2 1 + <_> + 7 + + 11 18 13 9 + <_> + 3 + + 6 11 9 11 + <_> + 4 + + 1 8 26 39 + <_> + 5 + + 15 24 4 7 + <_> + 1 + + 15 52 2 5 + <_> + 4 + + 12 31 10 5 + <_> + 4 + + 23 32 8 31 + <_> + 4 + + 28 16 3 18 + <_> + 7 + + 10 47 7 4 + <_> + 1 + + 11 19 1 18 + <_> + 8 + + 16 12 1 5 + <_> + 9 + + 0 48 1 3 + <_> + 8 + + 10 29 1 8 + <_> + 1 + + 5 56 21 1 + <_> + 1 + + 13 46 8 15 + <_> + 7 + + 2 36 10 16 + <_> + 0 + + 11 49 11 2 + <_> + 5 + + 26 56 2 6 + <_> + 7 + + 11 59 3 3 + <_> + 0 + + 12 50 16 6 + <_> + 9 + + 2 61 17 1 + <_> + 0 + + 7 55 7 4 + <_> + 7 + + 15 29 2 3 + <_> + 0 + + 22 58 9 5 + <_> + 1 + + 15 8 4 8 + <_> + 5 + + 4 28 2 2 + <_> + 0 + + 5 27 8 13 + <_> + 1 + + 13 20 5 4 + <_> + 0 + + 26 48 5 6 + <_> + 0 + + 16 34 10 11 + <_> + 7 + + 30 57 1 1 + <_> + 9 + + 30 19 1 8 + <_> + 4 + + 18 41 1 8 + <_> + 9 + + 14 17 3 26 + <_> + 1 + + 13 55 12 3 + <_> + 5 + + 4 62 7 1 + <_> + 9 + + 12 7 13 1 + <_> + 4 + + 14 8 5 1 + <_> + 2 + + 21 55 10 2 + <_> + 3 + + 8 9 13 1 + <_> + 9 + + 13 34 8 6 + <_> + 7 + + 12 29 4 10 + <_> + 9 + + 24 31 2 11 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 29 38 2 2 + <_> + 2 + + 13 10 13 7 + <_> + 2 + + 8 27 3 6 + <_> + 9 + + 12 17 4 3 + <_> + 5 + + 16 10 12 13 + <_> + 0 + + 3 43 1 9 + <_> + 3 + + 6 50 12 7 + <_> + 9 + + 14 1 10 3 + <_> + 5 + + 10 2 10 3 + <_> + 2 + + 19 12 5 12 + <_> + 7 + + 12 15 8 7 + <_> + 5 + + 13 31 1 10 + <_> + 2 + + 9 7 2 47 + <_> + 2 + + 26 44 2 12 + <_> + 1 + + 10 54 7 2 + <_> + 2 + + 9 18 7 2 + <_> + 2 + + 30 58 1 2 + <_> + 2 + + 8 41 15 3 + <_> + 4 + + 14 58 1 5 + <_> + 3 + + 11 0 8 37 + <_> + 4 + + 0 26 3 5 + <_> + 5 + + 13 9 8 6 + <_> + 7 + + 6 36 2 19 + <_> + 7 + + 16 11 1 1 + <_> + 7 + + 8 59 7 2 + <_> + 3 + + 10 7 3 41 + <_> + 4 + + 9 20 17 4 + <_> + 1 + + 28 49 3 11 + <_> + 5 + + 12 57 7 5 + <_> + 4 + + 7 54 11 1 + <_> + 0 + + 12 38 1 6 + <_> + 1 + + 17 43 4 9 + <_> + 8 + + 17 13 2 4 + <_> + 8 + + 13 14 1 3 + <_> + 8 + + 22 53 4 1 + <_> + 2 + + 8 61 15 1 + <_> + 2 + + 4 53 19 3 + <_> + 4 + + 4 42 2 6 + <_> + 9 + + 11 19 9 1 + <_> + 9 + + 11 9 15 6 + <_> + 4 + + 23 61 7 1 + <_> + 0 + + 7 57 21 1 + <_> + 0 + + 8 50 14 10 + <_> + 1 + + 23 46 1 16 + <_> + 2 + + 19 11 12 14 + <_> + 0 + + 2 41 3 13 + <_> + 4 + + 22 23 6 28 + <_> + 0 + + 19 27 4 10 + <_> + 0 + + 6 42 2 2 + <_> + 3 + + 17 29 2 10 + <_> + 4 + + 6 60 4 3 + <_> + 7 + + 22 53 1 4 + <_> + 2 + + 9 16 6 6 + <_> + 2 + + 19 35 2 3 + <_> + 0 + + 15 36 11 1 + <_> + 3 + + 19 24 3 16 + <_> + 5 + + 0 47 13 2 + <_> + 2 + + 3 51 16 4 + <_> + 4 + + 3 26 2 21 + <_> + 8 + + 14 12 3 4 + <_> + 4 + + 6 51 7 1 + <_> + 8 + + 14 17 4 2 + <_> + 3 + + 22 45 1 13 + <_> + 4 + + 11 10 20 4 + <_> + 9 + + 29 47 2 2 + <_> + 3 + + 10 15 1 42 + <_> + 1 + + 25 16 6 7 + <_> + 3 + + 14 21 4 6 + <_> + 3 + + 5 56 6 4 + <_> + 4 + + 24 36 2 26 + <_> + 2 + + 9 48 19 4 + <_> + 7 + + 12 59 12 1 + <_> + 4 + + 2 59 28 3 + <_> + 0 + + 12 10 11 6 + <_> + 1 + + 13 20 1 4 + <_> + 3 + + 15 8 11 32 + <_> + 8 + + 18 25 2 5 + <_> + 1 + + 15 51 5 9 + <_> + 1 + + 6 59 5 4 + <_> + 5 + + 30 51 1 10 + <_> + 4 + + 16 7 2 2 + <_> + 7 + + 4 30 14 6 + <_> + 0 + + 9 28 12 22 + <_> + 2 + + 9 27 1 28 + <_> + 4 + + 17 19 6 35 + <_> + 2 + + 1 30 20 10 + <_> + 1 + + 9 15 11 2 + <_> + 9 + + 16 18 2 1 + <_> + 5 + + 6 18 7 10 + <_> + 4 + + 11 36 16 1 + <_> + 8 + + 12 12 8 3 + <_> + 0 + + 21 54 3 2 + <_> + 8 + + 14 5 1 3 + <_> + 8 + + 11 9 7 8 + <_> + 9 + + 14 1 3 13 + <_> + 0 + + 12 38 1 6 + <_> + 3 + + 5 36 21 5 + <_> + 8 + + 8 62 3 1 + <_> + 4 + + 16 51 2 1 + <_> + 1 + + 16 54 4 8 + <_> + 0 + + 9 15 4 3 + <_> + 0 + + 27 47 1 6 + <_> + 0 + + 12 37 14 2 + <_> + 3 + + 10 5 4 54 + <_> + 5 + + 12 29 6 7 + <_> + 7 + + 1 32 10 13 + <_> + 0 + + 6 58 7 1 + <_> + 2 + + 8 38 20 5 + <_> + 9 + + 28 14 1 9 + <_> + 1 + + 12 8 8 4 + <_> + 4 + + 18 14 3 38 + <_> + 3 + + 0 40 2 15 + <_> + 5 + + 16 24 2 15 + <_> + 1 + + 10 55 12 1 + <_> + 9 + + 7 22 1 29 + <_> + 7 + + 12 59 12 1 + <_> + 8 + + 11 13 5 1 + <_> + 1 + + 2 1 27 2 + <_> + 0 + + 1 8 13 17 + <_> + 8 + + 30 42 1 2 + <_> + 8 + + 12 11 8 1 + <_> + 8 + + 16 35 8 1 + <_> + 4 + + 10 41 8 7 + <_> + 2 + + 22 57 5 6 + <_> + 3 + + 15 49 3 4 + <_> + 5 + + 19 14 5 7 + <_> + 7 + + 14 10 3 2 + <_> + 4 + + 10 18 16 5 + <_> + 9 + + 19 39 2 4 + <_> + 2 + + 7 11 17 1 + <_> + 7 + + 26 33 1 16 + <_> + 4 + + 15 36 4 1 + <_> + 2 + + 7 57 13 4 + <_> + 9 + + 30 4 1 1 + <_> + 3 + + 5 21 10 5 + <_> + 8 + + 11 13 5 1 + <_> + 2 + + 16 19 2 6 + <_> + 5 + + 14 9 9 4 + <_> + 7 + + 15 0 13 3 + <_> + 3 + + 16 36 3 4 + <_> + 0 + + 13 37 15 7 + <_> + 2 + + 24 38 6 18 + <_> + 5 + + 13 39 1 8 + <_> + 7 + + 3 62 15 1 + <_> + 5 + + 29 28 2 25 + <_> + 2 + + 10 46 12 9 + <_> + 2 + + 12 59 14 4 + <_> + 8 + + 16 12 1 5 + <_> + 9 + + 15 24 2 10 + <_> + 7 + + 27 12 2 11 + <_> + 1 + + 11 55 7 5 + <_> + 0 + + 10 33 3 14 + <_> + 0 + + 25 44 1 9 + <_> + 2 + + 16 39 4 9 + <_> + 7 + + 19 25 1 2 + <_> + 1 + + 13 5 6 12 + <_> + 1 + + 11 19 1 18 + <_> + 7 + + 0 0 17 33 + <_> + 7 + + 25 52 4 2 + <_> + 3 + + 27 62 2 1 + <_> + 5 + + 18 17 6 4 + <_> + 7 + + 23 18 2 12 + <_> + 5 + + 22 12 9 23 + <_> + 2 + + 6 50 11 4 + <_> + 2 + + 18 52 7 2 + <_> + 4 + + 0 59 5 4 + <_> + 1 + + 9 54 5 6 + <_> + 2 + + 13 62 18 1 + <_> + 4 + + 25 62 2 1 + <_> + 3 + + 3 19 8 16 + <_> + 1 + + 24 29 4 34 + <_> + 2 + + 13 30 2 5 + <_> + 1 + + 13 7 9 6 + <_> + 4 + + 13 7 5 4 + <_> + 0 + + 16 17 4 5 + <_> + 0 + + 12 10 11 6 + <_> + 7 + + 12 44 1 11 + <_> + 0 + + 19 6 3 4 + <_> + 1 + + 11 8 12 1 + <_> + 2 + + 29 44 1 6 + <_> + 2 + + 24 57 2 4 + <_> + 3 + + 10 50 7 6 + <_> + 5 + + 27 14 2 26 + <_> + 0 + + 1 53 26 5 + <_> + 7 + + 6 62 9 1 + <_> + 8 + + 1 61 25 2 + <_> + 4 + + 18 39 1 2 + <_> + 5 + + 21 18 5 38 + <_> + 0 + + 0 39 3 11 + <_> + 5 + + 4 42 8 6 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 13 14 3 2 + <_> + 3 + + 8 9 9 4 + <_> + 9 + + 14 18 3 9 + <_> + 9 + + 13 4 11 7 + <_> + 9 + + 13 39 5 1 + <_> + 1 + + 8 6 15 1 + <_> + 4 + + 26 19 2 18 + <_> + 9 + + 25 18 4 2 + <_> + 2 + + 17 3 4 15 + <_> + 4 + + 5 44 19 4 + <_> + 1 + + 17 18 5 28 + <_> + 1 + + 14 52 5 6 + <_> + 3 + + 24 45 2 15 + <_> + 0 + + 6 58 16 2 + <_> + 5 + + 16 30 1 1 + <_> + 5 + + 12 42 15 2 + <_> + 8 + + 13 51 1 6 + <_> + 8 + + 16 12 1 5 + <_> + 8 + + 14 52 9 1 + <_> + 8 + + 12 0 7 9 + <_> + 4 + + 14 39 4 9 + <_> + 0 + + 3 5 7 24 + <_> + 9 + + 10 33 2 10 + <_> + 9 + + 4 3 16 12 + <_> + 1 + + 12 1 17 7 + <_> + 8 + + 15 55 2 5 + <_> + 2 + + 7 51 14 1 + <_> + 7 + + 15 9 11 2 + <_> + 1 + + 11 0 7 18 + <_> + 1 + + 7 21 21 1 + <_> + 5 + + 18 15 10 12 + <_> + 1 + + 11 56 19 1 + <_> + 3 + + 28 51 1 9 + <_> + 2 + + 12 55 11 7 + <_> + 7 + + 12 57 7 1 + <_> + 7 + + 12 1 7 53 + <_> + 7 + + 24 48 7 5 + <_> + 4 + + 9 22 14 16 + <_> + 1 + + 28 31 3 31 + <_> + 1 + + 20 54 9 5 + <_> + 9 + + 15 32 2 2 + <_> + 3 + + 6 11 9 11 + <_> + 7 + + 18 2 2 10 + <_> + 0 + + 17 19 2 2 + <_> + 0 + + 0 37 22 9 + <_> + 5 + + 8 57 19 3 + <_> + 3 + + 15 44 16 13 + <_> + 5 + + 17 52 9 3 + <_> + 1 + + 2 1 21 4 + <_> + 2 + + 11 16 2 2 + <_> + 4 + + 12 21 1 10 + <_> + 4 + + 10 9 11 9 + <_> + 5 + + 21 25 1 18 + <_> + 5 + + 18 57 7 2 + <_> + 8 + + 16 8 1 17 + <_> + 9 + + 11 49 3 5 + <_> + 8 + + 1 40 1 14 + <_> + 8 + + 12 12 8 3 + <_> + 5 + + 28 36 1 2 + <_> + 9 + + 16 18 2 1 + <_> + 9 + + 16 8 1 6 + <_> + 5 + + 29 38 1 12 + <_> + 2 + + 7 51 13 5 + <_> + 0 + + 6 37 2 20 + <_> + 5 + + 7 52 4 3 + <_> + 5 + + 14 9 9 4 + <_> + 2 + + 1 21 1 16 + <_> + 5 + + 14 0 12 17 + <_> + 1 + + 17 20 6 5 + <_> + 0 + + 21 11 1 41 + <_> + 1 + + 3 54 28 8 + <_> + 1 + + 17 43 4 9 + <_> + 8 + + 13 62 6 1 + <_> + 2 + + 22 16 8 4 + <_> + 2 + + 12 62 11 1 + <_> + 4 + + 19 57 8 6 + <_> + 1 + + 16 53 2 4 + <_> + 9 + + 10 59 4 3 + <_> + 0 + + 13 15 5 4 + <_> + 3 + + 2 54 10 5 + <_> + 2 + + 5 49 8 11 + <_> + 4 + + 11 53 3 2 + <_> + 5 + + 11 34 2 3 + <_> + 3 + + 6 13 9 14 + <_> + 0 + + 13 14 2 12 + <_> + 4 + + 7 60 1 3 + <_> + 4 + + 15 36 4 1 + <_> + 0 + + 16 31 11 7 + <_> + 9 + + 12 35 6 2 + <_> + 1 + + 13 14 13 3 + <_> + 7 + + 10 20 3 3 + <_> + 4 + + 14 8 6 11 + <_> + 2 + + 21 52 2 9 + <_> + 5 + + 19 16 7 39 + <_> + 7 + + 11 62 9 1 + <_> + 8 + + 13 14 4 3 + <_> + 0 + + 14 17 1 13 + <_> + 9 + + 6 8 6 48 + <_> + 9 + + 28 36 1 1 + <_> + 2 + + 9 41 11 1 + <_> + 1 + + 1 30 19 2 + <_> + 4 + + 13 40 6 7 + <_> + 1 + + 12 43 11 15 + <_> + 1 + + 3 14 24 3 + <_> + 4 + + 2 16 11 24 + <_> + 4 + + 5 26 12 4 + <_> + 7 + + 4 24 4 1 + <_> + 2 + + 16 21 3 6 + <_> + 3 + + 2 21 9 2 + <_> + 9 + + 29 2 1 7 + <_> + 9 + + 19 17 1 7 + <_> + 3 + + 6 52 18 2 + <_> + 0 + + 6 57 13 1 + <_> + 2 + + 11 11 8 3 + <_> + 7 + + 17 44 1 3 + <_> + 7 + + 15 10 13 4 + <_> + 9 + + 25 44 2 3 + <_> + 9 + + 23 27 8 27 + <_> + 8 + + 16 12 1 5 + <_> + 3 + + 1 53 25 3 + <_> + 0 + + 14 48 4 9 + <_> + 7 + + 19 23 2 15 + <_> + 1 + + 8 6 15 1 + <_> + 0 + + 16 1 3 13 + <_> + 2 + + 14 16 4 5 + <_> + 5 + + 15 18 14 5 + <_> + 2 + + 18 16 5 9 + <_> + 3 + + 3 1 21 2 + <_> + 2 + + 11 57 19 6 + <_> + 7 + + 7 55 5 1 + <_> + 9 + + 21 4 4 1 + <_> + 1 + + 18 19 1 5 + <_> + 8 + + 12 11 8 1 + <_> + 0 + + 10 8 4 49 + <_> + 9 + + 11 5 8 48 + <_> + 0 + + 0 30 10 18 + <_> + 2 + + 3 40 4 13 + <_> + 3 + + 29 34 1 22 + <_> + 2 + + 20 26 10 4 + <_> + 4 + + 12 8 7 12 + <_> + 1 + + 8 33 12 1 + <_> + 1 + + 20 55 2 4 + <_> + 4 + + 6 34 19 16 + <_> + 3 + + 1 52 26 1 + <_> + 1 + + 11 6 1 47 + <_> + 1 + + 5 44 5 11 + <_> + 2 + + 15 37 3 10 + <_> + 4 + + 10 21 2 5 + <_> + 3 + + 15 21 3 42 + <_> + 8 + + 12 12 8 3 + <_> + 9 + + 22 62 1 1 + <_> + 8 + + 0 14 12 3 + <_> + 2 + + 0 59 2 4 + <_> + 2 + + 6 35 11 5 + <_> + 2 + + 23 40 6 21 + <_> + 3 + + 23 35 3 14 + <_> + 0 + + 16 34 10 11 + <_> + 5 + + 21 18 2 12 + <_> + 5 + + 23 28 8 19 + <_> + 2 + + 21 17 2 20 + <_> + 0 + + 20 15 4 9 + <_> + 2 + + 14 25 3 9 + <_> + 0 + + 8 24 7 5 + <_> + 1 + + 12 11 3 7 + <_> + 7 + + 16 11 1 1 + <_> + 2 + + 23 14 8 24 + <_> + 3 + + 7 24 11 11 + <_> + 7 + + 1 62 30 1 + <_> + 2 + + 8 40 2 7 + <_> + 1 + + 15 53 7 4 + <_> + 4 + + 19 26 11 36 + <_> + 3 + + 2 56 20 6 + <_> + 7 + + 24 49 2 2 + <_> + 3 + + 8 50 7 8 + <_> + 4 + + 8 46 18 1 + <_> + 4 + + 10 8 14 4 + <_> + 1 + + 13 21 3 2 + <_> + 2 + + 11 4 8 13 + <_> + 9 + + 12 17 4 3 + <_> + 8 + + 11 13 5 1 + <_> + 9 + + 26 32 1 7 + <_> + 8 + + 19 41 2 1 + <_> + 2 + + 9 57 20 3 + <_> + 1 + + 5 56 19 1 + <_> + 7 + + 17 26 2 3 + <_> + 4 + + 12 46 1 2 + <_> + 2 + + 3 25 18 1 + <_> + 7 + + 29 52 1 2 + <_> + 0 + + 13 26 4 1 + <_> + 1 + + 2 29 12 5 + <_> + 2 + + 14 3 5 1 + <_> + 0 + + 19 23 3 21 + <_> + 2 + + 16 39 4 9 + <_> + 5 + + 3 41 25 5 + <_> + 0 + + 28 49 3 1 + <_> + 7 + + 12 38 10 7 + <_> + 3 + + 6 12 10 6 + <_> + 9 + + 17 32 1 5 + <_> + 0 + + 10 42 13 5 + <_> + 8 + + 14 12 3 4 + <_> + 4 + + 7 18 16 3 + <_> + 1 + + 28 14 3 42 + <_> + 1 + + 5 54 26 1 + <_> + 4 + + 17 17 8 38 + <_> + 2 + + 2 50 14 3 + <_> + 5 + + 20 24 2 10 + <_> + 3 + + 9 56 20 2 + <_> + 0 + + 11 50 16 10 + <_> + 7 + + 9 0 21 9 + <_> + 4 + + 3 15 22 14 + <_> + 2 + + 11 17 6 3 + <_> + 5 + + 14 50 6 6 + <_> + 0 + + 0 46 3 7 + <_> + 9 + + 14 7 3 23 + <_> + 5 + + 2 11 14 12 + <_> + 5 + + 19 54 3 3 + <_> + 3 + + 12 43 7 10 + <_> + 4 + + 25 54 3 9 + <_> + 1 + + 9 20 4 5 + <_> + 1 + + 10 15 13 1 + <_> + 5 + + 1 60 22 1 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 13 15 5 4 + <_> + 8 + + 8 54 10 5 + <_> + 0 + + 11 7 4 10 + <_> + 3 + + 23 39 6 12 + <_> + 0 + + 0 54 25 4 + <_> + 9 + + 14 0 10 7 + <_> + 4 + + 15 36 4 1 + <_> + 9 + + 12 1 4 31 + <_> + 5 + + 17 19 10 17 + <_> + 7 + + 4 26 1 18 + <_> + 1 + + 20 19 3 2 + <_> + 7 + + 6 53 6 4 + <_> + 2 + + 28 40 2 9 + <_> + 7 + + 11 6 1 35 + <_> + 3 + + 5 13 20 8 + <_> + 2 + + 7 2 1 37 + <_> + 4 + + 6 12 16 13 + <_> + 4 + + 13 22 2 4 + <_> + 2 + + 12 58 10 1 + <_> + 5 + + 14 50 6 6 + <_> + 7 + + 10 59 21 1 + <_> + 0 + + 26 43 3 14 + <_> + 0 + + 20 7 4 39 + <_> + 3 + + 15 48 1 4 + <_> + 3 + + 8 44 17 10 + <_> + 0 + + 26 21 2 2 + <_> + 3 + + 7 40 5 18 + <_> + 1 + + 4 34 25 1 + <_> + 1 + + 9 45 3 13 + <_> + 3 + + 20 41 1 8 + <_> + 8 + + 13 9 13 11 + <_> + 2 + + 15 46 2 10 + <_> + 2 + + 11 4 8 13 + <_> + 0 + + 0 28 6 15 + <_> + 0 + + 17 18 3 1 + <_> + 0 + + 12 10 11 6 + <_> + 7 + + 5 11 21 46 + <_> + 8 + + 17 11 1 2 + <_> + 9 + + 13 16 4 4 + <_> + 9 + + 14 1 3 13 + <_> + 2 + + 6 25 1 37 + <_> + 8 + + 15 5 8 4 + <_> + 8 + + 14 9 4 13 + <_> + 1 + + 12 46 8 2 + <_> + 5 + + 16 22 13 2 + <_> + 7 + + 25 22 2 8 + <_> + 2 + + 7 51 13 5 + <_> + 2 + + 20 61 7 2 + <_> + 3 + + 8 19 11 22 + <_> + 1 + + 10 55 12 1 + <_> + 7 + + 14 0 7 17 + <_> + 9 + + 14 12 2 21 + <_> + 4 + + 8 61 16 2 + <_> + 8 + + 16 12 1 5 + <_> + 0 + + 19 32 6 7 + <_> + 1 + + 22 27 6 29 + <_> + 4 + + 21 24 7 27 + <_> + 0 + + 15 40 12 4 + <_> + 4 + + 2 49 1 3 + <_> + 3 + + 8 57 14 1 + <_> + 7 + + 2 35 3 4 + <_> + 2 + + 19 18 4 13 + <_> + 5 + + 13 11 18 15 + <_> + 5 + + 12 50 10 6 + <_> + 2 + + 12 20 7 7 + <_> + 7 + + 14 40 3 1 + <_> + 9 + + 14 41 2 2 + <_> + 2 + + 16 10 7 47 + <_> + 5 + + 26 61 3 2 + <_> + 1 + + 12 53 10 7 + <_> + 9 + + 21 62 2 1 + <_> + 1 + + 18 19 1 5 + <_> + 1 + + 26 10 5 19 + <_> + 5 + + 30 36 1 12 + <_> + 4 + + 13 38 2 4 + <_> + 3 + + 12 7 5 9 + <_> + 9 + + 17 36 4 2 + <_> + 7 + + 6 61 6 2 + <_> + 5 + + 17 40 2 9 + <_> + 8 + + 17 61 14 2 + <_> + 7 + + 12 24 6 5 + <_> + 8 + + 12 11 8 1 + <_> + 1 + + 13 8 3 11 + <_> + 1 + + 16 1 12 2 + <_> + 2 + + 19 0 4 42 + <_> + 5 + + 16 7 13 45 + <_> + 3 + + 21 45 1 10 + <_> + 3 + + 8 49 19 7 + <_> + 0 + + 12 33 5 2 + <_> + 4 + + 15 42 4 4 + <_> + 1 + + 10 52 7 4 + <_> + 1 + + 7 19 18 3 + <_> + 3 + + 7 7 6 32 + <_> + 4 + + 1 9 9 26 + <_> + 4 + + 12 5 9 15 + <_> + 1 + + 12 24 6 2 + <_> + 3 + + 10 2 11 41 + <_> + 5 + + 7 59 24 3 + <_> + 2 + + 11 36 15 9 + <_> + 0 + + 4 46 2 7 + <_> + 4 + + 28 11 3 7 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 16 11 7 3 + <_> + 8 + + 29 13 2 24 + <_> + 2 + + 7 55 21 3 + <_> + 9 + + 14 60 3 1 + <_> + 9 + + 21 61 4 1 + <_> + 8 + + 13 57 1 6 + <_> + 4 + + 8 43 14 10 + <_> + 5 + + 12 33 4 5 + <_> + 3 + + 3 7 12 22 + <_> + 1 + + 6 20 23 35 + <_> + 5 + + 14 17 6 8 + <_> + 5 + + 21 1 1 36 + <_> + 7 + + 21 17 6 6 + <_> + 5 + + 20 1 7 5 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 15 17 2 5 + <_> + 9 + + 15 17 2 5 + <_> + 1 + + 13 54 6 3 + <_> + 4 + + 9 4 14 43 + <_> + 1 + + 21 51 7 4 + <_> + 4 + + 10 58 20 1 + <_> + 2 + + 5 51 13 5 + <_> + 4 + + 15 36 2 2 + <_> + 5 + + 5 62 14 1 + <_> + 4 + + 1 46 14 3 + <_> + 1 + + 10 55 17 7 + <_> + 7 + + 24 45 4 4 + <_> + 9 + + 30 45 1 13 + <_> + 0 + + 11 52 17 4 + <_> + 3 + + 23 34 7 15 + <_> + 0 + + 17 33 9 11 + <_> + 4 + + 6 31 7 2 + <_> + 7 + + 16 11 1 1 + <_> + 5 + + 17 21 7 1 + <_> + 3 + + 6 8 9 39 + <_> + 1 + + 13 21 6 2 + <_> + 4 + + 13 7 5 4 + <_> + 2 + + 20 16 2 4 + <_> + 1 + + 16 54 2 4 + <_> + 5 + + 2 30 1 28 + <_> + 1 + + 4 62 25 1 + <_> + 5 + + 25 4 1 51 + <_> + 5 + + 19 10 10 38 + <_> + 5 + + 9 61 15 2 + <_> + 7 + + 0 50 9 2 + <_> + 4 + + 19 37 2 8 + <_> + 7 + + 17 32 2 3 + <_> + 9 + + 14 0 10 7 + <_> + 2 + + 29 33 1 8 + <_> + 9 + + 15 17 2 5 + <_> + 8 + + 13 14 4 3 + <_> + 9 + + 27 48 2 6 + <_> + 8 + + 16 53 1 2 + <_> + 2 + + 29 42 1 12 + <_> + 0 + + 2 54 16 9 + <_> + 9 + + 15 17 2 26 + <_> + 0 + + 12 50 14 5 + <_> + 3 + + 24 36 1 26 + <_> + 2 + + 2 33 27 1 + <_> + 1 + + 11 19 1 18 + <_> + 1 + + 16 7 4 26 + <_> + 5 + + 29 28 2 25 + <_> + 1 + + 16 18 7 3 + <_> + 1 + + 10 12 21 7 + <_> + 1 + + 16 55 9 2 + <_> + 2 + + 24 53 7 7 + <_> + 0 + + 21 21 1 14 + <_> + 5 + + 1 44 27 8 + <_> + 7 + + 19 8 5 8 + <_> + 7 + + 23 54 1 1 + <_> + 5 + + 14 9 9 4 + <_> + 5 + + 11 35 11 1 + <_> + 1 + + 11 53 10 4 + <_> + 9 + + 25 59 5 4 + <_> + 2 + + 4 59 21 1 + <_> + 1 + + 18 46 3 5 + <_> + 2 + + 8 24 3 9 + <_> + 3 + + 7 43 11 16 + <_> + 8 + + 26 41 1 4 + <_> + 4 + + 0 52 16 11 + <_> + 9 + + 19 20 1 2 + <_> + 2 + + 12 49 15 2 + <_> + 8 + + 11 20 5 6 + <_> + 3 + + 0 56 31 4 + <_> + 4 + + 18 39 1 2 + <_> + 4 + + 10 24 18 8 + <_> + 5 + + 13 9 8 6 + <_> + 1 + + 11 21 14 32 + <_> + 5 + + 11 0 7 10 + <_> + 7 + + 24 49 2 2 + <_> + 3 + + 15 25 3 7 + <_> + 3 + + 8 16 4 29 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 12 14 8 13 + <_> + 8 + + 15 17 2 1 + <_> + 1 + + 18 20 3 7 + <_> + 2 + + 17 3 4 15 + <_> + 1 + + 0 19 21 3 + <_> + 7 + + 0 62 18 1 + <_> + 8 + + 18 30 1 2 + <_> + 4 + + 13 44 7 7 + <_> + 5 + + 16 46 10 3 + <_> + 1 + + 11 8 13 1 + <_> + 2 + + 21 56 3 4 + <_> + 8 + + 2 53 23 4 + <_> + 8 + + 15 10 2 49 + <_> + 2 + + 2 46 7 3 + <_> + 3 + + 20 38 2 11 + <_> + 1 + + 9 56 16 1 + <_> + 5 + + 21 18 2 12 + <_> + 7 + + 7 52 16 8 + <_> + 0 + + 13 18 3 1 + <_> + 3 + + 27 59 1 4 + <_> + 0 + + 11 42 11 2 + <_> + 1 + + 13 37 2 6 + <_> + 4 + + 6 14 5 9 + <_> + 2 + + 11 11 8 3 + <_> + 2 + + 17 21 1 16 + <_> + 2 + + 18 3 1 10 + <_> + 1 + + 14 53 3 9 + <_> + 5 + + 22 58 8 3 + <_> + 1 + + 17 33 3 24 + <_> + 9 + + 19 38 1 14 + <_> + 2 + + 14 62 15 1 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 17 29 8 7 + <_> + 7 + + 26 4 3 17 + <_> + 3 + + 16 32 4 7 + <_> + 1 + + 14 7 2 11 + <_> + 4 + + 14 8 5 1 + <_> + 2 + + 20 17 2 46 + <_> + 0 + + 2 61 29 2 + <_> + 2 + + 6 50 11 4 + <_> + 5 + + 3 60 14 3 + <_> + 4 + + 0 20 13 6 + <_> + 4 + + 10 13 4 13 + <_> + 7 + + 8 49 2 1 + <_> + 1 + + 13 21 3 2 + <_> + 1 + + 5 0 1 46 + <_> + 7 + + 14 1 7 17 + <_> + 3 + + 28 42 3 15 + <_> + 9 + + 30 36 1 2 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 17 19 2 4 + <_> + 9 + + 16 8 1 6 + <_> + 2 + + 22 47 5 7 + <_> + 1 + + 3 55 22 2 + <_> + 1 + + 13 41 1 13 + <_> + 7 + + 0 44 3 13 + <_> + 2 + + 7 35 8 10 + <_> + 8 + + 1 10 26 1 + <_> + 5 + + 9 53 19 8 + <_> + 4 + + 13 44 1 4 + <_> + 4 + + 6 28 7 18 + <_> + 2 + + 13 41 12 3 + <_> + 1 + + 8 6 15 1 + <_> + 0 + + 12 10 11 6 + <_> + 9 + + 27 1 2 12 + <_> + 0 + + 13 33 1 8 + <_> + 1 + + 9 8 8 8 + <_> + 0 + + 0 48 3 7 + <_> + 8 + + 8 55 12 2 + <_> + 8 + + 4 7 26 38 + <_> + 3 + + 16 33 4 7 + <_> + 7 + + 3 51 21 8 + <_> + 2 + + 14 9 10 50 + <_> + 3 + + 1 46 22 4 + <_> + 9 + + 16 28 2 18 + <_> + 3 + + 9 28 3 29 + <_> + 4 + + 0 52 1 8 + <_> + 1 + + 15 53 7 4 + <_> + 1 + + 6 13 9 25 + <_> + 4 + + 8 56 21 4 + <_> + 7 + + 24 48 3 4 + <_> + 2 + + 16 5 9 3 + <_> + 5 + + 11 6 17 27 + <_> + 7 + + 23 4 7 3 + <_> + 4 + + 13 40 6 7 + <_> + 0 + + 11 40 2 22 + <_> + 8 + + 14 12 3 4 + <_> + 5 + + 16 29 3 4 + <_> + 9 + + 12 11 6 5 + <_> + 5 + + 18 14 13 7 + <_> + 7 + + 7 0 1 6 + <_> + 4 + + 7 1 10 36 + <_> + 1 + + 11 8 12 1 + <_> + 5 + + 3 53 22 7 + <_> + 1 + + 9 55 15 1 + <_> + 0 + + 13 35 8 16 + <_> + 2 + + 9 16 6 6 + <_> + 0 + + 25 42 5 7 + <_> + 2 + + 4 6 16 10 + <_> + 5 + + 5 34 26 17 + <_> + 4 + + 9 37 17 1 + <_> + 1 + + 18 23 3 1 + <_> + 1 + + 15 53 7 4 + <_> + 0 + + 10 17 4 13 + <_> + 4 + + 6 53 24 4 + <_> + 7 + + 22 51 9 3 + <_> + 0 + + 0 47 1 15 + <_> + 5 + + 11 56 12 1 + <_> + 2 + + 6 51 12 7 + <_> + 1 + + 3 42 6 8 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 13 12 9 15 + <_> + 8 + + 14 17 4 2 + <_> + 0 + + 13 33 1 8 + <_> + 3 + + 2 29 11 8 + <_> + 2 + + 12 5 8 9 + <_> + 1 + + 17 43 4 9 + <_> + 0 + + 6 58 7 1 + <_> + 4 + + 26 19 1 36 + <_> + 9 + + 17 3 12 3 + <_> + 7 + + 10 20 3 3 + <_> + 3 + + 5 10 12 17 + <_> + 9 + + 11 19 9 1 + <_> + 9 + + 0 27 11 9 + <_> + 8 + + 14 12 3 4 + <_> + 0 + + 13 44 7 8 + <_> + 0 + + 4 39 1 10 + <_> + 5 + + 10 58 13 5 + <_> + 0 + + 17 17 3 2 + <_> + 3 + + 8 38 17 7 + <_> + 0 + + 11 1 19 5 + <_> + 1 + + 13 5 6 12 + <_> + 3 + + 17 27 6 3 + <_> + 1 + + 6 6 20 1 + <_> + 5 + + 20 24 2 10 + <_> + 1 + + 7 21 21 1 + <_> + 3 + + 8 7 8 47 + <_> + 7 + + 26 62 1 1 + <_> + 8 + + 0 61 21 2 + <_> + 5 + + 16 20 13 5 + <_> + 4 + + 15 36 4 1 + <_> + 9 + + 15 34 8 4 + <_> + 0 + + 24 39 3 8 + <_> + 3 + + 10 4 1 53 + <_> + 7 + + 24 8 4 31 + <_> + 1 + + 18 29 4 6 + <_> + 1 + + 19 48 1 11 + <_> + 8 + + 7 36 8 6 + <_> + 2 + + 30 19 1 13 + <_> + 5 + + 21 19 2 20 + <_> + 2 + + 20 16 5 16 + <_> + 4 + + 9 8 18 9 + <_> + 5 + + 5 42 7 5 + <_> + 5 + + 14 40 12 10 + <_> + 5 + + 3 41 7 10 + <_> + 3 + + 7 59 24 1 + <_> + 1 + + 25 31 6 23 + <_> + 8 + + 2 1 14 7 + <_> + 8 + + 12 12 8 3 + <_> + 1 + + 15 53 7 4 + <_> + 8 + + 13 17 5 3 + <_> + 3 + + 7 50 11 6 + <_> + 0 + + 1 21 4 37 + <_> + 4 + + 12 39 8 10 + <_> + 0 + + 12 10 11 6 + <_> + 7 + + 8 8 22 20 + <_> + 2 + + 15 32 3 2 + <_> + 2 + + 14 42 7 2 + <_> + 2 + + 21 25 1 19 + <_> + 3 + + 0 16 6 38 + <_> + 2 + + 21 51 1 9 + <_> + 1 + + 21 45 1 17 + <_> + 9 + + 29 0 2 6 + <_> + 9 + + 8 34 11 10 + <_> + 3 + + 3 45 25 3 + <_> + 8 + + 13 14 4 3 + <_> + 1 + + 19 20 3 15 + <_> + 1 + + 3 11 17 6 + <_> + 4 + + 25 46 5 2 + <_> + 1 + + 13 18 7 7 + <_> + 0 + + 14 49 16 5 + <_> + 2 + + 11 12 12 2 + <_> + 7 + + 5 54 3 3 + <_> + 4 + + 1 47 18 3 + <_> + 2 + + 9 59 15 3 + <_> + 0 + + 19 29 4 24 + <_> + 3 + + 4 56 27 4 + <_> + 3 + + 20 34 1 11 + <_> + 0 + + 10 30 3 31 + <_> + 4 + + 22 23 6 28 + <_> + 3 + + 4 24 23 25 + <_> + 3 + + 6 22 10 5 + <_> + 4 + + 1 20 15 15 + <_> + 1 + + 28 13 2 24 + <_> + 1 + + 9 56 16 1 + <_> + 3 + + 13 21 3 10 + <_> + 7 + + 7 62 3 1 + <_> + 8 + + 14 12 3 4 + <_> + 7 + + 16 46 2 3 + <_> + 1 + + 2 49 9 12 + <_> + 3 + + 8 7 6 23 + <_> + 1 + + 22 0 2 29 + <_> + 5 + + 0 1 30 2 + <_> + 0 + + 14 41 1 18 + <_> + 5 + + 27 36 3 27 + <_> + 3 + + 15 45 12 18 + <_> + 3 + + 8 49 19 7 + <_> + 1 + + 9 28 5 7 + <_> + 4 + + 27 24 3 10 + <_> + 8 + + 9 62 7 1 + <_> + 8 + + 17 13 2 4 + <_> + 2 + + 22 42 1 13 + <_> + 9 + + 15 17 2 5 + <_> + 9 + + 26 9 1 17 + <_> + 9 + + 6 35 3 9 + <_> + 5 + + 4 62 7 1 + <_> + 7 + + 18 53 11 1 + <_> + 7 + + 10 61 1 1 + <_> + 1 + + 15 33 5 21 + <_> + 0 + + 20 23 5 22 + <_> + 2 + + 10 2 4 50 + <_> + 0 + + 13 25 5 7 + <_> + 2 + + 11 25 16 21 + <_> + 1 + + 14 11 8 9 + <_> + 7 + + 5 1 3 13 + <_> + 1 + + 6 43 3 18 + <_> + 2 + + 8 44 12 6 + <_> + 4 + + 9 18 5 8 + <_> + 9 + + 10 41 12 4 + <_> + 2 + + 20 17 2 14 + <_> + 8 + + 16 12 1 5 + <_> + 0 + + 0 48 3 7 + <_> + 3 + + 11 9 15 7 + <_> + 3 + + 4 53 19 6 + <_> + 5 + + 13 9 8 5 + <_> + 4 + + 28 39 2 3 + <_> + 4 + + 15 42 4 4 + <_> + 3 + + 7 38 11 14 + <_> + 8 + + 14 5 1 3 + <_> + 1 + + 13 21 6 2 + <_> + 7 + + 12 24 9 6 + <_> + 1 + + 11 53 10 4 + <_> + 9 + + 3 32 3 9 + <_> + 4 + + 21 58 9 5 + <_> + 2 + + 8 12 19 2 + <_> + 1 + + 15 53 3 9 + <_> + 3 + + 19 58 3 2 + <_> + 1 + + 17 43 4 9 + <_> + 2 + + 0 42 30 2 + <_> + 7 + + 9 0 8 12 + <_> + 5 + + 1 39 8 11 + <_> + 5 + + 21 2 1 52 + <_> + 3 + + 27 37 4 5 + <_> + 2 + + 19 54 8 7 + <_> + 4 + + 14 8 5 1 + <_> + 5 + + 26 38 4 12 + <_> + 1 + + 22 45 1 13 + <_> + 8 + + 14 12 3 4 + <_> + 9 + + 12 17 4 3 + <_> + 8 + + 9 7 5 1 + <_> + 0 + + 13 42 7 1 + <_> + 2 + + 14 18 7 15 + <_> + 4 + + 11 38 10 3 + <_> + 4 + + 10 8 14 4 + <_> + 5 + + 11 45 2 7 + <_> + 9 + + 13 2 12 4 + <_> + 9 + + 15 16 8 6 + <_> + 9 + + 11 8 7 6 + <_> + 2 + + 15 60 15 1 + <_> + 2 + + 7 50 13 2 + <_> + 1 + + 1 33 29 2 + <_> + 5 + + 12 33 4 5 + <_> + 1 + + 11 53 10 4 + <_> + 4 + + 18 3 3 50 + <_> + 2 + + 6 59 20 3 + <_> + 2 + + 17 12 9 24 + <_> + 0 + + 3 34 1 14 + <_> + 3 + + 26 34 3 18 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 16 11 7 3 + <_> + 8 + + 20 39 2 4 + <_> + 4 + + 10 18 16 5 + <_> + 1 + + 16 11 4 7 + <_> + 5 + + 13 61 15 2 + <_> + 8 + + 17 11 1 2 + <_> + 1 + + 18 17 2 9 + <_> + 4 + + 6 53 19 3 + <_> + 3 + + 8 13 8 7 + <_> + 0 + + 7 15 9 7 + <_> + 9 + + 15 26 4 9 + <_> + 3 + + 23 39 2 24 + <_> + 0 + + 13 36 13 2 + <_> + 5 + + 17 40 8 16 + <_> + 5 + + 15 3 11 1 + <_> + 5 + + 5 53 22 8 + <_> + 5 + + 9 25 2 11 + <_> + 2 + + 2 51 17 6 + <_> + 2 + + 13 53 4 3 + <_> + 5 + + 13 30 4 1 + <_> + 9 + + 27 55 1 5 + <_> + 5 + + 1 58 17 2 + <_> + 0 + + 7 44 13 6 + <_> + 5 + + 19 19 7 3 + <_> + 7 + + 26 18 1 4 + <_> + 7 + + 25 1 4 18 + <_> + 7 + + 22 53 6 2 + <_> + 5 + + 6 37 20 18 + <_> + 1 + + 12 62 12 1 + <_> + 1 + + 15 53 7 4 + <_> + 1 + + 26 61 1 2 + <_> + 1 + + 14 46 4 4 + <_> + 3 + + 8 42 6 15 + <_> + 0 + + 12 43 2 6 + <_> + 2 + + 17 19 1 8 + <_> + 0 + + 17 19 2 2 + <_> + 3 + + 5 22 10 4 + <_> + 2 + + 13 36 1 19 + <_> + 2 + + 11 35 14 4 + <_> + 4 + + 3 57 27 6 + <_> + 8 + + 6 52 24 2 + <_> + 5 + + 13 9 8 6 + <_> + 9 + + 15 20 3 16 + <_> + 0 + + 21 6 4 4 + <_> + 5 + + 11 56 12 1 + <_> + 8 + + 15 5 1 25 + <_> + 9 + + 30 1 1 2 + <_> + 5 + + 13 15 2 10 + <_> + 5 + + 4 10 19 20 + <_> + 7 + + 11 60 2 3 + <_> + 9 + + 16 18 2 1 + <_> + 9 + + 24 28 3 10 + <_> + 1 + + 12 24 6 2 + <_> + 1 + + 14 5 6 28 + <_> + 7 + + 14 36 1 3 + <_> + 1 + + 18 5 4 40 + <_> + 0 + + 12 50 16 6 + <_> + 1 + + 2 0 11 5 + <_> + 3 + + 21 45 1 10 + <_> + 2 + + 14 49 10 2 + <_> + 2 + + 4 32 2 8 + <_> + 8 + + 29 25 2 38 + <_> + 4 + + 1 13 19 8 + <_> + 3 + + 0 37 25 24 + <_> + 0 + + 9 11 20 3 + <_> + 4 + + 7 34 14 3 + <_> + 3 + + 28 56 1 5 + <_> + 4 + + 10 20 17 14 + <_> + 1 + + 8 55 18 1 + <_> + 8 + + 16 61 7 2 + <_> + 4 + + 16 48 13 10 + <_> + 8 + + 12 12 8 3 + <_> + 5 + + 17 18 9 12 + <_> + 9 + + 12 35 9 11 + <_> + 3 + + 3 19 8 23 + <_> + 4 + + 28 15 3 36 + <_> + 1 + + 26 6 2 18 + <_> + 0 + + 3 54 3 4 + <_> + 0 + + 13 50 3 7 + <_> + 7 + + 17 32 2 3 + <_> + 5 + + 8 56 17 4 + <_> + 4 + + 0 29 13 10 + <_> + 1 + + 13 14 13 3 + <_> + 3 + + 10 15 1 42 + <_> + 7 + + 30 13 1 6 + <_> + 2 + + 17 28 1 9 + <_> + 5 + + 20 12 4 28 + <_> + 0 + + 4 45 26 18 + <_> + 5 + + 15 0 11 13 + <_> + 1 + + 13 20 1 4 + <_> + 0 + + 16 8 7 54 + <_> + 3 + + 8 53 12 1 + <_> + 9 + + 15 57 2 5 + <_> + 8 + + 29 37 1 6 + <_> + 0 + + 12 0 1 12 + <_> + 8 + + 11 13 5 1 + <_> + 2 + + 7 35 3 2 + <_> + 8 + + 4 15 10 6 + <_> + 5 + + 19 56 7 5 + <_> + 1 + + 20 49 9 5 + <_> + 5 + + 16 48 15 8 + <_> + 1 + + 17 45 2 3 + <_> + 1 + + 1 10 15 2 + <_> + 8 + + 14 5 1 3 + <_> + 8 + + 3 23 28 14 + <_> + 4 + + 16 51 10 4 + <_> + 9 + + 18 40 1 7 + <_> + 4 + + 15 36 4 1 + <_> + 5 + + 15 46 13 8 + <_> + 4 + + 7 54 11 1 + <_> + 3 + + 2 55 18 5 + <_> + 2 + + 9 52 10 8 + <_> + 4 + + 13 30 5 7 + <_> + 8 + + 17 13 2 4 + <_> + 1 + + 17 16 1 5 + <_> + 8 + + 22 6 5 12 + <_> + 3 + + 15 13 12 27 + <_> + 2 + + 11 11 12 6 + <_> + 1 + + 10 62 16 1 + <_> + 4 + + 12 47 11 1 + <_> + 1 + + 25 12 5 15 + <_> + 0 + + 21 26 4 8 + <_> + 3 + + 13 21 3 10 + <_> + 2 + + 17 3 4 15 + <_> + 2 + + 15 37 3 10 + <_> + 7 + + 2 55 14 2 + <_> + 2 + + 12 37 3 4 + <_> + 7 + + 16 11 1 1 + <_> + 7 + + 2 56 21 3 + <_> + 1 + + 4 20 20 8 + <_> + 3 + + 8 27 6 28 + <_> + 2 + + 16 58 1 5 + <_> + 9 + + 11 19 9 1 + <_> + 1 + + 28 45 2 9 + <_> + 8 + + 17 11 1 2 + <_> + 0 + + 3 39 4 10 + <_> + 3 + + 15 10 11 7 + <_> + 1 + + 11 8 12 1 + <_> + 4 + + 2 38 18 24 + <_> + 1 + + 12 54 17 1 + <_> + 1 + + 14 56 14 1 + <_> + 7 + + 25 18 2 14 + <_> + 4 + + 25 0 3 6 + <_> + 0 + + 17 18 3 1 + <_> + 9 + + 1 8 25 3 + <_> + 4 + + 8 14 7 4 + <_> + 4 + + 18 32 2 26 + <_> + 2 + + 12 41 13 15 + <_> + 2 + + 5 24 11 2 + <_> + 9 + + 13 39 5 1 + <_> + 9 + + 1 36 13 3 + <_> + 2 + + 21 8 4 8 + <_> + 5 + + 16 5 9 17 + <_> + 5 + + 6 37 22 26 + <_> + 0 + + 27 49 2 1 + <_> + 3 + + 6 37 15 10 + <_> + 5 + + 19 38 1 5 + <_> + 9 + + 13 24 2 5 + <_> + 8 + + 14 9 4 13 + <_> + 2 + + 10 38 12 2 + <_> + 8 + + 8 3 3 12 + <_> + 3 + + 2 56 12 1 + <_> + 8 + + 14 12 3 4 + <_> + 2 + + 14 23 3 6 + <_> + 1 + + 10 37 5 1 + <_> + 1 + + 6 53 7 4 + <_> + 4 + + 7 39 11 12 + <_> + 3 + + 6 11 9 11 + <_> + 7 + + 18 2 2 10 + <_> + 4 + + 10 21 2 5 + <_> + 0 + + 29 31 1 1 + <_> + 1 + + 16 7 4 26 + <_> + 5 + + 23 48 7 12 + <_> + 1 + + 18 19 1 5 + <_> + 4 + + 19 24 12 21 + <_> + 4 + + 20 5 8 39 + <_> + 1 + + 7 14 17 4 + <_> + 5 + + 7 44 3 17 + <_> + 1 + + 14 52 5 6 + <_> + 7 + + 15 24 2 18 + <_> + 9 + + 14 18 3 9 + <_> + 9 + + 11 61 8 1 + <_> + 5 + + 11 15 5 3 + <_> + 5 + + 2 18 22 3 + <_> + 4 + + 8 60 7 3 + <_> + 2 + + 6 50 11 4 + <_> + 1 + + 13 55 18 3 + <_> + 2 + + 20 58 2 2 + <_> + 9 + + 30 39 1 3 + <_> + 5 + + 13 26 5 4 + <_> + 0 + + 19 15 3 20 + <_> + 0 + + 14 6 2 52 + <_> + 4 + + 11 36 10 5 + <_> + 4 + + 22 31 1 27 + <_> + 4 + + 13 7 5 4 + <_> + 1 + + 13 5 6 12 + <_> + 4 + + 9 12 3 20 + <_> + 5 + + 10 38 14 3 + <_> + 4 + + 13 41 10 22 + <_> + 4 + + 10 41 11 2 + <_> + 1 + + 14 54 6 8 + <_> + 4 + + 19 3 1 51 + <_> + 0 + + 14 28 5 5 + <_> + 0 + + 10 28 18 6 + <_> + 4 + + 0 6 21 52 + <_> + 3 + + 16 33 4 4 + <_> + 3 + + 10 15 1 42 + <_> + 3 + + 28 33 2 10 + <_> + 5 + + 0 47 13 2 + <_> + 8 + + 14 9 6 8 + <_> + 4 + + 10 52 13 3 + <_> + 8 + + 19 41 2 1 + <_> + 2 + + 9 49 20 1 + <_> + 0 + + 13 57 18 1 + <_> + 7 + + 4 51 20 7 + <_> + 4 + + 22 29 6 7 + <_> + 3 + + 8 59 15 4 + <_> + 2 + + 29 59 1 1 + <_> + 9 + + 27 6 4 3 + <_> + 0 + + 14 18 2 4 + <_> + 9 + + 18 2 1 37 + <_> + 2 + + 11 4 8 13 + <_> + 8 + + 25 62 5 1 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 3 62 28 1 + <_> + 0 + + 5 48 17 2 + <_> + 4 + + 15 39 6 14 + <_> + 5 + + 5 62 10 1 + <_> + 7 + + 5 52 26 2 + <_> + 3 + + 19 20 3 7 + <_> + 2 + + 15 14 2 6 + <_> + 5 + + 6 24 4 22 + <_> + 4 + + 12 45 6 6 + <_> + 1 + + 18 55 2 2 + <_> + 4 + + 9 4 14 43 + <_> + 3 + + 10 8 10 12 + <_> + 5 + + 21 1 1 36 + <_> + 7 + + 7 24 2 14 + <_> + 0 + + 13 35 8 16 + <_> + 3 + + 21 45 1 10 + <_> + 2 + + 12 33 7 23 + <_> + 0 + + 22 40 4 9 + <_> + 1 + + 18 20 3 7 + <_> + 1 + + 2 12 20 4 + <_> + 1 + + 7 20 11 3 + <_> + 8 + + 12 12 8 3 + <_> + 1 + + 2 1 27 2 + <_> + 8 + + 11 51 7 12 + <_> + 7 + + 13 12 10 1 + <_> + 9 + + 16 18 2 1 + <_> + 9 + + 30 4 1 1 + <_> + 0 + + 12 10 11 6 + <_> + 4 + + 1 40 28 20 + <_> + 7 + + 5 62 8 1 + <_> + 1 + + 14 53 3 9 + <_> + 5 + + 7 50 5 7 + <_> + 0 + + 16 17 4 5 + <_> + 2 + + 19 54 8 5 + <_> + 3 + + 6 22 10 5 + <_> + 9 + + 10 38 2 9 + <_> + 0 + + 13 25 5 7 + <_> + 0 + + 16 24 11 19 + <_> + 7 + + 30 43 1 7 + <_> + 8 + + 12 12 8 3 + <_> + 8 + + 16 42 1 11 + <_> + 1 + + 27 37 4 23 + <_> + 3 + + 10 15 1 42 + <_> + 4 + + 11 22 1 10 + <_> + 1 + + 14 6 5 8 + <_> + 0 + + 1 48 3 1 + <_> + 0 + + 16 50 12 2 + <_> + 1 + + 3 45 5 5 + <_> + 8 + + 29 36 1 20 + <_> + 7 + + 3 26 21 19 + <_> + 8 + + 30 22 1 6 + <_> + 4 + + 12 42 8 8 + <_> + 5 + + 19 5 4 46 + <_> + 5 + + 23 36 4 20 + <_> + 1 + + 15 52 2 5 + <_> + 4 + + 9 29 11 7 + <_> + 0 + + 27 35 1 1 + <_> + 0 + + 13 33 1 8 + <_> + 3 + + 10 38 7 3 + <_> + 3 + + 23 45 4 4 + <_> + 2 + + 17 37 2 17 + <_> + 7 + + 16 11 1 1 + <_> + 3 + + 18 0 8 36 + <_> + 1 + + 26 8 5 20 + <_> + 4 + + 10 59 13 1 + <_> + 4 + + 24 7 6 14 + <_> + 4 + + 13 8 10 5 + <_> + 2 + + 0 42 2 10 + <_> + 7 + + 2 12 18 1 + <_> + 1 + + 9 56 8 1 + <_> + 1 + + 18 17 2 9 + <_> + 8 + + 14 9 4 13 + <_> + 2 + + 17 13 6 14 + <_> + 0 + + 10 35 1 23 + <_> + 2 + + 24 10 3 21 + <_> + 3 + + 6 19 5 34 + <_> + 1 + + 7 45 1 4 + <_> + 2 + + 16 19 2 6 + <_> + 3 + + 24 14 2 30 + <_> + 9 + + 12 61 16 1 + <_> + 5 + + 23 27 4 10 + <_> + 5 + + 4 62 7 1 + <_> + 3 + + 3 49 10 6 + <_> + 9 + + 17 32 1 5 + <_> + 9 + + 30 4 1 1 + <_> + 3 + + 27 18 1 4 + <_> + 4 + + 12 1 11 46 + <_> + 1 + + 11 8 13 1 + <_> + 1 + + 0 9 16 1 + <_> + 2 + + 9 22 16 24 + <_> + 3 + + 16 32 4 7 + <_> + 0 + + 17 25 8 21 + <_> + 0 + + 3 55 22 6 + <_> + 3 + + 17 1 1 6 + <_> + 5 + + 13 9 8 5 + <_> + 9 + + 19 28 1 18 + <_> + 1 + + 11 55 2 7 + <_> + 1 + + 13 13 12 5 + <_> + 4 + + 8 60 7 3 + <_> + 0 + + 11 38 4 12 + <_> + 4 + + 12 34 6 15 + <_> + 5 + + 8 40 4 22 + <_> + 1 + + 22 45 1 13 + <_> + 5 + + 3 33 10 19 + <_> + 0 + + 29 45 2 7 + <_> + 0 + + 17 51 7 5 + <_> + 3 + + 15 53 2 1 + <_> + 4 + + 5 59 3 4 + <_> + 8 + + 17 13 2 4 + <_> + 1 + + 2 1 27 2 + <_> + 8 + + 10 42 14 13 + <_> + 1 + + 10 4 7 14 + <_> + 4 + + 11 25 11 10 + <_> + 9 + + 11 19 9 1 + <_> + 9 + + 12 1 13 12 + <_> + 1 + + 11 19 1 4 + <_> + 9 + + 14 7 5 12 + <_> + 8 + + 10 23 2 5 + <_> + 5 + + 16 23 1 10 + <_> + 2 + + 8 62 20 1 + <_> + 4 + + 9 16 16 3 + <_> + 7 + + 29 27 1 11 + <_> + 7 + + 3 60 28 3 + <_> + 4 + + 15 44 2 2 + <_> + 5 + + 16 62 1 1 + <_> + 8 + + 17 21 1 4 + <_> + 0 + + 18 33 9 11 + <_> + 3 + + 17 35 3 5 + <_> + 2 + + 10 51 8 5 + <_> + 3 + + 28 40 3 7 + <_> + 7 + + 21 42 1 18 + <_> + 9 + + 16 18 2 1 + <_> + 2 + + 20 15 1 8 + <_> + 4 + + 14 8 5 1 + <_> + 5 + + 14 0 12 17 + <_> + 4 + + 9 18 5 8 + <_> + 8 + + 12 9 6 12 + <_> + 9 + + 26 32 1 7 + <_> + 8 + + 0 14 1 8 + <_> + 7 + + 4 1 14 16 + <_> + 2 + + 11 62 10 1 + <_> + 3 + + 2 18 12 10 + <_> + 7 + + 29 22 2 2 + <_> + 3 + + 13 15 13 15 + <_> + 9 + + 12 38 5 1 + <_> + 2 + + 8 35 6 11 + <_> + 7 + + 6 36 14 2 + <_> + 4 + + 13 36 3 4 + <_> + 0 + + 7 19 22 6 + <_> + 2 + + 15 41 4 15 + <_> + 8 + + 14 12 3 4 + <_> + 8 + + 12 24 8 1 + <_> + 0 + + 6 55 6 1 + <_> + 8 + + 13 17 5 3 + <_> + 8 + + 12 12 8 3 + <_> + 2 + + 24 44 3 7 + <_> + 0 + + 2 39 16 2 + <_> + 1 + + 15 54 1 3 + <_> + 9 + + 17 17 1 14 + <_> + 8 + + 13 56 1 1 + <_> + 1 + + 11 19 11 1 + <_> + 3 + + 30 3 1 43 + <_> + 7 + + 15 57 12 1 + <_> + 2 + + 29 32 2 26 + <_> + 7 + + 16 38 2 4 + <_> + 0 + + 21 25 1 16 + <_> + 0 + + 4 46 2 7 + <_> + 7 + + 26 13 5 4 + <_> + 3 + + 0 48 17 9 + <_> + 1 + + 12 32 5 20 + <_> + 2 + + 10 57 10 4 + <_> + 7 + + 24 49 2 2 + <_> + 3 + + 15 25 4 8 + <_> + 0 + + 11 11 9 6 + <_> + 4 + + 18 18 1 33 + <_> + 3 + + 10 0 5 29 + <_> + 2 + + 18 13 7 9 + <_> + 4 + + 2 59 13 4 + <_> + 1 + + 15 53 7 4 + <_> + 2 + + 11 49 16 2 + <_> + 3 + + 4 56 15 3 + <_> + 4 + + 19 21 6 38 + <_> + 1 + + 6 53 7 4 + <_> + 5 + + 14 19 1 9 + <_> + 2 + + 13 22 11 17 + <_> + 1 + + 14 7 3 12 + <_> + 1 + + 13 20 1 4 + <_> + 4 + + 5 19 4 14 + <_> + 4 + + 9 35 3 8 + <_> + 8 + + 16 12 1 5 + <_> + 9 + + 29 62 2 1 + <_> + 8 + + 18 51 1 5 + <_> + 2 + + 13 58 13 1 + <_> + 2 + + 6 50 16 3 + <_> + 7 + + 15 27 5 2 + <_> + 5 + + 0 43 11 13 + <_> + 2 + + 7 29 3 16 + <_> + 3 + + 11 42 7 6 + <_> + 4 + + 18 39 1 2 + <_> + 2 + + 21 55 10 2 + <_> + 0 + + 27 37 4 2 + <_> + 0 + + 13 37 15 7 + <_> + 1 + + 1 28 26 18 + <_> + 0 + + 12 38 1 6 + <_> + 5 + + 14 9 9 4 + <_> + 7 + + 18 8 7 2 + <_> + 2 + + 18 6 13 1 + <_> + 7 + + 8 59 23 2 + <_> + 5 + + 1 57 29 5 + <_> + 8 + + 6 20 23 7 + <_> + 1 + + 12 53 4 10 + <_> + 0 + + 13 14 2 12 + <_> + 8 + + 10 62 7 1 + <_> + 9 + + 30 33 1 3 + <_> + 7 + + 15 12 2 5 + <_> + 9 + + 17 14 2 38 + <_> + 5 + + 20 17 1 25 + <_> + 1 + + 11 0 5 1 + <_> + 0 + + 19 37 5 23 + <_> + 7 + + 2 5 1 27 + <_> + 2 + + 22 48 1 9 + <_> + 5 + + 18 25 2 13 + <_> + 3 + + 8 11 6 20 + <_> + 1 + + 0 29 27 1 + <_> + 3 + + 15 21 2 9 + <_> + 2 + + 16 37 13 18 + <_> + 0 + + 2 38 3 21 + <_> + 5 + + 14 31 3 21 + <_> + 4 + + 10 8 7 16 + <_> + 1 + + 7 29 21 12 + <_> + 1 + + 25 47 4 14 + + From 4622aea86ad845307ba88dd8232893fcb7c56708 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 17 Jan 2013 20:36:39 +0400 Subject: [PATCH 52/82] ROC test: add overlap calculation according to Pascal criteria --- apps/sft/misk/roc_test.py | 7 ++----- apps/sft/misk/sft.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index 0355ca3a7f..7aae82efc8 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -54,13 +54,10 @@ if __name__ == "__main__": sft.draw_rects(img, boxes, (255, 0, 0), lambda x, y : y) frame = frame + 1 - - # sample = samples[] - - - rects, confs = cascade.detect(img, rois = None) + fp = sft.match(boxes, rects, confs) + # # draw results if rects is not None: sft.draw_rects(img, rects[0], (0, 255, 0)) diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index 6a6e2fea77..3e9ee88150 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import cv2, re, glob +import numpy as np def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: @@ -12,6 +13,24 @@ class Sample: self.image = img self.bbs = bb +class Detection: + def __init__(self, bb, conf): + self.bb = bb + self.conf = conf + + # we use rect-stype for dt and box style for gt. ToDo: fix it + def overlap(self, b): + a = self.bb + print "HERE:", a, b + w = min( a[0] + a[2], b[0] + b[2]) - max(a[0], b[0]); + h = min( a[1] + a[3], b[1] + b[3]) - max(a[1], b[1]); + + cross_area = 0.0 if (w < 0 or h < 0) else float(w * h) + union_area = (a[2] * a[3]) + ((b[2] - b[0]) * (b[3] - b[1])) - cross_area; + + return cross_area / union_area; + + def parse_inria(ipath, f): bbs = [] path = None @@ -39,4 +58,17 @@ def parse_idl(f): l = re.sub(r"\:", ":[", l) l = re.sub(r"(\;|\.)$", "]}", l) map.update(eval(l)) - return map \ No newline at end of file + return map + +def match(gts, rects, confs): + if rects is None: + return 0 + + dts = zip(*[rects.tolist(), confs.tolist()]) + dts = zip(dts[0][0], dts[0][1]) + dts = [Detection(r,c) for r, c in dts] + + for dt in dts: + for gt in gts: + overlap = dt.overlap(gt) + print overlap \ No newline at end of file From 18df46fbe972280844bb2bb9bb1648274a04bc00 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 18 Jan 2013 12:22:03 +0400 Subject: [PATCH 53/82] add plotting function (matplotlib required) --- apps/sft/misk/roc_test.py | 6 ++- apps/sft/misk/sft.py | 82 +++++++++++++++++++++++++++++++++------ 2 files changed, 75 insertions(+), 13 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index 7aae82efc8..2c5386fcd8 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -63,5 +63,7 @@ if __name__ == "__main__": sft.draw_rects(img, rects[0], (0, 255, 0)) cv2.imshow("result", img); - if (cv2.waitKey (5) != -1): - break; \ No newline at end of file + if (cv2.waitKey (0) == 27): + break; + + # sft.plot_curve() \ No newline at end of file diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index 3e9ee88150..2d3782c95d 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -2,33 +2,67 @@ import cv2, re, glob import numpy as np +import matplotlib.pyplot as plt + +def plot_curve(): + + fig, ax = plt.subplots() + fig.canvas.draw() + + x = np.linspace(pow(10,-4), pow(10,1), 101) + y = 1 - x + + plt.semilogy(x,y,color='m',linewidth=2) + plt.xlabel("fppi") + plt.ylabel("miss rate") + plt.title("ROC curve Bahnhof") + + plt.yticks( [0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.64, 0.80]) + ylabels = [item.get_text() for item in ax.get_yticklabels()] + ax.set_yticklabels( ylabels ) + plt.grid(True) + + # plt.xticks( [pow(10, -4), pow(10, -3), pow(10, -2), pow(10, -1), pow(10, 0), pow(10, 0)]) + # xlabels = [item.get_text() for item in ax.get_xticklabels()] + # ax.set_xticklabels( xlabels ) + + plt.xscale('log') + plt.show() + + def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: for x1, y1, x2, y2 in rects: cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) -class Sample: - def __init__(self, bbs, img): - self.image = img - self.bbs = bb +class Annotation: + def __init__(self, bb): + self.bb = bb class Detection: def __init__(self, bb, conf): self.bb = bb self.conf = conf + self.matched = False + + # def crop(self): + # rel_scale = self.bb[1] / 128 + # we use rect-stype for dt and box style for gt. ToDo: fix it def overlap(self, b): a = self.bb - print "HERE:", a, b - w = min( a[0] + a[2], b[0] + b[2]) - max(a[0], b[0]); - h = min( a[1] + a[3], b[1] + b[3]) - max(a[1], b[1]); + w = min( a[0] + a[2], b[2]) - max(a[0], b[0]); + h = min( a[1] + a[3], b[3]) - max(a[1], b[1]); cross_area = 0.0 if (w < 0 or h < 0) else float(w * h) union_area = (a[2] * a[3]) + ((b[2] - b[0]) * (b[3] - b[1])) - cross_area; - return cross_area / union_area; + return cross_area / union_area + + def mark_matched(self): + self.matched = True def parse_inria(ipath, f): @@ -64,11 +98,37 @@ def match(gts, rects, confs): if rects is None: return 0 + fp = 0 + fn = 0 + dts = zip(*[rects.tolist(), confs.tolist()]) dts = zip(dts[0][0], dts[0][1]) dts = [Detection(r,c) for r, c in dts] - for dt in dts: - for gt in gts: + for gt in gts: + + # exclude small + if gt[2] - gt[0] < 27: + continue + + matched = False + + for dt in dts: + # dt.crop() overlap = dt.overlap(gt) - print overlap \ No newline at end of file + print dt.bb, "vs", gt, overlap + if overlap > 0.5: + dt.mark_matched() + matched = True + print "matched ", dt.bb, gt + + if not matched: + fn = fn + 1 + + print "fn", fn + + for dt in dts: + if not dt.matched: + fp = fp + 1 + + print "fp", fp From d1952f28d921ecefa9a3a98b1df9625d21b32663 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Sat, 19 Jan 2013 21:25:09 +0400 Subject: [PATCH 54/82] add cropping and aspect ratio normalization --- apps/sft/misk/roc_test.py | 10 ++++++---- apps/sft/misk/sft.py | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index 2c5386fcd8..ef2a7ce3bd 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -40,6 +40,7 @@ if __name__ == "__main__": frame = 0 pattern = args.input camera = cv2.VideoCapture(args.input) + while True: ret, img = camera.read() if not ret: @@ -50,17 +51,18 @@ if __name__ == "__main__": _, tail = os.path.split(name) boxes = samples[tail] + boxes = sft.norm_acpect_ratio(boxes, 0.5) + if boxes is not None: sft.draw_rects(img, boxes, (255, 0, 0), lambda x, y : y) frame = frame + 1 rects, confs = cascade.detect(img, rois = None) - fp = sft.match(boxes, rects, confs) + dt_old = sft.match(boxes, rects, confs) - # # draw results - if rects is not None: - sft.draw_rects(img, rects[0], (0, 255, 0)) + if dt_old is not None: + sft.draw_dt(img, dt_old, (0, 255, 0)) cv2.imshow("result", img); if (cv2.waitKey (0) == 27): diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index 2d3782c95d..f4a1ba5f69 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -29,13 +29,25 @@ def plot_curve(): plt.xscale('log') plt.show() - +def crop_rect(rect, factor): + val_x = factor * float(rect[2]) + val_y = factor * float(rect[3]) + x = [int(rect[0] + val_x), int(rect[1] + val_y), int(rect[2] - 2.0 * val_x), int(rect[3] - 2.0 * val_y)] + return x def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: for x1, y1, x2, y2 in rects: cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) +def draw_dt(img, dts, color, l = lambda x, y : x + y): + if dts is not None: + for dt in dts: + bb = dt.bb + x1, y1, x2, y2 = dt.bb[0], dt.bb[1], dt.bb[2], dt.bb[3] + + cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) + class Annotation: def __init__(self, bb): self.bb = bb @@ -49,6 +61,10 @@ class Detection: # def crop(self): # rel_scale = self.bb[1] / 128 + def crop(self, factor): + print "was", self.bb + self.bb = crop_rect(self.bb, factor) + print "bec", self.bb # we use rect-stype for dt and box style for gt. ToDo: fix it def overlap(self, b): @@ -94,6 +110,16 @@ def parse_idl(f): map.update(eval(l)) return map +def norm_box(box, ratio): + middle = float(box[0] + box[2]) / 2.0 + new_half_width = float(box[3] - box[1]) * ratio / 2.0 + return (int(round(middle - new_half_width)), box[1], int(round(middle + new_half_width)), box[3]) + + +def norm_acpect_ratio(boxes, ratio): + return [ norm_box(box, ratio) for box in boxes] + + def match(gts, rects, confs): if rects is None: return 0 @@ -105,6 +131,11 @@ def match(gts, rects, confs): dts = zip(dts[0][0], dts[0][1]) dts = [Detection(r,c) for r, c in dts] + factor = 1.0 / 8.0 + dt_old = dts + for dt in dts: + dt.crop(factor) + for gt in gts: # exclude small @@ -132,3 +163,4 @@ def match(gts, rects, confs): fp = fp + 1 print "fp", fp + return dt_old From 4c4c878b1b38fd1ff8dd97b4d9cd6d26da232efa Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Sun, 20 Jan 2013 20:20:08 +0400 Subject: [PATCH 55/82] add detection to ground truth matching according to Piotr Dollar paper --- apps/sft/misk/roc_test.py | 21 +++++---- apps/sft/misk/sft.py | 95 +++++++++++++++++++++------------------ 2 files changed, 64 insertions(+), 52 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index ef2a7ce3bd..55314865ce 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -7,6 +7,11 @@ import sys, os, os.path, glob, math, cv2 from datetime import datetime import numpy +# "key" : ( b, g, r) +bgr = { "red" : ( 0, 0, 255), + "green" : ( 0, 255, 0), + "blue" : (255, 0 , 0)} + def call_parser(f, a): return eval( "sft.parse_" + f + "('" + a + "')") @@ -37,10 +42,10 @@ if __name__ == "__main__": dom = xml.getFirstTopLevelNode() assert cascade.load(dom) - frame = 0 pattern = args.input - camera = cv2.VideoCapture(args.input) + camera = cv2.VideoCapture(pattern) + frame = 0 while True: ret, img = camera.read() if not ret: @@ -53,17 +58,17 @@ if __name__ == "__main__": boxes = samples[tail] boxes = sft.norm_acpect_ratio(boxes, 0.5) - if boxes is not None: - sft.draw_rects(img, boxes, (255, 0, 0), lambda x, y : y) - frame = frame + 1 rects, confs = cascade.detect(img, rois = None) - dt_old = sft.match(boxes, rects, confs) + dts = sft.convert2detections(rects, confs) + sft.draw_dt(img, dts, bgr["green"]) - if dt_old is not None: - sft.draw_dt(img, dt_old, (0, 255, 0)) + fp, fn = sft.match(boxes, dts) + print "fp and fn", fp, fn + + sft.draw_rects(img, boxes, bgr["blue"], lambda x, y : y) cv2.imshow("result", img); if (cv2.waitKey (0) == 27): break; diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index f4a1ba5f69..b0ee081d69 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -4,6 +4,29 @@ import cv2, re, glob import numpy as np import matplotlib.pyplot as plt +""" Convert numpy matrices with rectangles and confidences to sorted list of detections.""" +def convert2detections(rects, confs, crop_factor = 0.125): + if rects is None: + return [] + + dts = zip(*[rects.tolist(), confs.tolist()]) + dts = zip(dts[0][0], dts[0][1]) + dts = [Detection(r,c) for r, c in dts] + + dts.sort(lambda x, y : -1 if (x.conf - y.conf) > 0 else 1) + for dt in dts: + dt.crop(crop_factor) + + return dts + +def crop_rect(rect, factor): + val_x = factor * float(rect[2]) + val_y = factor * float(rect[3]) + x = [int(rect[0] + val_x), int(rect[1] + val_y), int(rect[2] - 2.0 * val_x), int(rect[3] - 2.0 * val_y)] + return x + +# + def plot_curve(): fig, ax = plt.subplots() @@ -29,12 +52,6 @@ def plot_curve(): plt.xscale('log') plt.show() -def crop_rect(rect, factor): - val_x = factor * float(rect[2]) - val_y = factor * float(rect[3]) - x = [int(rect[0] + val_x), int(rect[1] + val_y), int(rect[2] - 2.0 * val_x), int(rect[3] - 2.0 * val_y)] - return x - def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: for x1, y1, x2, y2 in rects: @@ -58,16 +75,13 @@ class Detection: self.conf = conf self.matched = False - # def crop(self): - # rel_scale = self.bb[1] / 128 - def crop(self, factor): - print "was", self.bb self.bb = crop_rect(self.bb, factor) - print "bec", self.bb # we use rect-stype for dt and box style for gt. ToDo: fix it def overlap(self, b): + + print self.bb, "vs", b a = self.bb w = min( a[0] + a[2], b[2]) - max(a[0], b[0]); h = min( a[1] + a[3], b[3]) - max(a[1], b[1]); @@ -120,47 +134,40 @@ def norm_acpect_ratio(boxes, ratio): return [ norm_box(box, ratio) for box in boxes] -def match(gts, rects, confs): - if rects is None: - return 0 +def match(gts, dts): - fp = 0 - fn = 0 - - dts = zip(*[rects.tolist(), confs.tolist()]) - dts = zip(dts[0][0], dts[0][1]) - dts = [Detection(r,c) for r, c in dts] - - factor = 1.0 / 8.0 - dt_old = dts for dt in dts: - dt.crop(factor) + print dt.bb, + + print for gt in gts: + print gt - # exclude small - if gt[2] - gt[0] < 27: - continue - matched = False + # Cartesian product for each detection BB_dt with each BB_gt + overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] + print overlaps - for dt in dts: - # dt.crop() - overlap = dt.overlap(gt) - print dt.bb, "vs", gt, overlap - if overlap > 0.5: - dt.mark_matched() - matched = True - print "matched ", dt.bb, gt + matches_gt = [0]*len(gts) + print matches_gt - if not matched: - fn = fn + 1 + matches_dt = [0]*len(dts) + print matches_dt - print "fn", fn + for idx, row in enumerate(overlaps): + print idx, row - for dt in dts: - if not dt.matched: - fp = fp + 1 + imax = row.index(max(row)) - print "fp", fp - return dt_old + if (matches_gt[imax] == 0 and row[imax] > 0.5): + matches_gt[imax] = 1 + matches_dt[idx] = 1 + + print matches_gt + print matches_dt + + fp = sum(1 for x in matches_dt if x == 0) + fn = sum(1 for x in matches_gt if x == 0) + + return fp, fn \ No newline at end of file From 469eeea37065c8c7fe82e4117587120711750151 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 21 Jan 2013 02:36:23 +0400 Subject: [PATCH 56/82] add ROC estimation in the same way as Dallar's matlab toolbox does --- apps/sft/misk/roc_test.py | 42 ++++++++++++---------- apps/sft/misk/sft.py | 73 ++++++++++++++++++++------------------- 2 files changed, 61 insertions(+), 54 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index 55314865ce..3dbf94d7d8 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -34,43 +34,47 @@ if __name__ == "__main__": args = parser.parse_args() + # parse annotations samples = call_parser(args.anttn_format, args.annotations) - - # where we use nms cv::SCascade::DOLLAR == 2 - cascade = cv2.SCascade(args.min_scale, args.max_scale, args.nscales, 2) - xml = cv2.FileStorage(args.cascade, 0) - dom = xml.getFirstTopLevelNode() - assert cascade.load(dom) - + cascade = sft.cascade(args.min_scale, args.max_scale, args.nscales, args.cascade) pattern = args.input camera = cv2.VideoCapture(pattern) - frame = 0 + # for plotting over dataset + nannotated = 0 + nframes = 0 + + confidenses = [] + tp = [] + while True: ret, img = camera.read() if not ret: break; - name = pattern % (frame,) - qq = pattern.format(frame) + name = pattern % (nframes,) _, tail = os.path.split(name) boxes = samples[tail] boxes = sft.norm_acpect_ratio(boxes, 0.5) - frame = frame + 1 + nannotated = nannotated + len(boxes) + nframes = nframes + 1 rects, confs = cascade.detect(img, rois = None) + if confs is None: + continue + dts = sft.convert2detections(rects, confs) - sft.draw_dt(img, dts, bgr["green"]) - fp, fn = sft.match(boxes, dts) - print "fp and fn", fp, fn + confs = confs.tolist()[0] + confs.sort(lambda x, y : -1 if (x - y) > 0 else 1) + confidenses = confidenses + confs + matched = sft.match(boxes, dts) + tp = tp + matched - sft.draw_rects(img, boxes, bgr["blue"], lambda x, y : y) - cv2.imshow("result", img); - if (cv2.waitKey (0) == 27): - break; + print nframes, nannotated - # sft.plot_curve() \ No newline at end of file + fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes) + sft.plotLogLog(fppi, miss_rate) \ No newline at end of file diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index b0ee081d69..cd6ca0ded3 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -19,6 +19,34 @@ def convert2detections(rects, confs, crop_factor = 0.125): return dts +def cascade(min_scale, max_scale, nscales, f): + # where we use nms cv::SCascade::DOLLAR == 2 + c = cv2.SCascade(min_scale, max_scale, nscales, 2) + xml = cv2.FileStorage(f, 0) + dom = xml.getFirstTopLevelNode() + assert c.load(dom) + return c + +def cumsum(n): + cum = [] + y = 0 + for i in n: + y += i + cum.append(y) + return cum + +def computeROC(confidenses, tp, nannotated, nframes): + confidenses, tp = zip(*sorted(zip(confidenses, tp), reverse = True)) + + fp = [(1 - x) for x in tp] + fp = cumsum(fp) + tp = cumsum(tp) + miss_rate = [(1 - x / (nannotated + 0.000001)) for x in tp] + fppi = [x / float(nframes) for x in fp] + + return fppi, miss_rate + + def crop_rect(rect, factor): val_x = factor * float(rect[2]) val_y = factor * float(rect[3]) @@ -27,29 +55,28 @@ def crop_rect(rect, factor): # -def plot_curve(): +def plotLogLog(fppi, miss_rate): fig, ax = plt.subplots() fig.canvas.draw() - x = np.linspace(pow(10,-4), pow(10,1), 101) - y = 1 - x - - plt.semilogy(x,y,color='m',linewidth=2) plt.xlabel("fppi") plt.ylabel("miss rate") plt.title("ROC curve Bahnhof") - plt.yticks( [0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.64, 0.80]) - ylabels = [item.get_text() for item in ax.get_yticklabels()] - ax.set_yticklabels( ylabels ) + # plt.yticks( [0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.64, 0.80]) + # ylabels = [item.get_text() for item in ax.get_yticklabels()] + # ax.set_yticklabels( ylabels ) plt.grid(True) - # plt.xticks( [pow(10, -4), pow(10, -3), pow(10, -2), pow(10, -1), pow(10, 0), pow(10, 0)]) + # plt.xticks( [pow(10, -4), pow(10, -3), pow(10, -2), pow(10, -1), pow(10, 0), pow(10, 1)]) # xlabels = [item.get_text() for item in ax.get_xticklabels()] # ax.set_xticklabels( xlabels ) - plt.xscale('log') + plt.yscale('log') + + plt.semilogy(fppi, miss_rate, color='m', linewidth=2) + plt.show() def draw_rects(img, rects, color, l = lambda x, y : x + y): @@ -81,7 +108,6 @@ class Detection: # we use rect-stype for dt and box style for gt. ToDo: fix it def overlap(self, b): - print self.bb, "vs", b a = self.bb w = min( a[0] + a[2], b[2]) - max(a[0], b[0]); h = min( a[1] + a[3], b[3]) - max(a[1], b[1]); @@ -135,39 +161,16 @@ def norm_acpect_ratio(boxes, ratio): def match(gts, dts): - - for dt in dts: - print dt.bb, - - print - - for gt in gts: - print gt - - # Cartesian product for each detection BB_dt with each BB_gt overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] - print overlaps matches_gt = [0]*len(gts) - print matches_gt - matches_dt = [0]*len(dts) - print matches_dt for idx, row in enumerate(overlaps): - print idx, row - imax = row.index(max(row)) if (matches_gt[imax] == 0 and row[imax] > 0.5): matches_gt[imax] = 1 matches_dt[idx] = 1 - - print matches_gt - print matches_dt - - fp = sum(1 for x in matches_dt if x == 0) - fn = sum(1 for x in matches_gt if x == 0) - - return fp, fn \ No newline at end of file + return matches_dt \ No newline at end of file From 11f3927c58e6ad54b33b8e4cd43a8eae8af52849 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 21 Jan 2013 15:53:25 +0400 Subject: [PATCH 57/82] allow multiple detectors --- apps/sft/misk/roc_test.py | 72 ++++++++++++++++++++++----------------- apps/sft/misk/sft.py | 19 +++++------ 2 files changed, 48 insertions(+), 43 deletions(-) diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misk/roc_test.py index 3dbf94d7d8..868211942d 100755 --- a/apps/sft/misk/roc_test.py +++ b/apps/sft/misk/roc_test.py @@ -7,6 +7,8 @@ import sys, os, os.path, glob, math, cv2 from datetime import datetime import numpy +plot_colors = ['b', 'r', 'g', 'c', 'm'] + # "key" : ( b, g, r) bgr = { "red" : ( 0, 0, 255), "green" : ( 0, 255, 0), @@ -19,7 +21,7 @@ if __name__ == "__main__": parser = argparse.ArgumentParser(description = 'Plot ROC curve using Caltech mathod of per image detection performance estimation.') # positional - parser.add_argument("cascade", help = "Path to the tested detector.") + parser.add_argument("cascade", help = "Path to the tested detector.", nargs='+') parser.add_argument("input", help = "Image sequence pattern.") parser.add_argument("annotations", help = "Path to the annotations.") @@ -34,47 +36,53 @@ if __name__ == "__main__": args = parser.parse_args() - # parse annotations + print args.cascade + # # parse annotations + sft.initPlot() samples = call_parser(args.anttn_format, args.annotations) - cascade = sft.cascade(args.min_scale, args.max_scale, args.nscales, args.cascade) - pattern = args.input - camera = cv2.VideoCapture(pattern) + for idx, each in enumerate(args.cascade): + print each + cascade = sft.cascade(args.min_scale, args.max_scale, args.nscales, each) + pattern = args.input + camera = cv2.VideoCapture(pattern) - # for plotting over dataset - nannotated = 0 - nframes = 0 + # for plotting over dataset + nannotated = 0 + nframes = 0 - confidenses = [] - tp = [] + confidenses = [] + tp = [] - while True: - ret, img = camera.read() - if not ret: - break; + while True: + ret, img = camera.read() + if not ret: + break; - name = pattern % (nframes,) - _, tail = os.path.split(name) + name = pattern % (nframes,) + _, tail = os.path.split(name) - boxes = samples[tail] - boxes = sft.norm_acpect_ratio(boxes, 0.5) + boxes = samples[tail] + boxes = sft.norm_acpect_ratio(boxes, 0.5) - nannotated = nannotated + len(boxes) - nframes = nframes + 1 - rects, confs = cascade.detect(img, rois = None) + nannotated = nannotated + len(boxes) + nframes = nframes + 1 + rects, confs = cascade.detect(img, rois = None) - if confs is None: - continue + if confs is None: + continue - dts = sft.convert2detections(rects, confs) + dts = sft.convert2detections(rects, confs) - confs = confs.tolist()[0] - confs.sort(lambda x, y : -1 if (x - y) > 0 else 1) - confidenses = confidenses + confs + confs = confs.tolist()[0] + confs.sort(lambda x, y : -1 if (x - y) > 0 else 1) + confidenses = confidenses + confs - matched = sft.match(boxes, dts) - tp = tp + matched + matched = sft.match(boxes, dts) + tp = tp + matched - print nframes, nannotated + print nframes, nannotated - fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes) - sft.plotLogLog(fppi, miss_rate) \ No newline at end of file + fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes) + sft.plotLogLog(fppi, miss_rate, plot_colors[idx]) + + sft.showPlot("roc_curve.png") \ No newline at end of file diff --git a/apps/sft/misk/sft.py b/apps/sft/misk/sft.py index cd6ca0ded3..8c7f4b4253 100644 --- a/apps/sft/misk/sft.py +++ b/apps/sft/misk/sft.py @@ -55,7 +55,7 @@ def crop_rect(rect, factor): # -def plotLogLog(fppi, miss_rate): +def initPlot(): fig, ax = plt.subplots() fig.canvas.draw() @@ -63,22 +63,19 @@ def plotLogLog(fppi, miss_rate): plt.xlabel("fppi") plt.ylabel("miss rate") plt.title("ROC curve Bahnhof") - - # plt.yticks( [0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 0.64, 0.80]) - # ylabels = [item.get_text() for item in ax.get_yticklabels()] - # ax.set_yticklabels( ylabels ) plt.grid(True) - - # plt.xticks( [pow(10, -4), pow(10, -3), pow(10, -2), pow(10, -1), pow(10, 0), pow(10, 1)]) - # xlabels = [item.get_text() for item in ax.get_xticklabels()] - # ax.set_xticklabels( xlabels ) plt.xscale('log') plt.yscale('log') - plt.semilogy(fppi, miss_rate, color='m', linewidth=2) - +def showPlot(name): + plt.savefig(name) plt.show() + +def plotLogLog(fppi, miss_rate, c): + plt.semilogy(fppi, miss_rate, color = c, linewidth = 2) + + def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: for x1, y1, x2, y2 in rects: From 990ca86de69ac73c04f1d4ed9398758ca5a1cc3f Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 21 Jan 2013 15:57:13 +0400 Subject: [PATCH 58/82] fix spelling --- apps/sft/{misk => misc}/detections2negatives.py | 0 apps/sft/{misk => misc}/roc_test.py | 0 apps/sft/{misk => misc}/scale_caltech.py | 0 apps/sft/{misk => misc}/scale_inria.py | 0 apps/sft/{misk => misc}/sft.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename apps/sft/{misk => misc}/detections2negatives.py (100%) rename apps/sft/{misk => misc}/roc_test.py (100%) rename apps/sft/{misk => misc}/scale_caltech.py (100%) rename apps/sft/{misk => misc}/scale_inria.py (100%) rename apps/sft/{misk => misc}/sft.py (100%) diff --git a/apps/sft/misk/detections2negatives.py b/apps/sft/misc/detections2negatives.py similarity index 100% rename from apps/sft/misk/detections2negatives.py rename to apps/sft/misc/detections2negatives.py diff --git a/apps/sft/misk/roc_test.py b/apps/sft/misc/roc_test.py similarity index 100% rename from apps/sft/misk/roc_test.py rename to apps/sft/misc/roc_test.py diff --git a/apps/sft/misk/scale_caltech.py b/apps/sft/misc/scale_caltech.py similarity index 100% rename from apps/sft/misk/scale_caltech.py rename to apps/sft/misc/scale_caltech.py diff --git a/apps/sft/misk/scale_inria.py b/apps/sft/misc/scale_inria.py similarity index 100% rename from apps/sft/misk/scale_inria.py rename to apps/sft/misc/scale_inria.py diff --git a/apps/sft/misk/sft.py b/apps/sft/misc/sft.py similarity index 100% rename from apps/sft/misk/sft.py rename to apps/sft/misc/sft.py From 922de414ef1aa73017cd6e3dc7da469bc5073c76 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 23 Jan 2013 14:55:07 +0400 Subject: [PATCH 59/82] refactor python ROC script and add axis ticks --- apps/sft/misc/sft.py | 62 ++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index 8c7f4b4253..15f10fb783 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -1,10 +1,10 @@ #!/usr/bin/env python import cv2, re, glob -import numpy as np +import numpy as np import matplotlib.pyplot as plt -""" Convert numpy matrices with rectangles and confidences to sorted list of detections.""" +""" Convert numPy matrices with rectangles and confidences to sorted list of detections.""" def convert2detections(rects, confs, crop_factor = 0.125): if rects is None: return [] @@ -14,11 +14,13 @@ def convert2detections(rects, confs, crop_factor = 0.125): dts = [Detection(r,c) for r, c in dts] dts.sort(lambda x, y : -1 if (x.conf - y.conf) > 0 else 1) + for dt in dts: dt.crop(crop_factor) return dts +""" Create new instance of soft cascade.""" def cascade(min_scale, max_scale, nscales, f): # where we use nms cv::SCascade::DOLLAR == 2 c = cv2.SCascade(min_scale, max_scale, nscales, 2) @@ -27,6 +29,7 @@ def cascade(min_scale, max_scale, nscales, f): assert c.load(dom) return c +""" Compute prefix sum for en array""" def cumsum(n): cum = [] y = 0 @@ -35,6 +38,7 @@ def cumsum(n): cum.append(y) return cum +""" Compute x and y arrays for ROC plot""" def computeROC(confidenses, tp, nannotated, nframes): confidenses, tp = zip(*sorted(zip(confidenses, tp), reverse = True)) @@ -46,34 +50,52 @@ def computeROC(confidenses, tp, nannotated, nframes): return fppi, miss_rate - +""" Crop rectangle by factor""" def crop_rect(rect, factor): val_x = factor * float(rect[2]) val_y = factor * float(rect[3]) x = [int(rect[0] + val_x), int(rect[1] + val_y), int(rect[2] - 2.0 * val_x), int(rect[3] - 2.0 * val_y)] return x -# - -def initPlot(): +"""Initialize plot axises""" +def initPlot(name = "ROC curve Bahnhof"): fig, ax = plt.subplots() fig.canvas.draw() plt.xlabel("fppi") plt.ylabel("miss rate") - plt.title("ROC curve Bahnhof") + plt.title(name) plt.grid(True) plt.xscale('log') plt.yscale('log') -def showPlot(name): - plt.savefig(name) +"""Show resulted plot""" +def showPlot(file_name): + # plt.savefig(file_name) + plt.axis((pow(10, -3), pow(10, 1), 0.0, 1)) + plt.yticks( [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.64, 0.8, 1], ['.05', '.10', '.20', '.30', '.40', '.50', '.64', '.80', '1'] ) plt.show() +def match(gts, dts): + # Cartesian product for each detection BB_dt with each BB_gt + overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] + + matches_gt = [0]*len(gts) + matches_dt = [0]*len(dts) + + for idx, row in enumerate(overlaps): + imax = row.index(max(row)) + + if (matches_gt[imax] == 0 and row[imax] > 0.5): + matches_gt[imax] = 1 + matches_dt[idx] = 1 + return matches_dt + def plotLogLog(fppi, miss_rate, c): - plt.semilogy(fppi, miss_rate, color = c, linewidth = 2) + print + plt.loglog(fppi, miss_rate, color = c, linewidth = 2) def draw_rects(img, rects, color, l = lambda x, y : x + y): @@ -102,7 +124,7 @@ class Detection: def crop(self, factor): self.bb = crop_rect(self.bb, factor) - # we use rect-stype for dt and box style for gt. ToDo: fix it + # we use rect-style for dt and box style for gt. ToDo: fix it def overlap(self, b): a = self.bb @@ -154,20 +176,4 @@ def norm_box(box, ratio): def norm_acpect_ratio(boxes, ratio): - return [ norm_box(box, ratio) for box in boxes] - - -def match(gts, dts): - # Cartesian product for each detection BB_dt with each BB_gt - overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] - - matches_gt = [0]*len(gts) - matches_dt = [0]*len(dts) - - for idx, row in enumerate(overlaps): - imax = row.index(max(row)) - - if (matches_gt[imax] == 0 and row[imax] > 0.5): - matches_gt[imax] = 1 - matches_dt[idx] = 1 - return matches_dt \ No newline at end of file + return [ norm_box(box, ratio) for box in boxes] \ No newline at end of file From 5f082b9876c3bd1e604c5961fdb29daab2efb0a8 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 23 Jan 2013 22:21:56 +0400 Subject: [PATCH 60/82] improve ROC test script: handle ignored --- apps/sft/misc/roc_test.py | 6 ++++-- apps/sft/misc/sft.py | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/apps/sft/misc/roc_test.py b/apps/sft/misc/roc_test.py index 868211942d..bc436af9bf 100755 --- a/apps/sft/misc/roc_test.py +++ b/apps/sft/misc/roc_test.py @@ -52,6 +52,7 @@ if __name__ == "__main__": confidenses = [] tp = [] + ignored = [] while True: ret, img = camera.read() @@ -77,12 +78,13 @@ if __name__ == "__main__": confs.sort(lambda x, y : -1 if (x - y) > 0 else 1) confidenses = confidenses + confs - matched = sft.match(boxes, dts) + matched, skip_list = sft.match(boxes, dts) tp = tp + matched + ignored = ignored + skip_list print nframes, nannotated - fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes) + fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes, ignored) sft.plotLogLog(fppi, miss_rate, plot_colors[idx]) sft.showPlot("roc_curve.png") \ No newline at end of file diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index 15f10fb783..a732c77dba 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -3,6 +3,7 @@ import cv2, re, glob import numpy as np import matplotlib.pyplot as plt +from itertools import izip """ Convert numPy matrices with rectangles and confidences to sorted list of detections.""" def convert2detections(rects, confs, crop_factor = 0.125): @@ -39,10 +40,12 @@ def cumsum(n): return cum """ Compute x and y arrays for ROC plot""" -def computeROC(confidenses, tp, nannotated, nframes): - confidenses, tp = zip(*sorted(zip(confidenses, tp), reverse = True)) +def computeROC(confidenses, tp, nannotated, nframes, ignored): + confidenses, tp, ignored = zip(*sorted(zip(confidenses, tp, ignored), reverse = True)) fp = [(1 - x) for x in tp] + fp = [(x - y) for x, y in izip(fp, ignored)] + fp = cumsum(fp) tp = cumsum(tp) miss_rate = [(1 - x / (nannotated + 0.000001)) for x in tp] @@ -81,16 +84,27 @@ def match(gts, dts): # Cartesian product for each detection BB_dt with each BB_gt overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] - matches_gt = [0]*len(gts) - matches_dt = [0]*len(dts) + matches_gt = [0]*len(gts) + matches_dt = [0]*len(dts) + matches_ignore = [0]*len(dts) for idx, row in enumerate(overlaps): imax = row.index(max(row)) + # try to match ground thrush if (matches_gt[imax] == 0 and row[imax] > 0.5): matches_gt[imax] = 1 matches_dt[idx] = 1 - return matches_dt + + for idx, dt in enumerate(dts): + # try to math ignored + if matches_dt[idx] == 0: + row = gts + row = [i for i in row if (i[3] - i[1]) < 53 or (i[3] - i[1]) > 256] + for each in row: + if dts[idx].overlapIgnored(each) > 0.5: + matches_ignore[idx] = 1 + return matches_dt, matches_ignore def plotLogLog(fppi, miss_rate, c): @@ -136,6 +150,18 @@ class Detection: return cross_area / union_area + # we use rect-style for dt and box style for gt. ToDo: fix it + def overlapIgnored(self, b): + + a = self.bb + w = min( a[0] + a[2], b[2]) - max(a[0], b[0]); + h = min( a[1] + a[3], b[3]) - max(a[1], b[1]); + + cross_area = 0.0 if (w < 0 or h < 0) else float(w * h) + self_area = (a[2] * a[3]); + + return cross_area / self_area + def mark_matched(self): self.matched = True From decb137185cb4d843794b081414152aa7ff0adc0 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 24 Jan 2013 11:45:22 +0400 Subject: [PATCH 61/82] use long seeds only for 64 bit systems --- apps/sft/fpool.cpp | 12 +++++++++++- modules/ml/src/octave.cpp | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 76a4031cd0..c241a75dfb 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -76,7 +76,17 @@ void sft::write(cv::FileStorage& fs, const string&, const ICF& f) sft::ICFFeaturePool::~ICFFeaturePool(){} -#define USE_LONG_SEEDS +#if defined _WIN32 && (_WIN32 || _WIN64) +# if _WIN64 +# define USE_LONG_SEEDS +# endif +#endif +#if defined (__GNUC__) &&__GNUC__ +# if defined(__x86_64__) || defined(__ppc64__) +# define USE_LONG_SEEDS +# endif +#endif + #if defined USE_LONG_SEEDS # define FEATURE_RECT_SEED 8854342234LU #else diff --git a/modules/ml/src/octave.cpp b/modules/ml/src/octave.cpp index b0358b6f2b..3a5de94879 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/ml/src/octave.cpp @@ -239,7 +239,17 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo nnegatives = cvRound(nnegatives * total / (double)npositives); } -#define USE_LONG_SEEDS +#if defined _WIN32 && (_WIN32 || _WIN64) +# if _WIN64 +# define USE_LONG_SEEDS +# endif +#endif +#if defined (__GNUC__) &&__GNUC__ +# if defined(__x86_64__) || defined(__ppc64__) +# define USE_LONG_SEEDS +# endif +#endif + #if defined USE_LONG_SEEDS # define INDEX_ENGINE_SEED 764224349868LU #else From e9232a4b67cf49b126cda9865982e57f81330d02 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 24 Jan 2013 14:45:11 +0400 Subject: [PATCH 62/82] add parameter to control range and extended range for annotations --- apps/sft/misc/roc_test.py | 14 ++++++++++++++ apps/sft/misc/sft.py | 11 +++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/apps/sft/misc/roc_test.py b/apps/sft/misc/roc_test.py index bc436af9bf..5cfcfb8ed9 100755 --- a/apps/sft/misc/roc_test.py +++ b/apps/sft/misc/roc_test.py @@ -14,6 +14,13 @@ bgr = { "red" : ( 0, 0, 255), "green" : ( 0, 255, 0), "blue" : (255, 0 , 0)} +def range(s): + try: + lb, rb = map(int, s.split(',')) + return lb, rb + except: + raise argparse.ArgumentTypeError("Must be lb, rb") + def call_parser(f, a): return eval( "sft.parse_" + f + "('" + a + "')") @@ -31,11 +38,16 @@ if __name__ == "__main__": parser.add_argument("-o", "--output", dest = "output", type = str, metavar= "path", help = "Path to store resultiong image.", default = "./roc.png") parser.add_argument("-n", "--nscales", dest = "nscales", type = int, metavar= "n", help = "Prefered count of scales from min to max.", default = 55) + parser.add_argument("-r", "--scale-range", dest = "scale_range", type = range, default = (128 * 0.4, 128 * 2.4)) + parser.add_argument("-e", "--extended-range-ratio", dest = "ext_ratio", type = float, default = 1.25) + # required parser.add_argument("-f", "--anttn-format", dest = "anttn_format", choices = ['inria', 'caltech', "idl"], help = "Annotation file for test sequence.", required = True) args = parser.parse_args() + print args.scale_range + print args.cascade # # parse annotations sft.initPlot() @@ -64,6 +76,8 @@ if __name__ == "__main__": boxes = samples[tail] boxes = sft.norm_acpect_ratio(boxes, 0.5) + boxes = [b for b in boxes if (b[3] - b[1]) > args.scale_range[0] / args.ext_ratio] + boxes = [b for b in boxes if (b[3] - b[1]) < args.scale_range[1] * args.ext_ratio] nannotated = nannotated + len(boxes) nframes = nframes + 1 diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index a732c77dba..87004b4caf 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -75,19 +75,22 @@ def initPlot(name = "ROC curve Bahnhof"): """Show resulted plot""" def showPlot(file_name): - # plt.savefig(file_name) + plt.savefig(file_name) plt.axis((pow(10, -3), pow(10, 1), 0.0, 1)) plt.yticks( [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.64, 0.8, 1], ['.05', '.10', '.20', '.30', '.40', '.50', '.64', '.80', '1'] ) plt.show() def match(gts, dts): - # Cartesian product for each detection BB_dt with each BB_gt - overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] - matches_gt = [0]*len(gts) matches_dt = [0]*len(dts) matches_ignore = [0]*len(dts) + if len(gts) == 0: + return matches_dt, matches_ignore + + # Cartesian product for each detection BB_dt with each BB_gt + overlaps = [[dt.overlap(gt) for gt in gts]for dt in dts] + for idx, row in enumerate(overlaps): imax = row.index(max(row)) From faecb4f01d8f0c22f61baabdc75281b1c99a974f Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 24 Jan 2013 16:22:08 +0400 Subject: [PATCH 63/82] ROC script refactoring --- apps/sft/misc/roc_test.py | 5 +-- apps/sft/misc/scale_caltech.py | 16 +-------- apps/sft/misc/scale_inria.py | 18 ++--------- apps/sft/misc/sft.py | 59 +++++++++++++++++++++++----------- 4 files changed, 45 insertions(+), 53 deletions(-) diff --git a/apps/sft/misc/roc_test.py b/apps/sft/misc/roc_test.py index 5cfcfb8ed9..f640af30ae 100755 --- a/apps/sft/misc/roc_test.py +++ b/apps/sft/misc/roc_test.py @@ -74,10 +74,7 @@ if __name__ == "__main__": name = pattern % (nframes,) _, tail = os.path.split(name) - boxes = samples[tail] - boxes = sft.norm_acpect_ratio(boxes, 0.5) - boxes = [b for b in boxes if (b[3] - b[1]) > args.scale_range[0] / args.ext_ratio] - boxes = [b for b in boxes if (b[3] - b[1]) < args.scale_range[1] * args.ext_ratio] + boxes = sft.filter_for_range(samples[tail], args.scale_range, args.ext_ratio) nannotated = nannotated + len(boxes) nframes = nframes + 1 diff --git a/apps/sft/misc/scale_caltech.py b/apps/sft/misc/scale_caltech.py index 5eddc43747..959a1f3ada 100755 --- a/apps/sft/misc/scale_caltech.py +++ b/apps/sft/misc/scale_caltech.py @@ -6,20 +6,6 @@ from optparse import OptionParser import re import numpy as np -def resize(image, d_w, d_h): - if (d_h < image.shape[0]) or (d_w < image.shape[1]): - ratio = min(d_h / float(image.shape[0]), d_w / float(image.shape[1])) - - kernel_size = int( 5 / (2 * ratio)) - sigma = 0.5 / ratio - image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) - interpolation_type = cv2.INTER_AREA - else: - image_to_resize = image - interpolation_type = cv2.INTER_CUBIC - - return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) - def extractPositive(f, path, opath, octave, min_possible): newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") pos = re.compile("^pos\s=(\[[((\d+\.+\d*)|\s+|\;)]*\])$") @@ -107,7 +93,7 @@ def extractPositive(f, path, opath, octave, min_possible): continue cropped = cv2.copyMakeBorder(cropped, top, bottom, left, right, cv2.BORDER_REPLICATE) - resized = resize(cropped, whole_mod_w, whole_mod_h) + resized = sft.resize_sample(cropped, whole_mod_w, whole_mod_h) flipped = cv2.flip(resized, 1) cv2.imshow("resized", resized) diff --git a/apps/sft/misc/scale_inria.py b/apps/sft/misc/scale_inria.py index 4fc6b8b93e..b08a4bc7f2 100755 --- a/apps/sft/misc/scale_inria.py +++ b/apps/sft/misc/scale_inria.py @@ -30,20 +30,6 @@ def adjust(box, tb, lr): return [mix, miy, max, may] -def resize(image, d_w, d_h): - if (d_h < image.shape[0]) or (d_w < image.shape[1]): - ratio = min(d_h / float(image.shape[0]), d_w / float(image.shape[1])) - - kernel_size = int( 5 / (2 * ratio)) - sigma = 0.5 / ratio - image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) - interpolation_type = cv2.INTER_AREA - else: - image_to_resize = image - interpolation_type = cv2.INTER_CUBIC - - return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) - if __name__ == "__main__": parser = OptionParser() parser.add_option("-i", "--input", dest="input", metavar="DIRECTORY", type="string", @@ -110,7 +96,7 @@ if __name__ == "__main__": left = int(max(0, 0 - box[0])) right = int(max(0, box[2] - mat_w)) cropped = cv2.copyMakeBorder(cropped, top, bottom, left, right, cv2.BORDER_REPLICATE) - resized = resize(cropped, whole_mod_w, whole_mod_h) + resized = sft.resize_sample(cropped, whole_mod_w, whole_mod_h) out_name = ".png" if round(math.log(scale)/math.log(2)) < each: @@ -143,7 +129,7 @@ if __name__ == "__main__": if (img.shape[0] <= min_shape[0]): resized_size = (int(min_shape[0] * ratio), int(min_shape[0])) - img = resize(img, resized_size[0], resized_size[1]) + img = sft.resize_sample(img, resized_size[0], resized_size[1]) else: out_name = "negative_sample_%i.png" % idx diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index 87004b4caf..147c391cb2 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -30,7 +30,7 @@ def cascade(min_scale, max_scale, nscales, f): assert c.load(dom) return c -""" Compute prefix sum for en array""" +""" Compute prefix sum for en array.""" def cumsum(n): cum = [] y = 0 @@ -39,7 +39,7 @@ def cumsum(n): cum.append(y) return cum -""" Compute x and y arrays for ROC plot""" +""" Compute x and y arrays for ROC plot.""" def computeROC(confidenses, tp, nannotated, nframes, ignored): confidenses, tp, ignored = zip(*sorted(zip(confidenses, tp, ignored), reverse = True)) @@ -53,14 +53,14 @@ def computeROC(confidenses, tp, nannotated, nframes, ignored): return fppi, miss_rate -""" Crop rectangle by factor""" +""" Crop rectangle by factor.""" def crop_rect(rect, factor): val_x = factor * float(rect[2]) val_y = factor * float(rect[3]) x = [int(rect[0] + val_x), int(rect[1] + val_y), int(rect[2] - 2.0 * val_x), int(rect[3] - 2.0 * val_y)] return x -"""Initialize plot axises""" +""" Initialize plot axises.""" def initPlot(name = "ROC curve Bahnhof"): fig, ax = plt.subplots() @@ -73,13 +73,14 @@ def initPlot(name = "ROC curve Bahnhof"): plt.xscale('log') plt.yscale('log') -"""Show resulted plot""" +""" Show resulted plot.""" def showPlot(file_name): plt.savefig(file_name) plt.axis((pow(10, -3), pow(10, 1), 0.0, 1)) plt.yticks( [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.64, 0.8, 1], ['.05', '.10', '.20', '.30', '.40', '.50', '.64', '.80', '1'] ) plt.show() +""" Filter true positives and ignored detections for cascade detector output.""" def match(gts, dts): matches_gt = [0]*len(gts) matches_dt = [0]*len(dts) @@ -94,7 +95,7 @@ def match(gts, dts): for idx, row in enumerate(overlaps): imax = row.index(max(row)) - # try to match ground thrush + # try to match ground truth if (matches_gt[imax] == 0 and row[imax] > 0.5): matches_gt[imax] = 1 matches_dt[idx] = 1 @@ -109,17 +110,18 @@ def match(gts, dts): matches_ignore[idx] = 1 return matches_dt, matches_ignore - +""" Draw plot.""" def plotLogLog(fppi, miss_rate, c): print plt.loglog(fppi, miss_rate, color = c, linewidth = 2) - +""" Draw detections or ground truth on image.""" def draw_rects(img, rects, color, l = lambda x, y : x + y): if rects is not None: for x1, y1, x2, y2 in rects: cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) + def draw_dt(img, dts, color, l = lambda x, y : x + y): if dts is not None: for dt in dts: @@ -128,10 +130,6 @@ def draw_dt(img, dts, color, l = lambda x, y : x + y): cv2.rectangle(img, (x1, y1), (l(x1, x2), l(y1, y2)), color, 2) -class Annotation: - def __init__(self, bb): - self.bb = bb - class Detection: def __init__(self, bb, conf): self.bb = bb @@ -168,7 +166,7 @@ class Detection: def mark_matched(self): self.matched = True - +"""Parse INPIA annotation format""" def parse_inria(ipath, f): bbs = [] path = None @@ -185,10 +183,11 @@ def parse_inria(ipath, f): return Sample(path, bbs) -def glob_set(pattern): - return [__n for __n in glob.iglob(pattern)] #glob.iglob(pattern) -# parse ETH idl file +def glob_set(pattern): + return [__n for __n in glob.iglob(pattern)] + +""" Parse ETH idl file. """ def parse_idl(f): map = {} for l in open(f): @@ -198,11 +197,35 @@ def parse_idl(f): map.update(eval(l)) return map +""" Normalize detection box to unified aspect ration.""" def norm_box(box, ratio): middle = float(box[0] + box[2]) / 2.0 new_half_width = float(box[3] - box[1]) * ratio / 2.0 return (int(round(middle - new_half_width)), box[1], int(round(middle + new_half_width)), box[3]) - +""" Process array of boxes.""" def norm_acpect_ratio(boxes, ratio): - return [ norm_box(box, ratio) for box in boxes] \ No newline at end of file + return [ norm_box(box, ratio) for box in boxes] + +""" Filter detections out of extended range. """ +def filter_for_range(boxes, scale_range, ext_ratio): + boxes = sft.norm_acpect_ratio(boxes, 0.5) + boxes = [b for b in boxes if (b[3] - b[1]) > scale_range[0] / ext_ratio] + boxes = [b for b in boxes if (b[3] - b[1]) < scale_range[1] * ext_ratio] + return boxes + +""" Resize sample for training.""" +def resize_sample(image, d_w, d_h): + h, w, _ = image.shape + if (d_h < h) or (d_w < w): + ratio = min(d_h / float(h), d_w / float(w)) + + kernel_size = int( 5 / (2 * ratio)) + sigma = 0.5 / ratio + image_to_resize = cv2.filter2D(image, cv2.CV_8UC3, cv2.getGaussianKernel(kernel_size, sigma)) + interpolation_type = cv2.INTER_AREA + else: + image_to_resize = image + interpolation_type = cv2.INTER_CUBIC + + return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) \ No newline at end of file From 1fc7134f2112ec4173ba3a54590a9a3d004d5277 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 28 Jan 2013 15:34:53 +0400 Subject: [PATCH 64/82] add legend for ROC plot --- apps/sft/misc/roc_test.py | 16 +++++++++------- apps/sft/misc/sft.py | 23 ++++++++++------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/apps/sft/misc/roc_test.py b/apps/sft/misc/roc_test.py index f640af30ae..f0fc3a809a 100755 --- a/apps/sft/misc/roc_test.py +++ b/apps/sft/misc/roc_test.py @@ -7,7 +7,7 @@ import sys, os, os.path, glob, math, cv2 from datetime import datetime import numpy -plot_colors = ['b', 'r', 'g', 'c', 'm'] +plot_colors = ['b', 'c', 'r', 'g', 'm'] # "key" : ( b, g, r) bgr = { "red" : ( 0, 0, 255), @@ -25,7 +25,7 @@ def call_parser(f, a): return eval( "sft.parse_" + f + "('" + a + "')") if __name__ == "__main__": - parser = argparse.ArgumentParser(description = 'Plot ROC curve using Caltech mathod of per image detection performance estimation.') + parser = argparse.ArgumentParser(description = 'Plot ROC curve using Caltech method of per image detection performance estimation.') # positional parser.add_argument("cascade", help = "Path to the tested detector.", nargs='+') @@ -35,22 +35,24 @@ if __name__ == "__main__": # optional parser.add_argument("-m", "--min_scale", dest = "min_scale", type = float, metavar= "fl", help = "Minimum scale to be tested.", default = 0.4) parser.add_argument("-M", "--max_scale", dest = "max_scale", type = float, metavar= "fl", help = "Maximum scale to be tested.", default = 5.0) - parser.add_argument("-o", "--output", dest = "output", type = str, metavar= "path", help = "Path to store resultiong image.", default = "./roc.png") - parser.add_argument("-n", "--nscales", dest = "nscales", type = int, metavar= "n", help = "Prefered count of scales from min to max.", default = 55) + parser.add_argument("-o", "--output", dest = "output", type = str, metavar= "path", help = "Path to store resulting image.", default = "./roc.png") + parser.add_argument("-n", "--nscales", dest = "nscales", type = int, metavar= "n", help = "Preferred count of scales from min to max.", default = 55) parser.add_argument("-r", "--scale-range", dest = "scale_range", type = range, default = (128 * 0.4, 128 * 2.4)) parser.add_argument("-e", "--extended-range-ratio", dest = "ext_ratio", type = float, default = 1.25) + parser.add_argument("-t", "--title", dest = "title", type = str, default = "ROC curve Bahnhof") # required parser.add_argument("-f", "--anttn-format", dest = "anttn_format", choices = ['inria', 'caltech', "idl"], help = "Annotation file for test sequence.", required = True) + parser.add_argument("-l", "--labels", dest = "labels" ,required=True, help = "Plot labels for legend.", nargs='+') args = parser.parse_args() print args.scale_range print args.cascade - # # parse annotations - sft.initPlot() + # parse annotations + sft.initPlot(args.title) samples = call_parser(args.anttn_format, args.annotations) for idx, each in enumerate(args.cascade): print each @@ -98,4 +100,4 @@ if __name__ == "__main__": fppi, miss_rate = sft.computeROC(confidenses, tp, nannotated, nframes, ignored) sft.plotLogLog(fppi, miss_rate, plot_colors[idx]) - sft.showPlot("roc_curve.png") \ No newline at end of file + sft.showPlot(args.output, args.labels) \ No newline at end of file diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index 147c391cb2..cac8094050 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -61,11 +61,7 @@ def crop_rect(rect, factor): return x """ Initialize plot axises.""" -def initPlot(name = "ROC curve Bahnhof"): - - fig, ax = plt.subplots() - fig.canvas.draw() - +def initPlot(name): plt.xlabel("fppi") plt.ylabel("miss rate") plt.title(name) @@ -73,11 +69,16 @@ def initPlot(name = "ROC curve Bahnhof"): plt.xscale('log') plt.yscale('log') +""" Draw plot.""" +def plotLogLog(fppi, miss_rate, c): + plt.loglog(fppi, miss_rate, color = c, linewidth = 2) + """ Show resulted plot.""" -def showPlot(file_name): - plt.savefig(file_name) - plt.axis((pow(10, -3), pow(10, 1), 0.0, 1)) +def showPlot(file_name, labels): + plt.axis((pow(10, -3), pow(10, 1), .035, 1)) plt.yticks( [0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.64, 0.8, 1], ['.05', '.10', '.20', '.30', '.40', '.50', '.64', '.80', '1'] ) + plt.legend(labels, loc = "lower left") + plt.savefig(file_name) plt.show() """ Filter true positives and ignored detections for cascade detector output.""" @@ -110,10 +111,6 @@ def match(gts, dts): matches_ignore[idx] = 1 return matches_dt, matches_ignore -""" Draw plot.""" -def plotLogLog(fppi, miss_rate, c): - print - plt.loglog(fppi, miss_rate, color = c, linewidth = 2) """ Draw detections or ground truth on image.""" def draw_rects(img, rects, color, l = lambda x, y : x + y): @@ -209,7 +206,7 @@ def norm_acpect_ratio(boxes, ratio): """ Filter detections out of extended range. """ def filter_for_range(boxes, scale_range, ext_ratio): - boxes = sft.norm_acpect_ratio(boxes, 0.5) + boxes = norm_acpect_ratio(boxes, 0.5) boxes = [b for b in boxes if (b[3] - b[1]) > scale_range[0] / ext_ratio] boxes = [b for b in boxes if (b[3] - b[1]) < scale_range[1] * ext_ratio] return boxes From 8cf30c728e39e3a9923d58145487b798c57533de Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 28 Jan 2013 18:31:05 +0400 Subject: [PATCH 65/82] parse Caltech annotations --- apps/sft/misc/roc_caltech.py | 33 +++++++++++++++++++++++++++++++++ apps/sft/misc/roc_test.py | 2 +- apps/sft/misc/sft.py | 36 +++++++++++++++++++++++++++++++++++- 3 files changed, 69 insertions(+), 2 deletions(-) create mode 100755 apps/sft/misc/roc_caltech.py diff --git a/apps/sft/misc/roc_caltech.py b/apps/sft/misc/roc_caltech.py new file mode 100755 index 0000000000..39ee6820c3 --- /dev/null +++ b/apps/sft/misc/roc_caltech.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +import argparse +import sft + +import sys, os, os.path, glob, math, cv2, re +from datetime import datetime +import numpy + +if __name__ == "__main__": + path = "/home/kellan/datasets/caltech/set00/V000.txt" + # open annotation file + f = open(path) + (nFrame, nSample) = sft.caltech.parse_header(f) + objects = sft.caltech.extract_objects(f) + + caltechSamples = [] + annotations = [[] for i in range(nFrame)] + + for obj in objects: + (type, start, end) = re.search(r'^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$', obj[0]).groups() + print type, start, end + start = int(start) -1 + end = int(end) + pos = sft.caltech.parse_pos(obj[1]) + posv = sft.caltech.parse_pos(obj[2]) + occl = sft.caltech.parse_occl(obj[3]) + + for idx, (p, pv, oc) in enumerate(zip(*[pos, posv, occl])): + annotations[start + idx].append((type, p, oc, pv)) + + for each in annotations: + print each diff --git a/apps/sft/misc/roc_test.py b/apps/sft/misc/roc_test.py index f0fc3a809a..f91630aab7 100755 --- a/apps/sft/misc/roc_test.py +++ b/apps/sft/misc/roc_test.py @@ -9,7 +9,7 @@ import numpy plot_colors = ['b', 'c', 'r', 'g', 'm'] -# "key" : ( b, g, r) +# "key" : ( b, g, r) bgr = { "red" : ( 0, 0, 255), "green" : ( 0, 255, 0), "blue" : (255, 0 , 0)} diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index cac8094050..c4de7a090b 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -225,4 +225,38 @@ def resize_sample(image, d_w, d_h): image_to_resize = image interpolation_type = cv2.INTER_CUBIC - return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) \ No newline at end of file + return cv2.resize(image_to_resize,(d_w, d_h), None, 0, 0, interpolation_type) + +newobj = re.compile("^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$") + +class caltech: + @staticmethod + def extract_objects(f): + objects = [] + tmp = [] + for l in f: + if newobj.match(l) is not None: + objects.append(tmp) + tmp = [] + tmp.append(l) + return objects[1:] + + @staticmethod + def parse_header(f): + _ = f.readline() # skip first line (version string) + head = f.readline() + (nFrame, nSample) = re.search(r'nFrame=(\d+) n=(\d+)', head).groups() + return (int(nFrame), int(nSample)) + + @staticmethod + def parse_pos(l): + pos = re.match(r'^posv?\s*=(\[[\d\s\.\;]+\])$', l).group(1) + pos = re.sub(r"(\[)(\d)", "\\1[\\2", pos) + pos = re.sub(r"\s", ", ", re.sub(r"\;\s+(?=\])", "]", re.sub(r"\;\s+(?!\])", "],[", pos))) + return eval(pos) + + @staticmethod + def parse_occl(l): + occl = re.match(r'^occl\s*=(\[[\d\s\.\;]+\])$', l).group(1) + occl = re.sub(r"\s(?!\])", ",", occl) + return eval(occl) \ No newline at end of file From 28098b6632215c0b94136849b6f4f4351c9848d6 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Mon, 28 Jan 2013 18:41:22 +0400 Subject: [PATCH 66/82] refactor python --- apps/sft/misc/roc_caltech.py | 18 +----------------- apps/sft/misc/sft.py | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/apps/sft/misc/roc_caltech.py b/apps/sft/misc/roc_caltech.py index 39ee6820c3..c94982315a 100755 --- a/apps/sft/misc/roc_caltech.py +++ b/apps/sft/misc/roc_caltech.py @@ -11,23 +11,7 @@ if __name__ == "__main__": path = "/home/kellan/datasets/caltech/set00/V000.txt" # open annotation file f = open(path) - (nFrame, nSample) = sft.caltech.parse_header(f) - objects = sft.caltech.extract_objects(f) - - caltechSamples = [] - annotations = [[] for i in range(nFrame)] - - for obj in objects: - (type, start, end) = re.search(r'^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$', obj[0]).groups() - print type, start, end - start = int(start) -1 - end = int(end) - pos = sft.caltech.parse_pos(obj[1]) - posv = sft.caltech.parse_pos(obj[2]) - occl = sft.caltech.parse_occl(obj[3]) - - for idx, (p, pv, oc) in enumerate(zip(*[pos, posv, occl])): - annotations[start + idx].append((type, p, oc, pv)) + annotations = sft.parse_caltech(f) for each in annotations: print each diff --git a/apps/sft/misc/sft.py b/apps/sft/misc/sft.py index c4de7a090b..358c67056f 100644 --- a/apps/sft/misc/sft.py +++ b/apps/sft/misc/sft.py @@ -259,4 +259,23 @@ class caltech: def parse_occl(l): occl = re.match(r'^occl\s*=(\[[\d\s\.\;]+\])$', l).group(1) occl = re.sub(r"\s(?!\])", ",", occl) - return eval(occl) \ No newline at end of file + return eval(occl) + +def parse_caltech(f): + (nFrame, nSample) = caltech.parse_header(f) + objects = caltech.extract_objects(f) + + annotations = [[] for i in range(nFrame)] + for obj in objects: + (type, start, end) = re.search(r'^lbl=\'(\w+)\'\s+str=(\d+)\s+end=(\d+)\s+hide=0$', obj[0]).groups() + print type, start, end + start = int(start) -1 + end = int(end) + pos = caltech.parse_pos(obj[1]) + posv = caltech.parse_pos(obj[2]) + occl = caltech.parse_occl(obj[3]) + + for idx, (p, pv, oc) in enumerate(zip(*[pos, posv, occl])): + annotations[start + idx].append((type, p, oc, pv)) + + return annotations \ No newline at end of file From 1b43b0e2df9e7d4f89f6a17d48a9b050f4b53c03 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 12:26:12 +0400 Subject: [PATCH 67/82] move soft cascade functionality into dedicated module --- apps/sft/CMakeLists.txt | 8 +- apps/sft/include/sft/fpool.hpp | 2 +- modules/objdetect/doc/objdetect.rst | 1 - .../include/opencv2/objdetect/objdetect.hpp | 99 ------------ .../objdetect/perf/perf_cascadeclassifier.cpp | 43 ----- modules/softcascade/CMakeLists.txt | 2 + modules/softcascade/doc/softcascade.rst | 11 ++ .../doc/softcascade_detector.rst} | 14 +- .../softcascade/doc/softcascade_training.rst | 2 + .../opencv2/softcascade/softcascade.hpp | 149 ++++++++++++++++++ modules/softcascade/perf/perf_main.cpp | 45 ++++++ modules/softcascade/perf/perf_precomp. | 0 modules/softcascade/perf/perf_precomp.cpp | 43 +++++ modules/softcascade/perf/perf_precomp.hpp | 62 ++++++++ modules/softcascade/perf/perf_softcascade.cpp | 48 ++++++ .../{objdetect => softcascade}/src/icf.cpp | 4 +- modules/softcascade/src/precomp.cpp | 43 +++++ modules/softcascade/src/precomp.hpp | 58 +++++++ .../src/softcascade.cpp | 4 +- .../src/softcascade_init.cpp} | 6 +- modules/softcascade/test/test_main.cpp | 45 ++++++ modules/softcascade/test/test_precomp.cpp | 43 +++++ modules/softcascade/test/test_precomp.hpp | 59 +++++++ .../test/test_softcascade.cpp | 4 +- 24 files changed, 631 insertions(+), 164 deletions(-) create mode 100644 modules/softcascade/CMakeLists.txt create mode 100644 modules/softcascade/doc/softcascade.rst rename modules/{objdetect/doc/soft_cascade.rst => softcascade/doc/softcascade_detector.rst} (91%) create mode 100644 modules/softcascade/doc/softcascade_training.rst create mode 100644 modules/softcascade/include/opencv2/softcascade/softcascade.hpp create mode 100644 modules/softcascade/perf/perf_main.cpp create mode 100644 modules/softcascade/perf/perf_precomp. create mode 100644 modules/softcascade/perf/perf_precomp.cpp create mode 100644 modules/softcascade/perf/perf_precomp.hpp create mode 100644 modules/softcascade/perf/perf_softcascade.cpp rename modules/{objdetect => softcascade}/src/icf.cpp (97%) create mode 100644 modules/softcascade/src/precomp.cpp create mode 100644 modules/softcascade/src/precomp.hpp rename modules/{objdetect => softcascade}/src/softcascade.cpp (99%) rename modules/{objdetect/src/objdetect_init.cpp => softcascade/src/softcascade_init.cpp} (93%) create mode 100644 modules/softcascade/test/test_main.cpp create mode 100644 modules/softcascade/test/test_precomp.cpp create mode 100644 modules/softcascade/test/test_precomp.hpp rename modules/{objdetect => softcascade}/test/test_softcascade.cpp (97%) diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt index aa3bae2298..bc7c1ebed9 100644 --- a/apps/sft/CMakeLists.txt +++ b/apps/sft/CMakeLists.txt @@ -2,10 +2,10 @@ if(IOS OR ANDROID) return() endif() -set(the_target sft) -set(name ${the_target}) +set(name sft) +set(the_target opencv_${name}) -set(OPENCV_${the_target}_DEPS opencv_core opencv_objdetect opencv_highgui opencv_imgproc opencv_ml) +set(OPENCV_${the_target}_DEPS opencv_core opencv_softcascade opencv_highgui opencv_imgproc opencv_ml) ocv_check_dependencies(${OPENCV_${the_target}_DEPS}) if(NOT OCV_DEPENDENCIES_FOUND) @@ -28,7 +28,7 @@ set_target_properties(${the_target} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} INSTALL_NAME_DIR lib - OUTPUT_NAME ${name}) + OUTPUT_NAME ${the_target}) if(ENABLE_SOLUTION_FOLDERS) set_target_properties(${the_target} PROPERTIES FOLDER "applications") diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 91dc500eca..0af71c890d 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -48,7 +48,7 @@ #include #include -#include +#include namespace sft { struct ICF diff --git a/modules/objdetect/doc/objdetect.rst b/modules/objdetect/doc/objdetect.rst index 381742e50b..4bab781b8a 100644 --- a/modules/objdetect/doc/objdetect.rst +++ b/modules/objdetect/doc/objdetect.rst @@ -8,5 +8,4 @@ objdetect. Object Detection :maxdepth: 2 cascade_classification - soft_cascade latent_svm diff --git a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp index 83257976d0..f9138e242a 100644 --- a/modules/objdetect/include/opencv2/objdetect/objdetect.hpp +++ b/modules/objdetect/include/opencv2/objdetect/objdetect.hpp @@ -488,105 +488,6 @@ protected: Ptr maskGenerator; }; - -class CV_EXPORTS_W ICFPreprocessor -{ -public: - CV_WRAP ICFPreprocessor(); - CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; -protected: - enum {BINS = 10}; -}; - -// Implementation of soft (stageless) cascaded detector. -class CV_EXPORTS_W SCascade : public Algorithm -{ -public: - - // Representation of detectors result. - struct CV_EXPORTS Detection - { - // Default object type. - enum {PEDESTRIAN = 1}; - - // Creates Detection from an object bounding box and confidence. - // Param b is a bounding box - // Param c is a confidence that object belongs to class k - // Paral k is an object class - Detection(const cv::Rect& b, const float c, int k = PEDESTRIAN) : bb(b), confidence(c), kind(k) {} - - cv::Rect bb; - float confidence; - int kind; - }; - - // Create channel integrals for Soft Cascade detector. - class CV_EXPORTS Channels - { - public: - // constrictor form resizing factor. - // Param shr is a resizing factor. Resize is applied before the computing integral sum - Channels(const int shrinkage); - - // Appends specified number of HOG first-order features integrals into given vector. - // Param gray is an input 1-channel gray image. - // Param integrals is a vector of integrals. Hog-channels will be appended to it. - // Param bins is a number of hog-bins - void appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const; - - // Converts 3-channel BGR input frame in Luv and appends each channel to the integrals. - // Param frame is an input 3-channel BGR colored image. - // Param integrals is a vector of integrals. Computed from the frame luv-channels will be appended to it. - void appendLuvBins(const cv::Mat& frame, std::vector& integrals) const; - - private: - int shrinkage; - }; - - enum { NO_REJECT = 1, DOLLAR = 2, /*PASCAL = 4,*/ DEFAULT = NO_REJECT}; - - // An empty cascade will be created. - // Param minScale is a minimum scale relative to the original size of the image on which cascade will be applyed. - // Param minScale is a maximum scale relative to the original size of the image on which cascade will be applyed. - // Param scales is a number of scales from minScale to maxScale. - // Param rejCriteria is used for NMS. - CV_WRAP SCascade(const double minScale = 0.4, const double maxScale = 5., const int scales = 55, const int rejCriteria = 1); - - CV_WRAP virtual ~SCascade(); - - cv::AlgorithmInfo* info() const; - - // Load cascade from FileNode. - // Param fn is a root node for cascade. Should be . - CV_WRAP virtual bool load(const FileNode& fn); - - // Load cascade config. - CV_WRAP virtual void read(const FileNode& fn); - - // Return the vector of Decection objcts. - // Param image is a frame on which detector will be applied. - // Param rois is a vector of regions of interest. Only the objects that fall into one of the regions will be returned. - // Param objects is an output array of Detections - virtual void detect(InputArray image, InputArray rois, std::vector& objects) const; - // Param rects is an output array of bounding rectangles for detected objects. - // Param confs is an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th configence. - CV_WRAP virtual void detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const; - -private: - void detectNoRoi(const Mat& image, std::vector& objects) const; - - struct Fields; - Fields* fields; - - double minScale; - double maxScale; - - int scales; - int rejCriteria; -}; - -CV_EXPORTS bool initModule_objdetect(void); - //////////////// HOG (Histogram-of-Oriented-Gradients) Descriptor and Object Detector ////////////// // struct for detection region of interest (ROI) diff --git a/modules/objdetect/perf/perf_cascadeclassifier.cpp b/modules/objdetect/perf/perf_cascadeclassifier.cpp index 78c80f39d5..27b4226e97 100644 --- a/modules/objdetect/perf/perf_cascadeclassifier.cpp +++ b/modules/objdetect/perf/perf_cascadeclassifier.cpp @@ -47,47 +47,4 @@ PERF_TEST_P(ImageName_MinSize, CascadeClassifierLBPFrontalFace, std::sort(faces.begin(), faces.end(), comparators::RectLess()); SANITY_CHECK(faces, 3.001 * faces.size()); -} - -typedef std::tr1::tuple fixture; -typedef perf::TestBaseWithParam detect; - - -namespace { -typedef cv::SCascade::Detection detection_t; - -void extractRacts(std::vector objectBoxes, vector& rects) -{ - rects.clear(); - for (int i = 0; i < (int)objectBoxes.size(); ++i) - rects.push_back(objectBoxes[i].bb); -} - -} - -PERF_TEST_P(detect, SCascade, - testing::Combine(testing::Values(std::string("cv/cascadeandhog/cascades/inria_caltech-17.01.2013.xml")), - testing::Values(std::string("cv/cascadeandhog/images/image_00000000_0.png")))) -{ - typedef cv::SCascade::Detection Detection; - cv::Mat colored = imread(getDataPath(get<1>(GetParam()))); - ASSERT_FALSE(colored.empty()); - - cv::SCascade cascade; - cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); - ASSERT_TRUE(fs.isOpened()); - ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); - - std::vector objectBoxes; - cascade.detect(colored, cv::noArray(), objectBoxes); - - TEST_CYCLE() - { - cascade.detect(colored, cv::noArray(), objectBoxes); - } - - vector rects; - extractRacts(objectBoxes, rects); - std::sort(rects.begin(), rects.end(), comparators::RectLess()); - SANITY_CHECK(rects); } \ No newline at end of file diff --git a/modules/softcascade/CMakeLists.txt b/modules/softcascade/CMakeLists.txt new file mode 100644 index 0000000000..ef38c3ad7b --- /dev/null +++ b/modules/softcascade/CMakeLists.txt @@ -0,0 +1,2 @@ +set(the_description "Soft Cascade detection and training") +ocv_define_module(softcascade opencv_core opencv_imgproc opencv_ml) \ No newline at end of file diff --git a/modules/softcascade/doc/softcascade.rst b/modules/softcascade/doc/softcascade.rst new file mode 100644 index 0000000000..66c93d1fc2 --- /dev/null +++ b/modules/softcascade/doc/softcascade.rst @@ -0,0 +1,11 @@ +******************************************************** +softcascade. Soft Cascade object detection and training. +******************************************************** + +.. highlight:: cpp + +.. toctree:: + :maxdepth: 2 + + softcascade_detector + softcascade_training \ No newline at end of file diff --git a/modules/objdetect/doc/soft_cascade.rst b/modules/softcascade/doc/softcascade_detector.rst similarity index 91% rename from modules/objdetect/doc/soft_cascade.rst rename to modules/softcascade/doc/softcascade_detector.rst index ac537b3a81..2ac6264fa5 100644 --- a/modules/objdetect/doc/soft_cascade.rst +++ b/modules/softcascade/doc/softcascade_detector.rst @@ -1,10 +1,10 @@ Soft Cascade Classifier -====================== +======================= .. highlight:: cpp Soft Cascade Classifier for Object Detection ----------------------------------------------------------- +-------------------------------------------- Cascade detectors have been shown to operate extremely rapidly, with high accuracy, and have important applications in different spheres. The initial goal for this cascade implementation was the fast and accurate pedestrian detector but it also useful in general. Soft cascade is trained with AdaBoost. But instead of training sequence of stages, the soft cascade is trained as a one long stage of T weak classifiers. Soft cascade is formulated as follows: @@ -16,7 +16,7 @@ where :math:`\texttt{s}_t(x) = \alpha_t\texttt{h}_t(x)` are the set of threshold .. math:: \texttt{H}_t(x) = \sum _{\texttt{i}=1..\texttt{t}} {\texttt{s}_i(x)} -be the partial sum of sample responses before :math:`t`-the weak classifier will be applied. The funtcion :math:`\texttt{H}_t(x)` of :math:`t` for sample :math:`x` named *sample trace*. +be the partial sum of sample responses before :math:`t`-the weak classifier will be applied. The function :math:`\texttt{H}_t(x)` of :math:`t` for sample :math:`x` named *sample trace*. After each weak classifier evaluation, the sample trace at the point :math:`t` is compared with the rejection threshold :math:`r_t`. The sequence of :math:`r_t` named *rejection trace*. The sample has been rejected if it fall rejection threshold. So stageless cascade allows to reject not-object sample as soon as possible. Another meaning of the sample trace is a confidence with that sample recognized as desired object. At each :math:`t` that confidence depend on all previous weak classifier. This feature of soft cascade is resulted in more accurate detection. The original formulation of soft cascade can be found in [BJ05]_. @@ -49,9 +49,9 @@ An empty cascade will be created. .. ocv:function:: bool SCascade::SCascade(const float minScale = 0.4f, const float maxScale = 5.f, const int scales = 55, const int rejfactor = 1) - :param minScale: a minimum scale relative to the original size of the image on which cascade will be applyed. + :param minScale: a minimum scale relative to the original size of the image on which cascade will be applied. - :param maxScale: a maximum scale relative to the original size of the image on which cascade will be applyed. + :param maxScale: a maximum scale relative to the original size of the image on which cascade will be applied. :param scales: a number of scales from minScale to maxScale. @@ -79,7 +79,7 @@ Load cascade from FileNode. SCascade::detect -------------------------- -Apply cascade to an input frame and return the vector of Decection objcts. +Apply cascade to an input frame and return the vector of Detection objects. .. ocv:function:: void SCascade::detect(InputArray image, InputArray rois, std::vector& objects) const @@ -93,4 +93,4 @@ Apply cascade to an input frame and return the vector of Decection objcts. :param rects: an output array of bounding rectangles for detected objects. - :param confs: an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th configence. \ No newline at end of file + :param confs: an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th confidence. \ No newline at end of file diff --git a/modules/softcascade/doc/softcascade_training.rst b/modules/softcascade/doc/softcascade_training.rst new file mode 100644 index 0000000000..8b9ea5e351 --- /dev/null +++ b/modules/softcascade/doc/softcascade_training.rst @@ -0,0 +1,2 @@ +Soft Cascade Training +======================= \ No newline at end of file diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp new file mode 100644 index 0000000000..c589906aac --- /dev/null +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -0,0 +1,149 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __OPENCV_SOFTCASCADE_HPP__ +#define __OPENCV_SOFTCASCADE_HPP__ + +#include "opencv2/core/core.hpp" + +namespace cv { + +class CV_EXPORTS_W ICFPreprocessor +{ +public: + CV_WRAP ICFPreprocessor(); + CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; +protected: + enum {BINS = 10}; +}; + +// Implementation of soft (stageless) cascaded detector. +class CV_EXPORTS_W SCascade : public Algorithm +{ +public: + + // Representation of detectors result. + struct CV_EXPORTS Detection + { + // Default object type. + enum {PEDESTRIAN = 1}; + + // Creates Detection from an object bounding box and confidence. + // Param b is a bounding box + // Param c is a confidence that object belongs to class k + // Param k is an object class + Detection(const cv::Rect& b, const float c, int k = PEDESTRIAN) : bb(b), confidence(c), kind(k) {} + + cv::Rect bb; + float confidence; + int kind; + }; + + // Create channel integrals for Soft Cascade detector. + class CV_EXPORTS Channels + { + public: + // constrictor form resizing factor. + // Param shrinkage is a resizing factor. Resize is applied before the computing integral sum + Channels(const int shrinkage); + + // Appends specified number of HOG first-order features integrals into given vector. + // Param gray is an input 1-channel gray image. + // Param integrals is a vector of integrals. Hog-channels will be appended to it. + // Param bins is a number of hog-bins + void appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const; + + // Converts 3-channel BGR input frame in Luv and appends each channel to the integrals. + // Param frame is an input 3-channel BGR colored image. + // Param integrals is a vector of integrals. Computed from the frame luv-channels will be appended to it. + void appendLuvBins(const cv::Mat& frame, std::vector& integrals) const; + + private: + int shrinkage; + }; + + enum { NO_REJECT = 1, DOLLAR = 2, /*PASCAL = 4,*/ DEFAULT = NO_REJECT}; + + // An empty cascade will be created. + // Param minScale is a minimum scale relative to the original size of the image on which cascade will be applied. + // Param minScale is a maximum scale relative to the original size of the image on which cascade will be applied. + // Param scales is a number of scales from minScale to maxScale. + // Param rejCriteria is used for NMS. + CV_WRAP SCascade(const double minScale = 0.4, const double maxScale = 5., const int scales = 55, const int rejCriteria = 1); + + CV_WRAP virtual ~SCascade(); + + cv::AlgorithmInfo* info() const; + + // Load cascade from FileNode. + // Param fn is a root node for cascade. Should be . + CV_WRAP virtual bool load(const FileNode& fn); + + // Load cascade config. + CV_WRAP virtual void read(const FileNode& fn); + + // Return the vector of Detection objects. + // Param image is a frame on which detector will be applied. + // Param rois is a vector of regions of interest. Only the objects that fall into one of the regions will be returned. + // Param objects is an output array of Detections + virtual void detect(InputArray image, InputArray rois, std::vector& objects) const; + // Param rects is an output array of bounding rectangles for detected objects. + // Param confs is an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th confidence. + CV_WRAP virtual void detect(InputArray image, InputArray rois, CV_OUT OutputArray rects, CV_OUT OutputArray confs) const; + +private: + void detectNoRoi(const Mat& image, std::vector& objects) const; + + struct Fields; + Fields* fields; + + double minScale; + double maxScale; + + int scales; + int rejCriteria; +}; + +CV_EXPORTS bool initModule_softcascade(void); +} + +#endif \ No newline at end of file diff --git a/modules/softcascade/perf/perf_main.cpp b/modules/softcascade/perf/perf_main.cpp new file mode 100644 index 0000000000..f045c4b46d --- /dev/null +++ b/modules/softcascade/perf/perf_main.cpp @@ -0,0 +1,45 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "perf_precomp.hpp" + +CV_PERF_TEST_MAIN(softcascade) diff --git a/modules/softcascade/perf/perf_precomp. b/modules/softcascade/perf/perf_precomp. new file mode 100644 index 0000000000..e69de29bb2 diff --git a/modules/softcascade/perf/perf_precomp.cpp b/modules/softcascade/perf/perf_precomp.cpp new file mode 100644 index 0000000000..cc728b050f --- /dev/null +++ b/modules/softcascade/perf/perf_precomp.cpp @@ -0,0 +1,43 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "perf_precomp.hpp" diff --git a/modules/softcascade/perf/perf_precomp.hpp b/modules/softcascade/perf/perf_precomp.hpp new file mode 100644 index 0000000000..b761c88c64 --- /dev/null +++ b/modules/softcascade/perf/perf_precomp.hpp @@ -0,0 +1,62 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wmissing-declarations" +# if defined __clang__ || defined __APPLE__ +# pragma GCC diagnostic ignored "-Wmissing-prototypes" +# pragma GCC diagnostic ignored "-Wextra" +# endif +#endif + +#ifndef __OPENCV_PERF_PRECOMP_HPP__ +#define __OPENCV_PERF_PRECOMP_HPP__ + +# include "opencv2/ts/ts.hpp" +# include "opencv2/softcascade/softcascade.hpp" +# include "opencv2/highgui/highgui.hpp" + +#ifdef GTEST_CREATE_SHARED_LIBRARY +# error no modules except ts should have GTEST_CREATE_SHARED_LIBRARY defined +#endif + +#endif diff --git a/modules/softcascade/perf/perf_softcascade.cpp b/modules/softcascade/perf/perf_softcascade.cpp new file mode 100644 index 0000000000..cf612b6052 --- /dev/null +++ b/modules/softcascade/perf/perf_softcascade.cpp @@ -0,0 +1,48 @@ +#include "perf_precomp.hpp" +#include + +using cv::Rect; +using std::tr1::get; + +typedef std::tr1::tuple fixture; +typedef perf::TestBaseWithParam detect; + + +namespace { +typedef cv::SCascade::Detection detection_t; + +void extractRacts(std::vector objectBoxes, std::vector& rects) +{ + rects.clear(); + for (int i = 0; i < (int)objectBoxes.size(); ++i) + rects.push_back(objectBoxes[i].bb); +} + +} + +PERF_TEST_P(detect, SCascade, + testing::Combine(testing::Values(std::string("cv/cascadeandhog/cascades/inria_caltech-17.01.2013.xml")), + testing::Values(std::string("cv/cascadeandhog/images/image_00000000_0.png")))) +{ + typedef cv::SCascade::Detection Detection; + cv::Mat colored = cv::imread(getDataPath(get<1>(GetParam()))); + ASSERT_FALSE(colored.empty()); + + cv::SCascade cascade; + cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); + ASSERT_TRUE(fs.isOpened()); + ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); + + std::vector objectBoxes; + cascade.detect(colored, cv::noArray(), objectBoxes); + + TEST_CYCLE() + { + cascade.detect(colored, cv::noArray(), objectBoxes); + } + + std::vector rects; + extractRacts(objectBoxes, rects); + std::sort(rects.begin(), rects.end(), perf::comparators::RectLess()); + SANITY_CHECK(rects); +} \ No newline at end of file diff --git a/modules/objdetect/src/icf.cpp b/modules/softcascade/src/icf.cpp similarity index 97% rename from modules/objdetect/src/icf.cpp rename to modules/softcascade/src/icf.cpp index a9321276ca..8b14421ef1 100644 --- a/modules/objdetect/src/icf.cpp +++ b/modules/softcascade/src/icf.cpp @@ -11,7 +11,7 @@ // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. diff --git a/modules/softcascade/src/precomp.cpp b/modules/softcascade/src/precomp.cpp new file mode 100644 index 0000000000..62c236d08a --- /dev/null +++ b/modules/softcascade/src/precomp.cpp @@ -0,0 +1,43 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "precomp.hpp" diff --git a/modules/softcascade/src/precomp.hpp b/modules/softcascade/src/precomp.hpp new file mode 100644 index 0000000000..28771c073a --- /dev/null +++ b/modules/softcascade/src/precomp.hpp @@ -0,0 +1,58 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __OPENCV_PRECOMP_H__ +#define __OPENCV_PRECOMP_H__ + +#ifdef HAVE_CVCONFIG_H +#include "cvconfig.h" +#endif + +#include "opencv2/softcascade/softcascade.hpp" +#include "opencv2/imgproc/imgproc.hpp" +#include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/core/core_c.h" +#include "opencv2/core/internal.hpp" + +#include "opencv2/opencv_modules.hpp" + +#endif diff --git a/modules/objdetect/src/softcascade.cpp b/modules/softcascade/src/softcascade.cpp similarity index 99% rename from modules/objdetect/src/softcascade.cpp rename to modules/softcascade/src/softcascade.cpp index 9893f417be..3bf3a2ac76 100644 --- a/modules/objdetect/src/softcascade.cpp +++ b/modules/softcascade/src/softcascade.cpp @@ -11,7 +11,7 @@ // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. diff --git a/modules/objdetect/src/objdetect_init.cpp b/modules/softcascade/src/softcascade_init.cpp similarity index 93% rename from modules/objdetect/src/objdetect_init.cpp rename to modules/softcascade/src/softcascade_init.cpp index 68e64243a9..17594d3040 100644 --- a/modules/objdetect/src/objdetect_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -11,7 +11,7 @@ // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. @@ -51,7 +51,7 @@ CV_INIT_ALGORITHM(SCascade, "CascadeDetector.SCascade", obj.info()->addParam(obj, "scales", obj.scales); obj.info()->addParam(obj, "rejCriteria", obj.rejCriteria)); -bool initModule_objdetect(void) +bool initModule_softcascade(void) { Ptr sc = createSCascade(); return sc->info() != 0; diff --git a/modules/softcascade/test/test_main.cpp b/modules/softcascade/test/test_main.cpp new file mode 100644 index 0000000000..d3999d4833 --- /dev/null +++ b/modules/softcascade/test/test_main.cpp @@ -0,0 +1,45 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "test_precomp.hpp" + +CV_TEST_MAIN("cv") diff --git a/modules/softcascade/test/test_precomp.cpp b/modules/softcascade/test/test_precomp.cpp new file mode 100644 index 0000000000..278cdd03cf --- /dev/null +++ b/modules/softcascade/test/test_precomp.cpp @@ -0,0 +1,43 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "test_precomp.hpp" diff --git a/modules/softcascade/test/test_precomp.hpp b/modules/softcascade/test/test_precomp.hpp new file mode 100644 index 0000000000..6abcbeada9 --- /dev/null +++ b/modules/softcascade/test/test_precomp.hpp @@ -0,0 +1,59 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifdef __GNUC__ +# pragma GCC diagnostic ignored "-Wmissing-declarations" +# if defined __clang__ || defined __APPLE__ +# pragma GCC diagnostic ignored "-Wmissing-prototypes" +# pragma GCC diagnostic ignored "-Wextra" +# endif +#endif + +#ifndef __OPENCV_TEST_PRECOMP_HPP__ +#define __OPENCV_TEST_PRECOMP_HPP__ + +# include "opencv2/ts/ts.hpp" +# include "opencv2/softcascade/softcascade.hpp" +# include "opencv2/imgproc/imgproc.hpp" +# include "opencv2/highgui/highgui.hpp" + +#endif diff --git a/modules/objdetect/test/test_softcascade.cpp b/modules/softcascade/test/test_softcascade.cpp similarity index 97% rename from modules/objdetect/test/test_softcascade.cpp rename to modules/softcascade/test/test_softcascade.cpp index 024ea925a6..a53b339582 100644 --- a/modules/objdetect/test/test_softcascade.cpp +++ b/modules/softcascade/test/test_softcascade.cpp @@ -11,7 +11,7 @@ // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. From 61441a101426ed9618413fae7c8073560018d3f5 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 13:09:49 +0400 Subject: [PATCH 68/82] rename SCascade -> SoftCascadeDetector --- .../opencv2/softcascade/softcascade.hpp | 94 ++++++++++--------- modules/softcascade/perf/perf_softcascade.cpp | 10 +- modules/softcascade/src/icf.cpp | 6 +- modules/softcascade/src/softcascade.cpp | 41 ++++---- modules/softcascade/src/softcascade_init.cpp | 4 +- modules/softcascade/test/test_softcascade.cpp | 34 +++---- 6 files changed, 95 insertions(+), 94 deletions(-) diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index c589906aac..6181584463 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -56,50 +56,52 @@ protected: enum {BINS = 10}; }; -// Implementation of soft (stageless) cascaded detector. -class CV_EXPORTS_W SCascade : public Algorithm +// Representation of detectors result. +struct CV_EXPORTS Detection +{ + // Default object type. + enum {PEDESTRIAN = 1}; + + // Creates Detection from an object bounding box and confidence. + // Param b is a bounding box + // Param c is a confidence that object belongs to class k + // Param k is an object class + Detection(const cv::Rect& b, const float c, int k = PEDESTRIAN) : bb(b), confidence(c), kind(k) {} + + cv::Rect bb; + float confidence; + int kind; +}; + +// Create channel integrals for Soft Cascade detector. +class CV_EXPORTS Channels { public: + // constrictor form resizing factor. + // Param shrinkage is a resizing factor. Resize is applied before the computing integral sum + Channels(const int shrinkage); - // Representation of detectors result. - struct CV_EXPORTS Detection - { - // Default object type. - enum {PEDESTRIAN = 1}; + // Appends specified number of HOG first-order features integrals into given vector. + // Param gray is an input 1-channel gray image. + // Param integrals is a vector of integrals. Hog-channels will be appended to it. + // Param bins is a number of hog-bins + void appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const; - // Creates Detection from an object bounding box and confidence. - // Param b is a bounding box - // Param c is a confidence that object belongs to class k - // Param k is an object class - Detection(const cv::Rect& b, const float c, int k = PEDESTRIAN) : bb(b), confidence(c), kind(k) {} + // Converts 3-channel BGR input frame in Luv and appends each channel to the integrals. + // Param frame is an input 3-channel BGR colored image. + // Param integrals is a vector of integrals. Computed from the frame luv-channels will be appended to it. + void appendLuvBins(const cv::Mat& frame, std::vector& integrals) const; - cv::Rect bb; - float confidence; - int kind; - }; +private: + int shrinkage; +}; - // Create channel integrals for Soft Cascade detector. - class CV_EXPORTS Channels - { - public: - // constrictor form resizing factor. - // Param shrinkage is a resizing factor. Resize is applied before the computing integral sum - Channels(const int shrinkage); - - // Appends specified number of HOG first-order features integrals into given vector. - // Param gray is an input 1-channel gray image. - // Param integrals is a vector of integrals. Hog-channels will be appended to it. - // Param bins is a number of hog-bins - void appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const; - - // Converts 3-channel BGR input frame in Luv and appends each channel to the integrals. - // Param frame is an input 3-channel BGR colored image. - // Param integrals is a vector of integrals. Computed from the frame luv-channels will be appended to it. - void appendLuvBins(const cv::Mat& frame, std::vector& integrals) const; - - private: - int shrinkage; - }; +// ========================================================================== // +// Implementation of soft (stageless) cascaded detector. +// ========================================================================== // +class CV_EXPORTS_W SoftCascadeDetector : public Algorithm +{ +public: enum { NO_REJECT = 1, DOLLAR = 2, /*PASCAL = 4,*/ DEFAULT = NO_REJECT}; @@ -108,24 +110,25 @@ public: // Param minScale is a maximum scale relative to the original size of the image on which cascade will be applied. // Param scales is a number of scales from minScale to maxScale. // Param rejCriteria is used for NMS. - CV_WRAP SCascade(const double minScale = 0.4, const double maxScale = 5., const int scales = 55, const int rejCriteria = 1); + CV_WRAP SoftCascadeDetector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); - CV_WRAP virtual ~SCascade(); + CV_WRAP virtual ~SoftCascadeDetector(); cv::AlgorithmInfo* info() const; - // Load cascade from FileNode. - // Param fn is a root node for cascade. Should be . - CV_WRAP virtual bool load(const FileNode& fn); + // Load soft cascade from FileNode. + // Param fileNode is a root node for cascade. + CV_WRAP virtual bool load(const FileNode& fileNode); - // Load cascade config. - CV_WRAP virtual void read(const FileNode& fn); + // Load soft cascade config. + CV_WRAP virtual void read(const FileNode& fileNode); // Return the vector of Detection objects. // Param image is a frame on which detector will be applied. // Param rois is a vector of regions of interest. Only the objects that fall into one of the regions will be returned. // Param objects is an output array of Detections virtual void detect(InputArray image, InputArray rois, std::vector& objects) const; + // Param rects is an output array of bounding rectangles for detected objects. // Param confs is an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th confidence. CV_WRAP virtual void detect(InputArray image, InputArray rois, CV_OUT OutputArray rects, CV_OUT OutputArray confs) const; @@ -144,6 +147,7 @@ private: }; CV_EXPORTS bool initModule_softcascade(void); + } #endif \ No newline at end of file diff --git a/modules/softcascade/perf/perf_softcascade.cpp b/modules/softcascade/perf/perf_softcascade.cpp index cf612b6052..3810356383 100644 --- a/modules/softcascade/perf/perf_softcascade.cpp +++ b/modules/softcascade/perf/perf_softcascade.cpp @@ -9,9 +9,8 @@ typedef perf::TestBaseWithParam detect; namespace { -typedef cv::SCascade::Detection detection_t; -void extractRacts(std::vector objectBoxes, std::vector& rects) +void extractRacts(std::vector objectBoxes, std::vector& rects) { rects.clear(); for (int i = 0; i < (int)objectBoxes.size(); ++i) @@ -20,20 +19,19 @@ void extractRacts(std::vector objectBoxes, std::vector& rects } -PERF_TEST_P(detect, SCascade, +PERF_TEST_P(detect, SoftCascadeDetector, testing::Combine(testing::Values(std::string("cv/cascadeandhog/cascades/inria_caltech-17.01.2013.xml")), testing::Values(std::string("cv/cascadeandhog/images/image_00000000_0.png")))) { - typedef cv::SCascade::Detection Detection; cv::Mat colored = cv::imread(getDataPath(get<1>(GetParam()))); ASSERT_FALSE(colored.empty()); - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); - std::vector objectBoxes; + std::vector objectBoxes; cascade.detect(colored, cv::noArray(), objectBoxes); TEST_CYCLE() diff --git a/modules/softcascade/src/icf.cpp b/modules/softcascade/src/icf.cpp index 8b14421ef1..b58a384ec8 100644 --- a/modules/softcascade/src/icf.cpp +++ b/modules/softcascade/src/icf.cpp @@ -99,9 +99,9 @@ void cv::ICFPreprocessor::apply(cv::InputArray _frame, cv::OutputArray _integral cv::integral(shrunk, integrals, cv::noArray(), CV_32S); } -cv::SCascade::Channels::Channels(int shr) : shrinkage(shr) {} +cv::Channels::Channels(int shr) : shrinkage(shr) {} -void cv::SCascade::Channels::appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const +void cv::Channels::appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const { CV_Assert(gray.type() == CV_8UC1); int h = gray.rows; @@ -149,7 +149,7 @@ void cv::SCascade::Channels::appendHogBins(const cv::Mat& gray, std::vector& integrals) const +void cv::Channels::appendLuvBins(const cv::Mat& frame, std::vector& integrals) const { CV_Assert(frame.type() == CV_8UC3); CV_Assert(!(frame.cols % shrinkage) && !(frame.rows % shrinkage)); diff --git a/modules/softcascade/src/softcascade.cpp b/modules/softcascade/src/softcascade.cpp index 3bf3a2ac76..3755965f77 100644 --- a/modules/softcascade/src/softcascade.cpp +++ b/modules/softcascade/src/softcascade.cpp @@ -134,7 +134,6 @@ struct Level cv::Size objSize; float scaling[2]; // 0-th for channels <= 6, 1-st otherwise - typedef cv::SCascade::Detection Detection; Level(const Octave& oct, const float scale, const int shrinkage, const int w, const int h) : octave(&oct), origScale(scale), relScale(scale / oct.scale), @@ -146,13 +145,13 @@ struct Level scaleshift = static_cast(relScale * (1 << 16)); } - void addDetection(const int x, const int y, float confidence, std::vector& detections) const + void addDetection(const int x, const int y, float confidence, std::vector& detections) const { // fix me int shrinkage = 4;//(*octave).shrinkage; cv::Rect rect(cvRound(x * shrinkage), cvRound(y * shrinkage), objSize.width, objSize.height); - detections.push_back(Detection(rect, confidence)); + detections.push_back(cv::Detection(rect, confidence)); } float rescale(cv::Rect& scaledRect, const float threshold, int idx) const @@ -184,9 +183,9 @@ struct ChannelStorage { hog.clear(); hog.reserve(10); - cv::SCascade::Channels ints(shr); + cv::Channels ints(shr); - // convert to grey + // convert to gray cv::Mat grey; cv::cvtColor(colored, grey, CV_BGR2GRAY); @@ -213,7 +212,7 @@ struct ChannelStorage } -struct cv::SCascade::Fields +struct cv::SoftCascadeDetector::Fields { float minScale; float maxScale; @@ -417,17 +416,17 @@ struct cv::SCascade::Fields } }; -cv::SCascade::SCascade(const double mins, const double maxs, const int nsc, const int rej) +cv::SoftCascadeDetector::SoftCascadeDetector(const double mins, const double maxs, const int nsc, const int rej) : fields(0), minScale(mins), maxScale(maxs), scales(nsc), rejCriteria(rej) {} -cv::SCascade::~SCascade() { delete fields;} +cv::SoftCascadeDetector::~SoftCascadeDetector() { delete fields;} -void cv::SCascade::read(const FileNode& fn) +void cv::SoftCascadeDetector::read(const FileNode& fn) { Algorithm::read(fn); } -bool cv::SCascade::load(const FileNode& fn) +bool cv::SoftCascadeDetector::load(const FileNode& fn) { if (fields) delete fields; @@ -436,13 +435,13 @@ bool cv::SCascade::load(const FileNode& fn) } namespace { -typedef cv::SCascade::Detection Detection; -typedef std::vector dvector; + +typedef std::vector dvector; struct ConfidenceGt { - bool operator()(const Detection& a, const Detection& b) const + bool operator()(const cv::Detection& a, const cv::Detection& b) const { return a.confidence > b.confidence; } @@ -463,10 +462,10 @@ void DollarNMS(dvector& objects) for (dvector::iterator dIt = objects.begin(); dIt != objects.end(); ++dIt) { - const Detection &a = *dIt; + const cv::Detection &a = *dIt; for (dvector::iterator next = dIt + 1; next != objects.end(); ) { - const Detection &b = *next; + const cv::Detection &b = *next; const float ovl = overlap(a.bb, b.bb) / std::min(a.bb.area(), b.bb.area()); @@ -478,15 +477,15 @@ void DollarNMS(dvector& objects) } } -static void suppress(int type, std::vector& objects) +static void suppress(int type, std::vector& objects) { - CV_Assert(type == cv::SCascade::DOLLAR); + CV_Assert(type == cv::SoftCascadeDetector::DOLLAR); DollarNMS(objects); } } -void cv::SCascade::detectNoRoi(const cv::Mat& image, std::vector& objects) const +void cv::SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const { Fields& fld = *fields; // create integrals @@ -513,9 +512,9 @@ void cv::SCascade::detectNoRoi(const cv::Mat& image, std::vector& obj if (rejCriteria != NO_REJECT) suppress(rejCriteria, objects); } -void cv::SCascade::detect(cv::InputArray _image, cv::InputArray _rois, std::vector& objects) const +void cv::SoftCascadeDetector::detect(cv::InputArray _image, cv::InputArray _rois, std::vector& objects) const { - // only color images are supperted + // only color images are suppered cv::Mat image = _image.getMat(); CV_Assert(image.type() == CV_8UC3); @@ -565,7 +564,7 @@ void cv::SCascade::detect(cv::InputArray _image, cv::InputArray _rois, std::vect if (rejCriteria != NO_REJECT) suppress(rejCriteria, objects); } -void cv::SCascade::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const +void cv::SoftCascadeDetector::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const { std::vector objects; detect( _image, _rois, objects); diff --git a/modules/softcascade/src/softcascade_init.cpp b/modules/softcascade/src/softcascade_init.cpp index 17594d3040..eb2eae11df 100644 --- a/modules/softcascade/src/softcascade_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -45,7 +45,7 @@ namespace cv { -CV_INIT_ALGORITHM(SCascade, "CascadeDetector.SCascade", +CV_INIT_ALGORITHM(SoftCascadeDetector, "CascadeDetector.SoftCascadeDetector", obj.info()->addParam(obj, "minScale", obj.minScale); obj.info()->addParam(obj, "maxScale", obj.maxScale); obj.info()->addParam(obj, "scales", obj.scales); @@ -53,7 +53,7 @@ CV_INIT_ALGORITHM(SCascade, "CascadeDetector.SCascade", bool initModule_softcascade(void) { - Ptr sc = createSCascade(); + Ptr sc = createSoftCascadeDetector(); return sc->info() != 0; } diff --git a/modules/softcascade/test/test_softcascade.cpp b/modules/softcascade/test/test_softcascade.cpp index a53b339582..16f122e008 100644 --- a/modules/softcascade/test/test_softcascade.cpp +++ b/modules/softcascade/test/test_softcascade.cpp @@ -45,20 +45,20 @@ #include "test_precomp.hpp" -TEST(SCascade, readCascade) +TEST(SoftCascadeDetector, readCascade) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); } -TEST(SCascade, detect) +TEST(SoftCascadeDetector, detect) { - typedef cv::SCascade::Detection Detection; + typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path()+ "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -71,11 +71,11 @@ TEST(SCascade, detect) ASSERT_EQ(719, (int)objects.size()); } -TEST(SCascade, detectSeparate) +TEST(SoftCascadeDetector, detectSeparate) { - typedef cv::SCascade::Detection Detection; + typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -88,11 +88,11 @@ TEST(SCascade, detectSeparate) ASSERT_EQ(719, confs.cols); } -TEST(SCascade, detectRoi) +TEST(SoftCascadeDetector, detectRoi) { - typedef cv::SCascade::Detection Detection; + typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -107,11 +107,11 @@ TEST(SCascade, detectRoi) ASSERT_EQ(719, (int)objects.size()); } -TEST(SCascade, detectNoRoi) +TEST(SoftCascadeDetector, detectNoRoi) { - typedef cv::SCascade::Detection Detection; + typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -126,11 +126,11 @@ TEST(SCascade, detectNoRoi) ASSERT_EQ(719, (int)objects.size()); } -TEST(SCascade, detectEmptyRoi) +TEST(SoftCascadeDetector, detectEmptyRoi) { - typedef cv::SCascade::Detection Detection; + typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SCascade cascade; + cv::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); From 716a9ccb71e1b5ee2408367563c5ede5a628b596 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 13:32:21 +0400 Subject: [PATCH 69/82] move training to softcascade module rename Octave -> SoftCascadeOctave --- apps/sft/include/sft/fpool.hpp | 1 - apps/sft/sft.cpp | 2 +- modules/ml/include/opencv2/ml/ml.hpp | 74 ------------------ .../opencv2/softcascade/softcascade.hpp | 76 +++++++++++++++++++ .../src/soft_cascade_octave.cpp} | 26 +++---- 5 files changed, 90 insertions(+), 89 deletions(-) rename modules/{ml/src/octave.cpp => softcascade/src/soft_cascade_octave.cpp} (91%) diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 0af71c890d..ba95b6af17 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -43,7 +43,6 @@ #ifndef __SFT_OCTAVE_HPP__ #define __SFT_OCTAVE_HPP__ -#include #include #include diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 4432964c10..f7e36e26ee 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -127,7 +127,7 @@ int main(int argc, char** argv) cv::Rect boundingBox = cfg.bbox(it); std::cout << "Object bounding box" << boundingBox << std::endl; - cv::Octave boost(boundingBox, npositives, nnegatives, *it, shrinkage); + cv::SoftCascadeOctave boost(boundingBox, npositives, nnegatives, *it, shrinkage); std::string path = cfg.trainPath; sft::ScaledDataset dataset(path, *it); diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index c8bf44fc6f..93123dc2e8 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -2131,80 +2131,6 @@ typedef CvGBTrees GradientBoostingTrees; template<> CV_EXPORTS void Ptr::delete_obj(); CV_EXPORTS bool initModule_ml(void); - -class CV_EXPORTS FeaturePool -{ -public: - - virtual int size() const = 0; - virtual float apply(int fi, int si, const Mat& integrals) const = 0; - virtual void write( cv::FileStorage& fs, int index) const = 0; - - virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; - - virtual ~FeaturePool(); -}; - -class CV_EXPORTS Dataset -{ -public: - typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; - - virtual cv::Mat get(SampleType type, int idx) const = 0; - virtual int available(SampleType type) const = 0; - virtual ~Dataset(); -}; - -// used for traning single octave scale -class CV_EXPORTS Octave : public cv::Boost -{ -public: - - enum - { - // Direct backward pruning. (Cha Zhang and Paul Viola) - DBP = 1, - // Multiple instance pruning. (Cha Zhang and Paul Viola) - MIP = 2, - // Originally proposed by L. bourdev and J. brandt - HEURISTIC = 4 - }; - - Octave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); - virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); - virtual void setRejectThresholds(OutputArray thresholds); - virtual void write( CvFileStorage* fs, string name) const; - virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; - virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; - virtual ~Octave(); -protected: - virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); - - void processPositives(const Dataset* dataset, const FeaturePool* pool); - void generateNegatives(const Dataset* dataset, const FeaturePool* pool); - - float predict( const Mat& _sample, const cv::Range range) const; -private: - void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; - virtual void initial_weights(double (&p)[2]); - - int logScale; - cv::Rect boundingBox; - - int npositives; - int nnegatives; - - int shrinkage; - - Mat integrals; - Mat responses; - - CvBoostParams params; - - Mat trainData; -}; - } #endif // __cplusplus diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 6181584463..2f5c69ba0e 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -44,6 +44,7 @@ #define __OPENCV_SOFTCASCADE_HPP__ #include "opencv2/core/core.hpp" +#include "opencv2/ml/ml.hpp" namespace cv { @@ -96,6 +97,29 @@ private: int shrinkage; }; +class CV_EXPORTS FeaturePool +{ +public: + + virtual int size() const = 0; + virtual float apply(int fi, int si, const Mat& integrals) const = 0; + virtual void write( cv::FileStorage& fs, int index) const = 0; + + virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; + + virtual ~FeaturePool(); +}; + +class CV_EXPORTS Dataset +{ +public: + typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; + + virtual cv::Mat get(SampleType type, int idx) const = 0; + virtual int available(SampleType type) const = 0; + virtual ~Dataset(); +}; + // ========================================================================== // // Implementation of soft (stageless) cascaded detector. // ========================================================================== // @@ -146,6 +170,58 @@ private: int rejCriteria; }; +// ========================================================================== // +// Implementation of singe soft (stageless) cascade octave training. +// ========================================================================== // +class CV_EXPORTS SoftCascadeOctave : public cv::Boost +{ +public: + + enum + { + // Direct backward pruning. (Cha Zhang and Paul Viola) + DBP = 1, + // Multiple instance pruning. (Cha Zhang and Paul Viola) + MIP = 2, + // Originally proposed by L. Bourdev and J. Brandt + HEURISTIC = 4 + }; + + SoftCascadeOctave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); + virtual void setRejectThresholds(OutputArray thresholds); + virtual void write( CvFileStorage* fs, string name) const; + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; + virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; + virtual ~SoftCascadeOctave(); +protected: + virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); + + void processPositives(const Dataset* dataset, const FeaturePool* pool); + void generateNegatives(const Dataset* dataset, const FeaturePool* pool); + + float predict( const Mat& _sample, const cv::Range range) const; +private: + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; + virtual void initial_weights(double (&p)[2]); + + int logScale; + cv::Rect boundingBox; + + int npositives; + int nnegatives; + + int shrinkage; + + Mat integrals; + Mat responses; + + CvBoostParams params; + + Mat trainData; +}; + CV_EXPORTS bool initModule_softcascade(void); } diff --git a/modules/ml/src/octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp similarity index 91% rename from modules/ml/src/octave.cpp rename to modules/softcascade/src/soft_cascade_octave.cpp index 3a5de94879..9fb92357d8 100644 --- a/modules/ml/src/octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -125,7 +125,7 @@ struct Random cv::FeaturePool::~FeaturePool(){} cv::Dataset::~Dataset(){} -cv::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) +cv::SoftCascadeOctave::SoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr) : logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) { int maxSample = npositives + nnegatives; @@ -155,9 +155,9 @@ cv::Octave::Octave(cv::Rect bb, int np, int nn, int ls, int shr) params = _params; } -cv::Octave::~Octave(){} +cv::SoftCascadeOctave::~SoftCascadeOctave(){} -bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, +bool cv::SoftCascadeOctave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { bool update = false; @@ -165,7 +165,7 @@ bool cv::Octave::train( const cv::Mat& _trainData, const cv::Mat& _responses, co update); } -void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds) +void cv::SoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) { dprintf("set thresholds according to DBP strategy\n"); @@ -212,7 +212,7 @@ void cv::Octave::setRejectThresholds(cv::OutputArray _thresholds) } } -void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* pool) +void cv::SoftCascadeOctave::processPositives(const Dataset* dataset, const FeaturePool* pool) { int w = boundingBox.width; int h = boundingBox.height; @@ -259,7 +259,7 @@ void cv::Octave::processPositives(const Dataset* dataset, const FeaturePool* poo #undef USE_LONG_SEEDS -void cv::Octave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) +void cv::SoftCascadeOctave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) { // ToDo: set seed, use offsets sft::Random::engine eng(DX_DY_SEED); @@ -308,7 +308,7 @@ template int sgn(T val) { return (T(0) < val) - (val < T(0)); } -void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const +void cv::SoftCascadeOctave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const { std::queue nodes; nodes.push( tree->get_root()); @@ -365,7 +365,7 @@ void cv::Octave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfe fs << "}"; } -void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const +void cv::SoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const { CV_Assert(!_thresholds.empty()); cv::Mat used( 1, weak->total * ( (int)pow(2.f, params.max_depth) - 1), CV_32SC1); @@ -397,14 +397,14 @@ void cv::Octave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArra << "}"; } -void cv::Octave::initial_weights(double (&p)[2]) +void cv::SoftCascadeOctave::initial_weights(double (&p)[2]) { double n = data->sample_count; p[0] = n / (2. * (double)(nnegatives)); p[1] = n / (2. * (double)(npositives)); } -bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) +bool cv::SoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) { CV_Assert(treeDepth == 2); CV_Assert(weaks > 0); @@ -458,7 +458,7 @@ bool cv::Octave::train(const Dataset* dataset, const FeaturePool* pool, int weak } -float cv::Octave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const +float cv::SoftCascadeOctave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const { cv::Mat sample = _sample.getMat(); CvMat csample = sample; @@ -472,13 +472,13 @@ float cv::Octave::predict( cv::InputArray _sample, cv::InputArray _votes, bool r } } -float cv::Octave::predict( const Mat& _sample, const cv::Range range) const +float cv::SoftCascadeOctave::predict( const Mat& _sample, const cv::Range range) const { CvMat sample = _sample; return CvBoost::predict(&sample, 0, 0, range, false, true); } -void cv::Octave::write( CvFileStorage* fs, string name) const +void cv::SoftCascadeOctave::write( CvFileStorage* fs, string name) const { CvBoost::write(fs, name.c_str()); } From 49ec664238d10cb9b844f3ca3ec8096beb6b8758 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 14:27:53 +0400 Subject: [PATCH 70/82] add IntegralChannelComputer --- .../opencv2/softcascade/softcascade.hpp | 78 ++++++++++++------- .../src/integral_channel_builder.cpp | 55 +++++++++++++ modules/softcascade/src/softcascade_init.cpp | 9 ++- 3 files changed, 111 insertions(+), 31 deletions(-) create mode 100644 modules/softcascade/src/integral_channel_builder.cpp diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 2f5c69ba0e..9015770101 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -48,15 +48,6 @@ namespace cv { -class CV_EXPORTS_W ICFPreprocessor -{ -public: - CV_WRAP ICFPreprocessor(); - CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; -protected: - enum {BINS = 10}; -}; - // Representation of detectors result. struct CV_EXPORTS Detection { @@ -74,6 +65,51 @@ struct CV_EXPORTS Detection int kind; }; +class CV_EXPORTS FeaturePool +{ +public: + + virtual int size() const = 0; + virtual float apply(int fi, int si, const Mat& integrals) const = 0; + virtual void write( cv::FileStorage& fs, int index) const = 0; + + virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; + + virtual ~FeaturePool(); +}; + +class CV_EXPORTS Dataset +{ +public: + typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; + + virtual cv::Mat get(SampleType type, int idx) const = 0; + virtual int available(SampleType type) const = 0; + virtual ~Dataset(); +}; + + +// ========================================================================== // +// Implementation of Integral Channel Feature. +// ========================================================================== // + +class CV_EXPORTS_W IntegralChannelBuilder : public Algorithm +{ +public: + CV_WRAP IntegralChannelBuilder(); + CV_WRAP virtual ~IntegralChannelBuilder(); + + cv::AlgorithmInfo* info() const; + + // Load channel builder config. + CV_WRAP virtual void read(const FileNode& fileNode); + +private: + struct Fields; + cv::Ptr fields; + +}; + // Create channel integrals for Soft Cascade detector. class CV_EXPORTS Channels { @@ -97,27 +133,13 @@ private: int shrinkage; }; -class CV_EXPORTS FeaturePool +class CV_EXPORTS_W ICFPreprocessor { public: - - virtual int size() const = 0; - virtual float apply(int fi, int si, const Mat& integrals) const = 0; - virtual void write( cv::FileStorage& fs, int index) const = 0; - - virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; - - virtual ~FeaturePool(); -}; - -class CV_EXPORTS Dataset -{ -public: - typedef enum {POSITIVE = 1, NEGATIVE = 2} SampleType; - - virtual cv::Mat get(SampleType type, int idx) const = 0; - virtual int available(SampleType type) const = 0; - virtual ~Dataset(); + CV_WRAP ICFPreprocessor(); + CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; +protected: + enum {BINS = 10}; }; // ========================================================================== // diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp new file mode 100644 index 0000000000..f7eb621e12 --- /dev/null +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -0,0 +1,55 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "precomp.hpp" + +struct cv::IntegralChannelBuilder::Fields +{ +}; + +cv::IntegralChannelBuilder::IntegralChannelBuilder() : fields(new Fields()) {} +cv::IntegralChannelBuilder::~IntegralChannelBuilder() {} + +void cv::IntegralChannelBuilder::read(const FileNode& fn) +{ + Algorithm::read(fn); +} \ No newline at end of file diff --git a/modules/softcascade/src/softcascade_init.cpp b/modules/softcascade/src/softcascade_init.cpp index eb2eae11df..e31abbc455 100644 --- a/modules/softcascade/src/softcascade_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -45,16 +45,19 @@ namespace cv { -CV_INIT_ALGORITHM(SoftCascadeDetector, "CascadeDetector.SoftCascadeDetector", +CV_INIT_ALGORITHM(SoftCascadeDetector, "SoftCascade.SoftCascadeDetector", obj.info()->addParam(obj, "minScale", obj.minScale); obj.info()->addParam(obj, "maxScale", obj.maxScale); obj.info()->addParam(obj, "scales", obj.scales); obj.info()->addParam(obj, "rejCriteria", obj.rejCriteria)); +CV_INIT_ALGORITHM(IntegralChannelBuilder, "SoftCascade.IntegralChannelBuilder", ); + bool initModule_softcascade(void) { - Ptr sc = createSoftCascadeDetector(); - return sc->info() != 0; + Ptr sc1 = createSoftCascadeDetector(); + Ptr sc2 = createIntegralChannelBuilder(); + return (sc1->info() != 0) && (sc2->info() != 0); } } \ No newline at end of file From f3227c3f1ae69455d16de04bc0cc6e463284fdb8 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 16:55:01 +0400 Subject: [PATCH 71/82] merged ICFPreprocessor and Channels -> ChannelFeatureBuilder --- apps/sft/fpool.cpp | 3 +- apps/sft/include/sft/fpool.hpp | 2 +- modules/python/CMakeLists.txt | 2 +- modules/python/src2/cv2.cpp | 3 + .../opencv2/softcascade/softcascade.hpp | 48 +---- modules/softcascade/src/icf.cpp | 170 ------------------ .../src/integral_channel_builder.cpp | 73 +++++++- modules/softcascade/src/softcascade.cpp | 27 ++- modules/softcascade/src/softcascade_init.cpp | 4 +- .../test/test_channel_features.cpp | 60 +++++++ 10 files changed, 151 insertions(+), 241 deletions(-) delete mode 100644 modules/softcascade/src/icf.cpp create mode 100644 modules/softcascade/test/test_channel_features.cpp diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index c241a75dfb..1bfde2cf9f 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -51,11 +51,12 @@ sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) { CV_Assert(m != cv::Size() && n > 0); fill(nfeatures); + builder = cv::ChannelFeatureBuilder::create(); } void sft::ICFFeaturePool::preprocess(cv::InputArray frame, cv::OutputArray integrals) const { - preprocessor.apply(frame, integrals); + (*builder)(frame, integrals); } float sft::ICFFeaturePool::apply(int fi, int si, const Mat& integrals) const diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index ba95b6af17..d531a760d0 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -119,7 +119,7 @@ private: static const unsigned int seed = 0; - cv::ICFPreprocessor preprocessor; + cv::Ptr builder; enum { N_CHANNELS = 10 }; }; diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 9db2c8aae8..4d07221912 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -10,7 +10,7 @@ if(ANDROID OR IOS OR NOT PYTHONLIBS_FOUND OR NOT PYTHON_USE_NUMPY) endif() set(the_description "The python bindings") -ocv_add_module(python BINDINGS opencv_core opencv_flann opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_photo opencv_objdetect opencv_contrib opencv_legacy OPTIONAL opencv_nonfree) +ocv_add_module(python BINDINGS opencv_core opencv_flann opencv_imgproc opencv_video opencv_ml opencv_features2d opencv_highgui opencv_calib3d opencv_photo opencv_objdetect opencv_contrib opencv_legacy opencv_softcascade OPTIONAL opencv_nonfree) add_definitions(-DPYTHON_USE_NUMPY=1) diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 112967559a..1eed747225 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -16,6 +16,7 @@ #include "opencv2/ml/ml.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/objdetect/objdetect.hpp" +#include "opencv2/softcascade/softcascade.hpp" #include "opencv2/video/tracking.hpp" #include "opencv2/video/background_segm.hpp" #include "opencv2/photo/photo.hpp" @@ -124,6 +125,8 @@ typedef Ptr Ptr_DescriptorExtractor; typedef Ptr Ptr_Feature2D; typedef Ptr Ptr_DescriptorMatcher; +typedef Ptr Ptr_ChannelFeatureBuilder; + typedef SimpleBlobDetector::Params SimpleBlobDetector_Params; typedef cvflann::flann_distance_t cvflann_flann_distance_t; diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 9015770101..24455cf7ed 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -93,53 +93,15 @@ public: // Implementation of Integral Channel Feature. // ========================================================================== // -class CV_EXPORTS_W IntegralChannelBuilder : public Algorithm +class CV_EXPORTS_W ChannelFeatureBuilder : public Algorithm { public: - CV_WRAP IntegralChannelBuilder(); - CV_WRAP virtual ~IntegralChannelBuilder(); + virtual ~ChannelFeatureBuilder(); - cv::AlgorithmInfo* info() const; + // apply channels to source frame + CV_WRAP_AS(compute) virtual void operator()(InputArray src, CV_OUT OutputArray channels) const = 0; - // Load channel builder config. - CV_WRAP virtual void read(const FileNode& fileNode); - -private: - struct Fields; - cv::Ptr fields; - -}; - -// Create channel integrals for Soft Cascade detector. -class CV_EXPORTS Channels -{ -public: - // constrictor form resizing factor. - // Param shrinkage is a resizing factor. Resize is applied before the computing integral sum - Channels(const int shrinkage); - - // Appends specified number of HOG first-order features integrals into given vector. - // Param gray is an input 1-channel gray image. - // Param integrals is a vector of integrals. Hog-channels will be appended to it. - // Param bins is a number of hog-bins - void appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const; - - // Converts 3-channel BGR input frame in Luv and appends each channel to the integrals. - // Param frame is an input 3-channel BGR colored image. - // Param integrals is a vector of integrals. Computed from the frame luv-channels will be appended to it. - void appendLuvBins(const cv::Mat& frame, std::vector& integrals) const; - -private: - int shrinkage; -}; - -class CV_EXPORTS_W ICFPreprocessor -{ -public: - CV_WRAP ICFPreprocessor(); - CV_WRAP void apply(cv::InputArray _frame, cv::OutputArray _integrals) const; -protected: - enum {BINS = 10}; + CV_WRAP static cv::Ptr create(); }; // ========================================================================== // diff --git a/modules/softcascade/src/icf.cpp b/modules/softcascade/src/icf.cpp deleted file mode 100644 index b58a384ec8..0000000000 --- a/modules/softcascade/src/icf.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and / or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "precomp.hpp" - -cv::ICFPreprocessor::ICFPreprocessor() {} -void cv::ICFPreprocessor::apply(cv::InputArray _frame, cv::OutputArray _integrals) const -{ - CV_Assert(_frame.type() == CV_8UC3); - - cv::Mat frame = _frame.getMat(); - cv::Mat& integrals = _integrals.getMatRef(); - - int h = frame.rows; - int w = frame.cols; - - cv::Mat channels, gray; - - channels.create(h * BINS, w, CV_8UC1); - channels.setTo(0); - - cvtColor(frame, gray, CV_BGR2GRAY); - - cv::Mat df_dx, df_dy, mag, angle; - cv::Sobel(gray, df_dx, CV_32F, 1, 0); - cv::Sobel(gray, df_dy, CV_32F, 0, 1); - - cv::cartToPolar(df_dx, df_dy, mag, angle, true); - mag *= (1.f / (8 * sqrt(2.f))); - - cv::Mat nmag; - mag.convertTo(nmag, CV_8UC1); - - angle *= 6 / 360.f; - - for (int y = 0; y < h; ++y) - { - uchar* magnitude = nmag.ptr(y); - float* ang = angle.ptr(y); - - for (int x = 0; x < w; ++x) - { - channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; - } - } - - cv::Mat luv, shrunk; - cv::cvtColor(frame, luv, CV_BGR2Luv); - - std::vector splited; - for (int i = 0; i < 3; ++i) - splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); - split(luv, splited); - - float shrinkage = static_cast(integrals.cols - 1) / channels.cols; - - CV_Assert(shrinkage == 0.25); - - cv::resize(channels, shrunk, cv::Size(), shrinkage, shrinkage, CV_INTER_AREA); - cv::integral(shrunk, integrals, cv::noArray(), CV_32S); -} - -cv::Channels::Channels(int shr) : shrinkage(shr) {} - -void cv::Channels::appendHogBins(const cv::Mat& gray, std::vector& integrals, int bins) const -{ - CV_Assert(gray.type() == CV_8UC1); - int h = gray.rows; - int w = gray.cols; - CV_Assert(!(w % shrinkage) && !(h % shrinkage)); - - cv::Mat df_dx, df_dy, mag, angle; - cv::Sobel(gray, df_dx, CV_32F, 1, 0); - cv::Sobel(gray, df_dy, CV_32F, 0, 1); - - cv::cartToPolar(df_dx, df_dy, mag, angle, true); - mag *= (1.f / (8 * sqrt(2.f))); - - cv::Mat nmag; - mag.convertTo(nmag, CV_8UC1); - - angle *= bins/360.f; - - std::vector hist; - for (int bin = 0; bin < bins; ++bin) - hist.push_back(cv::Mat::zeros(h, w, CV_8UC1)); - - for (int y = 0; y < h; ++y) - { - uchar* magnitude = nmag.ptr(y); - float* ang = angle.ptr(y); - - for (int x = 0; x < w; ++x) - { - hist[ (int)ang[x] ].ptr(y)[x] = magnitude[x]; - } - } - - for(int i = 0; i < bins; ++i) - { - cv::Mat shrunk, sum; - cv::resize(hist[i], shrunk, cv::Size(), 1.0 / shrinkage, 1.0 / shrinkage, CV_INTER_AREA); - cv::integral(shrunk, sum, cv::noArray(), CV_32S); - integrals.push_back(sum); - } - - cv::Mat shrMag; - cv::resize(nmag, shrMag, cv::Size(), 1.0 / shrinkage, 1.0 / shrinkage, CV_INTER_AREA); - cv::integral(shrMag, mag, cv::noArray(), CV_32S); - integrals.push_back(mag); -} - -void cv::Channels::appendLuvBins(const cv::Mat& frame, std::vector& integrals) const -{ - CV_Assert(frame.type() == CV_8UC3); - CV_Assert(!(frame.cols % shrinkage) && !(frame.rows % shrinkage)); - - cv::Mat luv, shrunk; - cv::cvtColor(frame, luv, CV_BGR2Luv); - cv::resize(luv, shrunk, cv::Size(), 1.0 / shrinkage, 1.0 / shrinkage, CV_INTER_AREA); - - std::vector splited; - split(shrunk, splited); - - for (size_t i = 0; i < splited.size(); ++i) - { - cv::Mat sum; - cv::integral(splited[i], sum, cv::noArray(), CV_32S); - integrals.push_back(sum); - } -} \ No newline at end of file diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index f7eb621e12..3d07df4f91 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -42,14 +42,77 @@ #include "precomp.hpp" -struct cv::IntegralChannelBuilder::Fields +namespace { + +class ICF : public cv::ChannelFeatureBuilder { + virtual ~ICF() {} + virtual cv::AlgorithmInfo* info() const; + virtual void operator()(cv::InputArray _frame, CV_OUT cv::OutputArray _integrals) const + { + CV_Assert(_frame.type() == CV_8UC3); + + cv::Mat frame = _frame.getMat(); + int h = frame.rows; + int w = frame.cols; + _integrals.create(h / 4 * 10 + 1, w / 4 + 1, CV_32SC1); + cv::Mat& integrals = _integrals.getMatRef(); + + cv::Mat channels, gray; + + channels.create(h * 10, w, CV_8UC1); + channels.setTo(0); + + cvtColor(frame, gray, CV_BGR2GRAY); + + cv::Mat df_dx, df_dy, mag, angle; + cv::Sobel(gray, df_dx, CV_32F, 1, 0); + cv::Sobel(gray, df_dy, CV_32F, 0, 1); + + cv::cartToPolar(df_dx, df_dy, mag, angle, true); + mag *= (1.f / (8 * sqrt(2.f))); + + cv::Mat nmag; + mag.convertTo(nmag, CV_8UC1); + + angle *= 6 / 360.f; + + for (int y = 0; y < h; ++y) + { + uchar* magnitude = nmag.ptr(y); + float* ang = angle.ptr(y); + + for (int x = 0; x < w; ++x) + { + channels.ptr(y + (h * (int)ang[x]))[x] = magnitude[x]; + } + } + + cv::Mat luv, shrunk; + cv::cvtColor(frame, luv, CV_BGR2Luv); + + std::vector splited; + for (int i = 0; i < 3; ++i) + splited.push_back(channels(cv::Rect(0, h * (7 + i), w, h))); + split(luv, splited); + + float shrinkage = static_cast(integrals.cols - 1) / channels.cols; + + CV_Assert(shrinkage == 0.25); + + cv::resize(channels, shrunk, cv::Size(), shrinkage, shrinkage, CV_INTER_AREA); + cv::integral(shrunk, integrals, cv::noArray(), CV_32S); + } }; -cv::IntegralChannelBuilder::IntegralChannelBuilder() : fields(new Fields()) {} -cv::IntegralChannelBuilder::~IntegralChannelBuilder() {} +} -void cv::IntegralChannelBuilder::read(const FileNode& fn) +CV_INIT_ALGORITHM(ICF, "ChannelFeatureBuilder.ICF", ); + +cv::ChannelFeatureBuilder::~ChannelFeatureBuilder() {} + +cv::Ptr cv::ChannelFeatureBuilder::create() { - Algorithm::read(fn); + cv::Ptr builder(new ICF()); + return builder; } \ No newline at end of file diff --git a/modules/softcascade/src/softcascade.cpp b/modules/softcascade/src/softcascade.cpp index 3755965f77..46811d5a9d 100644 --- a/modules/softcascade/src/softcascade.cpp +++ b/modules/softcascade/src/softcascade.cpp @@ -169,37 +169,30 @@ struct Level return (sarea == 0.0f)? threshold : (threshold * scaling[idx] * sarea); } }; - struct ChannelStorage { - std::vector hog; + cv::Mat hog; int shrinkage; int offset; int step; + int model_height; + + cv::Ptr builder; enum {HOG_BINS = 6, HOG_LUV_BINS = 10}; ChannelStorage(const cv::Mat& colored, int shr) : shrinkage(shr) { - hog.clear(); - hog.reserve(10); - cv::Channels ints(shr); + builder = cv::ChannelFeatureBuilder::create(); + (*builder)(colored, hog); - // convert to gray - cv::Mat grey; - cv::cvtColor(colored, grey, CV_BGR2GRAY); - - ints.appendHogBins(grey, hog, 6); - ints.appendLuvBins(colored, hog); - - step = hog[0].cols; + step = hog.step1(); + model_height = colored.rows / shrinkage; } float get(const int channel, const cv::Rect& area) const { - // CV_Assert(channel < HOG_LUV_BINS); - const cv::Mat& m = hog[channel]; - int *ptr = ((int*)(m.data)) + offset; + const int *ptr = hog.ptr(0) + model_height * channel * step + offset; int a = ptr[area.y * step + area.x]; int b = ptr[area.y * step + area.width]; @@ -509,7 +502,7 @@ void cv::SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const diff --git a/modules/softcascade/src/softcascade_init.cpp b/modules/softcascade/src/softcascade_init.cpp index e31abbc455..f9606c10b8 100644 --- a/modules/softcascade/src/softcascade_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -51,13 +51,11 @@ CV_INIT_ALGORITHM(SoftCascadeDetector, "SoftCascade.SoftCascadeDetector", obj.info()->addParam(obj, "scales", obj.scales); obj.info()->addParam(obj, "rejCriteria", obj.rejCriteria)); -CV_INIT_ALGORITHM(IntegralChannelBuilder, "SoftCascade.IntegralChannelBuilder", ); bool initModule_softcascade(void) { Ptr sc1 = createSoftCascadeDetector(); - Ptr sc2 = createIntegralChannelBuilder(); - return (sc1->info() != 0) && (sc2->info() != 0); + return (sc1->info() != 0); } } \ No newline at end of file diff --git a/modules/softcascade/test/test_channel_features.cpp b/modules/softcascade/test/test_channel_features.cpp new file mode 100644 index 0000000000..65249b755b --- /dev/null +++ b/modules/softcascade/test/test_channel_features.cpp @@ -0,0 +1,60 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#include "test_precomp.hpp" + +TEST(ChannelFeatureBuilderTest, info) +{ + cv::Ptr builder = cv::ChannelFeatureBuilder::create(); + ASSERT_TRUE(builder->info() != 0); +} + +TEST(ChannelFeatureBuilderTest, compute) +{ + cv::Ptr builder = cv::ChannelFeatureBuilder::create(); + + cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png"); + cv::Mat ints; + (*builder)(colored, ints); + + ASSERT_FALSE(ints.empty()); +} From 4ba8b5315298f79b5c2a3b38971bad34e782ff27 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 17:44:21 +0400 Subject: [PATCH 72/82] split public interface and realization for SoftCascadeOctave --- apps/sft/fpool.cpp | 2 + apps/sft/sft.cpp | 13 +-- .../opencv2/softcascade/softcascade.hpp | 45 ++-------- modules/softcascade/src/precomp.hpp | 1 + .../softcascade/src/soft_cascade_octave.cpp | 86 ++++++++++++++++--- 5 files changed, 92 insertions(+), 55 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 1bfde2cf9f..185ed62abe 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -43,6 +43,8 @@ #include #include +#include + #include // ========= FeaturePool ========= // diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index f7e36e26ee..971dbe5870 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -43,6 +43,7 @@ // Trating application for Soft Cascades. #include +#include #include #include @@ -127,22 +128,24 @@ int main(int argc, char** argv) cv::Rect boundingBox = cfg.bbox(it); std::cout << "Object bounding box" << boundingBox << std::endl; - cv::SoftCascadeOctave boost(boundingBox, npositives, nnegatives, *it, shrinkage); + typedef cv::SoftCascadeOctave Octave; + + cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage); std::string path = cfg.trainPath; sft::ScaledDataset dataset(path, *it); - if (boost.train(&dataset, &pool, cfg.weaks, cfg.treeDepth)) + if (boost->train(&dataset, &pool, cfg.weaks, cfg.treeDepth)) { CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); - boost.write(fout, cfg.cascadeName); + boost->write(fout, cfg.cascadeName); cvReleaseFileStorage( &fout); cv::Mat thresholds; - boost.setRejectThresholds(thresholds); + boost->setRejectThresholds(thresholds); - boost.write(fso, &pool, thresholds); + boost->write(fso, &pool, thresholds); cv::FileStorage tfs(("thresholds." + cfg.resPath(it)).c_str(), cv::FileStorage::WRITE); tfs << "thresholds" << thresholds; diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 24455cf7ed..ad5586858a 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -44,7 +44,6 @@ #define __OPENCV_SOFTCASCADE_HPP__ #include "opencv2/core/core.hpp" -#include "opencv2/ml/ml.hpp" namespace cv { @@ -90,7 +89,7 @@ public: // ========================================================================== // -// Implementation of Integral Channel Feature. +// Public Interface for Integral Channel Feature. // ========================================================================== // class CV_EXPORTS_W ChannelFeatureBuilder : public Algorithm @@ -155,12 +154,11 @@ private: }; // ========================================================================== // -// Implementation of singe soft (stageless) cascade octave training. +// Public Interface for singe soft (stageless) cascade octave training. // ========================================================================== // -class CV_EXPORTS SoftCascadeOctave : public cv::Boost +class CV_EXPORTS SoftCascadeOctave : public Algorithm { public: - enum { // Direct backward pruning. (Cha Zhang and Paul Viola) @@ -171,39 +169,14 @@ public: HEURISTIC = 4 }; - SoftCascadeOctave(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); - virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); - virtual void setRejectThresholds(OutputArray thresholds); - virtual void write( CvFileStorage* fs, string name) const; - virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; - virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; virtual ~SoftCascadeOctave(); -protected: - virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), - const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); + static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, + int logScale, int shrinkage); - void processPositives(const Dataset* dataset, const FeaturePool* pool); - void generateNegatives(const Dataset* dataset, const FeaturePool* pool); - - float predict( const Mat& _sample, const cv::Range range) const; -private: - void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; - virtual void initial_weights(double (&p)[2]); - - int logScale; - cv::Rect boundingBox; - - int npositives; - int nnegatives; - - int shrinkage; - - Mat integrals; - Mat responses; - - CvBoostParams params; - - Mat trainData; + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) = 0; + virtual void setRejectThresholds(OutputArray thresholds) = 0; + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const = 0; + virtual void write( CvFileStorage* fs, string name) const = 0; }; CV_EXPORTS bool initModule_softcascade(void); diff --git a/modules/softcascade/src/precomp.hpp b/modules/softcascade/src/precomp.hpp index 28771c073a..2706319219 100644 --- a/modules/softcascade/src/precomp.hpp +++ b/modules/softcascade/src/precomp.hpp @@ -52,6 +52,7 @@ #include "opencv2/imgproc/imgproc_c.h" #include "opencv2/core/core_c.h" #include "opencv2/core/internal.hpp" +#include "opencv2/ml/ml.hpp" #include "opencv2/opencv_modules.hpp" diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 9fb92357d8..8cd9becc71 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -42,6 +42,7 @@ #include "precomp.hpp" #include +#include #define WITH_DEBUG_OUT @@ -122,10 +123,56 @@ struct Random } #endif +using cv::Dataset; +using cv::FeaturePool; +using cv::InputArray; +using cv::OutputArray; +using cv::Mat; + cv::FeaturePool::~FeaturePool(){} cv::Dataset::~Dataset(){} -cv::SoftCascadeOctave::SoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr) +class BoostedSoftCascadeOctave : public cv::Boost, public cv::SoftCascadeOctave +{ +public: + + BoostedSoftCascadeOctave(cv::Rect boundingBox = cv::Rect(), int npositives = 0, int nnegatives = 0, int logScale = 0, int shrinkage = 1); + virtual ~BoostedSoftCascadeOctave(); + virtual cv::AlgorithmInfo* info() const; + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); + virtual void setRejectThresholds(OutputArray thresholds); + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const; + virtual void write( CvFileStorage* fs, std::string name) const; +protected: + virtual float predict( InputArray _sample, InputArray _votes, bool raw_mode, bool return_sum ) const; + virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), + const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); + + void processPositives(const Dataset* dataset, const FeaturePool* pool); + void generateNegatives(const Dataset* dataset, const FeaturePool* pool); + + float predict( const Mat& _sample, const cv::Range range) const; +private: + void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; + virtual void initial_weights(double (&p)[2]); + + int logScale; + cv::Rect boundingBox; + + int npositives; + int nnegatives; + + int shrinkage; + + Mat integrals; + Mat responses; + + CvBoostParams params; + + Mat trainData; +}; + +BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr) : logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) { int maxSample = npositives + nnegatives; @@ -155,9 +202,9 @@ cv::SoftCascadeOctave::SoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, in params = _params; } -cv::SoftCascadeOctave::~SoftCascadeOctave(){} +BoostedSoftCascadeOctave::~BoostedSoftCascadeOctave(){} -bool cv::SoftCascadeOctave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, +bool BoostedSoftCascadeOctave::train( const cv::Mat& _trainData, const cv::Mat& _responses, const cv::Mat& varIdx, const cv::Mat& sampleIdx, const cv::Mat& varType, const cv::Mat& missingDataMask) { bool update = false; @@ -165,7 +212,7 @@ bool cv::SoftCascadeOctave::train( const cv::Mat& _trainData, const cv::Mat& _re update); } -void cv::SoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) +void BoostedSoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) { dprintf("set thresholds according to DBP strategy\n"); @@ -212,7 +259,7 @@ void cv::SoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) } } -void cv::SoftCascadeOctave::processPositives(const Dataset* dataset, const FeaturePool* pool) +void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset, const FeaturePool* pool) { int w = boundingBox.width; int h = boundingBox.height; @@ -259,7 +306,7 @@ void cv::SoftCascadeOctave::processPositives(const Dataset* dataset, const Featu #undef USE_LONG_SEEDS -void cv::SoftCascadeOctave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) +void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) { // ToDo: set seed, use offsets sft::Random::engine eng(DX_DY_SEED); @@ -308,7 +355,7 @@ template int sgn(T val) { return (T(0) < val) - (val < T(0)); } -void cv::SoftCascadeOctave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const +void BoostedSoftCascadeOctave::traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const { std::queue nodes; nodes.push( tree->get_root()); @@ -365,7 +412,7 @@ void cv::SoftCascadeOctave::traverse(const CvBoostTree* tree, cv::FileStorage& f fs << "}"; } -void cv::SoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const +void BoostedSoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* pool, InputArray _thresholds) const { CV_Assert(!_thresholds.empty()); cv::Mat used( 1, weak->total * ( (int)pow(2.f, params.max_depth) - 1), CV_32SC1); @@ -397,14 +444,14 @@ void cv::SoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* pool << "}"; } -void cv::SoftCascadeOctave::initial_weights(double (&p)[2]) +void BoostedSoftCascadeOctave::initial_weights(double (&p)[2]) { double n = data->sample_count; p[0] = n / (2. * (double)(nnegatives)); p[1] = n / (2. * (double)(npositives)); } -bool cv::SoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) +bool BoostedSoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) { CV_Assert(treeDepth == 2); CV_Assert(weaks > 0); @@ -458,7 +505,7 @@ bool cv::SoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* poo } -float cv::SoftCascadeOctave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const +float BoostedSoftCascadeOctave::predict( cv::InputArray _sample, cv::InputArray _votes, bool raw_mode, bool return_sum ) const { cv::Mat sample = _sample.getMat(); CvMat csample = sample; @@ -472,13 +519,24 @@ float cv::SoftCascadeOctave::predict( cv::InputArray _sample, cv::InputArray _vo } } -float cv::SoftCascadeOctave::predict( const Mat& _sample, const cv::Range range) const +float BoostedSoftCascadeOctave::predict( const Mat& _sample, const cv::Range range) const { CvMat sample = _sample; return CvBoost::predict(&sample, 0, 0, range, false, true); } -void cv::SoftCascadeOctave::write( CvFileStorage* fs, string name) const +void BoostedSoftCascadeOctave::write( CvFileStorage* fs, std::string _name) const { - CvBoost::write(fs, name.c_str()); + CvBoost::write(fs, _name.c_str()); +} + +CV_INIT_ALGORITHM(BoostedSoftCascadeOctave, "SoftCascadeOctave.BoostedSoftCascadeOctave", ); + +cv::SoftCascadeOctave::~SoftCascadeOctave(){} + +cv::Ptr cv::SoftCascadeOctave::create(cv::Rect boundingBox, int npositives, int nnegatives, + int logScale, int shrinkage) +{ + cv::Ptr octave(new BoostedSoftCascadeOctave(boundingBox, npositives, nnegatives, logScale, shrinkage)); + return octave; } From 7f80054dfd2f95268139f41acce86328741ed231 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 17:47:35 +0400 Subject: [PATCH 73/82] move miscellaneous python scripts to softcascade module --- {apps/sft => modules/softcascade}/misc/detections2negatives.py | 0 {apps/sft => modules/softcascade}/misc/roc_caltech.py | 0 {apps/sft => modules/softcascade}/misc/roc_test.py | 0 {apps/sft => modules/softcascade}/misc/scale_caltech.py | 0 {apps/sft => modules/softcascade}/misc/scale_inria.py | 0 {apps/sft => modules/softcascade}/misc/sft.py | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename {apps/sft => modules/softcascade}/misc/detections2negatives.py (100%) rename {apps/sft => modules/softcascade}/misc/roc_caltech.py (100%) rename {apps/sft => modules/softcascade}/misc/roc_test.py (100%) rename {apps/sft => modules/softcascade}/misc/scale_caltech.py (100%) rename {apps/sft => modules/softcascade}/misc/scale_inria.py (100%) rename {apps/sft => modules/softcascade}/misc/sft.py (100%) diff --git a/apps/sft/misc/detections2negatives.py b/modules/softcascade/misc/detections2negatives.py similarity index 100% rename from apps/sft/misc/detections2negatives.py rename to modules/softcascade/misc/detections2negatives.py diff --git a/apps/sft/misc/roc_caltech.py b/modules/softcascade/misc/roc_caltech.py similarity index 100% rename from apps/sft/misc/roc_caltech.py rename to modules/softcascade/misc/roc_caltech.py diff --git a/apps/sft/misc/roc_test.py b/modules/softcascade/misc/roc_test.py similarity index 100% rename from apps/sft/misc/roc_test.py rename to modules/softcascade/misc/roc_test.py diff --git a/apps/sft/misc/scale_caltech.py b/modules/softcascade/misc/scale_caltech.py similarity index 100% rename from apps/sft/misc/scale_caltech.py rename to modules/softcascade/misc/scale_caltech.py diff --git a/apps/sft/misc/scale_inria.py b/modules/softcascade/misc/scale_inria.py similarity index 100% rename from apps/sft/misc/scale_inria.py rename to modules/softcascade/misc/scale_inria.py diff --git a/apps/sft/misc/sft.py b/modules/softcascade/misc/sft.py similarity index 100% rename from apps/sft/misc/sft.py rename to modules/softcascade/misc/sft.py From a01f596474fa45c22b06bf7d96d10676b18d5993 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Tue, 29 Jan 2013 19:18:22 +0400 Subject: [PATCH 74/82] update documentation for softcascade module --- apps/sft/fpool.cpp | 8 +- apps/sft/include/sft/config.hpp | 10 +- apps/sft/sft.cpp | 4 +- .../softcascade/doc/softcascade_detector.rst | 99 ++++++++++++++----- .../softcascade/doc/softcascade_training.rst | 82 ++++++++++++++- .../softcascade/src/soft_cascade_octave.cpp | 14 +-- 6 files changed, 173 insertions(+), 44 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 185ed62abe..8eff33ff6d 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -197,7 +197,7 @@ namespace { using namespace sft; void glob(const string& refRoot, const string& refExt, svector &refvecFiles) { - std::string strFilePath; // Filepath + std::string strFilePath; // File path std::string strExtension; // Extension std::string strPattern = refRoot + "\\*.*"; @@ -240,14 +240,14 @@ void glob(const string& refRoot, const string& refExt, svector &refvecFiles) #endif -// in the default case data folders should be alligned as following: +// in the default case data folders should be aligned as following: // 1. positives: /octave_/pos/*.png // 2. negatives: /octave_/neg/*.png ScaledDataset::ScaledDataset(const string& path, const int oct) { dprintf("%s\n", "get dataset file names..."); - dprintf("%s\n", "Positives globbing..."); + dprintf("%s\n", "Positives globing..."); #if !defined (_WIN32) && ! defined(__MINGW32__) glob(path + "/pos/octave_" + itoa(oct) + "/*.png", pos); @@ -255,7 +255,7 @@ ScaledDataset::ScaledDataset(const string& path, const int oct) glob(path + "/pos/octave_" + itoa(oct), "png", pos); #endif - dprintf("%s\n", "Negatives globbing..."); + dprintf("%s\n", "Negatives globing..."); #if !defined (_WIN32) && ! defined(__MINGW32__) glob(path + "/neg/octave_" + itoa(oct) + "/*.png", neg); #else diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index dd5e8d5aba..5be5ebd6df 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -93,7 +93,7 @@ struct Config // List of octaves for which have to be trained cascades (a list of powers of two) ivector octaves; - // Maximum number of positives that should be ised during training + // Maximum number of positives that should be used during training int positives; // Initial number of negatives used during training. @@ -102,10 +102,10 @@ struct Config // Number of weak negatives to add each bootstrapping step. int btpNegatives; - // Inverse of scale for feature resazing + // Inverse of scale for feature resizing int shrinkage; - // Depth on weak classifier's desition tree + // Depth on weak classifier's decision tree int treeDepth; // Weak classifiers number in resulted cascade @@ -120,10 +120,10 @@ struct Config // path to resulting cascade string outXmlPath; - // seed for fandom generation + // seed for random generation int seed; - // // bounding retangle for actual exemple into example window + // // bounding rectangle for actual example into example window // cv::Rect exampleWindow; }; diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 971dbe5870..db2714a5bb 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -40,7 +40,7 @@ // //M*/ -// Trating application for Soft Cascades. +// Training application for Soft Cascades. #include #include @@ -114,7 +114,7 @@ int main(int argc, char** argv) // 3. Train all octaves for (ivector::const_iterator it = cfg.octaves.begin(); it != cfg.octaves.end(); ++it) { - // a. create rangom feature pool + // a. create random feature pool int nfeatures = cfg.poolSize; cv::Size model = cfg.model(it); std::cout << "Model " << model << std::endl; diff --git a/modules/softcascade/doc/softcascade_detector.rst b/modules/softcascade/doc/softcascade_detector.rst index 2ac6264fa5..add9b0ce1e 100644 --- a/modules/softcascade/doc/softcascade_detector.rst +++ b/modules/softcascade/doc/softcascade_detector.rst @@ -25,29 +25,37 @@ The sample has been rejected if it fall rejection threshold. So stageless cascad .. [BMTG12] Rodrigo Benenson, Markus Mathias, Radu Timofte and Luc Van Gool. Pedestrian detection at 100 frames per second. IEEE CVPR, 2012. -SCascade ----------------- -.. ocv:class:: SCascade +SoftCascadeDetector +------------------- +.. ocv:class:: SoftCascadeDetector Implementation of soft (stageless) cascaded detector. :: - class CV_EXPORTS SCascade : public Algorithm + class CV_EXPORTS_W SoftCascadeDetector : public Algorithm { public: - SCascade(const float minScale = 0.4f, const float maxScale = 5.f, const int scales = 55, const int rejfactor = 1); - virtual ~SCascade(); + + enum { NO_REJECT = 1, DOLLAR = 2, /*PASCAL = 4,*/ DEFAULT = NO_REJECT}; + + CV_WRAP SoftCascadeDetector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); + CV_WRAP virtual ~SoftCascadeDetector(); cv::AlgorithmInfo* info() const; - virtual bool load(const FileNode& fn); + CV_WRAP virtual bool load(const FileNode& fileNode); + CV_WRAP virtual void read(const FileNode& fileNode); virtual void detect(InputArray image, InputArray rois, std::vector& objects) const; - virtual void detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const; - }; + CV_WRAP virtual void detect(InputArray image, InputArray rois, CV_OUT OutputArray rects, CV_OUT OutputArray confs) const; + + } -SCascade::SCascade --------------------------- + +SoftCascadeDetector::SoftCascadeDetector +---------------------------------------- An empty cascade will be created. -.. ocv:function:: bool SCascade::SCascade(const float minScale = 0.4f, const float maxScale = 5.f, const int scales = 55, const int rejfactor = 1) +.. ocv:function:: SoftCascadeDetector::SoftCascadeDetector(float minScale = 0.4f, float maxScale = 5.f, int scales = 55, int rejCriteria = 1) + +.. ocv:pyfunction:: cv2.SoftCascadeDetector.SoftCascadeDetector(minScale[, maxScale[, scales[, rejCriteria]]]) -> cascade :param minScale: a minimum scale relative to the original size of the image on which cascade will be applied. @@ -55,35 +63,39 @@ An empty cascade will be created. :param scales: a number of scales from minScale to maxScale. - :param rejfactor: used for non maximum suppression. + :param rejCriteria: algorithm used for non maximum suppression. -SCascade::~SCascade ---------------------------- -Destructor for SCascade. +SoftCascadeDetector::~SoftCascadeDetector +----------------------------------------- +Destructor for SoftCascadeDetector. -.. ocv:function:: SCascade::~SCascade() +.. ocv:function:: SoftCascadeDetector::~SoftCascadeDetector() -SCascade::load +SoftCascadeDetector::load -------------------------- Load cascade from FileNode. -.. ocv:function:: bool SCascade::load(const FileNode& fn) +.. ocv:function:: bool SoftCascadeDetector::load(const FileNode& fileNode) - :param fn: File node from which the soft cascade are read. +.. ocv:pyfunction:: cv2.SoftCascadeDetector.load(fileNode) + + :param fileNode: File node from which the soft cascade are read. -SCascade::detect --------------------------- +SoftCascadeDetector::detect +--------------------------- Apply cascade to an input frame and return the vector of Detection objects. -.. ocv:function:: void SCascade::detect(InputArray image, InputArray rois, std::vector& objects) const +.. ocv:function:: void SoftCascadeDetector::detect(InputArray image, InputArray rois, std::vector& objects) const -.. ocv:function:: void SCascade::detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const +.. ocv:function:: void SoftCascadeDetector::detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const + +.. ocv:pyfunction:: cv2.SoftCascadeDetector.detect(image, rois) -> (rects, confs) :param image: a frame on which detector will be applied. @@ -93,4 +105,41 @@ Apply cascade to an input frame and return the vector of Detection objects. :param rects: an output array of bounding rectangles for detected objects. - :param confs: an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th confidence. \ No newline at end of file + :param confs: an output array of confidence for detected objects. i-th bounding rectangle corresponds i-th confidence. + + +ChannelFeatureBuilder +--------------------- +.. ocv:class:: ChannelFeatureBuilder + +Public interface for of soft (stageless) cascaded detector. :: + + class CV_EXPORTS_W ChannelFeatureBuilder : public Algorithm + { + public: + virtual ~ChannelFeatureBuilder(); + + CV_WRAP_AS(compute) virtual void operator()(InputArray src, CV_OUT OutputArray channels) const = 0; + + CV_WRAP static cv::Ptr create(); + }; + + +ChannelFeatureBuilder:~ChannelFeatureBuilder +-------------------------------------------- +Destructor for ChannelFeatureBuilder. + +.. ocv:function:: ChannelFeatureBuilder::~ChannelFeatureBuilder() + + +ChannelFeatureBuilder::operator() +--------------------------------- +Create channel feature integrals for input image. + +.. ocv:function:: void ChannelFeatureBuilder::operator()(InputArray src, OutputArray channels) const + +.. ocv:pyfunction:: cv2.ChannelFeatureBuilder.compute(src, channels) -> None + + :param src source frame + + :param channels in OutputArray of computed channels diff --git a/modules/softcascade/doc/softcascade_training.rst b/modules/softcascade/doc/softcascade_training.rst index 8b9ea5e351..6b906657a1 100644 --- a/modules/softcascade/doc/softcascade_training.rst +++ b/modules/softcascade/doc/softcascade_training.rst @@ -1,2 +1,82 @@ Soft Cascade Training -======================= \ No newline at end of file +======================= + +.. highlight:: cpp + +Soft Cascade Detector Training +-------------------------------------------- + + +SoftCascadeOctave +----------------- +.. ocv:class:: SoftCascadeOctave + +Public interface for soft cascade training algorithm + + class CV_EXPORTS SoftCascadeOctave : public Algorithm + { + public: + + enum { + // Direct backward pruning. (Cha Zhang and Paul Viola) + DBP = 1, + // Multiple instance pruning. (Cha Zhang and Paul Viola) + MIP = 2, + // Originally proposed by L. Bourdev and J. Brandt + HEURISTIC = 4 }; + + virtual ~SoftCascadeOctave(); + static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); + + virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) = 0; + virtual void setRejectThresholds(OutputArray thresholds) = 0; + virtual void write( cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const = 0; + virtual void write( CvFileStorage* fs, string name) const = 0; + + }; + + + +SoftCascadeOctave::~SoftCascadeOctave +--------------------------------------- +Destructor for SoftCascadeOctave. + +.. ocv:function:: SoftCascadeOctave::~SoftCascadeOctave() + + +SoftCascadeOctave::train +------------------------ + +.. ocv:function:: bool SoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) + + :param dataset an object that allows communicate for training set. + + :param pool an object that presents feature pool. + + :param weaks a number of weak trees should be trained. + + :param treeDepth a depth of resulting weak trees. + + + +SoftCascadeOctave::setRejectThresholds +-------------------------------------- + +.. ocv:function:: void SoftCascadeOctave::setRejectThresholds(OutputArray thresholds) + + :param thresholds an output array of resulted rejection vector. Have same size as number of trained stages. + + +SoftCascadeOctave::write +------------------------ + +.. ocv:function:: write SoftCascadeOctave::train(cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const +.. ocv:function:: write SoftCascadeOctave::train( CvFileStorage* fs, string name) const + + :param fs an output file storage to store trained detector. + + :param pool an object that presents feature pool. + + :param dataset a rejection vector that should be included in detector xml file. + + :param name a name of root node for trained detector. diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 8cd9becc71..3e5ba7e3fb 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -11,7 +11,7 @@ // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. // Third party copyrights are property of their respective owners. // // Redistribution and use in source and binary forms, with or without modification, @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. @@ -216,7 +216,7 @@ void BoostedSoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) { dprintf("set thresholds according to DBP strategy\n"); - // labels desided by classifier + // labels decided by classifier cv::Mat desisions(responses.cols, responses.rows, responses.type()); float* dptr = desisions.ptr(0); @@ -423,7 +423,7 @@ void BoostedSoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* p << "scale" << logScale << "weaks" << weak->total << "trees" << "["; - // should be replased with the H.L. one + // should be replaced with the H.L. one CvSeqReader reader; cvStartReadSeq( weak, &reader); @@ -463,7 +463,7 @@ bool BoostedSoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* processPositives(dataset, pool); generateNegatives(dataset, pool); - // 2. only sumple case (all features used) + // 2. only simple case (all features used) int nfeatures = pool->size(); cv::Mat varIdx(1, nfeatures, CV_32SC1); int* ptr = varIdx.ptr(0); @@ -471,7 +471,7 @@ bool BoostedSoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* for (int x = 0; x < nfeatures; ++x) ptr[x] = x; - // 3. only sumple case (all samples used) + // 3. only simple case (all samples used) int nsamples = npositives + nnegatives; cv::Mat sampleIdx(1, nsamples, CV_32SC1); ptr = sampleIdx.ptr(0); @@ -479,7 +479,7 @@ bool BoostedSoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* for (int x = 0; x < nsamples; ++x) ptr[x] = x; - // 4. ICF has an orderable responce. + // 4. ICF has an ordered response. cv::Mat varType(1, nfeatures + 1, CV_8UC1); uchar* uptr = varType.ptr(0); for (int x = 0; x < nfeatures; ++x) From b4aa33b6d33fac3e6e43a2c268f18ddfb9f44b1a Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 09:34:22 +0400 Subject: [PATCH 75/82] move ICF -> ChannelFeature --- apps/sft/fpool.cpp | 13 +- apps/sft/include/sft/fpool.hpp | 44 +------ .../opencv2/softcascade/softcascade.hpp | 25 ++++ modules/softcascade/src/_random.hpp | 117 ++++++++++++++++++ .../src/integral_channel_builder.cpp | 54 +++++++- .../softcascade/src/soft_cascade_octave.cpp | 70 +---------- 6 files changed, 194 insertions(+), 129 deletions(-) create mode 100644 modules/softcascade/src/_random.hpp diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index 8eff33ff6d..f29e94dfa2 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -72,11 +72,6 @@ void sft::ICFFeaturePool::write( cv::FileStorage& fs, int index) const fs << pool[index]; } -void sft::write(cv::FileStorage& fs, const string&, const ICF& f) -{ - fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; -} - sft::ICFFeaturePool::~ICFFeaturePool(){} #if defined _WIN32 && (_WIN32 || _WIN64) @@ -137,7 +132,7 @@ void sft::ICFFeaturePool::fill(int desired) int ch = chRand(eng_ch); - sft::ICF f(x, y, w, h, ch); + cv::ChannelFeature f(x, y, w, h, ch); if (std::find(pool.begin(), pool.end(),f) == pool.end()) { @@ -147,12 +142,6 @@ void sft::ICFFeaturePool::fill(int desired) } } -std::ostream& sft::operator<<(std::ostream& out, const sft::ICF& m) -{ - out << m.channel << " " << m.bb; - return out; -} - // ============ Dataset ============ // namespace { using namespace sft; diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index d531a760d0..9a7c192b7f 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -50,48 +50,6 @@ #include namespace sft { -struct ICF -{ - ICF(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} - - bool operator ==(ICF b) - { - return bb == b.bb && channel == b.channel; - } - - bool operator !=(ICF b) - { - return bb != b.bb || channel != b.channel; - } - - - float operator() (const cv::Mat& integrals, const cv::Size& model) const - { - int step = model.width + 1; - - const int* ptr = integrals.ptr(0) + (model.height * channel + bb.y) * step + bb.x; - - int a = ptr[0]; - int b = ptr[bb.width]; - - ptr += bb.height * step; - - int c = ptr[bb.width]; - int d = ptr[0]; - - return (float)(a - b + c - d); - } - -private: - cv::Rect bb; - int channel; - - friend void write(cv::FileStorage& fs, const std::string&, const ICF& f); - friend std::ostream& operator<<(std::ostream& out, const ICF& f); -}; - -void write(cv::FileStorage& fs, const std::string&, const ICF& f); -std::ostream& operator<<(std::ostream& out, const ICF& m); using cv::FeaturePool; using cv::Dataset; @@ -115,7 +73,7 @@ private: cv::Size model; int nfeatures; - std::vector pool; + std::vector pool; static const unsigned int seed = 0; diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index ad5586858a..2a4339c2b9 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -87,6 +87,31 @@ public: virtual ~Dataset(); }; +// ========================================================================== // +// First order channel feature. +// ========================================================================== // + +class CV_EXPORTS ChannelFeature +{ +public: + ChannelFeature(int x, int y, int w, int h, int ch); + ~ChannelFeature(); + + bool operator ==(ChannelFeature b); + bool operator !=(ChannelFeature b); + + float operator() (const cv::Mat& integrals, const cv::Size& model) const; + + friend void write(cv::FileStorage& fs, const std::string&, const ChannelFeature& f); + friend std::ostream& operator<<(std::ostream& out, const ChannelFeature& f); + +private: + cv::Rect bb; + int channel; +}; + +void write(cv::FileStorage& fs, const std::string&, const ChannelFeature& f); +std::ostream& operator<<(std::ostream& out, const ChannelFeature& m); // ========================================================================== // // Public Interface for Integral Channel Feature. diff --git a/modules/softcascade/src/_random.hpp b/modules/softcascade/src/_random.hpp new file mode 100644 index 0000000000..3a3be8bbc7 --- /dev/null +++ b/modules/softcascade/src/_random.hpp @@ -0,0 +1,117 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#ifndef __SFT_RANDOM_HPP__ +#define __SFT_RANDOM_HPP__ + +#if defined(_MSC_VER) && _MSC_VER >= 1600 + +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} + +#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) + +# if defined (__cplusplus) && __cplusplus > 201100L +# include +namespace sft { +struct Random +{ + typedef std::mt19937 engine; + typedef std::uniform_int uniform; +}; +} +# else +# include + +namespace sft { +struct Random +{ + typedef std::tr1::mt19937 engine; + typedef std::tr1::uniform_int uniform; +}; +} +# endif + +#else +#include +namespace rnd { + +typedef cv::RNG engine; + +template +struct uniform_int +{ + uniform_int(const int _min, const int _max) : min(_min), max(_max) {} + T operator() (engine& eng, const int bound) const + { + return (T)eng.uniform(min, bound); + } + + T operator() (engine& eng) const + { + return (T)eng.uniform(min, max); + } + +private: + int min; + int max; +}; + +} + +namespace sft { +struct Random +{ + typedef rnd::engine engine; + typedef rnd::uniform_int uniform; +}; +} + +#endif + +#endif \ No newline at end of file diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index 3d07df4f91..ce437db4a9 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -44,9 +44,9 @@ namespace { -class ICF : public cv::ChannelFeatureBuilder +class ICFBuilder : public cv::ChannelFeatureBuilder { - virtual ~ICF() {} + virtual ~ICFBuilder() {} virtual cv::AlgorithmInfo* info() const; virtual void operator()(cv::InputArray _frame, CV_OUT cv::OutputArray _integrals) const { @@ -107,12 +107,56 @@ class ICF : public cv::ChannelFeatureBuilder } -CV_INIT_ALGORITHM(ICF, "ChannelFeatureBuilder.ICF", ); +CV_INIT_ALGORITHM(ICFBuilder, "ChannelFeatureBuilder.ICFBuilder", ); cv::ChannelFeatureBuilder::~ChannelFeatureBuilder() {} cv::Ptr cv::ChannelFeatureBuilder::create() { - cv::Ptr builder(new ICF()); + cv::Ptr builder(new ICFBuilder()); return builder; -} \ No newline at end of file +} + +cv::ChannelFeature::ChannelFeature(int x, int y, int w, int h, int ch) +: bb(cv::Rect(x, y, w, h)), channel(ch) {} + +bool cv::ChannelFeature::operator ==(cv::ChannelFeature b) +{ + return bb == b.bb && channel == b.channel; +} + +bool cv::ChannelFeature::operator !=(cv::ChannelFeature b) +{ + return bb != b.bb || channel != b.channel; +} + + +float cv::ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& model) const +{ + int step = model.width + 1; + + const int* ptr = integrals.ptr(0) + (model.height * channel + bb.y) * step + bb.x; + + int a = ptr[0]; + int b = ptr[bb.width]; + + ptr += bb.height * step; + + int c = ptr[bb.width]; + int d = ptr[0]; + + return (float)(a - b + c - d); +} + +void cv::write(cv::FileStorage& fs, const string&, const cv::ChannelFeature& f) +{ + fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; +} + +std::ostream& cv::operator<<(std::ostream& out, const cv::ChannelFeature& m) +{ + out << m.channel << " " << m.bb; + return out; +} + +cv::ChannelFeature::~ChannelFeature(){} diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 3e5ba7e3fb..305cdf5daa 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -43,6 +43,7 @@ #include "precomp.hpp" #include #include +#include "_random.hpp" #define WITH_DEBUG_OUT @@ -53,75 +54,6 @@ # define dprintf(format, ...) #endif -#if defined(_MSC_VER) && _MSC_VER >= 1600 - -# include -namespace sft { -struct Random -{ - typedef std::mt19937 engine; - typedef std::uniform_int uniform; -}; -} - -#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) - -# if defined (__cplusplus) && __cplusplus > 201100L -# include -namespace sft { -struct Random -{ - typedef std::mt19937 engine; - typedef std::uniform_int uniform; -}; -} -# else -# include - -namespace sft { -struct Random -{ - typedef std::tr1::mt19937 engine; - typedef std::tr1::uniform_int uniform; -}; -} -# endif - -#else -#include -namespace rnd { - -typedef cv::RNG engine; - -template -struct uniform_int -{ - uniform_int(const int _min, const int _max) : min(_min), max(_max) {} - T operator() (engine& eng, const int bound) const - { - return (T)eng.uniform(min, bound); - } - - T operator() (engine& eng) const - { - return (T)eng.uniform(min, max); - } - -private: - int min; - int max; -}; - -} - -namespace sft { -struct Random -{ - typedef rnd::engine engine; - typedef rnd::uniform_int uniform; -}; -} -#endif using cv::Dataset; using cv::FeaturePool; From 0b039f3c6b5701bacaca957f225674d63fbc6745 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 09:57:09 +0400 Subject: [PATCH 76/82] refactor feature pool --- apps/sft/fpool.cpp | 6 --- apps/sft/include/sft/fpool.hpp | 3 -- apps/sft/sft.cpp | 2 +- .../opencv2/softcascade/softcascade.hpp | 5 +-- .../softcascade/src/soft_cascade_octave.cpp | 45 +++++++++++++------ 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index f29e94dfa2..d114c01ee4 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -53,12 +53,6 @@ sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) { CV_Assert(m != cv::Size() && n > 0); fill(nfeatures); - builder = cv::ChannelFeatureBuilder::create(); -} - -void sft::ICFFeaturePool::preprocess(cv::InputArray frame, cv::OutputArray integrals) const -{ - (*builder)(frame, integrals); } float sft::ICFFeaturePool::apply(int fi, int si, const Mat& integrals) const diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 9a7c192b7f..0790b09665 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -61,7 +61,6 @@ public: virtual int size() const { return (int)pool.size(); } virtual float apply(int fi, int si, const cv::Mat& integrals) const; - virtual void preprocess(cv::InputArray _frame, cv::OutputArray _integrals) const; virtual void write( cv::FileStorage& fs, int index) const; virtual ~ICFFeaturePool(); @@ -77,8 +76,6 @@ private: static const unsigned int seed = 0; - cv::Ptr builder; - enum { N_CHANNELS = 10 }; }; diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index db2714a5bb..531e39f926 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -130,7 +130,7 @@ int main(int argc, char** argv) typedef cv::SoftCascadeOctave Octave; - cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage); + cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, nfeatures); std::string path = cfg.trainPath; sft::ScaledDataset dataset(path, *it); diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 2a4339c2b9..ebf088af92 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -71,9 +71,6 @@ public: virtual int size() const = 0; virtual float apply(int fi, int si, const Mat& integrals) const = 0; virtual void write( cv::FileStorage& fs, int index) const = 0; - - virtual void preprocess(InputArray frame, OutputArray integrals) const = 0; - virtual ~FeaturePool(); }; @@ -196,7 +193,7 @@ public: virtual ~SoftCascadeOctave(); static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, - int logScale, int shrinkage); + int logScale, int shrinkage, int poolSize); virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) = 0; virtual void setRejectThresholds(OutputArray thresholds) = 0; diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 305cdf5daa..43473940aa 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -64,11 +64,15 @@ using cv::Mat; cv::FeaturePool::~FeaturePool(){} cv::Dataset::~Dataset(){} +namespace { + + class BoostedSoftCascadeOctave : public cv::Boost, public cv::SoftCascadeOctave { public: - BoostedSoftCascadeOctave(cv::Rect boundingBox = cv::Rect(), int npositives = 0, int nnegatives = 0, int logScale = 0, int shrinkage = 1); + BoostedSoftCascadeOctave(cv::Rect boundingBox = cv::Rect(), int npositives = 0, int nnegatives = 0, int logScale = 0, + int shrinkage = 1, int poolSize = 0); virtual ~BoostedSoftCascadeOctave(); virtual cv::AlgorithmInfo* info() const; virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth); @@ -80,8 +84,8 @@ protected: virtual bool train( const cv::Mat& trainData, const cv::Mat& responses, const cv::Mat& varIdx=cv::Mat(), const cv::Mat& sampleIdx=cv::Mat(), const cv::Mat& varType=cv::Mat(), const cv::Mat& missingDataMask=cv::Mat()); - void processPositives(const Dataset* dataset, const FeaturePool* pool); - void generateNegatives(const Dataset* dataset, const FeaturePool* pool); + void processPositives(const Dataset* dataset); + void generateNegatives(const Dataset* dataset); float predict( const Mat& _sample, const cv::Range range) const; private: @@ -102,9 +106,11 @@ private: CvBoostParams params; Mat trainData; + + cv::Ptr builder; }; -BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr) +BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr, int poolSize) : logScale(ls), boundingBox(bb), npositives(np), nnegatives(nn), shrinkage(shr) { int maxSample = npositives + nnegatives; @@ -132,6 +138,13 @@ BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, } params = _params; + + builder = cv::ChannelFeatureBuilder::create(); + + int w = boundingBox.width; + int h = boundingBox.height; + + integrals.create(poolSize, (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); } BoostedSoftCascadeOctave::~BoostedSoftCascadeOctave(){} @@ -191,12 +204,11 @@ void BoostedSoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) } } -void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset, const FeaturePool* pool) +void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset) { - int w = boundingBox.width; int h = boundingBox.height; - integrals.create(pool->size(), (w / shrinkage + 1) * (h / shrinkage * 10 + 1), CV_32SC1); + cv::ChannelFeatureBuilder& _builder = *builder; int total = 0; for (int curr = 0; curr < dataset->available( Dataset::POSITIVE); ++curr) @@ -206,7 +218,7 @@ void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset, const Fe cv::Mat channels = integrals.row(total).reshape(0, h / shrinkage * 10 + 1); sample = sample(boundingBox); - pool->preprocess(sample, channels); + _builder(sample, channels); responses.ptr(total)[0] = 1.f; if (++total >= npositives) break; @@ -238,7 +250,7 @@ void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset, const Fe #undef USE_LONG_SEEDS -void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset, const FeaturePool* pool) +void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) { // ToDo: set seed, use offsets sft::Random::engine eng(DX_DY_SEED); @@ -251,6 +263,8 @@ void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset, const F int total = 0; Mat sum; + + cv::ChannelFeatureBuilder& _builder = *builder; for (int i = npositives; i < nnegatives + npositives; ++total) { int curr = iRand(idxEng); @@ -269,7 +283,7 @@ void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset, const F frame = frame(cv::Rect(dx, dy, boundingBox.width, boundingBox.height)); cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); - pool->preprocess(frame, channels); + _builder(frame, channels); dprintf("generated %d %d\n", dx, dy); // // if (predict(sum)) @@ -392,8 +406,8 @@ bool BoostedSoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* params.weak_count = weaks; // 1. fill integrals and classes - processPositives(dataset, pool); - generateNegatives(dataset, pool); + processPositives(dataset); + generateNegatives(dataset); // 2. only simple case (all features used) int nfeatures = pool->size(); @@ -462,13 +476,16 @@ void BoostedSoftCascadeOctave::write( CvFileStorage* fs, std::string _name) cons CvBoost::write(fs, _name.c_str()); } +} + CV_INIT_ALGORITHM(BoostedSoftCascadeOctave, "SoftCascadeOctave.BoostedSoftCascadeOctave", ); cv::SoftCascadeOctave::~SoftCascadeOctave(){} cv::Ptr cv::SoftCascadeOctave::create(cv::Rect boundingBox, int npositives, int nnegatives, - int logScale, int shrinkage) + int logScale, int shrinkage, int poolSize) { - cv::Ptr octave(new BoostedSoftCascadeOctave(boundingBox, npositives, nnegatives, logScale, shrinkage)); + cv::Ptr octave( + new BoostedSoftCascadeOctave(boundingBox, npositives, nnegatives, logScale, shrinkage, poolSize)); return octave; } From fa15fcc53eb070f3ade8036ec7afdd824bc12136 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 10:43:18 +0400 Subject: [PATCH 77/82] move feature pool to softcascade module --- apps/sft/fpool.cpp | 91 -------------- apps/sft/include/sft/fpool.hpp | 28 ----- apps/sft/include/sft/random.hpp | 117 ------------------ apps/sft/sft.cpp | 8 +- .../opencv2/softcascade/softcascade.hpp | 24 ++-- .../src/integral_channel_builder.cpp | 114 +++++++++++++++++ 6 files changed, 134 insertions(+), 248 deletions(-) delete mode 100644 apps/sft/include/sft/random.hpp diff --git a/apps/sft/fpool.cpp b/apps/sft/fpool.cpp index d114c01ee4..825d88d12f 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/fpool.cpp @@ -41,101 +41,10 @@ //M*/ #include -#include #include - #include -// ========= FeaturePool ========= // - -sft::ICFFeaturePool::ICFFeaturePool(cv::Size m, int n) : FeaturePool(), model(m), nfeatures(n) -{ - CV_Assert(m != cv::Size() && n > 0); - fill(nfeatures); -} - -float sft::ICFFeaturePool::apply(int fi, int si, const Mat& integrals) const -{ - return pool[fi](integrals.row(si), model); -} - -void sft::ICFFeaturePool::write( cv::FileStorage& fs, int index) const -{ - CV_Assert((index > 0) && (index < (int)pool.size())); - fs << pool[index]; -} - -sft::ICFFeaturePool::~ICFFeaturePool(){} - -#if defined _WIN32 && (_WIN32 || _WIN64) -# if _WIN64 -# define USE_LONG_SEEDS -# endif -#endif -#if defined (__GNUC__) &&__GNUC__ -# if defined(__x86_64__) || defined(__ppc64__) -# define USE_LONG_SEEDS -# endif -#endif - -#if defined USE_LONG_SEEDS -# define FEATURE_RECT_SEED 8854342234LU -#else -# define FEATURE_RECT_SEED 88543422LU -#endif -# define DCHANNELS_SEED 314152314LU -#undef USE_LONG_SEEDS - -void sft::ICFFeaturePool::fill(int desired) -{ - int mw = model.width; - int mh = model.height; - - int maxPoolSize = (mw -1) * mw / 2 * (mh - 1) * mh / 2 * N_CHANNELS; - - nfeatures = std::min(desired, maxPoolSize); - dprintf("Requeste feature pool %d max %d suggested %d\n", desired, maxPoolSize, nfeatures); - - pool.reserve(nfeatures); - - sft::Random::engine eng(FEATURE_RECT_SEED); - sft::Random::engine eng_ch(DCHANNELS_SEED); - - sft::Random::uniform chRand(0, N_CHANNELS - 1); - - sft::Random::uniform xRand(0, model.width - 2); - sft::Random::uniform yRand(0, model.height - 2); - - sft::Random::uniform wRand(1, model.width - 1); - sft::Random::uniform hRand(1, model.height - 1); - - while (pool.size() < size_t(nfeatures)) - { - int x = xRand(eng); - int y = yRand(eng); - - int w = 1 + wRand(eng, model.width - x - 1); - int h = 1 + hRand(eng, model.height - y - 1); - - CV_Assert(w > 0); - CV_Assert(h > 0); - - CV_Assert(w + x < model.width); - CV_Assert(h + y < model.height); - - int ch = chRand(eng_ch); - - cv::ChannelFeature f(x, y, w, h, ch); - - if (std::find(pool.begin(), pool.end(),f) == pool.end()) - { - pool.push_back(f); - std::cout << f << std::endl; - } - } -} - // ============ Dataset ============ // namespace { using namespace sft; diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/fpool.hpp index 0790b09665..ad0f56d304 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/fpool.hpp @@ -51,36 +51,8 @@ namespace sft { -using cv::FeaturePool; using cv::Dataset; -class ICFFeaturePool : public cv::FeaturePool -{ -public: - ICFFeaturePool(cv::Size model, int nfeatures); - - virtual int size() const { return (int)pool.size(); } - virtual float apply(int fi, int si, const cv::Mat& integrals) const; - virtual void write( cv::FileStorage& fs, int index) const; - - virtual ~ICFFeaturePool(); - -private: - - void fill(int desired); - - cv::Size model; - int nfeatures; - - std::vector pool; - - static const unsigned int seed = 0; - - enum { N_CHANNELS = 10 }; -}; - - - class ScaledDataset : public Dataset { public: diff --git a/apps/sft/include/sft/random.hpp b/apps/sft/include/sft/random.hpp deleted file mode 100644 index 3a3be8bbc7..0000000000 --- a/apps/sft/include/sft/random.hpp +++ /dev/null @@ -1,117 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __SFT_RANDOM_HPP__ -#define __SFT_RANDOM_HPP__ - -#if defined(_MSC_VER) && _MSC_VER >= 1600 - -# include -namespace sft { -struct Random -{ - typedef std::mt19937 engine; - typedef std::uniform_int uniform; -}; -} - -#elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) - -# if defined (__cplusplus) && __cplusplus > 201100L -# include -namespace sft { -struct Random -{ - typedef std::mt19937 engine; - typedef std::uniform_int uniform; -}; -} -# else -# include - -namespace sft { -struct Random -{ - typedef std::tr1::mt19937 engine; - typedef std::tr1::uniform_int uniform; -}; -} -# endif - -#else -#include -namespace rnd { - -typedef cv::RNG engine; - -template -struct uniform_int -{ - uniform_int(const int _min, const int _max) : min(_min), max(_max) {} - T operator() (engine& eng, const int bound) const - { - return (T)eng.uniform(min, bound); - } - - T operator() (engine& eng) const - { - return (T)eng.uniform(min, max); - } - -private: - int min; - int max; -}; - -} - -namespace sft { -struct Random -{ - typedef rnd::engine engine; - typedef rnd::uniform_int uniform; -}; -} - -#endif - -#endif \ No newline at end of file diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 531e39f926..67c56fc6ab 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -118,8 +118,8 @@ int main(int argc, char** argv) int nfeatures = cfg.poolSize; cv::Size model = cfg.model(it); std::cout << "Model " << model << std::endl; - sft::ICFFeaturePool pool(model, nfeatures); - nfeatures = pool.size(); + cv::Ptr pool = cv::FeaturePool::create(model, nfeatures); + nfeatures = pool->size(); int npositives = cfg.positives; @@ -135,7 +135,7 @@ int main(int argc, char** argv) std::string path = cfg.trainPath; sft::ScaledDataset dataset(path, *it); - if (boost->train(&dataset, &pool, cfg.weaks, cfg.treeDepth)) + if (boost->train(&dataset, pool, cfg.weaks, cfg.treeDepth)) { CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); boost->write(fout, cfg.cascadeName); @@ -145,7 +145,7 @@ int main(int argc, char** argv) cv::Mat thresholds; boost->setRejectThresholds(thresholds); - boost->write(fso, &pool, thresholds); + boost->write(fso, pool, thresholds); cv::FileStorage tfs(("thresholds." + cfg.resPath(it)).c_str(), cv::FileStorage::WRITE); tfs << "thresholds" << thresholds; diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index ebf088af92..70123c0983 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -64,15 +64,7 @@ struct CV_EXPORTS Detection int kind; }; -class CV_EXPORTS FeaturePool -{ -public: - virtual int size() const = 0; - virtual float apply(int fi, int si, const Mat& integrals) const = 0; - virtual void write( cv::FileStorage& fs, int index) const = 0; - virtual ~FeaturePool(); -}; class CV_EXPORTS Dataset { @@ -84,6 +76,22 @@ public: virtual ~Dataset(); }; +// ========================================================================== // +// Public interface feature pool. +// ========================================================================== // + +class CV_EXPORTS FeaturePool +{ +public: + + virtual int size() const = 0; + virtual float apply(int fi, int si, const Mat& channels) const = 0; + virtual void write( cv::FileStorage& fs, int index) const = 0; + virtual ~FeaturePool(); + + static cv::Ptr create(const cv::Size& model, int nfeatures); +}; + // ========================================================================== // // First order channel feature. // ========================================================================== // diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index ce437db4a9..539642a870 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -41,6 +41,7 @@ //M*/ #include "precomp.hpp" +#include "_random.hpp" namespace { @@ -160,3 +161,116 @@ std::ostream& cv::operator<<(std::ostream& out, const cv::ChannelFeature& m) } cv::ChannelFeature::~ChannelFeature(){} + +namespace { + +class ChannelFeaturePool : public cv::FeaturePool +{ +public: + ChannelFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) + { + CV_Assert(m != cv::Size() && n > 0); + fill(n); + } + + virtual int size() const { return (int)pool.size(); } + virtual float apply(int fi, int si, const cv::Mat& integrals) const; + virtual void write( cv::FileStorage& fs, int index) const; + + virtual ~ChannelFeaturePool() {} + +private: + + void fill(int desired); + + cv::Size model; + std::vector pool; + enum { N_CHANNELS = 10 }; +}; + +float ChannelFeaturePool::apply(int fi, int si, const cv::Mat& integrals) const +{ + return pool[fi](integrals.row(si), model); +} + +void ChannelFeaturePool::write( cv::FileStorage& fs, int index) const +{ + CV_Assert((index > 0) && (index < (int)pool.size())); + fs << pool[index]; +} + +#if defined _WIN32 && (_WIN32 || _WIN64) +# if _WIN64 +# define USE_LONG_SEEDS +# endif +#endif +#if defined (__GNUC__) &&__GNUC__ +# if defined(__x86_64__) || defined(__ppc64__) +# define USE_LONG_SEEDS +# endif +#endif + +#if defined USE_LONG_SEEDS +# define FEATURE_RECT_SEED 8854342234LU +#else +# define FEATURE_RECT_SEED 88543422LU +#endif +# define DCHANNELS_SEED 314152314LU +#undef USE_LONG_SEEDS + +void ChannelFeaturePool::fill(int desired) +{ + int mw = model.width; + int mh = model.height; + + int maxPoolSize = (mw -1) * mw / 2 * (mh - 1) * mh / 2 * N_CHANNELS; + + int nfeatures = std::min(desired, maxPoolSize); + // dprintf("Requeste feature pool %d max %d suggested %d\n", desired, maxPoolSize, nfeatures); + + pool.reserve(nfeatures); + + sft::Random::engine eng(FEATURE_RECT_SEED); + sft::Random::engine eng_ch(DCHANNELS_SEED); + + sft::Random::uniform chRand(0, N_CHANNELS - 1); + + sft::Random::uniform xRand(0, model.width - 2); + sft::Random::uniform yRand(0, model.height - 2); + + sft::Random::uniform wRand(1, model.width - 1); + sft::Random::uniform hRand(1, model.height - 1); + + while (pool.size() < size_t(nfeatures)) + { + int x = xRand(eng); + int y = yRand(eng); + + int w = 1 + wRand(eng, model.width - x - 1); + int h = 1 + hRand(eng, model.height - y - 1); + + CV_Assert(w > 0); + CV_Assert(h > 0); + + CV_Assert(w + x < model.width); + CV_Assert(h + y < model.height); + + int ch = chRand(eng_ch); + + cv::ChannelFeature f(x, y, w, h, ch); + + if (std::find(pool.begin(), pool.end(),f) == pool.end()) + { + pool.push_back(f); + std::cout << f << std::endl; + } + } +} + +} + +cv::Ptr cv::FeaturePool::create(const cv::Size& model, int nfeatures) +{ + cv::Ptr pool(new ChannelFeaturePool(model, nfeatures)); + return pool; +} From 1613aa45bcb2bddda8543b85baa40ecced6be29c Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 10:54:58 +0400 Subject: [PATCH 78/82] fix python bindings --- modules/python/CMakeLists.txt | 1 + modules/softcascade/misc/sft.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 4d07221912..d36b6d8508 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -34,6 +34,7 @@ set(opencv_hdrs "${OPENCV_MODULE_opencv_features2d_LOCATION}/include/opencv2/features2d/features2d.hpp" "${OPENCV_MODULE_opencv_calib3d_LOCATION}/include/opencv2/calib3d/calib3d.hpp" "${OPENCV_MODULE_opencv_objdetect_LOCATION}/include/opencv2/objdetect/objdetect.hpp" + "${OPENCV_MODULE_opencv_softcascade_LOCATION}/include/opencv2/softcascade/softcascade.hpp" "${OPENCV_MODULE_opencv_contrib_LOCATION}/include/opencv2/contrib/contrib.hpp") if(HAVE_opencv_nonfree) diff --git a/modules/softcascade/misc/sft.py b/modules/softcascade/misc/sft.py index 358c67056f..019044fd59 100644 --- a/modules/softcascade/misc/sft.py +++ b/modules/softcascade/misc/sft.py @@ -23,8 +23,8 @@ def convert2detections(rects, confs, crop_factor = 0.125): """ Create new instance of soft cascade.""" def cascade(min_scale, max_scale, nscales, f): - # where we use nms cv::SCascade::DOLLAR == 2 - c = cv2.SCascade(min_scale, max_scale, nscales, 2) + # where we use nms cv::SoftCascadeDetector::DOLLAR == 2 + c = cv2.SoftCascadeDetector(min_scale, max_scale, nscales, 2) xml = cv2.FileStorage(f, 0) dom = xml.getFirstTopLevelNode() assert c.load(dom) From d314c602d57af0a8aa3e0086cec09a7f03596aa2 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 11:24:45 +0400 Subject: [PATCH 79/82] add documentation for new classes --- .../softcascade/doc/softcascade_training.rst | 67 ++++++++++++++++++- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/modules/softcascade/doc/softcascade_training.rst b/modules/softcascade/doc/softcascade_training.rst index 6b906657a1..b199462060 100644 --- a/modules/softcascade/doc/softcascade_training.rst +++ b/modules/softcascade/doc/softcascade_training.rst @@ -11,7 +11,7 @@ SoftCascadeOctave ----------------- .. ocv:class:: SoftCascadeOctave -Public interface for soft cascade training algorithm +Public interface for soft cascade training algorithm. :: class CV_EXPORTS SoftCascadeOctave : public Algorithm { @@ -70,8 +70,8 @@ SoftCascadeOctave::setRejectThresholds SoftCascadeOctave::write ------------------------ -.. ocv:function:: write SoftCascadeOctave::train(cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const -.. ocv:function:: write SoftCascadeOctave::train( CvFileStorage* fs, string name) const +.. ocv:function:: void SoftCascadeOctave::train(cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const +.. ocv:function:: void SoftCascadeOctave::train( CvFileStorage* fs, string name) const :param fs an output file storage to store trained detector. @@ -80,3 +80,64 @@ SoftCascadeOctave::write :param dataset a rejection vector that should be included in detector xml file. :param name a name of root node for trained detector. + + +FeaturePool +----------- +.. ocv:class:: FeaturePool + +Public interface for feature pool. This is a hight level abstraction for training random feature pool. :: + + class CV_EXPORTS FeaturePool + { + public: + + virtual int size() const = 0; + virtual float apply(int fi, int si, const Mat& channels) const = 0; + virtual void write( cv::FileStorage& fs, int index) const = 0; + virtual ~FeaturePool(); + + }; + +FeaturePool::size +----------------- + +Returns size of feature pool. + +.. ocv:function:: int FeaturePool::size() const + + + +FeaturePool::~FeaturePool +------------------------- + +FeaturePool destructor. + +.. ocv:function:: int FeaturePool::~FeaturePool() + + + +FeaturePool::write +------------------ + +Write specified feature from feature pool to file storage. + +.. ocv:function:: void FeaturePool::write( cv::FileStorage& fs, int index) const + + :param fs an output file storage to store feature. + + :param index an index of feature that should be stored. + + +FeaturePool::apply +------------------ + +Compute feature on integral channel image. + +.. ocv:function:: float FeaturePool::apply(int fi, int si, const Mat& channels) const + + :param fi an index of feature that should be computed. + + :param si an index of sample. + + :param fs a channel matrix. \ No newline at end of file From 14ac8a528e83e40bc34fcdd3fc99304e8eb545c5 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Wed, 30 Jan 2013 13:34:34 +0400 Subject: [PATCH 80/82] final refactoring and test for training --- apps/sft/CMakeLists.txt | 4 - apps/sft/config.cpp | 6 +- apps/sft/{fpool.cpp => dataset.cpp} | 22 +- apps/sft/include/sft/common.hpp | 3 +- apps/sft/include/sft/config.hpp | 4 +- .../include/sft/{fpool.hpp => dataset.hpp} | 4 - apps/sft/sft.cpp | 2 +- modules/ml/include/opencv2/ml/ml.hpp | 2 +- modules/ml/src/boost.cpp | 4 +- modules/softcascade/src/_random.hpp | 23 ++ .../src/integral_channel_builder.cpp | 23 -- modules/softcascade/src/precomp.hpp | 3 +- .../softcascade/src/soft_cascade_octave.cpp | 43 +-- modules/softcascade/test/test_training.cpp | 246 ++++++++++++++++++ 14 files changed, 287 insertions(+), 102 deletions(-) rename apps/sft/{fpool.cpp => dataset.cpp} (95%) rename apps/sft/include/sft/{fpool.hpp => dataset.hpp} (95%) create mode 100644 modules/softcascade/test/test_training.cpp diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt index bc7c1ebed9..7197519039 100644 --- a/apps/sft/CMakeLists.txt +++ b/apps/sft/CMakeLists.txt @@ -1,7 +1,3 @@ -if(IOS OR ANDROID) - return() -endif() - set(name sft) set(the_target opencv_${name}) diff --git a/apps/sft/config.cpp b/apps/sft/config.cpp index d9937220e4..3fc113974c 100644 --- a/apps/sft/config.cpp +++ b/apps/sft/config.cpp @@ -108,9 +108,9 @@ void sft::write(cv::FileStorage& fs, const string&, const Config& x) void sft::read(const cv::FileNode& node, Config& x, const Config& default_value) { - if(node.empty()) - x = default_value; - else + x = default_value; + + if(!node.empty()) x.read(node); } diff --git a/apps/sft/fpool.cpp b/apps/sft/dataset.cpp similarity index 95% rename from apps/sft/fpool.cpp rename to apps/sft/dataset.cpp index 825d88d12f..52ec8ac840 100644 --- a/apps/sft/fpool.cpp +++ b/apps/sft/dataset.cpp @@ -40,27 +40,16 @@ // //M*/ -#include +#include +#include #include #include -// ============ Dataset ============ // -namespace { -using namespace sft; - -string itoa(long i) -{ - char s[65]; - sprintf(s, "%ld", i); - return std::string(s); -} - -} +inline std::string itoa(long i) { return cv::format("%ld", i); } #if !defined (_WIN32) && ! defined(__MINGW32__) - -#include +# include namespace { using namespace sft; @@ -84,7 +73,7 @@ void glob(const string& path, svector& ret) } #else -#include +# include namespace { using namespace sft; void glob(const string& refRoot, const string& refExt, svector &refvecFiles) @@ -138,7 +127,6 @@ void glob(const string& refRoot, const string& refExt, svector &refvecFiles) ScaledDataset::ScaledDataset(const string& path, const int oct) { dprintf("%s\n", "get dataset file names..."); - dprintf("%s\n", "Positives globing..."); #if !defined (_WIN32) && ! defined(__MINGW32__) diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 4ddc0a3306..1371875ce6 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -44,6 +44,7 @@ #define __SFT_COMMON_HPP__ #include +#include namespace sft { @@ -58,7 +59,7 @@ namespace sft } // used for noisy printfs -#define WITH_DEBUG_OUT +//#define WITH_DEBUG_OUT #if defined WITH_DEBUG_OUT # include diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp index 5be5ebd6df..6bdb861bbf 100644 --- a/apps/sft/include/sft/config.hpp +++ b/apps/sft/include/sft/config.hpp @@ -75,9 +75,7 @@ struct Config string resPath(ivector::const_iterator it) const { - char s[65]; - sprintf(s, "%d", *it); - return std::string(cascadeName) + s + ".xml"; + return cv::format("%s%d.xml",cascadeName.c_str(), *it); } // Paths to a rescaled data diff --git a/apps/sft/include/sft/fpool.hpp b/apps/sft/include/sft/dataset.hpp similarity index 95% rename from apps/sft/include/sft/fpool.hpp rename to apps/sft/include/sft/dataset.hpp index ad0f56d304..14cffa7975 100644 --- a/apps/sft/include/sft/fpool.hpp +++ b/apps/sft/include/sft/dataset.hpp @@ -44,10 +44,6 @@ #define __SFT_OCTAVE_HPP__ #include - -#include -#include -#include namespace sft { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index 67c56fc6ab..f3c8481007 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -44,7 +44,7 @@ #include #include -#include +#include #include #include diff --git a/modules/ml/include/opencv2/ml/ml.hpp b/modules/ml/include/opencv2/ml/ml.hpp index 93123dc2e8..7bb553d5f1 100644 --- a/modules/ml/include/opencv2/ml/ml.hpp +++ b/modules/ml/include/opencv2/ml/ml.hpp @@ -1251,7 +1251,7 @@ protected: virtual void write_params( CvFileStorage* fs ) const; virtual void read_params( CvFileStorage* fs, CvFileNode* node ); - virtual void initial_weights(double (&p)[2]); + virtual void initialize_weights(double (&p)[2]); CvDTreeTrainData* data; CvBoostParams params; diff --git a/modules/ml/src/boost.cpp b/modules/ml/src/boost.cpp index 0dc0d28404..4b27dcfd2e 100644 --- a/modules/ml/src/boost.cpp +++ b/modules/ml/src/boost.cpp @@ -1115,7 +1115,7 @@ bool CvBoost::train( CvMLData* _data, return result; } -void CvBoost::initial_weights(double (&p)[2]) +void CvBoost::initialize_weights(double (&p)[2]) { p[0] = 1.; p[1] = 1.; @@ -1166,7 +1166,7 @@ CvBoost::update_weights( CvBoostTree* tree ) double w0 = 1./ n; double p[2] = { 1., 1. }; - initial_weights(p); + initialize_weights(p); cvReleaseMat( &orig_response ); cvReleaseMat( &sum_response ); diff --git a/modules/softcascade/src/_random.hpp b/modules/softcascade/src/_random.hpp index 3a3be8bbc7..b7a402d177 100644 --- a/modules/softcascade/src/_random.hpp +++ b/modules/softcascade/src/_random.hpp @@ -114,4 +114,27 @@ struct Random #endif +#if defined _WIN32 && (_WIN32 || _WIN64) +# if _WIN64 +# define USE_LONG_SEEDS +# endif +#endif +#if defined (__GNUC__) &&__GNUC__ +# if defined(__x86_64__) || defined(__ppc64__) +# define USE_LONG_SEEDS +# endif +#endif + +#if defined USE_LONG_SEEDS +# define FEATURE_RECT_SEED 8854342234LU +# define INDEX_ENGINE_SEED 764224349868LU +#else +# define FEATURE_RECT_SEED 88543422LU +# define INDEX_ENGINE_SEED 76422434LU +#endif +#undef USE_LONG_SEEDS + +#define DCHANNELS_SEED 314152314LU +#define DX_DY_SEED 65633343LU + #endif \ No newline at end of file diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index 539642a870..ad5bc7ec5b 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -41,7 +41,6 @@ //M*/ #include "precomp.hpp" -#include "_random.hpp" namespace { @@ -199,25 +198,6 @@ void ChannelFeaturePool::write( cv::FileStorage& fs, int index) const fs << pool[index]; } -#if defined _WIN32 && (_WIN32 || _WIN64) -# if _WIN64 -# define USE_LONG_SEEDS -# endif -#endif -#if defined (__GNUC__) &&__GNUC__ -# if defined(__x86_64__) || defined(__ppc64__) -# define USE_LONG_SEEDS -# endif -#endif - -#if defined USE_LONG_SEEDS -# define FEATURE_RECT_SEED 8854342234LU -#else -# define FEATURE_RECT_SEED 88543422LU -#endif -# define DCHANNELS_SEED 314152314LU -#undef USE_LONG_SEEDS - void ChannelFeaturePool::fill(int desired) { int mw = model.width; @@ -226,8 +206,6 @@ void ChannelFeaturePool::fill(int desired) int maxPoolSize = (mw -1) * mw / 2 * (mh - 1) * mh / 2 * N_CHANNELS; int nfeatures = std::min(desired, maxPoolSize); - // dprintf("Requeste feature pool %d max %d suggested %d\n", desired, maxPoolSize, nfeatures); - pool.reserve(nfeatures); sft::Random::engine eng(FEATURE_RECT_SEED); @@ -262,7 +240,6 @@ void ChannelFeaturePool::fill(int desired) if (std::find(pool.begin(), pool.end(),f) == pool.end()) { pool.push_back(f); - std::cout << f << std::endl; } } } diff --git a/modules/softcascade/src/precomp.hpp b/modules/softcascade/src/precomp.hpp index 2706319219..cb20a268e9 100644 --- a/modules/softcascade/src/precomp.hpp +++ b/modules/softcascade/src/precomp.hpp @@ -53,7 +53,6 @@ #include "opencv2/core/core_c.h" #include "opencv2/core/internal.hpp" #include "opencv2/ml/ml.hpp" - -#include "opencv2/opencv_modules.hpp" +#include "_random.hpp" #endif diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 43473940aa..41e4a9b562 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -43,17 +43,6 @@ #include "precomp.hpp" #include #include -#include "_random.hpp" - -#define WITH_DEBUG_OUT - -#if defined WITH_DEBUG_OUT -# include -# define dprintf(format, ...) printf(format, ##__VA_ARGS__) -#else -# define dprintf(format, ...) -#endif - using cv::Dataset; using cv::FeaturePool; @@ -90,7 +79,7 @@ protected: float predict( const Mat& _sample, const cv::Range range) const; private: void traverse(const CvBoostTree* tree, cv::FileStorage& fs, int& nfeatures, int* used, const double* th) const; - virtual void initial_weights(double (&p)[2]); + virtual void initialize_weights(double (&p)[2]); int logScale; cv::Rect boundingBox; @@ -159,8 +148,6 @@ bool BoostedSoftCascadeOctave::train( const cv::Mat& _trainData, const cv::Mat& void BoostedSoftCascadeOctave::setRejectThresholds(cv::OutputArray _thresholds) { - dprintf("set thresholds according to DBP strategy\n"); - // labels decided by classifier cv::Mat desisions(responses.cols, responses.rows, responses.type()); float* dptr = desisions.ptr(0); @@ -223,33 +210,10 @@ void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset) if (++total >= npositives) break; } - - dprintf("Processing positives finished:\n\trequested %d positives, collected %d samples.\n", npositives, total); - npositives = total; nnegatives = cvRound(nnegatives * total / (double)npositives); } -#if defined _WIN32 && (_WIN32 || _WIN64) -# if _WIN64 -# define USE_LONG_SEEDS -# endif -#endif -#if defined (__GNUC__) &&__GNUC__ -# if defined(__x86_64__) || defined(__ppc64__) -# define USE_LONG_SEEDS -# endif -#endif - -#if defined USE_LONG_SEEDS -# define INDEX_ENGINE_SEED 764224349868LU -#else -# define INDEX_ENGINE_SEED 76422434LU -#endif -# define DX_DY_SEED 65633343LU -#undef USE_LONG_SEEDS - - void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) { // ToDo: set seed, use offsets @@ -285,15 +249,12 @@ void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) cv::Mat channels = integrals.row(i).reshape(0, h / shrinkage * 10 + 1); _builder(frame, channels); - dprintf("generated %d %d\n", dx, dy); // // if (predict(sum)) { responses.ptr(i)[0] = 0.f; ++i; } } - - dprintf("Processing negatives finished:\n\trequested %d negatives, viewed %d samples.\n", nnegatives, total); } @@ -390,7 +351,7 @@ void BoostedSoftCascadeOctave::write( cv::FileStorage &fso, const FeaturePool* p << "}"; } -void BoostedSoftCascadeOctave::initial_weights(double (&p)[2]) +void BoostedSoftCascadeOctave::initialize_weights(double (&p)[2]) { double n = data->sample_count; p[0] = n / (2. * (double)(nnegatives)); diff --git a/modules/softcascade/test/test_training.cpp b/modules/softcascade/test/test_training.cpp new file mode 100644 index 0000000000..b6a282c498 --- /dev/null +++ b/modules/softcascade/test/test_training.cpp @@ -0,0 +1,246 @@ +/*M/////////////////////////////////////////////////////////////////////////////////////// +// +// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. +// +// By downloading, copying, installing or using the software you agree to this license. +// If you do not agree to this license, do not download, install, +// copy or use the software. +// +// +// License Agreement +// For Open Source Computer Vision Library +// +// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. +// Copyright (C) 2008-2013, Willow Garage Inc., all rights reserved. +// Third party copyrights are property of their respective owners. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// * Redistribution's of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// * Redistribution's in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and / or other materials provided with the distribution. +// +// * The name of the copyright holders may not be used to endorse or promote products +// derived from this software without specific prior written permission. +// +// This software is provided by the copyright holders and contributors "as is" and +// any express or implied warranties, including, but not limited to, the implied +// warranties of merchantability and fitness for a particular purpose are disclaimed. +// In no event shall the Intel Corporation or contributors be liable for any direct, +// indirect, incidental, special, exemplary, or consequential damages +// (including, but not limited to, procurement of substitute goods or services; +// loss of use, data, or profits; or business interruption) however caused +// and on any theory of liability, whether in contract, strict liability, +// or tort (including negligence or otherwise) arising in any way out of +// the use of this software, even if advised of the possibility of such damage. +// +//M*/ + +#if !defined(ANDROID) + +#include +#include +#include + +#include "test_precomp.hpp" +#if !defined (_WIN32) && ! defined(__MINGW32__) +# include +#else +# include +#endif + +using namespace std; + +namespace { + +typedef vector svector; +class ScaledDataset : public cv::Dataset +{ +public: + ScaledDataset(const string& path, const int octave); + + virtual cv::Mat get(SampleType type, int idx) const; + virtual int available(SampleType type) const; + virtual ~ScaledDataset(); + +private: + svector pos; + svector neg; +}; + +string itoa(long i) +{ + char s[65]; + sprintf(s, "%ld", i); + return std::string(s); +} + + +#if !defined (_WIN32) && ! defined(__MINGW32__) + +void glob(const string& path, svector& ret) +{ + glob_t glob_result; + glob(path.c_str(), GLOB_TILDE, 0, &glob_result); + + ret.clear(); + ret.reserve(glob_result.gl_pathc); + + for(unsigned int i = 0; i < glob_result.gl_pathc; ++i) + { + ret.push_back(std::string(glob_result.gl_pathv[i])); + } + + globfree(&glob_result); +} + +#else + +void glob(const string& refRoot, const string& refExt, svector &refvecFiles) +{ + std::string strFilePath; // File path + std::string strExtension; // Extension + + std::string strPattern = refRoot + "\\*.*"; + + WIN32_FIND_DATA FileInformation; // File information + HANDLE hFile = ::FindFirstFile(strPattern.c_str(), &FileInformation); + + if(hFile == INVALID_HANDLE_VALUE) + CV_Error(CV_StsBadArg, "Your dataset search path is incorrect"); + + do + { + if(FileInformation.cFileName[0] != '.') + { + strFilePath.erase(); + strFilePath = refRoot + "\\" + FileInformation.cFileName; + + if( !(FileInformation.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) + { + // Check extension + strExtension = FileInformation.cFileName; + strExtension = strExtension.substr(strExtension.rfind(".") + 1); + + if(strExtension == refExt) + // Save filename + refvecFiles.push_back(strFilePath); + } + } + } + while(::FindNextFile(hFile, &FileInformation) == TRUE); + + // Close handle + ::FindClose(hFile); + + DWORD dwError = ::GetLastError(); + if(dwError != ERROR_NO_MORE_FILES) + CV_Error(CV_StsBadArg, "Your dataset search path is incorrect"); +} + +#endif + +ScaledDataset::ScaledDataset(const string& path, const int oct) +{ + +#if !defined (_WIN32) && ! defined(__MINGW32__) + glob(path + "/pos/octave_" + itoa(oct) + "/*.png", pos); +#else + glob(path + "/pos/octave_" + itoa(oct), "png", pos); +#endif + +#if !defined (_WIN32) && ! defined(__MINGW32__) + glob(path + "/neg/octave_" + itoa(oct) + "/*.png", neg); +#else + glob(path + "/neg/octave_" + itoa(oct), "png", neg); +#endif + + // Check: files not empty + CV_Assert(pos.size() != size_t(0)); + CV_Assert(neg.size() != size_t(0)); +} + +cv::Mat ScaledDataset::get(SampleType type, int idx) const +{ + const std::string& src = (type == POSITIVE)? pos[idx]: neg[idx]; + return cv::imread(src); +} + +int ScaledDataset::available(SampleType type) const +{ + return (int)((type == POSITIVE)? pos.size():neg.size()); +} + +ScaledDataset::~ScaledDataset(){} + +} + +TEST(DISABLED_SoftCascade, training) +{ + // // 2. check and open output file + string outXmlPath = cv::tempfile(".xml"); + cv::FileStorage fso(outXmlPath, cv::FileStorage::WRITE); + + ASSERT_TRUE(fso.isOpened()); + + std::vector octaves; + { + octaves.push_back(-1); + octaves.push_back(0); + } + + fso << "regression-cascade" + << "{" + << "stageType" << "BOOST" + << "featureType" << "ICF" + << "octavesNum" << 2 + << "width" << 64 + << "height" << 128 + << "shrinkage" << 4 + << "octaves" << "["; + + for (std::vector::const_iterator it = octaves.begin(); it != octaves.end(); ++it) + { + int nfeatures = 100; + int shrinkage = 4; + float octave = powf(2.f, (float)(*it)); + cv::Size model = cv::Size( cvRound(64 * octave) / shrinkage, cvRound(128 * octave) / shrinkage ); + + cv::Ptr pool = cv::FeaturePool::create(model, nfeatures); + nfeatures = pool->size(); + int npositives = 20; + int nnegatives = 40; + + cv::Rect boundingBox = cv::Rect( cvRound(20 * octave), cvRound(20 * octave), + cvRound(64 * octave), cvRound(128 * octave)); + + typedef cv::SoftCascadeOctave Octave; + cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, nfeatures); + + std::string path = cvtest::TS::ptr()->get_data_path() + "softcascade/sample_training_set"; + ScaledDataset dataset(path, *it); + + if (boost->train(&dataset, pool, 3, 2)) + { + cv::Mat thresholds; + boost->setRejectThresholds(thresholds); + boost->write(fso, pool, thresholds); + } + } + + fso << "]" << "}"; + fso.release(); + + + cv::FileStorage actual(outXmlPath, cv::FileStorage::READ); + cv::FileNode root = actual.getFirstTopLevelNode(); + + cv::FileNode fn = root["octaves"]; + ASSERT_FALSE(fn.empty()); +} + +#endif \ No newline at end of file From f7ac73998a4d518817a81a20e167116617c6b95d Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Thu, 31 Jan 2013 19:17:56 +0400 Subject: [PATCH 81/82] code review fixes --- apps/sft/include/sft/common.hpp | 2 ++ modules/python/src2/cv2.cpp | 3 +- .../opencv2/softcascade/softcascade.hpp | 10 +++--- modules/softcascade/misc/sft.py | 2 +- modules/softcascade/perf/perf_softcascade.cpp | 6 ++-- .../src/integral_channel_builder.cpp | 32 ++++++++--------- modules/softcascade/src/precomp.hpp | 2 ++ .../softcascade/src/soft_cascade_octave.cpp | 22 ++++++------ modules/softcascade/src/softcascade.cpp | 36 +++++++++---------- modules/softcascade/src/softcascade_init.cpp | 4 +-- .../test/test_channel_features.cpp | 4 +-- modules/softcascade/test/test_softcascade.cpp | 18 ++++------ modules/softcascade/test/test_training.cpp | 6 ++-- 13 files changed, 73 insertions(+), 74 deletions(-) diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index 1371875ce6..eeca72398b 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -46,8 +46,10 @@ #include #include +namespace cv {using namespace scascade;} namespace sft { + using cv::Mat; struct ICF; diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 1eed747225..f4ae0a411c 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -97,6 +97,7 @@ catch (const cv::Exception &e) \ } using namespace cv; +typedef cv::scascade::ChannelFeatureBuilder scascade_ChannelFeatureBuilder; typedef vector vector_uchar; typedef vector vector_int; @@ -125,7 +126,7 @@ typedef Ptr Ptr_DescriptorExtractor; typedef Ptr Ptr_Feature2D; typedef Ptr Ptr_DescriptorMatcher; -typedef Ptr Ptr_ChannelFeatureBuilder; +typedef Ptr Ptr_ChannelFeatureBuilder; typedef SimpleBlobDetector::Params SimpleBlobDetector_Params; diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index 70123c0983..ff821ee310 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -45,7 +45,7 @@ #include "opencv2/core/core.hpp" -namespace cv { +namespace cv { namespace scascade { // Representation of detectors result. struct CV_EXPORTS Detection @@ -122,7 +122,7 @@ std::ostream& operator<<(std::ostream& out, const ChannelFeature& m); // Public Interface for Integral Channel Feature. // ========================================================================== // -class CV_EXPORTS_W ChannelFeatureBuilder : public Algorithm +class CV_EXPORTS_W ChannelFeatureBuilder : public cv::Algorithm { public: virtual ~ChannelFeatureBuilder(); @@ -136,7 +136,7 @@ public: // ========================================================================== // // Implementation of soft (stageless) cascaded detector. // ========================================================================== // -class CV_EXPORTS_W SoftCascadeDetector : public Algorithm +class CV_EXPORTS_W SoftCascadeDetector : public cv::Algorithm { public: @@ -186,7 +186,7 @@ private: // ========================================================================== // // Public Interface for singe soft (stageless) cascade octave training. // ========================================================================== // -class CV_EXPORTS SoftCascadeOctave : public Algorithm +class CV_EXPORTS SoftCascadeOctave : public cv::Algorithm { public: enum @@ -211,6 +211,6 @@ public: CV_EXPORTS bool initModule_softcascade(void); -} +} } #endif \ No newline at end of file diff --git a/modules/softcascade/misc/sft.py b/modules/softcascade/misc/sft.py index 019044fd59..dd098cf94c 100644 --- a/modules/softcascade/misc/sft.py +++ b/modules/softcascade/misc/sft.py @@ -24,7 +24,7 @@ def convert2detections(rects, confs, crop_factor = 0.125): """ Create new instance of soft cascade.""" def cascade(min_scale, max_scale, nscales, f): # where we use nms cv::SoftCascadeDetector::DOLLAR == 2 - c = cv2.SoftCascadeDetector(min_scale, max_scale, nscales, 2) + c = cv2.scascade_SoftCascadeDetector(min_scale, max_scale, nscales, 2) xml = cv2.FileStorage(f, 0) dom = xml.getFirstTopLevelNode() assert c.load(dom) diff --git a/modules/softcascade/perf/perf_softcascade.cpp b/modules/softcascade/perf/perf_softcascade.cpp index 3810356383..683dd570c5 100644 --- a/modules/softcascade/perf/perf_softcascade.cpp +++ b/modules/softcascade/perf/perf_softcascade.cpp @@ -10,7 +10,7 @@ typedef perf::TestBaseWithParam detect; namespace { -void extractRacts(std::vector objectBoxes, std::vector& rects) +void extractRacts(std::vector objectBoxes, std::vector& rects) { rects.clear(); for (int i = 0; i < (int)objectBoxes.size(); ++i) @@ -26,12 +26,12 @@ PERF_TEST_P(detect, SoftCascadeDetector, cv::Mat colored = cv::imread(getDataPath(get<1>(GetParam()))); ASSERT_FALSE(colored.empty()); - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); - std::vector objectBoxes; + std::vector objectBoxes; cascade.detect(colored, cv::noArray(), objectBoxes); TEST_CYCLE() diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index ad5bc7ec5b..86493ff90e 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -44,7 +44,7 @@ namespace { -class ICFBuilder : public cv::ChannelFeatureBuilder +class ICFBuilder : public ChannelFeatureBuilder { virtual ~ICFBuilder() {} virtual cv::AlgorithmInfo* info() const; @@ -109,29 +109,29 @@ class ICFBuilder : public cv::ChannelFeatureBuilder CV_INIT_ALGORITHM(ICFBuilder, "ChannelFeatureBuilder.ICFBuilder", ); -cv::ChannelFeatureBuilder::~ChannelFeatureBuilder() {} +cv::scascade::ChannelFeatureBuilder::~ChannelFeatureBuilder() {} -cv::Ptr cv::ChannelFeatureBuilder::create() +cv::Ptr ChannelFeatureBuilder::create() { - cv::Ptr builder(new ICFBuilder()); + cv::Ptr builder(new ICFBuilder()); return builder; } -cv::ChannelFeature::ChannelFeature(int x, int y, int w, int h, int ch) +cv::scascade::ChannelFeature::ChannelFeature(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} -bool cv::ChannelFeature::operator ==(cv::ChannelFeature b) +bool ChannelFeature::operator ==(ChannelFeature b) { return bb == b.bb && channel == b.channel; } -bool cv::ChannelFeature::operator !=(cv::ChannelFeature b) +bool ChannelFeature::operator !=(ChannelFeature b) { return bb != b.bb || channel != b.channel; } -float cv::ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& model) const +float cv::scascade::ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& model) const { int step = model.width + 1; @@ -148,22 +148,22 @@ float cv::ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& return (float)(a - b + c - d); } -void cv::write(cv::FileStorage& fs, const string&, const cv::ChannelFeature& f) +void cv::scascade::write(cv::FileStorage& fs, const string&, const ChannelFeature& f) { fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; } -std::ostream& cv::operator<<(std::ostream& out, const cv::ChannelFeature& m) +std::ostream& cv::scascade::operator<<(std::ostream& out, const ChannelFeature& m) { out << m.channel << " " << m.bb; return out; } -cv::ChannelFeature::~ChannelFeature(){} +cv::scascade::ChannelFeature::~ChannelFeature(){} namespace { -class ChannelFeaturePool : public cv::FeaturePool +class ChannelFeaturePool : public FeaturePool { public: ChannelFeaturePool(cv::Size m, int n) : FeaturePool(), model(m) @@ -183,7 +183,7 @@ private: void fill(int desired); cv::Size model; - std::vector pool; + std::vector pool; enum { N_CHANNELS = 10 }; }; @@ -235,7 +235,7 @@ void ChannelFeaturePool::fill(int desired) int ch = chRand(eng_ch); - cv::ChannelFeature f(x, y, w, h, ch); + ChannelFeature f(x, y, w, h, ch); if (std::find(pool.begin(), pool.end(),f) == pool.end()) { @@ -246,8 +246,8 @@ void ChannelFeaturePool::fill(int desired) } -cv::Ptr cv::FeaturePool::create(const cv::Size& model, int nfeatures) +cv::Ptr cv::scascade::FeaturePool::create(const cv::Size& model, int nfeatures) { - cv::Ptr pool(new ChannelFeaturePool(model, nfeatures)); + cv::Ptr pool(new ChannelFeaturePool(model, nfeatures)); return pool; } diff --git a/modules/softcascade/src/precomp.hpp b/modules/softcascade/src/precomp.hpp index cb20a268e9..c373069e84 100644 --- a/modules/softcascade/src/precomp.hpp +++ b/modules/softcascade/src/precomp.hpp @@ -55,4 +55,6 @@ #include "opencv2/ml/ml.hpp" #include "_random.hpp" +using namespace cv::scascade; + #endif diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index 41e4a9b562..cbad3f1e79 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -44,19 +44,17 @@ #include #include -using cv::Dataset; -using cv::FeaturePool; using cv::InputArray; using cv::OutputArray; using cv::Mat; -cv::FeaturePool::~FeaturePool(){} -cv::Dataset::~Dataset(){} +cv::scascade::FeaturePool::~FeaturePool(){} +cv::scascade::Dataset::~Dataset(){} namespace { -class BoostedSoftCascadeOctave : public cv::Boost, public cv::SoftCascadeOctave +class BoostedSoftCascadeOctave : public cv::Boost, public SoftCascadeOctave { public: @@ -96,7 +94,7 @@ private: Mat trainData; - cv::Ptr builder; + cv::Ptr builder; }; BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, int ls, int shr, int poolSize) @@ -128,7 +126,7 @@ BoostedSoftCascadeOctave::BoostedSoftCascadeOctave(cv::Rect bb, int np, int nn, params = _params; - builder = cv::ChannelFeatureBuilder::create(); + builder = ChannelFeatureBuilder::create(); int w = boundingBox.width; int h = boundingBox.height; @@ -195,7 +193,7 @@ void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset) { int h = boundingBox.height; - cv::ChannelFeatureBuilder& _builder = *builder; + ChannelFeatureBuilder& _builder = *builder; int total = 0; for (int curr = 0; curr < dataset->available( Dataset::POSITIVE); ++curr) @@ -228,7 +226,7 @@ void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) int total = 0; Mat sum; - cv::ChannelFeatureBuilder& _builder = *builder; + ChannelFeatureBuilder& _builder = *builder; for (int i = npositives; i < nnegatives + npositives; ++total) { int curr = iRand(idxEng); @@ -441,12 +439,12 @@ void BoostedSoftCascadeOctave::write( CvFileStorage* fs, std::string _name) cons CV_INIT_ALGORITHM(BoostedSoftCascadeOctave, "SoftCascadeOctave.BoostedSoftCascadeOctave", ); -cv::SoftCascadeOctave::~SoftCascadeOctave(){} +cv::scascade::SoftCascadeOctave::~SoftCascadeOctave(){} -cv::Ptr cv::SoftCascadeOctave::create(cv::Rect boundingBox, int npositives, int nnegatives, +cv::Ptr cv::scascade::SoftCascadeOctave::create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage, int poolSize) { - cv::Ptr octave( + cv::Ptr octave( new BoostedSoftCascadeOctave(boundingBox, npositives, nnegatives, logScale, shrinkage, poolSize)); return octave; } diff --git a/modules/softcascade/src/softcascade.cpp b/modules/softcascade/src/softcascade.cpp index 46811d5a9d..63fcd6782d 100644 --- a/modules/softcascade/src/softcascade.cpp +++ b/modules/softcascade/src/softcascade.cpp @@ -145,13 +145,13 @@ struct Level scaleshift = static_cast(relScale * (1 << 16)); } - void addDetection(const int x, const int y, float confidence, std::vector& detections) const + void addDetection(const int x, const int y, float confidence, std::vector& detections) const { // fix me int shrinkage = 4;//(*octave).shrinkage; cv::Rect rect(cvRound(x * shrinkage), cvRound(y * shrinkage), objSize.width, objSize.height); - detections.push_back(cv::Detection(rect, confidence)); + detections.push_back(Detection(rect, confidence)); } float rescale(cv::Rect& scaledRect, const float threshold, int idx) const @@ -177,13 +177,13 @@ struct ChannelStorage int step; int model_height; - cv::Ptr builder; + cv::Ptr builder; enum {HOG_BINS = 6, HOG_LUV_BINS = 10}; ChannelStorage(const cv::Mat& colored, int shr) : shrinkage(shr) { - builder = cv::ChannelFeatureBuilder::create(); + builder = ChannelFeatureBuilder::create(); (*builder)(colored, hog); step = hog.step1(); @@ -205,7 +205,7 @@ struct ChannelStorage } -struct cv::SoftCascadeDetector::Fields +struct SoftCascadeDetector::Fields { float minScale; float maxScale; @@ -409,17 +409,17 @@ struct cv::SoftCascadeDetector::Fields } }; -cv::SoftCascadeDetector::SoftCascadeDetector(const double mins, const double maxs, const int nsc, const int rej) +SoftCascadeDetector::SoftCascadeDetector(const double mins, const double maxs, const int nsc, const int rej) : fields(0), minScale(mins), maxScale(maxs), scales(nsc), rejCriteria(rej) {} -cv::SoftCascadeDetector::~SoftCascadeDetector() { delete fields;} +SoftCascadeDetector::~SoftCascadeDetector() { delete fields;} -void cv::SoftCascadeDetector::read(const FileNode& fn) +void SoftCascadeDetector::read(const FileNode& fn) { Algorithm::read(fn); } -bool cv::SoftCascadeDetector::load(const FileNode& fn) +bool SoftCascadeDetector::load(const FileNode& fn) { if (fields) delete fields; @@ -429,12 +429,12 @@ bool cv::SoftCascadeDetector::load(const FileNode& fn) namespace { -typedef std::vector dvector; +typedef std::vector dvector; struct ConfidenceGt { - bool operator()(const cv::Detection& a, const cv::Detection& b) const + bool operator()(const Detection& a, const Detection& b) const { return a.confidence > b.confidence; } @@ -455,10 +455,10 @@ void DollarNMS(dvector& objects) for (dvector::iterator dIt = objects.begin(); dIt != objects.end(); ++dIt) { - const cv::Detection &a = *dIt; + const Detection &a = *dIt; for (dvector::iterator next = dIt + 1; next != objects.end(); ) { - const cv::Detection &b = *next; + const Detection &b = *next; const float ovl = overlap(a.bb, b.bb) / std::min(a.bb.area(), b.bb.area()); @@ -470,15 +470,15 @@ void DollarNMS(dvector& objects) } } -static void suppress(int type, std::vector& objects) +static void suppress(int type, std::vector& objects) { - CV_Assert(type == cv::SoftCascadeDetector::DOLLAR); + CV_Assert(type == SoftCascadeDetector::DOLLAR); DollarNMS(objects); } } -void cv::SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const +void SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const { Fields& fld = *fields; // create integrals @@ -505,7 +505,7 @@ void cv::SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const +void SoftCascadeDetector::detect(cv::InputArray _image, cv::InputArray _rois, std::vector& objects) const { // only color images are suppered cv::Mat image = _image.getMat(); @@ -557,7 +557,7 @@ void cv::SoftCascadeDetector::detect(cv::InputArray _image, cv::InputArray _rois if (rejCriteria != NO_REJECT) suppress(rejCriteria, objects); } -void cv::SoftCascadeDetector::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const +void SoftCascadeDetector::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const { std::vector objects; detect( _image, _rois, objects); diff --git a/modules/softcascade/src/softcascade_init.cpp b/modules/softcascade/src/softcascade_init.cpp index f9606c10b8..b1d9e4c41b 100644 --- a/modules/softcascade/src/softcascade_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" -namespace cv +namespace cv { namespace scascade { CV_INIT_ALGORITHM(SoftCascadeDetector, "SoftCascade.SoftCascadeDetector", @@ -58,4 +58,4 @@ bool initModule_softcascade(void) return (sc1->info() != 0); } -} \ No newline at end of file +} } \ No newline at end of file diff --git a/modules/softcascade/test/test_channel_features.cpp b/modules/softcascade/test/test_channel_features.cpp index 65249b755b..dff99d0f3b 100644 --- a/modules/softcascade/test/test_channel_features.cpp +++ b/modules/softcascade/test/test_channel_features.cpp @@ -44,13 +44,13 @@ TEST(ChannelFeatureBuilderTest, info) { - cv::Ptr builder = cv::ChannelFeatureBuilder::create(); + cv::Ptr builder = cv::scascade::ChannelFeatureBuilder::create(); ASSERT_TRUE(builder->info() != 0); } TEST(ChannelFeatureBuilderTest, compute) { - cv::Ptr builder = cv::ChannelFeatureBuilder::create(); + cv::Ptr builder = cv::scascade::ChannelFeatureBuilder::create(); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png"); cv::Mat ints; diff --git a/modules/softcascade/test/test_softcascade.cpp b/modules/softcascade/test/test_softcascade.cpp index 16f122e008..1848bf7cee 100644 --- a/modules/softcascade/test/test_softcascade.cpp +++ b/modules/softcascade/test/test_softcascade.cpp @@ -44,11 +44,12 @@ #include #include "test_precomp.hpp" + typedef cv::scascade::Detection Detection; TEST(SoftCascadeDetector, readCascade) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -56,9 +57,8 @@ TEST(SoftCascadeDetector, readCascade) TEST(SoftCascadeDetector, detect) { - typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path()+ "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -73,9 +73,8 @@ TEST(SoftCascadeDetector, detect) TEST(SoftCascadeDetector, detectSeparate) { - typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -90,9 +89,8 @@ TEST(SoftCascadeDetector, detectSeparate) TEST(SoftCascadeDetector, detectRoi) { - typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -109,9 +107,8 @@ TEST(SoftCascadeDetector, detectRoi) TEST(SoftCascadeDetector, detectNoRoi) { - typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -128,9 +125,8 @@ TEST(SoftCascadeDetector, detectNoRoi) TEST(SoftCascadeDetector, detectEmptyRoi) { - typedef cv::Detection Detection; std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::SoftCascadeDetector cascade; + cv::scascade::SoftCascadeDetector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); diff --git a/modules/softcascade/test/test_training.cpp b/modules/softcascade/test/test_training.cpp index b6a282c498..dd8ea935a4 100644 --- a/modules/softcascade/test/test_training.cpp +++ b/modules/softcascade/test/test_training.cpp @@ -58,7 +58,7 @@ using namespace std; namespace { typedef vector svector; -class ScaledDataset : public cv::Dataset +class ScaledDataset : public cv::scascade::Dataset { public: ScaledDataset(const string& path, const int octave); @@ -210,7 +210,7 @@ TEST(DISABLED_SoftCascade, training) float octave = powf(2.f, (float)(*it)); cv::Size model = cv::Size( cvRound(64 * octave) / shrinkage, cvRound(128 * octave) / shrinkage ); - cv::Ptr pool = cv::FeaturePool::create(model, nfeatures); + cv::Ptr pool = cv::scascade::FeaturePool::create(model, nfeatures); nfeatures = pool->size(); int npositives = 20; int nnegatives = 40; @@ -218,7 +218,7 @@ TEST(DISABLED_SoftCascade, training) cv::Rect boundingBox = cv::Rect( cvRound(20 * octave), cvRound(20 * octave), cvRound(64 * octave), cvRound(128 * octave)); - typedef cv::SoftCascadeOctave Octave; + typedef cv::scascade::SoftCascadeOctave Octave; cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, nfeatures); std::string path = cvtest::TS::ptr()->get_data_path() + "softcascade/sample_training_set"; From cc538ddfa6f92ee93a2cdb7583e8c3e1da6aaac6 Mon Sep 17 00:00:00 2001 From: "marina.kolpakova" Date: Fri, 1 Feb 2013 14:25:10 +0400 Subject: [PATCH 82/82] changes related with code review --- apps/sft/CMakeLists.txt | 2 +- apps/sft/config.cpp | 3 ++ apps/sft/include/sft/common.hpp | 2 +- apps/sft/include/sft/dataset.hpp | 2 +- apps/sft/sft.cpp | 8 +-- modules/python/src2/cv2.cpp | 4 +- .../softcascade/doc/softcascade_detector.rst | 36 ++++++------- .../softcascade/doc/softcascade_training.rst | 30 +++++------ .../opencv2/softcascade/softcascade.hpp | 18 +++---- modules/softcascade/misc/sft.py | 2 +- modules/softcascade/perf/perf_softcascade.cpp | 11 ++-- modules/softcascade/src/_random.hpp | 40 +++++++++----- .../src/integral_channel_builder.cpp | 37 ++++++++----- modules/softcascade/src/precomp.hpp | 2 - .../softcascade/src/soft_cascade_octave.cpp | 29 ++++++----- modules/softcascade/src/softcascade.cpp | 52 +++++++++++-------- modules/softcascade/src/softcascade_init.cpp | 6 +-- .../test/test_channel_features.cpp | 6 ++- modules/softcascade/test/test_softcascade.cpp | 15 +++--- modules/softcascade/test/test_training.cpp | 7 +-- 20 files changed, 175 insertions(+), 137 deletions(-) diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt index 7197519039..8b950225c8 100644 --- a/apps/sft/CMakeLists.txt +++ b/apps/sft/CMakeLists.txt @@ -24,7 +24,7 @@ set_target_properties(${the_target} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} INSTALL_NAME_DIR lib - OUTPUT_NAME ${the_target}) + OUTPUT_NAME "opencv_trainsoftcascade") if(ENABLE_SOLUTION_FOLDERS) set_target_properties(${the_target} PROPERTIES FOLDER "applications") diff --git a/apps/sft/config.cpp b/apps/sft/config.cpp index 3fc113974c..81b433f043 100644 --- a/apps/sft/config.cpp +++ b/apps/sft/config.cpp @@ -114,6 +114,8 @@ void sft::read(const cv::FileNode& node, Config& x, const Config& default_value) x.read(node); } +namespace { + struct Out { Out(std::ostream& _out): out(_out) {} @@ -124,6 +126,7 @@ struct Out private: Out& operator=(Out const& other); }; +} std::ostream& sft::operator<<(std::ostream& out, const Config& m) { diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp index eeca72398b..6f020ee684 100644 --- a/apps/sft/include/sft/common.hpp +++ b/apps/sft/include/sft/common.hpp @@ -46,7 +46,7 @@ #include #include -namespace cv {using namespace scascade;} +namespace cv {using namespace softcascade;} namespace sft { diff --git a/apps/sft/include/sft/dataset.hpp b/apps/sft/include/sft/dataset.hpp index 14cffa7975..98d6192568 100644 --- a/apps/sft/include/sft/dataset.hpp +++ b/apps/sft/include/sft/dataset.hpp @@ -47,7 +47,7 @@ namespace sft { -using cv::Dataset; +using cv::softcascade::Dataset; class ScaledDataset : public Dataset { diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp index f3c8481007..5981c96773 100644 --- a/apps/sft/sft.cpp +++ b/apps/sft/sft.cpp @@ -76,7 +76,7 @@ int main(int argc, char** argv) string configPath = parser.get("config"); if (configPath.empty()) { - std::cout << "Configuration file is missing or empty. Could not start training." << std::endl << std::flush; + std::cout << "Configuration file is missing or empty. Could not start training." << std::endl; return 0; } @@ -84,7 +84,7 @@ int main(int argc, char** argv) cv::FileStorage fs(configPath, cv::FileStorage::READ); if(!fs.isOpened()) { - std::cout << "Configuration file " << configPath << " can't be opened." << std::endl << std::flush; + std::cout << "Configuration file " << configPath << " can't be opened." << std::endl; return 1; } @@ -97,7 +97,7 @@ int main(int argc, char** argv) cv::FileStorage fso(cfg.outXmlPath, cv::FileStorage::WRITE); if(!fso.isOpened()) { - std::cout << "Training stopped. Output classifier Xml file " << cfg.outXmlPath << " can't be opened." << std::endl << std::flush; + std::cout << "Training stopped. Output classifier Xml file " << cfg.outXmlPath << " can't be opened." << std::endl; return 1; } @@ -128,7 +128,7 @@ int main(int argc, char** argv) cv::Rect boundingBox = cfg.bbox(it); std::cout << "Object bounding box" << boundingBox << std::endl; - typedef cv::SoftCascadeOctave Octave; + typedef cv::Octave Octave; cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, nfeatures); diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index f4ae0a411c..7bd705fbc8 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -97,7 +97,7 @@ catch (const cv::Exception &e) \ } using namespace cv; -typedef cv::scascade::ChannelFeatureBuilder scascade_ChannelFeatureBuilder; +typedef cv::softcascade::ChannelFeatureBuilder softcascade_ChannelFeatureBuilder; typedef vector vector_uchar; typedef vector vector_int; @@ -126,7 +126,7 @@ typedef Ptr Ptr_DescriptorExtractor; typedef Ptr Ptr_Feature2D; typedef Ptr Ptr_DescriptorMatcher; -typedef Ptr Ptr_ChannelFeatureBuilder; +typedef Ptr Ptr_ChannelFeatureBuilder; typedef SimpleBlobDetector::Params SimpleBlobDetector_Params; diff --git a/modules/softcascade/doc/softcascade_detector.rst b/modules/softcascade/doc/softcascade_detector.rst index add9b0ce1e..4b395e1145 100644 --- a/modules/softcascade/doc/softcascade_detector.rst +++ b/modules/softcascade/doc/softcascade_detector.rst @@ -25,20 +25,20 @@ The sample has been rejected if it fall rejection threshold. So stageless cascad .. [BMTG12] Rodrigo Benenson, Markus Mathias, Radu Timofte and Luc Van Gool. Pedestrian detection at 100 frames per second. IEEE CVPR, 2012. -SoftCascadeDetector +Detector ------------------- -.. ocv:class:: SoftCascadeDetector +.. ocv:class:: Detector Implementation of soft (stageless) cascaded detector. :: - class CV_EXPORTS_W SoftCascadeDetector : public Algorithm + class CV_EXPORTS_W Detector : public Algorithm { public: enum { NO_REJECT = 1, DOLLAR = 2, /*PASCAL = 4,*/ DEFAULT = NO_REJECT}; - CV_WRAP SoftCascadeDetector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); - CV_WRAP virtual ~SoftCascadeDetector(); + CV_WRAP Detector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); + CV_WRAP virtual ~Detector(); cv::AlgorithmInfo* info() const; CV_WRAP virtual bool load(const FileNode& fileNode); CV_WRAP virtual void read(const FileNode& fileNode); @@ -49,13 +49,13 @@ Implementation of soft (stageless) cascaded detector. :: -SoftCascadeDetector::SoftCascadeDetector +Detector::Detector ---------------------------------------- An empty cascade will be created. -.. ocv:function:: SoftCascadeDetector::SoftCascadeDetector(float minScale = 0.4f, float maxScale = 5.f, int scales = 55, int rejCriteria = 1) +.. ocv:function:: Detector::Detector(float minScale = 0.4f, float maxScale = 5.f, int scales = 55, int rejCriteria = 1) -.. ocv:pyfunction:: cv2.SoftCascadeDetector.SoftCascadeDetector(minScale[, maxScale[, scales[, rejCriteria]]]) -> cascade +.. ocv:pyfunction:: cv2.Detector.Detector(minScale[, maxScale[, scales[, rejCriteria]]]) -> cascade :param minScale: a minimum scale relative to the original size of the image on which cascade will be applied. @@ -67,35 +67,35 @@ An empty cascade will be created. -SoftCascadeDetector::~SoftCascadeDetector +Detector::~Detector ----------------------------------------- -Destructor for SoftCascadeDetector. +Destructor for Detector. -.. ocv:function:: SoftCascadeDetector::~SoftCascadeDetector() +.. ocv:function:: Detector::~Detector() -SoftCascadeDetector::load +Detector::load -------------------------- Load cascade from FileNode. -.. ocv:function:: bool SoftCascadeDetector::load(const FileNode& fileNode) +.. ocv:function:: bool Detector::load(const FileNode& fileNode) -.. ocv:pyfunction:: cv2.SoftCascadeDetector.load(fileNode) +.. ocv:pyfunction:: cv2.Detector.load(fileNode) :param fileNode: File node from which the soft cascade are read. -SoftCascadeDetector::detect +Detector::detect --------------------------- Apply cascade to an input frame and return the vector of Detection objects. -.. ocv:function:: void SoftCascadeDetector::detect(InputArray image, InputArray rois, std::vector& objects) const +.. ocv:function:: void Detector::detect(InputArray image, InputArray rois, std::vector& objects) const -.. ocv:function:: void SoftCascadeDetector::detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const +.. ocv:function:: void Detector::detect(InputArray image, InputArray rois, OutputArray rects, OutputArray confs) const -.. ocv:pyfunction:: cv2.SoftCascadeDetector.detect(image, rois) -> (rects, confs) +.. ocv:pyfunction:: cv2.Detector.detect(image, rois) -> (rects, confs) :param image: a frame on which detector will be applied. diff --git a/modules/softcascade/doc/softcascade_training.rst b/modules/softcascade/doc/softcascade_training.rst index b199462060..dda66e9a05 100644 --- a/modules/softcascade/doc/softcascade_training.rst +++ b/modules/softcascade/doc/softcascade_training.rst @@ -7,13 +7,13 @@ Soft Cascade Detector Training -------------------------------------------- -SoftCascadeOctave +Octave ----------------- -.. ocv:class:: SoftCascadeOctave +.. ocv:class:: Octave Public interface for soft cascade training algorithm. :: - class CV_EXPORTS SoftCascadeOctave : public Algorithm + class CV_EXPORTS Octave : public Algorithm { public: @@ -25,8 +25,8 @@ Public interface for soft cascade training algorithm. :: // Originally proposed by L. Bourdev and J. Brandt HEURISTIC = 4 }; - virtual ~SoftCascadeOctave(); - static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); + virtual ~Octave(); + static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage); virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) = 0; virtual void setRejectThresholds(OutputArray thresholds) = 0; @@ -37,17 +37,17 @@ Public interface for soft cascade training algorithm. :: -SoftCascadeOctave::~SoftCascadeOctave +Octave::~Octave --------------------------------------- -Destructor for SoftCascadeOctave. +Destructor for Octave. -.. ocv:function:: SoftCascadeOctave::~SoftCascadeOctave() +.. ocv:function:: Octave::~Octave() -SoftCascadeOctave::train +Octave::train ------------------------ -.. ocv:function:: bool SoftCascadeOctave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) +.. ocv:function:: bool Octave::train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) :param dataset an object that allows communicate for training set. @@ -59,19 +59,19 @@ SoftCascadeOctave::train -SoftCascadeOctave::setRejectThresholds +Octave::setRejectThresholds -------------------------------------- -.. ocv:function:: void SoftCascadeOctave::setRejectThresholds(OutputArray thresholds) +.. ocv:function:: void Octave::setRejectThresholds(OutputArray thresholds) :param thresholds an output array of resulted rejection vector. Have same size as number of trained stages. -SoftCascadeOctave::write +Octave::write ------------------------ -.. ocv:function:: void SoftCascadeOctave::train(cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const -.. ocv:function:: void SoftCascadeOctave::train( CvFileStorage* fs, string name) const +.. ocv:function:: void Octave::train(cv::FileStorage &fs, const FeaturePool* pool, InputArray thresholds) const +.. ocv:function:: void Octave::train( CvFileStorage* fs, string name) const :param fs an output file storage to store trained detector. diff --git a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp index ff821ee310..a84aaa044f 100644 --- a/modules/softcascade/include/opencv2/softcascade/softcascade.hpp +++ b/modules/softcascade/include/opencv2/softcascade/softcascade.hpp @@ -45,7 +45,7 @@ #include "opencv2/core/core.hpp" -namespace cv { namespace scascade { +namespace cv { namespace softcascade { // Representation of detectors result. struct CV_EXPORTS Detection @@ -64,8 +64,6 @@ struct CV_EXPORTS Detection int kind; }; - - class CV_EXPORTS Dataset { public: @@ -136,7 +134,7 @@ public: // ========================================================================== // // Implementation of soft (stageless) cascaded detector. // ========================================================================== // -class CV_EXPORTS_W SoftCascadeDetector : public cv::Algorithm +class CV_EXPORTS_W Detector : public cv::Algorithm { public: @@ -147,9 +145,9 @@ public: // Param minScale is a maximum scale relative to the original size of the image on which cascade will be applied. // Param scales is a number of scales from minScale to maxScale. // Param rejCriteria is used for NMS. - CV_WRAP SoftCascadeDetector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); + CV_WRAP Detector(double minScale = 0.4, double maxScale = 5., int scales = 55, int rejCriteria = 1); - CV_WRAP virtual ~SoftCascadeDetector(); + CV_WRAP virtual ~Detector(); cv::AlgorithmInfo* info() const; @@ -186,7 +184,7 @@ private: // ========================================================================== // // Public Interface for singe soft (stageless) cascade octave training. // ========================================================================== // -class CV_EXPORTS SoftCascadeOctave : public cv::Algorithm +class CV_EXPORTS Octave : public cv::Algorithm { public: enum @@ -199,8 +197,8 @@ public: HEURISTIC = 4 }; - virtual ~SoftCascadeOctave(); - static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, + virtual ~Octave(); + static cv::Ptr create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage, int poolSize); virtual bool train(const Dataset* dataset, const FeaturePool* pool, int weaks, int treeDepth) = 0; @@ -211,6 +209,6 @@ public: CV_EXPORTS bool initModule_softcascade(void); -} } +}} // namespace cv { namespace softcascade { #endif \ No newline at end of file diff --git a/modules/softcascade/misc/sft.py b/modules/softcascade/misc/sft.py index dd098cf94c..cefbb3700b 100644 --- a/modules/softcascade/misc/sft.py +++ b/modules/softcascade/misc/sft.py @@ -24,7 +24,7 @@ def convert2detections(rects, confs, crop_factor = 0.125): """ Create new instance of soft cascade.""" def cascade(min_scale, max_scale, nscales, f): # where we use nms cv::SoftCascadeDetector::DOLLAR == 2 - c = cv2.scascade_SoftCascadeDetector(min_scale, max_scale, nscales, 2) + c = cv2.softcascade_Detector(min_scale, max_scale, nscales, 2) xml = cv2.FileStorage(f, 0) dom = xml.getFirstTopLevelNode() assert c.load(dom) diff --git a/modules/softcascade/perf/perf_softcascade.cpp b/modules/softcascade/perf/perf_softcascade.cpp index 683dd570c5..e694697f34 100644 --- a/modules/softcascade/perf/perf_softcascade.cpp +++ b/modules/softcascade/perf/perf_softcascade.cpp @@ -4,13 +4,16 @@ using cv::Rect; using std::tr1::get; + +using namespace cv::softcascade; + typedef std::tr1::tuple fixture; typedef perf::TestBaseWithParam detect; namespace { -void extractRacts(std::vector objectBoxes, std::vector& rects) +void extractRacts(std::vector objectBoxes, std::vector& rects) { rects.clear(); for (int i = 0; i < (int)objectBoxes.size(); ++i) @@ -26,14 +29,12 @@ PERF_TEST_P(detect, SoftCascadeDetector, cv::Mat colored = cv::imread(getDataPath(get<1>(GetParam()))); ASSERT_FALSE(colored.empty()); - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(getDataPath(get<0>(GetParam())), cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); - std::vector objectBoxes; - cascade.detect(colored, cv::noArray(), objectBoxes); - + std::vector objectBoxes; TEST_CYCLE() { cascade.detect(colored, cv::noArray(), objectBoxes); diff --git a/modules/softcascade/src/_random.hpp b/modules/softcascade/src/_random.hpp index b7a402d177..79c1990c0f 100644 --- a/modules/softcascade/src/_random.hpp +++ b/modules/softcascade/src/_random.hpp @@ -22,7 +22,7 @@ // // * Redistribution's in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. +// and / or other materials provided with the distribution. // // * The name of the copyright holders may not be used to endorse or promote products // derived from this software without specific prior written permission. @@ -44,41 +44,53 @@ #define __SFT_RANDOM_HPP__ #if defined(_MSC_VER) && _MSC_VER >= 1600 - # include -namespace sft { + +namespace cv { namespace softcascade { namespace internal +{ + struct Random { typedef std::mt19937 engine; typedef std::uniform_int uniform; }; -} + +}}} #elif (__GNUC__) && __GNUC__ > 3 && __GNUC_MINOR__ > 1 && !defined(__ANDROID__) - # if defined (__cplusplus) && __cplusplus > 201100L # include -namespace sft { + +namespace cv { namespace softcascade { namespace internal +{ + struct Random { typedef std::mt19937 engine; typedef std::uniform_int uniform; }; -} -# else -# include +}}} + +# else +# include + +namespace cv { namespace softcascade { namespace internal +{ -namespace sft { struct Random { typedef std::tr1::mt19937 engine; typedef std::tr1::uniform_int uniform; }; -} + +}}} # endif #else -#include +# include + +namespace cv { namespace softcascade { namespace internal +{ namespace rnd { typedef cv::RNG engine; @@ -104,13 +116,13 @@ private: } -namespace sft { struct Random { typedef rnd::engine engine; typedef rnd::uniform_int uniform; }; -} + +}}} #endif diff --git a/modules/softcascade/src/integral_channel_builder.cpp b/modules/softcascade/src/integral_channel_builder.cpp index 86493ff90e..c441fa820b 100644 --- a/modules/softcascade/src/integral_channel_builder.cpp +++ b/modules/softcascade/src/integral_channel_builder.cpp @@ -44,10 +44,13 @@ namespace { +using namespace cv::softcascade; + class ICFBuilder : public ChannelFeatureBuilder { virtual ~ICFBuilder() {} virtual cv::AlgorithmInfo* info() const; + virtual void operator()(cv::InputArray _frame, CV_OUT cv::OutputArray _integrals) const { CV_Assert(_frame.type() == CV_8UC3); @@ -107,9 +110,12 @@ class ICFBuilder : public ChannelFeatureBuilder } +using cv::softcascade::ChannelFeatureBuilder; +using cv::softcascade::ChannelFeature; + CV_INIT_ALGORITHM(ICFBuilder, "ChannelFeatureBuilder.ICFBuilder", ); -cv::scascade::ChannelFeatureBuilder::~ChannelFeatureBuilder() {} +ChannelFeatureBuilder::~ChannelFeatureBuilder() {} cv::Ptr ChannelFeatureBuilder::create() { @@ -117,7 +123,7 @@ cv::Ptr ChannelFeatureBuilder::create() return builder; } -cv::scascade::ChannelFeature::ChannelFeature(int x, int y, int w, int h, int ch) +ChannelFeature::ChannelFeature(int x, int y, int w, int h, int ch) : bb(cv::Rect(x, y, w, h)), channel(ch) {} bool ChannelFeature::operator ==(ChannelFeature b) @@ -131,7 +137,7 @@ bool ChannelFeature::operator !=(ChannelFeature b) } -float cv::scascade::ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& model) const +float ChannelFeature::operator() (const cv::Mat& integrals, const cv::Size& model) const { int step = model.width + 1; @@ -148,21 +154,23 @@ float cv::scascade::ChannelFeature::operator() (const cv::Mat& integrals, const return (float)(a - b + c - d); } -void cv::scascade::write(cv::FileStorage& fs, const string&, const ChannelFeature& f) +void cv::softcascade::write(cv::FileStorage& fs, const string&, const ChannelFeature& f) { fs << "{" << "channel" << f.channel << "rect" << f.bb << "}"; } -std::ostream& cv::scascade::operator<<(std::ostream& out, const ChannelFeature& m) +std::ostream& cv::softcascade::operator<<(std::ostream& out, const ChannelFeature& m) { out << m.channel << " " << m.bb; return out; } -cv::scascade::ChannelFeature::~ChannelFeature(){} +ChannelFeature::~ChannelFeature(){} namespace { +using namespace cv::softcascade; + class ChannelFeaturePool : public FeaturePool { public: @@ -200,6 +208,7 @@ void ChannelFeaturePool::write( cv::FileStorage& fs, int index) const void ChannelFeaturePool::fill(int desired) { + using namespace cv::softcascade::internal; int mw = model.width; int mh = model.height; @@ -208,16 +217,16 @@ void ChannelFeaturePool::fill(int desired) int nfeatures = std::min(desired, maxPoolSize); pool.reserve(nfeatures); - sft::Random::engine eng(FEATURE_RECT_SEED); - sft::Random::engine eng_ch(DCHANNELS_SEED); + Random::engine eng(FEATURE_RECT_SEED); + Random::engine eng_ch(DCHANNELS_SEED); - sft::Random::uniform chRand(0, N_CHANNELS - 1); + Random::uniform chRand(0, N_CHANNELS - 1); - sft::Random::uniform xRand(0, model.width - 2); - sft::Random::uniform yRand(0, model.height - 2); + Random::uniform xRand(0, model.width - 2); + Random::uniform yRand(0, model.height - 2); - sft::Random::uniform wRand(1, model.width - 1); - sft::Random::uniform hRand(1, model.height - 1); + Random::uniform wRand(1, model.width - 1); + Random::uniform hRand(1, model.height - 1); while (pool.size() < size_t(nfeatures)) { @@ -246,7 +255,7 @@ void ChannelFeaturePool::fill(int desired) } -cv::Ptr cv::scascade::FeaturePool::create(const cv::Size& model, int nfeatures) +cv::Ptr FeaturePool::create(const cv::Size& model, int nfeatures) { cv::Ptr pool(new ChannelFeaturePool(model, nfeatures)); return pool; diff --git a/modules/softcascade/src/precomp.hpp b/modules/softcascade/src/precomp.hpp index c373069e84..cb20a268e9 100644 --- a/modules/softcascade/src/precomp.hpp +++ b/modules/softcascade/src/precomp.hpp @@ -55,6 +55,4 @@ #include "opencv2/ml/ml.hpp" #include "_random.hpp" -using namespace cv::scascade; - #endif diff --git a/modules/softcascade/src/soft_cascade_octave.cpp b/modules/softcascade/src/soft_cascade_octave.cpp index cbad3f1e79..30deb4cc8a 100644 --- a/modules/softcascade/src/soft_cascade_octave.cpp +++ b/modules/softcascade/src/soft_cascade_octave.cpp @@ -48,13 +48,17 @@ using cv::InputArray; using cv::OutputArray; using cv::Mat; -cv::scascade::FeaturePool::~FeaturePool(){} -cv::scascade::Dataset::~Dataset(){} +using cv::softcascade::Octave; +using cv::softcascade::FeaturePool; +using cv::softcascade::Dataset; +using cv::softcascade::ChannelFeatureBuilder; + +FeaturePool::~FeaturePool(){} +Dataset::~Dataset(){} namespace { - -class BoostedSoftCascadeOctave : public cv::Boost, public SoftCascadeOctave +class BoostedSoftCascadeOctave : public cv::Boost, public Octave { public: @@ -214,14 +218,15 @@ void BoostedSoftCascadeOctave::processPositives(const Dataset* dataset) void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) { + using namespace cv::softcascade::internal; // ToDo: set seed, use offsets - sft::Random::engine eng(DX_DY_SEED); - sft::Random::engine idxEng(INDEX_ENGINE_SEED); + Random::engine eng(DX_DY_SEED); + Random::engine idxEng(INDEX_ENGINE_SEED); int h = boundingBox.height; int nimages = dataset->available(Dataset::NEGATIVE); - sft::Random::uniform iRand(0, nimages - 1); + Random::uniform iRand(0, nimages - 1); int total = 0; Mat sum; @@ -236,8 +241,8 @@ void BoostedSoftCascadeOctave::generateNegatives(const Dataset* dataset) int maxW = frame.cols - 2 * boundingBox.x - boundingBox.width; int maxH = frame.rows - 2 * boundingBox.y - boundingBox.height; - sft::Random::uniform wRand(0, maxW -1); - sft::Random::uniform hRand(0, maxH -1); + Random::uniform wRand(0, maxW -1); + Random::uniform hRand(0, maxH -1); int dx = wRand(eng); int dy = hRand(eng); @@ -439,12 +444,12 @@ void BoostedSoftCascadeOctave::write( CvFileStorage* fs, std::string _name) cons CV_INIT_ALGORITHM(BoostedSoftCascadeOctave, "SoftCascadeOctave.BoostedSoftCascadeOctave", ); -cv::scascade::SoftCascadeOctave::~SoftCascadeOctave(){} +Octave::~Octave(){} -cv::Ptr cv::scascade::SoftCascadeOctave::create(cv::Rect boundingBox, int npositives, int nnegatives, +cv::Ptr Octave::create(cv::Rect boundingBox, int npositives, int nnegatives, int logScale, int shrinkage, int poolSize) { - cv::Ptr octave( + cv::Ptr octave( new BoostedSoftCascadeOctave(boundingBox, npositives, nnegatives, logScale, shrinkage, poolSize)); return octave; } diff --git a/modules/softcascade/src/softcascade.cpp b/modules/softcascade/src/softcascade.cpp index 63fcd6782d..58a61547a2 100644 --- a/modules/softcascade/src/softcascade.cpp +++ b/modules/softcascade/src/softcascade.cpp @@ -42,11 +42,17 @@ #include "precomp.hpp" +using cv::softcascade::Detection; +using cv::softcascade::Detector; +using cv::softcascade::ChannelFeatureBuilder; + +using namespace cv; + namespace { -struct Octave +struct SOctave { - Octave(const int i, const cv::Size& origObjSize, const cv::FileNode& fn) + SOctave(const int i, const cv::Size& origObjSize, const cv::FileNode& fn) : index(i), weaks((int)fn[SC_OCT_WEAKS]), scale(pow(2,(float)fn[SC_OCT_SCALE])), size(cvRound(origObjSize.width * scale), cvRound(origObjSize.height * scale)) {} @@ -115,16 +121,16 @@ struct Feature static const char *const SC_F_RECT; }; -const char *const Octave::SC_OCT_SCALE = "scale"; -const char *const Octave::SC_OCT_WEAKS = "weaks"; -const char *const Octave::SC_OCT_SHRINKAGE = "shrinkingFactor"; +const char *const SOctave::SC_OCT_SCALE = "scale"; +const char *const SOctave::SC_OCT_WEAKS = "weaks"; +const char *const SOctave::SC_OCT_SHRINKAGE = "shrinkingFactor"; const char *const Weak::SC_WEAK_THRESHOLD = "treeThreshold"; const char *const Feature::SC_F_CHANNEL = "channel"; const char *const Feature::SC_F_RECT = "rect"; struct Level { - const Octave* octave; + const SOctave* octave; float origScale; float relScale; @@ -135,7 +141,7 @@ struct Level float scaling[2]; // 0-th for channels <= 6, 1-st otherwise - Level(const Octave& oct, const float scale, const int shrinkage, const int w, const int h) + Level(const SOctave& oct, const float scale, const int shrinkage, const int w, const int h) : octave(&oct), origScale(scale), relScale(scale / oct.scale), workRect(cv::Size(cvRound(w / (float)shrinkage),cvRound(h / (float)shrinkage))), objSize(cv::Size(cvRound(oct.size.width * relScale), cvRound(oct.size.height * relScale))) @@ -205,7 +211,8 @@ struct ChannelStorage } -struct SoftCascadeDetector::Fields + +struct Detector::Fields { float minScale; float maxScale; @@ -216,7 +223,7 @@ struct SoftCascadeDetector::Fields int shrinkage; - std::vector octaves; + std::vector octaves; std::vector weaks; std::vector nodes; std::vector leaves; @@ -226,14 +233,14 @@ struct SoftCascadeDetector::Fields cv::Size frameSize; - typedef std::vector::iterator octIt_t; + typedef std::vector::iterator octIt_t; typedef std::vector dvector; void detectAt(const int dx, const int dy, const Level& level, const ChannelStorage& storage, dvector& detections) const { float detectionScore = 0.f; - const Octave& octave = *(level.octave); + const SOctave& octave = *(level.octave); int stBegin = octave.index * octave.weaks, stEnd = stBegin + octave.weaks; @@ -279,7 +286,7 @@ struct SoftCascadeDetector::Fields octIt_t res = octaves.begin(); for (octIt_t oct = octaves.begin(); oct < octaves.end(); ++oct) { - const Octave& octave =*oct; + const SOctave& octave =*oct; float logOctave = log(octave.scale); float logAbsScale = fabs(logFactor - logOctave); @@ -373,7 +380,7 @@ struct SoftCascadeDetector::Fields for (int octIndex = 0; it != it_end; ++it, ++octIndex) { FileNode fns = *it; - Octave octave(octIndex, cv::Size(origObjWidth, origObjHeight), fns); + SOctave octave(octIndex, cv::Size(origObjWidth, origObjHeight), fns); CV_Assert(octave.weaks > 0); octaves.push_back(octave); @@ -409,17 +416,17 @@ struct SoftCascadeDetector::Fields } }; -SoftCascadeDetector::SoftCascadeDetector(const double mins, const double maxs, const int nsc, const int rej) +Detector::Detector(const double mins, const double maxs, const int nsc, const int rej) : fields(0), minScale(mins), maxScale(maxs), scales(nsc), rejCriteria(rej) {} -SoftCascadeDetector::~SoftCascadeDetector() { delete fields;} +Detector::~Detector() { delete fields;} -void SoftCascadeDetector::read(const FileNode& fn) +void Detector::read(const cv::FileNode& fn) { Algorithm::read(fn); } -bool SoftCascadeDetector::load(const FileNode& fn) +bool Detector::load(const cv::FileNode& fn) { if (fields) delete fields; @@ -429,6 +436,7 @@ bool SoftCascadeDetector::load(const FileNode& fn) namespace { +using cv::softcascade::Detection; typedef std::vector dvector; @@ -472,13 +480,13 @@ void DollarNMS(dvector& objects) static void suppress(int type, std::vector& objects) { - CV_Assert(type == SoftCascadeDetector::DOLLAR); + CV_Assert(type == Detector::DOLLAR); DollarNMS(objects); } } -void SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const +void Detector::detectNoRoi(const cv::Mat& image, std::vector& objects) const { Fields& fld = *fields; // create integrals @@ -502,10 +510,10 @@ void SoftCascadeDetector::detectNoRoi(const cv::Mat& image, std::vector& objects) const +void Detector::detect(cv::InputArray _image, cv::InputArray _rois, std::vector& objects) const { // only color images are suppered cv::Mat image = _image.getMat(); @@ -557,7 +565,7 @@ void SoftCascadeDetector::detect(cv::InputArray _image, cv::InputArray _rois, st if (rejCriteria != NO_REJECT) suppress(rejCriteria, objects); } -void SoftCascadeDetector::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const +void Detector::detect(InputArray _image, InputArray _rois, OutputArray _rects, OutputArray _confs) const { std::vector objects; detect( _image, _rois, objects); diff --git a/modules/softcascade/src/softcascade_init.cpp b/modules/softcascade/src/softcascade_init.cpp index b1d9e4c41b..48ad46ab2d 100644 --- a/modules/softcascade/src/softcascade_init.cpp +++ b/modules/softcascade/src/softcascade_init.cpp @@ -42,10 +42,10 @@ #include "precomp.hpp" -namespace cv { namespace scascade +namespace cv { namespace softcascade { -CV_INIT_ALGORITHM(SoftCascadeDetector, "SoftCascade.SoftCascadeDetector", +CV_INIT_ALGORITHM(Detector, "SoftCascade.Detector", obj.info()->addParam(obj, "minScale", obj.minScale); obj.info()->addParam(obj, "maxScale", obj.maxScale); obj.info()->addParam(obj, "scales", obj.scales); @@ -54,7 +54,7 @@ CV_INIT_ALGORITHM(SoftCascadeDetector, "SoftCascade.SoftCascadeDetector", bool initModule_softcascade(void) { - Ptr sc1 = createSoftCascadeDetector(); + Ptr sc1 = createDetector(); return (sc1->info() != 0); } diff --git a/modules/softcascade/test/test_channel_features.cpp b/modules/softcascade/test/test_channel_features.cpp index dff99d0f3b..0a8cbf43ba 100644 --- a/modules/softcascade/test/test_channel_features.cpp +++ b/modules/softcascade/test/test_channel_features.cpp @@ -42,15 +42,17 @@ #include "test_precomp.hpp" +using namespace cv::softcascade; + TEST(ChannelFeatureBuilderTest, info) { - cv::Ptr builder = cv::scascade::ChannelFeatureBuilder::create(); + cv::Ptr builder = ChannelFeatureBuilder::create(); ASSERT_TRUE(builder->info() != 0); } TEST(ChannelFeatureBuilderTest, compute) { - cv::Ptr builder = cv::scascade::ChannelFeatureBuilder::create(); + cv::Ptr builder = ChannelFeatureBuilder::create(); cv::Mat colored = cv::imread(cvtest::TS::ptr()->get_data_path() + "cascadeandhog/images/image_00000000_0.png"); cv::Mat ints; diff --git a/modules/softcascade/test/test_softcascade.cpp b/modules/softcascade/test/test_softcascade.cpp index 1848bf7cee..9004264fcb 100644 --- a/modules/softcascade/test/test_softcascade.cpp +++ b/modules/softcascade/test/test_softcascade.cpp @@ -44,12 +44,13 @@ #include #include "test_precomp.hpp" - typedef cv::scascade::Detection Detection; + +using namespace cv::softcascade; TEST(SoftCascadeDetector, readCascade) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(fs.isOpened()); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -58,7 +59,7 @@ TEST(SoftCascadeDetector, readCascade) TEST(SoftCascadeDetector, detect) { std::string xml = cvtest::TS::ptr()->get_data_path()+ "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -74,7 +75,7 @@ TEST(SoftCascadeDetector, detect) TEST(SoftCascadeDetector, detectSeparate) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -90,7 +91,7 @@ TEST(SoftCascadeDetector, detectSeparate) TEST(SoftCascadeDetector, detectRoi) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -108,7 +109,7 @@ TEST(SoftCascadeDetector, detectRoi) TEST(SoftCascadeDetector, detectNoRoi) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); @@ -126,7 +127,7 @@ TEST(SoftCascadeDetector, detectNoRoi) TEST(SoftCascadeDetector, detectEmptyRoi) { std::string xml = cvtest::TS::ptr()->get_data_path() + "cascadeandhog/cascades/inria_caltech-17.01.2013.xml"; - cv::scascade::SoftCascadeDetector cascade; + Detector cascade; cv::FileStorage fs(xml, cv::FileStorage::READ); ASSERT_TRUE(cascade.load(fs.getFirstTopLevelNode())); diff --git a/modules/softcascade/test/test_training.cpp b/modules/softcascade/test/test_training.cpp index dd8ea935a4..301bab35c6 100644 --- a/modules/softcascade/test/test_training.cpp +++ b/modules/softcascade/test/test_training.cpp @@ -57,8 +57,10 @@ using namespace std; namespace { +using namespace cv::softcascade; + typedef vector svector; -class ScaledDataset : public cv::scascade::Dataset +class ScaledDataset : public Dataset { public: ScaledDataset(const string& path, const int octave); @@ -210,7 +212,7 @@ TEST(DISABLED_SoftCascade, training) float octave = powf(2.f, (float)(*it)); cv::Size model = cv::Size( cvRound(64 * octave) / shrinkage, cvRound(128 * octave) / shrinkage ); - cv::Ptr pool = cv::scascade::FeaturePool::create(model, nfeatures); + cv::Ptr pool = FeaturePool::create(model, nfeatures); nfeatures = pool->size(); int npositives = 20; int nnegatives = 40; @@ -218,7 +220,6 @@ TEST(DISABLED_SoftCascade, training) cv::Rect boundingBox = cv::Rect( cvRound(20 * octave), cvRound(20 * octave), cvRound(64 * octave), cvRound(128 * octave)); - typedef cv::scascade::SoftCascadeOctave Octave; cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, nfeatures); std::string path = cvtest::TS::ptr()->get_data_path() + "softcascade/sample_training_set";