From 90d42be1c94f03ab54a4ed1536b18839b79c05cb Mon Sep 17 00:00:00 2001 From: jackyu <455501914@qq.com> Date: Mon, 18 Dec 2017 00:04:52 +0800 Subject: [PATCH] add ios implementation and change readme --- Prj-IOS/include/CNNRecognizer.h | 24 + Prj-IOS/include/FastDeskew.h | 18 + Prj-IOS/include/FineMapping.h | 32 + Prj-IOS/include/Pipeline.h | 48 + Prj-IOS/include/PlateDetection.h | 33 + Prj-IOS/include/PlateInfo.h | 127 + Prj-IOS/include/PlateSegmentation.h | 39 + Prj-IOS/include/Recognizer.h | 21 + Prj-IOS/include/niBlackThreshold.h | 107 + Prj-IOS/lp.xcodeproj/project.pbxproj | 435 + .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 115605 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 + .../xcschemes/xcschememanagement.plist | 14 + Prj-IOS/lp/AppDelegate.h | 17 + Prj-IOS/lp/AppDelegate.m | 51 + .../AppIcon.appiconset/Contents.json | 98 + Prj-IOS/lp/Base.lproj/LaunchScreen.storyboard | 25 + Prj-IOS/lp/Base.lproj/Main.storyboard | 28 + Prj-IOS/lp/Info.plist | 45 + Prj-IOS/lp/UIImageCVMatConverter.h | 32 + Prj-IOS/lp/UIImageCVMatConverter.mm | 317 + Prj-IOS/lp/ViewController.h | 40 + Prj-IOS/lp/ViewController.mm | 216 + Prj-IOS/lp/main.m | 16 + Prj-IOS/model.bundle/cascade.xml | 12117 ++++++++++++++++ Prj-IOS/src/CNNRecognizer.cpp | 19 + Prj-IOS/src/FastDeskew.cpp | 133 + Prj-IOS/src/FineMapping.cpp | 205 + Prj-IOS/src/Pipeline.cpp | 69 + Prj-IOS/src/PlateDetection.cpp | 61 + Prj-IOS/src/PlateSegmentation.cpp | 402 + Prj-IOS/src/Recognizer.cpp | 26 + Prj-IOS/src/util.h | 79 + README.md | 35 +- 35 files changed, 14923 insertions(+), 18 deletions(-) create mode 100755 Prj-IOS/include/CNNRecognizer.h create mode 100755 Prj-IOS/include/FastDeskew.h create mode 100755 Prj-IOS/include/FineMapping.h create mode 100755 Prj-IOS/include/Pipeline.h create mode 100755 Prj-IOS/include/PlateDetection.h create mode 100755 Prj-IOS/include/PlateInfo.h create mode 100755 Prj-IOS/include/PlateSegmentation.h create mode 100755 Prj-IOS/include/Recognizer.h create mode 100755 Prj-IOS/include/niBlackThreshold.h create mode 100644 Prj-IOS/lp.xcodeproj/project.pbxproj create mode 100644 Prj-IOS/lp.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Prj-IOS/lp.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Prj-IOS/lp/AppDelegate.h create mode 100644 Prj-IOS/lp/AppDelegate.m create mode 100644 Prj-IOS/lp/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Prj-IOS/lp/Base.lproj/LaunchScreen.storyboard create mode 100644 Prj-IOS/lp/Base.lproj/Main.storyboard create mode 100644 Prj-IOS/lp/Info.plist create mode 100644 Prj-IOS/lp/UIImageCVMatConverter.h create mode 100644 Prj-IOS/lp/UIImageCVMatConverter.mm create mode 100644 Prj-IOS/lp/ViewController.h create mode 100644 Prj-IOS/lp/ViewController.mm create mode 100644 Prj-IOS/lp/main.m create mode 100755 Prj-IOS/model.bundle/cascade.xml create mode 100755 Prj-IOS/src/CNNRecognizer.cpp create mode 100755 Prj-IOS/src/FastDeskew.cpp create mode 100755 Prj-IOS/src/FineMapping.cpp create mode 100755 Prj-IOS/src/Pipeline.cpp create mode 100755 Prj-IOS/src/PlateDetection.cpp create mode 100755 Prj-IOS/src/PlateSegmentation.cpp create mode 100755 Prj-IOS/src/Recognizer.cpp create mode 100755 Prj-IOS/src/util.h diff --git a/Prj-IOS/include/CNNRecognizer.h b/Prj-IOS/include/CNNRecognizer.h new file mode 100755 index 0000000..ad491a0 --- /dev/null +++ b/Prj-IOS/include/CNNRecognizer.h @@ -0,0 +1,24 @@ +// +// Created by 庾金科 on 21/10/2017. +// + +#ifndef SWIFTPR_CNNRECOGNIZER_H +#define SWIFTPR_CNNRECOGNIZER_H + +#include "Recognizer.h" +namespace pr{ + class CNNRecognizer: public GeneralRecognizer{ + public: + const int CHAR_INPUT_W = 14; + const int CHAR_INPUT_H = 30; + + CNNRecognizer(std::string prototxt,std::string caffemodel); + label recognizeCharacter(cv::Mat character); + private: + cv::dnn::Net net; + + }; + +} + +#endif //SWIFTPR_CNNRECOGNIZER_H diff --git a/Prj-IOS/include/FastDeskew.h b/Prj-IOS/include/FastDeskew.h new file mode 100755 index 0000000..08359e5 --- /dev/null +++ b/Prj-IOS/include/FastDeskew.h @@ -0,0 +1,18 @@ +// +// Created by 庾金科 on 22/09/2017. +// + +#ifndef SWIFTPR_FASTDESKEW_H +#define SWIFTPR_FASTDESKEW_H + +#include +#include +namespace pr{ + + cv::Mat fastdeskew(cv::Mat skewImage,int blockSize); +// cv::Mat spatialTransformer(cv::Mat skewImage); + +}//namepace pr + + +#endif //SWIFTPR_FASTDESKEW_H diff --git a/Prj-IOS/include/FineMapping.h b/Prj-IOS/include/FineMapping.h new file mode 100755 index 0000000..352202e --- /dev/null +++ b/Prj-IOS/include/FineMapping.h @@ -0,0 +1,32 @@ +// +// Created by 庾金科 on 22/09/2017. +// + +#ifndef SWIFTPR_FINEMAPPING_H +#define SWIFTPR_FINEMAPPING_H + +#include +#include + +#include +namespace pr{ + class FineMapping{ + public: + FineMapping(); + + + FineMapping(std::string prototxt,std::string caffemodel); + static cv::Mat FineMappingVertical(cv::Mat InputProposal,int sliceNum=15,int upper=0,int lower=-50,int windows_size=17); + cv::Mat FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding); + + + private: + cv::dnn::Net net; + + }; + + + + +} +#endif //SWIFTPR_FINEMAPPING_H diff --git a/Prj-IOS/include/Pipeline.h b/Prj-IOS/include/Pipeline.h new file mode 100755 index 0000000..03d1604 --- /dev/null +++ b/Prj-IOS/include/Pipeline.h @@ -0,0 +1,48 @@ +// +// Created by 庾金科 on 22/10/2017. +// + +#ifndef SWIFTPR_PIPLINE_H +#define SWIFTPR_PIPLINE_H + +#include "PlateDetection.h" +#include "PlateSegmentation.h" +#include "CNNRecognizer.h" +#include "PlateInfo.h" +#include "FastDeskew.h" +#include "FineMapping.h" +#include "Recognizer.h" + +namespace pr{ + class PipelinePR{ + public: + GeneralRecognizer *generalRecognizer; + PlateDetection *plateDetection; + PlateSegmentation *plateSegmentation; + FineMapping *fineMapping; + + + + PipelinePR(std::string detector_filename, + std::string finemapping_prototxt,std::string finemapping_caffemodel, + std::string segmentation_prototxt,std::string segmentation_caffemodel, + std::string charRecognization_proto,std::string charRecognization_caffemodel + ); + ~PipelinePR(); + + + + std::vector plateRes; + std::vector RunPiplineAsImage(cv::Mat plateImage); + + + + + + + + }; + + +} +#endif //SWIFTPR_PIPLINE_H diff --git a/Prj-IOS/include/PlateDetection.h b/Prj-IOS/include/PlateDetection.h new file mode 100755 index 0000000..71ad9af --- /dev/null +++ b/Prj-IOS/include/PlateDetection.h @@ -0,0 +1,33 @@ +// +// Created by 庾金科 on 20/09/2017. +// + +#ifndef SWIFTPR_PLATEDETECTION_H +#define SWIFTPR_PLATEDETECTION_H + +#include +#include +#include +namespace pr{ + class PlateDetection{ + public: + PlateDetection(std::string filename_cascade); + PlateDetection(); + void LoadModel(std::string filename_cascade); + void plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w=36,int max_w=800); +// std::vector plateDetectionRough(cv::Mat InputImage,int min_w= 60,int max_h = 400); + + +// std::vector plateDetectionRoughByMultiScaleEdge(cv::Mat InputImage); + + + + private: + cv::CascadeClassifier cascade; + + + }; + +}// namespace pr + +#endif //SWIFTPR_PLATEDETECTION_H diff --git a/Prj-IOS/include/PlateInfo.h b/Prj-IOS/include/PlateInfo.h new file mode 100755 index 0000000..ee1e5da --- /dev/null +++ b/Prj-IOS/include/PlateInfo.h @@ -0,0 +1,127 @@ +// +// Created by 庾金科 on 20/09/2017. +// + +#ifndef SWIFTPR_PLATEINFO_H +#define SWIFTPR_PLATEINFO_H +#include +namespace pr { + + typedef std::vector Character; + + enum PlateColor { BLUE, YELLOW, WHITE, GREEN, BLACK,UNKNOWN}; + enum CharType {CHINESE,LETTER,LETTER_NUMS}; + + + class PlateInfo { + public: + std::vector> plateChars; + std::vector> plateCoding; + + float confidence = 0; + + + PlateInfo(const cv::Mat &plateData, std::string plateName, cv::Rect plateRect, PlateColor plateType) { + licensePlate = plateData; + name = plateName; + ROI = plateRect; + Type = plateType; + } + PlateInfo(const cv::Mat &plateData, cv::Rect plateRect, PlateColor plateType) { + licensePlate = plateData; + ROI = plateRect; + Type = plateType; + } + PlateInfo(const cv::Mat &plateData, cv::Rect plateRect) { + licensePlate = plateData; + ROI = plateRect; + } + PlateInfo() { + + } + + cv::Mat getPlateImage() { + return licensePlate; + } + + void setPlateImage(cv::Mat plateImage){ + licensePlate = plateImage; + } + + cv::Rect getPlateRect() { + return ROI; + } + + void setPlateRect(cv::Rect plateRect) { + ROI = plateRect; + } + cv::String getPlateName() { + return name; + + } + void setPlateName(cv::String plateName) { + name = plateName; + } + int getPlateType() { + return Type; + } + + void appendPlateChar(const std::pair &plateChar) + { + plateChars.push_back(plateChar); + } + + void appendPlateCoding(const std::pair &charProb){ + plateCoding.push_back(charProb); + } + + // cv::Mat getPlateChars(int id) { + // if(id mappingTable) { + std::string decode; + for(auto plate:plateCoding) { + float *prob = (float *)plate.second.data; + if(plate.first == CHINESE) { + + decode += mappingTable[std::max_element(prob,prob+31) - prob]; + confidence+=*std::max_element(prob,prob+31); + + +// std::cout<<*std::max_element(prob,prob+31)< +#include "PlateInfo.h" + +namespace pr{ + + + class PlateSegmentation{ + public: + const int PLATE_NORMAL = 6; + const int PLATE_NORMAL_GREEN = 7; + const int DEFAULT_WIDTH = 20; + PlateSegmentation(std::string phototxt,std::string caffemodel); + PlateSegmentation(){} + void segmentPlatePipline(PlateInfo &plateInfo,int stride,std::vector &Char_rects); + + void segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones); + void templateMatchFinding(const cv::Mat &respones,int windowsWidth,std::pair> &candidatePts); + void refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects); + void ExtractRegions(PlateInfo &plateInfo,std::vector &rects); + cv::Mat classifyResponse(const cv::Mat &cropped); + private: + cv::dnn::Net net; + + +// RefineRegion() + + }; + +}//namespace pr + +#endif //SWIFTPR_PLATESEGMENTATION_H diff --git a/Prj-IOS/include/Recognizer.h b/Prj-IOS/include/Recognizer.h new file mode 100755 index 0000000..809b717 --- /dev/null +++ b/Prj-IOS/include/Recognizer.h @@ -0,0 +1,21 @@ +// +// Created by 庾金科 on 20/10/2017. +// + + +#ifndef SWIFTPR_RECOGNIZER_H +#define SWIFTPR_RECOGNIZER_H + +#include "PlateInfo.h" +#include "opencv2/dnn.hpp" +namespace pr{ + typedef cv::Mat label; + class GeneralRecognizer{ + public: + virtual label recognizeCharacter(cv::Mat character) = 0; + void SegmentBasedSequenceRecognition(PlateInfo &plateinfo); + + }; + +} +#endif //SWIFTPR_RECOGNIZER_H diff --git a/Prj-IOS/include/niBlackThreshold.h b/Prj-IOS/include/niBlackThreshold.h new file mode 100755 index 0000000..5ad7e14 --- /dev/null +++ b/Prj-IOS/include/niBlackThreshold.h @@ -0,0 +1,107 @@ +// +// Created by 庾金科 on 26/10/2017. +// + +#ifndef SWIFTPR_NIBLACKTHRESHOLD_H +#define SWIFTPR_NIBLACKTHRESHOLD_H + + +#include +using namespace cv; + +enum LocalBinarizationMethods{ + BINARIZATION_NIBLACK = 0, //!< Classic Niblack binarization. See @cite Niblack1985 . + BINARIZATION_SAUVOLA = 1, //!< Sauvola's technique. See @cite Sauvola1997 . + BINARIZATION_WOLF = 2, //!< Wolf's technique. See @cite Wolf2004 . + BINARIZATION_NICK = 3 //!< NICK technique. See @cite Khurshid2009 . +}; + + +void niBlackThreshold( InputArray _src, OutputArray _dst, double maxValue, + int type, int blockSize, double k, int binarizationMethod ) +{ + // Input grayscale image + Mat src = _src.getMat(); + CV_Assert(src.channels() == 1); + CV_Assert(blockSize % 2 == 1 && blockSize > 1); + if (binarizationMethod == BINARIZATION_SAUVOLA) { + CV_Assert(src.depth() == CV_8U); + } + type &= THRESH_MASK; + // Compute local threshold (T = mean + k * stddev) + // using mean and standard deviation in the neighborhood of each pixel + // (intermediate calculations are done with floating-point precision) + Mat test; + Mat thresh; + { + // note that: Var[X] = E[X^2] - E[X]^2 + Mat mean, sqmean, variance, stddev, sqrtVarianceMeanSum; + double srcMin, stddevMax; + boxFilter(src, mean, CV_32F, Size(blockSize, blockSize), + Point(-1,-1), true, BORDER_REPLICATE); + sqrBoxFilter(src, sqmean, CV_32F, Size(blockSize, blockSize), + Point(-1,-1), true, BORDER_REPLICATE); + variance = sqmean - mean.mul(mean); + sqrt(variance, stddev); + switch (binarizationMethod) + { + case BINARIZATION_NIBLACK: + thresh = mean + stddev * static_cast(k); + + break; + case BINARIZATION_SAUVOLA: + thresh = mean.mul(1. + static_cast(k) * (stddev / 128.0 - 1.)); + break; + case BINARIZATION_WOLF: + minMaxIdx(src, &srcMin,NULL); + minMaxIdx(stddev, NULL, &stddevMax); + thresh = mean - static_cast(k) * (mean - srcMin - stddev.mul(mean - srcMin) / stddevMax); + break; + case BINARIZATION_NICK: + sqrt(variance + sqmean, sqrtVarianceMeanSum); + thresh = mean + static_cast(k) * sqrtVarianceMeanSum; + break; + default: + CV_Error( CV_StsBadArg, "Unknown binarization method" ); + break; + } + thresh.convertTo(thresh, src.depth()); + + thresh.convertTo(test, src.depth()); +// +// cv::imshow("imagex",test); +// cv::waitKey(0); + + } + // Prepare output image + _dst.create(src.size(), src.type()); + Mat dst = _dst.getMat(); + CV_Assert(src.data != dst.data); // no inplace processing + // Apply thresholding: ( pixel > threshold ) ? foreground : background + Mat mask; + switch (type) + { + case THRESH_BINARY: // dst = (src > thresh) ? maxval : 0 + case THRESH_BINARY_INV: // dst = (src > thresh) ? 0 : maxval + compare(src, thresh, mask, (type == THRESH_BINARY ? CMP_GT : CMP_LE)); + dst.setTo(0); + dst.setTo(maxValue, mask); + break; + case THRESH_TRUNC: // dst = (src > thresh) ? thresh : src + compare(src, thresh, mask, CMP_GT); + src.copyTo(dst); + thresh.copyTo(dst, mask); + break; + case THRESH_TOZERO: // dst = (src > thresh) ? src : 0 + case THRESH_TOZERO_INV: // dst = (src > thresh) ? 0 : src + compare(src, thresh, mask, (type == THRESH_TOZERO ? CMP_GT : CMP_LE)); + dst.setTo(0); + src.copyTo(dst, mask); + break; + default: + CV_Error( CV_StsBadArg, "Unknown threshold type" ); + break; + } +} + +#endif //SWIFTPR_NIBLACKTHRESHOLD_H diff --git a/Prj-IOS/lp.xcodeproj/project.pbxproj b/Prj-IOS/lp.xcodeproj/project.pbxproj new file mode 100644 index 0000000..4794627 --- /dev/null +++ b/Prj-IOS/lp.xcodeproj/project.pbxproj @@ -0,0 +1,435 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 18034F491FD28DF500787983 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 18034F481FD28DF500787983 /* AppDelegate.m */; }; + 18034F4C1FD28DF500787983 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 18034F4B1FD28DF500787983 /* ViewController.mm */; }; + 18034F4F1FD28DF500787983 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 18034F4D1FD28DF500787983 /* Main.storyboard */; }; + 18034F511FD28DF500787983 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 18034F501FD28DF500787983 /* Assets.xcassets */; }; + 18034F541FD28DF500787983 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 18034F521FD28DF500787983 /* LaunchScreen.storyboard */; }; + 18034F571FD28DF500787983 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 18034F561FD28DF500787983 /* main.m */; }; + 18034F5E1FD299EE00787983 /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18034F5D1FD299EE00787983 /* opencv2.framework */; }; + 1820B1D81FD300D3003CFE6C /* UIImageCVMatConverter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1820B1D71FD300D3003CFE6C /* UIImageCVMatConverter.mm */; }; + 18CEE3D51FD5AA8300CC138A /* CNNRecognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3D41FD5AA8300CC138A /* CNNRecognizer.cpp */; }; + 18CEE3DC1FD5AA9600CC138A /* FastDeskew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3D61FD5AA9500CC138A /* FastDeskew.cpp */; }; + 18CEE3DD1FD5AA9600CC138A /* PlateSegmentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3D71FD5AA9600CC138A /* PlateSegmentation.cpp */; }; + 18CEE3DE1FD5AA9600CC138A /* Recognizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3D81FD5AA9600CC138A /* Recognizer.cpp */; }; + 18CEE3DF1FD5AA9600CC138A /* FineMapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3D91FD5AA9600CC138A /* FineMapping.cpp */; }; + 18CEE3E01FD5AA9600CC138A /* Pipeline.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3DA1FD5AA9600CC138A /* Pipeline.cpp */; }; + 18CEE3E11FD5AA9600CC138A /* PlateDetection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18CEE3DB1FD5AA9600CC138A /* PlateDetection.cpp */; }; + 18CEE3EE1FD5ACFA00CC138A /* model.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 18CEE3ED1FD5ACFA00CC138A /* model.bundle */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 18034F441FD28DF500787983 /* lp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 18034F471FD28DF500787983 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 18034F481FD28DF500787983 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 18034F4A1FD28DF500787983 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 18034F4B1FD28DF500787983 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = ""; }; + 18034F4E1FD28DF500787983 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 18034F501FD28DF500787983 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 18034F531FD28DF500787983 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 18034F551FD28DF500787983 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 18034F561FD28DF500787983 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 18034F5D1FD299EE00787983 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = opencv2.framework; sourceTree = ""; }; + 1820B1D61FD300D3003CFE6C /* UIImageCVMatConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIImageCVMatConverter.h; sourceTree = ""; }; + 1820B1D71FD300D3003CFE6C /* UIImageCVMatConverter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIImageCVMatConverter.mm; sourceTree = ""; }; + 18CEE3D41FD5AA8300CC138A /* CNNRecognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CNNRecognizer.cpp; path = src/CNNRecognizer.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3D61FD5AA9500CC138A /* FastDeskew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FastDeskew.cpp; path = src/FastDeskew.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3D71FD5AA9600CC138A /* PlateSegmentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlateSegmentation.cpp; path = src/PlateSegmentation.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3D81FD5AA9600CC138A /* Recognizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Recognizer.cpp; path = src/Recognizer.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3D91FD5AA9600CC138A /* FineMapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FineMapping.cpp; path = src/FineMapping.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3DA1FD5AA9600CC138A /* Pipeline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Pipeline.cpp; path = src/Pipeline.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3DB1FD5AA9600CC138A /* PlateDetection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlateDetection.cpp; path = src/PlateDetection.cpp; sourceTree = SOURCE_ROOT; }; + 18CEE3E21FD5AAE900CC138A /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = src/util.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E41FD5AB3800CC138A /* FastDeskew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FastDeskew.h; path = include/FastDeskew.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E51FD5AB3800CC138A /* PlateDetection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlateDetection.h; path = include/PlateDetection.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E61FD5AB3800CC138A /* niBlackThreshold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = niBlackThreshold.h; path = include/niBlackThreshold.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E71FD5AB3800CC138A /* Pipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Pipeline.h; path = include/Pipeline.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E81FD5AB3800CC138A /* PlateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlateInfo.h; path = include/PlateInfo.h; sourceTree = SOURCE_ROOT; }; + 18CEE3E91FD5AB3800CC138A /* PlateSegmentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlateSegmentation.h; path = include/PlateSegmentation.h; sourceTree = SOURCE_ROOT; }; + 18CEE3EA1FD5AB3800CC138A /* CNNRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CNNRecognizer.h; path = include/CNNRecognizer.h; sourceTree = SOURCE_ROOT; }; + 18CEE3EB1FD5AB3800CC138A /* FineMapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FineMapping.h; path = include/FineMapping.h; sourceTree = SOURCE_ROOT; }; + 18CEE3EC1FD5AB3900CC138A /* Recognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Recognizer.h; path = include/Recognizer.h; sourceTree = SOURCE_ROOT; }; + 18CEE3ED1FD5ACFA00CC138A /* model.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = model.bundle; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 18034F411FD28DF500787983 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 18034F5E1FD299EE00787983 /* opencv2.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 18034F3B1FD28DF500787983 = { + isa = PBXGroup; + children = ( + 18CEE3ED1FD5ACFA00CC138A /* model.bundle */, + 18CEE3E31FD5AB2600CC138A /* include */, + 18CEE3D31FD5AA5C00CC138A /* src */, + 18034F5D1FD299EE00787983 /* opencv2.framework */, + 18034F461FD28DF500787983 /* lp */, + 18034F451FD28DF500787983 /* Products */, + 1820B1D01FD2F9EB003CFE6C /* Frameworks */, + ); + sourceTree = ""; + }; + 18034F451FD28DF500787983 /* Products */ = { + isa = PBXGroup; + children = ( + 18034F441FD28DF500787983 /* lp.app */, + ); + name = Products; + sourceTree = ""; + }; + 18034F461FD28DF500787983 /* lp */ = { + isa = PBXGroup; + children = ( + 1820B1D61FD300D3003CFE6C /* UIImageCVMatConverter.h */, + 1820B1D71FD300D3003CFE6C /* UIImageCVMatConverter.mm */, + 18034F471FD28DF500787983 /* AppDelegate.h */, + 18034F481FD28DF500787983 /* AppDelegate.m */, + 18034F4A1FD28DF500787983 /* ViewController.h */, + 18034F4B1FD28DF500787983 /* ViewController.mm */, + 18034F4D1FD28DF500787983 /* Main.storyboard */, + 18034F501FD28DF500787983 /* Assets.xcassets */, + 18034F521FD28DF500787983 /* LaunchScreen.storyboard */, + 18034F551FD28DF500787983 /* Info.plist */, + 18034F561FD28DF500787983 /* main.m */, + ); + path = lp; + sourceTree = ""; + }; + 1820B1D01FD2F9EB003CFE6C /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 18CEE3D31FD5AA5C00CC138A /* src */ = { + isa = PBXGroup; + children = ( + 18CEE3E21FD5AAE900CC138A /* util.h */, + 18CEE3D61FD5AA9500CC138A /* FastDeskew.cpp */, + 18CEE3D91FD5AA9600CC138A /* FineMapping.cpp */, + 18CEE3DA1FD5AA9600CC138A /* Pipeline.cpp */, + 18CEE3DB1FD5AA9600CC138A /* PlateDetection.cpp */, + 18CEE3D71FD5AA9600CC138A /* PlateSegmentation.cpp */, + 18CEE3D81FD5AA9600CC138A /* Recognizer.cpp */, + 18CEE3D41FD5AA8300CC138A /* CNNRecognizer.cpp */, + ); + name = src; + path = "New Group"; + sourceTree = ""; + }; + 18CEE3E31FD5AB2600CC138A /* include */ = { + isa = PBXGroup; + children = ( + 18CEE3EA1FD5AB3800CC138A /* CNNRecognizer.h */, + 18CEE3E41FD5AB3800CC138A /* FastDeskew.h */, + 18CEE3EB1FD5AB3800CC138A /* FineMapping.h */, + 18CEE3E61FD5AB3800CC138A /* niBlackThreshold.h */, + 18CEE3E71FD5AB3800CC138A /* Pipeline.h */, + 18CEE3E51FD5AB3800CC138A /* PlateDetection.h */, + 18CEE3E81FD5AB3800CC138A /* PlateInfo.h */, + 18CEE3E91FD5AB3800CC138A /* PlateSegmentation.h */, + 18CEE3EC1FD5AB3900CC138A /* Recognizer.h */, + ); + name = include; + path = "New Group1"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 18034F431FD28DF500787983 /* lp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 18034F5A1FD28DF500787983 /* Build configuration list for PBXNativeTarget "lp" */; + buildPhases = ( + 18034F401FD28DF500787983 /* Sources */, + 18034F411FD28DF500787983 /* Frameworks */, + 18034F421FD28DF500787983 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = lp; + productName = lp; + productReference = 18034F441FD28DF500787983 /* lp.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 18034F3C1FD28DF500787983 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0910; + ORGANIZATIONNAME = xiaojun; + TargetAttributes = { + 18034F431FD28DF500787983 = { + CreatedOnToolsVersion = 9.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 18034F3F1FD28DF500787983 /* Build configuration list for PBXProject "lp" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 18034F3B1FD28DF500787983; + productRefGroup = 18034F451FD28DF500787983 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 18034F431FD28DF500787983 /* lp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 18034F421FD28DF500787983 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 18034F541FD28DF500787983 /* LaunchScreen.storyboard in Resources */, + 18CEE3EE1FD5ACFA00CC138A /* model.bundle in Resources */, + 18034F511FD28DF500787983 /* Assets.xcassets in Resources */, + 18034F4F1FD28DF500787983 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 18034F401FD28DF500787983 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 18CEE3DF1FD5AA9600CC138A /* FineMapping.cpp in Sources */, + 1820B1D81FD300D3003CFE6C /* UIImageCVMatConverter.mm in Sources */, + 18034F4C1FD28DF500787983 /* ViewController.mm in Sources */, + 18CEE3DD1FD5AA9600CC138A /* PlateSegmentation.cpp in Sources */, + 18CEE3DC1FD5AA9600CC138A /* FastDeskew.cpp in Sources */, + 18CEE3D51FD5AA8300CC138A /* CNNRecognizer.cpp in Sources */, + 18034F571FD28DF500787983 /* main.m in Sources */, + 18CEE3E11FD5AA9600CC138A /* PlateDetection.cpp in Sources */, + 18CEE3E01FD5AA9600CC138A /* Pipeline.cpp in Sources */, + 18034F491FD28DF500787983 /* AppDelegate.m in Sources */, + 18CEE3DE1FD5AA9600CC138A /* Recognizer.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 18034F4D1FD28DF500787983 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 18034F4E1FD28DF500787983 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 18034F521FD28DF500787983 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 18034F531FD28DF500787983 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 18034F581FD28DF500787983 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_INPUT_FILETYPE = automatic; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + "HEADER_SEARCH_PATHS[arch=*]" = ( + "\"$(SRCROOT)/include/\"", + "\"$(SRCROOT)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 18034F591FD28DF500787983 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_INPUT_FILETYPE = automatic; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + "HEADER_SEARCH_PATHS[arch=*]" = ( + "\"$(SRCROOT)/include/\"", + "\"$(SRCROOT)\"", + ); + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 18034F5B1FD28DF500787983 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = V74HML5NEB; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + INFOPLIST_FILE = lp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = tjs.lp; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 18034F5C1FD28DF500787983 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = V74HML5NEB; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + INFOPLIST_FILE = lp/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = tjs.lp; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 18034F3F1FD28DF500787983 /* Build configuration list for PBXProject "lp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 18034F581FD28DF500787983 /* Debug */, + 18034F591FD28DF500787983 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 18034F5A1FD28DF500787983 /* Build configuration list for PBXNativeTarget "lp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 18034F5B1FD28DF500787983 /* Debug */, + 18034F5C1FD28DF500787983 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 18034F3C1FD28DF500787983 /* Project object */; +} diff --git a/Prj-IOS/lp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Prj-IOS/lp.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..a62b002 --- /dev/null +++ b/Prj-IOS/lp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Prj-IOS/lp.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate b/Prj-IOS/lp.xcodeproj/project.xcworkspace/xcuserdata/apple.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..a4cab0e6d7d70ee6caedad261c57d554fe3167e9 GIT binary patch literal 115605 zcmeEvcX$)W^Y`tpq|@n6%~hhBP69S=xFj@LlCgptmTWK(6k`i8xW$qQ5R%-c7t(tV zkU%Am;f`#XE5Q?U#N@_l~)yuf4obejF_?9A@$>}*@o)6pJ|dThWvHewUbz?nD; zJMknu8Rz0WJO$_D0$hko@P2rIJQKU|Y&-{7<9ghL=i&Ky32w!0IE0ttWq2h%6tBaF z;luF}SjH3|O}3Fc$UWqK@(_8HJVBl&&yg3&%j7lkCV7XvPd*}_k}t^DO`GIXV+!uvUNjr!*w~jF}m@(eRPv`Q*?#8sk$=V{<;}Dm(HV`tvf(h zqpR2Xbxpcv-6CC3w?r4xE!VBob?FY)MRbSg*6I$^$-1L-$Ldbdt=FBZJ41K2?mXRv zx=VB$beHS4=&sgXr@KLSv+h>i9lE=9_vs$gJ)(PD_mu8g-3z+yx>t2?=-$@7r~6R% ziSBdVSGsR?Kj?ne{igd<_m3Xwb$VWJ(wp@*eY!qN@6->|kJOLWkJC@oPtxb<3-rbM zQvH7V>H1lEx4u&E(^u>3^bPt({e1mG{bGHKzD>VOze3-s@6m_#tMqI1>-0zHkJKNd zKVE;5{uKS``m^-s>Mzh=tiMdZNxxZtmHt}&R{c%-ZTj2wcj@odKcIhD|Cs(s{WJRK z^)KmP(Z8;LOaHF^1O3PP&-7pFztMlM|4IL={tx}%2F^eX27_Rb3|2#$A=BV63^j}} zj53ThOfc+g$Tj2}iVP)&a>F#kOhbjiYp62JG1MC78UluSh6RQL4F?%o4NDE}h7Low zq1Vu7SZz4eaJYdQjy4=;IMHyj;WWdUhI0((8!j?jYS?JF!f>VG8pHL58x6M@ZZq6z zxW{n6;UUALh9?Y98=f<~Xn5K1n&C~uJBIfS9~nM1d|~+7@SWjD!!L&44SyN_VuTZ|#&QsWBaN@KUN#~3m88P^!s8V@%f zVLZxswDEZ33C5F+rx?#Lo@qSSc%Jbh(mAx%gZGK5SaOBf-H6mo<@p-3nerV1rOsZb`A3ofBTa0`t>lQ2)1FEk4agoVN) z;Xq-r5EKp)T7-6Cg|JdMOgLOPLXZV294Q*LikenO88p%M)+3vPWT?3 zDEuJ&A^a))WwMy8CY#A_N;9RKGEAAK;ieI$k){Gup{dAJY?^8+F_oIiOtVZbQ-vvD zYBV*O=9%W3noSE#3r(%2HdDxSh-tNHjcKjvP}4foVWz`PN0^Q?9dA0pbfW1Z)5WGs zOqZH2Gi@+!G;K0nW4hLKo#{T){iX*@51Jk_J#2c!^r-1s({rZhO)r=}G<{_H*z}3% zQ`2Xr&rM&LelY!L`bjj1yl4~!(IkqZB$~xcF-y!A_YwCMCyA5ATrp3aBIb()Vxd?h z?k`Rgr;BxBy*O8F5dC66Y!sWsd16pJNNf?qVnpl{SBZy+tHm|qTJcbEop`i(jCibg zo_M}^fq0>Kk$ACqiFm1anYcmRC|)gIBVH@sE8ZvGFFqhXC_W@UEIuMWBR(rWC%!L! zAbu!*Bz`P@B7Q1ZE#UuGAp;rGT_ZI#60H^+*Rxy;4|;NPW^O=@97%NtUQ| zrgWBcwsekku5_MszI1`KQQ9P3E?psABV8+9Cp{oNC_N-SEIlGUDm^AWEgV(GK2vaGWlW;x1owB;DfNtRPBr&-RiTx7Z0 za*gF$%XOCPEn6+yEO%M%wmfQi%<{P93Coj~=Pj>T-m<)B`Ofmam=)BYreJEI@MZkoo=0BooRJjJyx%^(t41!#k$1W zYHhQItV^xStjn$K))m&3)-LP8*0A+h>lxNFt!G)!ww`0X(0Y~iYU@_(E!J(;Tdnt4 zpRhh-eaX7r`m*&E>+9B!t)E-JwSH&)-ujb`v*~Omn`o14R@+e9NZUBuc-sWqzP1wE z{x+Ab!d7XUZL75{ur0PNv9;RTY|Ct6+ab0?ZR>1@*<{;#+iAA5Y-iifv7K+b!giJI zI@|TOt+tzN_u3w^J!yN&_MGi`+pD$@ZJ*k{w0&j!+V-98FFR+~+4XjVU9e}`o%Z4O z5%!Vx(e^xhp}oXjYA>_zZ=Y?iwl~=Q_IdXC_Mm;Gz1tqPN9=v})%K(9$J^K2Pqv?8 zKiz(@eS`f9`)2zV`_=Ya?RVPmwclsI-~N#OIs10|8}>Kt@7mw9e`^2H{;T~@`(O6I z)3`J#&6bvtmYJ57=1d!xwoh7aT3*_ew8FF*X%%UeX|vO+(&nViOIwt-B&{`VS=#cn z?zBVGjz~Ky?dY^)(vD9%EA70ri_$JmyCiKx+I49+rfo~RHSM;vJJTLbdou0WwCB>E zPkSlt-L#L=zDWBr?Yp$^(|%1S>3q7BZcewP+tY`qk4m4AJ~4ft^vUUE>C@6@rMuEA z(!J?()0@%{OkbSdn%we~^e@uCN&g}J$Mm1lf6X8ne1@1IWtcN;8N)JiGR9_% z%NU=rPsY@Y@{E}ovoc&6o{aj8K*oZMg&B)7f*C6_x-G-wF3q?mV{69E8MkC?%eXz`;f%*Kp3ZnCb693h=BUhxnZ=o9nbR_-XU@oUW!7ZQ&1}qU%AA+EAaiNvip;Le z?#!OdaOM%2M`a$Dd3@#xnd>vp%e**qQ|9HFS7lzEd1K~1nGa+>lKE)nW0_B8zLNPy z<~y11X1G|U*7&T+S-Dw-Sw&gW-ZHFp4Fb!k+nK&U6!0hvyRLyfM%vR=-5J?o9EH?!W!`XcL_tRJ#|%=#(o*KCr_XN%cVwmI9DJuG`v z_Jr(-*?HMhvJ10kWV^F{*#~6TW!GmnWiQEIn!O@>Wp+n)clM##M`RzBeRTFQ*~e#} zm3?0JMcEf;Uy{8c`?~Dwvv1D6Bm2(m2eKc`ek}W?>{qkj%6>chz3lh1Kgj+j`-kjb zvwzF}GyAXXzq9|z{?}o22o94&bVv@f!{W$tWIG&=5stBrJjWDAzGFYf{*GymO2=$R zm80G<*U{iu;aKVDaCADl9Nmr{$H9(XN7xZ@taTjfkR2yFPI9bwoZ~pxah~H6$EA)d z9Ge|CIBs;@!o8t+`la8kxPdlD*JnMMQ@x0>&$GeXA9Pc|maD3?a$nmk`OUGA^ z?;Jlles=ug_`~s!<6kG|)H(G|v(w_VI&Dse)9D=J9P1qC9PixMIn6oUIm0>AIm_vC zRyf^GkF&w)cLtn|&L-zP=X~d4XRC9iv%}fx>~cn&ea=>@nxOVW4rn~I$q)g z&cunF#96ttdA0t$m7z7^1@JdI!fYDb+R+jYZ{*CJMaDAO$k{l%tfM-;ygq2l@OixR zx_eiKds2*2@I7&n|7!Hwi{WW8*VdD$onvPl+YNjA%ttGUtK7;Y># zjvLQS;3jhWaQkwTWUFkWRpNZ8dH zXI?yZ`mv#}%M%Jm z+PhjJFbWUah9?13_O^6}{OxN)QH-E1zq%zHad&t2bc7(odNz0uM?gXi{i<`We+mG9yo5oG&W^glQyPPJc%NcT}oVA&AaTT1K^Kf3S zQqGox@@k4crI@4G!DKmMertDIC=V1rr#+IFoK0SJ_cATZpl$ycrN6tcw>9MM?uztw zcQpF?r(!jzy=$4fyJt;2b*Y+K`CU}s+s)z~{=Ob2rT*!YXo9wA$|#4vu1KhNDOAsj zzV?o`P;dXleo+0ICEYE(P$8U&oix?v-lMqU1qaZmcu|l)FB(tR>tR*2>uy z(qvu7E#xL&!_{+hxdzV91-M48iJQmG=bE_%vO^v!50^*EqvSF2IC+A+k331vy@p%F z9mp-_g4{t|3%7)8<=VIqw^W`Ym&w!RS+ZBIlIO^Ea)UfyUMQEo#I-}~UBRv7I=D{O zewRS4S_pr8Lmf~{SA}Fw9wIw~w!+o9tC{9j0EiNc7 z$t^1>F3l|}$#;8;iYg1s-32dlJ>0=uFBe{*8i6jT-}BYSP`I(y54CC|d>xrz>#tMd zQHji~Rx%!znsI@vurR-*Jh#$aIyJYrq|lvP;VLN1omx^^p}%*-xM6LJKtMU=qb(3 zFRCcbEv_hW<(5}?T~Og%spz3(N6}iP8S0$*t z%#~YGTu@q(?*-o6g^4&Z{V(y^EYtU$OX&{IyJ+qS*+^rR;5=6zo_)5Te%xIa5u<>a>>ikK5yo3 z;kI$Na<@S{y@TuI?rM&-cS29n(%BQV*+Q#(TDsZ-VBf>7z3n}bg>BKE6dG7FbOWK) z^(~R*@>H2K%1#+-(LLO~0D2#HKleb;X0P@8G@9yA*RsfRfJ}JT)Y8!xvLTy6E>;`# zL)^n)AYy4Ya*uG4#1|^nW8C9GTNW6^1e>mvaTE6h_aq0s)egQ7+R{Buf&P+Fai8X% z0W-yVvo#yJr@4sw_Brl(NL1^u>5H^1=?Hn+p_lINYUy3GiF=NFfr~7v^~c|7YI%u! znW<&FT)u&OMc!{$)ba*X%bW841F2;-_kk+oVe+&j8OyPX@Co->tRj3a&yY)1Wq-v` zzm{hXgnAfvmx?-qX-;*ve&K#&Fu%&K4czZ?#jY^^H_PH5**#DeM z2W;jT>&S#8O<2e*S4LS!Ho!%8dG<&bj)tINF__`9PlL%}Fr(xH27+0y z!HkW=?29IAf<(D;wFZ;VU<%}#fnZKYWojwM%eC=R?gypR$4faK&5W@(ORm>&-3-?w z&m9Q&9F4t+arSCZT@0pP_G>VH1{0721HoK~7OL#+D>njr=s*r4Qz*zO?Ho>dqT%-w_0esSwu>y6(*zA;> zH8y(~n+MAa24eFvt+bQlrCp2G#b6GT7ilmugQ4<)1HoK@j#o>YCohgG<3vz~C9aH< z(P`Y|jp!6~s(g^VWFtBqoguf$-APUhI#;pJEkWCHnuBtP>JGMoI|z=-l*Tal%~M)> zz=@s$-uFtF=bF;dGZPGq=58r&Wd)ee*5$r7@O|5twugG>gw{;&1ou1CJAPo&x*ld? z!i+9|d}K{eX!;TbBBAp@7b(oOg7>#u%xU_$6kWkhz5-o_HlU4Y6S`au$xG#B@^ZQT z3bYw*L06)y(ADw^d8OPTcgkJN4itdJO)6KTFTp*Ij#Lz%ADCBcc+fUw7t+-BbuJ0@ z)-7#N#uU4hODj0*9rfMec6G2bbr*7}Z0`+6Ad9#fV8F1`bWoi`mF*p%CL4_FqW^-n ziA776EGa0Q+LB)uDlcy-FKEqQvZTDUwV+^0esO+z%hIyKr7fieZTbF|*ccYwitc9O zz75@u?m%~Oj^0D&C@@X2tALt)0Z4>$v{e}LPkCTs=PuPV1 z&MJGwkHmNv$11wtlL#w)J-^> zIjI`r5ImZjyaf-%!|-rC0*}Nwc$9pGe5QPse71a!e6D=n7Hq>~@i;slPrwuLK9JM- z@&)q6@+I=6@?}h@ISHCbtTCz)gx)A27Zq0)7Zg-_3d=l|Q}gpn%Sy}3iehyz zrM`LE!>t|N5KpRwF*@th3iI;gKt-uQS|0g3{;DwbtMMy$z`Z}(SwMshGS|dagp0Y! zmqD==HyM}W@(s95zEHj>Xv<{Lo}7xluC|U)PD4mlHPkPNIN)h`I{5q1p#ap@P4H$0 z7lDWae9*9GVV8=nz3^af@{20$Q(rV4nm;)w|1gz_8t`gxt-Mh#*^cMJz-${Q;s)%; z0o>Re);d=C3i)z*6Gb2Go&_7@y6WoOXo#xQj=yjMkfe3xuI%tUbpw(h7XT@xnuazNKpm^@M1Bbz^ z;!fO!yKxUb828H8$=AzUEn)v}VRbf%d@Uw|*f7vYQXCHPW&8Qy?5;!XH+dtf&avR;lJ@e z_+P>iL@*&lNA$!%cw!_1F%gkS#7r#2N^HbV(nvbVAekhKWD^H*k|AU$8AgVa5o9FE zA*0A>GKP#L}yiHCSeC7DgCh>sjV=8$SqLuyGKsV8$u1M!mpX(UZ#9+^*?$pW&FEFuSz z#Uw}$A}wSIX(eqWM3$0eWI1UkE67UHK{`nn=_WnoVA4y%BtrVgDsl)}P1caL85lS{~@Y$Th=<>U&onQS3flB>wokuNPbv;M1E9$OnzK`LVi+yN`6{?Mt)X)PJUi~ zL4HwwN!~8MEWaYZD!(SbF25naDZeGZEx#kbE59edFMl9^D1Rh>EPo<@Dt{(_E`K3^ zDSst@Eq^0_D}N_{FaIF_DE}n?EdL_^D*q<`F8?9_DgPz^E&n6`OA$vAq6kw&DAG}+ zr^rANPmz%#fg%${B1IBKW{NBnSt+tnWTz;NqI8NfD9WTLi=u3b927Yz8bZ-fiiS}% zoT3pFjie}tqEQr$rf3XBV<{R((Rhj`P&AREeJI+OqDd4@rYM)9Jc_1JluuCsMTHa< zQB+LPREkO{Dy685qH>D%qiBDMrcpGVq8Sv;q-YjJE{ZBBa#Q4?$V*WrMYAcYqR2zVC_0s*(q6;XxkfMtyx|pI%D7uuQ%P87F z(MF0kQFJ*)S5UN>qAe6%NzqjlT}{z76kSWvbrfAs(N>CXpy)=5ZldUBif*B38%4KL zbQ?vtQ*;MKcT#j0MR!wl4@LJTN^T>!H$%)M9O(s*SiUuA8;M+O8Egcmi28a%;dSd=9*-~JtE+WY z2mPKoe#NaIcapo5Sd8XaD9Ja$>${aH48QVO%i%tTo0)>!;I0BRm5B!#Np^n{$giQU zE}#)T!idJC5H;4<*EIyZo?v~oD^OY2P!mIaoFy3AKS7hL+UE(n60?7b5l%p^a5xlU zMfUr>fndGMJttV>s`XWR{ed9FkAw9M-b&wmjh$y%qRFvD-kJ*FA)eG9^wmO&I!~iJ z5Ugmd^;CPclrKaJ63xzA>#C^s2J32r9xvqQ2{w5Bb&U;fZ>%8OS%QLCRs&E%W}qd| zk+0Sta8*|a1FqSzilXjY%70nxPR|V@DJl+P4(KlE^CsLh|nA5awoxiyzQ891t zfUK_KfJCzQ7}>Z1(5hSwOnnVrcU?`rKj`tr82FGSnHo(JjWU6Ls^__y{XtdY{&~L2 zKoAOD>v1)Bg4Mo?23LbGF1t?{#EAY76^*`XPp}CnUA2Ljpgw1`L;KUtcDsX3-UdH3 z0!=Vq4G0=lWQ8x_uJgpS{Vk)N)E|@;)mQCp0EKzH^MU`m25(RW&@%afCET}vLhpQc zb)yI5rPh&PC7=XrT{ZC%|IE@&=$~%3x7OR>3V2zagfza|*}+6Ee;Y6}U+rL-{mIhJ z>YrImmr;OVmDdIJ${(z3sH=h2;H!rArM8VEegDJI^7^B>>g%h0ZWpscLGS#47h=Hh zK3XT%J&+iVlI`gMN3i4QaA=k;SV&&dLCUVqe`v|DsI$@ zHrG_tRmW=1evEod66VeYF`Xrtkd(kzUsYG@t%Ft`uX8Gh#`!FkXk1dF8kf7yKYzzb z+ygMyw6i=aS%TzRJ3g_YDPbH z2lP=|rRv7yTgOriMRP*EU7?N~7;*P?gx0NtD&811=^AtcBOJB^Lg@M$G#^RVxHCxT zWMVaJJ|i5l1IXmwPPdTJW~1u%F1EI4-8$8q0n@>3y2j&TMl>!?u-y zTtsjjz{#3j4NWMq*VL_G_><#_pbPVR8=AaO3$=`xkL3?C4-G7S%+1tw_A3TB7HZ)& zGsE)H#MHxxN5!*Ar3_YpInc<%{jk0Bqs}h4V63Ssrd}gn#fa16*uY3_U9jF4LtDcL zvf>1+KtbrV0>0W9%{oRiK2F1g7o6t{RPETu(jCFlWX97#`vp%j7-+7K!5+y-GU6nP zpP9t{F^pnZ0!5$-lm?Y3P*+!-)CnKYC==>qol5CRB07l?CDg~5|5M}ggZhHtoO;1C zXI-Txzf)L}1o1!>P)ZLx#ME<@19cqtz+VRlBwyn~k+G!41@Sw)R7v=W3{BPI7f}wYrIsC6opV zpHQ>vlj_qpMmrAGx3sQoS*BP{=E*jLw7@-st{lu4bpJ`t+U+b!USbk=gO^n;Uu|U_ zc)>6dWyNLwFQl*V)w&vD4)9$p?U2N@&^tlP27{+`DVmV)Wpp`-bl&-1cVj>qg~t4A zjrsvbJ$wh$pr81NSobg^os>u#=Ne?s45vEog5foooY(+W_ZUk!DluV9ruB1XGms>? zKAFN&ye0JOHJ)LlNivDEl-Ts2XLLz&kJG8<1&SK=d|~X6R3BerX~!gTpOCgOP~Qkv z2Er1qSS^2LCz&N>qv%hGzQh{e>pRIz)kbuzrRnc2mLN$2YHg@-C0EvW8C_DXh?gSH zl!p2NqaL4FW>%M3djVRd-}DEoD#7b>1zcL1k6D@tiD@*usd-hEb=BZeDCR>;^chPu zIx$h4eJy#SBEMwxNo_7V&Wy%jg0O_5HsGuD#VzbNEXl~kEVLv8xMJTkV#h$liM{+! zjB0EWmC|+@r$Oj%Q|rX9EJcz)>l-Uz)Egf;r^@CJmS$pNF3g#ScBQlyEgx?!jPv2G zCegoHs-y-zuL0~5$i08t*K>??0`iC0*7zK@a*{>I)aXmp)Hi~%lkB~outekfC5kuD z0lEmifh8H!FNxMy4U|A&2}bry(BNG#PzR)!81b}z#IZ06M4cKTwgZk{LPkM2=@OF_SHHUw;-wFRoZil3up zF)GSTDz(}=16rS^AIm761K}o)YxNTt*^oFH4AZ^Ub@fVwBj9z_Xc_Oz=%C(c8LOr} z&TOJx*XJ_giE(1E3Qay1U{TE+i=sgp>%HzoYogC*sYdKPmBvmHqfJKvWg`qoEx;np zFeue}3VjJ9C`=$=&OlI!^MI*k0|js;p@Vn%VMqdLD_y?oMliry2IVaMzL0)(Bv;uZ zlLJw+b?aiiYXF+O0t4a1Kx53y)lVBZov)T<7jt)G6*ZRMOqOm`N`9)C11w^fB;g81 zJ~4&duZHwlnPTigTCGrCmTGKDs$}9she2O8Fk1>k;4t_qo0*HGjRW*^)C`)`6GGJb z937NG9Z-f1$!>rGe6vr)znYoO1+>U8gFBOKJ?rN>X0hT0Z$4S(VU!$Hk z2(`blGVZkL7wnLAR?StDq#+;3Xh-ds55>ESb*%b>7(2HL!LDHf>iqi_RG+CdkbS>6#s@haC)Q>flIhf`aw@Fr0%g?4QU)6yNy(iIJ!jxo{TWiCO~i_`#)V*n+)1_0WD zI7SULunL%2VAI8Fb3Kt^xCX~i4MAOfz*pm2pte+yuF}&cc=`I18Qhe?;aHg}A>IQa zzgVPSe;P|%wrhz4RnX&l{H{tS72qeX+cO!;E;MtcaYlo61J}B97*gS`@zYq_PzRG) z)pd3CG1;Ea((ghWS7pl-Jdk`fOkX%aD6>Dmz-1!C)ZjKqd9+ zm+n9^J4L9kZiMJ;qdy60BSRXX<_(ObMQq$j7*`Bjo@&?u+}E-U;_Xa9ZkU1&`uq^m zXFe;0hS>{EB3Ckmf)xEEBSf38%U=_m<86kZoJUK34NIP?-sI%&AnO4e!T7U!rc7mP z>91$$Cl8Xn8w?L*?Qe$uQd^;*zmcWP9VDf%RvCY36>0S2~E0;xG&m9Ixc~jQ$}8GMIV? zO!?@pWFM8SGUW~t!^+0mWN+mO29ny`2b6KW%MbGG-#t9d5K{Z4WCVW|tkHo!t}!-k zqJNI1n?8v2)b1#{wnJM?pbm=@6!9X1O0~rr3*d9QCr#3PLHGRmJ8o<*Go&3i)&Y>z zil$YG*I4=;w;L@zvpG@Cxa;d7@Z$DDmzUr~zR7TQtdEG)AVyb6z(Yb%LJf+=8rAzOpB*>S)O@1lj>gtvzNW_aM+~og zH~3D%i?Q`7gV}#KV4}qex*7v@%&=+ve8GU+I|EWT?8Es0Ic~K#iE;!pOrYfy)qc$Y zQ@iVg%9;eIDn~K33Ls3ifO8ZZBYeluX6!P1Dq13g;IC>${gGj%x~n_qED>v-*A5b>S*fd=tU`DjeoY^TN~>>e`h#zQwrD*hczfLlHe<{wJ9(% zO9-7qord*$e(2Sq9!Je_te*VE;G0w68(|yx()KR4?me`;1-3l(rVdwOO`kHq0<#+4 zDp!*aa*dB%p%e1Xjt_tM__fO`T7xRR$wNNUc=^BLtKHm&OE( zYk3KbC~hzu;XHblX~U~OC-9XTCQ=PqX3lwv9)67UG>0}vup+BwYcLRTN}NDLMR zKPN>^JBDZVP62mUd11LIETdtID8Yq;KrWlv)s$jqz^S2-T>y4fze&8UclEPn}ztf>wuGZ0MHAbv8rZVO83>w7oU;u;Qbl&eN>PV94(B853?L zEQeKGa+jM;-9uCeB%C1K;S4#|*6f0G!K3rUf=Y%QhU48cNmjrr1;$x&WY92%LHhO# zQY+^Gu;c#&r_2i*0CFD&S-EGND&F@1n3EZ%XU{O18=orADGYHB4FL0PU>y>~*s6of za1H=p$l!OUohGy;UkzKP3U*YP_ef=ZD#NbYQ(?eNKCliE8fCgFwiMY=#!&scff{R7 z(Iw+bpp|uzl^_ymu??{9ovn4$n(h89gWYKqu?$qx)!+qtTbsBT$S{LJ&fXKAwW$wS zLIQ@W3Z|N4Cf3D31A79h@~J_?)G#dSNDxje2M^0(cMNSmNoYBMmlCLBqwN^-Y=*o$ zR$>RpwcdGbhDKA}0Sq=Z>b7IMm{6NxCxbeD*Qm{&8EXDx`IVtL*l#t)0`pd}^4Bxu z-RWpz<&U;CSY_A{E4H7Z?N0SdD0b8nO;u4715F)J?2;^5zp5>RFf=ou-KnRE+(D2G zOiW!PEFaRWO{$?;#Byla&6c2gUNGc~uGoaRO-)~{s>U3{RG%!!vP<=CcPtsEyl8e> zA+)%JGVR5dhq1wMYF0~FRyDg>GR4thWl()IB_tFKz`{s~h-krvspq54! zx`T}~u>YqCW?=g{tO{*3fV1xngk)3F)RRBRZ zv1vcUAq;JIypsgQC}?aUV-56`TBz8t_P_E6o6{O&;ydiWici_!1bfRg@yQG@HCB^Q zX%gaON@aog1voS;-~cTXY$MEdCXB|88nn0yUQBGv0c-L#1RB8si^FN$9lLAX#n7sJ z9$3p21JvqDtVW-}@OC)xWTTh5S&s+lFD)^wyfF>Gbt_zxWs3&4d*e~osO$_1RL};s++&OL1<}JbsjdA z=hk-Z7%pVMJN15d1gtWu^*^pa9h+Q+ZXXuH1>zGJhD-LCb0q_9xRKgPZ}@MVC-{<# z<7Q>*2mIl9jlF#LIFB_ehyp3%QVYV%xEp*k1DwAz_a*@_2M)T-f#|IkzgJqJ0t_pN)Pbn7tIl5qThS8c_6)bO zTpIs#E-?ob26(VWhe;>qOx^Ln$pQkpZ1KB?MQ?*(^b+FBhPzo7yV~*xloea50mEIN z2W-BZEfRq4DIN_s+{ZHTD0{-$X(ugk*l&FLJ2xl38=37EhtQm>x{htBjc)6O6}3KS z^vX^Pt-d_S5UchSvDyW5cU8U`HbUB&`q)1cY`@C#s%gReSfY@TIEd#r`Tg$|k)USNnNgY%|r z<=6BI@e$bf8S5suGmO&R#9$2+V$Cs-R~bmtZi2)r7)S}?G;HlP#GT`d+QC{UY{@XZ z!SZO19o(&+;seV!;zxB4Sf^pb6D*2|)nyoXsH$c=QQVENj}R6+!P2}~QQl_ROxv?; z)QLAuJMS^1iakSu>KuUG;lbMYel5d?49~S^cmp(&PyRzelV>tMXGqicjIn;T@hb*3 zW6z-aSITc0RzaQL62-Ocgmvd8VbLIa;oKH zDpnQ>!$R-W!YXb}t>0a#v>^@A#1QAE^0h07?A!wgt3*RJtm}`yi3PrSGlOsVpTMh= zVc-w2Md}*+HilohXZVUhz$a&(Zo;||KAmBf?-}N7w-)o~vlvY6p25KEQUzPEt?sW) z8Tjx{hCM*-jA-?M zP#rvJ1J=YyKR=p*5763o9b8$a9bbsbk7I~c|E2uV*cj|#j!m@l6B(-azo4@5fHIAu z)%QvNnbGJ-!(9h!U^LV`hFY@|M*X4IzFxQ%CdGonM%u;(b}WH1d�c3UI6k;R_hF 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 E0KJVI%K!iX literal 0 HcmV?d00001 diff --git a/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..fe2b454 --- /dev/null +++ b/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,5 @@ + + + diff --git a/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist b/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..f2e0dc9 --- /dev/null +++ b/Prj-IOS/lp.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + lp.xcscheme + + orderHint + 0 + + + + diff --git a/Prj-IOS/lp/AppDelegate.h b/Prj-IOS/lp/AppDelegate.h new file mode 100644 index 0000000..bc0fbe1 --- /dev/null +++ b/Prj-IOS/lp/AppDelegate.h @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git a/Prj-IOS/lp/AppDelegate.m b/Prj-IOS/lp/AppDelegate.m new file mode 100644 index 0000000..788462c --- /dev/null +++ b/Prj-IOS/lp/AppDelegate.m @@ -0,0 +1,51 @@ +// +// AppDelegate.m +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. +} + + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. +} + + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + + +@end diff --git a/Prj-IOS/lp/Assets.xcassets/AppIcon.appiconset/Contents.json b/Prj-IOS/lp/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/Prj-IOS/lp/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Prj-IOS/lp/Base.lproj/LaunchScreen.storyboard b/Prj-IOS/lp/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f83f6fd --- /dev/null +++ b/Prj-IOS/lp/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Prj-IOS/lp/Base.lproj/Main.storyboard b/Prj-IOS/lp/Base.lproj/Main.storyboard new file mode 100644 index 0000000..bc61a87 --- /dev/null +++ b/Prj-IOS/lp/Base.lproj/Main.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Prj-IOS/lp/Info.plist b/Prj-IOS/lp/Info.plist new file mode 100644 index 0000000..16be3b6 --- /dev/null +++ b/Prj-IOS/lp/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Prj-IOS/lp/UIImageCVMatConverter.h b/Prj-IOS/lp/UIImageCVMatConverter.h new file mode 100644 index 0000000..5050603 --- /dev/null +++ b/Prj-IOS/lp/UIImageCVMatConverter.h @@ -0,0 +1,32 @@ +// +// UIImageCVMatConverter.h +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + +#ifndef UIImageCVMatConverter_h +#define UIImageCVMatConverter_h + +#ifdef __cplusplus +#import +#endif +#ifdef __OBJC__ +#import +#import +#endif +using namespace cv; + +@interface UIImageCVMatConverter : NSObject + ++ (cv::Mat)cvMatFromUIImage:(UIImage *)image; ++ (UIImage *)UIImageFromCVMat:(cv::Mat)image; ++ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image; ++ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image; ++(UIImage*) imageWithMat:(const cv::Mat&) image andImageOrientation: (UIImageOrientation) orientation; ++(UIImage*) imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation) orientation; + +@end + +#endif /* UIImageCVMatConverter_h */ diff --git a/Prj-IOS/lp/UIImageCVMatConverter.mm b/Prj-IOS/lp/UIImageCVMatConverter.mm new file mode 100644 index 0000000..bba8857 --- /dev/null +++ b/Prj-IOS/lp/UIImageCVMatConverter.mm @@ -0,0 +1,317 @@ +// +// UIImageCVMatConverter.m +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + + +#include "UIImageCVMatConverter.h" +@implementation UIImageCVMatConverter + ++(UIImage *)UIImageFromCVMat:(cv::Mat)cvMat{ + NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()]; + CGColorSpaceRef colorSpace; + + if (cvMat.elemSize() == 1) { + colorSpace = CGColorSpaceCreateDeviceGray(); + } else { + colorSpace = CGColorSpaceCreateDeviceRGB(); + } + + CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + + // Creating CGImage from cv::Mat + CGImageRef imageRef = CGImageCreate(cvMat.cols, //width + cvMat.rows, //height + 8, //bits per component + 8 * cvMat.elemSize(), //bits per pixel + cvMat.step[0], //bytesPerRow + colorSpace, //colorspace + kCGImageAlphaNone|kCGBitmapByteOrderDefault,// bitmap info + provider, //CGDataProviderRef + NULL, //decode + false, //should interpolate + kCGRenderingIntentDefault //intent + ); + + + // Getting UIImage from CGImage + UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1.0 orientation:UIImageOrientationUp]; + CGImageRelease(imageRef); + CGDataProviderRelease(provider); + CGColorSpaceRelease(colorSpace); + + return finalImage; +} +//缩放调整图片 ++ (UIImage *)scaleAndRotateImageBackCamera:(UIImage *)image +{ + static int kMaxResolution = 480; + CGImageRef imgRef = image.CGImage; + CGFloat width = CGImageGetWidth(imgRef); + CGFloat height = CGImageGetHeight(imgRef); + + CGAffineTransform transform = CGAffineTransformIdentity; + CGRect bounds = CGRectMake(0, 0, width, height); + if (width > kMaxResolution || height > kMaxResolution) { + CGFloat ratio = width/height; + if (ratio > 1) { + bounds.size.width = kMaxResolution; + bounds.size.height = bounds.size.width / ratio; + } else { + bounds.size.height = kMaxResolution; + bounds.size.width = bounds.size.height * ratio; + } + } + CGFloat scaleRatio = bounds.size.width / width; + CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); + CGFloat boundHeight; + UIImageOrientation orient = image.imageOrientation; + switch(orient) { + case UIImageOrientationUp: + transform = CGAffineTransformIdentity; + break; + case UIImageOrientationUpMirrored: + transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); + transform = CGAffineTransformScale(transform, -1.0, 1.0); + break; + case UIImageOrientationDown: + transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); + transform = CGAffineTransformRotate(transform, M_PI); + break; + case UIImageOrientationDownMirrored: + transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); + transform = CGAffineTransformScale(transform, 1.0, -1.0); + break; + case UIImageOrientationLeftMirrored: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); + transform = CGAffineTransformScale(transform, -1.0, 1.0); + transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); + break; + case UIImageOrientationLeft: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); + transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); + break; + case UIImageOrientationRightMirrored: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeScale(-1.0, 1.0); + transform = CGAffineTransformRotate(transform, M_PI / 2.0); + break; + case UIImageOrientationRight: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0); + transform = CGAffineTransformRotate(transform, M_PI / 2.0); + break; + default: + [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; + } + + UIGraphicsBeginImageContext(bounds.size); + CGContextRef context = UIGraphicsGetCurrentContext(); + if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) { + CGContextScaleCTM(context, -scaleRatio, scaleRatio); + CGContextTranslateCTM(context, -height, 0); + } else { + CGContextScaleCTM(context, scaleRatio, -scaleRatio); + CGContextTranslateCTM(context, 0, -height); + } + CGContextConcatCTM(context, transform); + CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef); + UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + NSLog(@"resize w%f,H%f",returnImage.size.width,returnImage.size.height); + return returnImage; +} + ++(UIImage*) imageWithMat:(const cv::Mat&) image andDeviceOrientation: (UIDeviceOrientation) orientation +{ + UIImageOrientation imgOrientation = UIImageOrientationUp; + + switch (orientation) + { + case UIDeviceOrientationLandscapeLeft: + imgOrientation =UIImageOrientationLeftMirrored; break; + + case UIDeviceOrientationLandscapeRight: + imgOrientation = UIImageOrientationDown; break; + + case UIDeviceOrientationPortraitUpsideDown: + imgOrientation = UIImageOrientationRightMirrored; break; + case UIDeviceOrientationFaceUp: + imgOrientation = UIImageOrientationRightMirrored; break; + + default: + case UIDeviceOrientationPortrait: + imgOrientation = UIImageOrientationRight; break; + }; + + return [UIImageCVMatConverter imageWithMat:image andImageOrientation:imgOrientation]; +} + ++(UIImage*) imageWithMat:(const cv::Mat&) image andImageOrientation: (UIImageOrientation) orientation; +{ + cv::Mat rgbaView; + + if (image.channels() == 3) + { + cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); + } + else if (image.channels() == 4) + { + cv::cvtColor(image, rgbaView, COLOR_BGR2BGRA); + } + else if (image.channels() == 1) + { + cv::cvtColor(image, rgbaView, COLOR_GRAY2RGBA); + } + + NSData *data = [NSData dataWithBytes:rgbaView.data length:rgbaView.elemSize() * rgbaView.total()]; + + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + + CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + + CGBitmapInfo bmInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big; + + // Creating CGImage from cv::Mat + CGImageRef imageRef = CGImageCreate(rgbaView.cols, //width + rgbaView.rows, //height + 8, //bits per component + 8 * rgbaView.elemSize(), //bits per pixel + rgbaView.step.p[0], //bytesPerRow + colorSpace, //colorspace + bmInfo,// bitmap info + provider, //CGDataProviderRef + NULL, //decode + false, //should interpolate + kCGRenderingIntentDefault //intent + ); + + // Getting UIImage from CGImage + UIImage *finalImage = [UIImage imageWithCGImage:imageRef scale:1 orientation:orientation]; + CGImageRelease(imageRef); + CGDataProviderRelease(provider); + CGColorSpaceRelease(colorSpace); + + return finalImage; +} + + ++ (cv::Mat)cvMatFromUIImage:(UIImage *)image +{ + CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage); + CGFloat cols = image.size.width; + CGFloat rows = image.size.height; + + cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels + + CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to data + cols, // Width of bitmap + rows, // Height of bitmap + 8, // Bits per component + cvMat.step[0], // Bytes per row + colorSpace, // Colorspace + kCGImageAlphaNoneSkipLast | + kCGBitmapByteOrderDefault); // Bitmap info flags + + CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage); + CGContextRelease(contextRef); + CGColorSpaceRelease(colorSpace); + cv::Mat cvMat3(rows, cols, CV_8UC3); // 8 bits per component, 4 channels + cv::cvtColor(cvMat, cvMat3,COLOR_RGBA2RGB); + + return cvMat3; +} ++ (UIImage *)scaleAndRotateImageFrontCamera:(UIImage *)image +{ + static int kMaxResolution = 640; + CGImageRef imgRef = image.CGImage; + CGFloat width = CGImageGetWidth(imgRef); + CGFloat height = CGImageGetHeight(imgRef); + CGAffineTransform transform = CGAffineTransformIdentity; + CGRect bounds = CGRectMake( 0, 0, width, height); + if (width > kMaxResolution || height > kMaxResolution) { + CGFloat ratio = width/height; + if (ratio > 1) { + bounds.size.width = kMaxResolution; + bounds.size.height = bounds.size.width / ratio; + } else { + bounds.size.height = kMaxResolution; + bounds.size.width = bounds.size.height * ratio; + } + } + + CGFloat scaleRatio = bounds.size.width / width; + CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef)); + CGFloat boundHeight; + UIImageOrientation orient = image.imageOrientation; + switch(orient) { + case UIImageOrientationUp: + transform = CGAffineTransformIdentity; + break; + case UIImageOrientationUpMirrored: + transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0); + transform = CGAffineTransformScale(transform, -1.0, 1.0); + break; + case UIImageOrientationDown: + transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height); + transform = CGAffineTransformRotate(transform, M_PI); + break; + case UIImageOrientationDownMirrored: + transform = CGAffineTransformMakeTranslation(0.0, imageSize.height); + transform = CGAffineTransformScale(transform, 1.0, -1.0); + break; + case UIImageOrientationLeftMirrored: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width); + transform = CGAffineTransformScale(transform, -1.0, 1.0); + transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); + break; + case UIImageOrientationLeft: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeTranslation(0.0, imageSize.width); + transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0); + break; + case UIImageOrientationRight: + case UIImageOrientationRightMirrored: + boundHeight = bounds.size.height; + bounds.size.height = bounds.size.width; + bounds.size.width = boundHeight; + transform = CGAffineTransformMakeScale(-1.0, 1.0); + transform = CGAffineTransformRotate(transform, M_PI / 2.0); + break; + default: + [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"]; + } + UIGraphicsBeginImageContext( bounds.size ); + CGContextRef context = UIGraphicsGetCurrentContext(); + if ( orient == UIImageOrientationRight || orient == UIImageOrientationLeft ) { + CGContextScaleCTM(context, -scaleRatio, scaleRatio); + CGContextTranslateCTM(context, -height, 0); + } + else { + CGContextScaleCTM(context, scaleRatio, -scaleRatio); + CGContextTranslateCTM(context, 0, -height); + } + CGContextConcatCTM( context, transform ); + CGContextDrawImage( UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef ); + UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return returnImage; +}@end diff --git a/Prj-IOS/lp/ViewController.h b/Prj-IOS/lp/ViewController.h new file mode 100644 index 0000000..cc9d871 --- /dev/null +++ b/Prj-IOS/lp/ViewController.h @@ -0,0 +1,40 @@ +// +// ViewController.h +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + +//#import + +#ifdef __cplusplus +#import + +//#import +#import +#endif + +#ifdef __OBJC__ +#import +#import +#import +#endif + +@interface ViewController : UIViewController { + + cv::Mat source_image; +} + +@property (nonatomic, retain) UILabel *textLabel; +@property (nonatomic, retain) UIImageView *imageView; +@property (nonatomic, retain) UIImageView *textView; +@property (nonatomic, retain) UIToolbar *toolbar; + +-(void)loadButtonPressed:(id)sender; +-(void)simpleRecognition:(cv::Mat&)src; +-(NSString *)getPath:(NSString *)fileName; + +@end + diff --git a/Prj-IOS/lp/ViewController.mm b/Prj-IOS/lp/ViewController.mm new file mode 100644 index 0000000..e86f993 --- /dev/null +++ b/Prj-IOS/lp/ViewController.mm @@ -0,0 +1,216 @@ +// +// ViewController.m +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + + + +#import "ViewController.h" +#import "UIImageCVMatConverter.h" + +#import "Pipeline.h" + +using namespace pr; + + +@interface ViewController () + +@end + +@implementation ViewController + +@synthesize imageView; +@synthesize textView; +@synthesize toolbar; +@synthesize textLabel; + +-(NSString *)getPath:(NSString*)fileName{ + NSString *bundlePath = [[NSBundle mainBundle].resourcePath stringByAppendingPathComponent:@"model.bundle"]; + NSString *path = [bundlePath stringByAppendingPathComponent:fileName]; + return path; +} + +-(void)simpleRecognition:(cv::Mat&)src{ + + NSString *path_1 = [self getPath:@"cascade.xml"]; + NSString *path_7 = [self getPath:@"CharacterRecognization.caffemodel"]; + NSString *path_6 = [self getPath:@"CharacterRecognization.prototxt"]; + NSString *path_3 = [self getPath:@"HorizonalFinemapping.caffemodel"]; + NSString *path_2 = [self getPath:@"HorizonalFinemapping.prototxt"]; + NSString *path_5 = [self getPath:@"Segmentation.caffemodel"]; + NSString *path_4 = [self getPath:@"Segmentation.prototxt"]; + + std::string *cpath_1 = new std::string([path_1 UTF8String]); + std::string *cpath_2 = new std::string([path_2 UTF8String]); + std::string *cpath_3 = new std::string([path_3 UTF8String]); + std::string *cpath_4 = new std::string([path_4 UTF8String]); + std::string *cpath_5 = new std::string([path_5 UTF8String]); + std::string *cpath_6 = new std::string([path_6 UTF8String]); + std::string *cpath_7 = new std::string([path_7 UTF8String]); + + + PipelinePR pr2 = PipelinePR::PipelinePR(*cpath_1,*cpath_2,*cpath_3,*cpath_4,*cpath_5,*cpath_6,*cpath_7); + + std::vector list_res = pr2.RunPiplineAsImage(src); + std::string concat_results=""; + for(auto one:list_res){ + if(one.confidence>0.7){ + concat_results += one.getPlateName()+","; + //std::cout<<"1-----"+one.getPlateName()+"----1"; + } + } + //std::cout<<"2--"+concat_results+"--2"; + + NSString *str=[NSString stringWithCString:concat_results.c_str() encoding:NSUTF8StringEncoding]; + if(str.length > 0){ + str = [str substringToIndex:str.length-1]; + str = [NSString stringWithFormat:@"result:%@",str]; + }else{ + str = [NSString stringWithFormat:@"result:null"]; + } + + [self.textLabel setText:str]; + + + +} + + +- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + [picker dismissViewControllerAnimated:YES completion:nil]; + + UIImage* temp = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; + + + + + UIImage *temp_image=[UIImageCVMatConverter scaleAndRotateImageBackCamera:temp]; + source_image=[UIImageCVMatConverter cvMatFromUIImage:temp_image]; + [self simpleRecognition:source_image]; + imageView.image = temp; + + + + + //cv::Mat cvImage,cv2; + //UIImageToMat(temp, cvImage); +// if(!cvImage.empty()){ +// cv::Mat gray; +// // 将图像转换为灰度显示 +// cv::cvtColor(cvImage,gray,CV_RGB2GRAY); +// // 应用高斯滤波器去除小的边缘 +// cv::GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2); +// // 计算与画布边缘 +// cv::Mat edges; +// cv::Canny(gray, edges, 0, 50); +// // 使用白色填充 +// cvImage.setTo(cv::Scalar::all(225)); +// // 修改边缘颜色 +// cvImage.setTo(cv::Scalar(0,128,255,255),edges); +// // 将Mat转换为Xcode的UIImageView显示 +// self.imageView.image = MatToUIImage(cvImage); +// } + + + + + +} + +-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker +{ + [picker dismissViewControllerAnimated:YES completion:nil]; +} + + +- (void)loadButtonPressed:(id)sender +{ + + UIImagePickerController* picker = [[UIImagePickerController alloc] init]; + picker.delegate = self; + + if (![UIImagePickerController isSourceTypeAvailable: + UIImagePickerControllerSourceTypePhotoLibrary]) + return; + + picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + + [self presentViewController:picker animated:YES completion:nil]; + +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. + + + + CGRect bounds = [UIScreen mainScreen].bounds; + imageView = [[UIImageView alloc] init]; + imageView.frame = CGRectMake(0, 160, bounds.size.width, bounds.size.height-210); + imageView.contentMode=UIViewContentModeScaleAspectFit; + imageView.backgroundColor = [UIColor clearColor]; + [self.view addSubview:imageView]; + + + /* Add the fps Label */ + UILabel *fps = [[UILabel alloc] initWithFrame:CGRectMake(20, 120, 180, 20)]; + fps.font=[UIFont fontWithName:@"华文细黑" size:14.0f]; + fps.backgroundColor=[UIColor clearColor]; + fps.textColor=[UIColor redColor]; + fps.textAlignment=NSTextAlignmentLeft; + // fps.transform = CGAffineTransformMakeRotation(90); + fps.text=@"result"; + self.textLabel = fps; + [self.view addSubview:self.textLabel]; + [self.view bringSubviewToFront:self.textLabel]; + + toolbar=[[UIToolbar alloc] initWithFrame:CGRectMake(0, bounds.size.height- 44, bounds.size.width, 44)]; + [toolbar setBackgroundColor:[UIColor clearColor]]; + // toolbar.barStyle=UIBarStyleDefault; + toolbar.tintColor=[UIColor blackColor]; + toolbar.translucent=YES; + // [toolbar setTranslucent:YES]; + [self.toolbar setBackgroundImage:[UIImage new] + forToolbarPosition:UIBarPositionAny + barMetrics:UIBarMetricsDefault]; + toolbar.delegate=self; + + + UIBarButtonItem*flexitem=[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; + + UIBarButtonItem*albumitem=[[UIBarButtonItem alloc] + + initWithTitle:@"相册" + style:UIBarButtonItemStylePlain + + target:self + + action:@selector(loadButtonPressed:)]; + + + + + [toolbar setItems:[NSArray arrayWithObjects:albumitem,flexitem,nil]]; + [self.view addSubview:toolbar]; + + // Do any additional setup after loading the view, typically from a nib + toolbar.autoresizingMask = UIViewAutoresizingNone; + + + + +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +@end diff --git a/Prj-IOS/lp/main.m b/Prj-IOS/lp/main.m new file mode 100644 index 0000000..b844fa9 --- /dev/null +++ b/Prj-IOS/lp/main.m @@ -0,0 +1,16 @@ +// +// main.m +// lp +// +// Created by xiaojun on 2017/12/2. +// Copyright © 2017年 xiaojun. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/Prj-IOS/model.bundle/cascade.xml b/Prj-IOS/model.bundle/cascade.xml new file mode 100755 index 0000000..277775b --- /dev/null +++ b/Prj-IOS/model.bundle/cascade.xml @@ -0,0 +1,12117 @@ + + + + BOOST + HAAR + 13 + 51 + + GAB + 9.9900001287460327e-001 + 5.0000000000000000e-001 + 9.4999999999999996e-001 + 1 + 100 + + 0 + 1 + ALL + 20 + + + <_> + 8 + -1.9158077239990234e+000 + + <_> + + 0 -1 344 -8.1478752195835114e-002 + + 6.2639594078063965e-001 -8.1564724445343018e-001 + <_> + + 0 -1 701 -1.2957378290593624e-002 + + 7.7114331722259521e-001 -4.9504086375236511e-001 + <_> + + 0 -1 687 -9.2470366507768631e-003 + + 8.1202191114425659e-001 -2.8070560097694397e-001 + <_> + + 0 -1 614 1.2374955229461193e-002 + + -2.5367051362991333e-001 7.3795551061630249e-001 + <_> + + 0 -1 299 -4.7858944162726402e-003 + + 7.1150565147399902e-001 -3.0462509393692017e-001 + <_> + + 0 -1 297 3.8920845836400986e-003 + + -2.8375166654586792e-001 7.3174893856048584e-001 + <_> + + 0 -1 814 -8.8258963078260422e-003 + + 7.5333666801452637e-001 -1.9880458712577820e-001 + <_> + + 0 -1 845 -6.7375516518950462e-003 + + 7.5299704074859619e-001 -2.3570337891578674e-001 + + <_> + 12 + -2.2599112987518311e+000 + + <_> + + 0 -1 577 -1.4449171721935272e-002 + + 5.5890566110610962e-001 -7.6307392120361328e-001 + <_> + + 0 -1 364 -3.8289055228233337e-002 + + 5.1702296733856201e-001 -5.7946079969406128e-001 + <_> + + 0 -1 124 -1.4895259402692318e-002 + + 6.1277741193771362e-001 -3.2827928662300110e-001 + <_> + + 0 -1 579 8.3044255152344704e-003 + + -3.3253005146980286e-001 7.2171914577484131e-001 + <_> + + 0 -1 314 6.0594235546886921e-003 + + -3.2760250568389893e-001 4.9508789181709290e-001 + <_> + + 0 -1 699 -6.8011749535799026e-003 + + 6.6238498687744141e-001 -2.4112002551555634e-001 + <_> + + 0 -1 295 -1.1183910071849823e-002 + + 7.1757602691650391e-001 -2.0989039540290833e-001 + <_> + + 0 -1 767 1.3139605522155762e-002 + + -1.8845251202583313e-001 6.7252415418624878e-001 + <_> + + 0 -1 689 -6.1739999800920486e-003 + + 6.3675141334533691e-001 -2.4877758324146271e-001 + <_> + + 0 -1 230 -9.2421043664216995e-003 + + 6.5140277147293091e-001 -2.1352872252464294e-001 + <_> + + 0 -1 48 -1.0526084899902344e-001 + + -9.0194213390350342e-001 1.8239501118659973e-001 + <_> + + 0 -1 281 1.2764739990234375e-001 + + 1.6771897673606873e-001 -7.7668786048889160e-001 + + <_> + 14 + -2.6526770591735840e+000 + + <_> + + 0 -1 829 -1.3842798769474030e-002 + + 4.1735208034515381e-001 -7.4295550584793091e-001 + <_> + + 0 -1 97 1.4765590429306030e-002 + + -5.1845699548721313e-001 5.0078016519546509e-001 + <_> + + 0 -1 21 3.1671046745032072e-003 + + -3.2739469408988953e-001 5.1253867149353027e-001 + <_> + + 0 -1 812 -9.5202140510082245e-003 + + 7.1236211061477661e-001 -2.3344238102436066e-001 + <_> + + 0 -1 703 -1.2149499729275703e-002 + + 6.4311891794204712e-001 -2.5991156697273254e-001 + <_> + + 0 -1 385 -1.0172967612743378e-001 + + -7.3093742132186890e-001 2.3339104652404785e-001 + <_> + + 0 -1 858 -6.2750680372118950e-003 + + 6.4128917455673218e-001 -2.3738093674182892e-001 + <_> + + 0 -1 518 1.5905253589153290e-002 + + -2.3312157392501831e-001 5.6561905145645142e-001 + <_> + + 0 -1 873 -5.6511810980737209e-003 + + 6.3098442554473877e-001 -2.2128470242023468e-001 + <_> + + 0 -1 229 1.0334834456443787e-002 + + -1.6205528378486633e-001 7.1688497066497803e-001 + <_> + + 0 -1 373 -1.4500595629215240e-002 + + 5.2634650468826294e-001 -2.5339555740356445e-001 + <_> + + 0 -1 720 8.4515195339918137e-003 + + -1.9005575776100159e-001 6.2645190954208374e-001 + <_> + + 0 -1 519 1.6612716019153595e-002 + + -1.9349065423011780e-001 6.6134274005889893e-001 + <_> + + 0 -1 561 1.0179553180932999e-002 + + -1.9179263710975647e-001 6.1396795511245728e-001 + + <_> + 16 + -2.2411971092224121e+000 + + <_> + + 0 -1 344 -9.5315366983413696e-002 + + 2.0634920895099640e-001 -7.6994550228118896e-001 + <_> + + 0 -1 577 -1.1904314160346985e-002 + + 4.6030580997467041e-001 -4.5124572515487671e-001 + <_> + + 0 -1 736 8.0967023968696594e-003 + + -2.9279080033302307e-001 5.1358801126480103e-001 + <_> + + 0 -1 766 -1.4768393710255623e-002 + + 6.9709998369216919e-001 -1.9789521396160126e-001 + <_> + + 0 -1 332 -7.3709283024072647e-003 + + 6.4356821775436401e-001 -1.9384047389030457e-001 + <_> + + 0 -1 331 7.4571794830262661e-003 + + -2.0553122460842133e-001 6.7929607629776001e-001 + <_> + + 0 -1 943 5.8717206120491028e-003 + + -1.9075798988342285e-001 6.3178658485412598e-001 + <_> + + 0 -1 563 -6.3720787875354290e-003 + + 6.1133956909179688e-001 -1.9197526574134827e-001 + <_> + + 0 -1 185 -1.7508253455162048e-002 + + 5.5003905296325684e-001 -2.0409923791885376e-001 + <_> + + 0 -1 539 -4.2271558195352554e-003 + + 5.9483224153518677e-001 -2.0080061256885529e-001 + <_> + + 0 -1 919 5.0116949714720249e-003 + + -1.8873518705368042e-001 5.8758223056793213e-001 + <_> + + 0 -1 298 8.4183514118194580e-002 + + 1.9158974289894104e-001 -7.3058295249938965e-001 + <_> + + 0 -1 776 4.5591969974339008e-003 + + -2.1568548679351807e-001 5.4940956830978394e-001 + <_> + + 0 -1 776 -3.6774221807718277e-003 + + 6.5714693069458008e-001 -2.3908025026321411e-001 + <_> + + 0 -1 844 1.3156082481145859e-002 + + -1.6889381408691406e-001 5.4372692108154297e-001 + <_> + + 0 -1 508 1.2298718094825745e-002 + + -1.7204846441745758e-001 5.3114622831344604e-001 + + <_> + 20 + -2.3278577327728271e+000 + + <_> + + 0 -1 684 -4.2540580034255981e-002 + + 2.4365724623203278e-001 -7.2478657960891724e-001 + <_> + + 0 -1 317 -2.1006479859352112e-002 + + 3.9405155181884766e-001 -5.1031738519668579e-001 + <_> + + 0 -1 13 1.2750471010804176e-002 + + -2.6155433058738708e-001 5.3219014406204224e-001 + <_> + + 0 -1 12 -1.0928934812545776e-001 + + -7.9762983322143555e-001 1.6522131860256195e-001 + <_> + + 0 -1 742 -8.2451943308115005e-003 + + 6.1570894718170166e-001 -1.6545474529266357e-001 + <_> + + 0 -1 651 -6.1263595707714558e-003 + + 6.5689104795455933e-001 -1.6943360865116119e-001 + <_> + + 0 -1 650 5.0333887338638306e-003 + + -1.9622130692005157e-001 5.7385104894638062e-001 + <_> + + 0 -1 34 1.0666935704648495e-002 + + -2.1881586313247681e-001 4.5024806261062622e-001 + <_> + + 0 -1 291 -1.0632696561515331e-002 + + 6.3769024610519409e-001 -1.6428084671497345e-001 + <_> + + 0 -1 237 -1.4020981267094612e-002 + + 6.1583393812179565e-001 -1.6708594560623169e-001 + <_> + + 0 -1 765 1.2589931488037109e-002 + + -2.0485720038414001e-001 4.7809442877769470e-001 + <_> + + 0 -1 753 -1.3003132306039333e-002 + + 6.5572524070739746e-001 -1.6035726666450500e-001 + <_> + + 0 -1 222 -5.7425271719694138e-002 + + -8.2782661914825439e-001 1.4296714961528778e-001 + <_> + + 0 -1 833 -3.7263054400682449e-003 + + 4.9777820706367493e-001 -2.1036401391029358e-001 + <_> + + 0 -1 825 1.2980616651475430e-002 + + -1.7779336869716644e-001 6.1292153596878052e-001 + <_> + + 0 -1 276 -3.4886042121797800e-003 + + 4.1184583306312561e-001 -2.0970273017883301e-001 + <_> + + 0 -1 813 -1.1452829465270042e-002 + + 5.6084501743316650e-001 -1.5244032442569733e-001 + <_> + + 0 -1 321 3.7844986654818058e-003 + + -2.8913837671279907e-001 2.7224406599998474e-001 + <_> + + 0 -1 876 -4.7596222721040249e-003 + + 5.2785235643386841e-001 -1.5034112334251404e-001 + <_> + + 0 -1 896 -1.7377159092575312e-003 + + 5.5644094944000244e-001 -2.0121455192565918e-001 + + <_> + 28 + -2.3750255107879639e+000 + + <_> + + 0 -1 347 -1.0104553401470184e-001 + + 1.3032685220241547e-001 -7.3142945766448975e-001 + <_> + + 0 -1 596 -1.8494745716452599e-002 + + 5.6178814172744751e-001 -3.3690422773361206e-001 + <_> + + 0 -1 629 1.0897371917963028e-002 + + -2.6694682240486145e-001 4.6661883592605591e-001 + <_> + + 0 -1 839 8.4953904151916504e-003 + + -2.0583645999431610e-001 4.6663123369216919e-001 + <_> + + 0 -1 44 6.3092201948165894e-002 + + 1.2652839720249176e-001 -7.4331611394882202e-001 + <_> + + 0 -1 305 -4.8850802704691887e-003 + + 5.1036185026168823e-001 -1.7127794027328491e-001 + <_> + + 0 -1 295 -1.2086534872651100e-002 + + 5.3874844312667847e-001 -1.7047831416130066e-001 + <_> + + 0 -1 163 -4.0194295346736908e-002 + + 6.0334587097167969e-001 -1.8293543159961700e-001 + <_> + + 0 -1 265 -9.7945984452962875e-003 + + 4.8900371789932251e-001 -1.7746040225028992e-001 + <_> + + 0 -1 597 6.7133754491806030e-003 + + -1.8603576719760895e-001 4.9050629138946533e-001 + <_> + + 0 -1 128 1.5135381370782852e-002 + + 1.5555633604526520e-001 -6.6330802440643311e-001 + <_> + + 0 -1 480 7.4470564723014832e-003 + + 1.2465479969978333e-001 -6.3456755876541138e-001 + <_> + + 0 -1 559 -1.7742723226547241e-002 + + 4.8904901742935181e-001 -1.6264849901199341e-001 + <_> + + 0 -1 821 -1.5695080161094666e-002 + + 4.1306030750274658e-001 -1.9036959111690521e-001 + <_> + + 0 -1 819 -4.3798778206110001e-003 + + 4.8768985271453857e-001 -1.5558160841464996e-001 + <_> + + 0 -1 836 -4.8424974083900452e-003 + + 4.6657896041870117e-001 -1.6847038269042969e-001 + <_> + + 0 -1 90 7.4649546295404434e-003 + + -1.7167872190475464e-001 4.3042477965354919e-001 + <_> + + 0 -1 883 5.1524871960282326e-003 + + -1.4530055224895477e-001 4.7056230902671814e-001 + <_> + + 0 -1 890 9.8812151700258255e-003 + + -1.4264582097530365e-001 5.0057184696197510e-001 + <_> + + 0 -1 393 -3.0181273818016052e-002 + + -6.5408444404602051e-001 1.0674032568931580e-001 + <_> + + 0 -1 694 9.2962123453617096e-003 + + -1.4381234347820282e-001 4.9470436573028564e-001 + <_> + + 0 -1 77 -7.6252631843090057e-003 + + -5.2033776044845581e-001 1.3706678152084351e-001 + <_> + + 0 -1 801 -1.1497072875499725e-002 + + 3.4252560138702393e-001 -1.9132094085216522e-001 + <_> + + 0 -1 670 -4.4177635572850704e-003 + + 4.6443006396293640e-001 -1.3389693200588226e-001 + <_> + + 0 -1 647 -2.4282713420689106e-003 + + 4.1310977935791016e-001 -1.3224220275878906e-001 + <_> + + 0 -1 686 1.0079141706228256e-002 + + -1.3342842459678650e-001 5.5696302652359009e-001 + <_> + + 0 -1 570 3.5632357001304626e-002 + + 9.1464981436729431e-002 -7.0863521099090576e-001 + <_> + + 0 -1 840 -1.9085695967078209e-003 + + 2.6823535561561584e-001 -1.9665902853012085e-001 + + <_> + 34 + -2.5052807331085205e+000 + + <_> + + 0 -1 268 1.5469970181584358e-002 + + -6.7369276285171509e-001 3.0393996834754944e-001 + <_> + + 0 -1 700 -2.2830318659543991e-002 + + 4.9829742312431335e-001 -3.5193654894828796e-001 + <_> + + 0 -1 521 1.8841657787561417e-002 + + -2.1037499606609344e-001 4.8866468667984009e-001 + <_> + + 0 -1 262 1.1541565880179405e-002 + + -1.8598809838294983e-001 5.2916365861892700e-001 + <_> + + 0 -1 219 -2.4122973904013634e-002 + + 5.2869701385498047e-001 -1.6163693368434906e-001 + <_> + + 0 -1 6 1.4711560681462288e-002 + + -2.5017279386520386e-001 3.2298168540000916e-001 + <_> + + 0 -1 520 -1.5706669539213181e-002 + + 5.0967657566070557e-001 -1.5732303261756897e-001 + <_> + + 0 -1 948 -4.1158739477396011e-003 + + 4.9462157487869263e-001 -1.2155625224113464e-001 + <_> + + 0 -1 770 -1.0694706812500954e-002 + + 6.1407995223999023e-001 -1.2956763803958893e-001 + <_> + + 0 -1 387 -3.6484465003013611e-002 + + 3.1439977884292603e-001 -2.2812500596046448e-001 + <_> + + 0 -1 345 5.4322574287652969e-002 + + -8.7467961013317108e-002 7.1243762969970703e-001 + <_> + + 0 -1 250 -8.9914854615926743e-003 + + 3.7887179851531982e-001 -1.7758503556251526e-001 + <_> + + 0 -1 52 1.5299601480364799e-002 + + 1.5142892301082611e-001 -5.4104751348495483e-001 + <_> + + 0 -1 792 -6.0345130041241646e-003 + + 3.8750106096267700e-001 -1.7849484086036682e-001 + <_> + + 0 -1 610 -2.0873975008726120e-003 + + -5.5879276990890503e-001 1.3142852485179901e-001 + <_> + + 0 -1 642 -2.0619889255613089e-003 + + -5.1919680833816528e-001 1.0321786254644394e-001 + <_> + + 0 -1 259 3.6544300615787506e-002 + + -1.6965624690055847e-001 3.9208900928497314e-001 + <_> + + 0 -1 382 1.4528267784044147e-003 + + -3.4218248724937439e-001 1.8518145382404327e-001 + <_> + + 0 -1 196 -2.6956547051668167e-002 + + -8.3279663324356079e-001 7.7962644398212433e-002 + <_> + + 0 -1 533 -1.0518556460738182e-002 + + 4.5597425103187561e-001 -1.4934070408344269e-001 + <_> + + 0 -1 740 5.4534617811441422e-003 + + -1.5347433090209961e-001 3.5846599936485291e-001 + <_> + + 0 -1 534 -5.6011183187365532e-003 + + 3.6314359307289124e-001 -1.5886513888835907e-001 + <_> + + 0 -1 927 1.0399374179542065e-002 + + -1.1159978061914444e-001 4.9891829490661621e-001 + <_> + + 0 -1 41 2.6076715439558029e-002 + + -2.1667334437370300e-001 2.5659701228141785e-001 + <_> + + 0 -1 715 -7.3732812888920307e-003 + + 5.8327084779739380e-001 -1.0727929323911667e-001 + <_> + + 0 -1 882 -5.6875580921769142e-003 + + 4.0847277641296387e-001 -1.2561751902103424e-001 + <_> + + 0 -1 891 1.3321589678525925e-002 + + -1.2537255883216858e-001 4.4824957847595215e-001 + <_> + + 0 -1 168 -1.8619614839553833e-001 + + -7.1703630685806274e-001 7.7993653714656830e-002 + <_> + + 0 -1 190 3.3796064555644989e-002 + + -1.3172915577888489e-001 4.1404765844345093e-001 + <_> + + 0 -1 530 4.0178038179874420e-003 + + -1.8571788072586060e-001 2.7401688694953918e-001 + <_> + + 0 -1 555 1.6669608652591705e-002 + + 7.5644508004188538e-002 -6.8869042396545410e-001 + <_> + + 0 -1 406 4.7584358602762222e-002 + + 8.2619942724704742e-002 -5.8818364143371582e-001 + <_> + + 0 -1 537 2.5073587894439697e-003 + + -1.4251622557640076e-001 3.3965954184532166e-001 + <_> + + 0 -1 638 1.4513431116938591e-002 + + -1.4366999268531799e-001 3.2603174448013306e-001 + + <_> + 42 + -2.4546041488647461e+000 + + <_> + + 0 -1 340 -9.4746887683868408e-002 + + 1.1788145639002323e-002 -7.5736826658248901e-001 + <_> + + 0 -1 577 -1.5985764563083649e-002 + + 3.4271994233131409e-001 -3.7916901707649231e-001 + <_> + + 0 -1 630 1.9708804786205292e-002 + + -2.2393602132797241e-001 4.9053853750228882e-001 + <_> + + 0 -1 96 1.6178630292415619e-002 + + -2.0412905514240265e-001 3.4104099869728088e-001 + <_> + + 0 -1 319 1.0606624186038971e-001 + + -1.0737416148185730e-001 6.7443412542343140e-001 + <_> + + 0 -1 83 -6.7316116765141487e-003 + + 3.4080076217651367e-001 -2.2706831991672516e-001 + <_> + + 0 -1 634 4.0689492598176003e-003 + + -1.4782951772212982e-001 4.1778662800788879e-001 + <_> + + 0 -1 686 -1.3378994539380074e-002 + + 6.8167924880981445e-001 -1.0507009923458099e-001 + <_> + + 0 -1 786 -1.8129471689462662e-002 + + 5.0995999574661255e-001 -1.3223616778850555e-001 + <_> + + 0 -1 646 -8.9250747114419937e-003 + + 5.0829160213470459e-001 -1.0886437445878983e-001 + <_> + + 0 -1 711 6.1906888149678707e-003 + + -1.1881013214588165e-001 4.9430772662162781e-001 + <_> + + 0 -1 575 -3.4704633057117462e-002 + + -6.8778192996978760e-001 9.2318676412105560e-002 + <_> + + 0 -1 189 -9.7849890589714050e-003 + + 2.0124578475952148e-001 -2.8525698184967041e-001 + <_> + + 0 -1 479 1.4655515551567078e-003 + + 1.0351686179637909e-001 -6.3454014062881470e-001 + <_> + + 0 -1 513 -3.5405270755290985e-002 + + -7.6147061586380005e-001 6.0781378298997879e-002 + <_> + + 0 -1 23 9.1620441526174545e-003 + + 8.2090407609939575e-002 -5.3804397583007813e-001 + <_> + + 0 -1 838 6.7096878774464130e-003 + + -1.1302943527698517e-001 4.6365195512771606e-001 + <_> + + 0 -1 820 -1.0268911719322205e-002 + + 5.8097857236862183e-001 -1.0859654098749161e-001 + <_> + + 0 -1 441 2.9750142246484756e-002 + + 9.3299955129623413e-002 -5.4268807172775269e-001 + <_> + + 0 -1 726 -5.5990684777498245e-003 + + 4.9949660897254944e-001 -1.0594012588262558e-001 + <_> + + 0 -1 714 4.8061953857541084e-003 + + -1.1477116495370865e-001 4.3569833040237427e-001 + <_> + + 0 -1 637 -4.0460027754306793e-002 + + -7.7711206674575806e-001 7.3132880032062531e-002 + <_> + + 0 -1 53 4.5344540849328041e-003 + + -1.6310065984725952e-001 3.0750447511672974e-001 + <_> + + 0 -1 479 -1.4339694753289223e-003 + + -5.2921229600906372e-001 8.8739573955535889e-002 + <_> + + 0 -1 396 -4.5565411448478699e-002 + + -7.4928385019302368e-001 4.8912040889263153e-002 + <_> + + 0 -1 330 -8.3342632278800011e-003 + + 4.6582534909248352e-001 -1.0161897540092468e-001 + <_> + + 0 -1 834 -1.0381949134171009e-002 + + 3.0994066596031189e-001 -1.3267418742179871e-001 + <_> + + 0 -1 831 1.6984764486551285e-002 + + -9.9871687591075897e-002 4.9527561664581299e-001 + <_> + + 0 -1 376 -1.3278885744512081e-003 + + 3.6983770132064819e-001 -1.1738168448209763e-001 + <_> + + 0 -1 760 -3.1804253812879324e-003 + + -8.9759206771850586e-001 4.3921347707509995e-002 + <_> + + 0 -1 828 -1.9149896688759327e-003 + + 1.9146692752838135e-001 -2.0268803834915161e-001 + <_> + + 0 -1 841 -1.8405792070552707e-003 + + 2.1319428086280823e-001 -1.8382850289344788e-001 + <_> + + 0 -1 259 3.5366363823413849e-002 + + -1.2205254286527634e-001 3.0300119519233704e-001 + <_> + + 0 -1 354 -3.7630870938301086e-003 + + 3.0492320656776428e-001 -1.2932489812374115e-001 + <_> + + 0 -1 732 -1.1243980843573809e-003 + + -4.9750825762748718e-001 8.0560393631458282e-002 + <_> + + 0 -1 749 -2.2356058470904827e-003 + + -6.7946660518646240e-001 5.2887793630361557e-002 + <_> + + 0 -1 536 -2.2717624902725220e-002 + + 4.2686942219734192e-001 -1.0260385274887085e-001 + <_> + + 0 -1 280 9.2372611165046692e-002 + + 7.9670898616313934e-002 -5.2335608005523682e-001 + <_> + + 0 -1 658 -1.0431142151355743e-001 + + -7.4446302652359009e-001 4.6288352459669113e-002 + <_> + + 0 -1 944 7.4872868135571480e-003 + + -1.1977240443229675e-001 3.1791850924491882e-001 + <_> + + 0 -1 228 -2.4358350783586502e-002 + + 1.7944122850894928e-001 -2.0157346129417419e-001 + <_> + + 0 -1 47 4.9624212086200714e-002 + + -1.0701860487461090e-001 3.7854740023612976e-001 + + <_> + 50 + -2.6502745151519775e+000 + + <_> + + 0 -1 431 2.1381884813308716e-002 + + -7.6310330629348755e-001 -7.8235723078250885e-002 + <_> + + 0 -1 623 9.7743803635239601e-003 + + -3.8874423503875732e-001 2.9614463448524475e-001 + <_> + + 0 -1 19 2.9336847364902496e-002 + + -2.1392610669136047e-001 4.4257661700248718e-001 + <_> + + 0 -1 645 1.2054111808538437e-002 + + -1.2168737500905991e-001 6.5890479087829590e-001 + <_> + + 0 -1 392 1.1729352176189423e-002 + + -1.2235984951257706e-001 4.8555457592010498e-001 + <_> + + 0 -1 588 -1.0436945594847202e-003 + + -6.1764669418334961e-001 1.1390741914510727e-001 + <_> + + 0 -1 71 -2.5775061920285225e-002 + + -6.0323065519332886e-001 1.2372459471225739e-001 + <_> + + 0 -1 872 -4.0599796921014786e-003 + + 3.5508742928504944e-001 -1.9819863140583038e-001 + <_> + + 0 -1 643 -1.9134972244501114e-002 + + 4.7154670953750610e-001 -1.4655594527721405e-001 + <_> + + 0 -1 483 6.5218633972108364e-003 + + 1.2207052111625671e-001 -6.0890328884124756e-001 + <_> + + 0 -1 757 -1.4126582071185112e-002 + + 3.3305764198303223e-001 -1.8242211639881134e-001 + <_> + + 0 -1 565 -8.3793615922331810e-003 + + 4.6099957823753357e-001 -1.0809499770402908e-001 + <_> + + 0 -1 455 -1.2584301875904202e-003 + + -5.1634973287582397e-001 1.0520447790622711e-001 + <_> + + 0 -1 203 -5.1234811544418335e-002 + + -7.5237458944320679e-001 5.3416907787322998e-002 + <_> + + 0 -1 584 1.6728173941373825e-002 + + -1.4094479382038116e-001 3.8169395923614502e-001 + <_> + + 0 -1 184 -4.5198453590273857e-003 + + 3.0100575089454651e-001 -1.6970130801200867e-001 + <_> + + 0 -1 686 1.0796479880809784e-002 + + -1.1680302023887634e-001 4.6733006834983826e-001 + <_> + + 0 -1 860 5.4673422127962112e-003 + + -1.3090577721595764e-001 3.4922021627426147e-001 + <_> + + 0 -1 902 6.2447679229080677e-003 + + -1.0570991784334183e-001 4.4209754467010498e-001 + <_> + + 0 -1 892 -8.6985006928443909e-003 + + 4.4582247734069824e-001 -1.1208640784025192e-001 + <_> + + 0 -1 86 5.8012232184410095e-002 + + 5.6753028184175491e-002 -7.8348731994628906e-001 + <_> + + 0 -1 158 -1.9159330055117607e-002 + + 2.1710830926895142e-001 -2.1206925809383392e-001 + <_> + + 0 -1 346 1.4331589639186859e-001 + + -6.5506041049957275e-002 8.3924996852874756e-001 + <_> + + 0 -1 327 -7.4841668829321861e-003 + + 4.4598889350891113e-001 -8.4189794957637787e-002 + <_> + + 0 -1 585 -3.1711272895336151e-002 + + -6.8312811851501465e-001 6.7834347486495972e-002 + <_> + + 0 -1 543 -1.0442961938679218e-003 + + -5.5244719982147217e-001 6.7180506885051727e-002 + <_> + + 0 -1 806 7.9750344157218933e-003 + + -1.4685039222240448e-001 2.7911156415939331e-001 + <_> + + 0 -1 775 9.7797568887472153e-003 + + -1.0445457696914673e-001 3.9583787322044373e-001 + <_> + + 0 -1 552 1.3288496062159538e-002 + + -1.1733970791101456e-001 3.2855752110481262e-001 + <_> + + 0 -1 528 -1.5873706433922052e-003 + + -6.4394426345825195e-001 5.9831541031599045e-002 + <_> + + 0 -1 538 4.1341055184602737e-003 + + -1.4766456186771393e-001 2.6551467180252075e-001 + <_> + + 0 -1 75 4.7469654236920178e-004 + + -2.4220904707908630e-001 1.7033961415290833e-001 + <_> + + 0 -1 780 1.6357531771063805e-002 + + -7.4449680745601654e-002 5.1059716939926147e-001 + <_> + + 0 -1 512 -3.0519803985953331e-002 + + -6.1357855796813965e-001 6.4341634511947632e-002 + <_> + + 0 -1 388 7.8287199139595032e-002 + + -9.1953203082084656e-002 4.5058310031890869e-001 + <_> + + 0 -1 426 2.6628788560628891e-002 + + -1.2955492734909058e-001 2.6968446373939514e-001 + <_> + + 0 -1 187 4.6231731772422791e-002 + + -8.5953183472156525e-002 4.0568628907203674e-001 + <_> + + 0 -1 248 -2.1837819367647171e-003 + + 2.9953801631927490e-001 -1.1820212751626968e-001 + <_> + + 0 -1 551 -7.5804558582603931e-004 + + -3.7147358059883118e-001 9.4888158142566681e-002 + <_> + + 0 -1 557 1.9615942612290382e-002 + + 7.7175915241241455e-002 -4.4386270642280579e-001 + <_> + + 0 -1 758 2.4940725415945053e-003 + + -1.3974383473396301e-001 2.5393635034561157e-001 + <_> + + 0 -1 363 2.0674080587923527e-003 + + -1.6579771041870117e-001 2.1392273902893066e-001 + <_> + + 0 -1 307 -7.3546944186091423e-003 + + 3.6300283670425415e-001 -9.0012907981872559e-002 + <_> + + 0 -1 822 -4.5008827000856400e-003 + + 2.7234289050102234e-001 -1.1618893593549728e-001 + <_> + + 0 -1 863 2.6555648073554039e-003 + + -1.3339768350124359e-001 2.3308847844600677e-001 + <_> + + 0 -1 713 6.8732965737581253e-003 + + 5.5398836731910706e-002 -5.7269740104675293e-001 + <_> + + 0 -1 541 -1.3697329908609390e-002 + + 2.9575833678245544e-001 -1.1314996331930161e-001 + <_> + + 0 -1 499 3.1671333126723766e-003 + + -1.5514299273490906e-001 2.1296086907386780e-001 + <_> + + 0 -1 74 3.9301186800003052e-002 + + 3.7740129977464676e-002 -8.7064558267593384e-001 + <_> + + 0 -1 438 5.0326753407716751e-003 + + 3.8631703704595566e-002 -6.6628092527389526e-001 + + <_> + 37 + -2.2784059047698975e+000 + + <_> + + 0 -1 284 -6.8839386105537415e-002 + + 3.8505528122186661e-002 -7.2149914503097534e-001 + <_> + + 0 -1 622 4.6330597251653671e-003 + + -2.7918994426727295e-001 5.7365530729293823e-001 + <_> + + 0 -1 769 -2.2597890347242355e-002 + + 5.4445463418960571e-001 -1.5445226430892944e-001 + <_> + + 0 -1 651 8.1817107275128365e-003 + + -1.3576838374137878e-001 5.7550191879272461e-001 + <_> + + 0 -1 663 1.9931606948375702e-002 + + -8.6917184293270111e-002 6.9753867387771606e-001 + <_> + + 0 -1 125 -1.6835592687129974e-002 + + 2.9909837245941162e-001 -2.1280159056186676e-001 + <_> + + 0 -1 811 1.3076540082693100e-002 + + -1.0236994922161102e-001 6.2949544191360474e-001 + <_> + + 0 -1 809 6.2367517966777086e-004 + + -2.5327861309051514e-001 2.4867674708366394e-001 + <_> + + 0 -1 609 1.2028571218252182e-003 + + 1.3679966330528259e-001 -6.4433771371841431e-001 + <_> + + 0 -1 272 1.3981487601995468e-002 + + -1.6557806730270386e-001 4.5303794741630554e-001 + <_> + + 0 -1 224 -1.5312875621020794e-002 + + 3.9820623397827148e-001 -1.4350801706314087e-001 + <_> + + 0 -1 502 -1.5315772034227848e-003 + + -4.6908026933670044e-001 1.1392414569854736e-001 + <_> + + 0 -1 586 -1.2515729293227196e-002 + + 4.2320749163627625e-001 -1.1944464594125748e-001 + <_> + + 0 -1 15 9.7349435091018677e-003 + + -2.1135130524635315e-001 2.4544763565063477e-001 + <_> + + 0 -1 578 8.9689850807189941e-002 + + 6.3219323754310608e-002 -6.4908504486083984e-001 + <_> + + 0 -1 683 -1.1183234862983227e-002 + + 4.5843327045440674e-001 -1.1428884416818619e-001 + <_> + + 0 -1 609 -1.3516875915229321e-003 + + -6.4720195531845093e-001 8.4523022174835205e-002 + <_> + + 0 -1 338 -3.5038506612181664e-003 + + 2.3362815380096436e-001 -2.2096297144889832e-001 + <_> + + 0 -1 676 -2.2360668517649174e-003 + + 3.7134209275245667e-001 -1.3087964057922363e-001 + <_> + + 0 -1 672 1.1475373059511185e-002 + + -9.9598348140716553e-002 4.7512599825859070e-001 + <_> + + 0 -1 693 -4.1206870228052139e-003 + + 3.7730529904365540e-001 -1.3486868143081665e-001 + <_> + + 0 -1 386 -1.0615207254886627e-002 + + 5.6163507699966431e-001 -8.6019508540630341e-002 + <_> + + 0 -1 912 1.3644450809806585e-003 + + 9.1222301125526428e-002 -5.7370740175247192e-001 + <_> + + 0 -1 211 -4.0528293699026108e-002 + + -7.1112531423568726e-001 5.6328568607568741e-002 + <_> + + 0 -1 598 -2.6628528721630573e-003 + + -5.7514446973800659e-001 6.4672872424125671e-002 + <_> + + 0 -1 804 1.6719421837478876e-003 + + -1.0937304049730301e-001 4.6537923812866211e-001 + <_> + + 0 -1 391 -7.5402572751045227e-002 + + -7.1920621395111084e-001 6.3679412007331848e-002 + <_> + + 0 -1 752 4.1434019804000854e-003 + + -1.2251268327236176e-001 3.5859704017639160e-001 + <_> + + 0 -1 656 1.0901679052039981e-003 + + 9.0319603681564331e-002 -4.9077373743057251e-001 + <_> + + 0 -1 548 9.7664669156074524e-003 + + -1.1890622228384018e-001 3.7789806723594666e-001 + <_> + + 0 -1 20 1.3128603994846344e-001 + + 9.1950289905071259e-002 -4.8608726263046265e-001 + <_> + + 0 -1 160 5.0870995037257671e-003 + + -3.0447667837142944e-001 1.5393695235252380e-001 + <_> + + 0 -1 695 1.1608509812504053e-003 + + 6.8402722477912903e-002 -5.7240855693817139e-001 + <_> + + 0 -1 463 -8.3964206278324127e-003 + + -5.6654578447341919e-001 6.1527676880359650e-002 + <_> + + 0 -1 853 -9.2788469046354294e-003 + + 5.3486818075180054e-001 -7.9918831586837769e-002 + <_> + + 0 -1 194 4.0858805179595947e-002 + + -6.0392327606678009e-002 5.3097963333129883e-001 + <_> + + 0 -1 875 1.1207645758986473e-002 + + -7.6901644468307495e-002 4.6894967555999756e-001 + + <_> + 43 + -2.3281440734863281e+000 + + <_> + + 0 -1 799 1.6143361106514931e-002 + + -5.9869056940078735e-001 5.8244681358337402e-001 + <_> + + 0 -1 316 -1.4507154002785683e-002 + + 2.7806228399276733e-001 -4.9415421485900879e-001 + <_> + + 0 -1 374 7.1883820928633213e-003 + + -2.1741701662540436e-001 3.9910879731178284e-001 + <_> + + 0 -1 601 -6.3224318437278271e-003 + + 4.9661168456077576e-001 -1.4284123480319977e-001 + <_> + + 0 -1 309 7.3951724916696548e-003 + + -1.3306735455989838e-001 5.4774791002273560e-001 + <_> + + 0 -1 620 5.7926801964640617e-003 + + -1.7347626388072968e-001 3.3524274826049805e-001 + <_> + + 0 -1 628 -8.1796385347843170e-003 + + 4.4341480731964111e-001 -1.1987159401178360e-001 + <_> + + 0 -1 644 3.1394532416015863e-003 + + -7.6400212943553925e-002 5.3360211849212646e-001 + <_> + + 0 -1 803 5.8109681122004986e-003 + + -1.1512878537178040e-001 4.4279125332832336e-001 + <_> + + 0 -1 787 -1.5480478759855032e-003 + + 4.6037110686302185e-001 -1.1494978517293930e-001 + <_> + + 0 -1 139 -3.2716423273086548e-002 + + -6.3845193386077881e-001 1.0197243094444275e-001 + <_> + + 0 -1 547 7.7531556598842144e-003 + + -2.0599687099456787e-001 2.4387344717979431e-001 + <_> + + 0 -1 312 1.0081732273101807e-001 + + -8.3307094871997833e-002 6.0089951753616333e-001 + <_> + + 0 -1 303 1.8065905198454857e-002 + + -8.5330262780189514e-002 5.1092010736465454e-001 + <_> + + 0 -1 227 1.2447070330381393e-002 + + 7.5348034501075745e-002 -7.0691746473312378e-001 + <_> + + 0 -1 26 1.1250283569097519e-002 + + -2.8157770633697510e-001 1.4611217379570007e-001 + <_> + + 0 -1 461 6.3989013433456421e-002 + + 5.5644407868385315e-002 -8.0775284767150879e-001 + <_> + + 0 -1 532 1.2037818320095539e-002 + + -1.6155177354812622e-001 2.6092258095741272e-001 + <_> + + 0 -1 531 -6.7794714123010635e-003 + + 4.1026043891906738e-001 -1.1167341470718384e-001 + <_> + + 0 -1 662 -6.8837543949484825e-003 + + 3.2057675719261169e-001 -1.2521778047084808e-001 + <_> + + 0 -1 568 -5.6298770941793919e-003 + + 3.7114644050598145e-001 -9.6118465065956116e-002 + <_> + + 0 -1 501 -1.4044784940779209e-002 + + 2.3923584818840027e-001 -1.4994344115257263e-001 + <_> + + 0 -1 209 -4.2415991425514221e-002 + + -7.0631259679794312e-001 5.3350944072008133e-002 + <_> + + 0 -1 633 1.1271872790530324e-003 + + -1.0572738200426102e-001 4.0252980589866638e-001 + <_> + + 0 -1 655 1.6750365030020475e-003 + + 6.3855156302452087e-002 -6.4757323265075684e-001 + <_> + + 0 -1 617 8.0223847180604935e-003 + + -1.3372656702995300e-001 3.1646871566772461e-001 + <_> + + 0 -1 302 -7.6437788084149361e-003 + + 3.6533179879188538e-001 -1.0963398963212967e-001 + <_> + + 0 -1 864 1.9589535077102482e-004 + + -1.8541762232780457e-001 1.9759687781333923e-001 + <_> + + 0 -1 235 -1.4239229494705796e-003 + + 2.4031755328178406e-001 -1.5697695314884186e-001 + <_> + + 0 -1 796 8.4227584302425385e-003 + + -8.4527194499969482e-002 4.2389118671417236e-001 + <_> + + 0 -1 797 -6.9234715774655342e-003 + + 3.8057762384414673e-001 -9.1416321694850922e-002 + <_> + + 0 -1 588 -1.8704653484746814e-003 + + -6.4613032341003418e-001 5.7689383625984192e-002 + <_> + + 0 -1 260 -2.7793958783149719e-002 + + 1.8243275582790375e-001 -1.8460384011268616e-001 + <_> + + 0 -1 780 -1.9853528589010239e-002 + + 7.5294703245162964e-001 -5.5559452623128891e-002 + <_> + + 0 -1 231 -9.3498677015304565e-002 + + -4.5725339651107788e-001 8.2762040197849274e-002 + <_> + + 0 -1 233 -5.1207490265369415e-002 + + -6.2534767389297485e-001 4.8502899706363678e-002 + <_> + + 0 -1 407 1.1575517710298300e-003 + + -1.9439546763896942e-001 1.6855290532112122e-001 + <_> + + 0 -1 24 -1.7103100195527077e-002 + + -5.6425410509109497e-001 5.8622561395168304e-002 + <_> + + 0 -1 731 -1.7147272592410445e-003 + + -4.4655910134315491e-001 6.4384043216705322e-002 + <_> + + 0 -1 704 -2.4417929351329803e-002 + + -4.3452578783035278e-001 7.0416867733001709e-002 + <_> + + 0 -1 572 3.7648410070687532e-003 + + -9.9933244287967682e-002 3.3911246061325073e-001 + <_> + + 0 -1 353 -1.0104919783771038e-002 + + 3.4629023075103760e-001 -8.8539779186248779e-002 + <_> + + 0 -1 712 5.0981063395738602e-003 + + 5.5100377649068832e-002 -6.0317450761795044e-001 + + <_> + 50 + -2.3480093479156494e+000 + + <_> + + 0 -1 343 -3.9326027035713196e-002 + + 1.5673981979489326e-002 -7.0409429073333740e-001 + <_> + + 0 -1 465 -8.4042851813137531e-004 + + 2.2963143885135651e-001 -4.5338386297225952e-001 + <_> + + 0 -1 768 1.2317419983446598e-002 + + -2.4286352097988129e-001 3.4696686267852783e-001 + <_> + + 0 -1 799 1.2345131486654282e-002 + + -1.2295535951852798e-001 5.7723248004913330e-001 + <_> + + 0 -1 334 -1.0166198946535587e-002 + + 3.6376756429672241e-001 -1.5697406232357025e-001 + <_> + + 0 -1 2 1.6935718012973666e-003 + + -1.6952106356620789e-001 3.3476638793945313e-001 + <_> + + 0 -1 355 2.4814529344439507e-002 + + -5.2621126174926758e-002 6.6913032531738281e-001 + <_> + + 0 -1 595 -7.9641379415988922e-003 + + 4.5105281472206116e-001 -1.0256277024745941e-001 + <_> + + 0 -1 923 -8.0780440475791693e-004 + + 3.4726995229721069e-001 -1.4011415839195251e-001 + <_> + + 0 -1 886 -4.2634975165128708e-002 + + 3.9254909753799438e-001 -9.5705978572368622e-002 + <_> + + 0 -1 645 -1.1309007182717323e-002 + + 5.3030455112457275e-001 -9.1078959405422211e-002 + <_> + + 0 -1 660 -5.3997440263628960e-003 + + 4.4208008050918579e-001 -8.9016474783420563e-002 + <_> + + 0 -1 922 8.0034844577312469e-003 + + -7.7505834400653839e-002 4.6123340725898743e-001 + <_> + + 0 -1 70 -2.1929096430540085e-002 + + -5.1349323987960815e-001 8.5143901407718658e-002 + <_> + + 0 -1 457 -1.1585029773414135e-002 + + -5.9067147970199585e-001 5.3899347782135010e-002 + <_> + + 0 -1 940 1.5154580585658550e-002 + + 4.7417007386684418e-002 -6.2853425741195679e-001 + <_> + + 0 -1 425 3.6063842475414276e-002 + + 7.1829482913017273e-002 -5.8649080991744995e-001 + <_> + + 0 -1 377 -1.2515364214777946e-003 + + 1.8929110467433929e-001 -1.8165642023086548e-001 + <_> + + 0 -1 443 -1.1191211640834808e-002 + + -6.1874210834503174e-001 6.0382697731256485e-002 + <_> + + 0 -1 892 -1.0454729199409485e-002 + + 3.9079114794731140e-001 -9.7279526293277740e-002 + <_> + + 0 -1 474 -1.3280634302645922e-003 + + -4.3977957963943481e-001 8.6543120443820953e-002 + <_> + + 0 -1 884 -6.5715098753571510e-003 + + 3.8899809122085571e-001 -9.9507912993431091e-002 + <_> + + 0 -1 802 -4.8141209408640862e-003 + + 2.7240043878555298e-001 -1.1941614747047424e-001 + <_> + + 0 -1 611 -4.9042850732803345e-003 + + 3.4554582834243774e-001 -1.0440594702959061e-001 + <_> + + 0 -1 589 4.1131088510155678e-003 + + 6.2906242907047272e-002 -6.3577443361282349e-001 + <_> + + 0 -1 564 -1.4377808198332787e-002 + + 2.6160046458244324e-001 -1.3126534223556519e-001 + <_> + + 0 -1 659 -7.9730991274118423e-003 + + 2.8418624401092529e-001 -1.1802970618009567e-001 + <_> + + 0 -1 632 1.2750998139381409e-002 + + -1.2246144562959671e-001 2.9994803667068481e-001 + <_> + + 0 -1 550 1.2405896559357643e-003 + + 6.8871341645717621e-002 -4.7651088237762451e-001 + <_> + + 0 -1 864 1.9797214190475643e-004 + + -1.8686980009078979e-001 1.7104914784431458e-001 + <_> + + 0 -1 773 -5.9868812561035156e-002 + + -7.4281668663024902e-001 4.0871854871511459e-002 + <_> + + 0 -1 20 1.7117856442928314e-001 + + 3.9691232144832611e-002 -6.0849416255950928e-001 + <_> + + 0 -1 583 -6.0836132615804672e-003 + + 2.6707777380943298e-001 -1.1131492257118225e-001 + <_> + + 0 -1 37 -1.6043212264776230e-002 + + -7.1336209774017334e-001 4.1814558207988739e-002 + <_> + + 0 -1 721 -3.5733331460505724e-003 + + -5.9263443946838379e-001 4.1711769998073578e-002 + <_> + + 0 -1 251 4.8501053825020790e-003 + + -1.7411983013153076e-001 1.6949725151062012e-001 + <_> + + 0 -1 932 -2.4870643392205238e-003 + + 3.5093098878860474e-001 -8.0437563359737396e-002 + <_> + + 0 -1 679 5.4334278684109449e-004 + + 7.2410888969898224e-002 -4.1958642005920410e-001 + <_> + + 0 -1 399 -6.7315630614757538e-002 + + -6.9776558876037598e-001 3.6959640681743622e-002 + <_> + + 0 -1 848 -1.5508693642914295e-002 + + 4.7738686203956604e-001 -6.2411848455667496e-002 + <_> + + 0 -1 240 9.8924851045012474e-003 + + 3.8795292377471924e-002 -7.5121307373046875e-001 + <_> + + 0 -1 626 -1.9304422894492745e-003 + + -6.6471725702285767e-001 3.2116148620843887e-002 + <_> + + 0 -1 877 -1.0774823604151607e-003 + + 1.5463894605636597e-001 -1.6525565087795258e-001 + <_> + + 0 -1 938 2.0380350761115551e-003 + + -8.5884653031826019e-002 3.1941527128219604e-001 + <_> + + 0 -1 296 2.6121754199266434e-003 + + 4.5351639389991760e-002 -6.1592888832092285e-001 + <_> + + 0 -1 360 -2.4895587936043739e-002 + + 1.9662404060363770e-001 -1.3288022577762604e-001 + <_> + + 0 -1 540 9.4352923333644867e-003 + + -7.7825613319873810e-002 3.3150759339332581e-001 + <_> + + 0 -1 475 3.4190870821475983e-002 + + 4.5858692377805710e-002 -6.1435216665267944e-001 + <_> + + 0 -1 685 -5.5097185075283051e-002 + + -4.9892291426658630e-001 4.7548539936542511e-002 + <_> + + 0 -1 287 3.8485769182443619e-003 + + -2.1700088679790497e-001 1.1295168846845627e-001 + + <_> + 61 + -2.4126377105712891e+000 + + <_> + + 0 -1 344 -9.5382995903491974e-002 + + -4.5056518167257309e-002 -7.4383479356765747e-001 + <_> + + 0 -1 696 -1.7865713685750961e-002 + + 2.4200576543807983e-001 -3.4111279249191284e-001 + <_> + + 0 -1 66 -1.7819929867982864e-002 + + -5.8606600761413574e-001 1.0216028243303299e-001 + <_> + + 0 -1 369 1.1929270811378956e-002 + + -1.3082079589366913e-001 4.3198430538177490e-001 + <_> + + 0 -1 677 -2.1402675658464432e-002 + + -7.3706889152526855e-001 7.2057045996189117e-002 + <_> + + 0 -1 880 2.0411442965269089e-003 + + -1.9257834553718567e-001 2.6624691486358643e-001 + <_> + + 0 -1 560 -9.2984475195407867e-003 + + 3.9710593223571777e-001 -1.1857020854949951e-001 + <_> + + 0 -1 870 -4.1869636625051498e-003 + + 4.2139983177185059e-001 -1.1628517508506775e-001 + <_> + + 0 -1 173 1.0577079653739929e-001 + + 6.7847460508346558e-002 -7.5728106498718262e-001 + <_> + + 0 -1 458 2.3821401409804821e-003 + + -1.7424334585666656e-001 2.4778348207473755e-001 + <_> + + 0 -1 365 1.7058081924915314e-002 + + -1.0784839093685150e-001 4.7589403390884399e-001 + <_> + + 0 -1 607 8.4047149866819382e-003 + + -1.6299639642238617e-001 2.5596112012863159e-001 + <_> + + 0 -1 669 6.4883893355727196e-003 + + -1.0720382630825043e-001 3.8739699125289917e-001 + <_> + + 0 -1 719 1.3821164146065712e-002 + + -1.0847893357276917e-001 3.7734055519104004e-001 + <_> + + 0 -1 730 6.3344044610857964e-004 + + 1.0369951277971268e-001 -4.1177383065223694e-001 + <_> + + 0 -1 649 2.5448631495237350e-002 + + -1.0093591362237930e-001 4.0250420570373535e-001 + <_> + + 0 -1 628 -6.6858739592134953e-003 + + 3.2515993714332581e-001 -1.2071736156940460e-001 + <_> + + 0 -1 847 1.5770105645060539e-002 + + -8.7370425462722778e-002 4.2094638943672180e-001 + <_> + + 0 -1 442 -6.1724921688437462e-003 + + 3.5812416672706604e-001 -9.5346152782440186e-002 + <_> + + 0 -1 456 -2.5777951814234257e-003 + + -4.5544171333312988e-001 9.0092077851295471e-002 + <_> + + 0 -1 535 -2.6305086910724640e-002 + + -6.4864850044250488e-001 4.1219502687454224e-002 + <_> + + 0 -1 542 8.0740137491375208e-004 + + 4.7109395265579224e-002 -6.0955244302749634e-001 + <_> + + 0 -1 68 1.4135822653770447e-002 + + -1.9197317957878113e-001 1.6882354021072388e-001 + <_> + + 0 -1 294 -9.4971470534801483e-003 + + 3.6509966850280762e-001 -9.9222034215927124e-002 + <_> + + 0 -1 542 -7.4699660763144493e-004 + + -4.7985881567001343e-001 6.8735912442207336e-002 + <_> + + 0 -1 500 1.6889899969100952e-002 + + -1.3929726183414459e-001 2.3301121592521667e-001 + <_> + + 0 -1 779 2.3306370712816715e-003 + + -8.4623180329799652e-002 3.3656537532806396e-001 + <_> + + 0 -1 778 8.7781455367803574e-003 + + -1.1189370602369308e-001 2.9142591357231140e-001 + <_> + + 0 -1 99 -1.5908680856227875e-002 + + 1.9325265288352966e-001 -1.6028961539268494e-001 + <_> + + 0 -1 744 1.9255496561527252e-002 + + 7.6108239591121674e-002 -3.9211651682853699e-001 + <_> + + 0 -1 914 5.0490582361817360e-003 + + -8.9932329952716827e-002 3.1994494795799255e-001 + <_> + + 0 -1 603 -2.4455685634166002e-003 + + -6.3004231452941895e-001 4.6506922692060471e-002 + <_> + + 0 -1 89 6.4034629613161087e-003 + + -1.2222797423601151e-001 2.2714875638484955e-001 + <_> + + 0 -1 88 -3.1981021165847778e-003 + + 2.8711226582527161e-001 -1.0478579252958298e-001 + <_> + + 0 -1 732 1.7579109407961369e-003 + + 5.1840141415596008e-002 -5.7752221822738647e-001 + <_> + + 0 -1 526 -2.6384353637695313e-002 + + -7.5548434257507324e-001 3.1215203925967216e-002 + <_> + + 0 -1 482 1.3470241427421570e-001 + + 4.5115962624549866e-002 -4.8610612750053406e-001 + <_> + + 0 -1 855 -2.5868147611618042e-002 + + -4.9144035577774048e-001 5.0334099680185318e-002 + <_> + + 0 -1 164 1.0719317197799683e-001 + + -1.4267221093177795e-001 1.7969062924385071e-001 + <_> + + 0 -1 781 -1.5155045315623283e-002 + + 4.2710477113723755e-001 -6.6483244299888611e-002 + <_> + + 0 -1 728 -3.8210965692996979e-002 + + -6.1093688011169434e-001 4.7181066125631332e-002 + <_> + + 0 -1 257 1.7748951911926270e-002 + + -6.6903516650199890e-002 4.1605830192565918e-001 + <_> + + 0 -1 272 -1.3678016141057014e-002 + + 3.2274204492568970e-001 -8.7739549577236176e-002 + <_> + + 0 -1 81 1.4629539102315903e-002 + + -1.1059324443340302e-001 2.4449653923511505e-001 + <_> + + 0 -1 754 6.4607188105583191e-003 + + -8.1396102905273438e-002 3.1605172157287598e-001 + <_> + + 0 -1 574 -8.4974901983514428e-004 + + 1.5621511638164520e-001 -1.6912016272544861e-001 + <_> + + 0 -1 332 -6.4049977809190750e-003 + + 2.2254464030265808e-001 -1.1970910429954529e-001 + <_> + + 0 -1 410 4.8453146591782570e-003 + + -1.0080187022686005e-001 2.5552451610565186e-001 + <_> + + 0 -1 694 1.0576892644166946e-002 + + -7.1883767843246460e-002 3.2368022203445435e-001 + <_> + + 0 -1 652 -2.0271514076739550e-003 + + 2.1205350756645203e-001 -1.4773385226726532e-001 + <_> + + 0 -1 379 1.2130783870816231e-003 + + -2.2663643956184387e-001 1.0520290583372116e-001 + <_> + + 0 -1 419 -7.9384088516235352e-002 + + -4.4897699356079102e-001 4.9417987465858459e-002 + <_> + + 0 -1 31 4.3571349233388901e-003 + + 3.1063990667462349e-002 -6.9149738550186157e-001 + <_> + + 0 -1 750 1.9707549363374710e-003 + + 4.4843826442956924e-002 -4.5625826716423035e-001 + <_> + + 0 -1 788 6.2818843871355057e-003 + + -9.5382869243621826e-002 2.6746883988380432e-001 + <_> + + 0 -1 789 -1.3252656906843185e-002 + + 4.0820258855819702e-001 -6.0815874487161636e-002 + <_> + + 0 -1 60 5.0364276394248009e-003 + + 9.0342856943607330e-002 -2.5253733992576599e-001 + <_> + + 0 -1 492 8.9537240564823151e-003 + + 3.2092411071062088e-002 -7.0339488983154297e-001 + <_> + + 0 -1 546 6.8814970552921295e-002 + + -7.1046918630599976e-002 3.6507198214530945e-001 + <_> + + 0 -1 544 -1.2149440124630928e-002 + + 3.3089646697044373e-001 -6.6771849989891052e-002 + <_> + + 0 -1 50 1.9094728631898761e-003 + + -1.3490848243236542e-001 1.6960476338863373e-001 + + <_> + 72 + -2.3490672111511230e+000 + + <_> + + 0 -1 371 1.4795187860727310e-002 + + -7.0123827457427979e-001 -2.0484872162342072e-002 + <_> + + 0 -1 612 2.6377664878964424e-002 + + -3.5620382428169250e-001 2.4889869987964630e-001 + <_> + + 0 -1 165 -1.1034142225980759e-002 + + 2.0675517618656158e-001 -3.3259147405624390e-001 + <_> + + 0 -1 692 -9.2857871204614639e-003 + + 4.4594430923461914e-001 -1.4160791039466858e-001 + <_> + + 0 -1 313 1.1126287281513214e-001 + + -7.9181507229804993e-002 6.0241782665252686e-001 + <_> + + 0 -1 751 3.0388862360268831e-003 + + -1.9209611415863037e-001 2.5241580605506897e-001 + <_> + + 0 -1 874 -2.0801391452550888e-002 + + 4.0978202223777771e-001 -9.8037041723728180e-002 + <_> + + 0 -1 892 1.0280778631567955e-002 + + -9.6344605088233948e-002 4.6578553318977356e-001 + <_> + + 0 -1 894 -5.4509467445313931e-003 + + 3.7336015701293945e-001 -1.0564301162958145e-001 + <_> + + 0 -1 376 -1.8031136132776737e-003 + + 3.5322296619415283e-001 -1.2390857189893723e-001 + <_> + + 0 -1 763 -4.7199074178934097e-003 + + 4.1106048226356506e-001 -9.3251600861549377e-002 + <_> + + 0 -1 323 -6.1694663017988205e-003 + + 3.3520108461380005e-001 -1.2836365401744843e-001 + <_> + + 0 -1 83 -6.9639906287193298e-003 + + 2.1963912248611450e-001 -1.8814907968044281e-001 + <_> + + 0 -1 683 -1.2535721994936466e-002 + + 3.8960403203964233e-001 -9.2547819018363953e-002 + <_> + + 0 -1 690 -1.6924859955906868e-002 + + 3.6892804503440857e-001 -9.4779089093208313e-002 + <_> + + 0 -1 54 1.6596701461821795e-003 + + -1.9850541651248932e-001 1.8709312379360199e-001 + <_> + + 0 -1 55 2.7687277644872665e-002 + + 7.0031657814979553e-002 -4.7238609194755554e-001 + <_> + + 0 -1 120 -1.1841375380754471e-002 + + 2.6792368292808533e-001 -1.2015427649021149e-001 + <_> + + 0 -1 261 -1.1048562824726105e-002 + + 3.6024233698844910e-001 -1.0290746390819550e-001 + <_> + + 0 -1 7 -6.2395762652158737e-002 + + -5.7112109661102295e-001 6.2251534312963486e-002 + <_> + + 0 -1 115 1.6063985228538513e-001 + + -7.0866517722606659e-002 4.5665851235389709e-001 + <_> + + 0 -1 232 2.1094676852226257e-001 + + 4.6763692051172256e-002 -7.0770156383514404e-001 + <_> + + 0 -1 358 -3.6897901445627213e-003 + + 3.7905600666999817e-001 -8.1804625689983368e-002 + <_> + + 0 -1 434 1.9055651500821114e-002 + + -1.0166674852371216e-001 2.7208462357521057e-001 + <_> + + 0 -1 947 -2.0279071759432554e-003 + + 3.1354761123657227e-001 -8.6894899606704712e-002 + <_> + + 0 -1 571 1.0916183236986399e-003 + + 7.6082363724708557e-002 -3.2986941933631897e-001 + <_> + + 0 -1 405 -5.5616937577724457e-002 + + -5.0169217586517334e-001 4.7203768044710159e-002 + <_> + + 0 -1 600 -2.1859644912183285e-003 + + -4.1108477115631104e-001 5.6136883795261383e-002 + <_> + + 0 -1 422 6.1606548726558685e-002 + + 3.8405187427997589e-002 -6.3146471977233887e-001 + <_> + + 0 -1 562 4.4989854097366333e-002 + + -7.8799270093441010e-002 3.5685274004936218e-001 + <_> + + 0 -1 900 1.4128099195659161e-002 + + -5.1783677190542221e-002 4.5928877592086792e-001 + <_> + + 0 -1 503 -2.2787526249885559e-002 + + -4.2496410012245178e-001 5.9822574257850647e-002 + <_> + + 0 -1 82 1.0302955284714699e-002 + + -1.5051785111427307e-001 1.8300771713256836e-001 + <_> + + 0 -1 733 -1.7985476879402995e-003 + + -5.0104391574859619e-001 5.1810134202241898e-002 + <_> + + 0 -1 783 -1.0919184423983097e-003 + + 1.6831028461456299e-001 -1.5063883364200592e-001 + <_> + + 0 -1 221 6.8745255470275879e-002 + + 2.5853699073195457e-002 -8.8202834129333496e-001 + <_> + + 0 -1 92 8.0964900553226471e-003 + + -1.4373345673084259e-001 1.6309750080108643e-001 + <_> + + 0 -1 669 -9.0615758672356606e-003 + + 4.4120463728904724e-001 -5.8328684419393539e-002 + <_> + + 0 -1 780 1.5157302841544151e-002 + + -6.2339264899492264e-002 3.7585461139678955e-001 + <_> + + 0 -1 852 -9.6248798072338104e-003 + + 3.3618140220642090e-001 -7.2854258120059967e-002 + <_> + + 0 -1 264 -2.6485668495297432e-003 + + -3.6842566728591919e-001 7.0426821708679199e-002 + <_> + + 0 -1 793 -2.5783948600292206e-002 + + -4.3915954232215881e-001 4.4346898794174194e-002 + <_> + + 0 -1 691 3.8045123219490051e-002 + + 2.0367870107293129e-002 -9.1361635923385620e-001 + <_> + + 0 -1 885 6.5762884914875031e-003 + + -7.7705778181552887e-002 2.7798372507095337e-001 + <_> + + 0 -1 527 1.4522124081850052e-002 + + -1.5169607102870941e-001 1.6986666619777679e-001 + <_> + + 0 -1 263 -2.9386302456259727e-002 + + 1.5261377394199371e-001 -1.4140434563159943e-001 + <_> + + 0 -1 252 -1.8363123759627342e-002 + + 5.7111293077468872e-001 -4.9465496093034744e-002 + <_> + + 0 -1 674 -5.1241345703601837e-002 + + -5.5350369215011597e-001 4.6895623207092285e-002 + <_> + + 0 -1 277 2.9151788912713528e-003 + + -9.0461745858192444e-002 2.4859617650508881e-001 + <_> + + 0 -1 749 1.7963855061680079e-003 + + 4.5411933213472366e-002 -5.4377090930938721e-001 + <_> + + 0 -1 198 4.7771027311682701e-003 + + -1.8385021388530731e-001 1.1213029175996780e-001 + <_> + + 0 -1 850 -1.1631837114691734e-003 + + 1.9307336211204529e-001 -1.0863032937049866e-001 + <_> + + 0 -1 739 -6.7155435681343079e-003 + + 3.4966903924942017e-001 -5.8376740664243698e-002 + <_> + + 0 -1 195 -6.6494196653366089e-002 + + 3.4874725341796875e-001 -5.7571310549974442e-002 + <_> + + 0 -1 750 -1.8951734527945518e-003 + + -5.0567263364791870e-001 4.2631916701793671e-002 + <_> + + 0 -1 832 -4.3506296351552010e-003 + + -5.0467538833618164e-001 3.8686964660882950e-002 + <_> + + 0 -1 725 5.5216029286384583e-003 + + -8.3722010254859924e-002 2.5723373889923096e-001 + <_> + + 0 -1 727 1.4174621552228928e-002 + + -5.2497696131467819e-002 4.3525427579879761e-001 + <_> + + 0 -1 25 1.1252675205469131e-002 + + -1.3312049210071564e-001 1.6167336702346802e-001 + <_> + + 0 -1 67 7.9240947961807251e-003 + + -1.1959484219551086e-001 1.6835211217403412e-001 + <_> + + 0 -1 784 1.0558717185631394e-003 + + -1.2297991663217545e-001 1.5906786918640137e-001 + <_> + + 0 -1 615 4.5906797051429749e-002 + + 3.6611214280128479e-002 -5.4427564144134521e-001 + <_> + + 0 -1 702 -9.5631275326013565e-003 + + 2.2376507520675659e-001 -9.2235445976257324e-002 + <_> + + 0 -1 290 -1.7671093344688416e-002 + + -6.2817609310150146e-001 3.3949319273233414e-002 + <_> + + 0 -1 764 -1.7188221681863070e-003 + + 2.0224046707153320e-001 -1.0232327878475189e-001 + <_> + + 0 -1 367 1.5140373259782791e-002 + + -5.6504372507333755e-002 3.4895980358123779e-001 + <_> + + 0 -1 366 -2.8949489817023277e-002 + + 3.1860530376434326e-001 -6.4782403409481049e-002 + <_> + + 0 -1 937 1.1647377163171768e-002 + + -3.6289941519498825e-002 5.4892385005950928e-001 + <_> + + 0 -1 741 -7.8217741101980209e-003 + + 2.0226673781871796e-001 -9.2000789940357208e-002 + <_> + + 0 -1 800 -8.4432046860456467e-003 + + 1.7921546101570129e-001 -1.0415823757648468e-001 + <_> + + 0 -1 854 -1.5566672198474407e-002 + + 3.9981749653816223e-001 -5.3077172487974167e-002 + <_> + + 0 -1 587 -1.2464943341910839e-002 + + 2.2552676498889923e-001 -9.0897649526596069e-002 + + <_> + 77 + -2.2761957645416260e+000 + + <_> + + 0 -1 402 -2.0046032965183258e-002 + + 2.7538803219795227e-001 -6.1105114221572876e-001 + <_> + + 0 -1 430 9.1837458312511444e-003 + + -4.0790805220603943e-001 2.0902955532073975e-001 + <_> + + 0 -1 21 4.2203110642731190e-003 + + -2.1331593394279480e-001 2.8156790137290955e-001 + <_> + + 0 -1 673 -1.4000188559293747e-002 + + 5.4547309875488281e-001 -9.6670299768447876e-002 + <_> + + 0 -1 926 -7.1464567445218563e-003 + + 4.6416798233985901e-001 -9.1218575835227966e-002 + <_> + + 0 -1 389 -1.0070230066776276e-001 + + -6.6349637508392334e-001 7.1100234985351563e-002 + <_> + + 0 -1 95 1.0696215555071831e-002 + + -1.9745405018329620e-001 2.0773608982563019e-001 + <_> + + 0 -1 149 -3.5202980041503906e-002 + + -7.6735103130340576e-001 5.0265740603208542e-002 + <_> + + 0 -1 311 7.4009604752063751e-002 + + -7.4828110635280609e-002 5.6469208002090454e-001 + <_> + + 0 -1 849 3.9156894199550152e-003 + + -1.3954170048236847e-001 2.7583837509155273e-001 + <_> + + 0 -1 335 -5.3920033387839794e-003 + + 3.0497005581855774e-001 -1.1606794595718384e-001 + <_> + + 0 -1 861 3.7412224337458611e-003 + + -7.9430311918258667e-002 4.4621026515960693e-001 + <_> + + 0 -1 868 7.1699996478855610e-003 + + -1.0092698037624359e-001 3.4257224202156067e-001 + <_> + + 0 -1 256 2.1885338425636292e-001 + + 5.8548614382743835e-002 -6.5264624357223511e-001 + <_> + + 0 -1 771 -5.3951903246343136e-003 + + 2.4228222668170929e-001 -1.3535094261169434e-001 + <_> + + 0 -1 695 -1.1738229077309370e-003 + + -4.7875782847404480e-001 6.8366907536983490e-002 + <_> + + 0 -1 666 2.1457400172948837e-002 + + -7.1118980646133423e-002 4.5637446641921997e-001 + <_> + + 0 -1 309 1.2115674093365669e-002 + + -5.8202955871820450e-002 4.6163806319236755e-001 + <_> + + 0 -1 273 -1.8007406964898109e-002 + + 3.2520860433578491e-001 -8.0533631145954132e-002 + <_> + + 0 -1 837 -1.2486811727285385e-002 + + 4.1279473900794983e-001 -5.1714207977056503e-002 + <_> + + 0 -1 820 -6.8574929609894753e-003 + + 2.6760685443878174e-001 -1.0764075815677643e-001 + <_> + + 0 -1 823 1.5099495649337769e-002 + + -7.4429087340831757e-002 4.6331611275672913e-001 + <_> + + 0 -1 418 5.6357895955443382e-003 + + 4.3343700468540192e-002 -6.8444931507110596e-001 + <_> + + 0 -1 496 -3.8149006664752960e-002 + + -5.0210982561111450e-001 4.6030189841985703e-002 + <_> + + 0 -1 488 6.9609917700290680e-002 + + -1.1487975716590881e-001 2.4527166783809662e-001 + <_> + + 0 -1 718 -1.4793819282203913e-003 + + -4.9200877547264099e-001 5.0612244755029678e-002 + <_> + + 0 -1 279 1.5615550801157951e-003 + + -1.4539672434329987e-001 1.8345473706722260e-001 + <_> + + 0 -1 444 -7.9339537769556046e-003 + + -6.9242167472839355e-001 3.2313633710145950e-002 + <_> + + 0 -1 69 3.8695998489856720e-002 + + 3.5442691296339035e-002 -5.8349174261093140e-001 + <_> + + 0 -1 27 3.4779291599988937e-002 + + -1.5399172902107239e-001 1.6672950983047485e-001 + <_> + + 0 -1 411 1.0367618873715401e-002 + + -1.0087994486093521e-001 2.7080667018890381e-001 + <_> + + 0 -1 924 -1.2352936901152134e-003 + + 2.6111871004104614e-001 -8.5407368838787079e-002 + <_> + + 0 -1 641 -3.8098993245512247e-003 + + -6.4659863710403442e-001 3.7423413246870041e-002 + <_> + + 0 -1 137 1.4491343870759010e-002 + + 1.9647786393761635e-002 -9.1479778289794922e-001 + <_> + + 0 -1 394 -8.3385318517684937e-002 + + -7.1166336536407471e-001 2.2575991228222847e-002 + <_> + + 0 -1 780 -1.9848600029945374e-002 + + 5.5954068899154663e-001 -4.1730873286724091e-002 + <_> + + 0 -1 241 -2.0697467029094696e-002 + + 3.3735945820808411e-001 -6.2523342669010162e-002 + <_> + + 0 -1 300 -1.1017382144927979e-002 + + 2.6414296030998230e-001 -1.0402554273605347e-001 + <_> + + 0 -1 78 2.7749380096793175e-003 + + -1.7511576414108276e-001 1.1715058237314224e-001 + <_> + + 0 -1 648 -1.5251778066158295e-002 + + 4.3819862604141235e-001 -4.5249339193105698e-002 + <_> + + 0 -1 108 1.1041477322578430e-002 + + 3.4502815455198288e-002 -6.0594552755355835e-001 + <_> + + 0 -1 112 -1.2095808982849121e-002 + + 2.3661912977695465e-001 -9.1371931135654449e-002 + <_> + + 0 -1 157 2.7025766670703888e-002 + + -8.9995227754116058e-002 2.4357070028781891e-001 + <_> + + 0 -1 253 2.0237984135746956e-002 + + -8.2986801862716675e-002 2.5786581635475159e-001 + <_> + + 0 -1 179 -2.5734171271324158e-002 + + -8.0328714847564697e-001 2.3963116109371185e-002 + <_> + + 0 -1 898 -7.0260283537209034e-003 + + 3.1706759333610535e-001 -6.8345665931701660e-002 + <_> + + 0 -1 785 8.9800115674734116e-003 + + -1.0068616271018982e-001 1.8837621808052063e-001 + <_> + + 0 -1 16 7.1165725588798523e-002 + + 2.9139470309019089e-002 -7.1776688098907471e-001 + <_> + + 0 -1 491 1.2540835887193680e-002 + + 2.8786318376660347e-002 -5.7155269384384155e-001 + <_> + + 0 -1 686 1.4826809987425804e-002 + + -5.3431484848260880e-002 3.7567591667175293e-001 + <_> + + 0 -1 756 -2.0885471254587173e-002 + + -5.5986213684082031e-001 3.5628255456686020e-002 + <_> + + 0 -1 395 -4.4493626803159714e-002 + + -6.0325270891189575e-001 2.8809506446123123e-002 + <_> + + 0 -1 469 -1.1605422478169203e-003 + + 1.3856917619705200e-001 -1.3231372833251953e-001 + <_> + + 0 -1 10 1.0227273404598236e-001 + + -6.3532300293445587e-002 3.1242474913597107e-001 + <_> + + 0 -1 134 -2.9290396720170975e-002 + + 1.9631637632846832e-001 -1.1773347854614258e-001 + <_> + + 0 -1 249 -2.7526013553142548e-002 + + -5.4162657260894775e-001 3.7284608930349350e-002 + <_> + + 0 -1 192 -6.8295732140541077e-002 + + -6.8661803007125854e-001 2.2030472755432129e-002 + <_> + + 0 -1 65 3.7252403795719147e-002 + + 1.4609245583415031e-002 -9.1920310258865356e-001 + <_> + + 0 -1 748 1.5438124537467957e-003 + + 3.9837431162595749e-002 -3.8516902923583984e-001 + <_> + + 0 -1 361 1.8146948888897896e-002 + + -8.1836819648742676e-002 2.2508986294269562e-001 + <_> + + 0 -1 153 -2.9618924017995596e-003 + + 1.7523658275604248e-001 -1.1428176611661911e-001 + <_> + + 0 -1 591 1.8150422722101212e-002 + + 3.3836413174867630e-002 -5.2116078138351440e-001 + <_> + + 0 -1 4 -3.3758711069822311e-002 + + 3.9958250522613525e-001 -4.5763287693262100e-002 + <_> + + 0 -1 79 -1.4841533266007900e-003 + + 1.6825924813747406e-001 -1.0908807814121246e-001 + <_> + + 0 -1 255 1.3028753455728292e-003 + + -1.0276191681623459e-001 1.8539939820766449e-001 + <_> + + 0 -1 920 1.0365190915763378e-002 + + -3.8271062076091766e-002 4.6489492058753967e-001 + <_> + + 0 -1 917 6.0222409665584564e-003 + + -6.5577961504459381e-002 2.7879896759986877e-001 + <_> + + 0 -1 105 1.0119758546352386e-001 + + -2.8418583795428276e-002 5.9041601419448853e-001 + <_> + + 0 -1 9 7.1856275200843811e-002 + + 2.8918648138642311e-002 -7.6654183864593506e-001 + <_> + + 0 -1 921 2.6606030762195587e-002 + + -6.2962368130683899e-002 3.0662769079208374e-001 + <_> + + 0 -1 384 1.5946386381983757e-002 + + -5.4566886276006699e-002 3.1234565377235413e-001 + <_> + + 0 -1 493 -8.2057155668735504e-003 + + 2.1779660880565643e-001 -8.3498664200305939e-002 + <_> + + 0 -1 270 1.2946184724569321e-002 + + 3.5179842263460159e-002 -5.1891100406646729e-001 + <_> + + 0 -1 141 -8.8035371154546738e-003 + + -4.6259808540344238e-001 3.4376677125692368e-002 + <_> + + 0 -1 477 -4.6518794260919094e-004 + + -2.6353842020034790e-001 6.2585823237895966e-002 + <_> + + 0 -1 743 2.4100966751575470e-002 + + 2.1097198128700256e-002 -7.4997889995574951e-001 + <_> + + 0 -1 170 -6.7410841584205627e-003 + + -8.7101519107818604e-001 1.3417764566838741e-002 + + <_> + 88 + -2.2931215763092041e+000 + + <_> + + 0 -1 400 -3.4661620855331421e-002 + + 2.1858149766921997e-001 -6.1113607883453369e-001 + <_> + + 0 -1 130 -8.0369092524051666e-002 + + 2.4827747046947479e-001 -3.6355212330818176e-001 + <_> + + 0 -1 911 2.5022951886057854e-003 + + -2.3158867657184601e-001 2.7031692862510681e-001 + <_> + + 0 -1 946 -6.8189981393516064e-003 + + 4.1294625401496887e-001 -1.2155807018280029e-001 + <_> + + 0 -1 459 3.2973052002489567e-003 + + -1.9231098890304565e-001 2.4345158040523529e-001 + <_> + + 0 -1 484 -6.6328542307019234e-003 + + -5.9019386768341064e-001 6.9055899977684021e-002 + <_> + + 0 -1 318 4.7803454101085663e-002 + + -5.1415871828794479e-002 5.9312266111373901e-001 + <_> + + 0 -1 350 1.3619948178529739e-002 + + -1.3920906186103821e-001 2.6931121945381165e-001 + <_> + + 0 -1 383 -3.7001757882535458e-003 + + -2.6682609319686890e-001 1.4955024421215057e-001 + <_> + + 0 -1 481 1.5951462090015411e-002 + + 3.0041305348277092e-002 -6.7943179607391357e-001 + <_> + + 0 -1 478 2.3432243615388870e-003 + + 4.9472317099571228e-002 -7.3165643215179443e-001 + <_> + + 0 -1 423 -4.0219593793153763e-003 + + -3.9633533358573914e-001 8.4367558360099792e-002 + <_> + + 0 -1 942 1.3890343718230724e-002 + + -1.1078495532274246e-001 3.0365592241287231e-001 + <_> + + 0 -1 777 -1.2505413033068180e-003 + + 2.0580539107322693e-001 -1.3080060482025146e-001 + <_> + + 0 -1 132 1.0764427483081818e-001 + + 7.7789157629013062e-002 -3.3906123042106628e-001 + <_> + + 0 -1 631 4.3811961077153683e-003 + + -1.1201550066471100e-001 2.5211933255195618e-001 + <_> + + 0 -1 686 -1.2142172083258629e-002 + + 3.7872961163520813e-001 -7.7070862054824829e-002 + <_> + + 0 -1 865 -4.4353669509291649e-003 + + 2.1270920336246490e-001 -1.2447933107614517e-001 + <_> + + 0 -1 619 1.4904401032254100e-003 + + 5.6515082716941833e-002 -5.1137989759445190e-001 + <_> + + 0 -1 792 -1.4859709888696671e-002 + + 4.4488805532455444e-001 -6.3839435577392578e-002 + <_> + + 0 -1 515 2.5369194336235523e-003 + + -1.4258751273155212e-001 1.8267530202865601e-001 + <_> + + 0 -1 558 -3.8392089772969484e-003 + + 2.3361504077911377e-001 -1.1508828401565552e-001 + <_> + + 0 -1 717 1.1982237920165062e-003 + + 4.8276327550411224e-002 -4.9198591709136963e-001 + <_> + + 0 -1 378 -1.8510858062654734e-003 + + 1.4056424796581268e-001 -1.6454231739044189e-001 + <_> + + 0 -1 918 -1.2120591476559639e-002 + + 3.7157261371612549e-001 -6.2530189752578735e-002 + <_> + + 0 -1 401 1.1447809636592865e-002 + + 4.1043214499950409e-002 -5.2705597877502441e-001 + <_> + + 0 -1 511 -1.4917021617293358e-002 + + 4.0471947193145752e-001 -5.6559596210718155e-002 + <_> + + 0 -1 472 3.1782940030097961e-002 + + 3.1669221818447113e-002 -7.1189236640930176e-001 + <_> + + 0 -1 204 2.8533251024782658e-003 + + -1.3680589199066162e-001 1.5116590261459351e-001 + <_> + + 0 -1 780 -2.0387873053550720e-002 + + 5.3041487932205200e-001 -3.6561626940965652e-002 + <_> + + 0 -1 225 1.6838125884532928e-002 + + -7.6846949756145477e-002 2.3742672801017761e-001 + <_> + + 0 -1 109 6.1867576092481613e-002 + + 3.4019146114587784e-002 -5.8948117494583130e-001 + <_> + + 0 -1 36 1.9018281251192093e-002 + + -8.8034287095069885e-002 2.8218820691108704e-001 + <_> + + 0 -1 288 9.3320291489362717e-003 + + 3.1055718660354614e-002 -6.0995835065841675e-001 + <_> + + 0 -1 553 -1.7446001293137670e-003 + + -3.1894925236701965e-001 5.7640552520751953e-002 + <_> + + 0 -1 497 -3.7551252171397209e-004 + + -2.9193779826164246e-001 6.5971598029136658e-002 + <_> + + 0 -1 906 -3.6254348233342171e-003 + + -5.2228099107742310e-001 3.2974440604448318e-002 + <_> + + 0 -1 49 3.1154025346040726e-003 + + 3.4256361424922943e-002 -4.9392226338386536e-001 + <_> + + 0 -1 761 -6.5814116969704628e-003 + + -8.5536497831344604e-001 1.7195183783769608e-002 + <_> + + 0 -1 154 3.6019994877278805e-004 + + -1.1677443981170654e-001 1.4939773082733154e-001 + <_> + + 0 -1 42 2.1521452814340591e-002 + + 6.1724990606307983e-002 -3.0582705140113831e-001 + <_> + + 0 -1 304 -3.1574545428156853e-003 + + 2.7675440907478333e-001 -7.9728044569492340e-002 + <_> + + 0 -1 608 6.8585420958697796e-003 + + -4.5498296618461609e-002 4.0476050972938538e-001 + <_> + + 0 -1 201 2.3597612977027893e-002 + + -6.8263813853263855e-002 2.7455106377601624e-001 + <_> + + 0 -1 182 4.1193626821041107e-002 + + 2.7521848678588867e-002 -7.5676482915878296e-001 + <_> + + 0 -1 133 -1.2081373482942581e-002 + + -6.3366323709487915e-001 2.1798284724354744e-002 + <_> + + 0 -1 716 -4.3834196403622627e-003 + + 2.2090788185596466e-001 -8.4348171949386597e-002 + <_> + + 0 -1 619 -9.1258285101503134e-004 + + -3.3701941370964050e-001 5.0720885396003723e-002 + <_> + + 0 -1 675 -8.5975639522075653e-003 + + 1.1742196232080460e-001 -1.5156917273998260e-001 + <_> + + 0 -1 904 -7.4663115665316582e-003 + + 4.0097141265869141e-001 -4.4417705386877060e-002 + <_> + + 0 -1 193 1.2276999652385712e-002 + + -7.3920600116252899e-002 2.5140073895454407e-001 + <_> + + 0 -1 283 -2.6504354551434517e-002 + + 1.3177506625652313e-001 -1.5368436276912689e-001 + <_> + + 0 -1 359 -2.9700677841901779e-002 + + -5.3993326425552368e-001 3.4572057425975800e-002 + <_> + + 0 -1 549 -1.0448409244418144e-002 + + 4.0107232332229614e-001 -4.6194877475500107e-002 + <_> + + 0 -1 274 5.0177536904811859e-003 + + -6.5788470208644867e-002 2.5757649540901184e-001 + <_> + + 0 -1 509 2.3238372057676315e-002 + + 2.3455925285816193e-002 -7.7699542045593262e-001 + <_> + + 0 -1 908 -4.9220167100429535e-002 + + 3.9117750525474548e-001 -4.7477778047323227e-002 + <_> + + 0 -1 936 -9.7046373412013054e-003 + + 3.3891412615776062e-001 -5.0453528761863708e-002 + <_> + + 0 -1 856 1.6913980245590210e-002 + + 4.0467191487550735e-002 -4.3838000297546387e-001 + <_> + + 0 -1 129 -7.5155749917030334e-002 + + -6.0346192121505737e-001 2.7455519884824753e-002 + <_> + + 0 -1 436 1.1202652007341385e-002 + + 2.4983508512377739e-002 -5.8596074581146240e-001 + <_> + + 0 -1 266 -3.9950847625732422e-002 + + -5.3495115041732788e-001 2.9331879690289497e-002 + <_> + + 0 -1 1 7.1143209934234619e-003 + + 3.1055316329002380e-002 -5.1785355806350708e-001 + <_> + + 0 -1 930 -2.7165055274963379e-002 + + 3.4092447161674500e-001 -4.8697970807552338e-002 + <_> + + 0 -1 135 1.5079226344823837e-002 + + -1.2215464562177658e-001 1.3460277020931244e-001 + <_> + + 0 -1 842 5.4478123784065247e-003 + + -9.0178862214088440e-002 1.9025686383247375e-001 + <_> + + 0 -1 381 -7.4798073619604111e-003 + + 2.4245217442512512e-001 -6.8944938480854034e-002 + <_> + + 0 -1 412 2.9248408973217010e-002 + + -8.9382030069828033e-002 1.9680260121822357e-001 + <_> + + 0 -1 613 -5.1055247895419598e-003 + + -4.0537586808204651e-001 4.3955769389867783e-002 + <_> + + 0 -1 417 -5.7464219629764557e-002 + + -7.8487586975097656e-001 1.8840260803699493e-002 + <_> + + 0 -1 682 -1.3099622447043657e-003 + + 1.2043049931526184e-001 -1.2602043151855469e-001 + <_> + + 0 -1 409 -1.0759031400084496e-002 + + 4.6101579070091248e-001 -3.9381790906190872e-002 + <_> + + 0 -1 440 -4.4700078666210175e-002 + + -4.9018231034278870e-001 3.9805438369512558e-002 + <_> + + 0 -1 697 2.6103520765900612e-002 + + 3.3186998218297958e-002 -4.4388863444328308e-001 + <_> + + 0 -1 722 -3.0565187335014343e-003 + + -3.1978246569633484e-001 4.8716515302658081e-002 + <_> + + 0 -1 113 6.5829858183860779e-002 + + 1.8730893731117249e-002 -7.3743104934692383e-001 + <_> + + 0 -1 57 2.5423550978302956e-003 + + 6.1064947396516800e-002 -2.3935855925083160e-001 + <_> + + 0 -1 755 -1.7830528318881989e-002 + + 3.3646425604820251e-001 -4.3943304568529129e-002 + <_> + + 0 -1 223 5.9305625036358833e-003 + + -6.8004354834556580e-002 2.1438401937484741e-001 + <_> + + 0 -1 156 -4.7256931662559509e-002 + + 2.3610806465148926e-001 -7.9913109540939331e-002 + <_> + + 0 -1 146 1.7100328579545021e-002 + + -4.8104494810104370e-002 3.4734794497489929e-001 + <_> + + 0 -1 174 -3.4349232912063599e-002 + + 1.6535361111164093e-001 -8.9516580104827881e-002 + <_> + + 0 -1 370 1.6256177332252264e-003 + + -7.9110637307167053e-002 1.9441387057304382e-001 + <_> + + 0 -1 724 -1.8217334523797035e-002 + + 4.5723637938499451e-001 -3.1193139031529427e-002 + <_> + + 0 -1 749 2.1156244911253452e-003 + + 2.7684733271598816e-002 -5.4580938816070557e-001 + <_> + + 0 -1 169 -2.6387263089418411e-002 + + 2.4881765246391296e-001 -5.7665079832077026e-002 + <_> + + 0 -1 18 4.5990861952304840e-002 + + -1.2064179033041000e-001 1.2435591220855713e-001 + <_> + + 0 -1 523 1.0681749880313873e-001 + + 5.0562918186187744e-002 -3.4403973817825317e-001 + + <_> + 85 + -2.2744355201721191e+000 + + <_> + + 0 -1 252 1.6897995024919510e-002 + + -6.9196498394012451e-001 -5.5616941303014755e-002 + <_> + + 0 -1 862 1.1701794341206551e-002 + + -2.7923116087913513e-001 3.9880016446113586e-001 + <_> + + 0 -1 618 2.7141885831952095e-002 + + 1.4071331918239594e-001 -4.8508083820343018e-001 + <_> + + 0 -1 949 -1.4755494194105268e-003 + + 3.7315878272056580e-001 -1.4565770328044891e-001 + <_> + + 0 -1 464 1.5615923330187798e-003 + + -9.6974156796932220e-002 3.6338686943054199e-001 + <_> + + 0 -1 292 -3.5046115517616272e-002 + + 6.5541946887969971e-001 -6.3480094075202942e-002 + <_> + + 0 -1 471 -2.7439640834927559e-003 + + -4.4147095084190369e-001 8.3881981670856476e-002 + <_> + + 0 -1 128 1.3140615075826645e-002 + + 6.2391642481088638e-002 -5.2230197191238403e-001 + <_> + + 0 -1 624 -2.3408148437738419e-002 + + -5.7339686155319214e-001 6.4651705324649811e-002 + <_> + + 0 -1 878 1.9269579788669944e-003 + + -1.3906709849834442e-001 2.6013106107711792e-001 + <_> + + 0 -1 510 9.1457850066944957e-004 + + 8.7518453598022461e-002 -4.9381819367408752e-001 + <_> + + 0 -1 76 -9.2652775347232819e-003 + + -4.3321701884269714e-001 5.2230410277843475e-002 + <_> + + 0 -1 437 -2.0753231365233660e-003 + + -5.0082236528396606e-001 6.1019111424684525e-002 + <_> + + 0 -1 791 1.9411731045693159e-003 + + -7.8411623835563660e-002 3.5945037007331848e-001 + <_> + + 0 -1 774 -1.2042262824252248e-003 + + 2.4952164292335510e-001 -1.1495979875326157e-001 + <_> + + 0 -1 428 4.5398853719234467e-002 + + 4.9534358084201813e-002 -5.7811236381530762e-001 + <_> + + 0 -1 243 1.6548346728086472e-002 + + 4.0716260671615601e-002 -5.4614287614822388e-001 + <_> + + 0 -1 747 -2.6393149048089981e-002 + + -6.4222121238708496e-001 3.5461250692605972e-002 + <_> + + 0 -1 315 -7.9056806862354279e-003 + + 2.7603831887245178e-001 -9.6884578466415405e-002 + <_> + + 0 -1 294 -8.6138453334569931e-003 + + 3.4293037652969360e-001 -9.2569984495639801e-002 + <_> + + 0 -1 220 1.2120688334107399e-002 + + 4.1071321815252304e-002 -5.9789633750915527e-001 + <_> + + 0 -1 213 -2.3794029839336872e-003 + + 1.7102584242820740e-001 -1.3294184207916260e-001 + <_> + + 0 -1 667 1.5191107988357544e-002 + + -5.9681247919797897e-002 3.9729467034339905e-001 + <_> + + 0 -1 497 -9.4484502915292978e-004 + + -4.9290084838867188e-001 4.8412941396236420e-002 + <_> + + 0 -1 110 -7.5291972607374191e-003 + + -4.4807717204093933e-001 4.6233657747507095e-002 + <_> + + 0 -1 226 2.0139738917350769e-002 + + -8.7880477309226990e-002 2.5611591339111328e-001 + <_> + + 0 -1 934 -6.2278993427753448e-003 + + 3.8167408108711243e-001 -5.7190407067537308e-002 + <_> + + 0 -1 485 -1.4294605702161789e-002 + + 2.2094787657260895e-001 -1.0475759208202362e-001 + <_> + + 0 -1 707 -5.4574096575379372e-003 + + 2.4806049466133118e-001 -8.7989374995231628e-002 + <_> + + 0 -1 928 1.1277779936790466e-002 + + -6.8190395832061768e-002 3.0197840929031372e-001 + <_> + + 0 -1 193 1.2542145326733589e-002 + + -7.4142687022686005e-002 2.5129452347755432e-001 + <_> + + 0 -1 161 -1.0840824991464615e-001 + + -6.1061251163482666e-001 3.2729376107454300e-002 + <_> + + 0 -1 403 1.5083145117387176e-003 + + -7.0102758705615997e-002 3.0823647975921631e-001 + <_> + + 0 -1 745 -6.4324252307415009e-002 + + -7.6457482576370239e-001 2.8049679473042488e-002 + <_> + + 0 -1 635 -1.0857153683900833e-002 + + 3.0212178826332092e-001 -6.9806925952434540e-002 + <_> + + 0 -1 93 5.6619346141815186e-002 + + -1.2564770877361298e-001 1.7084783315658569e-001 + <_> + + 0 -1 576 -2.4015609174966812e-002 + + -4.6767771244049072e-001 4.4055789709091187e-002 + <_> + + 0 -1 554 1.6571693122386932e-002 + + -1.5079098939895630e-001 1.3097193837165833e-001 + <_> + + 0 -1 452 -1.3210725039243698e-002 + + 4.0740290284156799e-001 -4.6674277633428574e-002 + <_> + + 0 -1 121 -9.6322391182184219e-003 + + -3.4347525238990784e-001 5.1074773073196411e-002 + <_> + + 0 -1 155 1.2867329642176628e-002 + + -9.5492877066135406e-002 1.9662295281887054e-001 + <_> + + 0 -1 915 2.5710439309477806e-002 + + 2.4007089436054230e-002 -7.1648633480072021e-001 + <_> + + 0 -1 116 -7.6815150678157806e-003 + + -6.2318617105484009e-001 2.3343794047832489e-002 + <_> + + 0 -1 709 -3.0568044167011976e-003 + + 1.6469573974609375e-001 -1.0857288539409637e-001 + <_> + + 0 -1 35 7.0850662887096405e-002 + + 2.7203138917684555e-002 -6.5618228912353516e-001 + <_> + + 0 -1 639 -1.9809347577393055e-003 + + -6.1460441350936890e-001 2.4520153179764748e-002 + <_> + + 0 -1 236 7.0611112751066685e-003 + + -7.4253976345062256e-002 2.5537955760955811e-001 + <_> + + 0 -1 186 3.0076294206082821e-003 + + -9.6944920718669891e-002 2.4430949985980988e-001 + <_> + + 0 -1 172 -3.0732229351997375e-002 + + -6.0257941484451294e-001 2.9267333447933197e-002 + <_> + + 0 -1 450 1.6364458948373795e-002 + + 2.3035932332277298e-002 -6.2698912620544434e-001 + <_> + + 0 -1 114 1.4988467097282410e-001 + + -4.8197094351053238e-002 3.9452686905860901e-001 + <_> + + 0 -1 197 -8.2194441929459572e-003 + + 1.0664895921945572e-001 -1.8545584380626678e-001 + <_> + + 0 -1 84 -8.2502886652946472e-003 + + 1.2596343457698822e-001 -1.4223846793174744e-001 + <_> + + 0 -1 73 1.3518449850380421e-002 + + 7.5415953993797302e-002 -2.6633748412132263e-001 + <_> + + 0 -1 446 -1.4376571401953697e-002 + + 3.4983170032501221e-001 -4.7824632376432419e-002 + <_> + + 0 -1 602 1.2734688818454742e-002 + + -5.0567589700222015e-002 3.5038754343986511e-001 + <_> + + 0 -1 857 -1.3710462953895330e-003 + + 1.8082229793071747e-001 -9.6974305808544159e-002 + <_> + + 0 -1 306 -2.6267360895872116e-002 + + 4.1006618738174438e-001 -4.0112689137458801e-002 + <_> + + 0 -1 59 2.1102664992213249e-002 + + 2.7978396043181419e-002 -5.8651155233383179e-001 + <_> + + 0 -1 909 -1.4474790543317795e-002 + + 3.6871808767318726e-001 -4.5918777585029602e-002 + <_> + + 0 -1 817 7.2440858930349350e-003 + + -7.5330309569835663e-002 2.0376025140285492e-001 + <_> + + 0 -1 815 1.0546022094786167e-002 + + -6.1415266245603561e-002 3.0458399653434753e-001 + <_> + + 0 -1 101 5.5407796055078506e-002 + + 2.5191115215420723e-002 -6.5944659709930420e-001 + <_> + + 0 -1 91 9.4949062913656235e-003 + + -1.5944498777389526e-001 1.0568149387836456e-001 + <_> + + 0 -1 925 -6.2020965851843357e-003 + + 2.7509790658950806e-001 -6.5234497189521790e-002 + <_> + + 0 -1 507 1.3317565619945526e-001 + + 2.2181767970323563e-002 -7.3483341932296753e-001 + <_> + + 0 -1 448 2.5796357076615095e-003 + + 1.9557425752282143e-002 -6.5313297510147095e-001 + <_> + + 0 -1 390 3.4660965204238892e-002 + + -5.1162503659725189e-002 3.2590973377227783e-001 + <_> + + 0 -1 30 9.5607116818428040e-002 + + -2.4739582091569901e-002 5.7837259769439697e-001 + <_> + + 0 -1 148 1.6605708748102188e-002 + + 5.7055354118347168e-002 -3.5466542840003967e-001 + <_> + + 0 -1 123 1.1670887470245361e-002 + + -8.0407410860061646e-002 1.9471745193004608e-001 + <_> + + 0 -1 208 1.0822312906384468e-002 + + 2.6732437312602997e-002 -5.8917897939682007e-001 + <_> + + 0 -1 708 2.7245271950960159e-002 + + 3.0616169795393944e-002 -4.8082390427589417e-001 + <_> + + 0 -1 217 -1.3694438338279724e-001 + + -4.8311397433280945e-001 3.3773597329854965e-002 + <_> + + 0 -1 899 -1.4758360339328647e-003 + + 2.5075155496597290e-001 -6.7788824439048767e-002 + <_> + + 0 -1 275 2.7167074382305145e-002 + + 2.5224637240171432e-002 -6.3691717386245728e-001 + <_> + + 0 -1 657 1.8945746123790741e-002 + + -5.7760879397392273e-002 2.6149269938468933e-001 + <_> + + 0 -1 102 1.2368987500667572e-001 + + -3.2363165169954300e-002 4.5130741596221924e-001 + <_> + + 0 -1 43 3.9710897952318192e-002 + + -3.0226422473788261e-002 4.6590203046798706e-001 + <_> + + 0 -1 136 -3.6290191113948822e-002 + + 3.6348423361778259e-001 -4.1874047368764877e-002 + <_> + + 0 -1 846 2.5501720607280731e-002 + + 3.5494077950716019e-002 -4.5727846026420593e-001 + <_> + + 0 -1 772 5.3392872214317322e-003 + + -6.0394711792469025e-002 2.5488924980163574e-001 + <_> + + 0 -1 950 7.9108221689239144e-004 + + 5.4109033197164536e-002 -2.7065926790237427e-001 + <_> + + 0 -1 929 -1.6701441258192062e-002 + + 4.8040628433227539e-001 -3.0404916033148766e-002 + <_> + + 0 -1 566 7.1975095197558403e-003 + + -7.0362947881221771e-002 1.9959311187267303e-001 + + <_> + 100 + -2.2887177467346191e+000 + + <_> + + 0 -1 286 -1.6051483154296875e-001 + + 9.3009121716022491e-002 -6.5350115299224854e-001 + <_> + + 0 -1 623 1.2457310222089291e-002 + + -3.1717920303344727e-001 2.3368784785270691e-001 + <_> + + 0 -1 29 2.3608796764165163e-003 + + -2.9248744249343872e-001 1.8054312467575073e-001 + <_> + + 0 -1 339 1.4379444532096386e-002 + + -5.7956293225288391e-002 7.6479458808898926e-001 + <_> + + 0 -1 871 6.8126469850540161e-003 + + -1.4748461544513702e-001 2.3818431794643402e-001 + <_> + + 0 -1 247 4.3051101267337799e-002 + + 8.7559670209884644e-002 -7.2269368171691895e-001 + <_> + + 0 -1 867 -5.0154160708189011e-002 + + 3.1918609142303467e-001 -1.3582608103752136e-001 + <_> + + 0 -1 212 -3.1796738039702177e-003 + + 2.7597072720527649e-001 -9.0522617101669312e-002 + <_> + + 0 -1 677 -1.2342665344476700e-002 + + -3.9158377051353455e-001 5.3565893322229385e-002 + <_> + + 0 -1 897 1.1861260049045086e-002 + + -6.1517983675003052e-002 3.6472269892692566e-001 + <_> + + 0 -1 252 -2.1985735744237900e-002 + + 6.5143728256225586e-001 -4.0598560124635696e-002 + <_> + + 0 -1 63 -1.2279948219656944e-002 + + 2.1631649136543274e-001 -1.2024078518152237e-001 + <_> + + 0 -1 640 8.2167033106088638e-003 + + -9.4497188925743103e-002 2.4828021228313446e-001 + <_> + + 0 -1 357 1.0111754760146141e-002 + + -3.3160492777824402e-002 6.2502938508987427e-001 + <_> + + 0 -1 924 -7.7025225618854165e-004 + + 2.3218974471092224e-001 -1.0222402960062027e-001 + <_> + + 0 -1 467 -1.4080689288675785e-003 + + 1.3447046279907227e-001 -1.6994857788085938e-001 + <_> + + 0 -1 140 1.0420590639114380e-002 + + 2.9845444485545158e-002 -7.5183397531509399e-001 + <_> + + 0 -1 356 1.3691674917936325e-002 + + 2.8088988736271858e-002 -5.7496672868728638e-001 + <_> + + 0 -1 155 1.7491653561592102e-002 + + -9.8534837365150452e-002 2.2351761162281036e-001 + <_> + + 0 -1 762 7.4883676134049892e-003 + + -9.7045794129371643e-002 2.0625646412372589e-001 + <_> + + 0 -1 104 -8.4146633744239807e-003 + + -4.8472663760185242e-001 4.1302844882011414e-002 + <_> + + 0 -1 342 3.0617808923125267e-002 + + -3.7334404885768890e-002 6.1179280281066895e-001 + <_> + + 0 -1 326 1.6346010379493237e-003 + + -1.8315000832080841e-001 1.0951925814151764e-001 + <_> + + 0 -1 901 -1.1816060170531273e-002 + + 3.0801647901535034e-001 -6.1308264732360840e-002 + <_> + + 0 -1 351 -1.0661455802619457e-002 + + 3.3249661326408386e-001 -5.0642840564250946e-002 + <_> + + 0 -1 84 -9.6190627664327621e-003 + + 1.3975782692432404e-001 -1.3763442635536194e-001 + <_> + + 0 -1 289 -1.2881286442279816e-002 + + 3.6742180585861206e-001 -5.0860747694969177e-002 + <_> + + 0 -1 824 1.3589482754468918e-002 + + -5.1274802535772324e-002 3.1885984539985657e-001 + <_> + + 0 -1 234 4.6852193772792816e-003 + + -7.2946086525917053e-002 2.5181108713150024e-001 + <_> + + 0 -1 432 1.9752513617277145e-002 + + -1.4621073007583618e-001 1.2726816534996033e-001 + <_> + + 0 -1 454 3.6341309547424316e-002 + + 2.4868825450539589e-002 -6.9947302341461182e-001 + <_> + + 0 -1 636 -1.1957485694438219e-003 + + 1.5675933659076691e-001 -1.1705233156681061e-001 + <_> + + 0 -1 40 -9.9432021379470825e-003 + + -3.4487789869308472e-001 4.9324721097946167e-002 + <_> + + 0 -1 269 6.0083293356001377e-003 + + 3.3568043261766434e-002 -4.3638321757316589e-001 + <_> + + 0 -1 14 9.6278168261051178e-002 + + 4.0310282260179520e-002 -3.9266702532768250e-001 + <_> + + 0 -1 154 4.3072472908534110e-004 + + -1.0427023470401764e-001 1.4397470653057098e-001 + <_> + + 0 -1 504 -4.7720400616526604e-003 + + -4.4805496931076050e-001 3.4855298697948456e-002 + <_> + + 0 -1 87 -1.0016669984906912e-003 + + 1.3649077713489532e-001 -1.2140301614999771e-001 + <_> + + 0 -1 254 2.3308012634515762e-002 + + 3.6392133682966232e-002 -4.5537215471267700e-001 + <_> + + 0 -1 802 -4.8546120524406433e-003 + + 1.5793082118034363e-001 -9.6185155212879181e-002 + <_> + + 0 -1 795 -6.5906550735235214e-003 + + 3.2166856527328491e-001 -4.9290131777524948e-002 + <_> + + 0 -1 126 -2.7226015925407410e-002 + + 2.8352561593055725e-001 -5.1984444260597229e-002 + <_> + + 0 -1 938 5.5622356012463570e-003 + + -3.3917389810085297e-002 4.3498530983924866e-001 + <_> + + 0 -1 534 -5.8775981888175011e-003 + + 1.7455618083477020e-001 -8.4790699183940887e-002 + <_> + + 0 -1 627 -1.1768937110900879e-003 + + -4.4403216242790222e-001 3.4572694450616837e-002 + <_> + + 0 -1 625 1.4337021857500076e-003 + + -8.8692568242549896e-002 1.6940893232822418e-001 + <_> + + 0 -1 51 1.3953970745205879e-002 + + 3.9221145212650299e-002 -3.8308286666870117e-001 + <_> + + 0 -1 106 5.3161740303039551e-002 + + -3.9227265864610672e-002 4.0637263655662537e-001 + <_> + + 0 -1 916 1.1670306324958801e-002 + + -6.2661647796630859e-002 2.2897149622440338e-001 + <_> + + 0 -1 524 -8.5611653048545122e-004 + + -3.1393322348594666e-001 4.4154506176710129e-002 + <_> + + 0 -1 362 3.1659279484301805e-003 + + -1.0416875034570694e-001 1.4386938512325287e-001 + <_> + + 0 -1 94 9.2105150222778320e-002 + + 2.5259945541620255e-002 -6.3980853557586670e-001 + <_> + + 0 -1 681 2.2438270971179008e-003 + + 2.9625944793224335e-002 -4.4926467537879944e-001 + <_> + + 0 -1 592 -1.4502200298011303e-002 + + 2.3043723404407501e-001 -6.8583212792873383e-002 + <_> + + 0 -1 17 3.1762875616550446e-002 + + -1.1820482462644577e-001 1.3017164170742035e-001 + <_> + + 0 -1 372 8.3491904661059380e-003 + + -5.4794549942016602e-002 3.0562251806259155e-001 + <_> + + 0 -1 945 1.1813377961516380e-002 + + -4.4218052178621292e-002 3.2657644152641296e-001 + <_> + + 0 -1 517 -4.3407902121543884e-003 + + 2.3012351989746094e-001 -6.2401693314313889e-002 + <_> + + 0 -1 835 -5.1777150481939316e-002 + + -4.2195704579353333e-001 3.3818338066339493e-002 + <_> + + 0 -1 573 9.5773371867835522e-004 + + -1.2982761859893799e-001 1.0589899122714996e-001 + <_> + + 0 -1 329 2.6355611626058817e-003 + + -1.1849098652601242e-001 1.2649086117744446e-001 + <_> + + 0 -1 738 -6.9736450910568237e-002 + + 5.4316484928131104e-001 -2.8468221426010132e-002 + <_> + + 0 -1 166 -4.1691556572914124e-002 + + 1.8529292941093445e-001 -7.9085260629653931e-002 + <_> + + 0 -1 72 3.0405964702367783e-002 + + -6.7499466240406036e-002 2.3227298259735107e-001 + <_> + + 0 -1 202 1.6526731848716736e-001 + + 2.3192871361970901e-002 -6.6413503885269165e-001 + <_> + + 0 -1 244 -7.9902745783329010e-003 + + 1.6699096560478210e-001 -8.0209225416183472e-002 + <_> + + 0 -1 435 -8.4093026816844940e-003 + + 3.8385570049285889e-001 -3.3093310892581940e-002 + <_> + + 0 -1 580 -6.2388582155108452e-003 + + 2.2031579911708832e-001 -5.9756781905889511e-002 + <_> + + 0 -1 416 2.2657278925180435e-002 + + 2.9750887304544449e-002 -4.3571525812149048e-001 + <_> + + 0 -1 245 -3.3273398876190186e-002 + + -7.2214579582214355e-001 1.7277766019105911e-002 + <_> + + 0 -1 805 -7.5985761359333992e-003 + + -4.8032435774803162e-001 2.3796260356903076e-002 + <_> + + 0 -1 490 1.4554752968251705e-002 + + 2.0614990964531898e-002 -5.7951718568801880e-001 + <_> + + 0 -1 348 -2.4409522302448750e-003 + + 1.5682564675807953e-001 -8.2513608038425446e-002 + <_> + + 0 -1 216 -2.7174502611160278e-002 + + -5.4916822910308838e-001 2.3511687293648720e-002 + <_> + + 0 -1 599 1.8674493767321110e-003 + + 3.5896647721529007e-002 -3.5593807697296143e-001 + <_> + + 0 -1 599 -1.7106164013966918e-003 + + -2.9658839106559753e-001 4.5083675533533096e-002 + <_> + + 0 -1 698 -1.2188366800546646e-001 + + -6.8481236696243286e-001 1.6469523310661316e-002 + <_> + + 0 -1 206 1.6452776268124580e-002 + + 1.6632448881864548e-002 -6.3031005859375000e-001 + <_> + + 0 -1 913 3.3029774203896523e-003 + + 5.2817359566688538e-002 -2.3288796842098236e-001 + <_> + + 0 -1 678 6.5974113531410694e-003 + + -5.9827085584402084e-002 2.2615881264209747e-001 + <_> + + 0 -1 947 -2.2020633332431316e-003 + + 2.2270961105823517e-001 -5.8337379246950150e-002 + <_> + + 0 -1 582 -8.9172367006540298e-003 + + 2.3682470619678497e-001 -5.5845208466053009e-002 + <_> + + 0 -1 100 -3.8233667612075806e-002 + + 1.9340702891349792e-001 -7.3905274271965027e-002 + <_> + + 0 -1 214 -5.8171510696411133e-002 + + -3.3873862028121948e-001 3.6934167146682739e-002 + <_> + + 0 -1 142 1.3129880651831627e-002 + + -5.7335916906595230e-002 2.4769510328769684e-001 + <_> + + 0 -1 606 -2.3510225117206573e-002 + + -7.3440921306610107e-001 2.1062126383185387e-002 + <_> + + 0 -1 180 -3.2106369733810425e-002 + + 1.9888436794281006e-001 -6.8882115185260773e-002 + <_> + + 0 -1 798 1.0653462260961533e-002 + + -3.1876940280199051e-002 3.7958627939224243e-001 + <_> + + 0 -1 325 2.5438904762268066e-002 + + -2.5426354259252548e-002 4.6004450321197510e-001 + <_> + + 0 -1 239 2.6357024908065796e-002 + + -4.9807246774435043e-002 2.5959959626197815e-001 + <_> + + 0 -1 525 5.6436131708323956e-003 + + -4.5353759080171585e-002 2.8858882188796997e-001 + <_> + + 0 -1 267 -4.3369065970182419e-003 + + 1.4867325127124786e-001 -8.8411331176757813e-002 + <_> + + 0 -1 215 -1.9298204779624939e-001 + + -5.3079867362976074e-001 2.5263534858822823e-002 + <_> + + 0 -1 734 5.7046163827180862e-002 + + 1.1847544461488724e-002 -8.2090246677398682e-001 + <_> + + 0 -1 352 4.9701407551765442e-002 + + 1.3225952163338661e-002 -6.8998688459396362e-001 + <_> + + 0 -1 278 -2.8292792849242687e-003 + + 1.7430420219898224e-001 -6.6152326762676239e-002 + <_> + + 0 -1 476 -1.4506326988339424e-002 + + -3.1870725750923157e-001 3.8834158331155777e-002 + <_> + + 0 -1 859 3.5564824938774109e-002 + + -5.6947514414787292e-002 2.1859169006347656e-001 + <_> + + 0 -1 98 2.0967530086636543e-002 + + -5.9812918305397034e-002 2.2214832901954651e-001 + <_> + + 0 -1 127 7.3756486177444458e-002 + + 2.5129400193691254e-002 -4.9916529655456543e-001 + + <_> + 100 + -2.2359671592712402e+000 + + <_> + + 0 -1 285 -9.3501225113868713e-002 + + -4.6586804091930389e-002 -7.2199982404708862e-001 + <_> + + 0 -1 238 4.9442616291344166e-003 + + -3.9842179417610168e-001 2.1402300894260406e-001 + <_> + + 0 -1 799 1.0407378897070885e-002 + + -1.3988684117794037e-001 3.9579308032989502e-001 + <_> + + 0 -1 322 -1.4162844978272915e-002 + + 6.4931660890579224e-001 -5.7302106171846390e-002 + <_> + + 0 -1 449 9.8008674103766680e-004 + + -1.7719046771526337e-001 2.0141038298606873e-001 + <_> + + 0 -1 218 1.4206364750862122e-002 + + -9.3258224427700043e-002 3.4144768118858337e-001 + <_> + + 0 -1 879 2.5848676450550556e-003 + + -1.4990748465061188e-001 2.2581319510936737e-001 + <_> + + 0 -1 22 8.0643901601433754e-003 + + -8.8275857269763947e-002 2.8663924336433411e-001 + <_> + + 0 -1 881 -8.6236204952001572e-003 + + 3.3490571379661560e-001 -8.2069411873817444e-002 + <_> + + 0 -1 723 1.2022950686514378e-002 + + -6.3569039106369019e-002 3.9191362261772156e-001 + <_> + + 0 -1 665 -1.5419950708746910e-002 + + 4.4637352228164673e-001 -6.6652692854404449e-002 + <_> + + 0 -1 735 -6.3524805009365082e-003 + + 1.8987259268760681e-001 -1.2892219424247742e-001 + <_> + + 0 -1 408 6.9541163742542267e-002 + + 4.3989829719066620e-002 -4.4642734527587891e-001 + <_> + + 0 -1 368 7.4983224272727966e-002 + + -5.2028596401214600e-002 5.7951992750167847e-001 + <_> + + 0 -1 486 2.0330501720309258e-003 + + -1.3492821156978607e-001 2.0830303430557251e-001 + <_> + + 0 -1 28 1.8707301467657089e-002 + + 3.0162446200847626e-002 -7.5620234012603760e-001 + <_> + + 0 -1 33 9.1869030147790909e-003 + + -1.5992332994937897e-001 1.3838322460651398e-001 + <_> + + 0 -1 473 -2.0068701356649399e-002 + + 4.9636912345886230e-001 -3.8212534040212631e-002 + <_> + + 0 -1 32 9.3690613284707069e-003 + + 2.7963882312178612e-002 -7.0575749874114990e-001 + <_> + + 0 -1 63 -9.2746205627918243e-003 + + 1.7214477062225342e-001 -1.1743877083063126e-001 + <_> + + 0 -1 671 -3.7561631761491299e-003 + + 1.9893965125083923e-001 -1.0429763048887253e-001 + <_> + + 0 -1 642 -2.8749569319188595e-003 + + -3.7584275007247925e-001 4.6344734728336334e-002 + <_> + + 0 -1 145 -1.1727647855877876e-002 + + -4.4696572422981262e-001 4.0343362838029861e-002 + <_> + + 0 -1 590 1.0945920832455158e-002 + + 5.6218206882476807e-002 -2.9916441440582275e-001 + <_> + + 0 -1 341 -1.2209227308630943e-002 + + 3.9286783337593079e-001 -4.2874403297901154e-002 + <_> + + 0 -1 447 -2.5397611781954765e-002 + + -3.8478189706802368e-001 4.3343432247638702e-002 + <_> + + 0 -1 746 -4.5675365254282951e-003 + + 2.3299069702625275e-001 -7.3202215135097504e-002 + <_> + + 0 -1 935 -6.0586854815483093e-003 + + 2.2465232014656067e-001 -7.7056594192981720e-002 + <_> + + 0 -1 131 1.5789955854415894e-002 + + -8.7083600461483002e-002 1.9742278754711151e-001 + <_> + + 0 -1 759 -1.7314129509031773e-003 + + 2.0412902534008026e-001 -8.9147895574569702e-002 + <_> + + 0 -1 939 7.3486715555191040e-003 + + -4.5228123664855957e-002 3.5152116417884827e-001 + <_> + + 0 -1 246 1.6278622671961784e-002 + + 5.0431668758392334e-002 -3.4917074441909790e-001 + <_> + + 0 -1 151 -4.9730124883353710e-003 + + 1.8474133312702179e-001 -9.4716101884841919e-002 + <_> + + 0 -1 334 1.3617072254419327e-002 + + -3.4493431448936462e-002 5.1511102914810181e-001 + <_> + + 0 -1 516 -3.5471074283123016e-002 + + -3.9388224482536316e-001 4.3496731668710709e-002 + <_> + + 0 -1 103 5.2554365247488022e-003 + + -1.2609277665615082e-001 1.2129900604486465e-001 + <_> + + 0 -1 489 -4.1965182870626450e-002 + + -6.2069499492645264e-001 2.4282006546854973e-002 + <_> + + 0 -1 61 9.6745520830154419e-002 + + 3.0231734737753868e-002 -4.6271669864654541e-001 + <_> + + 0 -1 661 -6.8811019882559776e-003 + + 2.8159707784652710e-001 -5.7276148349046707e-002 + <_> + + 0 -1 616 1.0784192010760307e-002 + + -4.8847943544387817e-002 3.2464641332626343e-001 + <_> + + 0 -1 466 -3.3961618319153786e-003 + + 4.0418368577957153e-001 -4.2481750249862671e-002 + <_> + + 0 -1 420 -6.9079827517271042e-003 + + 1.1404169350862503e-001 -1.2768752872943878e-001 + <_> + + 0 -1 167 1.4355555176734924e-001 + + -3.9203863590955734e-002 3.9233651757240295e-001 + <_> + + 0 -1 210 -3.5771834664046764e-003 + + 1.4706018567085266e-001 -1.3173283636569977e-001 + <_> + + 0 -1 439 3.0234435573220253e-002 + + 1.8946202471852303e-002 -8.0503576993942261e-001 + <_> + + 0 -1 567 7.8391470015048981e-004 + + 8.7953150272369385e-002 -1.6678945720195770e-001 + <_> + + 0 -1 42 -2.2085051983594894e-002 + + -3.8623884320259094e-001 4.2284723371267319e-002 + <_> + + 0 -1 818 -2.6205494999885559e-002 + + 1.6326524317264557e-001 -1.0225085169076920e-001 + <_> + + 0 -1 581 -9.5918308943510056e-003 + + 2.5218212604522705e-001 -6.0809265822172165e-002 + <_> + + 0 -1 242 -2.6144424453377724e-002 + + -6.9495695829391479e-001 2.2685619071125984e-002 + <_> + + 0 -1 424 9.2253191396594048e-003 + + -8.8936053216457367e-002 1.6087681055068970e-001 + <_> + + 0 -1 843 -3.1533516012132168e-003 + + 2.2563895583152771e-001 -6.3495889306068420e-002 + <_> + + 0 -1 56 -6.6996468231081963e-003 + + -2.4251624941825867e-001 6.1135187745094299e-002 + <_> + + 0 -1 282 -1.2584788724780083e-002 + + 2.9776036739349365e-001 -4.9212120473384857e-002 + <_> + + 0 -1 903 -4.2148698121309280e-003 + + 3.0259734392166138e-001 -4.4676482677459717e-002 + <_> + + 0 -1 653 -9.4317561015486717e-003 + + 1.1043215543031693e-001 -1.2356746196746826e-001 + <_> + + 0 -1 654 2.1886886097490788e-003 + + -6.1201002448797226e-002 2.2712202370166779e-001 + <_> + + 0 -1 398 2.4963401257991791e-002 + + 2.4292556568980217e-002 -5.4634368419647217e-001 + <_> + + 0 -1 205 -8.7548848241567612e-003 + + 2.5255405902862549e-001 -5.4619345813989639e-002 + <_> + + 0 -1 487 7.0049557834863663e-003 + + 3.9875753223896027e-002 -3.8009002804756165e-001 + <_> + + 0 -1 258 3.7140229251235723e-003 + + -9.3989297747612000e-002 1.5871012210845947e-001 + <_> + + 0 -1 565 -8.4969010204076767e-003 + + 2.0674896240234375e-001 -6.4190469682216644e-002 + <_> + + 0 -1 147 -5.0333619117736816e-002 + + 3.0274888873100281e-001 -4.3931342661380768e-002 + <_> + + 0 -1 80 7.2737382724881172e-003 + + -8.7947271764278412e-002 1.5312801301479340e-001 + <_> + + 0 -1 58 9.9609624594449997e-003 + + 4.6528778970241547e-002 -2.9576960206031799e-001 + <_> + + 0 -1 909 -1.3673231005668640e-002 + + 3.2159554958343506e-001 -4.6024739742279053e-002 + <_> + + 0 -1 460 2.4796918034553528e-002 + + 2.3450840264558792e-002 -6.3208627700805664e-001 + <_> + + 0 -1 790 -8.9704394340515137e-003 + + 1.7290446162223816e-001 -8.1694059073925018e-002 + <_> + + 0 -1 191 -2.3638601414859295e-003 + + 1.0641085356473923e-001 -1.2656879425048828e-001 + <_> + + 0 -1 45 -3.0800779350101948e-003 + + 1.4082619547843933e-001 -9.4026930630207062e-002 + <_> + + 0 -1 138 -1.0759308934211731e-002 + + -4.0597277879714966e-001 3.1949173659086227e-002 + <_> + + 0 -1 176 7.2143180295825005e-003 + + 1.2054420076310635e-002 -8.5538458824157715e-001 + <_> + + 0 -1 384 1.9637834280729294e-002 + + -4.5702952891588211e-002 3.0082041025161743e-001 + <_> + + 0 -1 181 -2.6587650179862976e-002 + + -4.8827502131462097e-001 2.5739965960383415e-002 + <_> + + 0 -1 429 -2.8913402929902077e-003 + + 1.5120062232017517e-001 -8.3084680140018463e-002 + <_> + + 0 -1 462 -1.7486744036432356e-004 + + -1.6527174413204193e-001 7.9318381845951080e-002 + <_> + + 0 -1 93 5.8025561273097992e-002 + + -9.3625135719776154e-002 1.3428705930709839e-001 + <_> + + 0 -1 895 7.7226985013112426e-004 + + 6.4624220132827759e-002 -1.9347991049289703e-001 + <_> + + 0 -1 506 -6.4398542046546936e-002 + + -8.3100390434265137e-001 1.3259679079055786e-002 + <_> + + 0 -1 794 2.7848746627569199e-002 + + 1.3673855923116207e-002 -7.1600478887557983e-001 + <_> + + 0 -1 308 -1.7273522913455963e-002 + + -6.1328560113906860e-001 1.7129577696323395e-002 + <_> + + 0 -1 117 2.2771380841732025e-002 + + 1.4634012244641781e-002 -6.9125133752822876e-001 + <_> + + 0 -1 155 1.7879681661725044e-002 + + -6.6493585705757141e-002 1.8808430433273315e-001 + <_> + + 0 -1 188 -7.5980871915817261e-003 + + 2.1208682656288147e-001 -6.9655627012252808e-002 + <_> + + 0 -1 468 8.3334632217884064e-003 + + -4.5091670006513596e-002 2.5533476471900940e-001 + <_> + + 0 -1 451 9.5366090536117554e-003 + + 3.3587828278541565e-002 -3.8594719767570496e-001 + <_> + + 0 -1 349 1.9022613763809204e-002 + + -4.2280010879039764e-002 3.0593034625053406e-001 + <_> + + 0 -1 522 3.6582566797733307e-002 + + -6.8928316235542297e-002 1.8224547803401947e-001 + <_> + + 0 -1 159 -2.5450623035430908e-001 + + -7.9693830013275146e-001 1.6522107645869255e-002 + <_> + + 0 -1 905 -5.8933448046445847e-002 + + 3.6613103747367859e-001 -3.7511564791202545e-002 + <_> + + 0 -1 64 8.5881188511848450e-002 + + 3.5934593528509140e-002 -3.7825050950050354e-001 + <_> + + 0 -1 810 -6.8585649132728577e-002 + + -5.4236054420471191e-001 2.0104518160223961e-002 + <_> + + 0 -1 529 4.8160655423998833e-003 + + -4.3085236102342606e-002 2.8620475530624390e-001 + <_> + + 0 -1 498 6.1599753098562360e-004 + + 5.0022143870592117e-002 -2.7295649051666260e-001 + <_> + + 0 -1 710 7.4446541257202625e-003 + + -6.7837722599506378e-002 1.9111913442611694e-001 + <_> + + 0 -1 333 1.3981198891997337e-002 + + 2.1413592621684074e-002 -6.2269157171249390e-001 + <_> + + 0 -1 941 -1.4853913336992264e-002 + + 4.0018329024314880e-001 -3.4097265452146530e-002 + <_> + + 0 -1 3 1.3497969135642052e-002 + + 3.0796987935900688e-002 -4.2009493708610535e-001 + <_> + + 0 -1 887 9.1592809185385704e-003 + + 3.0317120254039764e-002 -3.5625258088111877e-001 + <_> + + 0 -1 11 2.9643373563885689e-002 + + -1.1319724470376968e-001 1.0797596722841263e-001 + + <_> + 100 + -2.0808603763580322e+000 + + <_> + + 0 -1 284 -7.5377658009529114e-002 + + -1.0360029339790344e-001 -7.0443350076675415e-001 + <_> + + 0 -1 301 -4.6968553215265274e-003 + + 2.6461517810821533e-001 -2.6632103323936462e-001 + <_> + + 0 -1 851 4.5106429606676102e-003 + + -1.9236828386783600e-001 2.4530071020126343e-001 + <_> + + 0 -1 324 -1.3677397742867470e-002 + + 4.8842102289199829e-001 -7.8666172921657562e-002 + <_> + + 0 -1 621 8.4240939468145370e-003 + + -1.1324168741703033e-001 2.8638821840286255e-001 + <_> + + 0 -1 827 1.0163122788071632e-003 + + -1.7518180608749390e-001 1.6443368792533875e-001 + <_> + + 0 -1 375 3.2988777384161949e-003 + + -7.6549887657165527e-002 2.8202313184738159e-001 + <_> + + 0 -1 85 1.4450255781412125e-002 + + -1.4695851504802704e-001 1.9833040237426758e-001 + <_> + + 0 -1 328 5.9788756072521210e-002 + + -2.7597570791840553e-002 6.0443407297134399e-001 + <_> + + 0 -1 668 -4.0823942981660366e-003 + + 3.7376108765602112e-001 -6.6522486507892609e-002 + <_> + + 0 -1 651 9.4101820141077042e-003 + + -7.5030580163002014e-002 3.3643370866775513e-001 + <_> + + 0 -1 770 1.2895615771412849e-002 + + -6.6736064851284027e-002 3.4388977289199829e-001 + <_> + + 0 -1 0 1.8281452357769012e-003 + + -7.6577022671699524e-002 3.0855756998062134e-001 + <_> + + 0 -1 811 1.2842542491853237e-002 + + -6.6831089556217194e-002 3.5320571064949036e-001 + <_> + + 0 -1 556 2.6731539517641068e-002 + + 4.3738048523664474e-002 -5.4744714498519897e-001 + <_> + + 0 -1 593 -2.1810945123434067e-002 + + -4.9039456248283386e-001 3.5305779427289963e-002 + <_> + + 0 -1 397 1.4120168052613735e-003 + + -1.7367108166217804e-001 1.1572990566492081e-001 + <_> + + 0 -1 494 1.5707452548667789e-003 + + -1.1095841974020004e-001 1.6702808439731598e-001 + <_> + + 0 -1 869 -7.3387438897043467e-004 + + 1.8617554008960724e-001 -9.1079324483871460e-002 + <_> + + 0 -1 495 -6.4388057217001915e-004 + + -2.6845857501029968e-001 6.1447944492101669e-002 + <_> + + 0 -1 427 1.1414934694766998e-001 + + 2.0975470542907715e-002 -7.1357190608978271e-001 + <_> + + 0 -1 931 1.3404923956841230e-003 + + -9.0797364711761475e-002 1.8696101009845734e-001 + <_> + + 0 -1 46 2.3350983858108521e-002 + + 2.9028130695223808e-002 -5.2345710992813110e-001 + <_> + + 0 -1 143 1.5429967083036900e-002 + + -9.4941243529319763e-002 1.6368669271469116e-001 + <_> + + 0 -1 357 1.0943166911602020e-002 + + -3.1125182285904884e-002 5.9323889017105103e-001 + <_> + + 0 -1 705 2.6839743368327618e-003 + + -7.5778268277645111e-002 2.1814092993736267e-001 + <_> + + 0 -1 39 -6.2261838465929031e-003 + + -2.8783807158470154e-001 5.5791638791561127e-002 + <_> + + 0 -1 207 1.0724554955959320e-001 + + 2.4116434156894684e-002 -5.8035951852798462e-001 + <_> + + 0 -1 199 -6.5348353236913681e-003 + + -2.8312593698501587e-001 5.1936011761426926e-002 + <_> + + 0 -1 415 -1.1670710518956184e-003 + + -1.8463888764381409e-001 8.3705939352512360e-002 + <_> + + 0 -1 808 -1.4070876641198993e-003 + + 1.5036344528198242e-001 -1.0249616205692291e-001 + <_> + + 0 -1 122 -3.9912573993206024e-002 + + -3.8639402389526367e-001 3.9821352809667587e-002 + <_> + + 0 -1 413 1.0381672531366348e-002 + + -1.2079605460166931e-001 1.2945999205112457e-001 + <_> + + 0 -1 453 -9.9312573671340942e-002 + + 6.0750687122344971e-001 -2.8503781184554100e-002 + <_> + + 0 -1 816 1.0430534370243549e-002 + + -6.0343675315380096e-002 2.3242907226085663e-001 + <_> + + 0 -1 445 3.5891016013920307e-003 + + 4.1434522718191147e-002 -3.4602153301239014e-001 + <_> + + 0 -1 788 1.0015227831900120e-002 + + -5.6792665272951126e-002 2.6468506455421448e-001 + <_> + + 0 -1 749 -9.2321680858731270e-004 + + -3.1470552086830139e-001 4.6375431120395660e-002 + <_> + + 0 -1 384 2.0065717399120331e-002 + + -4.7381434589624405e-002 3.2506260275840759e-001 + <_> + + 0 -1 782 2.0691626705229282e-003 + + -8.8068872690200806e-002 1.7662553489208221e-001 + <_> + + 0 -1 150 -2.0592920482158661e-002 + + 2.1614389121532440e-001 -6.7837409675121307e-002 + <_> + + 0 -1 729 -2.5132454931735992e-002 + + 2.9875260591506958e-001 -5.0642240792512894e-002 + <_> + + 0 -1 893 1.6763649880886078e-002 + + -5.6825786828994751e-002 2.6688432693481445e-001 + <_> + + 0 -1 5 2.4304956197738647e-002 + + -7.3691956698894501e-002 1.8922545015811920e-001 + <_> + + 0 -1 604 5.2945837378501892e-003 + + -6.8203508853912354e-002 2.3238344490528107e-001 + <_> + + 0 -1 146 1.7194304615259171e-002 + + -4.1591234505176544e-002 3.3211585879325867e-001 + <_> + + 0 -1 119 -1.0534466244280338e-002 + + 2.0838305354118347e-001 -8.1538312137126923e-002 + <_> + + 0 -1 171 3.3360864967107773e-002 + + -6.7458741366863251e-002 2.5852772593498230e-001 + <_> + + 0 -1 183 4.6436764299869537e-002 + + 1.9892208278179169e-002 -8.1141030788421631e-001 + <_> + + 0 -1 8 -4.1056036949157715e-002 + + -4.9327704310417175e-001 2.3769956082105637e-002 + <_> + + 0 -1 514 -1.8552202731370926e-002 + + -5.7725781202316284e-001 2.1620772778987885e-002 + <_> + + 0 -1 310 -1.5498932916671038e-003 + + 1.3356749713420868e-001 -1.0274448245763779e-001 + <_> + + 0 -1 144 -1.2870179489254951e-002 + + -6.8844175338745117e-001 1.6567943617701530e-002 + <_> + + 0 -1 162 1.1060645803809166e-002 + + -6.5967611968517303e-002 2.0074956119060516e-001 + <_> + + 0 -1 737 -1.9628754816949368e-003 + + 1.7064040899276733e-001 -7.5410693883895874e-002 + <_> + + 0 -1 118 3.2771207392215729e-002 + + 1.7548711970448494e-002 -7.5103056430816650e-001 + <_> + + 0 -1 62 -5.6525086984038353e-004 + + 1.0811340808868408e-001 -1.1322978138923645e-001 + <_> + + 0 -1 920 6.6395318135619164e-003 + + -4.8233803361654282e-002 2.5985202193260193e-001 + <_> + + 0 -1 933 5.3288890048861504e-003 + + -5.8816779404878616e-002 2.0709130167961121e-001 + <_> + + 0 -1 30 9.5648169517517090e-002 + + -2.3178230971097946e-002 5.3592687845230103e-001 + <_> + + 0 -1 505 2.3851044476032257e-002 + + 3.9325568825006485e-002 -3.2090389728546143e-001 + <_> + + 0 -1 380 4.9215428531169891e-002 + + -8.0275781452655792e-002 2.1604713797569275e-001 + <_> + + 0 -1 404 5.1129907369613647e-002 + + 2.0917052403092384e-002 -6.7675739526748657e-001 + <_> + + 0 -1 470 -9.5789285842329264e-004 + + 1.3741976022720337e-001 -9.2351287603378296e-002 + <_> + + 0 -1 38 4.3797735124826431e-002 + + -5.2134189754724503e-002 2.3939897119998932e-001 + <_> + + 0 -1 177 -3.7566445767879486e-002 + + -5.0337618589401245e-001 3.2042562961578369e-002 + <_> + + 0 -1 293 -6.6379196941852570e-003 + + 2.3610880970954895e-001 -5.9629496186971664e-002 + <_> + + 0 -1 569 4.4785980135202408e-003 + + -6.9053784012794495e-002 1.8493640422821045e-001 + <_> + + 0 -1 680 -1.9650494214147329e-003 + + -5.0821167230606079e-001 2.3264253512024879e-002 + <_> + + 0 -1 826 -8.4884336683899164e-004 + + 1.7365188896656036e-001 -7.3235429823398590e-002 + <_> + + 0 -1 421 -5.7333573698997498e-002 + + -3.1190565228462219e-001 4.1780386120080948e-002 + <_> + + 0 -1 599 1.8632253631949425e-003 + + 3.1603202223777771e-002 -3.6946067214012146e-001 + <_> + + 0 -1 336 -2.0456001162528992e-002 + + 3.0203589797019958e-001 -4.1565753519535065e-002 + <_> + + 0 -1 938 5.5945245549082756e-003 + + -3.2002035528421402e-002 3.7638634443283081e-001 + <_> + + 0 -1 152 -1.8559835851192474e-002 + + 2.4045053124427795e-001 -5.1895260810852051e-002 + <_> + + 0 -1 706 -1.0816272348165512e-002 + + -4.1922396421432495e-001 3.0057143419981003e-002 + <_> + + 0 -1 717 -1.5897199045866728e-003 + + -3.8717699050903320e-001 2.7556220069527626e-002 + <_> + + 0 -1 337 -1.8832697533071041e-003 + + 1.8341954052448273e-001 -6.8402133882045746e-002 + <_> + + 0 -1 107 -6.8602010607719421e-002 + + -4.3040940165519714e-001 2.7811320498585701e-002 + <_> + + 0 -1 605 3.1656727194786072e-002 + + 1.4831826090812683e-002 -6.9200241565704346e-001 + <_> + + 0 -1 178 -1.1699689552187920e-002 + + -4.7378033399581909e-001 2.2049939259886742e-002 + <_> + + 0 -1 175 -4.9252226948738098e-002 + + 2.0226360857486725e-001 -5.8283366262912750e-002 + <_> + + 0 -1 200 -1.4749905094504356e-002 + + -6.3420587778091431e-001 1.7177773639559746e-002 + <_> + + 0 -1 594 1.3355823233723640e-002 + + -5.3626276552677155e-002 2.3158134520053864e-001 + <_> + + 0 -1 688 2.7912877500057220e-002 + + -3.2106213271617889e-002 3.9656600356101990e-001 + <_> + + 0 -1 433 -1.8341368064284325e-002 + + 3.0023518204689026e-001 -3.9390310645103455e-002 + <_> + + 0 -1 320 3.3382259309291840e-002 + + -5.0307501107454300e-002 2.3759432137012482e-001 + <_> + + 0 -1 414 2.2881597280502319e-002 + + 2.9198208823800087e-002 -4.3145897984504700e-001 + <_> + + 0 -1 271 1.7183616757392883e-001 + + 1.9492210820317268e-002 -5.7107782363891602e-001 + <_> + + 0 -1 889 4.3015915900468826e-002 + + 1.8091753125190735e-002 -5.8863103389739990e-001 + <_> + + 0 -1 545 -1.2893548235297203e-002 + + 1.4482001960277557e-001 -8.2013383507728577e-002 + <_> + + 0 -1 910 5.9737069532275200e-003 + + -7.2960324585437775e-002 1.6368763148784637e-001 + <_> + + 0 -1 664 1.1285657994449139e-002 + + -4.4454183429479599e-002 2.5658103823661804e-001 + <_> + + 0 -1 951 -9.9752098321914673e-004 + + -2.6904699206352234e-001 4.0726143866777420e-002 + <_> + + 0 -1 111 2.1743077784776688e-002 + + 1.7429182305932045e-002 -6.2877011299133301e-001 + <_> + + 0 -1 866 3.7145437672734261e-003 + + -8.1450186669826508e-002 1.3246190547943115e-001 + <_> + + 0 -1 888 -1.5904067084193230e-002 + + 3.2105255126953125e-001 -3.4731235355138779e-002 + <_> + + 0 -1 907 -2.6992281898856163e-002 + + -6.8835800886154175e-001 1.6344616189599037e-002 + <_> + + 0 -1 830 6.8261945853009820e-004 + + -1.1232791095972061e-001 9.8401591181755066e-002 + <_> + + 0 -1 807 -2.5938652455806732e-002 + + -5.0289982557296753e-001 2.3814825341105461e-002 + + <_> + + <_> + 0 0 2 2 -1. + <_> + 1 0 1 2 2. + 0 + <_> + + <_> + 0 0 1 6 -1. + <_> + 0 2 1 2 3. + 0 + <_> + + <_> + 0 0 2 4 -1. + <_> + 1 0 1 4 2. + 0 + <_> + + <_> + 0 0 2 6 -1. + <_> + 0 2 2 2 3. + 0 + <_> + + <_> + 0 0 8 7 -1. + <_> + 2 0 4 7 2. + 0 + <_> + + <_> + 0 0 8 8 -1. + <_> + 2 0 4 8 2. + 0 + <_> + + <_> + 0 0 6 13 -1. + <_> + 2 0 2 13 3. + 0 + <_> + + <_> + 0 0 12 13 -1. + <_> + 3 0 6 13 2. + 0 + <_> + + <_> + 0 0 12 4 -1. + <_> + 4 0 4 4 3. + 0 + <_> + + <_> + 0 0 18 4 -1. + <_> + 6 0 6 4 3. + 0 + <_> + + <_> + 0 0 36 11 -1. + <_> + 12 0 12 11 3. + 0 + <_> + + <_> + 0 0 17 12 -1. + <_> + 0 4 17 4 3. + 0 + <_> + + <_> + 0 0 36 13 -1. + <_> + 18 0 18 13 2. + 0 + <_> + + <_> + 0 0 22 2 -1. + <_> + 0 1 22 1 2. + 0 + <_> + + <_> + 0 0 24 9 -1. + <_> + 0 3 24 3 3. + 0 + <_> + + <_> + 0 0 29 2 -1. + <_> + 0 1 29 1 2. + 0 + <_> + + <_> + 0 0 34 2 -1. + <_> + 0 1 34 1 2. + 0 + <_> + + <_> + 0 0 36 8 -1. + <_> + 0 2 36 4 2. + 0 + <_> + + <_> + 0 0 42 6 -1. + <_> + 0 3 42 3 2. + 0 + <_> + + <_> + 0 0 44 2 -1. + <_> + 0 1 44 1 2. + 0 + <_> + + <_> + 0 0 51 8 -1. + <_> + 0 2 51 4 2. + 0 + <_> + + <_> + 0 1 2 9 -1. + <_> + 1 1 1 9 2. + 0 + <_> + + <_> + 0 1 2 12 -1. + <_> + 1 1 1 12 2. + 0 + <_> + + <_> + 0 1 2 12 -1. + <_> + 0 7 2 6 2. + 0 + <_> + + <_> + 0 1 8 10 -1. + <_> + 0 1 4 5 2. + <_> + 4 6 4 5 2. + 0 + <_> + + <_> + 0 1 7 12 -1. + <_> + 0 4 7 6 2. + 0 + <_> + + <_> + 0 1 12 12 -1. + <_> + 0 5 12 4 3. + 0 + <_> + + <_> + 0 1 17 12 -1. + <_> + 0 5 17 4 3. + 0 + <_> + + <_> + 0 2 6 2 -1. + <_> + 2 2 2 2 3. + 0 + <_> + + <_> + 0 2 4 6 -1. + <_> + 2 2 2 6 2. + 0 + <_> + + <_> + 0 2 20 7 -1. + <_> + 5 2 10 7 2. + 0 + <_> + + <_> + 0 3 1 4 -1. + <_> + 0 5 1 2 2. + 0 + <_> + + <_> + 0 3 4 2 -1. + <_> + 1 3 2 2 2. + 0 + <_> + + <_> + 0 3 6 9 -1. + <_> + 2 3 2 9 3. + 0 + <_> + + <_> + 0 3 4 10 -1. + <_> + 2 3 2 10 2. + 0 + <_> + + <_> + 0 3 6 10 -1. + <_> + 2 3 2 10 3. + 0 + <_> + + <_> + 0 3 9 3 -1. + <_> + 3 3 3 3 3. + 0 + <_> + + <_> + 0 3 3 9 -1. + <_> + 0 6 3 3 3. + 0 + <_> + + <_> + 0 3 9 6 -1. + <_> + 3 3 3 6 3. + 0 + <_> + + <_> + 0 3 8 4 -1. + <_> + 0 3 4 2 2. + <_> + 4 5 4 2 2. + 0 + <_> + + <_> + 0 3 8 6 -1. + <_> + 0 3 4 3 2. + <_> + 4 6 4 3 2. + 0 + <_> + + <_> + 0 3 16 10 -1. + <_> + 4 3 8 10 2. + 0 + <_> + + <_> + 0 3 10 6 -1. + <_> + 0 5 10 2 3. + 0 + <_> + + <_> + 0 3 16 8 -1. + <_> + 0 7 16 4 2. + 0 + <_> + + <_> + 0 3 51 8 -1. + <_> + 0 7 51 4 2. + 0 + <_> + + <_> + 0 4 3 3 -1. + <_> + 1 5 1 1 9. + 0 + <_> + + <_> + 0 4 3 9 -1. + <_> + 0 7 3 3 3. + 0 + <_> + + <_> + 0 4 20 7 -1. + <_> + 10 4 10 7 2. + 0 + <_> + + <_> + 0 4 34 9 -1. + <_> + 17 4 17 9 2. + 0 + <_> + + <_> + 0 5 1 4 -1. + <_> + 0 7 1 2 2. + 0 + <_> + + <_> + 0 5 2 8 -1. + <_> + 1 5 1 8 2. + 0 + <_> + + <_> + 0 5 10 4 -1. + <_> + 0 7 10 2 2. + 0 + <_> + + <_> + 0 5 22 6 -1. + <_> + 0 8 22 3 2. + 0 + <_> + + <_> + 0 6 2 7 -1. + <_> + 1 6 1 7 2. + 0 + <_> + + <_> + 0 6 4 2 -1. + <_> + 2 6 2 2 2. + 0 + <_> + + <_> + 0 6 6 5 -1. + <_> + 2 6 2 5 3. + 0 + <_> + + <_> + 0 6 3 6 -1. + <_> + 0 8 3 2 3. + 0 + <_> + + <_> + 0 6 4 6 -1. + <_> + 0 9 4 3 2. + 0 + <_> + + <_> + 0 6 13 4 -1. + <_> + 0 8 13 2 2. + 0 + <_> + + <_> + 0 6 14 4 -1. + <_> + 0 8 14 2 2. + 0 + <_> + + <_> + 0 6 33 4 -1. + <_> + 0 8 33 2 2. + 0 + <_> + + <_> + 0 6 44 6 -1. + <_> + 0 8 44 2 3. + 0 + <_> + + <_> + 0 7 1 6 -1. + <_> + 0 10 1 3 2. + 0 + <_> + + <_> + 0 7 7 6 -1. + <_> + 0 10 7 3 2. + 0 + <_> + + <_> + 0 7 25 6 -1. + <_> + 0 9 25 2 3. + 0 + <_> + + <_> + 0 7 32 3 -1. + <_> + 0 8 32 1 3. + 0 + <_> + + <_> + 0 8 12 5 -1. + <_> + 3 8 6 5 2. + 0 + <_> + + <_> + 0 8 12 2 -1. + <_> + 6 8 6 2 2. + 0 + <_> + + <_> + 0 8 21 4 -1. + <_> + 7 8 7 4 3. + 0 + <_> + + <_> + 0 8 25 4 -1. + <_> + 0 9 25 2 2. + 0 + <_> + + <_> + 0 9 15 4 -1. + <_> + 5 9 5 4 3. + 0 + <_> + + <_> + 0 9 28 4 -1. + <_> + 7 9 14 4 2. + 0 + <_> + + <_> + 0 9 28 4 -1. + <_> + 14 9 14 4 2. + 0 + <_> + + <_> + 0 9 46 2 -1. + <_> + 0 10 46 1 2. + 0 + <_> + + <_> + 0 9 50 2 -1. + <_> + 0 10 50 1 2. + 0 + <_> + + <_> + 0 10 6 3 -1. + <_> + 3 10 3 3 2. + 0 + <_> + + <_> + 0 10 12 3 -1. + <_> + 3 10 6 3 2. + 0 + <_> + + <_> + 0 10 10 3 -1. + <_> + 5 10 5 3 2. + 0 + <_> + + <_> + 0 10 12 3 -1. + <_> + 6 10 6 3 2. + 0 + <_> + + <_> + 0 11 5 2 -1. + <_> + 0 12 5 1 2. + 0 + <_> + + <_> + 0 11 26 2 -1. + <_> + 13 11 13 2 2. + 0 + <_> + + <_> + 0 11 28 2 -1. + <_> + 14 11 14 2 2. + 0 + <_> + + <_> + 0 11 42 2 -1. + <_> + 14 11 14 2 3. + 0 + <_> + + <_> + 0 11 19 2 -1. + <_> + 0 12 19 1 2. + 0 + <_> + + <_> + 0 11 23 2 -1. + <_> + 0 12 23 1 2. + 0 + <_> + + <_> + 1 0 5 12 -1. + <_> + 1 3 5 6 2. + 0 + <_> + + <_> + 1 0 15 4 -1. + <_> + 6 0 5 4 3. + 0 + <_> + + <_> + 1 0 14 1 -1. + <_> + 8 0 7 1 2. + 0 + <_> + + <_> + 1 0 8 2 -1. + <_> + 1 1 8 1 2. + 0 + <_> + + <_> + 1 0 9 2 -1. + <_> + 1 1 9 1 2. + 0 + <_> + + <_> + 1 0 11 2 -1. + <_> + 1 1 11 1 2. + 0 + <_> + + <_> + 1 0 17 9 -1. + <_> + 1 3 17 3 3. + 0 + <_> + + <_> + 1 0 21 2 -1. + <_> + 1 1 21 1 2. + 0 + <_> + + <_> + 1 0 41 6 -1. + <_> + 1 3 41 3 2. + 0 + <_> + + <_> + 1 0 47 2 -1. + <_> + 1 1 47 1 2. + 0 + <_> + + <_> + 1 1 6 8 -1. + <_> + 3 1 2 8 3. + 0 + <_> + + <_> + 1 1 6 9 -1. + <_> + 3 1 2 9 3. + 0 + <_> + + <_> + 1 1 6 11 -1. + <_> + 3 1 2 11 3. + 0 + <_> + + <_> + 1 1 9 5 -1. + <_> + 4 1 3 5 3. + 0 + <_> + + <_> + 1 1 20 7 -1. + <_> + 6 1 10 7 2. + 0 + <_> + + <_> + 1 1 20 8 -1. + <_> + 6 1 10 8 2. + 0 + <_> + + <_> + 1 1 9 9 -1. + <_> + 1 4 9 3 3. + 0 + <_> + + <_> + 1 1 27 10 -1. + <_> + 10 1 9 10 3. + 0 + <_> + + <_> + 1 1 10 6 -1. + <_> + 1 3 10 2 3. + 0 + <_> + + <_> + 1 2 4 6 -1. + <_> + 1 2 2 3 2. + <_> + 3 5 2 3 2. + 0 + <_> + + <_> + 1 2 20 8 -1. + <_> + 6 2 10 8 2. + 0 + <_> + + <_> + 1 2 13 10 -1. + <_> + 1 7 13 5 2. + 0 + <_> + + <_> + 1 2 34 7 -1. + <_> + 18 2 17 7 2. + 0 + <_> + + <_> + 1 3 4 3 -1. + <_> + 2 3 2 3 2. + 0 + <_> + + <_> + 1 3 6 8 -1. + <_> + 3 3 2 8 3. + 0 + <_> + + <_> + 1 3 6 4 -1. + <_> + 1 3 3 2 2. + <_> + 4 5 3 2 2. + 0 + <_> + + <_> + 1 3 6 8 -1. + <_> + 1 3 3 4 2. + <_> + 4 7 3 4 2. + 0 + <_> + + <_> + 1 3 6 5 -1. + <_> + 4 3 3 5 2. + 0 + <_> + + <_> + 1 3 15 3 -1. + <_> + 6 3 5 3 3. + 0 + <_> + + <_> + 1 3 36 9 -1. + <_> + 13 3 12 9 3. + 0 + <_> + + <_> + 1 3 36 10 -1. + <_> + 13 3 12 10 3. + 0 + <_> + + <_> + 1 4 4 2 -1. + <_> + 2 4 2 2 2. + 0 + <_> + + <_> + 1 4 6 2 -1. + <_> + 3 4 2 2 3. + 0 + <_> + + <_> + 1 4 6 3 -1. + <_> + 3 4 2 3 3. + 0 + <_> + + <_> + 1 4 6 4 -1. + <_> + 4 4 3 4 2. + 0 + <_> + + <_> + 1 4 6 6 -1. + <_> + 4 4 3 6 2. + 0 + <_> + + <_> + 1 4 9 4 -1. + <_> + 1 6 9 2 2. + 0 + <_> + + <_> + 1 5 12 3 -1. + <_> + 5 6 4 1 9. + 0 + <_> + + <_> + 1 7 16 6 -1. + <_> + 1 7 8 3 2. + <_> + 9 10 8 3 2. + 0 + <_> + + <_> + 1 11 46 2 -1. + <_> + 1 12 46 1 2. + 0 + <_> + + <_> + 1 11 50 2 -1. + <_> + 1 12 50 1 2. + 0 + <_> + + <_> + 1 12 50 1 -1. + <_> + 26 12 25 1 2. + 0 + <_> + + <_> + 2 0 6 13 -1. + <_> + 4 0 2 13 3. + 0 + <_> + + <_> + 2 0 24 3 -1. + <_> + 8 0 12 3 2. + 0 + <_> + + <_> + 2 0 12 10 -1. + <_> + 8 0 6 10 2. + 0 + <_> + + <_> + 2 0 33 11 -1. + <_> + 13 0 11 11 3. + 0 + <_> + + <_> + 2 0 20 2 -1. + <_> + 2 1 20 1 2. + 0 + <_> + + <_> + 2 0 48 12 -1. + <_> + 26 0 24 12 2. + 0 + <_> + + <_> + 2 1 4 6 -1. + <_> + 2 1 2 3 2. + <_> + 4 4 2 3 2. + 0 + <_> + + <_> + 2 1 16 9 -1. + <_> + 10 1 8 9 2. + 0 + <_> + + <_> + 2 1 11 9 -1. + <_> + 2 4 11 3 3. + 0 + <_> + + <_> + 2 1 18 10 -1. + <_> + 2 6 18 5 2. + 0 + <_> + + <_> + 2 2 3 2 -1. + <_> + 3 3 1 2 3. + 1 + <_> + + <_> + 2 3 16 1 -1. + <_> + 6 3 8 1 2. + 0 + <_> + + <_> + 2 3 25 6 -1. + <_> + 2 6 25 3 2. + 0 + <_> + + <_> + 2 4 4 2 -1. + <_> + 3 4 2 2 2. + 0 + <_> + + <_> + 2 5 2 8 -1. + <_> + 2 5 1 4 2. + <_> + 3 9 1 4 2. + 0 + <_> + + <_> + 2 5 6 4 -1. + <_> + 5 5 3 4 2. + 0 + <_> + + <_> + 2 5 10 8 -1. + <_> + 2 7 10 4 2. + 0 + <_> + + <_> + 2 7 4 6 -1. + <_> + 2 7 2 3 2. + <_> + 4 10 2 3 2. + 0 + <_> + + <_> + 2 7 4 4 -1. + <_> + 2 9 4 2 2. + 0 + <_> + + <_> + 2 8 14 2 -1. + <_> + 9 8 7 2 2. + 0 + <_> + + <_> + 2 8 24 5 -1. + <_> + 14 8 12 5 2. + 0 + <_> + + <_> + 2 9 8 3 -1. + <_> + 6 9 4 3 2. + 0 + <_> + + <_> + 2 9 12 4 -1. + <_> + 6 9 4 4 3. + 0 + <_> + + <_> + 2 9 32 4 -1. + <_> + 2 9 16 2 2. + <_> + 18 11 16 2 2. + 0 + <_> + + <_> + 2 10 12 2 -1. + <_> + 2 10 6 1 2. + <_> + 8 11 6 1 2. + 0 + <_> + + <_> + 2 11 38 1 -1. + <_> + 21 11 19 1 2. + 0 + <_> + + <_> + 2 12 32 1 -1. + <_> + 18 12 16 1 2. + 0 + <_> + + <_> + 3 0 1 2 -1. + <_> + 3 1 1 1 2. + 0 + <_> + + <_> + 3 0 3 9 -1. + <_> + 4 3 1 3 9. + 0 + <_> + + <_> + 3 0 6 11 -1. + <_> + 5 0 2 11 3. + 0 + <_> + + <_> + 3 0 6 12 -1. + <_> + 5 0 2 12 3. + 0 + <_> + + <_> + 3 0 16 10 -1. + <_> + 11 0 8 10 2. + 0 + <_> + + <_> + 3 0 42 9 -1. + <_> + 17 3 14 3 9. + 0 + <_> + + <_> + 3 0 15 6 -1. + <_> + 3 3 15 3 2. + 0 + <_> + + <_> + 3 0 30 13 -1. + <_> + 18 0 15 13 2. + 0 + <_> + + <_> + 3 1 3 9 -1. + <_> + 4 1 1 9 3. + 0 + <_> + + <_> + 3 1 6 10 -1. + <_> + 5 1 2 10 3. + 0 + <_> + + <_> + 3 1 15 12 -1. + <_> + 8 5 5 4 9. + 0 + <_> + + <_> + 3 1 21 3 -1. + <_> + 10 1 7 3 3. + 0 + <_> + + <_> + 3 1 32 7 -1. + <_> + 11 1 16 7 2. + 0 + <_> + + <_> + 3 1 33 11 -1. + <_> + 14 1 11 11 3. + 0 + <_> + + <_> + 3 1 42 9 -1. + <_> + 17 4 14 3 9. + 0 + <_> + + <_> + 3 1 29 10 -1. + <_> + 3 6 29 5 2. + 0 + <_> + + <_> + 3 2 1 2 -1. + <_> + 3 2 1 1 2. + 1 + <_> + + <_> + 3 2 6 11 -1. + <_> + 5 2 2 11 3. + 0 + <_> + + <_> + 3 2 16 3 -1. + <_> + 7 2 8 3 2. + 0 + <_> + + <_> + 3 2 46 6 -1. + <_> + 3 5 46 3 2. + 0 + <_> + + <_> + 3 3 14 10 -1. + <_> + 10 3 7 10 2. + 0 + <_> + + <_> + 3 3 40 5 -1. + <_> + 13 3 20 5 2. + 0 + <_> + + <_> + 3 5 2 2 -1. + <_> + 4 5 1 2 2. + 0 + <_> + + <_> + 3 5 16 5 -1. + <_> + 7 5 8 5 2. + 0 + <_> + + <_> + 3 5 16 2 -1. + <_> + 3 5 8 1 2. + <_> + 11 6 8 1 2. + 0 + <_> + + <_> + 3 6 8 3 -1. + <_> + 7 6 4 3 2. + 0 + <_> + + <_> + 3 7 16 6 -1. + <_> + 11 7 8 6 2. + 0 + <_> + + <_> + 3 7 45 2 -1. + <_> + 3 8 45 1 2. + 0 + <_> + + <_> + 3 9 9 4 -1. + <_> + 6 9 3 4 3. + 0 + <_> + + <_> + 3 10 6 3 -1. + <_> + 5 11 2 1 9. + 0 + <_> + + <_> + 3 11 9 2 -1. + <_> + 3 12 9 1 2. + 0 + <_> + + <_> + 3 11 48 2 -1. + <_> + 3 12 48 1 2. + 0 + <_> + + <_> + 4 0 4 1 -1. + <_> + 4 0 2 1 2. + 1 + <_> + + <_> + 4 0 6 11 -1. + <_> + 6 0 2 11 3. + 0 + <_> + + <_> + 4 0 4 12 -1. + <_> + 4 3 4 6 2. + 0 + <_> + + <_> + 4 0 18 4 -1. + <_> + 10 0 6 4 3. + 0 + <_> + + <_> + 4 1 6 9 -1. + <_> + 6 1 2 9 3. + 0 + <_> + + <_> + 4 1 14 2 -1. + <_> + 11 1 7 2 2. + 0 + <_> + + <_> + 4 1 36 4 -1. + <_> + 22 1 18 4 2. + 0 + <_> + + <_> + 4 2 3 11 -1. + <_> + 5 2 1 11 3. + 0 + <_> + + <_> + 4 2 6 5 -1. + <_> + 6 2 2 5 3. + 0 + <_> + + <_> + 4 2 6 10 -1. + <_> + 6 2 2 10 3. + 0 + <_> + + <_> + 4 2 10 10 -1. + <_> + 4 2 5 5 2. + <_> + 9 7 5 5 2. + 0 + <_> + + <_> + 4 2 21 3 -1. + <_> + 11 2 7 3 3. + 0 + <_> + + <_> + 4 2 27 8 -1. + <_> + 4 4 27 4 2. + 0 + <_> + + <_> + 4 3 3 2 -1. + <_> + 5 4 1 2 3. + 1 + <_> + + <_> + 4 3 2 6 -1. + <_> + 4 5 2 2 3. + 0 + <_> + + <_> + 4 3 6 5 -1. + <_> + 6 3 2 5 3. + 0 + <_> + + <_> + 4 3 30 6 -1. + <_> + 14 5 10 2 9. + 0 + <_> + + <_> + 4 3 37 8 -1. + <_> + 4 5 37 4 2. + 0 + <_> + + <_> + 4 4 4 2 -1. + <_> + 5 5 2 2 2. + 1 + <_> + + <_> + 4 4 4 2 -1. + <_> + 4 4 2 2 2. + 1 + <_> + + <_> + 4 4 7 3 -1. + <_> + 4 5 7 1 3. + 0 + <_> + + <_> + 4 4 23 9 -1. + <_> + 4 7 23 3 3. + 0 + <_> + + <_> + 4 5 5 4 -1. + <_> + 4 7 5 2 2. + 0 + <_> + + <_> + 4 7 42 4 -1. + <_> + 4 8 42 2 2. + 0 + <_> + + <_> + 4 8 16 1 -1. + <_> + 12 8 8 1 2. + 0 + <_> + + <_> + 4 9 24 4 -1. + <_> + 10 9 12 4 2. + 0 + <_> + + <_> + 4 10 10 2 -1. + <_> + 4 10 5 1 2. + <_> + 9 11 5 1 2. + 0 + <_> + + <_> + 4 10 7 2 -1. + <_> + 4 11 7 1 2. + 0 + <_> + + <_> + 5 0 16 8 -1. + <_> + 9 0 8 8 2. + 0 + <_> + + <_> + 5 0 24 13 -1. + <_> + 13 0 8 13 3. + 0 + <_> + + <_> + 5 1 8 12 -1. + <_> + 5 1 4 6 2. + <_> + 9 7 4 6 2. + 0 + <_> + + <_> + 5 1 36 12 -1. + <_> + 5 7 36 6 2. + 0 + <_> + + <_> + 5 2 3 10 -1. + <_> + 6 2 1 10 3. + 0 + <_> + + <_> + 5 2 6 6 -1. + <_> + 7 2 2 6 3. + 0 + <_> + + <_> + 5 2 3 6 -1. + <_> + 5 5 3 3 2. + 0 + <_> + + <_> + 5 2 12 9 -1. + <_> + 5 5 12 3 3. + 0 + <_> + + <_> + 5 2 34 8 -1. + <_> + 5 6 34 4 2. + 0 + <_> + + <_> + 5 3 3 6 -1. + <_> + 6 3 1 6 3. + 0 + <_> + + <_> + 5 3 6 4 -1. + <_> + 7 3 2 4 3. + 0 + <_> + + <_> + 5 3 4 5 -1. + <_> + 7 3 2 5 2. + 0 + <_> + + <_> + 5 3 4 6 -1. + <_> + 7 3 2 6 2. + 0 + <_> + + <_> + 5 3 4 6 -1. + <_> + 5 6 4 3 2. + 0 + <_> + + <_> + 5 3 21 8 -1. + <_> + 12 3 7 8 3. + 0 + <_> + + <_> + 5 4 3 7 -1. + <_> + 6 4 1 7 3. + 0 + <_> + + <_> + 5 4 3 9 -1. + <_> + 6 4 1 9 3. + 0 + <_> + + <_> + 5 4 18 6 -1. + <_> + 11 6 6 2 9. + 0 + <_> + + <_> + 5 4 27 9 -1. + <_> + 14 7 9 3 9. + 0 + <_> + + <_> + 5 4 24 6 -1. + <_> + 17 4 12 6 2. + 0 + <_> + + <_> + 5 5 4 2 -1. + <_> + 6 5 2 2 2. + 0 + <_> + + <_> + 5 5 2 3 -1. + <_> + 6 5 1 3 2. + 0 + <_> + + <_> + 5 5 3 4 -1. + <_> + 6 5 1 4 3. + 0 + <_> + + <_> + 5 5 4 7 -1. + <_> + 6 5 2 7 2. + 0 + <_> + + <_> + 5 5 4 2 -1. + <_> + 5 5 2 2 2. + 1 + <_> + + <_> + 5 5 6 4 -1. + <_> + 7 5 2 4 3. + 0 + <_> + + <_> + 5 5 4 4 -1. + <_> + 5 7 4 2 2. + 0 + <_> + + <_> + 5 6 4 6 -1. + <_> + 6 6 2 6 2. + 0 + <_> + + <_> + 5 6 12 2 -1. + <_> + 11 6 6 2 2. + 0 + <_> + + <_> + 5 7 3 6 -1. + <_> + 5 9 3 2 3. + 0 + <_> + + <_> + 5 7 6 6 -1. + <_> + 5 7 3 3 2. + <_> + 8 10 3 3 2. + 0 + <_> + + <_> + 5 7 6 6 -1. + <_> + 8 7 3 6 2. + 0 + <_> + + <_> + 5 7 12 6 -1. + <_> + 5 10 12 3 2. + 0 + <_> + + <_> + 5 9 9 4 -1. + <_> + 8 9 3 4 3. + 0 + <_> + + <_> + 5 10 6 2 -1. + <_> + 5 10 3 1 2. + <_> + 8 11 3 1 2. + 0 + <_> + + <_> + 5 10 20 3 -1. + <_> + 10 10 10 3 2. + 0 + <_> + + <_> + 5 11 16 2 -1. + <_> + 5 12 16 1 2. + 0 + <_> + + <_> + 6 0 2 6 -1. + <_> + 4 2 2 2 3. + 1 + <_> + + <_> + 6 0 12 1 -1. + <_> + 9 3 6 1 2. + 1 + <_> + + <_> + 6 0 3 6 -1. + <_> + 4 2 3 2 3. + 1 + <_> + + <_> + 6 0 6 5 -1. + <_> + 6 0 3 5 2. + 1 + <_> + + <_> + 6 0 8 2 -1. + <_> + 6 0 4 1 2. + <_> + 10 1 4 1 2. + 0 + <_> + + <_> + 6 0 33 13 -1. + <_> + 17 0 11 13 3. + 0 + <_> + + <_> + 6 1 4 5 -1. + <_> + 7 1 2 5 2. + 0 + <_> + + <_> + 6 1 2 11 -1. + <_> + 7 1 1 11 2. + 0 + <_> + + <_> + 6 1 6 12 -1. + <_> + 8 1 2 12 3. + 0 + <_> + + <_> + 6 1 12 11 -1. + <_> + 12 1 6 11 2. + 0 + <_> + + <_> + 6 2 4 4 -1. + <_> + 7 2 2 4 2. + 0 + <_> + + <_> + 6 2 3 7 -1. + <_> + 7 2 1 7 3. + 0 + <_> + + <_> + 6 2 12 10 -1. + <_> + 12 2 6 10 2. + 0 + <_> + + <_> + 6 3 1 6 -1. + <_> + 6 6 1 3 2. + 0 + <_> + + <_> + 6 3 3 8 -1. + <_> + 7 3 1 8 3. + 0 + <_> + + <_> + 6 3 37 6 -1. + <_> + 6 6 37 3 2. + 0 + <_> + + <_> + 6 4 3 4 -1. + <_> + 7 4 1 4 3. + 0 + <_> + + <_> + 6 4 8 2 -1. + <_> + 8 4 4 2 2. + 0 + <_> + + <_> + 6 4 3 4 -1. + <_> + 6 6 3 2 2. + 0 + <_> + + <_> + 6 4 3 6 -1. + <_> + 6 6 3 2 3. + 0 + <_> + + <_> + 6 4 9 9 -1. + <_> + 9 7 3 3 9. + 0 + <_> + + <_> + 6 6 4 5 -1. + <_> + 7 6 2 5 2. + 0 + <_> + + <_> + 6 6 4 6 -1. + <_> + 7 6 2 6 2. + 0 + <_> + + <_> + 6 9 6 4 -1. + <_> + 6 9 3 2 2. + <_> + 9 11 3 2 2. + 0 + <_> + + <_> + 6 10 20 3 -1. + <_> + 11 10 10 3 2. + 0 + <_> + + <_> + 6 11 7 2 -1. + <_> + 6 12 7 1 2. + 0 + <_> + + <_> + 6 11 17 2 -1. + <_> + 6 12 17 1 2. + 0 + <_> + + <_> + 7 0 12 1 -1. + <_> + 10 0 6 1 2. + 0 + <_> + + <_> + 7 0 4 2 -1. + <_> + 7 1 4 1 2. + 0 + <_> + + <_> + 7 0 32 9 -1. + <_> + 23 0 16 9 2. + 0 + <_> + + <_> + 7 0 38 13 -1. + <_> + 26 0 19 13 2. + 0 + <_> + + <_> + 7 1 4 2 -1. + <_> + 8 2 2 2 2. + 1 + <_> + + <_> + 7 1 16 10 -1. + <_> + 11 1 8 10 2. + 0 + <_> + + <_> + 7 1 15 6 -1. + <_> + 12 1 5 6 3. + 0 + <_> + + <_> + 7 1 15 8 -1. + <_> + 12 1 5 8 3. + 0 + <_> + + <_> + 7 1 15 11 -1. + <_> + 12 1 5 11 3. + 0 + <_> + + <_> + 7 1 7 6 -1. + <_> + 7 4 7 3 2. + 0 + <_> + + <_> + 7 2 1 4 -1. + <_> + 6 3 1 2 2. + 1 + <_> + + <_> + 7 2 4 2 -1. + <_> + 8 3 2 2 2. + 1 + <_> + + <_> + 7 2 4 7 -1. + <_> + 8 3 2 7 2. + 1 + <_> + + <_> + 7 2 2 9 -1. + <_> + 8 2 1 9 2. + 0 + <_> + + <_> + 7 2 6 3 -1. + <_> + 9 3 2 1 9. + 0 + <_> + + <_> + 7 3 2 5 -1. + <_> + 8 3 1 5 2. + 0 + <_> + + <_> + 7 3 2 6 -1. + <_> + 8 3 1 6 2. + 0 + <_> + + <_> + 7 3 3 7 -1. + <_> + 8 3 1 7 3. + 0 + <_> + + <_> + 7 4 1 4 -1. + <_> + 7 5 1 2 2. + 0 + <_> + + <_> + 7 4 3 7 -1. + <_> + 8 4 1 7 3. + 0 + <_> + + <_> + 7 4 28 9 -1. + <_> + 21 4 14 9 2. + 0 + <_> + + <_> + 7 5 3 6 -1. + <_> + 8 5 1 6 3. + 0 + <_> + + <_> + 7 5 4 6 -1. + <_> + 8 5 2 6 2. + 0 + <_> + + <_> + 7 5 4 4 -1. + <_> + 7 5 2 2 2. + <_> + 9 7 2 2 2. + 0 + <_> + + <_> + 7 6 3 3 -1. + <_> + 8 6 1 3 3. + 0 + <_> + + <_> + 7 6 3 6 -1. + <_> + 8 6 1 6 3. + 0 + <_> + + <_> + 7 10 4 2 -1. + <_> + 7 10 2 1 2. + <_> + 9 11 2 1 2. + 0 + <_> + + <_> + 7 10 6 2 -1. + <_> + 7 11 6 1 2. + 0 + <_> + + <_> + 7 11 36 2 -1. + <_> + 7 11 18 1 2. + <_> + 25 12 18 1 2. + 0 + <_> + + <_> + 8 0 3 2 -1. + <_> + 9 1 1 2 3. + 1 + <_> + + <_> + 8 0 2 8 -1. + <_> + 8 0 1 8 2. + 1 + <_> + + <_> + 8 0 6 4 -1. + <_> + 8 0 3 2 2. + <_> + 11 2 3 2 2. + 0 + <_> + + <_> + 8 0 8 2 -1. + <_> + 8 0 4 1 2. + <_> + 12 1 4 1 2. + 0 + <_> + + <_> + 8 0 10 12 -1. + <_> + 13 0 5 12 2. + 0 + <_> + + <_> + 8 0 15 12 -1. + <_> + 13 0 5 12 3. + 0 + <_> + + <_> + 8 0 15 13 -1. + <_> + 13 0 5 13 3. + 0 + <_> + + <_> + 8 0 8 6 -1. + <_> + 8 3 8 3 2. + 0 + <_> + + <_> + 8 1 3 2 -1. + <_> + 9 2 1 2 3. + 1 + <_> + + <_> + 8 1 12 3 -1. + <_> + 12 1 4 3 3. + 0 + <_> + + <_> + 8 1 8 6 -1. + <_> + 12 1 4 6 2. + 0 + <_> + + <_> + 8 1 15 4 -1. + <_> + 13 1 5 4 3. + 0 + <_> + + <_> + 8 1 15 12 -1. + <_> + 13 1 5 12 3. + 0 + <_> + + <_> + 8 1 8 10 -1. + <_> + 8 6 8 5 2. + 0 + <_> + + <_> + 8 1 10 8 -1. + <_> + 8 3 10 4 2. + 0 + <_> + + <_> + 8 2 4 3 -1. + <_> + 9 2 2 3 2. + 0 + <_> + + <_> + 8 2 3 4 -1. + <_> + 9 2 1 4 3. + 0 + <_> + + <_> + 8 2 4 4 -1. + <_> + 9 2 2 4 2. + 0 + <_> + + <_> + 8 2 6 2 -1. + <_> + 10 2 2 2 3. + 0 + <_> + + <_> + 8 2 7 4 -1. + <_> + 8 4 7 2 2. + 0 + <_> + + <_> + 8 3 4 3 -1. + <_> + 9 3 2 3 2. + 0 + <_> + + <_> + 8 4 10 9 -1. + <_> + 13 4 5 9 2. + 0 + <_> + + <_> + 8 5 23 2 -1. + <_> + 8 6 23 1 2. + 0 + <_> + + <_> + 8 6 3 1 -1. + <_> + 9 7 1 1 3. + 1 + <_> + + <_> + 8 6 3 5 -1. + <_> + 9 6 1 5 3. + 0 + <_> + + <_> + 8 6 3 6 -1. + <_> + 9 6 1 6 3. + 0 + <_> + + <_> + 8 7 6 2 -1. + <_> + 11 7 3 2 2. + 0 + <_> + + <_> + 8 9 4 4 -1. + <_> + 8 11 4 2 2. + 0 + <_> + + <_> + 8 10 8 2 -1. + <_> + 8 11 8 1 2. + 0 + <_> + + <_> + 9 0 4 10 -1. + <_> + 10 0 2 10 2. + 0 + <_> + + <_> + 9 0 6 1 -1. + <_> + 11 0 2 1 3. + 0 + <_> + + <_> + 9 0 6 3 -1. + <_> + 11 1 2 1 9. + 0 + <_> + + <_> + 9 0 4 4 -1. + <_> + 9 0 2 2 2. + <_> + 11 2 2 2 2. + 0 + <_> + + <_> + 9 0 12 12 -1. + <_> + 13 0 4 12 3. + 0 + <_> + + <_> + 9 1 3 2 -1. + <_> + 10 2 1 2 3. + 1 + <_> + + <_> + 9 1 12 2 -1. + <_> + 13 1 4 2 3. + 0 + <_> + + <_> + 9 1 12 4 -1. + <_> + 13 1 4 4 3. + 0 + <_> + + <_> + 9 1 12 11 -1. + <_> + 13 1 4 11 3. + 0 + <_> + + <_> + 9 1 8 12 -1. + <_> + 13 1 4 12 2. + 0 + <_> + + <_> + 9 1 12 12 -1. + <_> + 13 1 4 12 3. + 0 + <_> + + <_> + 9 2 12 10 -1. + <_> + 13 2 4 10 3. + 0 + <_> + + <_> + 9 3 4 8 -1. + <_> + 9 7 4 4 2. + 0 + <_> + + <_> + 9 3 6 8 -1. + <_> + 9 7 6 4 2. + 0 + <_> + + <_> + 9 4 33 4 -1. + <_> + 9 5 33 2 2. + 0 + <_> + + <_> + 9 5 4 6 -1. + <_> + 9 5 2 3 2. + <_> + 11 8 2 3 2. + 0 + <_> + + <_> + 9 7 8 6 -1. + <_> + 9 9 8 2 3. + 0 + <_> + + <_> + 9 8 3 3 -1. + <_> + 10 9 1 1 9. + 0 + <_> + + <_> + 9 8 3 2 -1. + <_> + 10 9 1 2 3. + 1 + <_> + + <_> + 9 8 8 4 -1. + <_> + 13 8 4 4 2. + 0 + <_> + + <_> + 9 8 20 1 -1. + <_> + 19 8 10 1 2. + 0 + <_> + + <_> + 9 9 2 4 -1. + <_> + 9 11 2 2 2. + 0 + <_> + + <_> + 9 10 6 2 -1. + <_> + 9 10 3 1 2. + <_> + 12 11 3 1 2. + 0 + <_> + + <_> + 9 10 16 3 -1. + <_> + 13 10 8 3 2. + 0 + <_> + + <_> + 9 10 42 3 -1. + <_> + 30 10 21 3 2. + 0 + <_> + + <_> + 9 12 42 1 -1. + <_> + 23 12 14 1 3. + 0 + <_> + + <_> + 10 0 12 2 -1. + <_> + 10 0 6 1 2. + <_> + 16 1 6 1 2. + 0 + <_> + + <_> + 10 0 8 2 -1. + <_> + 10 1 8 1 2. + 0 + <_> + + <_> + 10 1 9 11 -1. + <_> + 13 1 3 11 3. + 0 + <_> + + <_> + 10 1 12 2 -1. + <_> + 14 1 4 2 3. + 0 + <_> + + <_> + 10 2 3 9 -1. + <_> + 11 5 1 3 9. + 0 + <_> + + <_> + 10 2 4 5 -1. + <_> + 11 2 2 5 2. + 0 + <_> + + <_> + 10 2 12 11 -1. + <_> + 13 2 6 11 2. + 0 + <_> + + <_> + 10 2 4 3 -1. + <_> + 9 3 4 1 3. + 1 + <_> + + <_> + 10 3 2 4 -1. + <_> + 10 3 1 2 2. + <_> + 11 5 1 2 2. + 0 + <_> + + <_> + 10 4 8 1 -1. + <_> + 10 4 4 1 2. + 1 + <_> + + <_> + 10 6 4 4 -1. + <_> + 10 6 2 2 2. + <_> + 12 8 2 2 2. + 0 + <_> + + <_> + 10 6 6 5 -1. + <_> + 13 6 3 5 2. + 0 + <_> + + <_> + 10 7 2 6 -1. + <_> + 10 9 2 2 3. + 0 + <_> + + <_> + 10 9 2 3 -1. + <_> + 10 10 2 1 3. + 0 + <_> + + <_> + 10 10 1 2 -1. + <_> + 10 11 1 1 2. + 0 + <_> + + <_> + 10 11 3 2 -1. + <_> + 10 12 3 1 2. + 0 + <_> + + <_> + 10 11 6 2 -1. + <_> + 10 12 6 1 2. + 0 + <_> + + <_> + 11 0 3 8 -1. + <_> + 11 4 3 4 2. + 0 + <_> + + <_> + 11 0 12 12 -1. + <_> + 15 0 4 12 3. + 0 + <_> + + <_> + 11 0 10 4 -1. + <_> + 11 0 5 2 2. + <_> + 16 2 5 2 2. + 0 + <_> + + <_> + 11 0 6 6 -1. + <_> + 11 3 6 3 2. + 0 + <_> + + <_> + 11 0 21 7 -1. + <_> + 18 0 7 7 3. + 0 + <_> + + <_> + 11 0 10 3 -1. + <_> + 10 1 10 1 3. + 1 + <_> + + <_> + 11 0 36 9 -1. + <_> + 29 0 18 9 2. + 0 + <_> + + <_> + 11 1 2 3 -1. + <_> + 10 2 2 1 3. + 1 + <_> + + <_> + 11 1 9 11 -1. + <_> + 14 1 3 11 3. + 0 + <_> + + <_> + 11 1 12 11 -1. + <_> + 15 1 4 11 3. + 0 + <_> + + <_> + 11 2 9 9 -1. + <_> + 14 5 3 3 9. + 0 + <_> + + <_> + 11 2 12 5 -1. + <_> + 14 2 6 5 2. + 0 + <_> + + <_> + 11 3 6 9 -1. + <_> + 13 6 2 3 9. + 0 + <_> + + <_> + 11 3 3 3 -1. + <_> + 10 4 3 1 3. + 1 + <_> + + <_> + 11 3 27 6 -1. + <_> + 11 6 27 3 2. + 0 + <_> + + <_> + 11 4 6 9 -1. + <_> + 13 7 2 3 9. + 0 + <_> + + <_> + 11 4 26 6 -1. + <_> + 11 7 26 3 2. + 0 + <_> + + <_> + 11 4 27 6 -1. + <_> + 11 7 27 3 2. + 0 + <_> + + <_> + 11 4 31 2 -1. + <_> + 11 5 31 1 2. + 0 + <_> + + <_> + 11 4 35 2 -1. + <_> + 11 5 35 1 2. + 0 + <_> + + <_> + 11 7 30 3 -1. + <_> + 21 8 10 1 9. + 0 + <_> + + <_> + 11 8 8 4 -1. + <_> + 13 8 4 4 2. + 0 + <_> + + <_> + 11 8 6 4 -1. + <_> + 11 10 6 2 2. + 0 + <_> + + <_> + 11 9 8 2 -1. + <_> + 13 9 4 2 2. + 0 + <_> + + <_> + 12 0 4 1 -1. + <_> + 14 0 2 1 2. + 0 + <_> + + <_> + 12 0 16 5 -1. + <_> + 16 0 8 5 2. + 0 + <_> + + <_> + 12 0 16 13 -1. + <_> + 16 0 8 13 2. + 0 + <_> + + <_> + 12 0 18 5 -1. + <_> + 18 0 6 5 3. + 0 + <_> + + <_> + 12 0 7 2 -1. + <_> + 12 1 7 1 2. + 0 + <_> + + <_> + 12 1 6 12 -1. + <_> + 14 5 2 4 9. + 0 + <_> + + <_> + 12 1 10 2 -1. + <_> + 17 1 5 2 2. + 0 + <_> + + <_> + 12 2 2 3 -1. + <_> + 12 2 1 3 2. + 1 + <_> + + <_> + 12 2 9 2 -1. + <_> + 15 2 3 2 3. + 0 + <_> + + <_> + 12 2 12 4 -1. + <_> + 16 2 4 4 3. + 0 + <_> + + <_> + 12 2 28 2 -1. + <_> + 19 2 14 2 2. + 0 + <_> + + <_> + 12 3 6 2 -1. + <_> + 14 5 2 2 3. + 1 + <_> + + <_> + 12 4 4 5 -1. + <_> + 13 5 2 5 2. + 1 + <_> + + <_> + 12 4 4 3 -1. + <_> + 12 4 2 3 2. + 1 + <_> + + <_> + 12 4 6 6 -1. + <_> + 14 4 2 6 3. + 0 + <_> + + <_> + 12 4 5 2 -1. + <_> + 12 5 5 1 2. + 0 + <_> + + <_> + 12 4 18 9 -1. + <_> + 18 7 6 3 9. + 0 + <_> + + <_> + 12 5 6 5 -1. + <_> + 14 5 2 5 3. + 0 + <_> + + <_> + 12 5 18 6 -1. + <_> + 18 7 6 2 9. + 0 + <_> + + <_> + 12 7 21 3 -1. + <_> + 19 8 7 1 9. + 0 + <_> + + <_> + 12 12 6 1 -1. + <_> + 14 12 2 1 3. + 0 + <_> + + <_> + 12 12 39 1 -1. + <_> + 25 12 13 1 3. + 0 + <_> + + <_> + 13 0 16 5 -1. + <_> + 17 0 8 5 2. + 0 + <_> + + <_> + 13 0 5 8 -1. + <_> + 11 2 5 4 2. + 1 + <_> + + <_> + 13 0 24 10 -1. + <_> + 19 0 12 10 2. + 0 + <_> + + <_> + 13 0 36 3 -1. + <_> + 22 0 18 3 2. + 0 + <_> + + <_> + 13 0 28 1 -1. + <_> + 27 0 14 1 2. + 0 + <_> + + <_> + 13 1 8 3 -1. + <_> + 17 1 4 3 2. + 0 + <_> + + <_> + 13 1 8 6 -1. + <_> + 17 1 4 6 2. + 0 + <_> + + <_> + 13 1 20 7 -1. + <_> + 18 1 10 7 2. + 0 + <_> + + <_> + 13 1 36 1 -1. + <_> + 31 1 18 1 2. + 0 + <_> + + <_> + 13 1 20 3 -1. + <_> + 13 2 20 1 3. + 0 + <_> + + <_> + 13 2 14 1 -1. + <_> + 20 2 7 1 2. + 0 + <_> + + <_> + 13 3 3 8 -1. + <_> + 13 5 3 4 2. + 0 + <_> + + <_> + 13 3 4 2 -1. + <_> + 13 4 4 1 2. + 0 + <_> + + <_> + 13 4 5 2 -1. + <_> + 13 5 5 1 2. + 0 + <_> + + <_> + 13 5 4 3 -1. + <_> + 13 5 2 3 2. + 1 + <_> + + <_> + 13 5 24 6 -1. + <_> + 19 5 12 6 2. + 0 + <_> + + <_> + 13 5 32 6 -1. + <_> + 13 8 32 3 2. + 0 + <_> + + <_> + 13 6 1 3 -1. + <_> + 12 7 1 1 3. + 1 + <_> + + <_> + 13 6 3 6 -1. + <_> + 13 8 3 2 3. + 0 + <_> + + <_> + 13 7 3 4 -1. + <_> + 13 9 3 2 2. + 0 + <_> + + <_> + 13 8 6 2 -1. + <_> + 13 9 6 1 2. + 0 + <_> + + <_> + 13 9 10 4 -1. + <_> + 18 9 5 4 2. + 0 + <_> + + <_> + 13 9 18 4 -1. + <_> + 19 9 6 4 3. + 0 + <_> + + <_> + 14 0 4 1 -1. + <_> + 15 0 2 1 2. + 0 + <_> + + <_> + 14 0 1 8 -1. + <_> + 14 4 1 4 2. + 0 + <_> + + <_> + 14 0 1 12 -1. + <_> + 14 4 1 4 3. + 0 + <_> + + <_> + 14 0 1 12 -1. + <_> + 14 6 1 6 2. + 0 + <_> + + <_> + 14 0 8 4 -1. + <_> + 14 0 4 2 2. + <_> + 18 2 4 2 2. + 0 + <_> + + <_> + 14 0 12 6 -1. + <_> + 18 2 4 2 9. + 0 + <_> + + <_> + 14 0 16 4 -1. + <_> + 18 0 8 4 2. + 0 + <_> + + <_> + 14 1 1 4 -1. + <_> + 14 3 1 2 2. + 0 + <_> + + <_> + 14 1 2 4 -1. + <_> + 14 2 2 2 2. + 0 + <_> + + <_> + 14 1 2 12 -1. + <_> + 14 7 2 6 2. + 0 + <_> + + <_> + 14 2 2 8 -1. + <_> + 14 4 2 4 2. + 0 + <_> + + <_> + 14 2 2 9 -1. + <_> + 14 5 2 3 3. + 0 + <_> + + <_> + 14 2 18 4 -1. + <_> + 14 2 9 2 2. + <_> + 23 4 9 2 2. + 0 + <_> + + <_> + 14 3 12 9 -1. + <_> + 14 6 12 3 3. + 0 + <_> + + <_> + 14 4 2 1 -1. + <_> + 15 4 1 1 2. + 0 + <_> + + <_> + 14 4 16 1 -1. + <_> + 22 4 8 1 2. + 0 + <_> + + <_> + 14 5 2 4 -1. + <_> + 14 6 2 2 2. + 0 + <_> + + <_> + 14 5 2 6 -1. + <_> + 14 8 2 3 2. + 0 + <_> + + <_> + 14 5 3 4 -1. + <_> + 14 6 3 2 2. + 0 + <_> + + <_> + 14 5 3 6 -1. + <_> + 14 8 3 3 2. + 0 + <_> + + <_> + 14 5 4 3 -1. + <_> + 13 6 4 1 3. + 1 + <_> + + <_> + 14 6 3 4 -1. + <_> + 14 8 3 2 2. + 0 + <_> + + <_> + 14 7 3 2 -1. + <_> + 14 8 3 1 2. + 0 + <_> + + <_> + 14 8 2 3 -1. + <_> + 15 8 1 3 2. + 0 + <_> + + <_> + 14 8 9 2 -1. + <_> + 17 8 3 2 3. + 0 + <_> + + <_> + 14 8 6 4 -1. + <_> + 17 8 3 4 2. + 0 + <_> + + <_> + 14 9 2 2 -1. + <_> + 14 10 2 1 2. + 0 + <_> + + <_> + 14 9 16 4 -1. + <_> + 18 9 8 4 2. + 0 + <_> + + <_> + 14 11 15 2 -1. + <_> + 19 11 5 2 3. + 0 + <_> + + <_> + 14 12 2 1 -1. + <_> + 15 12 1 1 2. + 0 + <_> + + <_> + 14 12 3 1 -1. + <_> + 15 12 1 1 3. + 0 + <_> + + <_> + 15 0 4 1 -1. + <_> + 16 0 2 1 2. + 0 + <_> + + <_> + 15 0 10 2 -1. + <_> + 20 0 5 2 2. + 0 + <_> + + <_> + 15 0 15 2 -1. + <_> + 20 0 5 2 3. + 0 + <_> + + <_> + 15 0 33 9 -1. + <_> + 15 3 33 3 3. + 0 + <_> + + <_> + 15 1 1 12 -1. + <_> + 15 7 1 6 2. + 0 + <_> + + <_> + 15 1 2 6 -1. + <_> + 15 3 2 2 3. + 0 + <_> + + <_> + 15 1 36 2 -1. + <_> + 33 1 18 2 2. + 0 + <_> + + <_> + 15 2 1 9 -1. + <_> + 15 5 1 3 3. + 0 + <_> + + <_> + 15 2 3 4 -1. + <_> + 15 4 3 2 2. + 0 + <_> + + <_> + 15 2 9 9 -1. + <_> + 18 5 3 3 9. + 0 + <_> + + <_> + 15 2 24 6 -1. + <_> + 15 2 12 3 2. + <_> + 27 5 12 3 2. + 0 + <_> + + <_> + 15 3 4 3 -1. + <_> + 16 4 2 3 2. + 1 + <_> + + <_> + 15 3 4 6 -1. + <_> + 15 6 4 3 2. + 0 + <_> + + <_> + 15 4 3 4 -1. + <_> + 15 6 3 2 2. + 0 + <_> + + <_> + 15 4 6 3 -1. + <_> + 14 5 6 1 3. + 1 + <_> + + <_> + 15 6 4 4 -1. + <_> + 15 6 2 2 2. + <_> + 17 8 2 2 2. + 0 + <_> + + <_> + 15 8 1 3 -1. + <_> + 15 9 1 1 3. + 0 + <_> + + <_> + 15 8 15 5 -1. + <_> + 20 8 5 5 3. + 0 + <_> + + <_> + 15 9 1 2 -1. + <_> + 15 10 1 1 2. + 0 + <_> + + <_> + 15 9 2 2 -1. + <_> + 15 9 1 1 2. + <_> + 16 10 1 1 2. + 0 + <_> + + <_> + 15 10 13 3 -1. + <_> + 15 11 13 1 3. + 0 + <_> + + <_> + 15 10 34 3 -1. + <_> + 15 11 34 1 3. + 0 + <_> + + <_> + 15 11 35 2 -1. + <_> + 15 12 35 1 2. + 0 + <_> + + <_> + 16 0 1 2 -1. + <_> + 16 0 1 1 2. + 1 + <_> + + <_> + 16 0 4 8 -1. + <_> + 16 0 2 8 2. + 1 + <_> + + <_> + 16 0 12 1 -1. + <_> + 19 0 6 1 2. + 0 + <_> + + <_> + 16 0 6 6 -1. + <_> + 14 2 6 2 3. + 1 + <_> + + <_> + 16 0 26 4 -1. + <_> + 29 0 13 4 2. + 0 + <_> + + <_> + 16 1 18 12 -1. + <_> + 22 1 6 12 3. + 0 + <_> + + <_> + 16 1 18 2 -1. + <_> + 16 2 18 1 2. + 0 + <_> + + <_> + 16 2 4 5 -1. + <_> + 16 2 2 5 2. + 1 + <_> + + <_> + 16 3 1 2 -1. + <_> + 16 4 1 1 2. + 0 + <_> + + <_> + 16 5 5 3 -1. + <_> + 15 6 5 1 3. + 1 + <_> + + <_> + 16 9 15 4 -1. + <_> + 21 9 5 4 3. + 0 + <_> + + <_> + 16 9 18 4 -1. + <_> + 22 9 6 4 3. + 0 + <_> + + <_> + 17 0 1 6 -1. + <_> + 15 2 1 2 3. + 1 + <_> + + <_> + 17 0 6 2 -1. + <_> + 17 1 6 1 2. + 0 + <_> + + <_> + 17 0 18 5 -1. + <_> + 23 0 6 5 3. + 0 + <_> + + <_> + 17 0 8 2 -1. + <_> + 17 1 8 1 2. + 0 + <_> + + <_> + 17 0 11 4 -1. + <_> + 17 2 11 2 2. + 0 + <_> + + <_> + 17 0 16 3 -1. + <_> + 17 1 16 1 3. + 0 + <_> + + <_> + 17 0 17 3 -1. + <_> + 17 1 17 1 3. + 0 + <_> + + <_> + 17 0 19 2 -1. + <_> + 17 1 19 1 2. + 0 + <_> + + <_> + 17 0 20 4 -1. + <_> + 17 1 20 2 2. + 0 + <_> + + <_> + 17 0 32 8 -1. + <_> + 17 4 32 4 2. + 0 + <_> + + <_> + 17 4 1 2 -1. + <_> + 17 5 1 1 2. + 0 + <_> + + <_> + 17 7 8 1 -1. + <_> + 21 7 4 1 2. + 0 + <_> + + <_> + 17 7 21 3 -1. + <_> + 17 8 21 1 3. + 0 + <_> + + <_> + 17 7 28 6 -1. + <_> + 17 9 28 2 3. + 0 + <_> + + <_> + 18 0 3 1 -1. + <_> + 19 0 1 1 3. + 0 + <_> + + <_> + 18 0 2 5 -1. + <_> + 18 0 1 5 2. + 1 + <_> + + <_> + 18 0 3 4 -1. + <_> + 18 2 3 2 2. + 0 + <_> + + <_> + 18 0 11 2 -1. + <_> + 18 1 11 1 2. + 0 + <_> + + <_> + 18 0 18 3 -1. + <_> + 18 1 18 1 3. + 0 + <_> + + <_> + 18 1 17 2 -1. + <_> + 18 2 17 1 2. + 0 + <_> + + <_> + 18 2 4 4 -1. + <_> + 19 2 2 4 2. + 0 + <_> + + <_> + 18 2 2 6 -1. + <_> + 16 4 2 2 3. + 1 + <_> + + <_> + 18 2 6 4 -1. + <_> + 20 2 2 4 3. + 0 + <_> + + <_> + 18 3 3 2 -1. + <_> + 19 3 1 2 3. + 0 + <_> + + <_> + 18 7 4 3 -1. + <_> + 19 7 2 3 2. + 0 + <_> + + <_> + 18 8 4 2 -1. + <_> + 19 8 2 2 2. + 0 + <_> + + <_> + 18 8 4 3 -1. + <_> + 19 8 2 3 2. + 0 + <_> + + <_> + 18 10 27 3 -1. + <_> + 18 11 27 1 3. + 0 + <_> + + <_> + 19 0 2 1 -1. + <_> + 20 0 1 1 2. + 0 + <_> + + <_> + 19 0 3 1 -1. + <_> + 20 0 1 1 3. + 0 + <_> + + <_> + 19 0 3 8 -1. + <_> + 20 1 1 8 3. + 1 + <_> + + <_> + 19 1 3 6 -1. + <_> + 20 3 1 2 9. + 0 + <_> + + <_> + 19 1 9 12 -1. + <_> + 22 1 3 12 3. + 0 + <_> + + <_> + 19 1 17 2 -1. + <_> + 19 2 17 1 2. + 0 + <_> + + <_> + 19 3 6 2 -1. + <_> + 21 3 2 2 3. + 0 + <_> + + <_> + 19 4 4 4 -1. + <_> + 19 4 2 2 2. + <_> + 21 6 2 2 2. + 0 + <_> + + <_> + 19 12 2 1 -1. + <_> + 20 12 1 1 2. + 0 + <_> + + <_> + 20 0 4 1 -1. + <_> + 21 0 2 1 2. + 0 + <_> + + <_> + 20 0 4 11 -1. + <_> + 21 0 2 11 2. + 0 + <_> + + <_> + 20 0 6 1 -1. + <_> + 22 0 2 1 3. + 0 + <_> + + <_> + 20 0 12 12 -1. + <_> + 24 0 4 12 3. + 0 + <_> + + <_> + 20 0 12 3 -1. + <_> + 26 0 6 3 2. + 0 + <_> + + <_> + 20 0 18 3 -1. + <_> + 26 0 6 3 3. + 0 + <_> + + <_> + 20 0 18 4 -1. + <_> + 29 0 9 4 2. + 0 + <_> + + <_> + 20 0 26 1 -1. + <_> + 33 0 13 1 2. + 0 + <_> + + <_> + 20 0 22 4 -1. + <_> + 20 1 22 2 2. + 0 + <_> + + <_> + 20 2 3 2 -1. + <_> + 21 3 1 2 3. + 1 + <_> + + <_> + 20 3 4 8 -1. + <_> + 21 3 2 8 2. + 0 + <_> + + <_> + 20 4 3 9 -1. + <_> + 21 7 1 3 9. + 0 + <_> + + <_> + 20 5 3 5 -1. + <_> + 21 5 1 5 3. + 0 + <_> + + <_> + 20 5 4 8 -1. + <_> + 22 5 2 8 2. + 0 + <_> + + <_> + 20 6 3 2 -1. + <_> + 21 7 1 2 3. + 1 + <_> + + <_> + 20 6 4 2 -1. + <_> + 21 7 2 2 2. + 1 + <_> + + <_> + 20 6 24 6 -1. + <_> + 20 9 24 3 2. + 0 + <_> + + <_> + 20 8 4 2 -1. + <_> + 21 8 2 2 2. + 0 + <_> + + <_> + 20 9 4 4 -1. + <_> + 20 9 2 2 2. + <_> + 22 11 2 2 2. + 0 + <_> + + <_> + 20 9 18 4 -1. + <_> + 26 9 6 4 3. + 0 + <_> + + <_> + 20 12 4 1 -1. + <_> + 21 12 2 1 2. + 0 + <_> + + <_> + 21 0 2 6 -1. + <_> + 21 0 1 3 2. + <_> + 22 3 1 3 2. + 0 + <_> + + <_> + 21 0 4 2 -1. + <_> + 21 1 4 1 2. + 0 + <_> + + <_> + 21 0 28 1 -1. + <_> + 28 0 14 1 2. + 0 + <_> + + <_> + 21 0 21 4 -1. + <_> + 28 0 7 4 3. + 0 + <_> + + <_> + 21 0 14 5 -1. + <_> + 28 0 7 5 2. + 0 + <_> + + <_> + 21 1 4 11 -1. + <_> + 22 1 2 11 2. + 0 + <_> + + <_> + 21 2 25 9 -1. + <_> + 21 5 25 3 3. + 0 + <_> + + <_> + 21 3 4 9 -1. + <_> + 22 3 2 9 2. + 0 + <_> + + <_> + 21 3 6 1 -1. + <_> + 23 3 2 1 3. + 0 + <_> + + <_> + 21 6 4 2 -1. + <_> + 22 7 2 2 2. + 1 + <_> + + <_> + 21 7 3 2 -1. + <_> + 22 8 1 2 3. + 1 + <_> + + <_> + 21 7 3 3 -1. + <_> + 22 8 1 3 3. + 1 + <_> + + <_> + 21 7 6 4 -1. + <_> + 23 7 2 4 3. + 0 + <_> + + <_> + 21 10 21 3 -1. + <_> + 28 10 7 3 3. + 0 + <_> + + <_> + 21 10 18 3 -1. + <_> + 21 11 18 1 3. + 0 + <_> + + <_> + 21 12 30 1 -1. + <_> + 36 12 15 1 2. + 0 + <_> + + <_> + 22 0 4 1 -1. + <_> + 23 0 2 1 2. + 0 + <_> + + <_> + 22 0 8 1 -1. + <_> + 24 0 4 1 2. + 0 + <_> + + <_> + 22 0 12 4 -1. + <_> + 25 0 6 4 2. + 0 + <_> + + <_> + 22 0 15 2 -1. + <_> + 27 0 5 2 3. + 0 + <_> + + <_> + 22 0 28 2 -1. + <_> + 36 0 14 2 2. + 0 + <_> + + <_> + 22 1 15 2 -1. + <_> + 27 1 5 2 3. + 0 + <_> + + <_> + 22 1 8 3 -1. + <_> + 21 2 8 1 3. + 1 + <_> + + <_> + 22 2 3 3 -1. + <_> + 23 2 1 3 3. + 0 + <_> + + <_> + 22 2 3 9 -1. + <_> + 23 2 1 9 3. + 0 + <_> + + <_> + 22 2 3 10 -1. + <_> + 23 2 1 10 3. + 0 + <_> + + <_> + 22 5 3 3 -1. + <_> + 22 6 3 1 3. + 0 + <_> + + <_> + 22 6 2 3 -1. + <_> + 22 7 2 1 3. + 0 + <_> + + <_> + 22 7 2 3 -1. + <_> + 22 8 2 1 3. + 0 + <_> + + <_> + 22 8 3 2 -1. + <_> + 23 8 1 2 3. + 0 + <_> + + <_> + 22 8 3 2 -1. + <_> + 23 9 1 2 3. + 1 + <_> + + <_> + 22 8 2 2 -1. + <_> + 22 9 2 1 2. + 0 + <_> + + <_> + 22 9 4 4 -1. + <_> + 22 9 2 2 2. + <_> + 24 11 2 2 2. + 0 + <_> + + <_> + 22 9 9 2 -1. + <_> + 25 9 3 2 3. + 0 + <_> + + <_> + 22 9 6 4 -1. + <_> + 25 9 3 4 2. + 0 + <_> + + <_> + 22 9 9 4 -1. + <_> + 25 9 3 4 3. + 0 + <_> + + <_> + 22 10 6 2 -1. + <_> + 22 10 3 1 2. + <_> + 25 11 3 1 2. + 0 + <_> + + <_> + 23 0 3 1 -1. + <_> + 24 0 1 1 3. + 0 + <_> + + <_> + 23 0 6 1 -1. + <_> + 25 0 2 1 3. + 0 + <_> + + <_> + 23 0 4 4 -1. + <_> + 23 0 2 2 2. + <_> + 25 2 2 2 2. + 0 + <_> + + <_> + 23 0 8 12 -1. + <_> + 25 0 4 12 2. + 0 + <_> + + <_> + 23 0 12 1 -1. + <_> + 26 0 6 1 2. + 0 + <_> + + <_> + 23 0 21 2 -1. + <_> + 23 1 21 1 2. + 0 + <_> + + <_> + 23 2 12 10 -1. + <_> + 29 2 6 10 2. + 0 + <_> + + <_> + 23 3 4 2 -1. + <_> + 24 3 2 2 2. + 0 + <_> + + <_> + 23 4 2 4 -1. + <_> + 22 5 2 2 2. + 1 + <_> + + <_> + 23 4 12 9 -1. + <_> + 27 4 4 9 3. + 0 + <_> + + <_> + 23 5 1 3 -1. + <_> + 23 6 1 1 3. + 0 + <_> + + <_> + 23 6 9 1 -1. + <_> + 26 6 3 1 3. + 0 + <_> + + <_> + 23 8 4 3 -1. + <_> + 24 8 2 3 2. + 0 + <_> + + <_> + 23 9 4 1 -1. + <_> + 24 9 2 1 2. + 0 + <_> + + <_> + 23 9 8 4 -1. + <_> + 25 9 4 4 2. + 0 + <_> + + <_> + 23 9 12 4 -1. + <_> + 26 9 6 4 2. + 0 + <_> + + <_> + 23 11 6 2 -1. + <_> + 23 11 3 1 2. + <_> + 26 12 3 1 2. + 0 + <_> + + <_> + 24 0 3 1 -1. + <_> + 25 0 1 1 3. + 0 + <_> + + <_> + 24 0 4 1 -1. + <_> + 25 0 2 1 2. + 0 + <_> + + <_> + 24 0 4 6 -1. + <_> + 24 0 2 3 2. + <_> + 26 3 2 3 2. + 0 + <_> + + <_> + 24 0 17 2 -1. + <_> + 24 1 17 1 2. + 0 + <_> + + <_> + 24 0 22 2 -1. + <_> + 24 1 22 1 2. + 0 + <_> + + <_> + 24 1 4 4 -1. + <_> + 24 1 2 2 2. + <_> + 26 3 2 2 2. + 0 + <_> + + <_> + 24 1 13 2 -1. + <_> + 24 2 13 1 2. + 0 + <_> + + <_> + 24 2 2 2 -1. + <_> + 24 2 1 1 2. + <_> + 25 3 1 1 2. + 0 + <_> + + <_> + 24 6 6 1 -1. + <_> + 26 6 2 1 3. + 0 + <_> + + <_> + 24 7 4 6 -1. + <_> + 24 7 2 3 2. + <_> + 26 10 2 3 2. + 0 + <_> + + <_> + 24 8 2 5 -1. + <_> + 25 8 1 5 2. + 0 + <_> + + <_> + 24 9 15 4 -1. + <_> + 29 9 5 4 3. + 0 + <_> + + <_> + 24 10 27 3 -1. + <_> + 24 11 27 1 3. + 0 + <_> + + <_> + 25 0 3 1 -1. + <_> + 26 0 1 1 3. + 0 + <_> + + <_> + 25 0 3 2 -1. + <_> + 26 1 1 2 3. + 1 + <_> + + <_> + 25 0 4 1 -1. + <_> + 27 0 2 1 2. + 0 + <_> + + <_> + 25 0 8 1 -1. + <_> + 27 0 4 1 2. + 0 + <_> + + <_> + 25 0 26 3 -1. + <_> + 25 1 26 1 3. + 0 + <_> + + <_> + 25 1 2 4 -1. + <_> + 25 1 1 2 2. + <_> + 26 3 1 2 2. + 0 + <_> + + <_> + 25 1 3 2 -1. + <_> + 26 2 1 2 3. + 1 + <_> + + <_> + 25 2 3 2 -1. + <_> + 26 3 1 2 3. + 1 + <_> + + <_> + 25 4 4 1 -1. + <_> + 26 4 2 1 2. + 0 + <_> + + <_> + 25 4 4 6 -1. + <_> + 25 4 2 3 2. + <_> + 27 7 2 3 2. + 0 + <_> + + <_> + 25 6 3 6 -1. + <_> + 26 8 1 2 9. + 0 + <_> + + <_> + 25 7 4 2 -1. + <_> + 26 7 2 2 2. + 0 + <_> + + <_> + 25 8 4 2 -1. + <_> + 26 8 2 2 2. + 0 + <_> + + <_> + 25 9 3 3 -1. + <_> + 26 9 1 3 3. + 0 + <_> + + <_> + 25 9 13 4 -1. + <_> + 25 11 13 2 2. + 0 + <_> + + <_> + 25 10 2 2 -1. + <_> + 25 11 2 1 2. + 0 + <_> + + <_> + 26 0 3 1 -1. + <_> + 27 0 1 1 3. + 0 + <_> + + <_> + 26 0 4 1 -1. + <_> + 27 0 2 1 2. + 0 + <_> + + <_> + 26 0 1 12 -1. + <_> + 23 3 1 6 2. + 1 + <_> + + <_> + 26 0 18 13 -1. + <_> + 32 0 6 13 3. + 0 + <_> + + <_> + 26 0 18 2 -1. + <_> + 35 0 9 2 2. + 0 + <_> + + <_> + 26 2 1 6 -1. + <_> + 26 4 1 2 3. + 0 + <_> + + <_> + 26 2 2 2 -1. + <_> + 26 2 1 2 2. + 1 + <_> + + <_> + 26 2 3 2 -1. + <_> + 27 3 1 2 3. + 1 + <_> + + <_> + 26 2 5 3 -1. + <_> + 25 3 5 1 3. + 1 + <_> + + <_> + 26 2 10 4 -1. + <_> + 26 3 10 2 2. + 0 + <_> + + <_> + 26 3 4 6 -1. + <_> + 26 3 2 3 2. + <_> + 28 6 2 3 2. + 0 + <_> + + <_> + 26 3 5 3 -1. + <_> + 25 4 5 1 3. + 1 + <_> + + <_> + 26 4 4 6 -1. + <_> + 26 4 2 3 2. + <_> + 28 7 2 3 2. + 0 + <_> + + <_> + 26 5 4 2 -1. + <_> + 26 5 2 1 2. + <_> + 28 6 2 1 2. + 0 + <_> + + <_> + 26 5 4 4 -1. + <_> + 26 5 2 2 2. + <_> + 28 7 2 2 2. + 0 + <_> + + <_> + 26 6 1 6 -1. + <_> + 26 8 1 2 3. + 0 + <_> + + <_> + 26 6 4 1 -1. + <_> + 28 6 2 1 2. + 0 + <_> + + <_> + 26 7 4 3 -1. + <_> + 27 7 2 3 2. + 0 + <_> + + <_> + 26 7 4 6 -1. + <_> + 26 7 2 3 2. + <_> + 28 10 2 3 2. + 0 + <_> + + <_> + 26 7 18 6 -1. + <_> + 32 7 6 6 3. + 0 + <_> + + <_> + 26 7 17 6 -1. + <_> + 26 10 17 3 2. + 0 + <_> + + <_> + 26 8 3 1 -1. + <_> + 27 8 1 1 3. + 0 + <_> + + <_> + 26 9 12 4 -1. + <_> + 29 9 6 4 2. + 0 + <_> + + <_> + 26 11 20 1 -1. + <_> + 36 11 10 1 2. + 0 + <_> + + <_> + 27 0 2 1 -1. + <_> + 28 0 1 1 2. + 0 + <_> + + <_> + 27 0 3 1 -1. + <_> + 28 0 1 1 3. + 0 + <_> + + <_> + 27 0 4 1 -1. + <_> + 29 0 2 1 2. + 0 + <_> + + <_> + 27 0 18 2 -1. + <_> + 27 0 9 1 2. + <_> + 36 1 9 1 2. + 0 + <_> + + <_> + 27 1 3 3 -1. + <_> + 28 2 1 3 3. + 1 + <_> + + <_> + 27 1 6 11 -1. + <_> + 29 1 2 11 3. + 0 + <_> + + <_> + 27 1 14 10 -1. + <_> + 34 1 7 10 2. + 0 + <_> + + <_> + 27 2 3 2 -1. + <_> + 28 3 1 2 3. + 1 + <_> + + <_> + 27 2 3 9 -1. + <_> + 28 2 1 9 3. + 0 + <_> + + <_> + 27 2 5 4 -1. + <_> + 26 3 5 2 2. + 1 + <_> + + <_> + 27 3 3 6 -1. + <_> + 28 3 1 6 3. + 0 + <_> + + <_> + 27 3 3 9 -1. + <_> + 28 3 1 9 3. + 0 + <_> + + <_> + 27 3 13 4 -1. + <_> + 27 5 13 2 2. + 0 + <_> + + <_> + 27 6 3 2 -1. + <_> + 28 7 1 2 3. + 1 + <_> + + <_> + 27 7 3 2 -1. + <_> + 28 7 1 2 3. + 0 + <_> + + <_> + 27 7 3 2 -1. + <_> + 28 8 1 2 3. + 1 + <_> + + <_> + 28 0 3 1 -1. + <_> + 29 0 1 1 3. + 0 + <_> + + <_> + 28 0 4 12 -1. + <_> + 29 0 2 12 2. + 0 + <_> + + <_> + 28 0 10 3 -1. + <_> + 28 0 5 3 2. + 1 + <_> + + <_> + 28 0 15 13 -1. + <_> + 33 0 5 13 3. + 0 + <_> + + <_> + 28 1 2 10 -1. + <_> + 29 1 1 10 2. + 0 + <_> + + <_> + 28 1 4 11 -1. + <_> + 29 1 2 11 2. + 0 + <_> + + <_> + 28 2 4 10 -1. + <_> + 29 2 2 10 2. + 0 + <_> + + <_> + 28 2 7 3 -1. + <_> + 27 3 7 1 3. + 1 + <_> + + <_> + 28 3 4 9 -1. + <_> + 29 3 2 9 2. + 0 + <_> + + <_> + 28 3 23 8 -1. + <_> + 28 5 23 4 2. + 0 + <_> + + <_> + 28 4 1 6 -1. + <_> + 28 7 1 3 2. + 0 + <_> + + <_> + 28 4 3 6 -1. + <_> + 28 6 3 2 3. + 0 + <_> + + <_> + 28 5 4 2 -1. + <_> + 30 5 2 2 2. + 0 + <_> + + <_> + 28 5 20 6 -1. + <_> + 28 8 20 3 2. + 0 + <_> + + <_> + 28 6 1 4 -1. + <_> + 27 7 1 2 2. + 1 + <_> + + <_> + 28 6 3 3 -1. + <_> + 29 7 1 3 3. + 1 + <_> + + <_> + 28 7 3 1 -1. + <_> + 29 8 1 1 3. + 1 + <_> + + <_> + 28 7 4 3 -1. + <_> + 28 8 4 1 3. + 0 + <_> + + <_> + 28 7 12 2 -1. + <_> + 28 8 12 1 2. + 0 + <_> + + <_> + 28 8 2 1 -1. + <_> + 28 8 1 1 2. + 1 + <_> + + <_> + 28 8 3 1 -1. + <_> + 29 9 1 1 3. + 1 + <_> + + <_> + 28 11 14 2 -1. + <_> + 28 11 7 1 2. + <_> + 35 12 7 1 2. + 0 + <_> + + <_> + 29 0 3 1 -1. + <_> + 30 0 1 1 3. + 0 + <_> + + <_> + 29 0 4 1 -1. + <_> + 30 0 2 1 2. + 0 + <_> + + <_> + 29 2 3 8 -1. + <_> + 30 2 1 8 3. + 0 + <_> + + <_> + 29 3 3 9 -1. + <_> + 30 3 1 9 3. + 0 + <_> + + <_> + 29 5 2 3 -1. + <_> + 29 6 2 1 3. + 0 + <_> + + <_> + 29 5 3 4 -1. + <_> + 29 6 3 2 2. + 0 + <_> + + <_> + 29 7 3 2 -1. + <_> + 30 8 1 2 3. + 1 + <_> + + <_> + 29 7 3 3 -1. + <_> + 30 8 1 3 3. + 1 + <_> + + <_> + 29 8 4 2 -1. + <_> + 30 8 2 2 2. + 0 + <_> + + <_> + 29 8 2 2 -1. + <_> + 29 8 1 2 2. + 1 + <_> + + <_> + 29 8 3 2 -1. + <_> + 30 9 1 2 3. + 1 + <_> + + <_> + 29 9 15 4 -1. + <_> + 34 9 5 4 3. + 0 + <_> + + <_> + 29 11 22 2 -1. + <_> + 40 11 11 2 2. + 0 + <_> + + <_> + 29 12 2 1 -1. + <_> + 30 12 1 1 2. + 0 + <_> + + <_> + 29 12 3 1 -1. + <_> + 30 12 1 1 3. + 0 + <_> + + <_> + 30 0 3 1 -1. + <_> + 31 0 1 1 3. + 0 + <_> + + <_> + 30 0 4 1 -1. + <_> + 31 0 2 1 2. + 0 + <_> + + <_> + 30 0 9 2 -1. + <_> + 33 3 3 2 3. + 1 + <_> + + <_> + 30 0 20 3 -1. + <_> + 35 0 10 3 2. + 0 + <_> + + <_> + 30 0 16 2 -1. + <_> + 30 1 16 1 2. + 0 + <_> + + <_> + 30 1 4 2 -1. + <_> + 30 1 2 1 2. + <_> + 32 2 2 1 2. + 0 + <_> + + <_> + 30 1 8 12 -1. + <_> + 32 1 4 12 2. + 0 + <_> + + <_> + 30 2 8 1 -1. + <_> + 32 2 4 1 2. + 0 + <_> + + <_> + 30 2 6 2 -1. + <_> + 32 2 2 2 3. + 0 + <_> + + <_> + 30 2 7 3 -1. + <_> + 29 3 7 1 3. + 1 + <_> + + <_> + 30 4 4 4 -1. + <_> + 31 4 2 4 2. + 0 + <_> + + <_> + 30 6 3 4 -1. + <_> + 30 6 3 2 2. + 1 + <_> + + <_> + 30 7 12 6 -1. + <_> + 33 7 6 6 2. + 0 + <_> + + <_> + 30 8 18 3 -1. + <_> + 36 9 6 1 9. + 0 + <_> + + <_> + 30 9 4 2 -1. + <_> + 31 9 2 2 2. + 0 + <_> + + <_> + 30 9 12 4 -1. + <_> + 33 9 6 4 2. + 0 + <_> + + <_> + 30 12 3 1 -1. + <_> + 31 12 1 1 3. + 0 + <_> + + <_> + 31 0 3 1 -1. + <_> + 32 0 1 1 3. + 0 + <_> + + <_> + 31 0 4 1 -1. + <_> + 32 0 2 1 2. + 0 + <_> + + <_> + 31 0 5 2 -1. + <_> + 31 1 5 1 2. + 0 + <_> + + <_> + 31 0 12 2 -1. + <_> + 31 0 6 1 2. + <_> + 37 1 6 1 2. + 0 + <_> + + <_> + 31 0 12 3 -1. + <_> + 31 1 12 1 3. + 0 + <_> + + <_> + 31 2 4 4 -1. + <_> + 31 2 2 2 2. + <_> + 33 4 2 2 2. + 0 + <_> + + <_> + 31 3 3 9 -1. + <_> + 31 6 3 3 3. + 0 + <_> + + <_> + 31 3 8 2 -1. + <_> + 31 3 4 2 2. + 1 + <_> + + <_> + 31 5 3 6 -1. + <_> + 32 7 1 2 9. + 0 + <_> + + <_> + 31 7 3 3 -1. + <_> + 32 7 1 3 3. + 0 + <_> + + <_> + 31 9 2 4 -1. + <_> + 31 9 1 2 2. + <_> + 32 11 1 2 2. + 0 + <_> + + <_> + 32 0 3 1 -1. + <_> + 33 0 1 1 3. + 0 + <_> + + <_> + 32 0 3 2 -1. + <_> + 33 0 1 2 3. + 0 + <_> + + <_> + 32 0 3 3 -1. + <_> + 33 1 1 3 3. + 1 + <_> + + <_> + 32 0 3 4 -1. + <_> + 32 1 3 2 2. + 0 + <_> + + <_> + 32 0 8 1 -1. + <_> + 36 0 4 1 2. + 0 + <_> + + <_> + 32 0 17 3 -1. + <_> + 32 1 17 1 3. + 0 + <_> + + <_> + 32 0 17 4 -1. + <_> + 32 1 17 2 2. + 0 + <_> + + <_> + 32 0 18 3 -1. + <_> + 32 1 18 1 3. + 0 + <_> + + <_> + 32 0 19 3 -1. + <_> + 32 1 19 1 3. + 0 + <_> + + <_> + 32 1 3 6 -1. + <_> + 33 3 1 2 9. + 0 + <_> + + <_> + 32 1 3 2 -1. + <_> + 33 2 1 2 3. + 1 + <_> + + <_> + 32 1 12 1 -1. + <_> + 36 1 4 1 3. + 0 + <_> + + <_> + 32 1 8 2 -1. + <_> + 32 1 4 1 2. + <_> + 36 2 4 1 2. + 0 + <_> + + <_> + 32 1 19 9 -1. + <_> + 32 4 19 3 3. + 0 + <_> + + <_> + 32 2 2 2 -1. + <_> + 32 3 2 1 2. + 0 + <_> + + <_> + 32 3 4 3 -1. + <_> + 33 3 2 3 2. + 0 + <_> + + <_> + 32 7 4 2 -1. + <_> + 33 7 2 2 2. + 0 + <_> + + <_> + 32 9 3 1 -1. + <_> + 33 9 1 1 3. + 0 + <_> + + <_> + 32 9 3 3 -1. + <_> + 33 10 1 1 9. + 0 + <_> + + <_> + 32 11 3 2 -1. + <_> + 32 12 3 1 2. + 0 + <_> + + <_> + 33 0 3 3 -1. + <_> + 34 1 1 3 3. + 1 + <_> + + <_> + 33 0 3 4 -1. + <_> + 34 1 1 4 3. + 1 + <_> + + <_> + 33 0 12 1 -1. + <_> + 37 0 4 1 3. + 0 + <_> + + <_> + 33 0 16 1 -1. + <_> + 37 0 8 1 2. + 0 + <_> + + <_> + 33 0 10 1 -1. + <_> + 38 0 5 1 2. + 0 + <_> + + <_> + 33 0 9 2 -1. + <_> + 33 1 9 1 2. + 0 + <_> + + <_> + 33 0 17 4 -1. + <_> + 33 1 17 2 2. + 0 + <_> + + <_> + 33 1 1 2 -1. + <_> + 33 2 1 1 2. + 0 + <_> + + <_> + 33 1 3 2 -1. + <_> + 34 2 1 2 3. + 1 + <_> + + <_> + 33 1 4 2 -1. + <_> + 34 2 2 2 2. + 1 + <_> + + <_> + 33 1 17 2 -1. + <_> + 33 2 17 1 2. + 0 + <_> + + <_> + 33 2 1 3 -1. + <_> + 33 3 1 1 3. + 0 + <_> + + <_> + 33 2 3 2 -1. + <_> + 34 3 1 2 3. + 1 + <_> + + <_> + 33 2 13 9 -1. + <_> + 33 5 13 3 3. + 0 + <_> + + <_> + 33 5 3 3 -1. + <_> + 34 6 1 1 9. + 0 + <_> + + <_> + 33 5 1 8 -1. + <_> + 33 7 1 4 2. + 0 + <_> + + <_> + 33 6 3 1 -1. + <_> + 34 7 1 1 3. + 1 + <_> + + <_> + 33 7 3 1 -1. + <_> + 34 8 1 1 3. + 1 + <_> + + <_> + 33 7 4 4 -1. + <_> + 33 7 2 2 2. + <_> + 35 9 2 2 2. + 0 + <_> + + <_> + 33 8 2 3 -1. + <_> + 32 9 2 1 3. + 1 + <_> + + <_> + 33 8 6 3 -1. + <_> + 35 8 2 3 3. + 0 + <_> + + <_> + 33 8 16 4 -1. + <_> + 33 10 16 2 2. + 0 + <_> + + <_> + 33 9 2 4 -1. + <_> + 33 11 2 2 2. + 0 + <_> + + <_> + 33 9 4 4 -1. + <_> + 33 9 2 2 2. + <_> + 35 11 2 2 2. + 0 + <_> + + <_> + 33 10 1 2 -1. + <_> + 33 11 1 1 2. + 0 + <_> + + <_> + 34 0 1 3 -1. + <_> + 33 1 1 1 3. + 1 + <_> + + <_> + 34 0 3 11 -1. + <_> + 35 0 1 11 3. + 0 + <_> + + <_> + 34 0 4 4 -1. + <_> + 34 0 2 4 2. + 1 + <_> + + <_> + 34 0 16 1 -1. + <_> + 38 0 8 1 2. + 0 + <_> + + <_> + 34 0 14 1 -1. + <_> + 41 0 7 1 2. + 0 + <_> + + <_> + 34 1 15 6 -1. + <_> + 39 1 5 6 3. + 0 + <_> + + <_> + 34 2 3 2 -1. + <_> + 35 3 1 2 3. + 1 + <_> + + <_> + 34 2 3 8 -1. + <_> + 35 2 1 8 3. + 0 + <_> + + <_> + 34 3 4 4 -1. + <_> + 35 3 2 4 2. + 0 + <_> + + <_> + 34 3 4 7 -1. + <_> + 35 3 2 7 2. + 0 + <_> + + <_> + 34 5 3 2 -1. + <_> + 35 6 1 2 3. + 1 + <_> + + <_> + 34 5 4 2 -1. + <_> + 35 6 2 2 2. + 1 + <_> + + <_> + 34 5 3 4 -1. + <_> + 35 5 1 4 3. + 0 + <_> + + <_> + 34 5 6 8 -1. + <_> + 36 5 2 8 3. + 0 + <_> + + <_> + 34 6 3 1 -1. + <_> + 35 7 1 1 3. + 1 + <_> + + <_> + 34 6 3 2 -1. + <_> + 35 7 1 2 3. + 1 + <_> + + <_> + 34 6 6 5 -1. + <_> + 36 6 2 5 3. + 0 + <_> + + <_> + 34 7 4 2 -1. + <_> + 35 7 2 2 2. + 0 + <_> + + <_> + 34 7 3 2 -1. + <_> + 35 8 1 2 3. + 1 + <_> + + <_> + 34 7 4 3 -1. + <_> + 35 7 2 3 2. + 0 + <_> + + <_> + 35 0 3 12 -1. + <_> + 36 0 1 12 3. + 0 + <_> + + <_> + 35 0 4 1 -1. + <_> + 37 0 2 1 2. + 0 + <_> + + <_> + 35 0 12 1 -1. + <_> + 41 0 6 1 2. + 0 + <_> + + <_> + 35 0 14 4 -1. + <_> + 35 0 7 2 2. + <_> + 42 2 7 2 2. + 0 + <_> + + <_> + 35 1 4 12 -1. + <_> + 36 1 2 12 2. + 0 + <_> + + <_> + 35 2 3 4 -1. + <_> + 36 3 1 4 3. + 1 + <_> + + <_> + 35 2 4 6 -1. + <_> + 36 2 2 6 2. + 0 + <_> + + <_> + 35 4 3 3 -1. + <_> + 35 5 3 1 3. + 0 + <_> + + <_> + 35 5 2 4 -1. + <_> + 36 5 1 4 2. + 0 + <_> + + <_> + 35 5 4 7 -1. + <_> + 36 5 2 7 2. + 0 + <_> + + <_> + 35 5 15 5 -1. + <_> + 40 5 5 5 3. + 0 + <_> + + <_> + 35 7 3 1 -1. + <_> + 36 8 1 1 3. + 1 + <_> + + <_> + 35 7 3 2 -1. + <_> + 36 8 1 2 3. + 1 + <_> + + <_> + 35 8 2 2 -1. + <_> + 35 8 1 2 2. + 1 + <_> + + <_> + 35 10 15 3 -1. + <_> + 35 11 15 1 3. + 0 + <_> + + <_> + 35 11 5 2 -1. + <_> + 35 12 5 1 2. + 0 + <_> + + <_> + 35 11 6 2 -1. + <_> + 35 12 6 1 2. + 0 + <_> + + <_> + 36 0 14 1 -1. + <_> + 43 0 7 1 2. + 0 + <_> + + <_> + 36 1 4 2 -1. + <_> + 36 1 2 1 2. + <_> + 38 2 2 1 2. + 0 + <_> + + <_> + 36 2 4 10 -1. + <_> + 37 2 2 10 2. + 0 + <_> + + <_> + 36 4 4 6 -1. + <_> + 37 4 2 6 2. + 0 + <_> + + <_> + 36 4 3 6 -1. + <_> + 36 4 3 3 2. + 1 + <_> + + <_> + 36 4 6 3 -1. + <_> + 35 5 6 1 3. + 1 + <_> + + <_> + 36 6 3 3 -1. + <_> + 37 7 1 3 3. + 1 + <_> + + <_> + 36 9 4 2 -1. + <_> + 38 9 2 2 2. + 0 + <_> + + <_> + 36 10 4 1 -1. + <_> + 37 10 2 1 2. + 0 + <_> + + <_> + 36 10 6 3 -1. + <_> + 39 10 3 3 2. + 0 + <_> + + <_> + 37 0 2 3 -1. + <_> + 36 1 2 1 3. + 1 + <_> + + <_> + 37 0 4 4 -1. + <_> + 37 0 2 2 2. + <_> + 39 2 2 2 2. + 0 + <_> + + <_> + 37 1 4 5 -1. + <_> + 38 2 2 5 2. + 1 + <_> + + <_> + 37 1 9 9 -1. + <_> + 37 4 9 3 3. + 0 + <_> + + <_> + 37 3 8 4 -1. + <_> + 37 5 8 2 2. + 0 + <_> + + <_> + 37 4 4 1 -1. + <_> + 38 4 2 1 2. + 0 + <_> + + <_> + 37 4 4 4 -1. + <_> + 38 4 2 4 2. + 0 + <_> + + <_> + 37 5 8 8 -1. + <_> + 39 5 4 8 2. + 0 + <_> + + <_> + 37 9 6 4 -1. + <_> + 37 9 3 2 2. + <_> + 40 11 3 2 2. + 0 + <_> + + <_> + 37 10 4 2 -1. + <_> + 37 10 2 1 2. + <_> + 39 11 2 1 2. + 0 + <_> + + <_> + 37 10 8 3 -1. + <_> + 39 10 4 3 2. + 0 + <_> + + <_> + 37 10 5 3 -1. + <_> + 37 11 5 1 3. + 0 + <_> + + <_> + 38 0 4 1 -1. + <_> + 40 0 2 1 2. + 0 + <_> + + <_> + 38 1 12 2 -1. + <_> + 38 2 12 1 2. + 0 + <_> + + <_> + 38 4 6 1 -1. + <_> + 40 4 2 1 3. + 0 + <_> + + <_> + 38 6 6 6 -1. + <_> + 40 8 2 2 9. + 0 + <_> + + <_> + 38 9 6 1 -1. + <_> + 40 9 2 1 3. + 0 + <_> + + <_> + 38 11 1 2 -1. + <_> + 38 12 1 1 2. + 0 + <_> + + <_> + 39 0 2 4 -1. + <_> + 39 1 2 2 2. + 0 + <_> + + <_> + 39 0 10 3 -1. + <_> + 39 1 10 1 3. + 0 + <_> + + <_> + 39 1 11 2 -1. + <_> + 39 2 11 1 2. + 0 + <_> + + <_> + 39 4 4 4 -1. + <_> + 40 4 2 4 2. + 0 + <_> + + <_> + 39 6 3 6 -1. + <_> + 40 8 1 2 9. + 0 + <_> + + <_> + 39 7 4 3 -1. + <_> + 40 7 2 3 2. + 0 + <_> + + <_> + 39 8 4 2 -1. + <_> + 40 8 2 2 2. + 0 + <_> + + <_> + 39 11 12 2 -1. + <_> + 45 11 6 2 2. + 0 + <_> + + <_> + 40 0 1 3 -1. + <_> + 40 1 1 1 3. + 0 + <_> + + <_> + 40 0 3 3 -1. + <_> + 40 1 3 1 3. + 0 + <_> + + <_> + 40 0 5 2 -1. + <_> + 40 1 5 1 2. + 0 + <_> + + <_> + 40 0 8 3 -1. + <_> + 40 1 8 1 3. + 0 + <_> + + <_> + 40 5 4 2 -1. + <_> + 42 5 2 2 2. + 0 + <_> + + <_> + 40 6 4 1 -1. + <_> + 41 7 2 1 2. + 1 + <_> + + <_> + 40 8 4 2 -1. + <_> + 41 8 2 2 2. + 0 + <_> + + <_> + 40 10 9 2 -1. + <_> + 40 11 9 1 2. + 0 + <_> + + <_> + 41 0 6 12 -1. + <_> + 43 0 2 12 3. + 0 + <_> + + <_> + 41 0 4 2 -1. + <_> + 41 1 4 1 2. + 0 + <_> + + <_> + 41 1 3 4 -1. + <_> + 42 2 1 4 3. + 1 + <_> + + <_> + 41 1 6 9 -1. + <_> + 41 4 6 3 3. + 0 + <_> + + <_> + 41 5 4 5 -1. + <_> + 42 5 2 5 2. + 0 + <_> + + <_> + 41 5 4 6 -1. + <_> + 42 5 2 6 2. + 0 + <_> + + <_> + 41 6 3 2 -1. + <_> + 42 7 1 2 3. + 1 + <_> + + <_> + 41 6 4 5 -1. + <_> + 42 6 2 5 2. + 0 + <_> + + <_> + 41 7 3 1 -1. + <_> + 42 8 1 1 3. + 1 + <_> + + <_> + 41 7 2 3 -1. + <_> + 41 8 2 1 3. + 0 + <_> + + <_> + 41 8 3 1 -1. + <_> + 42 8 1 1 3. + 0 + <_> + + <_> + 41 8 3 2 -1. + <_> + 42 9 1 2 3. + 1 + <_> + + <_> + 41 8 4 4 -1. + <_> + 41 8 2 2 2. + <_> + 43 10 2 2 2. + 0 + <_> + + <_> + 41 10 1 2 -1. + <_> + 41 11 1 1 2. + 0 + <_> + + <_> + 42 7 3 2 -1. + <_> + 43 8 1 2 3. + 1 + <_> + + <_> + 42 7 3 3 -1. + <_> + 43 8 1 3 3. + 1 + <_> + + <_> + 42 8 2 2 -1. + <_> + 42 8 1 2 2. + 1 + <_> + + <_> + 42 9 2 4 -1. + <_> + 42 9 1 2 2. + <_> + 43 11 1 2 2. + 0 + <_> + + <_> + 42 9 2 2 -1. + <_> + 42 9 1 2 2. + 1 + <_> + + <_> + 43 4 8 9 -1. + <_> + 47 4 4 9 2. + 0 + <_> + + <_> + 43 5 2 3 -1. + <_> + 43 6 2 1 3. + 0 + <_> + + <_> + 43 5 4 4 -1. + <_> + 43 5 4 2 2. + 1 + <_> + + <_> + 43 5 8 8 -1. + <_> + 47 5 4 8 2. + 0 + <_> + + <_> + 43 7 3 3 -1. + <_> + 44 8 1 3 3. + 1 + <_> + + <_> + 43 9 8 2 -1. + <_> + 45 9 4 2 2. + 0 + <_> + + <_> + 43 10 8 3 -1. + <_> + 45 10 4 3 2. + 0 + <_> + + <_> + 43 12 3 1 -1. + <_> + 44 12 1 1 3. + 0 + <_> + + <_> + 44 2 1 10 -1. + <_> + 44 7 1 5 2. + 0 + <_> + + <_> + 44 2 4 4 -1. + <_> + 44 2 2 2 2. + <_> + 46 4 2 2 2. + 0 + <_> + + <_> + 44 2 5 6 -1. + <_> + 44 5 5 3 2. + 0 + <_> + + <_> + 44 4 6 2 -1. + <_> + 46 4 2 2 3. + 0 + <_> + + <_> + 44 7 4 2 -1. + <_> + 45 7 2 2 2. + 0 + <_> + + <_> + 44 7 4 4 -1. + <_> + 45 7 2 4 2. + 0 + <_> + + <_> + 45 5 4 4 -1. + <_> + 46 5 2 4 2. + 0 + <_> + + <_> + 45 5 4 4 -1. + <_> + 45 5 2 2 2. + <_> + 47 7 2 2 2. + 0 + <_> + + <_> + 45 6 6 3 -1. + <_> + 47 7 2 1 9. + 0 + <_> + + <_> + 45 8 6 1 -1. + <_> + 47 8 2 1 3. + 0 + <_> + + <_> + 46 0 1 3 -1. + <_> + 46 1 1 1 3. + 0 + <_> + + <_> + 46 0 2 2 -1. + <_> + 46 1 2 1 2. + 0 + <_> + + <_> + 46 0 2 4 -1. + <_> + 46 2 2 2 2. + 0 + <_> + + <_> + 46 1 3 4 -1. + <_> + 46 2 3 2 2. + 0 + <_> + + <_> + 46 3 3 3 -1. + <_> + 47 4 1 1 9. + 0 + <_> + + <_> + 46 5 3 3 -1. + <_> + 47 6 1 1 9. + 0 + <_> + + <_> + 46 5 2 6 -1. + <_> + 46 7 2 2 3. + 0 + <_> + + <_> + 46 6 3 6 -1. + <_> + 47 8 1 2 9. + 0 + <_> + + <_> + 47 0 2 2 -1. + <_> + 47 1 2 1 2. + 0 + <_> + + <_> + 47 1 1 4 -1. + <_> + 47 2 1 2 2. + 0 + <_> + + <_> + 47 2 1 6 -1. + <_> + 47 4 1 2 3. + 0 + <_> + + <_> + 47 4 1 6 -1. + <_> + 47 6 1 2 3. + 0 + <_> + + <_> + 47 4 4 2 -1. + <_> + 49 4 2 2 2. + 0 + <_> + + <_> + 47 4 2 6 -1. + <_> + 47 6 2 2 3. + 0 + <_> + + <_> + 47 8 3 1 -1. + <_> + 48 9 1 1 3. + 1 + <_> + + <_> + 47 9 1 4 -1. + <_> + 47 11 1 2 2. + 0 + <_> + + <_> + 47 9 2 4 -1. + <_> + 47 11 2 2 2. + 0 + <_> + + <_> + 48 0 3 6 -1. + <_> + 48 3 3 3 2. + 0 + <_> + + <_> + 48 1 3 2 -1. + <_> + 49 2 1 2 3. + 1 + <_> + + <_> + 48 1 3 12 -1. + <_> + 49 1 1 12 3. + 0 + <_> + + <_> + 48 5 3 7 -1. + <_> + 49 5 1 7 3. + 0 + <_> + + <_> + 48 5 3 8 -1. + <_> + 49 5 1 8 3. + 0 + <_> + + <_> + 48 6 3 2 -1. + <_> + 49 7 1 2 3. + 1 + <_> + + <_> + 48 8 3 2 -1. + <_> + 49 9 1 2 3. + 1 + <_> + + <_> + 49 0 2 2 -1. + <_> + 50 0 1 2 2. + 0 + <_> + + <_> + 49 0 2 8 -1. + <_> + 50 0 1 8 2. + 0 + <_> + + <_> + 49 11 2 2 -1. + <_> + 50 11 1 2 2. + 0 + <_> + + <_> + 50 1 1 3 -1. + <_> + 50 2 1 1 3. + 0 + <_> + + <_> + 50 4 1 3 -1. + <_> + 50 5 1 1 3. + 0 + diff --git a/Prj-IOS/src/CNNRecognizer.cpp b/Prj-IOS/src/CNNRecognizer.cpp new file mode 100755 index 0000000..909753c --- /dev/null +++ b/Prj-IOS/src/CNNRecognizer.cpp @@ -0,0 +1,19 @@ +// +// Created by 庾金科 on 21/10/2017. +// + +#include "../include/CNNRecognizer.h" + +namespace pr{ + CNNRecognizer::CNNRecognizer(std::string prototxt,std::string caffemodel){ + net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); + } + + label CNNRecognizer::recognizeCharacter(cv::Mat charImage){ + if(charImage.channels()== 3) + cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); + cv::Mat inputBlob = cv::dnn::blobFromImage(charImage, 1/255.0, cv::Size(CHAR_INPUT_W,CHAR_INPUT_H), cv::Scalar(0,0,0),false); + net.setInput(inputBlob,"data"); + return net.forward(); + } +} \ No newline at end of file diff --git a/Prj-IOS/src/FastDeskew.cpp b/Prj-IOS/src/FastDeskew.cpp new file mode 100755 index 0000000..7c1502c --- /dev/null +++ b/Prj-IOS/src/FastDeskew.cpp @@ -0,0 +1,133 @@ +// +// Created by 庾金科 on 02/10/2017. +// + + + +#include <../include/FastDeskew.h> + +namespace pr{ + + + const int ANGLE_MIN = 30 ; + const int ANGLE_MAX = 150 ; + const int PLATE_H = 36; + const int PLATE_W = 136; + + int angle(float x,float y) + { + return atan2(x,y)*180/3.1415; + } + + std::vector avgfilter(std::vector angle_list,int windowsSize) { + std::vector angle_list_filtered(angle_list.size() - windowsSize + 1); + for (int i = 0; i < angle_list.size() - windowsSize + 1; i++) { + float avg = 0.00f; + for (int j = 0; j < windowsSize; j++) { + avg += angle_list[i + j]; + } + avg = avg / windowsSize; + angle_list_filtered[i] = avg; + } + + return angle_list_filtered; + } + + + void drawHist(std::vector seq){ + cv::Mat image(300,seq.size(),CV_8U); + image.setTo(0); + + for(int i = 0;i(skewPlate.rows*tan(cv::abs(angle)/180* 3.14) ); +// else +// extend_padding = static_cast(skewPlate.rows/tan(cv::abs(angle)/180* 3.14) ); + +// std::cout<<"extend:"<0) { + cv::Point2f pts2[4] = {cv::Point2f(interval, 0), cv::Point2f(0, size_o.height), + cv::Point2f(size_o.width, 0), cv::Point2f(size_o.width - interval, size_o.height)}; + cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); + cv::warpPerspective(skewPlate,dst,M,size); + + + } + else { + cv::Point2f pts2[4] = {cv::Point2f(0, 0), cv::Point2f(interval, size_o.height), cv::Point2f(size_o.width-interval, 0), + cv::Point2f(size_o.width, size_o.height)}; + cv::Mat M = cv::getPerspectiveTransform(pts1,pts2); + cv::warpPerspective(skewPlate,dst,M,size,cv::INTER_CUBIC); + + } + return dst; + } + cv::Mat fastdeskew(cv::Mat skewImage,int blockSize){ + + + const int FILTER_WINDOWS_SIZE = 5; + std::vector angle_list(180); + memset(angle_list.data(),0,angle_list.size()*sizeof(int)); + + cv::Mat bak; + skewImage.copyTo(bak); + if(skewImage.channels() == 3) + cv::cvtColor(skewImage,skewImage,cv::COLOR_RGB2GRAY); + + if(skewImage.channels() == 1) + { + cv::Mat eigen; + + cv::cornerEigenValsAndVecs(skewImage,eigen,blockSize,5); + for( int j = 0; j < skewImage.rows; j+=blockSize ) + { for( int i = 0; i < skewImage.cols; i+=blockSize ) + { + float x2 = eigen.at(j, i)[4]; + float y2 = eigen.at(j, i)[5]; + int angle_cell = angle(x2,y2); + angle_list[(angle_cell + 180)%180]+=1.0; + + } + } + } + std::vector filtered = avgfilter(angle_list,5); + + int maxPos = std::max_element(filtered.begin(),filtered.end()) - filtered.begin() + FILTER_WINDOWS_SIZE/2; + if(maxPos>ANGLE_MAX) + maxPos = (-maxPos+90+180)%180; + if(maxPos(maxPos),60.0f); + return deskewed; + } + + + +}//namespace pr diff --git a/Prj-IOS/src/FineMapping.cpp b/Prj-IOS/src/FineMapping.cpp new file mode 100755 index 0000000..6890eff --- /dev/null +++ b/Prj-IOS/src/FineMapping.cpp @@ -0,0 +1,205 @@ +// +// Created by 庾金科 on 22/09/2017. +// + +#include "FineMapping.h" +namespace pr{ + + const int FINEMAPPING_H = 50; + const int FINEMAPPING_W = 120; + const int PADDING_UP_DOWN = 30; + void drawRect(cv::Mat image,cv::Rect rect) + { + cv::Point p1(rect.x,rect.y); + cv::Point p2(rect.x+rect.width,rect.y+rect.height); + cv::rectangle(image,p1,p2,cv::Scalar(0,255,0),1); + } + + + FineMapping::FineMapping(std::string prototxt,std::string caffemodel) { + net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); + + } + + cv::Mat FineMapping::FineMappingHorizon(cv::Mat FinedVertical,int leftPadding,int rightPadding) + { + +// if(FinedVertical.channels()==1) +// cv::cvtColor(FinedVertical,FinedVertical,cv::COLOR_GRAY2BGR); + cv::Mat inputBlob = cv::dnn::blobFromImage(FinedVertical, 1/255.0, cv::Size(66,16), + cv::Scalar(0,0,0),false); + + net.setInput(inputBlob,"data"); + cv::Mat prob = net.forward(); + int front = static_cast(prob.at(0,0)*FinedVertical.cols); + int back = static_cast(prob.at(0,1)*FinedVertical.cols); + front -= leftPadding ; + if(front<0) front = 0; + back +=rightPadding; + if(back>FinedVertical.cols-1) back=FinedVertical.cols - 1; + cv::Mat cropped = FinedVertical.colRange(front,back).clone(); + return cropped; + + + } + std::pair FitLineRansac(std::vector pts,int zeroadd = 0 ) + { + std::pair res; + if(pts.size()>2) + { + cv::Vec4f line; + cv::fitLine(pts,line,cv::DIST_HUBER,0,0.01,0.01); + float vx = line[0]; + float vy = line[1]; + float x = line[2]; + float y = line[3]; + int lefty = static_cast((-x * vy / vx) + y); + int righty = static_cast(((136- x) * vy / vx) + y); + res.first = lefty+PADDING_UP_DOWN+zeroadd; + res.second = righty+PADDING_UP_DOWN+zeroadd; + return res; + } + res.first = zeroadd; + res.second = zeroadd; + return res; + } + + cv::Mat FineMapping::FineMappingVertical(cv::Mat InputProposal,int sliceNum,int upper,int lower,int windows_size){ + + + cv::Mat PreInputProposal; + cv::Mat proposal; + + cv::resize(InputProposal,PreInputProposal,cv::Size(FINEMAPPING_W,FINEMAPPING_H)); + if(InputProposal.channels() == 3) + cv::cvtColor(PreInputProposal,proposal,cv::COLOR_BGR2GRAY); + else + PreInputProposal.copyTo(proposal); + +// proposal = PreInputProposal; + + // this will improve some sen + cv::Mat kernal = cv::getStructuringElement(cv::MORPH_ELLIPSE,cv::Size(1,3)); +// cv::erode(proposal,proposal,kernal); + + + float diff = static_cast(upper-lower); + diff/=static_cast(sliceNum-1); + cv::Mat binary_adaptive; + std::vector line_upper; + std::vector line_lower; + int contours_nums=0; + + for(int i = 0 ; i < sliceNum ; i++) + { + std::vector > contours; + float k =lower + i*diff; + cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); + cv::Mat draw; + binary_adaptive.copyTo(draw); + cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); + for(auto contour: contours) + { + cv::Rect bdbox =cv::boundingRect(contour); + float lwRatio = bdbox.height/static_cast(bdbox.width); + int bdboxAera = bdbox.width*bdbox.height; + if (( lwRatio>0.7&&bdbox.width*bdbox.height>100 && bdboxAera<300) + || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) + { + + cv::Point p1(bdbox.x, bdbox.y); + cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); + line_upper.push_back(p1); + line_lower.push_back(p2); + contours_nums+=1; + } + } + } + + std:: cout<<"contours_nums "< > contours; + float k =lower + i*diff; + cv::adaptiveThreshold(proposal,binary_adaptive,255,cv::ADAPTIVE_THRESH_MEAN_C,cv::THRESH_BINARY,windows_size,k); +// cv::imshow("image",binary_adaptive); +// cv::waitKey(0); + cv::Mat draw; + binary_adaptive.copyTo(draw); + cv::findContours(binary_adaptive,contours,cv::RETR_EXTERNAL,cv::CHAIN_APPROX_SIMPLE); + for(auto contour: contours) + { + cv::Rect bdbox =cv::boundingRect(contour); + float lwRatio = bdbox.height/static_cast(bdbox.width); + int bdboxAera = bdbox.width*bdbox.height; + if (( lwRatio>0.7&&bdbox.width*bdbox.height>120 && bdboxAera<300) + || (lwRatio>3.0 && bdboxAera<100 && bdboxAera>10)) + { + + cv::Point p1(bdbox.x, bdbox.y); + cv::Point p2(bdbox.x + bdbox.width, bdbox.y + bdbox.height); + line_upper.push_back(p1); + line_lower.push_back(p2); + contours_nums+=1; + } + } + } +// std:: cout<<"contours_nums "< A; + std::pair B; + A = FitLineRansac(line_upper, -2); + B = FitLineRansac(line_lower, 2); + int leftyB = A.first; + int rightyB = A.second; + int leftyA = B.first; + int rightyA = B.second; + int cols = rgb.cols; + int rows = rgb.rows; +// pts_map1 = np.float32([[cols - 1, rightyA], [0, leftyA],[cols - 1, rightyB], [0, leftyB]]) +// pts_map2 = np.float32([[136,36],[0,36],[136,0],[0,0]]) +// mat = cv2.getPerspectiveTransform(pts_map1,pts_map2) +// image = cv2.warpPerspective(rgb,mat,(136,36),flags=cv2.INTER_CUBIC) + std::vector corners(4); + corners[0] = cv::Point2f(cols - 1, rightyA); + corners[1] = cv::Point2f(0, leftyA); + corners[2] = cv::Point2f(cols - 1, rightyB); + corners[3] = cv::Point2f(0, leftyB); + std::vector corners_trans(4); + corners_trans[0] = cv::Point2f(136, 36); + corners_trans[1] = cv::Point2f(0, 36); + corners_trans[2] = cv::Point2f(136, 0); + corners_trans[3] = cv::Point2f(0, 0); + cv::Mat transform = cv::getPerspectiveTransform(corners, corners_trans); + cv::Mat quad = cv::Mat::zeros(36, 136, CV_8UC3); + cv::warpPerspective(rgb, quad, transform, quad.size()); + return quad; + + } + + +} + + diff --git a/Prj-IOS/src/Pipeline.cpp b/Prj-IOS/src/Pipeline.cpp new file mode 100755 index 0000000..c74eeb2 --- /dev/null +++ b/Prj-IOS/src/Pipeline.cpp @@ -0,0 +1,69 @@ +// +// Created by 庾金科 on 23/10/2017. +// + +#include "../include/Pipeline.h" + + +namespace pr { + + std::vector chars_code{"京","沪","津","渝","冀","晋","蒙","辽","吉","黑","苏","浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","川","贵","云","藏","陕","甘","青","宁","新","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"}; + + + + PipelinePR::PipelinePR(std::string detector_filename, + std::string finemapping_prototxt, std::string finemapping_caffemodel, + std::string segmentation_prototxt, std::string segmentation_caffemodel, + std::string charRecognization_proto, std::string charRecognization_caffemodel) { + plateDetection = new PlateDetection(detector_filename); + fineMapping = new FineMapping(finemapping_prototxt, finemapping_caffemodel); + plateSegmentation = new PlateSegmentation(segmentation_prototxt, segmentation_caffemodel); + generalRecognizer = new CNNRecognizer(charRecognization_proto, charRecognization_caffemodel); + } + + PipelinePR::~PipelinePR() { + + delete plateDetection; + delete fineMapping; + delete plateSegmentation; + delete generalRecognizer; + + } + + std::vector PipelinePR:: RunPiplineAsImage(cv::Mat plateImage) { + std::vector results; + std::vector plates; + plateDetection->plateDetectionRough(plateImage,plates); + + for (pr::PlateInfo plateinfo:plates) { + + cv::Mat image_finemapping = plateinfo.getPlateImage(); + image_finemapping = fineMapping->FineMappingVertical(image_finemapping); + image_finemapping = pr::fastdeskew(image_finemapping, 5); + image_finemapping = fineMapping->FineMappingHorizon(image_finemapping, 2, 5); + cv::resize(image_finemapping, image_finemapping, cv::Size(136, 36)); + plateinfo.setPlateImage(image_finemapping); + std::vector rects; + plateSegmentation->segmentPlatePipline(plateinfo, 1, rects); + plateSegmentation->ExtractRegions(plateinfo, rects); + cv::copyMakeBorder(image_finemapping, image_finemapping, 0, 0, 0, 20, cv::BORDER_REPLICATE); + + plateinfo.setPlateImage(image_finemapping); + generalRecognizer->SegmentBasedSequenceRecognition(plateinfo); + plateinfo.decodePlateNormal(chars_code); + results.push_back(plateinfo); + std::cout << plateinfo.getPlateName() << std::endl; + + + } + +// for (auto str:results) { +// std::cout << str << std::endl; +// } + return results; + + }//namespace pr + + + +} \ No newline at end of file diff --git a/Prj-IOS/src/PlateDetection.cpp b/Prj-IOS/src/PlateDetection.cpp new file mode 100755 index 0000000..b207190 --- /dev/null +++ b/Prj-IOS/src/PlateDetection.cpp @@ -0,0 +1,61 @@ +// +// Created by 庾金科 on 20/09/2017. +// +#include "../include/PlateDetection.h" + +#include "util.h" + +namespace pr{ + + + PlateDetection::PlateDetection(std::string filename_cascade){ + cascade.load(filename_cascade); + + }; + + + void PlateDetection::plateDetectionRough(cv::Mat InputImage,std::vector &plateInfos,int min_w,int max_w){ + + cv::Mat processImage; + + cv::cvtColor(InputImage,processImage,cv::COLOR_BGR2GRAY); + + + std::vector platesRegions; +// std::vector plates; + cv::Size minSize(min_w,min_w/4); + cv::Size maxSize(max_w,max_w/4); +// cv::imshow("input",InputImage); +// cv::waitKey(0); + cascade.detectMultiScale( processImage, platesRegions, + 1.1, 3, cv::CASCADE_SCALE_IMAGE,minSize,maxSize); + for(auto plate:platesRegions) + { + // extend rects +// x -= w * 0.14 +// w += w * 0.28 +// y -= h * 0.6 +// h += h * 1.1; + int zeroadd_w = static_cast(plate.width*0.28); + int zeroadd_h = static_cast(plate.height*1.2); + int zeroadd_x = static_cast(plate.width*0.14); + int zeroadd_y = static_cast(plate.height*0.6); + plate.x-=zeroadd_x; + plate.y-=zeroadd_y; + plate.height += zeroadd_h; + plate.width += zeroadd_w; + cv::Mat plateImage = util::cropFromImage(InputImage,plate); + PlateInfo plateInfo(plateImage,plate); + plateInfos.push_back(plateInfo); + + } + } +// std::vector PlateDetection::plateDetectionRough(cv::Mat InputImage,cv::Rect roi,int min_w,int max_w){ +// cv::Mat roi_region = util::cropFromImage(InputImage,roi); +// return plateDetectionRough(roi_region,min_w,max_w); +// } + + + + +}//namespace pr diff --git a/Prj-IOS/src/PlateSegmentation.cpp b/Prj-IOS/src/PlateSegmentation.cpp new file mode 100755 index 0000000..38765fa --- /dev/null +++ b/Prj-IOS/src/PlateSegmentation.cpp @@ -0,0 +1,402 @@ +// +// Created by 庾金科 on 16/10/2017. +// + +#include "../include/PlateSegmentation.h" +#include "../include/niBlackThreshold.h" + + +//#define DEBUG +namespace pr{ + + PlateSegmentation::PlateSegmentation(std::string prototxt,std::string caffemodel) { + net = cv::dnn::readNetFromCaffe(prototxt, caffemodel); + } + cv::Mat PlateSegmentation::classifyResponse(const cv::Mat &cropped){ + cv::Mat inputBlob = cv::dnn::blobFromImage(cropped, 1/255.0, cv::Size(22,22), cv::Scalar(0,0,0),false); + net.setInput(inputBlob,"data"); + return net.forward(); + } + + void drawHist(float* seq,int size,const char* name){ + cv::Mat image(300,size,CV_8U); + image.setTo(0); + float* start =seq; + float* end = seq+size; + float l = *std::max_element(start,end); + for(int i = 0;i>1),rect.y + (rect.height>>1)); + int rebuildLeft = (rect.width>>1 )+ left; + int rebuildRight = (rect.width>>1 )+ right; + int rebuildTop = (rect.height>>1 )+ top; + int rebuildBottom = (rect.height>>1 )+ bottom; + return boxFromCenter(center,rebuildLeft,rebuildRight,rebuildTop,rebuildBottom,bdSize); + + } + + + + void PlateSegmentation:: refineRegion(cv::Mat &plateImage,const std::vector &candidatePts,const int padding,std::vector &rects){ + int w = candidatePts[5] - candidatePts[4]; + int cols = plateImage.cols; + int rows = plateImage.rows; + for(int i = 0 ; i < candidatePts.size() ; i++) + { + int left = 0; + int right = 0 ; + + if(i == 0 ){ + left= candidatePts[i]; + right = left+w+padding; + } + else { + left = candidatePts[i] - padding; + right = left + w + padding * 2; + } + + computeSafeMargin(right,cols); + computeSafeMargin(left,cols); + cv::Rect roi(left,0,right - left,rows-1); + cv::Mat roiImage; + plateImage(roi).copyTo(roiImage); + + if (i>=1) + { + + cv::Mat roi_thres; +// cv::threshold(roiImage,roi_thres,0,255,cv::THRESH_OTSU|cv::THRESH_BINARY); + + niBlackThreshold(roiImage,roi_thres,255,cv::THRESH_BINARY,15,0.3,BINARIZATION_NIBLACK); + + std::vector> contours; + cv::findContours(roi_thres,contours,cv::RETR_LIST,cv::CHAIN_APPROX_SIMPLE); + cv::Point boxCenter(roiImage.cols>>1,roiImage.rows>>1); + + cv::Rect final_bdbox; + cv::Point final_center; + int final_dist = INT_MAX; + + + for(auto contour:contours) + { + cv::Rect bdbox = cv::boundingRect(contour); + cv::Point center(bdbox.x+(bdbox.width>>1),bdbox.y + (bdbox.height>>1)); + int dist = (center.x - boxCenter.x)*(center.x - boxCenter.x); + if(dist rows>>1) + { final_dist =dist; + final_center = center; + final_bdbox = bdbox; + } + } + + //rebuild box + if(final_bdbox.height/ static_cast(final_bdbox.width) > 3.5 && final_bdbox.width*final_bdbox.height<10) + final_bdbox = boxFromCenter(final_center,8,8,(rows>>1)-3 , (rows>>1) - 2,roiImage.size()); + else { + if(i == candidatePts.size()-1) + final_bdbox = boxPadding(final_bdbox, padding/2, padding, padding/2, padding/2, roiImage.size()); + else + final_bdbox = boxPadding(final_bdbox, padding, padding, padding, padding, roiImage.size()); + + +// std::cout<0&&i+j+r> &candidatePts){ + int rows = respones.rows; + int cols = respones.cols; + + + + float *data = (float*)respones.data; + float *engNum_prob = data; + float *false_prob = data+cols; + float *ch_prob = data+cols*2; + + avgfilter(engNum_prob,cols,5); + avgfilter(false_prob,cols,5); +// avgfilter(ch_prob,cols,5); + std::vector candidate_pts(7); +#ifdef DEBUG + drawHist(engNum_prob,cols,"engNum_prob"); + drawHist(false_prob,cols,"false_prob"); + drawHist(ch_prob,cols,"ch_prob"); + //cv::waitKey(0); +#endif + + + + + int cp_list[7]; + float loss_selected = -1; + + for(int start = 0 ; start < 20 ; start+=2) + for(int width = windowsWidth-5; width < windowsWidth+5 ; width++ ){ + for(int interval = windowsWidth/2; interval < windowsWidth; interval++) + { + int cp1_ch = start; + int cp2_p0 = cp1_ch+ width; + int cp3_p1 = cp2_p0+ width + interval; + int cp4_p2 = cp3_p1 + width; + int cp5_p3 = cp4_p2 + width+1; + int cp6_p4 = cp5_p3 + width+2; + int cp7_p5= cp6_p4+ width+2; + + int md1 = (cp1_ch+cp2_p0)>>1; + int md2 = (cp2_p0+cp3_p1)>>1; + int md3 = (cp3_p1+cp4_p2)>>1; + int md4 = (cp4_p2+cp5_p3)>>1; + int md5 = (cp5_p3+cp6_p4)>>1; + int md6 = (cp6_p4+cp7_p5)>>1; + + + + + if(cp7_p5>=cols) + continue; + float loss = ch_prob[cp1_ch]+ + engNum_prob[cp2_p0] +engNum_prob[cp3_p1]+engNum_prob[cp4_p2]+engNum_prob[cp5_p3]+engNum_prob[cp6_p4] +engNum_prob[cp7_p5] + + (false_prob[md2]+false_prob[md3]+false_prob[md4]+false_prob[md5]+false_prob[md5] + false_prob[md6]); +// float loss = ch_prob[cp1_ch]*3 -(false_prob[cp3_p1]+false_prob[cp4_p2]+false_prob[cp5_p3]+false_prob[cp6_p4]+false_prob[cp7_p5]); + + + + + if(loss>loss_selected) + { + loss_selected = loss; + cp_list[0]= cp1_ch; + cp_list[1]= cp2_p0; + cp_list[2]= cp3_p1; + cp_list[3]= cp4_p2; + cp_list[4]= cp5_p3; + cp_list[5]= cp6_p4; + cp_list[6]= cp7_p5; + } + } + } + candidate_pts[0] = cp_list[0]; + candidate_pts[1] = cp_list[1]; + candidate_pts[2] = cp_list[2]; + candidate_pts[3] = cp_list[3]; + candidate_pts[4] = cp_list[4]; + candidate_pts[5] = cp_list[5]; + candidate_pts[6] = cp_list[6]; + + candidatePts.first = loss_selected; + candidatePts.second = candidate_pts; + + }; + + + void PlateSegmentation::segmentPlateBySlidingWindows(cv::Mat &plateImage,int windowsWidth,int stride,cv::Mat &respones){ + + + cv::resize(plateImage,plateImage,cv::Size(136,36)); + + cv::Mat plateImageGray; + cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); + + int height = plateImage.rows - 1; + int width = plateImage.cols - 1; + + for(int i = 0 ; i < plateImage.cols - windowsWidth +1 ; i +=stride) + { + cv::Rect roi(i,0,windowsWidth,height); + cv::Mat roiImage = plateImageGray(roi); + cv::Mat response = classifyResponse(roiImage); + respones.push_back(response); + } + + + + + respones = respones.t(); +// std::pair> images ; +// +// +// std::cout< &Char_rects){ + cv::Mat plateImage = plateInfo.getPlateImage(); // get src image . + cv::Mat plateImageGray; + cv::cvtColor(plateImage,plateImageGray,cv::COLOR_BGR2GRAY); + //do binarzation + // + std::pair> sections ; // segment points variables . + + cv::Mat respones; //three response of every sub region from origin image . + segmentPlateBySlidingWindows(plateImage,DEFAULT_WIDTH,1,respones); + templateMatchFinding(respones,DEFAULT_WIDTH/stride,sections); + +// std::cout< &rects){ + cv::Mat plateImage = plateInfo.getPlateImage(); + for(int i = 0 ; i < rects.size() ; i++){ + cv::Mat charImage; + plateImage(rects[i]).copyTo(charImage); + if(charImage.channels()) + cv::cvtColor(charImage,charImage,cv::COLOR_BGR2GRAY); +// cv::imshow("image",charImage); +// cv::waitKey(0); + cv::equalizeHist(charImage,charImage); +// + +// + + + std::pair char_instance; + if(i == 0 ){ + + char_instance.first = CHINESE; + + + } else if(i == 1){ + char_instance.first = LETTER; + } + else{ + char_instance.first = LETTER_NUMS; + } + char_instance.second = charImage; + plateInfo.appendPlateChar(char_instance); + + } + + } + +}//namespace pr diff --git a/Prj-IOS/src/Recognizer.cpp b/Prj-IOS/src/Recognizer.cpp new file mode 100755 index 0000000..0cad4e6 --- /dev/null +++ b/Prj-IOS/src/Recognizer.cpp @@ -0,0 +1,26 @@ +// +// Created by 庾金科 on 22/10/2017. +// + +#include "../include/Recognizer.h" + +namespace pr{ + void GeneralRecognizer::SegmentBasedSequenceRecognition(PlateInfo &plateinfo){ + + + for(auto char_instance:plateinfo.plateChars) + { + + + std::pair res; + cv::Mat code_table= recognizeCharacter(char_instance.second); + res.first = char_instance.first; + code_table.copyTo(res.second); + plateinfo.appendPlateCoding(res); + + } + + + + } +} \ No newline at end of file diff --git a/Prj-IOS/src/util.h b/Prj-IOS/src/util.h new file mode 100755 index 0000000..76a452f --- /dev/null +++ b/Prj-IOS/src/util.h @@ -0,0 +1,79 @@ +// +// Created by 庾金科 on 04/04/2017. +// + +#include + +namespace util{ + + template void swap ( T& a, T& b ) + { + T c(a); a=b; b=c; + } + + template T min(T& a,T& b ) + { + return a>b?b:a; + + } + + cv::Mat cropFromImage(const cv::Mat &image,cv::Rect rect){ + int w = image.cols-1; + int h = image.rows-1; + rect.x = std::max(rect.x,0); + rect.y = std::max(rect.y,0); + rect.height = std::min(rect.height,h-rect.y); + rect.width = std::min(rect.width,w-rect.x); + cv::Mat temp(rect.size(), image.type()); + cv::Mat cropped; + temp = image(rect); + temp.copyTo(cropped); + return cropped; + + } + + cv::Mat cropBox2dFromImage(const cv::Mat &image,cv::RotatedRect rect) + { + cv::Mat M, rotated, cropped; + float angle = rect.angle; + cv::Size rect_size(rect.size.width,rect.size.height); + if (rect.angle < -45.) { + angle += 90.0; + swap(rect_size.width, rect_size.height); + } + M = cv::getRotationMatrix2D(rect.center, angle, 1.0); + cv::warpAffine(image, rotated, M, image.size(), cv::INTER_CUBIC); + cv::getRectSubPix(rotated, rect_size, rect.center, cropped); + return cropped; + } + + cv::Mat calcHist(const cv::Mat &image) + { + cv::Mat hsv; + std::vector hsv_planes; + cv::cvtColor(image,hsv,cv::COLOR_BGR2HSV); + cv::split(hsv,hsv_planes); + cv::Mat hist; + int histSize = 256; + float range[] = {0,255}; + const float* histRange = {range}; + + cv::calcHist( &hsv_planes[0], 1, 0, cv::Mat(), hist, 1, &histSize, &histRange,true, true); + return hist; + + } + float computeSimilir(const cv::Mat &A,const cv::Mat &B) + { + + cv::Mat histA,histB; + histA = calcHist(A); + histB = calcHist(B); + return cv::compareHist(histA,histB,CV_COMP_CORREL); + + } + + + + + +}//namespace util diff --git a/README.md b/README.md index bce214a..714509b 100644 --- a/README.md +++ b/README.md @@ -8,15 +8,21 @@ HyperLPR是一个使用深度学习针对对中文车牌识别的实现,与较 [相关技术博客](http://blog.csdn.net/relocy/article/details/78705662)(技术文章会在接下来的几个月的时间内连续更新)。 - ### 更新 ++ 添加了IOS版本的实现(感谢[xiaojun123456](https://github.com/xiaojun123456)的工作) + 添加端到端的序列识别模型识别率大幅度提升,使得无需分割字符即可识别,识别速度提高20% (2017.11.17) + 新增的端到端模型可以识别新能源车牌、教练车牌、白色警用车牌、武警车牌 (2017.11.17) + 更新Windows版本的Visual Studio 2015 工程(2017.11.15) + 增加cpp版本,目前仅支持标准蓝牌(需要依赖OpenCV 3.3) (2017.10.28) + 添加了简单的Android实现 (骁龙835 (*720*x*1280*) 200ms )(2017.10.28) +### TODO + ++ 提供字符分割、字符识别的训练代码 ++ 改进精定位方法 ++ C++版的端到端识别模型 + ### 特性 + 速度快 720p ,单核 Intel 2.2G CPU (macbook Pro 2015)平均识别时间低于100ms @@ -44,22 +50,6 @@ HyperLPR是一个使用深度学习针对对中文车牌识别的实现,与较 + Opencv 3.3 -### 设计流程 - -> step1. 使用opencv 的 HAAR Cascade 检测车牌大致位置 -> -> step2. Extend 检测到的大致位置的矩形区域 -> -> step3. 使用类似于MSER的方式的 多级二值化 + RANSAC 拟合车牌的上下边界 -> -> step4. 使用CNN Regression回归车牌左右边界 -> -> step5. 使用基于纹理场的算法进行车牌校正倾斜 -> -> step6. 使用CNN滑动窗切割字符 -> -> step7. 使用CNN识别字符 - ### 简单使用方式 ```python @@ -98,6 +88,8 @@ sudo make -j - [ ] 双层个性化车牌 +###### Note:由于训练的时候样本存在一些不均衡的问题,一些特殊车牌存在一定识别率低下的问题,如(使馆/港澳车牌),会在后续的版本进行改进。 + ### 测试样例 @@ -118,6 +110,13 @@ sudo make -j 车牌识别框架开发时使用的数据并不是很多,有意着可以为我们提供相关车牌数据。联系邮箱 455501914@qq.com。 -### 获取帮助 +### 捐赠我们 + +***如果您愿意支持我们持续对这个框架的开发,可以通过下面的链接来对我们捐赠。*** + +**[支付宝/微信](http://chuantu.biz/t6/178/1513525003x-1404758184.png)** + +#### 获取帮助 + HyperLPR讨论QQ群:673071218, 加前请备注HyperLPR交流。 +