diff --git a/CameraOpenCV/CameraOpenCV.csproj b/CameraOpenCV/CameraOpenCV.csproj index 74d2fb3..97ba51a 100644 --- a/CameraOpenCV/CameraOpenCV.csproj +++ b/CameraOpenCV/CameraOpenCV.csproj @@ -11,7 +11,7 @@ CameraOpenCV en-US UAP - 10.0.18362.0 + 10.0.22000.0 10.0.18362.0 14 512 @@ -84,6 +84,7 @@ true true 8.0 + true bin\ARM64\Release\ @@ -187,13 +188,13 @@ - 6.2.10 + 6.2.14 - 4.5.0.20201013 + 4.10.0.20240615 - 4.5.0.20201013 + 4.8.0.20230708 diff --git a/CameraOpenCV/Properties/AssemblyInfo.cs b/CameraOpenCV/Properties/AssemblyInfo.cs index f3d4c3f..d343083 100644 --- a/CameraOpenCV/Properties/AssemblyInfo.cs +++ b/CameraOpenCV/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/CameraOpenCV/Scenario2_ImageOperations.xaml.cs b/CameraOpenCV/Scenario2_ImageOperations.xaml.cs index 363b9e1..6ab158d 100644 --- a/CameraOpenCV/Scenario2_ImageOperations.xaml.cs +++ b/CameraOpenCV/Scenario2_ImageOperations.xaml.cs @@ -32,19 +32,16 @@ enum OperationType : int MotionDetector } - private const int ImageRows = 480; - private const int ImageCols = 640; - public AlgorithmProperty StoredProperty { get; set; } public AlgorithmProperty LastStoredProperty { get; set; } private Algorithm storeditem; private MainPage rootPage; - private FrameRenderer previewRenderer; - private FrameRenderer outputRenderer; + private readonly FrameRenderer previewRenderer; + private readonly FrameRenderer outputRenderer; - private DispatcherTimer fpsTimer; + private readonly DispatcherTimer fpsTimer; private int frameCount = 0; private OperationType currentOperation; @@ -99,7 +96,6 @@ private async Task ProcessWithOpenCV(VideoFrame frame) { if (frame != null) { - SoftwareBitmap originalBitmap = null; var inputBitmap = frame.SoftwareBitmap; if (inputBitmap != null) { @@ -107,7 +103,7 @@ private async Task ProcessWithOpenCV(VideoFrame frame) { // The XAML Image control can only display images in BRGA8 format with premultiplied or no alpha // The frame reader as configured in this sample gives BGRA8 with straight alpha, so need to convert it - originalBitmap = SoftwareBitmap.Convert(inputBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); + SoftwareBitmap originalBitmap = SoftwareBitmap.Convert(inputBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied); SoftwareBitmap outputBitmap = new SoftwareBitmap(BitmapPixelFormat.Bgra8, originalBitmap.PixelWidth, originalBitmap.PixelHeight, BitmapAlphaMode.Premultiplied); @@ -281,11 +277,9 @@ private void UpdateStoredAlgorithm(OperationType operationType, AlgorithmPropert /// If false the file will be overwritten if it already exists. If true the contents will be appended to the file. public static void WriteToBinaryFile(string filePath, T objectToWrite, bool append = false) { - using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create)) - { - var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); - binaryFormatter.Serialize(stream, objectToWrite); - } + using var stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create); + var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); + binaryFormatter.Serialize(stream, objectToWrite); } /// @@ -296,11 +290,9 @@ public static void WriteToBinaryFile(string filePath, T objectToWrite, bool a /// Returns a new instance of the object read from the binary file. public static T ReadFromBinaryFile(string filePath) { - using (Stream stream = File.Open(filePath, FileMode.Open)) - { - var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); - return (T)binaryFormatter.Deserialize(stream); - } + using var stream = File.Open(filePath, FileMode.Open); + var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); + return (T)binaryFormatter.Deserialize(stream); } private async void ToggleButton_Click(object sender, RoutedEventArgs e) @@ -365,8 +357,10 @@ public static IAsyncOperation LoadVideoFrameFromFilePickedAsync() return AsyncInfo.Run(async (token) => { // Trigger file picker to select an image file - FileOpenPicker fileOpenPicker = new FileOpenPicker(); - fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; + FileOpenPicker fileOpenPicker = new FileOpenPicker + { + SuggestedStartLocation = PickerLocationId.PicturesLibrary + }; fileOpenPicker.FileTypeFilter.Add(".jpg"); fileOpenPicker.FileTypeFilter.Add(".png"); fileOpenPicker.ViewMode = PickerViewMode.Thumbnail; diff --git a/LICENSE b/LICENSE index f9101f4..261eeb9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,29 +1,201 @@ -BSD 3-Clause License - -Copyright (c) 2017, shimat -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/OpenCvSharpSamples.sln b/OpenCvSharpSamples.sln index 72b6f24..fbe10d9 100644 --- a/OpenCvSharpSamples.sln +++ b/OpenCvSharpSamples.sln @@ -1,167 +1,211 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29503.13 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamplesCS", "SamplesCS\SamplesCS.csproj", "{E4666B99-145A-436D-9540-2E4593A061A6}" -EndProject -Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "SamplesVB", "SamplesVB\SamplesVB.vbproj", "{4A14A20D-8E2A-4559-A038-F0204A22C283}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SampleBase", "SampleBase\SampleBase.csproj", "{2D245C04-0F27-458A-A185-16242A3F918C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SamplesCore", "SamplesCore\SamplesCore.csproj", "{AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CameraOpenCV", "CameraOpenCV\CameraOpenCV.csproj", "{BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VideoCaptureForm", "VideoCaptureForm\VideoCaptureForm.csproj", "{9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|ARM.ActiveCfg = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|ARM.Build.0 = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|ARM64.Build.0 = Debug|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|x64.ActiveCfg = Debug|x64 - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|x64.Build.0 = Debug|x64 - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|x86.ActiveCfg = Debug|x86 - {E4666B99-145A-436D-9540-2E4593A061A6}.Debug|x86.Build.0 = Debug|x86 - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|Any CPU.Build.0 = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|ARM.ActiveCfg = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|ARM.Build.0 = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|ARM64.ActiveCfg = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|ARM64.Build.0 = Release|Any CPU - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|x64.ActiveCfg = Release|x64 - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|x64.Build.0 = Release|x64 - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|x86.ActiveCfg = Release|x86 - {E4666B99-145A-436D-9540-2E4593A061A6}.Release|x86.Build.0 = Release|x86 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|ARM.ActiveCfg = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|ARM.Build.0 = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|ARM64.Build.0 = Debug|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|x64.ActiveCfg = Debug|x64 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|x64.Build.0 = Debug|x64 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|x86.ActiveCfg = Debug|x86 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Debug|x86.Build.0 = Debug|x86 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|Any CPU.Build.0 = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|ARM.ActiveCfg = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|ARM.Build.0 = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|ARM64.ActiveCfg = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|ARM64.Build.0 = Release|Any CPU - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|x64.ActiveCfg = Release|x64 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|x64.Build.0 = Release|x64 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|x86.ActiveCfg = Release|x86 - {4A14A20D-8E2A-4559-A038-F0204A22C283}.Release|x86.Build.0 = Release|x86 - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|ARM.ActiveCfg = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|ARM.Build.0 = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|ARM64.Build.0 = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|x64.ActiveCfg = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|x64.Build.0 = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|x86.ActiveCfg = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Debug|x86.Build.0 = Debug|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|Any CPU.Build.0 = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|ARM.ActiveCfg = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|ARM.Build.0 = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|ARM64.ActiveCfg = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|ARM64.Build.0 = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|x64.ActiveCfg = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|x64.Build.0 = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|x86.ActiveCfg = Release|Any CPU - {2D245C04-0F27-458A-A185-16242A3F918C}.Release|x86.Build.0 = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM.ActiveCfg = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM.Build.0 = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM64.Build.0 = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x64.ActiveCfg = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x64.Build.0 = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x86.ActiveCfg = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x86.Build.0 = Debug|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|Any CPU.Build.0 = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM.ActiveCfg = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM.Build.0 = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM64.ActiveCfg = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM64.Build.0 = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x64.ActiveCfg = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x64.Build.0 = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x86.ActiveCfg = Release|Any CPU - {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x86.Build.0 = Release|Any CPU - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.ActiveCfg = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.Build.0 = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.Deploy.0 = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.ActiveCfg = Debug|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.Build.0 = Debug|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.Deploy.0 = Debug|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.Build.0 = Debug|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.ActiveCfg = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.Build.0 = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.Deploy.0 = Debug|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.ActiveCfg = Debug|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.Build.0 = Debug|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.Deploy.0 = Debug|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|Any CPU.ActiveCfg = Release|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.ActiveCfg = Release|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.Build.0 = Release|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.Deploy.0 = Release|ARM - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.ActiveCfg = Release|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.Build.0 = Release|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.Deploy.0 = Release|ARM64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.ActiveCfg = Release|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.Build.0 = Release|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.Deploy.0 = Release|x64 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.ActiveCfg = Release|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.Build.0 = Release|x86 - {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.Deploy.0 = Release|x86 - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM.ActiveCfg = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM.Build.0 = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM64.Build.0 = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x64.ActiveCfg = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x64.Build.0 = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x86.ActiveCfg = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x86.Build.0 = Debug|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|Any CPU.Build.0 = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM.ActiveCfg = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM.Build.0 = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM64.ActiveCfg = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM64.Build.0 = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x64.ActiveCfg = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x64.Build.0 = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x86.ActiveCfg = Release|Any CPU - {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x86.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {1AC6F14A-E5DF-40A4-AACE-6E3BC5E00CFC} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31919.166 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SamplesCore", "SamplesCore\SamplesCore.csproj", "{AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CameraOpenCV", "CameraOpenCV\CameraOpenCV.csproj", "{BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VideoCaptureForm", "VideoCaptureForm\VideoCaptureForm.csproj", "{9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SamplesCore.Windows", "SamplesCore.Windows\SamplesCore.Windows.csproj", "{41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SampleBase", "SampleBase\SampleBase.csproj", "{A2493AC8-54CF-41D4-AD10-625390149A7F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VideoCaptureWPF", "VideoCaptureWPF\VideoCaptureWPF.csproj", "{2817650D-BC43-454E-928E-C89ACD1A5D7E}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "SamplesVB", "SamplesVB\SamplesVB.vbproj", "{6AAE55BE-B663-4E3E-A072-6760378909BB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SamplesLegacy", "SamplesLegacy\SamplesLegacy.csproj", "{6B44A902-63D5-4191-8A0D-E37E75E49599}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM.ActiveCfg = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM.Build.0 = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|ARM64.Build.0 = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x64.ActiveCfg = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x64.Build.0 = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x86.ActiveCfg = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Debug|x86.Build.0 = Debug|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|Any CPU.Build.0 = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM.ActiveCfg = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM.Build.0 = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM64.ActiveCfg = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|ARM64.Build.0 = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x64.ActiveCfg = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x64.Build.0 = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x86.ActiveCfg = Release|Any CPU + {AD7C47B3-93C8-4E55-AB7E-1EFC450ABF30}.Release|x86.Build.0 = Release|Any CPU + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.ActiveCfg = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.Build.0 = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|Any CPU.Deploy.0 = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.ActiveCfg = Debug|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.Build.0 = Debug|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM.Deploy.0 = Debug|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.Build.0 = Debug|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.ActiveCfg = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.Build.0 = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x64.Deploy.0 = Debug|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.ActiveCfg = Debug|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.Build.0 = Debug|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Debug|x86.Deploy.0 = Debug|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|Any CPU.ActiveCfg = Release|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.ActiveCfg = Release|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.Build.0 = Release|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM.Deploy.0 = Release|ARM + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.ActiveCfg = Release|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.Build.0 = Release|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|ARM64.Deploy.0 = Release|ARM64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.ActiveCfg = Release|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.Build.0 = Release|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x64.Deploy.0 = Release|x64 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.ActiveCfg = Release|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.Build.0 = Release|x86 + {BC9DDB2B-6C34-4903-9F0E-CC87CFE0DAE4}.Release|x86.Deploy.0 = Release|x86 + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM.ActiveCfg = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM.Build.0 = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|ARM64.Build.0 = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x64.ActiveCfg = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x64.Build.0 = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x86.ActiveCfg = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Debug|x86.Build.0 = Debug|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|Any CPU.Build.0 = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM.ActiveCfg = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM.Build.0 = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM64.ActiveCfg = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|ARM64.Build.0 = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x64.ActiveCfg = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x64.Build.0 = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x86.ActiveCfg = Release|Any CPU + {9DCC89F3-9D9F-4813-A4A3-36F8457E7F85}.Release|x86.Build.0 = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|ARM.ActiveCfg = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|ARM.Build.0 = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|ARM64.Build.0 = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|x64.ActiveCfg = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|x64.Build.0 = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|x86.ActiveCfg = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Debug|x86.Build.0 = Debug|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|Any CPU.Build.0 = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|ARM.ActiveCfg = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|ARM.Build.0 = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|ARM64.ActiveCfg = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|ARM64.Build.0 = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|x64.ActiveCfg = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|x64.Build.0 = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|x86.ActiveCfg = Release|Any CPU + {41A0CB46-CEC7-4DB2-B2F5-C538D29DC11D}.Release|x86.Build.0 = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|ARM.ActiveCfg = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|ARM.Build.0 = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|ARM64.Build.0 = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|x64.ActiveCfg = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|x64.Build.0 = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|x86.ActiveCfg = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Debug|x86.Build.0 = Debug|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|Any CPU.Build.0 = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|ARM.ActiveCfg = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|ARM.Build.0 = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|ARM64.ActiveCfg = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|ARM64.Build.0 = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|x64.ActiveCfg = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|x64.Build.0 = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|x86.ActiveCfg = Release|Any CPU + {A2493AC8-54CF-41D4-AD10-625390149A7F}.Release|x86.Build.0 = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|ARM.ActiveCfg = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|ARM.Build.0 = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|ARM64.Build.0 = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|x64.ActiveCfg = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|x64.Build.0 = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|x86.ActiveCfg = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Debug|x86.Build.0 = Debug|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|Any CPU.Build.0 = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|ARM.ActiveCfg = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|ARM.Build.0 = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|ARM64.ActiveCfg = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|ARM64.Build.0 = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|x64.ActiveCfg = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|x64.Build.0 = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|x86.ActiveCfg = Release|Any CPU + {2817650D-BC43-454E-928E-C89ACD1A5D7E}.Release|x86.Build.0 = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|ARM.ActiveCfg = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|ARM.Build.0 = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|ARM64.Build.0 = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|x64.ActiveCfg = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|x64.Build.0 = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|x86.ActiveCfg = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Debug|x86.Build.0 = Debug|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|Any CPU.Build.0 = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|ARM.ActiveCfg = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|ARM.Build.0 = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|ARM64.ActiveCfg = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|ARM64.Build.0 = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|x64.ActiveCfg = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|x64.Build.0 = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|x86.ActiveCfg = Release|Any CPU + {6AAE55BE-B663-4E3E-A072-6760378909BB}.Release|x86.Build.0 = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|ARM.ActiveCfg = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|ARM.Build.0 = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|ARM64.Build.0 = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|x64.ActiveCfg = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|x64.Build.0 = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|x86.ActiveCfg = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Debug|x86.Build.0 = Debug|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|Any CPU.Build.0 = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|ARM.ActiveCfg = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|ARM.Build.0 = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|ARM64.ActiveCfg = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|ARM64.Build.0 = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|x64.ActiveCfg = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|x64.Build.0 = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|x86.ActiveCfg = Release|Any CPU + {6B44A902-63D5-4191-8A0D-E37E75E49599}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {1AC6F14A-E5DF-40A4-AACE-6E3BC5E00CFC} + EndGlobalSection +EndGlobal diff --git a/README.md b/README.md index 2da5bbf..4e97092 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,7 @@ Code samples of https://github.com/shimat/opencvsharp -- `SamplesCS` C# (.NET Framework) samples -- `SamplesCore` C# (.NET Core) samples +- `SamplesCore` C# (.NET Core / .NET Framework) samples - `SamplesVB` VB.NET samples -- `SampleBase` common library -- `CameraOpenCV` UWP sample +- `SampleBase` common library +- `CameraOpenCV` UWP sample diff --git a/SampleBase/Console/ConsoleMessagePrinter.cs b/SampleBase/Console/ConsoleMessagePrinter.cs new file mode 100644 index 0000000..62adf6e --- /dev/null +++ b/SampleBase/Console/ConsoleMessagePrinter.cs @@ -0,0 +1,67 @@ +using System; +using SampleBase.Interfaces; + +namespace SampleBase.Console +{ + public class ConsoleMessagePrinter : IMessagePrinter + { + public ConsoleMessagePrinter() + { + } + + public void PrintColorInfo(string message, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White) + { + PrintObject(message, newLine, consoleColor); + } + + public void PrintObject(object obj, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White) + { + System.Console.ForegroundColor = consoleColor; + if (newLine) + System.Console.WriteLine(obj); + else + System.Console.Write(obj); + System.Console.ResetColor(); + } + + public void PrintInfo(string message, bool newLine = true) + { + PrintColorInfo(message, newLine); + } + + public void PrintWarning(string message, bool newLine = true) + { + PrintColorInfo(message, newLine, ConsoleColor.Yellow); + } + + public void PrintError(string message, bool newLine = true) + { + PrintColorInfo(message, newLine, ConsoleColor.DarkRed); + } + + public void PrintSuccess(string message, bool newLine = true) + { + PrintColorInfo(message, newLine, ConsoleColor.DarkGreen); + } + + public void PrintDateTime(DateTime? time, bool newLine = true) + { + if (!time.HasValue) + time = DateTime.Now; + PrintColorInfo(time.Value.ToString("yyyy-MM-dd HH:mm:ss"), newLine); + } + + public void PrintTime(DateTime? time, bool newLine = true) + { + if (!time.HasValue) + time = DateTime.Now; + PrintColorInfo(time.Value.ToString("HH:mm:ss")); + } + + public void PrintLine(bool newLine = true) + { + PrintColorInfo("----------------------------------------", newLine); + } + + } +} diff --git a/SampleBase/Console/ConsoleTestBase.cs b/SampleBase/Console/ConsoleTestBase.cs new file mode 100644 index 0000000..2b770a7 --- /dev/null +++ b/SampleBase/Console/ConsoleTestBase.cs @@ -0,0 +1,68 @@ +using System; +using SampleBase.Interfaces; + +namespace SampleBase.Console +{ + public abstract class ConsoleTestBase : ITestBase + { + private readonly IMessagePrinter msgPrinter; + + public string Name { get; set; } + + protected ConsoleTestBase(string title) + { + Name = title; + msgPrinter = new ConsoleMessagePrinter(); + } + + protected ConsoleTestBase() + { + Name = GetType().Name; + msgPrinter = new ConsoleMessagePrinter(); + } + + public abstract void RunTest(); + + public void PrintInfo(string message, bool newLine = true) + { + msgPrinter.PrintInfo(message, newLine); + } + + public void PrintObject(object obj, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White) + { + msgPrinter.PrintObject(obj, newLine, consoleColor); + } + + public void PrintWarning(string message, bool newLine = true) + { + msgPrinter.PrintWarning(message, newLine); + } + + public void PrintError(string message, bool newLine = true) + { + msgPrinter.PrintError(message, newLine); + } + + public void PrintSuccess(string message, bool newLine = true) + { + msgPrinter.PrintSuccess(message, newLine); + } + + public IMessagePrinter GetMessagePrinter() + { + return msgPrinter; + } + + public string? WaitToInput() + { + return System.Console.ReadLine(); + } + + public void WaitToContinue(string? tip = null) + { + if (tip != null) + System.Console.WriteLine(tip); + System.Console.ReadLine(); + } + } +} diff --git a/SampleBase/Console/ConsoleTestManager.cs b/SampleBase/Console/ConsoleTestManager.cs new file mode 100644 index 0000000..2ff8e6a --- /dev/null +++ b/SampleBase/Console/ConsoleTestManager.cs @@ -0,0 +1,162 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using SampleBase.Interfaces; + +namespace SampleBase.Console +{ + public class ConsoleTestManager : ITestManager + { + private readonly List tests; + private readonly IMessagePrinter msgPrinter; + + public ConsoleTestManager() + { + tests = new List(); + msgPrinter = new ConsoleMessagePrinter(); + } + + public void AddTest(ITestBase test) + { + if (!tests.Contains(test)) + tests.Add(test); + } + + public void RemoveTest(ITestBase test) + { + tests.Remove(test); + } + + public void ClearTests() + { + tests.Clear(); + } + + public virtual void ShowTestNames() + { + msgPrinter.PrintLine(); + int testNumber = 1; + foreach (var x in tests) + { + string name = GetNameOfTest(x); + + msgPrinter.PrintInfo($"{testNumber} {name}"); + testNumber++; + + }; + msgPrinter.PrintLine(); + } + + #region ShowTestEntrance + + private const int exitCode = 0; + private const string inputClear = "c"; + private const string inputHelp = "h"; + private static readonly string helpMessage = + $"Follow these steps to use the testing framework: " + + $"1 Create class that inherit from the [{nameof(ITestBase)}]{Environment.NewLine}" + + $"2 Override the [{nameof(ConsoleTestBase.RunTest)}()] method of the class to execute your logic{Environment.NewLine}" + + $"3 Manage all the test classes by an instance that inherits from {nameof(ITestManager)}{Environment.NewLine}" + + $"4 Start the tests selection by runnig the [{nameof(ShowTestEntrance)}()] method of the ITestManager instance{Environment.NewLine}"; + + /// + /// Output prompt message and start reading input (start again) + /// + private string? PrintNamesAndRead() + { + msgPrinter.PrintSuccess( + $"Please enter a number to select the test to run.{Environment.NewLine}Enter {exitCode} to exit, Enter {inputClear} to clear history, Enter {inputHelp} to show help info."); + ShowTestNames(); + return System.Console.ReadLine(); + } + + /// + /// Output error message and re-read input + /// + /// + private string? PrintErrorAndRead(string message) + { + msgPrinter.PrintError(message); + return System.Console.ReadLine(); + } + + private string GetNameOfTest(object test) + { + var name = ""; + if (test is ITestBase testA) + name = testA.Name; + if (test is Func fun) + name = fun().Name; + + return name; + } + + public virtual void ShowTestEntrance() + { + var input = PrintNamesAndRead(); + + while (true) + { + if (input?.ToLower() == inputClear) + { + System.Console.Clear(); + PrintNamesAndRead(); + continue; + } + if (input?.ToLower() == inputHelp) + { + msgPrinter.PrintSuccess(helpMessage); + PrintNamesAndRead(); + continue; + } + if (int.TryParse(input, out int number)) + { + if (number == exitCode) + break; + + if (number < 0 || number > tests.Count) + { + PrintErrorAndRead($"The number is out of range. Please reenter(enter {exitCode} to exit)"); + continue; + } + var test = tests[number - 1]; + var testName = GetNameOfTest(test); + msgPrinter.PrintSuccess($"{testName} start executing..."); + + try + { + var watch = Stopwatch.StartNew(); + test.RunTest(); + watch.Stop(); + msgPrinter.PrintSuccess($"{testName} completed, time cost:{watch.ElapsedMilliseconds}ms\n"); + } + catch (Exception ex) + { + msgPrinter.PrintError(ex.Message); + msgPrinter.PrintError(ex.StackTrace ?? ""); + } + + input = PrintNamesAndRead(); + + } + else + { + input = PrintErrorAndRead($"The input({input}) is invalid. Please reenter(enter {exitCode} to exit)"); + } + } + } + + #endregion + + public ITestBase? GetTest(string testName) + { + return tests.FirstOrDefault(t => t.Name == testName); + } + + public IReadOnlyList GetAllTests() + { + return tests; + } + } +} diff --git a/SampleBase/Data/Model/FSRCNN_x4.pb b/SampleBase/Data/Model/FSRCNN_x4.pb new file mode 100644 index 0000000..64b4911 Binary files /dev/null and b/SampleBase/Data/Model/FSRCNN_x4.pb differ diff --git a/SampleBase/FilePath.cs b/SampleBase/FilePath.cs deleted file mode 100644 index 0d2734f..0000000 --- a/SampleBase/FilePath.cs +++ /dev/null @@ -1,65 +0,0 @@ -namespace SampleBase -{ - /// - /// Paths - /// - public static class FilePath - { - public static class Image - { - public const string Lenna = "Data/Image/lenna.png"; - public const string Lenna511 = "Data/Image/lenna511.png"; - public const string Girl = "Data/Image/Girl.bmp"; - public const string Mandrill = "Data/Image/Mandrill.bmp"; - public const string Goryokaku = "Data/Image/goryokaku.jpg"; - public const string Maltese = "Data/Image/maltese.jpg"; - public const string Cake = "Data/Image/cake.bmp"; - public const string Fruits = "Data/Image/fruits.jpg"; - public const string Penguin1 = "Data/Image/penguin1.png"; - public const string Penguin1b = "Data/Image/penguin1b.png"; - public const string Penguin2 = "Data/Image/penguin2.png"; - public const string Distortion = "Data/Image/Calibration/01.jpg"; - public const string Calibration = "Data/Image/Calibration/{0:D2}.jpg"; - public const string SurfBox = "Data/Image/box.png"; - public const string SurfBoxinscene = "Data/Image/box_in_scene.png"; - public const string TsukubaLeft = "Data/Image/tsukuba_left.png"; - public const string TsukubaRight = "Data/Image/tsukuba_right.png"; - public const string Square1 = "Data/Image/Squares/pic1.png"; - public const string Square2 = "Data/Image/Squares/pic2.png"; - public const string Square3 = "Data/Image/Squares/pic3.png"; - public const string Square4 = "Data/Image/Squares/pic4.png"; - public const string Square5 = "Data/Image/Squares/pic5.png"; - public const string Square6 = "Data/Image/Squares/pic6.png"; - public const string Shapes = "Data/Image/shapes.png"; - public const string Yalta = "Data/Image/yalta.jpg"; - public const string Depth16Bit = "Data/Image/16bit.png"; - public const string Hand = "Data/Image/hand_p.jpg"; - public const string Asahiyama = "Data/Image/asahiyama.jpg"; - public const string Balloon = "Data/Image/Balloon.png"; - public const string Newspaper = "Data/Image/very_old_newspaper.png"; - public const string Binarization = "Data/Image/binarization_sample.bmp"; - public const string Walkman = "Data/Image/walkman.jpg"; - public const string Cat = "Data/Image/cat.jpg"; - public const string Match1 = "Data/Image/match1.png"; - public const string Match2 = "Data/Image/match2.png"; - public const string Aruco = "Data/Image/aruco_markers_photo.jpg"; - } - - public static class Text - { - public const string Camera = "Data/Text/camera.xml"; - public const string HaarCascade = "Data/Text/haarcascade_frontalface_default.xml"; - public const string HaarCascadeAlt = "Data/Text/haarcascade_frontalface_alt.xml"; - public const string LatentSvmCat = "Data/Text/cat.xml"; - public const string Mushroom = "Data/Text/agaricus-lepiota.data"; - public const string LetterRecog = "Data/Text/letter-recognition.data"; - public const string LbpCascade = "Data/Text/lbpcascade_frontalface.xml"; - } - - public static class Movie - { - public const string Hara = "Data/Movie/hara.flv"; - public const string Bach = "Data/Movie/bach.mp4"; - } - } -} diff --git a/SampleBase/Interfaces/IMessagePrinter.cs b/SampleBase/Interfaces/IMessagePrinter.cs new file mode 100644 index 0000000..83fb267 --- /dev/null +++ b/SampleBase/Interfaces/IMessagePrinter.cs @@ -0,0 +1,25 @@ +using System; + +namespace SampleBase.Interfaces +{ + public interface IMessagePrinter + { + void PrintColorInfo(string message, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White); + + void PrintObject(object obj, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White); + + void PrintInfo(string message, bool newLine = true); + + void PrintWarning(string message, bool newLine = true); + + void PrintError(string message, bool newLine = true); + + void PrintSuccess(string message, bool newLine = true); + + void PrintDateTime(DateTime? time, bool newLine = true); + + void PrintTime(DateTime? time, bool newLine = true); + + void PrintLine(bool newLine = true); + } +} diff --git a/SampleBase/Interfaces/ITestBase.cs b/SampleBase/Interfaces/ITestBase.cs new file mode 100644 index 0000000..8d5bf70 --- /dev/null +++ b/SampleBase/Interfaces/ITestBase.cs @@ -0,0 +1,74 @@ +using System; + +namespace SampleBase.Interfaces +{ + /// + /// Basic interface for test calsses + /// + public interface ITestBase + { + /// + /// Test name, which is used to distinguish between different test cases + /// + string Name { get; } + + /// + /// Print normal message + /// + /// + /// + void PrintInfo(string message, bool newLine = true); + + /// + /// Print onject info + /// + /// + /// + /// + void PrintObject(object obj, bool newLine = true, ConsoleColor consoleColor = ConsoleColor.White); + + /// + /// Print warnning message + /// + /// + /// + void PrintWarning(string message, bool newLine = true); + + /// + /// Print error message + /// + /// + /// + void PrintError(string message, bool newLine = true); + + /// + /// Print success message + /// + /// + /// + void PrintSuccess(string message, bool newLine = true); + + /// + /// Print message printer of current test class + /// + /// + IMessagePrinter GetMessagePrinter(); + + /// + /// Run current test + /// + void RunTest(); + + /// + /// Waiting for input to complete, and take it as return value + /// + /// + string? WaitToInput(); + + /// + /// Show a tip message and wait util input anything + /// + /// Information string to be shown + void WaitToContinue(string? tip = null); + } +} diff --git a/SampleBase/Interfaces/ITestManager.cs b/SampleBase/Interfaces/ITestManager.cs new file mode 100644 index 0000000..8e4bc37 --- /dev/null +++ b/SampleBase/Interfaces/ITestManager.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; + +namespace SampleBase.Interfaces +{ + /// + /// Basic interface for manager class of test calsses + /// + public interface ITestManager + { + /// + /// Add a to the management collection + /// + /// + void AddTest(ITestBase test); + + /// + /// Remove a from the management collection + /// + /// + void RemoveTest(ITestBase test); + + /// + /// Remove all in management collection + /// + void ClearTests(); + + /// + /// Show a list of all tests + /// + void ShowTestNames(); + + /// + /// Show a acess list of all tests + /// + void ShowTestEntrance(); + + /// + /// Get a by test name + /// + /// + /// + ITestBase? GetTest(string testName); + + /// + /// Get all by test name + /// + /// + IReadOnlyList GetAllTests(); + } + + public static class TestManagerExtensions + { + public static void AddTests(this ITestManager testManager, params ITestBase[] tests) + { + foreach (var test in tests) + { + testManager.AddTest(test); + } + } + } +} diff --git a/SampleBase/MyProcess.cs b/SampleBase/MyProcess.cs index 11a5e28..1c1e6db 100644 --- a/SampleBase/MyProcess.cs +++ b/SampleBase/MyProcess.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; +using System.Diagnostics; namespace SampleBase { diff --git a/SampleBase/Path.cs b/SampleBase/Path.cs new file mode 100644 index 0000000..3fe3bbb --- /dev/null +++ b/SampleBase/Path.cs @@ -0,0 +1,68 @@ +namespace SampleBase +{ + /// + /// Image file Paths + /// + public static class ImagePath + { + public const string Lenna = "Data/Image/lenna.png"; + public const string Lenna511 = "Data/Image/lenna511.png"; + public const string Girl = "Data/Image/Girl.bmp"; + public const string Mandrill = "Data/Image/Mandrill.bmp"; + public const string Goryokaku = "Data/Image/goryokaku.jpg"; + public const string Maltese = "Data/Image/maltese.jpg"; + public const string Cake = "Data/Image/cake.bmp"; + public const string Fruits = "Data/Image/fruits.jpg"; + public const string Penguin1 = "Data/Image/penguin1.png"; + public const string Penguin1b = "Data/Image/penguin1b.png"; + public const string Penguin2 = "Data/Image/penguin2.png"; + public const string Distortion = "Data/Image/Calibration/01.jpg"; + public const string Calibration = "Data/Image/Calibration/{0:D2}.jpg"; + public const string SurfBox = "Data/Image/box.png"; + public const string SurfBoxinscene = "Data/Image/box_in_scene.png"; + public const string TsukubaLeft = "Data/Image/tsukuba_left.png"; + public const string TsukubaRight = "Data/Image/tsukuba_right.png"; + public const string Square1 = "Data/Image/Squares/pic1.png"; + public const string Square2 = "Data/Image/Squares/pic2.png"; + public const string Square3 = "Data/Image/Squares/pic3.png"; + public const string Square4 = "Data/Image/Squares/pic4.png"; + public const string Square5 = "Data/Image/Squares/pic5.png"; + public const string Square6 = "Data/Image/Squares/pic6.png"; + public const string Shapes = "Data/Image/shapes.png"; + public const string Yalta = "Data/Image/yalta.jpg"; + public const string Depth16Bit = "Data/Image/16bit.png"; + public const string Hand = "Data/Image/hand_p.jpg"; + public const string Asahiyama = "Data/Image/asahiyama.jpg"; + public const string Balloon = "Data/Image/Balloon.png"; + public const string Newspaper = "Data/Image/very_old_newspaper.png"; + public const string Binarization = "Data/Image/binarization_sample.bmp"; + public const string Walkman = "Data/Image/walkman.jpg"; + public const string Cat = "Data/Image/cat.jpg"; + public const string Match1 = "Data/Image/match1.png"; + public const string Match2 = "Data/Image/match2.png"; + public const string Aruco = "Data/Image/aruco_markers_photo.jpg"; + } + + /// + /// Text file paths + /// + public static class TextPath + { + public const string Camera = "Data/Text/camera.xml"; + public const string HaarCascade = "Data/Text/haarcascade_frontalface_default.xml"; + public const string HaarCascadeAlt = "Data/Text/haarcascade_frontalface_alt.xml"; + public const string LatentSvmCat = "Data/Text/cat.xml"; + public const string Mushroom = "Data/Text/agaricus-lepiota.data"; + public const string LetterRecog = "Data/Text/letter-recognition.data"; + public const string LbpCascade = "Data/Text/lbpcascade_frontalface.xml"; + } + + /// + /// Movie file paths + /// + public static class MoviePath + { + public const string Hara = "Data/Movie/hara.flv"; + public const string Bach = "Data/Movie/bach.mp4"; + } +} diff --git a/SampleBase/Properties/AssemblyInfo.cs b/SampleBase/Properties/AssemblyInfo.cs deleted file mode 100644 index 2538ee5..0000000 --- a/SampleBase/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 -// アセンブリに関連付けられている情報を変更するには、 -// これらの属性値を変更してください。 -[assembly: AssemblyTitle("SampleBase")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SampleBase")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから -// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 -// その型の ComVisible 属性を true に設定してください。 -[assembly: ComVisible(false)] - -// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です -[assembly: Guid("108cc3b2-b998-413e-81c3-6db426d10f6b")] - -// アセンブリのバージョン情報は、以下の 4 つの値で構成されています: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を -// 既定値にすることができます: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SampleBase/SampleBase.csproj b/SampleBase/SampleBase.csproj index fe31db1..ffcc9ee 100644 --- a/SampleBase/SampleBase.csproj +++ b/SampleBase/SampleBase.csproj @@ -1,380 +1,19 @@ - - - - + + - Debug - AnyCPU - {2D245C04-0F27-458A-A185-16242A3F918C} - Library - Properties - SampleBase - SampleBase - v4.6.1 - 512 - ..\ - true - - - + net48;net8.0; + 11 + enable - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - 8.0 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - false - 8.0 - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - bin\x86\Release\ - TRACE - true - pdbonly - x86 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - true - bin\x64\Debug\ - DEBUG;TRACE - full - x64 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - bin\x64\Release\ - TRACE - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Blob.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Extensions.dll - - - - - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - - - ..\packages\System.Drawing.Common.4.7.0\lib\net461\System.Drawing.Common.dll - - - ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - - - - - - - + - - - + + - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - + PreserveNewest - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - - - - - このプロジェクトは、このコンピューターにはない NuGet パッケージを参照しています。これらをダウンロードするには、NuGet パッケージの復元を有効にしてください。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。不足しているファイルは {0} です。 - - - - - - \ No newline at end of file + + diff --git a/SampleBase/packages.config b/SampleBase/packages.config deleted file mode 100644 index 933ee1c..0000000 --- a/SampleBase/packages.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/SamplesCS/ISample.cs b/SamplesCS/ISample.cs deleted file mode 100644 index ce85d18..0000000 --- a/SamplesCS/ISample.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SamplesCS -{ - interface ISample - { - void Run(); - } -} diff --git a/SamplesCS/Program.cs b/SamplesCS/Program.cs deleted file mode 100644 index 4dc7f5c..0000000 --- a/SamplesCS/Program.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using OpenCvSharp; - -namespace SamplesCS -{ - class Program - { - [STAThread] - static void Main(string[] args) - { - ISample sample = - //new ArucoSample(); - //new BgSubtractorMOG(); - //new BinarizerSample(); - //new BRISKSample(); - //new CaffeSample(); - //new ClaheSample(); - //new ConnectedComponentsSample(); - //new DFT(); - //new DrawBestMatchRectangle(); - //new FaceDetection(); - //new FaceDetectionDNN(); - //new FASTSample(); - //new FlannSample(); - //new FREAKSample(); - //new HandPose(); - //new HistSample(); - //new HOGSample(); - //new HoughLinesSample(); - //new InpaintSample(); - //new KAZESample2(); - //new KAZESample(); - //new MatOperations(); - //new MatToBitmap(); - //new MatToWriteableBitmap(); - //new MDS(); - //new MSERSample(); - //new NormalArrayOperations(); - //new PerspectiveTransformSample(); - //new PhotoMethods(); - //new MergeSplitSample(); - //new MorphologySample(); - //new PixelAccess(); - //new Pose(); - //new SeamlessClone(); - new SiftSurfSample(); - //new SimpleBlobDetectorSample(); - //new SolveEquation(); - //new StarDetectorSample(); - //new Stitching(); - //new Subdiv2DSample(); - //new SuperResolutionSample(); - //new SVMSample(); - //new VideoWriterSample(); - //new VideoCaptureSample(); - //new WatershedSample(); - //new WindowGUISample(); - sample.Run(); - } - } -} diff --git a/SamplesCS/Properties/AssemblyInfo.cs b/SamplesCS/Properties/AssemblyInfo.cs deleted file mode 100644 index f23a935..0000000 --- a/SamplesCS/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 -// アセンブリに関連付けられている情報を変更するには、 -// これらの属性値を変更してください。 -[assembly: AssemblyTitle("SamplesCS")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SamplesCS")] -[assembly: AssemblyCopyright("Copyright © 2014")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// ComVisible を false に設定すると、その型はこのアセンブリ内で COM コンポーネントから -// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 -// その型の ComVisible 属性を true に設定してください。 -[assembly: ComVisible(false)] - -// 次の GUID は、このプロジェクトが COM に公開される場合の、typelib の ID です -[assembly: Guid("1cdbab84-a43e-474c-a4c7-92b150c538a4")] - -// アセンブリのバージョン情報は、以下の 4 つの値で構成されています: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を -// 既定値にすることができます: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SamplesCS/Samples/BgSubtractorMOG.cs b/SamplesCS/Samples/BgSubtractorMOG.cs deleted file mode 100644 index a20a395..0000000 --- a/SamplesCS/Samples/BgSubtractorMOG.cs +++ /dev/null @@ -1,35 +0,0 @@ -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// - /// -// ReSharper disable once InconsistentNaming - class BgSubtractorMOG : ISample - { - public void Run() - { - using (var capture = new VideoCapture(FilePath.Movie.Bach)) - using (var mog = BackgroundSubtractorMOG.Create()) - using (var windowSrc = new Window("src")) - using (var windowDst = new Window("dst")) - { - var frame = new Mat(); - var fg = new Mat(); - while (true) - { - capture.Read(frame); - if(frame.Empty()) - break; - mog.Apply(frame, fg, 0.01); - - windowSrc.Image = frame; - windowDst.Image = fg; - Cv2.WaitKey(50); - } - } - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/CaffeSample.cs b/SamplesCS/Samples/CaffeSample.cs deleted file mode 100644 index 5a92174..0000000 --- a/SamplesCS/Samples/CaffeSample.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.IO; -using System.Linq; -using System.Net; -using OpenCvSharp; -using OpenCvSharp.Dnn; - -namespace SamplesCS -{ - /// - /// https://docs.opencv.org/3.3.0/d5/de7/tutorial_dnn_googlenet.html - /// - class CaffeSample : ISample - { - public void Run() - { - const string protoTxt = @"Data\Text\bvlc_googlenet.prototxt"; - const string caffeModel = "bvlc_googlenet.caffemodel"; - const string synsetWords = @"Data\Text\synset_words.txt"; - var classNames = File.ReadAllLines(synsetWords) - .Select(line => line.Split(' ').Last()) - .ToArray(); - - Console.Write("Downloading Caffe Model..."); - PrepareModel(caffeModel); - Console.WriteLine(" Done"); - - using (var net = CvDnn.ReadNetFromCaffe(protoTxt, caffeModel)) - using (var img = new Mat(@"Data\Image\space_shuttle.jpg")) - { - Console.WriteLine("Layer names: {0}", string.Join(", ", net.GetLayerNames())); - Console.WriteLine(); - - // Convert Mat to batch of images - using (var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123))) - { - net.SetInput(inputBlob, "data"); - using (var prob = net.Forward("prob")) - { - // find the best class - GetMaxClass(prob, out int classId, out double classProb); - Console.WriteLine("Best class: #{0} '{1}'", classId, classNames[classId]); - Console.WriteLine("Probability: {0:P2}", classProb); - - Console.WriteLine("Press any key to exit"); - Console.Read(); - } - } - } - } - - private static byte[] DownloadBytes(string url) - { - var client = WebRequest.CreateHttp(url); - using (var response = client.GetResponse()) - using (var responseStream = response.GetResponseStream()) - { - using (var memory = new MemoryStream()) - { - responseStream.CopyTo(memory); - return memory.ToArray(); - } - } - } - - private static void PrepareModel(string fileName) - { - if (!File.Exists(fileName)) - { - var contents = DownloadBytes("http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel"); - File.WriteAllBytes(fileName, contents); - } - } - - /// - /// Find best class for the blob (i. e. class with maximal probability) - /// - /// - /// - /// - private static void GetMaxClass(Mat probBlob, out int classId, out double classProb) - { - // reshape the blob to 1x1000 matrix - using (var probMat = probBlob.Reshape(1, 1)) - { - Cv2.MinMaxLoc(probMat, out _, out classProb, out _, out var classNumber); - classId = classNumber.X; - } - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/FASTSample.cs b/SamplesCS/Samples/FASTSample.cs deleted file mode 100644 index 6ee2d70..0000000 --- a/SamplesCS/Samples/FASTSample.cs +++ /dev/null @@ -1,32 +0,0 @@ -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// cv::FAST - /// - class FASTSample : ISample - { - public void Run() - { - using (Mat imgSrc = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) - using (Mat imgGray = new Mat()) - using (Mat imgDst = imgSrc.Clone()) - { - Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY, 0); - - KeyPoint[] keypoints = Cv2.FAST(imgGray, 50, true); - - foreach (KeyPoint kp in keypoints) - { - imgDst.Circle((Point)kp.Pt, 3, Scalar.Red, -1, LineTypes.AntiAlias, 0); - } - - Cv2.ImShow("FAST", imgDst); - Cv2.WaitKey(0); - Cv2.DestroyAllWindows(); - } - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/HoughLinesSample.cs b/SamplesCS/Samples/HoughLinesSample.cs deleted file mode 100644 index 796ba7c..0000000 --- a/SamplesCS/Samples/HoughLinesSample.cs +++ /dev/null @@ -1,65 +0,0 @@ -using System; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// Hough Transform Sample / ハフ変換による直線検出 - /// - /// http://opencv.jp/sample/special_transforms.html#hough_line - class HoughLinesSample : ISample - { - public void Run() - { - SampleCpp(); - } - - /// - /// sample of new C++ style wrapper - /// - private void SampleCpp() - { - // (1) Load the image - using (Mat imgGray = new Mat(FilePath.Image.Goryokaku, ImreadModes.Grayscale)) - using (Mat imgStd = new Mat(FilePath.Image.Goryokaku, ImreadModes.Color)) - using (Mat imgProb = imgStd.Clone()) - { - // Preprocess - Cv2.Canny(imgGray, imgGray, 50, 200, 3, false); - - // (3) Run Standard Hough Transform - LineSegmentPolar[] segStd = Cv2.HoughLines(imgGray, 1, Math.PI / 180, 50, 0, 0); - int limit = Math.Min(segStd.Length, 10); - for (int i = 0; i < limit; i++ ) - { - // Draws result lines - float rho = segStd[i].Rho; - float theta = segStd[i].Theta; - double a = Math.Cos(theta); - double b = Math.Sin(theta); - double x0 = a * rho; - double y0 = b * rho; - Point pt1 = new Point { X = (int)Math.Round(x0 + 1000 * (-b)), Y = (int)Math.Round(y0 + 1000 * (a)) }; - Point pt2 = new Point { X = (int)Math.Round(x0 - 1000 * (-b)), Y = (int)Math.Round(y0 - 1000 * (a)) }; - imgStd.Line(pt1, pt2, Scalar.Red, 3, LineTypes.AntiAlias, 0); - } - - // (4) Run Probabilistic Hough Transform - LineSegmentPoint[] segProb = Cv2.HoughLinesP(imgGray, 1, Math.PI / 180, 50, 50, 10); - foreach (LineSegmentPoint s in segProb) - { - imgProb.Line(s.P1, s.P2, Scalar.Red, 3, LineTypes.AntiAlias, 0); - } - - // (5) Show results - using (new Window("Hough_line_standard", WindowMode.AutoSize, imgStd)) - using (new Window("Hough_line_probabilistic", WindowMode.AutoSize, imgProb)) - { - Window.WaitKey(0); - } - } - } - - } -} diff --git a/SamplesCS/Samples/KAZESample2.cs b/SamplesCS/Samples/KAZESample2.cs deleted file mode 100644 index 59fc4a6..0000000 --- a/SamplesCS/Samples/KAZESample2.cs +++ /dev/null @@ -1,241 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.InteropServices; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// https://github.com/shimat/opencvsharp/issues/176 - /// -// ReSharper disable once InconsistentNaming - class KAZESample2 : ISample - { - public static Point2d Point2fToPoint2d(Point2f pf) - { - return new Point2d(((int) pf.X), ((int) pf.Y)); - } - - public void Run() - { - using (var img1 = new Mat(FilePath.Image.SurfBox)) - using (var img2 = new Mat(FilePath.Image.SurfBoxinscene)) - using (var descriptors1 = new Mat()) - using (var descriptors2 = new Mat()) - using (var matcher = new BFMatcher(NormTypes.L2SQR)) - using (var kaze = KAZE.Create()) - { - KeyPoint[] keypoints1, keypoints2; - kaze.DetectAndCompute(img1, null, out keypoints1, descriptors1); - kaze.DetectAndCompute(img2, null, out keypoints2, descriptors2); - - DMatch[][] matches = matcher.KnnMatch(descriptors1, descriptors2, 2); - using (Mat mask = new Mat(matches.Length, 1, MatType.CV_8U)) - { - mask.SetTo(new Scalar(255)); - int nonZero = Cv2.CountNonZero(mask); - VoteForUniqueness(matches, mask); - nonZero = Cv2.CountNonZero(mask); - nonZero = VoteForSizeAndOrientation(keypoints2, keypoints1, matches, mask, 1.5f, 20); - - List obj = new List(); - List scene = new List(); - List goodMatchesList = new List(); - //iterate through the mask only pulling out nonzero items because they're matches - for (int i = 0; i < mask.Rows; i++) - { - MatIndexer maskIndexer = mask.GetGenericIndexer(); - if (maskIndexer[i] > 0) - { - obj.Add(keypoints1[matches[i][0].QueryIdx].Pt); - scene.Add(keypoints2[matches[i][0].TrainIdx].Pt); - goodMatchesList.Add(matches[i][0]); - } - } - - List objPts = obj.ConvertAll(Point2fToPoint2d); - List scenePts = scene.ConvertAll(Point2fToPoint2d); - if (nonZero >= 4) - { - Mat homography = Cv2.FindHomography(objPts, scenePts, HomographyMethods.Ransac, 1.5, mask); - nonZero = Cv2.CountNonZero(mask); - - if (homography != null) - { - Point2f[] objCorners = { new Point2f(0, 0), - new Point2f(img1.Cols, 0), - new Point2f(img1.Cols, img1.Rows), - new Point2f(0, img1.Rows) }; - - Point2d[] sceneCorners = MyPerspectiveTransform3(objCorners, homography); - - //This is a good concat horizontal - using (Mat img3 = new Mat(Math.Max(img1.Height, img2.Height), img2.Width + img1.Width, MatType.CV_8UC3)) - using (Mat left = new Mat(img3, new Rect(0, 0, img1.Width, img1.Height))) - using (Mat right = new Mat(img3, new Rect(img1.Width, 0, img2.Width, img2.Height))) - { - img1.CopyTo(left); - img2.CopyTo(right); - - mask.GetArray(out byte[] maskBytes); - Cv2.DrawMatches(img1, keypoints1, img2, keypoints2, goodMatchesList, img3, Scalar.All(-1), Scalar.All(-1), maskBytes, DrawMatchesFlags.NotDrawSinglePoints); - - List> listOfListOfPoint2D = new List>(); - List listOfPoint2D = new List(); - listOfPoint2D.Add(new Point(sceneCorners[0].X + img1.Cols, sceneCorners[0].Y)); - listOfPoint2D.Add(new Point(sceneCorners[1].X + img1.Cols, sceneCorners[1].Y)); - listOfPoint2D.Add(new Point(sceneCorners[2].X + img1.Cols, sceneCorners[2].Y)); - listOfPoint2D.Add(new Point(sceneCorners[3].X + img1.Cols, sceneCorners[3].Y)); - listOfListOfPoint2D.Add(listOfPoint2D); - img3.Polylines(listOfListOfPoint2D, true, Scalar.LimeGreen, 2); - - //This works too - //Cv2.Line(img3, scene_corners[0] + new Point2d(img1.Cols, 0), scene_corners[1] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); - //Cv2.Line(img3, scene_corners[1] + new Point2d(img1.Cols, 0), scene_corners[2] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); - //Cv2.Line(img3, scene_corners[2] + new Point2d(img1.Cols, 0), scene_corners[3] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); - //Cv2.Line(img3, scene_corners[3] + new Point2d(img1.Cols, 0), scene_corners[0] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); - - img3.SaveImage("Kaze_Output.png"); - Window.ShowImages(img3); - } - } - } - } - } - } - - // to avoid opencvsharp's bug - static Point2d[] MyPerspectiveTransform1(Point2f[] yourData, Mat transformationMatrix) - { - using (Mat src = new Mat(yourData.Length, 1, MatType.CV_32FC2, yourData)) - using (Mat dst = new Mat()) - { - Cv2.PerspectiveTransform(src, dst, transformationMatrix); - dst.GetArray(out Point2f[] dstArray); - Point2d[] result = Array.ConvertAll(dstArray, Point2fToPoint2d); - return result; - } - } - - // fixed FromArray behavior - static Point2d[] MyPerspectiveTransform2(Point2f[] yourData, Mat transformationMatrix) - { - using (var s = Mat.FromArray(yourData)) - using (var d = new Mat()) - { - Cv2.PerspectiveTransform(s, d, transformationMatrix); - Point2f[] f = d.ToArray(); - return f.Select(Point2fToPoint2d).ToArray(); - } - } - - // new API - static Point2d[] MyPerspectiveTransform3(Point2f[] yourData, Mat transformationMatrix) - { - Point2f[] ret = Cv2.PerspectiveTransform(yourData, transformationMatrix); - return ret.Select(Point2fToPoint2d).ToArray(); - } - - static int VoteForSizeAndOrientation(KeyPoint[] modelKeyPoints, KeyPoint[] observedKeyPoints, DMatch[][] matches, Mat mask, float scaleIncrement, int rotationBins) - { - int idx = 0; - int nonZeroCount = 0; - byte[] maskMat = new byte[mask.Rows]; - GCHandle maskHandle = GCHandle.Alloc(maskMat, GCHandleType.Pinned); - using (Mat m = new Mat(mask.Rows, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) - { - mask.CopyTo(m); - List logScale = new List(); - List rotations = new List(); - double s, maxS, minS, r; - maxS = -1.0e-10f; minS = 1.0e10f; - - //if you get an exception here, it's because you're passing in the model and observed keypoints backwards. Just switch the order. - for (int i = 0; i < maskMat.Length; i++) - { - if (maskMat[i] > 0) - { - KeyPoint observedKeyPoint = observedKeyPoints[i]; - KeyPoint modelKeyPoint = modelKeyPoints[matches[i][0].TrainIdx]; - s = Math.Log10(observedKeyPoint.Size / modelKeyPoint.Size); - logScale.Add((float)s); - maxS = s > maxS ? s : maxS; - minS = s < minS ? s : minS; - - r = observedKeyPoint.Angle - modelKeyPoint.Angle; - r = r < 0.0f ? r + 360.0f : r; - rotations.Add((float)r); - } - } - - int scaleBinSize = (int)Math.Ceiling((maxS - minS) / Math.Log10(scaleIncrement)); - if (scaleBinSize < 2) - scaleBinSize = 2; - float[] scaleRanges = { (float)minS, (float)(minS + scaleBinSize + Math.Log10(scaleIncrement)) }; - - using (var scalesMat = new Mat(rows: logScale.Count, cols: 1, data: logScale.ToArray())) - using (var rotationsMat = new Mat(rows: rotations.Count, cols: 1, data: rotations.ToArray())) - using (var flagsMat = new Mat(logScale.Count, 1)) - using (Mat hist = new Mat()) - { - flagsMat.SetTo(new Scalar(0.0f)); - float[] flagsMatFloat1 = flagsMat.ToArray(); - - int[] histSize = { scaleBinSize, rotationBins }; - float[] rotationRanges = { 0.0f, 360.0f }; - int[] channels = { 0, 1 }; - Rangef[] ranges = { new Rangef(scaleRanges[0], scaleRanges[1]), new Rangef(rotations.Min(), rotations.Max()) }; - double minVal, maxVal; - - Mat[] arrs = { scalesMat, rotationsMat }; - Cv2.CalcHist(arrs, channels, null, hist, 2, histSize, ranges); - Cv2.MinMaxLoc(hist, out minVal, out maxVal); - - Cv2.Threshold(hist, hist, maxVal * 0.5, 0, ThresholdTypes.Tozero); - Cv2.CalcBackProject(arrs, channels, hist, flagsMat, ranges); - - MatIndexer flagsMatIndexer = flagsMat.GetIndexer(); - - for (int i = 0; i < maskMat.Length; i++) - { - if (maskMat[i] > 0) - { - if (flagsMatIndexer[idx++] != 0.0f) - { - nonZeroCount++; - } - else - maskMat[i] = 0; - } - } - m.CopyTo(mask); - } - } - maskHandle.Free(); - - return nonZeroCount; - } - - private static void VoteForUniqueness(DMatch[][] matches, Mat mask, float uniqnessThreshold = 0.80f) - { - byte[] maskData = new byte[matches.Length]; - GCHandle maskHandle = GCHandle.Alloc(maskData, GCHandleType.Pinned); - using (Mat m = new Mat(matches.Length, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) - { - mask.CopyTo(m); - for (int i = 0; i < matches.Length; i++) - { - //This is also known as NNDR Nearest Neighbor Distance Ratio - if ((matches[i][0].Distance / matches[i][1].Distance) <= uniqnessThreshold) - maskData[i] = 255; - else - maskData[i] = 0; - } - m.CopyTo(mask); - } - maskHandle.Free(); - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/MatToBitmap.cs b/SamplesCS/Samples/MatToBitmap.cs deleted file mode 100644 index 88c84dc..0000000 --- a/SamplesCS/Samples/MatToBitmap.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Diagnostics; -using System.Drawing; -using OpenCvSharp; -using System.Windows.Forms; -using OpenCvSharp.Extensions; -using SampleBase; - -namespace SamplesCS -{ - /// - /// - /// - class MatToBitmap : ISample - { - public void Run() - { - ToMat(); - ToMatGrayScale(); - ToBitmap(); - ToBitmapGrayScale(); - } - - public void ToBitmap() - { - Mat img = new Mat(FilePath.Image.Lenna511, ImreadModes.Color); // width % 4 != 0 - - Bitmap bitmap = BitmapConverter.ToBitmap(img); - // Bitmap bitmap = img.ToBitmap(); - - using (var form = new Form()) - using (var pb = new PictureBox()) - { - pb.Image = bitmap; - var size = new System.Drawing.Size(bitmap.Width, bitmap.Height); - pb.ClientSize = size; - form.ClientSize = size; - form.Controls.Add(pb); - form.KeyPreview = true; - form.KeyDown += (sender, args) => - { - if (args.KeyCode.HasFlag(Keys.Enter)) - ((Form)sender).Close(); - }; - form.Text = "Mat to Bitmap Test"; - - form.ShowDialog(); - } - } - - public void ToBitmapGrayScale() - { - Mat img = new Mat(FilePath.Image.Lenna511, ImreadModes.Grayscale); // width % 4 != 0 - - Bitmap bitmap = BitmapConverter.ToBitmap(img); - // Bitmap bitmap = img.ToBitmap(); - - using (var form = new Form()) - using (var pb = new PictureBox()) - { - pb.Image = bitmap; - var size = new System.Drawing.Size(bitmap.Width, bitmap.Height); - pb.ClientSize = size; - form.ClientSize = size; - form.Controls.Add(pb); - form.KeyPreview = true; - form.KeyDown += (sender, args) => - { - if (args.KeyCode.HasFlag(Keys.Enter)) - ((Form)sender).Close(); - }; - form.Text = "Grayscale Mat to Bitmap Test"; - - form.ShowDialog(); - } - } - - public void ToMat() - { - Bitmap bitmap = new Bitmap(FilePath.Image.Lenna511); // width % 4 != 0 - - Mat converted = BitmapConverter.ToMat(bitmap); - //Mat converted = Mat.FromBitmap(bitmap); - - using (new Window("Bitmap to Mat test", converted)) - { - Cv2.WaitKey(); - } - } - - public void ToMatGrayScale() - { - Mat img = new Mat(FilePath.Image.Lenna511, ImreadModes.Grayscale); - Bitmap bitmap = img.ToBitmap(); - - Mat converted = BitmapConverter.ToMat(bitmap); - //Mat converted = Mat.FromBitmap(bitmap); - - using (new Window("Grayscale Bitmap to Mat test", converted)) - { - Cv2.WaitKey(); - } - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/MatToWriteableBitmap.cs b/SamplesCS/Samples/MatToWriteableBitmap.cs deleted file mode 100644 index a752676..0000000 --- a/SamplesCS/Samples/MatToWriteableBitmap.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Diagnostics; -using System.Drawing; -using System.Windows; -using System.Windows.Controls; -using OpenCvSharp; -using OpenCvSharp.WpfExtensions; -using SampleBase; - -namespace SamplesCS -{ - /// - /// - /// - class MatToWriteableBitmap : ISample - { - public void Run() - { - ToBitmap(); - } - - public void ToBitmap() - { - using var mat = new Mat(FilePath.Image.Lenna511, ImreadModes.Color); // width % 4 != 0 - - var wb = WriteableBitmapConverter.ToWriteableBitmap(mat); - - var image = new System.Windows.Controls.Image(); - image.Source = wb; - - var window = new System.Windows.Window(); - window.Content = image; - - var app = new Application(); - app.Run(window); - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/PixelAccess.cs b/SamplesCS/Samples/PixelAccess.cs deleted file mode 100644 index 9c0a431..0000000 --- a/SamplesCS/Samples/PixelAccess.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Diagnostics; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// Swaps B for R - /// - class PixelAccess : ISample - { - public void Run() - { - Console.WriteLine("Get/Set: {0}ms", MeasureTime(GetSet)); - Console.WriteLine("GenericIndexer: {0}ms", MeasureTime(GenericIndexer)); - Console.WriteLine("TypeSpecificMat: {0}ms", MeasureTime(TypeSpecificMat)); - Console.Read(); - } - - /// - /// Slow - /// - private void GetSet() - { - using (Mat mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) - { - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = mat.Get(y, x); - Swap(ref color.Item0, ref color.Item2); - mat.Set(y, x, color); - } - } - //Cv2.ImShow("Slow", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); - } - } - - /// - /// Reasonably fast - /// - private void GenericIndexer() - { - using (Mat mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) - { - var indexer = mat.GetGenericIndexer(); - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = indexer[y, x]; - Swap(ref color.Item0, ref color.Item2); - indexer[y, x] = color; - } - } - //Cv2.ImShow("GenericIndexer", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); - } - } - - /// - /// Faster - /// - private void TypeSpecificMat() - { - using (Mat mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) - { - var mat3 = new Mat(mat); - var indexer = mat3.GetIndexer(); - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = indexer[y, x]; - Swap(ref color.Item0, ref color.Item2); - indexer[y, x] = color; - } - } - //Cv2.ImShow("TypeSpecificMat", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); - } - } - - private static void Swap(ref T a, ref T b) - { - T temp = b; - b = a; - a = temp; - } - - private static long MeasureTime(Action action) - { - Stopwatch watch = Stopwatch.StartNew(); - action(); - watch.Stop(); - return watch.ElapsedMilliseconds; - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/SVMSample.cs b/SamplesCS/Samples/SVMSample.cs deleted file mode 100644 index 6fa0495..0000000 --- a/SamplesCS/Samples/SVMSample.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using OpenCvSharp; -using OpenCvSharp.ML; - -namespace SamplesCS -{ - /// - /// Support Vector Machine - /// - /// http://opencv.jp/sample/svm.html#svm - internal class SVMSample : ISample - { - private static double f(double x) - { - return x + 50 * Math.Sin(x / 15.0); - } - - public void Run() - { - // Training data - var points = new Point2f[500]; - var responses = new int[points.Length]; - var rand = new Random(); - for (int i = 0; i < responses.Length; i++) - { - float x = rand.Next(0, 300); - float y = rand.Next(0, 300); - points[i] = new Point2f(x, y); - responses[i] = (y > f(x)) ? 1 : 2; - } - - // Show training data and f(x) - using (Mat pointsPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) - { - for (int i = 0; i < points.Length; i++) - { - int x = (int)points[i].X; - int y = (int)(300 - points[i].Y); - int res = responses[i]; - Scalar color = (res == 1) ? Scalar.Red : Scalar.GreenYellow; - pointsPlot.Circle(x, y, 2, color, -1); - } - // f(x) - for (int x = 1; x < 300; x++) - { - int y1 = (int)(300 - f(x - 1)); - int y2 = (int)(300 - f(x)); - pointsPlot.Line(x - 1, y1, x, y2, Scalar.LightBlue, 1); - } - Window.ShowImages(pointsPlot); - } - - // Train - var dataMat = new Mat(points.Length, 2, MatType.CV_32FC1, points); - var resMat = new Mat(responses.Length, 1, MatType.CV_32SC1, responses); - using (var svm = SVM.Create()) - { - // normalize data - dataMat /= 300.0; - - // SVM parameters - svm.Type = SVM.Types.CSvc; - svm.KernelType = SVM.KernelTypes.Rbf; - svm.TermCriteria = TermCriteria.Both(1000, 0.000001); - svm.Degree = 100.0; - svm.Gamma = 100.0; - svm.Coef0 = 1.0; - svm.C = 1.0; - svm.Nu = 0.5; - svm.P = 0.1; - - svm.Train(dataMat, SampleTypes.RowSample, resMat); - - // Predict for each 300x300 pixel - using (Mat retPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) - { - for (int x = 0; x < 300; x++) - { - for (int y = 0; y < 300; y++) - { - float[] sample = {x / 300f, y / 300f}; - var sampleMat = new Mat(1, 2, MatType.CV_32FC1, sample); - int ret = (int)svm.Predict(sampleMat); - var plotRect = new Rect(x, 300 - y, 1, 1); - if (ret == 1) - retPlot.Rectangle(plotRect, Scalar.Red); - else if (ret == 2) - retPlot.Rectangle(plotRect, Scalar.GreenYellow); - } - } - Window.ShowImages(retPlot); - } - } - } - - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/SuperResolutionSample.cs b/SamplesCS/Samples/SuperResolutionSample.cs deleted file mode 100644 index df016f0..0000000 --- a/SamplesCS/Samples/SuperResolutionSample.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using OpenCvSharp; -using SamplesCS.Samples; - -namespace SamplesCS -{ - /// - /// - /// - class SuperResolutionSample : ISample - { - public void Run() - { - var capture = new VideoCapture(); - capture.Set(VideoCaptureProperties.FrameWidth, 640); - capture.Set(VideoCaptureProperties.FrameHeight, 480); - capture.Open(-1); - if (!capture.IsOpened()) - throw new Exception("capture initialization failed"); - - var fs = FrameSource.CreateFrameSource_Camera(-1); - var sr = SuperResolution.CreateBTVL1(); - sr.SetInput(fs); - - using (var normalWindow = new Window("normal")) - using (var srWindow = new Window("super resolution")) - { - var normalFrame = new Mat(); - var srFrame = new Mat(); - while (true) - { - capture.Read(normalFrame); - sr.NextFrame(srFrame); - if (normalFrame.Empty() || srFrame.Empty()) - break; - normalWindow.ShowImage(normalFrame); - srWindow.ShowImage(srFrame); - Cv2.WaitKey(100); - } - } - } - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/VideoCaptureSample.cs b/SamplesCS/Samples/VideoCaptureSample.cs deleted file mode 100644 index 5107f4f..0000000 --- a/SamplesCS/Samples/VideoCaptureSample.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Runtime.InteropServices; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// - /// - class VideoCaptureSample : ISample - { - public void Run() - { - // Opens MP4 file (ffmpeg is probably needed) - var capture = new VideoCapture(FilePath.Movie.Bach); - - int sleepTime = (int)Math.Round(1000 / capture.Fps); - - using (var window = new Window("capture")) - { - // Frame image buffer - Mat image = new Mat(); - - // When the movie playback reaches end, Mat.data becomes NULL. - while (true) - { - capture.Read(image); // same as cvQueryFrame - if(image.Empty()) - break; - - window.ShowImage(image); - Cv2.WaitKey(sleepTime); - } - } - } - - } -} \ No newline at end of file diff --git a/SamplesCS/Samples/WatershedSample.cs b/SamplesCS/Samples/WatershedSample.cs deleted file mode 100644 index 1030940..0000000 --- a/SamplesCS/Samples/WatershedSample.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// Watershed algorithm sample - /// - /// http://opencv.jp/sample/segmentation_and_connection.html#watershed - public class WatershedSample : ISample - { - public void Run() - { - using var srcImg = Cv2.ImRead(FilePath.Image.Lenna, ImreadModes.AnyDepth | ImreadModes.AnyColor); - using var markers = new Mat(srcImg.Size(), MatType.CV_32SC1, Scalar.All(0)); - - using (var window = new Window("image", WindowMode.AutoSize, srcImg)) - { - using var dspImg = srcImg.Clone(); - - // Mouse event - int seedNum = 0; - window.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => - { - if (ev == MouseEventTypes.LButtonDown) - { - seedNum++; - var pt = new Point(x, y); - markers.Circle(pt, 10, Scalar.All(seedNum), Cv2.FILLED, LineTypes.Link8); - dspImg.Circle(pt, 10, Scalar.White, 3, LineTypes.Link8); - window.Image = dspImg; - } - }); - Window.WaitKey(); - } - - Cv2.Watershed(srcImg, markers); - - // draws watershed - using var dstImg = srcImg.Clone(); - for (int y = 0; y < markers.Height; y++) - { - for (int x = 0; x < markers.Width; x++) - { - int idx = markers.Get(y, x); - if (idx == -1) - { - dstImg.Rectangle(new Rect(x, y, 2, 2), Scalar.Red, -1); - } - } - } - - using (new Window("watershed transform", WindowMode.AutoSize, dstImg)) - { - Window.WaitKey(); - } - } - } -} diff --git a/SamplesCS/SamplesCS.csproj b/SamplesCS/SamplesCS.csproj deleted file mode 100644 index b544847..0000000 --- a/SamplesCS/SamplesCS.csproj +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - Debug - AnyCPU - {E4666B99-145A-436D-9540-2E4593A061A6} - Exe - Properties - SamplesCS - SamplesCS - v4.6.1 - 512 - ..\ - true - - - - - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - true - false - 8.0 - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - true - false - 8.0 - - - true - bin\x86\Debug\ - DEBUG;TRACE - full - x86 - prompt - MinimumRecommendedRules.ruleset - true - false - 8.0 - - - bin\x86\Release\ - TRACE - false - full - x86 - prompt - MinimumRecommendedRules.ruleset - true - false - true - 8.0 - - - true - bin\x64\Debug\ - DEBUG;TRACE - true - full - x64 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - bin\x64\Release\ - TRACE - true - true - pdbonly - x64 - prompt - MinimumRecommendedRules.ruleset - false - 8.0 - - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Blob.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Extensions.dll - - - ..\packages\OpenCvSharp4.WpfExtensions.4.5.0.20201013\lib\net461\OpenCvSharp.WpfExtensions.dll - - - - - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - - - ..\packages\System.Drawing.Common.4.7.0\lib\net461\System.Drawing.Common.dll - - - ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {2d245c04-0f27-458a-a185-16242a3f918c} - SampleBase - - - - - - - - - - - - - - このプロジェクトは、このコンピューターにはない NuGet パッケージを参照しています。これらをダウンロードするには、NuGet パッケージの復元を有効にしてください。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。不足しているファイルは {0} です。 - - - - - - \ No newline at end of file diff --git a/SamplesCS/app.config b/SamplesCS/app.config deleted file mode 100644 index 933d5cd..0000000 --- a/SamplesCS/app.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/SamplesCS/packages.config b/SamplesCS/packages.config deleted file mode 100644 index cf57aea..0000000 --- a/SamplesCS/packages.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/SamplesCore.Windows/Data/Image/box_in_scene.png b/SamplesCore.Windows/Data/Image/box_in_scene.png new file mode 100644 index 0000000..cff246a Binary files /dev/null and b/SamplesCore.Windows/Data/Image/box_in_scene.png differ diff --git a/SamplesCore/Data/Image/fruits.jpg b/SamplesCore.Windows/Data/Image/fruits.jpg similarity index 100% rename from SamplesCore/Data/Image/fruits.jpg rename to SamplesCore.Windows/Data/Image/fruits.jpg diff --git a/SamplesCore.Windows/FilePath.cs b/SamplesCore.Windows/FilePath.cs new file mode 100644 index 0000000..518cc75 --- /dev/null +++ b/SamplesCore.Windows/FilePath.cs @@ -0,0 +1,14 @@ +namespace SamplesCore +{ + /// + /// Paths + /// + internal static class FilePath + { + public static class Image + { + public const string Fruits = "Data/Image/fruits.jpg"; + public const string SurfBoxinscene = "Data/Image/box_in_scene.png"; + } + } +} diff --git a/SamplesCore.Windows/ISample.cs b/SamplesCore.Windows/ISample.cs new file mode 100644 index 0000000..0421cde --- /dev/null +++ b/SamplesCore.Windows/ISample.cs @@ -0,0 +1,7 @@ +namespace SamplesCore.Windows +{ + interface ISample + { + void Run(); + } +} diff --git a/SamplesCore.Windows/Program.cs b/SamplesCore.Windows/Program.cs new file mode 100644 index 0000000..4110fdf --- /dev/null +++ b/SamplesCore.Windows/Program.cs @@ -0,0 +1,16 @@ +using System; + +namespace SamplesCore.Windows +{ + class Program + { + [STAThread] + static void Main(string[] args) + { + ISample sample = + new MatToWriteableBitmap(); + + sample.Run(); + } + } +} diff --git a/SamplesCore/Samples/MatToWriteableBitmap.cs b/SamplesCore.Windows/Samples/MatToWriteableBitmap.cs similarity index 61% rename from SamplesCore/Samples/MatToWriteableBitmap.cs rename to SamplesCore.Windows/Samples/MatToWriteableBitmap.cs index 8e0d6fb..0ed99d7 100644 --- a/SamplesCore/Samples/MatToWriteableBitmap.cs +++ b/SamplesCore.Windows/Samples/MatToWriteableBitmap.cs @@ -1,9 +1,8 @@ using System.Windows; using OpenCvSharp; using OpenCvSharp.WpfExtensions; -using SamplesCore; -namespace SamplesCS +namespace SamplesCore.Windows { /// /// @@ -11,21 +10,20 @@ namespace SamplesCS class MatToWriteableBitmap : ISample { public void Run() - { - ToBitmap(); - } - - public void ToBitmap() { using var mat = new Mat(FilePath.Image.Fruits, ImreadModes.Color); // width % 4 != 0 var wb = WriteableBitmapConverter.ToWriteableBitmap(mat); - var image = new System.Windows.Controls.Image(); - image.Source = wb; + var image = new System.Windows.Controls.Image + { + Source = wb + }; - var window = new System.Windows.Window(); - window.Content = image; + var window = new System.Windows.Window + { + Content = image + }; var app = new Application(); app.Run(window); diff --git a/SamplesCS/Samples/WindowGUISample.cs b/SamplesCore.Windows/Samples/WindowGUISample.cs similarity index 90% rename from SamplesCS/Samples/WindowGUISample.cs rename to SamplesCore.Windows/Samples/WindowGUISample.cs index c33de2a..5dd294f 100644 --- a/SamplesCS/Samples/WindowGUISample.cs +++ b/SamplesCore.Windows/Samples/WindowGUISample.cs @@ -2,13 +2,10 @@ using System; using System.Diagnostics; -namespace SamplesCS.Samples +namespace SamplesCore.Windows { internal class WindowGUISample : ISample { - - Mat WindowImage = new Mat("./Resource.png", ImreadModes.AnyColor); // Set your Resource - public void Run() { Windows_Example(); @@ -40,15 +37,17 @@ public void Run(Category category) } */ - public void Windows_Example() + public static void Windows_Example() { - var openCloseWindow = new Window("OpenCVWindow", WindowMode.AutoSize, WindowImage); + using var srcImg = new Mat(FilePath.Image.SurfBoxinscene, ImreadModes.AnyColor); + using var openCloseWindow = new Window("OpenCVWindow", srcImg); Debug.WriteLine(Cv2.WaitKey()); } public void MouseCallBack_Example() { - using Window foo = new Window("OpenCVWindow", WindowMode.AutoSize, WindowImage); + using var srcImg = new Mat(FilePath.Image.SurfBoxinscene, ImreadModes.AnyColor); + using var foo = new Window("MouseEvent", srcImg); Cv2.SetMouseCallback(foo.Name, CallbackOpenCVAnnotate); Cv2.WaitKey(); } @@ -73,9 +72,9 @@ private void CallbackOpenCVAnnotate(MouseEventTypes e, int x, int y, MouseEventF } } - public void TrackBar_Example() + public static void TrackBar_Example() { - using var src = WindowImage; + using var src = new Mat(FilePath.Image.SurfBoxinscene, ImreadModes.AnyColor); using var dst = new Mat(); src.CopyTo(dst); diff --git a/SamplesCore.Windows/SamplesCore.Windows.csproj b/SamplesCore.Windows/SamplesCore.Windows.csproj new file mode 100644 index 0000000..1f794ba --- /dev/null +++ b/SamplesCore.Windows/SamplesCore.Windows.csproj @@ -0,0 +1,31 @@ + + + + WinExe + net8.0-windows + true + true + + + + + + + + + PreserveNewest + + + + + + + + + + + PreserveNewest + + + + diff --git a/SamplesCore/Data/Image/Girl.bmp b/SamplesCore/Data/Image/Girl.bmp deleted file mode 100644 index a4db493..0000000 Binary files a/SamplesCore/Data/Image/Girl.bmp and /dev/null differ diff --git a/SamplesCore/Data/Image/asahiyama.jpg b/SamplesCore/Data/Image/asahiyama.jpg deleted file mode 100644 index fb2b6d4..0000000 Binary files a/SamplesCore/Data/Image/asahiyama.jpg and /dev/null differ diff --git a/SamplesCore/Data/Image/goryokaku.jpg b/SamplesCore/Data/Image/goryokaku.jpg deleted file mode 100644 index 32f181e..0000000 Binary files a/SamplesCore/Data/Image/goryokaku.jpg and /dev/null differ diff --git a/SamplesCore/Data/Image/lenna.png b/SamplesCore/Data/Image/lenna.png deleted file mode 100644 index 22c23ca..0000000 Binary files a/SamplesCore/Data/Image/lenna.png and /dev/null differ diff --git a/SamplesCore/Data/Image/shapes.png b/SamplesCore/Data/Image/shapes.png deleted file mode 100644 index 7b754ad..0000000 Binary files a/SamplesCore/Data/Image/shapes.png and /dev/null differ diff --git a/SamplesCore/Data/Image/space_shuttle.jpg b/SamplesCore/Data/Image/space_shuttle.jpg deleted file mode 100644 index 412a919..0000000 Binary files a/SamplesCore/Data/Image/space_shuttle.jpg and /dev/null differ diff --git a/SamplesCore/Data/Image/tsukuba_left.png b/SamplesCore/Data/Image/tsukuba_left.png deleted file mode 100644 index 25651ce..0000000 Binary files a/SamplesCore/Data/Image/tsukuba_left.png and /dev/null differ diff --git a/SamplesCore/Data/Image/tsukuba_right.png b/SamplesCore/Data/Image/tsukuba_right.png deleted file mode 100644 index 5c45ccd..0000000 Binary files a/SamplesCore/Data/Image/tsukuba_right.png and /dev/null differ diff --git a/SamplesCore/Data/Movie/bach.mp4 b/SamplesCore/Data/Movie/bach.mp4 deleted file mode 100644 index 91d384f..0000000 Binary files a/SamplesCore/Data/Movie/bach.mp4 and /dev/null differ diff --git a/SamplesCore/Data/Text/bvlc_googlenet.prototxt b/SamplesCore/Data/Text/bvlc_googlenet.prototxt deleted file mode 100644 index 4648bf2..0000000 --- a/SamplesCore/Data/Text/bvlc_googlenet.prototxt +++ /dev/null @@ -1,2156 +0,0 @@ -name: "GoogleNet" -input: "data" -input_dim: 10 -input_dim: 3 -input_dim: 224 -input_dim: 224 -layer { - name: "conv1/7x7_s2" - type: "Convolution" - bottom: "data" - top: "conv1/7x7_s2" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 3 - kernel_size: 7 - stride: 2 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "conv1/relu_7x7" - type: "ReLU" - bottom: "conv1/7x7_s2" - top: "conv1/7x7_s2" -} -layer { - name: "pool1/3x3_s2" - type: "Pooling" - bottom: "conv1/7x7_s2" - top: "pool1/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "pool1/norm1" - type: "LRN" - bottom: "pool1/3x3_s2" - top: "pool1/norm1" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "conv2/3x3_reduce" - type: "Convolution" - bottom: "pool1/norm1" - top: "conv2/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "conv2/relu_3x3_reduce" - type: "ReLU" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3_reduce" -} -layer { - name: "conv2/3x3" - type: "Convolution" - bottom: "conv2/3x3_reduce" - top: "conv2/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "conv2/relu_3x3" - type: "ReLU" - bottom: "conv2/3x3" - top: "conv2/3x3" -} -layer { - name: "conv2/norm2" - type: "LRN" - bottom: "conv2/3x3" - top: "conv2/norm2" - lrn_param { - local_size: 5 - alpha: 0.0001 - beta: 0.75 - } -} -layer { - name: "pool2/3x3_s2" - type: "Pooling" - bottom: "conv2/norm2" - top: "pool2/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_3a/1x1" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_1x1" - type: "ReLU" - bottom: "inception_3a/1x1" - top: "inception_3a/1x1" -} -layer { - name: "inception_3a/3x3_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3_reduce" -} -layer { - name: "inception_3a/3x3" - type: "Convolution" - bottom: "inception_3a/3x3_reduce" - top: "inception_3a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_3x3" - type: "ReLU" - bottom: "inception_3a/3x3" - top: "inception_3a/3x3" -} -layer { - name: "inception_3a/5x5_reduce" - type: "Convolution" - bottom: "pool2/3x3_s2" - top: "inception_3a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5_reduce" -} -layer { - name: "inception_3a/5x5" - type: "Convolution" - bottom: "inception_3a/5x5_reduce" - top: "inception_3a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_5x5" - type: "ReLU" - bottom: "inception_3a/5x5" - top: "inception_3a/5x5" -} -layer { - name: "inception_3a/pool" - type: "Pooling" - bottom: "pool2/3x3_s2" - top: "inception_3a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3a/pool_proj" - type: "Convolution" - bottom: "inception_3a/pool" - top: "inception_3a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3a/relu_pool_proj" - type: "ReLU" - bottom: "inception_3a/pool_proj" - top: "inception_3a/pool_proj" -} -layer { - name: "inception_3a/output" - type: "Concat" - bottom: "inception_3a/1x1" - bottom: "inception_3a/3x3" - bottom: "inception_3a/5x5" - bottom: "inception_3a/pool_proj" - top: "inception_3a/output" -} -layer { - name: "inception_3b/1x1" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_1x1" - type: "ReLU" - bottom: "inception_3b/1x1" - top: "inception_3b/1x1" -} -layer { - name: "inception_3b/3x3_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3_reduce" -} -layer { - name: "inception_3b/3x3" - type: "Convolution" - bottom: "inception_3b/3x3_reduce" - top: "inception_3b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_3x3" - type: "ReLU" - bottom: "inception_3b/3x3" - top: "inception_3b/3x3" -} -layer { - name: "inception_3b/5x5_reduce" - type: "Convolution" - bottom: "inception_3a/output" - top: "inception_3b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5_reduce" -} -layer { - name: "inception_3b/5x5" - type: "Convolution" - bottom: "inception_3b/5x5_reduce" - top: "inception_3b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_5x5" - type: "ReLU" - bottom: "inception_3b/5x5" - top: "inception_3b/5x5" -} -layer { - name: "inception_3b/pool" - type: "Pooling" - bottom: "inception_3a/output" - top: "inception_3b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_3b/pool_proj" - type: "Convolution" - bottom: "inception_3b/pool" - top: "inception_3b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_3b/relu_pool_proj" - type: "ReLU" - bottom: "inception_3b/pool_proj" - top: "inception_3b/pool_proj" -} -layer { - name: "inception_3b/output" - type: "Concat" - bottom: "inception_3b/1x1" - bottom: "inception_3b/3x3" - bottom: "inception_3b/5x5" - bottom: "inception_3b/pool_proj" - top: "inception_3b/output" -} -layer { - name: "pool3/3x3_s2" - type: "Pooling" - bottom: "inception_3b/output" - top: "pool3/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_4a/1x1" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_1x1" - type: "ReLU" - bottom: "inception_4a/1x1" - top: "inception_4a/1x1" -} -layer { - name: "inception_4a/3x3_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 96 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3_reduce" -} -layer { - name: "inception_4a/3x3" - type: "Convolution" - bottom: "inception_4a/3x3_reduce" - top: "inception_4a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 208 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_3x3" - type: "ReLU" - bottom: "inception_4a/3x3" - top: "inception_4a/3x3" -} -layer { - name: "inception_4a/5x5_reduce" - type: "Convolution" - bottom: "pool3/3x3_s2" - top: "inception_4a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 16 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5_reduce" -} -layer { - name: "inception_4a/5x5" - type: "Convolution" - bottom: "inception_4a/5x5_reduce" - top: "inception_4a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_5x5" - type: "ReLU" - bottom: "inception_4a/5x5" - top: "inception_4a/5x5" -} -layer { - name: "inception_4a/pool" - type: "Pooling" - bottom: "pool3/3x3_s2" - top: "inception_4a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4a/pool_proj" - type: "Convolution" - bottom: "inception_4a/pool" - top: "inception_4a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4a/relu_pool_proj" - type: "ReLU" - bottom: "inception_4a/pool_proj" - top: "inception_4a/pool_proj" -} -layer { - name: "inception_4a/output" - type: "Concat" - bottom: "inception_4a/1x1" - bottom: "inception_4a/3x3" - bottom: "inception_4a/5x5" - bottom: "inception_4a/pool_proj" - top: "inception_4a/output" -} -layer { - name: "inception_4b/1x1" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_1x1" - type: "ReLU" - bottom: "inception_4b/1x1" - top: "inception_4b/1x1" -} -layer { - name: "inception_4b/3x3_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3_reduce" -} -layer { - name: "inception_4b/3x3" - type: "Convolution" - bottom: "inception_4b/3x3_reduce" - top: "inception_4b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 224 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_3x3" - type: "ReLU" - bottom: "inception_4b/3x3" - top: "inception_4b/3x3" -} -layer { - name: "inception_4b/5x5_reduce" - type: "Convolution" - bottom: "inception_4a/output" - top: "inception_4b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5_reduce" -} -layer { - name: "inception_4b/5x5" - type: "Convolution" - bottom: "inception_4b/5x5_reduce" - top: "inception_4b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_5x5" - type: "ReLU" - bottom: "inception_4b/5x5" - top: "inception_4b/5x5" -} -layer { - name: "inception_4b/pool" - type: "Pooling" - bottom: "inception_4a/output" - top: "inception_4b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4b/pool_proj" - type: "Convolution" - bottom: "inception_4b/pool" - top: "inception_4b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4b/relu_pool_proj" - type: "ReLU" - bottom: "inception_4b/pool_proj" - top: "inception_4b/pool_proj" -} -layer { - name: "inception_4b/output" - type: "Concat" - bottom: "inception_4b/1x1" - bottom: "inception_4b/3x3" - bottom: "inception_4b/5x5" - bottom: "inception_4b/pool_proj" - top: "inception_4b/output" -} -layer { - name: "inception_4c/1x1" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_1x1" - type: "ReLU" - bottom: "inception_4c/1x1" - top: "inception_4c/1x1" -} -layer { - name: "inception_4c/3x3_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3_reduce" -} -layer { - name: "inception_4c/3x3" - type: "Convolution" - bottom: "inception_4c/3x3_reduce" - top: "inception_4c/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_3x3" - type: "ReLU" - bottom: "inception_4c/3x3" - top: "inception_4c/3x3" -} -layer { - name: "inception_4c/5x5_reduce" - type: "Convolution" - bottom: "inception_4b/output" - top: "inception_4c/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 24 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5_reduce" -} -layer { - name: "inception_4c/5x5" - type: "Convolution" - bottom: "inception_4c/5x5_reduce" - top: "inception_4c/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_5x5" - type: "ReLU" - bottom: "inception_4c/5x5" - top: "inception_4c/5x5" -} -layer { - name: "inception_4c/pool" - type: "Pooling" - bottom: "inception_4b/output" - top: "inception_4c/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4c/pool_proj" - type: "Convolution" - bottom: "inception_4c/pool" - top: "inception_4c/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4c/relu_pool_proj" - type: "ReLU" - bottom: "inception_4c/pool_proj" - top: "inception_4c/pool_proj" -} -layer { - name: "inception_4c/output" - type: "Concat" - bottom: "inception_4c/1x1" - bottom: "inception_4c/3x3" - bottom: "inception_4c/5x5" - bottom: "inception_4c/pool_proj" - top: "inception_4c/output" -} -layer { - name: "inception_4d/1x1" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 112 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_1x1" - type: "ReLU" - bottom: "inception_4d/1x1" - top: "inception_4d/1x1" -} -layer { - name: "inception_4d/3x3_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 144 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3_reduce" -} -layer { - name: "inception_4d/3x3" - type: "Convolution" - bottom: "inception_4d/3x3_reduce" - top: "inception_4d/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 288 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_3x3" - type: "ReLU" - bottom: "inception_4d/3x3" - top: "inception_4d/3x3" -} -layer { - name: "inception_4d/5x5_reduce" - type: "Convolution" - bottom: "inception_4c/output" - top: "inception_4d/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5_reduce" -} -layer { - name: "inception_4d/5x5" - type: "Convolution" - bottom: "inception_4d/5x5_reduce" - top: "inception_4d/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_5x5" - type: "ReLU" - bottom: "inception_4d/5x5" - top: "inception_4d/5x5" -} -layer { - name: "inception_4d/pool" - type: "Pooling" - bottom: "inception_4c/output" - top: "inception_4d/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4d/pool_proj" - type: "Convolution" - bottom: "inception_4d/pool" - top: "inception_4d/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 64 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4d/relu_pool_proj" - type: "ReLU" - bottom: "inception_4d/pool_proj" - top: "inception_4d/pool_proj" -} -layer { - name: "inception_4d/output" - type: "Concat" - bottom: "inception_4d/1x1" - bottom: "inception_4d/3x3" - bottom: "inception_4d/5x5" - bottom: "inception_4d/pool_proj" - top: "inception_4d/output" -} -layer { - name: "inception_4e/1x1" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_1x1" - type: "ReLU" - bottom: "inception_4e/1x1" - top: "inception_4e/1x1" -} -layer { - name: "inception_4e/3x3_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3_reduce" -} -layer { - name: "inception_4e/3x3" - type: "Convolution" - bottom: "inception_4e/3x3_reduce" - top: "inception_4e/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_3x3" - type: "ReLU" - bottom: "inception_4e/3x3" - top: "inception_4e/3x3" -} -layer { - name: "inception_4e/5x5_reduce" - type: "Convolution" - bottom: "inception_4d/output" - top: "inception_4e/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5_reduce" -} -layer { - name: "inception_4e/5x5" - type: "Convolution" - bottom: "inception_4e/5x5_reduce" - top: "inception_4e/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_5x5" - type: "ReLU" - bottom: "inception_4e/5x5" - top: "inception_4e/5x5" -} -layer { - name: "inception_4e/pool" - type: "Pooling" - bottom: "inception_4d/output" - top: "inception_4e/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_4e/pool_proj" - type: "Convolution" - bottom: "inception_4e/pool" - top: "inception_4e/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_4e/relu_pool_proj" - type: "ReLU" - bottom: "inception_4e/pool_proj" - top: "inception_4e/pool_proj" -} -layer { - name: "inception_4e/output" - type: "Concat" - bottom: "inception_4e/1x1" - bottom: "inception_4e/3x3" - bottom: "inception_4e/5x5" - bottom: "inception_4e/pool_proj" - top: "inception_4e/output" -} -layer { - name: "pool4/3x3_s2" - type: "Pooling" - bottom: "inception_4e/output" - top: "pool4/3x3_s2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - } -} -layer { - name: "inception_5a/1x1" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 256 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_1x1" - type: "ReLU" - bottom: "inception_5a/1x1" - top: "inception_5a/1x1" -} -layer { - name: "inception_5a/3x3_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 160 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3_reduce" -} -layer { - name: "inception_5a/3x3" - type: "Convolution" - bottom: "inception_5a/3x3_reduce" - top: "inception_5a/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 320 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_3x3" - type: "ReLU" - bottom: "inception_5a/3x3" - top: "inception_5a/3x3" -} -layer { - name: "inception_5a/5x5_reduce" - type: "Convolution" - bottom: "pool4/3x3_s2" - top: "inception_5a/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 32 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5_reduce" -} -layer { - name: "inception_5a/5x5" - type: "Convolution" - bottom: "inception_5a/5x5_reduce" - top: "inception_5a/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_5x5" - type: "ReLU" - bottom: "inception_5a/5x5" - top: "inception_5a/5x5" -} -layer { - name: "inception_5a/pool" - type: "Pooling" - bottom: "pool4/3x3_s2" - top: "inception_5a/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5a/pool_proj" - type: "Convolution" - bottom: "inception_5a/pool" - top: "inception_5a/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5a/relu_pool_proj" - type: "ReLU" - bottom: "inception_5a/pool_proj" - top: "inception_5a/pool_proj" -} -layer { - name: "inception_5a/output" - type: "Concat" - bottom: "inception_5a/1x1" - bottom: "inception_5a/3x3" - bottom: "inception_5a/5x5" - bottom: "inception_5a/pool_proj" - top: "inception_5a/output" -} -layer { - name: "inception_5b/1x1" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/1x1" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_1x1" - type: "ReLU" - bottom: "inception_5b/1x1" - top: "inception_5b/1x1" -} -layer { - name: "inception_5b/3x3_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/3x3_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 192 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.09 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_3x3_reduce" - type: "ReLU" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3_reduce" -} -layer { - name: "inception_5b/3x3" - type: "Convolution" - bottom: "inception_5b/3x3_reduce" - top: "inception_5b/3x3" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 384 - pad: 1 - kernel_size: 3 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_3x3" - type: "ReLU" - bottom: "inception_5b/3x3" - top: "inception_5b/3x3" -} -layer { - name: "inception_5b/5x5_reduce" - type: "Convolution" - bottom: "inception_5a/output" - top: "inception_5b/5x5_reduce" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 48 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.2 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_5x5_reduce" - type: "ReLU" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5_reduce" -} -layer { - name: "inception_5b/5x5" - type: "Convolution" - bottom: "inception_5b/5x5_reduce" - top: "inception_5b/5x5" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - pad: 2 - kernel_size: 5 - weight_filler { - type: "xavier" - std: 0.03 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_5x5" - type: "ReLU" - bottom: "inception_5b/5x5" - top: "inception_5b/5x5" -} -layer { - name: "inception_5b/pool" - type: "Pooling" - bottom: "inception_5a/output" - top: "inception_5b/pool" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 1 - pad: 1 - } -} -layer { - name: "inception_5b/pool_proj" - type: "Convolution" - bottom: "inception_5b/pool" - top: "inception_5b/pool_proj" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - convolution_param { - num_output: 128 - kernel_size: 1 - weight_filler { - type: "xavier" - std: 0.1 - } - bias_filler { - type: "constant" - value: 0.2 - } - } -} -layer { - name: "inception_5b/relu_pool_proj" - type: "ReLU" - bottom: "inception_5b/pool_proj" - top: "inception_5b/pool_proj" -} -layer { - name: "inception_5b/output" - type: "Concat" - bottom: "inception_5b/1x1" - bottom: "inception_5b/3x3" - bottom: "inception_5b/5x5" - bottom: "inception_5b/pool_proj" - top: "inception_5b/output" -} -layer { - name: "pool5/7x7_s1" - type: "Pooling" - bottom: "inception_5b/output" - top: "pool5/7x7_s1" - pooling_param { - pool: AVE - kernel_size: 7 - stride: 1 - } -} -layer { - name: "pool5/drop_7x7_s1" - type: "Dropout" - bottom: "pool5/7x7_s1" - top: "pool5/7x7_s1" - dropout_param { - dropout_ratio: 0.4 - } -} -layer { - name: "loss3/classifier" - type: "InnerProduct" - bottom: "pool5/7x7_s1" - top: "loss3/classifier" - param { - lr_mult: 1 - decay_mult: 1 - } - param { - lr_mult: 2 - decay_mult: 0 - } - inner_product_param { - num_output: 1000 - weight_filler { - type: "xavier" - } - bias_filler { - type: "constant" - value: 0 - } - } -} -layer { - name: "prob" - type: "Softmax" - bottom: "loss3/classifier" - top: "prob" -} diff --git a/SamplesCore/Data/Text/synset_words.txt b/SamplesCore/Data/Text/synset_words.txt deleted file mode 100644 index a9e8c7f..0000000 --- a/SamplesCore/Data/Text/synset_words.txt +++ /dev/null @@ -1,1000 +0,0 @@ -n01440764 tench, Tinca tinca -n01443537 goldfish, Carassius auratus -n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias -n01491361 tiger shark, Galeocerdo cuvieri -n01494475 hammerhead, hammerhead shark -n01496331 electric ray, crampfish, numbfish, torpedo -n01498041 stingray -n01514668 cock -n01514859 hen -n01518878 ostrich, Struthio camelus -n01530575 brambling, Fringilla montifringilla -n01531178 goldfinch, Carduelis carduelis -n01532829 house finch, linnet, Carpodacus mexicanus -n01534433 junco, snowbird -n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea -n01558993 robin, American robin, Turdus migratorius -n01560419 bulbul -n01580077 jay -n01582220 magpie -n01592084 chickadee -n01601694 water ouzel, dipper -n01608432 kite -n01614925 bald eagle, American eagle, Haliaeetus leucocephalus -n01616318 vulture -n01622779 great grey owl, great gray owl, Strix nebulosa -n01629819 European fire salamander, Salamandra salamandra -n01630670 common newt, Triturus vulgaris -n01631663 eft -n01632458 spotted salamander, Ambystoma maculatum -n01632777 axolotl, mud puppy, Ambystoma mexicanum -n01641577 bullfrog, Rana catesbeiana -n01644373 tree frog, tree-frog -n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui -n01664065 loggerhead, loggerhead turtle, Caretta caretta -n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea -n01667114 mud turtle -n01667778 terrapin -n01669191 box turtle, box tortoise -n01675722 banded gecko -n01677366 common iguana, iguana, Iguana iguana -n01682714 American chameleon, anole, Anolis carolinensis -n01685808 whiptail, whiptail lizard -n01687978 agama -n01688243 frilled lizard, Chlamydosaurus kingi -n01689811 alligator lizard -n01692333 Gila monster, Heloderma suspectum -n01693334 green lizard, Lacerta viridis -n01694178 African chameleon, Chamaeleo chamaeleon -n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis -n01697457 African crocodile, Nile crocodile, Crocodylus niloticus -n01698640 American alligator, Alligator mississipiensis -n01704323 triceratops -n01728572 thunder snake, worm snake, Carphophis amoenus -n01728920 ringneck snake, ring-necked snake, ring snake -n01729322 hognose snake, puff adder, sand viper -n01729977 green snake, grass snake -n01734418 king snake, kingsnake -n01735189 garter snake, grass snake -n01737021 water snake -n01739381 vine snake -n01740131 night snake, Hypsiglena torquata -n01742172 boa constrictor, Constrictor constrictor -n01744401 rock python, rock snake, Python sebae -n01748264 Indian cobra, Naja naja -n01749939 green mamba -n01751748 sea snake -n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus -n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus -n01756291 sidewinder, horned rattlesnake, Crotalus cerastes -n01768244 trilobite -n01770081 harvestman, daddy longlegs, Phalangium opilio -n01770393 scorpion -n01773157 black and gold garden spider, Argiope aurantia -n01773549 barn spider, Araneus cavaticus -n01773797 garden spider, Aranea diademata -n01774384 black widow, Latrodectus mactans -n01774750 tarantula -n01775062 wolf spider, hunting spider -n01776313 tick -n01784675 centipede -n01795545 black grouse -n01796340 ptarmigan -n01797886 ruffed grouse, partridge, Bonasa umbellus -n01798484 prairie chicken, prairie grouse, prairie fowl -n01806143 peacock -n01806567 quail -n01807496 partridge -n01817953 African grey, African gray, Psittacus erithacus -n01818515 macaw -n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita -n01820546 lorikeet -n01824575 coucal -n01828970 bee eater -n01829413 hornbill -n01833805 hummingbird -n01843065 jacamar -n01843383 toucan -n01847000 drake -n01855032 red-breasted merganser, Mergus serrator -n01855672 goose -n01860187 black swan, Cygnus atratus -n01871265 tusker -n01872401 echidna, spiny anteater, anteater -n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus -n01877812 wallaby, brush kangaroo -n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus -n01883070 wombat -n01910747 jellyfish -n01914609 sea anemone, anemone -n01917289 brain coral -n01924916 flatworm, platyhelminth -n01930112 nematode, nematode worm, roundworm -n01943899 conch -n01944390 snail -n01945685 slug -n01950731 sea slug, nudibranch -n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore -n01968897 chambered nautilus, pearly nautilus, nautilus -n01978287 Dungeness crab, Cancer magister -n01978455 rock crab, Cancer irroratus -n01980166 fiddler crab -n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica -n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus -n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish -n01985128 crayfish, crawfish, crawdad, crawdaddy -n01986214 hermit crab -n01990800 isopod -n02002556 white stork, Ciconia ciconia -n02002724 black stork, Ciconia nigra -n02006656 spoonbill -n02007558 flamingo -n02009229 little blue heron, Egretta caerulea -n02009912 American egret, great white heron, Egretta albus -n02011460 bittern -n02012849 crane -n02013706 limpkin, Aramus pictus -n02017213 European gallinule, Porphyrio porphyrio -n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana -n02018795 bustard -n02025239 ruddy turnstone, Arenaria interpres -n02027492 red-backed sandpiper, dunlin, Erolia alpina -n02028035 redshank, Tringa totanus -n02033041 dowitcher -n02037110 oystercatcher, oyster catcher -n02051845 pelican -n02056570 king penguin, Aptenodytes patagonica -n02058221 albatross, mollymawk -n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus -n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca -n02074367 dugong, Dugong dugon -n02077923 sea lion -n02085620 Chihuahua -n02085782 Japanese spaniel -n02085936 Maltese dog, Maltese terrier, Maltese -n02086079 Pekinese, Pekingese, Peke -n02086240 Shih-Tzu -n02086646 Blenheim spaniel -n02086910 papillon -n02087046 toy terrier -n02087394 Rhodesian ridgeback -n02088094 Afghan hound, Afghan -n02088238 basset, basset hound -n02088364 beagle -n02088466 bloodhound, sleuthhound -n02088632 bluetick -n02089078 black-and-tan coonhound -n02089867 Walker hound, Walker foxhound -n02089973 English foxhound -n02090379 redbone -n02090622 borzoi, Russian wolfhound -n02090721 Irish wolfhound -n02091032 Italian greyhound -n02091134 whippet -n02091244 Ibizan hound, Ibizan Podenco -n02091467 Norwegian elkhound, elkhound -n02091635 otterhound, otter hound -n02091831 Saluki, gazelle hound -n02092002 Scottish deerhound, deerhound -n02092339 Weimaraner -n02093256 Staffordshire bullterrier, Staffordshire bull terrier -n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier -n02093647 Bedlington terrier -n02093754 Border terrier -n02093859 Kerry blue terrier -n02093991 Irish terrier -n02094114 Norfolk terrier -n02094258 Norwich terrier -n02094433 Yorkshire terrier -n02095314 wire-haired fox terrier -n02095570 Lakeland terrier -n02095889 Sealyham terrier, Sealyham -n02096051 Airedale, Airedale terrier -n02096177 cairn, cairn terrier -n02096294 Australian terrier -n02096437 Dandie Dinmont, Dandie Dinmont terrier -n02096585 Boston bull, Boston terrier -n02097047 miniature schnauzer -n02097130 giant schnauzer -n02097209 standard schnauzer -n02097298 Scotch terrier, Scottish terrier, Scottie -n02097474 Tibetan terrier, chrysanthemum dog -n02097658 silky terrier, Sydney silky -n02098105 soft-coated wheaten terrier -n02098286 West Highland white terrier -n02098413 Lhasa, Lhasa apso -n02099267 flat-coated retriever -n02099429 curly-coated retriever -n02099601 golden retriever -n02099712 Labrador retriever -n02099849 Chesapeake Bay retriever -n02100236 German short-haired pointer -n02100583 vizsla, Hungarian pointer -n02100735 English setter -n02100877 Irish setter, red setter -n02101006 Gordon setter -n02101388 Brittany spaniel -n02101556 clumber, clumber spaniel -n02102040 English springer, English springer spaniel -n02102177 Welsh springer spaniel -n02102318 cocker spaniel, English cocker spaniel, cocker -n02102480 Sussex spaniel -n02102973 Irish water spaniel -n02104029 kuvasz -n02104365 schipperke -n02105056 groenendael -n02105162 malinois -n02105251 briard -n02105412 kelpie -n02105505 komondor -n02105641 Old English sheepdog, bobtail -n02105855 Shetland sheepdog, Shetland sheep dog, Shetland -n02106030 collie -n02106166 Border collie -n02106382 Bouvier des Flandres, Bouviers des Flandres -n02106550 Rottweiler -n02106662 German shepherd, German shepherd dog, German police dog, alsatian -n02107142 Doberman, Doberman pinscher -n02107312 miniature pinscher -n02107574 Greater Swiss Mountain dog -n02107683 Bernese mountain dog -n02107908 Appenzeller -n02108000 EntleBucher -n02108089 boxer -n02108422 bull mastiff -n02108551 Tibetan mastiff -n02108915 French bulldog -n02109047 Great Dane -n02109525 Saint Bernard, St Bernard -n02109961 Eskimo dog, husky -n02110063 malamute, malemute, Alaskan malamute -n02110185 Siberian husky -n02110341 dalmatian, coach dog, carriage dog -n02110627 affenpinscher, monkey pinscher, monkey dog -n02110806 basenji -n02110958 pug, pug-dog -n02111129 Leonberg -n02111277 Newfoundland, Newfoundland dog -n02111500 Great Pyrenees -n02111889 Samoyed, Samoyede -n02112018 Pomeranian -n02112137 chow, chow chow -n02112350 keeshond -n02112706 Brabancon griffon -n02113023 Pembroke, Pembroke Welsh corgi -n02113186 Cardigan, Cardigan Welsh corgi -n02113624 toy poodle -n02113712 miniature poodle -n02113799 standard poodle -n02113978 Mexican hairless -n02114367 timber wolf, grey wolf, gray wolf, Canis lupus -n02114548 white wolf, Arctic wolf, Canis lupus tundrarum -n02114712 red wolf, maned wolf, Canis rufus, Canis niger -n02114855 coyote, prairie wolf, brush wolf, Canis latrans -n02115641 dingo, warrigal, warragal, Canis dingo -n02115913 dhole, Cuon alpinus -n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus -n02117135 hyena, hyaena -n02119022 red fox, Vulpes vulpes -n02119789 kit fox, Vulpes macrotis -n02120079 Arctic fox, white fox, Alopex lagopus -n02120505 grey fox, gray fox, Urocyon cinereoargenteus -n02123045 tabby, tabby cat -n02123159 tiger cat -n02123394 Persian cat -n02123597 Siamese cat, Siamese -n02124075 Egyptian cat -n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor -n02127052 lynx, catamount -n02128385 leopard, Panthera pardus -n02128757 snow leopard, ounce, Panthera uncia -n02128925 jaguar, panther, Panthera onca, Felis onca -n02129165 lion, king of beasts, Panthera leo -n02129604 tiger, Panthera tigris -n02130308 cheetah, chetah, Acinonyx jubatus -n02132136 brown bear, bruin, Ursus arctos -n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus -n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus -n02134418 sloth bear, Melursus ursinus, Ursus ursinus -n02137549 mongoose -n02138441 meerkat, mierkat -n02165105 tiger beetle -n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle -n02167151 ground beetle, carabid beetle -n02168699 long-horned beetle, longicorn, longicorn beetle -n02169497 leaf beetle, chrysomelid -n02172182 dung beetle -n02174001 rhinoceros beetle -n02177972 weevil -n02190166 fly -n02206856 bee -n02219486 ant, emmet, pismire -n02226429 grasshopper, hopper -n02229544 cricket -n02231487 walking stick, walkingstick, stick insect -n02233338 cockroach, roach -n02236044 mantis, mantid -n02256656 cicada, cicala -n02259212 leafhopper -n02264363 lacewing, lacewing fly -n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk -n02268853 damselfly -n02276258 admiral -n02277742 ringlet, ringlet butterfly -n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus -n02280649 cabbage butterfly -n02281406 sulphur butterfly, sulfur butterfly -n02281787 lycaenid, lycaenid butterfly -n02317335 starfish, sea star -n02319095 sea urchin -n02321529 sea cucumber, holothurian -n02325366 wood rabbit, cottontail, cottontail rabbit -n02326432 hare -n02328150 Angora, Angora rabbit -n02342885 hamster -n02346627 porcupine, hedgehog -n02356798 fox squirrel, eastern fox squirrel, Sciurus niger -n02361337 marmot -n02363005 beaver -n02364673 guinea pig, Cavia cobaya -n02389026 sorrel -n02391049 zebra -n02395406 hog, pig, grunter, squealer, Sus scrofa -n02396427 wild boar, boar, Sus scrofa -n02397096 warthog -n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius -n02403003 ox -n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis -n02410509 bison -n02412080 ram, tup -n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis -n02417914 ibex, Capra ibex -n02422106 hartebeest -n02422699 impala, Aepyceros melampus -n02423022 gazelle -n02437312 Arabian camel, dromedary, Camelus dromedarius -n02437616 llama -n02441942 weasel -n02442845 mink -n02443114 polecat, fitch, foulmart, foumart, Mustela putorius -n02443484 black-footed ferret, ferret, Mustela nigripes -n02444819 otter -n02445715 skunk, polecat, wood pussy -n02447366 badger -n02454379 armadillo -n02457408 three-toed sloth, ai, Bradypus tridactylus -n02480495 orangutan, orang, orangutang, Pongo pygmaeus -n02480855 gorilla, Gorilla gorilla -n02481823 chimpanzee, chimp, Pan troglodytes -n02483362 gibbon, Hylobates lar -n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus -n02484975 guenon, guenon monkey -n02486261 patas, hussar monkey, Erythrocebus patas -n02486410 baboon -n02487347 macaque -n02488291 langur -n02488702 colobus, colobus monkey -n02489166 proboscis monkey, Nasalis larvatus -n02490219 marmoset -n02492035 capuchin, ringtail, Cebus capucinus -n02492660 howler monkey, howler -n02493509 titi, titi monkey -n02493793 spider monkey, Ateles geoffroyi -n02494079 squirrel monkey, Saimiri sciureus -n02497673 Madagascar cat, ring-tailed lemur, Lemur catta -n02500267 indri, indris, Indri indri, Indri brevicaudatus -n02504013 Indian elephant, Elephas maximus -n02504458 African elephant, Loxodonta africana -n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens -n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca -n02514041 barracouta, snoek -n02526121 eel -n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch -n02606052 rock beauty, Holocanthus tricolor -n02607072 anemone fish -n02640242 sturgeon -n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus -n02643566 lionfish -n02655020 puffer, pufferfish, blowfish, globefish -n02666196 abacus -n02667093 abaya -n02669723 academic gown, academic robe, judge's robe -n02672831 accordion, piano accordion, squeeze box -n02676566 acoustic guitar -n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier -n02690373 airliner -n02692877 airship, dirigible -n02699494 altar -n02701002 ambulance -n02704792 amphibian, amphibious vehicle -n02708093 analog clock -n02727426 apiary, bee house -n02730930 apron -n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin -n02749479 assault rifle, assault gun -n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack -n02776631 bakery, bakeshop, bakehouse -n02777292 balance beam, beam -n02782093 balloon -n02783161 ballpoint, ballpoint pen, ballpen, Biro -n02786058 Band Aid -n02787622 banjo -n02788148 bannister, banister, balustrade, balusters, handrail -n02790996 barbell -n02791124 barber chair -n02791270 barbershop -n02793495 barn -n02794156 barometer -n02795169 barrel, cask -n02797295 barrow, garden cart, lawn cart, wheelbarrow -n02799071 baseball -n02802426 basketball -n02804414 bassinet -n02804610 bassoon -n02807133 bathing cap, swimming cap -n02808304 bath towel -n02808440 bathtub, bathing tub, bath, tub -n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon -n02814860 beacon, lighthouse, beacon light, pharos -n02815834 beaker -n02817516 bearskin, busby, shako -n02823428 beer bottle -n02823750 beer glass -n02825657 bell cote, bell cot -n02834397 bib -n02835271 bicycle-built-for-two, tandem bicycle, tandem -n02837789 bikini, two-piece -n02840245 binder, ring-binder -n02841315 binoculars, field glasses, opera glasses -n02843684 birdhouse -n02859443 boathouse -n02860847 bobsled, bobsleigh, bob -n02865351 bolo tie, bolo, bola tie, bola -n02869837 bonnet, poke bonnet -n02870880 bookcase -n02871525 bookshop, bookstore, bookstall -n02877765 bottlecap -n02879718 bow -n02883205 bow tie, bow-tie, bowtie -n02892201 brass, memorial tablet, plaque -n02892767 brassiere, bra, bandeau -n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty -n02895154 breastplate, aegis, egis -n02906734 broom -n02909870 bucket, pail -n02910353 buckle -n02916936 bulletproof vest -n02917067 bullet train, bullet -n02927161 butcher shop, meat market -n02930766 cab, hack, taxi, taxicab -n02939185 caldron, cauldron -n02948072 candle, taper, wax light -n02950826 cannon -n02951358 canoe -n02951585 can opener, tin opener -n02963159 cardigan -n02965783 car mirror -n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig -n02966687 carpenter's kit, tool kit -n02971356 carton -n02974003 car wheel -n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM -n02978881 cassette -n02979186 cassette player -n02980441 castle -n02981792 catamaran -n02988304 CD player -n02992211 cello, violoncello -n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone -n02999410 chain -n03000134 chainlink fence -n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour -n03000684 chain saw, chainsaw -n03014705 chest -n03016953 chiffonier, commode -n03017168 chime, bell, gong -n03018349 china cabinet, china closet -n03026506 Christmas stocking -n03028079 church, church building -n03032252 cinema, movie theater, movie theatre, movie house, picture palace -n03041632 cleaver, meat cleaver, chopper -n03042490 cliff dwelling -n03045698 cloak -n03047690 clog, geta, patten, sabot -n03062245 cocktail shaker -n03063599 coffee mug -n03063689 coffeepot -n03065424 coil, spiral, volute, whorl, helix -n03075370 combination lock -n03085013 computer keyboard, keypad -n03089624 confectionery, confectionary, candy store -n03095699 container ship, containership, container vessel -n03100240 convertible -n03109150 corkscrew, bottle screw -n03110669 cornet, horn, trumpet, trump -n03124043 cowboy boot -n03124170 cowboy hat, ten-gallon hat -n03125729 cradle -n03126707 crane -n03127747 crash helmet -n03127925 crate -n03131574 crib, cot -n03133878 Crock Pot -n03134739 croquet ball -n03141823 crutch -n03146219 cuirass -n03160309 dam, dike, dyke -n03179701 desk -n03180011 desktop computer -n03187595 dial telephone, dial phone -n03188531 diaper, nappy, napkin -n03196217 digital clock -n03197337 digital watch -n03201208 dining table, board -n03207743 dishrag, dishcloth -n03207941 dishwasher, dish washer, dishwashing machine -n03208938 disk brake, disc brake -n03216828 dock, dockage, docking facility -n03218198 dogsled, dog sled, dog sleigh -n03220513 dome -n03223299 doormat, welcome mat -n03240683 drilling platform, offshore rig -n03249569 drum, membranophone, tympan -n03250847 drumstick -n03255030 dumbbell -n03259280 Dutch oven -n03271574 electric fan, blower -n03272010 electric guitar -n03272562 electric locomotive -n03290653 entertainment center -n03291819 envelope -n03297495 espresso maker -n03314780 face powder -n03325584 feather boa, boa -n03337140 file, file cabinet, filing cabinet -n03344393 fireboat -n03345487 fire engine, fire truck -n03347037 fire screen, fireguard -n03355925 flagpole, flagstaff -n03372029 flute, transverse flute -n03376595 folding chair -n03379051 football helmet -n03384352 forklift -n03388043 fountain -n03388183 fountain pen -n03388549 four-poster -n03393912 freight car -n03394916 French horn, horn -n03400231 frying pan, frypan, skillet -n03404251 fur coat -n03417042 garbage truck, dustcart -n03424325 gasmask, respirator, gas helmet -n03425413 gas pump, gasoline pump, petrol pump, island dispenser -n03443371 goblet -n03444034 go-kart -n03445777 golf ball -n03445924 golfcart, golf cart -n03447447 gondola -n03447721 gong, tam-tam -n03450230 gown -n03452741 grand piano, grand -n03457902 greenhouse, nursery, glasshouse -n03459775 grille, radiator grille -n03461385 grocery store, grocery, food market, market -n03467068 guillotine -n03476684 hair slide -n03476991 hair spray -n03478589 half track -n03481172 hammer -n03482405 hamper -n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier -n03485407 hand-held computer, hand-held microcomputer -n03485794 handkerchief, hankie, hanky, hankey -n03492542 hard disc, hard disk, fixed disk -n03494278 harmonica, mouth organ, harp, mouth harp -n03495258 harp -n03496892 harvester, reaper -n03498962 hatchet -n03527444 holster -n03529860 home theater, home theatre -n03530642 honeycomb -n03532672 hook, claw -n03534580 hoopskirt, crinoline -n03535780 horizontal bar, high bar -n03538406 horse cart, horse-cart -n03544143 hourglass -n03584254 iPod -n03584829 iron, smoothing iron -n03590841 jack-o'-lantern -n03594734 jean, blue jean, denim -n03594945 jeep, landrover -n03595614 jersey, T-shirt, tee shirt -n03598930 jigsaw puzzle -n03599486 jinrikisha, ricksha, rickshaw -n03602883 joystick -n03617480 kimono -n03623198 knee pad -n03627232 knot -n03630383 lab coat, laboratory coat -n03633091 ladle -n03637318 lampshade, lamp shade -n03642806 laptop, laptop computer -n03649909 lawn mower, mower -n03657121 lens cap, lens cover -n03658185 letter opener, paper knife, paperknife -n03661043 library -n03662601 lifeboat -n03666591 lighter, light, igniter, ignitor -n03670208 limousine, limo -n03673027 liner, ocean liner -n03676483 lipstick, lip rouge -n03680355 Loafer -n03690938 lotion -n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system -n03692522 loupe, jeweler's loupe -n03697007 lumbermill, sawmill -n03706229 magnetic compass -n03709823 mailbag, postbag -n03710193 mailbox, letter box -n03710637 maillot -n03710721 maillot, tank suit -n03717622 manhole cover -n03720891 maraca -n03721384 marimba, xylophone -n03724870 mask -n03729826 matchstick -n03733131 maypole -n03733281 maze, labyrinth -n03733805 measuring cup -n03742115 medicine chest, medicine cabinet -n03743016 megalith, megalithic structure -n03759954 microphone, mike -n03761084 microwave, microwave oven -n03763968 military uniform -n03764736 milk can -n03769881 minibus -n03770439 miniskirt, mini -n03770679 minivan -n03773504 missile -n03775071 mitten -n03775546 mixing bowl -n03776460 mobile home, manufactured home -n03777568 Model T -n03777754 modem -n03781244 monastery -n03782006 monitor -n03785016 moped -n03786901 mortar -n03787032 mortarboard -n03788195 mosque -n03788365 mosquito net -n03791053 motor scooter, scooter -n03792782 mountain bike, all-terrain bike, off-roader -n03792972 mountain tent -n03793489 mouse, computer mouse -n03794056 mousetrap -n03796401 moving van -n03803284 muzzle -n03804744 nail -n03814639 neck brace -n03814906 necklace -n03825788 nipple -n03832673 notebook, notebook computer -n03837869 obelisk -n03838899 oboe, hautboy, hautbois -n03840681 ocarina, sweet potato -n03841143 odometer, hodometer, mileometer, milometer -n03843555 oil filter -n03854065 organ, pipe organ -n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO -n03866082 overskirt -n03868242 oxcart -n03868863 oxygen mask -n03871628 packet -n03873416 paddle, boat paddle -n03874293 paddlewheel, paddle wheel -n03874599 padlock -n03876231 paintbrush -n03877472 pajama, pyjama, pj's, jammies -n03877845 palace -n03884397 panpipe, pandean pipe, syrinx -n03887697 paper towel -n03888257 parachute, chute -n03888605 parallel bars, bars -n03891251 park bench -n03891332 parking meter -n03895866 passenger car, coach, carriage -n03899768 patio, terrace -n03902125 pay-phone, pay-station -n03903868 pedestal, plinth, footstall -n03908618 pencil box, pencil case -n03908714 pencil sharpener -n03916031 perfume, essence -n03920288 Petri dish -n03924679 photocopier -n03929660 pick, plectrum, plectron -n03929855 pickelhaube -n03930313 picket fence, paling -n03930630 pickup, pickup truck -n03933933 pier -n03935335 piggy bank, penny bank -n03937543 pill bottle -n03938244 pillow -n03942813 ping-pong ball -n03944341 pinwheel -n03947888 pirate, pirate ship -n03950228 pitcher, ewer -n03954731 plane, carpenter's plane, woodworking plane -n03956157 planetarium -n03958227 plastic bag -n03961711 plate rack -n03967562 plow, plough -n03970156 plunger, plumber's helper -n03976467 Polaroid camera, Polaroid Land camera -n03976657 pole -n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria -n03980874 poncho -n03982430 pool table, billiard table, snooker table -n03983396 pop bottle, soda bottle -n03991062 pot, flowerpot -n03992509 potter's wheel -n03995372 power drill -n03998194 prayer rug, prayer mat -n04004767 printer -n04005630 prison, prison house -n04008634 projectile, missile -n04009552 projector -n04019541 puck, hockey puck -n04023962 punching bag, punch bag, punching ball, punchball -n04026417 purse -n04033901 quill, quill pen -n04033995 quilt, comforter, comfort, puff -n04037443 racer, race car, racing car -n04039381 racket, racquet -n04040759 radiator -n04041544 radio, wireless -n04044716 radio telescope, radio reflector -n04049303 rain barrel -n04065272 recreational vehicle, RV, R.V. -n04067472 reel -n04069434 reflex camera -n04070727 refrigerator, icebox -n04074963 remote control, remote -n04081281 restaurant, eating house, eating place, eatery -n04086273 revolver, six-gun, six-shooter -n04090263 rifle -n04099969 rocking chair, rocker -n04111531 rotisserie -n04116512 rubber eraser, rubber, pencil eraser -n04118538 rugby ball -n04118776 rule, ruler -n04120489 running shoe -n04125021 safe -n04127249 safety pin -n04131690 saltshaker, salt shaker -n04133789 sandal -n04136333 sarong -n04141076 sax, saxophone -n04141327 scabbard -n04141975 scale, weighing machine -n04146614 school bus -n04147183 schooner -n04149813 scoreboard -n04152593 screen, CRT screen -n04153751 screw -n04154565 screwdriver -n04162706 seat belt, seatbelt -n04179913 sewing machine -n04192698 shield, buckler -n04200800 shoe shop, shoe-shop, shoe store -n04201297 shoji -n04204238 shopping basket -n04204347 shopping cart -n04208210 shovel -n04209133 shower cap -n04209239 shower curtain -n04228054 ski -n04229816 ski mask -n04235860 sleeping bag -n04238763 slide rule, slipstick -n04239074 sliding door -n04243546 slot, one-armed bandit -n04251144 snorkel -n04252077 snowmobile -n04252225 snowplow, snowplough -n04254120 soap dispenser -n04254680 soccer ball -n04254777 sock -n04258138 solar dish, solar collector, solar furnace -n04259630 sombrero -n04263257 soup bowl -n04264628 space bar -n04265275 space heater -n04266014 space shuttle -n04270147 spatula -n04273569 speedboat -n04275548 spider web, spider's web -n04277352 spindle -n04285008 sports car, sport car -n04286575 spotlight, spot -n04296562 stage -n04310018 steam locomotive -n04311004 steel arch bridge -n04311174 steel drum -n04317175 stethoscope -n04325704 stole -n04326547 stone wall -n04328186 stopwatch, stop watch -n04330267 stove -n04332243 strainer -n04335435 streetcar, tram, tramcar, trolley, trolley car -n04336792 stretcher -n04344873 studio couch, day bed -n04346328 stupa, tope -n04347754 submarine, pigboat, sub, U-boat -n04350905 suit, suit of clothes -n04355338 sundial -n04355933 sunglass -n04356056 sunglasses, dark glasses, shades -n04357314 sunscreen, sunblock, sun blocker -n04366367 suspension bridge -n04367480 swab, swob, mop -n04370456 sweatshirt -n04371430 swimming trunks, bathing trunks -n04371774 swing -n04372370 switch, electric switch, electrical switch -n04376876 syringe -n04380533 table lamp -n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle -n04392985 tape player -n04398044 teapot -n04399382 teddy, teddy bear -n04404412 television, television system -n04409515 tennis ball -n04417672 thatch, thatched roof -n04418357 theater curtain, theatre curtain -n04423845 thimble -n04428191 thresher, thrasher, threshing machine -n04429376 throne -n04435653 tile roof -n04442312 toaster -n04443257 tobacco shop, tobacconist shop, tobacconist -n04447861 toilet seat -n04456115 torch -n04458633 totem pole -n04461696 tow truck, tow car, wrecker -n04462240 toyshop -n04465501 tractor -n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi -n04476259 tray -n04479046 trench coat -n04482393 tricycle, trike, velocipede -n04483307 trimaran -n04485082 tripod -n04486054 triumphal arch -n04487081 trolleybus, trolley coach, trackless trolley -n04487394 trombone -n04493381 tub, vat -n04501370 turnstile -n04505470 typewriter keyboard -n04507155 umbrella -n04509417 unicycle, monocycle -n04515003 upright, upright piano -n04517823 vacuum, vacuum cleaner -n04522168 vase -n04523525 vault -n04525038 velvet -n04525305 vending machine -n04532106 vestment -n04532670 viaduct -n04536866 violin, fiddle -n04540053 volleyball -n04542943 waffle iron -n04548280 wall clock -n04548362 wallet, billfold, notecase, pocketbook -n04550184 wardrobe, closet, press -n04552348 warplane, military plane -n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin -n04554684 washer, automatic washer, washing machine -n04557648 water bottle -n04560804 water jug -n04562935 water tower -n04579145 whiskey jug -n04579432 whistle -n04584207 wig -n04589890 window screen -n04590129 window shade -n04591157 Windsor tie -n04591713 wine bottle -n04592741 wing -n04596742 wok -n04597913 wooden spoon -n04599235 wool, woolen, woollen -n04604644 worm fence, snake fence, snake-rail fence, Virginia fence -n04606251 wreck -n04612504 yawl -n04613696 yurt -n06359193 web site, website, internet site, site -n06596364 comic book -n06785654 crossword puzzle, crossword -n06794110 street sign -n06874185 traffic light, traffic signal, stoplight -n07248320 book jacket, dust cover, dust jacket, dust wrapper -n07565083 menu -n07579787 plate -n07583066 guacamole -n07584110 consomme -n07590611 hot pot, hotpot -n07613480 trifle -n07614500 ice cream, icecream -n07615774 ice lolly, lolly, lollipop, popsicle -n07684084 French loaf -n07693725 bagel, beigel -n07695742 pretzel -n07697313 cheeseburger -n07697537 hotdog, hot dog, red hot -n07711569 mashed potato -n07714571 head cabbage -n07714990 broccoli -n07715103 cauliflower -n07716358 zucchini, courgette -n07716906 spaghetti squash -n07717410 acorn squash -n07717556 butternut squash -n07718472 cucumber, cuke -n07718747 artichoke, globe artichoke -n07720875 bell pepper -n07730033 cardoon -n07734744 mushroom -n07742313 Granny Smith -n07745940 strawberry -n07747607 orange -n07749582 lemon -n07753113 fig -n07753275 pineapple, ananas -n07753592 banana -n07754684 jackfruit, jak, jack -n07760859 custard apple -n07768694 pomegranate -n07802026 hay -n07831146 carbonara -n07836838 chocolate sauce, chocolate syrup -n07860988 dough -n07871810 meat loaf, meatloaf -n07873807 pizza, pizza pie -n07875152 potpie -n07880968 burrito -n07892512 red wine -n07920052 espresso -n07930864 cup -n07932039 eggnog -n09193705 alp -n09229709 bubble -n09246464 cliff, drop, drop-off -n09256479 coral reef -n09288635 geyser -n09332890 lakeside, lakeshore -n09399592 promontory, headland, head, foreland -n09421951 sandbar, sand bar -n09428293 seashore, coast, seacoast, sea-coast -n09468604 valley, vale -n09472597 volcano -n09835506 ballplayer, baseball player -n10148035 groom, bridegroom -n10565667 scuba diver -n11879895 rapeseed -n11939491 daisy -n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum -n12144580 corn -n12267677 acorn -n12620546 hip, rose hip, rosehip -n12768682 buckeye, horse chestnut, conker -n12985857 coral fungus -n12998815 agaric -n13037406 gyromitra -n13040303 stinkhorn, carrion fungus -n13044778 earthstar -n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa -n13054560 bolete -n13133613 ear, spike, capitulum -n15075141 toilet tissue, toilet paper, bathroom tissue diff --git a/SamplesCore/FilePath.cs b/SamplesCore/FilePath.cs deleted file mode 100644 index 7e4713f..0000000 --- a/SamplesCore/FilePath.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace SamplesCore -{ - /// - /// Paths - /// - internal static class FilePath - { - public static class Image - { - public const string Lenna = "Data/Image/lenna.png"; - public const string Girl = "Data/Image/Girl.bmp"; - public const string Goryokaku = "Data/Image/goryokaku.jpg"; - public const string Fruits = "Data/Image/fruits.jpg"; - public const string TsukubaLeft = "Data/Image/tsukuba_left.png"; - public const string TsukubaRight = "Data/Image/tsukuba_right.png"; - public const string Shapes = "Data/Image/shapes.png"; - public const string Asahiyama = "Data/Image/asahiyama.jpg"; - } - - public static class Movie - { - public const string Bach = "Data/Movie/bach.mp4"; - } - } -} diff --git a/SamplesCore/ISample.cs b/SamplesCore/ISample.cs deleted file mode 100644 index dc441be..0000000 --- a/SamplesCore/ISample.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace SamplesCore -{ - interface ISample - { - void Run(); - } -} diff --git a/SamplesCore/Program.cs b/SamplesCore/Program.cs index f7957ba..aece8bf 100644 --- a/SamplesCore/Program.cs +++ b/SamplesCore/Program.cs @@ -1,32 +1,65 @@ -using System; -using SamplesCS; +using SampleBase.Interfaces; +using System; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +public static class Program { - public class Program + [STAThread] + public static void Main() { - [STAThread] - public static void Main(string[] args) - { - ISample sample = - //new CaffeSample(); - new ClaheSample(); - //new ConnectedComponentsSample(); - //new HOGSample(); - //new HoughLinesSample(); - //new MatOperations(); - //new MatToWriteableBitmap(); - //new NormalArrayOperations(); - //new PhotoMethods(); - //new MorphologySample(); - //new PixelAccess(); - //new SolveEquation(); - //new Subdiv2DSample(); - //new SVMSample(); - //new VideoWriterSample(); - //new VideoCaptureSample(); + Console.WriteLine("Runtime Version = {0}", Environment.Version); + + ITestManager testManager = new ConsoleTestManager(); + + testManager.AddTests( + new ArucoSample(), + new BgSubtractorMOG(), + new BinarizerSample(), + new BRISKSample(), + new CaffeSample(), + new CameraCaptureSample(), + new ClaheSample(), + new ConnectedComponentsSample(), + new DFT(), + new DnnSuperresSample(), + new DrawBestMatchRectangle(), + new FaceDetection(), + new FaceDetectionDNN(), + new FASTSample(), + new FlannSample(), + new FREAKSample(), + new HandPose(), + new HistSample(), + new HOGSample(), + new HoughLinesSample(), + new InpaintSample(), + new KAZESample(), + new KAZESample2(), + new MatOperations(), + new MDS(), + new MergeSplitSample(), + new MorphologySample(), + new MSERSample(), + new NormalArrayOperations(), + new OpenVinoFaceDetection(), + new PhotoMethods(), + new PixelAccess(), + new Pose(), + new SeamlessClone(), + new SiftSurfSample(), + new SimpleBlobDetectorSample(), + new SolveEquation(), + new StarDetectorSample(), + new Stitching(), + new Subdiv2DSample(), + new SuperResolutionSample(), + new SVMSample(), + new VideoWriterSample(), + new VideoCaptureSample(), + new WatershedSample()); - sample.Run(); - } + testManager.ShowTestEntrance(); } } diff --git a/SamplesCore/Properties/AssemblyInfo.cs b/SamplesCore/Properties/AssemblyInfo.cs index 338cf2a..4884fc4 100644 --- a/SamplesCore/Properties/AssemblyInfo.cs +++ b/SamplesCore/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/SamplesCore/Samples/ArucoSample.cs b/SamplesCore/Samples/ArucoSample.cs new file mode 100644 index 0000000..7b3a581 --- /dev/null +++ b/SamplesCore/Samples/ArucoSample.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using OpenCvSharp; +using OpenCvSharp.Aruco; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +public class ArucoSample : ConsoleTestBase +{ + public override void RunTest() + { + // The locations of the markers in the image at FilePath.Image.Aruco. + const int upperLeftMarkerId = 160; + const int upperRightMarkerId = 268; + const int lowerRightMarkerId = 176; + const int lowerLeftMarkerId = 168; + + using var src = Cv2.ImRead(ImagePath.Aruco); + + var detectorParameters = new DetectorParameters(); + detectorParameters.CornerRefinementMethod = CornerRefineMethod.Subpix; + detectorParameters.CornerRefinementWinSize = 9; + + using var dictionary = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict4X4_1000); + + CvAruco.DetectMarkers(src, dictionary, out var corners, out var ids, detectorParameters, out var rejectedPoints); + + using var detectedMarkers = src.Clone(); + CvAruco.DrawDetectedMarkers(detectedMarkers, corners, ids, Scalar.Crimson); + + // Find the index of the four markers in the ids array. We'll use this same index into the + // corners array to find the corners of each marker. + var upperLeftCornerIndex = Array.FindIndex(ids, id => id == upperLeftMarkerId); + var upperRightCornerIndex = Array.FindIndex(ids, id => id == upperRightMarkerId); + var lowerRightCornerIndex = Array.FindIndex(ids, id => id == lowerRightMarkerId); + var lowerLeftCornerIndex = Array.FindIndex(ids, id => id == lowerLeftMarkerId); + + // Make sure we found all four markers. + if (upperLeftCornerIndex < 0 || upperRightCornerIndex < 0 + || lowerRightCornerIndex < 0 || lowerLeftCornerIndex < 0) + { + return; + } + + // Marker corners are stored clockwise beginning with the upper-left corner. + // Get the first (upper-left) corner of the upper-left marker. + var upperLeftPixel = corners[upperLeftCornerIndex][0]; + // Get the second (upper-right) corner of the upper-right marker. + var upperRightPixel = corners[upperRightCornerIndex][1]; + // Get the third (lower-right) corner of the lower-right marker. + var lowerRightPixel = corners[lowerRightCornerIndex][2]; + // Get the fourth (lower-left) corner of the lower-left marker. + var lowerLeftPixel = corners[lowerLeftCornerIndex][3]; + + // Create coordinates for passing to GetPerspectiveTransform + var sourceCoordinates = new List + { + upperLeftPixel, upperRightPixel, lowerRightPixel, lowerLeftPixel + }; + var destinationCoordinates = new List + { + new Point2f(0, 0), + new Point2f(1024, 0), + new Point2f(1024, 1024), + new Point2f(0, 1024), + }; + + using var transform = Cv2.GetPerspectiveTransform(sourceCoordinates, destinationCoordinates); + using var normalizedImage = new Mat(); + Cv2.WarpPerspective(src, normalizedImage, transform, new Size(1024, 1024)); + + using var _1 = new Window("Original Image", src, WindowFlags.AutoSize); + using var _2 = new Window($"Found {ids.Length} Markers", detectedMarkers); + using var _3 = new Window("Normalized Image", normalizedImage); + + Cv2.WaitKey(); + } +} diff --git a/SamplesCore/Samples/BRISKSample.cs b/SamplesCore/Samples/BRISKSample.cs new file mode 100644 index 0000000..77a883c --- /dev/null +++ b/SamplesCore/Samples/BRISKSample.cs @@ -0,0 +1,43 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Retrieves keypoints using the BRISK algorithm. +/// +class BRISKSample : ConsoleTestBase +{ + public override void RunTest() + { + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); + + using var brisk = BRISK.Create(); + KeyPoint[] keypoints = brisk.Detect(gray); + + if (keypoints != null) + { + var color = new Scalar(0, 255, 0); + foreach (KeyPoint kpt in keypoints) + { + float r = kpt.Size / 2; + Cv2.Circle(dst, (Point)kpt.Pt, (int)r, color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y - r), + color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y - r), + color); + } + } + + using (new Window("BRISK features", dst)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/BgSubtractorMOG.cs b/SamplesCore/Samples/BgSubtractorMOG.cs new file mode 100644 index 0000000..0a8bbee --- /dev/null +++ b/SamplesCore/Samples/BgSubtractorMOG.cs @@ -0,0 +1,30 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +class BgSubtractorMOG : ConsoleTestBase +{ + public override void RunTest() + { + using var capture = new VideoCapture(MoviePath.Bach); + using var mog = BackgroundSubtractorMOG.Create(); + using var windowSrc = new Window("src"); + using var windowDst = new Window("dst"); + + using var frame = new Mat(); + using var fg = new Mat(); + while (true) + { + capture.Read(frame); + if (frame.Empty()) + break; + mog.Apply(frame, fg, 0.01); + + windowSrc.Image = frame; + windowDst.Image = fg; + Cv2.WaitKey(50); + } + } +} diff --git a/SamplesCore/Samples/BinarizerSample.cs b/SamplesCore/Samples/BinarizerSample.cs new file mode 100644 index 0000000..2b5669e --- /dev/null +++ b/SamplesCore/Samples/BinarizerSample.cs @@ -0,0 +1,44 @@ +using System; +using System.Diagnostics; +using OpenCvSharp; +using OpenCvSharp.XImgProc; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +internal class BinarizerSample : ConsoleTestBase +{ + public override void RunTest() + { + using var src = Cv2.ImRead(ImagePath.Binarization, ImreadModes.Grayscale); + using var niblack = new Mat(); + using var sauvola = new Mat(); + using var nick = new Mat(); + int kernelSize = 51; + + var sw = new Stopwatch(); + sw.Start(); + CvXImgProc.NiblackThreshold(src, niblack, 255, ThresholdTypes.Binary, kernelSize, -0.2, LocalBinarizationMethods.Niblack); + sw.Stop(); + Console.WriteLine($"Niblack {sw.ElapsedMilliseconds} ms"); + + sw.Restart(); + CvXImgProc.NiblackThreshold(src, sauvola, 255, ThresholdTypes.Binary, kernelSize, 0.1, LocalBinarizationMethods.Sauvola); + sw.Stop(); + Console.WriteLine($"Sauvola {sw.ElapsedMilliseconds} ms"); + + sw.Restart(); + CvXImgProc.NiblackThreshold(src, nick, 255, ThresholdTypes.Binary, kernelSize, -0.14, LocalBinarizationMethods.Nick); + sw.Stop(); + Console.WriteLine($"Nick {sw.ElapsedMilliseconds} ms"); + + using (new Window("src", src, WindowFlags.AutoSize)) + using (new Window("Niblack", niblack, WindowFlags.AutoSize)) + using (new Window("Sauvola", sauvola, WindowFlags.AutoSize)) + using (new Window("Nick", nick, WindowFlags.AutoSize)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/CaffeSample.cs b/SamplesCore/Samples/CaffeSample.cs index 938ba70..9809f3d 100644 --- a/SamplesCore/Samples/CaffeSample.cs +++ b/SamplesCore/Samples/CaffeSample.cs @@ -1,91 +1,86 @@ using System; using System.IO; using System.Linq; -using System.Net; +using System.Net.Http; using OpenCvSharp; using OpenCvSharp.Dnn; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// https://docs.opencv.org/3.3.0/d5/de7/tutorial_dnn_googlenet.html +/// +class CaffeSample : ConsoleTestBase { - /// - /// https://docs.opencv.org/3.3.0/d5/de7/tutorial_dnn_googlenet.html - /// - class CaffeSample : ISample + private static readonly HttpClient httpClient = new() { Timeout = TimeSpan.FromMinutes(10) }; + + public override void RunTest() { - public void Run() - { - const string protoTxt = @"Data\Text\bvlc_googlenet.prototxt"; - const string caffeModel = "bvlc_googlenet.caffemodel"; - const string synsetWords = @"Data\Text\synset_words.txt"; - var classNames = File.ReadAllLines(synsetWords) - .Select(line => line.Split(' ').Last()) - .ToArray(); + const string protoTxt = @"Data\Text\bvlc_googlenet.prototxt"; + const string caffeModel = "bvlc_googlenet.caffemodel"; + const string synsetWords = @"Data\Text\synset_words.txt"; + var classNames = File.ReadAllLines(synsetWords) + .Select(line => line.Split(' ').Last()) + .ToArray(); - Console.Write("Downloading Caffe Model..."); - PrepareModel(caffeModel); - Console.WriteLine(" Done"); + Console.Write("Downloading Caffe Model..."); + PrepareModel(caffeModel); + Console.WriteLine(" Done"); - using (var net = CvDnn.ReadNetFromCaffe(protoTxt, caffeModel)) - using (var img = new Mat(@"Data\Image\space_shuttle.jpg")) - { - Console.WriteLine("Layer names: {0}", string.Join(", ", net.GetLayerNames())); - Console.WriteLine(); + using var net = CvDnn.ReadNetFromCaffe(protoTxt, caffeModel); + using var img = new Mat(@"Data\Image\space_shuttle.jpg"); + Console.WriteLine("Layer names: {0}", string.Join(", ", net.GetLayerNames())); + Console.WriteLine(); - // Convert Mat to batch of images - using (var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123))) - { - net.SetInput(inputBlob, "data"); - using (var prob = net.Forward("prob")) - { - // find the best class - GetMaxClass(prob, out int classId, out double classProb); - Console.WriteLine("Best class: #{0} '{1}'", classId, classNames[classId]); - Console.WriteLine("Probability: {0:P2}", classProb); + // Convert Mat to batch of images + using var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123)); + net.SetInput(inputBlob, "data"); + using var prob = net.Forward("prob"); + // find the best class + GetMaxClass(prob, out int classId, out double classProb); + Console.WriteLine("Best class: #{0} '{1}'", classId, classNames[classId]); + Console.WriteLine("Probability: {0:P2}", classProb); - Console.WriteLine("Press any key to exit"); - Console.Read(); - } - } - } - } + Console.WriteLine("Press any key to exit"); + Console.Read(); + } - private static byte[] DownloadBytes(string url) - { - var client = WebRequest.CreateHttp(url); - using (var response = client.GetResponseAsync().GetAwaiter().GetResult()) - using (var responseStream = response.GetResponseStream()) - { - using (var memory = new MemoryStream()) - { - responseStream.CopyTo(memory); - return memory.ToArray(); - } - } - } + private static byte[] DownloadBytes(string url) + { + using var httpRequest = new HttpRequestMessage(HttpMethod.Get, url); +#if NETFRAMEWORK + using var response = httpClient.SendAsync(httpRequest).Result.EnsureSuccessStatusCode(); + using var responseStream = response.Content.ReadAsStreamAsync().Result; +#else + using var response = httpClient.Send(httpRequest).EnsureSuccessStatusCode(); + using var responseStream = response.Content.ReadAsStream(); +#endif + using var memory = new MemoryStream(); + responseStream.CopyTo(memory); + return memory.ToArray(); + } - private static void PrepareModel(string fileName) + private static void PrepareModel(string fileName) + { + if (!File.Exists(fileName)) { - if (!File.Exists(fileName)) - { - var contents = DownloadBytes("http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel"); - File.WriteAllBytes(fileName, contents); - } + var contents = DownloadBytes("http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel"); + File.WriteAllBytes(fileName, contents); } + } - /// - /// Find best class for the blob (i. e. class with maximal probability) - /// - /// - /// - /// - private static void GetMaxClass(Mat probBlob, out int classId, out double classProb) - { - // reshape the blob to 1x1000 matrix - using (var probMat = probBlob.Reshape(1, 1)) - { - Cv2.MinMaxLoc(probMat, out _, out classProb, out _, out var classNumber); - classId = classNumber.X; - } - } + /// + /// Find best class for the blob (i. e. class with maximal probability) + /// + /// + /// + /// + private static void GetMaxClass(Mat probBlob, out int classId, out double classProb) + { + // reshape the blob to 1x1000 matrix + using var probMat = probBlob.Reshape(1, 1); + Cv2.MinMaxLoc(probMat, out _, out classProb, out _, out var classNumber); + classId = classNumber.X; } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/CameraCaptureSample.cs b/SamplesCore/Samples/CameraCaptureSample.cs new file mode 100644 index 0000000..03145d7 --- /dev/null +++ b/SamplesCore/Samples/CameraCaptureSample.cs @@ -0,0 +1,40 @@ +using OpenCvSharp; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// +/// +class CameraCaptureSample : ConsoleTestBase +{ + public override void RunTest() + { + using var capture = new VideoCapture(0, VideoCaptureAPIs.DSHOW); + if (!capture.IsOpened()) + return; + + capture.FrameWidth = 1920; + capture.FrameHeight = 1280; + capture.AutoFocus = true; + + const int sleepTime = 10; + + using var window = new Window("capture"); + var image = new Mat(); + + while (true) + { + capture.Read(image); + if (image.Empty()) + break; + + window.ShowImage(image); + int c = Cv2.WaitKey(sleepTime); + if (c >= 0) + { + break; + } + } + } +} diff --git a/SamplesCore/Samples/ClaheSample.cs b/SamplesCore/Samples/ClaheSample.cs index 4ee3180..455f938 100644 --- a/SamplesCore/Samples/ClaheSample.cs +++ b/SamplesCore/Samples/ClaheSample.cs @@ -1,29 +1,30 @@ using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +class ClaheSample : ConsoleTestBase { - class ClaheSample : ISample + public override void RunTest() { - public void Run() - { - using var src = new Mat(FilePath.Image.TsukubaLeft, ImreadModes.Grayscale); - using var dst1 = new Mat(); - using var dst2 = new Mat(); - using var dst3 = new Mat(); - - using (var clahe = Cv2.CreateCLAHE()) - { - clahe.ClipLimit = 20; - clahe.Apply(src, dst1); - clahe.ClipLimit = 40; - clahe.Apply(src, dst2); - clahe.TilesGridSize = new Size(4, 4); - clahe.Apply(src, dst3); - } + using var src = new Mat(ImagePath.TsukubaLeft, ImreadModes.Grayscale); + using var dst1 = new Mat(); + using var dst2 = new Mat(); + using var dst3 = new Mat(); - Window.ShowImages( - new[]{src, dst1, dst2, dst3}, - new[]{"src", "dst clip20", "dst clip40", "dst tile4x4"}); + using (var clahe = Cv2.CreateCLAHE()) + { + clahe.ClipLimit = 20; + clahe.Apply(src, dst1); + clahe.ClipLimit = 40; + clahe.Apply(src, dst2); + clahe.TilesGridSize = new Size(4, 4); + clahe.Apply(src, dst3); } + + Window.ShowImages( + new[] { src, dst1, dst2, dst3 }, + new[] { "src", "dst clip20", "dst clip40", "dst tile4x4" }); } } diff --git a/SamplesCore/Samples/ConnectedComponentsSample.cs b/SamplesCore/Samples/ConnectedComponentsSample.cs index e6afc59..eaeea22 100644 --- a/SamplesCore/Samples/ConnectedComponentsSample.cs +++ b/SamplesCore/Samples/ConnectedComponentsSample.cs @@ -1,47 +1,48 @@ using System.Linq; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class ConnectedComponentsSample : ConsoleTestBase { - /// - /// - /// - class ConnectedComponentsSample : ISample + public override void RunTest() { - public void Run() - { - using var src = new Mat(FilePath.Image.Shapes, ImreadModes.Color); - using var gray = src.CvtColor(ColorConversionCodes.BGR2GRAY); - using var binary = gray.Threshold(0, 255, ThresholdTypes.Otsu | ThresholdTypes.Binary); - using var labelView = src.EmptyClone(); - using var rectView = binary.CvtColor(ColorConversionCodes.GRAY2BGR); + using var src = new Mat(ImagePath.Shapes, ImreadModes.Color); + using var gray = src.CvtColor(ColorConversionCodes.BGR2GRAY); + using var binary = gray.Threshold(0, 255, ThresholdTypes.Otsu | ThresholdTypes.Binary); + using var labelView = src.EmptyClone(); + using var rectView = binary.CvtColor(ColorConversionCodes.GRAY2BGR); - var cc = Cv2.ConnectedComponentsEx(binary); - if (cc.LabelCount <= 1) - return; + var cc = Cv2.ConnectedComponentsEx(binary); + if (cc.LabelCount <= 1) + return; - // draw labels - cc.RenderBlobs(labelView); + // draw labels + cc.RenderBlobs(labelView); - // draw bonding boxes except background - foreach (var blob in cc.Blobs.Skip(1)) - { - rectView.Rectangle(blob.Rect, Scalar.Red); - } + // draw bonding boxes except background + foreach (var blob in cc.Blobs.Skip(1)) + { + rectView.Rectangle(blob.Rect, Scalar.Red); + } - // filter maximum blob - var maxBlob = cc.GetLargestBlob(); - var filtered = new Mat(); - cc.FilterByBlob(src, filtered, maxBlob); + // filter maximum blob + var maxBlob = cc.GetLargestBlob(); + var filtered = new Mat(); + cc.FilterByBlob(src, filtered, maxBlob); - using (new Window("src", src)) - using (new Window("binary", binary)) - using (new Window("labels", labelView)) - using (new Window("bonding boxes", rectView)) - using (new Window("maximum blob", filtered)) - { - Cv2.WaitKey(); - } + using (new Window("src", src)) + using (new Window("binary", binary)) + using (new Window("labels", labelView)) + using (new Window("bonding boxes", rectView)) + using (new Window("maximum blob", filtered)) + { + Cv2.WaitKey(); } } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/DFT.cs b/SamplesCore/Samples/DFT.cs new file mode 100644 index 0000000..a77d4e4 --- /dev/null +++ b/SamplesCore/Samples/DFT.cs @@ -0,0 +1,87 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// DFT, inverse DFT +/// http://stackoverflow.com/questions/19761526/how-to-do-inverse-dft-in-opencv +/// +class DFT : ConsoleTestBase +{ + public override void RunTest() + { + using var img = Cv2.ImRead(ImagePath.Lenna, ImreadModes.Grayscale); + + // expand input image to optimal size + using var padded = new Mat(); + int m = Cv2.GetOptimalDFTSize(img.Rows); + int n = Cv2.GetOptimalDFTSize(img.Cols); // on the border add zero values + Cv2.CopyMakeBorder(img, padded, 0, m - img.Rows, 0, n - img.Cols, BorderTypes.Constant, Scalar.All(0)); + + // Add to the expanded another plane with zeros + using var paddedF32 = new Mat(); + padded.ConvertTo(paddedF32, MatType.CV_32F); + Mat[] planes = { paddedF32, Mat.Zeros(padded.Size(), MatType.CV_32F) }; + using var complex = new Mat(); + Cv2.Merge(planes, complex); + + // this way the result may fit in the source matrix + using var dft = new Mat(); + Cv2.Dft(complex, dft); + + // compute the magnitude and switch to logarithmic scale + // => log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)) + Cv2.Split(dft, out var dftPlanes); // planes[0] = Re(DFT(I), planes[1] = Im(DFT(I)) + + // planes[0] = magnitude + using var magnitude = new Mat(); + Cv2.Magnitude(dftPlanes[0], dftPlanes[1], magnitude); + + using Mat magnitude1 = magnitude + Scalar.All(1); // switch to logarithmic scale + Cv2.Log(magnitude1, magnitude1); + + // crop the spectrum, if it has an odd number of rows or columns + using var spectrum = magnitude1[ + new Rect(0, 0, magnitude1.Cols & -2, magnitude1.Rows & -2)]; + + // rearrange the quadrants of Fourier image so that the origin is at the image center + int cx = spectrum.Cols / 2; + int cy = spectrum.Rows / 2; + + using var q0 = new Mat(spectrum, new Rect(0, 0, cx, cy)); // Top-Left - Create a ROI per quadrant + using var q1 = new Mat(spectrum, new Rect(cx, 0, cx, cy)); // Top-Right + using var q2 = new Mat(spectrum, new Rect(0, cy, cx, cy)); // Bottom-Left + using var q3 = new Mat(spectrum, new Rect(cx, cy, cx, cy)); // Bottom-Right + + // swap quadrants (Top-Left with Bottom-Right) + using var tmp = new Mat(); + q0.CopyTo(tmp); + q3.CopyTo(q0); + tmp.CopyTo(q3); + + // swap quadrant (Top-Right with Bottom-Left) + q1.CopyTo(tmp); + q2.CopyTo(q1); + tmp.CopyTo(q2); + + // Transform the matrix with float values into a + Cv2.Normalize(spectrum, spectrum, 0, 255, NormTypes.MinMax); + spectrum.ConvertTo(spectrum, MatType.CV_8U); + + // Show the result + Cv2.ImShow("Input Image", img); + Cv2.ImShow("Spectrum Magnitude", spectrum); + + // calculating the idft + using var inverseTransform = new Mat(); + Cv2.Dft(dft, inverseTransform, DftFlags.Inverse | DftFlags.RealOutput); + Cv2.Normalize(inverseTransform, inverseTransform, 0, 255, NormTypes.MinMax); + inverseTransform.ConvertTo(inverseTransform, MatType.CV_8U); + + Cv2.ImShow("Reconstructed by Inverse DFT", inverseTransform); + Cv2.WaitKey(); + Cv2.DestroyAllWindows(); + } +} diff --git a/SamplesCore/Samples/DnnSuperresSample.cs b/SamplesCore/Samples/DnnSuperresSample.cs new file mode 100644 index 0000000..09b43ac --- /dev/null +++ b/SamplesCore/Samples/DnnSuperresSample.cs @@ -0,0 +1,26 @@ +using OpenCvSharp; +using OpenCvSharp.DnnSuperres; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +class DnnSuperresSample : ConsoleTestBase +{ + // https://github.com/Saafke/FSRCNN_Tensorflow/tree/master/models + private const string ModelFileName = "Data/Model/FSRCNN_x4.pb"; + + public override void RunTest() + { + using var dnn = new DnnSuperResImpl("fsrcnn", 4); + dnn.ReadModel(ModelFileName); + + using var src = new Mat(ImagePath.Mandrill, ImreadModes.Color); + using var dst = new Mat(); + dnn.Upsample(src, dst); + + Window.ShowImages( + new[] { src, dst }, + new[] { "src", "dst0" }); + } +} diff --git a/SamplesCore/Samples/DrawBestMatch.cs b/SamplesCore/Samples/DrawBestMatch.cs new file mode 100644 index 0000000..e63eb1b --- /dev/null +++ b/SamplesCore/Samples/DrawBestMatch.cs @@ -0,0 +1,56 @@ +using System.Linq; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// https://stackoverflow.com/questions/51606215/how-to-draw-bounding-box-on-best-matches/51607041#51607041 +/// +class DrawBestMatchRectangle : ConsoleTestBase +{ + public override void RunTest() + { + using var img1 = new Mat(ImagePath.Match1, ImreadModes.Color); + using var img2 = new Mat(ImagePath.Match2, ImreadModes.Color); + + using var orb = ORB.Create(1000); + using var descriptors1 = new Mat(); + using var descriptors2 = new Mat(); + orb.DetectAndCompute(img1, null, out var keyPoints1, descriptors1); + orb.DetectAndCompute(img2, null, out var keyPoints2, descriptors2); + + using var bf = new BFMatcher(NormTypes.Hamming, crossCheck: true); + var matches = bf.Match(descriptors1, descriptors2); + + var goodMatches = matches + .OrderBy(x => x.Distance) + .Take(10) + .ToArray(); + + var srcPts = goodMatches.Select(m => keyPoints1[m.QueryIdx].Pt).Select(p => new Point2d(p.X, p.Y)); + var dstPts = goodMatches.Select(m => keyPoints2[m.TrainIdx].Pt).Select(p => new Point2d(p.X, p.Y)); + + using var homography = Cv2.FindHomography(srcPts, dstPts, HomographyMethods.Ransac, 5, null); + + int h = img1.Height, w = img1.Width; + var img2Bounds = new[] + { + new Point2d(0, 0), + new Point2d(0, h-1), + new Point2d(w-1, h-1), + new Point2d(w-1, 0), + }; + var img2BoundsTransformed = Cv2.PerspectiveTransform(img2Bounds, homography); + + using var view = img2.Clone(); + var drawingPoints = img2BoundsTransformed.Select(p => (Point)p).ToArray(); + Cv2.Polylines(view, new[] { drawingPoints }, true, Scalar.Red, 3); + + using (new Window("view", view)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/FASTSample.cs b/SamplesCore/Samples/FASTSample.cs new file mode 100644 index 0000000..efb100c --- /dev/null +++ b/SamplesCore/Samples/FASTSample.cs @@ -0,0 +1,30 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// cv::FAST +/// +class FASTSample : ConsoleTestBase +{ + public override void RunTest() + { + using Mat imgSrc = new Mat(ImagePath.Lenna, ImreadModes.Color); + using Mat imgGray = new Mat(); + using Mat imgDst = imgSrc.Clone(); + Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY, 0); + + KeyPoint[] keypoints = Cv2.FAST(imgGray, 50, true); + + foreach (KeyPoint kp in keypoints) + { + imgDst.Circle((Point)kp.Pt, 3, Scalar.Red, -1, LineTypes.AntiAlias, 0); + } + + Cv2.ImShow("FAST", imgDst); + Cv2.WaitKey(0); + Cv2.DestroyAllWindows(); + } +} diff --git a/SamplesCore/Samples/FREAKSample.cs b/SamplesCore/Samples/FREAKSample.cs new file mode 100644 index 0000000..5a2c7b7 --- /dev/null +++ b/SamplesCore/Samples/FREAKSample.cs @@ -0,0 +1,50 @@ +using OpenCvSharp; +using OpenCvSharp.XFeatures2D; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Retrieves keypoints using the FREAK algorithm. +/// +class FREAKSample : ConsoleTestBase +{ + public override void RunTest() + { + using var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + using var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); + + // ORB + using var orb = ORB.Create(1000); + KeyPoint[] keypoints = orb.Detect(gray); + + // FREAK + using var freak = FREAK.Create(); + Mat freakDescriptors = new Mat(); + freak.Compute(gray, ref keypoints, freakDescriptors); + + if (keypoints != null) + { + var color = new Scalar(0, 255, 0); + foreach (KeyPoint kpt in keypoints) + { + float r = kpt.Size / 2; + Cv2.Circle(dst, (Point)kpt.Pt, (int)r, color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y - r), + color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y - r), + color); + } + } + + using (new Window("FREAK", dst)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/FaceDetection.cs b/SamplesCore/Samples/FaceDetection.cs new file mode 100644 index 0000000..3ff2ecf --- /dev/null +++ b/SamplesCore/Samples/FaceDetection.cs @@ -0,0 +1,66 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Human face detection +/// http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html +/// +class FaceDetection : ConsoleTestBase +{ + public override void RunTest() + { + // Load the cascades + using var haarCascade = new CascadeClassifier(TextPath.HaarCascade); + using var lbpCascade = new CascadeClassifier(TextPath.LbpCascade); + + // Detect faces + Mat haarResult = DetectFace(haarCascade); + Mat lbpResult = DetectFace(lbpCascade); + + Cv2.ImShow("Faces by Haar", haarResult); + Cv2.ImShow("Faces by LBP", lbpResult); + Cv2.WaitKey(0); + Cv2.DestroyAllWindows(); + } + + /// + /// + /// + /// + /// + private Mat DetectFace(CascadeClassifier cascade) + { + Mat result; + + using (var src = new Mat(ImagePath.Yalta, ImreadModes.Color)) + using (var gray = new Mat()) + { + result = src.Clone(); + Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); + + // Detect faces + Rect[] faces = cascade.DetectMultiScale( + gray, 1.08, 2, HaarDetectionTypes.ScaleImage, new Size(30, 30)); + + // Render all detected faces + foreach (Rect face in faces) + { + var center = new Point + { + X = (int)(face.X + face.Width * 0.5), + Y = (int)(face.Y + face.Height * 0.5) + }; + var axes = new Size + { + Width = (int)(face.Width * 0.5), + Height = (int)(face.Height * 0.5) + }; + Cv2.Ellipse(result, center, axes, 0, 0, 360, new Scalar(255, 0, 255), 4); + } + } + return result; + } +} diff --git a/SamplesCore/Samples/FaceDetectionDNN.cs b/SamplesCore/Samples/FaceDetectionDNN.cs new file mode 100644 index 0000000..5307663 --- /dev/null +++ b/SamplesCore/Samples/FaceDetectionDNN.cs @@ -0,0 +1,47 @@ +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// To run this example first download the face model available here: https://github.com/spmallick/learnopencv/tree/master/FaceDetectionComparison/models +/// Add the files to the bin folder. +/// You should also prepare the input images (faces.jpg) yourself. +/// +internal class FaceDetectionDNN : ConsoleTestBase +{ + const string configFile = "deploy.prototxt"; + const string faceModel = "res10_300x300_ssd_iter_140000_fp16.caffemodel"; + const string image = "faces.jpg"; + + public override void RunTest() + { + // Read sample image + using var frame = Cv2.ImRead(image); + int frameHeight = frame.Rows; + int frameWidth = frame.Cols; + using var faceNet = CvDnn.ReadNetFromCaffe(configFile, faceModel); + using var blob = CvDnn.BlobFromImage(frame, 1.0, new Size(300, 300), new Scalar(104, 117, 123), false, false); + faceNet.SetInput(blob, "data"); + + using var detection = faceNet.Forward("detection_out"); + using var detectionMat = Mat.FromPixelData(detection.Size(2), detection.Size(3), MatType.CV_32F, detection.Ptr(0)); + for (int i = 0; i < detectionMat.Rows; i++) + { + float confidence = detectionMat.At(i, 2); + + if (confidence > 0.7) + { + int x1 = (int)(detectionMat.At(i, 3) * frameWidth); + int y1 = (int)(detectionMat.At(i, 4) * frameHeight); + int x2 = (int)(detectionMat.At(i, 5) * frameWidth); + int y2 = (int)(detectionMat.At(i, 6) * frameHeight); + + Cv2.Rectangle(frame, new Point(x1, y1), new Point(x2, y2), new Scalar(0, 255, 0), 2, LineTypes.Link4); + } + } + + Window.ShowImages(frame); + } +} diff --git a/SamplesCore/Samples/FlannSample.cs b/SamplesCore/Samples/FlannSample.cs new file mode 100644 index 0000000..b863a5c --- /dev/null +++ b/SamplesCore/Samples/FlannSample.cs @@ -0,0 +1,54 @@ +using System; +using OpenCvSharp; +using OpenCvSharp.Flann; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// cv::flann +/// +class FlannSample : ConsoleTestBase +{ + public override void RunTest() + { + Console.WriteLine("===== FlannTest ====="); + + // creates data set + using (var features = new Mat(10000, 2, MatType.CV_32FC1)) + { + var rand = new Random(); + for (int i = 0; i < features.Rows; i++) + { + features.Set(i, 0, rand.Next(10000)); + features.Set(i, 1, rand.Next(10000)); + } + + // query + var queryPoint = new Point2f(7777, 7777); + var queries = new Mat(1, 2, MatType.CV_32FC1); + queries.Set(0, 0, queryPoint.X); + queries.Set(0, 1, queryPoint.Y); + Console.WriteLine("query:({0}, {1})", queryPoint.X, queryPoint.Y); + Console.WriteLine("-----"); + + // knnSearch + using var nnIndex = new OpenCvSharp.Flann.Index(features, new KDTreeIndexParams(4)); + const int Knn = 1; + nnIndex.KnnSearch(queries, out int[] indices, out float[] dists, Knn, new SearchParams(32)); + + for (int i = 0; i < Knn; i++) + { + int index = indices[i]; + float dist = dists[i]; + var pt = new Point2f(features.Get(index, 0), features.Get(index, 1)); + Console.Write("No.{0}\t", i); + Console.Write("index:{0}", index); + Console.Write(" distance:{0}", dist); + Console.Write(" data:({0}, {1})", pt.X, pt.Y); + Console.WriteLine(); + } + } + Console.Read(); + } +} diff --git a/SamplesCore/Samples/HOGSample.cs b/SamplesCore/Samples/HOGSample.cs index 3c7ae93..143d3e1 100644 --- a/SamplesCore/Samples/HOGSample.cs +++ b/SamplesCore/Samples/HOGSample.cs @@ -1,58 +1,57 @@ using System; using System.Diagnostics; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// samples/c/peopledetect.c +/// +internal class HOGSample : ConsoleTestBase { - /// - /// samples/c/peopledetect.c - /// - internal class HOGSample : ISample + public HOGSample() { - public HOGSample() - { - } + } - public void Run() - { - using var img = Cv2.ImRead(FilePath.Image.Asahiyama, ImreadModes.Color); + public override void RunTest() + { + using var img = Cv2.ImRead(ImagePath.Asahiyama, ImreadModes.Color); - using var hog = new HOGDescriptor(); - hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); + using var hog = new HOGDescriptor(); + hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); - bool b = hog.CheckDetectorSize(); - Console.WriteLine("CheckDetectorSize: {0}", b); + bool b = hog.CheckDetectorSize(); + Console.WriteLine("CheckDetectorSize: {0}", b); - var watch = Stopwatch.StartNew(); + var watch = Stopwatch.StartNew(); - // run the detector with default parameters. to get a higher hit-rate - // (and more false alarms, respectively), decrease the hitThreshold and - // groupThreshold (set groupThreshold to 0 to turn off the grouping completely). - Rect[] found = hog.DetectMultiScale(img, 0, new Size(8, 8), new Size(24, 16), 1.05, 2); + // run the detector with default parameters. to get a higher hit-rate + // (and more false alarms, respectively), decrease the hitThreshold and + // groupThreshold (set groupThreshold to 0 to turn off the grouping completely). + Rect[] found = hog.DetectMultiScale(img, 0, new Size(8, 8), new Size(24, 16), 1.05, 2); - watch.Stop(); - Console.WriteLine("Detection time = {0}ms", watch.ElapsedMilliseconds); - Console.WriteLine("{0} region(s) found", found.Length); + watch.Stop(); + Console.WriteLine("Detection time = {0}ms", watch.ElapsedMilliseconds); + Console.WriteLine("{0} region(s) found", found.Length); - foreach (Rect rect in found) - { - // the HOG detector returns slightly larger rectangles than the real objects. - // so we slightly shrink the rectangles to get a nicer output. - var r = new Rect - { - X = rect.X + (int)Math.Round(rect.Width * 0.1), - Y = rect.Y + (int)Math.Round(rect.Height * 0.1), - Width = (int)Math.Round(rect.Width * 0.8), - Height = (int)Math.Round(rect.Height * 0.8) - }; - img.Rectangle(r.TopLeft, r.BottomRight, Scalar.Red, 3); - } - - using (var window = new Window("people detector", WindowMode.Normal, img)) + foreach (Rect rect in found) + { + // the HOG detector returns slightly larger rectangles than the real objects. + // so we slightly shrink the rectangles to get a nicer output. + var r = new Rect { - window.SetProperty(WindowProperty.Fullscreen, 1); - Cv2.WaitKey(0); - } + X = rect.X + (int)Math.Round(rect.Width * 0.1), + Y = rect.Y + (int)Math.Round(rect.Height * 0.1), + Width = (int)Math.Round(rect.Width * 0.8), + Height = (int)Math.Round(rect.Height * 0.8) + }; + img.Rectangle(r.TopLeft, r.BottomRight, Scalar.Red, 3); } + + using var window = new Window("people detector", img, WindowFlags.Normal); + window.SetProperty(WindowPropertyFlags.Fullscreen, 1); + Cv2.WaitKey(0); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/HandPose.cs b/SamplesCore/Samples/HandPose.cs new file mode 100644 index 0000000..031f264 --- /dev/null +++ b/SamplesCore/Samples/HandPose.cs @@ -0,0 +1,91 @@ +using System.Collections.Generic; +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// To run this example first download the hand model available here: http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel +/// Or also available here https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/models +/// Add the files to the bin folder +/// +internal class HandPose : ConsoleTestBase +{ + public override void RunTest() + { + const string model = "pose_iter_102000.caffemodel"; + const string modelTxt = "pose_deploy.prototxt"; + const string sampleImage = "hand.jpg"; + const string outputLoc = "Output_Hand.jpg"; + const int nPoints = 22; + const double thresh = 0.01; + + int[][] posePairs = + { + new[] {0, 1}, new[] {1, 2}, new[] {2, 3}, new[] {3, 4}, //thumb + new[] {0, 5}, new[] {5, 6}, new[] {6, 7}, new[] {7, 8}, //index + new[] {0, 9}, new[] {9, 10}, new[] {10, 11}, new[] {11, 12}, //middle + new[] {0, 13}, new[] {13, 14}, new[] {14, 15}, new[] {15, 16}, //ring + new[] {0, 17}, new[] {17, 18}, new[] {18, 19}, new[] {19, 20}, //small + }; + + using var frame = Cv2.ImRead(sampleImage); + using var frameCopy = frame.Clone(); + int frameWidth = frame.Cols; + int frameHeight = frame.Rows; + + float aspectRatio = frameWidth / (float)frameHeight; + int inHeight = 368; + int inWidth = ((int)(aspectRatio * inHeight) * 8) / 8; + + using var net = CvDnn.ReadNetFromCaffe(modelTxt, model); + using var inpBlob = CvDnn.BlobFromImage(frame, 1.0 / 255, new Size(inWidth, inHeight), + new Scalar(0, 0, 0), false, false); + + net.SetInput(inpBlob); + + using var output = net.Forward(); + int H = output.Size(2); + int W = output.Size(3); + + var points = new List(); + + for (int n = 0; n < nPoints; n++) + { + // Probability map of corresponding body's part. + using var probMap = Mat.FromPixelData(H, W, MatType.CV_32F, output.Ptr(0, n)); + Cv2.Resize(probMap, probMap, new Size(frameWidth, frameHeight)); + Cv2.MinMaxLoc(probMap, out _, out var maxVal, out _, out var maxLoc); + + if (maxVal > thresh) + { + Cv2.Circle(frameCopy, maxLoc.X, maxLoc.Y, 8, new Scalar(0, 255, 255), -1, + LineTypes.Link8); + Cv2.PutText(frameCopy, Cv2.Format(n), new OpenCvSharp.Point(maxLoc.X, maxLoc.Y), + HersheyFonts.HersheyComplex, 1, new Scalar(0, 0, 255), 2, LineTypes.AntiAlias); + } + + points.Add(maxLoc); + } + + int nPairs = 20; //(POSE_PAIRS).Length / POSE_PAIRS[0].Length; + + for (int n = 0; n < nPairs; n++) + { + // lookup 2 connected body/hand parts + Point partA = points[posePairs[n][0]]; + Point partB = points[posePairs[n][1]]; + + if (partA.X <= 0 || partA.Y <= 0 || partB.X <= 0 || partB.Y <= 0) + continue; + + Cv2.Line(frame, partA, partB, new Scalar(0, 255, 255), 8); + Cv2.Circle(frame, partA.X, partA.Y, 8, new Scalar(0, 0, 255), -1); + Cv2.Circle(frame, partB.X, partB.Y, 8, new Scalar(0, 0, 255), -1); + } + + var finalOutput = outputLoc; + Cv2.ImWrite(finalOutput, frame); + } +} diff --git a/SamplesCore/Samples/HistSample.cs b/SamplesCore/Samples/HistSample.cs new file mode 100644 index 0000000..feda067 --- /dev/null +++ b/SamplesCore/Samples/HistSample.cs @@ -0,0 +1,56 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Histogram sample +/// http://book.mynavi.jp/support/pc/opencv2/c3/opencv_img.html +/// +class HistSample : ConsoleTestBase +{ + public override void RunTest() + { + using var src = Cv2.ImRead(ImagePath.Lenna, ImreadModes.Grayscale); + + // Histogram view + const int Width = 260, Height = 200; + using var render = new Mat(new Size(Width, Height), MatType.CV_8UC3, Scalar.All(255)); + + // Calculate histogram + var hist = new Mat(); + int[] hdims = { 256 }; // Histogram size for each dimension + Rangef[] ranges = { new Rangef(0, 256), }; // min/max + Cv2.CalcHist( + new Mat[] { src }, + new int[] { 0 }, + null, + hist, + 1, + hdims, + ranges); + + // Get the max value of histogram + Cv2.MinMaxLoc(hist, out _, out double maxVal); + + var color = Scalar.All(100); + // Scales and draws histogram + hist = hist * (maxVal != 0 ? Height / maxVal : 0.0); + for (int j = 0; j < hdims[0]; ++j) + { + int binW = (int)((double)Width / hdims[0]); + render.Rectangle( + new Point(j * binW, render.Rows - (int)hist.Get(j)), + new Point((j + 1) * binW, render.Rows), + color, + -1); + } + + using (new Window("Image", src, WindowFlags.AutoSize | WindowFlags.FreeRatio)) + using (new Window("Histogram", render, WindowFlags.AutoSize | WindowFlags.FreeRatio)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/HoughLinesSample.cs b/SamplesCore/Samples/HoughLinesSample.cs index a395dcf..d5fc847 100644 --- a/SamplesCore/Samples/HoughLinesSample.cs +++ b/SamplesCore/Samples/HoughLinesSample.cs @@ -1,64 +1,62 @@ using System; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// Hough Transform Sample / ハフ変換による直線検出 +/// +/// http://opencv.jp/sample/special_transforms.html#hough_line +class HoughLinesSample : ConsoleTestBase { + public override void RunTest() + { + SampleCpp(); + } + /// - /// Hough Transform Sample / ハフ変換による直線検出 + /// sample of new C++ style wrapper /// - /// http://opencv.jp/sample/special_transforms.html#hough_line - class HoughLinesSample : ISample + private void SampleCpp() { - public void Run() + // (1) Load the image + using var imgGray = new Mat(ImagePath.Goryokaku, ImreadModes.Grayscale); + using var imgStd = new Mat(ImagePath.Goryokaku, ImreadModes.Color); + using var imgProb = imgStd.Clone(); + // Preprocess + Cv2.Canny(imgGray, imgGray, 50, 200, 3, false); + + // (3) Run Standard Hough Transform + LineSegmentPolar[] segStd = Cv2.HoughLines(imgGray, 1, Math.PI / 180, 50, 0, 0); + int limit = Math.Min(segStd.Length, 10); + for (int i = 0; i < limit; i++) { - SampleCpp(); + // Draws result lines + float rho = segStd[i].Rho; + float theta = segStd[i].Theta; + double a = Math.Cos(theta); + double b = Math.Sin(theta); + double x0 = a * rho; + double y0 = b * rho; + Point pt1 = new Point { X = (int)Math.Round(x0 + 1000 * (-b)), Y = (int)Math.Round(y0 + 1000 * (a)) }; + Point pt2 = new Point { X = (int)Math.Round(x0 - 1000 * (-b)), Y = (int)Math.Round(y0 - 1000 * (a)) }; + imgStd.Line(pt1, pt2, Scalar.Red, 3, LineTypes.AntiAlias, 0); } - /// - /// sample of new C++ style wrapper - /// - private void SampleCpp() + // (4) Run Probabilistic Hough Transform + LineSegmentPoint[] segProb = Cv2.HoughLinesP(imgGray, 1, Math.PI / 180, 50, 50, 10); + foreach (LineSegmentPoint s in segProb) { - // (1) Load the image - using (var imgGray = new Mat(FilePath.Image.Goryokaku, ImreadModes.Grayscale)) - using (var imgStd = new Mat(FilePath.Image.Goryokaku, ImreadModes.Color)) - using (var imgProb = imgStd.Clone()) - { - // Preprocess - Cv2.Canny(imgGray, imgGray, 50, 200, 3, false); - - // (3) Run Standard Hough Transform - LineSegmentPolar[] segStd = Cv2.HoughLines(imgGray, 1, Math.PI / 180, 50, 0, 0); - int limit = Math.Min(segStd.Length, 10); - for (int i = 0; i < limit; i++ ) - { - // Draws result lines - float rho = segStd[i].Rho; - float theta = segStd[i].Theta; - double a = Math.Cos(theta); - double b = Math.Sin(theta); - double x0 = a * rho; - double y0 = b * rho; - Point pt1 = new Point { X = (int)Math.Round(x0 + 1000 * (-b)), Y = (int)Math.Round(y0 + 1000 * (a)) }; - Point pt2 = new Point { X = (int)Math.Round(x0 - 1000 * (-b)), Y = (int)Math.Round(y0 - 1000 * (a)) }; - imgStd.Line(pt1, pt2, Scalar.Red, 3, LineTypes.AntiAlias, 0); - } - - // (4) Run Probabilistic Hough Transform - LineSegmentPoint[] segProb = Cv2.HoughLinesP(imgGray, 1, Math.PI / 180, 50, 50, 10); - foreach (LineSegmentPoint s in segProb) - { - imgProb.Line(s.P1, s.P2, Scalar.Red, 3, LineTypes.AntiAlias, 0); - } - - // (5) Show results - using (new Window("Hough_line_standard", WindowMode.AutoSize, imgStd)) - using (new Window("Hough_line_probabilistic", WindowMode.AutoSize, imgProb)) - { - Window.WaitKey(0); - } - } + imgProb.Line(s.P1, s.P2, Scalar.Red, 3, LineTypes.AntiAlias, 0); } + // (5) Show results + using (new Window("Hough_line_standard", imgStd, WindowFlags.AutoSize)) + using (new Window("Hough_line_probabilistic", imgProb, WindowFlags.AutoSize)) + { + Window.WaitKey(0); + } } } diff --git a/SamplesCore/Samples/InpaintSample.cs b/SamplesCore/Samples/InpaintSample.cs new file mode 100644 index 0000000..58eb398 --- /dev/null +++ b/SamplesCore/Samples/InpaintSample.cs @@ -0,0 +1,100 @@ +using System; +using System.IO; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Inpainting +/// +/// http://opencv.jp/sample/special_transforms.html#inpaint +public class InpaintSample : ConsoleTestBase +{ + public override void RunTest() + { + // cvInpaint + + Console.WriteLine( + "Hot keys: \n" + + "\tESC - quit the program\n" + + "\tr - restore the original image\n" + + "\ti or ENTER - run inpainting algorithm\n" + + "\t\t(before running it, paint something on the image)\n" + + "\ts - save the original image, mask image, original+mask image and inpainted image to desktop." + ); + + using var img0 = Cv2.ImRead(ImagePath.Fruits, ImreadModes.AnyDepth | ImreadModes.AnyColor); + using var img = img0.Clone(); + using var inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black); + using var inpainted = img0.EmptyClone(); + + using var wImage = new Window("image", img); + var prevPt = new Point(-1, -1); + wImage.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => + { + if (ev == MouseEventTypes.LButtonUp || (flags & MouseEventFlags.LButton) == 0) + { + prevPt = new Point(-1, -1); + } + else if (ev == MouseEventTypes.LButtonDown) + { + prevPt = new Point(x, y); + } + else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) != 0) + { + Point pt = new Point(x, y); + if (prevPt.X < 0) + { + prevPt = pt; + } + inpaintMask.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); + img.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); + prevPt = pt; + wImage.ShowImage(img); + } + }); + + Window wInpaint1 = null; + Window wInpaint2 = null; + try + { + for (; ; ) + { + switch ((char)Window.WaitKey(0)) + { + case (char)27: // exit + return; + case 'r': // restore original image + inpaintMask.SetTo(Scalar.Black); + img0.CopyTo(img); + wImage.ShowImage(img); + break; + case 'i': // do Inpaint + case '\r': + Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.Telea); + wInpaint1 ??= new Window("inpainted image (algorithm by Alexandru Telea)", WindowFlags.AutoSize); + wInpaint1.ShowImage(inpainted); + Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.NS); + wInpaint2 ??= new Window("inpainted image (algorithm by Navier-Strokes)", WindowFlags.AutoSize); + wInpaint2.ShowImage(inpainted); + break; + case 's': // save images + string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + img0.SaveImage(Path.Combine(desktop, "original.png")); + inpaintMask.SaveImage(Path.Combine(desktop, "mask.png")); + img.SaveImage(Path.Combine(desktop, "original+mask.png")); + inpainted.SaveImage(Path.Combine(desktop, "inpainted.png")); + break; + } + } + } + finally + { + wInpaint1?.Dispose(); + wInpaint2?.Dispose(); + Window.DestroyAllWindows(); + } + } +} diff --git a/SamplesCore/Samples/KAZESample.cs b/SamplesCore/Samples/KAZESample.cs new file mode 100644 index 0000000..f321e09 --- /dev/null +++ b/SamplesCore/Samples/KAZESample.cs @@ -0,0 +1,47 @@ +using System; +using System.Diagnostics; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Retrieves keypoints using the KAZE and AKAZE algorithm. +/// +internal class KAZESample : ConsoleTestBase +{ + public override void RunTest() + { + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + var kaze = KAZE.Create(); + var akaze = AKAZE.Create(); + + var kazeDescriptors = new Mat(); + var akazeDescriptors = new Mat(); + KeyPoint[] kazeKeyPoints = null, akazeKeyPoints = null; + var kazeTime = MeasureTime(() => + kaze.DetectAndCompute(gray, null, out kazeKeyPoints, kazeDescriptors)); + var akazeTime = MeasureTime(() => + akaze.DetectAndCompute(gray, null, out akazeKeyPoints, akazeDescriptors)); + + var dstKaze = new Mat(); + var dstAkaze = new Mat(); + Cv2.DrawKeypoints(gray, kazeKeyPoints, dstKaze); + Cv2.DrawKeypoints(gray, akazeKeyPoints, dstAkaze); + + using (new Window(String.Format("KAZE [{0:F2}ms]", kazeTime.TotalMilliseconds), dstKaze)) + using (new Window(String.Format("AKAZE [{0:F2}ms]", akazeTime.TotalMilliseconds), dstAkaze)) + { + Cv2.WaitKey(); + } + } + + private TimeSpan MeasureTime(Action action) + { + var watch = Stopwatch.StartNew(); + action(); + watch.Stop(); + return watch.Elapsed; + } +} diff --git a/SamplesCore/Samples/KAZESample2.cs b/SamplesCore/Samples/KAZESample2.cs new file mode 100644 index 0000000..cc18f26 --- /dev/null +++ b/SamplesCore/Samples/KAZESample2.cs @@ -0,0 +1,228 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// https://github.com/shimat/opencvsharp/issues/176 +/// +class KAZESample2 : ConsoleTestBase +{ + public static Point2d Point2fToPoint2d(Point2f pf) + { + return new Point2d(((int)pf.X), ((int)pf.Y)); + } + + public override void RunTest() + { + using var img1 = new Mat(ImagePath.SurfBox); + using var img2 = new Mat(ImagePath.SurfBoxinscene); + using var descriptors1 = new Mat(); + using var descriptors2 = new Mat(); + using var matcher = new BFMatcher(NormTypes.L2SQR); + using var kaze = KAZE.Create(); + kaze.DetectAndCompute(img1, null, out var keypoints1, descriptors1); + kaze.DetectAndCompute(img2, null, out var keypoints2, descriptors2); + + DMatch[][] matches = matcher.KnnMatch(descriptors1, descriptors2, 2); + using Mat mask = new Mat(matches.Length, 1, MatType.CV_8U); + mask.SetTo(new Scalar(255)); + int nonZero = Cv2.CountNonZero(mask); + VoteForUniqueness(matches, mask); + nonZero = Cv2.CountNonZero(mask); + nonZero = VoteForSizeAndOrientation(keypoints2, keypoints1, matches, mask, 1.5f, 20); + + List obj = new List(); + List scene = new List(); + List goodMatchesList = new List(); + //iterate through the mask only pulling out nonzero items because they're matches + for (int i = 0; i < mask.Rows; i++) + { + MatIndexer maskIndexer = mask.GetGenericIndexer(); + if (maskIndexer[i] > 0) + { + obj.Add(keypoints1[matches[i][0].QueryIdx].Pt); + scene.Add(keypoints2[matches[i][0].TrainIdx].Pt); + goodMatchesList.Add(matches[i][0]); + } + } + + List objPts = obj.ConvertAll(Point2fToPoint2d); + List scenePts = scene.ConvertAll(Point2fToPoint2d); + if (nonZero >= 4) + { + Mat homography = Cv2.FindHomography(objPts, scenePts, HomographyMethods.Ransac, 1.5, mask); + nonZero = Cv2.CountNonZero(mask); + + if (homography != null) + { + Point2f[] objCorners = { new Point2f(0, 0), + new Point2f(img1.Cols, 0), + new Point2f(img1.Cols, img1.Rows), + new Point2f(0, img1.Rows) }; + + Point2d[] sceneCorners = MyPerspectiveTransform3(objCorners, homography); + + //This is a good concat horizontal + using Mat img3 = new Mat(Math.Max(img1.Height, img2.Height), img2.Width + img1.Width, MatType.CV_8UC3); + using Mat left = new Mat(img3, new Rect(0, 0, img1.Width, img1.Height)); + using Mat right = new Mat(img3, new Rect(img1.Width, 0, img2.Width, img2.Height)); + img1.CopyTo(left); + img2.CopyTo(right); + + mask.GetArray(out byte[] maskBytes); + Cv2.DrawMatches(img1, keypoints1, img2, keypoints2, goodMatchesList, img3, Scalar.All(-1), Scalar.All(-1), maskBytes, DrawMatchesFlags.NotDrawSinglePoints); + + List> listOfListOfPoint2D = new List>(); + List listOfPoint2D = new List + { + new Point(sceneCorners[0].X + img1.Cols, sceneCorners[0].Y), + new Point(sceneCorners[1].X + img1.Cols, sceneCorners[1].Y), + new Point(sceneCorners[2].X + img1.Cols, sceneCorners[2].Y), + new Point(sceneCorners[3].X + img1.Cols, sceneCorners[3].Y) + }; + listOfListOfPoint2D.Add(listOfPoint2D); + img3.Polylines(listOfListOfPoint2D, true, Scalar.LimeGreen, 2); + + //This works too + //Cv2.Line(img3, scene_corners[0] + new Point2d(img1.Cols, 0), scene_corners[1] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[1] + new Point2d(img1.Cols, 0), scene_corners[2] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[2] + new Point2d(img1.Cols, 0), scene_corners[3] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[3] + new Point2d(img1.Cols, 0), scene_corners[0] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + + img3.SaveImage("Kaze_Output.png"); + Window.ShowImages(img3); + } + } + } + + // to avoid opencvsharp's bug + static Point2d[] MyPerspectiveTransform1(Point2f[] yourData, Mat transformationMatrix) + { + using var src = Mat.FromPixelData(yourData.Length, 1, MatType.CV_32FC2, yourData); + using var dst = new Mat(); + Cv2.PerspectiveTransform(src, dst, transformationMatrix); + dst.GetArray(out Point2f[] dstArray); + Point2d[] result = Array.ConvertAll(dstArray, Point2fToPoint2d); + return result; + } + + // fixed FromArray behavior + static Point2d[] MyPerspectiveTransform2(Point2f[] yourData, Mat transformationMatrix) + { + using var s = Mat.FromArray(yourData); + using var d = new Mat(); + Cv2.PerspectiveTransform(s, d, transformationMatrix); + Point2f[] f = d.ToArray(); + return f.Select(Point2fToPoint2d).ToArray(); + } + + // new API + static Point2d[] MyPerspectiveTransform3(Point2f[] yourData, Mat transformationMatrix) + { + Point2f[] ret = Cv2.PerspectiveTransform(yourData, transformationMatrix); + return ret.Select(Point2fToPoint2d).ToArray(); + } + + static int VoteForSizeAndOrientation(KeyPoint[] modelKeyPoints, KeyPoint[] observedKeyPoints, DMatch[][] matches, Mat mask, float scaleIncrement, int rotationBins) + { + int idx = 0; + int nonZeroCount = 0; + byte[] maskMat = new byte[mask.Rows]; + GCHandle maskHandle = GCHandle.Alloc(maskMat, GCHandleType.Pinned); + using (Mat m = Mat.FromPixelData(mask.Rows, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) + { + mask.CopyTo(m); + List logScale = new List(); + List rotations = new List(); + double s, maxS, minS, r; + maxS = -1.0e-10f; minS = 1.0e10f; + + //if you get an exception here, it's because you're passing in the model and observed keypoints backwards. Just switch the order. + for (int i = 0; i < maskMat.Length; i++) + { + if (maskMat[i] > 0) + { + KeyPoint observedKeyPoint = observedKeyPoints[i]; + KeyPoint modelKeyPoint = modelKeyPoints[matches[i][0].TrainIdx]; + s = Math.Log10(observedKeyPoint.Size / modelKeyPoint.Size); + logScale.Add((float)s); + maxS = s > maxS ? s : maxS; + minS = s < minS ? s : minS; + + r = observedKeyPoint.Angle - modelKeyPoint.Angle; + r = r < 0.0f ? r + 360.0f : r; + rotations.Add((float)r); + } + } + + int scaleBinSize = (int)Math.Ceiling((maxS - minS) / Math.Log10(scaleIncrement)); + if (scaleBinSize < 2) + scaleBinSize = 2; + float[] scaleRanges = { (float)minS, (float)(minS + scaleBinSize + Math.Log10(scaleIncrement)) }; + + using var scalesMat = Mat.FromArray(logScale.ToArray()); + using var rotationsMat = Mat.FromArray(rotations.ToArray()); + using var flagsMat = new Mat(logScale.Count, 1); + using Mat hist = new Mat(); + flagsMat.SetTo(new Scalar(0.0f)); + float[] flagsMatFloat1 = flagsMat.ToArray(); + + int[] histSize = { scaleBinSize, rotationBins }; + float[] rotationRanges = { 0.0f, 360.0f }; + int[] channels = { 0, 1 }; + Rangef[] ranges = { new Rangef(scaleRanges[0], scaleRanges[1]), new Rangef(rotations.Min(), rotations.Max()) }; + + Mat[] arrs = { scalesMat, rotationsMat }; + Cv2.CalcHist(arrs, channels, null, hist, 2, histSize, ranges); + Cv2.MinMaxLoc(hist, out double minVal, out double maxVal); + + Cv2.Threshold(hist, hist, maxVal * 0.5, 0, ThresholdTypes.Tozero); + Cv2.CalcBackProject(arrs, channels, hist, flagsMat, ranges); + + MatIndexer flagsMatIndexer = flagsMat.GetIndexer(); + + for (int i = 0; i < maskMat.Length; i++) + { + if (maskMat[i] > 0) + { + if (flagsMatIndexer[idx++] != 0.0f) + { + nonZeroCount++; + } + else + maskMat[i] = 0; + } + } + m.CopyTo(mask); + } + maskHandle.Free(); + + return nonZeroCount; + } + + private static void VoteForUniqueness(DMatch[][] matches, Mat mask, float uniqnessThreshold = 0.80f) + { + var maskData = new byte[matches.Length]; + var maskHandle = GCHandle.Alloc(maskData, GCHandleType.Pinned); + using (var m = Mat.FromPixelData(matches.Length, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) + { + mask.CopyTo(m); + for (int i = 0; i < matches.Length; i++) + { + //This is also known as NNDR Nearest Neighbor Distance Ratio + if ((matches[i][0].Distance / matches[i][1].Distance) <= uniqnessThreshold) + maskData[i] = 255; + else + maskData[i] = 0; + } + m.CopyTo(mask); + } + maskHandle.Free(); + } +} diff --git a/SamplesCore/Samples/MDS.cs b/SamplesCore/Samples/MDS.cs new file mode 100644 index 0000000..ed2a023 --- /dev/null +++ b/SamplesCore/Samples/MDS.cs @@ -0,0 +1,155 @@ +using System; +using OpenCvSharp; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Multidimensional Scaling (多次元尺度構成法) +/// for C++ cv::Mat testing +/// +class MDS : ConsoleTestBase +{ + /// + /// Distance among 10 American cities + /// + /// + /// * The linear distance between Atlanta and Chicago is 587km. + /// + static readonly double[,] CityDistance = + { + /*Atlanta*/ {0, 587, 1212, 701, 1936, 604, 748, 2139, 2182, 543}, + /*Chicago*/ {587, 0, 920, 940, 1745, 1188, 713, 1858, 1737, 597}, + /*Denver*/ {1212, 920, 0, 879, 831, 1726, 1631, 949, 1021, 1494}, + /*Houston*/ {701, 940, 879, 0, 1734, 968, 1420, 1645, 1891, 1220}, + /*Los Angeles*/ {1936, 1745, 831, 1734, 0, 2339, 2451, 347, 959, 2300}, + /*Miami*/ {604, 1188, 1726, 968, 2339, 0, 1092, 2594, 2734, 923}, + /*New York*/ {748, 713, 1631, 1420, 2451, 1092, 0, 2571, 2408, 205}, + /*San Francisco*/ {2139, 1858, 949, 1645, 347, 2594, 2571, 0, 678, 2442}, + /*Seattle*/ {2182, 1737, 1021, 1891, 959, 2734, 2408, 678, 0, 2329}, + /*Washington D.C.*/ {543, 597, 1494, 1220, 2300, 923, 205, 2442, 2329, 0} + }; + + /// + /// City names + /// + static readonly string[] CityNames = + { + "Atlanta","Chicago","Denver","Houston","Los Angeles","Miami","New York","San Francisco","Seattle","Washington D.C." + }; + + + /// + /// Classical Multidimensional Scaling + /// + public override void RunTest() + { + // creates distance matrix + int size = CityDistance.GetLength(0); + var t = Mat.FromPixelData(size, size, MatType.CV_64FC1, CityDistance); + // adds Torgerson's additive constant to t + double torgarson = Torgerson(t); + t += new Scalar(torgarson); + // squares all elements of t + t = t.Mul(t); + + // centering matrix G + using var g = CenteringMatrix(size); + // calculates inner product matrix B + using var b = g * t * g.T() * -0.5; + // calculates eigenvalues and eigenvectors of B + using var values = new Mat(); + using var vectors = new Mat(); + Cv2.Eigen(b, values, vectors); + for (int r = 0; r < values.Rows; r++) + { + if (values.Get(r) < 0) + values.Set(r, 0); + } + + //Console.WriteLine(values.Dump()); + + // multiplies sqrt(eigenvalue) by eigenvector + using var result = vectors.RowRange(0, 2); + { + var at = result.GetGenericIndexer(); + for (int r = 0; r < result.Rows; r++) + { + for (int c = 0; c < result.Cols; c++) + { + at[r, c] *= Math.Sqrt(values.Get(r)); + } + } + } + + // scaling + Cv2.Normalize(result, result, 0, 800, NormTypes.MinMax); + + // opens a window + using (Mat img = Mat.Zeros(600, 800, MatType.CV_8UC3)) + using (var window = new Window("City Location Estimation")) + { + var at = result.GetGenericIndexer(); + for (int c = 0; c < size; c++) + { + double x = at[0, c]; + double y = at[1, c]; + x = x * 0.7 + img.Width * 0.1; + y = y * 0.7 + img.Height * 0.1; + img.Circle((int)x, (int)y, 5, Scalar.Red, -1); + Point textPos = new Point(x + 5, y + 10); + img.PutText(CityNames[c], textPos, HersheyFonts.HersheySimplex, 0.5, Scalar.White); + } + window.Image = img; + Cv2.WaitKey(); + } + } + + /// + /// Returns Torgerson's additive constant + /// + /// + /// + private double Torgerson(Mat mat) + { + if (mat == null) + throw new ArgumentNullException(); + if (mat.Rows != mat.Cols) + throw new ArgumentException(); + + int n = mat.Rows; + // Additive constant in case of negative value + Cv2.MinMaxLoc(-mat, out _, out double max); + double c2 = max; + // Additive constant from triangular inequality + double c1 = 0; + + var at = mat.GetGenericIndexer(); + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + for (int k = 0; k < n; k++) + { + double v = at[i, k] - at[i, j] - at[j, k]; + if (v > c1) + { + c1 = v; + } + } + } + } + return Math.Max(Math.Max(c1, c2), 0); + } + + /// + /// Returns centering matrix + /// + /// Size of matrix + /// + private Mat CenteringMatrix(int n) + { + using var eye = Mat.Eye(n, n, MatType.CV_64FC1); + return (eye - (Scalar)(1.0 / n)); + } +} diff --git a/SamplesCore/Samples/MSERSample.cs b/SamplesCore/Samples/MSERSample.cs new file mode 100644 index 0000000..0d6dcf1 --- /dev/null +++ b/SamplesCore/Samples/MSERSample.cs @@ -0,0 +1,47 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Maximally Stable Extremal Regions +/// +class MSERSample : ConsoleTestBase +{ + public override void RunTest() + { + using Mat src = new Mat(ImagePath.Distortion, ImreadModes.Color); + using Mat gray = new Mat(); + using Mat dst = src.Clone(); + Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); + + CppStyleMSER(gray, dst); // C++ style + + using (new Window("MSER src", src)) + using (new Window("MSER gray", gray)) + using (new Window("MSER dst", dst)) + { + Cv2.WaitKey(); + } + } + + /// + /// Extracts MSER by C++-style code (cv::MSER) + /// + /// + /// + private void CppStyleMSER(Mat gray, Mat dst) + { + MSER mser = MSER.Create(); + mser.DetectRegions(gray, out Point[][] contours, out _); + foreach (Point[] pts in contours) + { + Scalar color = Scalar.RandomColor(); + foreach (Point p in pts) + { + dst.Circle(p, 1, color); + } + } + } +} diff --git a/SamplesCore/Samples/MatOperations.cs b/SamplesCore/Samples/MatOperations.cs index 4032b04..7b50168 100644 --- a/SamplesCore/Samples/MatOperations.cs +++ b/SamplesCore/Samples/MatOperations.cs @@ -1,100 +1,101 @@ using System; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class MatOperations : ConsoleTestBase { + public override void RunTest() + { + SubMat(); + RowColRangeOperation(); + RowColOperation(); + } + /// - /// + /// Submatrix operations /// - class MatOperations : ISample + private void SubMat() { - public void Run() + using var src = Cv2.ImRead(ImagePath.Lenna); + + // Assign small image to mat + using var small = new Mat(); + Cv2.Resize(src, small, new Size(100, 100)); + src[10, 110, 10, 110] = small; + src[370, 470, 400, 500] = small.T(); + // ↑ This is same as the following: + //small.T().CopyTo(src[370, 470, 400, 500]); + + // Get partial mat (similar to cvSetImageROI) + Mat part = src[200, 400, 200, 360]; + // Invert partial pixel values + Cv2.BitwiseNot(part, part); + + // Fill the region (50..100, 100..150) with color (128, 0, 0) + part = src.SubMat(50, 100, 400, 450); + part.SetTo(128); + + using (new Window("SubMat", src)) { - SubMat(); - RowColRangeOperation(); - RowColOperation(); + Cv2.WaitKey(); } - /// - /// Submatrix operations - /// - private void SubMat() - { - using var src = Cv2.ImRead(FilePath.Image.Lenna); - - // Assign small image to mat - using var small = new Mat(); - Cv2.Resize(src, small, new Size(100, 100)); - src[10, 110, 10, 110] = small; - src[370, 470, 400, 500] = small.T(); - // ↑ This is same as the following: - //small.T().CopyTo(src[370, 470, 400, 500]); - - // Get partial mat (similar to cvSetImageROI) - Mat part = src[200, 400, 200, 360]; - // Invert partial pixel values - Cv2.BitwiseNot(part, part); - - // Fill the region (50..100, 100..150) with color (128, 0, 0) - part = src.SubMat(50, 100, 400, 450); - part.SetTo(128); - - using (new Window("SubMat", src)) - { - Cv2.WaitKey(); - } - - part.Dispose(); - } + part.Dispose(); + } + + /// + /// Submatrix operations + /// + private void RowColRangeOperation() + { + using var src = Cv2.ImRead(ImagePath.Lenna); + + Cv2.GaussianBlur( + src.RowRange(100, 200), + src.RowRange(200, 300), + new Size(7, 7), 20); + + Cv2.GaussianBlur( + src.ColRange(200, 300), + src.ColRange(100, 200), + new Size(7, 7), 20); - /// - /// Submatrix operations - /// - private void RowColRangeOperation() + using (new Window("RowColRangeOperation", src)) { - using var src = Cv2.ImRead(FilePath.Image.Lenna); - - Cv2.GaussianBlur( - src.RowRange(100, 200), - src.RowRange(200, 300), - new Size(7, 7), 20); - - Cv2.GaussianBlur( - src.ColRange(200, 300), - src.ColRange(100, 200), - new Size(7, 7), 20); - - using (new Window("RowColRangeOperation", src)) - { - Cv2.WaitKey(); - } + Cv2.WaitKey(); } + } + + /// + /// Submatrix expression operations + /// + private void RowColOperation() + { + using var src = Cv2.ImRead(ImagePath.Lenna); - /// - /// Submatrix expression operations - /// - private void RowColOperation() + var rand = new Random(); + for (int i = 0; i < 200; i++) { - using var src = Cv2.ImRead(FilePath.Image.Lenna); - - var rand = new Random(); - for (int i = 0; i < 200; i++) - { - int c1 = rand.Next(100, 400); - int c2 = rand.Next(100, 400); - using Mat temp = src.Row(c1).Clone(); - src.Row(c2).CopyTo(src.Row(c1)); - temp.CopyTo(src.Row(c2)); - } + int c1 = rand.Next(100, 400); + int c2 = rand.Next(100, 400); + using Mat temp = src.Row(c1).Clone(); + src.Row(c2).CopyTo(src.Row(c1)); + temp.CopyTo(src.Row(c2)); + } ((Mat)~src.ColRange(450, 500)).CopyTo(src.ColRange(0, 50)); - src.RowRange(450, 460).SetTo(new Scalar(0, 0, 255)); + src.RowRange(450, 460).SetTo(new Scalar(0, 0, 255)); - using (new Window("RowColOperation", src)) - { - Cv2.WaitKey(); - } + using (new Window("RowColOperation", src)) + { + Cv2.WaitKey(); } } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/MergeSplitSample.cs b/SamplesCore/Samples/MergeSplitSample.cs new file mode 100644 index 0000000..8b02f70 --- /dev/null +++ b/SamplesCore/Samples/MergeSplitSample.cs @@ -0,0 +1,60 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// +/// +class MergeSplitSample : ConsoleTestBase +{ + public override void RunTest() + { + // Split/Merge Test + { + using var src = new Mat(ImagePath.Lenna, ImreadModes.Color); + + // Split each plane + Cv2.Split(src, out var planes); + + Cv2.ImShow("planes 0", planes[0]); + Cv2.ImShow("planes 1", planes[1]); + Cv2.ImShow("planes 2", planes[2]); + Cv2.WaitKey(); + Cv2.DestroyAllWindows(); + + // Invert G plane + Cv2.BitwiseNot(planes[1], planes[1]); + + // Merge + using var merged = new Mat(); + Cv2.Merge(planes, merged); + + Cv2.ImShow("src", src); + Cv2.ImShow("merged", merged); + Cv2.WaitKey(); + Cv2.DestroyAllWindows(); + } + + // MixChannels Test + { + using var rgba = new Mat(300, 300, MatType.CV_8UC4, new Scalar(50, 100, 150, 200)); + using var bgr = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC3); + using var alpha = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC1); + + Mat[] input = { rgba }; + Mat[] output = { bgr, alpha }; + // rgba[0] -> bgr[2], rgba[1] -> bgr[1], + // rgba[2] -> bgr[0], rgba[3] -> alpha[0] + int[] fromTo = { 0, 2, 1, 1, 2, 0, 3, 3 }; + Cv2.MixChannels(input, output, fromTo); + + Cv2.ImShow("rgba", rgba); + Cv2.ImShow("bgr", bgr); + Cv2.ImShow("alpha", alpha); + Cv2.WaitKey(); + Cv2.DestroyAllWindows(); + } + } +} diff --git a/SamplesCore/Samples/MorphologySample.cs b/SamplesCore/Samples/MorphologySample.cs index 1f05212..08eefd2 100644 --- a/SamplesCore/Samples/MorphologySample.cs +++ b/SamplesCore/Samples/MorphologySample.cs @@ -1,34 +1,35 @@ using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class MorphologySample : ConsoleTestBase { - /// - /// - /// - class MorphologySample : ISample + public override void RunTest() { - public void Run() - { - using var gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); - using var binary = new Mat(); - using var dilate1 = new Mat(); - using var dilate2 = new Mat(); - byte[] kernelValues = {0, 1, 0, 1, 1, 1, 0, 1, 0}; // cross (+) - using var kernel = new Mat(3, 3, MatType.CV_8UC1, kernelValues); + using var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + using var binary = new Mat(); + using var dilate1 = new Mat(); + using var dilate2 = new Mat(); + byte[] kernelValues = { 0, 1, 0, 1, 1, 1, 0, 1, 0 }; // cross (+) + using var kernel = Mat.FromPixelData(3, 3, MatType.CV_8UC1, kernelValues); - // Binarize - Cv2.Threshold(gray, binary, 0, 255, ThresholdTypes.Otsu); + // Binarize + Cv2.Threshold(gray, binary, 0, 255, ThresholdTypes.Otsu); - // empty kernel - Cv2.Dilate(binary, dilate1, null); - // + kernel - Cv2.Dilate(binary, dilate2, kernel); + // empty kernel + Cv2.Dilate(binary, dilate1, null); + // + kernel + Cv2.Dilate(binary, dilate2, kernel); - Cv2.ImShow("binary", binary); - Cv2.ImShow("dilate (kernel = null)", dilate1); - Cv2.ImShow("dilate (kernel = +)", dilate2); - Cv2.WaitKey(0); - Cv2.DestroyAllWindows(); - } + Cv2.ImShow("binary", binary); + Cv2.ImShow("dilate (kernel = null)", dilate1); + Cv2.ImShow("dilate (kernel = +)", dilate2); + Cv2.WaitKey(0); + Cv2.DestroyAllWindows(); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/NormalArrayOperations.cs b/SamplesCore/Samples/NormalArrayOperations.cs index a5e1466..1b6dd05 100644 --- a/SamplesCore/Samples/NormalArrayOperations.cs +++ b/SamplesCore/Samples/NormalArrayOperations.cs @@ -1,84 +1,81 @@ using System; using System.Collections.Generic; -using System.Linq; using OpenCvSharp; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class NormalArrayOperations : ConsoleTestBase { + public override void RunTest() + { + Threshold1(); + Threshold2(); + Threshold3(); + } + /// - /// + /// Run thresholding to byte array /// - class NormalArrayOperations : ISample + private void Threshold1() { - public void Run() - { - Threshold1(); - Threshold2(); - Threshold3(); + const int T = 3; + const int Max = 5; - Console.Read(); - } + byte[] input = { 1, 2, 3, 4, 5, }; + var output = new List(); - /// - /// Run thresholding to byte array - /// - private void Threshold1() - { - const int T = 3; - const int Max = 5; + Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), + T, Max, ThresholdTypes.Binary); - byte[] input = {1, 2, 3, 4, 5, }; - var output = new List(); - - Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), - T, Max, ThresholdTypes.Binary); - - Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", string.Join(",", input)); - Console.WriteLine("output: {0}", string.Join(",", output)); - } + Console.WriteLine("Threshold: {0}", T); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); + } - /// - /// Run thresholding to short array - /// - private void Threshold2() - { - const int T = 150; - const int Max = 250; + /// + /// Run thresholding to short array + /// + private void Threshold2() + { + const int T = 150; + const int Max = 250; - short[] input = { 50, 100, 150, 200, 250, }; - var output = new List(); + short[] input = { 50, 100, 150, 200, 250, }; + var output = new List(); - Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), - T, Max, ThresholdTypes.Binary); + Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), + T, Max, ThresholdTypes.Binary); - Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", string.Join(",", input)); - Console.WriteLine("output: {0}", string.Join(",", output)); - } + Console.WriteLine("Threshold: {0}", T); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); + } - /// - /// Run thresholding to struct array - /// - private void Threshold3() - { - const double T = 2000; - const double Max = 5000; + /// + /// Run thresholding to struct array + /// + private void Threshold3() + { + const double T = 2000; + const double Max = 5000; - // threshold does not support Point (int) - Point2f[] input = { + // threshold does not support Point (int) + Point2f[] input = { new Point2f(1000, 1500), new Point2f(2000, 2001), - new Point2f(500, 5000), + new Point2f(500, 5000), }; - var output = new List(); + var output = new List(); - Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), - T, Max, ThresholdTypes.Binary); + Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), + T, Max, ThresholdTypes.Binary); - Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", string.Join(",", input)); - Console.WriteLine("output: {0}", string.Join(",", output)); - } + Console.WriteLine("Threshold: {0}", T); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/OpenVinoFaceDetection.cs b/SamplesCore/Samples/OpenVinoFaceDetection.cs new file mode 100644 index 0000000..a5d4042 --- /dev/null +++ b/SamplesCore/Samples/OpenVinoFaceDetection.cs @@ -0,0 +1,83 @@ +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// To run this example first you nedd to compile OPENCV with Intel OpenVino +/// Download the face detection model available here: https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/intel/face-detection-adas-0001 +/// Add the files to the bin folder +/// +internal class OpenVinoFaceDetection : ConsoleTestBase +{ + const string modelFace = "face-detection-adas-0001.bin"; + const string modelFaceTxt = "face-detection-adas-0001.xml"; + const string sampleImage = "sample.jpg"; + const string outputLoc = "sample_output.jpg"; + + public override void RunTest() + { + using var frame = Cv2.ImRead(sampleImage); + int frameHeight = frame.Rows; + int frameWidth = frame.Cols; + + using var netFace = CvDnn.ReadNet(modelFace, modelFaceTxt); + netFace.SetPreferableBackend(Backend.INFERENCE_ENGINE); + netFace.SetPreferableTarget(Target.CPU); + + using var blob = CvDnn.BlobFromImage(frame, 1.0, new Size(672, 384), new Scalar(0, 0, 0), false, false); + netFace.SetInput(blob); + + using (var detection = netFace.Forward()) + { + using var detectionMat = Mat.FromPixelData(detection.Size(2), detection.Size(3), MatType.CV_32F, detection.Ptr(0)); + + for (int i = 0; i < detectionMat.Rows; i++) + { + float confidence = detectionMat.At(i, 2); + + if (confidence > 0.7) + { + int x1 = (int)(detectionMat.At(i, 3) * frameWidth); //xmin + int y1 = (int)(detectionMat.At(i, 4) * frameHeight); //ymin + int x2 = (int)(detectionMat.At(i, 5) * frameWidth); //xmax + int y2 = (int)(detectionMat.At(i, 6) * frameHeight); //ymax + + var roi = new Rect(x1, y1, (x2 - x1), (y2 - y1)); + roi = AdjustBoundingBox(roi); + Cv2.Rectangle(frame, roi, new Scalar(0, 255, 0), 2, LineTypes.Link4); + } + } + } + + var finalOutput = outputLoc; + Cv2.ImWrite(finalOutput, frame); + } + + private Rect AdjustBoundingBox(Rect faceRect) + { + int w = faceRect.Width; + int h = faceRect.Height; + + faceRect.X -= (int)(0.067 * w); + faceRect.Y -= (int)(0.028 * h); + + faceRect.Width += (int)(0.15 * w); + faceRect.Height += (int)(0.13 * h); + + if (faceRect.Width < faceRect.Height) + { + var dx = (faceRect.Height - faceRect.Width); + faceRect.X -= dx / 2; + faceRect.Width += dx; + } + else + { + var dy = (faceRect.Width - faceRect.Height); + faceRect.Y -= dy / 2; + faceRect.Height += dy; + } + return faceRect; + } +} diff --git a/SamplesCore/Samples/PerspectiveTransformSample.cs b/SamplesCore/Samples/PerspectiveTransformSample.cs new file mode 100644 index 0000000..29fd928 --- /dev/null +++ b/SamplesCore/Samples/PerspectiveTransformSample.cs @@ -0,0 +1,55 @@ +using OpenCvSharp; +using System; +using System.Collections.Generic; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +public class PerspectiveTransformSample : ConsoleTestBase +{ + private readonly List point2Fs = new List(); + + private Point2f[] srcPoints = new Point2f[] { + new Point2f(0, 0), + new Point2f(0, 0), + new Point2f(0, 0), + new Point2f(0, 0), + }; + + private readonly Point2f[] dstPoints = new Point2f[] { + new Point2f(0, 0), + new Point2f(0, 480), + new Point2f(640, 480), + new Point2f(640, 0), + }; + + private Mat OriginalImage; + + public override void RunTest() + { + OriginalImage = new Mat(ImagePath.SurfBoxinscene, ImreadModes.AnyColor); + using var Window = new Window("result", OriginalImage); + + Cv2.SetMouseCallback(Window.Name, CallbackOpenCVAnnotate); + Window.WaitKey(); + } + + private void CallbackOpenCVAnnotate(MouseEventTypes e, int x, int y, MouseEventFlags flags, IntPtr userdata) + { + if (e == MouseEventTypes.LButtonDown) + { + point2Fs.Add(new Point2f(x, y)); + if (point2Fs.Count == 4) + { + srcPoints = point2Fs.ToArray(); + using var matrix = Cv2.GetPerspectiveTransform(srcPoints, dstPoints); + using var dst = new Mat(new Size(640, 480), MatType.CV_8UC3); + Cv2.WarpPerspective(OriginalImage, dst, matrix, dst.Size()); + using var dsts = new Window("dst", dst); + point2Fs.Clear(); + Window.WaitKey(); + } + } + } +} diff --git a/SamplesCore/Samples/PhotoMethods.cs b/SamplesCore/Samples/PhotoMethods.cs index fead2d9..1752663 100644 --- a/SamplesCore/Samples/PhotoMethods.cs +++ b/SamplesCore/Samples/PhotoMethods.cs @@ -1,41 +1,42 @@ using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// sample of photo module methods +/// +class PhotoMethods : ConsoleTestBase { - /// - /// sample of photo module methods - /// - class PhotoMethods : ISample + public override void RunTest() { - public void Run() - { - using var src = new Mat(FilePath.Image.Fruits, ImreadModes.Color); + using var src = new Mat(ImagePath.Fruits, ImreadModes.Color); - using var normconv = new Mat(); - using var recursFiltered = new Mat(); - Cv2.EdgePreservingFilter(src, normconv, EdgePreservingMethods.NormconvFilter); - Cv2.EdgePreservingFilter(src, recursFiltered, EdgePreservingMethods.RecursFilter); + using var normconv = new Mat(); + using var recursFiltered = new Mat(); + Cv2.EdgePreservingFilter(src, normconv, EdgePreservingMethods.NormconvFilter); + Cv2.EdgePreservingFilter(src, recursFiltered, EdgePreservingMethods.RecursFilter); - using var detailEnhance = new Mat(); - Cv2.DetailEnhance(src, detailEnhance); + using var detailEnhance = new Mat(); + Cv2.DetailEnhance(src, detailEnhance); - using var pencil1 = new Mat(); - using var pencil2 = new Mat(); - Cv2.PencilSketch(src, pencil1, pencil2); + using var pencil1 = new Mat(); + using var pencil2 = new Mat(); + Cv2.PencilSketch(src, pencil1, pencil2); - using var stylized = new Mat(); - Cv2.Stylization(src, stylized); + using var stylized = new Mat(); + Cv2.Stylization(src, stylized); - using (new Window("src", src)) - using (new Window("edgePreservingFilter - NormconvFilter", normconv)) - using (new Window("edgePreservingFilter - RecursFilter", recursFiltered)) - using (new Window("detailEnhance", detailEnhance)) - using (new Window("pencilSketch grayscale", pencil1)) - using (new Window("pencilSketch color", pencil2)) - using (new Window("stylized", stylized)) - { - Cv2.WaitKey(); - } + using (new Window("src", src)) + using (new Window("edgePreservingFilter - NormconvFilter", normconv)) + using (new Window("edgePreservingFilter - RecursFilter", recursFiltered)) + using (new Window("detailEnhance", detailEnhance)) + using (new Window("pencilSketch grayscale", pencil1)) + using (new Window("pencilSketch color", pencil2)) + using (new Window("stylized", stylized)) + { + Cv2.WaitKey(); } } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/PixelAccess.cs b/SamplesCore/Samples/PixelAccess.cs index 7835a64..76a0e08 100644 --- a/SamplesCore/Samples/PixelAccess.cs +++ b/SamplesCore/Samples/PixelAccess.cs @@ -1,104 +1,92 @@ using System; using System.Diagnostics; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// Swaps B for R +/// +class PixelAccess : ConsoleTestBase { + public override void RunTest() + { + Console.WriteLine("Get/Set: {0}ms", MeasureTime(GetSet)); + Console.WriteLine("GenericIndexer: {0}ms", MeasureTime(GenericIndexer)); + Console.WriteLine("TypeSpecificMat: {0}ms", MeasureTime(TypeSpecificMat)); + Console.Read(); + } + /// - /// Swaps B for R + /// Slow /// - class PixelAccess : ISample + private void GetSet() { - public void Run() + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + for (int y = 0; y < mat.Height; y++) { - Console.WriteLine("Get/Set: {0}ms", MeasureTime(GetSet)); - Console.WriteLine("GenericIndexer: {0}ms", MeasureTime(GenericIndexer)); - Console.WriteLine("TypeSpecificMat: {0}ms", MeasureTime(TypeSpecificMat)); - Console.Read(); - } - - /// - /// Slow - /// - private void GetSet() - { - using (var mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) + for (int x = 0; x < mat.Width; x++) { - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = mat.Get(y, x); - Swap(ref color.Item0, ref color.Item2); - mat.Set(y, x, color); - } - } - //Cv2.ImShow("Slow", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); + Vec3b color = mat.Get(y, x); + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + mat.Set(y, x, newColor); } } + //Cv2.ImShow("Slow", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } - /// - /// Reasonably fast - /// - private void GenericIndexer() + /// + /// Reasonably fast + /// + private void GenericIndexer() + { + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + var indexer = mat.GetGenericIndexer(); + for (int y = 0; y < mat.Height; y++) { - using (var mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) + for (int x = 0; x < mat.Width; x++) { - var indexer = mat.GetGenericIndexer(); - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = indexer[y, x]; - Swap(ref color.Item0, ref color.Item2); - indexer[y, x] = color; - } - } - //Cv2.ImShow("GenericIndexer", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); + Vec3b color = indexer[y, x]; + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + indexer[y, x] = newColor; } } + //Cv2.ImShow("GenericIndexer", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } - /// - /// Faster - /// - private void TypeSpecificMat() + /// + /// Faster + /// + private void TypeSpecificMat() + { + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + var mat3 = new Mat(mat); + var indexer = mat3.GetIndexer(); + for (int y = 0; y < mat.Height; y++) { - using (var mat = new Mat(FilePath.Image.Lenna, ImreadModes.Color)) + for (int x = 0; x < mat.Width; x++) { - var mat3 = new Mat(mat); - var indexer = mat3.GetIndexer(); - for (int y = 0; y < mat.Height; y++) - { - for (int x = 0; x < mat.Width; x++) - { - Vec3b color = indexer[y, x]; - Swap(ref color.Item0, ref color.Item2); - indexer[y, x] = color; - } - } - //Cv2.ImShow("TypeSpecificMat", mat); - //Cv2.WaitKey(0); - //Cv2.DestroyAllWindows(); + Vec3b color = indexer[y, x]; + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + indexer[y, x] = newColor; } } + //Cv2.ImShow("TypeSpecificMat", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } - private static void Swap(ref T a, ref T b) - { - T temp = b; - b = a; - a = temp; - } - - private static long MeasureTime(Action action) - { - var watch = Stopwatch.StartNew(); - action(); - watch.Stop(); - return watch.ElapsedMilliseconds; - } + private static long MeasureTime(Action action) + { + var watch = Stopwatch.StartNew(); + action(); + watch.Stop(); + return watch.ElapsedMilliseconds; } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/Pose.cs b/SamplesCore/Samples/Pose.cs new file mode 100644 index 0000000..3597734 --- /dev/null +++ b/SamplesCore/Samples/Pose.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// To run this example first download the pose model available here: https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/models +/// Add the files to the bin folder +/// +internal class Pose : ConsoleTestBase +{ + public override void RunTest() + { + const string model = "pose_iter_160000.caffemodel"; + const string modelTxt = "pose_deploy_linevec_faster_4_stages.prototxt"; + const string sampleImage = "single.jpeg"; + const string outputLoc = "Output-Skeleton.jpg"; + const int nPoints = 15; + const double thresh = 0.1; + + int[][] posePairs = + { + new[] {0, 1}, new[] {1, 2}, new[] {2, 3}, + new[] {3, 4}, new[] {1, 5}, new[] {5, 6}, + new[] {6, 7}, new[] {1, 14}, new[] {14, 8}, new[] {8, 9}, + new[] {9, 10}, new[] {14, 11}, new[] {11, 12}, new[] {12, 13}, + }; + + using var frame = Cv2.ImRead(sampleImage); + using var frameCopy = frame.Clone(); + int frameWidth = frame.Cols; + int frameHeight = frame.Rows; + + const int inWidth = 368; + const int inHeight = 368; + + using var net = CvDnn.ReadNetFromCaffe(modelTxt, model); + net.SetPreferableBackend(Backend.OPENCV); + net.SetPreferableTarget(Target.CPU); + + using var inpBlob = CvDnn.BlobFromImage(frame, 1.0 / 255, new Size(inWidth, inHeight), new Scalar(0, 0, 0), false, false); + + net.SetInput(inpBlob); + + using var output = net.Forward(); + int H = output.Size(2); + int W = output.Size(3); + + var points = new List(); + + for (int n = 0; n < nPoints; n++) + { + // Probability map of corresponding body's part. + using var probMap = Mat.FromPixelData(H, W, MatType.CV_32F, output.Ptr(0, n)); + var p = new Point2f(-1, -1); + + Cv2.MinMaxLoc(probMap, out _, out var maxVal, out _, out var maxLoc); + + var x = (frameWidth * maxLoc.X) / W; + var y = (frameHeight * maxLoc.Y) / H; + + if (maxVal > thresh) + { + p = maxLoc; + p.X *= (float)frameWidth / W; + p.Y *= (float)frameHeight / H; + + Cv2.Circle(frameCopy, (int)p.X, (int)p.Y, 8, new Scalar(0, 255, 255), -1); + Cv2.PutText(frameCopy, Cv2.Format(n), new Point((int)p.X, (int)p.Y), HersheyFonts.HersheyComplex, 1, new Scalar(0, 0, 255), 2); + } + + points.Add((Point)p); + } + int nPairs = 14; //(POSE_PAIRS).Length / POSE_PAIRS[0].Length; + + for (int n = 0; n < nPairs; n++) + { + // lookup 2 connected body/hand parts + Point partA = points[posePairs[n][0]]; + Point partB = points[posePairs[n][1]]; + + if (partA.X <= 0 || partA.Y <= 0 || partB.X <= 0 || partB.Y <= 0) + continue; + + Cv2.Line(frame, partA, partB, new Scalar(0, 255, 255), 8); + Cv2.Circle(frame, partA.X, partA.Y, 8, new Scalar(0, 0, 255), -1); + Cv2.Circle(frame, partB.X, partB.Y, 8, new Scalar(0, 0, 255), -1); + } + + var finalOutput = outputLoc; + Cv2.ImWrite(finalOutput, frame); + } +} diff --git a/SamplesCore/Samples/SVMSample.cs b/SamplesCore/Samples/SVMSample.cs index 7866676..dc1d0a0 100644 --- a/SamplesCore/Samples/SVMSample.cs +++ b/SamplesCore/Samples/SVMSample.cs @@ -1,97 +1,92 @@ using System; using OpenCvSharp; using OpenCvSharp.ML; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// Support Vector Machine +/// +/// http://opencv.jp/sample/svm.html#svm +internal class SVMSample : ConsoleTestBase { - /// - /// Support Vector Machine - /// - /// http://opencv.jp/sample/svm.html#svm - internal class SVMSample : ISample + private static double Function(double x) { - private static double f(double x) + return x + 50 * Math.Sin(x / 15.0); + } + + public override void RunTest() + { + // Training data + var points = new Point2f[500]; + var responses = new int[points.Length]; + var rand = new Random(); + for (int i = 0; i < responses.Length; i++) { - return x + 50 * Math.Sin(x / 15.0); + float x = rand.Next(0, 300); + float y = rand.Next(0, 300); + points[i] = new Point2f(x, y); + responses[i] = (y > Function(x)) ? 1 : 2; } - public void Run() + // Show training data and f(x) + using (Mat pointsPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) { - // Training data - var points = new Point2f[500]; - var responses = new int[points.Length]; - var rand = new Random(); - for (int i = 0; i < responses.Length; i++) + for (int i = 0; i < points.Length; i++) { - float x = rand.Next(0, 300); - float y = rand.Next(0, 300); - points[i] = new Point2f(x, y); - responses[i] = (y > f(x)) ? 1 : 2; + int x = (int)points[i].X; + int y = (int)(300 - points[i].Y); + int res = responses[i]; + Scalar color = (res == 1) ? Scalar.Red : Scalar.GreenYellow; + pointsPlot.Circle(x, y, 2, color, -1); } - - // Show training data and f(x) - using (Mat pointsPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) + // f(x) + for (int x = 1; x < 300; x++) { - for (int i = 0; i < points.Length; i++) - { - int x = (int)points[i].X; - int y = (int)(300 - points[i].Y); - int res = responses[i]; - Scalar color = (res == 1) ? Scalar.Red : Scalar.GreenYellow; - pointsPlot.Circle(x, y, 2, color, -1); - } - // f(x) - for (int x = 1; x < 300; x++) - { - int y1 = (int)(300 - f(x - 1)); - int y2 = (int)(300 - f(x)); - pointsPlot.Line(x - 1, y1, x, y2, Scalar.LightBlue, 1); - } - Window.ShowImages(pointsPlot); + int y1 = (int)(300 - Function(x - 1)); + int y2 = (int)(300 - Function(x)); + pointsPlot.Line(x - 1, y1, x, y2, Scalar.LightBlue, 1); } + Window.ShowImages(pointsPlot); + } - // Train - var dataMat = new Mat(points.Length, 2, MatType.CV_32FC1, points); - var resMat = new Mat(responses.Length, 1, MatType.CV_32SC1, responses); - using (var svm = SVM.Create()) - { - // normalize data - dataMat /= 300.0; + // Train + var dataMat = Mat.FromPixelData(points.Length, 2, MatType.CV_32FC1, points); + var resMat = Mat.FromPixelData(responses.Length, 1, MatType.CV_32SC1, responses); + using var svm = SVM.Create(); + // normalize data + dataMat /= 300.0; - // SVM parameters - svm.Type = SVM.Types.CSvc; - svm.KernelType = SVM.KernelTypes.Rbf; - svm.TermCriteria = TermCriteria.Both(1000, 0.000001); - svm.Degree = 100.0; - svm.Gamma = 100.0; - svm.Coef0 = 1.0; - svm.C = 1.0; - svm.Nu = 0.5; - svm.P = 0.1; + // SVM parameters + svm.Type = SVM.Types.CSvc; + svm.KernelType = SVM.KernelTypes.Rbf; + svm.TermCriteria = TermCriteria.Both(1000, 0.000001); + svm.Degree = 100.0; + svm.Gamma = 100.0; + svm.Coef0 = 1.0; + svm.C = 1.0; + svm.Nu = 0.5; + svm.P = 0.1; - svm.Train(dataMat, SampleTypes.RowSample, resMat); + svm.Train(dataMat, SampleTypes.RowSample, resMat); - // Predict for each 300x300 pixel - using (Mat retPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) - { - for (int x = 0; x < 300; x++) - { - for (int y = 0; y < 300; y++) - { - float[] sample = {x / 300f, y / 300f}; - var sampleMat = new Mat(1, 2, MatType.CV_32FC1, sample); - int ret = (int)svm.Predict(sampleMat); - var plotRect = new Rect(x, 300 - y, 1, 1); - if (ret == 1) - retPlot.Rectangle(plotRect, Scalar.Red); - else if (ret == 2) - retPlot.Rectangle(plotRect, Scalar.GreenYellow); - } - } - Window.ShowImages(retPlot); - } + // Predict for each 300x300 pixel + using Mat retPlot = Mat.Zeros(300, 300, MatType.CV_8UC3); + for (int x = 0; x < 300; x++) + { + for (int y = 0; y < 300; y++) + { + float[] sample = { x / 300f, y / 300f }; + var sampleMat = Mat.FromPixelData(1, 2, MatType.CV_32FC1, sample); + int ret = (int)svm.Predict(sampleMat); + var plotRect = new Rect(x, 300 - y, 1, 1); + if (ret == 1) + retPlot.Rectangle(plotRect, Scalar.Red); + else if (ret == 2) + retPlot.Rectangle(plotRect, Scalar.GreenYellow); } } - + Window.ShowImages(retPlot); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/SeamlessClone.cs b/SamplesCore/Samples/SeamlessClone.cs new file mode 100644 index 0000000..d0fce0e --- /dev/null +++ b/SamplesCore/Samples/SeamlessClone.cs @@ -0,0 +1,44 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// cv::seamlessClone +/// +class SeamlessClone : ConsoleTestBase +{ + public override void RunTest() + { + Mat src = new Mat(ImagePath.Girl, ImreadModes.Color); + Mat dst = new Mat(ImagePath.Lenna, ImreadModes.Color); + Mat src0 = src.Resize(dst.Size(), 0, 0, InterpolationFlags.Lanczos4); + Mat mask = Mat.Zeros(src0.Size(), MatType.CV_8UC3); + + mask.Circle(200, 200, 100, Scalar.White, -1); + + Mat blend1 = new Mat(); + Mat blend2 = new Mat(); + Mat blend3 = new Mat(); + Cv2.SeamlessClone( + src0, dst, mask, new Point(260, 270), blend1, + SeamlessCloneMethods.NormalClone); + Cv2.SeamlessClone( + src0, dst, mask, new Point(260, 270), blend2, + SeamlessCloneMethods.MonochromeTransfer); + Cv2.SeamlessClone( + src0, dst, mask, new Point(260, 270), blend3, + SeamlessCloneMethods.MixedClone); + + using (new Window("src", src0)) + using (new Window("dst", dst)) + using (new Window("mask", mask)) + using (new Window("blend NormalClone", blend1)) + using (new Window("blend MonochromeTransfer", blend2)) + using (new Window("blend MixedClone", blend3)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/SiftSurfSample.cs b/SamplesCore/Samples/SiftSurfSample.cs new file mode 100644 index 0000000..58f3a02 --- /dev/null +++ b/SamplesCore/Samples/SiftSurfSample.cs @@ -0,0 +1,94 @@ +using OpenCvSharp; +using OpenCvSharp.Features2D; +using OpenCvSharp.XFeatures2D; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// SIFT and SURF sample +/// http://www.prism.gatech.edu/~ahuaman3/docs/OpenCV_Docs/tutorials/nonfree_1/nonfree_1.html +/// +class SiftSurfSample : ConsoleTestBase +{ + public override void RunTest() + { + using var src1 = new Mat(ImagePath.Match1, ImreadModes.Color); + using var src2 = new Mat(ImagePath.Match2, ImreadModes.Color); + + MatchBySift(src1, src2); + MatchBySurf(src1, src2); + } + + private void MatchBySift(Mat src1, Mat src2) + { + using var gray1 = new Mat(); + using var gray2 = new Mat(); + + Cv2.CvtColor(src1, gray1, ColorConversionCodes.BGR2GRAY); + Cv2.CvtColor(src2, gray2, ColorConversionCodes.BGR2GRAY); + + using var sift = SIFT.Create(); + + // Detect the keypoints and generate their descriptors using SIFT + using var descriptors1 = new Mat(); + using var descriptors2 = new Mat(); + sift.DetectAndCompute(gray1, null, out var keypoints1, descriptors1); + sift.DetectAndCompute(gray2, null, out var keypoints2, descriptors2); + + // Match descriptor vectors + using var bfMatcher = new BFMatcher(NormTypes.L2, false); + using var flannMatcher = new FlannBasedMatcher(); + DMatch[] bfMatches = bfMatcher.Match(descriptors1, descriptors2); + DMatch[] flannMatches = flannMatcher.Match(descriptors1, descriptors2); + + // Draw matches + using var bfView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); + using var flannView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, flannMatches, flannView); + + using (new Window("SIFT matching (by BFMather)", bfView)) + using (new Window("SIFT matching (by FlannBasedMatcher)", flannView)) + { + Cv2.WaitKey(); + } + } + + private void MatchBySurf(Mat src1, Mat src2) + { + using var gray1 = new Mat(); + using var gray2 = new Mat(); + + Cv2.CvtColor(src1, gray1, ColorConversionCodes.BGR2GRAY); + Cv2.CvtColor(src2, gray2, ColorConversionCodes.BGR2GRAY); + + using var surf = SURF.Create(200, 4, 2, true); + + // Detect the keypoints and generate their descriptors using SURF + using var descriptors1 = new Mat(); + using var descriptors2 = new Mat(); + surf.DetectAndCompute(gray1, null, out var keypoints1, descriptors1); + surf.DetectAndCompute(gray2, null, out var keypoints2, descriptors2); + + // Match descriptor vectors + using var bfMatcher = new BFMatcher(NormTypes.L2, false); + using var flannMatcher = new FlannBasedMatcher(); + DMatch[] bfMatches = bfMatcher.Match(descriptors1, descriptors2); + DMatch[] flannMatches = flannMatcher.Match(descriptors1, descriptors2); + + // Draw matches + using var bfView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); + using var flannView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, flannMatches, flannView); + + using (new Window("SURF matching (by BFMather)", bfView)) + using (new Window("SURF matching (by FlannBasedMatcher)", flannView)) + { + Cv2.WaitKey(); + } + } + +} diff --git a/SamplesCore/Samples/SimpleBlobDetectorSample.cs b/SamplesCore/Samples/SimpleBlobDetectorSample.cs new file mode 100644 index 0000000..b9d58cf --- /dev/null +++ b/SamplesCore/Samples/SimpleBlobDetectorSample.cs @@ -0,0 +1,72 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +internal class SimpleBlobDetectorSample : ConsoleTestBase +{ + public override void RunTest() + { + using var src = Cv2.ImRead(ImagePath.Shapes); + using var detectedCircles = new Mat(); + using var detectedOvals = new Mat(); + + // Invert the image. Shapes has a black background and SimpleBlobDetector doesn't seem to work well with that. + Cv2.BitwiseNot(src, src); + + // Parameters tuned to detect only circles + var circleParams = new SimpleBlobDetector.Params + { + MinThreshold = 10, + MaxThreshold = 230, + + // The area is the number of pixels in the blob. + FilterByArea = true, + MinArea = 500, + MaxArea = 50000, + + // Circularity is a ratio of the area to the perimeter. Polygons with more sides are more circular. + FilterByCircularity = true, + MinCircularity = 0.9f, + + // Convexity is the ratio of the area of the blob to the area of its convex hull. + FilterByConvexity = true, + MinConvexity = 0.95f, + + // A circle's inertia ratio is 1. A line's is 0. An oval is between 0 and 1. + FilterByInertia = true, + MinInertiaRatio = 0.95f + }; + + // Parameters tuned to find the ovals in the Shapes image. + var ovalParams = new SimpleBlobDetector.Params + { + MinThreshold = 10, + MaxThreshold = 230, + FilterByArea = true, + MinArea = 500, + // The ovals are the smallest blobs in Shapes, so we limit the max area to eliminate the larger blobs. + MaxArea = 10000, + FilterByCircularity = true, + MinCircularity = 0.58f, + FilterByConvexity = true, + MinConvexity = 0.96f, + FilterByInertia = true, + MinInertiaRatio = 0.1f + }; + + using var circleDetector = SimpleBlobDetector.Create(circleParams); + var circleKeyPoints = circleDetector.Detect(src); + Cv2.DrawKeypoints(src, circleKeyPoints, detectedCircles, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); + + using var ovalDetector = SimpleBlobDetector.Create(ovalParams); + var ovalKeyPoints = ovalDetector.Detect(src); + Cv2.DrawKeypoints(src, ovalKeyPoints, detectedOvals, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); + + using var w1 = new Window("Detected Circles", detectedCircles); + using var w2 = new Window("Detected Ovals", detectedOvals); + + Cv2.WaitKey(); + } +} diff --git a/SamplesCore/Samples/SolveEquation.cs b/SamplesCore/Samples/SolveEquation.cs index 3130e71..27a90c4 100644 --- a/SamplesCore/Samples/SolveEquation.cs +++ b/SamplesCore/Samples/SolveEquation.cs @@ -1,69 +1,68 @@ using System; using System.Collections.Generic; -using System.Linq; using OpenCvSharp; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class SolveEquation : ConsoleTestBase { - /// - /// - /// - class SolveEquation : ISample + public override void RunTest() { - public void Run() - { - ByMat(); - ByNormalArray(); + ByMat(); + ByNormalArray(); - Console.Read(); - } + Console.Read(); + } - /// - /// Solve equation AX = Y - /// - private void ByMat() - { - // x + y = 10 - // 2x + 3y = 26 - // (x=4, y=6) + /// + /// Solve equation AX = Y + /// + private void ByMat() + { + // x + y = 10 + // 2x + 3y = 26 + // (x=4, y=6) - double[,] av = {{1, 1}, + double[,] av = {{1, 1}, {2, 3}}; - double[] yv = {10, 26}; + double[] yv = { 10, 26 }; - using var a = new Mat(2, 2, MatType.CV_64FC1, av); - using var y = new Mat(2, 1, MatType.CV_64FC1, yv); - using var x = new Mat(); + using var a = Mat.FromPixelData(2, 2, MatType.CV_64FC1, av); + using var y = Mat.FromPixelData(2, 1, MatType.CV_64FC1, yv); + using var x = new Mat(); - Cv2.Solve(a, y, x, DecompTypes.LU); + Cv2.Solve(a, y, x, DecompTypes.LU); - Console.WriteLine("ByMat:"); - Console.WriteLine("X1 = {0}, X2 = {1}", x.At(0), x.At(1)); - } + Console.WriteLine("ByMat:"); + Console.WriteLine("X1 = {0}, X2 = {1}", x.At(0), x.At(1)); + } - /// - /// Solve equation AX = Y - /// - private void ByNormalArray() - { - // x + y = 10 - // 2x + 3y = 26 - // (x=4, y=6) + /// + /// Solve equation AX = Y + /// + private void ByNormalArray() + { + // x + y = 10 + // 2x + 3y = 26 + // (x=4, y=6) - double[,] a = {{1, 1}, + double[,] a = {{1, 1}, {2, 3}}; - double[] y = { 10, 26 }; + double[] y = { 10, 26 }; - var x = new List(); + var x = new List(); - Cv2.Solve( - InputArray.Create(a), InputArray.Create(y), - OutputArray.Create(x), - DecompTypes.LU); + Cv2.Solve( + InputArray.Create(a), InputArray.Create(y), + OutputArray.Create(x), + DecompTypes.LU); - Console.WriteLine("ByNormalArray:"); - Console.WriteLine("X1 = {0}, X2 = {1}", x[0], x[1]); - } + Console.WriteLine("ByNormalArray:"); + Console.WriteLine("X1 = {0}, X2 = {1}", x[0], x[1]); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/StarDetectorSample.cs b/SamplesCore/Samples/StarDetectorSample.cs new file mode 100644 index 0000000..76dd602 --- /dev/null +++ b/SamplesCore/Samples/StarDetectorSample.cs @@ -0,0 +1,44 @@ +using OpenCvSharp; +using OpenCvSharp.XFeatures2D; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Retrieves keypoints using the StarDetector algorithm. +/// +class StarDetectorSample : ConsoleTestBase +{ + public override void RunTest() + { + var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + + StarDetector detector = StarDetector.Create(45); + KeyPoint[] keypoints = detector.Detect(gray); + + if (keypoints != null) + { + var color = new Scalar(0, 255, 0); + foreach (KeyPoint kpt in keypoints) + { + float r = kpt.Size / 2; + Cv2.Circle(dst, (Point)kpt.Pt, (int)r, color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y - r), + color); + Cv2.Line(dst, + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y + r), + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y - r), + color); + } + } + + using (new Window("StarDetector features", dst)) + { + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCore/Samples/Stitching.cs b/SamplesCore/Samples/Stitching.cs new file mode 100644 index 0000000..16b29f9 --- /dev/null +++ b/SamplesCore/Samples/Stitching.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using OpenCvSharp; +using SampleBase.Console; + +namespace SamplesCore; + +class Stitching : ConsoleTestBase +{ + public override void RunTest() + { + Mat[] images = SelectStitchingImages(200, 200, 10); + + using var stitcher = Stitcher.Create(Stitcher.Mode.Scans); + using var pano = new Mat(); + + Console.Write("Stitching start..."); + // TODO: does not work?? + var status = stitcher.Stitch(images, pano); + Console.WriteLine(" finish (status:{0})", status); + + Window.ShowImages(pano); + + foreach (var image in images) + { + image.Dispose(); + } + } + + private static Mat[] SelectStitchingImages(int width, int height, int count) + { + using var source = new Mat(@"Data\Image\lenna.png", ImreadModes.Color); + using var result = source.Clone(); + + var rand = new Random(); + var mats = new List(); + for (int i = 0; i < count; i++) + { + int x1 = rand.Next(source.Cols - width); + int y1 = rand.Next(source.Rows - height); + int x2 = x1 + width; + int y2 = y1 + height; + + result.Line(new Point(x1, y1), new Point(x1, y2), new Scalar(0, 0, 255)); + result.Line(new Point(x1, y2), new Point(x2, y2), new Scalar(0, 0, 255)); + result.Line(new Point(x2, y2), new Point(x2, y1), new Scalar(0, 0, 255)); + result.Line(new Point(x2, y1), new Point(x1, y1), new Scalar(0, 0, 255)); + + using var m = source[new Rect(x1, y1, width, height)]; + mats.Add(m.Clone()); + } + + using (new Window("stitching", result)) + { + Cv2.WaitKey(); + } + + return mats.ToArray(); + } +} diff --git a/SamplesCore/Samples/Subdiv2DSample.cs b/SamplesCore/Samples/Subdiv2DSample.cs index 335c450..7e7b254 100644 --- a/SamplesCore/Samples/Subdiv2DSample.cs +++ b/SamplesCore/Samples/Subdiv2DSample.cs @@ -1,63 +1,63 @@ using System; using System.Linq; using OpenCvSharp; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// cv::Subdiv2D test +/// +class Subdiv2DSample : ConsoleTestBase { - /// - /// cv::Subdiv2D test - /// - class Subdiv2DSample : ISample + public override void RunTest() { - public void Run() - { - const int Size = 600; + const int Size = 600; - // Creates random point list - var rand = new Random(); - var points = Enumerable.Range(0, 100).Select(_ => - new Point2f(rand.Next(0, Size), rand.Next(0, Size))).ToArray(); + // Creates random point list + var rand = new Random(); + var points = Enumerable.Range(0, 100).Select(_ => + new Point2f(rand.Next(0, Size), rand.Next(0, Size))).ToArray(); - using var imgExpr = Mat.Zeros(Size, Size, MatType.CV_8UC3); - using var img = imgExpr.ToMat(); - foreach (var p in points) - { - img.Circle((Point)p, 4, Scalar.Red, -1); - } + using var imgExpr = Mat.Zeros(Size, Size, MatType.CV_8UC3); + using var img = imgExpr.ToMat(); + foreach (var p in points) + { + img.Circle((Point)p, 4, Scalar.Red, -1); + } - // Initializes Subdiv2D - using var subdiv = new Subdiv2D(); - subdiv.InitDelaunay(new Rect(0, 0, Size, Size)); - subdiv.Insert(points); + // Initializes Subdiv2D + using var subdiv = new Subdiv2D(); + subdiv.InitDelaunay(new Rect(0, 0, Size, Size)); + subdiv.Insert(points); - // Draws voronoi diagram - subdiv.GetVoronoiFacetList(null, out var facetList, out var facetCenters); + // Draws voronoi diagram + subdiv.GetVoronoiFacetList(null, out var facetList, out var facetCenters); - using var vonoroi = img.Clone(); - foreach (var list in facetList) - { - var before = list.Last(); - foreach (var p in list) - { - vonoroi.Line((Point)before, (Point)p, new Scalar(64, 255, 128), 1); - before = p; - } - } - - // Draws delaunay diagram - Vec4f[] edgeList = subdiv.GetEdgeList(); - using var delaunay = img.Clone(); - foreach (var edge in edgeList) + using var vonoroi = img.Clone(); + foreach (var list in facetList) + { + var before = list.Last(); + foreach (var p in list) { - var p1 = new Point(edge.Item0, edge.Item1); - var p2 = new Point(edge.Item2, edge.Item3); - delaunay.Line(p1, p2, new Scalar(64, 255, 128), 1); + vonoroi.Line((Point)before, (Point)p, new Scalar(64, 255, 128), 1); + before = p; } + } - Cv2.ImShow("voronoi", vonoroi); - Cv2.ImShow("delaunay", delaunay); - Cv2.WaitKey(); - Cv2.DestroyAllWindows(); + // Draws delaunay diagram + Vec4f[] edgeList = subdiv.GetEdgeList(); + using var delaunay = img.Clone(); + foreach (var edge in edgeList) + { + var p1 = new Point(edge.Item0, edge.Item1); + var p2 = new Point(edge.Item2, edge.Item3); + delaunay.Line(p1, p2, new Scalar(64, 255, 128), 1); } + + Cv2.ImShow("voronoi", vonoroi); + Cv2.ImShow("delaunay", delaunay); + Cv2.WaitKey(); + Cv2.DestroyAllWindows(); } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/SuperResolutionSample.cs b/SamplesCore/Samples/SuperResolutionSample.cs new file mode 100644 index 0000000..d1bedca --- /dev/null +++ b/SamplesCore/Samples/SuperResolutionSample.cs @@ -0,0 +1,40 @@ +using System; +using OpenCvSharp; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// +/// +class SuperResolutionSample : ConsoleTestBase +{ + public override void RunTest() + { + var capture = new VideoCapture(); + capture.Set(VideoCaptureProperties.FrameWidth, 640); + capture.Set(VideoCaptureProperties.FrameHeight, 480); + capture.Open(-1); + if (!capture.IsOpened()) + throw new Exception("capture initialization failed"); + + var fs = FrameSource.CreateFrameSource_Camera(-1); + var sr = SuperResolution.CreateBTVL1(); + sr.SetInput(fs); + + using var normalWindow = new Window("normal"); + using var srWindow = new Window("super resolution"); + var normalFrame = new Mat(); + var srFrame = new Mat(); + while (true) + { + capture.Read(normalFrame); + sr.NextFrame(srFrame); + if (normalFrame.Empty() || srFrame.Empty()) + break; + normalWindow.ShowImage(normalFrame); + srWindow.ShowImage(srFrame); + Cv2.WaitKey(100); + } + } +} diff --git a/SamplesCore/Samples/VideoCaptureSample.cs b/SamplesCore/Samples/VideoCaptureSample.cs index b47fd57..12d0eba 100644 --- a/SamplesCore/Samples/VideoCaptureSample.cs +++ b/SamplesCore/Samples/VideoCaptureSample.cs @@ -1,36 +1,37 @@ using System; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class VideoCaptureSample : ConsoleTestBase { - /// - /// - /// - class VideoCaptureSample : ISample + public override void RunTest() { - public void Run() - { // Opens MP4 file (ffmpeg is probably needed) - using var capture = new VideoCapture(FilePath.Movie.Bach); + using var capture = new VideoCapture(MoviePath.Bach); + if (!capture.IsOpened()) + return; int sleepTime = (int)Math.Round(1000 / capture.Fps); - using (var window = new Window("capture")) - { - // Frame image buffer - var image = new Mat(); + using var window = new Window("capture"); + // Frame image buffer + var image = new Mat(); - // When the movie playback reaches end, Mat.data becomes NULL. - while (true) - { - capture.Read(image); // same as cvQueryFrame - if(image.Empty()) - break; + // When the movie playback reaches end, Mat.data becomes NULL. + while (true) + { + capture.Read(image); // same as cvQueryFrame + if(image.Empty()) + break; - window.ShowImage(image); - Cv2.WaitKey(sleepTime); - } + window.ShowImage(image); + Cv2.WaitKey(sleepTime); } } - } -} \ No newline at end of file +} diff --git a/SamplesCore/Samples/VideoWriterSample.cs b/SamplesCore/Samples/VideoWriterSample.cs index a0baeba..5e624a5 100644 --- a/SamplesCore/Samples/VideoWriterSample.cs +++ b/SamplesCore/Samples/VideoWriterSample.cs @@ -1,67 +1,68 @@ using System; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCore +namespace SamplesCore; + +/// +/// +/// +class VideoWriterSample : ConsoleTestBase { - /// - /// - /// - class VideoWriterSample : ISample + public override void RunTest() { - public void Run() - { - const string OutVideoFile = "out.avi"; + const string OutVideoFile = "out.avi"; - // Opens MP4 file (ffmpeg is probably needed) - using var capture = new VideoCapture(FilePath.Movie.Bach); + // Opens MP4 file (ffmpeg is probably needed) + using var capture = new VideoCapture(MoviePath.Bach); - // Read movie frames and write them to VideoWriter - var dsize = new Size(640, 480); - using (var writer = new VideoWriter(OutVideoFile, -1, capture.Fps, dsize)) + // Read movie frames and write them to VideoWriter + var dsize = new Size(640, 480); + using (var writer = new VideoWriter(OutVideoFile, -1, capture.Fps, dsize)) + { + Console.WriteLine("Converting each movie frames..."); + using var frame = new Mat(); + while (true) { - Console.WriteLine("Converting each movie frames..."); - using var frame = new Mat(); - while(true) - { - // Read image - capture.Read(frame); - if(frame.Empty()) - break; + // Read image + capture.Read(frame); + if (frame.Empty()) + break; - Console.CursorLeft = 0; - Console.Write("{0} / {1}", capture.PosFrames, capture.FrameCount); + Console.CursorLeft = 0; + Console.Write("{0} / {1}", capture.PosFrames, capture.FrameCount); - // grayscale -> canny -> resize - using var gray = new Mat(); - using var canny = new Mat(); - using var dst = new Mat(); - Cv2.CvtColor(frame, gray, ColorConversionCodes.BGR2GRAY); - Cv2.Canny(gray, canny, 100, 180); - Cv2.Resize(canny, dst, dsize, 0, 0, InterpolationFlags.Linear); - // Write mat to VideoWriter - writer.Write(dst); - } - Console.WriteLine(); + // grayscale -> canny -> resize + using var gray = new Mat(); + using var canny = new Mat(); + using var dst = new Mat(); + Cv2.CvtColor(frame, gray, ColorConversionCodes.BGR2GRAY); + Cv2.Canny(gray, canny, 100, 180); + Cv2.Resize(canny, dst, dsize, 0, 0, InterpolationFlags.Linear); + // Write mat to VideoWriter + writer.Write(dst); } + Console.WriteLine(); + } - // Watch result movie - using (var capture2 = new VideoCapture(OutVideoFile)) - using (var window = new Window("result")) - { - int sleepTime = (int)(1000 / capture.Fps); + // Watch result movie + using (var capture2 = new VideoCapture(OutVideoFile)) + using (var window = new Window("result")) + { + int sleepTime = (int)(1000 / capture.Fps); - using var frame = new Mat(); - while (true) - { - capture2.Read(frame); - if(frame.Empty()) - break; + using var frame = new Mat(); + while (true) + { + capture2.Read(frame); + if (frame.Empty()) + break; - window.ShowImage(frame); - Cv2.WaitKey(sleepTime); - } + window.ShowImage(frame); + Cv2.WaitKey(sleepTime); } } - } -} \ No newline at end of file + +} diff --git a/SamplesCore/Samples/WatershedSample.cs b/SamplesCore/Samples/WatershedSample.cs new file mode 100644 index 0000000..3f060bb --- /dev/null +++ b/SamplesCore/Samples/WatershedSample.cs @@ -0,0 +1,60 @@ +using System; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesCore; + +/// +/// Watershed algorithm sample +/// +/// http://opencv.jp/sample/segmentation_and_connection.html#watershed +public class WatershedSample : ConsoleTestBase +{ + public override void RunTest() + { + using var srcImg = Cv2.ImRead(ImagePath.Lenna, ImreadModes.AnyDepth | ImreadModes.AnyColor); + using var markers = new Mat(srcImg.Size(), MatType.CV_32SC1, Scalar.All(0)); + + using (var window = new Window("image", srcImg)) + { + using var dspImg = srcImg.Clone(); + + // Mouse event + int seedNum = 0; + window.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => + { + if (ev == MouseEventTypes.LButtonDown) + { + seedNum++; + var pt = new Point(x, y); + markers.Circle(pt, 10, Scalar.All(seedNum), Cv2.FILLED, LineTypes.Link8); + dspImg.Circle(pt, 10, Scalar.White, 3, LineTypes.Link8); + window.Image = dspImg; + } + }); + Window.WaitKey(); + } + + Cv2.Watershed(srcImg, markers); + + // draws watershed + using var dstImg = srcImg.Clone(); + for (int y = 0; y < markers.Height; y++) + { + for (int x = 0; x < markers.Width; x++) + { + int idx = markers.Get(y, x); + if (idx == -1) + { + dstImg.Rectangle(new Rect(x, y, 2, 2), Scalar.Red, -1); + } + } + } + + using (new Window("watershed transform", dstImg)) + { + Window.WaitKey(); + } + } +} diff --git a/SamplesCore/SamplesCore.csproj b/SamplesCore/SamplesCore.csproj index 13d8ed8..2c60a8d 100644 --- a/SamplesCore/SamplesCore.csproj +++ b/SamplesCore/SamplesCore.csproj @@ -1,11 +1,10 @@ - + - netcoreapp3.1 + net8.0;net48; true SamplesCore Exe - true @@ -13,57 +12,31 @@ false false false + 11 - - - - PreserveNewest - - - PreserveNewest - + + + + + + + + + + - + - - + + - + - - PreserveNewest - + - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - Never - - - PreserveNewest - - + PreserveNewest diff --git a/SampleBase/app.config b/SamplesLegacy/App.config similarity index 66% rename from SampleBase/app.config rename to SamplesLegacy/App.config index 72259e8..91126fc 100644 --- a/SampleBase/app.config +++ b/SamplesLegacy/App.config @@ -1,10 +1,13 @@  + + + - + diff --git a/SamplesLegacy/Program.cs b/SamplesLegacy/Program.cs new file mode 100644 index 0000000..7e4ef9e --- /dev/null +++ b/SamplesLegacy/Program.cs @@ -0,0 +1,67 @@ +using SampleBase; +using SampleBase.Interfaces; +using System; +using SampleBase.Console; + +namespace SamplesLegacy +{ + public static class Program + { + [STAThread] + public static void Main(string[] args) + { + Console.WriteLine("Runtime Version = {0}", Environment.Version); + + ITestManager testManager = new ConsoleTestManager(); + + testManager.AddTests( + new ArucoSample(), + new BgSubtractorMOG(), + new BinarizerSample(), + new BRISKSample(), + new CaffeSample(), + new CameraCaptureSample(), + new ClaheSample(), + new ConnectedComponentsSample(), + new DFT(), + new DnnSuperresSample(), + new DrawBestMatchRectangle(), + new FaceDetection(), + new FaceDetectionDNN(), + new FASTSample(), + new FlannSample(), + new FREAKSample(), + new HandPose(), + new HistSample(), + new HOGSample(), + new HoughLinesSample(), + new InpaintSample(), + new KAZESample(), + new KAZESample2(), + new MatOperations(), + new MDS(), + new MergeSplitSample(), + new MorphologySample(), + new MSERSample(), + new NormalArrayOperations(), + new OpenVinoFaceDetection(), + new PhotoMethods(), + new PixelAccess(), + new Pose(), + new SeamlessClone(), + new SiftSurfSample(), + new SimpleBlobDetectorSample(), + new SolveEquation(), + new StarDetectorSample(), + new Stitching(), + new Subdiv2DSample(), + new SuperResolutionSample(), + new SVMSample(), + new VideoWriterSample(), + new VideoCaptureSample(), + new WatershedSample()); + + testManager.ShowTestEntrance(); + } + } +} diff --git a/SamplesLegacy/Properties/AssemblyInfo.cs b/SamplesLegacy/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..0bd7921 --- /dev/null +++ b/SamplesLegacy/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 +// 制御されます。アセンブリに関連付けられている情報を変更するには、 +// これらの属性値を変更します。 +[assembly: AssemblyTitle("SamplesLegacy")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SamplesLegacy")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントから +// 参照できなくなります。COM からこのアセンブリ内の型にアクセスする必要がある場合は、 +// その型の ComVisible 属性を true に設定します。 +[assembly: ComVisible(false)] + +// このプロジェクトが COM に公開される場合、次の GUID が typelib の ID になります +[assembly: Guid("6b44a902-63d5-4191-8a0d-e37e75e49599")] + +// アセンブリのバージョン情報は次の 4 つの値で構成されています: +// +// メジャー バージョン +// マイナー バージョン +// ビルド番号 +// リビジョン +// +// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます +// 既定値にすることができます: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SamplesCS/Samples/ArucoSample.cs b/SamplesLegacy/Samples/ArucoSample.cs similarity index 89% rename from SamplesCS/Samples/ArucoSample.cs rename to SamplesLegacy/Samples/ArucoSample.cs index 39e8c25..b2711b4 100644 --- a/SamplesCS/Samples/ArucoSample.cs +++ b/SamplesLegacy/Samples/ArucoSample.cs @@ -1,80 +1,81 @@ -using System; -using System.Collections.Generic; -using OpenCvSharp; -using OpenCvSharp.Aruco; -using SampleBase; - -namespace SamplesCS -{ - public class ArucoSample : ISample - { - public void Run() - { - // The locations of the markers in the image at FilePath.Image.Aruco. - const int upperLeftMarkerId = 160; - const int upperRightMarkerId = 268; - const int lowerRightMarkerId = 176; - const int lowerLeftMarkerId = 168; - - using var src = Cv2.ImRead(FilePath.Image.Aruco); - - var detectorParameters = DetectorParameters.Create(); - detectorParameters.CornerRefinementMethod = CornerRefineMethod.Subpix; - detectorParameters.CornerRefinementWinSize = 9; - - using var dictionary = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict4X4_1000); - - CvAruco.DetectMarkers(src, dictionary, out var corners, out var ids, detectorParameters, out var rejectedPoints); - - using var detectedMarkers = src.Clone(); - CvAruco.DrawDetectedMarkers(detectedMarkers, corners, ids, Scalar.Crimson); - - // Find the index of the four markers in the ids array. We'll use this same index into the - // corners array to find the corners of each marker. - var upperLeftCornerIndex = Array.FindIndex(ids, id => id == upperLeftMarkerId); - var upperRightCornerIndex = Array.FindIndex(ids, id => id == upperRightMarkerId); - var lowerRightCornerIndex = Array.FindIndex(ids, id => id == lowerRightMarkerId); - var lowerLeftCornerIndex = Array.FindIndex(ids, id => id == lowerLeftMarkerId); - - // Make sure we found all four markers. - if (upperLeftCornerIndex < 0 || upperRightCornerIndex < 0 - || lowerRightCornerIndex < 0 || lowerLeftCornerIndex < 0) - { - return; - } - - // Marker corners are stored clockwise beginning with the upper-left corner. - // Get the first (upper-left) corner of the upper-left marker. - var upperLeftPixel = corners[upperLeftCornerIndex][0]; - // Get the second (upper-right) corner of the upper-right marker. - var upperRightPixel = corners[upperRightCornerIndex][1]; - // Get the third (lower-right) corner of the lower-right marker. - var lowerRightPixel = corners[lowerRightCornerIndex][2]; - // Get the fourth (lower-left) corner of the lower-left marker. - var lowerLeftPixel = corners[lowerLeftCornerIndex][3]; - - // Create coordinates for passing to GetPerspectiveTransform - var sourceCoordinates = new List - { - upperLeftPixel, upperRightPixel, lowerRightPixel, lowerLeftPixel - }; - var destinationCoordinates = new List - { - new Point2f(0, 0), - new Point2f(1024, 0), - new Point2f(1024, 1024), - new Point2f(0, 1024), - }; - - using var transform = Cv2.GetPerspectiveTransform(sourceCoordinates, destinationCoordinates); - using var normalizedImage = new Mat(); - Cv2.WarpPerspective(src, normalizedImage, transform, new Size(1024, 1024)); - - using var _1 = new Window("Original Image", WindowMode.AutoSize, src); - using var _2 = new Window($"Found {ids.Length} Markers", detectedMarkers); - using var _3 = new Window("Normalized Image", normalizedImage); - - Cv2.WaitKey(); - } - } -} +using System; +using System.Collections.Generic; +using OpenCvSharp; +using OpenCvSharp.Aruco; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + public class ArucoSample : ConsoleTestBase + { + public override void RunTest() + { + // The locations of the markers in the image at FilePath.Image.Aruco. + const int upperLeftMarkerId = 160; + const int upperRightMarkerId = 268; + const int lowerRightMarkerId = 176; + const int lowerLeftMarkerId = 168; + + using var src = Cv2.ImRead(ImagePath.Aruco); + + var detectorParameters = new DetectorParameters(); + detectorParameters.CornerRefinementMethod = CornerRefineMethod.Subpix; + detectorParameters.CornerRefinementWinSize = 9; + + using var dictionary = CvAruco.GetPredefinedDictionary(PredefinedDictionaryName.Dict4X4_1000); + + CvAruco.DetectMarkers(src, dictionary, out var corners, out var ids, detectorParameters, out var rejectedPoints); + + using var detectedMarkers = src.Clone(); + CvAruco.DrawDetectedMarkers(detectedMarkers, corners, ids, Scalar.Crimson); + + // Find the index of the four markers in the ids array. We'll use this same index into the + // corners array to find the corners of each marker. + var upperLeftCornerIndex = Array.FindIndex(ids, id => id == upperLeftMarkerId); + var upperRightCornerIndex = Array.FindIndex(ids, id => id == upperRightMarkerId); + var lowerRightCornerIndex = Array.FindIndex(ids, id => id == lowerRightMarkerId); + var lowerLeftCornerIndex = Array.FindIndex(ids, id => id == lowerLeftMarkerId); + + // Make sure we found all four markers. + if (upperLeftCornerIndex < 0 || upperRightCornerIndex < 0 + || lowerRightCornerIndex < 0 || lowerLeftCornerIndex < 0) + { + return; + } + + // Marker corners are stored clockwise beginning with the upper-left corner. + // Get the first (upper-left) corner of the upper-left marker. + var upperLeftPixel = corners[upperLeftCornerIndex][0]; + // Get the second (upper-right) corner of the upper-right marker. + var upperRightPixel = corners[upperRightCornerIndex][1]; + // Get the third (lower-right) corner of the lower-right marker. + var lowerRightPixel = corners[lowerRightCornerIndex][2]; + // Get the fourth (lower-left) corner of the lower-left marker. + var lowerLeftPixel = corners[lowerLeftCornerIndex][3]; + + // Create coordinates for passing to GetPerspectiveTransform + var sourceCoordinates = new List + { + upperLeftPixel, upperRightPixel, lowerRightPixel, lowerLeftPixel + }; + var destinationCoordinates = new List + { + new Point2f(0, 0), + new Point2f(1024, 0), + new Point2f(1024, 1024), + new Point2f(0, 1024), + }; + + using var transform = Cv2.GetPerspectiveTransform(sourceCoordinates, destinationCoordinates); + using var normalizedImage = new Mat(); + Cv2.WarpPerspective(src, normalizedImage, transform, new Size(1024, 1024)); + + using var _1 = new Window("Original Image", src, WindowFlags.AutoSize); + using var _2 = new Window($"Found {ids.Length} Markers", detectedMarkers); + using var _3 = new Window("Normalized Image", normalizedImage); + + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCS/Samples/BRISKSample.cs b/SamplesLegacy/Samples/BRISKSample.cs similarity index 76% rename from SamplesCS/Samples/BRISKSample.cs rename to SamplesLegacy/Samples/BRISKSample.cs index b2bfb29..b89d530 100644 --- a/SamplesCS/Samples/BRISKSample.cs +++ b/SamplesLegacy/Samples/BRISKSample.cs @@ -1,19 +1,20 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Retrieves keypoints using the BRISK algorithm. /// - class BRISKSample : ISample + class BRISKSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - var gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); - var dst = new Mat(FilePath.Image.Lenna, ImreadModes.Color); + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); - BRISK brisk = BRISK.Create(); + using var brisk = BRISK.Create(); KeyPoint[] keypoints = brisk.Detect(gray); if (keypoints != null) @@ -25,11 +26,11 @@ public void Run() Cv2.Circle(dst, (Point)kpt.Pt, (int)r, color); Cv2.Line(dst, (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y + r), - (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y - r), + (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y - r), color); Cv2.Line(dst, (Point)new Point2f(kpt.Pt.X - r, kpt.Pt.Y + r), - (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y - r), + (Point)new Point2f(kpt.Pt.X + r, kpt.Pt.Y - r), color); } } @@ -40,4 +41,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/BgSubtractorMOG.cs b/SamplesLegacy/Samples/BgSubtractorMOG.cs new file mode 100644 index 0000000..37e65ae --- /dev/null +++ b/SamplesLegacy/Samples/BgSubtractorMOG.cs @@ -0,0 +1,31 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + class BgSubtractorMOG : ConsoleTestBase + { + public override void RunTest() + { + using var capture = new VideoCapture(MoviePath.Bach); + using var mog = BackgroundSubtractorMOG.Create(); + using var windowSrc = new Window("src"); + using var windowDst = new Window("dst"); + + using var frame = new Mat(); + using var fg = new Mat(); + while (true) + { + capture.Read(frame); + if (frame.Empty()) + break; + mog.Apply(frame, fg, 0.01); + + windowSrc.Image = frame; + windowDst.Image = fg; + Cv2.WaitKey(50); + } + } + } +} diff --git a/SamplesCS/Samples/BinarizerSample.cs b/SamplesLegacy/Samples/BinarizerSample.cs similarity index 59% rename from SamplesCS/Samples/BinarizerSample.cs rename to SamplesLegacy/Samples/BinarizerSample.cs index ffaf28b..0bf9f30 100644 --- a/SamplesCS/Samples/BinarizerSample.cs +++ b/SamplesLegacy/Samples/BinarizerSample.cs @@ -1,20 +1,19 @@ using System; using System.Diagnostics; using OpenCvSharp; -using OpenCvSharp.Extensions; using OpenCvSharp.XImgProc; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { - internal class BinarizerSample : ISample + internal class BinarizerSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - using var src = Cv2.ImRead(FilePath.Image.Binarization, ImreadModes.Grayscale); + using var src = Cv2.ImRead(ImagePath.Binarization, ImreadModes.Grayscale); using var niblack = new Mat(); using var sauvola = new Mat(); - using var bernsen = new Mat(); using var nick = new Mat(); int kernelSize = 51; @@ -29,21 +28,15 @@ public void Run() sw.Stop(); Console.WriteLine($"Sauvola {sw.ElapsedMilliseconds} ms"); - sw.Restart(); - Binarizer.Bernsen(src, bernsen, kernelSize, 50, 200); - sw.Stop(); - Console.WriteLine($"Bernsen {sw.ElapsedMilliseconds} ms"); - sw.Restart(); CvXImgProc.NiblackThreshold(src, nick, 255, ThresholdTypes.Binary, kernelSize, -0.14, LocalBinarizationMethods.Nick); sw.Stop(); Console.WriteLine($"Nick {sw.ElapsedMilliseconds} ms"); - using (new Window("src", WindowMode.AutoSize, src)) - using (new Window("Niblack", WindowMode.AutoSize, niblack)) - using (new Window("Sauvola", WindowMode.AutoSize, sauvola)) - using (new Window("Bernsen", WindowMode.AutoSize, bernsen)) - using (new Window("Nick", WindowMode.AutoSize, nick)) + using (new Window("src", src, WindowFlags.AutoSize)) + using (new Window("Niblack", niblack, WindowFlags.AutoSize)) + using (new Window("Sauvola", sauvola, WindowFlags.AutoSize)) + using (new Window("Nick", nick, WindowFlags.AutoSize)) { Cv2.WaitKey(); } diff --git a/SamplesLegacy/Samples/CaffeSample.cs b/SamplesLegacy/Samples/CaffeSample.cs new file mode 100644 index 0000000..8b36f47 --- /dev/null +++ b/SamplesLegacy/Samples/CaffeSample.cs @@ -0,0 +1,81 @@ +using System; +using System.IO; +using System.Linq; +using System.Net; +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// https://docs.opencv.org/3.3.0/d5/de7/tutorial_dnn_googlenet.html + /// + class CaffeSample : ConsoleTestBase + { + public override void RunTest() + { + const string protoTxt = @"Data\Text\bvlc_googlenet.prototxt"; + const string caffeModel = "bvlc_googlenet.caffemodel"; + const string synsetWords = @"Data\Text\synset_words.txt"; + var classNames = File.ReadAllLines(synsetWords) + .Select(line => line.Split(' ').Last()) + .ToArray(); + + Console.Write("Downloading Caffe Model..."); + PrepareModel(caffeModel); + Console.WriteLine(" Done"); + + using var net = CvDnn.ReadNetFromCaffe(protoTxt, caffeModel); + using var img = new Mat(@"Data\Image\space_shuttle.jpg"); + Console.WriteLine("Layer names: {0}", string.Join(", ", net.GetLayerNames())); + Console.WriteLine(); + + // Convert Mat to batch of images + using var inputBlob = CvDnn.BlobFromImage(img, 1, new Size(224, 224), new Scalar(104, 117, 123)); + net.SetInput(inputBlob, "data"); + using var prob = net.Forward("prob"); + // find the best class + GetMaxClass(prob, out int classId, out double classProb); + Console.WriteLine("Best class: #{0} '{1}'", classId, classNames[classId]); + Console.WriteLine("Probability: {0:P2}", classProb); + + Console.WriteLine("Press any key to exit"); + Console.Read(); + } + + private static byte[] DownloadBytes(string url) + { + var client = WebRequest.CreateHttp(url); + using var response = client.GetResponseAsync().GetAwaiter().GetResult(); + using var responseStream = response.GetResponseStream(); + using var memory = new MemoryStream(); + responseStream.CopyTo(memory); + return memory.ToArray(); + } + + private static void PrepareModel(string fileName) + { + if (!File.Exists(fileName)) + { + var contents = DownloadBytes("http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel"); + File.WriteAllBytes(fileName, contents); + } + } + + /// + /// Find best class for the blob (i. e. class with maximal probability) + /// + /// + /// + /// + private static void GetMaxClass(Mat probBlob, out int classId, out double classProb) + { + // reshape the blob to 1x1000 matrix + using var probMat = probBlob.Reshape(1, 1); + Cv2.MinMaxLoc(probMat, out _, out classProb, out _, out var classNumber); + classId = classNumber.X; + } + } +} diff --git a/SamplesLegacy/Samples/CameraCaptureSample.cs b/SamplesLegacy/Samples/CameraCaptureSample.cs new file mode 100644 index 0000000..3b7b962 --- /dev/null +++ b/SamplesLegacy/Samples/CameraCaptureSample.cs @@ -0,0 +1,42 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// + /// + class CameraCaptureSample : ConsoleTestBase + { + public override void RunTest() + { + using var capture = new VideoCapture(0, VideoCaptureAPIs.DSHOW); + if (!capture.IsOpened()) + return; + + capture.FrameWidth = 1920; + capture.FrameHeight = 1280; + capture.AutoFocus = true; + + const int sleepTime = 10; + + using var window = new Window("capture"); + var image = new Mat(); + + while (true) + { + capture.Read(image); + if (image.Empty()) + break; + + window.ShowImage(image); + int c = Cv2.WaitKey(sleepTime); + if (c >= 0) + { + break; + } + } + } + } +} diff --git a/SamplesCS/Samples/ClaheSample.cs b/SamplesLegacy/Samples/ClaheSample.cs similarity index 52% rename from SamplesCS/Samples/ClaheSample.cs rename to SamplesLegacy/Samples/ClaheSample.cs index 48a549e..d71db56 100644 --- a/SamplesCS/Samples/ClaheSample.cs +++ b/SamplesLegacy/Samples/ClaheSample.cs @@ -1,23 +1,19 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using OpenCvSharp; +using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { - class ClaheSample : ISample + class ClaheSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat src = new Mat(FilePath.Image.TsukubaLeft, ImreadModes.Grayscale); - Mat dst1 = new Mat(); - Mat dst2 = new Mat(); - Mat dst3 = new Mat(); + using var src = new Mat(ImagePath.TsukubaLeft, ImreadModes.Grayscale); + using var dst1 = new Mat(); + using var dst2 = new Mat(); + using var dst3 = new Mat(); - using (CLAHE clahe = Cv2.CreateCLAHE()) + using (var clahe = Cv2.CreateCLAHE()) { clahe.ClipLimit = 20; clahe.Apply(src, dst1); diff --git a/SamplesCS/Samples/ConnectedComponentsSample.cs b/SamplesLegacy/Samples/ConnectedComponentsSample.cs similarity index 60% rename from SamplesCS/Samples/ConnectedComponentsSample.cs rename to SamplesLegacy/Samples/ConnectedComponentsSample.cs index e61653a..89dc5fc 100644 --- a/SamplesCS/Samples/ConnectedComponentsSample.cs +++ b/SamplesLegacy/Samples/ConnectedComponentsSample.cs @@ -1,22 +1,24 @@ using System.Linq; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class ConnectedComponentsSample : ISample + class ConnectedComponentsSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat src = new Mat("Data/Image/shapes.png", ImreadModes.Color); - Mat gray = src.CvtColor(ColorConversionCodes.BGR2GRAY); - Mat binary = gray.Threshold(0, 255, ThresholdTypes.Otsu | ThresholdTypes.Binary); - Mat labelView = src.EmptyClone(); - Mat rectView = binary.CvtColor(ColorConversionCodes.GRAY2BGR); + using var src = new Mat(ImagePath.Shapes, ImreadModes.Color); + using var gray = src.CvtColor(ColorConversionCodes.BGR2GRAY); + using var binary = gray.Threshold(0, 255, ThresholdTypes.Otsu | ThresholdTypes.Binary); + using var labelView = src.EmptyClone(); + using var rectView = binary.CvtColor(ColorConversionCodes.GRAY2BGR); - ConnectedComponents cc = Cv2.ConnectedComponentsEx(binary); + var cc = Cv2.ConnectedComponentsEx(binary); if (cc.LabelCount <= 1) return; @@ -44,4 +46,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/DFT.cs b/SamplesLegacy/Samples/DFT.cs similarity index 64% rename from SamplesCS/Samples/DFT.cs rename to SamplesLegacy/Samples/DFT.cs index 81880d2..c9ebcf4 100644 --- a/SamplesCS/Samples/DFT.cs +++ b/SamplesLegacy/Samples/DFT.cs @@ -1,64 +1,62 @@ -using System; -using OpenCvSharp; +using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// DFT, inverse DFT /// http://stackoverflow.com/questions/19761526/how-to-do-inverse-dft-in-opencv /// -// ReSharper disable once InconsistentNaming - class DFT : ISample + class DFT : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat img = Cv2.ImRead(FilePath.Image.Lenna, ImreadModes.Grayscale); + using var img = Cv2.ImRead(ImagePath.Lenna, ImreadModes.Grayscale); // expand input image to optimal size - Mat padded = new Mat(); + using var padded = new Mat(); int m = Cv2.GetOptimalDFTSize(img.Rows); int n = Cv2.GetOptimalDFTSize(img.Cols); // on the border add zero values Cv2.CopyMakeBorder(img, padded, 0, m - img.Rows, 0, n - img.Cols, BorderTypes.Constant, Scalar.All(0)); // Add to the expanded another plane with zeros - Mat paddedF32 = new Mat(); + using var paddedF32 = new Mat(); padded.ConvertTo(paddedF32, MatType.CV_32F); Mat[] planes = { paddedF32, Mat.Zeros(padded.Size(), MatType.CV_32F) }; - Mat complex = new Mat(); + using var complex = new Mat(); Cv2.Merge(planes, complex); // this way the result may fit in the source matrix - Mat dft = new Mat(); + using var dft = new Mat(); Cv2.Dft(complex, dft); // compute the magnitude and switch to logarithmic scale // => log(1 + sqrt(Re(DFT(I))^2 + Im(DFT(I))^2)) - Mat[] dftPlanes; - Cv2.Split(dft, out dftPlanes); // planes[0] = Re(DFT(I), planes[1] = Im(DFT(I)) + Cv2.Split(dft, out var dftPlanes); // planes[0] = Re(DFT(I), planes[1] = Im(DFT(I)) // planes[0] = magnitude - Mat magnitude = new Mat(); + using var magnitude = new Mat(); Cv2.Magnitude(dftPlanes[0], dftPlanes[1], magnitude); - magnitude += Scalar.All(1); // switch to logarithmic scale - Cv2.Log(magnitude, magnitude); + using Mat magnitude1 = magnitude + Scalar.All(1); // switch to logarithmic scale + Cv2.Log(magnitude1, magnitude1); // crop the spectrum, if it has an odd number of rows or columns - Mat spectrum = magnitude[ - new Rect(0, 0, magnitude.Cols & -2, magnitude.Rows & -2)]; + using var spectrum = magnitude1[ + new Rect(0, 0, magnitude1.Cols & -2, magnitude1.Rows & -2)]; // rearrange the quadrants of Fourier image so that the origin is at the image center int cx = spectrum.Cols / 2; int cy = spectrum.Rows / 2; - Mat q0 = new Mat(spectrum, new Rect(0, 0, cx, cy)); // Top-Left - Create a ROI per quadrant - Mat q1 = new Mat(spectrum, new Rect(cx, 0, cx, cy)); // Top-Right - Mat q2 = new Mat(spectrum, new Rect(0, cy, cx, cy)); // Bottom-Left - Mat q3 = new Mat(spectrum, new Rect(cx, cy, cx, cy)); // Bottom-Right + using var q0 = new Mat(spectrum, new Rect(0, 0, cx, cy)); // Top-Left - Create a ROI per quadrant + using var q1 = new Mat(spectrum, new Rect(cx, 0, cx, cy)); // Top-Right + using var q2 = new Mat(spectrum, new Rect(0, cy, cx, cy)); // Bottom-Left + using var q3 = new Mat(spectrum, new Rect(cx, cy, cx, cy)); // Bottom-Right // swap quadrants (Top-Left with Bottom-Right) - Mat tmp = new Mat(); + using var tmp = new Mat(); q0.CopyTo(tmp); q3.CopyTo(q0); tmp.CopyTo(q3); @@ -77,13 +75,14 @@ public void Run() Cv2.ImShow("Spectrum Magnitude", spectrum); // calculating the idft - Mat inverseTransform = new Mat(); + using var inverseTransform = new Mat(); Cv2.Dft(dft, inverseTransform, DftFlags.Inverse | DftFlags.RealOutput); Cv2.Normalize(inverseTransform, inverseTransform, 0, 255, NormTypes.MinMax); inverseTransform.ConvertTo(inverseTransform, MatType.CV_8U); Cv2.ImShow("Reconstructed by Inverse DFT", inverseTransform); Cv2.WaitKey(); + Cv2.DestroyAllWindows(); } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/DnnSuperresSample.cs b/SamplesLegacy/Samples/DnnSuperresSample.cs new file mode 100644 index 0000000..1bafeeb --- /dev/null +++ b/SamplesLegacy/Samples/DnnSuperresSample.cs @@ -0,0 +1,27 @@ +using OpenCvSharp; +using OpenCvSharp.DnnSuperres; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + class DnnSuperresSample : ConsoleTestBase + { + // https://github.com/Saafke/FSRCNN_Tensorflow/tree/master/models + private const string ModelFileName = "Data/Model/FSRCNN_x4.pb"; + + public override void RunTest() + { + using var dnn = new DnnSuperResImpl("fsrcnn", 4); + dnn.ReadModel(ModelFileName); + + using var src = new Mat(ImagePath.Mandrill, ImreadModes.Color); + using var dst = new Mat(); + dnn.Upsample(src, dst); + + Window.ShowImages( + new[]{src, dst}, + new[]{"src", "dst0"}); + } + } +} diff --git a/SamplesCS/Samples/DrawBestMatch.cs b/SamplesLegacy/Samples/DrawBestMatch.cs similarity index 86% rename from SamplesCS/Samples/DrawBestMatch.cs rename to SamplesLegacy/Samples/DrawBestMatch.cs index c101397..24bdde1 100644 --- a/SamplesCS/Samples/DrawBestMatch.cs +++ b/SamplesLegacy/Samples/DrawBestMatch.cs @@ -1,18 +1,19 @@ using System.Linq; using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// https://stackoverflow.com/questions/51606215/how-to-draw-bounding-box-on-best-matches/51607041#51607041 /// - class DrawBestMatchRectangle : ISample + class DrawBestMatchRectangle : ConsoleTestBase { - public void Run() + public override void RunTest() { - using var img1 = new Mat(FilePath.Image.Match1, ImreadModes.Color); - using var img2 = new Mat(FilePath.Image.Match2, ImreadModes.Color); + using var img1 = new Mat(ImagePath.Match1, ImreadModes.Color); + using var img2 = new Mat(ImagePath.Match2, ImreadModes.Color); using var orb = ORB.Create(1000); using var descriptors1 = new Mat(); @@ -53,4 +54,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/FASTSample.cs b/SamplesLegacy/Samples/FASTSample.cs new file mode 100644 index 0000000..564dfef --- /dev/null +++ b/SamplesLegacy/Samples/FASTSample.cs @@ -0,0 +1,31 @@ +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// cv::FAST + /// + class FASTSample : ConsoleTestBase + { + public override void RunTest() + { + using Mat imgSrc = new Mat(ImagePath.Lenna, ImreadModes.Color); + using Mat imgGray = new Mat(); + using Mat imgDst = imgSrc.Clone(); + Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY, 0); + + KeyPoint[] keypoints = Cv2.FAST(imgGray, 50, true); + + foreach (KeyPoint kp in keypoints) + { + imgDst.Circle((Point)kp.Pt, 3, Scalar.Red, -1, LineTypes.AntiAlias, 0); + } + + Cv2.ImShow("FAST", imgDst); + Cv2.WaitKey(0); + Cv2.DestroyAllWindows(); + } + } +} diff --git a/SamplesCS/Samples/FREAKSample.cs b/SamplesLegacy/Samples/FREAKSample.cs similarity index 76% rename from SamplesCS/Samples/FREAKSample.cs rename to SamplesLegacy/Samples/FREAKSample.cs index cf73c24..6dd6ca2 100644 --- a/SamplesCS/Samples/FREAKSample.cs +++ b/SamplesLegacy/Samples/FREAKSample.cs @@ -1,25 +1,26 @@ using OpenCvSharp; using OpenCvSharp.XFeatures2D; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Retrieves keypoints using the FREAK algorithm. /// - class FREAKSample : ISample + class FREAKSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - var gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); - var dst = new Mat(FilePath.Image.Lenna, ImreadModes.Color); + using var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + using var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); // ORB - var orb = ORB.Create(1000); + using var orb = ORB.Create(1000); KeyPoint[] keypoints = orb.Detect(gray); // FREAK - FREAK freak = FREAK.Create(); + using var freak = FREAK.Create(); Mat freakDescriptors = new Mat(); freak.Compute(gray, ref keypoints, freakDescriptors); @@ -47,4 +48,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/FaceDetection.cs b/SamplesLegacy/Samples/FaceDetection.cs similarity index 79% rename from SamplesCS/Samples/FaceDetection.cs rename to SamplesLegacy/Samples/FaceDetection.cs index d623695..54b81a8 100644 --- a/SamplesCS/Samples/FaceDetection.cs +++ b/SamplesLegacy/Samples/FaceDetection.cs @@ -1,19 +1,20 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Human face detection /// http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html /// - class FaceDetection : ISample + class FaceDetection : ConsoleTestBase { - public void Run() + public override void RunTest() { // Load the cascades - var haarCascade = new CascadeClassifier(FilePath.Text.HaarCascade); - var lbpCascade = new CascadeClassifier(FilePath.Text.LbpCascade); + using var haarCascade = new CascadeClassifier(TextPath.HaarCascade); + using var lbpCascade = new CascadeClassifier(TextPath.LbpCascade); // Detect faces Mat haarResult = DetectFace(haarCascade); @@ -34,7 +35,7 @@ private Mat DetectFace(CascadeClassifier cascade) { Mat result; - using (var src = new Mat(FilePath.Image.Yalta, ImreadModes.Color)) + using (var src = new Mat(ImagePath.Yalta, ImreadModes.Color)) using (var gray = new Mat()) { result = src.Clone(); @@ -42,7 +43,7 @@ private Mat DetectFace(CascadeClassifier cascade) // Detect faces Rect[] faces = cascade.DetectMultiScale( - gray, 1.08, 2, HaarDetectionType.ScaleImage, new Size(30, 30)); + gray, 1.08, 2, HaarDetectionTypes.ScaleImage, new Size(30, 30)); // Render all detected faces foreach (Rect face in faces) @@ -63,4 +64,4 @@ private Mat DetectFace(CascadeClassifier cascade) return result; } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/FaceDetectionDNN.cs b/SamplesLegacy/Samples/FaceDetectionDNN.cs similarity index 58% rename from SamplesCS/Samples/FaceDetectionDNN.cs rename to SamplesLegacy/Samples/FaceDetectionDNN.cs index 3b202b5..6140efc 100644 --- a/SamplesCS/Samples/FaceDetectionDNN.cs +++ b/SamplesLegacy/Samples/FaceDetectionDNN.cs @@ -1,22 +1,23 @@ -using System; -using OpenCvSharp; +using OpenCvSharp; using OpenCvSharp.Dnn; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// To run this example first download the face model available here:https://github.com/spmallick/learnopencv/tree/master/FaceDetectionComparison/models /// Add the files to the bin folder /// - internal class FaceDetectionDNN : ISample + internal class FaceDetectionDNN : ConsoleTestBase { - public void Run() - { - const string configFile = "deploy.prototxt"; - const string faceModel = "res10_300x300_ssd_iter_140000_fp16.caffemodel"; - const string finalOutput = "DetectedFaces.jpg"; - const string image = "faces.jpg"; + const string configFile = "deploy.prototxt"; + const string faceModel = "res10_300x300_ssd_iter_140000_fp16.caffemodel"; + const string finalOutput = "DetectedFaces.jpg"; + const string image = "faces.jpg"; + public override void RunTest() + { // Read sample image using var frame = Cv2.ImRead(image); int frameHeight = frame.Rows; @@ -27,18 +28,17 @@ public void Run() faceNet.SetInput(blob, "data"); using var detection = faceNet.Forward("detection_out"); - using var detectionMat = new Mat(detection.Size(2), detection.Size(3), MatType.CV_32F, - detection.Ptr(0)); + using var detectionMat = Mat.FromPixelData(detection.Size(2), detection.Size(3), MatType.CV_32F, detection.Ptr(0)); for (int i = 0; i < detectionMat.Rows; i++) { float confidence = detectionMat.At(i, 2); if (confidence > 0.7) { - int x1 = (int) (detectionMat.At(i, 3) * frameWidth); - int y1 = (int) (detectionMat.At(i, 4) * frameHeight); - int x2 = (int) (detectionMat.At(i, 5) * frameWidth); - int y2 = (int) (detectionMat.At(i, 6) * frameHeight); + int x1 = (int)(detectionMat.At(i, 3) * frameWidth); + int y1 = (int)(detectionMat.At(i, 4) * frameHeight); + int x2 = (int)(detectionMat.At(i, 5) * frameWidth); + int y2 = (int)(detectionMat.At(i, 6) * frameHeight); Cv2.Rectangle(frame, new Point(x1, y1), new Point(x2, y2), new Scalar(0, 255, 0), 2, LineTypes.Link4); diff --git a/SamplesCS/Samples/FlannSample.cs b/SamplesLegacy/Samples/FlannSample.cs similarity index 53% rename from SamplesCS/Samples/FlannSample.cs rename to SamplesLegacy/Samples/FlannSample.cs index f763385..a89f274 100644 --- a/SamplesCS/Samples/FlannSample.cs +++ b/SamplesLegacy/Samples/FlannSample.cs @@ -1,15 +1,17 @@ using System; using OpenCvSharp; using OpenCvSharp.Flann; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// cv::flann /// - class FlannSample : ISample + class FlannSample : ConsoleTestBase { - public void Run() + public override void RunTest() { Console.WriteLine("===== FlannTest ====="); @@ -32,27 +34,23 @@ public void Run() Console.WriteLine("-----"); // knnSearch - using (var nnIndex = new Index(features, new KDTreeIndexParams(4))) - { - const int Knn = 1; - int[] indices; - float[] dists; - nnIndex.KnnSearch(queries, out indices, out dists, Knn, new SearchParams(32)); + using var nnIndex = new OpenCvSharp.Flann.Index(features, new KDTreeIndexParams(4)); + const int Knn = 1; + nnIndex.KnnSearch(queries, out int[] indices, out float[] dists, Knn, new SearchParams(32)); - for (int i = 0; i < Knn; i++) - { - int index = indices[i]; - float dist = dists[i]; - var pt = new Point2f(features.Get(index, 0), features.Get(index, 1)); - Console.Write("No.{0}\t", i); - Console.Write("index:{0}", index); - Console.Write(" distance:{0}", dist); - Console.Write(" data:({0}, {1})", pt.X, pt.Y); - Console.WriteLine(); - } + for (int i = 0; i < Knn; i++) + { + int index = indices[i]; + float dist = dists[i]; + var pt = new Point2f(features.Get(index, 0), features.Get(index, 1)); + Console.Write("No.{0}\t", i); + Console.Write("index:{0}", index); + Console.Write(" distance:{0}", dist); + Console.Write(" data:({0}, {1})", pt.X, pt.Y); + Console.WriteLine(); } } Console.Read(); } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/HOGSample.cs b/SamplesLegacy/Samples/HOGSample.cs similarity index 78% rename from SamplesCS/Samples/HOGSample.cs rename to SamplesLegacy/Samples/HOGSample.cs index a0f600e..e3e110b 100644 --- a/SamplesCS/Samples/HOGSample.cs +++ b/SamplesLegacy/Samples/HOGSample.cs @@ -2,23 +2,24 @@ using System.Diagnostics; using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// samples/c/peopledetect.c /// - internal class HOGSample : ISample + internal class HOGSample : ConsoleTestBase { public HOGSample() { } - public void Run() + public override void RunTest() { - var img = Cv2.ImRead(FilePath.Image.Asahiyama, ImreadModes.Color); + using var img = Cv2.ImRead(ImagePath.Asahiyama, ImreadModes.Color); - var hog = new HOGDescriptor(); + using var hog = new HOGDescriptor(); hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); bool b = hog.CheckDetectorSize(); @@ -49,11 +50,9 @@ public void Run() img.Rectangle(r.TopLeft, r.BottomRight, Scalar.Red, 3); } - using (var window = new Window("people detector", WindowMode.Normal, img)) - { - window.SetProperty(WindowProperty.Fullscreen, 1); - Cv2.WaitKey(0); - } + using var window = new Window("people detector", img, WindowFlags.Normal); + window.SetProperty(WindowPropertyFlags.Fullscreen, 1); + Cv2.WaitKey(0); } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/HandPose.cs b/SamplesLegacy/Samples/HandPose.cs similarity index 89% rename from SamplesCS/Samples/HandPose.cs rename to SamplesLegacy/Samples/HandPose.cs index 2746dcc..acde633 100644 --- a/SamplesCS/Samples/HandPose.cs +++ b/SamplesLegacy/Samples/HandPose.cs @@ -1,17 +1,19 @@ using System.Collections.Generic; using OpenCvSharp; using OpenCvSharp.Dnn; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// To run this example first download the hand model available here: http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel /// Or also available here https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/models /// Add the files to the bin folder /// - internal class HandPose : ISample + internal class HandPose : ConsoleTestBase { - public void Run() + public override void RunTest() { const string model = "pose_iter_102000.caffemodel"; const string modelTxt = "pose_deploy.prototxt"; @@ -34,9 +36,9 @@ public void Run() int frameWidth = frame.Cols; int frameHeight = frame.Rows; - float aspectRatio = frameWidth / (float) frameHeight; + float aspectRatio = frameWidth / (float)frameHeight; int inHeight = 368; - int inWidth = ((int) (aspectRatio * inHeight) * 8) / 8; + int inWidth = ((int)(aspectRatio * inHeight) * 8) / 8; using var net = CvDnn.ReadNetFromCaffe(modelTxt, model); using var inpBlob = CvDnn.BlobFromImage(frame, 1.0 / 255, new Size(inWidth, inHeight), @@ -53,7 +55,7 @@ public void Run() for (int n = 0; n < nPoints; n++) { // Probability map of corresponding body's part. - using var probMap = new Mat(H, W, MatType.CV_32F, output.Ptr(0, n)); + using var probMap = Mat.FromPixelData(H, W, MatType.CV_32F, output.Ptr(0, n)); Cv2.Resize(probMap, probMap, new Size(frameWidth, frameHeight)); Cv2.MinMaxLoc(probMap, out _, out var maxVal, out _, out var maxLoc); diff --git a/SamplesCS/Samples/HistSample.cs b/SamplesLegacy/Samples/HistSample.cs similarity index 65% rename from SamplesCS/Samples/HistSample.cs rename to SamplesLegacy/Samples/HistSample.cs index b945fdf..b097ca4 100644 --- a/SamplesCS/Samples/HistSample.cs +++ b/SamplesLegacy/Samples/HistSample.cs @@ -1,25 +1,25 @@ -using System; -using OpenCvSharp; +using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Histogram sample /// http://book.mynavi.jp/support/pc/opencv2/c3/opencv_img.html /// - class HistSample : ISample + class HistSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat src = Cv2.ImRead(FilePath.Image.Lenna, ImreadModes.Grayscale); + using var src = Cv2.ImRead(ImagePath.Lenna, ImreadModes.Grayscale); // Histogram view const int Width = 260, Height = 200; - Mat render = new Mat(new Size(Width, Height), MatType.CV_8UC3, Scalar.All(255)); + using var render = new Mat(new Size(Width, Height), MatType.CV_8UC3, Scalar.All(255)); // Calculate histogram - Mat hist = new Mat(); + var hist = new Mat(); int[] hdims = {256}; // Histogram size for each dimension Rangef[] ranges = { new Rangef(0,256), }; // min/max Cv2.CalcHist( @@ -32,10 +32,9 @@ public void Run() ranges); // Get the max value of histogram - double minVal, maxVal; - Cv2.MinMaxLoc(hist, out minVal, out maxVal); + Cv2.MinMaxLoc(hist, out _, out double maxVal); - Scalar color = Scalar.All(100); + var color = Scalar.All(100); // Scales and draws histogram hist = hist * (maxVal != 0 ? Height / maxVal : 0.0); for (int j = 0; j < hdims[0]; ++j) @@ -48,11 +47,11 @@ public void Run() -1); } - using (new Window("Image", WindowMode.AutoSize | WindowMode.FreeRatio, src)) - using (new Window("Histogram", WindowMode.AutoSize | WindowMode.FreeRatio, render)) + using (new Window("Image", src, WindowFlags.AutoSize | WindowFlags.FreeRatio)) + using (new Window("Histogram", render, WindowFlags.AutoSize | WindowFlags.FreeRatio)) { Cv2.WaitKey(); } } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/HoughLinesSample.cs b/SamplesLegacy/Samples/HoughLinesSample.cs new file mode 100644 index 0000000..d03b794 --- /dev/null +++ b/SamplesLegacy/Samples/HoughLinesSample.cs @@ -0,0 +1,63 @@ +using System; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// Hough Transform Sample / ハフ変換による直線検出 + /// + /// http://opencv.jp/sample/special_transforms.html#hough_line + class HoughLinesSample : ConsoleTestBase + { + public override void RunTest() + { + SampleCpp(); + } + + /// + /// sample of new C++ style wrapper + /// + private void SampleCpp() + { + // (1) Load the image + using var imgGray = new Mat(ImagePath.Goryokaku, ImreadModes.Grayscale); + using var imgStd = new Mat(ImagePath.Goryokaku, ImreadModes.Color); + using var imgProb = imgStd.Clone(); + // Preprocess + Cv2.Canny(imgGray, imgGray, 50, 200, 3, false); + + // (3) Run Standard Hough Transform + LineSegmentPolar[] segStd = Cv2.HoughLines(imgGray, 1, Math.PI / 180, 50, 0, 0); + int limit = Math.Min(segStd.Length, 10); + for (int i = 0; i < limit; i++) + { + // Draws result lines + float rho = segStd[i].Rho; + float theta = segStd[i].Theta; + double a = Math.Cos(theta); + double b = Math.Sin(theta); + double x0 = a * rho; + double y0 = b * rho; + Point pt1 = new Point { X = (int)Math.Round(x0 + 1000 * (-b)), Y = (int)Math.Round(y0 + 1000 * (a)) }; + Point pt2 = new Point { X = (int)Math.Round(x0 - 1000 * (-b)), Y = (int)Math.Round(y0 - 1000 * (a)) }; + imgStd.Line(pt1, pt2, Scalar.Red, 3, LineTypes.AntiAlias, 0); + } + + // (4) Run Probabilistic Hough Transform + LineSegmentPoint[] segProb = Cv2.HoughLinesP(imgGray, 1, Math.PI / 180, 50, 50, 10); + foreach (LineSegmentPoint s in segProb) + { + imgProb.Line(s.P1, s.P2, Scalar.Red, 3, LineTypes.AntiAlias, 0); + } + + // (5) Show results + using (new Window("Hough_line_standard", imgStd, WindowFlags.AutoSize)) + using (new Window("Hough_line_probabilistic", imgProb, WindowFlags.AutoSize)) + { + Window.WaitKey(0); + } + } + } +} diff --git a/SamplesCS/Samples/InpaintSample.cs b/SamplesLegacy/Samples/InpaintSample.cs similarity index 87% rename from SamplesCS/Samples/InpaintSample.cs rename to SamplesLegacy/Samples/InpaintSample.cs index 9e5d4f0..9860313 100644 --- a/SamplesCS/Samples/InpaintSample.cs +++ b/SamplesLegacy/Samples/InpaintSample.cs @@ -1,103 +1,101 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - /// - /// Inpainting - /// - /// http://opencv.jp/sample/special_transforms.html#inpaint - public class InpaintSample : ISample - { - public void Run() - { - // cvInpaint - - Console.WriteLine( - "Hot keys: \n" + - "\tESC - quit the program\n" + - "\tr - restore the original image\n" + - "\ti or ENTER - run inpainting algorithm\n" + - "\t\t(before running it, paint something on the image)\n" + - "\ts - save the original image, mask image, original+mask image and inpainted image to desktop." - ); - - using var img0 = Cv2.ImRead(FilePath.Image.Fruits, ImreadModes.AnyDepth | ImreadModes.AnyColor); - using var img = img0.Clone(); - using var inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black); - using var inpainted = img0.EmptyClone(); - - using var wImage = new Window("image", WindowMode.AutoSize, img); - var prevPt = new Point(-1, -1); - wImage.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => - { - if (ev == MouseEventTypes.LButtonUp || (flags & MouseEventFlags.LButton) == 0) - { - prevPt = new Point(-1, -1); - } - else if (ev == MouseEventTypes.LButtonDown) - { - prevPt = new Point(x, y); - } - else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) != 0) - { - Point pt = new Point(x, y); - if (prevPt.X < 0) - { - prevPt = pt; - } - inpaintMask.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); - img.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); - prevPt = pt; - wImage.ShowImage(img); - } - }); - - Window wInpaint1 = null; - Window wInpaint2 = null; - try - { - for (; ; ) - { - switch ((char)Window.WaitKey(0)) - { - case (char)27: // exit - return; - case 'r': // restore original image - inpaintMask.SetTo(Scalar.Black); - img0.CopyTo(img); - wImage.ShowImage(img); - break; - case 'i': // do Inpaint - case '\r': - Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.Telea); - wInpaint1 ??= new Window("inpainted image (algorithm by Alexandru Telea)", WindowMode.AutoSize); - wInpaint1.ShowImage(inpainted); - Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.NS); - wInpaint2 ??= new Window("inpainted image (algorithm by Navier-Strokes)", WindowMode.AutoSize); - wInpaint2.ShowImage(inpainted); - break; - case 's': // save images - string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - img0.SaveImage(Path.Combine(desktop, "original.png")); - inpaintMask.SaveImage(Path.Combine(desktop, "mask.png")); - img.SaveImage(Path.Combine(desktop, "original+mask.png")); - inpainted.SaveImage(Path.Combine(desktop, "inpainted.png")); - break; - } - } - } - finally - { - wInpaint1?.Dispose(); - wInpaint2?.Dispose(); - Window.DestroyAllWindows(); - } - } - } -} \ No newline at end of file +using System; +using System.IO; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// Inpainting + /// + /// http://opencv.jp/sample/special_transforms.html#inpaint + public class InpaintSample : ConsoleTestBase + { + public override void RunTest() + { + // cvInpaint + + Console.WriteLine( + "Hot keys: \n" + + "\tESC - quit the program\n" + + "\tr - restore the original image\n" + + "\ti or ENTER - run inpainting algorithm\n" + + "\t\t(before running it, paint something on the image)\n" + + "\ts - save the original image, mask image, original+mask image and inpainted image to desktop." + ); + + using var img0 = Cv2.ImRead(ImagePath.Fruits, ImreadModes.AnyDepth | ImreadModes.AnyColor); + using var img = img0.Clone(); + using var inpaintMask = new Mat(img0.Size(), MatType.CV_8U, Scalar.Black); + using var inpainted = img0.EmptyClone(); + + using var wImage = new Window("image", img); + var prevPt = new Point(-1, -1); + wImage.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => + { + if (ev == MouseEventTypes.LButtonUp || (flags & MouseEventFlags.LButton) == 0) + { + prevPt = new Point(-1, -1); + } + else if (ev == MouseEventTypes.LButtonDown) + { + prevPt = new Point(x, y); + } + else if (ev == MouseEventTypes.MouseMove && (flags & MouseEventFlags.LButton) != 0) + { + Point pt = new Point(x, y); + if (prevPt.X < 0) + { + prevPt = pt; + } + inpaintMask.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); + img.Line(prevPt, pt, Scalar.White, 5, LineTypes.AntiAlias, 0); + prevPt = pt; + wImage.ShowImage(img); + } + }); + + Window wInpaint1 = null; + Window wInpaint2 = null; + try + { + for (; ; ) + { + switch ((char)Window.WaitKey(0)) + { + case (char)27: // exit + return; + case 'r': // restore original image + inpaintMask.SetTo(Scalar.Black); + img0.CopyTo(img); + wImage.ShowImage(img); + break; + case 'i': // do Inpaint + case '\r': + Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.Telea); + wInpaint1 ??= new Window("inpainted image (algorithm by Alexandru Telea)", WindowFlags.AutoSize); + wInpaint1.ShowImage(inpainted); + Cv2.Inpaint(img, inpaintMask, inpainted, 3, InpaintMethod.NS); + wInpaint2 ??= new Window("inpainted image (algorithm by Navier-Strokes)", WindowFlags.AutoSize); + wInpaint2.ShowImage(inpainted); + break; + case 's': // save images + string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); + img0.SaveImage(Path.Combine(desktop, "original.png")); + inpaintMask.SaveImage(Path.Combine(desktop, "mask.png")); + img.SaveImage(Path.Combine(desktop, "original+mask.png")); + inpainted.SaveImage(Path.Combine(desktop, "inpainted.png")); + break; + } + } + } + finally + { + wInpaint1?.Dispose(); + wInpaint2?.Dispose(); + Window.DestroyAllWindows(); + } + } + } +} diff --git a/SamplesCS/Samples/KAZESample.cs b/SamplesLegacy/Samples/KAZESample.cs similarity index 86% rename from SamplesCS/Samples/KAZESample.cs rename to SamplesLegacy/Samples/KAZESample.cs index 1bbeb8d..3b5ae0a 100644 --- a/SamplesCS/Samples/KAZESample.cs +++ b/SamplesLegacy/Samples/KAZESample.cs @@ -2,17 +2,18 @@ using System.Diagnostics; using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Retrieves keypoints using the KAZE and AKAZE algorithm. /// - internal class KAZESample : ISample + internal class KAZESample : ConsoleTestBase { - public void Run() + public override void RunTest() { - var gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); var kaze = KAZE.Create(); var akaze = AKAZE.Create(); @@ -44,4 +45,4 @@ private TimeSpan MeasureTime(Action action) return watch.Elapsed; } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/KAZESample2.cs b/SamplesLegacy/Samples/KAZESample2.cs new file mode 100644 index 0000000..8c84c13 --- /dev/null +++ b/SamplesLegacy/Samples/KAZESample2.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// https://github.com/shimat/opencvsharp/issues/176 + /// + class KAZESample2 : ConsoleTestBase + { + public static Point2d Point2fToPoint2d(Point2f pf) + { + return new Point2d(((int)pf.X), ((int)pf.Y)); + } + + public override void RunTest() + { + using var img1 = new Mat(ImagePath.SurfBox); + using var img2 = new Mat(ImagePath.SurfBoxinscene); + using var descriptors1 = new Mat(); + using var descriptors2 = new Mat(); + using var matcher = new BFMatcher(NormTypes.L2SQR); + using var kaze = KAZE.Create(); + kaze.DetectAndCompute(img1, null, out var keypoints1, descriptors1); + kaze.DetectAndCompute(img2, null, out var keypoints2, descriptors2); + + DMatch[][] matches = matcher.KnnMatch(descriptors1, descriptors2, 2); + using Mat mask = new Mat(matches.Length, 1, MatType.CV_8U); + mask.SetTo(new Scalar(255)); + int nonZero = Cv2.CountNonZero(mask); + VoteForUniqueness(matches, mask); + nonZero = Cv2.CountNonZero(mask); + nonZero = VoteForSizeAndOrientation(keypoints2, keypoints1, matches, mask, 1.5f, 20); + + List obj = new List(); + List scene = new List(); + List goodMatchesList = new List(); + //iterate through the mask only pulling out nonzero items because they're matches + for (int i = 0; i < mask.Rows; i++) + { + MatIndexer maskIndexer = mask.GetGenericIndexer(); + if (maskIndexer[i] > 0) + { + obj.Add(keypoints1[matches[i][0].QueryIdx].Pt); + scene.Add(keypoints2[matches[i][0].TrainIdx].Pt); + goodMatchesList.Add(matches[i][0]); + } + } + + List objPts = obj.ConvertAll(Point2fToPoint2d); + List scenePts = scene.ConvertAll(Point2fToPoint2d); + if (nonZero >= 4) + { + Mat homography = Cv2.FindHomography(objPts, scenePts, HomographyMethods.Ransac, 1.5, mask); + nonZero = Cv2.CountNonZero(mask); + + if (homography != null) + { + Point2f[] objCorners = { new Point2f(0, 0), + new Point2f(img1.Cols, 0), + new Point2f(img1.Cols, img1.Rows), + new Point2f(0, img1.Rows) }; + + Point2d[] sceneCorners = MyPerspectiveTransform3(objCorners, homography); + + //This is a good concat horizontal + using Mat img3 = new Mat(Math.Max(img1.Height, img2.Height), img2.Width + img1.Width, MatType.CV_8UC3); + using Mat left = new Mat(img3, new Rect(0, 0, img1.Width, img1.Height)); + using Mat right = new Mat(img3, new Rect(img1.Width, 0, img2.Width, img2.Height)); + img1.CopyTo(left); + img2.CopyTo(right); + + mask.GetArray(out byte[] maskBytes); + Cv2.DrawMatches(img1, keypoints1, img2, keypoints2, goodMatchesList, img3, Scalar.All(-1), Scalar.All(-1), maskBytes, DrawMatchesFlags.NotDrawSinglePoints); + + List> listOfListOfPoint2D = new List>(); + List listOfPoint2D = new List + { + new Point(sceneCorners[0].X + img1.Cols, sceneCorners[0].Y), + new Point(sceneCorners[1].X + img1.Cols, sceneCorners[1].Y), + new Point(sceneCorners[2].X + img1.Cols, sceneCorners[2].Y), + new Point(sceneCorners[3].X + img1.Cols, sceneCorners[3].Y) + }; + listOfListOfPoint2D.Add(listOfPoint2D); + img3.Polylines(listOfListOfPoint2D, true, Scalar.LimeGreen, 2); + + //This works too + //Cv2.Line(img3, scene_corners[0] + new Point2d(img1.Cols, 0), scene_corners[1] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[1] + new Point2d(img1.Cols, 0), scene_corners[2] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[2] + new Point2d(img1.Cols, 0), scene_corners[3] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + //Cv2.Line(img3, scene_corners[3] + new Point2d(img1.Cols, 0), scene_corners[0] + new Point2d(img1.Cols, 0), Scalar.LimeGreen); + + img3.SaveImage("Kaze_Output.png"); + Window.ShowImages(img3); + } + } + } + + // to avoid opencvsharp's bug + static Point2d[] MyPerspectiveTransform1(Point2f[] yourData, Mat transformationMatrix) + { + using Mat src = Mat.FromPixelData(yourData.Length, 1, MatType.CV_32FC2, yourData); + using Mat dst = new Mat(); + Cv2.PerspectiveTransform(src, dst, transformationMatrix); + dst.GetArray(out Point2f[] dstArray); + Point2d[] result = Array.ConvertAll(dstArray, Point2fToPoint2d); + return result; + } + + // fixed FromArray behavior + static Point2d[] MyPerspectiveTransform2(Point2f[] yourData, Mat transformationMatrix) + { + using var s = Mat.FromArray(yourData); + using var d = new Mat(); + Cv2.PerspectiveTransform(s, d, transformationMatrix); + Point2f[] f = d.ToArray(); + return f.Select(Point2fToPoint2d).ToArray(); + } + + // new API + static Point2d[] MyPerspectiveTransform3(Point2f[] yourData, Mat transformationMatrix) + { + Point2f[] ret = Cv2.PerspectiveTransform(yourData, transformationMatrix); + return ret.Select(Point2fToPoint2d).ToArray(); + } + + static int VoteForSizeAndOrientation(KeyPoint[] modelKeyPoints, KeyPoint[] observedKeyPoints, DMatch[][] matches, Mat mask, float scaleIncrement, int rotationBins) + { + int idx = 0; + int nonZeroCount = 0; + byte[] maskMat = new byte[mask.Rows]; + var maskHandle = GCHandle.Alloc(maskMat, GCHandleType.Pinned); + using (var m = Mat.FromPixelData(mask.Rows, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) + { + mask.CopyTo(m); + List logScale = new List(); + List rotations = new List(); + double s, maxS, minS, r; + maxS = -1.0e-10f; minS = 1.0e10f; + + //if you get an exception here, it's because you're passing in the model and observed keypoints backwards. Just switch the order. + for (int i = 0; i < maskMat.Length; i++) + { + if (maskMat[i] > 0) + { + KeyPoint observedKeyPoint = observedKeyPoints[i]; + KeyPoint modelKeyPoint = modelKeyPoints[matches[i][0].TrainIdx]; + s = Math.Log10(observedKeyPoint.Size / modelKeyPoint.Size); + logScale.Add((float)s); + maxS = s > maxS ? s : maxS; + minS = s < minS ? s : minS; + + r = observedKeyPoint.Angle - modelKeyPoint.Angle; + r = r < 0.0f ? r + 360.0f : r; + rotations.Add((float)r); + } + } + + int scaleBinSize = (int)Math.Ceiling((maxS - minS) / Math.Log10(scaleIncrement)); + if (scaleBinSize < 2) + scaleBinSize = 2; + float[] scaleRanges = { (float)minS, (float)(minS + scaleBinSize + Math.Log10(scaleIncrement)) }; + + using var scalesMat = Mat.FromArray(logScale.ToArray()); + using var rotationsMat = Mat.FromArray(rotations.ToArray()); + using var flagsMat = new Mat(logScale.Count, 1); + using Mat hist = new Mat(); + flagsMat.SetTo(new Scalar(0.0f)); + float[] flagsMatFloat1 = flagsMat.ToArray(); + + int[] histSize = { scaleBinSize, rotationBins }; + float[] rotationRanges = { 0.0f, 360.0f }; + int[] channels = { 0, 1 }; + Rangef[] ranges = { new Rangef(scaleRanges[0], scaleRanges[1]), new Rangef(rotations.Min(), rotations.Max()) }; + + Mat[] arrs = { scalesMat, rotationsMat }; + Cv2.CalcHist(arrs, channels, null, hist, 2, histSize, ranges); + Cv2.MinMaxLoc(hist, out double minVal, out double maxVal); + + Cv2.Threshold(hist, hist, maxVal * 0.5, 0, ThresholdTypes.Tozero); + Cv2.CalcBackProject(arrs, channels, hist, flagsMat, ranges); + + MatIndexer flagsMatIndexer = flagsMat.GetIndexer(); + + for (int i = 0; i < maskMat.Length; i++) + { + if (maskMat[i] > 0) + { + if (flagsMatIndexer[idx++] != 0.0f) + { + nonZeroCount++; + } + else + maskMat[i] = 0; + } + } + m.CopyTo(mask); + } + maskHandle.Free(); + + return nonZeroCount; + } + + private static void VoteForUniqueness(DMatch[][] matches, Mat mask, float uniqnessThreshold = 0.80f) + { + byte[] maskData = new byte[matches.Length]; + GCHandle maskHandle = GCHandle.Alloc(maskData, GCHandleType.Pinned); + using (Mat m = Mat.FromPixelData(matches.Length, 1, MatType.CV_8U, maskHandle.AddrOfPinnedObject())) + { + mask.CopyTo(m); + for (int i = 0; i < matches.Length; i++) + { + //This is also known as NNDR Nearest Neighbor Distance Ratio + if ((matches[i][0].Distance / matches[i][1].Distance) <= uniqnessThreshold) + maskData[i] = 255; + else + maskData[i] = 0; + } + m.CopyTo(mask); + } + maskHandle.Free(); + } + } +} diff --git a/SamplesCS/Samples/MDS.cs b/SamplesLegacy/Samples/MDS.cs similarity index 83% rename from SamplesCS/Samples/MDS.cs rename to SamplesLegacy/Samples/MDS.cs index b569022..7def27b 100644 --- a/SamplesCS/Samples/MDS.cs +++ b/SamplesLegacy/Samples/MDS.cs @@ -1,16 +1,15 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Multidimensional Scaling (多次元尺度構成法) /// for C++ cv::Mat testing /// - class MDS : ISample + class MDS : ConsoleTestBase { /// /// Distance among 10 American cities @@ -18,7 +17,7 @@ class MDS : ISample /// /// * The linear distance between Atlanta and Chicago is 587km. /// - static readonly double[,] CityDistance = + static readonly double[,] CityDistance = { /*Atlanta*/ {0, 587, 1212, 701, 1936, 604, 748, 2139, 2182, 543}, /*Chicago*/ {587, 0, 920, 940, 1745, 1188, 713, 1858, 1737, 597}, @@ -31,36 +30,37 @@ class MDS : ISample /*Seattle*/ {2182, 1737, 1021, 1891, 959, 2734, 2408, 678, 0, 2329}, /*Washington D.C.*/ {543, 597, 1494, 1220, 2300, 923, 205, 2442, 2329, 0} }; + /// /// City names /// - static readonly string[] CityNames = + static readonly string[] CityNames = { - "Atlanta","Chicago","Denver","Houston","Los Angeles","Miami","New York","San Francisco","Seattle","Washington D.C." + "Atlanta","Chicago","Denver","Houston","Los Angeles","Miami","New York","San Francisco","Seattle","Washington D.C." }; /// /// Classical Multidimensional Scaling /// - public void Run() + public override void RunTest() { // creates distance matrix int size = CityDistance.GetLength(0); - Mat t = new Mat(size, size, MatType.CV_64FC1, CityDistance); + var t = Mat.FromPixelData(size, size, MatType.CV_64FC1, CityDistance); // adds Torgerson's additive constant to t double torgarson = Torgerson(t); - t += torgarson; + t += (Scalar)torgarson; // squares all elements of t t = t.Mul(t); // centering matrix G - Mat g = CenteringMatrix(size); + using var g = CenteringMatrix(size); // calculates inner product matrix B - Mat b = g * t * g.T() * -0.5; + using var b = g * t * g.T() * -0.5; // calculates eigenvalues and eigenvectors of B - Mat values = new Mat(); - Mat vectors = new Mat(); + using var values = new Mat(); + using var vectors = new Mat(); Cv2.Eigen(b, values, vectors); for (int r = 0; r < values.Rows; r++) { @@ -71,7 +71,7 @@ public void Run() //Console.WriteLine(values.Dump()); // multiplies sqrt(eigenvalue) by eigenvector - Mat result = vectors.RowRange(0, 2); + using var result = vectors.RowRange(0, 2); { var at = result.GetGenericIndexer(); for (int r = 0; r < result.Rows; r++) @@ -88,7 +88,7 @@ public void Run() // opens a window using (Mat img = Mat.Zeros(600, 800, MatType.CV_8UC3)) - using (Window window = new Window("City Location Estimation")) + using (var window = new Window("City Location Estimation")) { var at = result.GetGenericIndexer(); for (int c = 0; c < size; c++) @@ -118,10 +118,9 @@ private double Torgerson(Mat mat) if (mat.Rows != mat.Cols) throw new ArgumentException(); - int n = mat.Rows; + int n = mat.Rows; // Additive constant in case of negative value - double min, max; - Cv2.MinMaxLoc(-mat, out min, out max); + Cv2.MinMaxLoc(-mat, out _, out double max); double c2 = max; // Additive constant from triangular inequality double c1 = 0; @@ -151,7 +150,8 @@ private double Torgerson(Mat mat) /// private Mat CenteringMatrix(int n) { - return (Mat.Eye(n, n, MatType.CV_64FC1) - 1.0 / n); + using var eye = Mat.Eye(n, n, MatType.CV_64FC1); + return eye - (Scalar)(1.0 / n); } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/MSERSample.cs b/SamplesLegacy/Samples/MSERSample.cs similarity index 50% rename from SamplesCS/Samples/MSERSample.cs rename to SamplesLegacy/Samples/MSERSample.cs index 05c4a2f..4e26611 100644 --- a/SamplesCS/Samples/MSERSample.cs +++ b/SamplesLegacy/Samples/MSERSample.cs @@ -1,29 +1,28 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Maximally Stable Extremal Regions /// - class MSERSample : ISample + class MSERSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - using (Mat src = new Mat(FilePath.Image.Distortion, ImreadModes.Color)) - using (Mat gray = new Mat()) - using (Mat dst = src.Clone()) - { - Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); + using Mat src = new Mat(ImagePath.Distortion, ImreadModes.Color); + using Mat gray = new Mat(); + using Mat dst = src.Clone(); + Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY); - CppStyleMSER(gray, dst); // C++ style + CppStyleMSER(gray, dst); // C++ style - using (new Window("MSER src", src)) - using (new Window("MSER gray", gray)) - using (new Window("MSER dst", dst)) - { - Cv2.WaitKey(); - } + using (new Window("MSER src", src)) + using (new Window("MSER gray", gray)) + using (new Window("MSER dst", dst)) + { + Cv2.WaitKey(); } } @@ -35,9 +34,7 @@ public void Run() private void CppStyleMSER(Mat gray, Mat dst) { MSER mser = MSER.Create(); - Point[][] contours; - Rect[] bboxes; - mser.DetectRegions(gray, out contours, out bboxes); + mser.DetectRegions(gray, out Point[][] contours, out _); foreach (Point[] pts in contours) { Scalar color = Scalar.RandomColor(); @@ -48,4 +45,4 @@ private void CppStyleMSER(Mat gray, Mat dst) } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/MatOperations.cs b/SamplesLegacy/Samples/MatOperations.cs similarity index 89% rename from SamplesCS/Samples/MatOperations.cs rename to SamplesLegacy/Samples/MatOperations.cs index 207d13e..30f4011 100644 --- a/SamplesCS/Samples/MatOperations.cs +++ b/SamplesLegacy/Samples/MatOperations.cs @@ -1,15 +1,16 @@ using System; using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class MatOperations : ISample + class MatOperations : ConsoleTestBase { - public void Run() + public override void RunTest() { SubMat(); RowColRangeOperation(); @@ -21,7 +22,7 @@ public void Run() /// private void SubMat() { - var src = Cv2.ImRead(FilePath.Image.Lenna); + using var src = Cv2.ImRead(ImagePath.Lenna); // Assign small image to mat using var small = new Mat(); @@ -53,7 +54,7 @@ private void SubMat() /// private void RowColRangeOperation() { - using var src = Cv2.ImRead(FilePath.Image.Lenna); + using var src = Cv2.ImRead(ImagePath.Lenna); Cv2.GaussianBlur( src.RowRange(100, 200), @@ -76,7 +77,7 @@ private void RowColRangeOperation() /// private void RowColOperation() { - using var src = Cv2.ImRead(FilePath.Image.Lenna); + using var src = Cv2.ImRead(ImagePath.Lenna); var rand = new Random(); for (int i = 0; i < 200; i++) @@ -98,4 +99,4 @@ private void RowColOperation() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/MergeSplitSample.cs b/SamplesLegacy/Samples/MergeSplitSample.cs similarity index 70% rename from SamplesCS/Samples/MergeSplitSample.cs rename to SamplesLegacy/Samples/MergeSplitSample.cs index 322c5eb..813e37d 100644 --- a/SamplesCS/Samples/MergeSplitSample.cs +++ b/SamplesLegacy/Samples/MergeSplitSample.cs @@ -1,22 +1,22 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class MergeSplitSample : ISample + class MergeSplitSample : ConsoleTestBase { - public void Run() + public override void RunTest() { // Split/Merge Test { - Mat src = new Mat(FilePath.Image.Lenna, ImreadModes.Color); + using var src = new Mat(ImagePath.Lenna, ImreadModes.Color); // Split each plane - Mat[] planes; - Cv2.Split(src, out planes); + Cv2.Split(src, out var planes); Cv2.ImShow("planes 0", planes[0]); Cv2.ImShow("planes 1", planes[1]); @@ -28,7 +28,7 @@ public void Run() Cv2.BitwiseNot(planes[1], planes[1]); // Merge - Mat merged = new Mat(); + using var merged = new Mat(); Cv2.Merge(planes, merged); Cv2.ImShow("src", src); @@ -39,9 +39,9 @@ public void Run() // MixChannels Test { - Mat rgba = new Mat(300, 300, MatType.CV_8UC4, new Scalar(50, 100, 150, 200)); - Mat bgr = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC3); - Mat alpha = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC1); + using var rgba = new Mat(300, 300, MatType.CV_8UC4, new Scalar(50, 100, 150, 200)); + using var bgr = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC3); + using var alpha = new Mat(rgba.Rows, rgba.Cols, MatType.CV_8UC1); Mat[] input = { rgba }; Mat[] output = { bgr, alpha }; @@ -58,4 +58,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/MorphologySample.cs b/SamplesLegacy/Samples/MorphologySample.cs similarity index 53% rename from SamplesCS/Samples/MorphologySample.cs rename to SamplesLegacy/Samples/MorphologySample.cs index de850cf..15bb13b 100644 --- a/SamplesCS/Samples/MorphologySample.cs +++ b/SamplesLegacy/Samples/MorphologySample.cs @@ -1,21 +1,22 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class MorphologySample : ISample + class MorphologySample : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); - Mat binary = new Mat(); - Mat dilate1 = new Mat(); - Mat dilate2 = new Mat(); - byte[] kernelValues = {0, 1, 0, 1, 1, 1, 0, 1, 0}; // cross (+) - Mat kernel = new Mat(3, 3, MatType.CV_8UC1, kernelValues); + using var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); + using var binary = new Mat(); + using var dilate1 = new Mat(); + using var dilate2 = new Mat(); + byte[] kernelValues = { 0, 1, 0, 1, 1, 1, 0, 1, 0 }; // cross (+) + using var kernel = Mat.FromPixelData(3, 3, MatType.CV_8UC1, kernelValues); // Binarize Cv2.Threshold(gray, binary, 0, 255, ThresholdTypes.Otsu); @@ -32,4 +33,4 @@ public void Run() Cv2.DestroyAllWindows(); } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/NormalArrayOperations.cs b/SamplesLegacy/Samples/NormalArrayOperations.cs similarity index 73% rename from SamplesCS/Samples/NormalArrayOperations.cs rename to SamplesLegacy/Samples/NormalArrayOperations.cs index f2f6151..9bbf365 100644 --- a/SamplesCS/Samples/NormalArrayOperations.cs +++ b/SamplesLegacy/Samples/NormalArrayOperations.cs @@ -1,22 +1,21 @@ using System; using System.Collections.Generic; -using System.Linq; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class NormalArrayOperations : ISample + class NormalArrayOperations : ConsoleTestBase { - public void Run() + public override void RunTest() { Threshold1(); Threshold2(); Threshold3(); - - Console.Read(); } /// @@ -28,14 +27,14 @@ private void Threshold1() const int Max = 5; byte[] input = {1, 2, 3, 4, 5, }; - List output = new List(); + var output = new List(); Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), T, Max, ThresholdTypes.Binary); Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", String.Join(",", input)); - Console.WriteLine("output: {0}", String.Join(",", output)); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); } /// @@ -47,14 +46,14 @@ private void Threshold2() const int Max = 250; short[] input = { 50, 100, 150, 200, 250, }; - List output = new List(); + var output = new List(); Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), T, Max, ThresholdTypes.Binary); Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", String.Join(",", input)); - Console.WriteLine("output: {0}", String.Join(",", output)); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); } /// @@ -71,14 +70,14 @@ private void Threshold3() new Point2f(2000, 2001), new Point2f(500, 5000), }; - List output = new List(); + var output = new List(); Cv2.Threshold(InputArray.Create(input), OutputArray.Create(output), T, Max, ThresholdTypes.Binary); Console.WriteLine("Threshold: {0}", T); - Console.WriteLine("input: {0}", String.Join(",", input)); - Console.WriteLine("output: {0}", String.Join(",", output)); + Console.WriteLine("input: {0}", string.Join(",", input)); + Console.WriteLine("output: {0}", string.Join(",", output)); } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/OpenVinoFaceDetection.cs b/SamplesLegacy/Samples/OpenVinoFaceDetection.cs new file mode 100644 index 0000000..bd91e51 --- /dev/null +++ b/SamplesLegacy/Samples/OpenVinoFaceDetection.cs @@ -0,0 +1,85 @@ +using OpenCvSharp; +using OpenCvSharp.Dnn; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// To run this example first you nedd to compile OPENCV with Intel OpenVino + /// Download the face detection model available here: https://github.com/openvinotoolkit/open_model_zoo/tree/master/models/intel/face-detection-adas-0001 + /// Add the files to the bin folder + /// + internal class OpenVinoFaceDetection : ConsoleTestBase + { + const string modelFace = "face-detection-adas-0001.bin"; + const string modelFaceTxt = "face-detection-adas-0001.xml"; + const string sampleImage = "sample.jpg"; + const string outputLoc = "sample_output.jpg"; + + public override void RunTest() + { + using var frame = Cv2.ImRead(sampleImage); + int frameHeight = frame.Rows; + int frameWidth = frame.Cols; + + using var netFace = CvDnn.ReadNet(modelFace, modelFaceTxt); + netFace.SetPreferableBackend(Backend.INFERENCE_ENGINE); + netFace.SetPreferableTarget(Target.CPU); + + using var blob = CvDnn.BlobFromImage(frame, 1.0, new Size(672, 384), new Scalar(0, 0, 0), false, false); + netFace.SetInput(blob); + + using (var detection = netFace.Forward()) + { + using var detectionMat = Mat.FromPixelData(detection.Size(2), detection.Size(3), MatType.CV_32F, detection.Ptr(0)); + + for (int i = 0; i < detectionMat.Rows; i++) + { + float confidence = detectionMat.At(i, 2); + + if (confidence > 0.7) + { + int x1 = (int)(detectionMat.At(i, 3) * frameWidth); //xmin + int y1 = (int)(detectionMat.At(i, 4) * frameHeight); //ymin + int x2 = (int)(detectionMat.At(i, 5) * frameWidth); //xmax + int y2 = (int)(detectionMat.At(i, 6) * frameHeight); //ymax + + var roi = new Rect(x1, y1, (x2 - x1), (y2 - y1)); + roi = AdjustBoundingBox(roi); + Cv2.Rectangle(frame, roi, new Scalar(0, 255, 0), 2, LineTypes.Link4); + } + } + } + + var finalOutput = outputLoc; + Cv2.ImWrite(finalOutput, frame); + } + + private Rect AdjustBoundingBox(Rect faceRect) + { + int w = faceRect.Width; + int h = faceRect.Height; + + faceRect.X -= (int)(0.067 * w); + faceRect.Y -= (int)(0.028 * h); + + faceRect.Width += (int)(0.15 * w); + faceRect.Height += (int)(0.13 * h); + + if (faceRect.Width < faceRect.Height) + { + var dx = (faceRect.Height - faceRect.Width); + faceRect.X -= dx / 2; + faceRect.Width += dx; + } + else + { + var dy = (faceRect.Width - faceRect.Height); + faceRect.Y -= dy / 2; + faceRect.Height += dy; + } + return faceRect; + } + } +} diff --git a/SamplesCS/Samples/PerspectiveTransformSample.cs b/SamplesLegacy/Samples/PerspectiveTransformSample.cs similarity index 71% rename from SamplesCS/Samples/PerspectiveTransformSample.cs rename to SamplesLegacy/Samples/PerspectiveTransformSample.cs index f736572..2dfbc33 100644 --- a/SamplesCS/Samples/PerspectiveTransformSample.cs +++ b/SamplesLegacy/Samples/PerspectiveTransformSample.cs @@ -1,33 +1,34 @@ using OpenCvSharp; using System; using System.Collections.Generic; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS.Samples +namespace SamplesLegacy { - public class PerspectiveTransformSample : ISample + public class PerspectiveTransformSample : ConsoleTestBase { - List point2Fs = new List(); + private readonly List point2Fs = new List(); - Point2f[] srcPoints = new Point2f[] { + private Point2f[] srcPoints = new Point2f[] { new Point2f(0, 0), new Point2f(0, 0), new Point2f(0, 0), new Point2f(0, 0), }; - Point2f[] dstPoints = new Point2f[] { + private readonly Point2f[] dstPoints = new Point2f[] { new Point2f(0, 0), new Point2f(0, 480), new Point2f(640, 480), new Point2f(640, 0), }; - Mat OriginalImage; + private Mat OriginalImage; - //PerspectiveTransform - public void Run() + public override void RunTest() { - OriginalImage = new Mat("./Resource.png", ImreadModes.AnyColor); // Your Resource + OriginalImage = new Mat(ImagePath.SurfBoxinscene, ImreadModes.AnyColor); using var Window = new Window("result", OriginalImage); Cv2.SetMouseCallback(Window.Name, CallbackOpenCVAnnotate); @@ -47,6 +48,7 @@ private void CallbackOpenCVAnnotate(MouseEventTypes e, int x, int y, MouseEventF Cv2.WarpPerspective(OriginalImage, dst, matrix, dst.Size()); using var dsts = new Window("dst", dst); point2Fs.Clear(); + Window.WaitKey(); } } } diff --git a/SamplesCS/Samples/PhotoMethods.cs b/SamplesLegacy/Samples/PhotoMethods.cs similarity index 61% rename from SamplesCS/Samples/PhotoMethods.cs rename to SamplesLegacy/Samples/PhotoMethods.cs index ee6865e..0d31e1d 100644 --- a/SamplesCS/Samples/PhotoMethods.cs +++ b/SamplesLegacy/Samples/PhotoMethods.cs @@ -1,33 +1,36 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// sample of photo module methods /// - class PhotoMethods : ISample + class PhotoMethods : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat src = new Mat(FilePath.Image.Fruits, ImreadModes.Color); + using var src = new Mat(ImagePath.Fruits, ImreadModes.Color); - Mat normconv = new Mat(), recursFildered = new Mat(); + using var normconv = new Mat(); + using var recursFiltered = new Mat(); Cv2.EdgePreservingFilter(src, normconv, EdgePreservingMethods.NormconvFilter); - Cv2.EdgePreservingFilter(src, recursFildered, EdgePreservingMethods.RecursFilter); + Cv2.EdgePreservingFilter(src, recursFiltered, EdgePreservingMethods.RecursFilter); - Mat detailEnhance = new Mat(); + using var detailEnhance = new Mat(); Cv2.DetailEnhance(src, detailEnhance); - Mat pencil1 = new Mat(), pencil2 = new Mat(); + using var pencil1 = new Mat(); + using var pencil2 = new Mat(); Cv2.PencilSketch(src, pencil1, pencil2); - Mat stylized = new Mat(); + using var stylized = new Mat(); Cv2.Stylization(src, stylized); using (new Window("src", src)) using (new Window("edgePreservingFilter - NormconvFilter", normconv)) - using (new Window("edgePreservingFilter - RecursFilter", recursFildered)) + using (new Window("edgePreservingFilter - RecursFilter", recursFiltered)) using (new Window("detailEnhance", detailEnhance)) using (new Window("pencilSketch grayscale", pencil1)) using (new Window("pencilSketch color", pencil2)) @@ -37,4 +40,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/PixelAccess.cs b/SamplesLegacy/Samples/PixelAccess.cs new file mode 100644 index 0000000..61e0ba5 --- /dev/null +++ b/SamplesLegacy/Samples/PixelAccess.cs @@ -0,0 +1,93 @@ +using System; +using System.Diagnostics; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// Swaps B for R + /// + class PixelAccess : ConsoleTestBase + { + public override void RunTest() + { + Console.WriteLine("Get/Set: {0}ms", MeasureTime(GetSet)); + Console.WriteLine("GenericIndexer: {0}ms", MeasureTime(GenericIndexer)); + Console.WriteLine("TypeSpecificMat: {0}ms", MeasureTime(TypeSpecificMat)); + Console.Read(); + } + + /// + /// Slow + /// + private void GetSet() + { + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + for (int y = 0; y < mat.Height; y++) + { + for (int x = 0; x < mat.Width; x++) + { + Vec3b color = mat.Get(y, x); + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + mat.Set(y, x, newColor); + } + } + //Cv2.ImShow("Slow", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } + + /// + /// Reasonably fast + /// + private void GenericIndexer() + { + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + var indexer = mat.GetGenericIndexer(); + for (int y = 0; y < mat.Height; y++) + { + for (int x = 0; x < mat.Width; x++) + { + Vec3b color = indexer[y, x]; + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + indexer[y, x] = newColor; + } + } + //Cv2.ImShow("GenericIndexer", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } + + /// + /// Faster + /// + private void TypeSpecificMat() + { + using var mat = new Mat(ImagePath.Lenna, ImreadModes.Color); + var mat3 = new Mat(mat); + var indexer = mat3.GetIndexer(); + for (int y = 0; y < mat.Height; y++) + { + for (int x = 0; x < mat.Width; x++) + { + Vec3b color = indexer[y, x]; + Vec3b newColor = new Vec3b(color.Item2, color.Item1, color.Item0); + indexer[y, x] = newColor; + } + } + //Cv2.ImShow("TypeSpecificMat", mat); + //Cv2.WaitKey(0); + //Cv2.DestroyAllWindows(); + } + + private static long MeasureTime(Action action) + { + var watch = Stopwatch.StartNew(); + action(); + watch.Stop(); + return watch.ElapsedMilliseconds; + } + } +} diff --git a/SamplesCS/Samples/Pose.cs b/SamplesLegacy/Samples/Pose.cs similarity index 89% rename from SamplesCS/Samples/Pose.cs rename to SamplesLegacy/Samples/Pose.cs index 6f435b2..04a5598 100644 --- a/SamplesCS/Samples/Pose.cs +++ b/SamplesLegacy/Samples/Pose.cs @@ -1,16 +1,18 @@ using System.Collections.Generic; using OpenCvSharp; using OpenCvSharp.Dnn; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// To run this example first download the pose model available here: https://github.com/CMU-Perceptual-Computing-Lab/openpose/tree/master/models /// Add the files to the bin folder /// - internal class Pose : ISample + internal class Pose : ConsoleTestBase { - public void Run() + public override void RunTest() { const string model = "pose_iter_160000.caffemodel"; const string modelTxt = "pose_deploy_linevec_faster_4_stages.prototxt"; @@ -26,7 +28,7 @@ public void Run() new[] {6, 7}, new[] {1, 14}, new[] {14, 8}, new[] {8, 9}, new[] {9, 10}, new[] {14, 11}, new[] {11, 12}, new[] {12, 13}, }; - + using var frame = Cv2.ImRead(sampleImage); using var frameCopy = frame.Clone(); int frameWidth = frame.Cols; @@ -36,8 +38,8 @@ public void Run() const int inHeight = 368; using var net = CvDnn.ReadNetFromCaffe(modelTxt, model); - net.SetPreferableBackend(Net.Backend.OPENCV); - net.SetPreferableTarget(Net.Target.CPU); + net.SetPreferableBackend(Backend.OPENCV); + net.SetPreferableTarget(Target.CPU); using var inpBlob = CvDnn.BlobFromImage(frame, 1.0 / 255, new Size(inWidth, inHeight), new Scalar(0, 0, 0), false, false); @@ -52,8 +54,8 @@ public void Run() for (int n = 0; n < nPoints; n++) { // Probability map of corresponding body's part. - using var probMap = new Mat(H, W, MatType.CV_32F, output.Ptr(0, n)); - var p = new Point2f(-1,-1); + using var probMap = Mat.FromPixelData(H, W, MatType.CV_32F, output.Ptr(0, n)); + var p = new Point2f(-1, -1); Cv2.MinMaxLoc(probMap, out _, out var maxVal, out _, out var maxLoc); @@ -87,7 +89,7 @@ public void Run() Cv2.Circle(frame, partA.X, partA.Y, 8, new Scalar(0, 0, 255), -1); Cv2.Circle(frame, partB.X, partB.Y, 8, new Scalar(0, 0, 255), -1); } - + var finalOutput = outputLoc; Cv2.ImWrite(finalOutput, frame); } diff --git a/SamplesLegacy/Samples/SVMSample.cs b/SamplesLegacy/Samples/SVMSample.cs new file mode 100644 index 0000000..4300e97 --- /dev/null +++ b/SamplesLegacy/Samples/SVMSample.cs @@ -0,0 +1,95 @@ +using System; +using OpenCvSharp; +using OpenCvSharp.ML; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// Support Vector Machine + /// + /// http://opencv.jp/sample/svm.html#svm + internal class SVMSample : ConsoleTestBase + { + private static double Function(double x) + { + return x + 50 * Math.Sin(x / 15.0); + } + + public override void RunTest() + { + // Training data + var points = new Point2f[500]; + var responses = new int[points.Length]; + var rand = new Random(); + for (int i = 0; i < responses.Length; i++) + { + float x = rand.Next(0, 300); + float y = rand.Next(0, 300); + points[i] = new Point2f(x, y); + responses[i] = (y > Function(x)) ? 1 : 2; + } + + // Show training data and f(x) + using (Mat pointsPlot = Mat.Zeros(300, 300, MatType.CV_8UC3)) + { + for (int i = 0; i < points.Length; i++) + { + int x = (int)points[i].X; + int y = (int)(300 - points[i].Y); + int res = responses[i]; + Scalar color = (res == 1) ? Scalar.Red : Scalar.GreenYellow; + pointsPlot.Circle(x, y, 2, color, -1); + } + // f(x) + for (int x = 1; x < 300; x++) + { + int y1 = (int)(300 - Function(x - 1)); + int y2 = (int)(300 - Function(x)); + pointsPlot.Line(x - 1, y1, x, y2, Scalar.LightBlue, 1); + } + Window.ShowImages(pointsPlot); + } + + // Train + var dataMat = Mat.FromPixelData(points.Length, 2, MatType.CV_32FC1, points); + var resMat = Mat.FromPixelData(responses.Length, 1, MatType.CV_32SC1, responses); + using var svm = SVM.Create(); + // normalize data + dataMat /= 300.0; + + // SVM parameters + svm.Type = SVM.Types.CSvc; + svm.KernelType = SVM.KernelTypes.Rbf; + svm.TermCriteria = TermCriteria.Both(1000, 0.000001); + svm.Degree = 100.0; + svm.Gamma = 100.0; + svm.Coef0 = 1.0; + svm.C = 1.0; + svm.Nu = 0.5; + svm.P = 0.1; + + svm.Train(dataMat, SampleTypes.RowSample, resMat); + + // Predict for each 300x300 pixel + using Mat retPlot = Mat.Zeros(300, 300, MatType.CV_8UC3); + for (int x = 0; x < 300; x++) + { + for (int y = 0; y < 300; y++) + { + float[] sample = { x / 300f, y / 300f }; + var sampleMat = Mat.FromPixelData(1, 2, MatType.CV_32FC1, sample); + int ret = (int)svm.Predict(sampleMat); + var plotRect = new Rect(x, 300 - y, 1, 1); + if (ret == 1) + retPlot.Rectangle(plotRect, Scalar.Red); + else if (ret == 2) + retPlot.Rectangle(plotRect, Scalar.GreenYellow); + } + } + Window.ShowImages(retPlot); + } + + } +} diff --git a/SamplesCS/Samples/SeamlessClone.cs b/SamplesLegacy/Samples/SeamlessClone.cs similarity index 82% rename from SamplesCS/Samples/SeamlessClone.cs rename to SamplesLegacy/Samples/SeamlessClone.cs index 883b2be..a6bb5b2 100644 --- a/SamplesCS/Samples/SeamlessClone.cs +++ b/SamplesLegacy/Samples/SeamlessClone.cs @@ -1,17 +1,18 @@ using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// cv::seamlessClone /// - class SeamlessClone : ISample + class SeamlessClone : ConsoleTestBase { - public void Run() + public override void RunTest() { - Mat src = new Mat(FilePath.Image.Girl, ImreadModes.Color); - Mat dst = new Mat(FilePath.Image.Lenna, ImreadModes.Color); + Mat src = new Mat(ImagePath.Girl, ImreadModes.Color); + Mat dst = new Mat(ImagePath.Lenna, ImreadModes.Color); Mat src0 = src.Resize(dst.Size(), 0, 0, InterpolationFlags.Lanczos4); Mat mask = Mat.Zeros(src0.Size(), MatType.CV_8UC3); @@ -41,4 +42,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/SiftSurfSample.cs b/SamplesLegacy/Samples/SiftSurfSample.cs similarity index 76% rename from SamplesCS/Samples/SiftSurfSample.cs rename to SamplesLegacy/Samples/SiftSurfSample.cs index 823ccc0..f77e784 100644 --- a/SamplesCS/Samples/SiftSurfSample.cs +++ b/SamplesLegacy/Samples/SiftSurfSample.cs @@ -2,19 +2,20 @@ using OpenCvSharp.Features2D; using OpenCvSharp.XFeatures2D; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// SIFT and SURF sample /// http://www.prism.gatech.edu/~ahuaman3/docs/OpenCV_Docs/tutorials/nonfree_1/nonfree_1.html /// - class SiftSurfSample : ISample + class SiftSurfSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - using var src1 = new Mat(FilePath.Image.Match1, ImreadModes.Color); - using var src2 = new Mat(FilePath.Image.Match2, ImreadModes.Color); + using var src1 = new Mat(ImagePath.Match1, ImreadModes.Color); + using var src2 = new Mat(ImagePath.Match2, ImreadModes.Color); MatchBySift(src1, src2); MatchBySurf(src1, src2); @@ -24,18 +25,15 @@ private void MatchBySift(Mat src1, Mat src2) { using var gray1 = new Mat(); using var gray2 = new Mat(); - Cv2.CvtColor(src1, gray1, ColorConversionCodes.BGR2GRAY); Cv2.CvtColor(src2, gray2, ColorConversionCodes.BGR2GRAY); - using var sift = SIFT.Create(); - // Detect the keypoints and generate their descriptors using SIFT - KeyPoint[] keypoints1, keypoints2; + using var sift = SIFT.Create(); using var descriptors1 = new Mat(); using var descriptors2 = new Mat(); - sift.DetectAndCompute(gray1, null, out keypoints1, descriptors1); - sift.DetectAndCompute(gray2, null, out keypoints2, descriptors2); + sift.DetectAndCompute(gray1, null, out var keypoints1, descriptors1); + sift.DetectAndCompute(gray2, null, out var keypoints2, descriptors2); // Match descriptor vectors using var bfMatcher = new BFMatcher(NormTypes.L2, false); @@ -45,12 +43,12 @@ private void MatchBySift(Mat src1, Mat src2) // Draw matches using var bfView = new Mat(); - Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); using var flannView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, flannMatches, flannView); - using (new Window("SIFT matching (by BFMather)", WindowMode.AutoSize, bfView)) - using (new Window("SIFT matching (by FlannBasedMatcher)", WindowMode.AutoSize, flannView)) + using (new Window("SIFT matching (by BFMather)", bfView)) + using (new Window("SIFT matching (by FlannBasedMatcher)", flannView)) { Cv2.WaitKey(); } @@ -60,18 +58,15 @@ private void MatchBySurf(Mat src1, Mat src2) { using var gray1 = new Mat(); using var gray2 = new Mat(); - Cv2.CvtColor(src1, gray1, ColorConversionCodes.BGR2GRAY); Cv2.CvtColor(src2, gray2, ColorConversionCodes.BGR2GRAY); - using var surf = SURF.Create(200, 4, 2, true); - // Detect the keypoints and generate their descriptors using SURF - KeyPoint[] keypoints1, keypoints2; + using var surf = SURF.Create(200, 4, 2, true); using var descriptors1 = new Mat(); using var descriptors2 = new Mat(); - surf.DetectAndCompute(gray1, null, out keypoints1, descriptors1); - surf.DetectAndCompute(gray2, null, out keypoints2, descriptors2); + surf.DetectAndCompute(gray1, null, out var keypoints1, descriptors1); + surf.DetectAndCompute(gray2, null, out var keypoints2, descriptors2); // Match descriptor vectors using var bfMatcher = new BFMatcher(NormTypes.L2, false); @@ -81,16 +76,16 @@ private void MatchBySurf(Mat src1, Mat src2) // Draw matches using var bfView = new Mat(); - Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); using var flannView = new Mat(); + Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, bfMatches, bfView); Cv2.DrawMatches(gray1, keypoints1, gray2, keypoints2, flannMatches, flannView); - using (new Window("SURF matching (by BFMather)", WindowMode.AutoSize, bfView)) - using (new Window("SURF matching (by FlannBasedMatcher)", WindowMode.AutoSize, flannView)) + using (new Window("SURF matching (by BFMather)", bfView)) + using (new Window("SURF matching (by FlannBasedMatcher)", flannView)) { Cv2.WaitKey(); } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/SimpleBlobDetectorSample.cs b/SamplesLegacy/Samples/SimpleBlobDetectorSample.cs similarity index 85% rename from SamplesCS/Samples/SimpleBlobDetectorSample.cs rename to SamplesLegacy/Samples/SimpleBlobDetectorSample.cs index 68ca7e1..b318266 100644 --- a/SamplesCS/Samples/SimpleBlobDetectorSample.cs +++ b/SamplesLegacy/Samples/SimpleBlobDetectorSample.cs @@ -1,73 +1,71 @@ -using OpenCvSharp; -using SampleBase; - -namespace SamplesCS -{ - internal class SimpleBlobDetectorSample : ISample - { - public void Run() - { - using var src = Cv2.ImRead(FilePath.Image.Shapes); - using var detectedCircles = new Mat(); - using var detectedOvals = new Mat(); - - // Invert the image. Shapes has a black background and SimpleBlobDetector doesn't seem to work well with that. - Cv2.BitwiseNot(src, src); - - // Parameters tuned to detect only circles - var circleParams = new SimpleBlobDetector.Params - { - MinThreshold = 10, - MaxThreshold = 230, - - // The area is the number of pixels in the blob. - FilterByArea = true, - MinArea = 500, - MaxArea = 50000, - - // Circularity is a ratio of the area to the perimeter. Polygons with more sides are more circular. - FilterByCircularity = true, - MinCircularity = 0.9f, - - // Convexity is the ratio of the area of the blob to the area of its convex hull. - FilterByConvexity = true, - MinConvexity = 0.95f, - - // A circle's inertia ratio is 1. A line's is 0. An oval is between 0 and 1. - FilterByInertia = true, - MinInertiaRatio = 0.95f - }; - - // Parameters tuned to find the ovals in the Shapes image. - var ovalParams = new SimpleBlobDetector.Params - { - MinThreshold = 10, - MaxThreshold = 230, - FilterByArea = true, - MinArea = 500, - // The ovals are the smallest blobs in Shapes, so we limit the max area to eliminate the larger blobs. - MaxArea = 10000, - FilterByCircularity = true, - MinCircularity = 0.58f, - FilterByConvexity = true, - MinConvexity = 0.96f, - FilterByInertia = true, - MinInertiaRatio = 0.1f - }; - - using var circleDetector = SimpleBlobDetector.Create(circleParams); - var circleKeyPoints = circleDetector.Detect(src); - Cv2.DrawKeypoints(src, circleKeyPoints, detectedCircles, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); - - using var ovalDetector = SimpleBlobDetector.Create(ovalParams); - var ovalKeyPoints = ovalDetector.Detect(src); - Cv2.DrawKeypoints(src, ovalKeyPoints, detectedOvals, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); - - using var _1 = new Window("Detected Circles", WindowMode.AutoSize, detectedCircles); - using var _2 = new Window("Detected Ovals", WindowMode.AutoSize, detectedOvals); - - Cv2.WaitKey(); - - } - } -} +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + internal class SimpleBlobDetectorSample : ConsoleTestBase + { + public override void RunTest() + { + using var src = Cv2.ImRead(ImagePath.Shapes); + using var detectedCircles = new Mat(); + using var detectedOvals = new Mat(); + // Invert the image. Shapes has a black background and SimpleBlobDetector doesn't seem to work well with that. + Cv2.BitwiseNot(src, src); + + // Parameters tuned to detect only circles + var circleParams = new SimpleBlobDetector.Params + { + MinThreshold = 10, + MaxThreshold = 230, + + // The area is the number of pixels in the blob. + FilterByArea = true, + MinArea = 500, + MaxArea = 50000, + + // Circularity is a ratio of the area to the perimeter. Polygons with more sides are more circular. + FilterByCircularity = true, + MinCircularity = 0.9f, + + // Convexity is the ratio of the area of the blob to the area of its convex hull. + FilterByConvexity = true, + MinConvexity = 0.95f, + + // A circle's inertia ratio is 1. A line's is 0. An oval is between 0 and 1. + FilterByInertia = true, + MinInertiaRatio = 0.95f + }; + + // Parameters tuned to find the ovals in the Shapes image. + var ovalParams = new SimpleBlobDetector.Params + { + MinThreshold = 10, + MaxThreshold = 230, + FilterByArea = true, + MinArea = 500, + // The ovals are the smallest blobs in Shapes, so we limit the max area to eliminate the larger blobs. + MaxArea = 10000, + FilterByCircularity = true, + MinCircularity = 0.58f, + FilterByConvexity = true, + MinConvexity = 0.96f, + FilterByInertia = true, + MinInertiaRatio = 0.1f + }; + + using var circleDetector = SimpleBlobDetector.Create(circleParams); + using var ovalDetector = SimpleBlobDetector.Create(ovalParams); + var circleKeyPoints = circleDetector.Detect(src); + Cv2.DrawKeypoints(src, circleKeyPoints, detectedCircles, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); + + var ovalKeyPoints = ovalDetector.Detect(src); + Cv2.DrawKeypoints(src, ovalKeyPoints, detectedOvals, Scalar.HotPink, DrawMatchesFlags.DrawRichKeypoints); + + using var w1 = new Window("Detected Circles", detectedCircles); + using var w2 = new Window("Detected Ovals", detectedOvals); + Cv2.WaitKey(); + } + } +} diff --git a/SamplesCS/Samples/SolveEquation.cs b/SamplesLegacy/Samples/SolveEquation.cs similarity index 71% rename from SamplesCS/Samples/SolveEquation.cs rename to SamplesLegacy/Samples/SolveEquation.cs index 3dbcb0b..2ae52c1 100644 --- a/SamplesCS/Samples/SolveEquation.cs +++ b/SamplesLegacy/Samples/SolveEquation.cs @@ -1,16 +1,17 @@ using System; using System.Collections.Generic; -using System.Linq; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class SolveEquation : ISample + class SolveEquation : ConsoleTestBase { - public void Run() + public override void RunTest() { ByMat(); ByNormalArray(); @@ -27,13 +28,13 @@ private void ByMat() // 2x + 3y = 26 // (x=4, y=6) - double[,] av = {{1, 1}, + double[,] av = {{1, 1}, {2, 3}}; - double[] yv = {10, 26}; + double[] yv = { 10, 26 }; - Mat a = new Mat(2, 2, MatType.CV_64FC1, av); - Mat y = new Mat(2, 1, MatType.CV_64FC1, yv); - Mat x = new Mat(); + using var a = Mat.FromPixelData(2, 2, MatType.CV_64FC1, av); + using var y = Mat.FromPixelData(2, 1, MatType.CV_64FC1, yv); + using var x = new Mat(); Cv2.Solve(a, y, x, DecompTypes.LU); @@ -50,12 +51,12 @@ private void ByNormalArray() // 2x + 3y = 26 // (x=4, y=6) - double[,] a = {{1, 1}, + double[,] a = {{1, 1}, {2, 3}}; double[] y = { 10, 26 }; - List x = new List(); + var x = new List(); Cv2.Solve( InputArray.Create(a), InputArray.Create(y), @@ -66,4 +67,4 @@ private void ByNormalArray() Console.WriteLine("X1 = {0}, X2 = {1}", x[0], x[1]); } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/StarDetectorSample.cs b/SamplesLegacy/Samples/StarDetectorSample.cs similarity index 81% rename from SamplesCS/Samples/StarDetectorSample.cs rename to SamplesLegacy/Samples/StarDetectorSample.cs index 8981781..b7902a5 100644 --- a/SamplesCS/Samples/StarDetectorSample.cs +++ b/SamplesLegacy/Samples/StarDetectorSample.cs @@ -1,18 +1,19 @@ using OpenCvSharp; using OpenCvSharp.XFeatures2D; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// Retrieves keypoints using the StarDetector algorithm. /// - class StarDetectorSample : ISample + class StarDetectorSample : ConsoleTestBase { - public void Run() + public override void RunTest() { - var dst = new Mat(FilePath.Image.Lenna, ImreadModes.Color); - var gray = new Mat(FilePath.Image.Lenna, ImreadModes.Grayscale); + var dst = new Mat(ImagePath.Lenna, ImreadModes.Color); + var gray = new Mat(ImagePath.Lenna, ImreadModes.Grayscale); StarDetector detector = StarDetector.Create(45); KeyPoint[] keypoints = detector.Detect(gray); @@ -41,4 +42,4 @@ public void Run() } } } -} \ No newline at end of file +} diff --git a/SamplesCS/Samples/Stitching.cs b/SamplesLegacy/Samples/Stitching.cs similarity index 71% rename from SamplesCS/Samples/Stitching.cs rename to SamplesLegacy/Samples/Stitching.cs index 43f2141..96d877b 100644 --- a/SamplesCS/Samples/Stitching.cs +++ b/SamplesLegacy/Samples/Stitching.cs @@ -1,15 +1,37 @@ using System; using System.Collections.Generic; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { - class Stitching : ISample + class Stitching : ConsoleTestBase { + public override void RunTest() + { + Mat[] images = SelectStitchingImages(200, 200, 10); + + using var stitcher = Stitcher.Create(Stitcher.Mode.Scans); + using var pano = new Mat(); + + Console.Write("Stitching start..."); + // TODO: does not work?? + var status = stitcher.Stitch(images, pano); + Console.WriteLine(" finish (status:{0})", status); + + Window.ShowImages(pano); + + foreach (var image in images) + { + image.Dispose(); + } + } + private static Mat[] SelectStitchingImages(int width, int height, int count) { - Mat source = new Mat(@"Data\Image\lenna.png", ImreadModes.Color); - Mat result = source.Clone(); + using var source = new Mat(@"Data\Image\lenna.png", ImreadModes.Color); + using var result = source.Clone(); var rand = new Random(); var mats = new List(); @@ -25,37 +47,16 @@ private static Mat[] SelectStitchingImages(int width, int height, int count) result.Line(new Point(x2, y2), new Point(x2, y1), new Scalar(0, 0, 255)); result.Line(new Point(x2, y1), new Point(x1, y1), new Scalar(0, 0, 255)); - Mat m = source[new Rect(x1, y1, width, height)]; + using var m = source[new Rect(x1, y1, width, height)]; mats.Add(m.Clone()); } - using (new Window(result)) + using (new Window("stitching", result)) { Cv2.WaitKey(); } return mats.ToArray(); } - - public void Run() - { - Mat[] images = SelectStitchingImages(200, 200, 10); - - var stitcher = Stitcher.Create(Stitcher.Mode.Scans); - - Mat pano = new Mat(); - - Console.Write("Stitching start..."); - // TODO: does not work?? - var status = stitcher.Stitch(images, pano); - Console.WriteLine(" finish (status:{0})", status); - - Window.ShowImages(pano); - - foreach (Mat image in images) - { - image.Dispose(); - } - } } } diff --git a/SamplesCS/Samples/Subdiv2DSample.cs b/SamplesLegacy/Samples/Subdiv2DSample.cs similarity index 75% rename from SamplesCS/Samples/Subdiv2DSample.cs rename to SamplesLegacy/Samples/Subdiv2DSample.cs index f12b556..7777d09 100644 --- a/SamplesCS/Samples/Subdiv2DSample.cs +++ b/SamplesLegacy/Samples/Subdiv2DSample.cs @@ -1,16 +1,17 @@ using System; -using System.Collections.Generic; using System.Linq; using OpenCvSharp; +using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// cv::Subdiv2D test /// - class Subdiv2DSample : ISample + class Subdiv2DSample : ConsoleTestBase { - public void Run() + public override void RunTest() { const int Size = 600; @@ -19,23 +20,22 @@ public void Run() var points = Enumerable.Range(0, 100).Select(_ => new Point2f(rand.Next(0, Size), rand.Next(0, Size))).ToArray(); - Mat img = Mat.Zeros(Size, Size, MatType.CV_8UC3); + using var imgExpr = Mat.Zeros(Size, Size, MatType.CV_8UC3); + using var img = imgExpr.ToMat(); foreach (var p in points) { img.Circle((Point)p, 4, Scalar.Red, -1); } // Initializes Subdiv2D - var subdiv = new Subdiv2D(); + using var subdiv = new Subdiv2D(); subdiv.InitDelaunay(new Rect(0, 0, Size, Size)); subdiv.Insert(points); // Draws voronoi diagram - Point2f[][] facetList; - Point2f[] facetCenters; - subdiv.GetVoronoiFacetList(null, out facetList, out facetCenters); + subdiv.GetVoronoiFacetList(null, out var facetList, out var facetCenters); - var vonoroi = img.Clone(); + using var vonoroi = img.Clone(); foreach (var list in facetList) { var before = list.Last(); @@ -48,7 +48,7 @@ public void Run() // Draws delaunay diagram Vec4f[] edgeList = subdiv.GetEdgeList(); - var delaunay = img.Clone(); + using var delaunay = img.Clone(); foreach (var edge in edgeList) { var p1 = new Point(edge.Item0, edge.Item1); @@ -62,4 +62,4 @@ public void Run() Cv2.DestroyAllWindows(); } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/SuperResolutionSample.cs b/SamplesLegacy/Samples/SuperResolutionSample.cs new file mode 100644 index 0000000..e7b44d5 --- /dev/null +++ b/SamplesLegacy/Samples/SuperResolutionSample.cs @@ -0,0 +1,42 @@ +using System; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// + /// + class SuperResolutionSample : ConsoleTestBase + { + public override void RunTest() + { + var capture = new VideoCapture(); + capture.Set(VideoCaptureProperties.FrameWidth, 640); + capture.Set(VideoCaptureProperties.FrameHeight, 480); + capture.Open(-1); + if (!capture.IsOpened()) + throw new Exception("capture initialization failed"); + + var fs = FrameSource.CreateFrameSource_Camera(-1); + var sr = SuperResolution.CreateBTVL1(); + sr.SetInput(fs); + + using var normalWindow = new Window("normal"); + using var srWindow = new Window("super resolution"); + var normalFrame = new Mat(); + var srFrame = new Mat(); + while (true) + { + capture.Read(normalFrame); + sr.NextFrame(srFrame); + if (normalFrame.Empty() || srFrame.Empty()) + break; + normalWindow.ShowImage(normalFrame); + srWindow.ShowImage(srFrame); + Cv2.WaitKey(100); + } + } + } +} diff --git a/SamplesLegacy/Samples/VideoCaptureSample.cs b/SamplesLegacy/Samples/VideoCaptureSample.cs new file mode 100644 index 0000000..bdb5576 --- /dev/null +++ b/SamplesLegacy/Samples/VideoCaptureSample.cs @@ -0,0 +1,38 @@ +using System; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// + /// + class VideoCaptureSample : ConsoleTestBase + { + public override void RunTest() + { + // Opens MP4 file (ffmpeg is probably needed) + using var capture = new VideoCapture(MoviePath.Bach); + if (!capture.IsOpened()) + return; + + int sleepTime = (int)Math.Round(1000 / capture.Fps); + + using var window = new Window("capture"); + // Frame image buffer + var image = new Mat(); + + // When the movie playback reaches end, Mat.data becomes NULL. + while (true) + { + capture.Read(image); // same as cvQueryFrame + if(image.Empty()) + break; + + window.ShowImage(image); + Cv2.WaitKey(sleepTime); + } + } + } +} diff --git a/SamplesCS/Samples/VideoWriterSample.cs b/SamplesLegacy/Samples/VideoWriterSample.cs similarity index 69% rename from SamplesCS/Samples/VideoWriterSample.cs rename to SamplesLegacy/Samples/VideoWriterSample.cs index 3d6c0d0..95fdc3c 100644 --- a/SamplesCS/Samples/VideoWriterSample.cs +++ b/SamplesLegacy/Samples/VideoWriterSample.cs @@ -1,27 +1,28 @@ using System; using OpenCvSharp; using SampleBase; +using SampleBase.Console; -namespace SamplesCS +namespace SamplesLegacy { /// /// /// - class VideoWriterSample : ISample + class VideoWriterSample : ConsoleTestBase { - public void Run() + public override void RunTest() { const string OutVideoFile = "out.avi"; // Opens MP4 file (ffmpeg is probably needed) - VideoCapture capture = new VideoCapture(FilePath.Movie.Bach); + using var capture = new VideoCapture(MoviePath.Bach); // Read movie frames and write them to VideoWriter - Size dsize = new Size(640, 480); - using (VideoWriter writer = new VideoWriter(OutVideoFile, -1, capture.Fps, dsize)) + var dsize = new Size(640, 480); + using (var writer = new VideoWriter(OutVideoFile, -1, capture.Fps, dsize)) { Console.WriteLine("Converting each movie frames..."); - Mat frame = new Mat(); + using var frame = new Mat(); while(true) { // Read image @@ -33,9 +34,9 @@ public void Run() Console.Write("{0} / {1}", capture.PosFrames, capture.FrameCount); // grayscale -> canny -> resize - Mat gray = new Mat(); - Mat canny = new Mat(); - Mat dst = new Mat(); + using var gray = new Mat(); + using var canny = new Mat(); + using var dst = new Mat(); Cv2.CvtColor(frame, gray, ColorConversionCodes.BGR2GRAY); Cv2.Canny(gray, canny, 100, 180); Cv2.Resize(canny, dst, dsize, 0, 0, InterpolationFlags.Linear); @@ -46,12 +47,12 @@ public void Run() } // Watch result movie - using (VideoCapture capture2 = new VideoCapture(OutVideoFile)) - using (Window window = new Window("result")) + using (var capture2 = new VideoCapture(OutVideoFile)) + using (var window = new Window("result")) { int sleepTime = (int)(1000 / capture.Fps); - Mat frame = new Mat(); + using var frame = new Mat(); while (true) { capture2.Read(frame); @@ -65,4 +66,4 @@ public void Run() } } -} \ No newline at end of file +} diff --git a/SamplesLegacy/Samples/WatershedSample.cs b/SamplesLegacy/Samples/WatershedSample.cs new file mode 100644 index 0000000..6033465 --- /dev/null +++ b/SamplesLegacy/Samples/WatershedSample.cs @@ -0,0 +1,56 @@ +using System; +using OpenCvSharp; +using SampleBase; +using SampleBase.Console; + +namespace SamplesLegacy +{ + /// + /// Watershed algorithm sample + /// + /// http://opencv.jp/sample/segmentation_and_connection.html#watershed + public class WatershedSample : ConsoleTestBase + { + public override void RunTest() + { + using var srcImg = Cv2.ImRead(ImagePath.Lenna, ImreadModes.AnyDepth | ImreadModes.AnyColor); + using var markers = new Mat(srcImg.Size(), MatType.CV_32SC1, Scalar.All(0)); + using var dspImg = srcImg.Clone(); + using var window = new Window("image", srcImg); + // Mouse event + int seedNum = 0; + window.SetMouseCallback((MouseEventTypes ev, int x, int y, MouseEventFlags flags, IntPtr userdata) => + { + if (ev == MouseEventTypes.LButtonDown) + { + seedNum++; + var pt = new Point(x, y); + markers.Circle(pt, 10, Scalar.All(seedNum), Cv2.FILLED, LineTypes.Link8); + dspImg.Circle(pt, 10, Scalar.White, 3, LineTypes.Link8); + window.Image = dspImg; + } + }); + Window.WaitKey(); + + Cv2.Watershed(srcImg, markers); + + // draws watershed + using (var dstImg = srcImg.Clone()) + using (new Window("watershed transform", dstImg)) + { + for (int y = 0; y < markers.Height; y++) + { + for (int x = 0; x < markers.Width; x++) + { + int idx = markers.Get(y, x); + if (idx == -1) + { + dstImg.Rectangle(new Rect(x, y, 2, 2), Scalar.Red, -1); + } + } + } + Window.WaitKey(); + } + } + } +} diff --git a/SamplesLegacy/SamplesLegacy.csproj b/SamplesLegacy/SamplesLegacy.csproj new file mode 100644 index 0000000..649de59 --- /dev/null +++ b/SamplesLegacy/SamplesLegacy.csproj @@ -0,0 +1,140 @@ + + + + + + Debug + AnyCPU + {6B44A902-63D5-4191-8A0D-E37E75E49599} + Exe + SamplesLegacy + SamplesLegacy + v4.8 + 512 + true + true + 8.0 + + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\OpenCvSharp4.4.11.0.20250507\lib\net48\OpenCvSharp.dll + + + + ..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll + + + + ..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {a2493ac8-54cf-41d4-ad10-625390149a7f} + SampleBase + + + + + + + + + + このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 + + + + + + \ No newline at end of file diff --git a/SamplesLegacy/packages.config b/SamplesLegacy/packages.config new file mode 100644 index 0000000..5b4ffd4 --- /dev/null +++ b/SamplesLegacy/packages.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/SamplesVB/My Project/Application.Designer.vb b/SamplesVB/My Project/Application.Designer.vb deleted file mode 100644 index 8effad9..0000000 --- a/SamplesVB/My Project/Application.Designer.vb +++ /dev/null @@ -1,13 +0,0 @@ -'------------------------------------------------------------------------------ -' -' このコードはツールによって生成されました。 -' ランタイム バージョン:4.0.30319.42000 -' -' このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 -' コードが再生成されるときに損失したりします。 -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - diff --git a/SamplesVB/My Project/Application.myapp b/SamplesVB/My Project/Application.myapp deleted file mode 100644 index e62f1a5..0000000 --- a/SamplesVB/My Project/Application.myapp +++ /dev/null @@ -1,10 +0,0 @@ - - - false - false - 0 - true - 0 - 2 - true - diff --git a/SamplesVB/My Project/AssemblyInfo.vb b/SamplesVB/My Project/AssemblyInfo.vb deleted file mode 100644 index e01d193..0000000 --- a/SamplesVB/My Project/AssemblyInfo.vb +++ /dev/null @@ -1,35 +0,0 @@ -Imports System -Imports System.Reflection -Imports System.Runtime.InteropServices - -' アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 -' アセンブリに関連付けられている情報を変更するには、 -' これらの属性値を変更してください。 - -' アセンブリ属性の値を確認します。 - - - - - - - - - - -'このプロジェクトが COM に公開される場合、次の GUID がタイプ ライブラリの ID になります。 - - -' アセンブリのバージョン情報は、以下の 4 つの値で構成されています: -' -' Major Version -' Minor Version -' Build Number -' Revision -' -' すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を -' 既定値にすることができます: -' - - - diff --git a/SamplesVB/My Project/Resources.Designer.vb b/SamplesVB/My Project/Resources.Designer.vb deleted file mode 100644 index fe2ae65..0000000 --- a/SamplesVB/My Project/Resources.Designer.vb +++ /dev/null @@ -1,63 +0,0 @@ -'------------------------------------------------------------------------------ -' -' このコードはツールによって生成されました。 -' ランタイム バージョン:4.0.30319.42000 -' -' このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 -' コードが再生成されるときに損失したりします。 -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - -Imports System - -Namespace My.Resources - - 'このクラスは StronglyTypedResourceBuilder クラスが ResGen - 'または Visual Studio のようなツールを使用して自動生成されました。 - 'メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に - 'ResGen を実行し直すか、または VS プロジェクトをビルドし直します。 - ''' - ''' ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 - ''' - _ - Friend Module Resources - - Private resourceMan As Global.System.Resources.ResourceManager - - Private resourceCulture As Global.System.Globalization.CultureInfo - - ''' - ''' このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。 - ''' - _ - Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager - Get - If Object.ReferenceEquals(resourceMan, Nothing) Then - Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("SamplesVB.Resources", GetType(Resources).Assembly) - resourceMan = temp - End If - Return resourceMan - End Get - End Property - - ''' - ''' 厳密に型指定されたこのリソース クラスを使用して、すべての検索リソースに対し、 - ''' 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 - ''' - _ - Friend Property Culture() As Global.System.Globalization.CultureInfo - Get - Return resourceCulture - End Get - Set - resourceCulture = value - End Set - End Property - End Module -End Namespace diff --git a/SamplesVB/My Project/Resources.resx b/SamplesVB/My Project/Resources.resx deleted file mode 100644 index af7dbeb..0000000 --- a/SamplesVB/My Project/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file diff --git a/SamplesVB/My Project/Settings.Designer.vb b/SamplesVB/My Project/Settings.Designer.vb deleted file mode 100644 index 758f777..0000000 --- a/SamplesVB/My Project/Settings.Designer.vb +++ /dev/null @@ -1,73 +0,0 @@ -'------------------------------------------------------------------------------ -' -' このコードはツールによって生成されました。 -' ランタイム バージョン:4.0.30319.42000 -' -' このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 -' コードが再生成されるときに損失したりします。 -' -'------------------------------------------------------------------------------ - -Option Strict On -Option Explicit On - - -Namespace My - - _ - Partial Friend NotInheritable Class MySettings - Inherits Global.System.Configuration.ApplicationSettingsBase - - Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings) - -#Region "My.Settings 自動保存機能" -#If _MyType = "WindowsForms" Then - Private Shared addedHandler As Boolean - - Private Shared addedHandlerLockObject As New Object - - _ - Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs) - If My.Application.SaveMySettingsOnExit Then - My.Settings.Save() - End If - End Sub -#End If -#End Region - - Public Shared ReadOnly Property [Default]() As MySettings - Get - -#If _MyType = "WindowsForms" Then - If Not addedHandler Then - SyncLock addedHandlerLockObject - If Not addedHandler Then - AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings - addedHandler = True - End If - End SyncLock - End If -#End If - Return defaultInstance - End Get - End Property - End Class -End Namespace - -Namespace My - - _ - Friend Module MySettingsProperty - - _ - Friend ReadOnly Property Settings() As Global.SamplesVB.My.MySettings - Get - Return Global.SamplesVB.My.MySettings.Default - End Get - End Property - End Module -End Namespace diff --git a/SamplesVB/My Project/Settings.settings b/SamplesVB/My Project/Settings.settings deleted file mode 100644 index 85b890b..0000000 --- a/SamplesVB/My Project/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/SamplesVB/Samples/FASTSample.vb b/SamplesVB/Samples/FASTSample.vb index b1484ad..8f5f88c 100644 --- a/SamplesVB/Samples/FASTSample.vb +++ b/SamplesVB/Samples/FASTSample.vb @@ -10,8 +10,8 @@ Imports SampleBase ''' Friend Module FASTSample Public Sub Start() - Using imgSrc As New Mat(FilePath.Image.Lenna, ImreadModes.Color), _ - imgGray As New Mat(imgSrc.Size, MatType.CV_8UC1), _ + Using imgSrc As New Mat(ImagePath.Lenna, ImreadModes.Color), + imgGray As New Mat(imgSrc.Size, MatType.CV_8UC1), imgDst As Mat = imgSrc.Clone() Cv2.CvtColor(imgSrc, imgGray, ColorConversionCodes.BGR2GRAY, 0) diff --git a/SamplesVB/Samples/FlannSample.vb b/SamplesVB/Samples/FlannSample.vb index dca9256..f73c775 100644 --- a/SamplesVB/Samples/FlannSample.vb +++ b/SamplesVB/Samples/FlannSample.vb @@ -31,8 +31,8 @@ Friend Module FlannSample ' knnSearch Using nnIndex As New Flann.Index(features, New Flann.KDTreeIndexParams(4)) Dim knn As Integer = 1 - Dim indices() As Integer - Dim dists() As Single + Dim indices() As Integer = Nothing + Dim dists() As Single = Nothing nnIndex.KnnSearch(queries, indices, dists, knn, New Flann.SearchParams(32)) For i As Integer = 0 To knn - 1 diff --git a/SamplesVB/Samples/HOGSample.vb b/SamplesVB/Samples/HOGSample.vb index f29df9c..c6c6544 100644 --- a/SamplesVB/Samples/HOGSample.vb +++ b/SamplesVB/Samples/HOGSample.vb @@ -13,7 +13,7 @@ Imports SampleBase ''' Friend Module HOGSample Public Sub Start() - Dim img As Mat = Cv2.ImRead(FilePath.Image.Asahiyama, ImreadModes.Color) + Dim img As Mat = Cv2.ImRead(ImagePath.Asahiyama, ImreadModes.Color) Dim hog As New HOGDescriptor() hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()) @@ -44,8 +44,8 @@ Friend Module HOGSample img.Rectangle(r.TopLeft, r.BottomRight, Scalar.Red, 3, LineTypes.Link8, 0) Next rect - Using window As New Window("people detector", WindowMode.Normal, img) - window.SetProperty(WindowProperty.Fullscreen, 1) + Using window As New Window("people detector", img, WindowFlags.Normal) + window.SetProperty(WindowPropertyFlags.Fullscreen, 1) Cv2.WaitKey(0) End Using End Sub diff --git a/SamplesVB/Samples/HoughLinesSample.vb b/SamplesVB/Samples/HoughLinesSample.vb index 967802e..70a35eb 100644 --- a/SamplesVB/Samples/HoughLinesSample.vb +++ b/SamplesVB/Samples/HoughLinesSample.vb @@ -11,8 +11,8 @@ Friend Module HoughLinesSample Public Sub Start() ' (1)画像の読み込み - Using imgGray As New Mat(FilePath.Image.Goryokaku, ImreadModes.GrayScale), _ - imgStd As New Mat(FilePath.Image.Goryokaku, ImreadModes.Color), _ + Using imgGray As New Mat(ImagePath.Goryokaku, ImreadModes.Grayscale), + imgStd As New Mat(ImagePath.Goryokaku, ImreadModes.Color), imgProb As Mat = imgStd.Clone() ' Preprocess Cv2.Canny(imgGray, imgGray, 50, 200, 3, False) @@ -41,8 +41,8 @@ Friend Module HoughLinesSample ' (5)検出結果表示用のウィンドウを確保し表示する - Using TempCvWindow As Window = New Window("Hough_line_standard", WindowMode.AutoSize, imgStd), _ - TempCvWindowProb As Window = New Window("Hough_line_probabilistic", WindowMode.AutoSize, imgProb) + Using tempCvWindow = New Window("Hough_line_standard", imgStd), + TempCvWindowProb = New Window("Hough_line_probabilistic", imgProb) Window.WaitKey(0) End Using End Using diff --git a/SamplesVB/Samples/StarDetectorSample.vb b/SamplesVB/Samples/StarDetectorSample.vb index 9ef3aea..5c4199a 100644 --- a/SamplesVB/Samples/StarDetectorSample.vb +++ b/SamplesVB/Samples/StarDetectorSample.vb @@ -10,7 +10,7 @@ Imports SampleBase ''' Friend Module StarDetectorSample Public Sub Start() - Using src As New Mat(FilePath.Image.Lenna, ImreadModes.GrayScale), + Using src As New Mat(ImagePath.Lenna, ImreadModes.Grayscale), dst As New Mat() Cv2.CvtColor(src, dst, ColorConversionCodes.GRAY2BGR) diff --git a/SamplesVB/SamplesVB.vbproj b/SamplesVB/SamplesVB.vbproj index 60ca3d3..c3d53cc 100644 --- a/SamplesVB/SamplesVB.vbproj +++ b/SamplesVB/SamplesVB.vbproj @@ -1,255 +1,18 @@ - - - - + + - Debug - AnyCPU - {4A14A20D-8E2A-4559-A038-F0204A22C283} Exe - SamplesVB.Program - SamplesVB - SamplesVB - 512 - Console - v4.6.1 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - ..\ - true - - - + SamplesVB2 + net8.0 - - AnyCPU - true - full - true - true - bin\Debug\ - SamplesVB.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - false - - - AnyCPU - pdbonly - false - true - true - bin\Release\ - SamplesVB.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - false - - - On - - - Binary - - - Off - - - On - - - true - true - true - bin\x86\Debug\ - SamplesVB.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - full - x86 - MinimumRecommendedRules.ruleset - false - - - true - bin\x86\Release\ - SamplesVB.xml - true - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - pdbonly - x86 - MinimumRecommendedRules.ruleset - false - - - true - true - true - bin\x64\Debug\ - SamplesVB.xml - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - full - x64 - MinimumRecommendedRules.ruleset - false - - - true - bin\x64\Release\ - SamplesVB.xml - true - 41999,42016,42017,42018,42019,42020,42021,42022,42030,42032,42036,42104,42108,42109 - pdbonly - x64 - MinimumRecommendedRules.ruleset - false - - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Blob.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Extensions.dll - - - - - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll - - - - - - ..\packages\System.Drawing.Common.4.7.0\lib\net461\System.Drawing.Common.dll - - - ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll - - - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll - - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll - - - - - - - - - - - - - - - - - - - - - - - True - Application.myapp - - - True - True - Resources.resx - - - True - Settings.settings - True - - - - - - - - - - VbMyResourcesResXFileCodeGenerator - Resources.Designer.vb - My.Resources - Designer - - - - - - MyApplicationCodeGenerator - Application.Designer.vb - - - SettingsSingleFileGenerator - My - Settings.Designer.vb - - - + - - False - Microsoft .NET Framework 4 %28x86 および x64%29 - true - - - False - .NET Framework 3.5 SP1 Client Profile - false - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows インストーラー 4.5 - - true - + + + - - {2d245c04-0f27-458a-a185-16242a3f918c} - SampleBase - + - - - - - このプロジェクトは、このコンピューターにはない NuGet パッケージを参照しています。これらをダウンロードするには、NuGet パッケージの復元を有効にしてください。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。不足しているファイルは {0} です。 - - - - - - \ No newline at end of file + + diff --git a/SamplesVB/app.config b/SamplesVB/app.config deleted file mode 100644 index cc19de1..0000000 --- a/SamplesVB/app.config +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SamplesVB/packages.config b/SamplesVB/packages.config deleted file mode 100644 index 933ee1c..0000000 --- a/SamplesVB/packages.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/VideoCaptureForm/App.config b/VideoCaptureForm/App.config index 25544a8..bcb2ae2 100644 --- a/VideoCaptureForm/App.config +++ b/VideoCaptureForm/App.config @@ -1,14 +1,14 @@  - + - + - \ No newline at end of file + diff --git a/VideoCaptureForm/Program.cs b/VideoCaptureForm/Program.cs index fc46d0f..09079d0 100644 --- a/VideoCaptureForm/Program.cs +++ b/VideoCaptureForm/Program.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; using System.Windows.Forms; namespace VideoCaptureForm diff --git a/VideoCaptureForm/Properties/AssemblyInfo.cs b/VideoCaptureForm/Properties/AssemblyInfo.cs index d05d21b..c5d8633 100644 --- a/VideoCaptureForm/Properties/AssemblyInfo.cs +++ b/VideoCaptureForm/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // アセンブリに関する一般情報は以下の属性セットをとおして制御されます。 diff --git a/VideoCaptureForm/Properties/Resources.Designer.cs b/VideoCaptureForm/Properties/Resources.Designer.cs index 253283b..f3575e2 100644 --- a/VideoCaptureForm/Properties/Resources.Designer.cs +++ b/VideoCaptureForm/Properties/Resources.Designer.cs @@ -4,66 +4,58 @@ // ランタイム バージョン:4.0.30319.42000 // // このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 -// コードが再生成されるときに損失したりします +// コードが再生成されるときに損失したりします。 // //------------------------------------------------------------------------------ -namespace VideoCaptureForm.Properties -{ - - +namespace VideoCaptureForm.Properties { + using System; + + /// /// ローカライズされた文字列などを検索するための、厳密に型指定されたリソース クラスです。 /// // このクラスは StronglyTypedResourceBuilder クラスが ResGen // または Visual Studio のようなツールを使用して自動生成されました。 // メンバーを追加または削除するには、.ResX ファイルを編集して、/str オプションと共に - // ResGen を実行し直すか、または VS プロジェクトをリビルドします。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + // ResGen を実行し直すか、または VS プロジェクトをビルドし直します。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// - /// このクラスで使用されるキャッシュされた ResourceManager インスタンスを返します。 + /// このクラスで使用されているキャッシュされた ResourceManager インスタンスを返します。 /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("VideoCaptureForm.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// /// すべてについて、現在のスレッドの CurrentUICulture プロパティをオーバーライドします /// 現在のスレッドの CurrentUICulture プロパティをオーバーライドします。 /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } diff --git a/VideoCaptureForm/Properties/Settings.Designer.cs b/VideoCaptureForm/Properties/Settings.Designer.cs index ce1fbbe..809d930 100644 --- a/VideoCaptureForm/Properties/Settings.Designer.cs +++ b/VideoCaptureForm/Properties/Settings.Designer.cs @@ -1,28 +1,24 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// このコードはツールによって生成されました。 +// ランタイム バージョン:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、 +// コードが再生成されるときに損失したりします。 // //------------------------------------------------------------------------------ -namespace VideoCaptureForm.Properties -{ - - +namespace VideoCaptureForm.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.2.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } diff --git a/VideoCaptureForm/VideoCaptureForm.cs b/VideoCaptureForm/VideoCaptureForm.cs index 2b0af79..091726b 100644 --- a/VideoCaptureForm/VideoCaptureForm.cs +++ b/VideoCaptureForm/VideoCaptureForm.cs @@ -1,12 +1,7 @@ using System; -using System.Collections.Generic; using System.ComponentModel; -using System.Data; using System.Drawing; -using System.Linq; -using System.Text; using System.Threading; -using System.Threading.Tasks; using System.Windows.Forms; using OpenCvSharp; using OpenCvSharp.Extensions; @@ -42,9 +37,9 @@ private void VideoCaptureForm_Load(object sender, EventArgs e) private void VideoCaptureForm_FormClosing(object sender, FormClosingEventArgs e) { + backgroundWorker1.CancelAsync(); capture.Dispose(); cascadeClassifier.Dispose(); - backgroundWorker1.CancelAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) @@ -55,7 +50,7 @@ private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { using (var frameMat = capture.RetrieveMat()) { - var rects = cascadeClassifier.DetectMultiScale(frameMat, 1.1, 5, HaarDetectionType.ScaleImage, new OpenCvSharp.Size(30, 30)); + var rects = cascadeClassifier.DetectMultiScale(frameMat, 1.1, 5, HaarDetectionTypes.ScaleImage, new OpenCvSharp.Size(30, 30)); if (rects.Length > 0) { Cv2.Rectangle(frameMat, rects[0], Scalar.Red); diff --git a/VideoCaptureForm/VideoCaptureForm.csproj b/VideoCaptureForm/VideoCaptureForm.csproj index 5b6b68c..3f41082 100644 --- a/VideoCaptureForm/VideoCaptureForm.csproj +++ b/VideoCaptureForm/VideoCaptureForm.csproj @@ -1,6 +1,6 @@  - + Debug @@ -9,12 +9,13 @@ WinExe VideoCaptureForm VideoCaptureForm - v4.7.2 + v4.8 512 true true + AnyCPU @@ -37,32 +38,32 @@ - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.dll - - - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Blob.dll + ..\packages\OpenCvSharp4.4.11.0.20250507\lib\net48\OpenCvSharp.dll - ..\packages\OpenCvSharp4.4.5.0.20201013\lib\net461\OpenCvSharp.Extensions.dll + ..\packages\OpenCvSharp4.Extensions.4.11.0.20250507\lib\net48\OpenCvSharp.Extensions.dll - - ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + ..\packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll - - ..\packages\System.Drawing.Common.4.7.0\lib\net461\System.Drawing.Common.dll + + ..\packages\System.Drawing.Common.8.0.11\lib\net462\System.Drawing.Common.dll - - ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + ..\packages\System.Memory.4.6.3\lib\net462\System.Memory.dll - - ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + ..\packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll - - ..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + ..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll + + + @@ -93,6 +94,7 @@ True Resources.resx + True @@ -118,6 +120,8 @@ このプロジェクトは、このコンピューター上にない NuGet パッケージを参照しています。それらのパッケージをダウンロードするには、[NuGet パッケージの復元] を使用します。詳細については、http://go.microsoft.com/fwlink/?LinkID=322105 を参照してください。見つからないファイルは {0} です。 - + + + \ No newline at end of file diff --git a/VideoCaptureForm/packages.config b/VideoCaptureForm/packages.config index 3da0140..0b68602 100644 --- a/VideoCaptureForm/packages.config +++ b/VideoCaptureForm/packages.config @@ -1,11 +1,12 @@  - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/VideoCaptureWPF/App.xaml b/VideoCaptureWPF/App.xaml new file mode 100644 index 0000000..07d29e9 --- /dev/null +++ b/VideoCaptureWPF/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/VideoCaptureWPF/App.xaml.cs b/VideoCaptureWPF/App.xaml.cs new file mode 100644 index 0000000..8238b74 --- /dev/null +++ b/VideoCaptureWPF/App.xaml.cs @@ -0,0 +1,11 @@ +using System.Windows; + +namespace VideoCaptureWPF +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/VideoCaptureWPF/MainWindow.xaml b/VideoCaptureWPF/MainWindow.xaml new file mode 100644 index 0000000..dd63bce --- /dev/null +++ b/VideoCaptureWPF/MainWindow.xaml @@ -0,0 +1,12 @@ + + + + + diff --git a/VideoCaptureWPF/MainWindow.xaml.cs b/VideoCaptureWPF/MainWindow.xaml.cs new file mode 100644 index 0000000..c1f2919 --- /dev/null +++ b/VideoCaptureWPF/MainWindow.xaml.cs @@ -0,0 +1,78 @@ +using System.ComponentModel; +using System.Threading; + +using OpenCvSharp; +using OpenCvSharp.WpfExtensions; + +namespace VideoCaptureWPF +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : System.Windows.Window + { + private readonly VideoCapture capture; + private readonly CascadeClassifier cascadeClassifier; + + private readonly BackgroundWorker bkgWorker; + + public MainWindow() + { + InitializeComponent(); + + capture = new VideoCapture(); + cascadeClassifier = new CascadeClassifier("haarcascade_frontalface_default.xml"); + + bkgWorker = new BackgroundWorker { WorkerSupportsCancellation = true }; + bkgWorker.DoWork += Worker_DoWork; + + Loaded += MainWindow_Loaded; + Closing += MainWindow_Closing; + } + + private void MainWindow_Loaded(object sender, System.Windows.RoutedEventArgs e) + { + capture.Open(0, VideoCaptureAPIs.ANY); + if (!capture.IsOpened()) + { + Close(); + return; + } + + bkgWorker.RunWorkerAsync(); + } + + private void MainWindow_Closing(object sender, CancelEventArgs e) + { + bkgWorker.CancelAsync(); + + capture.Dispose(); + cascadeClassifier.Dispose(); + } + + private void Worker_DoWork(object sender, DoWorkEventArgs e) + { + var worker = (BackgroundWorker)sender; + while (!worker.CancellationPending) + { + using (var frameMat = capture.RetrieveMat()) + { + var rects = cascadeClassifier.DetectMultiScale(frameMat, 1.1, 5, HaarDetectionTypes.ScaleImage, new OpenCvSharp.Size(30, 30)); + + foreach (var rect in rects) + { + Cv2.Rectangle(frameMat, rect, Scalar.Red); + } + + // Must create and use WriteableBitmap in the same thread(UI Thread). + Dispatcher.Invoke(() => + { + FrameImage.Source = frameMat.ToWriteableBitmap(); + }); + } + + Thread.Sleep(30); + } + } + } +} diff --git a/VideoCaptureWPF/VideoCaptureWPF.csproj b/VideoCaptureWPF/VideoCaptureWPF.csproj new file mode 100644 index 0000000..72d2362 --- /dev/null +++ b/VideoCaptureWPF/VideoCaptureWPF.csproj @@ -0,0 +1,23 @@ + + + + WinExe + true + net8.0-windows + VideoCaptureWPF + VideoCaptureWPF + 4 + + + + + PreserveNewest + + + + + + + + + \ No newline at end of file diff --git a/VideoCaptureWPF/haarcascade_frontalface_default.xml b/VideoCaptureWPF/haarcascade_frontalface_default.xml new file mode 100644 index 0000000..8dff079 --- /dev/null +++ b/VideoCaptureWPF/haarcascade_frontalface_default.xml @@ -0,0 +1,35712 @@ + + + + + 24 24 + + <_> + + + <_> + + <_> + + + + <_>6 4 12 9 -1. + <_>6 7 12 3 3. + 0 + -0.0315119996666908 + 2.0875380039215088 + -2.2172100543975830 + <_> + + <_> + + + + <_>6 4 12 7 -1. + <_>10 4 4 7 3. + 0 + 0.0123960003256798 + -1.8633940219879150 + 1.3272049427032471 + <_> + + <_> + + + + <_>3 9 18 9 -1. + <_>3 12 18 3 3. + 0 + 0.0219279993325472 + -1.5105249881744385 + 1.0625729560852051 + <_> + + <_> + + + + <_>8 18 9 6 -1. + <_>8 20 9 2 3. + 0 + 5.7529998011887074e-003 + -0.8746389746665955 + 1.1760339736938477 + <_> + + <_> + + + + <_>3 5 4 19 -1. + <_>5 5 2 19 2. + 0 + 0.0150140002369881 + -0.7794569730758667 + 1.2608419656753540 + <_> + + <_> + + + + <_>6 5 12 16 -1. + <_>6 13 12 8 2. + 0 + 0.0993710011243820 + 0.5575129985809326 + -1.8743000030517578 + <_> + + <_> + + + + <_>5 8 12 6 -1. + <_>5 11 12 3 2. + 0 + 2.7340000960975885e-003 + -1.6911929845809937 + 0.4400970041751862 + <_> + + <_> + + + + <_>11 14 4 10 -1. + <_>11 19 4 5 2. + 0 + -0.0188590008765459 + -1.4769539833068848 + 0.4435009956359863 + <_> + + <_> + + + + <_>4 0 7 6 -1. + <_>4 3 7 3 2. + 0 + 5.9739998541772366e-003 + -0.8590919971466065 + 0.8525559902191162 + -5.0425500869750977 + -1 + -1 + <_> + + + <_> + + <_> + + + + <_>6 6 12 6 -1. + <_>6 8 12 2 3. + 0 + -0.0211100000888109 + 1.2435649633407593 + -1.5713009834289551 + <_> + + <_> + + + + <_>6 4 12 7 -1. + <_>10 4 4 7 3. + 0 + 0.0203559994697571 + -1.6204780340194702 + 1.1817760467529297 + <_> + + <_> + + + + <_>1 8 19 12 -1. + <_>1 12 19 4 3. + 0 + 0.0213089995086193 + -1.9415930509567261 + 0.7006909847259522 + <_> + + <_> + + + + <_>0 2 24 3 -1. + <_>8 2 8 3 3. + 0 + 0.0916600003838539 + -0.5567010045051575 + 1.7284419536590576 + <_> + + <_> + + + + <_>9 9 6 15 -1. + <_>9 14 6 5 3. + 0 + 0.0362880006432533 + 0.2676379978656769 + -2.1831810474395752 + <_> + + <_> + + + + <_>5 6 14 10 -1. + <_>5 11 14 5 2. + 0 + -0.0191099997609854 + -2.6730210781097412 + 0.4567080140113831 + <_> + + <_> + + + + <_>5 0 14 9 -1. + <_>5 3 14 3 3. + 0 + 8.2539999857544899e-003 + -1.0852910280227661 + 0.5356420278549194 + <_> + + <_> + + + + <_>13 11 9 6 -1. + <_>16 11 3 6 3. + 0 + 0.0183550007641315 + -0.3520019948482513 + 0.9333919882774353 + <_> + + <_> + + + + <_>7 5 6 10 -1. + <_>9 5 2 10 3. + 0 + -7.0569999516010284e-003 + 0.9278209805488586 + -0.6634989976882935 + <_> + + <_> + + + + <_>10 8 6 10 -1. + <_>12 8 2 10 3. + 0 + -9.8770000040531158e-003 + 1.1577470302581787 + -0.2977479994297028 + <_> + + <_> + + + + <_>2 5 4 9 -1. + <_>4 5 2 9 2. + 0 + 0.0158140007406473 + -0.4196060001850128 + 1.3576040267944336 + <_> + + <_> + + + + <_>18 0 6 11 -1. + <_>20 0 2 11 3. + 0 + -0.0207000002264977 + 1.4590020179748535 + -0.1973939985036850 + <_> + + <_> + + + + <_>0 6 24 13 -1. + <_>8 6 8 13 3. + 0 + -0.1376080065965653 + 1.1186759471893311 + -0.5291550159454346 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0143189998343587 + -0.3512719869613648 + 1.1440860033035278 + <_> + + <_> + + + + <_>7 18 10 6 -1. + <_>7 20 10 2 3. + 0 + 0.0102530000731349 + -0.6085060238838196 + 0.7709850072860718 + <_> + + <_> + + + + <_>5 7 14 12 -1. + <_>5 13 14 6 2. + 0 + 0.0915080010890961 + 0.3881779909133911 + -1.5122940540313721 + -4.9842400550842285 + 0 + -1 + <_> + + + <_> + + <_> + + + + <_>0 3 24 3 -1. + <_>8 3 8 3 3. + 0 + 0.0697470009326935 + -1.0130879878997803 + 1.4687349796295166 + <_> + + <_> + + + + <_>5 8 15 6 -1. + <_>5 11 15 3 2. + 0 + 0.0315029993653297 + -1.6463639736175537 + 1.0000629425048828 + <_> + + <_> + + + + <_>9 6 5 14 -1. + <_>9 13 5 7 2. + 0 + 0.0142609998583794 + 0.4648030102252960 + -1.5959889888763428 + <_> + + <_> + + + + <_>9 5 6 10 -1. + <_>11 5 2 10 3. + 0 + 0.0144530003890395 + -0.6551190018653870 + 0.8302180171012878 + <_> + + <_> + + + + <_>6 6 3 12 -1. + <_>6 12 3 6 2. + 0 + -3.0509999487549067e-003 + -1.3982310295104980 + 0.4255059957504273 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>9 21 6 3 3. + 0 + 0.0327229984104633 + -0.5070260167121887 + 1.0526109933853149 + <_> + + <_> + + + + <_>5 6 13 6 -1. + <_>5 8 13 2 3. + 0 + -7.2960001416504383e-003 + 0.3635689914226532 + -1.3464889526367187 + <_> + + <_> + + + + <_>18 1 6 15 -1. + <_>18 1 3 15 2. + 0 + 0.0504250004887581 + -0.3046140074729919 + 1.4504129886627197 + <_> + + <_> + + + + <_>1 1 6 15 -1. + <_>4 1 3 15 2. + 0 + 0.0468790009617805 + -0.4028620123863220 + 1.2145609855651855 + <_> + + <_> + + + + <_>0 8 24 15 -1. + <_>8 8 8 15 3. + 0 + -0.0693589970469475 + 1.0539360046386719 + -0.4571970105171204 + <_> + + <_> + + + + <_>5 6 14 12 -1. + <_>5 6 7 6 2. + <_>12 12 7 6 2. + 0 + -0.0490339994430542 + -1.6253089904785156 + 0.1537899971008301 + <_> + + <_> + + + + <_>2 12 21 12 -1. + <_>2 16 21 4 3. + 0 + 0.0848279967904091 + 0.2840299904346466 + -1.5662059783935547 + <_> + + <_> + + + + <_>8 1 4 10 -1. + <_>10 1 2 10 2. + 0 + -1.7229999648407102e-003 + -1.0147459506988525 + 0.2329480051994324 + <_> + + <_> + + + + <_>2 13 20 10 -1. + <_>2 13 10 10 2. + 0 + 0.1156219989061356 + -0.1673289984464645 + 1.2804069519042969 + <_> + + <_> + + + + <_>0 1 6 13 -1. + <_>2 1 2 13 3. + 0 + -0.0512799993157387 + 1.5162390470504761 + -0.3027110099792481 + <_> + + <_> + + + + <_>20 2 4 13 -1. + <_>20 2 2 13 2. + 0 + -0.0427069999277592 + 1.7631920576095581 + -0.0518320016562939 + <_> + + <_> + + + + <_>0 5 22 19 -1. + <_>11 5 11 19 2. + 0 + 0.3717809915542603 + -0.3138920068740845 + 1.5357979536056519 + <_> + + <_> + + + + <_>18 4 6 9 -1. + <_>20 4 2 9 3. + 0 + 0.0194129999727011 + -0.1001759991049767 + 0.9365540146827698 + <_> + + <_> + + + + <_>0 3 6 11 -1. + <_>2 3 2 11 3. + 0 + 0.0174390003085136 + -0.4037989974021912 + 0.9629300236701965 + <_> + + <_> + + + + <_>12 1 4 9 -1. + <_>12 1 2 9 2. + 0 + 0.0396389998495579 + 0.1703909933567047 + -2.9602990150451660 + <_> + + <_> + + + + <_>0 6 19 3 -1. + <_>0 7 19 1 3. + 0 + -9.1469995677471161e-003 + 0.8878679871559143 + -0.4381870031356812 + <_> + + <_> + + + + <_>12 1 4 9 -1. + <_>12 1 2 9 2. + 0 + 1.7219999572262168e-003 + -0.3721860051155090 + 0.4001890122890472 + <_> + + <_> + + + + <_>8 1 4 9 -1. + <_>10 1 2 9 2. + 0 + 0.0302310008555651 + 0.0659240037202835 + -2.6469180583953857 + <_> + + <_> + + + + <_>5 5 14 14 -1. + <_>12 5 7 7 2. + <_>5 12 7 7 2. + 0 + -0.0787959992885590 + -1.7491459846496582 + 0.2847529947757721 + <_> + + <_> + + + + <_>1 10 18 2 -1. + <_>1 11 18 1 2. + 0 + 2.1110000088810921e-003 + -0.9390810132026672 + 0.2320519983768463 + <_> + + <_> + + + + <_>17 13 4 11 -1. + <_>17 13 2 11 2. + 0 + 0.0270910002291203 + -0.0526640005409718 + 1.0756820440292358 + <_> + + <_> + + + + <_>0 4 6 9 -1. + <_>0 7 6 3 3. + 0 + -0.0449649989604950 + -1.8294479846954346 + 0.0995619967579842 + -4.6551899909973145 + 1 + -1 + <_> + + + <_> + + <_> + + + + <_>6 4 12 9 -1. + <_>6 7 12 3 3. + 0 + -0.0657010003924370 + 1.1558510065078735 + -1.0716359615325928 + <_> + + <_> + + + + <_>6 5 12 6 -1. + <_>10 5 4 6 3. + 0 + 0.0158399995416403 + -1.5634720325469971 + 0.7687709927558899 + <_> + + <_> + + + + <_>0 1 24 5 -1. + <_>8 1 8 5 3. + 0 + 0.1457089930772781 + -0.5745009779930115 + 1.3808720111846924 + <_> + + <_> + + + + <_>4 10 18 6 -1. + <_>4 12 18 2 3. + 0 + 6.1389999464154243e-003 + -1.4570560455322266 + 0.5161030292510986 + <_> + + <_> + + + + <_>2 17 12 6 -1. + <_>2 17 6 3 2. + <_>8 20 6 3 2. + 0 + 6.7179999314248562e-003 + -0.8353360295295715 + 0.5852220058441162 + <_> + + <_> + + + + <_>19 3 4 13 -1. + <_>19 3 2 13 2. + 0 + 0.0185180008411407 + -0.3131209909915924 + 1.1696679592132568 + <_> + + <_> + + + + <_>1 3 4 13 -1. + <_>3 3 2 13 2. + 0 + 0.0199580006301403 + -0.4344260096549988 + 0.9544690251350403 + <_> + + <_> + + + + <_>0 1 24 23 -1. + <_>8 1 8 23 3. + 0 + -0.2775500118732452 + 1.4906179904937744 + -0.1381590068340302 + <_> + + <_> + + + + <_>1 7 8 12 -1. + <_>1 11 8 4 3. + 0 + 9.1859996318817139e-003 + -0.9636150002479553 + 0.2766549885272980 + <_> + + <_> + + + + <_>14 7 3 14 -1. + <_>14 14 3 7 2. + 0 + -0.0377379991114140 + -2.4464108943939209 + 0.2361959964036942 + <_> + + <_> + + + + <_>3 12 16 6 -1. + <_>3 12 8 3 2. + <_>11 15 8 3 2. + 0 + 0.0184630006551743 + 0.1753920018672943 + -1.3423130512237549 + <_> + + <_> + + + + <_>6 6 12 6 -1. + <_>6 8 12 2 3. + 0 + -0.0111149996519089 + 0.4871079921722412 + -0.8985189795494080 + <_> + + <_> + + + + <_>8 7 6 12 -1. + <_>8 13 6 6 2. + 0 + 0.0339279994368553 + 0.1787420064210892 + -1.6342279911041260 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + -0.0356490015983582 + -1.9607399702072144 + 0.1810249984264374 + <_> + + <_> + + + + <_>1 17 18 3 -1. + <_>1 18 18 1 3. + 0 + -0.0114380000159144 + 0.9901069998741150 + -0.3810319900512695 + <_> + + <_> + + + + <_>4 4 16 12 -1. + <_>4 10 16 6 2. + 0 + -0.0652360022068024 + -2.5794160366058350 + 0.2475360035896301 + <_> + + <_> + + + + <_>0 1 4 20 -1. + <_>2 1 2 20 2. + 0 + -0.0422720015048981 + 1.4411840438842773 + -0.2950829863548279 + <_> + + <_> + + + + <_>3 0 18 2 -1. + <_>3 1 18 1 2. + 0 + 1.9219999667257071e-003 + -0.4960860013961792 + 0.6317359805107117 + <_> + + <_> + + + + <_>1 5 20 14 -1. + <_>1 5 10 7 2. + <_>11 12 10 7 2. + 0 + -0.1292179971933365 + -2.3314270973205566 + 0.0544969998300076 + <_> + + <_> + + + + <_>5 8 14 12 -1. + <_>5 12 14 4 3. + 0 + 0.0229310002177954 + -0.8444709777832031 + 0.3873809874057770 + <_> + + <_> + + + + <_>3 14 7 9 -1. + <_>3 17 7 3 3. + 0 + -0.0341200008988380 + -1.4431500434875488 + 0.0984229966998100 + <_> + + <_> + + + + <_>14 15 9 6 -1. + <_>14 17 9 2 3. + 0 + 0.0262230001389980 + 0.1822309941053391 + -1.2586519718170166 + <_> + + <_> + + + + <_>1 15 9 6 -1. + <_>1 17 9 2 3. + 0 + 0.0222369991242886 + 0.0698079988360405 + -2.3820950984954834 + <_> + + <_> + + + + <_>11 6 8 10 -1. + <_>15 6 4 5 2. + <_>11 11 4 5 2. + 0 + -5.8240001089870930e-003 + 0.3933250010013580 + -0.2754279971122742 + <_> + + <_> + + + + <_>5 5 14 14 -1. + <_>5 5 7 7 2. + <_>12 12 7 7 2. + 0 + 0.0436530001461506 + 0.1483269929885864 + -1.1368780136108398 + <_> + + <_> + + + + <_>6 0 12 5 -1. + <_>10 0 4 5 3. + 0 + 0.0572669990360737 + 0.2462809979915619 + -1.2687400579452515 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>9 3 6 3 3. + 0 + 2.3409998975694180e-003 + -0.7544890046119690 + 0.2716380059719086 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0129960002377629 + -0.3639490008354187 + 0.7095919847488403 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0265170000493526 + -2.3221859931945801 + 0.0357440002262592 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + -5.8400002308189869e-003 + 0.4219430088996887 + -0.0481849983334541 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + -0.0165689997375011 + 1.1099940538406372 + -0.3484970033168793 + <_> + + <_> + + + + <_>3 8 18 4 -1. + <_>9 8 6 4 3. + 0 + -0.0681570023298264 + -3.3269989490509033 + 0.2129900008440018 + -4.4531588554382324 + 2 + -1 + <_> + + + <_> + + <_> + + + + <_>6 0 12 9 -1. + <_>6 3 12 3 3. + 0 + 0.0399740003049374 + -1.2173449993133545 + 1.0826710462570190 + <_> + + <_> + + + + <_>0 0 24 6 -1. + <_>8 0 8 6 3. + 0 + 0.1881950050592423 + -0.4828940033912659 + 1.4045250415802002 + <_> + + <_> + + + + <_>4 7 16 12 -1. + <_>4 11 16 4 3. + 0 + 0.0780270025134087 + -1.0782150030136108 + 0.7404029965400696 + <_> + + <_> + + + + <_>11 6 6 6 -1. + <_>11 6 3 6 2. + 0 + 1.1899999663000926e-004 + -1.2019979953765869 + 0.3774920105934143 + <_> + + <_> + + + + <_>0 20 24 3 -1. + <_>8 20 8 3 3. + 0 + 0.0850569978356361 + -0.4393909871578217 + 1.2647340297698975 + <_> + + <_> + + + + <_>11 6 4 9 -1. + <_>11 6 2 9 2. + 0 + 8.9720003306865692e-003 + -0.1844049990177155 + 0.4572640061378479 + <_> + + <_> + + + + <_>4 13 15 4 -1. + <_>9 13 5 4 3. + 0 + 8.8120000436902046e-003 + 0.3039669990539551 + -0.9599109888076782 + <_> + + <_> + + + + <_>11 6 4 9 -1. + <_>11 6 2 9 2. + 0 + -0.0235079992562532 + 1.2487529516220093 + 0.0462279990315437 + <_> + + <_> + + + + <_>9 6 4 9 -1. + <_>11 6 2 9 2. + 0 + 7.0039997808635235e-003 + -0.5944210290908814 + 0.5396329760551453 + <_> + + <_> + + + + <_>9 12 6 12 -1. + <_>9 18 6 6 2. + 0 + 0.0338519997894764 + 0.2849609851837158 + -1.4895249605178833 + <_> + + <_> + + + + <_>1 22 18 2 -1. + <_>1 23 18 1 2. + 0 + -3.2530000898987055e-003 + 0.4812079966068268 + -0.5271239876747131 + <_> + + <_> + + + + <_>10 7 4 10 -1. + <_>10 12 4 5 2. + 0 + 0.0290970001369715 + 0.2674390077590942 + -1.6007850170135498 + <_> + + <_> + + + + <_>6 7 8 10 -1. + <_>6 12 8 5 2. + 0 + -8.4790000692009926e-003 + -1.3107639551162720 + 0.1524309962987900 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -0.0107950000092387 + 0.4561359882354736 + -0.7205089926719666 + <_> + + <_> + + + + <_>0 14 10 4 -1. + <_>0 16 10 2 2. + 0 + -0.0246200002729893 + -1.7320619821548462 + 0.0683630034327507 + <_> + + <_> + + + + <_>6 18 18 2 -1. + <_>6 19 18 1 2. + 0 + 3.7380000576376915e-003 + -0.1930329948663712 + 0.6824349761009216 + <_> + + <_> + + + + <_>1 1 22 3 -1. + <_>1 2 22 1 3. + 0 + -0.0122640002518892 + -1.6095290184020996 + 0.0752680003643036 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + -4.8670000396668911e-003 + 0.7428650259971619 + -0.2151020020246506 + <_> + + <_> + + + + <_>2 4 6 15 -1. + <_>5 4 3 15 2. + 0 + 0.0767259970307350 + -0.2683509886264801 + 1.3094140291213989 + <_> + + <_> + + + + <_>20 4 4 10 -1. + <_>20 4 2 10 2. + 0 + 0.0285780001431704 + -0.0587930008769035 + 1.2196329832077026 + <_> + + <_> + + + + <_>0 4 4 10 -1. + <_>2 4 2 10 2. + 0 + 0.0196940004825592 + -0.3514289855957031 + 0.8492699861526489 + <_> + + <_> + + + + <_>2 16 20 6 -1. + <_>12 16 10 3 2. + <_>2 19 10 3 2. + 0 + -0.0290939994156361 + -1.0507299900054932 + 0.2980630099773407 + <_> + + <_> + + + + <_>0 12 8 9 -1. + <_>4 12 4 9 2. + 0 + -0.0291440002620220 + 0.8254780173301697 + -0.3268719911575317 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + 0.0197410006076097 + 0.2045260071754456 + -0.8376020193099976 + <_> + + <_> + + + + <_>5 10 6 6 -1. + <_>8 10 3 6 2. + 0 + 4.3299999088048935e-003 + 0.2057790011167526 + -0.6682980060577393 + <_> + + <_> + + + + <_>11 8 12 6 -1. + <_>17 8 6 3 2. + <_>11 11 6 3 2. + 0 + -0.0355009995400906 + -1.2969900369644165 + 0.1389749944210053 + <_> + + <_> + + + + <_>0 8 12 6 -1. + <_>0 8 6 3 2. + <_>6 11 6 3 2. + 0 + -0.0161729995161295 + -1.3110569715499878 + 0.0757519975304604 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0221510007977486 + -1.0524389743804932 + 0.1924110054969788 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + -0.0227070003747940 + -1.3735309839248657 + 0.0667809993028641 + <_> + + <_> + + + + <_>8 14 9 6 -1. + <_>8 16 9 2 3. + 0 + 0.0166079998016357 + -0.0371359996497631 + 0.7784640192985535 + <_> + + <_> + + + + <_>0 16 9 6 -1. + <_>0 18 9 2 3. + 0 + -0.0133090000599623 + -0.9985070228576660 + 0.1224810034036636 + <_> + + <_> + + + + <_>10 8 6 10 -1. + <_>12 8 2 10 3. + 0 + -0.0337320007383823 + 1.4461359977722168 + 0.0131519995629787 + <_> + + <_> + + + + <_>3 19 12 3 -1. + <_>9 19 6 3 2. + 0 + 0.0169350001960993 + -0.3712129890918732 + 0.5284219980239868 + <_> + + <_> + + + + <_>2 10 20 2 -1. + <_>2 11 20 1 2. + 0 + 3.3259999472647905e-003 + -0.5756850242614746 + 0.3926190137863159 + <_> + + <_> + + + + <_>2 9 18 12 -1. + <_>2 9 9 6 2. + <_>11 15 9 6 2. + 0 + 0.0836440026760101 + 0.0161160007119179 + -2.1173279285430908 + <_> + + <_> + + + + <_>3 0 18 24 -1. + <_>3 0 9 24 2. + 0 + 0.2578519880771637 + -0.0816090032458305 + 0.9878249764442444 + <_> + + <_> + + + + <_>5 6 14 10 -1. + <_>5 6 7 5 2. + <_>12 11 7 5 2. + 0 + -0.0365669988095760 + -1.1512110233306885 + 0.0964590013027191 + <_> + + <_> + + + + <_>9 5 10 12 -1. + <_>14 5 5 6 2. + <_>9 11 5 6 2. + 0 + -0.0164459999650717 + 0.3731549978256226 + -0.1458539962768555 + <_> + + <_> + + + + <_>4 5 12 12 -1. + <_>4 5 6 6 2. + <_>10 11 6 6 2. + 0 + -3.7519999314099550e-003 + 0.2617929875850678 + -0.5815669894218445 + <_> + + <_> + + + + <_>4 14 18 3 -1. + <_>4 15 18 1 3. + 0 + -6.3660000450909138e-003 + 0.7547739744186401 + -0.1705520004034042 + <_> + + <_> + + + + <_>6 13 8 8 -1. + <_>6 17 8 4 2. + 0 + -3.8499999791383743e-003 + 0.2265399992465973 + -0.6387640237808228 + <_> + + <_> + + + + <_>3 16 18 6 -1. + <_>3 19 18 3 2. + 0 + -0.0454940013587475 + -1.2640299797058105 + 0.2526069879531860 + <_> + + <_> + + + + <_>0 0 6 6 -1. + <_>3 0 3 6 2. + 0 + -0.0239410009235144 + 0.8706840276718140 + -0.2710469961166382 + <_> + + <_> + + + + <_>6 6 12 18 -1. + <_>10 6 4 18 3. + 0 + -0.0775580033659935 + -1.3901610374450684 + 0.2361229956150055 + <_> + + <_> + + + + <_>6 1 4 14 -1. + <_>8 1 2 14 2. + 0 + 0.0236140005290508 + 0.0661400035023689 + -1.2645419836044312 + <_> + + <_> + + + + <_>3 2 19 2 -1. + <_>3 3 19 1 2. + 0 + -2.5750000495463610e-003 + -0.5384169816970825 + 0.3037909865379334 + <_> + + <_> + + + + <_>1 8 22 13 -1. + <_>12 8 11 13 2. + 0 + 0.1201080009341240 + -0.3534300029277802 + 0.5286620259284973 + <_> + + <_> + + + + <_>8 9 11 4 -1. + <_>8 11 11 2 2. + 0 + 2.2899999748915434e-003 + -0.5870199799537659 + 0.2406100034713745 + <_> + + <_> + + + + <_>0 12 15 10 -1. + <_>5 12 5 10 3. + 0 + 0.0697169974446297 + -0.3334890007972717 + 0.5191630125045776 + <_> + + <_> + + + + <_>12 16 12 6 -1. + <_>16 16 4 6 3. + 0 + -0.0466700010001659 + 0.6979539990425110 + -0.0148959998041391 + <_> + + <_> + + + + <_>0 16 12 6 -1. + <_>4 16 4 6 3. + 0 + -0.0501290000975132 + 0.8614619970321655 + -0.2598600089550018 + <_> + + <_> + + + + <_>19 1 5 12 -1. + <_>19 5 5 4 3. + 0 + 0.0301479995250702 + 0.1933279931545258 + -0.5913109779357910 + -4.3864588737487793 + 3 + -1 + <_> + + + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>8 2 8 4 3. + 0 + 0.0910850018262863 + -0.8923310041427612 + 1.0434230566024780 + <_> + + <_> + + + + <_>6 8 12 4 -1. + <_>6 10 12 2 2. + 0 + 0.0128189995884895 + -1.2597670555114746 + 0.5531709790229797 + <_> + + <_> + + + + <_>7 5 9 6 -1. + <_>10 5 3 6 3. + 0 + 0.0159319993108511 + -0.8625440001487732 + 0.6373180150985718 + <_> + + <_> + + + + <_>9 17 6 6 -1. + <_>9 20 6 3 2. + 0 + 2.2780001163482666e-003 + -0.7463920116424561 + 0.5315560102462769 + <_> + + <_> + + + + <_>0 7 22 15 -1. + <_>0 12 22 5 3. + 0 + 0.0318409986793995 + -1.2650489807128906 + 0.3615390062332153 + <_> + + <_> + + + + <_>4 1 17 9 -1. + <_>4 4 17 3 3. + 0 + 2.6960000395774841e-003 + -0.9829040169715881 + 0.3601300120353699 + <_> + + <_> + + + + <_>7 5 6 10 -1. + <_>9 5 2 10 3. + 0 + -0.0120550002902746 + 0.6406840085983276 + -0.5012500286102295 + <_> + + <_> + + + + <_>18 1 6 8 -1. + <_>18 1 3 8 2. + 0 + 0.0213249996304512 + -0.2403499931097031 + 0.8544800281524658 + <_> + + <_> + + + + <_>0 1 6 7 -1. + <_>3 1 3 7 2. + 0 + 0.0304860007017851 + -0.3427360057830811 + 1.1428849697113037 + <_> + + <_> + + + + <_>18 0 6 22 -1. + <_>18 0 3 22 2. + 0 + -0.0450799986720085 + 1.0976949930191040 + -0.1797460019588471 + <_> + + <_> + + + + <_>0 0 6 22 -1. + <_>3 0 3 22 2. + 0 + -0.0717009976506233 + 1.5735000371932983 + -0.3143349885940552 + <_> + + <_> + + + + <_>16 7 8 16 -1. + <_>16 7 4 16 2. + 0 + 0.0592180006206036 + -0.2758240103721619 + 1.0448570251464844 + <_> + + <_> + + + + <_>2 10 19 6 -1. + <_>2 12 19 2 3. + 0 + 6.7010000348091125e-003 + -1.0974019765853882 + 0.1980119943618774 + <_> + + <_> + + + + <_>9 9 6 12 -1. + <_>9 13 6 4 3. + 0 + 0.0410469993948936 + 0.3054769933223724 + -1.3287999629974365 + <_> + + <_> + + + + <_>2 15 17 6 -1. + <_>2 17 17 2 3. + 0 + -8.5499999113380909e-004 + 0.2580710053443909 + -0.7005289793014526 + <_> + + <_> + + + + <_>14 7 3 14 -1. + <_>14 14 3 7 2. + 0 + -0.0303600002080202 + -1.2306419610977173 + 0.2260939925909042 + <_> + + <_> + + + + <_>5 6 8 10 -1. + <_>5 6 4 5 2. + <_>9 11 4 5 2. + 0 + -0.0129300002008677 + 0.4075860083103180 + -0.5123450160026550 + <_> + + <_> + + + + <_>15 8 9 11 -1. + <_>18 8 3 11 3. + 0 + 0.0373679995536804 + -0.0947550013661385 + 0.6176509857177734 + <_> + + <_> + + + + <_>0 8 9 11 -1. + <_>3 8 3 11 3. + 0 + 0.0244340002536774 + -0.4110060036182404 + 0.4763050079345703 + <_> + + <_> + + + + <_>8 6 10 18 -1. + <_>8 15 10 9 2. + 0 + 0.0570079982280731 + 0.2524929940700531 + -0.6866980195045471 + <_> + + <_> + + + + <_>7 7 3 14 -1. + <_>7 14 3 7 2. + 0 + -0.0163139998912811 + -0.9392840266227722 + 0.1144810020923615 + <_> + + <_> + + + + <_>0 14 24 8 -1. + <_>8 14 8 8 3. + 0 + -0.1764889955520630 + 1.2451089620590210 + -0.0565190017223358 + <_> + + <_> + + + + <_>1 10 18 14 -1. + <_>10 10 9 14 2. + 0 + 0.1761460006237030 + -0.3252820074558258 + 0.8279150128364563 + <_> + + <_> + + + + <_>14 12 6 6 -1. + <_>14 15 6 3 2. + 0 + -7.3910001665353775e-003 + 0.3478370010852814 + -0.1792909950017929 + <_> + + <_> + + + + <_>7 0 10 16 -1. + <_>7 0 5 8 2. + <_>12 8 5 8 2. + 0 + 0.0608909986913204 + 0.0550980009138584 + -1.5480779409408569 + <_> + + <_> + + + + <_>10 0 9 6 -1. + <_>13 0 3 6 3. + 0 + -0.0291230008006096 + -1.0255639553070068 + 0.2410690039396286 + <_> + + <_> + + + + <_>4 3 16 4 -1. + <_>12 3 8 4 2. + 0 + -0.0456489995121956 + 1.0301599502563477 + -0.3167209923267365 + <_> + + <_> + + + + <_>10 0 9 6 -1. + <_>13 0 3 6 3. + 0 + 0.0373330004513264 + 0.2162059992551804 + -0.8258990049362183 + <_> + + <_> + + + + <_>1 1 20 4 -1. + <_>1 1 10 2 2. + <_>11 3 10 2 2. + 0 + -0.0244110003113747 + -1.5957959890365601 + 0.0511390008032322 + <_> + + <_> + + + + <_>10 0 9 6 -1. + <_>13 0 3 6 3. + 0 + -0.0598069988191128 + -1.0312290191650391 + 0.1309230029582977 + <_> + + <_> + + + + <_>5 0 9 6 -1. + <_>8 0 3 6 3. + 0 + -0.0301060006022453 + -1.4781630039215088 + 0.0372119992971420 + <_> + + <_> + + + + <_>8 18 10 6 -1. + <_>8 20 10 2 3. + 0 + 7.4209999293088913e-003 + -0.2402410060167313 + 0.4933399856090546 + <_> + + <_> + + + + <_>6 3 6 9 -1. + <_>8 3 2 9 3. + 0 + -2.1909999195486307e-003 + 0.2894150018692017 + -0.5725960135459900 + <_> + + <_> + + + + <_>7 3 12 6 -1. + <_>7 5 12 2 3. + 0 + 0.0208609998226166 + -0.2314839959144592 + 0.6376590132713318 + <_> + + <_> + + + + <_>0 10 18 3 -1. + <_>0 11 18 1 3. + 0 + -6.6990000195801258e-003 + -1.2107750177383423 + 0.0640180036425591 + <_> + + <_> + + + + <_>1 10 22 3 -1. + <_>1 11 22 1 3. + 0 + 0.0187580008059740 + 0.2446130067110062 + -0.9978669881820679 + <_> + + <_> + + + + <_>5 11 8 8 -1. + <_>9 11 4 8 2. + 0 + -0.0443230010569096 + -1.3699189424514771 + 0.0360519997775555 + <_> + + <_> + + + + <_>12 11 6 6 -1. + <_>12 11 3 6 2. + 0 + 0.0228599999099970 + 0.2128839939832687 + -1.0397620201110840 + <_> + + <_> + + + + <_>6 11 6 6 -1. + <_>9 11 3 6 2. + 0 + -9.8600005730986595e-004 + 0.3244360089302063 + -0.5429180264472961 + <_> + + <_> + + + + <_>7 10 11 6 -1. + <_>7 12 11 2 3. + 0 + 0.0172390006482601 + -0.2832390069961548 + 0.4446820020675659 + <_> + + <_> + + + + <_>0 13 24 4 -1. + <_>0 13 12 2 2. + <_>12 15 12 2 2. + 0 + -0.0345310010015965 + -2.3107020854949951 + -3.1399999279528856e-003 + <_> + + <_> + + + + <_>2 4 22 12 -1. + <_>13 4 11 6 2. + <_>2 10 11 6 2. + 0 + 0.0670069977641106 + 0.2871569991111755 + -0.6448100209236145 + <_> + + <_> + + + + <_>2 0 20 17 -1. + <_>12 0 10 17 2. + 0 + 0.2377689927816391 + -0.2717480063438416 + 0.8021910190582275 + <_> + + <_> + + + + <_>14 0 2 24 -1. + <_>14 0 1 24 2. + 0 + -0.0129030002281070 + -1.5317620038986206 + 0.2142360061407089 + <_> + + <_> + + + + <_>8 0 2 24 -1. + <_>9 0 1 24 2. + 0 + 0.0105149997398257 + 0.0770379975438118 + -1.0581140518188477 + <_> + + <_> + + + + <_>14 1 2 22 -1. + <_>14 1 1 22 2. + 0 + 0.0169690009206533 + 0.1430670022964478 + -0.8582839965820313 + <_> + + <_> + + + + <_>8 1 2 22 -1. + <_>9 1 1 22 2. + 0 + -7.2460002265870571e-003 + -1.1020129919052124 + 0.0649069994688034 + <_> + + <_> + + + + <_>17 6 3 18 -1. + <_>18 6 1 18 3. + 0 + 0.0105569995939732 + 0.0139640001580119 + 0.6360149979591370 + <_> + + <_> + + + + <_>6 14 9 6 -1. + <_>6 16 9 2 3. + 0 + 6.1380001716315746e-003 + -0.3454590141773224 + 0.5629680156707764 + <_> + + <_> + + + + <_>13 14 9 4 -1. + <_>13 16 9 2 2. + 0 + 0.0131580000743270 + 0.1992730051279068 + -1.5040320158004761 + <_> + + <_> + + + + <_>3 18 18 3 -1. + <_>3 19 18 1 3. + 0 + 3.1310000922530890e-003 + -0.4090369939804077 + 0.3779639899730682 + <_> + + <_> + + + + <_>9 4 8 18 -1. + <_>13 4 4 9 2. + <_>9 13 4 9 2. + 0 + -0.1092069968581200 + -2.2227079868316650 + 0.1217819973826408 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + 8.1820003688335419e-003 + -0.2865200042724609 + 0.6789079904556274 + -4.1299300193786621 + 4 + -1 + <_> + + + <_> + + <_> + + + + <_>0 2 12 4 -1. + <_>6 2 6 4 2. + 0 + 0.0313469991087914 + -0.8888459801673889 + 0.9493680000305176 + <_> + + <_> + + + + <_>6 8 14 6 -1. + <_>6 11 14 3 2. + 0 + 0.0319180004298687 + -1.1146880388259888 + 0.4888899922370911 + <_> + + <_> + + + + <_>7 5 6 6 -1. + <_>10 5 3 6 2. + 0 + 6.5939999185502529e-003 + -1.0097689628601074 + 0.4972380101680756 + <_> + + <_> + + + + <_>10 5 6 16 -1. + <_>10 13 6 8 2. + 0 + 0.0261480007320642 + 0.2599129974842072 + -1.2537480592727661 + <_> + + <_> + + + + <_>1 4 9 16 -1. + <_>4 4 3 16 3. + 0 + 0.0128450002521276 + -0.5713859796524048 + 0.5965949892997742 + <_> + + <_> + + + + <_>5 0 18 9 -1. + <_>5 3 18 3 3. + 0 + 0.0263449996709824 + -0.5520319938659668 + 0.3021740019321442 + <_> + + <_> + + + + <_>9 15 5 8 -1. + <_>9 19 5 4 2. + 0 + -0.0150830000638962 + -1.2871240377426147 + 0.2235420048236847 + <_> + + <_> + + + + <_>20 0 4 9 -1. + <_>20 0 2 9 2. + 0 + -0.0388870015740395 + 1.7425049543380737 + -0.0997470021247864 + <_> + + <_> + + + + <_>2 0 18 3 -1. + <_>2 1 18 1 3. + 0 + -5.7029998861253262e-003 + -1.0523240566253662 + 0.1836259961128235 + <_> + + <_> + + + + <_>5 22 19 2 -1. + <_>5 23 19 1 2. + 0 + -1.4860000228509307e-003 + 0.5678420066833496 + -0.4674200117588043 + <_> + + <_> + + + + <_>0 0 4 9 -1. + <_>2 0 2 9 2. + 0 + -0.0284860003739595 + 1.3082909584045410 + -0.2646090090274811 + <_> + + <_> + + + + <_>5 6 19 18 -1. + <_>5 12 19 6 3. + 0 + 0.0662249997258186 + -0.4621070027351379 + 0.4174959957599640 + <_> + + <_> + + + + <_>0 1 6 9 -1. + <_>2 1 2 9 3. + 0 + 8.8569996878504753e-003 + -0.4147489964962006 + 0.5920479893684387 + <_> + + <_> + + + + <_>6 5 14 12 -1. + <_>13 5 7 6 2. + <_>6 11 7 6 2. + 0 + 0.0113559998571873 + 0.3610309958457947 + -0.4578120112419128 + <_> + + <_> + + + + <_>0 1 20 2 -1. + <_>0 2 20 1 2. + 0 + -2.7679998893290758e-003 + -0.8923889994621277 + 0.1419900059700012 + <_> + + <_> + + + + <_>1 2 22 3 -1. + <_>1 3 22 1 3. + 0 + 0.0112469997256994 + 0.2935340106487274 + -0.9733060002326965 + <_> + + <_> + + + + <_>2 8 7 9 -1. + <_>2 11 7 3 3. + 0 + 7.1970000863075256e-003 + -0.7933490276336670 + 0.1831340044736862 + <_> + + <_> + + + + <_>2 12 22 4 -1. + <_>13 12 11 2 2. + <_>2 14 11 2 2. + 0 + 0.0317689999938011 + 0.1552309989929199 + -1.3245639801025391 + <_> + + <_> + + + + <_>0 12 22 4 -1. + <_>0 12 11 2 2. + <_>11 14 11 2 2. + 0 + 0.0251739993691444 + 0.0342149995267391 + -2.0948131084442139 + <_> + + <_> + + + + <_>9 7 6 11 -1. + <_>11 7 2 11 3. + 0 + 7.5360001064836979e-003 + -0.3945060074329376 + 0.5133399963378906 + <_> + + <_> + + + + <_>7 1 9 6 -1. + <_>10 1 3 6 3. + 0 + 0.0328730009496212 + 0.0883729979395866 + -1.2814120054244995 + <_> + + <_> + + + + <_>11 2 4 10 -1. + <_>11 7 4 5 2. + 0 + -2.7379998937249184e-003 + 0.5528650283813477 + -0.4638499915599823 + <_> + + <_> + + + + <_>6 4 12 12 -1. + <_>6 10 12 6 2. + 0 + -0.0380750000476837 + -1.8497270345687866 + 0.0459440015256405 + <_> + + <_> + + + + <_>18 1 6 15 -1. + <_>18 6 6 5 3. + 0 + -0.0389840006828308 + -0.4822370111942291 + 0.3476060032844544 + <_> + + <_> + + + + <_>3 15 18 3 -1. + <_>3 16 18 1 3. + 0 + 2.8029999230057001e-003 + -0.4515469968318939 + 0.4280630052089691 + <_> + + <_> + + + + <_>18 5 6 9 -1. + <_>18 8 6 3 3. + 0 + -0.0541459992527962 + -0.8452079892158508 + 0.1667490005493164 + <_> + + <_> + + + + <_>1 5 16 6 -1. + <_>1 5 8 3 2. + <_>9 8 8 3 2. + 0 + -8.3280000835657120e-003 + 0.3534829914569855 + -0.4716320037841797 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + 0.0337780006229877 + 0.1846310049295425 + -1.6686669588088989 + <_> + + <_> + + + + <_>0 4 24 14 -1. + <_>0 4 12 7 2. + <_>12 11 12 7 2. + 0 + -0.1123809963464737 + -1.2521569728851318 + 0.0359920002520084 + <_> + + <_> + + + + <_>13 0 4 13 -1. + <_>13 0 2 13 2. + 0 + -0.0104080000892282 + -0.8162040114402771 + 0.2342859953641892 + <_> + + <_> + + + + <_>7 0 4 13 -1. + <_>9 0 2 13 2. + 0 + -4.9439999274909496e-003 + -0.9258469939231873 + 0.1003480032086372 + <_> + + <_> + + + + <_>11 6 6 9 -1. + <_>13 6 2 9 3. + 0 + -9.3029998242855072e-003 + 0.5649930238723755 + -0.1888190060853958 + <_> + + <_> + + + + <_>8 7 6 9 -1. + <_>10 7 2 9 3. + 0 + -0.0117499995976686 + 0.8030239939689636 + -0.3827700018882752 + <_> + + <_> + + + + <_>13 17 9 6 -1. + <_>13 19 9 2 3. + 0 + -0.0232170000672340 + -0.8492699861526489 + 0.1967120021581650 + <_> + + <_> + + + + <_>2 18 14 6 -1. + <_>2 18 7 3 2. + <_>9 21 7 3 2. + 0 + 0.0168660003691912 + -0.4059189856052399 + 0.5069530010223389 + <_> + + <_> + + + + <_>3 18 18 4 -1. + <_>12 18 9 2 2. + <_>3 20 9 2 2. + 0 + -0.0240310002118349 + -1.5297520160675049 + 0.2334499955177307 + <_> + + <_> + + + + <_>0 20 15 4 -1. + <_>5 20 5 4 3. + 0 + -0.0369459986686707 + 0.6300770044326782 + -0.3178040087223053 + <_> + + <_> + + + + <_>9 15 15 9 -1. + <_>14 15 5 9 3. + 0 + -0.0615639984607697 + 0.5862789750099182 + -0.0121079999953508 + <_> + + <_> + + + + <_>4 4 16 4 -1. + <_>4 6 16 2 2. + 0 + 0.0216610003262758 + -0.2562370002269745 + 1.0409849882125854 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -3.6710000131279230e-003 + 0.2917110025882721 + -0.8328729867935181 + <_> + + <_> + + + + <_>0 14 15 10 -1. + <_>5 14 5 10 3. + 0 + 0.0448490008711815 + -0.3963319957256317 + 0.4566200077533722 + <_> + + <_> + + + + <_>7 9 10 14 -1. + <_>12 9 5 7 2. + <_>7 16 5 7 2. + 0 + 0.0571950003504753 + 0.2102389931678772 + -1.5004800558090210 + <_> + + <_> + + + + <_>7 6 6 9 -1. + <_>9 6 2 9 3. + 0 + -0.0113420002162457 + 0.4407129883766174 + -0.3865379989147186 + <_> + + <_> + + + + <_>3 6 18 3 -1. + <_>3 7 18 1 3. + 0 + -0.0120040001347661 + 0.9395459890365601 + -0.1058949977159500 + <_> + + <_> + + + + <_>0 10 18 3 -1. + <_>0 11 18 1 3. + 0 + 0.0225159991532564 + 9.4480002298951149e-003 + -1.6799509525299072 + <_> + + <_> + + + + <_>3 16 18 4 -1. + <_>12 16 9 2 2. + <_>3 18 9 2 2. + 0 + -0.0198090001940727 + -1.0133639574050903 + 0.2414660006761551 + <_> + + <_> + + + + <_>4 6 14 6 -1. + <_>4 6 7 3 2. + <_>11 9 7 3 2. + 0 + 0.0158910006284714 + -0.3750759959220886 + 0.4661409854888916 + <_> + + <_> + + + + <_>13 0 2 18 -1. + <_>13 0 1 18 2. + 0 + -9.1420002281665802e-003 + -0.8048409819602966 + 0.1781699955463409 + <_> + + <_> + + + + <_>9 0 2 18 -1. + <_>10 0 1 18 2. + 0 + -4.4740000739693642e-003 + -1.0562069416046143 + 0.0733050033450127 + <_> + + <_> + + + + <_>5 7 15 10 -1. + <_>10 7 5 10 3. + 0 + 0.1274250000715256 + 0.2016559988260269 + -1.5467929840087891 + <_> + + <_> + + + + <_>1 20 21 4 -1. + <_>8 20 7 4 3. + 0 + 0.0477030016481876 + -0.3793779909610748 + 0.3788599967956543 + <_> + + <_> + + + + <_>10 5 5 18 -1. + <_>10 14 5 9 2. + 0 + 0.0536080002784729 + 0.2122049927711487 + -1.2399710416793823 + <_> + + <_> + + + + <_>0 2 24 6 -1. + <_>0 2 12 3 2. + <_>12 5 12 3 2. + 0 + -0.0396809987723827 + -1.0257550477981567 + 0.0512829981744289 + <_> + + <_> + + + + <_>1 1 22 8 -1. + <_>12 1 11 4 2. + <_>1 5 11 4 2. + 0 + -0.0673270002007484 + -1.0304750204086304 + 0.2300529927015305 + <_> + + <_> + + + + <_>4 0 15 9 -1. + <_>4 3 15 3 3. + 0 + 0.1333760023117065 + -0.2086900025606155 + 1.2272510528564453 + <_> + + <_> + + + + <_>0 0 24 19 -1. + <_>8 0 8 19 3. + 0 + -0.2091930061578751 + 0.8792989850044251 + -0.0442549996078014 + <_> + + <_> + + + + <_>2 21 18 3 -1. + <_>11 21 9 3 2. + 0 + -0.0655890032649040 + 1.0443429946899414 + -0.2168209999799728 + <_> + + <_> + + + + <_>9 7 10 4 -1. + <_>9 7 5 4 2. + 0 + 0.0618829987943172 + 0.1379819959402084 + -1.9009059667587280 + <_> + + <_> + + + + <_>5 7 10 4 -1. + <_>10 7 5 4 2. + 0 + -0.0255789998918772 + -1.6607600450515747 + 5.8439997956156731e-003 + <_> + + <_> + + + + <_>17 8 6 16 -1. + <_>20 8 3 8 2. + <_>17 16 3 8 2. + 0 + -0.0348270013928413 + 0.7994040250778198 + -0.0824069976806641 + <_> + + <_> + + + + <_>1 15 20 4 -1. + <_>1 15 10 2 2. + <_>11 17 10 2 2. + 0 + -0.0182099994271994 + -0.9607399702072144 + 0.0663200020790100 + <_> + + <_> + + + + <_>14 15 10 6 -1. + <_>14 17 10 2 3. + 0 + 0.0150709999725223 + 0.1989939957857132 + -0.7643300294876099 + -4.0218091011047363 + 5 + -1 + <_> + + + <_> + + <_> + + + + <_>3 0 16 9 -1. + <_>3 3 16 3 3. + 0 + 0.0463249981403351 + -1.0362670421600342 + 0.8220149874687195 + <_> + + <_> + + + + <_>15 6 7 15 -1. + <_>15 11 7 5 3. + 0 + 0.0154069997370243 + -1.2327589988708496 + 0.2964769899845123 + <_> + + <_> + + + + <_>9 1 6 13 -1. + <_>11 1 2 13 3. + 0 + 0.0128089999780059 + -0.7585229873657227 + 0.5798550248146057 + <_> + + <_> + + + + <_>17 2 6 14 -1. + <_>17 2 3 14 2. + 0 + 0.0491509996354580 + -0.3898389935493469 + 0.8968030214309692 + <_> + + <_> + + + + <_>3 14 12 10 -1. + <_>3 14 6 5 2. + <_>9 19 6 5 2. + 0 + 0.0126210004091263 + -0.7179930210113525 + 0.5044090151786804 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -0.0187689997255802 + 0.5514760017395020 + -0.7055540084838867 + <_> + + <_> + + + + <_>1 2 6 14 -1. + <_>4 2 3 14 2. + 0 + 0.0419650003314018 + -0.4478209912776947 + 0.7098550200462341 + <_> + + <_> + + + + <_>10 4 5 12 -1. + <_>10 8 5 4 3. + 0 + -0.0514019988477230 + -1.0932120084762573 + 0.2670190036296845 + <_> + + <_> + + + + <_>0 17 24 5 -1. + <_>8 17 8 5 3. + 0 + -0.0709609985351563 + 0.8361840248107910 + -0.3831810057163239 + <_> + + <_> + + + + <_>15 7 5 12 -1. + <_>15 11 5 4 3. + 0 + 0.0167459994554520 + -0.2573310136795044 + 0.2596650123596191 + <_> + + <_> + + + + <_>3 1 6 12 -1. + <_>3 1 3 6 2. + <_>6 7 3 6 2. + 0 + -6.2400000169873238e-003 + 0.3163149952888489 + -0.5879690051078796 + <_> + + <_> + + + + <_>12 13 6 6 -1. + <_>12 16 6 3 2. + 0 + -0.0393979996442795 + -1.0491210222244263 + 0.1682240068912506 + <_> + + <_> + + + + <_>6 13 6 6 -1. + <_>6 16 6 3 2. + 0 + 0. + 0.1614419966936112 + -0.8787689805030823 + <_> + + <_> + + + + <_>14 6 3 16 -1. + <_>14 14 3 8 2. + 0 + -0.0223079994320869 + -0.6905350089073181 + 0.2360700070858002 + <_> + + <_> + + + + <_>1 12 13 6 -1. + <_>1 14 13 2 3. + 0 + 1.8919999711215496e-003 + 0.2498919963836670 + -0.5658329725265503 + <_> + + <_> + + + + <_>13 1 4 9 -1. + <_>13 1 2 9 2. + 0 + 1.0730000212788582e-003 + -0.5041580200195313 + 0.3837450146675110 + <_> + + <_> + + + + <_>7 0 9 6 -1. + <_>10 0 3 6 3. + 0 + 0.0392309986054897 + 0.0426190011203289 + -1.3875889778137207 + <_> + + <_> + + + + <_>12 2 6 9 -1. + <_>12 2 3 9 2. + 0 + 0.0622380003333092 + 0.1411940008401871 + -1.0688860416412354 + <_> + + <_> + + + + <_>6 2 6 9 -1. + <_>9 2 3 9 2. + 0 + 2.1399999968707561e-003 + -0.8962240219116211 + 0.1979639977216721 + <_> + + <_> + + + + <_>6 18 12 6 -1. + <_>6 20 12 2 3. + 0 + 9.1800000518560410e-004 + -0.4533729851245880 + 0.4353269934654236 + <_> + + <_> + + + + <_>7 6 6 9 -1. + <_>9 6 2 9 3. + 0 + -6.9169998168945313e-003 + 0.3382279872894287 + -0.4479300081729889 + <_> + + <_> + + + + <_>7 7 12 3 -1. + <_>7 7 6 3 2. + 0 + -0.0238669998943806 + -0.7890859842300415 + 0.2251179963350296 + <_> + + <_> + + + + <_>8 3 8 21 -1. + <_>8 10 8 7 3. + 0 + -0.1026280000805855 + -2.2831439971923828 + -5.3960001096129417e-003 + <_> + + <_> + + + + <_>7 4 10 12 -1. + <_>7 8 10 4 3. + 0 + -9.5239998772740364e-003 + 0.3934670090675354 + -0.5224220156669617 + <_> + + <_> + + + + <_>0 1 6 9 -1. + <_>0 4 6 3 3. + 0 + 0.0398770011961460 + 0.0327990017831326 + -1.5079489946365356 + <_> + + <_> + + + + <_>15 2 2 20 -1. + <_>15 2 1 20 2. + 0 + -0.0131449997425079 + -1.0839990377426147 + 0.1848240047693253 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>0 6 6 3 3. + 0 + -0.0505909994244576 + -1.8822289705276489 + -2.2199999075382948e-003 + <_> + + <_> + + + + <_>15 3 2 21 -1. + <_>15 3 1 21 2. + 0 + 0.0249170009046793 + 0.1459340006113052 + -2.2196519374847412 + <_> + + <_> + + + + <_>7 0 2 23 -1. + <_>8 0 1 23 2. + 0 + -7.6370001770555973e-003 + -1.0164569616317749 + 0.0587970018386841 + <_> + + <_> + + + + <_>15 8 9 4 -1. + <_>15 10 9 2 2. + 0 + 0.0429119989275932 + 0.1544300019741058 + -1.1843889951705933 + <_> + + <_> + + + + <_>0 8 9 4 -1. + <_>0 10 9 2 2. + 0 + 2.3000000510364771e-004 + -0.7730579972267151 + 0.1218990013003349 + <_> + + <_> + + + + <_>8 14 9 6 -1. + <_>8 16 9 2 3. + 0 + 9.0929996222257614e-003 + -0.1145009994506836 + 0.7109130024909973 + <_> + + <_> + + + + <_>0 14 9 6 -1. + <_>0 16 9 2 3. + 0 + 0.0111450003460050 + 0.0700009986758232 + -1.0534820556640625 + <_> + + <_> + + + + <_>3 10 18 4 -1. + <_>9 10 6 4 3. + 0 + -0.0524530000984669 + -1.7594360113143921 + 0.1952379941940308 + <_> + + <_> + + + + <_>0 0 24 19 -1. + <_>8 0 8 19 3. + 0 + -0.2302069962024689 + 0.9584029912948608 + -0.2504569888114929 + <_> + + <_> + + + + <_>9 1 8 12 -1. + <_>9 7 8 6 2. + 0 + -0.0163659993559122 + 0.4673190116882324 + -0.2110839933156967 + <_> + + <_> + + + + <_>10 6 4 10 -1. + <_>12 6 2 10 2. + 0 + -0.0172080006450415 + 0.7083569765090942 + -0.2801829874515533 + <_> + + <_> + + + + <_>7 9 10 12 -1. + <_>12 9 5 6 2. + <_>7 15 5 6 2. + 0 + -0.0366480015218258 + -1.1013339757919312 + 0.2434110045433044 + <_> + + <_> + + + + <_>5 0 3 19 -1. + <_>6 0 1 19 3. + 0 + -0.0103049995377660 + -1.0933129787445068 + 0.0562589988112450 + <_> + + <_> + + + + <_>14 0 6 10 -1. + <_>16 0 2 10 3. + 0 + -0.0137130003422499 + -0.2643809914588928 + 0.1982100009918213 + <_> + + <_> + + + + <_>2 0 6 12 -1. + <_>2 0 3 6 2. + <_>5 6 3 6 2. + 0 + 0.0293080005794764 + -0.2214239984750748 + 1.0525950193405151 + <_> + + <_> + + + + <_>0 11 24 2 -1. + <_>0 12 24 1 2. + 0 + 0.0240770000964403 + 0.1848569959402084 + -1.7203969955444336 + <_> + + <_> + + + + <_>4 9 13 4 -1. + <_>4 11 13 2 2. + 0 + 6.1280000954866409e-003 + -0.9272149801254273 + 0.0587529987096787 + <_> + + <_> + + + + <_>9 8 6 9 -1. + <_>9 11 6 3 3. + 0 + -0.0223779994994402 + 1.9646559953689575 + 0.0277859997004271 + <_> + + <_> + + + + <_>0 12 16 4 -1. + <_>0 14 16 2 2. + 0 + -7.0440000854432583e-003 + 0.2142760008573532 + -0.4840759932994843 + <_> + + <_> + + + + <_>18 12 6 9 -1. + <_>18 15 6 3 3. + 0 + -0.0406030006706715 + -1.1754349470138550 + 0.1606120020151138 + <_> + + <_> + + + + <_>0 12 6 9 -1. + <_>0 15 6 3 3. + 0 + -0.0244660004973412 + -1.1239900588989258 + 0.0411100015044212 + <_> + + <_> + + + + <_>8 7 10 4 -1. + <_>8 7 5 4 2. + 0 + 2.5309999473392963e-003 + -0.1716970056295395 + 0.3217880129814148 + <_> + + <_> + + + + <_>8 7 6 9 -1. + <_>10 7 2 9 3. + 0 + -0.0195889994502068 + 0.8272020220756531 + -0.2637670040130615 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + -0.0296359993517399 + -1.1524770259857178 + 0.1499930024147034 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0150300003588200 + -1.0491830110549927 + 0.0401609987020493 + <_> + + <_> + + + + <_>12 3 6 15 -1. + <_>14 3 2 15 3. + 0 + -0.0607150010764599 + -1.0903840065002441 + 0.1533080041408539 + <_> + + <_> + + + + <_>6 3 6 15 -1. + <_>8 3 2 15 3. + 0 + -0.0127900000661612 + 0.4224860072135925 + -0.4239920079708099 + <_> + + <_> + + + + <_>15 2 9 4 -1. + <_>15 4 9 2 2. + 0 + -0.0202479995787144 + -0.9186699986457825 + 0.1848569959402084 + <_> + + <_> + + + + <_>5 10 6 7 -1. + <_>8 10 3 7 2. + 0 + -0.0306839998811483 + -1.5958670377731323 + 2.5760000571608543e-003 + <_> + + <_> + + + + <_>9 14 6 10 -1. + <_>9 19 6 5 2. + 0 + -0.0207180008292198 + -0.6629999876022339 + 0.3103719949722290 + <_> + + <_> + + + + <_>7 13 5 8 -1. + <_>7 17 5 4 2. + 0 + -1.7290000105276704e-003 + 0.1918340027332306 + -0.6508499979972839 + <_> + + <_> + + + + <_>14 5 3 16 -1. + <_>14 13 3 8 2. + 0 + -0.0313940010964870 + -0.6364300251007080 + 0.1540839970111847 + <_> + + <_> + + + + <_>2 17 18 3 -1. + <_>2 18 18 1 3. + 0 + 0.0190030001103878 + -0.1891939938068390 + 1.5294510126113892 + <_> + + <_> + + + + <_>5 18 19 3 -1. + <_>5 19 19 1 3. + 0 + 6.1769997701048851e-003 + -0.1059790030121803 + 0.6485959887504578 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + -0.0101659996435046 + -1.0802700519561768 + 0.0371760018169880 + <_> + + <_> + + + + <_>12 4 3 18 -1. + <_>13 4 1 18 3. + 0 + -1.4169999631121755e-003 + 0.3415749967098236 + -0.0977379977703094 + <_> + + <_> + + + + <_>9 4 3 18 -1. + <_>10 4 1 18 3. + 0 + -4.0799998678267002e-003 + 0.4762459993362427 + -0.3436630070209503 + <_> + + <_> + + + + <_>3 3 18 9 -1. + <_>9 3 6 9 3. + 0 + -0.0440969988703728 + 0.9763429760932922 + -0.0191730000078678 + <_> + + <_> + + + + <_>6 1 6 14 -1. + <_>8 1 2 14 3. + 0 + -0.0606699995696545 + -2.1752851009368896 + -0.0289259999990463 + <_> + + <_> + + + + <_>12 16 9 6 -1. + <_>12 19 9 3 2. + 0 + -0.0329319983720779 + -0.6438310146331787 + 0.1649409979581833 + <_> + + <_> + + + + <_>1 3 20 16 -1. + <_>1 3 10 8 2. + <_>11 11 10 8 2. + 0 + -0.1472280025482178 + -1.4745830297470093 + 2.5839998852461576e-003 + <_> + + <_> + + + + <_>12 5 6 12 -1. + <_>15 5 3 6 2. + <_>12 11 3 6 2. + 0 + -0.0119300000369549 + 0.4244140088558197 + -0.1771260052919388 + <_> + + <_> + + + + <_>1 2 22 16 -1. + <_>1 2 11 8 2. + <_>12 10 11 8 2. + 0 + 0.1451790034770966 + 0.0254449993371964 + -1.2779400348663330 + <_> + + <_> + + + + <_>10 14 5 10 -1. + <_>10 19 5 5 2. + 0 + 0.0514479987323284 + 0.1567839980125427 + -1.5188430547714233 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>3 22 18 1 3. + 0 + 3.1479999888688326e-003 + -0.4042440056800842 + 0.3242970108985901 + <_> + + <_> + + + + <_>10 14 6 10 -1. + <_>12 14 2 10 3. + 0 + -0.0436000004410744 + -1.9932260513305664 + 0.1501860022544861 + -3.8832089900970459 + 6 + -1 + <_> + + + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>8 2 8 4 3. + 0 + 0.1289959996938705 + -0.6216199994087219 + 1.1116520166397095 + <_> + + <_> + + + + <_>6 4 12 9 -1. + <_>6 7 12 3 3. + 0 + -0.0912619978189468 + 1.0143059492111206 + -0.6133520007133484 + <_> + + <_> + + + + <_>6 6 12 5 -1. + <_>10 6 4 5 3. + 0 + 0.0142719997093081 + -1.0261659622192383 + 0.3977999985218048 + <_> + + <_> + + + + <_>5 8 14 12 -1. + <_>5 12 14 4 3. + 0 + 0.0328899994492531 + -1.1386079788208008 + 0.2869080007076263 + <_> + + <_> + + + + <_>4 14 8 10 -1. + <_>4 14 4 5 2. + <_>8 19 4 5 2. + 0 + 0.0125900004059076 + -0.5664560198783875 + 0.4517239928245544 + <_> + + <_> + + + + <_>11 6 5 14 -1. + <_>11 13 5 7 2. + 0 + 0.0146610001102090 + 0.3050599992275238 + -0.6812959909439087 + <_> + + <_> + + + + <_>7 6 3 16 -1. + <_>7 14 3 8 2. + 0 + -0.0335559993982315 + -1.7208939790725708 + 0.0614390000700951 + <_> + + <_> + + + + <_>3 7 18 8 -1. + <_>9 7 6 8 3. + 0 + 0.1425269991159439 + 0.2319220006465912 + -1.7297149896621704 + <_> + + <_> + + + + <_>2 3 20 2 -1. + <_>2 4 20 1 2. + 0 + -6.2079997733235359e-003 + -1.2163300514221191 + 0.1216019988059998 + <_> + + <_> + + + + <_>3 12 19 6 -1. + <_>3 14 19 2 3. + 0 + 0.0181789994239807 + 0.3255369961261749 + -0.8100399971008301 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + 0.0250369999557734 + -0.3169879913330078 + 0.6736140251159668 + <_> + + <_> + + + + <_>16 6 6 14 -1. + <_>16 6 3 14 2. + 0 + 0.0465609990060329 + -0.1108980029821396 + 0.8408250212669373 + <_> + + <_> + + + + <_>7 9 6 12 -1. + <_>9 9 2 12 3. + 0 + -8.9999996125698090e-003 + 0.3957450091838837 + -0.4762459993362427 + <_> + + <_> + + + + <_>18 6 6 18 -1. + <_>21 6 3 9 2. + <_>18 15 3 9 2. + 0 + 0.0408059991896153 + -1.8000000272877514e-004 + 0.9457070231437683 + <_> + + <_> + + + + <_>0 6 6 18 -1. + <_>0 6 3 9 2. + <_>3 15 3 9 2. + 0 + -0.0342219993472099 + 0.7520629763603210 + -0.3153150081634522 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>18 5 6 3 3. + 0 + -0.0397160016000271 + -0.8313959836959839 + 0.1774439960718155 + <_> + + <_> + + + + <_>3 18 15 6 -1. + <_>3 20 15 2 3. + 0 + 2.5170000735670328e-003 + -0.5937799811363220 + 0.2465700060129166 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>18 5 6 3 3. + 0 + 0.0274289995431900 + 0.1599839925765991 + -0.4278199970722199 + <_> + + <_> + + + + <_>0 2 6 9 -1. + <_>0 5 6 3 3. + 0 + 0.0349860005080700 + 0.0350559987127781 + -1.5988600254058838 + <_> + + <_> + + + + <_>5 10 18 2 -1. + <_>5 11 18 1 2. + 0 + 4.4970000162720680e-003 + -0.5203430056571960 + 0.3782829940319061 + <_> + + <_> + + + + <_>6 0 12 6 -1. + <_>6 2 12 2 3. + 0 + 2.7699999045580626e-003 + -0.5318260192871094 + 0.2495100051164627 + <_> + + <_> + + + + <_>10 0 6 9 -1. + <_>12 0 2 9 3. + 0 + 0.0351740010082722 + 0.1998340040445328 + -1.4446129798889160 + <_> + + <_> + + + + <_>8 0 6 9 -1. + <_>10 0 2 9 3. + 0 + 0.0259709991514683 + 0.0444269999861717 + -1.3622980117797852 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + -0.0157839991152287 + -0.9102039933204651 + 0.2719030082225800 + <_> + + <_> + + + + <_>3 6 13 6 -1. + <_>3 8 13 2 3. + 0 + -7.5880000367760658e-003 + 0.0920649990439415 + -0.8162890076637268 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + 0.0207540001720190 + 0.2118570059537888 + -0.7472900152206421 + <_> + + <_> + + + + <_>2 5 6 15 -1. + <_>5 5 3 15 2. + 0 + 0.0598290003836155 + -0.2730109989643097 + 0.8092330098152161 + <_> + + <_> + + + + <_>8 8 9 6 -1. + <_>11 8 3 6 3. + 0 + 0.0390390008687973 + -0.1043229997158051 + 0.8622620105743408 + <_> + + <_> + + + + <_>8 6 3 14 -1. + <_>8 13 3 7 2. + 0 + 0.0216659996658564 + 0.0627090036869049 + -0.9889429807662964 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + -0.0274969991296530 + -0.9269099831581116 + 0.1558630019426346 + <_> + + <_> + + + + <_>4 12 10 4 -1. + <_>9 12 5 4 2. + 0 + 0.0104620000347495 + 0.1341809928417206 + -0.7038639783859253 + <_> + + <_> + + + + <_>13 1 4 19 -1. + <_>13 1 2 19 2. + 0 + 0.0248709991574287 + 0.1970670074224472 + -0.4026330113410950 + <_> + + <_> + + + + <_>7 1 4 19 -1. + <_>9 1 2 19 2. + 0 + -0.0160360001027584 + -1.1409829854965210 + 0.0739979967474937 + <_> + + <_> + + + + <_>18 9 6 9 -1. + <_>18 12 6 3 3. + 0 + 0.0486270003020763 + 0.1699039936065674 + -0.7215219736099243 + <_> + + <_> + + + + <_>1 21 18 3 -1. + <_>1 22 18 1 3. + 0 + 1.2619999470189214e-003 + -0.4738979935646057 + 0.2625499963760376 + <_> + + <_> + + + + <_>14 13 10 9 -1. + <_>14 16 10 3 3. + 0 + -0.0880350023508072 + -2.1606519222259521 + 0.1455480009317398 + <_> + + <_> + + + + <_>1 13 22 4 -1. + <_>1 13 11 2 2. + <_>12 15 11 2 2. + 0 + 0.0183569993823767 + 0.0447509996592999 + -1.0766370296478271 + <_> + + <_> + + + + <_>4 6 16 6 -1. + <_>12 6 8 3 2. + <_>4 9 8 3 2. + 0 + 0.0352750010788441 + -0.0329190008342266 + 1.2153890132904053 + <_> + + <_> + + + + <_>1 0 18 22 -1. + <_>1 0 9 11 2. + <_>10 11 9 11 2. + 0 + -0.2039290070533752 + -1.3187999725341797 + 0.0155039997771382 + <_> + + <_> + + + + <_>10 7 8 14 -1. + <_>14 7 4 7 2. + <_>10 14 4 7 2. + 0 + -0.0166190005838871 + 0.3685019910335541 + -0.1528369933366776 + <_> + + <_> + + + + <_>0 4 6 20 -1. + <_>0 4 3 10 2. + <_>3 14 3 10 2. + 0 + 0.0377390012145042 + -0.2572779953479767 + 0.7065529823303223 + <_> + + <_> + + + + <_>15 0 6 9 -1. + <_>17 0 2 9 3. + 0 + 2.2720000706613064e-003 + -0.0776029974222183 + 0.3336780071258545 + <_> + + <_> + + + + <_>3 0 6 9 -1. + <_>5 0 2 9 3. + 0 + -0.0148029997944832 + -0.7852479815483093 + 0.0769340023398399 + <_> + + <_> + + + + <_>15 12 6 12 -1. + <_>18 12 3 6 2. + <_>15 18 3 6 2. + 0 + -0.0483190007507801 + 1.7022320032119751 + 0.0497220009565353 + <_> + + <_> + + + + <_>3 12 6 12 -1. + <_>3 12 3 6 2. + <_>6 18 3 6 2. + 0 + -0.0295390002429485 + 0.7767069935798645 + -0.2453429996967316 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + -0.0461690016090870 + -1.4922779798507690 + 0.1234000027179718 + <_> + + <_> + + + + <_>0 12 9 6 -1. + <_>0 14 9 2 3. + 0 + -0.0280649997293949 + -2.1345369815826416 + -0.0257970001548529 + <_> + + <_> + + + + <_>4 14 19 3 -1. + <_>4 15 19 1 3. + 0 + -5.7339998893439770e-003 + 0.5698260068893433 + -0.1205660030245781 + <_> + + <_> + + + + <_>2 13 19 3 -1. + <_>2 14 19 1 3. + 0 + -0.0101110003888607 + 0.6791139841079712 + -0.2663800120353699 + <_> + + <_> + + + + <_>14 15 10 6 -1. + <_>14 17 10 2 3. + 0 + 0.0113599998876452 + 0.2478979974985123 + -0.6449300050735474 + <_> + + <_> + + + + <_>6 0 10 12 -1. + <_>6 0 5 6 2. + <_>11 6 5 6 2. + 0 + 0.0518090017139912 + 0.0147160002961755 + -1.2395579814910889 + <_> + + <_> + + + + <_>17 1 6 12 -1. + <_>20 1 3 6 2. + <_>17 7 3 6 2. + 0 + 0.0332919992506504 + -8.2559995353221893e-003 + 1.0168470144271851 + <_> + + <_> + + + + <_>1 1 6 12 -1. + <_>1 1 3 6 2. + <_>4 7 3 6 2. + 0 + -0.0144940000027418 + 0.4506680071353912 + -0.3625099956989288 + <_> + + <_> + + + + <_>16 14 6 9 -1. + <_>16 17 6 3 3. + 0 + -0.0342219993472099 + -0.9529250264167786 + 0.2068459987640381 + <_> + + <_> + + + + <_>7 3 9 12 -1. + <_>7 9 9 6 2. + 0 + -0.0806540027260780 + -2.0139501094818115 + -0.0230849999934435 + <_> + + <_> + + + + <_>12 1 4 12 -1. + <_>12 7 4 6 2. + 0 + -8.9399999706074595e-004 + 0.3957200050354004 + -0.2935130000114441 + <_> + + <_> + + + + <_>4 0 14 8 -1. + <_>4 4 14 4 2. + 0 + 0.0971620008349419 + -0.2498030066490173 + 1.0859220027923584 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + 0.0366140007972717 + -0.0578440017998219 + 1.2162159681320190 + <_> + + <_> + + + + <_>2 10 18 3 -1. + <_>8 10 6 3 3. + 0 + 0.0516939982771873 + 0.0430629998445511 + -1.0636160373687744 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + -0.0245570000261068 + -0.4894680082798004 + 0.1718290001153946 + <_> + + <_> + + + + <_>0 1 21 23 -1. + <_>7 1 7 23 3. + 0 + 0.3273679912090302 + -0.2968859970569611 + 0.5179830193519592 + <_> + + <_> + + + + <_>6 9 17 4 -1. + <_>6 11 17 2 2. + 0 + 7.6959999278187752e-003 + -0.5980589985847473 + 0.2480320036411285 + <_> + + <_> + + + + <_>1 0 11 18 -1. + <_>1 6 11 6 3. + 0 + 0.1617220044136047 + -0.0296139996498823 + -2.3162529468536377 + <_> + + <_> + + + + <_>6 15 13 6 -1. + <_>6 17 13 2 3. + 0 + -4.7889999113976955e-003 + 0.3745790123939514 + -0.3277919888496399 + <_> + + <_> + + + + <_>0 15 9 6 -1. + <_>0 17 9 2 3. + 0 + -0.0184029992669821 + -0.9969270229339600 + 0.0729480013251305 + <_> + + <_> + + + + <_>8 7 15 4 -1. + <_>13 7 5 4 3. + 0 + 0.0776650011539459 + 0.1417569965124130 + -1.7238730192184448 + <_> + + <_> + + + + <_>9 12 6 9 -1. + <_>9 15 6 3 3. + 0 + 0.0189210008829832 + -0.2127310037612915 + 1.0165189504623413 + <_> + + <_> + + + + <_>6 8 18 3 -1. + <_>12 8 6 3 3. + 0 + -0.0793979987502098 + -1.3164349794387817 + 0.1498199999332428 + <_> + + <_> + + + + <_>0 14 24 4 -1. + <_>8 14 8 4 3. + 0 + -0.0680370032787323 + 0.4942199885845184 + -0.2909100055694580 + <_> + + <_> + + + + <_>16 10 3 12 -1. + <_>16 16 3 6 2. + 0 + -6.1010001227259636e-003 + 0.4243049919605255 + -0.3389930129051209 + <_> + + <_> + + + + <_>0 3 24 3 -1. + <_>0 4 24 1 3. + 0 + 0.0319270007312298 + -0.0310469996184111 + -2.3459999561309814 + <_> + + <_> + + + + <_>14 17 10 6 -1. + <_>14 19 10 2 3. + 0 + -0.0298439990729094 + -0.7898960113525391 + 0.1541769951581955 + <_> + + <_> + + + + <_>1 13 18 3 -1. + <_>7 13 6 3 3. + 0 + -0.0805419981479645 + -2.2509229183197021 + -0.0309069994837046 + <_> + + <_> + + + + <_>5 0 18 9 -1. + <_>5 3 18 3 3. + 0 + 3.8109999150037766e-003 + -0.2557730078697205 + 0.2378550022840500 + <_> + + <_> + + + + <_>4 3 16 9 -1. + <_>4 6 16 3 3. + 0 + 0.0336470007896423 + -0.2254139930009842 + 0.9230740070343018 + <_> + + <_> + + + + <_>16 5 3 12 -1. + <_>16 11 3 6 2. + 0 + 8.2809999585151672e-003 + -0.2889620065689087 + 0.3104619979858398 + <_> + + <_> + + + + <_>0 7 18 4 -1. + <_>6 7 6 4 3. + 0 + 0.1010439991950989 + -0.0348640009760857 + -2.7102620601654053 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + -0.0100090000778437 + 0.5971540212631226 + -0.0338310003280640 + <_> + + <_> + + + + <_>9 8 6 10 -1. + <_>11 8 2 10 3. + 0 + 7.1919998154044151e-003 + -0.4773800075054169 + 0.2268600016832352 + <_> + + <_> + + + + <_>9 15 6 9 -1. + <_>11 15 2 9 3. + 0 + 0.0249690003693104 + 0.2287770062685013 + -1.0435529947280884 + <_> + + <_> + + + + <_>3 1 18 21 -1. + <_>12 1 9 21 2. + 0 + 0.2790800034999847 + -0.2581810057163239 + 0.7678049802780151 + <_> + + <_> + + + + <_>6 8 12 7 -1. + <_>6 8 6 7 2. + 0 + -0.0442130006849766 + -0.5979800224304199 + 0.2803989946842194 + <_> + + <_> + + + + <_>8 5 6 9 -1. + <_>10 5 2 9 3. + 0 + -0.0141369998455048 + 0.7098730206489563 + -0.2564519941806793 + -3.8424909114837646 + 7 + -1 + <_> + + + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>8 2 8 4 3. + 0 + 0.1377120018005371 + -0.5587059855461121 + 1.0953769683837891 + <_> + + <_> + + + + <_>14 7 5 12 -1. + <_>14 11 5 4 3. + 0 + 0.0344609990715981 + -0.7117189764976502 + 0.5289959907531738 + <_> + + <_> + + + + <_>5 7 5 12 -1. + <_>5 11 5 4 3. + 0 + 0.0185800008475780 + -1.1157519817352295 + 0.4059399962425232 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0250419992953539 + -0.4089249968528748 + 0.7412999868392944 + <_> + + <_> + + + + <_>0 1 6 17 -1. + <_>3 1 3 17 2. + 0 + 0.0571790002286434 + -0.3805429935455322 + 0.7364770174026489 + <_> + + <_> + + + + <_>3 1 19 9 -1. + <_>3 4 19 3 3. + 0 + 0.0149320000782609 + -0.6994550228118897 + 0.3795099854469299 + <_> + + <_> + + + + <_>3 18 12 6 -1. + <_>3 18 6 3 2. + <_>9 21 6 3 2. + 0 + 8.8900001719594002e-003 + -0.5455859899520874 + 0.3633249998092651 + <_> + + <_> + + + + <_>20 4 4 19 -1. + <_>20 4 2 19 2. + 0 + 0.0304359998553991 + -0.1012459993362427 + 0.7958589792251587 + <_> + + <_> + + + + <_>0 16 10 7 -1. + <_>5 16 5 7 2. + 0 + -0.0441600009799004 + 0.8441089987754822 + -0.3297640085220337 + <_> + + <_> + + + + <_>8 7 10 12 -1. + <_>13 7 5 6 2. + <_>8 13 5 6 2. + 0 + 0.0184610001742840 + 0.2632659971714020 + -0.9673650264739990 + <_> + + <_> + + + + <_>6 7 10 12 -1. + <_>6 7 5 6 2. + <_>11 13 5 6 2. + 0 + 0.0106149995699525 + 0.1525190025568008 + -1.0589870214462280 + <_> + + <_> + + + + <_>9 2 9 6 -1. + <_>12 2 3 6 3. + 0 + -0.0459740012884140 + -1.9918340444564819 + 0.1362909972667694 + <_> + + <_> + + + + <_>1 20 21 4 -1. + <_>8 20 7 4 3. + 0 + 0.0829000025987625 + -0.3203719854354858 + 0.6030420064926148 + <_> + + <_> + + + + <_>9 12 9 6 -1. + <_>9 14 9 2 3. + 0 + -8.9130001142621040e-003 + 0.5958660244941711 + -0.2113959938287735 + <_> + + <_> + + + + <_>7 2 9 6 -1. + <_>10 2 3 6 3. + 0 + 0.0428140014410019 + 0.0229250006377697 + -1.4679330587387085 + <_> + + <_> + + + + <_>13 0 4 14 -1. + <_>13 0 2 14 2. + 0 + -8.7139997631311417e-003 + -0.4398950040340424 + 0.2043969929218292 + <_> + + <_> + + + + <_>7 0 4 14 -1. + <_>9 0 2 14 2. + 0 + -4.3390002101659775e-003 + -0.8906679749488831 + 0.1046999990940094 + <_> + + <_> + + + + <_>14 15 9 6 -1. + <_>14 17 9 2 3. + 0 + 8.0749997869133949e-003 + 0.2116419970989227 + -0.4023160040378571 + <_> + + <_> + + + + <_>2 8 18 5 -1. + <_>8 8 6 5 3. + 0 + 0.0967390015721321 + 0.0133199999108911 + -1.6085360050201416 + <_> + + <_> + + + + <_>18 3 6 11 -1. + <_>20 3 2 11 3. + 0 + -0.0305369999259710 + 1.0063740015029907 + -0.1341329962015152 + <_> + + <_> + + + + <_>6 5 11 14 -1. + <_>6 12 11 7 2. + 0 + -0.0608559995889664 + -1.4689979553222656 + 9.4240000471472740e-003 + <_> + + <_> + + + + <_>18 4 6 9 -1. + <_>18 7 6 3 3. + 0 + -0.0381620004773140 + -0.8163639903068543 + 0.2617120146751404 + <_> + + <_> + + + + <_>7 6 9 6 -1. + <_>7 8 9 2 3. + 0 + -9.6960002556443214e-003 + 0.1156169995665550 + -0.7169319987297058 + <_> + + <_> + + + + <_>18 4 6 9 -1. + <_>18 7 6 3 3. + 0 + 0.0489029996097088 + 0.1305049955844879 + -1.6448370218276978 + <_> + + <_> + + + + <_>0 4 6 9 -1. + <_>0 7 6 3 3. + 0 + -0.0416119992733002 + -1.1795840263366699 + 0.0250170007348061 + <_> + + <_> + + + + <_>9 4 9 4 -1. + <_>9 6 9 2 2. + 0 + -0.0201880000531673 + 0.6318820118904114 + -0.1049040034413338 + <_> + + <_> + + + + <_>0 22 19 2 -1. + <_>0 23 19 1 2. + 0 + -9.7900000400841236e-004 + 0.1850779950618744 + -0.5356590151786804 + <_> + + <_> + + + + <_>17 14 6 9 -1. + <_>17 17 6 3 3. + 0 + -0.0336220003664494 + -0.9312760233879089 + 0.2007150053977966 + <_> + + <_> + + + + <_>1 14 6 9 -1. + <_>1 17 6 3 3. + 0 + 0.0194559991359711 + 0.0380290001630783 + -1.0112210512161255 + <_> + + <_> + + + + <_>14 11 4 9 -1. + <_>14 11 2 9 2. + 0 + -3.1800000579096377e-004 + 0.3645769953727722 + -0.2761090099811554 + <_> + + <_> + + + + <_>6 11 4 9 -1. + <_>8 11 2 9 2. + 0 + -3.8899999344721437e-004 + 0.1966589987277985 + -0.5341050028800964 + <_> + + <_> + + + + <_>3 9 18 7 -1. + <_>9 9 6 7 3. + 0 + -0.0934960022568703 + -1.6772350072860718 + 0.2072709947824478 + <_> + + <_> + + + + <_>9 12 6 10 -1. + <_>9 17 6 5 2. + 0 + -0.0778779983520508 + -3.0760629177093506 + -0.0358039997518063 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + 0.0169479995965958 + 0.2144739925861359 + -0.7137629985809326 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + -0.0214590001851320 + -1.1468060016632080 + 0.0158559996634722 + <_> + + <_> + + + + <_>6 17 18 3 -1. + <_>6 18 18 1 3. + 0 + -0.0128659997135401 + 0.8381239771842957 + -0.0659440010786057 + <_> + + <_> + + + + <_>1 17 18 3 -1. + <_>1 18 18 1 3. + 0 + 7.8220004215836525e-003 + -0.2802680134773254 + 0.7937690019607544 + <_> + + <_> + + + + <_>10 6 11 12 -1. + <_>10 12 11 6 2. + 0 + 0.1029440015554428 + 0.1783230006694794 + -0.6841220259666443 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>5 6 7 3 2. + <_>12 9 7 3 2. + 0 + -0.0374879986047745 + 0.9618999958038330 + -0.2173559963703156 + <_> + + <_> + + + + <_>5 4 15 4 -1. + <_>5 6 15 2 2. + 0 + 0.0255059991031885 + 0.0101039996370673 + 1.2461110353469849 + <_> + + <_> + + + + <_>0 0 22 2 -1. + <_>0 1 22 1 2. + 0 + 6.6700001480057836e-004 + -0.5348820090293884 + 0.1474629938602448 + <_> + + <_> + + + + <_>0 0 24 24 -1. + <_>8 0 8 24 3. + 0 + -0.2886790037155151 + 0.8217279911041260 + -0.0149480002000928 + <_> + + <_> + + + + <_>1 15 18 4 -1. + <_>10 15 9 4 2. + 0 + 0.0912949964404106 + -0.1960539966821671 + 1.0803170204162598 + <_> + + <_> + + + + <_>6 8 12 9 -1. + <_>6 11 12 3 3. + 0 + 0.1205660030245781 + -0.0238489992916584 + 1.1392610073089600 + <_> + + <_> + + + + <_>4 12 7 12 -1. + <_>4 16 7 4 3. + 0 + -0.0737750008702278 + -1.3583840131759644 + -4.2039998807013035e-003 + <_> + + <_> + + + + <_>1 2 22 6 -1. + <_>12 2 11 3 2. + <_>1 5 11 3 2. + 0 + -0.0331280007958412 + -0.6448320150375366 + 0.2414219975471497 + <_> + + <_> + + + + <_>5 20 14 3 -1. + <_>12 20 7 3 2. + 0 + -0.0439370013773441 + 0.8428540229797363 + -0.2062480002641678 + <_> + + <_> + + + + <_>0 0 24 16 -1. + <_>12 0 12 8 2. + <_>0 8 12 8 2. + 0 + 0.1811019927263260 + 0.1921209990978241 + -1.2222139835357666 + <_> + + <_> + + + + <_>3 13 18 4 -1. + <_>3 13 9 2 2. + <_>12 15 9 2 2. + 0 + -0.0118509996682405 + -0.7267739772796631 + 0.0526879988610744 + <_> + + <_> + + + + <_>2 10 22 2 -1. + <_>2 11 22 1 2. + 0 + 4.5920000411570072e-003 + -0.3630520105361939 + 0.2922379970550537 + <_> + + <_> + + + + <_>6 3 11 8 -1. + <_>6 7 11 4 2. + 0 + 7.0620002225041389e-003 + 0.0581160001456738 + -0.6716160178184509 + <_> + + <_> + + + + <_>14 5 6 6 -1. + <_>14 8 6 3 2. + 0 + -0.0237150005996227 + 0.4714210033416748 + 0.0185800008475780 + <_> + + <_> + + + + <_>0 7 24 6 -1. + <_>0 9 24 2 3. + 0 + -0.0671719983220100 + -1.1331889629364014 + 0.0237809997051954 + <_> + + <_> + + + + <_>14 0 10 10 -1. + <_>19 0 5 5 2. + <_>14 5 5 5 2. + 0 + -0.0653100013732910 + 0.9825350046157837 + 0.0283620003610849 + <_> + + <_> + + + + <_>0 0 10 10 -1. + <_>0 0 5 5 2. + <_>5 5 5 5 2. + 0 + 0.0227910000830889 + -0.2821370065212250 + 0.5899339914321899 + <_> + + <_> + + + + <_>0 1 24 4 -1. + <_>12 1 12 2 2. + <_>0 3 12 2 2. + 0 + -0.0190379992127419 + -0.6371150016784668 + 0.2651459872722626 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -6.8689999170601368e-003 + 0.3748730123043060 + -0.3323209881782532 + <_> + + <_> + + + + <_>5 15 16 6 -1. + <_>13 15 8 3 2. + <_>5 18 8 3 2. + 0 + -0.0401460006833076 + -1.3048729896545410 + 0.1572429984807968 + <_> + + <_> + + + + <_>3 15 16 6 -1. + <_>3 15 8 3 2. + <_>11 18 8 3 2. + 0 + -0.0405309982597828 + -2.0458049774169922 + -0.0269259996712208 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + -0.0122539997100830 + 0.7764940261840820 + -0.0429710000753403 + <_> + + <_> + + + + <_>0 13 21 10 -1. + <_>0 18 21 5 2. + 0 + -0.0272199995815754 + 0.1742440015077591 + -0.4460090100765228 + <_> + + <_> + + + + <_>13 0 6 24 -1. + <_>15 0 2 24 3. + 0 + -0.0883660018444061 + -1.5036419630050659 + 0.1428990066051483 + <_> + + <_> + + + + <_>7 4 6 11 -1. + <_>9 4 2 11 3. + 0 + -7.9159997403621674e-003 + 0.2866669893264771 + -0.3792369961738586 + <_> + + <_> + + + + <_>9 5 9 6 -1. + <_>12 5 3 6 3. + 0 + -0.0419600009918213 + 1.3846950531005859 + 0.0650269985198975 + <_> + + <_> + + + + <_>1 4 2 20 -1. + <_>1 14 2 10 2. + 0 + 0.0456629991531372 + -0.2245229929685593 + 0.7952100038528442 + <_> + + <_> + + + + <_>13 0 6 24 -1. + <_>15 0 2 24 3. + 0 + -0.1409060060977936 + -1.5879319906234741 + 0.1135900020599365 + <_> + + <_> + + + + <_>5 0 6 24 -1. + <_>7 0 2 24 3. + 0 + -0.0592160001397133 + -1.1945960521697998 + -7.1640000678598881e-003 + <_> + + <_> + + + + <_>16 7 6 14 -1. + <_>19 7 3 7 2. + <_>16 14 3 7 2. + 0 + 4.3390002101659775e-003 + -0.1552869975566864 + 0.4066449999809265 + <_> + + <_> + + + + <_>4 7 4 12 -1. + <_>6 7 2 12 2. + 0 + -2.0369999110698700e-003 + 0.2592790126800537 + -0.3836829960346222 + <_> + + <_> + + + + <_>0 5 24 14 -1. + <_>8 5 8 14 3. + 0 + 0.2751649916172028 + -0.0884979963302612 + 0.7678750157356262 + <_> + + <_> + + + + <_>5 13 10 6 -1. + <_>5 15 10 2 3. + 0 + -0.0266019999980927 + 0.7502449750900269 + -0.2262199968099594 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + 0.0409060008823872 + 0.1215860024094582 + -1.4566910266876221 + <_> + + <_> + + + + <_>2 7 6 14 -1. + <_>2 7 3 7 2. + <_>5 14 3 7 2. + 0 + 5.5320002138614655e-003 + -0.3661150038242340 + 0.2596859931945801 + <_> + + <_> + + + + <_>15 2 9 15 -1. + <_>18 2 3 15 3. + 0 + 0.0318790003657341 + -0.0750190019607544 + 0.4848479926586151 + <_> + + <_> + + + + <_>0 2 6 9 -1. + <_>2 2 2 9 3. + 0 + -0.0414820015430450 + 0.7822039723396301 + -0.2199220061302185 + <_> + + <_> + + + + <_>12 2 10 14 -1. + <_>17 2 5 7 2. + <_>12 9 5 7 2. + 0 + -0.0961309969425201 + -0.8945630192756653 + 0.1468070000410080 + <_> + + <_> + + + + <_>11 6 2 18 -1. + <_>12 6 1 18 2. + 0 + -0.0115689998492599 + 0.8271409869194031 + -0.2027560025453568 + <_> + + <_> + + + + <_>9 5 15 6 -1. + <_>14 5 5 6 3. + 0 + 0.0183129999786615 + 0.0163679998368025 + 0.2730680108070374 + <_> + + <_> + + + + <_>8 6 6 10 -1. + <_>10 6 2 10 3. + 0 + -0.0341660007834435 + 1.1307320594787598 + -0.1881089955568314 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0244769994169474 + -0.5779129862785339 + 0.1581249982118607 + <_> + + <_> + + + + <_>3 3 9 7 -1. + <_>6 3 3 7 3. + 0 + 0.0489570014178753 + -0.0225649997591972 + -1.6373280286788940 + <_> + + <_> + + + + <_>6 7 14 3 -1. + <_>6 7 7 3 2. + 0 + -0.0207029990851879 + -0.5451210141181946 + 0.2408699989318848 + <_> + + <_> + + + + <_>7 7 8 6 -1. + <_>11 7 4 6 2. + 0 + -0.0230020005255938 + -1.2236540317535400 + -7.3440000414848328e-003 + <_> + + <_> + + + + <_>12 7 7 12 -1. + <_>12 13 7 6 2. + 0 + 0.0645850002765656 + 0.1469559967517853 + -0.4496749937534332 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>10 6 2 9 2. + <_>12 15 2 9 2. + 0 + 0.0126660000532866 + -0.2787390053272247 + 0.4387660026550293 + <_> + + <_> + + + + <_>16 14 6 9 -1. + <_>16 17 6 3 3. + 0 + -0.0120029998943210 + -0.2428909987211227 + 0.2535009980201721 + <_> + + <_> + + + + <_>4 0 6 13 -1. + <_>6 0 2 13 3. + 0 + -0.0264439992606640 + -0.8586480021476746 + 0.0260259993374348 + <_> + + <_> + + + + <_>2 2 21 3 -1. + <_>9 2 7 3 3. + 0 + -0.0255479998886585 + 0.6928790211677551 + -2.1160000469535589e-003 + <_> + + <_> + + + + <_>5 4 5 12 -1. + <_>5 8 5 4 3. + 0 + 0.0391150005161762 + -0.1658910065889359 + 1.5209139585494995 + <_> + + <_> + + + + <_>10 3 4 10 -1. + <_>10 8 4 5 2. + 0 + -6.0330000706017017e-003 + 0.4385690093040466 + -0.2161370068788528 + <_> + + <_> + + + + <_>8 4 5 8 -1. + <_>8 8 5 4 2. + 0 + -0.0339369997382164 + -0.9799839854240418 + 0.0221330001950264 + -3.6478610038757324 + 8 + -1 + <_> + + + <_> + + <_> + + + + <_>6 0 11 9 -1. + <_>6 3 11 3 3. + 0 + 0.0406729988753796 + -0.9047470092773438 + 0.6441059708595276 + <_> + + <_> + + + + <_>6 6 12 5 -1. + <_>10 6 4 5 3. + 0 + 0.0256099998950958 + -0.7921699881553650 + 0.5748999714851379 + <_> + + <_> + + + + <_>0 0 24 5 -1. + <_>8 0 8 5 3. + 0 + 0.1995950043201447 + -0.3009960055351257 + 1.3143850564956665 + <_> + + <_> + + + + <_>1 10 23 6 -1. + <_>1 12 23 2 3. + 0 + 0.0124049996957183 + -0.8988299965858460 + 0.2920579910278320 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>9 21 6 3 3. + 0 + 0.0392079986631870 + -0.4195519983768463 + 0.5346329808235169 + <_> + + <_> + + + + <_>3 6 21 6 -1. + <_>3 8 21 2 3. + 0 + -0.0308439992368221 + 0.4579339921474457 + -0.4462909996509552 + <_> + + <_> + + + + <_>0 5 6 12 -1. + <_>2 5 2 12 3. + 0 + -0.0355230011045933 + 0.9131050109863281 + -0.2737320065498352 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0616500005125999 + -1.4697799682617187 + 0.2036409974098206 + <_> + + <_> + + + + <_>8 7 8 10 -1. + <_>8 12 8 5 2. + 0 + -0.0117399999871850 + -1.0482879877090454 + 0.0678019970655441 + <_> + + <_> + + + + <_>5 7 15 12 -1. + <_>10 7 5 12 3. + 0 + 0.0669339969754219 + 0.2927449941635132 + -0.5228289961814880 + <_> + + <_> + + + + <_>0 17 10 6 -1. + <_>0 19 10 2 3. + 0 + -0.0206310003995895 + -1.2855139970779419 + 0.0445509999990463 + <_> + + <_> + + + + <_>14 18 9 6 -1. + <_>14 20 9 2 3. + 0 + -0.0223570000380278 + -0.8575379848480225 + 0.1843400001525879 + <_> + + <_> + + + + <_>9 6 6 16 -1. + <_>9 14 6 8 2. + 0 + 1.1500000255182385e-003 + 0.1640550047159195 + -0.6912500262260437 + <_> + + <_> + + + + <_>14 18 9 6 -1. + <_>14 20 9 2 3. + 0 + 0.0358729995787144 + 0.1575649976730347 + -0.8426259756088257 + <_> + + <_> + + + + <_>1 18 9 6 -1. + <_>1 20 9 2 3. + 0 + 0.0306599996984005 + 0.0216370001435280 + -1.3634690046310425 + <_> + + <_> + + + + <_>15 9 9 6 -1. + <_>15 11 9 2 3. + 0 + 5.5559999309480190e-003 + -0.1673700064420700 + 0.2588840126991272 + <_> + + <_> + + + + <_>0 9 9 6 -1. + <_>0 11 9 2 3. + 0 + -6.1160000041127205e-003 + -0.9727180004119873 + 0.0661000013351440 + <_> + + <_> + + + + <_>17 3 6 9 -1. + <_>19 3 2 9 3. + 0 + -0.0303169991821051 + 0.9847419857978821 + -0.0164480004459620 + <_> + + <_> + + + + <_>2 17 18 3 -1. + <_>2 18 18 1 3. + 0 + -9.7200004383921623e-003 + 0.4760470092296600 + -0.3251670002937317 + <_> + + <_> + + + + <_>3 15 21 6 -1. + <_>3 17 21 2 3. + 0 + -0.0571269989013672 + -0.9592069983482361 + 0.1993820071220398 + <_> + + <_> + + + + <_>9 17 6 6 -1. + <_>9 20 6 3 2. + 0 + 4.0059997700154781e-003 + -0.5261250138282776 + 0.2242870032787323 + <_> + + <_> + + + + <_>18 3 6 9 -1. + <_>18 6 6 3 3. + 0 + 0.0337340012192726 + 0.1707009971141815 + -1.0737580060958862 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>0 6 6 3 3. + 0 + -0.0346419997513294 + -1.1343129873275757 + 0.0365400016307831 + <_> + + <_> + + + + <_>4 0 16 10 -1. + <_>12 0 8 5 2. + <_>4 5 8 5 2. + 0 + 0.0469230003654957 + 0.2583230137825012 + -0.7153580188751221 + <_> + + <_> + + + + <_>2 0 10 16 -1. + <_>2 0 5 8 2. + <_>7 8 5 8 2. + 0 + -8.7660001590847969e-003 + 0.1964090019464493 + -0.5335509777069092 + <_> + + <_> + + + + <_>14 0 10 5 -1. + <_>14 0 5 5 2. + 0 + 0.0656279996037483 + -0.0511949993669987 + 0.9761070013046265 + <_> + + <_> + + + + <_>0 0 10 5 -1. + <_>5 0 5 5 2. + 0 + -0.0441650003194809 + 1.0631920099258423 + -0.2346259951591492 + <_> + + <_> + + + + <_>18 3 6 10 -1. + <_>18 3 3 10 2. + 0 + 0.0173049997538328 + -0.1858289986848831 + 0.4588989913463593 + <_> + + <_> + + + + <_>5 11 12 6 -1. + <_>5 11 6 3 2. + <_>11 14 6 3 2. + 0 + 0.0331359989941120 + -0.0293819997459650 + -2.6651329994201660 + <_> + + <_> + + + + <_>21 0 3 18 -1. + <_>22 0 1 18 3. + 0 + -0.0210299994796515 + 0.9997990131378174 + 0.0249370001256466 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + 0.0297839995473623 + -0.0296059995889664 + -2.1695868968963623 + <_> + + <_> + + + + <_>8 8 9 7 -1. + <_>11 8 3 7 3. + 0 + 0.0552919991314411 + -7.5599999399855733e-004 + 0.7465199828147888 + <_> + + <_> + + + + <_>7 12 8 10 -1. + <_>7 12 4 5 2. + <_>11 17 4 5 2. + 0 + -0.0335979983210564 + -1.5274159908294678 + 0.0110600003972650 + <_> + + <_> + + + + <_>21 0 3 18 -1. + <_>22 0 1 18 3. + 0 + 0.0196029990911484 + 0.0335749983787537 + 0.9952620267868042 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>12 6 2 9 2. + 0 + -0.0207870006561279 + 0.7661290168762207 + -0.2467080056667328 + <_> + + <_> + + + + <_>15 0 9 6 -1. + <_>15 2 9 2 3. + 0 + 0.0325360000133514 + 0.1626340001821518 + -0.6113430261611939 + <_> + + <_> + + + + <_>0 2 24 3 -1. + <_>0 3 24 1 3. + 0 + -0.0107880001887679 + -0.9783970117568970 + 0.0289699994027615 + <_> + + <_> + + + + <_>11 7 6 9 -1. + <_>13 7 2 9 3. + 0 + -9.9560003727674484e-003 + 0.4614579975605011 + -0.1351049989461899 + <_> + + <_> + + + + <_>7 6 6 10 -1. + <_>9 6 2 10 3. + 0 + -3.7489999085664749e-003 + 0.2545819878578186 + -0.5195559859275818 + <_> + + <_> + + + + <_>12 1 6 12 -1. + <_>14 1 2 12 3. + 0 + -0.0417799986898899 + -0.8056510090827942 + 0.1520850062370300 + <_> + + <_> + + + + <_>6 4 12 12 -1. + <_>6 10 12 6 2. + 0 + -0.0342210009694099 + -1.3137799501419067 + -3.5800000187009573e-003 + <_> + + <_> + + + + <_>14 3 2 21 -1. + <_>14 3 1 21 2. + 0 + 0.0101300003007054 + 0.2017579972743988 + -0.6133959889411926 + <_> + + <_> + + + + <_>6 1 12 8 -1. + <_>6 5 12 4 2. + 0 + -0.0898490026593208 + 0.9763280153274536 + -0.2088479995727539 + <_> + + <_> + + + + <_>3 0 18 8 -1. + <_>3 4 18 4 2. + 0 + 0.0260979998856783 + -0.1880799978971481 + 0.4770579934120178 + <_> + + <_> + + + + <_>3 0 18 3 -1. + <_>3 1 18 1 3. + 0 + -3.7539999466389418e-003 + -0.6798040270805359 + 0.1128880009055138 + <_> + + <_> + + + + <_>0 13 24 4 -1. + <_>12 13 12 2 2. + <_>0 15 12 2 2. + 0 + 0.0319730006158352 + 0.1895170062780380 + -1.4967479705810547 + <_> + + <_> + + + + <_>10 5 4 9 -1. + <_>12 5 2 9 2. + 0 + 0.0193329993635416 + -0.2360990047454834 + 0.8132050037384033 + <_> + + <_> + + + + <_>11 1 6 9 -1. + <_>13 1 2 9 3. + 0 + 1.9490000559017062e-003 + 0.2483039945363998 + -0.0692119970917702 + <_> + + <_> + + + + <_>6 2 6 22 -1. + <_>8 2 2 22 3. + 0 + -0.0441469997167587 + -1.0418920516967773 + 0.0480530001223087 + <_> + + <_> + + + + <_>16 10 8 14 -1. + <_>20 10 4 7 2. + <_>16 17 4 7 2. + 0 + -0.0446819998323917 + 0.5134630203247070 + -7.3799998499453068e-003 + <_> + + <_> + + + + <_>3 4 16 15 -1. + <_>3 9 16 5 3. + 0 + -0.1075749993324280 + 1.6202019453048706 + -0.1866759955883026 + <_> + + <_> + + + + <_>16 10 8 14 -1. + <_>20 10 4 7 2. + <_>16 17 4 7 2. + 0 + -0.1284680068492889 + 2.9869480133056641 + 0.0954279974102974 + <_> + + <_> + + + + <_>0 10 8 14 -1. + <_>0 10 4 7 2. + <_>4 17 4 7 2. + 0 + -0.0447579994797707 + 0.6040530204772949 + -0.2705869972705841 + <_> + + <_> + + + + <_>10 14 11 6 -1. + <_>10 17 11 3 2. + 0 + -0.0439909994602203 + -0.6179050207138062 + 0.1599719971418381 + <_> + + <_> + + + + <_>0 7 24 9 -1. + <_>8 7 8 9 3. + 0 + -0.1226899996399880 + 0.6632720232009888 + -0.2363699972629547 + <_> + + <_> + + + + <_>13 1 4 16 -1. + <_>13 1 2 16 2. + 0 + -0.0199829991906881 + -1.1228660345077515 + 0.1961670070886612 + <_> + + <_> + + + + <_>7 1 4 16 -1. + <_>9 1 2 16 2. + 0 + -0.0155279999598861 + -1.0770269632339478 + 0.0206930004060268 + <_> + + <_> + + + + <_>5 5 16 8 -1. + <_>13 5 8 4 2. + <_>5 9 8 4 2. + 0 + -0.0489710010588169 + 0.8116829991340637 + -0.0172520000487566 + <_> + + <_> + + + + <_>0 9 6 9 -1. + <_>0 12 6 3 3. + 0 + 0.0559759996831417 + -0.0225290004163980 + -1.7356760501861572 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + -9.8580000922083855e-003 + 0.6788139939308167 + -0.0581800006330013 + <_> + + <_> + + + + <_>3 12 6 9 -1. + <_>3 15 6 3 3. + 0 + 0.0134810004383326 + 0.0578479990363121 + -0.7725530266761780 + <_> + + <_> + + + + <_>8 14 9 6 -1. + <_>8 16 9 2 3. + 0 + 6.5609999001026154e-003 + -0.1314689964056015 + 0.6705579757690430 + <_> + + <_> + + + + <_>2 13 8 10 -1. + <_>2 13 4 5 2. + <_>6 18 4 5 2. + 0 + 7.1149999275803566e-003 + -0.3788059949874878 + 0.3097899854183197 + <_> + + <_> + + + + <_>15 5 3 18 -1. + <_>15 11 3 6 3. + 0 + 4.8159998841583729e-003 + -0.5847039818763733 + 0.2560209929943085 + <_> + + <_> + + + + <_>3 5 18 3 -1. + <_>3 6 18 1 3. + 0 + 9.5319999381899834e-003 + -0.3021700084209442 + 0.4125329852104187 + <_> + + <_> + + + + <_>17 5 6 11 -1. + <_>19 5 2 11 3. + 0 + -0.0274749994277954 + 0.5915470123291016 + 0.0179639998823404 + <_> + + <_> + + + + <_>1 5 6 11 -1. + <_>3 5 2 11 3. + 0 + -0.0395199991762638 + 0.9691349864006043 + -0.2102030068635941 + <_> + + <_> + + + + <_>19 1 4 9 -1. + <_>19 1 2 9 2. + 0 + -0.0306589994579554 + 0.9115589857101440 + 0.0405500009655952 + <_> + + <_> + + + + <_>1 1 4 9 -1. + <_>3 1 2 9 2. + 0 + -1.4680000022053719e-003 + -0.6048979759216309 + 0.1696089953184128 + <_> + + <_> + + + + <_>4 15 18 9 -1. + <_>4 15 9 9 2. + 0 + 0.1907760053873062 + 0.0435150004923344 + 0.8189290165901184 + <_> + + <_> + + + + <_>6 9 12 4 -1. + <_>6 11 12 2 2. + 0 + 5.1790000870823860e-003 + -0.9361730217933655 + 0.0249370001256466 + <_> + + <_> + + + + <_>15 2 9 6 -1. + <_>15 4 9 2 3. + 0 + 0.0241260007023811 + 0.1817550063133240 + -0.3418590128421783 + <_> + + <_> + + + + <_>0 2 9 6 -1. + <_>0 4 9 2 3. + 0 + -0.0263839997351170 + -1.2912579774856567 + -3.4280000254511833e-003 + <_> + + <_> + + + + <_>15 0 6 17 -1. + <_>17 0 2 17 3. + 0 + 5.4139997810125351e-003 + -0.0462919995188713 + 0.2526960074901581 + <_> + + <_> + + + + <_>3 0 6 17 -1. + <_>5 0 2 17 3. + 0 + 0.0542160011827946 + -0.0128480000421405 + -1.4304540157318115 + <_> + + <_> + + + + <_>8 17 9 4 -1. + <_>8 19 9 2 2. + 0 + 2.3799999326001853e-004 + -0.2667669951915741 + 0.3358829915523529 + <_> + + <_> + + + + <_>6 5 3 18 -1. + <_>6 11 3 6 3. + 0 + 0.0152169996872544 + -0.5136730074882507 + 0.1300510019063950 + <_> + + <_> + + + + <_>5 2 14 12 -1. + <_>5 8 14 6 2. + 0 + 0.0170079991221428 + 0.4157589972019196 + -0.3124119937419891 + <_> + + <_> + + + + <_>10 2 3 12 -1. + <_>10 8 3 6 2. + 0 + 0.0304969996213913 + -0.2482099980115891 + 0.7082849740982056 + <_> + + <_> + + + + <_>10 7 14 15 -1. + <_>10 12 14 5 3. + 0 + 6.5430002287030220e-003 + -0.2263700067996979 + 0.1918459981679916 + <_> + + <_> + + + + <_>0 7 14 15 -1. + <_>0 12 14 5 3. + 0 + 0.1416399925947189 + 0.0652270019054413 + -0.8880950212478638 + <_> + + <_> + + + + <_>15 0 9 6 -1. + <_>15 2 9 2 3. + 0 + 0.0193380005657673 + 0.1889120042324066 + -0.2739770114421845 + <_> + + <_> + + + + <_>0 0 9 6 -1. + <_>0 2 9 2 3. + 0 + -0.0173240005970001 + -0.9486669898033142 + 0.0241969991475344 + <_> + + <_> + + + + <_>12 6 6 14 -1. + <_>14 6 2 14 3. + 0 + -6.2069999985396862e-003 + 0.3693839907646179 + -0.1749490052461624 + <_> + + <_> + + + + <_>9 7 6 9 -1. + <_>11 7 2 9 3. + 0 + -0.0161090008914471 + 0.9615949988365173 + -0.2000530064105988 + <_> + + <_> + + + + <_>12 6 6 15 -1. + <_>14 6 2 15 3. + 0 + -0.1012250036001205 + -3.0699110031127930 + 0.1136379987001419 + <_> + + <_> + + + + <_>6 6 6 15 -1. + <_>8 6 2 15 3. + 0 + -7.5509999878704548e-003 + 0.2292100042104721 + -0.4564509987831116 + <_> + + <_> + + + + <_>15 3 8 9 -1. + <_>15 3 4 9 2. + 0 + 0.0442479997873306 + -3.1599999056197703e-004 + 0.3922530114650726 + <_> + + <_> + + + + <_>0 0 9 21 -1. + <_>3 0 3 21 3. + 0 + -0.1163600012660027 + 0.9523370265960693 + -0.2020159959793091 + <_> + + <_> + + + + <_>11 9 8 12 -1. + <_>11 13 8 4 3. + 0 + 4.7360002063214779e-003 + -0.0991770029067993 + 0.2037049978971481 + <_> + + <_> + + + + <_>6 7 10 12 -1. + <_>6 7 5 6 2. + <_>11 13 5 6 2. + 0 + 0.0224590003490448 + 8.7280003353953362e-003 + -1.0217070579528809 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>12 6 2 9 2. + <_>10 15 2 9 2. + 0 + -0.0121090002357960 + 0.6481260061264038 + -0.0901490002870560 + <_> + + <_> + + + + <_>0 0 6 9 -1. + <_>0 3 6 3 3. + 0 + 0.0561200007796288 + -0.0367599986493587 + -1.9275590181350708 + <_> + + <_> + + + + <_>3 14 18 3 -1. + <_>3 15 18 1 3. + 0 + -8.7379999458789825e-003 + 0.6926130056381226 + -0.0683749988675117 + <_> + + <_> + + + + <_>3 14 8 10 -1. + <_>3 14 4 5 2. + <_>7 19 4 5 2. + 0 + 6.6399998031556606e-003 + -0.4056980013847351 + 0.1862570047378540 + <_> + + <_> + + + + <_>0 12 24 4 -1. + <_>12 12 12 2 2. + <_>0 14 12 2 2. + 0 + -0.0181319992989302 + -0.6451820135116577 + 0.2197639942169190 + <_> + + <_> + + + + <_>0 2 3 20 -1. + <_>1 2 1 20 3. + 0 + -0.0227189995348454 + 0.9777619838714600 + -0.1865430027246475 + <_> + + <_> + + + + <_>12 16 10 8 -1. + <_>17 16 5 4 2. + <_>12 20 5 4 2. + 0 + 0.0127050001174212 + -0.1054660007357597 + 0.3740409910678864 + <_> + + <_> + + + + <_>2 16 10 8 -1. + <_>2 16 5 4 2. + <_>7 20 5 4 2. + 0 + -0.0136829996481538 + 0.6106410026550293 + -0.2688109874725342 + -3.8700489997863770 + 9 + -1 + <_> + + + <_> + + <_> + + + + <_>7 0 10 9 -1. + <_>7 3 10 3 3. + 0 + 0.0313579998910427 + -1.0183910131454468 + 0.5752859711647034 + <_> + + <_> + + + + <_>0 0 24 3 -1. + <_>8 0 8 3 3. + 0 + 0.0930500030517578 + -0.4129750132560730 + 1.0091199874877930 + <_> + + <_> + + + + <_>3 8 15 4 -1. + <_>3 10 15 2 2. + 0 + 0.0259499996900558 + -0.5858790278434753 + 0.5660619735717773 + <_> + + <_> + + + + <_>6 5 12 6 -1. + <_>10 5 4 6 3. + 0 + 0.0164720006287098 + -0.9285749793052673 + 0.3092449903488159 + <_> + + <_> + + + + <_>5 13 14 6 -1. + <_>5 16 14 3 2. + 0 + -1.8779999809339643e-003 + 0.1195100024342537 + -1.1180130243301392 + <_> + + <_> + + + + <_>11 14 4 10 -1. + <_>11 19 4 5 2. + 0 + -9.0129999443888664e-003 + -0.5784950256347656 + 0.3315440118312836 + <_> + + <_> + + + + <_>0 6 6 7 -1. + <_>3 6 3 7 2. + 0 + 0.0225479993969202 + -0.3832510113716126 + 0.5246220231056213 + <_> + + <_> + + + + <_>18 0 6 6 -1. + <_>18 0 3 6 2. + 0 + -0.0377800017595291 + 1.1790670156478882 + -0.0341669991612434 + <_> + + <_> + + + + <_>3 1 18 3 -1. + <_>3 2 18 1 3. + 0 + -5.3799999877810478e-003 + -0.8626589775085449 + 0.1186790019273758 + <_> + + <_> + + + + <_>9 6 14 18 -1. + <_>9 12 14 6 3. + 0 + -0.0238930005580187 + -0.7495059967041016 + 0.2101140022277832 + <_> + + <_> + + + + <_>0 0 6 6 -1. + <_>3 0 3 6 2. + 0 + -0.0265219993889332 + 0.9212859869003296 + -0.2825280129909515 + <_> + + <_> + + + + <_>13 11 6 6 -1. + <_>13 11 3 6 2. + 0 + 0.0122800003737211 + 0.2666279971599579 + -0.7001360058784485 + <_> + + <_> + + + + <_>0 20 24 3 -1. + <_>8 20 8 3 3. + 0 + 0.0965949967503548 + -0.2845399975776672 + 0.7316899895668030 + <_> + + <_> + + + + <_>13 11 6 7 -1. + <_>13 11 3 7 2. + 0 + -0.0274149999022484 + -0.6149269938468933 + 0.1557620018720627 + <_> + + <_> + + + + <_>4 12 10 6 -1. + <_>4 14 10 2 3. + 0 + -0.0157670006155968 + 0.5755119919776917 + -0.3436219990253449 + <_> + + <_> + + + + <_>13 11 6 6 -1. + <_>13 11 3 6 2. + 0 + -2.1100000012665987e-003 + 0.3259969949722290 + -0.1300829946994782 + <_> + + <_> + + + + <_>5 11 6 7 -1. + <_>8 11 3 7 2. + 0 + 0.0120069999247789 + 0.0893229991197586 + -0.9602559804916382 + <_> + + <_> + + + + <_>7 4 11 12 -1. + <_>7 8 11 4 3. + 0 + -0.0154219996184111 + 0.3444949984550476 + -0.4671199917793274 + <_> + + <_> + + + + <_>6 15 10 4 -1. + <_>6 17 10 2 2. + 0 + -4.1579999960958958e-003 + 0.2369630038738251 + -0.5256329774856567 + <_> + + <_> + + + + <_>14 0 6 9 -1. + <_>16 0 2 9 3. + 0 + -0.0211859997361898 + -0.7426769733428955 + 0.2170200049877167 + <_> + + <_> + + + + <_>4 0 6 9 -1. + <_>6 0 2 9 3. + 0 + -0.0170770008116961 + -0.9047179818153381 + 0.0660120025277138 + <_> + + <_> + + + + <_>11 2 4 15 -1. + <_>11 7 4 5 3. + 0 + -0.0408499985933304 + -0.3444660007953644 + 0.2150370031595230 + <_> + + <_> + + + + <_>0 0 20 3 -1. + <_>0 1 20 1 3. + 0 + -8.1930002197623253e-003 + -0.9338859915733337 + 0.0504710003733635 + <_> + + <_> + + + + <_>13 18 10 6 -1. + <_>13 20 10 2 3. + 0 + -0.0192380007356405 + -0.5320370197296143 + 0.1724060028791428 + <_> + + <_> + + + + <_>2 7 6 11 -1. + <_>5 7 3 11 2. + 0 + -0.0441920012235641 + 0.9207500219345093 + -0.2214850038290024 + <_> + + <_> + + + + <_>10 14 10 9 -1. + <_>10 17 10 3 3. + 0 + -0.0623920001089573 + -0.7105380296707153 + 0.1832389980554581 + <_> + + <_> + + + + <_>8 2 4 9 -1. + <_>10 2 2 9 2. + 0 + -1.0079999919980764e-003 + -0.8706309795379639 + 0.0553300008177757 + <_> + + <_> + + + + <_>14 3 10 4 -1. + <_>14 3 5 4 2. + 0 + 0.0238700006157160 + -0.2285420000553131 + 0.5241559743881226 + <_> + + <_> + + + + <_>6 6 12 6 -1. + <_>6 6 6 3 2. + <_>12 9 6 3 2. + 0 + 0.0213910005986691 + -0.3032589852809906 + 0.5586060285568237 + <_> + + <_> + + + + <_>8 8 8 10 -1. + <_>12 8 4 5 2. + <_>8 13 4 5 2. + 0 + 0.0202549993991852 + 0.2690150141716003 + -0.7026180028915405 + <_> + + <_> + + + + <_>7 4 4 16 -1. + <_>7 12 4 8 2. + 0 + -0.0287720002233982 + -1.1835030317306519 + 0.0465120002627373 + <_> + + <_> + + + + <_>8 8 9 4 -1. + <_>8 10 9 2 2. + 0 + 3.4199999645352364e-003 + -0.5465210080146790 + 0.2596249878406525 + <_> + + <_> + + + + <_>5 2 14 9 -1. + <_>5 5 14 3 3. + 0 + 0.0569830015301704 + -0.2698290050029755 + 0.5817070007324219 + <_> + + <_> + + + + <_>3 16 19 8 -1. + <_>3 20 19 4 2. + 0 + -0.0938920006155968 + -0.9104639887809753 + 0.1967770010232925 + <_> + + <_> + + + + <_>0 0 10 8 -1. + <_>5 0 5 8 2. + 0 + 0.0176999997347593 + -0.4400329887866974 + 0.2134950011968613 + <_> + + <_> + + + + <_>5 2 16 18 -1. + <_>5 2 8 18 2. + 0 + 0.2284419983625412 + 0.0236050002276897 + 0.7717159986495972 + <_> + + <_> + + + + <_>0 11 24 11 -1. + <_>8 11 8 11 3. + 0 + -0.1828750073909760 + 0.7922859787940979 + -0.2464479953050613 + <_> + + <_> + + + + <_>3 3 18 5 -1. + <_>3 3 9 5 2. + 0 + -0.0698919966816902 + 0.8026779890060425 + -0.0360720008611679 + <_> + + <_> + + + + <_>1 16 18 3 -1. + <_>1 17 18 1 3. + 0 + 0.0152970002964139 + -0.2007230073213577 + 1.1030600070953369 + <_> + + <_> + + + + <_>5 17 18 3 -1. + <_>5 18 18 1 3. + 0 + 6.7500001750886440e-003 + -0.0459679998457432 + 0.7209450006484985 + <_> + + <_> + + + + <_>1 13 9 6 -1. + <_>1 15 9 2 3. + 0 + -0.0159830003976822 + -0.9035720229148865 + 0.0449879989027977 + <_> + + <_> + + + + <_>1 9 23 10 -1. + <_>1 14 23 5 2. + 0 + 0.0130880000069737 + 0.3529709875583649 + -0.3771060109138489 + <_> + + <_> + + + + <_>3 7 18 3 -1. + <_>3 8 18 1 3. + 0 + 0.0130610000342131 + -0.1958359926939011 + 1.1198940277099609 + <_> + + <_> + + + + <_>6 8 12 3 -1. + <_>6 8 6 3 2. + 0 + -0.0399070009589195 + -1.3998429775238037 + 0.1914509981870651 + <_> + + <_> + + + + <_>6 2 3 22 -1. + <_>7 2 1 22 3. + 0 + 0.0150269996374846 + 2.3600000422447920e-003 + -1.1611249446868896 + <_> + + <_> + + + + <_>14 17 10 6 -1. + <_>14 19 10 2 3. + 0 + -0.0205179993063211 + -0.4890809953212738 + 0.1674340069293976 + <_> + + <_> + + + + <_>1 18 10 6 -1. + <_>1 20 10 2 3. + 0 + -0.0223590005189180 + -1.2202980518341064 + -0.0119759999215603 + <_> + + <_> + + + + <_>11 3 6 12 -1. + <_>13 3 2 12 3. + 0 + -7.9150004312396049e-003 + 0.3722809851169586 + -0.0850630030035973 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>12 6 2 9 2. + 0 + 0.0152580002322793 + -0.2941260039806366 + 0.5940639972686768 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + -0.0316659994423389 + -1.4395569562911987 + 0.1357879936695099 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0307739991694689 + -2.2545371055603027 + -0.0339710004627705 + <_> + + <_> + + + + <_>12 10 9 6 -1. + <_>15 10 3 6 3. + 0 + -0.0154830003157258 + 0.3770070075988770 + 0.0158479996025562 + <_> + + <_> + + + + <_>2 11 6 9 -1. + <_>5 11 3 9 2. + 0 + 0.0351670011878014 + -0.2944610118865967 + 0.5315909981727600 + <_> + + <_> + + + + <_>14 5 3 19 -1. + <_>15 5 1 19 3. + 0 + -0.0179060008376837 + -0.9978820085525513 + 0.1623599976301193 + <_> + + <_> + + + + <_>6 6 9 6 -1. + <_>6 8 9 2 3. + 0 + -3.1799999997019768e-003 + 0.0476570017635822 + -0.7524989843368530 + <_> + + <_> + + + + <_>14 5 3 19 -1. + <_>15 5 1 19 3. + 0 + 0.0157200004905462 + 0.1487379968166351 + -0.6537539958953857 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>0 6 6 3 3. + 0 + 0.0298640001565218 + -0.0149520002305508 + -1.2275190353393555 + <_> + + <_> + + + + <_>5 21 18 3 -1. + <_>5 22 18 1 3. + 0 + 2.9899999499320984e-003 + -0.1426369994878769 + 0.4327279925346375 + <_> + + <_> + + + + <_>1 10 18 4 -1. + <_>7 10 6 4 3. + 0 + 0.0847499966621399 + -0.0192809998989105 + -1.1946409940719604 + <_> + + <_> + + + + <_>13 4 8 10 -1. + <_>17 4 4 5 2. + <_>13 9 4 5 2. + 0 + -0.0587249994277954 + -1.7328219413757324 + 0.1437470018863678 + <_> + + <_> + + + + <_>7 8 9 6 -1. + <_>10 8 3 6 3. + 0 + 0.0447559989988804 + -0.2414059937000275 + 0.5401999950408936 + <_> + + <_> + + + + <_>12 9 9 8 -1. + <_>15 9 3 8 3. + 0 + 0.0403690002858639 + 5.7680001482367516e-003 + 0.5657809972763062 + <_> + + <_> + + + + <_>0 6 5 12 -1. + <_>0 10 5 4 3. + 0 + 0.0377359986305237 + 0.0381809994578362 + -0.7937039732933044 + <_> + + <_> + + + + <_>7 6 14 6 -1. + <_>14 6 7 3 2. + <_>7 9 7 3 2. + 0 + 0.0607529990375042 + 0.0764530003070831 + 1.4813209772109985 + <_> + + <_> + + + + <_>7 5 3 19 -1. + <_>8 5 1 19 3. + 0 + -0.0198320001363754 + -1.6971720457077026 + -0.0273700002580881 + <_> + + <_> + + + + <_>8 4 15 20 -1. + <_>13 4 5 20 3. + 0 + -0.1659269928932190 + 0.6297600269317627 + 0.0317629985511303 + <_> + + <_> + + + + <_>1 4 15 20 -1. + <_>6 4 5 20 3. + 0 + 0.0690149962902069 + -0.3346320092678070 + 0.3007670044898987 + <_> + + <_> + + + + <_>13 10 6 6 -1. + <_>13 10 3 6 2. + 0 + 0.0113580003380775 + 0.2274149954319000 + -0.3822470009326935 + <_> + + <_> + + + + <_>5 10 6 6 -1. + <_>8 10 3 6 2. + 0 + 1.7000000225380063e-003 + 0.1922380030155182 + -0.5273510217666626 + <_> + + <_> + + + + <_>14 2 6 14 -1. + <_>17 2 3 7 2. + <_>14 9 3 7 2. + 0 + 0.0797690004110336 + 0.0914919972419739 + 2.1049048900604248 + <_> + + <_> + + + + <_>4 2 6 14 -1. + <_>4 2 3 7 2. + <_>7 9 3 7 2. + 0 + -0.0571440011262894 + -1.7452130317687988 + -0.0409100018441677 + <_> + + <_> + + + + <_>12 4 6 7 -1. + <_>12 4 3 7 2. + 0 + 7.3830001056194305e-003 + -0.2421479970216751 + 0.3557780086994171 + <_> + + <_> + + + + <_>9 4 6 9 -1. + <_>11 4 2 9 3. + 0 + -0.0180409997701645 + 1.1779999732971191 + -0.1767670065164566 + <_> + + <_> + + + + <_>11 4 8 10 -1. + <_>11 4 4 10 2. + 0 + 0.0945030003786087 + 0.1393609941005707 + -1.2993700504302979 + <_> + + <_> + + + + <_>5 4 8 10 -1. + <_>9 4 4 10 2. + 0 + 5.4210000671446323e-003 + -0.5460860133171082 + 0.1391640007495880 + <_> + + <_> + + + + <_>8 18 10 6 -1. + <_>8 20 10 2 3. + 0 + 7.0290002040565014e-003 + -0.2159720063209534 + 0.3925809860229492 + <_> + + <_> + + + + <_>1 18 21 6 -1. + <_>1 20 21 2 3. + 0 + 0.0345159992575645 + 0.0631889998912811 + -0.7210810184478760 + <_> + + <_> + + + + <_>9 2 12 6 -1. + <_>9 2 6 6 2. + 0 + -0.0519249998033047 + 0.6866760253906250 + 0.0632729977369308 + <_> + + <_> + + + + <_>3 2 12 6 -1. + <_>9 2 6 6 2. + 0 + -0.0691620036959648 + 1.7411810159683228 + -0.1661929935216904 + <_> + + <_> + + + + <_>12 5 12 6 -1. + <_>18 5 6 3 2. + <_>12 8 6 3 2. + 0 + -5.5229999125003815e-003 + 0.3069469928741455 + -0.1666290014982224 + <_> + + <_> + + + + <_>8 8 6 9 -1. + <_>8 11 6 3 3. + 0 + 0.0685999989509583 + -0.2140540033578873 + 0.7318500280380249 + <_> + + <_> + + + + <_>2 7 20 6 -1. + <_>2 9 20 2 3. + 0 + -0.0670389980077744 + -0.7936059832572937 + 0.2052579969167709 + <_> + + <_> + + + + <_>0 5 12 6 -1. + <_>0 5 6 3 2. + <_>6 8 6 3 2. + 0 + -0.0210050009191036 + 0.3734439909458160 + -0.2961860001087189 + <_> + + <_> + + + + <_>14 14 8 10 -1. + <_>18 14 4 5 2. + <_>14 19 4 5 2. + 0 + 0.0202789995819330 + -0.0152000002563000 + 0.4055530130863190 + <_> + + <_> + + + + <_>2 14 8 10 -1. + <_>2 14 4 5 2. + <_>6 19 4 5 2. + 0 + -0.0471079982817173 + 1.2116849422454834 + -0.1746429949998856 + <_> + + <_> + + + + <_>2 11 20 13 -1. + <_>2 11 10 13 2. + 0 + 0.1876849979162216 + -0.0229090005159378 + 0.6964579820632935 + <_> + + <_> + + + + <_>6 9 12 5 -1. + <_>12 9 6 5 2. + 0 + -0.0432289987802505 + -1.0602480173110962 + -5.5599998449906707e-004 + <_> + + <_> + + + + <_>5 6 16 6 -1. + <_>13 6 8 3 2. + <_>5 9 8 3 2. + 0 + 0.0200040005147457 + -0.0327510014176369 + 0.5380510091781616 + <_> + + <_> + + + + <_>1 19 9 4 -1. + <_>1 21 9 2 2. + 0 + 8.0880001187324524e-003 + 0.0375480018556118 + -0.7476890087127686 + <_> + + <_> + + + + <_>7 5 12 5 -1. + <_>11 5 4 5 3. + 0 + 0.0271010007709265 + -0.0817900002002716 + 0.3338710069656372 + <_> + + <_> + + + + <_>3 5 14 12 -1. + <_>3 5 7 6 2. + <_>10 11 7 6 2. + 0 + -0.0917460024356842 + -1.9213509559631348 + -0.0389529988169670 + <_> + + <_> + + + + <_>9 4 9 6 -1. + <_>12 4 3 6 3. + 0 + -0.0124549996107817 + 0.4836060106754303 + 0.0181680005043745 + <_> + + <_> + + + + <_>2 6 19 3 -1. + <_>2 7 19 1 3. + 0 + 0.0146490000188351 + -0.1990669965744019 + 0.7281540036201477 + <_> + + <_> + + + + <_>18 10 6 9 -1. + <_>18 13 6 3 3. + 0 + 0.0291019994765520 + 0.1987109929323196 + -0.4921680092811585 + <_> + + <_> + + + + <_>3 7 18 2 -1. + <_>3 8 18 1 2. + 0 + 8.7799998000264168e-003 + -0.1949959993362427 + 0.7731739878654480 + <_> + + <_> + + + + <_>20 2 4 18 -1. + <_>22 2 2 9 2. + <_>20 11 2 9 2. + 0 + -0.0547400005161762 + 1.8087190389633179 + 0.0683230012655258 + <_> + + <_> + + + + <_>2 18 20 3 -1. + <_>2 19 20 1 3. + 0 + -0.0147980004549026 + 0.7806490063667297 + -0.1870959997177124 + <_> + + <_> + + + + <_>1 9 22 3 -1. + <_>1 10 22 1 3. + 0 + 0.0250129997730255 + 0.1528529971837997 + -1.6021020412445068 + <_> + + <_> + + + + <_>0 2 4 18 -1. + <_>0 2 2 9 2. + <_>2 11 2 9 2. + 0 + 0.0465480014681816 + -0.1673820018768311 + 1.1902060508728027 + <_> + + <_> + + + + <_>19 0 4 23 -1. + <_>19 0 2 23 2. + 0 + 0.0176240000873804 + -0.1028549969196320 + 0.3917590081691742 + <_> + + <_> + + + + <_>0 3 6 19 -1. + <_>3 3 3 19 2. + 0 + 0.1631959974765778 + -0.0356240011751652 + -1.6098170280456543 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>20 2 2 9 3. + 0 + 0.0131379999220371 + -0.0563590005040169 + 0.5415890216827393 + <_> + + <_> + + + + <_>0 5 10 6 -1. + <_>0 7 10 2 3. + 0 + -0.0156650003045797 + 0.2806310057640076 + -0.3170860111713409 + <_> + + <_> + + + + <_>7 0 12 12 -1. + <_>13 0 6 6 2. + <_>7 6 6 6 2. + 0 + 0.0805540010333061 + 0.1264040023088455 + -1.0297529697418213 + <_> + + <_> + + + + <_>0 3 24 6 -1. + <_>0 3 12 3 2. + <_>12 6 12 3 2. + 0 + 0.0353639982640743 + 0.0207529999315739 + -0.7910559773445129 + <_> + + <_> + + + + <_>10 14 4 10 -1. + <_>10 19 4 5 2. + 0 + 0.0329869985580444 + 0.1905709952116013 + -0.8383989930152893 + <_> + + <_> + + + + <_>8 9 4 15 -1. + <_>8 14 4 5 3. + 0 + 0.0121950004249811 + 0.0737290009856224 + -0.6278070211410523 + <_> + + <_> + + + + <_>4 11 17 6 -1. + <_>4 14 17 3 2. + 0 + 0.0430659987032413 + 0.0473849996924400 + 1.5712939500808716 + <_> + + <_> + + + + <_>2 5 18 8 -1. + <_>2 5 9 4 2. + <_>11 9 9 4 2. + 0 + 0.0303269997239113 + -0.2731460034847260 + 0.3857200145721436 + <_> + + <_> + + + + <_>7 6 14 6 -1. + <_>14 6 7 3 2. + <_>7 9 7 3 2. + 0 + 0.0354930013418198 + 0.0545939989387989 + 0.5258340239524841 + <_> + + <_> + + + + <_>3 6 14 6 -1. + <_>3 6 7 3 2. + <_>10 9 7 3 2. + 0 + -0.0145969996228814 + 0.3815259933471680 + -0.2833240032196045 + <_> + + <_> + + + + <_>16 5 3 18 -1. + <_>17 5 1 18 3. + 0 + 0.0126069998368621 + 0.1545509994029999 + -0.3050149977207184 + <_> + + <_> + + + + <_>5 5 3 18 -1. + <_>6 5 1 18 3. + 0 + 0.0101720001548529 + 0.0236370004713535 + -0.8721789717674255 + <_> + + <_> + + + + <_>10 10 14 4 -1. + <_>10 12 14 2 2. + 0 + 0.0288430005311966 + 0.1609099954366684 + -0.2027759999036789 + <_> + + <_> + + + + <_>4 10 9 4 -1. + <_>4 12 9 2 2. + 0 + 5.5100000463426113e-004 + -0.6154540181159973 + 0.0809359997510910 + -3.7160909175872803 + 10 + -1 + <_> + + + <_> + + <_> + + + + <_>2 0 18 9 -1. + <_>2 3 18 3 3. + 0 + 0.0483440011739731 + -0.8490459918975830 + 0.5697439908981323 + <_> + + <_> + + + + <_>6 3 12 8 -1. + <_>10 3 4 8 3. + 0 + 0.0324600003659725 + -0.8141729831695557 + 0.4478169977664948 + <_> + + <_> + + + + <_>1 1 8 5 -1. + <_>5 1 4 5 2. + 0 + 0.0333399996161461 + -0.3642379939556122 + 0.6793739795684815 + <_> + + <_> + + + + <_>12 7 7 8 -1. + <_>12 11 7 4 2. + 0 + 6.4019998535513878e-003 + -1.1885459423065186 + 0.1923869997262955 + <_> + + <_> + + + + <_>0 12 22 4 -1. + <_>0 14 22 2 2. + 0 + -5.6889997795224190e-003 + 0.3308529853820801 + -0.7133409976959229 + <_> + + <_> + + + + <_>15 6 4 15 -1. + <_>15 11 4 5 3. + 0 + 0.0126980002969503 + -0.5099080204963684 + 0.1137629970908165 + <_> + + <_> + + + + <_>5 7 7 8 -1. + <_>5 11 7 4 2. + 0 + 6.0549997724592686e-003 + -1.0470550060272217 + 0.2022259980440140 + <_> + + <_> + + + + <_>8 18 9 4 -1. + <_>8 20 9 2 2. + 0 + 2.6420000940561295e-003 + -0.5055940151214600 + 0.3644120097160339 + <_> + + <_> + + + + <_>1 2 22 4 -1. + <_>1 4 22 2 2. + 0 + -0.0169259998947382 + -0.9954190254211426 + 0.1260219961404800 + <_> + + <_> + + + + <_>17 3 6 17 -1. + <_>19 3 2 17 3. + 0 + 0.0282359998673201 + -0.0941379964351654 + 0.5778040289878845 + <_> + + <_> + + + + <_>8 2 8 18 -1. + <_>8 11 8 9 2. + 0 + 0.0104289995506406 + 0.2327290028333664 + -0.5256969928741455 + <_> + + <_> + + + + <_>17 0 6 12 -1. + <_>20 0 3 6 2. + <_>17 6 3 6 2. + 0 + 9.8860003054141998e-003 + -0.1031629964709282 + 0.4765760004520416 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + 0.0260150004178286 + -1.0920000495389104e-003 + -1.5581729412078857 + <_> + + <_> + + + + <_>15 5 9 12 -1. + <_>15 11 9 6 2. + 0 + -0.0255379993468523 + -0.6545140147209168 + 0.1884319931268692 + <_> + + <_> + + + + <_>2 22 18 2 -1. + <_>2 23 18 1 2. + 0 + -3.5310001112520695e-003 + 0.2814059853553772 + -0.4457530081272125 + <_> + + <_> + + + + <_>10 10 12 6 -1. + <_>16 10 6 3 2. + <_>10 13 6 3 2. + 0 + 9.2449998483061790e-003 + 0.1561200022697449 + -0.2137099951505661 + <_> + + <_> + + + + <_>0 1 4 11 -1. + <_>2 1 2 11 2. + 0 + 0.0210309997200966 + -0.2917029857635498 + 0.5223410129547119 + <_> + + <_> + + + + <_>20 0 4 10 -1. + <_>20 0 2 10 2. + 0 + -0.0510630011558533 + 1.3661290407180786 + 0.0304659996181726 + <_> + + <_> + + + + <_>1 3 6 17 -1. + <_>3 3 2 17 3. + 0 + -0.0623300001025200 + 1.2207020521163940 + -0.2243440002202988 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + -0.0329630002379417 + -0.8201680183410645 + 0.1453189998865128 + <_> + + <_> + + + + <_>0 13 8 9 -1. + <_>0 16 8 3 3. + 0 + -0.0374180004000664 + -1.2218099832534790 + 0.0194489993155003 + <_> + + <_> + + + + <_>16 8 6 12 -1. + <_>16 12 6 4 3. + 0 + 0.1240279972553253 + 0.1208230033516884 + -0.9872930049896240 + <_> + + <_> + + + + <_>2 8 6 12 -1. + <_>2 12 6 4 3. + 0 + -8.9229997247457504e-003 + -1.1688489913940430 + 0.0211050007492304 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0598799996078014 + -1.0689330101013184 + 0.1986020058393478 + <_> + + <_> + + + + <_>1 5 19 3 -1. + <_>1 6 19 1 3. + 0 + 6.2620001845061779e-003 + -0.3622959852218628 + 0.3800080120563507 + <_> + + <_> + + + + <_>11 8 9 7 -1. + <_>14 8 3 7 3. + 0 + -0.0176730006933212 + 0.4909409880638123 + -0.1460669934749603 + <_> + + <_> + + + + <_>3 8 12 9 -1. + <_>3 11 12 3 3. + 0 + 0.0175790004432201 + 0.5872809886932373 + -0.2777439951896668 + <_> + + <_> + + + + <_>3 6 18 3 -1. + <_>3 7 18 1 3. + 0 + 5.1560001447796822e-003 + -0.0751949995756149 + 0.6019309759140015 + <_> + + <_> + + + + <_>10 0 4 12 -1. + <_>10 6 4 6 2. + 0 + -0.0105999996885657 + 0.2763740122318268 + -0.3779430091381073 + <_> + + <_> + + + + <_>3 9 18 14 -1. + <_>3 9 9 14 2. + 0 + 0.2088409960269928 + -5.3599998354911804e-003 + 1.0317809581756592 + <_> + + <_> + + + + <_>0 0 4 9 -1. + <_>2 0 2 9 2. + 0 + -0.0264129992574453 + 0.8233640193939209 + -0.2248059958219528 + <_> + + <_> + + + + <_>12 5 4 18 -1. + <_>12 5 2 18 2. + 0 + 0.0588920004665852 + 0.1309829950332642 + -1.1853699684143066 + <_> + + <_> + + + + <_>8 5 4 18 -1. + <_>10 5 2 18 2. + 0 + -0.0115790003910661 + -0.9066780209541321 + 0.0441269986331463 + <_> + + <_> + + + + <_>10 5 6 10 -1. + <_>12 5 2 10 3. + 0 + 0.0459880009293556 + 0.0101439999416471 + 1.0740900039672852 + <_> + + <_> + + + + <_>9 4 4 11 -1. + <_>11 4 2 11 2. + 0 + -0.0228380002081394 + 1.7791990041732788 + -0.1731549948453903 + <_> + + <_> + + + + <_>4 16 18 3 -1. + <_>4 17 18 1 3. + 0 + -8.1709995865821838e-003 + 0.5738630294799805 + -0.0741060003638268 + <_> + + <_> + + + + <_>0 16 20 3 -1. + <_>0 17 20 1 3. + 0 + 3.5359999164938927e-003 + -0.3207289874553680 + 0.4018250107765198 + <_> + + <_> + + + + <_>9 9 6 12 -1. + <_>9 13 6 4 3. + 0 + 0.0494449995458126 + 0.1928800046443939 + -1.2166700363159180 + <_> + + <_> + + + + <_>8 13 8 8 -1. + <_>8 17 8 4 2. + 0 + 3.5139999818056822e-003 + 0.0695680007338524 + -0.7132369875907898 + <_> + + <_> + + + + <_>13 10 3 12 -1. + <_>13 16 3 6 2. + 0 + -0.0309960003942251 + -0.3886219859123230 + 0.1809879988431931 + <_> + + <_> + + + + <_>5 9 14 14 -1. + <_>5 9 7 7 2. + <_>12 16 7 7 2. + 0 + 0.0864529982209206 + -0.0257929991930723 + -1.5453219413757324 + <_> + + <_> + + + + <_>0 0 24 10 -1. + <_>12 0 12 5 2. + <_>0 5 12 5 2. + 0 + -0.1365260034799576 + -1.9199420213699341 + 0.1661330014467239 + <_> + + <_> + + + + <_>1 11 18 2 -1. + <_>1 12 18 1 2. + 0 + -5.7689999230206013e-003 + -1.2822589874267578 + -0.0159079991281033 + <_> + + <_> + + + + <_>19 5 5 12 -1. + <_>19 9 5 4 3. + 0 + -0.0178999993950129 + -0.4040989875793457 + 0.2359160035848618 + <_> + + <_> + + + + <_>0 5 5 12 -1. + <_>0 9 5 4 3. + 0 + -0.0199699997901917 + -0.7289190292358398 + 0.0562350004911423 + <_> + + <_> + + + + <_>16 6 8 18 -1. + <_>20 6 4 9 2. + <_>16 15 4 9 2. + 0 + -0.0574930012226105 + 0.5783079862594605 + -0.0157960001379251 + <_> + + <_> + + + + <_>0 6 8 18 -1. + <_>0 6 4 9 2. + <_>4 15 4 9 2. + 0 + -0.0830560028553009 + 0.9151160120964050 + -0.2112140059471130 + <_> + + <_> + + + + <_>12 5 12 12 -1. + <_>18 5 6 6 2. + <_>12 11 6 6 2. + 0 + -0.0537710003554821 + -0.5193129777908325 + 0.1857600063085556 + <_> + + <_> + + + + <_>7 6 6 9 -1. + <_>9 6 2 9 3. + 0 + -8.3670001477003098e-003 + 0.2410970032215118 + -0.3964860141277313 + <_> + + <_> + + + + <_>9 13 6 11 -1. + <_>11 13 2 11 3. + 0 + 0.0554069988429546 + 0.1677120029926300 + -2.5664970874786377 + <_> + + <_> + + + + <_>0 5 12 12 -1. + <_>0 5 6 6 2. + <_>6 11 6 6 2. + 0 + -0.0671809986233711 + -1.3658570051193237 + -0.0142320003360510 + <_> + + <_> + + + + <_>1 2 23 3 -1. + <_>1 3 23 1 3. + 0 + -0.0239000003784895 + -1.7084569931030273 + 0.1650779992341995 + <_> + + <_> + + + + <_>1 15 19 3 -1. + <_>1 16 19 1 3. + 0 + 5.5949999950826168e-003 + -0.3137399852275848 + 0.3283790051937103 + <_> + + <_> + + + + <_>13 17 11 4 -1. + <_>13 19 11 2 2. + 0 + 0.0212949998676777 + 0.1495340019464493 + -0.4857980012893677 + <_> + + <_> + + + + <_>0 13 8 5 -1. + <_>4 13 4 5 2. + 0 + -0.0246130004525185 + 0.7434639930725098 + -0.2230519950389862 + <_> + + <_> + + + + <_>12 10 10 4 -1. + <_>12 10 5 4 2. + 0 + -0.0196260008960962 + -0.4091829955577850 + 0.1889320015907288 + <_> + + <_> + + + + <_>4 6 9 9 -1. + <_>4 9 9 3 3. + 0 + -0.0532660000026226 + 0.8138160109519959 + -0.2085369974374771 + <_> + + <_> + + + + <_>15 14 9 6 -1. + <_>15 16 9 2 3. + 0 + 7.1290000341832638e-003 + 0.3299610018730164 + -0.5993739962577820 + <_> + + <_> + + + + <_>1 12 9 6 -1. + <_>1 14 9 2 3. + 0 + -0.0224869996309280 + -1.2551610469818115 + -0.0204130001366138 + <_> + + <_> + + + + <_>3 10 20 8 -1. + <_>13 10 10 4 2. + <_>3 14 10 4 2. + 0 + -0.0823109969496727 + 1.3821430206298828 + 0.0593089982867241 + <_> + + <_> + + + + <_>2 0 9 18 -1. + <_>5 0 3 18 3. + 0 + 0.1309700012207031 + -0.0358439981937408 + -1.5396369695663452 + <_> + + <_> + + + + <_>13 11 9 10 -1. + <_>16 11 3 10 3. + 0 + 0.0142930001020432 + -0.1847520023584366 + 0.3745500147342682 + <_> + + <_> + + + + <_>1 2 8 5 -1. + <_>5 2 4 5 2. + 0 + 6.3479999080300331e-003 + -0.4490109980106354 + 0.1387699991464615 + <_> + + <_> + + + + <_>3 4 21 6 -1. + <_>10 4 7 6 3. + 0 + -0.0460550002753735 + 0.6783260107040405 + -0.0170719996094704 + <_> + + <_> + + + + <_>7 0 10 14 -1. + <_>7 0 5 7 2. + <_>12 7 5 7 2. + 0 + 0.0576939992606640 + -0.0119559997692704 + -1.2261159420013428 + <_> + + <_> + + + + <_>12 17 12 4 -1. + <_>12 19 12 2 2. + 0 + -6.0609998181462288e-003 + 0.3395859897136688 + 6.2800000887364149e-004 + <_> + + <_> + + + + <_>0 6 23 4 -1. + <_>0 8 23 2 2. + 0 + -0.0521630011498928 + -1.0621069669723511 + -0.0137799996882677 + <_> + + <_> + + + + <_>13 10 8 10 -1. + <_>17 10 4 5 2. + <_>13 15 4 5 2. + 0 + 0.0465729981660843 + 0.1453880071640015 + -1.2384550571441650 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + 7.5309998355805874e-003 + -0.2446770071983337 + 0.5137709975242615 + <_> + + <_> + + + + <_>15 16 9 4 -1. + <_>15 18 9 2 2. + 0 + 0.0216150004416704 + 0.1307259947061539 + -0.7099679708480835 + <_> + + <_> + + + + <_>0 16 9 4 -1. + <_>0 18 9 2 2. + 0 + -0.0178640000522137 + -1.0474660396575928 + 4.9599999329075217e-004 + <_> + + <_> + + + + <_>13 11 6 6 -1. + <_>13 11 3 6 2. + 0 + -0.0371950007975101 + -1.5126730203628540 + 0.1480139940977097 + <_> + + <_> + + + + <_>5 11 6 6 -1. + <_>8 11 3 6 2. + 0 + -3.1100001069717109e-004 + 0.1397150009870529 + -0.4686749875545502 + <_> + + <_> + + + + <_>0 3 24 6 -1. + <_>12 3 12 3 2. + <_>0 6 12 3 2. + 0 + 0.0250429995357990 + 0.2863200008869171 + -0.4179469943046570 + <_> + + <_> + + + + <_>2 4 18 3 -1. + <_>2 5 18 1 3. + 0 + 9.3449996784329414e-003 + -0.2733620107173920 + 0.4344469904899597 + <_> + + <_> + + + + <_>0 0 24 4 -1. + <_>12 0 12 2 2. + <_>0 2 12 2 2. + 0 + 0.0323639996349812 + 0.1843889951705933 + -0.9501929879188538 + <_> + + <_> + + + + <_>1 16 18 3 -1. + <_>1 17 18 1 3. + 0 + -6.2299999408423901e-003 + 0.3258199989795685 + -0.3081560134887695 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + 0.0514889992773533 + 0.1141600012779236 + -1.9795479774475098 + <_> + + <_> + + + + <_>0 15 9 6 -1. + <_>0 17 9 2 3. + 0 + -0.0264490004628897 + -1.1067299842834473 + -8.5519999265670776e-003 + <_> + + <_> + + + + <_>6 17 18 3 -1. + <_>6 18 18 1 3. + 0 + -0.0154200000688434 + 0.8013870120048523 + -0.0320350006222725 + <_> + + <_> + + + + <_>8 8 6 10 -1. + <_>10 8 2 10 3. + 0 + 0.0194569993764162 + -0.2644949853420258 + 0.3875389993190765 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + 0.0336209982633591 + 0.0160520002245903 + 0.5884090065956116 + <_> + + <_> + + + + <_>8 8 5 8 -1. + <_>8 12 5 4 2. + 0 + 0.0289060007780790 + 0.0152160003781319 + -0.9472360014915466 + <_> + + <_> + + + + <_>12 8 6 8 -1. + <_>12 12 6 4 2. + 0 + 2.0300000323913991e-004 + -0.3076600134372711 + 0.2123589962720871 + <_> + + <_> + + + + <_>6 5 6 11 -1. + <_>8 5 2 11 3. + 0 + -0.0491419993340969 + -1.6058609485626221 + -0.0310949999839067 + <_> + + <_> + + + + <_>13 6 8 9 -1. + <_>13 9 8 3 3. + 0 + 0.0764259994029999 + 0.0747589990496635 + 1.1639410257339478 + <_> + + <_> + + + + <_>1 7 21 6 -1. + <_>1 9 21 2 3. + 0 + 0.0238979998975992 + -6.4320000819861889e-003 + -1.1150749921798706 + <_> + + <_> + + + + <_>15 5 3 12 -1. + <_>15 11 3 6 2. + 0 + 3.8970001041889191e-003 + -0.2410569936037064 + 0.2085890024900436 + <_> + + <_> + + + + <_>6 9 11 12 -1. + <_>6 13 11 4 3. + 0 + -0.0894450023770332 + 1.9157789945602417 + -0.1572110056877136 + <_> + + <_> + + + + <_>13 8 10 8 -1. + <_>18 8 5 4 2. + <_>13 12 5 4 2. + 0 + -0.0150089999660850 + -0.2517409920692444 + 0.1817989945411682 + <_> + + <_> + + + + <_>5 8 12 3 -1. + <_>11 8 6 3 2. + 0 + -0.0111459996551275 + -0.6934949755668640 + 0.0449279993772507 + <_> + + <_> + + + + <_>6 11 18 4 -1. + <_>12 11 6 4 3. + 0 + 0.0945789963006973 + 0.1810210049152374 + -0.7497860193252564 + <_> + + <_> + + + + <_>0 0 22 22 -1. + <_>0 11 22 11 2. + 0 + 0.5503889918327332 + -0.0309740006923676 + -1.6746139526367188 + <_> + + <_> + + + + <_>11 2 6 8 -1. + <_>11 6 6 4 2. + 0 + 0.0413810014724731 + 0.0639100000262260 + 0.7656120061874390 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + 0.0247719995677471 + 0.0113800000399351 + -0.8855940103530884 + <_> + + <_> + + + + <_>10 0 6 9 -1. + <_>12 0 2 9 3. + 0 + 0.0509990006685257 + 0.1489029973745346 + -2.4634211063385010 + <_> + + <_> + + + + <_>8 3 6 14 -1. + <_>8 3 3 7 2. + <_>11 10 3 7 2. + 0 + -0.0168939996510744 + 0.3887099921703339 + -0.2988030016422272 + <_> + + <_> + + + + <_>3 10 18 8 -1. + <_>9 10 6 8 3. + 0 + -0.1216230019927025 + -1.5542800426483154 + 0.1630080044269562 + <_> + + <_> + + + + <_>10 0 3 14 -1. + <_>10 7 3 7 2. + 0 + -3.6049999762326479e-003 + 0.2184280008077622 + -0.3731209933757782 + <_> + + <_> + + + + <_>4 3 16 20 -1. + <_>4 13 16 10 2. + 0 + 0.1157540008425713 + -0.0470610000193119 + 0.5940369963645935 + <_> + + <_> + + + + <_>9 4 6 10 -1. + <_>11 4 2 10 3. + 0 + 0.0369039997458458 + -0.2550860047340393 + 0.5539730191230774 + <_> + + <_> + + + + <_>5 0 16 4 -1. + <_>5 2 16 2 2. + 0 + 0.0114839999005198 + -0.1812949925661087 + 0.4068279862403870 + <_> + + <_> + + + + <_>2 5 18 4 -1. + <_>8 5 6 4 3. + 0 + -0.0202339999377728 + 0.5431119799613953 + -0.2382239997386932 + <_> + + <_> + + + + <_>13 0 6 9 -1. + <_>15 0 2 9 3. + 0 + -0.0287650004029274 + -0.6917229890823364 + 0.1594330072402954 + <_> + + <_> + + + + <_>8 4 8 5 -1. + <_>12 4 4 5 2. + 0 + -5.8320001699030399e-003 + 0.2944779992103577 + -0.3400599956512451 + <_> + + <_> + + + + <_>12 10 10 4 -1. + <_>12 10 5 4 2. + 0 + -0.0554689988493919 + 0.9220079779624939 + 0.0940930023789406 + <_> + + <_> + + + + <_>2 10 10 4 -1. + <_>7 10 5 4 2. + 0 + -0.0148010002449155 + -0.7953969836235046 + 0.0315219983458519 + <_> + + <_> + + + + <_>7 11 12 5 -1. + <_>11 11 4 5 3. + 0 + -7.0940000005066395e-003 + 0.3309600055217743 + -0.0508869998157024 + <_> + + <_> + + + + <_>3 10 8 10 -1. + <_>3 10 4 5 2. + <_>7 15 4 5 2. + 0 + -0.0451240018010139 + -1.3719749450683594 + -0.0214089993387461 + <_> + + <_> + + + + <_>11 12 9 8 -1. + <_>14 12 3 8 3. + 0 + 0.0643770024180412 + 0.0639019981026649 + 0.9147830009460449 + <_> + + <_> + + + + <_>0 21 24 3 -1. + <_>8 21 8 3 3. + 0 + -0.0147270001471043 + 0.3605059981346130 + -0.2861450016498566 + <_> + + <_> + + + + <_>3 20 18 4 -1. + <_>9 20 6 4 3. + 0 + 0.0450070016086102 + -0.1561969965696335 + 0.5316029787063599 + <_> + + <_> + + + + <_>1 15 9 6 -1. + <_>1 17 9 2 3. + 0 + -1.1330000124871731e-003 + 0.1342290043830872 + -0.4435890018939972 + <_> + + <_> + + + + <_>11 17 10 4 -1. + <_>11 19 10 2 2. + 0 + 0.0494510009884834 + 0.1057180017232895 + -2.5589139461517334 + <_> + + <_> + + + + <_>9 12 4 12 -1. + <_>9 18 4 6 2. + 0 + 0.0291029997169971 + -0.0100880004465580 + -1.1073939800262451 + <_> + + <_> + + + + <_>9 6 9 6 -1. + <_>12 6 3 6 3. + 0 + 0.0347860008478165 + -2.7719999197870493e-003 + 0.5670099854469299 + <_> + + <_> + + + + <_>1 13 6 9 -1. + <_>1 16 6 3 3. + 0 + -6.1309998854994774e-003 + -0.4688940048217773 + 0.1263639926910400 + <_> + + <_> + + + + <_>6 16 12 4 -1. + <_>6 18 12 2 2. + 0 + 0.0155250001698732 + -8.4279999136924744e-003 + 0.8746920228004456 + <_> + + <_> + + + + <_>1 5 20 3 -1. + <_>1 6 20 1 3. + 0 + 2.9249999206513166e-003 + -0.3443430066108704 + 0.2085160017013550 + <_> + + <_> + + + + <_>8 1 9 9 -1. + <_>8 4 9 3 3. + 0 + -0.0535710006952286 + 1.4982949495315552 + 0.0573280006647110 + <_> + + <_> + + + + <_>2 19 9 4 -1. + <_>2 21 9 2 2. + 0 + -0.0192179996520281 + -0.9923409819602966 + -9.3919998034834862e-003 + <_> + + <_> + + + + <_>11 1 4 18 -1. + <_>11 7 4 6 3. + 0 + -0.0552829988300800 + -0.5768229961395264 + 0.1686059981584549 + <_> + + <_> + + + + <_>7 2 8 12 -1. + <_>7 2 4 6 2. + <_>11 8 4 6 2. + 0 + 0.0563360005617142 + -0.0337750017642975 + -1.3889650106430054 + <_> + + <_> + + + + <_>11 10 9 8 -1. + <_>14 10 3 8 3. + 0 + -0.0238240007311106 + 0.4018209874629974 + 1.8360000103712082e-003 + <_> + + <_> + + + + <_>5 11 12 5 -1. + <_>9 11 4 5 3. + 0 + 1.7810000572353601e-003 + 0.1814599931240082 + -0.4174340069293976 + <_> + + <_> + + + + <_>11 9 9 6 -1. + <_>14 9 3 6 3. + 0 + -0.0376890003681183 + 0.5468310117721558 + 0.0182199999690056 + <_> + + <_> + + + + <_>5 10 6 9 -1. + <_>7 10 2 9 3. + 0 + -0.0241449996829033 + 0.6835209727287293 + -0.1965020000934601 + -3.5645289421081543 + 11 + -1 + <_> + + + <_> + + <_> + + + + <_>4 7 5 12 -1. + <_>4 11 5 4 3. + 0 + 0.0274449996650219 + -0.8998420238494873 + 0.5187649726867676 + <_> + + <_> + + + + <_>2 0 21 6 -1. + <_>9 0 7 6 3. + 0 + 0.1155410036444664 + -0.5652440190315247 + 0.7055130004882813 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -0.0222970005124807 + 0.3607999980449677 + -0.6686459779739380 + <_> + + <_> + + + + <_>9 0 6 15 -1. + <_>11 0 2 15 3. + 0 + 0.0133250001817942 + -0.5557339787483215 + 0.3578999936580658 + <_> + + <_> + + + + <_>2 2 18 2 -1. + <_>2 3 18 1 2. + 0 + -3.8060001097619534e-003 + -1.0713000297546387 + 0.1885000020265579 + <_> + + <_> + + + + <_>8 17 8 6 -1. + <_>8 20 8 3 2. + 0 + -2.6819999329745770e-003 + -0.7158430218696594 + 0.2634449899196625 + <_> + + <_> + + + + <_>3 0 18 2 -1. + <_>3 1 18 1 2. + 0 + 3.3819999080151320e-003 + -0.4693079888820648 + 0.2665840089321137 + <_> + + <_> + + + + <_>8 0 9 6 -1. + <_>11 0 3 6 3. + 0 + 0.0376430004835129 + 0.2109870016574860 + -1.0804339647293091 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -0.0138619998469949 + 0.6691200137138367 + -0.2794280052185059 + <_> + + <_> + + + + <_>6 7 12 5 -1. + <_>10 7 4 5 3. + 0 + -2.7350001037120819e-003 + -0.9533230066299439 + 0.2405129969120026 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>2 3 2 9 3. + 0 + -0.0383369997143745 + 0.8143280148506165 + -0.2491939961910248 + <_> + + <_> + + + + <_>20 2 4 9 -1. + <_>20 2 2 9 2. + 0 + -0.0346979983150959 + 1.2330100536346436 + 6.8600000813603401e-003 + <_> + + <_> + + + + <_>0 2 4 9 -1. + <_>2 2 2 9 2. + 0 + 0.0233609993010759 + -0.3079470098018646 + 0.7071449756622315 + <_> + + <_> + + + + <_>0 1 24 4 -1. + <_>12 1 12 2 2. + <_>0 3 12 2 2. + 0 + 0.0350579991936684 + 0.2120590060949326 + -1.4399830102920532 + <_> + + <_> + + + + <_>0 16 9 6 -1. + <_>0 18 9 2 3. + 0 + -0.0132569996640086 + -0.9026070237159729 + 0.0486100018024445 + <_> + + <_> + + + + <_>14 13 9 6 -1. + <_>14 15 9 2 3. + 0 + 0.0127400001510978 + 0.2265519946813583 + -0.4464380145072937 + <_> + + <_> + + + + <_>0 15 19 3 -1. + <_>0 16 19 1 3. + 0 + 3.6400000099092722e-003 + -0.3981789946556091 + 0.3466539978981018 + <_> + + <_> + + + + <_>1 5 22 12 -1. + <_>12 5 11 6 2. + <_>1 11 11 6 2. + 0 + 0.1006470024585724 + 0.1838359981775284 + -1.3410769701004028 + <_> + + <_> + + + + <_>5 13 6 6 -1. + <_>8 13 3 6 2. + 0 + 0. + 0.1553640067577362 + -0.5158249735832214 + <_> + + <_> + + + + <_>4 2 20 3 -1. + <_>4 3 20 1 3. + 0 + 0.0117089999839664 + 0.2165140062570572 + -0.7270519733428955 + <_> + + <_> + + + + <_>8 14 6 10 -1. + <_>10 14 2 10 3. + 0 + -0.0359649993479252 + -1.4789500236511230 + -0.0243170000612736 + <_> + + <_> + + + + <_>6 12 16 6 -1. + <_>14 12 8 3 2. + <_>6 15 8 3 2. + 0 + -0.0212360005825758 + -0.1684409976005554 + 0.1952659934759140 + <_> + + <_> + + + + <_>2 13 8 9 -1. + <_>2 16 8 3 3. + 0 + 0.0148740001022816 + 0.0373359993100166 + -0.8755729794502258 + <_> + + <_> + + + + <_>11 8 6 14 -1. + <_>14 8 3 7 2. + <_>11 15 3 7 2. + 0 + -5.1409997977316380e-003 + 0.3346650004386902 + -0.2410970032215118 + <_> + + <_> + + + + <_>2 12 16 6 -1. + <_>2 12 8 3 2. + <_>10 15 8 3 2. + 0 + 0.0234500002115965 + 5.5320002138614655e-003 + -1.2509720325469971 + <_> + + <_> + + + + <_>5 16 16 8 -1. + <_>5 20 16 4 2. + 0 + -0.0250620003789663 + 0.4521239995956421 + -0.0844699963927269 + <_> + + <_> + + + + <_>9 1 4 12 -1. + <_>9 7 4 6 2. + 0 + -7.7400001464411616e-004 + 0.1524990051984787 + -0.4848650097846985 + <_> + + <_> + + + + <_>8 2 8 10 -1. + <_>12 2 4 5 2. + <_>8 7 4 5 2. + 0 + -0.0404839999973774 + -1.3024920225143433 + 0.1798350065946579 + <_> + + <_> + + + + <_>6 6 12 6 -1. + <_>6 6 6 3 2. + <_>12 9 6 3 2. + 0 + 0.0281709991395473 + -0.2441090047359467 + 0.6227110028266907 + <_> + + <_> + + + + <_>10 7 6 9 -1. + <_>12 7 2 9 3. + 0 + 0.0456929989159107 + 0.0281220003962517 + 0.9239439964294434 + <_> + + <_> + + + + <_>0 0 8 12 -1. + <_>0 0 4 6 2. + <_>4 6 4 6 2. + 0 + 0.0397070012986660 + -0.2233279943466187 + 0.7767400145530701 + <_> + + <_> + + + + <_>18 8 6 9 -1. + <_>18 11 6 3 3. + 0 + 0.0505170002579689 + 0.2031999975442886 + -1.0895930528640747 + <_> + + <_> + + + + <_>2 12 6 6 -1. + <_>5 12 3 6 2. + 0 + -0.0172669999301434 + 0.6859840154647827 + -0.2330449968576431 + <_> + + <_> + + + + <_>3 21 21 3 -1. + <_>10 21 7 3 3. + 0 + 0.0801860019564629 + -0.0102920001372695 + 0.6188110113143921 + <_> + + <_> + + + + <_>2 0 16 6 -1. + <_>2 3 16 3 2. + 0 + 0.0976760014891624 + -0.2007029950618744 + 1.0088349580764771 + <_> + + <_> + + + + <_>13 6 7 6 -1. + <_>13 9 7 3 2. + 0 + -0.0155720002949238 + 0.4761529862880707 + 0.0456239990890026 + <_> + + <_> + + + + <_>6 4 4 14 -1. + <_>6 11 4 7 2. + 0 + -0.0153050003573298 + -1.1077369451522827 + 4.5239999890327454e-003 + <_> + + <_> + + + + <_>9 7 6 9 -1. + <_>11 7 2 9 3. + 0 + -0.0164850000292063 + 1.0152939558029175 + 0.0163279995322227 + <_> + + <_> + + + + <_>7 8 6 14 -1. + <_>7 8 3 7 2. + <_>10 15 3 7 2. + 0 + -0.0261419992893934 + 0.4172329902648926 + -0.2864550054073334 + <_> + + <_> + + + + <_>18 8 4 16 -1. + <_>18 16 4 8 2. + 0 + 8.8679995387792587e-003 + 0.2140499949455261 + -0.1677280068397522 + <_> + + <_> + + + + <_>9 14 6 10 -1. + <_>11 14 2 10 3. + 0 + -0.0268869996070862 + -1.1564220190048218 + -0.0103240003809333 + <_> + + <_> + + + + <_>6 11 12 5 -1. + <_>10 11 4 5 3. + 0 + 7.7789998613297939e-003 + 0.3535949885845184 + -0.2961130142211914 + <_> + + <_> + + + + <_>0 12 23 3 -1. + <_>0 13 23 1 3. + 0 + -0.0159740000963211 + -1.5374109745025635 + -0.0299580004066229 + <_> + + <_> + + + + <_>13 0 6 12 -1. + <_>15 0 2 12 3. + 0 + 0.0208669994026423 + 0.2024410068988800 + -0.7127019762992859 + <_> + + <_> + + + + <_>0 10 12 5 -1. + <_>4 10 4 5 3. + 0 + 0.0854820013046265 + -0.0259329993277788 + -1.5156569480895996 + <_> + + <_> + + + + <_>13 2 10 4 -1. + <_>13 4 10 2 2. + 0 + 0.0238729994744062 + 0.1680340021848679 + -0.3880620002746582 + <_> + + <_> + + + + <_>5 0 6 12 -1. + <_>7 0 2 12 3. + 0 + -0.0391050018370152 + -1.1958349943161011 + -0.0203610006719828 + <_> + + <_> + + + + <_>11 6 9 6 -1. + <_>14 6 3 6 3. + 0 + -0.0779469981789589 + -1.0898950099945068 + 0.1453029960393906 + <_> + + <_> + + + + <_>4 6 9 6 -1. + <_>7 6 3 6 3. + 0 + -0.0168760009109974 + 0.2804970145225525 + -0.4133630096912384 + <_> + + <_> + + + + <_>6 11 18 13 -1. + <_>12 11 6 13 3. + 0 + 0.1187560036778450 + -0.0434909984469414 + 0.4126369953155518 + <_> + + <_> + + + + <_>0 11 18 13 -1. + <_>6 11 6 13 3. + 0 + 0.1562419980764389 + -0.2642959952354431 + 0.5512779951095581 + <_> + + <_> + + + + <_>12 16 12 6 -1. + <_>16 16 4 6 3. + 0 + -0.0459080003201962 + 0.6018919944763184 + 0.0189210008829832 + <_> + + <_> + + + + <_>0 6 21 3 -1. + <_>0 7 21 1 3. + 0 + -0.0103099998086691 + 0.3815299868583679 + -0.2950789928436279 + <_> + + <_> + + + + <_>12 16 12 6 -1. + <_>16 16 4 6 3. + 0 + 0.0957690030336380 + 0.1324650049209595 + -0.4626680016517639 + <_> + + <_> + + + + <_>5 7 6 14 -1. + <_>5 14 6 7 2. + 0 + 0.0136869996786118 + 0.1173869967460632 + -0.5166410207748413 + <_> + + <_> + + + + <_>5 10 19 2 -1. + <_>5 11 19 1 2. + 0 + 2.3990001063793898e-003 + -0.3400759994983673 + 0.2095350027084351 + <_> + + <_> + + + + <_>5 4 14 4 -1. + <_>5 6 14 2 2. + 0 + 0.0332649983465672 + -0.1705279946327210 + 1.4366799592971802 + <_> + + <_> + + + + <_>3 18 18 4 -1. + <_>9 18 6 4 3. + 0 + -0.0332060009241104 + 0.6129570007324219 + -0.0415499992668629 + <_> + + <_> + + + + <_>7 0 4 9 -1. + <_>9 0 2 9 2. + 0 + 2.7979998849332333e-003 + -0.4855430126190186 + 0.1337269991636276 + <_> + + <_> + + + + <_>13 3 11 4 -1. + <_>13 5 11 2 2. + 0 + -0.0657920017838478 + -4.0257668495178223 + 0.1087670028209686 + <_> + + <_> + + + + <_>2 0 9 6 -1. + <_>5 0 3 6 3. + 0 + 2.1430000197142363e-003 + -0.3917999863624573 + 0.2242709994316101 + <_> + + <_> + + + + <_>19 1 4 23 -1. + <_>19 1 2 23 2. + 0 + 0.0223639998584986 + -0.0864299982786179 + 0.3778519928455353 + <_> + + <_> + + + + <_>1 1 4 23 -1. + <_>3 1 2 23 2. + 0 + -0.0574100017547607 + 1.1454069614410400 + -0.1973659992218018 + <_> + + <_> + + + + <_>5 16 18 3 -1. + <_>5 17 18 1 3. + 0 + 6.6550001502037048e-003 + -0.0211050007492304 + 0.5845339894294739 + <_> + + <_> + + + + <_>0 3 11 4 -1. + <_>0 5 11 2 2. + 0 + 0.0123269995674491 + 0.0378170013427734 + -0.6698700189590454 + <_> + + <_> + + + + <_>2 16 20 3 -1. + <_>2 17 20 1 3. + 0 + -8.1869997084140778e-003 + 0.5636600255966187 + -0.0768779963254929 + <_> + + <_> + + + + <_>5 3 13 4 -1. + <_>5 5 13 2 2. + 0 + 0.0366810001432896 + -0.1734330058097839 + 1.1670149564743042 + <_> + + <_> + + + + <_>1 9 22 15 -1. + <_>1 9 11 15 2. + 0 + -0.4022040069103241 + 1.2640819549560547 + 0.0433989986777306 + <_> + + <_> + + + + <_>3 4 14 3 -1. + <_>10 4 7 3 2. + 0 + -0.0221260003745556 + 0.6697810292243958 + -0.2160529941320419 + <_> + + <_> + + + + <_>8 7 10 4 -1. + <_>8 7 5 4 2. + 0 + -0.0131569998338819 + -0.4119859933853149 + 0.2021500021219254 + <_> + + <_> + + + + <_>6 7 10 4 -1. + <_>11 7 5 4 2. + 0 + -0.0128600001335144 + -0.9158269762992859 + 0.0392329990863800 + <_> + + <_> + + + + <_>10 4 6 9 -1. + <_>12 4 2 9 3. + 0 + 0.0216279998421669 + 3.8719999138265848e-003 + 0.3566820025444031 + <_> + + <_> + + + + <_>1 12 9 6 -1. + <_>4 12 3 6 3. + 0 + 0.0118960002437234 + -0.3730390071868897 + 0.1923509985208511 + <_> + + <_> + + + + <_>8 3 8 10 -1. + <_>12 3 4 5 2. + <_>8 8 4 5 2. + 0 + -0.0195489991456270 + -0.4237489998340607 + 0.2442959994077683 + <_> + + <_> + + + + <_>3 6 16 6 -1. + <_>3 6 8 3 2. + <_>11 9 8 3 2. + 0 + 0.0644449964165688 + -0.1655890047550201 + 1.2697030305862427 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>5 9 14 3 2. + 0 + 0.1089849993586540 + 0.1489430069923401 + -2.1534640789031982 + <_> + + <_> + + + + <_>4 3 9 6 -1. + <_>4 5 9 2 3. + 0 + -0.0340779982507229 + 1.3779460191726685 + -0.1619849950075150 + <_> + + <_> + + + + <_>6 3 18 2 -1. + <_>6 4 18 1 2. + 0 + -3.7489999085664749e-003 + -0.3382860124111176 + 0.2115290015935898 + <_> + + <_> + + + + <_>7 6 9 6 -1. + <_>10 6 3 6 3. + 0 + -0.0109719997271895 + 0.7651789784431458 + -0.1969259977340698 + <_> + + <_> + + + + <_>0 1 24 3 -1. + <_>0 2 24 1 3. + 0 + -0.0114850001409650 + -0.6927120089530945 + 0.2165710031986237 + <_> + + <_> + + + + <_>0 17 10 6 -1. + <_>0 19 10 2 3. + 0 + 0.0259840004146099 + -0.0119839999824762 + -0.9969729781150818 + <_> + + <_> + + + + <_>3 18 18 3 -1. + <_>3 19 18 1 3. + 0 + 4.2159999720752239e-003 + -0.1020570024847984 + 0.4888440072536469 + <_> + + <_> + + + + <_>2 5 6 16 -1. + <_>2 5 3 8 2. + <_>5 13 3 8 2. + 0 + -0.0476970002055168 + 1.0666010379791260 + -0.1757629960775375 + <_> + + <_> + + + + <_>7 6 11 6 -1. + <_>7 8 11 2 3. + 0 + 4.0300001273863018e-004 + 0.1852480024099350 + -0.7479000091552734 + <_> + + <_> + + + + <_>5 2 12 22 -1. + <_>5 13 12 11 2. + 0 + 0.1153960004448891 + -0.2201970070600510 + 0.5450999736785889 + <_> + + <_> + + + + <_>10 7 4 10 -1. + <_>10 12 4 5 2. + 0 + 0.0160210002213717 + 0.2548750042915344 + -0.5074009895324707 + <_> + + <_> + + + + <_>9 0 4 18 -1. + <_>9 6 4 6 3. + 0 + 0.0566320009529591 + -0.0112560000270605 + -0.9596809744834900 + <_> + + <_> + + + + <_>18 8 6 9 -1. + <_>18 11 6 3 3. + 0 + -0.0107260001823306 + -0.2854470014572144 + 0.1699479967355728 + <_> + + <_> + + + + <_>4 7 15 10 -1. + <_>9 7 5 10 3. + 0 + 0.1242000013589859 + -0.0361399985849857 + -1.3132710456848145 + <_> + + <_> + + + + <_>10 5 6 9 -1. + <_>12 5 2 9 3. + 0 + -5.3799999877810478e-003 + 0.3309270143508911 + 0.0133079998195171 + <_> + + <_> + + + + <_>9 9 6 10 -1. + <_>11 9 2 10 3. + 0 + 0.0119080003350973 + -0.3483029901981354 + 0.2404190003871918 + <_> + + <_> + + + + <_>11 14 6 10 -1. + <_>13 14 2 10 3. + 0 + -0.0430079996585846 + -1.4390469789505005 + 0.1559959948062897 + <_> + + <_> + + + + <_>7 14 6 10 -1. + <_>9 14 2 10 3. + 0 + -0.0331499986350536 + -1.1805850267410278 + -0.0123479999601841 + <_> + + <_> + + + + <_>4 8 16 9 -1. + <_>4 11 16 3 3. + 0 + -0.0213419999927282 + 2.2119441032409668 + 0.0627370029687881 + <_> + + <_> + + + + <_>2 11 20 3 -1. + <_>2 12 20 1 3. + 0 + -0.0122189996764064 + -1.8709750175476074 + -0.0454999990761280 + <_> + + <_> + + + + <_>13 0 4 13 -1. + <_>13 0 2 13 2. + 0 + -0.0168609991669655 + -0.7691270112991333 + 0.1533000022172928 + <_> + + <_> + + + + <_>7 0 4 13 -1. + <_>9 0 2 13 2. + 0 + -2.4999999441206455e-003 + -0.6298739910125732 + 0.0516000017523766 + <_> + + <_> + + + + <_>3 1 18 7 -1. + <_>9 1 6 7 3. + 0 + -0.0450379997491837 + 0.8542889952659607 + 6.2600001692771912e-003 + <_> + + <_> + + + + <_>1 11 6 9 -1. + <_>1 14 6 3 3. + 0 + 0.0390579998493195 + -0.0324589982628822 + -1.3325669765472412 + <_> + + <_> + + + + <_>8 18 9 6 -1. + <_>8 20 9 2 3. + 0 + 6.6720000468194485e-003 + -0.1942359954118729 + 0.3732869923114777 + <_> + + <_> + + + + <_>3 9 15 6 -1. + <_>3 11 15 2 3. + 0 + -0.0163610000163317 + 2.0605869293212891 + -0.1504269987344742 + <_> + + <_> + + + + <_>5 10 19 2 -1. + <_>5 11 19 1 2. + 0 + 6.1719999648630619e-003 + -0.1161099970340729 + 0.2545540034770966 + <_> + + <_> + + + + <_>8 6 7 16 -1. + <_>8 14 7 8 2. + 0 + 0.0457220003008842 + -0.0163400005549192 + -1.0449140071868896 + <_> + + <_> + + + + <_>9 14 9 6 -1. + <_>9 16 9 2 3. + 0 + 4.1209999471902847e-003 + -0.0419979989528656 + 0.3968099951744080 + <_> + + <_> + + + + <_>0 7 8 12 -1. + <_>0 11 8 4 3. + 0 + -1.7800000205170363e-004 + -0.6642259955406189 + 0.0334430001676083 + <_> + + <_> + + + + <_>6 4 18 3 -1. + <_>6 5 18 1 3. + 0 + 7.1109998971223831e-003 + -0.0582319982349873 + 0.3785730004310608 + <_> + + <_> + + + + <_>0 16 12 6 -1. + <_>4 16 4 6 3. + 0 + -0.0498640015721321 + 0.6101940274238586 + -0.2100570052862167 + <_> + + <_> + + + + <_>13 13 9 4 -1. + <_>13 15 9 2 2. + 0 + -0.0250119995325804 + -0.5710009932518005 + 0.1784839928150177 + <_> + + <_> + + + + <_>5 8 14 14 -1. + <_>5 8 7 7 2. + <_>12 15 7 7 2. + 0 + 0.0309399999678135 + 0.0563630014657974 + -0.6473100185394287 + <_> + + <_> + + + + <_>1 16 22 6 -1. + <_>12 16 11 3 2. + <_>1 19 11 3 2. + 0 + 0.0462710000574589 + 0.1748239994049072 + -0.9890940189361572 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + -3.1870000530034304e-003 + -0.6680480241775513 + 0.0322670005261898 + <_> + + <_> + + + + <_>9 5 10 10 -1. + <_>14 5 5 5 2. + <_>9 10 5 5 2. + 0 + -0.0243519991636276 + 0.2944490015506744 + -1.3599999947473407e-003 + <_> + + <_> + + + + <_>5 5 10 10 -1. + <_>5 5 5 5 2. + <_>10 10 5 5 2. + 0 + 0.0119740003719926 + -0.2834509909152985 + 0.4717119932174683 + <_> + + <_> + + + + <_>4 6 16 6 -1. + <_>12 6 8 3 2. + <_>4 9 8 3 2. + 0 + 0.0130700003355742 + -0.1083460003137589 + 0.5719329714775085 + <_> + + <_> + + + + <_>0 7 6 9 -1. + <_>0 10 6 3 3. + 0 + 0.0591630004346371 + -0.0509390011429787 + -1.9059720039367676 + <_> + + <_> + + + + <_>16 10 8 14 -1. + <_>20 10 4 7 2. + <_>16 17 4 7 2. + 0 + -0.0410949997603893 + 0.4510459899902344 + -9.7599998116493225e-003 + <_> + + <_> + + + + <_>9 12 6 12 -1. + <_>9 18 6 6 2. + 0 + -0.0839890018105507 + -2.0349199771881104 + -0.0510190017521381 + <_> + + <_> + + + + <_>8 10 8 12 -1. + <_>12 10 4 6 2. + <_>8 16 4 6 2. + 0 + 0.0446190014481544 + 0.1704110056161881 + -1.2278720140457153 + <_> + + <_> + + + + <_>8 0 4 9 -1. + <_>10 0 2 9 2. + 0 + 0.0244190003722906 + -0.0217969994992018 + -1.0822949409484863 + <_> + + <_> + + + + <_>10 4 8 16 -1. + <_>14 4 4 8 2. + <_>10 12 4 8 2. + 0 + -4.3870001100003719e-003 + 0.3046669960021973 + -0.3706659972667694 + <_> + + <_> + + + + <_>7 10 10 6 -1. + <_>7 12 10 2 3. + 0 + 0.0246079992502928 + -0.3116950094699860 + 0.2365729957818985 + <_> + + <_> + + + + <_>5 6 14 14 -1. + <_>12 6 7 7 2. + <_>5 13 7 7 2. + 0 + -0.0851820036768913 + -1.7982350587844849 + 0.1525429934263229 + <_> + + <_> + + + + <_>2 11 20 2 -1. + <_>2 12 20 1 2. + 0 + 0.0218449998646975 + -0.0518880002200603 + -1.9017189741134644 + <_> + + <_> + + + + <_>18 8 4 16 -1. + <_>18 16 4 8 2. + 0 + -0.0168290007859468 + 0.2102590054273605 + 0.0216569993644953 + <_> + + <_> + + + + <_>1 11 12 10 -1. + <_>1 11 6 5 2. + <_>7 16 6 5 2. + 0 + 0.0325479991734028 + -0.2029259949922562 + 0.6094400286674500 + <_> + + <_> + + + + <_>6 9 12 4 -1. + <_>6 11 12 2 2. + 0 + 2.4709999561309814e-003 + -0.9537119865417481 + 0.1856839954853058 + <_> + + <_> + + + + <_>9 12 6 7 -1. + <_>12 12 3 7 2. + 0 + 0.0554159991443157 + -0.1440529972314835 + 2.1506340503692627 + <_> + + <_> + + + + <_>10 4 8 16 -1. + <_>14 4 4 8 2. + <_>10 12 4 8 2. + 0 + -0.1063549965620041 + -1.0911970138549805 + 0.1322800070047379 + <_> + + <_> + + + + <_>6 4 8 16 -1. + <_>6 4 4 8 2. + <_>10 12 4 8 2. + 0 + -7.9889995977282524e-003 + 0.1025340035557747 + -0.5174490213394165 + <_> + + <_> + + + + <_>8 9 9 6 -1. + <_>11 9 3 6 3. + 0 + 0.0755679979920387 + 0.0589650012552738 + 1.2354209423065186 + <_> + + <_> + + + + <_>1 5 16 12 -1. + <_>1 5 8 6 2. + <_>9 11 8 6 2. + 0 + -0.0928059965372086 + -1.3431650400161743 + -0.0344629995524883 + <_> + + <_> + + + + <_>9 9 6 8 -1. + <_>9 9 3 8 2. + 0 + 0.0494319982826710 + 0.0496019981801510 + 1.6054730415344238 + <_> + + <_> + + + + <_>6 0 3 18 -1. + <_>7 0 1 18 3. + 0 + -0.0117729995399714 + -1.0261050462722778 + -4.1559999808669090e-003 + <_> + + <_> + + + + <_>17 9 5 14 -1. + <_>17 16 5 7 2. + 0 + 0.0858860015869141 + 0.0846429988741875 + 0.9522079825401306 + <_> + + <_> + + + + <_>2 9 5 14 -1. + <_>2 16 5 7 2. + 0 + 0.0810310021042824 + -0.1468710005283356 + 1.9359990358352661 + -3.7025990486145020 + 12 + -1 + <_> + + + <_> + + <_> + + + + <_>7 4 10 6 -1. + <_>7 7 10 3 2. + 0 + -0.0338409990072250 + 0.6588950157165527 + -0.6975529789924622 + <_> + + <_> + + + + <_>1 3 23 18 -1. + <_>1 9 23 6 3. + 0 + 0.0154100004583597 + -0.9072840213775635 + 0.3047859966754913 + <_> + + <_> + + + + <_>1 1 21 3 -1. + <_>8 1 7 3 3. + 0 + 0.0549059994518757 + -0.4977479875087738 + 0.5713260173797607 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0213900003582239 + -0.4256519973278046 + 0.5809680223464966 + <_> + + <_> + + + + <_>3 18 12 6 -1. + <_>3 18 6 3 2. + <_>9 21 6 3 2. + 0 + 7.8849997371435165e-003 + -0.4790599942207336 + 0.4301649928092957 + <_> + + <_> + + + + <_>16 8 8 16 -1. + <_>20 8 4 8 2. + <_>16 16 4 8 2. + 0 + -0.0375449992716312 + 0.5086159706115723 + -0.1998589932918549 + <_> + + <_> + + + + <_>0 19 24 4 -1. + <_>8 19 8 4 3. + 0 + 0.1592579931020737 + -0.2326360046863556 + 1.0993319749832153 + <_> + + <_> + + + + <_>16 8 8 16 -1. + <_>20 8 4 8 2. + <_>16 16 4 8 2. + 0 + -0.0689399987459183 + 0.4056900143623352 + 0.0568550005555153 + <_> + + <_> + + + + <_>0 8 8 16 -1. + <_>0 8 4 8 2. + <_>4 16 4 8 2. + 0 + -0.0336950011551380 + 0.4513280093669891 + -0.3333280086517334 + <_> + + <_> + + + + <_>8 12 8 10 -1. + <_>8 17 8 5 2. + 0 + -0.0633149966597557 + -0.8501570224761963 + 0.2234169989824295 + <_> + + <_> + + + + <_>5 7 5 8 -1. + <_>5 11 5 4 2. + 0 + 7.3699997738003731e-003 + -0.9308220148086548 + 0.0592169985175133 + <_> + + <_> + + + + <_>4 1 19 2 -1. + <_>4 2 19 1 2. + 0 + -9.5969997346401215e-003 + -1.2794899940490723 + 0.1844729930162430 + <_> + + <_> + + + + <_>0 12 24 9 -1. + <_>8 12 8 9 3. + 0 + -0.1306799948215485 + 0.5842689871788025 + -0.2600719928741455 + <_> + + <_> + + + + <_>6 0 13 8 -1. + <_>6 4 13 4 2. + 0 + 0.0574029982089996 + -0.0537890009582043 + 0.7117559909820557 + <_> + + <_> + + + + <_>0 0 24 3 -1. + <_>0 1 24 1 3. + 0 + -7.2340001352131367e-003 + -0.8696219921112061 + 0.0752149969339371 + <_> + + <_> + + + + <_>20 3 4 11 -1. + <_>20 3 2 11 2. + 0 + 0.0310989990830421 + -0.0750069990754128 + 0.9078159928321838 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + 0.0358540005981922 + -0.2479549944400787 + 0.7227209806442261 + <_> + + <_> + + + + <_>6 11 12 8 -1. + <_>12 11 6 4 2. + <_>6 15 6 4 2. + 0 + -0.0315349996089935 + -1.1238329410552979 + 0.2098830044269562 + <_> + + <_> + + + + <_>0 8 12 6 -1. + <_>0 8 6 3 2. + <_>6 11 6 3 2. + 0 + -0.0194370001554489 + -1.4499390125274658 + -0.0151000004261732 + <_> + + <_> + + + + <_>6 17 18 3 -1. + <_>6 18 18 1 3. + 0 + -7.2420001961290836e-003 + 0.5386490225791931 + -0.1137539967894554 + <_> + + <_> + + + + <_>0 14 9 6 -1. + <_>0 16 9 2 3. + 0 + 8.1639997661113739e-003 + 0.0668890029191971 + -0.7687289714813232 + <_> + + <_> + + + + <_>20 3 4 9 -1. + <_>20 3 2 9 2. + 0 + -0.0436530001461506 + 1.1413530111312866 + 0.0402170009911060 + <_> + + <_> + + + + <_>0 3 4 9 -1. + <_>2 3 2 9 2. + 0 + 0.0265699997544289 + -0.2471909970045090 + 0.5929509997367859 + <_> + + <_> + + + + <_>15 0 9 19 -1. + <_>18 0 3 19 3. + 0 + 0.0322169996798038 + -0.0400249995291233 + 0.3268800079822540 + <_> + + <_> + + + + <_>0 0 9 19 -1. + <_>3 0 3 19 3. + 0 + -0.0722360014915466 + 0.5872939825057983 + -0.2539600133895874 + <_> + + <_> + + + + <_>13 11 6 8 -1. + <_>13 11 3 8 2. + 0 + 0.0314249992370605 + 0.1531510055065155 + -0.5604209899902344 + <_> + + <_> + + + + <_>5 11 6 8 -1. + <_>8 11 3 8 2. + 0 + -4.7699999413453043e-004 + 0.1695889979600906 + -0.5262669920921326 + <_> + + <_> + + + + <_>5 11 19 3 -1. + <_>5 12 19 1 3. + 0 + 2.7189999818801880e-003 + -0.1494459956884384 + 0.2965869903564453 + <_> + + <_> + + + + <_>3 20 18 4 -1. + <_>9 20 6 4 3. + 0 + 0.0328750014305115 + -0.3994350135326386 + 0.2515659928321838 + <_> + + <_> + + + + <_>6 6 16 6 -1. + <_>6 8 16 2 3. + 0 + -0.0145530002191663 + 0.2797259986400604 + -0.4720380008220673 + <_> + + <_> + + + + <_>6 0 9 6 -1. + <_>9 0 3 6 3. + 0 + 0.0380179993808270 + -2.9200001154094934e-003 + -1.1300059556961060 + <_> + + <_> + + + + <_>10 3 4 14 -1. + <_>10 10 4 7 2. + 0 + 2.8659999370574951e-003 + 0.4111180007457733 + -0.2622080147266388 + <_> + + <_> + + + + <_>1 5 15 12 -1. + <_>1 11 15 6 2. + 0 + -0.0416069999337196 + -1.4293819665908813 + -0.0191329997032881 + <_> + + <_> + + + + <_>11 12 8 5 -1. + <_>11 12 4 5 2. + 0 + -0.0248029995709658 + -0.2501359879970551 + 0.1597869992256165 + <_> + + <_> + + + + <_>5 0 6 9 -1. + <_>7 0 2 9 3. + 0 + 0.0100980000570416 + 0.0437389984726906 + -0.6998609900474548 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0209470000118017 + -0.9413779973983765 + 0.2320400029420853 + <_> + + <_> + + + + <_>5 5 12 8 -1. + <_>5 5 6 4 2. + <_>11 9 6 4 2. + 0 + 0.0224580001085997 + -0.2718580067157745 + 0.4531919956207275 + <_> + + <_> + + + + <_>13 12 11 6 -1. + <_>13 14 11 2 3. + 0 + -0.0371109992265701 + -1.0314660072326660 + 0.1442179977893829 + <_> + + <_> + + + + <_>0 13 21 3 -1. + <_>0 14 21 1 3. + 0 + -0.0106480000540614 + 0.6310700178146362 + -0.2552079856395721 + <_> + + <_> + + + + <_>8 1 8 12 -1. + <_>12 1 4 6 2. + <_>8 7 4 6 2. + 0 + 0.0554229989647865 + 0.1620659977197647 + -1.7722640037536621 + <_> + + <_> + + + + <_>1 0 6 12 -1. + <_>1 0 3 6 2. + <_>4 6 3 6 2. + 0 + 0.0216019991785288 + -0.2501609921455383 + 0.5411980152130127 + <_> + + <_> + + + + <_>2 2 21 2 -1. + <_>2 3 21 1 2. + 0 + 8.7000000348780304e-005 + -0.2900890111923218 + 0.3350799977779388 + <_> + + <_> + + + + <_>2 2 19 3 -1. + <_>2 3 19 1 3. + 0 + 0.0144060002639890 + -7.8840004280209541e-003 + -1.1677219867706299 + <_> + + <_> + + + + <_>17 10 6 14 -1. + <_>20 10 3 7 2. + <_>17 17 3 7 2. + 0 + 0.1077739968895912 + 0.1129200011491776 + -2.4940319061279297 + <_> + + <_> + + + + <_>1 10 6 14 -1. + <_>1 10 3 7 2. + <_>4 17 3 7 2. + 0 + 0.0359439998865128 + -0.1948059946298599 + 0.9575750231742859 + <_> + + <_> + + + + <_>7 6 14 14 -1. + <_>14 6 7 7 2. + <_>7 13 7 7 2. + 0 + -3.9510000497102737e-003 + 0.3092780113220215 + -0.2553020119667053 + <_> + + <_> + + + + <_>0 12 9 6 -1. + <_>0 14 9 2 3. + 0 + 0.0209420006722212 + -7.6319999061524868e-003 + -1.0086350440979004 + <_> + + <_> + + + + <_>15 14 8 9 -1. + <_>15 17 8 3 3. + 0 + -0.0298779997974634 + -0.4602769911289215 + 0.1950719952583313 + <_> + + <_> + + + + <_>1 1 22 4 -1. + <_>1 1 11 2 2. + <_>12 3 11 2 2. + 0 + 0.0259719993919134 + -0.0121879996731877 + -1.0035500526428223 + <_> + + <_> + + + + <_>9 11 9 6 -1. + <_>9 13 9 2 3. + 0 + 0.0106030004099011 + -0.0759690031409264 + 0.4166989922523499 + <_> + + <_> + + + + <_>0 15 18 3 -1. + <_>0 16 18 1 3. + 0 + 8.5819996893405914e-003 + -0.2664859890937805 + 0.3911150097846985 + <_> + + <_> + + + + <_>16 14 7 9 -1. + <_>16 17 7 3 3. + 0 + 0.0212709996849298 + 0.1827390044927597 + -0.3605229854583740 + <_> + + <_> + + + + <_>4 3 16 4 -1. + <_>12 3 8 4 2. + 0 + 0.0745180025696754 + -0.1893839985132217 + 0.9265800118446350 + <_> + + <_> + + + + <_>7 6 12 5 -1. + <_>7 6 6 5 2. + 0 + 4.6569998376071453e-003 + -0.1450619995594025 + 0.3329460024833679 + <_> + + <_> + + + + <_>9 6 4 9 -1. + <_>11 6 2 9 2. + 0 + 1.7119999974966049e-003 + -0.5246400237083435 + 0.0898799970746040 + <_> + + <_> + + + + <_>12 1 4 10 -1. + <_>12 1 2 10 2. + 0 + 9.8500004969537258e-004 + -0.3838199973106384 + 0.2439299970865250 + <_> + + <_> + + + + <_>8 1 4 10 -1. + <_>10 1 2 10 2. + 0 + 0.0282339993864298 + -5.7879998348653316e-003 + -1.2617139816284180 + <_> + + <_> + + + + <_>15 15 6 9 -1. + <_>15 18 6 3 3. + 0 + -0.0326780006289482 + -0.5795329809188843 + 0.1695529967546463 + <_> + + <_> + + + + <_>3 15 6 9 -1. + <_>3 18 6 3 3. + 0 + 0.0225360002368689 + 0.0222810003906488 + -0.8786960244178772 + <_> + + <_> + + + + <_>15 1 3 19 -1. + <_>16 1 1 19 3. + 0 + -0.0216579996049404 + -0.6510850191116333 + 0.1296689957380295 + <_> + + <_> + + + + <_>1 3 6 9 -1. + <_>3 3 2 9 3. + 0 + 7.6799998059868813e-003 + -0.3396520018577576 + 0.2201330065727234 + <_> + + <_> + + + + <_>15 0 3 19 -1. + <_>16 0 1 19 3. + 0 + 0.0145920002833009 + 0.1507730036973953 + -0.5045239925384522 + <_> + + <_> + + + + <_>6 3 12 4 -1. + <_>12 3 6 4 2. + 0 + 0.0278680007904768 + -0.2504529953002930 + 0.4574199914932251 + <_> + + <_> + + + + <_>10 5 4 9 -1. + <_>10 5 2 9 2. + 0 + 5.6940000504255295e-003 + -0.1094850003719330 + 0.5575780272483826 + <_> + + <_> + + + + <_>6 0 3 19 -1. + <_>7 0 1 19 3. + 0 + -0.0100029995664954 + -0.9736629724502564 + 0.0184679999947548 + <_> + + <_> + + + + <_>11 1 3 12 -1. + <_>11 7 3 6 2. + 0 + -4.0719998069107533e-003 + 0.3822219967842102 + -0.1692110002040863 + <_> + + <_> + + + + <_>6 7 10 5 -1. + <_>11 7 5 5 2. + 0 + -0.0225939992815256 + -1.0391089916229248 + 5.1839998923242092e-003 + <_> + + <_> + + + + <_>11 3 3 18 -1. + <_>12 3 1 18 3. + 0 + -0.0395799987018108 + -5.5109229087829590 + 0.1116399988532066 + <_> + + <_> + + + + <_>9 3 6 12 -1. + <_>11 3 2 12 3. + 0 + -0.0175379998981953 + 0.9548580050468445 + -0.1858450025320053 + <_> + + <_> + + + + <_>3 7 19 3 -1. + <_>3 8 19 1 3. + 0 + 9.0300003066658974e-003 + 0.0104360003024340 + 0.8211479783058167 + <_> + + <_> + + + + <_>2 7 18 3 -1. + <_>2 8 18 1 3. + 0 + -7.9539995640516281e-003 + 0.2263289988040924 + -0.3456819951534271 + <_> + + <_> + + + + <_>3 13 18 4 -1. + <_>12 13 9 2 2. + <_>3 15 9 2 2. + 0 + 0.0270910002291203 + 0.1643009930849075 + -1.3926379680633545 + <_> + + <_> + + + + <_>3 5 6 9 -1. + <_>5 5 2 9 3. + 0 + -0.0206259991973639 + -0.8636609911918640 + 2.3880000226199627e-003 + <_> + + <_> + + + + <_>4 1 20 4 -1. + <_>14 1 10 2 2. + <_>4 3 10 2 2. + 0 + -0.0719899982213974 + -2.8192629814147949 + 0.1157049983739853 + <_> + + <_> + + + + <_>0 1 20 4 -1. + <_>0 1 10 2 2. + <_>10 3 10 2 2. + 0 + -0.0269649997353554 + -1.2946130037307739 + -0.0246610008180141 + <_> + + <_> + + + + <_>10 15 6 6 -1. + <_>10 15 3 6 2. + 0 + -0.0473779998719692 + -0.8130639791488648 + 0.1183139979839325 + <_> + + <_> + + + + <_>0 2 24 8 -1. + <_>8 2 8 8 3. + 0 + -0.1089560016989708 + 0.6593790054321289 + -0.2084390074014664 + <_> + + <_> + + + + <_>5 5 18 3 -1. + <_>5 6 18 1 3. + 0 + 0.0135740004479885 + 7.4240001849830151e-003 + 0.5315219759941101 + <_> + + <_> + + + + <_>8 15 6 6 -1. + <_>11 15 3 6 2. + 0 + -6.6920001991093159e-003 + 0.3065580129623413 + -0.3108429908752441 + <_> + + <_> + + + + <_>11 12 8 5 -1. + <_>11 12 4 5 2. + 0 + -3.9070001803338528e-003 + 0.2557649910449982 + -0.0529320016503334 + <_> + + <_> + + + + <_>5 12 8 5 -1. + <_>9 12 4 5 2. + 0 + -0.0376130007207394 + -1.4350049495697021 + -0.0154480002820492 + <_> + + <_> + + + + <_>5 0 14 6 -1. + <_>5 2 14 2 3. + 0 + 8.6329998448491096e-003 + -0.1688439995050430 + 0.4212490022182465 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0320970006287098 + -0.6497939825057983 + 0.0411100015044212 + <_> + + <_> + + + + <_>10 7 5 12 -1. + <_>10 11 5 4 3. + 0 + 0.0584959983825684 + -0.0529639981687069 + 0.6336830258369446 + <_> + + <_> + + + + <_>7 9 8 14 -1. + <_>7 9 4 7 2. + <_>11 16 4 7 2. + 0 + -0.0409019999206066 + -0.9210109710693359 + 9.0640000998973846e-003 + <_> + + <_> + + + + <_>1 5 22 6 -1. + <_>12 5 11 3 2. + <_>1 8 11 3 2. + 0 + -0.0199250001460314 + 0.5375999808311462 + -0.0629969984292984 + <_> + + <_> + + + + <_>0 5 6 6 -1. + <_>0 8 6 3 2. + 0 + -4.6020001173019409e-003 + -0.5433350205421448 + 0.0841049998998642 + <_> + + <_> + + + + <_>12 17 9 4 -1. + <_>12 19 9 2 2. + 0 + 0.0168249998241663 + 0.1556369960308075 + -0.4017120003700256 + <_> + + <_> + + + + <_>2 18 19 3 -1. + <_>2 19 19 1 3. + 0 + 9.4790002331137657e-003 + -0.2424529939889908 + 0.5150949954986572 + <_> + + <_> + + + + <_>12 17 9 4 -1. + <_>12 19 9 2 2. + 0 + -0.0195349995046854 + -0.5111839771270752 + 0.1383199989795685 + <_> + + <_> + + + + <_>1 17 18 3 -1. + <_>1 18 18 1 3. + 0 + 0.0107460003346205 + -0.2185499966144562 + 0.6282870173454285 + <_> + + <_> + + + + <_>12 17 9 4 -1. + <_>12 19 9 2 2. + 0 + 0.0379270017147064 + 0.1164029985666275 + -2.7301959991455078 + <_> + + <_> + + + + <_>0 0 24 3 -1. + <_>0 1 24 1 3. + 0 + 0.0163909997791052 + -0.0146359996870160 + -1.0797250270843506 + <_> + + <_> + + + + <_>5 0 14 4 -1. + <_>5 2 14 2 2. + 0 + -0.0197850000113249 + 1.2166420221328735 + 0.0332750007510185 + <_> + + <_> + + + + <_>6 14 9 6 -1. + <_>6 16 9 2 3. + 0 + 0.0110670002177358 + -0.2538830041885376 + 0.4403859972953796 + <_> + + <_> + + + + <_>14 13 6 9 -1. + <_>14 16 6 3 3. + 0 + 5.2479999139904976e-003 + 0.2249680012464523 + -0.2421649992465973 + <_> + + <_> + + + + <_>5 20 13 4 -1. + <_>5 22 13 2 2. + 0 + -0.0111419996246696 + 0.2501809895038605 + -0.3081150054931641 + <_> + + <_> + + + + <_>9 9 6 12 -1. + <_>9 13 6 4 3. + 0 + -0.0106669999659061 + -0.3272910118103027 + 0.2616829872131348 + <_> + + <_> + + + + <_>1 10 21 3 -1. + <_>8 10 7 3 3. + 0 + 0.1054529994726181 + -0.0557500012218952 + -1.9605729579925537 + <_> + + <_> + + + + <_>8 8 9 6 -1. + <_>11 8 3 6 3. + 0 + 0.0548279993236065 + -1.9519999623298645e-003 + 0.7386609911918640 + <_> + + <_> + + + + <_>3 10 9 7 -1. + <_>6 10 3 7 3. + 0 + 0.0177609995007515 + -0.3064720034599304 + 0.2634699940681458 + <_> + + <_> + + + + <_>12 10 10 8 -1. + <_>17 10 5 4 2. + <_>12 14 5 4 2. + 0 + -0.0311859995126724 + -0.2460090070962906 + 0.1708219945430756 + <_> + + <_> + + + + <_>0 15 24 3 -1. + <_>8 15 8 3 3. + 0 + -0.0572960004210472 + 0.4703350067138672 + -0.2604829967021942 + <_> + + <_> + + + + <_>8 5 9 6 -1. + <_>8 7 9 2 3. + 0 + -0.0113120004534721 + 0.3862890005111694 + -0.2881700098514557 + <_> + + <_> + + + + <_>4 13 6 9 -1. + <_>4 16 6 3 3. + 0 + 0.0305920001119375 + -0.0488260015845299 + -1.7638969421386719 + <_> + + <_> + + + + <_>12 17 9 4 -1. + <_>12 19 9 2 2. + 0 + 1.8489999929443002e-003 + 0.2109989970922470 + -0.0259409993886948 + <_> + + <_> + + + + <_>9 12 6 6 -1. + <_>9 15 6 3 2. + 0 + 0.0114190001040697 + -0.1682959944009781 + 1.0278660058975220 + <_> + + <_> + + + + <_>9 9 14 10 -1. + <_>16 9 7 5 2. + <_>9 14 7 5 2. + 0 + 0.0814030021429062 + 0.1153199970722199 + -1.2482399940490723 + <_> + + <_> + + + + <_>1 9 14 10 -1. + <_>1 9 7 5 2. + <_>8 14 7 5 2. + 0 + 0.0534959994256496 + -0.0463039986789227 + -1.7165969610214233 + <_> + + <_> + + + + <_>8 7 9 17 -1. + <_>11 7 3 17 3. + 0 + -0.0239480007439852 + -0.4024659991264343 + 0.2056210041046143 + <_> + + <_> + + + + <_>3 4 6 20 -1. + <_>3 4 3 10 2. + <_>6 14 3 10 2. + 0 + 6.7690000869333744e-003 + -0.3315230011940002 + 0.2068340033292770 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 8 5 4 2. + 0 + -0.0323439985513687 + -0.7263280153274536 + 0.2007350027561188 + <_> + + <_> + + + + <_>10 7 4 9 -1. + <_>12 7 2 9 2. + 0 + 0.0378630012273788 + -0.1563100069761276 + 1.6697460412979126 + <_> + + <_> + + + + <_>10 15 6 9 -1. + <_>12 15 2 9 3. + 0 + 0.0154400002211332 + 0.1948740035295487 + -0.3538419902324677 + <_> + + <_> + + + + <_>3 8 6 16 -1. + <_>3 8 3 8 2. + <_>6 16 3 8 2. + 0 + -0.0443760007619858 + 0.8209360241889954 + -0.1819359958171845 + <_> + + <_> + + + + <_>12 17 9 4 -1. + <_>12 19 9 2 2. + 0 + -0.0231020003557205 + -0.4304409921169281 + 0.1237540021538734 + <_> + + <_> + + + + <_>3 17 9 4 -1. + <_>3 19 9 2 2. + 0 + 0.0194000005722046 + -0.0297260005027056 + -1.1597590446472168 + <_> + + <_> + + + + <_>10 1 9 6 -1. + <_>13 1 3 6 3. + 0 + 0.1038570031523705 + 0.1114989966154099 + -4.6835222244262695 + <_> + + <_> + + + + <_>5 7 4 10 -1. + <_>5 12 4 5 2. + 0 + -0.0189640000462532 + 2.1773819923400879 + -0.1454440057277679 + <_> + + <_> + + + + <_>7 5 12 6 -1. + <_>11 5 4 6 3. + 0 + 0.0387509986758232 + -0.0494460016489029 + 0.3401829898357391 + <_> + + <_> + + + + <_>6 4 9 8 -1. + <_>9 4 3 8 3. + 0 + 0.0227669999003410 + -0.3280299901962280 + 0.3053140044212341 + <_> + + <_> + + + + <_>12 16 10 8 -1. + <_>17 16 5 4 2. + <_>12 20 5 4 2. + 0 + -0.0313570015132427 + 1.1520819664001465 + 0.0273059997707605 + <_> + + <_> + + + + <_>2 16 10 8 -1. + <_>2 16 5 4 2. + <_>7 20 5 4 2. + 0 + 9.6909999847412109e-003 + -0.3879950046539307 + 0.2151259928941727 + <_> + + <_> + + + + <_>0 0 24 4 -1. + <_>12 0 12 2 2. + <_>0 2 12 2 2. + 0 + -0.0492849983274937 + -1.6774909496307373 + 0.1577419936656952 + <_> + + <_> + + + + <_>0 6 9 6 -1. + <_>0 8 9 2 3. + 0 + -0.0395109988749027 + -0.9764789938926697 + -0.0105520002543926 + <_> + + <_> + + + + <_>0 4 24 6 -1. + <_>12 4 12 3 2. + <_>0 7 12 3 2. + 0 + 0.0479979999363422 + 0.2084390074014664 + -0.6899279952049255 + <_> + + <_> + + + + <_>5 0 11 4 -1. + <_>5 2 11 2 2. + 0 + 0.0514229983091354 + -0.1666530072689056 + 1.2149239778518677 + <_> + + <_> + + + + <_>1 1 22 4 -1. + <_>12 1 11 2 2. + <_>1 3 11 2 2. + 0 + 0.0142799997702241 + 0.2362769991159439 + -0.4139679968357086 + <_> + + <_> + + + + <_>9 6 6 18 -1. + <_>9 15 6 9 2. + 0 + -0.0916119962930679 + -0.9283090233802795 + -0.0183450002223253 + <_> + + <_> + + + + <_>2 9 20 4 -1. + <_>2 11 20 2 2. + 0 + 6.5080001950263977e-003 + -0.7364720106124878 + 0.1949709951877594 + <_> + + <_> + + + + <_>5 2 14 14 -1. + <_>5 9 14 7 2. + 0 + 0.0357230007648468 + 0.1419779956340790 + -0.4208930134773254 + <_> + + <_> + + + + <_>4 2 16 6 -1. + <_>4 5 16 3 2. + 0 + 0.0506380014121532 + 0.0116440001875162 + 0.7848659753799439 + <_> + + <_> + + + + <_>2 3 19 3 -1. + <_>2 4 19 1 3. + 0 + -0.0146139999851584 + -1.1909500360488892 + -0.0351280011236668 + <_> + + <_> + + + + <_>7 1 10 4 -1. + <_>7 3 10 2 2. + 0 + -0.0386629998683929 + 2.4314730167388916 + 0.0656479969620705 + <_> + + <_> + + + + <_>0 9 4 15 -1. + <_>0 14 4 5 3. + 0 + -0.0403469987213612 + 0.7175530195236206 + -0.1910829991102219 + <_> + + <_> + + + + <_>2 10 21 3 -1. + <_>2 11 21 1 3. + 0 + 0.0239020008593798 + 0.1564619988203049 + -0.7929480075836182 + -3.4265899658203125 + 13 + -1 + <_> + + + <_> + + <_> + + + + <_>3 0 6 6 -1. + <_>6 0 3 6 2. + 0 + 8.5640000179409981e-003 + -0.8145070075988770 + 0.5887529850006104 + <_> + + <_> + + + + <_>6 4 14 9 -1. + <_>6 7 14 3 3. + 0 + -0.1329260021448135 + 0.9321339726448059 + -0.2936730086803436 + <_> + + <_> + + + + <_>9 1 6 9 -1. + <_>11 1 2 9 3. + 0 + 9.8400004208087921e-003 + -0.5646290183067322 + 0.4164769947528839 + <_> + + <_> + + + + <_>15 8 9 9 -1. + <_>15 11 9 3 3. + 0 + 5.0889998674392700e-003 + -0.7923280000686646 + 0.1697500050067902 + <_> + + <_> + + + + <_>8 0 4 21 -1. + <_>8 7 4 7 3. + 0 + -0.0610390007495880 + -1.4169000387191772 + 0.0250209998339415 + <_> + + <_> + + + + <_>3 22 19 2 -1. + <_>3 23 19 1 2. + 0 + -4.6599999768659472e-004 + 0.3798249959945679 + -0.4156709909439087 + <_> + + <_> + + + + <_>2 15 20 3 -1. + <_>2 16 20 1 3. + 0 + 3.3889999613165855e-003 + -0.4076859951019287 + 0.3554849922657013 + <_> + + <_> + + + + <_>19 0 4 13 -1. + <_>19 0 2 13 2. + 0 + 0.0210069995373487 + -0.2408010065555573 + 0.8611270189285278 + <_> + + <_> + + + + <_>1 7 8 8 -1. + <_>1 11 8 4 2. + 0 + 7.5559997931122780e-003 + -0.8746719956398010 + 0.0985720008611679 + <_> + + <_> + + + + <_>14 14 6 9 -1. + <_>14 17 6 3 3. + 0 + 0.0247799996286631 + 0.1556620001792908 + -0.6922979950904846 + <_> + + <_> + + + + <_>4 14 6 9 -1. + <_>4 17 6 3 3. + 0 + -0.0356200002133846 + -1.1472270488739014 + 0.0363599993288517 + <_> + + <_> + + + + <_>14 5 4 10 -1. + <_>14 5 2 10 2. + 0 + 0.0198100004345179 + 0.1551620066165924 + -0.6952009797096252 + <_> + + <_> + + + + <_>6 5 4 10 -1. + <_>8 5 2 10 2. + 0 + 0.0150199998170137 + 0.0419900007545948 + -0.9662280082702637 + <_> + + <_> + + + + <_>14 5 6 6 -1. + <_>14 8 6 3 2. + 0 + -0.0231379996985197 + 0.4339689910411835 + 2.4160000029951334e-003 + <_> + + <_> + + + + <_>4 5 6 6 -1. + <_>4 8 6 3 2. + 0 + -0.0187430009245873 + 0.4348109960556030 + -0.3252249956130981 + <_> + + <_> + + + + <_>0 2 24 21 -1. + <_>8 2 8 21 3. + 0 + 0.4508000016212463 + -0.0945739969611168 + 0.7242130041122437 + <_> + + <_> + + + + <_>1 2 6 13 -1. + <_>3 2 2 13 3. + 0 + 0.0118549996986985 + -0.3813309967517853 + 0.3009839951992035 + <_> + + <_> + + + + <_>20 0 4 21 -1. + <_>20 0 2 21 2. + 0 + -0.0248300004750490 + 0.8930060267448425 + -0.1029589995741844 + <_> + + <_> + + + + <_>0 4 4 20 -1. + <_>2 4 2 20 2. + 0 + -0.0447430014610291 + 0.8628029823303223 + -0.2171649932861328 + <_> + + <_> + + + + <_>8 16 9 6 -1. + <_>8 18 9 2 3. + 0 + -0.0146000003442168 + 0.6006940007209778 + -0.1590629965066910 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0245270002633333 + -1.5872869491577148 + -0.0218170005828142 + <_> + + <_> + + + + <_>16 12 7 9 -1. + <_>16 15 7 3 3. + 0 + 0.0230240002274513 + 0.1685339957475662 + -0.3810690045356751 + <_> + + <_> + + + + <_>5 21 14 3 -1. + <_>12 21 7 3 2. + 0 + -0.0249170009046793 + 0.5081089735031128 + -0.2727989852428436 + <_> + + <_> + + + + <_>11 5 6 9 -1. + <_>11 5 3 9 2. + 0 + 1.0130000300705433e-003 + -0.4313879907131195 + 0.2643809914588928 + <_> + + <_> + + + + <_>10 5 4 10 -1. + <_>12 5 2 10 2. + 0 + 0.0156030002981424 + -0.3162420094013214 + 0.5571590065956116 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + -0.0266859997063875 + 1.0553920269012451 + 0.0290740001946688 + <_> + + <_> + + + + <_>7 5 6 9 -1. + <_>10 5 3 9 2. + 0 + 1.3940000208094716e-003 + -0.7187380194664002 + 0.0653909966349602 + <_> + + <_> + + + + <_>14 14 10 4 -1. + <_>14 16 10 2 2. + 0 + -6.4799998654052615e-004 + 0.2488439977169037 + -0.2097820043563843 + <_> + + <_> + + + + <_>5 5 14 14 -1. + <_>5 5 7 7 2. + <_>12 12 7 7 2. + 0 + -0.0318880006670952 + -0.6884449720382690 + 0.0635899975895882 + <_> + + <_> + + + + <_>12 8 12 6 -1. + <_>18 8 6 3 2. + <_>12 11 6 3 2. + 0 + -4.9290000461041927e-003 + -0.5915250182151794 + 0.2794359922409058 + <_> + + <_> + + + + <_>6 6 12 12 -1. + <_>6 6 6 6 2. + <_>12 12 6 6 2. + 0 + 0.0311680007725954 + 0.0452239997684956 + -0.8863919973373413 + <_> + + <_> + + + + <_>11 13 6 10 -1. + <_>13 13 2 10 3. + 0 + -0.0336630009114742 + -0.6159020066261292 + 0.1574929952621460 + <_> + + <_> + + + + <_>1 10 20 8 -1. + <_>1 10 10 4 2. + <_>11 14 10 4 2. + 0 + 0.0119669996201992 + -0.3060669898986816 + 0.4229330122470856 + <_> + + <_> + + + + <_>15 13 9 6 -1. + <_>15 15 9 2 3. + 0 + -0.0346800014376640 + -1.3734940290451050 + 0.1590870022773743 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>9 3 6 3 3. + 0 + 9.9290004000067711e-003 + -0.5586019754409790 + 0.1211920008063316 + <_> + + <_> + + + + <_>10 1 5 14 -1. + <_>10 8 5 7 2. + 0 + 0.0595749989151955 + 4.9720001406967640e-003 + 0.8205540180206299 + <_> + + <_> + + + + <_>3 4 16 6 -1. + <_>3 6 16 2 3. + 0 + -0.0654280036687851 + 1.5651429891586304 + -0.1681749969720841 + <_> + + <_> + + + + <_>16 3 8 9 -1. + <_>16 6 8 3 3. + 0 + -0.0928959995508194 + -1.5794529914855957 + 0.1466179937124252 + <_> + + <_> + + + + <_>7 13 6 10 -1. + <_>9 13 2 10 3. + 0 + -0.0411840006709099 + -1.5518720149993896 + -0.0299699995666742 + <_> + + <_> + + + + <_>15 13 9 6 -1. + <_>15 15 9 2 3. + 0 + 0.0214479994028807 + 0.1719630062580109 + -0.6934319734573364 + <_> + + <_> + + + + <_>0 13 9 6 -1. + <_>0 15 9 2 3. + 0 + -0.0255699995905161 + -1.3061310052871704 + -0.0243369992822409 + <_> + + <_> + + + + <_>13 16 9 6 -1. + <_>13 18 9 2 3. + 0 + -0.0412009991705418 + -1.3821059465408325 + 0.1480180025100708 + <_> + + <_> + + + + <_>2 16 9 6 -1. + <_>2 18 9 2 3. + 0 + -0.0176689997315407 + -0.7088999748229981 + 0.0365240015089512 + <_> + + <_> + + + + <_>5 16 18 3 -1. + <_>5 17 18 1 3. + 0 + 9.0060001239180565e-003 + -0.0409139990806580 + 0.8037310242652893 + <_> + + <_> + + + + <_>1 16 18 3 -1. + <_>1 17 18 1 3. + 0 + -0.0116529995575547 + 0.5754680037498474 + -0.2499170005321503 + <_> + + <_> + + + + <_>5 0 18 3 -1. + <_>5 1 18 1 3. + 0 + -7.4780001305043697e-003 + -0.4928089976310730 + 0.1981090009212494 + <_> + + <_> + + + + <_>1 1 19 2 -1. + <_>1 2 19 1 2. + 0 + 8.5499999113380909e-004 + -0.4885810017585754 + 0.1356309950351715 + <_> + + <_> + + + + <_>14 2 6 11 -1. + <_>16 2 2 11 3. + 0 + -0.0305380001664162 + -0.6027839779853821 + 0.1852200031280518 + <_> + + <_> + + + + <_>4 15 15 6 -1. + <_>9 15 5 6 3. + 0 + -0.0188469998538494 + 0.2356559932231903 + -0.3513630032539368 + <_> + + <_> + + + + <_>14 2 6 11 -1. + <_>16 2 2 11 3. + 0 + -8.1129996106028557e-003 + -0.0813049972057343 + 0.2106959968805313 + <_> + + <_> + + + + <_>4 2 6 11 -1. + <_>6 2 2 11 3. + 0 + -0.0348300002515316 + -1.2065670490264893 + -0.0142519995570183 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>18 5 6 3 3. + 0 + 0.0190210007131100 + 0.2334990054368973 + -0.4566490054130554 + <_> + + <_> + + + + <_>1 2 22 4 -1. + <_>1 2 11 2 2. + <_>12 4 11 2 2. + 0 + -0.0190040003508329 + -0.8107579946517944 + 0.0131400004029274 + <_> + + <_> + + + + <_>2 0 21 12 -1. + <_>9 0 7 12 3. + 0 + -0.0890579968690872 + 0.6154239773750305 + 0.0329830013215542 + <_> + + <_> + + + + <_>0 12 18 3 -1. + <_>0 13 18 1 3. + 0 + 6.8620000965893269e-003 + -0.2958309948444367 + 0.2700369954109192 + <_> + + <_> + + + + <_>12 2 6 9 -1. + <_>14 2 2 9 3. + 0 + -0.0282409992069006 + -0.6110270023345947 + 0.1735749989748001 + <_> + + <_> + + + + <_>3 10 18 3 -1. + <_>3 11 18 1 3. + 0 + -3.2099999953061342e-004 + -0.5332289934158325 + 0.0685390010476112 + <_> + + <_> + + + + <_>16 3 8 9 -1. + <_>16 6 8 3 3. + 0 + -0.1082910001277924 + -1.2879559993743896 + 0.1180170029401779 + <_> + + <_> + + + + <_>3 7 18 3 -1. + <_>3 8 18 1 3. + 0 + 0.0158789996057749 + -0.1707260012626648 + 1.1103910207748413 + <_> + + <_> + + + + <_>9 11 6 9 -1. + <_>11 11 2 9 3. + 0 + 8.6859995499253273e-003 + -0.1099509969353676 + 0.4601050019264221 + <_> + + <_> + + + + <_>9 8 6 9 -1. + <_>11 8 2 9 3. + 0 + -0.0252349991351366 + 1.0220669507980347 + -0.1869429945945740 + <_> + + <_> + + + + <_>15 0 2 18 -1. + <_>15 0 1 18 2. + 0 + -0.0135089997202158 + -0.7831659913063049 + 0.1420260071754456 + <_> + + <_> + + + + <_>7 0 2 18 -1. + <_>8 0 1 18 2. + 0 + -7.7149998396635056e-003 + -0.8806070089340210 + 0.0110600003972650 + <_> + + <_> + + + + <_>17 3 7 9 -1. + <_>17 6 7 3 3. + 0 + 0.0715800002217293 + 0.1136939972639084 + -1.1032789945602417 + <_> + + <_> + + + + <_>3 18 9 6 -1. + <_>3 20 9 2 3. + 0 + -0.0135540002956986 + -0.8109650015830994 + 3.4080001059919596e-003 + <_> + + <_> + + + + <_>3 18 21 3 -1. + <_>3 19 21 1 3. + 0 + 2.9450000729411840e-003 + -0.0728799998760223 + 0.3499810099601746 + <_> + + <_> + + + + <_>0 3 7 9 -1. + <_>0 6 7 3 3. + 0 + -0.0508330017328262 + -1.2868590354919434 + -0.0288420002907515 + <_> + + <_> + + + + <_>2 7 22 3 -1. + <_>2 8 22 1 3. + 0 + -8.7989997118711472e-003 + 0.4761359989643097 + -0.1469040066003799 + <_> + + <_> + + + + <_>0 3 24 16 -1. + <_>0 3 12 8 2. + <_>12 11 12 8 2. + 0 + 0.2142439931631088 + -0.0597020015120506 + -2.4802260398864746 + <_> + + <_> + + + + <_>13 17 9 4 -1. + <_>13 19 9 2 2. + 0 + 0.0139629999175668 + 0.1742029935121536 + -0.4391100108623505 + <_> + + <_> + + + + <_>5 5 12 8 -1. + <_>5 5 6 4 2. + <_>11 9 6 4 2. + 0 + 0.0425020009279251 + -0.1996529996395111 + 0.7065479755401611 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>12 6 7 3 2. + <_>5 9 7 3 2. + 0 + 0.0198279991745949 + -0.0691360011696815 + 0.6164339780807495 + <_> + + <_> + + + + <_>5 16 14 6 -1. + <_>5 16 7 3 2. + <_>12 19 7 3 2. + 0 + -0.0335600003600121 + -1.2740780115127563 + -0.0256730001419783 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>18 5 6 3 3. + 0 + 0.0635429993271828 + 0.1240350008010864 + -1.0776289701461792 + <_> + + <_> + + + + <_>0 2 6 9 -1. + <_>0 5 6 3 3. + 0 + 0.0219330005347729 + 0.0149520002305508 + -0.7102349996566773 + <_> + + <_> + + + + <_>3 4 20 10 -1. + <_>13 4 10 5 2. + <_>3 9 10 5 2. + 0 + -0.0784249976277351 + 0.6203399896621704 + 0.0336109995841980 + <_> + + <_> + + + + <_>2 13 9 8 -1. + <_>5 13 3 8 3. + 0 + 0.0143900001421571 + -0.3632459938526154 + 0.1730830073356628 + <_> + + <_> + + + + <_>2 1 21 15 -1. + <_>9 1 7 15 3. + 0 + -0.0673099979758263 + 0.5237410068511963 + 0.0127999996766448 + <_> + + <_> + + + + <_>5 12 14 8 -1. + <_>12 12 7 8 2. + 0 + 0.1304749995470047 + -0.1712249964475632 + 1.1235200166702271 + <_> + + <_> + + + + <_>6 7 12 4 -1. + <_>6 7 6 4 2. + 0 + -0.0462459996342659 + -1.1908329725265503 + 0.1742559969425201 + <_> + + <_> + + + + <_>6 5 9 6 -1. + <_>9 5 3 6 3. + 0 + -0.0298420004546642 + 0.8393059968948364 + -0.1806419938802719 + <_> + + <_> + + + + <_>13 11 6 6 -1. + <_>13 11 3 6 2. + 0 + -3.8099999073892832e-004 + 0.3553279936313629 + -0.2384230047464371 + <_> + + <_> + + + + <_>5 11 6 6 -1. + <_>8 11 3 6 2. + 0 + -0.0223789997398853 + -0.8794389963150024 + -7.8399997437372804e-004 + <_> + + <_> + + + + <_>6 4 18 2 -1. + <_>6 5 18 1 2. + 0 + -1.5569999814033508e-003 + -0.1425330042839050 + 0.2587620019912720 + <_> + + <_> + + + + <_>0 2 6 11 -1. + <_>2 2 2 11 3. + 0 + 0.0120130004361272 + -0.2901549935340881 + 0.2605110108852387 + <_> + + <_> + + + + <_>18 0 6 15 -1. + <_>20 0 2 15 3. + 0 + 0.0243849996477365 + -0.0314389988780022 + 0.5869590044021606 + <_> + + <_> + + + + <_>0 0 6 13 -1. + <_>2 0 2 13 3. + 0 + -0.0471809990704060 + 0.6943010091781616 + -0.2181610018014908 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0248939990997314 + -0.6459929943084717 + 0.1561159938573837 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + 0.0219449996948242 + -0.0277420002967119 + -1.1346880197525024 + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>8 2 8 4 3. + 0 + 0.1880989968776703 + -0.0100760003551841 + 1.2429029941558838 + <_> + + <_> + + + + <_>3 13 18 4 -1. + <_>12 13 9 4 2. + 0 + -0.0778720006346703 + 0.8500800132751465 + -0.1901549994945526 + <_> + + <_> + + + + <_>9 7 10 4 -1. + <_>9 7 5 4 2. + 0 + -0.0487690009176731 + -2.0763080120086670 + 0.1217940002679825 + <_> + + <_> + + + + <_>5 8 12 3 -1. + <_>11 8 6 3 2. + 0 + -0.0171150006353855 + -0.8568729758262634 + 7.8760003671050072e-003 + <_> + + <_> + + + + <_>4 14 19 3 -1. + <_>4 15 19 1 3. + 0 + -2.7499999850988388e-003 + 0.3864549994468689 + -0.1139149963855743 + <_> + + <_> + + + + <_>10 0 4 20 -1. + <_>10 10 4 10 2. + 0 + -0.0987939983606339 + -1.7233899831771851 + -0.0560630001127720 + <_> + + <_> + + + + <_>8 15 9 6 -1. + <_>8 17 9 2 3. + 0 + -0.0219369996339083 + 0.5474939942359924 + -0.0424819998443127 + <_> + + <_> + + + + <_>2 9 15 4 -1. + <_>7 9 5 4 3. + 0 + 0.0610969997942448 + -0.0389450006186962 + -1.0807880163192749 + <_> + + <_> + + + + <_>8 4 12 7 -1. + <_>12 4 4 7 3. + 0 + -0.0245639998465776 + 0.5831109881401062 + -9.7599998116493225e-004 + <_> + + <_> + + + + <_>0 10 6 9 -1. + <_>0 13 6 3 3. + 0 + 0.0337520018219948 + -0.0137959998100996 + -0.8473029732704163 + <_> + + <_> + + + + <_>18 5 6 9 -1. + <_>18 8 6 3 3. + 0 + 0.0381990000605583 + 0.1511429995298386 + -0.7947340011596680 + <_> + + <_> + + + + <_>0 18 16 6 -1. + <_>0 18 8 3 2. + <_>8 21 8 3 2. + 0 + -0.0201179999858141 + 0.5157909989356995 + -0.2144539952278137 + <_> + + <_> + + + + <_>9 18 14 6 -1. + <_>16 18 7 3 2. + <_>9 21 7 3 2. + 0 + 0.0247349999845028 + -0.0221050009131432 + 0.4291769862174988 + <_> + + <_> + + + + <_>1 20 20 4 -1. + <_>1 20 10 2 2. + <_>11 22 10 2 2. + 0 + -0.0243570003658533 + -0.8620129823684692 + -3.6760000512003899e-003 + <_> + + <_> + + + + <_>2 8 20 6 -1. + <_>12 8 10 3 2. + <_>2 11 10 3 2. + 0 + -0.0264420006424189 + -0.4539749920368195 + 0.2246280014514923 + <_> + + <_> + + + + <_>7 8 6 9 -1. + <_>9 8 2 9 3. + 0 + -3.4429999068379402e-003 + 0.1307300031185150 + -0.3862270116806030 + <_> + + <_> + + + + <_>8 5 12 8 -1. + <_>12 5 4 8 3. + 0 + 0.1070170029997826 + 0.1315860003232956 + -0.7930690050125122 + <_> + + <_> + + + + <_>4 5 12 8 -1. + <_>8 5 4 8 3. + 0 + 0.0451529994606972 + -0.2529680132865906 + 0.4067240059375763 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + 0.0443499982357025 + 0.0226130001246929 + 0.7961810231208801 + <_> + + <_> + + + + <_>2 0 6 16 -1. + <_>4 0 2 16 3. + 0 + 1.0839999886229634e-003 + -0.3915840089321137 + 0.1163910031318665 + <_> + + <_> + + + + <_>15 4 6 12 -1. + <_>15 8 6 4 3. + 0 + 0.0714330002665520 + 0.0824669972062111 + 1.2530590295791626 + <_> + + <_> + + + + <_>3 4 6 12 -1. + <_>3 8 6 4 3. + 0 + 0.0358380004763603 + -0.1820330023765564 + 0.7707870006561279 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + -0.0208390001207590 + -0.6174439787864685 + 0.1589139997959137 + <_> + + <_> + + + + <_>4 0 15 22 -1. + <_>4 11 15 11 2. + 0 + 0.4252580106258392 + -0.0489780008792877 + -1.8422030210494995 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + 0.0114080002531409 + 0.1791819930076599 + -0.1538349986076355 + <_> + + <_> + + + + <_>0 12 9 6 -1. + <_>0 14 9 2 3. + 0 + -0.0153649998828769 + -0.8401650190353394 + -1.0280000278726220e-003 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + -0.0152120003476739 + -0.1899569928646088 + 0.1713099926710129 + <_> + + <_> + + + + <_>0 15 9 6 -1. + <_>0 17 9 2 3. + 0 + -0.0189720001071692 + -0.7954199910163879 + 6.6800001077353954e-003 + <_> + + <_> + + + + <_>10 0 8 10 -1. + <_>14 0 4 5 2. + <_>10 5 4 5 2. + 0 + -3.3330000005662441e-003 + -0.2353080064058304 + 0.2473009973764420 + <_> + + <_> + + + + <_>1 0 4 16 -1. + <_>3 0 2 16 2. + 0 + 0.0932480022311211 + -0.0547580011188984 + -1.8324300050735474 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -0.0125550003722310 + 0.2638520002365112 + -0.3852640092372894 + <_> + + <_> + + + + <_>10 12 4 10 -1. + <_>10 17 4 5 2. + 0 + -0.0270700007677078 + -0.6692979931831360 + 0.0203409995883703 + <_> + + <_> + + + + <_>8 4 10 6 -1. + <_>8 6 10 2 3. + 0 + -0.0236770007759333 + 0.6726530194282532 + -0.0143440002575517 + <_> + + <_> + + + + <_>3 22 18 2 -1. + <_>12 22 9 2 2. + 0 + -0.0142750004306436 + 0.3018639981746674 + -0.2851440012454987 + <_> + + <_> + + + + <_>7 7 11 6 -1. + <_>7 9 11 2 3. + 0 + 0.0280969999730587 + 0.1476600021123886 + -1.4078520536422729 + <_> + + <_> + + + + <_>0 0 12 10 -1. + <_>0 0 6 5 2. + <_>6 5 6 5 2. + 0 + 0.0508400015532970 + -0.1861360073089600 + 0.7995300292968750 + <_> + + <_> + + + + <_>10 1 12 6 -1. + <_>16 1 6 3 2. + <_>10 4 6 3 2. + 0 + 0.0115059996023774 + 0.1911839991807938 + -0.0850350037217140 + <_> + + <_> + + + + <_>7 16 9 4 -1. + <_>7 18 9 2 2. + 0 + -0.0146610001102090 + 0.4523929953575134 + -0.2220519930124283 + <_> + + <_> + + + + <_>5 7 15 16 -1. + <_>10 7 5 16 3. + 0 + 0.2284249961376190 + 0.1348839998245239 + -1.2894610166549683 + <_> + + <_> + + + + <_>5 10 12 13 -1. + <_>11 10 6 13 2. + 0 + 0.1110690012574196 + -0.2075379937887192 + 0.5456159710884094 + <_> + + <_> + + + + <_>6 2 12 6 -1. + <_>12 2 6 3 2. + <_>6 5 6 3 2. + 0 + 3.2450000289827585e-003 + 0.3205370008945465 + -0.1640350073575974 + <_> + + <_> + + + + <_>3 9 12 9 -1. + <_>3 12 12 3 3. + 0 + 0.0853099972009659 + -0.2021050006151199 + 0.5329679846763611 + <_> + + <_> + + + + <_>16 2 8 6 -1. + <_>16 5 8 3 2. + 0 + 0.0220480002462864 + 0.1569859981536865 + -0.1701409965753555 + <_> + + <_> + + + + <_>0 2 8 6 -1. + <_>0 5 8 3 2. + 0 + -0.0156769994646311 + -0.6286349892616272 + 0.0407619997859001 + <_> + + <_> + + + + <_>0 3 24 11 -1. + <_>0 3 12 11 2. + 0 + 0.3311290144920349 + 0.1660930067300797 + -1.0326379537582397 + <_> + + <_> + + + + <_>0 13 8 10 -1. + <_>0 13 4 5 2. + <_>4 18 4 5 2. + 0 + 8.8470000773668289e-003 + -0.2507619857788086 + 0.3166059851646423 + <_> + + <_> + + + + <_>10 14 4 10 -1. + <_>10 19 4 5 2. + 0 + 0.0460800006985664 + 0.1535210013389587 + -1.6333500146865845 + <_> + + <_> + + + + <_>10 2 4 21 -1. + <_>10 9 4 7 3. + 0 + -0.0377030000090599 + 0.5687379837036133 + -0.2010259926319122 + -3.5125269889831543 + 14 + -1 + <_> + + + <_> + + <_> + + + + <_>4 4 15 9 -1. + <_>4 7 15 3 3. + 0 + -0.0818089991807938 + 0.5712479948997498 + -0.6743879914283752 + <_> + + <_> + + + + <_>0 1 24 6 -1. + <_>8 1 8 6 3. + 0 + 0.2176119983196259 + -0.3861019909381867 + 0.9034399986267090 + <_> + + <_> + + + + <_>9 6 5 16 -1. + <_>9 14 5 8 2. + 0 + 0.0148780001327395 + 0.2224159985780716 + -1.2779350280761719 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>9 21 6 3 3. + 0 + 0.0524349994957447 + -0.2869040071964264 + 0.7574229836463928 + <_> + + <_> + + + + <_>6 5 3 12 -1. + <_>6 11 3 6 2. + 0 + 9.1429995372891426e-003 + -0.6488040089607239 + 0.2226880043745041 + <_> + + <_> + + + + <_>11 6 4 9 -1. + <_>11 6 2 9 2. + 0 + 7.9169999808073044e-003 + -0.2925359904766083 + 0.3103019893169403 + <_> + + <_> + + + + <_>5 6 9 8 -1. + <_>8 6 3 8 3. + 0 + -0.0260840002447367 + 0.4553270041942596 + -0.3850060105323792 + <_> + + <_> + + + + <_>4 3 20 2 -1. + <_>4 4 20 1 2. + 0 + -2.9400000348687172e-003 + -0.5126439929008484 + 0.2743229866027832 + <_> + + <_> + + + + <_>2 10 18 3 -1. + <_>8 10 6 3 3. + 0 + 0.0571300014853477 + 0.0157880000770092 + -1.2133100032806396 + <_> + + <_> + + + + <_>7 15 10 6 -1. + <_>7 17 10 2 3. + 0 + -6.1309998854994774e-003 + 0.3917460143566132 + -0.3086679875850678 + <_> + + <_> + + + + <_>1 4 4 18 -1. + <_>1 4 2 9 2. + <_>3 13 2 9 2. + 0 + -0.0404050014913082 + 1.1901949644088745 + -0.2034710049629211 + <_> + + <_> + + + + <_>13 0 6 9 -1. + <_>15 0 2 9 3. + 0 + -0.0202970001846552 + -0.6823949813842773 + 0.2045869976282120 + <_> + + <_> + + + + <_>5 0 6 9 -1. + <_>7 0 2 9 3. + 0 + -0.0171889998018742 + -0.8493989706039429 + 0.0384330004453659 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + -0.0242159999907017 + -1.1039420366287231 + 0.1597509980201721 + <_> + + <_> + + + + <_>6 7 9 6 -1. + <_>9 7 3 6 3. + 0 + 0.0568690001964569 + -0.1959529966115952 + 1.1806850433349609 + <_> + + <_> + + + + <_>3 0 18 2 -1. + <_>3 1 18 1 2. + 0 + 3.6199999158270657e-004 + -0.4084779918193817 + 0.3293859958648682 + <_> + + <_> + + + + <_>0 10 20 4 -1. + <_>0 10 10 2 2. + <_>10 12 10 2 2. + 0 + 9.9790003150701523e-003 + -0.2967300117015839 + 0.4154790043830872 + <_> + + <_> + + + + <_>10 2 4 12 -1. + <_>10 8 4 6 2. + 0 + -0.0526250004768372 + -1.3069299459457397 + 0.1786260008811951 + <_> + + <_> + + + + <_>6 5 6 12 -1. + <_>6 5 3 6 2. + <_>9 11 3 6 2. + 0 + -0.0137489996850491 + 0.2366580069065094 + -0.4453659951686859 + <_> + + <_> + + + + <_>6 0 18 22 -1. + <_>15 0 9 11 2. + <_>6 11 9 11 2. + 0 + -0.0305170007050037 + 0.2901830077171326 + -0.1121010035276413 + <_> + + <_> + + + + <_>0 0 18 22 -1. + <_>0 0 9 11 2. + <_>9 11 9 11 2. + 0 + -0.3003750145435333 + -2.4237680435180664 + -0.0428309999406338 + <_> + + <_> + + + + <_>18 2 6 11 -1. + <_>20 2 2 11 3. + 0 + -0.0359909981489182 + 0.8820649981498718 + -0.0470129996538162 + <_> + + <_> + + + + <_>0 2 6 11 -1. + <_>2 2 2 11 3. + 0 + -0.0551120005548000 + 0.8011900186538696 + -0.2049099951982498 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + 0.0337620005011559 + 0.1461759954690933 + -1.1349489688873291 + <_> + + <_> + + + + <_>0 0 20 3 -1. + <_>0 1 20 1 3. + 0 + -8.2710003480315208e-003 + -0.8160489797592163 + 0.0189880002290010 + <_> + + <_> + + + + <_>2 2 20 2 -1. + <_>2 3 20 1 2. + 0 + -5.4399999789893627e-003 + -0.7098090052604675 + 0.2234369963407517 + <_> + + <_> + + + + <_>1 10 18 2 -1. + <_>1 11 18 1 2. + 0 + 3.1059999018907547e-003 + -0.7280859947204590 + 0.0402249991893768 + <_> + + <_> + + + + <_>18 7 6 9 -1. + <_>18 10 6 3 3. + 0 + 0.0536519996821880 + 0.1717090010643005 + -1.1163710355758667 + <_> + + <_> + + + + <_>0 0 22 9 -1. + <_>0 3 22 3 3. + 0 + -0.1254139989614487 + 2.7680370807647705 + -0.1461150050163269 + <_> + + <_> + + + + <_>17 3 6 9 -1. + <_>17 6 6 3 3. + 0 + 0.0925420001149178 + 0.1160980015993118 + -3.9635529518127441 + <_> + + <_> + + + + <_>0 7 6 9 -1. + <_>0 10 6 3 3. + 0 + 0.0385139994323254 + -7.6399999670684338e-003 + -0.9878090023994446 + <_> + + <_> + + + + <_>0 6 24 6 -1. + <_>0 8 24 2 3. + 0 + -2.0200000144541264e-003 + 0.2305999994277954 + -0.7497029900550842 + <_> + + <_> + + + + <_>0 2 6 10 -1. + <_>2 2 2 10 3. + 0 + 9.7599998116493225e-003 + -0.3113799989223480 + 0.3028779923915863 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + 0.0240950006991625 + -0.0495299994945526 + 0.5269010066986084 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0179820004850626 + -1.1610640287399292 + -5.7000000961124897e-003 + <_> + + <_> + + + + <_>15 0 6 9 -1. + <_>17 0 2 9 3. + 0 + -0.0105550000444055 + -0.2718909978866577 + 0.2359769940376282 + <_> + + <_> + + + + <_>3 0 6 9 -1. + <_>5 0 2 9 3. + 0 + -7.2889998555183411e-003 + -0.5421910285949707 + 0.0819140002131462 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + 0.0239390004426241 + 0.1797579973936081 + -0.6704949736595154 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -0.0183659996837378 + 0.6266430020332336 + -0.2097010016441345 + <_> + + <_> + + + + <_>15 14 9 6 -1. + <_>15 16 9 2 3. + 0 + 0.0157159995287657 + 0.2419369965791702 + -1.0444309711456299 + <_> + + <_> + + + + <_>0 15 23 6 -1. + <_>0 17 23 2 3. + 0 + -0.0488040000200272 + -0.9406059980392456 + -3.7519999314099550e-003 + <_> + + <_> + + + + <_>5 15 18 3 -1. + <_>5 16 18 1 3. + 0 + 6.7130001261830330e-003 + -0.0754320025444031 + 0.6157529950141907 + <_> + + <_> + + + + <_>0 14 9 6 -1. + <_>0 16 9 2 3. + 0 + 9.7770001739263535e-003 + 0.0392850004136562 + -0.8481029868125916 + <_> + + <_> + + + + <_>9 8 8 10 -1. + <_>13 8 4 5 2. + <_>9 13 4 5 2. + 0 + 0.0147449998185039 + 0.1696899980306625 + -0.5090640187263489 + <_> + + <_> + + + + <_>3 7 15 6 -1. + <_>8 7 5 6 3. + 0 + 0.0970790013670921 + -0.0331030003726482 + -1.2706379890441895 + <_> + + <_> + + + + <_>9 8 8 10 -1. + <_>13 8 4 5 2. + <_>9 13 4 5 2. + 0 + 0.0482859984040260 + 0.0943299978971481 + 2.7203190326690674 + <_> + + <_> + + + + <_>5 0 6 12 -1. + <_>8 0 3 12 2. + 0 + 9.7810002043843269e-003 + -0.3953340053558350 + 0.1536380052566528 + <_> + + <_> + + + + <_>9 8 8 10 -1. + <_>13 8 4 5 2. + <_>9 13 4 5 2. + 0 + -0.0398939996957779 + -0.2276740074157715 + 0.1391399949789047 + <_> + + <_> + + + + <_>8 5 6 9 -1. + <_>10 5 2 9 3. + 0 + 0.0228480007499456 + -0.2739199995994568 + 0.3419950008392334 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>12 6 2 9 2. + <_>10 15 2 9 2. + 0 + 6.7179999314248562e-003 + -0.1087429970502853 + 0.4812540113925934 + <_> + + <_> + + + + <_>5 7 12 4 -1. + <_>11 7 6 4 2. + 0 + 0.0595999993383884 + -0.0495220012962818 + -2.0117089748382568 + <_> + + <_> + + + + <_>9 8 8 10 -1. + <_>13 8 4 5 2. + <_>9 13 4 5 2. + 0 + 6.9340001791715622e-003 + 0.1503749936819077 + -0.1127189993858337 + <_> + + <_> + + + + <_>7 8 8 10 -1. + <_>7 8 4 5 2. + <_>11 13 4 5 2. + 0 + 0.0157570000737906 + -0.0208850000053644 + -1.1651979684829712 + <_> + + <_> + + + + <_>11 10 6 14 -1. + <_>14 10 3 7 2. + <_>11 17 3 7 2. + 0 + -0.0496900007128716 + -0.8021349906921387 + 0.1437229961156845 + <_> + + <_> + + + + <_>9 5 6 19 -1. + <_>12 5 3 19 2. + 0 + 0.0523470006883144 + -0.2083670049905777 + 0.6167759895324707 + <_> + + <_> + + + + <_>6 12 12 6 -1. + <_>12 12 6 3 2. + <_>6 15 6 3 2. + 0 + 0.0224309992045164 + 0.2030590027570725 + -0.7532619833946228 + <_> + + <_> + + + + <_>1 9 18 6 -1. + <_>1 9 9 3 2. + <_>10 12 9 3 2. + 0 + 0.0411420017480850 + -0.1811819970607758 + 1.0033359527587891 + <_> + + <_> + + + + <_>16 14 8 10 -1. + <_>20 14 4 5 2. + <_>16 19 4 5 2. + 0 + -0.0216320008039474 + 0.4999899864196777 + -0.0346629992127419 + <_> + + <_> + + + + <_>0 9 22 8 -1. + <_>0 9 11 4 2. + <_>11 13 11 4 2. + 0 + -0.0828080028295517 + 1.1711900234222412 + -0.1843360066413879 + <_> + + <_> + + + + <_>8 18 12 6 -1. + <_>14 18 6 3 2. + <_>8 21 6 3 2. + 0 + 8.5060000419616699e-003 + -0.0632250010967255 + 0.2902489900588989 + <_> + + <_> + + + + <_>0 6 20 18 -1. + <_>0 6 10 9 2. + <_>10 15 10 9 2. + 0 + 0.0789050012826920 + -0.2327450066804886 + 0.5969579815864563 + <_> + + <_> + + + + <_>3 6 20 12 -1. + <_>13 6 10 6 2. + <_>3 12 10 6 2. + 0 + -0.0902070030570030 + -0.8221189975738525 + 0.1777220070362091 + <_> + + <_> + + + + <_>0 16 10 8 -1. + <_>0 16 5 4 2. + <_>5 20 5 4 2. + 0 + -0.0292690005153418 + 0.6086069941520691 + -0.2146890014410019 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + 6.9499998353421688e-003 + -0.0426659993827343 + 0.6051210165023804 + <_> + + <_> + + + + <_>0 11 19 3 -1. + <_>0 12 19 1 3. + 0 + -8.0629996955394745e-003 + -1.1508270502090454 + -0.0272860005497932 + <_> + + <_> + + + + <_>14 6 6 9 -1. + <_>14 9 6 3 3. + 0 + 0.0195959992706776 + -9.1880001127719879e-003 + 0.5685780048370361 + <_> + + <_> + + + + <_>1 7 22 4 -1. + <_>1 7 11 2 2. + <_>12 9 11 2 2. + 0 + -0.0148849999532104 + 0.3765879869461060 + -0.2714950144290924 + <_> + + <_> + + + + <_>13 6 7 12 -1. + <_>13 10 7 4 3. + 0 + 0.0252170003950596 + -0.0999910011887550 + 0.2466470003128052 + <_> + + <_> + + + + <_>4 7 11 9 -1. + <_>4 10 11 3 3. + 0 + -0.0158559996634722 + 0.6682670116424561 + -0.2061470001935959 + <_> + + <_> + + + + <_>12 10 10 8 -1. + <_>17 10 5 4 2. + <_>12 14 5 4 2. + 0 + 0.0294410008937120 + 0.1583220064640045 + -0.7606089711189270 + <_> + + <_> + + + + <_>2 12 9 7 -1. + <_>5 12 3 7 3. + 0 + -8.5279997438192368e-003 + 0.3821229934692383 + -0.2540780007839203 + <_> + + <_> + + + + <_>16 14 6 9 -1. + <_>16 17 6 3 3. + 0 + 0.0244219992309809 + 0.1510509997606278 + -0.2875289916992188 + <_> + + <_> + + + + <_>3 12 6 12 -1. + <_>3 16 6 4 3. + 0 + -0.0338869988918304 + -0.6800280213356018 + 0.0343270003795624 + <_> + + <_> + + + + <_>14 13 6 6 -1. + <_>14 16 6 3 2. + 0 + -2.0810000132769346e-003 + 0.2541390061378479 + -0.2685909867286682 + <_> + + <_> + + + + <_>8 0 6 9 -1. + <_>10 0 2 9 3. + 0 + 0.0303589999675751 + -0.0308420006185770 + -1.1476809978485107 + <_> + + <_> + + + + <_>9 1 6 23 -1. + <_>11 1 2 23 3. + 0 + 4.0210001170635223e-003 + -0.3525379896163940 + 0.2986809909343720 + <_> + + <_> + + + + <_>0 16 9 6 -1. + <_>0 18 9 2 3. + 0 + 0.0276810005307198 + -0.0381489992141724 + -1.3262039422988892 + <_> + + <_> + + + + <_>4 17 18 3 -1. + <_>4 18 18 1 3. + 0 + 7.9039996489882469e-003 + -0.0237370003014803 + 0.7050300240516663 + <_> + + <_> + + + + <_>5 2 13 14 -1. + <_>5 9 13 7 2. + 0 + 0.0440310016274452 + 0.1067489981651306 + -0.4526120126247406 + <_> + + <_> + + + + <_>15 0 8 12 -1. + <_>19 0 4 6 2. + <_>15 6 4 6 2. + 0 + -0.0323709994554520 + 0.4667490124702454 + -0.0615469999611378 + <_> + + <_> + + + + <_>0 0 8 12 -1. + <_>0 0 4 6 2. + <_>4 6 4 6 2. + 0 + 0.0209330003708601 + -0.2844789922237396 + 0.4384559988975525 + <_> + + <_> + + + + <_>8 2 8 7 -1. + <_>8 2 4 7 2. + 0 + 0.0252279993146658 + -0.0225370004773140 + 0.7038909792900085 + <_> + + <_> + + + + <_>1 1 6 9 -1. + <_>3 1 2 9 3. + 0 + 6.5520000644028187e-003 + -0.3255490064620972 + 0.2402369976043701 + <_> + + <_> + + + + <_>14 8 6 12 -1. + <_>17 8 3 6 2. + <_>14 14 3 6 2. + 0 + -0.0585579983890057 + -1.2227720022201538 + 0.1166879981756210 + <_> + + <_> + + + + <_>4 8 6 12 -1. + <_>4 8 3 6 2. + <_>7 14 3 6 2. + 0 + 0.0318999998271465 + -0.0193050000816584 + -1.0973169803619385 + <_> + + <_> + + + + <_>16 5 5 15 -1. + <_>16 10 5 5 3. + 0 + -0.0304450001567602 + 0.6558250188827515 + 0.0750909969210625 + <_> + + <_> + + + + <_>3 5 5 15 -1. + <_>3 10 5 5 3. + 0 + 0.0149330003187060 + -0.5215579867362976 + 0.1152309998869896 + <_> + + <_> + + + + <_>18 4 6 9 -1. + <_>18 7 6 3 3. + 0 + -0.0490080006420612 + -0.7830399870872498 + 0.1665720045566559 + <_> + + <_> + + + + <_>1 7 6 15 -1. + <_>1 12 6 5 3. + 0 + 0.0831589996814728 + -2.6879999786615372e-003 + -0.8528230190277100 + <_> + + <_> + + + + <_>11 15 12 8 -1. + <_>17 15 6 4 2. + <_>11 19 6 4 2. + 0 + 0.0239029992371798 + -0.0510109998285770 + 0.4199909865856171 + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>0 2 12 2 2. + <_>12 4 12 2 2. + 0 + 0.0164289996027946 + 0.0192329995334148 + -0.6504909992218018 + <_> + + <_> + + + + <_>15 1 2 19 -1. + <_>15 1 1 19 2. + 0 + -0.0118380002677441 + -0.6240980029106140 + 0.1541119962930679 + <_> + + <_> + + + + <_>7 1 2 19 -1. + <_>8 1 1 19 2. + 0 + -1.6799999866634607e-004 + 0.1758919954299927 + -0.3433870077133179 + <_> + + <_> + + + + <_>22 1 2 20 -1. + <_>22 1 1 20 2. + 0 + 0.0191939994692802 + 0.0434189997613430 + 0.7906919717788696 + <_> + + <_> + + + + <_>0 1 2 20 -1. + <_>1 1 1 20 2. + 0 + -0.0100320000201464 + 0.4564889967441559 + -0.2249480038881302 + <_> + + <_> + + + + <_>18 11 6 12 -1. + <_>20 11 2 12 3. + 0 + -0.0140040004625916 + 0.3357099890708923 + -4.8799999058246613e-003 + <_> + + <_> + + + + <_>0 11 6 12 -1. + <_>2 11 2 12 3. + 0 + -0.1031989976763725 + -2.3378000259399414 + -0.0589330010116100 + <_> + + <_> + + + + <_>3 6 18 14 -1. + <_>3 13 18 7 2. + 0 + -0.0956970006227493 + -0.6615390181541443 + 0.2009859979152679 + <_> + + <_> + + + + <_>6 10 7 8 -1. + <_>6 14 7 4 2. + 0 + -0.0414809994399548 + 0.4593920111656189 + -0.2231409996747971 + <_> + + <_> + + + + <_>7 9 12 12 -1. + <_>7 13 12 4 3. + 0 + 2.4099999573081732e-003 + -0.2689859867095947 + 0.2492299973964691 + <_> + + <_> + + + + <_>2 18 18 5 -1. + <_>11 18 9 5 2. + 0 + 0.1072499975562096 + -0.1864019930362701 + 0.7276980280876160 + <_> + + <_> + + + + <_>4 21 20 3 -1. + <_>4 22 20 1 3. + 0 + 3.1870000530034304e-003 + -0.0246089994907379 + 0.2864390015602112 + <_> + + <_> + + + + <_>9 12 6 12 -1. + <_>9 12 3 6 2. + <_>12 18 3 6 2. + 0 + 0.0291670002043247 + -0.0346830002963543 + -1.1162580251693726 + <_> + + <_> + + + + <_>4 6 18 3 -1. + <_>4 7 18 1 3. + 0 + 0.0112870000302792 + 6.3760001212358475e-003 + 0.6663209795951843 + <_> + + <_> + + + + <_>3 6 18 3 -1. + <_>3 7 18 1 3. + 0 + -0.0120010003447533 + 0.4242010116577148 + -0.2627980113029480 + <_> + + <_> + + + + <_>18 4 6 9 -1. + <_>18 7 6 3 3. + 0 + -0.0126959998160601 + -0.0219570007175207 + 0.1893679946660996 + <_> + + <_> + + + + <_>2 12 9 6 -1. + <_>2 14 9 2 3. + 0 + 0.0245970003306866 + -0.0349639989435673 + -1.0989320278167725 + <_> + + <_> + + + + <_>4 14 18 4 -1. + <_>13 14 9 2 2. + <_>4 16 9 2 2. + 0 + 0.0459530018270016 + 0.1110979989171028 + -2.9306049346923828 + <_> + + <_> + + + + <_>7 7 6 14 -1. + <_>7 7 3 7 2. + <_>10 14 3 7 2. + 0 + -0.0272410009056330 + 0.2910169959068298 + -0.2740789949893951 + <_> + + <_> + + + + <_>7 13 12 6 -1. + <_>13 13 6 3 2. + <_>7 16 6 3 2. + 0 + 0.0400639995932579 + 0.1187790036201477 + -0.6280180215835571 + <_> + + <_> + + + + <_>6 7 12 9 -1. + <_>10 7 4 9 3. + 0 + 0.0230550002306700 + 0.1481380015611649 + -0.3700749874114990 + <_> + + <_> + + + + <_>12 12 6 6 -1. + <_>12 12 3 6 2. + 0 + -0.0237370003014803 + -0.5372480154037476 + 0.1935819983482361 + <_> + + <_> + + + + <_>0 2 4 10 -1. + <_>0 7 4 5 2. + 0 + 0.0775220021605492 + -0.0601940006017685 + -1.9489669799804688 + <_> + + <_> + + + + <_>8 0 9 6 -1. + <_>11 0 3 6 3. + 0 + -0.0133450003340840 + -0.4522959887981415 + 0.1874150037765503 + <_> + + <_> + + + + <_>2 9 12 6 -1. + <_>2 12 12 3 2. + 0 + -0.0217199996113777 + 1.2144249677658081 + -0.1536580026149750 + <_> + + <_> + + + + <_>13 10 6 9 -1. + <_>13 13 6 3 3. + 0 + -0.0714749991893768 + -2.3047130107879639 + 0.1099990010261536 + <_> + + <_> + + + + <_>5 10 6 9 -1. + <_>5 13 6 3 3. + 0 + -5.4999999701976776e-003 + -0.7185519933700562 + 0.0201009996235371 + <_> + + <_> + + + + <_>9 15 9 6 -1. + <_>9 17 9 2 3. + 0 + 0.0267409998923540 + 0.0735450014472008 + 0.9878600239753723 + <_> + + <_> + + + + <_>5 16 12 6 -1. + <_>5 19 12 3 2. + 0 + -0.0394079983234406 + -1.2227380275726318 + -0.0435069985687733 + <_> + + <_> + + + + <_>3 2 20 3 -1. + <_>3 3 20 1 3. + 0 + 0.0258889999240637 + 0.1340930014848709 + -1.1770780086517334 + <_> + + <_> + + + + <_>2 5 12 6 -1. + <_>6 5 4 6 3. + 0 + 0.0489250011742115 + -0.0308100003749132 + -0.9347950220108032 + <_> + + <_> + + + + <_>11 0 3 24 -1. + <_>12 0 1 24 3. + 0 + 0.0368929989635944 + 0.1333370059728622 + -1.4998290538787842 + <_> + + <_> + + + + <_>3 16 15 4 -1. + <_>8 16 5 4 3. + 0 + 0.0789299979805946 + -0.1453880071640015 + 1.5631790161132813 + <_> + + <_> + + + + <_>9 12 6 12 -1. + <_>9 18 6 6 2. + 0 + 0.0290060006082058 + 0.1938370019197464 + -0.6764280200004578 + <_> + + <_> + + + + <_>1 15 12 8 -1. + <_>1 15 6 4 2. + <_>7 19 6 4 2. + 0 + 6.3089998438954353e-003 + -0.3746539950370789 + 0.1085750013589859 + <_> + + <_> + + + + <_>15 10 8 14 -1. + <_>19 10 4 7 2. + <_>15 17 4 7 2. + 0 + -0.0658309981226921 + 0.8105940222740173 + 0.0302019994705915 + <_> + + <_> + + + + <_>1 9 8 14 -1. + <_>1 9 4 7 2. + <_>5 16 4 7 2. + 0 + -0.0689650028944016 + 0.8377259969711304 + -0.1714099943637848 + <_> + + <_> + + + + <_>9 11 9 10 -1. + <_>9 16 9 5 2. + 0 + -0.1166910007596016 + -0.9464719891548157 + 0.1312319934368134 + <_> + + <_> + + + + <_>6 7 12 6 -1. + <_>6 9 12 2 3. + 0 + -1.3060000492259860e-003 + 0.0460079982876778 + -0.5201159715652466 + <_> + + <_> + + + + <_>10 15 6 9 -1. + <_>12 15 2 9 3. + 0 + -0.0445589981973171 + -1.9423669576644897 + 0.1320070028305054 + <_> + + <_> + + + + <_>7 8 9 7 -1. + <_>10 8 3 7 3. + 0 + 0.0510330013930798 + -0.2148099988698959 + 0.4867390096187592 + <_> + + <_> + + + + <_>10 4 8 10 -1. + <_>14 4 4 5 2. + <_>10 9 4 5 2. + 0 + -0.0315780006349087 + 0.5998979806900024 + 7.9159997403621674e-003 + <_> + + <_> + + + + <_>4 6 6 9 -1. + <_>4 9 6 3 3. + 0 + 0.0210200008004904 + -0.2206950038671494 + 0.5404620170593262 + <_> + + <_> + + + + <_>0 6 24 12 -1. + <_>8 6 8 12 3. + 0 + -0.1382420063018799 + 0.6295750141143799 + -0.0217129997909069 + <_> + + <_> + + + + <_>3 7 6 14 -1. + <_>6 7 3 14 2. + 0 + 0.0522289983928204 + -0.2336090058088303 + 0.4976080060005188 + <_> + + <_> + + + + <_>19 8 5 8 -1. + <_>19 12 5 4 2. + 0 + 0.0258840005844831 + 0.1804199963808060 + -0.2203920036554337 + <_> + + <_> + + + + <_>0 8 5 8 -1. + <_>0 12 5 4 2. + 0 + -0.0121389999985695 + -0.6973189711570740 + 0.0157120004296303 + <_> + + <_> + + + + <_>17 3 6 6 -1. + <_>17 6 6 3 2. + 0 + -0.0242379996925592 + 0.3459329903125763 + 0.0714699998497963 + <_> + + <_> + + + + <_>1 3 6 6 -1. + <_>1 6 6 3 2. + 0 + -0.0252720005810261 + -0.8758329749107361 + -9.8240002989768982e-003 + <_> + + <_> + + + + <_>18 2 6 9 -1. + <_>18 5 6 3 3. + 0 + 0.0125970002263784 + 0.2364999949932098 + -0.2873120009899139 + <_> + + <_> + + + + <_>0 2 6 9 -1. + <_>0 5 6 3 3. + 0 + 0.0573309995234013 + -0.0615309998393059 + -2.2326040267944336 + <_> + + <_> + + + + <_>3 3 18 6 -1. + <_>3 5 18 2 3. + 0 + 0.0166710000485182 + -0.1985010057687759 + 0.4081070125102997 + <_> + + <_> + + + + <_>2 3 9 6 -1. + <_>2 5 9 2 3. + 0 + -0.0228189993649721 + 0.9648759961128235 + -0.2024569958448410 + <_> + + <_> + + + + <_>9 3 10 8 -1. + <_>14 3 5 4 2. + <_>9 7 5 4 2. + 0 + 3.7000001611886546e-005 + -0.0589089989662170 + 0.2705540060997009 + <_> + + <_> + + + + <_>5 3 10 8 -1. + <_>5 3 5 4 2. + <_>10 7 5 4 2. + 0 + -7.6700001955032349e-003 + -0.4531710147857666 + 0.0896280035376549 + <_> + + <_> + + + + <_>10 11 6 12 -1. + <_>10 11 3 12 2. + 0 + 0.0940859988331795 + 0.1160459965467453 + -1.0951169729232788 + <_> + + <_> + + + + <_>8 11 6 11 -1. + <_>11 11 3 11 2. + 0 + -0.0622670017182827 + 1.8096530437469482 + -0.1477320045232773 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 8 5 4 2. + 0 + 0.0174160003662109 + 0.2306820005178452 + -0.4241760075092316 + <_> + + <_> + + + + <_>9 6 6 7 -1. + <_>12 6 3 7 2. + 0 + -0.0220660008490086 + 0.4927029907703400 + -0.2063090056180954 + <_> + + <_> + + + + <_>5 18 18 3 -1. + <_>5 19 18 1 3. + 0 + -0.0104040000587702 + 0.6092429757118225 + 0.0281300004571676 + <_> + + <_> + + + + <_>8 4 6 9 -1. + <_>10 4 2 9 3. + 0 + -9.3670003116130829e-003 + 0.4017120003700256 + -0.2168170064687729 + <_> + + <_> + + + + <_>8 1 9 7 -1. + <_>11 1 3 7 3. + 0 + -0.0290399994701147 + -0.8487650156021118 + 0.1424680054187775 + <_> + + <_> + + + + <_>6 11 6 6 -1. + <_>9 11 3 6 2. + 0 + -0.0210619997233152 + -0.7919830083847046 + -0.0125959999859333 + <_> + + <_> + + + + <_>14 12 4 11 -1. + <_>14 12 2 11 2. + 0 + -0.0370009988546371 + -0.6748890280723572 + 0.1283040046691895 + <_> + + <_> + + + + <_>6 12 4 11 -1. + <_>8 12 2 11 2. + 0 + 0.0107359997928143 + 0.0367799997329712 + -0.6339300274848938 + <_> + + <_> + + + + <_>8 0 12 18 -1. + <_>12 0 4 18 3. + 0 + 0.1636759936809540 + 0.1380389928817749 + -0.4718900024890900 + <_> + + <_> + + + + <_>2 12 10 5 -1. + <_>7 12 5 5 2. + 0 + 0.0949179977178574 + -0.1385570019483566 + 1.9492419958114624 + <_> + + <_> + + + + <_>2 20 22 3 -1. + <_>2 21 22 1 3. + 0 + 0.0352619998157024 + 0.1372189968824387 + -2.1186530590057373 + <_> + + <_> + + + + <_>0 4 2 20 -1. + <_>1 4 1 20 2. + 0 + 0.0128110004588962 + -0.2000810056924820 + 0.4950779974460602 + -3.5939640998840332 + 15 + -1 + <_> + + + <_> + + <_> + + + + <_>0 2 24 4 -1. + <_>8 2 8 4 3. + 0 + 0.1390440016984940 + -0.4658119976520538 + 0.7643160223960877 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 10 10 2 2. + 0 + 0.0119169997051358 + -0.9439899921417236 + 0.3972629904747009 + <_> + + <_> + + + + <_>6 7 8 10 -1. + <_>6 7 4 5 2. + <_>10 12 4 5 2. + 0 + -0.0100069995969534 + 0.3271879851818085 + -0.6336740255355835 + <_> + + <_> + + + + <_>14 0 6 14 -1. + <_>17 0 3 7 2. + <_>14 7 3 7 2. + 0 + -6.0479999519884586e-003 + 0.2742789983749390 + -0.5744699835777283 + <_> + + <_> + + + + <_>4 11 5 8 -1. + <_>4 15 5 4 2. + 0 + -1.2489999644458294e-003 + 0.2362930029630661 + -0.6859350204467773 + <_> + + <_> + + + + <_>2 0 20 9 -1. + <_>2 3 20 3 3. + 0 + 0.0323820002377033 + -0.5763019919395447 + 0.2749269902706146 + <_> + + <_> + + + + <_>6 7 12 8 -1. + <_>6 7 6 4 2. + <_>12 11 6 4 2. + 0 + -0.0139579996466637 + -0.6106150150299072 + 0.2454160004854202 + <_> + + <_> + + + + <_>9 17 6 6 -1. + <_>9 20 6 3 2. + 0 + 1.1159999994561076e-003 + -0.5653910040855408 + 0.2717930078506470 + <_> + + <_> + + + + <_>7 10 10 4 -1. + <_>7 12 10 2 2. + 0 + 2.7000000045518391e-005 + -0.8023599982261658 + 0.1150910034775734 + <_> + + <_> + + + + <_>6 5 12 9 -1. + <_>10 5 4 9 3. + 0 + -2.5700000696815550e-004 + -0.8120589852333069 + 0.2384469956159592 + <_> + + <_> + + + + <_>5 11 6 8 -1. + <_>8 11 3 8 2. + 0 + 4.0460000745952129e-003 + 0.1390960067510605 + -0.6616320013999939 + <_> + + <_> + + + + <_>18 4 4 17 -1. + <_>18 4 2 17 2. + 0 + 0.0143560003489256 + -0.1648519933223724 + 0.4190169870853424 + <_> + + <_> + + + + <_>0 0 6 6 -1. + <_>3 0 3 6 2. + 0 + -0.0553749985992908 + 1.4425870180130005 + -0.1882019937038422 + <_> + + <_> + + + + <_>18 4 4 17 -1. + <_>18 4 2 17 2. + 0 + 0.0935949981212616 + 0.1354829967021942 + -0.9163609743118286 + <_> + + <_> + + + + <_>2 4 4 17 -1. + <_>4 4 2 17 2. + 0 + 0.0266249999403954 + -0.3374829888343811 + 0.3923360109329224 + <_> + + <_> + + + + <_>5 18 19 3 -1. + <_>5 19 19 1 3. + 0 + 3.7469998933374882e-003 + -0.1161540001630783 + 0.4439930021762848 + <_> + + <_> + + + + <_>11 0 2 18 -1. + <_>11 9 2 9 2. + 0 + -0.0318860001862049 + -0.9949830174446106 + 1.6120000509545207e-003 + <_> + + <_> + + + + <_>15 4 2 18 -1. + <_>15 13 2 9 2. + 0 + -0.0226000007241964 + -0.4806739985942841 + 0.1700730025768280 + <_> + + <_> + + + + <_>7 4 2 18 -1. + <_>7 13 2 9 2. + 0 + 0.0252020005136728 + 0.0355800017714500 + -0.8021540045738220 + <_> + + <_> + + + + <_>7 11 10 8 -1. + <_>12 11 5 4 2. + <_>7 15 5 4 2. + 0 + -0.0310369990766048 + -1.0895340442657471 + 0.1808190047740936 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>12 6 2 9 2. + 0 + -0.0264759995043278 + 0.9567120075225830 + -0.2104939967393875 + <_> + + <_> + + + + <_>10 0 6 9 -1. + <_>12 0 2 9 3. + 0 + -0.0138539997860789 + -1.0370320081710815 + 0.2216670066118240 + <_> + + <_> + + + + <_>2 9 16 8 -1. + <_>2 9 8 4 2. + <_>10 13 8 4 2. + 0 + -0.0629250034689903 + 0.9019939899444580 + -0.1908529996871948 + <_> + + <_> + + + + <_>14 15 6 9 -1. + <_>14 18 6 3 3. + 0 + -0.0447509996592999 + -1.0119110345840454 + 0.1469119936227799 + <_> + + <_> + + + + <_>8 7 6 9 -1. + <_>10 7 2 9 3. + 0 + -0.0204280000180006 + 0.6162449717521668 + -0.2355269938707352 + <_> + + <_> + + + + <_>14 15 6 9 -1. + <_>14 18 6 3 3. + 0 + -8.0329999327659607e-003 + -0.0832799971103668 + 0.2172870039939880 + <_> + + <_> + + + + <_>3 12 12 6 -1. + <_>3 14 12 2 3. + 0 + 8.7280003353953362e-003 + 0.0654589980840683 + -0.6031870245933533 + <_> + + <_> + + + + <_>14 12 9 6 -1. + <_>14 14 9 2 3. + 0 + -0.0272020008414984 + -0.9344739913940430 + 0.1527000069618225 + <_> + + <_> + + + + <_>1 12 9 6 -1. + <_>1 14 9 2 3. + 0 + -0.0164710003882647 + -0.8417710065841675 + 0.0133320000022650 + <_> + + <_> + + + + <_>3 7 18 3 -1. + <_>3 8 18 1 3. + 0 + -0.0137440003454685 + 0.6056720018386841 + -0.0920210033655167 + <_> + + <_> + + + + <_>1 7 22 6 -1. + <_>1 9 22 2 3. + 0 + 0.0291649997234344 + -0.0281140003353357 + -1.4014569520950317 + <_> + + <_> + + + + <_>18 4 6 6 -1. + <_>18 7 6 3 2. + 0 + 0.0374570004642010 + 0.1308059990406036 + -0.4938249886035919 + <_> + + <_> + + + + <_>0 4 6 6 -1. + <_>0 7 6 3 2. + 0 + -0.0250700004398823 + -1.1289390325546265 + -0.0146000003442168 + <_> + + <_> + + + + <_>5 11 16 6 -1. + <_>5 14 16 3 2. + 0 + -0.0638120025396347 + 0.7587159872055054 + -1.8200000049546361e-003 + <_> + + <_> + + + + <_>6 16 9 4 -1. + <_>6 18 9 2 2. + 0 + -9.3900002539157867e-003 + 0.2993640005588532 + -0.2948780059814453 + <_> + + <_> + + + + <_>14 15 6 9 -1. + <_>14 18 6 3 3. + 0 + -7.6000002445653081e-004 + 0.0197250004857779 + 0.1999389976263046 + <_> + + <_> + + + + <_>4 15 6 9 -1. + <_>4 18 6 3 3. + 0 + -0.0217409990727901 + -0.8524789810180664 + 0.0491699986159801 + <_> + + <_> + + + + <_>15 1 6 23 -1. + <_>17 1 2 23 3. + 0 + -0.0178699996322393 + -0.0599859990179539 + 0.1522250026464462 + <_> + + <_> + + + + <_>0 21 24 3 -1. + <_>8 21 8 3 3. + 0 + -0.0248310007154942 + 0.3560340106487274 + -0.2625989913940430 + <_> + + <_> + + + + <_>0 20 24 4 -1. + <_>8 20 8 4 3. + 0 + 0.1571550071239471 + 1.5599999460391700e-004 + 1.0428730249404907 + <_> + + <_> + + + + <_>3 1 6 23 -1. + <_>5 1 2 23 3. + 0 + 0.0690269991755486 + -0.0330069996416569 + -1.1796669960021973 + <_> + + <_> + + + + <_>3 17 18 3 -1. + <_>3 18 18 1 3. + 0 + -0.0110219996422529 + 0.5898770093917847 + -0.0576479993760586 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + -0.0138349998742342 + 0.5950279831886292 + -0.2441859990358353 + <_> + + <_> + + + + <_>1 16 22 4 -1. + <_>12 16 11 2 2. + <_>1 18 11 2 2. + 0 + -0.0309410002082586 + -1.1723799705505371 + 0.1690700054168701 + <_> + + <_> + + + + <_>0 16 9 6 -1. + <_>0 18 9 2 3. + 0 + 0.0212580002844334 + -0.0189009997993708 + -1.0684759616851807 + <_> + + <_> + + + + <_>2 10 21 3 -1. + <_>9 10 7 3 3. + 0 + 0.0930799990892410 + 0.1630560010671616 + -1.3375270366668701 + <_> + + <_> + + + + <_>2 18 12 6 -1. + <_>2 18 6 3 2. + <_>8 21 6 3 2. + 0 + 0.0296359993517399 + -0.2252479940652847 + 0.4540010094642639 + <_> + + <_> + + + + <_>0 5 24 4 -1. + <_>0 7 24 2 2. + 0 + -1.2199999764561653e-004 + 0.2740910053253174 + -0.3737139999866486 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0420980006456375 + -0.7582880258560181 + 0.0171370003372431 + <_> + + <_> + + + + <_>10 7 6 12 -1. + <_>10 13 6 6 2. + 0 + -0.0225050002336502 + -0.2275930047035217 + 0.2369869947433472 + <_> + + <_> + + + + <_>6 6 6 9 -1. + <_>8 6 2 9 3. + 0 + -0.0128629999235272 + 0.1925240010023117 + -0.3212710022926331 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + 0.0278600007295609 + 0.1672369986772537 + -1.0209059715270996 + <_> + + <_> + + + + <_>9 7 6 9 -1. + <_>11 7 2 9 3. + 0 + -0.0278079994022846 + 1.2824759483337402 + -0.1722529977560043 + <_> + + <_> + + + + <_>2 1 20 3 -1. + <_>2 2 20 1 3. + 0 + -6.1630001291632652e-003 + -0.5407289862632752 + 0.2388570010662079 + <_> + + <_> + + + + <_>1 18 12 6 -1. + <_>1 18 6 3 2. + <_>7 21 6 3 2. + 0 + -0.0204360000789166 + 0.6335539817810059 + -0.2109059989452362 + <_> + + <_> + + + + <_>13 2 4 13 -1. + <_>13 2 2 13 2. + 0 + -0.0123079996556044 + -0.4977819919586182 + 0.1740259975194931 + <_> + + <_> + + + + <_>6 7 12 4 -1. + <_>12 7 6 4 2. + 0 + -0.0404939986765385 + -1.1848740577697754 + -0.0338909998536110 + <_> + + <_> + + + + <_>10 1 4 13 -1. + <_>10 1 2 13 2. + 0 + 0.0296570006757975 + 0.0217409990727901 + 1.0069919824600220 + <_> + + <_> + + + + <_>6 0 3 18 -1. + <_>7 0 1 18 3. + 0 + 6.8379999138414860e-003 + 0.0292179994285107 + -0.5990629792213440 + <_> + + <_> + + + + <_>14 3 10 5 -1. + <_>14 3 5 5 2. + 0 + 0.0161649994552135 + -0.2100079953670502 + 0.3763729929924011 + <_> + + <_> + + + + <_>6 15 12 8 -1. + <_>10 15 4 8 3. + 0 + 0.0501930005848408 + 2.5319999549537897e-003 + -0.7166820168495178 + <_> + + <_> + + + + <_>9 10 6 9 -1. + <_>11 10 2 9 3. + 0 + 1.9680000841617584e-003 + -0.2192140072584152 + 0.3229869902133942 + <_> + + <_> + + + + <_>8 3 4 9 -1. + <_>10 3 2 9 2. + 0 + 0.0249799992889166 + -9.6840001642704010e-003 + -0.7757290005683899 + <_> + + <_> + + + + <_>17 0 6 14 -1. + <_>20 0 3 7 2. + <_>17 7 3 7 2. + 0 + -0.0158099997788668 + 0.4463750123977661 + -0.0617600008845329 + <_> + + <_> + + + + <_>1 0 6 14 -1. + <_>1 0 3 7 2. + <_>4 7 3 7 2. + 0 + 0.0372069999575615 + -0.2049539983272553 + 0.5772219896316528 + <_> + + <_> + + + + <_>14 0 6 16 -1. + <_>17 0 3 8 2. + <_>14 8 3 8 2. + 0 + -0.0792649984359741 + -0.7674540281295776 + 0.1255040019750595 + <_> + + <_> + + + + <_>7 4 4 10 -1. + <_>9 4 2 10 2. + 0 + -0.0171520002186298 + -1.4121830463409424 + -0.0517040006816387 + <_> + + <_> + + + + <_>3 17 18 6 -1. + <_>12 17 9 3 2. + <_>3 20 9 3 2. + 0 + 0.0327400006353855 + 0.1933400034904480 + -0.6363369822502136 + <_> + + <_> + + + + <_>1 20 22 4 -1. + <_>12 20 11 4 2. + 0 + -0.1175699979066849 + 0.8432540297508240 + -0.1801860034465790 + <_> + + <_> + + + + <_>14 3 10 5 -1. + <_>14 3 5 5 2. + 0 + 0.1205720007419586 + 0.1253000050783157 + -2.1213600635528564 + <_> + + <_> + + + + <_>0 3 10 5 -1. + <_>5 3 5 5 2. + 0 + 4.2779999785125256e-003 + -0.4660440087318420 + 0.0896439999341965 + <_> + + <_> + + + + <_>12 6 12 16 -1. + <_>16 6 4 16 3. + 0 + -0.0725449994206429 + 0.5182650089263916 + 0.0168239995837212 + <_> + + <_> + + + + <_>0 6 12 16 -1. + <_>4 6 4 16 3. + 0 + 0.1771059930324554 + -0.0309100002050400 + -1.1046639680862427 + <_> + + <_> + + + + <_>10 9 5 15 -1. + <_>10 14 5 5 3. + 0 + 8.4229996427893639e-003 + 0.2444580048322678 + -0.3861309885978699 + <_> + + <_> + + + + <_>1 18 21 2 -1. + <_>1 19 21 1 2. + 0 + -0.0130350003018975 + 0.9800440073013306 + -0.1701650023460388 + <_> + + <_> + + + + <_>15 0 9 6 -1. + <_>15 2 9 2 3. + 0 + 0.0189120005816221 + 0.2024849951267242 + -0.3854590058326721 + <_> + + <_> + + + + <_>6 1 12 4 -1. + <_>12 1 6 4 2. + 0 + 0.0214479994028807 + -0.2571719884872437 + 0.3518120050430298 + <_> + + <_> + + + + <_>6 0 12 12 -1. + <_>12 0 6 6 2. + <_>6 6 6 6 2. + 0 + 0.0633570030331612 + 0.1699479967355728 + -0.9138380289077759 + <_> + + <_> + + + + <_>8 10 8 12 -1. + <_>8 10 4 6 2. + <_>12 16 4 6 2. + 0 + -0.0324359983205795 + -0.8568159937858582 + -0.0216809995472431 + <_> + + <_> + + + + <_>14 16 10 8 -1. + <_>19 16 5 4 2. + <_>14 20 5 4 2. + 0 + -0.0235649999231100 + 0.5611559748649597 + -2.2400000307243317e-004 + <_> + + <_> + + + + <_>0 16 10 8 -1. + <_>0 16 5 4 2. + <_>5 20 5 4 2. + 0 + 0.0187890008091927 + -0.2545979917049408 + 0.3451290130615234 + <_> + + <_> + + + + <_>10 12 12 5 -1. + <_>14 12 4 5 3. + 0 + 0.0310420002788305 + 7.5719999149441719e-003 + 0.3480019867420197 + <_> + + <_> + + + + <_>6 16 10 8 -1. + <_>6 16 5 4 2. + <_>11 20 5 4 2. + 0 + -0.0112269995734096 + -0.6021980047225952 + 0.0428149998188019 + <_> + + <_> + + + + <_>7 6 12 6 -1. + <_>13 6 6 3 2. + <_>7 9 6 3 2. + 0 + -0.0128459995612502 + 0.4202040135860443 + -0.0538010001182556 + <_> + + <_> + + + + <_>9 6 4 18 -1. + <_>9 6 2 9 2. + <_>11 15 2 9 2. + 0 + -0.0127919996157289 + 0.2272450029850006 + -0.3239800035953522 + <_> + + <_> + + + + <_>10 9 6 14 -1. + <_>13 9 3 7 2. + <_>10 16 3 7 2. + 0 + 0.0686519965529442 + 0.0935320034623146 + 10. + <_> + + <_> + + + + <_>8 9 6 14 -1. + <_>8 9 3 7 2. + <_>11 16 3 7 2. + 0 + 5.2789999172091484e-003 + -0.2692629992961884 + 0.3330320119857788 + <_> + + <_> + + + + <_>7 4 11 12 -1. + <_>7 10 11 6 2. + 0 + -0.0387790016829968 + -0.7236530184745789 + 0.1780650019645691 + <_> + + <_> + + + + <_>4 8 6 16 -1. + <_>4 8 3 8 2. + <_>7 16 3 8 2. + 0 + 6.1820000410079956e-003 + -0.3511939942836762 + 0.1658630073070526 + <_> + + <_> + + + + <_>17 3 4 21 -1. + <_>17 10 4 7 3. + 0 + 0.1751520037651062 + 0.1162310019135475 + -1.5419290065765381 + <_> + + <_> + + + + <_>3 3 4 21 -1. + <_>3 10 4 7 3. + 0 + 0.1162799969315529 + -9.1479998081922531e-003 + -0.9984260201454163 + <_> + + <_> + + + + <_>10 1 8 18 -1. + <_>14 1 4 9 2. + <_>10 10 4 9 2. + 0 + -0.0229640007019043 + 0.2056539952754974 + 0.0154320001602173 + <_> + + <_> + + + + <_>2 5 16 8 -1. + <_>2 5 8 4 2. + <_>10 9 8 4 2. + 0 + -0.0514100007712841 + 0.5807240009307861 + -0.2011840045452118 + <_> + + <_> + + + + <_>3 6 18 12 -1. + <_>3 10 18 4 3. + 0 + 0.2247419953346252 + 0.0187289994210005 + 1.0829299688339233 + <_> + + <_> + + + + <_>4 10 16 12 -1. + <_>4 14 16 4 3. + 0 + 9.4860000535845757e-003 + -0.3317129909992218 + 0.1990299969911575 + <_> + + <_> + + + + <_>15 4 8 20 -1. + <_>19 4 4 10 2. + <_>15 14 4 10 2. + 0 + -0.1184630021452904 + 1.3711010217666626 + 0.0689269974827766 + <_> + + <_> + + + + <_>7 2 9 6 -1. + <_>10 2 3 6 3. + 0 + 0.0378109999001026 + -9.3600002583116293e-004 + -0.8399699926376343 + <_> + + <_> + + + + <_>15 4 8 20 -1. + <_>19 4 4 10 2. + <_>15 14 4 10 2. + 0 + 0.0222020000219345 + -0.0119639998301864 + 0.3667399883270264 + <_> + + <_> + + + + <_>1 4 8 20 -1. + <_>1 4 4 10 2. + <_>5 14 4 10 2. + 0 + -0.0363660007715225 + 0.3786650002002716 + -0.2771480083465576 + <_> + + <_> + + + + <_>11 8 8 14 -1. + <_>15 8 4 7 2. + <_>11 15 4 7 2. + 0 + -0.1318469941616058 + -2.7481179237365723 + 0.1066690012812614 + <_> + + <_> + + + + <_>5 8 8 14 -1. + <_>5 8 4 7 2. + <_>9 15 4 7 2. + 0 + -0.0416559986770153 + 0.4752430021762848 + -0.2324980050325394 + <_> + + <_> + + + + <_>10 13 5 8 -1. + <_>10 17 5 4 2. + 0 + -0.0331519991159439 + -0.5792940258979797 + 0.1743440032005310 + <_> + + <_> + + + + <_>4 13 7 9 -1. + <_>4 16 7 3 3. + 0 + 0.0157699994742870 + -0.0112840002402663 + -0.8370140194892883 + <_> + + <_> + + + + <_>0 13 24 10 -1. + <_>0 18 24 5 2. + 0 + -0.0393630005419254 + 0.3482159972190857 + -0.1745540052652359 + <_> + + <_> + + + + <_>4 2 8 11 -1. + <_>8 2 4 11 2. + 0 + -0.0678490027785301 + 1.4225699901580811 + -0.1476559937000275 + <_> + + <_> + + + + <_>10 2 8 16 -1. + <_>14 2 4 8 2. + <_>10 10 4 8 2. + 0 + -0.0267750006169081 + 0.2394700050354004 + 0.0132719995453954 + <_> + + <_> + + + + <_>0 2 24 6 -1. + <_>0 2 12 3 2. + <_>12 5 12 3 2. + 0 + 0.0399190001189709 + -8.9999996125698090e-003 + -0.7593889832496643 + <_> + + <_> + + + + <_>6 0 12 9 -1. + <_>6 3 12 3 3. + 0 + 0.1006560027599335 + -0.0186850000172853 + 0.7624530196189880 + <_> + + <_> + + + + <_>1 2 12 12 -1. + <_>1 2 6 6 2. + <_>7 8 6 6 2. + 0 + -0.0810220018029213 + -0.9043909907341003 + -8.5880002006888390e-003 + <_> + + <_> + + + + <_>18 5 6 9 -1. + <_>18 8 6 3 3. + 0 + -0.0212580002844334 + -0.2131959944963455 + 0.2191970050334930 + <_> + + <_> + + + + <_>4 3 8 10 -1. + <_>4 3 4 5 2. + <_>8 8 4 5 2. + 0 + -0.0106309996917844 + 0.1959809958934784 + -0.3576810061931610 + <_> + + <_> + + + + <_>6 21 18 3 -1. + <_>6 22 18 1 3. + 0 + 8.1300002057105303e-004 + -0.0927949994802475 + 0.2614589929580689 + <_> + + <_> + + + + <_>1 10 18 2 -1. + <_>1 11 18 1 2. + 0 + 3.4650000743567944e-003 + -0.5533609986305237 + 0.0273860003799200 + <_> + + <_> + + + + <_>1 10 22 3 -1. + <_>1 11 22 1 3. + 0 + 0.0188359990715981 + 0.1844609975814819 + -0.6693429946899414 + <_> + + <_> + + + + <_>2 8 12 9 -1. + <_>2 11 12 3 3. + 0 + -0.0256319995969534 + 1.9382879734039307 + -0.1470890045166016 + <_> + + <_> + + + + <_>12 8 12 6 -1. + <_>18 8 6 3 2. + <_>12 11 6 3 2. + 0 + -4.0939999744296074e-003 + -0.2645159959793091 + 0.2073320001363754 + <_> + + <_> + + + + <_>0 8 12 6 -1. + <_>0 8 6 3 2. + <_>6 11 6 3 2. + 0 + -8.9199998183175921e-004 + -0.5503159761428833 + 0.0503749996423721 + <_> + + <_> + + + + <_>10 15 6 9 -1. + <_>12 15 2 9 3. + 0 + -0.0495180003345013 + -2.5615389347076416 + 0.1314170062541962 + <_> + + <_> + + + + <_>7 13 9 6 -1. + <_>7 15 9 2 3. + 0 + 0.0116809997707605 + -0.2481980025768280 + 0.3998270034790039 + <_> + + <_> + + + + <_>9 8 7 12 -1. + <_>9 14 7 6 2. + 0 + 0.0345639996230602 + 0.1617880016565323 + -0.7141889929771423 + <_> + + <_> + + + + <_>4 13 9 6 -1. + <_>7 13 3 6 3. + 0 + -8.2909995689988136e-003 + 0.2218009978532791 + -0.2918170094490051 + <_> + + <_> + + + + <_>6 15 18 4 -1. + <_>12 15 6 4 3. + 0 + -0.0223580002784729 + 0.3104409873485565 + -2.7280000504106283e-003 + <_> + + <_> + + + + <_>5 4 4 16 -1. + <_>7 4 2 16 2. + 0 + -0.0308010000735521 + -0.9567270278930664 + -8.3400001749396324e-003 + <_> + + <_> + + + + <_>10 15 6 9 -1. + <_>12 15 2 9 3. + 0 + 0.0437790006399155 + 0.1255690008401871 + -1.1759619712829590 + <_> + + <_> + + + + <_>8 15 6 9 -1. + <_>10 15 2 9 3. + 0 + 0.0430460013449192 + -0.0588769987225533 + -1.8568470478057861 + <_> + + <_> + + + + <_>9 11 12 10 -1. + <_>15 11 6 5 2. + <_>9 16 6 5 2. + 0 + 0.0271889995783567 + 0.0428580008447170 + 0.3903670012950897 + <_> + + <_> + + + + <_>3 6 14 6 -1. + <_>3 8 14 2 3. + 0 + 9.4149997457861900e-003 + -0.0435670018196106 + -1.1094470024108887 + <_> + + <_> + + + + <_>4 2 17 8 -1. + <_>4 6 17 4 2. + 0 + 0.0943119972944260 + 0.0402569994330406 + 0.9844229817390442 + <_> + + <_> + + + + <_>6 2 12 21 -1. + <_>6 9 12 7 3. + 0 + 0.1702509969472885 + 0.0295100007206202 + -0.6950929760932922 + <_> + + <_> + + + + <_>8 1 9 9 -1. + <_>8 4 9 3 3. + 0 + -0.0471480004489422 + 1.0338569879531860 + 0.0676020011305809 + <_> + + <_> + + + + <_>0 7 24 3 -1. + <_>12 7 12 3 2. + 0 + 0.1118630021810532 + -0.0686829984188080 + -2.4985830783843994 + <_> + + <_> + + + + <_>11 6 9 10 -1. + <_>11 11 9 5 2. + 0 + -0.0143539998680353 + -0.5948190093040466 + 0.1500169932842255 + <_> + + <_> + + + + <_>2 11 18 3 -1. + <_>2 12 18 1 3. + 0 + 0.0340240001678467 + -0.0648230016231537 + -2.1382639408111572 + <_> + + <_> + + + + <_>8 16 9 4 -1. + <_>8 18 9 2 2. + 0 + 0.0216019991785288 + 0.0553099997341633 + 0.7829290032386780 + <_> + + <_> + + + + <_>0 0 9 6 -1. + <_>0 2 9 2 3. + 0 + 0.0217719990760088 + -7.1279997937381268e-003 + -0.7214810252189636 + <_> + + <_> + + + + <_>0 11 24 6 -1. + <_>0 13 24 2 3. + 0 + 0.0824169963598251 + 0.1460949927568436 + -1.3636670112609863 + <_> + + <_> + + + + <_>2 9 20 6 -1. + <_>2 12 20 3 2. + 0 + 0.0846719965338707 + -0.1778469979763031 + 0.7285770177841187 + <_> + + <_> + + + + <_>4 5 16 12 -1. + <_>12 5 8 6 2. + <_>4 11 8 6 2. + 0 + -0.0551280006766319 + -0.5940240025520325 + 0.1935780048370361 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0648230016231537 + -1.0783840417861938 + -0.0407340005040169 + <_> + + <_> + + + + <_>7 3 10 4 -1. + <_>7 5 10 2 2. + 0 + -0.0227690003812313 + 0.7790020108222961 + 3.4960000775754452e-003 + <_> + + <_> + + + + <_>9 15 6 8 -1. + <_>9 19 6 4 2. + 0 + 0.0547560006380081 + -0.0656839981675148 + -1.8188409805297852 + <_> + + <_> + + + + <_>17 0 7 10 -1. + <_>17 5 7 5 2. + 0 + -8.9000001025851816e-005 + -0.0178919993340969 + 0.2076829969882965 + <_> + + <_> + + + + <_>0 0 7 10 -1. + <_>0 5 7 5 2. + 0 + 0.0983619987964630 + -0.0559469982981682 + -1.4153920412063599 + <_> + + <_> + + + + <_>16 1 6 12 -1. + <_>19 1 3 6 2. + <_>16 7 3 6 2. + 0 + -7.0930002257227898e-003 + 0.3413529992103577 + -0.1208989992737770 + <_> + + <_> + + + + <_>1 0 19 8 -1. + <_>1 4 19 4 2. + 0 + 0.0502780005335808 + -0.2628670036792755 + 0.2579729855060577 + <_> + + <_> + + + + <_>12 2 9 4 -1. + <_>12 4 9 2 2. + 0 + -5.7870000600814819e-003 + -0.1317860037088394 + 0.1735019981861115 + <_> + + <_> + + + + <_>3 2 9 4 -1. + <_>3 4 9 2 2. + 0 + 0.0139739997684956 + 0.0285180006176233 + -0.6115220189094544 + <_> + + <_> + + + + <_>12 2 10 6 -1. + <_>12 4 10 2 3. + 0 + 0.0214499998837709 + 0.0261819995939732 + 0.3030659854412079 + <_> + + <_> + + + + <_>3 4 18 2 -1. + <_>12 4 9 2 2. + 0 + -0.0292140003293753 + 0.4494059979915619 + -0.2280309945344925 + <_> + + <_> + + + + <_>12 1 4 9 -1. + <_>12 1 2 9 2. + 0 + 4.8099999548867345e-004 + -0.1987999975681305 + 0.2074449956417084 + <_> + + <_> + + + + <_>8 1 4 9 -1. + <_>10 1 2 9 2. + 0 + 1.7109999898821115e-003 + -0.5403720140457153 + 0.0678659975528717 + <_> + + <_> + + + + <_>10 5 8 10 -1. + <_>14 5 4 5 2. + <_>10 10 4 5 2. + 0 + 8.6660003289580345e-003 + -0.0131280003115535 + 0.5229790210723877 + <_> + + <_> + + + + <_>6 4 12 13 -1. + <_>10 4 4 13 3. + 0 + 0.0636579990386963 + 0.0682990029454231 + -0.4923509955406189 + <_> + + <_> + + + + <_>13 5 6 6 -1. + <_>13 5 3 6 2. + 0 + -0.0279680006206036 + 0.6818389892578125 + 0.0787810012698174 + <_> + + <_> + + + + <_>1 5 12 3 -1. + <_>7 5 6 3 2. + 0 + 0.0489539988338947 + -0.2062239944934845 + 0.5038809776306152 + -3.3933560848236084 + 16 + -1 + <_> + + + <_> + + <_> + + + + <_>7 5 10 6 -1. + <_>7 7 10 2 3. + 0 + -0.0293129999190569 + 0.7128469944000244 + -0.5823069810867310 + <_> + + <_> + + + + <_>2 0 21 5 -1. + <_>9 0 7 5 3. + 0 + 0.1241509988903999 + -0.3686349987983704 + 0.6006720066070557 + <_> + + <_> + + + + <_>0 8 9 9 -1. + <_>0 11 9 3 3. + 0 + 7.9349996522068977e-003 + -0.8600829839706421 + 0.2172469943761826 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0303659997880459 + -0.2718699872493744 + 0.6124789714813232 + <_> + + <_> + + + + <_>0 3 6 7 -1. + <_>3 3 3 7 2. + 0 + 0.0252180006355047 + -0.3474830090999603 + 0.5042769908905029 + <_> + + <_> + + + + <_>9 18 12 6 -1. + <_>15 18 6 3 2. + <_>9 21 6 3 2. + 0 + 0.0100140003487468 + -0.3189899921417236 + 0.4137679934501648 + <_> + + <_> + + + + <_>2 8 20 6 -1. + <_>2 8 10 3 2. + <_>12 11 10 3 2. + 0 + -0.0167750008404255 + -0.6904810070991516 + 0.0948309972882271 + <_> + + <_> + + + + <_>13 2 10 4 -1. + <_>13 4 10 2 2. + 0 + -2.6950000319629908e-003 + -0.2082979977130890 + 0.2373719960451126 + <_> + + <_> + + + + <_>4 5 5 18 -1. + <_>4 11 5 6 3. + 0 + 0.0422579981386662 + -0.4936670064926148 + 0.1817059963941574 + <_> + + <_> + + + + <_>20 4 4 9 -1. + <_>20 4 2 9 2. + 0 + -0.0485050007700920 + 1.3429640531539917 + 0.0397690013051033 + <_> + + <_> + + + + <_>8 6 8 14 -1. + <_>8 13 8 7 2. + 0 + 0.0289929993450642 + 0.0464960001409054 + -0.8164349794387817 + <_> + + <_> + + + + <_>0 1 24 6 -1. + <_>12 1 12 3 2. + <_>0 4 12 3 2. + 0 + -0.0400890000164509 + -0.7119780182838440 + 0.2255389988422394 + <_> + + <_> + + + + <_>0 4 4 9 -1. + <_>2 4 2 9 2. + 0 + -0.0410219989717007 + 1.0057929754257202 + -0.1969020068645477 + <_> + + <_> + + + + <_>3 6 18 3 -1. + <_>3 7 18 1 3. + 0 + 0.0118380002677441 + -0.0126000000163913 + 0.8076710104942322 + <_> + + <_> + + + + <_>3 17 16 6 -1. + <_>3 19 16 2 3. + 0 + -0.0213280003517866 + -0.8202390074729919 + 0.0205249991267920 + <_> + + <_> + + + + <_>13 6 6 9 -1. + <_>13 9 6 3 3. + 0 + -0.0239049997180700 + 0.5421050190925598 + -0.0747670009732246 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>5 6 7 3 2. + <_>12 9 7 3 2. + 0 + 0.0180089995265007 + -0.3382770121097565 + 0.4235860109329224 + <_> + + <_> + + + + <_>13 5 8 10 -1. + <_>17 5 4 5 2. + <_>13 10 4 5 2. + 0 + -0.0436140000820160 + -1.1983489990234375 + 0.1556620001792908 + <_> + + <_> + + + + <_>2 2 20 3 -1. + <_>2 3 20 1 3. + 0 + -9.2449998483061790e-003 + -0.8902999758720398 + 0.0110039999708533 + <_> + + <_> + + + + <_>9 2 9 6 -1. + <_>12 2 3 6 3. + 0 + 0.0474850013852119 + 0.1666409969329834 + -0.9076449871063232 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + -0.0142339998856187 + 0.6269519925117493 + -0.2579120099544525 + <_> + + <_> + + + + <_>12 3 4 11 -1. + <_>12 3 2 11 2. + 0 + 3.8010000716894865e-003 + -0.2822999954223633 + 0.2662459909915924 + <_> + + <_> + + + + <_>8 3 4 11 -1. + <_>10 3 2 11 2. + 0 + 3.4330000635236502e-003 + -0.6377199888229370 + 0.0984229966998100 + <_> + + <_> + + + + <_>8 3 8 10 -1. + <_>12 3 4 5 2. + <_>8 8 4 5 2. + 0 + -0.0292210001498461 + -0.7676990032196045 + 0.2263450026512146 + <_> + + <_> + + + + <_>11 1 2 18 -1. + <_>12 1 1 18 2. + 0 + -6.4949998632073402e-003 + 0.4560010135173798 + -0.2652890086174011 + <_> + + <_> + + + + <_>9 2 9 6 -1. + <_>12 2 3 6 3. + 0 + -0.0300340000540018 + -0.7655109763145447 + 0.1400929987430573 + <_> + + <_> + + + + <_>0 2 19 3 -1. + <_>0 3 19 1 3. + 0 + 7.8360000625252724e-003 + 0.0467559993267059 + -0.7235620021820068 + <_> + + <_> + + + + <_>9 14 9 6 -1. + <_>9 16 9 2 3. + 0 + 8.8550001382827759e-003 + -0.0491419993340969 + 0.5147269964218140 + <_> + + <_> + + + + <_>1 8 18 5 -1. + <_>7 8 6 5 3. + 0 + 0.0959739983081818 + -0.0200689993798733 + -1.0850950479507446 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0328769981861115 + -0.9587529897689819 + 0.1454360038042069 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + -0.0133840003982186 + -0.7001360058784485 + 0.0291579999029636 + <_> + + <_> + + + + <_>13 6 4 15 -1. + <_>13 11 4 5 3. + 0 + 0.0152359995990992 + -0.2823570072650909 + 0.2536799907684326 + <_> + + <_> + + + + <_>1 5 18 3 -1. + <_>1 6 18 1 3. + 0 + 0.0120540000498295 + -0.2530339956283569 + 0.4652670025825501 + <_> + + <_> + + + + <_>9 7 14 6 -1. + <_>9 9 14 2 3. + 0 + -0.0762950032949448 + -0.6991580128669739 + 0.1321720033884049 + <_> + + <_> + + + + <_>2 16 18 3 -1. + <_>2 17 18 1 3. + 0 + -0.0120400004088879 + 0.4589459896087647 + -0.2385649979114533 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + 0.0219160001724958 + 0.1826860010623932 + -0.6162970066070557 + <_> + + <_> + + + + <_>0 8 12 6 -1. + <_>0 8 6 3 2. + <_>6 11 6 3 2. + 0 + -2.7330000884830952e-003 + -0.6325790286064148 + 0.0342190004885197 + <_> + + <_> + + + + <_>9 13 7 8 -1. + <_>9 17 7 4 2. + 0 + -0.0486520007252693 + -1.0297729969024658 + 0.1738650053739548 + <_> + + <_> + + + + <_>2 17 20 3 -1. + <_>2 18 20 1 3. + 0 + -0.0104639995843172 + 0.3475730121135712 + -0.2746410071849823 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + -6.6550001502037048e-003 + -0.2898029983043671 + 0.2403790056705475 + <_> + + <_> + + + + <_>4 0 15 4 -1. + <_>4 2 15 2 2. + 0 + 8.5469996556639671e-003 + -0.4434050023555756 + 0.1426739990711212 + <_> + + <_> + + + + <_>17 2 6 6 -1. + <_>17 5 6 3 2. + 0 + 0.0199139993637800 + 0.1774040013551712 + -0.2409629970788956 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>0 6 6 3 3. + 0 + 0.0220129992812872 + -0.0108120003715158 + -0.9469079971313477 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + -0.0521790012717247 + 1.6547499895095825 + 0.0964870005846024 + <_> + + <_> + + + + <_>0 17 9 6 -1. + <_>0 19 9 2 3. + 0 + 0.0196989998221397 + -6.7560002207756042e-003 + -0.8631150126457214 + <_> + + <_> + + + + <_>9 18 12 6 -1. + <_>15 18 6 3 2. + <_>9 21 6 3 2. + 0 + 0.0230400003492832 + -2.3519999813288450e-003 + 0.3853130042552948 + <_> + + <_> + + + + <_>3 15 6 9 -1. + <_>3 18 6 3 3. + 0 + -0.0150380004197359 + -0.6190569996833801 + 0.0310779996216297 + <_> + + <_> + + + + <_>16 13 8 10 -1. + <_>20 13 4 5 2. + <_>16 18 4 5 2. + 0 + -0.0499560013413429 + 0.7065749764442444 + 0.0478809997439384 + <_> + + <_> + + + + <_>0 14 24 4 -1. + <_>8 14 8 4 3. + 0 + -0.0692699998617172 + 0.3921290040016174 + -0.2384800016880035 + <_> + + <_> + + + + <_>13 18 6 6 -1. + <_>13 18 3 6 2. + 0 + 4.7399997711181641e-003 + -0.0243090000003576 + 0.2538630068302155 + <_> + + <_> + + + + <_>0 13 8 10 -1. + <_>0 13 4 5 2. + <_>4 18 4 5 2. + 0 + -0.0339239984750748 + 0.4693039953708649 + -0.2332189977169037 + <_> + + <_> + + + + <_>0 14 24 6 -1. + <_>0 17 24 3 2. + 0 + -0.0162310004234314 + 0.3231920003890991 + -0.2054560035467148 + <_> + + <_> + + + + <_>5 2 12 8 -1. + <_>5 2 6 4 2. + <_>11 6 6 4 2. + 0 + -0.0501930005848408 + -1.2277870178222656 + -0.0407980009913445 + <_> + + <_> + + + + <_>8 9 9 6 -1. + <_>11 9 3 6 3. + 0 + 0.0569440014660358 + 0.0451840013265610 + 0.6019750237464905 + <_> + + <_> + + + + <_>4 3 16 4 -1. + <_>4 5 16 2 2. + 0 + 0.0409369990229607 + -0.1677280068397522 + 0.8981930017471314 + <_> + + <_> + + + + <_>10 2 4 10 -1. + <_>10 7 4 5 2. + 0 + -3.0839999672025442e-003 + 0.3371619880199432 + -0.2724080085754395 + <_> + + <_> + + + + <_>8 4 5 8 -1. + <_>8 8 5 4 2. + 0 + -0.0326000005006790 + -0.8544650077819824 + 0.0196649990975857 + <_> + + <_> + + + + <_>11 5 9 12 -1. + <_>11 9 9 4 3. + 0 + 0.0984809994697571 + 0.0547420009970665 + 0.6382730007171631 + <_> + + <_> + + + + <_>4 5 9 12 -1. + <_>4 9 9 4 3. + 0 + -0.0381850004196167 + 0.5227469801902771 + -0.2338480055332184 + <_> + + <_> + + + + <_>14 6 6 9 -1. + <_>14 9 6 3 3. + 0 + -0.0459170006215572 + 0.6282920241355896 + 0.0328590013086796 + <_> + + <_> + + + + <_>2 4 20 12 -1. + <_>2 8 20 4 3. + 0 + -0.1195549964904785 + -0.6157270073890686 + 0.0346800014376640 + <_> + + <_> + + + + <_>4 4 17 16 -1. + <_>4 12 17 8 2. + 0 + -0.1204439997673035 + -0.8438000082969666 + 0.1653070002794266 + <_> + + <_> + + + + <_>8 7 7 6 -1. + <_>8 10 7 3 2. + 0 + 0.0706190019845963 + -0.0632610023021698 + -1.9863929748535156 + <_> + + <_> + + + + <_>1 9 23 2 -1. + <_>1 10 23 1 2. + 0 + 8.4889996796846390e-003 + -0.1766339987516403 + 0.3801119923591614 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + 0.0227109994739294 + -0.0276059992611408 + -0.9192140102386475 + <_> + + <_> + + + + <_>13 3 4 9 -1. + <_>13 3 2 9 2. + 0 + 4.9700000090524554e-004 + -0.2429320067167282 + 0.2287890017032623 + <_> + + <_> + + + + <_>8 1 6 13 -1. + <_>10 1 2 13 3. + 0 + 0.0346519984304905 + -0.2370599955320358 + 0.5401099920272827 + <_> + + <_> + + + + <_>4 22 18 2 -1. + <_>4 23 18 1 2. + 0 + -4.4700000435113907e-003 + 0.3907899856567383 + -0.1269380003213882 + <_> + + <_> + + + + <_>3 10 9 6 -1. + <_>6 10 3 6 3. + 0 + 0.0236430000513792 + -0.2666369974613190 + 0.3231259882450104 + <_> + + <_> + + + + <_>14 0 2 24 -1. + <_>14 0 1 24 2. + 0 + 0.0128130000084639 + 0.1754080057144165 + -0.6078799962997437 + <_> + + <_> + + + + <_>8 0 2 24 -1. + <_>9 0 1 24 2. + 0 + -0.0112509997561574 + -1.0852589607238770 + -0.0280460007488728 + <_> + + <_> + + + + <_>3 2 18 10 -1. + <_>9 2 6 10 3. + 0 + -0.0415350012481213 + 0.7188739776611328 + 0.0279820002615452 + <_> + + <_> + + + + <_>4 13 15 6 -1. + <_>9 13 5 6 3. + 0 + -0.0934709981083870 + -1.1906319856643677 + -0.0448109991848469 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>9 21 6 3 3. + 0 + -0.0272499993443489 + 0.6294249892234802 + 9.5039997249841690e-003 + <_> + + <_> + + + + <_>9 1 4 11 -1. + <_>11 1 2 11 2. + 0 + -0.0217599999159575 + 1.3233649730682373 + -0.1502700001001358 + <_> + + <_> + + + + <_>9 7 10 4 -1. + <_>9 7 5 4 2. + 0 + -9.6890004351735115e-003 + -0.3394710123538971 + 0.1708579957485199 + <_> + + <_> + + + + <_>7 0 10 18 -1. + <_>12 0 5 18 2. + 0 + 0.0693959966301918 + -0.2565779983997345 + 0.4765209853649139 + <_> + + <_> + + + + <_>12 1 6 16 -1. + <_>14 1 2 16 3. + 0 + 0.0312089994549751 + 0.1415400058031082 + -0.3494200110435486 + <_> + + <_> + + + + <_>6 1 6 16 -1. + <_>8 1 2 16 3. + 0 + -0.0497270002961159 + -1.1675560474395752 + -0.0407579988241196 + <_> + + <_> + + + + <_>18 2 6 6 -1. + <_>18 5 6 3 2. + 0 + -0.0203019995242357 + -0.3948639929294586 + 0.1581490039825440 + <_> + + <_> + + + + <_>3 5 18 2 -1. + <_>3 6 18 1 2. + 0 + -0.0153670003637671 + 0.4930000007152557 + -0.2009209990501404 + <_> + + <_> + + + + <_>18 2 6 6 -1. + <_>18 5 6 3 2. + 0 + -0.0507350005209446 + 1.8736059665679932 + 0.0867300033569336 + <_> + + <_> + + + + <_>0 2 6 6 -1. + <_>0 5 6 3 2. + 0 + -0.0207260008901358 + -0.8893839716911316 + -7.3199998587369919e-003 + <_> + + <_> + + + + <_>13 11 11 6 -1. + <_>13 13 11 2 3. + 0 + -0.0309939999133348 + -1.1664899587631226 + 0.1427460014820099 + <_> + + <_> + + + + <_>5 7 10 4 -1. + <_>10 7 5 4 2. + 0 + -4.4269999489188194e-003 + -0.6681510210037231 + 4.4120000675320625e-003 + <_> + + <_> + + + + <_>11 9 10 7 -1. + <_>11 9 5 7 2. + 0 + -0.0457439981400967 + -0.4795520007610321 + 0.1512199938297272 + <_> + + <_> + + + + <_>3 9 10 7 -1. + <_>8 9 5 7 2. + 0 + 0.0166989993304014 + 0.1204859986901283 + -0.4523589909076691 + <_> + + <_> + + + + <_>16 4 6 6 -1. + <_>16 4 3 6 2. + 0 + 3.2210000790655613e-003 + -0.0776150003075600 + 0.2784659862518311 + <_> + + <_> + + + + <_>5 6 10 8 -1. + <_>5 6 5 4 2. + <_>10 10 5 4 2. + 0 + 0.0244340002536774 + -0.1998710036277771 + 0.6725370287895203 + <_> + + <_> + + + + <_>7 21 16 3 -1. + <_>7 21 8 3 2. + 0 + -0.0796779990196228 + 0.9222239851951599 + 0.0925579965114594 + <_> + + <_> + + + + <_>1 21 16 3 -1. + <_>9 21 8 3 2. + 0 + 0.0445300005376339 + -0.2669050097465515 + 0.3332050144672394 + <_> + + <_> + + + + <_>2 5 22 14 -1. + <_>13 5 11 7 2. + <_>2 12 11 7 2. + 0 + -0.1252830028533936 + -0.5425310134887695 + 0.1397629976272583 + <_> + + <_> + + + + <_>3 10 8 10 -1. + <_>3 10 4 5 2. + <_>7 15 4 5 2. + 0 + 0.0179719999432564 + 0.0182199999690056 + -0.6804850101470947 + <_> + + <_> + + + + <_>17 0 6 12 -1. + <_>20 0 3 6 2. + <_>17 6 3 6 2. + 0 + 0.0191840007901192 + -0.0125839998945594 + 0.5412669777870178 + <_> + + <_> + + + + <_>5 2 6 18 -1. + <_>7 2 2 18 3. + 0 + 0.0400240011513233 + -0.1763879954814911 + 0.7881039977073669 + <_> + + <_> + + + + <_>13 0 6 9 -1. + <_>15 0 2 9 3. + 0 + 0.0135589996352792 + 0.2073760032653809 + -0.4774430096149445 + <_> + + <_> + + + + <_>0 12 7 9 -1. + <_>0 15 7 3 3. + 0 + 0.0162209998816252 + 0.0230769999325275 + -0.6118209958076477 + <_> + + <_> + + + + <_>15 13 8 10 -1. + <_>19 13 4 5 2. + <_>15 18 4 5 2. + 0 + 0.0112290000542998 + -0.0177280008792877 + 0.4176419973373413 + <_> + + <_> + + + + <_>1 0 6 12 -1. + <_>1 0 3 6 2. + <_>4 6 3 6 2. + 0 + 0.0391930006444454 + -0.1894849985837936 + 0.7401930093765259 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + -9.5539996400475502e-003 + 0.4094710052013397 + -0.1350889950990677 + <_> + + <_> + + + + <_>1 13 8 10 -1. + <_>1 13 4 5 2. + <_>5 18 4 5 2. + 0 + 0.0278789997100830 + -0.2035070061683655 + 0.6162539720535278 + <_> + + <_> + + + + <_>3 21 19 2 -1. + <_>3 22 19 1 2. + 0 + -0.0236009992659092 + -1.6967060565948486 + 0.1463319957256317 + <_> + + <_> + + + + <_>6 3 4 13 -1. + <_>8 3 2 13 2. + 0 + 0.0269300006330013 + -0.0304019991308451 + -1.0909470319747925 + <_> + + <_> + + + + <_>5 10 18 3 -1. + <_>5 11 18 1 3. + 0 + 2.8999999631196260e-004 + -0.2007600069046021 + 0.2231409996747971 + <_> + + <_> + + + + <_>9 3 5 12 -1. + <_>9 7 5 4 3. + 0 + -0.0411249995231628 + -0.4524219930171967 + 0.0573920011520386 + <_> + + <_> + + + + <_>11 2 4 15 -1. + <_>11 7 4 5 3. + 0 + 6.6789998672902584e-003 + 0.2382490038871765 + -0.2126210033893585 + <_> + + <_> + + + + <_>4 1 16 4 -1. + <_>4 3 16 2 2. + 0 + 0.0478649996221066 + -0.1819480061531067 + 0.6191840171813965 + <_> + + <_> + + + + <_>6 0 18 3 -1. + <_>6 1 18 1 3. + 0 + -3.1679999083280563e-003 + -0.2739320099353790 + 0.2501730024814606 + <_> + + <_> + + + + <_>5 1 10 8 -1. + <_>5 1 5 4 2. + <_>10 5 5 4 2. + 0 + -8.6230002343654633e-003 + -0.4628030061721802 + 0.0423979982733727 + <_> + + <_> + + + + <_>11 18 12 6 -1. + <_>17 18 6 3 2. + <_>11 21 6 3 2. + 0 + -7.4350000359117985e-003 + 0.4179680049419403 + -1.7079999670386314e-003 + <_> + + <_> + + + + <_>5 15 12 3 -1. + <_>11 15 6 3 2. + 0 + -1.8769999733194709e-003 + 0.1460230052471161 + -0.3372110128402710 + <_> + + <_> + + + + <_>1 10 22 4 -1. + <_>1 10 11 4 2. + 0 + -0.0862260013818741 + 0.7514340281486511 + 0.0107119996100664 + <_> + + <_> + + + + <_>7 9 9 6 -1. + <_>10 9 3 6 3. + 0 + 0.0468339994549751 + -0.1911959946155548 + 0.4841490089893341 + <_> + + <_> + + + + <_>6 11 12 5 -1. + <_>10 11 4 5 3. + 0 + -9.2000002041459084e-005 + 0.3522039949893951 + -0.1733330041170120 + <_> + + <_> + + + + <_>6 7 10 7 -1. + <_>11 7 5 7 2. + 0 + -0.0163439996540546 + -0.6439769864082336 + 9.0680001303553581e-003 + <_> + + <_> + + + + <_>11 2 8 10 -1. + <_>11 2 4 10 2. + 0 + 0.0457039996981621 + 0.0182160008698702 + 0.3197079896926880 + <_> + + <_> + + + + <_>5 2 8 10 -1. + <_>9 2 4 10 2. + 0 + -0.0273829996585846 + 1.0564049482345581 + -0.1727640032768250 + <_> + + <_> + + + + <_>6 4 18 6 -1. + <_>15 4 9 3 2. + <_>6 7 9 3 2. + 0 + -0.0276020001620054 + 0.2971549928188324 + -9.4600003212690353e-003 + <_> + + <_> + + + + <_>0 5 10 9 -1. + <_>0 8 10 3 3. + 0 + 7.6939999125897884e-003 + -0.2166029959917069 + 0.4738520085811615 + <_> + + <_> + + + + <_>2 7 21 6 -1. + <_>2 9 21 2 3. + 0 + -7.0500001311302185e-004 + 0.2404879927635193 + -0.2677600085735321 + <_> + + <_> + + + + <_>0 4 22 16 -1. + <_>0 4 11 8 2. + <_>11 12 11 8 2. + 0 + 0.1105419993400574 + -0.0335390008985996 + -1.0233880281448364 + <_> + + <_> + + + + <_>9 0 6 22 -1. + <_>9 11 6 11 2. + 0 + 0.0687659978866577 + -4.3239998631179333e-003 + 0.5715339779853821 + <_> + + <_> + + + + <_>9 1 3 12 -1. + <_>9 7 3 6 2. + 0 + 1.7999999690800905e-003 + 0.0775749981403351 + -0.4209269881248474 + <_> + + <_> + + + + <_>12 0 12 18 -1. + <_>18 0 6 9 2. + <_>12 9 6 9 2. + 0 + 0.1923200041055679 + 0.0820219963788986 + 2.8810169696807861 + <_> + + <_> + + + + <_>0 0 12 18 -1. + <_>0 0 6 9 2. + <_>6 9 6 9 2. + 0 + 0.1574209928512573 + -0.1370819956064224 + 2.0890059471130371 + <_> + + <_> + + + + <_>1 1 22 4 -1. + <_>12 1 11 2 2. + <_>1 3 11 2 2. + 0 + -0.0493870005011559 + -1.8610910177230835 + 0.1433209925889969 + <_> + + <_> + + + + <_>3 0 18 4 -1. + <_>3 2 18 2 2. + 0 + 0.0519290007650852 + -0.1873700022697449 + 0.5423160195350647 + <_> + + <_> + + + + <_>2 5 22 6 -1. + <_>2 7 22 2 3. + 0 + 0.0499650016427040 + 0.1417530030012131 + -1.5625779628753662 + <_> + + <_> + + + + <_>5 0 6 9 -1. + <_>5 3 6 3 3. + 0 + -0.0426330007612705 + 1.6059479713439941 + -0.1471289992332459 + <_> + + <_> + + + + <_>10 14 6 9 -1. + <_>12 14 2 9 3. + 0 + -0.0375539995729923 + -0.8097490072250366 + 0.1325699985027313 + <_> + + <_> + + + + <_>8 14 6 9 -1. + <_>10 14 2 9 3. + 0 + -0.0371749997138977 + -1.3945020437240601 + -0.0570550002157688 + <_> + + <_> + + + + <_>5 18 18 3 -1. + <_>5 19 18 1 3. + 0 + 0.0139459995552897 + 0.0334270000457764 + 0.5747479796409607 + <_> + + <_> + + + + <_>6 0 6 13 -1. + <_>9 0 3 13 2. + 0 + -4.4800000614486635e-004 + -0.5532749891281128 + 0.0219529997557402 + <_> + + <_> + + + + <_>7 4 12 4 -1. + <_>7 4 6 4 2. + 0 + 0.0319930016994476 + 0.0203409995883703 + 0.3745920062065125 + <_> + + <_> + + + + <_>5 2 12 6 -1. + <_>9 2 4 6 3. + 0 + -4.2799999937415123e-003 + 0.4442870020866394 + -0.2299969941377640 + <_> + + <_> + + + + <_>4 1 18 3 -1. + <_>4 2 18 1 3. + 0 + 9.8550003021955490e-003 + 0.1831579953432083 + -0.4096499979496002 + <_> + + <_> + + + + <_>0 8 6 12 -1. + <_>0 12 6 4 3. + 0 + 0.0933569967746735 + -0.0636610016226768 + -1.6929290294647217 + <_> + + <_> + + + + <_>9 15 6 9 -1. + <_>11 15 2 9 3. + 0 + 0.0172099992632866 + 0.2015389949083328 + -0.4606109857559204 + <_> + + <_> + + + + <_>9 10 6 13 -1. + <_>11 10 2 13 3. + 0 + 8.4319999441504478e-003 + -0.3200399875640869 + 0.1531219929456711 + <_> + + <_> + + + + <_>6 17 18 2 -1. + <_>6 18 18 1 2. + 0 + -0.0140549996867776 + 0.8688240051269531 + 0.0325750000774860 + <_> + + <_> + + + + <_>9 4 6 9 -1. + <_>11 4 2 9 3. + 0 + -7.7180000953376293e-003 + 0.6368669867515564 + -0.1842550039291382 + <_> + + <_> + + + + <_>10 0 6 9 -1. + <_>12 0 2 9 3. + 0 + 0.0280050002038479 + 0.1735749989748001 + -0.4788359999656677 + <_> + + <_> + + + + <_>5 6 10 8 -1. + <_>5 6 5 4 2. + <_>10 10 5 4 2. + 0 + -0.0188849996775389 + 0.2410160005092621 + -0.2654759883880615 + <_> + + <_> + + + + <_>14 9 5 8 -1. + <_>14 13 5 4 2. + 0 + -0.0185850001871586 + 0.5423250198364258 + 0.0536330007016659 + <_> + + <_> + + + + <_>5 9 5 8 -1. + <_>5 13 5 4 2. + 0 + -0.0364370010793209 + 2.3908898830413818 + -0.1363469958305359 + <_> + + <_> + + + + <_>14 11 9 6 -1. + <_>14 13 9 2 3. + 0 + 0.0324550010263920 + 0.1591069996356964 + -0.6758149862289429 + <_> + + <_> + + + + <_>0 2 23 15 -1. + <_>0 7 23 5 3. + 0 + 0.0597819983959198 + -2.3479999508708715e-003 + -0.7305369973182678 + <_> + + <_> + + + + <_>16 0 8 12 -1. + <_>16 6 8 6 2. + 0 + 9.8209995776414871e-003 + -0.1144409999251366 + 0.3057030141353607 + <_> + + <_> + + + + <_>4 15 6 9 -1. + <_>4 18 6 3 3. + 0 + -0.0351639986038208 + -1.0511469841003418 + -0.0331030003726482 + <_> + + <_> + + + + <_>8 18 9 4 -1. + <_>8 20 9 2 2. + 0 + 2.7429999317973852e-003 + -0.2013539969921112 + 0.3275409936904907 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + 8.1059997901320457e-003 + -0.2138350009918213 + 0.4336209893226624 + <_> + + <_> + + + + <_>13 11 11 6 -1. + <_>13 13 11 2 3. + 0 + 0.0889429971575737 + 0.1094089969992638 + -4.7609338760375977 + <_> + + <_> + + + + <_>0 11 11 6 -1. + <_>0 13 11 2 3. + 0 + -0.0300549995154142 + -1.7169300317764282 + -0.0609190016984940 + <_> + + <_> + + + + <_>0 9 24 6 -1. + <_>12 9 12 3 2. + <_>0 12 12 3 2. + 0 + -0.0217349994927645 + 0.6477890014648438 + -0.0328309983015060 + <_> + + <_> + + + + <_>6 16 8 8 -1. + <_>6 20 8 4 2. + 0 + 0.0376489982008934 + -0.0100600002333522 + -0.7656909823417664 + <_> + + <_> + + + + <_>10 16 14 6 -1. + <_>10 18 14 2 3. + 0 + 2.7189999818801880e-003 + 0.1988890022039414 + -0.0824790000915527 + <_> + + <_> + + + + <_>1 1 21 3 -1. + <_>1 2 21 1 3. + 0 + -0.0105480002239347 + -0.8661360144615173 + -0.0259860008955002 + <_> + + <_> + + + + <_>0 2 24 3 -1. + <_>0 2 12 3 2. + 0 + 0.1296630054712296 + 0.1391199976205826 + -2.2271950244903564 + <_> + + <_> + + + + <_>2 15 8 5 -1. + <_>6 15 4 5 2. + 0 + -0.0176769997924566 + 0.3396770060062408 + -0.2398959994316101 + <_> + + <_> + + + + <_>2 11 21 3 -1. + <_>9 11 7 3 3. + 0 + -0.0770519971847534 + -2.5017969608306885 + 0.1284199953079224 + <_> + + <_> + + + + <_>1 18 12 6 -1. + <_>1 18 6 3 2. + <_>7 21 6 3 2. + 0 + -0.0192300006747246 + 0.5064120292663574 + -0.1975159943103790 + <_> + + <_> + + + + <_>10 14 4 10 -1. + <_>10 19 4 5 2. + 0 + -0.0512229986488819 + -2.9333369731903076 + 0.1385850012302399 + <_> + + <_> + + + + <_>7 7 4 10 -1. + <_>7 12 4 5 2. + 0 + 2.0830000285059214e-003 + -0.6004359722137451 + 0.0297180004417896 + <_> + + <_> + + + + <_>9 8 6 12 -1. + <_>9 12 6 4 3. + 0 + 0.0254180002957582 + 0.3391579985618591 + -0.1439200043678284 + <_> + + <_> + + + + <_>7 1 9 6 -1. + <_>10 1 3 6 3. + 0 + -0.0239059999585152 + -1.1082680225372314 + -0.0473770014941692 + <_> + + <_> + + + + <_>3 14 19 2 -1. + <_>3 15 19 1 2. + 0 + -6.3740001060068607e-003 + 0.4453369975090027 + -0.0670529976487160 + <_> + + <_> + + + + <_>7 7 10 10 -1. + <_>7 7 5 5 2. + <_>12 12 5 5 2. + 0 + -0.0376989990472794 + -1.0406579971313477 + -0.0417900010943413 + <_> + + <_> + + + + <_>3 12 18 12 -1. + <_>3 12 9 12 2. + 0 + 0.2165510058403015 + 0.0338630005717278 + 0.8201730251312256 + <_> + + <_> + + + + <_>8 0 6 12 -1. + <_>10 0 2 12 3. + 0 + -0.0134009998291731 + 0.5290349721908569 + -0.1913300007581711 + -3.2396929264068604 + 17 + -1 + <_> + + + <_> + + <_> + + + + <_>3 0 17 9 -1. + <_>3 3 17 3 3. + 0 + 0.0712689980864525 + -0.5363119840621948 + 0.6071529984474182 + <_> + + <_> + + + + <_>6 0 12 11 -1. + <_>10 0 4 11 3. + 0 + 0.0561110004782677 + -0.5014160275459290 + 0.4397610127925873 + <_> + + <_> + + + + <_>1 0 6 13 -1. + <_>4 0 3 13 2. + 0 + 0.0404639989137650 + -0.3292219936847687 + 0.5483469963073731 + <_> + + <_> + + + + <_>5 8 16 6 -1. + <_>5 11 16 3 2. + 0 + 0.0631550028920174 + -0.3170169889926910 + 0.4615299999713898 + <_> + + <_> + + + + <_>8 8 5 12 -1. + <_>8 14 5 6 2. + 0 + 0.0103209996595979 + 0.1069499999284744 + -0.9824389815330505 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>9 21 6 3 3. + 0 + 0.0626069977879524 + -0.1432970017194748 + 0.7109500169754028 + <_> + + <_> + + + + <_>0 0 6 6 -1. + <_>3 0 3 6 2. + 0 + -0.0394160002470016 + 0.9438019990921021 + -0.2157209962606430 + <_> + + <_> + + + + <_>2 0 20 3 -1. + <_>2 1 20 1 3. + 0 + -5.3960001096129417e-003 + -0.5461199879646301 + 0.2530379891395569 + <_> + + <_> + + + + <_>4 6 15 10 -1. + <_>9 6 5 10 3. + 0 + 0.1077319979667664 + 0.0124960001558065 + -1.0809199810028076 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0169820003211498 + -0.3153640031814575 + 0.5123999714851379 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + 0.0312169995158911 + -4.5199999585747719e-003 + -1.2443480491638184 + <_> + + <_> + + + + <_>14 0 6 9 -1. + <_>16 0 2 9 3. + 0 + -0.0231069996953011 + -0.7649289965629578 + 0.2064059972763062 + <_> + + <_> + + + + <_>7 16 9 6 -1. + <_>7 18 9 2 3. + 0 + -0.0112039996311069 + 0.2409269958734512 + -0.3514209985733032 + <_> + + <_> + + + + <_>14 0 6 9 -1. + <_>16 0 2 9 3. + 0 + -4.7479998320341110e-003 + -0.0970079973340034 + 0.2063809931278229 + <_> + + <_> + + + + <_>4 0 6 9 -1. + <_>6 0 2 9 3. + 0 + -0.0173589996993542 + -0.7902029752731323 + 0.0218529999256134 + <_> + + <_> + + + + <_>17 1 6 16 -1. + <_>19 1 2 16 3. + 0 + 0.0188519991934299 + -0.1039460003376007 + 0.5484420061111450 + <_> + + <_> + + + + <_>1 1 6 16 -1. + <_>3 1 2 16 3. + 0 + 7.2249998338520527e-003 + -0.4040940105915070 + 0.2676379978656769 + <_> + + <_> + + + + <_>14 13 6 9 -1. + <_>14 16 6 3 3. + 0 + 0.0189159996807575 + 0.2050800025463104 + -1.0206340551376343 + <_> + + <_> + + + + <_>0 0 6 9 -1. + <_>0 3 6 3 3. + 0 + 0.0311569999903440 + 1.2400000123307109e-003 + -0.8729349970817566 + <_> + + <_> + + + + <_>9 5 6 6 -1. + <_>9 5 3 6 2. + 0 + 0.0209519993513823 + -5.5559999309480190e-003 + 0.8035619854927063 + <_> + + <_> + + + + <_>3 10 9 6 -1. + <_>6 10 3 6 3. + 0 + 0.0112910000607371 + -0.3647840023040772 + 0.2276789993047714 + <_> + + <_> + + + + <_>14 7 3 16 -1. + <_>14 15 3 8 2. + 0 + -0.0570110008120537 + -1.4295619726181030 + 0.1432200074195862 + <_> + + <_> + + + + <_>4 10 14 12 -1. + <_>4 10 7 6 2. + <_>11 16 7 6 2. + 0 + 0.0721940025687218 + -0.0418500006198883 + -1.9111829996109009 + <_> + + <_> + + + + <_>7 6 12 6 -1. + <_>7 8 12 2 3. + 0 + -0.0198740009218454 + 0.2642549872398377 + -0.3261770009994507 + <_> + + <_> + + + + <_>7 2 4 20 -1. + <_>9 2 2 20 2. + 0 + -0.0166929997503757 + -0.8390780091285706 + 4.0799999260343611e-004 + <_> + + <_> + + + + <_>14 13 6 9 -1. + <_>14 16 6 3 3. + 0 + -0.0398349985480309 + -0.4885849952697754 + 0.1643610000610352 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>12 6 2 9 2. + 0 + 0.0270099993795156 + -0.1886249929666519 + 0.8341940045356751 + <_> + + <_> + + + + <_>14 13 6 9 -1. + <_>14 16 6 3 3. + 0 + -3.9420002140104771e-003 + 0.2323150038719177 + -0.0723600015044212 + <_> + + <_> + + + + <_>5 20 14 4 -1. + <_>5 22 14 2 2. + 0 + 0.0228330008685589 + -0.0358840003609657 + -1.1549400091171265 + <_> + + <_> + + + + <_>4 4 16 12 -1. + <_>4 10 16 6 2. + 0 + -0.0688880011439323 + -1.7837309837341309 + 0.1515900045633316 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0430970005691051 + -0.2160809934139252 + 0.5062410235404968 + <_> + + <_> + + + + <_>3 0 21 4 -1. + <_>3 2 21 2 2. + 0 + 8.6239995434880257e-003 + -0.1779559999704361 + 0.2895790040493012 + <_> + + <_> + + + + <_>4 13 6 9 -1. + <_>4 16 6 3 3. + 0 + 0.0145610002800822 + -0.0114080002531409 + -0.8940200209617615 + <_> + + <_> + + + + <_>16 16 5 8 -1. + <_>16 20 5 4 2. + 0 + -0.0115010002627969 + 0.3017199933528900 + -0.0436590015888214 + <_> + + <_> + + + + <_>4 0 16 16 -1. + <_>4 0 8 8 2. + <_>12 8 8 8 2. + 0 + -0.1097149997949600 + -0.9514709711074829 + -0.0199730005115271 + <_> + + <_> + + + + <_>6 6 14 6 -1. + <_>13 6 7 3 2. + <_>6 9 7 3 2. + 0 + 0.0452280007302761 + 0.0331109985709190 + 0.9661980271339417 + <_> + + <_> + + + + <_>10 5 4 15 -1. + <_>10 10 4 5 3. + 0 + -0.0270479992032051 + 0.9796360135078430 + -0.1726190000772476 + <_> + + <_> + + + + <_>9 15 12 8 -1. + <_>15 15 6 4 2. + <_>9 19 6 4 2. + 0 + 0.0180309992283583 + -0.0208010002970696 + 0.2738589942455292 + <_> + + <_> + + + + <_>6 7 12 4 -1. + <_>12 7 6 4 2. + 0 + 0.0505249984562397 + -0.0568029992282391 + -1.7775089740753174 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>12 6 7 3 2. + <_>5 9 7 3 2. + 0 + -0.0299239996820688 + 0.6532920002937317 + -0.0235370006412268 + <_> + + <_> + + + + <_>3 6 18 10 -1. + <_>3 6 9 5 2. + <_>12 11 9 5 2. + 0 + 0.0380580015480518 + 0.0263170003890991 + -0.7066569924354553 + <_> + + <_> + + + + <_>6 0 18 21 -1. + <_>12 0 6 21 3. + 0 + 0.1856389939785004 + -5.6039998307824135e-003 + 0.3287369906902313 + <_> + + <_> + + + + <_>0 0 24 21 -1. + <_>8 0 8 21 3. + 0 + -4.0670000016689301e-003 + 0.3420479893684387 + -0.3017159998416901 + <_> + + <_> + + + + <_>6 18 18 3 -1. + <_>6 19 18 1 3. + 0 + 0.0101089999079704 + -7.3600001633167267e-003 + 0.5798159837722778 + <_> + + <_> + + + + <_>0 15 9 6 -1. + <_>0 17 9 2 3. + 0 + -0.0115670002996922 + -0.5272219777107239 + 0.0464479997754097 + <_> + + <_> + + + + <_>4 3 19 2 -1. + <_>4 4 19 1 2. + 0 + -6.5649999305605888e-003 + -0.5852910280227661 + 0.1910189986228943 + <_> + + <_> + + + + <_>0 3 24 2 -1. + <_>0 4 24 1 2. + 0 + 0.0105820000171661 + 0.0210730005055666 + -0.6889259815216065 + <_> + + <_> + + + + <_>15 14 9 4 -1. + <_>15 16 9 2 2. + 0 + -0.0203040000051260 + -0.3640069961547852 + 0.1533879935741425 + <_> + + <_> + + + + <_>0 14 9 4 -1. + <_>0 16 9 2 2. + 0 + 2.3529999889433384e-003 + 0.0361640006303787 + -0.5982509851455689 + <_> + + <_> + + + + <_>6 15 18 2 -1. + <_>6 16 18 1 2. + 0 + -1.4690000098198652e-003 + -0.1470769941806793 + 0.3750799894332886 + <_> + + <_> + + + + <_>3 17 18 3 -1. + <_>3 18 18 1 3. + 0 + 8.6449999362230301e-003 + -0.2170850038528442 + 0.5193679928779602 + <_> + + <_> + + + + <_>12 0 3 23 -1. + <_>13 0 1 23 3. + 0 + -0.0243260003626347 + -1.0846769809722900 + 0.1408479958772659 + <_> + + <_> + + + + <_>6 0 8 6 -1. + <_>6 3 8 3 2. + 0 + 0.0744189992547035 + -0.1551380008459091 + 1.1822769641876221 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + 0.0170779991894960 + 0.0442310012876987 + 0.9156110286712647 + <_> + + <_> + + + + <_>9 0 3 23 -1. + <_>10 0 1 23 3. + 0 + -0.0245779994875193 + -1.5504100322723389 + -0.0547459982335567 + <_> + + <_> + + + + <_>10 7 4 10 -1. + <_>10 12 4 5 2. + 0 + 0.0302050001919270 + 0.1666280031204224 + -1.0001239776611328 + <_> + + <_> + + + + <_>7 8 10 12 -1. + <_>7 12 10 4 3. + 0 + 0.0121360002085567 + -0.7707909941673279 + -4.8639997839927673e-003 + <_> + + <_> + + + + <_>14 9 6 14 -1. + <_>17 9 3 7 2. + <_>14 16 3 7 2. + 0 + 0.0867170020937920 + 0.1106169968843460 + -1.6857999563217163 + <_> + + <_> + + + + <_>2 0 10 9 -1. + <_>2 3 10 3 3. + 0 + -0.0423090010881424 + 1.1075930595397949 + -0.1543859988451004 + <_> + + <_> + + + + <_>11 1 5 12 -1. + <_>11 7 5 6 2. + 0 + -2.6420000940561295e-003 + 0.2745189964771271 + -0.1845619976520538 + <_> + + <_> + + + + <_>1 4 12 10 -1. + <_>1 4 6 5 2. + <_>7 9 6 5 2. + 0 + -0.0566620007157326 + -0.8062559962272644 + -0.0169280003756285 + <_> + + <_> + + + + <_>15 1 9 4 -1. + <_>15 3 9 2 2. + 0 + 0.0234750006347895 + 0.1418769955635071 + -0.2550089955329895 + <_> + + <_> + + + + <_>1 2 8 10 -1. + <_>1 2 4 5 2. + <_>5 7 4 5 2. + 0 + -0.0208030007779598 + 0.1982630044221878 + -0.3117119967937470 + <_> + + <_> + + + + <_>10 1 5 12 -1. + <_>10 5 5 4 3. + 0 + 7.2599998675286770e-003 + -0.0505909994244576 + 0.4192380011081696 + <_> + + <_> + + + + <_>4 0 14 24 -1. + <_>11 0 7 24 2. + 0 + 0.3416000008583069 + -0.1667490005493164 + 0.9274860024452210 + <_> + + <_> + + + + <_>7 17 10 4 -1. + <_>7 19 10 2 2. + 0 + 6.2029999680817127e-003 + -0.1262589991092682 + 0.4044530093669891 + <_> + + <_> + + + + <_>10 14 4 10 -1. + <_>10 19 4 5 2. + 0 + 0.0326920002698898 + -0.0326349996030331 + -0.9893980026245117 + <_> + + <_> + + + + <_>13 15 6 9 -1. + <_>15 15 2 9 3. + 0 + 2.1100000594742596e-004 + -0.0645340010523796 + 0.2547369897365570 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>3 22 18 1 3. + 0 + 7.2100001852959394e-004 + -0.3661859929561615 + 0.1197310015559197 + <_> + + <_> + + + + <_>13 15 6 9 -1. + <_>15 15 2 9 3. + 0 + 0.0544909983873367 + 0.1207349970936775 + -1.0291390419006348 + <_> + + <_> + + + + <_>5 15 6 9 -1. + <_>7 15 2 9 3. + 0 + -0.0101410001516342 + -0.5217720270156860 + 0.0337349995970726 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>12 6 2 9 2. + <_>10 15 2 9 2. + 0 + -0.0188159998506308 + 0.6518179774284363 + 1.3399999588727951e-003 + <_> + + <_> + + + + <_>7 3 6 11 -1. + <_>9 3 2 11 3. + 0 + -5.3480002097785473e-003 + 0.1737069934606552 + -0.3413200080394745 + <_> + + <_> + + + + <_>15 1 9 4 -1. + <_>15 3 9 2 2. + 0 + -0.0108470004051924 + -0.1969989985227585 + 0.1504549980163574 + <_> + + <_> + + + + <_>5 4 14 8 -1. + <_>5 8 14 4 2. + 0 + -0.0499260015785694 + -0.5088850259780884 + 0.0307620000094175 + <_> + + <_> + + + + <_>8 1 15 9 -1. + <_>8 4 15 3 3. + 0 + 0.0121600003913045 + -0.0692519992589951 + 0.1874549984931946 + <_> + + <_> + + + + <_>7 2 8 10 -1. + <_>7 2 4 5 2. + <_>11 7 4 5 2. + 0 + -2.2189998999238014e-003 + -0.4084909856319428 + 0.0799549967050552 + <_> + + <_> + + + + <_>12 2 6 12 -1. + <_>12 2 3 12 2. + 0 + 3.1580000650137663e-003 + -0.2112459987401962 + 0.2236640006303787 + <_> + + <_> + + + + <_>6 2 6 12 -1. + <_>9 2 3 12 2. + 0 + 4.1439998894929886e-003 + -0.4990029931068420 + 0.0629170015454292 + <_> + + <_> + + + + <_>7 7 12 4 -1. + <_>7 7 6 4 2. + 0 + -7.3730000294744968e-003 + -0.2055329978466034 + 0.2209669947624207 + <_> + + <_> + + + + <_>6 3 12 10 -1. + <_>10 3 4 10 3. + 0 + 0.0518120005726814 + 0.1809680014848709 + -0.4349580109119415 + <_> + + <_> + + + + <_>5 6 16 6 -1. + <_>13 6 8 3 2. + <_>5 9 8 3 2. + 0 + 0.0183400008827448 + 0.0152000002563000 + 0.3799169957637787 + <_> + + <_> + + + + <_>3 1 18 9 -1. + <_>9 1 6 9 3. + 0 + 0.1749079972505570 + -0.2092079967260361 + 0.4001300036907196 + <_> + + <_> + + + + <_>3 8 18 5 -1. + <_>9 8 6 5 3. + 0 + 0.0539939999580383 + 0.2475160062313080 + -0.2671290040016174 + <_> + + <_> + + + + <_>0 0 24 22 -1. + <_>0 0 12 11 2. + <_>12 11 12 11 2. + 0 + -0.3203319907188416 + -1.9094380140304565 + -0.0669609978795052 + <_> + + <_> + + + + <_>14 16 9 6 -1. + <_>14 18 9 2 3. + 0 + -0.0270600002259016 + -0.7137129902839661 + 0.1590459942817688 + <_> + + <_> + + + + <_>0 16 24 8 -1. + <_>0 20 24 4 2. + 0 + 0.0774639993906021 + -0.1697019934654236 + 0.7755299806594849 + <_> + + <_> + + + + <_>1 19 22 4 -1. + <_>12 19 11 2 2. + <_>1 21 11 2 2. + 0 + 0.0237719994038343 + 0.1902189999818802 + -0.6016209721565247 + <_> + + <_> + + + + <_>1 16 9 6 -1. + <_>1 18 9 2 3. + 0 + 0.0115010002627969 + 7.7039999887347221e-003 + -0.6173030138015747 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 8 5 4 2. + 0 + 0.0326160006225109 + 0.1715919971466065 + -0.7097820043563843 + <_> + + <_> + + + + <_>9 15 6 9 -1. + <_>11 15 2 9 3. + 0 + -0.0443830005824566 + -2.2606229782104492 + -0.0732769966125488 + <_> + + <_> + + + + <_>10 18 12 6 -1. + <_>16 18 6 3 2. + <_>10 21 6 3 2. + 0 + -0.0584760010242462 + 2.4087750911712646 + 0.0830919966101646 + <_> + + <_> + + + + <_>2 18 12 6 -1. + <_>2 18 6 3 2. + <_>8 21 6 3 2. + 0 + 0.0193039998412132 + -0.2708230018615723 + 0.2736999988555908 + <_> + + <_> + + + + <_>8 3 16 9 -1. + <_>8 6 16 3 3. + 0 + -0.0447059981524944 + 0.3135559856891632 + -0.0624920018017292 + <_> + + <_> + + + + <_>0 5 10 6 -1. + <_>0 7 10 2 3. + 0 + -0.0603349991142750 + -1.4515119791030884 + -0.0587610006332397 + <_> + + <_> + + + + <_>5 5 18 3 -1. + <_>5 6 18 1 3. + 0 + 0.0116670001298189 + -0.0180849991738796 + 0.5047969818115234 + <_> + + <_> + + + + <_>2 6 9 6 -1. + <_>2 9 9 3 2. + 0 + 0.0280099995434284 + -0.2330289930105209 + 0.3070870041847229 + <_> + + <_> + + + + <_>14 2 10 9 -1. + <_>14 5 10 3 3. + 0 + 0.0653970018029213 + 0.1413590013980866 + -0.5001090168952942 + <_> + + <_> + + + + <_>3 6 18 3 -1. + <_>3 7 18 1 3. + 0 + 9.6239997074007988e-003 + -0.2205460071563721 + 0.3919120132923126 + <_> + + <_> + + + + <_>9 2 15 6 -1. + <_>9 4 15 2 3. + 0 + 2.5510000996291637e-003 + -0.1138150021433830 + 0.2003230005502701 + <_> + + <_> + + + + <_>4 8 15 6 -1. + <_>4 10 15 2 3. + 0 + 0.0318470001220703 + 0.0254769995808601 + -0.5332639813423157 + <_> + + <_> + + + + <_>0 5 24 4 -1. + <_>12 5 12 2 2. + <_>0 7 12 2 2. + 0 + 0.0330550000071526 + 0.1780769973993301 + -0.6279389858245850 + <_> + + <_> + + + + <_>7 8 6 12 -1. + <_>9 8 2 12 3. + 0 + 0.0476009994745255 + -0.1474789977073669 + 1.4204180240631104 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + -0.0195719990879297 + -0.5269349813461304 + 0.1583860069513321 + <_> + + <_> + + + + <_>0 12 6 12 -1. + <_>0 12 3 6 2. + <_>3 18 3 6 2. + 0 + -0.0547300018370152 + 0.8823159933090210 + -0.1662780046463013 + <_> + + <_> + + + + <_>14 12 10 6 -1. + <_>14 14 10 2 3. + 0 + -0.0226860009133816 + -0.4838689863681793 + 0.1500010043382645 + <_> + + <_> + + + + <_>2 7 18 9 -1. + <_>2 10 18 3 3. + 0 + 0.1071320027112961 + -0.2133619934320450 + 0.4233390092849731 + <_> + + <_> + + + + <_>11 14 10 9 -1. + <_>11 17 10 3 3. + 0 + -0.0363800004124641 + -0.0741980001330376 + 0.1458940058946610 + <_> + + <_> + + + + <_>7 6 10 8 -1. + <_>7 6 5 4 2. + <_>12 10 5 4 2. + 0 + 0.0139359999448061 + -0.2491160035133362 + 0.2677119970321655 + <_> + + <_> + + + + <_>6 6 14 6 -1. + <_>13 6 7 3 2. + <_>6 9 7 3 2. + 0 + 0.0209919996559620 + 8.7959999218583107e-003 + 0.4306499958038330 + <_> + + <_> + + + + <_>4 13 9 7 -1. + <_>7 13 3 7 3. + 0 + 0.0491189993917942 + -0.1759199947118759 + 0.6928290128707886 + <_> + + <_> + + + + <_>14 10 6 12 -1. + <_>17 10 3 6 2. + <_>14 16 3 6 2. + 0 + 0.0363159999251366 + 0.1314529925584793 + -0.3359729945659638 + <_> + + <_> + + + + <_>4 10 6 12 -1. + <_>4 10 3 6 2. + <_>7 16 3 6 2. + 0 + 0.0412280000746250 + -0.0456920005381107 + -1.3515930175781250 + <_> + + <_> + + + + <_>13 9 8 6 -1. + <_>13 9 4 6 2. + 0 + 0.0156720001250505 + 0.1754409968852997 + -0.0605500005185604 + <_> + + <_> + + + + <_>8 3 4 14 -1. + <_>10 3 2 14 2. + 0 + -0.0162860006093979 + -1.1308189630508423 + -0.0395330004394054 + <_> + + <_> + + + + <_>17 0 3 18 -1. + <_>18 0 1 18 3. + 0 + -3.0229999683797359e-003 + -0.2245430052280426 + 0.2362809926271439 + <_> + + <_> + + + + <_>4 12 16 12 -1. + <_>12 12 8 12 2. + 0 + -0.1378629952669144 + 0.4537689983844757 + -0.2109870016574860 + <_> + + <_> + + + + <_>15 0 6 14 -1. + <_>17 0 2 14 3. + 0 + -9.6760001033544540e-003 + -0.1510509997606278 + 0.2078170031309128 + <_> + + <_> + + + + <_>3 0 6 14 -1. + <_>5 0 2 14 3. + 0 + -0.0248399991542101 + -0.6835029721260071 + -8.0040004104375839e-003 + <_> + + <_> + + + + <_>12 2 12 20 -1. + <_>16 2 4 20 3. + 0 + -0.1396439969539642 + 0.6501129865646362 + 0.0465440005064011 + <_> + + <_> + + + + <_>0 2 12 20 -1. + <_>4 2 4 20 3. + 0 + -0.0821539983153343 + 0.4488719999790192 + -0.2359199970960617 + <_> + + <_> + + + + <_>16 0 6 17 -1. + <_>18 0 2 17 3. + 0 + 3.8449999410659075e-003 + -0.0881730020046234 + 0.2734679877758026 + <_> + + <_> + + + + <_>2 0 6 17 -1. + <_>4 0 2 17 3. + 0 + -6.6579999402165413e-003 + -0.4686659872531891 + 0.0770019963383675 + <_> + + <_> + + + + <_>15 6 9 6 -1. + <_>15 8 9 2 3. + 0 + -0.0158980004489422 + 0.2926839888095856 + -0.0219410005956888 + <_> + + <_> + + + + <_>0 6 9 6 -1. + <_>0 8 9 2 3. + 0 + -0.0509460009634495 + -1.2093789577484131 + -0.0421099998056889 + <_> + + <_> + + + + <_>18 1 6 13 -1. + <_>20 1 2 13 3. + 0 + 0.0168379992246628 + -0.0455959998071194 + 0.5018069744110107 + <_> + + <_> + + + + <_>0 1 6 13 -1. + <_>2 1 2 13 3. + 0 + 0.0159189999103546 + -0.2690429985523224 + 0.2651630043983460 + <_> + + <_> + + + + <_>16 0 4 9 -1. + <_>16 0 2 9 2. + 0 + 3.6309999413788319e-003 + -0.1304610073566437 + 0.3180710077285767 + <_> + + <_> + + + + <_>5 10 12 7 -1. + <_>9 10 4 7 3. + 0 + -0.0861449986696243 + 1.9443659782409668 + -0.1397829949855804 + <_> + + <_> + + + + <_>12 9 12 6 -1. + <_>12 11 12 2 3. + 0 + 0.0331409983336926 + 0.1526679992675781 + -0.0308660008013248 + <_> + + <_> + + + + <_>0 9 12 6 -1. + <_>0 11 12 2 3. + 0 + -3.9679999463260174e-003 + -0.7120230197906494 + -0.0138440001755953 + <_> + + <_> + + + + <_>5 7 14 9 -1. + <_>5 10 14 3 3. + 0 + -0.0240080002695322 + 0.9200779795646668 + 0.0467239990830421 + <_> + + <_> + + + + <_>0 15 20 3 -1. + <_>0 16 20 1 3. + 0 + 8.7320003658533096e-003 + -0.2256730049848557 + 0.3193179965019226 + <_> + + <_> + + + + <_>8 10 8 10 -1. + <_>12 10 4 5 2. + <_>8 15 4 5 2. + 0 + -0.0277869999408722 + -0.7233710289001465 + 0.1701859980821610 + <_> + + <_> + + + + <_>5 4 13 9 -1. + <_>5 7 13 3 3. + 0 + -0.1945530027151108 + 1.2461860179901123 + -0.1473619937896729 + <_> + + <_> + + + + <_>10 2 6 18 -1. + <_>10 8 6 6 3. + 0 + -0.1086969971656799 + -1.4465179443359375 + 0.1214530020952225 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + -0.0194949992001057 + -0.7815309762954712 + -0.0237329993396997 + <_> + + <_> + + + + <_>6 9 12 4 -1. + <_>6 11 12 2 2. + 0 + 3.0650000553578138e-003 + -0.8547139763832092 + 0.1668699979782105 + <_> + + <_> + + + + <_>3 2 15 12 -1. + <_>3 6 15 4 3. + 0 + 0.0591939985752106 + -0.1485369950532913 + 1.1273469924926758 + <_> + + <_> + + + + <_>12 0 12 5 -1. + <_>16 0 4 5 3. + 0 + -0.0542079992592335 + 0.5472699999809265 + 0.0355239994823933 + <_> + + <_> + + + + <_>0 15 18 3 -1. + <_>6 15 6 3 3. + 0 + -0.0393249988555908 + 0.3664259910583496 + -0.2054399996995926 + <_> + + <_> + + + + <_>0 14 24 5 -1. + <_>8 14 8 5 3. + 0 + 0.0822789967060089 + -0.0350079983472824 + 0.5399420261383057 + <_> + + <_> + + + + <_>5 1 3 18 -1. + <_>6 1 1 18 3. + 0 + -7.4479999020695686e-003 + -0.6153749823570252 + -3.5319998860359192e-003 + <_> + + <_> + + + + <_>10 0 4 14 -1. + <_>10 0 2 14 2. + 0 + 7.3770000599324703e-003 + -0.0655910000205040 + 0.4196139872074127 + <_> + + <_> + + + + <_>9 3 4 9 -1. + <_>11 3 2 9 2. + 0 + 7.0779998786747456e-003 + -0.3412950038909912 + 0.1253679990768433 + <_> + + <_> + + + + <_>8 2 12 6 -1. + <_>14 2 6 3 2. + <_>8 5 6 3 2. + 0 + -0.0155819999054074 + -0.3024039864540100 + 0.2151100039482117 + <_> + + <_> + + + + <_>0 4 17 4 -1. + <_>0 6 17 2 2. + 0 + -2.7399999089539051e-003 + 0.0765530019998550 + -0.4106050133705139 + <_> + + <_> + + + + <_>16 16 5 8 -1. + <_>16 20 5 4 2. + 0 + -0.0706000030040741 + -0.9735620021820068 + 0.1124180033802986 + <_> + + <_> + + + + <_>3 16 5 8 -1. + <_>3 20 5 4 2. + 0 + -0.0117060001939535 + 0.1856070011854172 + -0.2975519895553589 + <_> + + <_> + + + + <_>6 18 18 2 -1. + <_>6 19 18 1 2. + 0 + 7.1499997284263372e-004 + -0.0596500001847744 + 0.2482469975948334 + <_> + + <_> + + + + <_>0 0 12 5 -1. + <_>4 0 4 5 3. + 0 + -0.0368660017848015 + 0.3275170028209686 + -0.2305960059165955 + <_> + + <_> + + + + <_>14 3 6 12 -1. + <_>17 3 3 6 2. + <_>14 9 3 6 2. + 0 + -0.0325269997119904 + -0.2932029962539673 + 0.1542769968509674 + <_> + + <_> + + + + <_>0 12 6 12 -1. + <_>2 12 2 12 3. + 0 + -0.0748139992356300 + -1.2143570184707642 + -0.0522440001368523 + <_> + + <_> + + + + <_>2 3 21 3 -1. + <_>2 4 21 1 3. + 0 + 0.0414699986577034 + 0.1306249946355820 + -2.3274369239807129 + <_> + + <_> + + + + <_>4 3 6 12 -1. + <_>4 3 3 6 2. + <_>7 9 3 6 2. + 0 + -0.0288800001144409 + -0.6607459783554077 + -9.0960003435611725e-003 + <_> + + <_> + + + + <_>12 8 12 6 -1. + <_>18 8 6 3 2. + <_>12 11 6 3 2. + 0 + 0.0463819988071918 + 0.1663019955158234 + -0.6694949865341187 + <_> + + <_> + + + + <_>0 15 16 9 -1. + <_>8 15 8 9 2. + 0 + 0.2542499899864197 + -0.0546419993042946 + -1.2676080465316772 + <_> + + <_> + + + + <_>6 13 18 5 -1. + <_>6 13 9 5 2. + 0 + 2.4000001139938831e-003 + 0.2027679979801178 + 0.0146679999306798 + <_> + + <_> + + + + <_>1 6 15 6 -1. + <_>6 6 5 6 3. + 0 + -0.0828059986233711 + -0.7871360182762146 + -0.0244689993560314 + <_> + + <_> + + + + <_>11 9 9 6 -1. + <_>14 9 3 6 3. + 0 + -0.0114380000159144 + 0.2862339913845062 + -0.0308940000832081 + <_> + + <_> + + + + <_>3 0 15 11 -1. + <_>8 0 5 11 3. + 0 + -0.1291339993476868 + 1.7292929887771606 + -0.1429390013217926 + <_> + + <_> + + + + <_>15 3 3 18 -1. + <_>15 9 3 6 3. + 0 + 0.0385529994964600 + 0.0192329995334148 + 0.3773260116577148 + <_> + + <_> + + + + <_>6 3 3 18 -1. + <_>6 9 3 6 3. + 0 + 0.1019140034914017 + -0.0745339989662170 + -3.3868899345397949 + <_> + + <_> + + + + <_>9 5 10 8 -1. + <_>14 5 5 4 2. + <_>9 9 5 4 2. + 0 + -0.0190680008381605 + 0.3181410133838654 + 0.0192610006779432 + <_> + + <_> + + + + <_>4 4 16 8 -1. + <_>4 4 8 4 2. + <_>12 8 8 4 2. + 0 + -0.0607750006020069 + 0.7693629860877991 + -0.1764400005340576 + <_> + + <_> + + + + <_>7 7 12 3 -1. + <_>7 7 6 3 2. + 0 + 0.0246799997985363 + 0.1839649975299835 + -0.3086880147457123 + <_> + + <_> + + + + <_>5 0 9 13 -1. + <_>8 0 3 13 3. + 0 + 0.0267590004950762 + -0.2345490008592606 + 0.3305659890174866 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + 0.0149699999019504 + 0.1721359938383102 + -0.1824889928102493 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + 0.0261429995298386 + -0.0464639998972416 + -1.1318379640579224 + <_> + + <_> + + + + <_>8 1 10 9 -1. + <_>8 4 10 3 3. + 0 + -0.0375120006501675 + 0.8040400147438049 + 0.0696600005030632 + <_> + + <_> + + + + <_>0 2 18 2 -1. + <_>0 3 18 1 2. + 0 + -5.3229997865855694e-003 + -0.8188440203666687 + -0.0182249993085861 + <_> + + <_> + + + + <_>10 13 14 6 -1. + <_>17 13 7 3 2. + <_>10 16 7 3 2. + 0 + 0.0178130008280277 + 0.1495780050754547 + -0.1866720020771027 + <_> + + <_> + + + + <_>0 13 14 6 -1. + <_>0 13 7 3 2. + <_>7 16 7 3 2. + 0 + -0.0340100005269051 + -0.7285230159759522 + -0.0166159998625517 + <_> + + <_> + + + + <_>20 2 3 21 -1. + <_>21 2 1 21 3. + 0 + -0.0159530006349087 + 0.5694400072097778 + 0.0138320000842214 + <_> + + <_> + + + + <_>0 9 5 12 -1. + <_>0 13 5 4 3. + 0 + 0.0197439994663000 + 0.0405250005424023 + -0.4177339971065521 + <_> + + <_> + + + + <_>12 6 12 6 -1. + <_>12 8 12 2 3. + 0 + -0.1037480011582375 + -1.9825149774551392 + 0.1196020022034645 + <_> + + <_> + + + + <_>1 8 20 3 -1. + <_>1 9 20 1 3. + 0 + -0.0192850008606911 + 0.5023059844970703 + -0.1974589973688126 + <_> + + <_> + + + + <_>5 7 19 3 -1. + <_>5 8 19 1 3. + 0 + -0.0127800004556775 + 0.4019500017166138 + -0.0269579999148846 + <_> + + <_> + + + + <_>1 12 9 6 -1. + <_>1 14 9 2 3. + 0 + -0.0163529999554157 + -0.7660880088806152 + -0.0242090001702309 + <_> + + <_> + + + + <_>6 10 14 12 -1. + <_>6 14 14 4 3. + 0 + -0.1276369988918304 + 0.8657850027084351 + 0.0642059966921806 + <_> + + <_> + + + + <_>5 6 14 18 -1. + <_>5 12 14 6 3. + 0 + 0.0190689992159605 + -0.5592979788780212 + -1.6880000475794077e-003 + <_> + + <_> + + + + <_>11 12 9 7 -1. + <_>14 12 3 7 3. + 0 + 0.0324809998273849 + 0.0407220013439655 + 0.4892509877681732 + <_> + + <_> + + + + <_>1 15 18 4 -1. + <_>1 17 18 2 2. + 0 + 9.4849998131394386e-003 + -0.1923190057277679 + 0.5113970041275024 + <_> + + <_> + + + + <_>11 14 6 9 -1. + <_>11 17 6 3 3. + 0 + 5.0470000132918358e-003 + 0.1870680004358292 + -0.1611360013484955 + <_> + + <_> + + + + <_>0 8 18 4 -1. + <_>0 8 9 2 2. + <_>9 10 9 2 2. + 0 + 0.0412679985165596 + -0.0488179996609688 + -1.1326299905776978 + <_> + + <_> + + + + <_>3 10 20 6 -1. + <_>13 10 10 3 2. + <_>3 13 10 3 2. + 0 + -0.0763589963316917 + 1.4169390201568604 + 0.0873199999332428 + <_> + + <_> + + + + <_>1 10 20 6 -1. + <_>1 10 10 3 2. + <_>11 13 10 3 2. + 0 + -0.0728349983692169 + 1.3189860582351685 + -0.1481910049915314 + <_> + + <_> + + + + <_>0 9 24 2 -1. + <_>0 9 12 2 2. + 0 + 0.0595769993960857 + 0.0483769997954369 + 0.8561180233955383 + <_> + + <_> + + + + <_>1 12 20 8 -1. + <_>1 12 10 4 2. + <_>11 16 10 4 2. + 0 + 0.0202639997005463 + -0.2104409933090210 + 0.3385899960994721 + <_> + + <_> + + + + <_>11 12 9 7 -1. + <_>14 12 3 7 3. + 0 + -0.0803010016679764 + -1.2464400529861450 + 0.1185709983110428 + <_> + + <_> + + + + <_>4 12 9 7 -1. + <_>7 12 3 7 3. + 0 + -0.0178350005298853 + 0.2578229904174805 + -0.2456479966640472 + <_> + + <_> + + + + <_>12 12 8 5 -1. + <_>12 12 4 5 2. + 0 + 0.0114310001954436 + 0.2294979989528656 + -0.2949759960174561 + <_> + + <_> + + + + <_>4 12 8 5 -1. + <_>8 12 4 5 2. + 0 + -0.0255410000681877 + -0.8625299930572510 + -7.0400000549852848e-004 + <_> + + <_> + + + + <_>13 10 4 10 -1. + <_>13 10 2 10 2. + 0 + -7.6899997657164931e-004 + 0.3151139914989471 + -0.1434900015592575 + <_> + + <_> + + + + <_>1 15 20 2 -1. + <_>11 15 10 2 2. + 0 + -0.0144539996981621 + 0.2514849901199341 + -0.2823289930820465 + <_> + + <_> + + + + <_>9 10 6 6 -1. + <_>9 10 3 6 2. + 0 + 8.6730001494288445e-003 + 0.2660140097141266 + -0.2819080054759979 + -3.2103500366210937 + 18 + -1 + <_> + + + <_> + + <_> + + + + <_>0 1 21 3 -1. + <_>7 1 7 3 3. + 0 + 0.0547089986503124 + -0.5414429903030396 + 0.6104300022125244 + <_> + + <_> + + + + <_>6 4 13 9 -1. + <_>6 7 13 3 3. + 0 + -0.1083879992365837 + 0.7173990011215210 + -0.4119609892368317 + <_> + + <_> + + + + <_>6 5 12 5 -1. + <_>10 5 4 5 3. + 0 + 0.0229969993233681 + -0.5826979875564575 + 0.2964560091495514 + <_> + + <_> + + + + <_>10 10 10 6 -1. + <_>10 12 10 2 3. + 0 + 2.7540000155568123e-003 + -0.7424389719963074 + 0.1418330073356628 + <_> + + <_> + + + + <_>6 12 5 8 -1. + <_>6 16 5 4 2. + 0 + -2.1520000882446766e-003 + 0.1787990033626556 + -0.6854860186576843 + <_> + + <_> + + + + <_>13 0 6 9 -1. + <_>15 0 2 9 3. + 0 + -0.0225590001791716 + -1.0775549411773682 + 0.1238899976015091 + <_> + + <_> + + + + <_>2 10 18 6 -1. + <_>8 10 6 6 3. + 0 + 0.0830250009894371 + 0.0245009995996952 + -1.0251879692077637 + <_> + + <_> + + + + <_>11 2 9 4 -1. + <_>11 4 9 2 2. + 0 + -6.6740000620484352e-003 + -0.4528310000896454 + 0.2123019993305206 + <_> + + <_> + + + + <_>1 20 21 3 -1. + <_>8 20 7 3 3. + 0 + 0.0764850005507469 + -0.2697269916534424 + 0.4858019948005676 + <_> + + <_> + + + + <_>1 10 22 2 -1. + <_>1 11 22 1 2. + 0 + 5.4910001344978809e-003 + -0.4887120127677918 + 0.3161639869213104 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -0.0104149999096990 + 0.4151290059089661 + -0.3004480004310608 + <_> + + <_> + + + + <_>13 0 6 9 -1. + <_>15 0 2 9 3. + 0 + 0.0276079997420311 + 0.1620379984378815 + -0.9986850023269653 + <_> + + <_> + + + + <_>5 0 6 9 -1. + <_>7 0 2 9 3. + 0 + -0.0232720002532005 + -1.1024399995803833 + 0.0211249999701977 + <_> + + <_> + + + + <_>18 2 6 20 -1. + <_>20 2 2 20 3. + 0 + -0.0556199997663498 + 0.6503310203552246 + -0.0279380008578300 + <_> + + <_> + + + + <_>0 2 6 20 -1. + <_>2 2 2 20 3. + 0 + -0.0406319983303547 + 0.4211730062961578 + -0.2676379978656769 + <_> + + <_> + + + + <_>11 7 6 14 -1. + <_>14 7 3 7 2. + <_>11 14 3 7 2. + 0 + -7.3560001328587532e-003 + 0.3527779877185822 + -0.3785400092601776 + <_> + + <_> + + + + <_>0 1 4 9 -1. + <_>2 1 2 9 2. + 0 + 0.0170070007443428 + -0.2918950021266937 + 0.4105379879474640 + <_> + + <_> + + + + <_>12 14 9 4 -1. + <_>12 16 9 2 2. + 0 + -0.0370340012013912 + -1.3216309547424316 + 0.1296650022268295 + <_> + + <_> + + + + <_>1 13 9 4 -1. + <_>1 15 9 2 2. + 0 + -0.0196330007165670 + -0.8770229816436768 + 1.0799999581649899e-003 + <_> + + <_> + + + + <_>7 6 15 6 -1. + <_>7 8 15 2 3. + 0 + -0.0235469993203878 + 0.2610610127449036 + -0.2148140072822571 + <_> + + <_> + + + + <_>8 2 3 18 -1. + <_>8 8 3 6 3. + 0 + -0.0433529987931252 + -0.9908969998359680 + -9.9560003727674484e-003 + <_> + + <_> + + + + <_>6 6 12 6 -1. + <_>12 6 6 3 2. + <_>6 9 6 3 2. + 0 + -0.0221839994192123 + 0.6345440149307251 + -0.0565470010042191 + <_> + + <_> + + + + <_>2 19 20 4 -1. + <_>2 19 10 2 2. + <_>12 21 10 2 2. + 0 + 0.0165309999138117 + 0.0246649999171495 + -0.7332680225372315 + <_> + + <_> + + + + <_>14 15 6 9 -1. + <_>14 18 6 3 3. + 0 + -0.0327440015971661 + -0.5629720091819763 + 0.1664029955863953 + <_> + + <_> + + + + <_>3 5 18 14 -1. + <_>3 5 9 7 2. + <_>12 12 9 7 2. + 0 + 0.0714159980416298 + -3.0000001424923539e-004 + -0.9328640103340149 + <_> + + <_> + + + + <_>15 6 4 18 -1. + <_>17 6 2 9 2. + <_>15 15 2 9 2. + 0 + 8.0999999772757292e-004 + -0.0953800007700920 + 0.2518469989299774 + <_> + + <_> + + + + <_>5 6 4 18 -1. + <_>5 6 2 9 2. + <_>7 15 2 9 2. + 0 + -8.4090000018477440e-003 + -0.6549680233001709 + 0.0673009976744652 + <_> + + <_> + + + + <_>11 0 6 9 -1. + <_>13 0 2 9 3. + 0 + -0.0172540005296469 + -0.4649299979209900 + 0.1607089936733246 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0186410006135702 + -1.0594010353088379 + -0.0196170005947351 + <_> + + <_> + + + + <_>11 5 6 9 -1. + <_>13 5 2 9 3. + 0 + -9.1979997232556343e-003 + 0.5071619749069214 + -0.1533920019865036 + <_> + + <_> + + + + <_>9 5 6 6 -1. + <_>12 5 3 6 2. + 0 + 0.0185380000621080 + -0.3049820065498352 + 0.7350620031356812 + <_> + + <_> + + + + <_>4 1 16 6 -1. + <_>12 1 8 3 2. + <_>4 4 8 3 2. + 0 + -0.0503350012004375 + -1.1140480041503906 + 0.1800010055303574 + <_> + + <_> + + + + <_>9 13 6 11 -1. + <_>11 13 2 11 3. + 0 + -0.0235290005803108 + -0.8690789937973023 + -0.0124599998816848 + <_> + + <_> + + + + <_>17 1 6 12 -1. + <_>20 1 3 6 2. + <_>17 7 3 6 2. + 0 + -0.0271000005304813 + 0.6594290137290955 + -0.0353239998221397 + <_> + + <_> + + + + <_>1 17 18 3 -1. + <_>1 18 18 1 3. + 0 + 6.5879998728632927e-003 + -0.2295340001583099 + 0.4242509901523590 + <_> + + <_> + + + + <_>7 13 10 8 -1. + <_>7 17 10 4 2. + 0 + 0.0233600009232759 + 0.1835619956254959 + -0.9858729839324951 + <_> + + <_> + + + + <_>6 18 10 6 -1. + <_>6 20 10 2 3. + 0 + 0.0129469996318221 + -0.3314740061759949 + 0.2132319957017899 + <_> + + <_> + + + + <_>9 14 9 4 -1. + <_>9 16 9 2 2. + 0 + -6.6559999249875546e-003 + -0.1195140033960342 + 0.2975279986858368 + <_> + + <_> + + + + <_>1 1 6 12 -1. + <_>1 1 3 6 2. + <_>4 7 3 6 2. + 0 + -0.0225709993392229 + 0.3849940001964569 + -0.2443449944257736 + <_> + + <_> + + + + <_>19 4 5 12 -1. + <_>19 8 5 4 3. + 0 + -0.0638139992952347 + -0.8938350081443787 + 0.1421750038862228 + <_> + + <_> + + + + <_>0 0 8 8 -1. + <_>4 0 4 8 2. + 0 + -0.0499450005590916 + 0.5386440157890320 + -0.2048529982566834 + <_> + + <_> + + + + <_>3 5 19 3 -1. + <_>3 6 19 1 3. + 0 + 6.8319998681545258e-003 + -0.0566789992153645 + 0.3997099995613098 + <_> + + <_> + + + + <_>1 5 12 6 -1. + <_>1 5 6 3 2. + <_>7 8 6 3 2. + 0 + -0.0558359995484352 + -1.5239470005035400 + -0.0511830002069473 + <_> + + <_> + + + + <_>2 1 21 8 -1. + <_>9 1 7 8 3. + 0 + 0.3195700049400330 + 0.0745740011334419 + 1.2447799444198608 + <_> + + <_> + + + + <_>4 1 16 8 -1. + <_>4 5 16 4 2. + 0 + 0.0809559971094131 + -0.1966550052165985 + 0.5988969802856445 + <_> + + <_> + + + + <_>6 0 18 3 -1. + <_>6 1 18 1 3. + 0 + -0.0149119999259710 + -0.6402059793472290 + 0.1580760031938553 + <_> + + <_> + + + + <_>4 4 10 14 -1. + <_>4 11 10 7 2. + 0 + 0.0467090010643005 + 0.0852390006184578 + -0.4548720121383667 + <_> + + <_> + + + + <_>15 6 4 10 -1. + <_>15 11 4 5 2. + 0 + 6.0539999976754189e-003 + -0.4318400025367737 + 0.2245260030031204 + <_> + + <_> + + + + <_>3 18 18 3 -1. + <_>9 18 6 3 3. + 0 + -0.0343759991228580 + 0.4020250141620636 + -0.2390359938144684 + <_> + + <_> + + + + <_>8 18 12 6 -1. + <_>12 18 4 6 3. + 0 + -0.0349240005016327 + 0.5287010073661804 + 0.0397090017795563 + <_> + + <_> + + + + <_>3 15 6 9 -1. + <_>6 15 3 9 2. + 0 + 3.0030000489205122e-003 + -0.3875429928302765 + 0.1419260054826737 + <_> + + <_> + + + + <_>15 7 6 8 -1. + <_>15 11 6 4 2. + 0 + -0.0141329998150468 + 0.8752840161323547 + 0.0855079963803291 + <_> + + <_> + + + + <_>3 7 6 8 -1. + <_>3 11 6 4 2. + 0 + -6.7940000444650650e-003 + -1.1649219989776611 + -0.0339430011808872 + <_> + + <_> + + + + <_>5 9 18 6 -1. + <_>14 9 9 3 2. + <_>5 12 9 3 2. + 0 + -0.0528860017657280 + 1.0930680036544800 + 0.0511870011687279 + <_> + + <_> + + + + <_>1 13 12 6 -1. + <_>1 15 12 2 3. + 0 + -2.1079999860376120e-003 + 0.1369619965553284 + -0.3384999930858612 + <_> + + <_> + + + + <_>14 15 10 6 -1. + <_>14 17 10 2 3. + 0 + 0.0183530002832413 + 0.1366160064935684 + -0.4077779948711395 + <_> + + <_> + + + + <_>0 15 10 6 -1. + <_>0 17 10 2 3. + 0 + 0.0126719996333122 + -0.0149360001087189 + -0.8170750141143799 + <_> + + <_> + + + + <_>15 13 6 9 -1. + <_>15 16 6 3 3. + 0 + 0.0129249999299645 + 0.1762509942054749 + -0.3249169886112213 + <_> + + <_> + + + + <_>3 13 6 9 -1. + <_>3 16 6 3 3. + 0 + -0.0179210007190704 + -0.5274540185928345 + 0.0444430001080036 + <_> + + <_> + + + + <_>9 5 8 8 -1. + <_>9 5 4 8 2. + 0 + 1.9160000374540687e-003 + -0.1097859963774681 + 0.2206750065088272 + <_> + + <_> + + + + <_>1 18 12 6 -1. + <_>1 18 6 3 2. + <_>7 21 6 3 2. + 0 + -0.0146979996934533 + 0.3906779885292053 + -0.2222499996423721 + <_> + + <_> + + + + <_>13 19 10 4 -1. + <_>13 21 10 2 2. + 0 + -0.0149729996919632 + -0.2545090019702911 + 0.1779000014066696 + <_> + + <_> + + + + <_>1 19 10 4 -1. + <_>1 21 10 2 2. + 0 + 0.0146369999274611 + -0.0251250006258488 + -0.8712130188941956 + <_> + + <_> + + + + <_>6 19 18 3 -1. + <_>6 20 18 1 3. + 0 + -0.0109740002080798 + 0.7908279895782471 + 0.0201210007071495 + <_> + + <_> + + + + <_>8 14 4 10 -1. + <_>8 19 4 5 2. + 0 + -9.1599998995661736e-003 + -0.4790689945220947 + 0.0522320009768009 + <_> + + <_> + + + + <_>0 0 24 6 -1. + <_>0 2 24 2 3. + 0 + 4.6179997734725475e-003 + -0.1724459975957871 + 0.3452779948711395 + <_> + + <_> + + + + <_>0 1 6 9 -1. + <_>0 4 6 3 3. + 0 + 0.0234769992530346 + 3.7760001141577959e-003 + -0.6533370018005371 + <_> + + <_> + + + + <_>4 9 20 6 -1. + <_>14 9 10 3 2. + <_>4 12 10 3 2. + 0 + 0.0317669995129108 + 0.0163640007376671 + 0.5872370004653931 + <_> + + <_> + + + + <_>1 15 19 8 -1. + <_>1 19 19 4 2. + 0 + -0.0184199996292591 + 0.1999389976263046 + -0.3205649852752686 + <_> + + <_> + + + + <_>14 0 10 6 -1. + <_>14 2 10 2 3. + 0 + 0.0195439998060465 + 0.1845020055770874 + -0.2379360049962997 + <_> + + <_> + + + + <_>1 10 21 14 -1. + <_>8 10 7 14 3. + 0 + 0.4115949869155884 + -0.0603820011019707 + -1.6072119474411011 + <_> + + <_> + + + + <_>10 10 8 8 -1. + <_>10 10 4 8 2. + 0 + -0.0415959991514683 + -0.3275620043277741 + 0.1505800038576126 + <_> + + <_> + + + + <_>6 8 10 4 -1. + <_>11 8 5 4 2. + 0 + -0.0103359995409846 + -0.6239439845085144 + 0.0131120001897216 + <_> + + <_> + + + + <_>10 5 4 9 -1. + <_>10 5 2 9 2. + 0 + 0.0123929996043444 + -0.0331149995326996 + 0.5557990074157715 + <_> + + <_> + + + + <_>7 5 6 10 -1. + <_>9 5 2 10 3. + 0 + -8.7270000949501991e-003 + 0.1988320052623749 + -0.3763560056686401 + <_> + + <_> + + + + <_>14 4 4 13 -1. + <_>14 4 2 13 2. + 0 + 0.0162950009107590 + 0.2037300020456314 + -0.4280079901218414 + <_> + + <_> + + + + <_>6 4 4 13 -1. + <_>8 4 2 13 2. + 0 + -0.0104839997366071 + -0.5684700012207031 + 0.0441990010440350 + <_> + + <_> + + + + <_>8 7 9 6 -1. + <_>11 7 3 6 3. + 0 + -0.0124319996684790 + 0.7464190125465393 + 0.0436789989471436 + <_> + + <_> + + + + <_>3 6 16 6 -1. + <_>3 6 8 3 2. + <_>11 9 8 3 2. + 0 + -0.0503749996423721 + 0.8509010076522827 + -0.1777379959821701 + <_> + + <_> + + + + <_>5 4 16 14 -1. + <_>13 4 8 7 2. + <_>5 11 8 7 2. + 0 + 0.0495480000972748 + 0.1678490042686462 + -0.2987749874591827 + <_> + + <_> + + + + <_>0 0 24 4 -1. + <_>0 0 12 2 2. + <_>12 2 12 2 2. + 0 + -0.0410850010812283 + -1.3302919864654541 + -0.0491820015013218 + <_> + + <_> + + + + <_>9 1 9 6 -1. + <_>12 1 3 6 3. + 0 + 1.0069999843835831e-003 + -0.0605389997363091 + 0.1848320066928864 + <_> + + <_> + + + + <_>4 1 14 4 -1. + <_>11 1 7 4 2. + 0 + -0.0501429997384548 + 0.7644770145416260 + -0.1835699975490570 + <_> + + <_> + + + + <_>10 14 7 9 -1. + <_>10 17 7 3 3. + 0 + -8.7879998609423637e-003 + 0.2265599966049194 + -0.0631569996476173 + <_> + + <_> + + + + <_>8 3 8 10 -1. + <_>8 3 4 5 2. + <_>12 8 4 5 2. + 0 + -0.0501709990203381 + -1.5899070501327515 + -0.0612550005316734 + <_> + + <_> + + + + <_>7 3 12 5 -1. + <_>11 3 4 5 3. + 0 + 0.1021609976887703 + 0.1207180023193359 + -1.4120110273361206 + <_> + + <_> + + + + <_>8 2 4 13 -1. + <_>10 2 2 13 2. + 0 + -0.0143729997798800 + -1.3116970062255859 + -0.0519360005855560 + <_> + + <_> + + + + <_>11 2 3 19 -1. + <_>12 2 1 19 3. + 0 + 0.0102819995954633 + -2.1639999467879534e-003 + 0.4424720108509064 + <_> + + <_> + + + + <_>7 7 9 6 -1. + <_>10 7 3 6 3. + 0 + -0.0118140000849962 + 0.6537809967994690 + -0.1872369945049286 + <_> + + <_> + + + + <_>4 22 20 2 -1. + <_>4 22 10 2 2. + 0 + 0.0721149966120720 + 0.0718469992280006 + 0.8149629831314087 + <_> + + <_> + + + + <_>0 16 24 4 -1. + <_>0 16 12 2 2. + <_>12 18 12 2 2. + 0 + -0.0190019998699427 + -0.6742720007896423 + -4.3200000072829425e-004 + <_> + + <_> + + + + <_>7 3 12 5 -1. + <_>11 3 4 5 3. + 0 + -4.6990001574158669e-003 + 0.3331150114536285 + 0.0557940006256104 + <_> + + <_> + + + + <_>1 10 8 14 -1. + <_>1 10 4 7 2. + <_>5 17 4 7 2. + 0 + -0.0581570006906986 + 0.4557229876518250 + -0.2030510008335114 + <_> + + <_> + + + + <_>11 16 6 6 -1. + <_>11 19 6 3 2. + 0 + 1.1360000353306532e-003 + -0.0446869991719723 + 0.2268189936876297 + <_> + + <_> + + + + <_>6 0 10 24 -1. + <_>6 0 5 12 2. + <_>11 12 5 12 2. + 0 + -0.0494149997830391 + 0.2669459879398346 + -0.2611699998378754 + <_> + + <_> + + + + <_>7 5 14 14 -1. + <_>14 5 7 7 2. + <_>7 12 7 7 2. + 0 + -0.1191380023956299 + -0.8301799893379211 + 0.1324850022792816 + <_> + + <_> + + + + <_>7 8 10 8 -1. + <_>7 8 5 4 2. + <_>12 12 5 4 2. + 0 + -0.0183039996773005 + -0.6749920248985291 + 0.0170920006930828 + <_> + + <_> + + + + <_>9 1 9 6 -1. + <_>12 1 3 6 3. + 0 + -7.9199997708201408e-003 + -0.0722870007157326 + 0.1442580074071884 + <_> + + <_> + + + + <_>0 6 24 3 -1. + <_>12 6 12 3 2. + 0 + 0.0519259981811047 + 0.0309219993650913 + -0.5586060285568237 + <_> + + <_> + + + + <_>7 3 12 5 -1. + <_>11 3 4 5 3. + 0 + 0.0667240023612976 + 0.1366640031337738 + -0.2941100001335144 + <_> + + <_> + + + + <_>1 13 22 4 -1. + <_>1 13 11 2 2. + <_>12 15 11 2 2. + 0 + -0.0137780001387000 + -0.5944390296936035 + 0.0153000000864267 + <_> + + <_> + + + + <_>9 12 12 6 -1. + <_>9 14 12 2 3. + 0 + -0.0177609995007515 + 0.4049650132656097 + -3.3559999428689480e-003 + <_> + + <_> + + + + <_>0 5 9 6 -1. + <_>0 7 9 2 3. + 0 + -0.0422349981963634 + -1.0897940397262573 + -0.0402249991893768 + <_> + + <_> + + + + <_>1 5 23 6 -1. + <_>1 7 23 2 3. + 0 + -0.0135249998420477 + 0.2892189919948578 + -0.2519479990005493 + <_> + + <_> + + + + <_>1 6 19 12 -1. + <_>1 10 19 4 3. + 0 + -0.0111060002818704 + 0.6531280279159546 + -0.1805370002985001 + <_> + + <_> + + + + <_>9 1 6 21 -1. + <_>9 8 6 7 3. + 0 + -0.1228459998965263 + -1.9570649862289429 + 0.1481540054082871 + <_> + + <_> + + + + <_>3 19 18 3 -1. + <_>9 19 6 3 3. + 0 + 0.0477159991860390 + -0.2287559956312180 + 0.3423370122909546 + <_> + + <_> + + + + <_>9 14 6 9 -1. + <_>11 14 2 9 3. + 0 + 0.0318170003592968 + 0.1597629934549332 + -1.0091969966888428 + <_> + + <_> + + + + <_>9 6 4 12 -1. + <_>11 6 2 12 2. + 0 + 4.2570000514388084e-003 + -0.3888129889965057 + 0.0842100009322166 + <_> + + <_> + + + + <_>16 0 6 9 -1. + <_>18 0 2 9 3. + 0 + -0.0613729991018772 + 1.7152810096740723 + 0.0593249984085560 + <_> + + <_> + + + + <_>2 0 6 9 -1. + <_>4 0 2 9 3. + 0 + -2.7030000928789377e-003 + -0.3816170096397400 + 0.0851270034909248 + <_> + + <_> + + + + <_>13 1 4 22 -1. + <_>15 1 2 11 2. + <_>13 12 2 11 2. + 0 + -0.0685440003871918 + -3.0925889015197754 + 0.1178800016641617 + <_> + + <_> + + + + <_>1 8 8 12 -1. + <_>1 14 8 6 2. + 0 + 0.1037250012159348 + -0.1376930028200150 + 1.9009410142898560 + <_> + + <_> + + + + <_>14 7 7 9 -1. + <_>14 10 7 3 3. + 0 + 0.0157990008592606 + -0.0626600012183189 + 0.2591769993305206 + <_> + + <_> + + + + <_>3 12 18 4 -1. + <_>3 12 9 2 2. + <_>12 14 9 2 2. + 0 + -9.8040001466870308e-003 + -0.5629159808158875 + 0.0439230017364025 + <_> + + <_> + + + + <_>13 1 4 22 -1. + <_>15 1 2 11 2. + <_>13 12 2 11 2. + 0 + -9.0229995548725128e-003 + 0.2528710067272186 + -0.0412259995937347 + <_> + + <_> + + + + <_>7 1 4 22 -1. + <_>7 1 2 11 2. + <_>9 12 2 11 2. + 0 + -0.0637549981474876 + -2.6178569793701172 + -0.0740059986710548 + <_> + + <_> + + + + <_>4 7 20 4 -1. + <_>14 7 10 2 2. + <_>4 9 10 2 2. + 0 + 0.0389549992978573 + 0.0590329989790916 + 0.8594560027122498 + <_> + + <_> + + + + <_>9 10 6 7 -1. + <_>12 10 3 7 2. + 0 + -0.0398029983043671 + 0.9360049962997437 + -0.1563940048217773 + <_> + + <_> + + + + <_>7 7 10 4 -1. + <_>7 7 5 4 2. + 0 + 0.0503019988536835 + 0.1372590065002441 + -2.5549728870391846 + <_> + + <_> + + + + <_>0 3 4 15 -1. + <_>0 8 4 5 3. + 0 + 0.0462500005960464 + -0.0139640001580119 + -0.7102620005607605 + <_> + + <_> + + + + <_>15 0 8 12 -1. + <_>19 0 4 6 2. + <_>15 6 4 6 2. + 0 + 0.0621960014104843 + 0.0595260001718998 + 1.6509100198745728 + <_> + + <_> + + + + <_>1 0 8 12 -1. + <_>1 0 4 6 2. + <_>5 6 4 6 2. + 0 + -0.0647760033607483 + 0.7136899828910828 + -0.1727000027894974 + <_> + + <_> + + + + <_>14 5 6 16 -1. + <_>16 5 2 16 3. + 0 + 0.0275229997932911 + 0.1463160067796707 + -0.0814289972186089 + <_> + + <_> + + + + <_>4 5 6 16 -1. + <_>6 5 2 16 3. + 0 + 3.9900001138448715e-004 + -0.3714450001716614 + 0.1015269979834557 + <_> + + <_> + + + + <_>15 0 6 16 -1. + <_>17 0 2 16 3. + 0 + -4.3299999088048935e-003 + -0.2375629991292954 + 0.2679840028285980 + <_> + + <_> + + + + <_>3 0 6 16 -1. + <_>5 0 2 16 3. + 0 + 0.0472970008850098 + -0.0276820007711649 + -0.8491029739379883 + <_> + + <_> + + + + <_>0 2 24 3 -1. + <_>0 3 24 1 3. + 0 + 0.0125089995563030 + 0.1873019933700562 + -0.5600110292434692 + <_> + + <_> + + + + <_>7 1 10 4 -1. + <_>7 3 10 2 2. + 0 + 0.0458990000188351 + -0.1560119986534119 + 0.9707300066947937 + <_> + + <_> + + + + <_>1 0 23 8 -1. + <_>1 4 23 4 2. + 0 + 0.1985339969396591 + 0.1489550024271011 + -1.1015529632568359 + <_> + + <_> + + + + <_>1 17 19 3 -1. + <_>1 18 19 1 3. + 0 + 0.0166749991476536 + -0.1661529988050461 + 0.8221099972724915 + <_> + + <_> + + + + <_>6 18 18 2 -1. + <_>6 19 18 1 2. + 0 + 1.9829999655485153e-003 + -0.0712499991059303 + 0.2881090044975281 + <_> + + <_> + + + + <_>1 17 9 6 -1. + <_>1 19 9 2 3. + 0 + 0.0224479995667934 + -0.0209810007363558 + -0.7841650247573853 + <_> + + <_> + + + + <_>15 15 6 9 -1. + <_>15 18 6 3 3. + 0 + -0.0139130000025034 + -0.1816579997539520 + 0.2049179971218109 + <_> + + <_> + + + + <_>3 15 6 9 -1. + <_>3 18 6 3 3. + 0 + -7.7659999951720238e-003 + -0.4559589922428131 + 0.0635769963264465 + <_> + + <_> + + + + <_>4 14 20 6 -1. + <_>4 17 20 3 2. + 0 + -0.0132090002298355 + 0.2663230001926422 + -0.1779599934816361 + <_> + + <_> + + + + <_>0 10 6 14 -1. + <_>0 10 3 7 2. + <_>3 17 3 7 2. + 0 + 0.0490529984235764 + -0.1547680050134659 + 1.1069979667663574 + <_> + + <_> + + + + <_>6 18 18 3 -1. + <_>6 19 18 1 3. + 0 + 0.0202639997005463 + 0.0689150020480156 + 0.6986749768257141 + <_> + + <_> + + + + <_>4 12 9 7 -1. + <_>7 12 3 7 3. + 0 + -0.0168280005455017 + 0.2760719954967499 + -0.2513920068740845 + <_> + + <_> + + + + <_>6 10 18 5 -1. + <_>12 10 6 5 3. + 0 + -0.1693949997425079 + -3.0767529010772705 + 0.1161750033497810 + <_> + + <_> + + + + <_>0 10 18 5 -1. + <_>6 10 6 5 3. + 0 + -0.1133610010147095 + -1.4639229774475098 + -0.0514470003545284 + <_> + + <_> + + + + <_>3 2 18 9 -1. + <_>9 2 6 9 3. + 0 + -0.0776859968900681 + 0.8843020200729370 + 0.0433069989085197 + <_> + + <_> + + + + <_>4 6 10 10 -1. + <_>4 6 5 5 2. + <_>9 11 5 5 2. + 0 + -0.0155680002644658 + 0.1367249935865402 + -0.3450550138950348 + <_> + + <_> + + + + <_>20 14 4 9 -1. + <_>20 14 2 9 2. + 0 + -0.0660189986228943 + -1.0300110578536987 + 0.1160139963030815 + <_> + + <_> + + + + <_>0 14 4 9 -1. + <_>2 14 2 9 2. + 0 + 8.3699999377131462e-003 + 0.0764290019869804 + -0.4400250017642975 + <_> + + <_> + + + + <_>11 1 4 20 -1. + <_>13 1 2 10 2. + <_>11 11 2 10 2. + 0 + 0.0354029983282089 + 0.1197950020432472 + -0.7266830205917358 + <_> + + <_> + + + + <_>6 21 12 3 -1. + <_>12 21 6 3 2. + 0 + -0.0390510000288486 + 0.6737530231475830 + -0.1819600015878677 + <_> + + <_> + + + + <_>11 1 4 20 -1. + <_>13 1 2 10 2. + <_>11 11 2 10 2. + 0 + -9.7899995744228363e-003 + 0.2126459926366806 + 0.0367560014128685 + <_> + + <_> + + + + <_>1 16 10 8 -1. + <_>1 16 5 4 2. + <_>6 20 5 4 2. + 0 + -0.0230470001697540 + 0.4474219977855682 + -0.2098670005798340 + <_> + + <_> + + + + <_>11 1 4 20 -1. + <_>13 1 2 10 2. + <_>11 11 2 10 2. + 0 + 3.1169999856501818e-003 + 0.0375440008938313 + 0.2780820131301880 + <_> + + <_> + + + + <_>1 0 3 19 -1. + <_>2 0 1 19 3. + 0 + 0.0131360003724694 + -0.1984239965677261 + 0.5433570146560669 + <_> + + <_> + + + + <_>11 1 4 20 -1. + <_>13 1 2 10 2. + <_>11 11 2 10 2. + 0 + 0.0147820003330708 + 0.1353060007095337 + -0.1115360036492348 + <_> + + <_> + + + + <_>0 1 6 9 -1. + <_>2 1 2 9 3. + 0 + -0.0601390004158020 + 0.8403930068016052 + -0.1671160012483597 + <_> + + <_> + + + + <_>3 7 19 4 -1. + <_>3 9 19 2 2. + 0 + 0.0519989989697933 + 0.1737200021743774 + -0.7854760289192200 + <_> + + <_> + + + + <_>7 14 9 6 -1. + <_>7 16 9 2 3. + 0 + 0.0247920006513596 + -0.1773920059204102 + 0.6675260066986084 + <_> + + <_> + + + + <_>17 1 7 6 -1. + <_>17 4 7 3 2. + 0 + -0.0120149999856949 + -0.1426369994878769 + 0.1607050001621246 + <_> + + <_> + + + + <_>5 0 14 8 -1. + <_>5 4 14 4 2. + 0 + -0.0986559987068176 + 1.0429769754409790 + -0.1577019989490509 + <_> + + <_> + + + + <_>16 1 8 6 -1. + <_>16 4 8 3 2. + 0 + 0.1175829991698265 + 0.1095570027828217 + -4.4920377731323242 + <_> + + <_> + + + + <_>0 1 8 6 -1. + <_>0 4 8 3 2. + 0 + -0.0189229995012283 + -0.7854340076446533 + 0.0129840001463890 + <_> + + <_> + + + + <_>6 0 18 4 -1. + <_>15 0 9 2 2. + <_>6 2 9 2 2. + 0 + -0.0283909998834133 + -0.6056990027427673 + 0.1290349960327148 + <_> + + <_> + + + + <_>0 14 9 6 -1. + <_>0 16 9 2 3. + 0 + 0.0131829995661974 + -0.0144159998744726 + -0.7321050167083740 + <_> + + <_> + + + + <_>3 7 18 8 -1. + <_>9 7 6 8 3. + 0 + -0.1165300011634827 + -2.0442469120025635 + 0.1405310034751892 + <_> + + <_> + + + + <_>2 11 6 9 -1. + <_>4 11 2 9 3. + 0 + -3.8880000356584787e-003 + -0.4186159968376160 + 0.0787049978971481 + <_> + + <_> + + + + <_>10 5 6 9 -1. + <_>12 5 2 9 3. + 0 + 0.0312290005385876 + 0.0246329996734858 + 0.4187040030956268 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>10 6 2 9 2. + <_>12 15 2 9 2. + 0 + 0.0251989997923374 + -0.1755779981613159 + 0.6471059918403626 + <_> + + <_> + + + + <_>11 1 4 20 -1. + <_>13 1 2 10 2. + <_>11 11 2 10 2. + 0 + -0.0281240008771420 + -0.2200559973716736 + 0.1412100046873093 + <_> + + <_> + + + + <_>9 1 4 20 -1. + <_>9 1 2 10 2. + <_>11 11 2 10 2. + 0 + 0.0364990010857582 + -0.0684269964694977 + -2.3410849571228027 + <_> + + <_> + + + + <_>5 9 18 6 -1. + <_>14 9 9 3 2. + <_>5 12 9 3 2. + 0 + -0.0722929984331131 + 1.2898750305175781 + 0.0848750025033951 + <_> + + <_> + + + + <_>6 4 6 9 -1. + <_>8 4 2 9 3. + 0 + -0.0416710004210472 + -1.1630970239639282 + -0.0537529997527599 + <_> + + <_> + + + + <_>10 16 8 6 -1. + <_>10 16 4 6 2. + 0 + 0.0477030016481876 + 0.0701010003685951 + 0.7367650270462036 + <_> + + <_> + + + + <_>0 0 18 8 -1. + <_>0 0 9 4 2. + <_>9 4 9 4 2. + 0 + 0.0657930001616478 + -0.1775529980659485 + 0.6978049874305725 + <_> + + <_> + + + + <_>6 5 14 12 -1. + <_>13 5 7 6 2. + <_>6 11 7 6 2. + 0 + 0.0139049999415874 + 0.2193679958581924 + -0.2039079964160919 + <_> + + <_> + + + + <_>4 3 15 7 -1. + <_>9 3 5 7 3. + 0 + -0.0277309995144606 + 0.6186789870262146 + -0.1780409961938858 + <_> + + <_> + + + + <_>14 12 10 6 -1. + <_>14 14 10 2 3. + 0 + -0.0158799998462200 + -0.4648410081863403 + 0.1882860064506531 + <_> + + <_> + + + + <_>0 11 4 10 -1. + <_>0 16 4 5 2. + 0 + 0.0741280019283295 + -0.1285810023546219 + 3.2792479991912842 + <_> + + <_> + + + + <_>1 10 22 3 -1. + <_>1 11 22 1 3. + 0 + -8.9000002481043339e-004 + -0.3011760115623474 + 0.2381879985332489 + <_> + + <_> + + + + <_>8 9 6 10 -1. + <_>10 9 2 10 3. + 0 + 0.0179650001227856 + -0.2228499948978424 + 0.2995400130748749 + <_> + + <_> + + + + <_>13 2 6 12 -1. + <_>16 2 3 6 2. + <_>13 8 3 6 2. + 0 + -2.5380000006407499e-003 + 0.2506439983844757 + -0.1366560012102127 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>10 6 2 9 2. + <_>12 15 2 9 2. + 0 + -9.0680001303553581e-003 + 0.2901749908924103 + -0.2892970144748688 + <_> + + <_> + + + + <_>7 8 10 16 -1. + <_>12 8 5 8 2. + <_>7 16 5 8 2. + 0 + 0.0491699986159801 + 0.1915639936923981 + -0.6832870244979858 + <_> + + <_> + + + + <_>8 1 8 12 -1. + <_>8 1 4 6 2. + <_>12 7 4 6 2. + 0 + -0.0306809991598129 + -0.7567700147628784 + -0.0132799996063113 + <_> + + <_> + + + + <_>7 1 12 14 -1. + <_>13 1 6 7 2. + <_>7 8 6 7 2. + 0 + 0.1001740023493767 + 0.0844539999961853 + 1.0888710021972656 + <_> + + <_> + + + + <_>2 14 12 6 -1. + <_>2 16 12 2 3. + 0 + 3.1950001139193773e-003 + -0.2691940069198608 + 0.1953790038824081 + <_> + + <_> + + + + <_>11 16 6 6 -1. + <_>11 19 6 3 2. + 0 + 0.0355030000209808 + 0.1363230049610138 + -0.5691720247268677 + <_> + + <_> + + + + <_>7 16 6 6 -1. + <_>7 19 6 3 2. + 0 + 4.5900000259280205e-004 + -0.4044399857521057 + 0.1407479941844940 + <_> + + <_> + + + + <_>13 4 4 10 -1. + <_>13 4 2 10 2. + 0 + 0.0252589993178844 + 0.1624320000410080 + -0.5574179887771606 + <_> + + <_> + + + + <_>0 19 19 3 -1. + <_>0 20 19 1 3. + 0 + -5.1549999043345451e-003 + 0.3113259971141815 + -0.2275609970092773 + <_> + + <_> + + + + <_>12 8 6 8 -1. + <_>12 12 6 4 2. + 0 + 1.5869999770075083e-003 + -0.2686769962310791 + 0.1956540048122406 + <_> + + <_> + + + + <_>8 1 8 22 -1. + <_>8 12 8 11 2. + 0 + -0.0162049997597933 + 0.1548649966716766 + -0.3405779898166657 + <_> + + <_> + + + + <_>12 8 6 8 -1. + <_>12 12 6 4 2. + 0 + -0.0296240001916885 + 1.1466799974441528 + 0.0905579999089241 + <_> + + <_> + + + + <_>6 8 6 8 -1. + <_>6 12 6 4 2. + 0 + -1.5930000226944685e-003 + -0.7125750184059143 + -7.0400000549852848e-004 + <_> + + <_> + + + + <_>14 5 6 9 -1. + <_>14 8 6 3 3. + 0 + -0.0540190003812313 + 0.4153749942779541 + 0.0272460002452135 + <_> + + <_> + + + + <_>0 6 24 4 -1. + <_>0 8 24 2 2. + 0 + -0.0662110000848770 + -1.3340090513229370 + -0.0473529994487762 + <_> + + <_> + + + + <_>14 12 10 6 -1. + <_>14 14 10 2 3. + 0 + 0.0279409997165203 + 0.1444630026817322 + -0.5151839852333069 + <_> + + <_> + + + + <_>0 12 10 6 -1. + <_>0 14 10 2 3. + 0 + 0.0289570000022650 + -0.0499660000205040 + -1.1929039955139160 + <_> + + <_> + + + + <_>4 6 19 3 -1. + <_>4 7 19 1 3. + 0 + -0.0204249992966652 + 0.6388130187988281 + 0.0381410010159016 + <_> + + <_> + + + + <_>1 6 19 3 -1. + <_>1 7 19 1 3. + 0 + 0.0124169997870922 + -0.2154700011014938 + 0.4947769939899445 + -3.2772979736328125 + 19 + -1 + <_> + + + <_> + + <_> + + + + <_>4 0 16 9 -1. + <_>4 3 16 3 3. + 0 + 0.0432740002870560 + -0.8049439787864685 + 0.3989729881286621 + <_> + + <_> + + + + <_>0 1 24 5 -1. + <_>8 1 8 5 3. + 0 + 0.1861550062894821 + -0.3165529966354370 + 0.6887729763984680 + <_> + + <_> + + + + <_>3 6 6 15 -1. + <_>3 11 6 5 3. + 0 + 0.0318609997630119 + -0.6426619887351990 + 0.2555089890956879 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0140220001339912 + -0.4592660069465637 + 0.3117119967937470 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -6.3029997982084751e-003 + 0.4602690041065216 + -0.2743850052356720 + <_> + + <_> + + + + <_>6 22 18 2 -1. + <_>6 23 18 1 2. + 0 + -5.4310001432895660e-003 + 0.3660860061645508 + -0.2720580101013184 + <_> + + <_> + + + + <_>2 12 6 9 -1. + <_>2 15 6 3 3. + 0 + 0.0168229993432760 + 0.0234769992530346 + -0.8844379782676697 + <_> + + <_> + + + + <_>18 12 6 9 -1. + <_>18 15 6 3 3. + 0 + 0.0260390006005764 + 0.1748879998922348 + -0.5456470251083374 + <_> + + <_> + + + + <_>0 12 6 9 -1. + <_>0 15 6 3 3. + 0 + -0.0267200004309416 + -0.9639649987220764 + 0.0235249996185303 + <_> + + <_> + + + + <_>11 14 4 10 -1. + <_>11 19 4 5 2. + 0 + -0.0170419998466969 + -0.7084879875183106 + 0.2146809995174408 + <_> + + <_> + + + + <_>9 6 6 16 -1. + <_>9 14 6 8 2. + 0 + 5.9569999575614929e-003 + 0.0736010000109673 + -0.6822559833526611 + <_> + + <_> + + + + <_>7 7 10 10 -1. + <_>7 12 10 5 2. + 0 + -2.8679999522864819e-003 + -0.7493500113487244 + 0.2380339950323105 + <_> + + <_> + + + + <_>1 3 6 13 -1. + <_>3 3 2 13 3. + 0 + -0.0437749996781349 + 0.6832330226898193 + -0.2138029932975769 + <_> + + <_> + + + + <_>18 1 6 13 -1. + <_>18 1 3 13 2. + 0 + 0.0516330003738403 + -0.1256649941205978 + 0.6752380132675171 + <_> + + <_> + + + + <_>5 1 6 9 -1. + <_>7 1 2 9 3. + 0 + 8.1780003383755684e-003 + 0.0706899985671043 + -0.8066589832305908 + <_> + + <_> + + + + <_>18 2 6 11 -1. + <_>18 2 3 11 2. + 0 + -0.0528419986367226 + 0.9543390274047852 + 0.0165480002760887 + <_> + + <_> + + + + <_>0 2 6 11 -1. + <_>3 2 3 11 2. + 0 + 0.0525839999318123 + -0.2841440141201019 + 0.4712980091571808 + <_> + + <_> + + + + <_>9 12 15 6 -1. + <_>9 14 15 2 3. + 0 + -0.0126590002328157 + 0.3844540119171143 + -0.0622880011796951 + <_> + + <_> + + + + <_>2 2 20 3 -1. + <_>2 3 20 1 3. + 0 + 0.0116940001025796 + 5.6000000768108293e-005 + -1.0173139572143555 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>10 6 2 9 2. + 0 + -0.0239189993590117 + 0.8492130041122437 + 5.7399999350309372e-003 + <_> + + <_> + + + + <_>5 6 12 14 -1. + <_>5 6 6 7 2. + <_>11 13 6 7 2. + 0 + -0.0616739988327026 + -0.9257140159606934 + -1.7679999582469463e-003 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + -1.8279999494552612e-003 + -0.5437229871749878 + 0.2493239939212799 + <_> + + <_> + + + + <_>7 0 9 6 -1. + <_>10 0 3 6 3. + 0 + 0.0352579988539219 + -7.3719997890293598e-003 + -0.9396399855613709 + <_> + + <_> + + + + <_>10 6 6 9 -1. + <_>12 6 2 9 3. + 0 + -0.0184380002319813 + 0.7213670015335083 + 0.0104919997975230 + <_> + + <_> + + + + <_>4 1 12 20 -1. + <_>4 1 6 10 2. + <_>10 11 6 10 2. + 0 + -0.0383890010416508 + 0.1927260011434555 + -0.3583210110664368 + <_> + + <_> + + + + <_>6 7 18 3 -1. + <_>6 7 9 3 2. + 0 + 0.0997209995985031 + 0.1135419979691505 + -1.6304190158843994 + <_> + + <_> + + + + <_>0 7 18 3 -1. + <_>9 7 9 3 2. + 0 + 0.0844620019197464 + -0.0534209981560707 + -1.6981120109558105 + <_> + + <_> + + + + <_>3 20 18 3 -1. + <_>9 20 6 3 3. + 0 + 0.0402700006961823 + -0.1078319996595383 + 0.5192660093307495 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0589359998703003 + -0.1805370002985001 + 0.9511979818344116 + <_> + + <_> + + + + <_>6 2 12 15 -1. + <_>10 2 4 15 3. + 0 + 0.1495700031518936 + 0.1678529977798462 + -1.1591869592666626 + <_> + + <_> + + + + <_>2 3 18 3 -1. + <_>2 4 18 1 3. + 0 + 6.9399998756125569e-004 + 0.2049140036106110 + -0.3311820030212402 + <_> + + <_> + + + + <_>19 4 4 18 -1. + <_>21 4 2 9 2. + <_>19 13 2 9 2. + 0 + -0.0333690010011196 + 0.9346809983253479 + -2.9639999847859144e-003 + <_> + + <_> + + + + <_>0 1 19 3 -1. + <_>0 2 19 1 3. + 0 + 9.3759996816515923e-003 + 3.7000000011175871e-003 + -0.7754979729652405 + <_> + + <_> + + + + <_>5 0 15 4 -1. + <_>5 2 15 2 2. + 0 + 0.0431939996778965 + -2.2040000185370445e-003 + 0.7458969950675964 + <_> + + <_> + + + + <_>5 2 14 5 -1. + <_>12 2 7 5 2. + 0 + -0.0675550028681755 + 0.7229210138320923 + -0.1840420067310333 + <_> + + <_> + + + + <_>1 2 22 14 -1. + <_>1 2 11 14 2. + 0 + -0.3116860091686249 + 1.0014270544052124 + 0.0340030007064343 + <_> + + <_> + + + + <_>8 15 6 9 -1. + <_>10 15 2 9 3. + 0 + 0.0297439992427826 + -0.0463560000061989 + -1.2781809568405151 + <_> + + <_> + + + + <_>6 17 18 3 -1. + <_>6 18 18 1 3. + 0 + 0.0107370000332594 + 0.0148120000958443 + 0.6664999723434448 + <_> + + <_> + + + + <_>9 6 3 18 -1. + <_>9 12 3 6 3. + 0 + -0.0288410000503063 + -0.9422259926795960 + -0.0207969993352890 + <_> + + <_> + + + + <_>2 0 20 3 -1. + <_>2 1 20 1 3. + 0 + -5.7649998925626278e-003 + -0.4354189932346344 + 0.2338600009679794 + <_> + + <_> + + + + <_>5 4 5 12 -1. + <_>5 8 5 4 3. + 0 + 0.0284109991043806 + -0.1761579960584641 + 0.8576530218124390 + <_> + + <_> + + + + <_>8 6 12 5 -1. + <_>12 6 4 5 3. + 0 + -0.0290079992264509 + 0.5797809958457947 + 0.0285659991204739 + <_> + + <_> + + + + <_>9 12 6 12 -1. + <_>9 12 3 6 2. + <_>12 18 3 6 2. + 0 + 0.0249659996479750 + -0.0227290000766516 + -0.9677309989929199 + <_> + + <_> + + + + <_>14 14 8 10 -1. + <_>18 14 4 5 2. + <_>14 19 4 5 2. + 0 + 0.0120360003784299 + -0.1421470046043396 + 0.5168799757957459 + <_> + + <_> + + + + <_>2 14 8 10 -1. + <_>2 14 4 5 2. + <_>6 19 4 5 2. + 0 + -0.0425140000879765 + 0.9727380275726318 + -0.1811980009078980 + <_> + + <_> + + + + <_>10 18 12 6 -1. + <_>16 18 6 3 2. + <_>10 21 6 3 2. + 0 + 0.0102760000154376 + -0.0830999985337257 + 0.3176279962062836 + <_> + + <_> + + + + <_>1 3 6 9 -1. + <_>1 6 6 3 3. + 0 + -0.0691919997334480 + -2.0668580532073975 + -0.0601739995181561 + <_> + + <_> + + + + <_>11 3 3 20 -1. + <_>12 3 1 20 3. + 0 + -4.6769999898970127e-003 + 0.4413180053234100 + 0.0232090000063181 + <_> + + <_> + + + + <_>4 6 14 6 -1. + <_>4 6 7 3 2. + <_>11 9 7 3 2. + 0 + -0.0139239998534322 + 0.2860670089721680 + -0.2915270030498505 + <_> + + <_> + + + + <_>6 5 12 13 -1. + <_>10 5 4 13 3. + 0 + -0.0153339998796582 + -0.5741450190544128 + 0.2306330054998398 + <_> + + <_> + + + + <_>5 4 4 15 -1. + <_>5 9 4 5 3. + 0 + -0.0102390004321933 + 0.3447920083999634 + -0.2608039975166321 + <_> + + <_> + + + + <_>9 16 15 4 -1. + <_>14 16 5 4 3. + 0 + -0.0509889982640743 + 0.5615410208702087 + 0.0612189993262291 + <_> + + <_> + + + + <_>7 8 6 14 -1. + <_>7 8 3 7 2. + <_>10 15 3 7 2. + 0 + 0.0306899994611740 + -0.1477279961109161 + 1.6378489732742310 + <_> + + <_> + + + + <_>7 6 10 6 -1. + <_>7 8 10 2 3. + 0 + -0.0112239997833967 + 0.2400619983673096 + -0.4486489892005920 + <_> + + <_> + + + + <_>2 5 18 3 -1. + <_>2 6 18 1 3. + 0 + -6.2899999320507050e-003 + 0.4311949908733368 + -0.2380899935960770 + <_> + + <_> + + + + <_>5 1 15 8 -1. + <_>5 5 15 4 2. + 0 + 0.0785909965634346 + 0.0198650006204844 + 0.8085380196571350 + <_> + + <_> + + + + <_>7 1 8 18 -1. + <_>7 10 8 9 2. + 0 + -0.0101789999753237 + 0.1819320023059845 + -0.3287779986858368 + <_> + + <_> + + + + <_>0 10 24 3 -1. + <_>0 11 24 1 3. + 0 + 0.0312270000576973 + 0.1497389972209930 + -1.4180339574813843 + <_> + + <_> + + + + <_>0 2 6 13 -1. + <_>2 2 2 13 3. + 0 + 0.0401969999074936 + -0.1976049989461899 + 0.5850819945335388 + <_> + + <_> + + + + <_>16 0 8 10 -1. + <_>20 0 4 5 2. + <_>16 5 4 5 2. + 0 + 0.0161380004137754 + 5.0000002374872565e-004 + 0.3905000090599060 + <_> + + <_> + + + + <_>5 1 10 9 -1. + <_>5 4 10 3 3. + 0 + -0.0455190017819405 + 1.2646820545196533 + -0.1563259959220886 + <_> + + <_> + + + + <_>5 6 18 3 -1. + <_>5 7 18 1 3. + 0 + -0.0181300006806850 + 0.6514850258827210 + 0.0102359997108579 + <_> + + <_> + + + + <_>0 1 24 3 -1. + <_>0 2 24 1 3. + 0 + -0.0140019999817014 + -1.0344820022583008 + -0.0321829989552498 + <_> + + <_> + + + + <_>11 4 6 11 -1. + <_>13 4 2 11 3. + 0 + -0.0388160012662411 + -0.4787429869174957 + 0.1629070043563843 + <_> + + <_> + + + + <_>0 0 8 10 -1. + <_>0 0 4 5 2. + <_>4 5 4 5 2. + 0 + 0.0316560007631779 + -0.2098339945077896 + 0.5457590222358704 + <_> + + <_> + + + + <_>4 16 18 3 -1. + <_>4 17 18 1 3. + 0 + -0.0108399996533990 + 0.5189880132675171 + -0.0150800002738833 + <_> + + <_> + + + + <_>2 16 18 3 -1. + <_>2 17 18 1 3. + 0 + 0.0120329996570945 + -0.2110760062932968 + 0.7593700289726257 + <_> + + <_> + + + + <_>3 0 18 10 -1. + <_>12 0 9 5 2. + <_>3 5 9 5 2. + 0 + 0.0707729980349541 + 0.1804880052804947 + -0.7404850125312805 + <_> + + <_> + + + + <_>2 3 20 21 -1. + <_>12 3 10 21 2. + 0 + 0.5313979983329773 + -0.1449169963598251 + 1.5360039472579956 + <_> + + <_> + + + + <_>6 7 14 3 -1. + <_>6 7 7 3 2. + 0 + -0.0147740002721548 + -0.2815369963645935 + 0.2040729969739914 + <_> + + <_> + + + + <_>0 9 12 6 -1. + <_>0 9 6 3 2. + <_>6 12 6 3 2. + 0 + -2.2410000674426556e-003 + -0.4487630128860474 + 0.0539890006184578 + <_> + + <_> + + + + <_>3 14 21 4 -1. + <_>10 14 7 4 3. + 0 + 0.0499680005013943 + 0.0415140017867088 + 0.2941710054874420 + <_> + + <_> + + + + <_>0 14 21 4 -1. + <_>7 14 7 4 3. + 0 + -0.0477019995450974 + 0.3967429995536804 + -0.2830179929733276 + <_> + + <_> + + + + <_>5 21 18 3 -1. + <_>11 21 6 3 3. + 0 + -0.0913110002875328 + 2.1994259357452393 + 0.0879649966955185 + <_> + + <_> + + + + <_>1 21 18 3 -1. + <_>7 21 6 3 3. + 0 + 0.0380700007081032 + -0.2802560031414032 + 0.2515619993209839 + <_> + + <_> + + + + <_>19 4 4 18 -1. + <_>21 4 2 9 2. + <_>19 13 2 9 2. + 0 + -0.0155389998108149 + 0.3415749967098236 + 0.0179249998182058 + <_> + + <_> + + + + <_>3 7 18 3 -1. + <_>3 8 18 1 3. + 0 + -0.0154459998011589 + 0.2868019938468933 + -0.2513589859008789 + <_> + + <_> + + + + <_>19 4 4 18 -1. + <_>21 4 2 9 2. + <_>19 13 2 9 2. + 0 + -0.0573880001902580 + 0.6383000016212463 + 0.0885979980230331 + <_> + + <_> + + + + <_>7 15 10 6 -1. + <_>7 17 10 2 3. + 0 + -5.9440000914037228e-003 + 0.0790169984102249 + -0.4077489972114563 + <_> + + <_> + + + + <_>9 13 11 9 -1. + <_>9 16 11 3 3. + 0 + -0.0699689984321594 + -0.4464420080184937 + 0.1721960008144379 + <_> + + <_> + + + + <_>0 6 4 10 -1. + <_>0 11 4 5 2. + 0 + -0.0250649992376566 + -0.9827020168304443 + -0.0353880003094673 + <_> + + <_> + + + + <_>15 16 9 6 -1. + <_>15 18 9 2 3. + 0 + 0.0172160007059574 + 0.2270590066909790 + -0.8055009841918945 + <_> + + <_> + + + + <_>1 5 4 18 -1. + <_>1 5 2 9 2. + <_>3 14 2 9 2. + 0 + -0.0442790016531944 + 0.8395199775695801 + -0.1742960065603256 + <_> + + <_> + + + + <_>9 8 8 10 -1. + <_>13 8 4 5 2. + <_>9 13 4 5 2. + 0 + 0.0439889989793301 + 0.1155719980597496 + -1.9666889905929565 + <_> + + <_> + + + + <_>7 8 8 10 -1. + <_>7 8 4 5 2. + <_>11 13 4 5 2. + 0 + 0.0159070007503033 + -0.0375760011374950 + -1.0311100482940674 + <_> + + <_> + + + + <_>9 8 12 5 -1. + <_>13 8 4 5 3. + 0 + -0.0927549973130226 + -1.3530019521713257 + 0.1214129999279976 + <_> + + <_> + + + + <_>7 8 9 7 -1. + <_>10 8 3 7 3. + 0 + 0.0710370019078255 + -0.1768430024385452 + 0.7448520064353943 + <_> + + <_> + + + + <_>9 8 12 5 -1. + <_>13 8 4 5 3. + 0 + 0.0577620007097721 + 0.1283559948205948 + -0.4444420039653778 + <_> + + <_> + + + + <_>7 6 9 7 -1. + <_>10 6 3 7 3. + 0 + -0.0164320003241301 + 0.8015270233154297 + -0.1749169975519180 + <_> + + <_> + + + + <_>9 8 12 5 -1. + <_>13 8 4 5 3. + 0 + 0.0239390004426241 + 0.1614499986171722 + -0.1236450001597405 + <_> + + <_> + + + + <_>10 5 4 18 -1. + <_>10 11 4 6 3. + 0 + 0.0126360002905130 + 0.1541199982166290 + -0.3329379856586456 + <_> + + <_> + + + + <_>5 5 14 12 -1. + <_>5 11 14 6 2. + 0 + -0.0543479993939400 + -1.8400700092315674 + 0.1483599990606308 + <_> + + <_> + + + + <_>0 1 11 4 -1. + <_>0 3 11 2 2. + 0 + -0.0132619999349117 + -0.8083879947662354 + -0.0277260001748800 + <_> + + <_> + + + + <_>9 10 6 10 -1. + <_>11 10 2 10 3. + 0 + 6.1340001411736012e-003 + -0.1378500014543533 + 0.3285849988460541 + <_> + + <_> + + + + <_>2 17 11 6 -1. + <_>2 19 11 2 3. + 0 + 0.0289910007268190 + -0.0255169998854399 + -0.8338720202445984 + <_> + + <_> + + + + <_>15 16 9 6 -1. + <_>15 18 9 2 3. + 0 + -0.0219860002398491 + -0.7373999953269959 + 0.1788710057735443 + <_> + + <_> + + + + <_>1 10 18 2 -1. + <_>1 11 18 1 2. + 0 + 5.3269998170435429e-003 + -0.4544929862022400 + 0.0687910020351410 + <_> + + <_> + + + + <_>6 4 12 13 -1. + <_>10 4 4 13 3. + 0 + 0.0860479995608330 + 0.2100850045681000 + -0.3780890107154846 + <_> + + <_> + + + + <_>0 18 18 3 -1. + <_>0 19 18 1 3. + 0 + -8.5549997165799141e-003 + 0.4013499915599823 + -0.2107409983873367 + <_> + + <_> + + + + <_>6 18 18 3 -1. + <_>6 19 18 1 3. + 0 + 6.7790001630783081e-003 + -0.0216489993035793 + 0.4542149901390076 + <_> + + <_> + + + + <_>0 16 9 6 -1. + <_>0 18 9 2 3. + 0 + -6.3959998078644276e-003 + -0.4981859922409058 + 0.0759079977869987 + <_> + + <_> + + + + <_>13 15 9 6 -1. + <_>13 17 9 2 3. + 0 + 8.9469999074935913e-003 + 0.1785770058631897 + -0.2845489978790283 + <_> + + <_> + + + + <_>2 15 9 6 -1. + <_>2 17 9 2 3. + 0 + 3.2589999027550220e-003 + 0.0466249994933605 + -0.5520629882812500 + <_> + + <_> + + + + <_>13 1 6 16 -1. + <_>13 1 3 16 2. + 0 + 0.0414769984781742 + 0.1755049973726273 + -0.2070399969816208 + <_> + + <_> + + + + <_>5 1 6 16 -1. + <_>8 1 3 16 2. + 0 + -6.7449999041855335e-003 + -0.4639259874820709 + 0.0693039968609810 + <_> + + <_> + + + + <_>11 5 6 10 -1. + <_>13 5 2 10 3. + 0 + 0.0305649992078543 + 0.0517349988222122 + 0.7555050253868103 + <_> + + <_> + + + + <_>7 5 6 10 -1. + <_>9 5 2 10 3. + 0 + -7.4780001305043697e-003 + 0.1489389985799789 + -0.3190680146217346 + <_> + + <_> + + + + <_>10 0 6 24 -1. + <_>12 0 2 24 3. + 0 + 0.0890889987349510 + 0.1373880058526993 + -1.1379710435867310 + <_> + + <_> + + + + <_>3 4 4 20 -1. + <_>3 4 2 10 2. + <_>5 14 2 10 2. + 0 + 7.3230001144111156e-003 + -0.2882919907569885 + 0.1908860057592392 + <_> + + <_> + + + + <_>14 0 6 9 -1. + <_>16 0 2 9 3. + 0 + -0.0182050000876188 + -0.3017860054969788 + 0.1679580062627792 + <_> + + <_> + + + + <_>4 0 6 9 -1. + <_>6 0 2 9 3. + 0 + -0.0258280001580715 + -0.9813799858093262 + -0.0198609996587038 + <_> + + <_> + + + + <_>4 5 18 5 -1. + <_>10 5 6 5 3. + 0 + 0.1093619987368584 + 0.0487900003790855 + 0.5311830043792725 + <_> + + <_> + + + + <_>5 6 6 9 -1. + <_>7 6 2 9 3. + 0 + -0.0114249996840954 + 0.2370599955320358 + -0.2792530059814453 + <_> + + <_> + + + + <_>7 2 15 8 -1. + <_>12 2 5 8 3. + 0 + -0.0575659982860088 + 0.4725539982318878 + 0.0651710033416748 + <_> + + <_> + + + + <_>2 2 15 8 -1. + <_>7 2 5 8 3. + 0 + 0.1027830019593239 + -0.2076510041952133 + 0.5094770193099976 + <_> + + <_> + + + + <_>10 0 4 9 -1. + <_>10 0 2 9 2. + 0 + 0.0270419996231794 + 0.1642120033502579 + -1.4508620500564575 + <_> + + <_> + + + + <_>3 4 6 12 -1. + <_>3 4 3 6 2. + <_>6 10 3 6 2. + 0 + -0.0136350002139807 + -0.5654389858245850 + 0.0237889997661114 + <_> + + <_> + + + + <_>16 0 8 18 -1. + <_>16 0 4 18 2. + 0 + -0.3215819895267487 + -3.5602829456329346 + 0.1180130019783974 + <_> + + <_> + + + + <_>0 0 8 18 -1. + <_>4 0 4 18 2. + 0 + 0.2045810073614121 + -0.0370160005986691 + -1.0225499868392944 + <_> + + <_> + + + + <_>0 7 24 6 -1. + <_>0 9 24 2 3. + 0 + -0.0703470036387444 + -0.5649189949035645 + 0.1852519959211350 + <_> + + <_> + + + + <_>4 7 14 3 -1. + <_>11 7 7 3 2. + 0 + 0.0378310009837151 + -0.0299019999802113 + -0.8292149901390076 + <_> + + <_> + + + + <_>10 8 8 15 -1. + <_>10 8 4 15 2. + 0 + -0.0702980011701584 + -0.5317230224609375 + 0.1443019956350327 + <_> + + <_> + + + + <_>7 0 10 14 -1. + <_>12 0 5 14 2. + 0 + 0.0632210001349449 + -0.2204120010137558 + 0.4795219898223877 + <_> + + <_> + + + + <_>13 10 8 10 -1. + <_>17 10 4 5 2. + <_>13 15 4 5 2. + 0 + 0.0363930016756058 + 0.1422269940376282 + -0.6119390130043030 + <_> + + <_> + + + + <_>3 0 4 9 -1. + <_>5 0 2 9 2. + 0 + 4.0099998004734516e-003 + -0.3456079959869385 + 0.1173869967460632 + <_> + + <_> + + + + <_>16 1 6 8 -1. + <_>16 1 3 8 2. + 0 + -0.0491060018539429 + 0.9598410129547119 + 0.0649349987506866 + <_> + + <_> + + + + <_>2 1 6 8 -1. + <_>5 1 3 8 2. + 0 + -0.0715830028057098 + 1.7385669946670532 + -0.1425289958715439 + <_> + + <_> + + + + <_>3 6 18 12 -1. + <_>3 10 18 4 3. + 0 + -0.0380089990794659 + 1.3872820138931274 + 0.0661880001425743 + <_> + + <_> + + + + <_>4 12 16 4 -1. + <_>4 14 16 2 2. + 0 + -3.1570000573992729e-003 + 0.0536770001053810 + -0.5404800176620483 + <_> + + <_> + + + + <_>4 9 16 15 -1. + <_>4 14 16 5 3. + 0 + 0.0194589998573065 + -0.0936200022697449 + 0.3913100063800812 + <_> + + <_> + + + + <_>3 10 8 10 -1. + <_>3 10 4 5 2. + <_>7 15 4 5 2. + 0 + 0.0112939998507500 + 0.0372239984571934 + -0.5425180196762085 + <_> + + <_> + + + + <_>8 18 16 6 -1. + <_>16 18 8 3 2. + <_>8 21 8 3 2. + 0 + -0.0334950014948845 + 0.9530789852142334 + 0.0376969985663891 + <_> + + <_> + + + + <_>2 16 12 5 -1. + <_>6 16 4 5 3. + 0 + 0.0920350030064583 + -0.1348839998245239 + 2.2897069454193115 + <_> + + <_> + + + + <_>14 14 9 4 -1. + <_>14 16 9 2 2. + 0 + 3.7529999390244484e-003 + 0.2282419949769974 + -0.5998370051383972 + <_> + + <_> + + + + <_>7 14 9 6 -1. + <_>7 16 9 2 3. + 0 + 0.0128480000421405 + -0.2200520038604736 + 0.3722189962863922 + <_> + + <_> + + + + <_>4 10 16 12 -1. + <_>4 14 16 4 3. + 0 + -0.1431619971990585 + 1.2855789661407471 + 0.0472370013594627 + <_> + + <_> + + + + <_>0 13 19 6 -1. + <_>0 15 19 2 3. + 0 + -0.0968799963593483 + -3.9550929069519043 + -0.0729039981961250 + <_> + + <_> + + + + <_>10 13 9 6 -1. + <_>10 15 9 2 3. + 0 + -8.8459998369216919e-003 + 0.3767499923706055 + -0.0464840009808540 + <_> + + <_> + + + + <_>5 0 3 23 -1. + <_>6 0 1 23 3. + 0 + 0.0159000009298325 + -0.0244570001959801 + -0.8003479838371277 + <_> + + <_> + + + + <_>0 8 24 6 -1. + <_>0 10 24 2 3. + 0 + 0.0703720003366470 + 0.1701900064945221 + -0.6306899785995483 + <_> + + <_> + + + + <_>0 5 5 12 -1. + <_>0 9 5 4 3. + 0 + -0.0379539988934994 + -0.9366719722747803 + -0.0412140004336834 + <_> + + <_> + + + + <_>3 0 19 18 -1. + <_>3 9 19 9 2. + 0 + 0.5159789919853210 + 0.1308059990406036 + -1.5802290439605713 + <_> + + <_> + + + + <_>9 11 6 12 -1. + <_>9 11 3 6 2. + <_>12 17 3 6 2. + 0 + -0.0328430011868477 + -1.1441620588302612 + -0.0491739995777607 + <_> + + <_> + + + + <_>0 5 24 8 -1. + <_>12 5 12 4 2. + <_>0 9 12 4 2. + 0 + -0.0363570004701614 + 0.4960640072822571 + -0.0344589985907078 + <_> + + <_> + + + + <_>6 18 9 4 -1. + <_>6 20 9 2 2. + 0 + 6.8080001510679722e-003 + -0.3099780082702637 + 0.1705480068922043 + <_> + + <_> + + + + <_>8 8 10 6 -1. + <_>8 10 10 2 3. + 0 + -0.0161140002310276 + -0.3790459930896759 + 0.1607899963855743 + <_> + + <_> + + + + <_>2 7 20 3 -1. + <_>2 8 20 1 3. + 0 + 8.4530003368854523e-003 + -0.1865549981594086 + 0.5636770129203796 + <_> + + <_> + + + + <_>12 0 7 20 -1. + <_>12 10 7 10 2. + 0 + -0.1375239938497543 + -0.5898990035057068 + 0.1174950003623962 + <_> + + <_> + + + + <_>5 0 7 20 -1. + <_>5 10 7 10 2. + 0 + 0.1768800020217896 + -0.1542489975690842 + 0.9291110038757324 + <_> + + <_> + + + + <_>14 2 2 18 -1. + <_>14 11 2 9 2. + 0 + 7.9309996217489243e-003 + 0.3219070136547089 + -0.1639260053634644 + <_> + + <_> + + + + <_>5 8 10 12 -1. + <_>10 8 5 12 2. + 0 + 0.1097180023789406 + -0.1587650030851364 + 1.0186259746551514 + <_> + + <_> + + + + <_>6 9 12 8 -1. + <_>12 9 6 4 2. + <_>6 13 6 4 2. + 0 + -0.0302930008620024 + 0.7558730244636536 + 0.0317949987947941 + <_> + + <_> + + + + <_>7 7 3 14 -1. + <_>7 14 3 7 2. + 0 + -0.0231180004775524 + -0.8845149874687195 + -9.5039997249841690e-003 + <_> + + <_> + + + + <_>11 2 12 16 -1. + <_>17 2 6 8 2. + <_>11 10 6 8 2. + 0 + -3.0900000128895044e-003 + 0.2383829951286316 + -0.1160620003938675 + <_> + + <_> + + + + <_>7 0 6 9 -1. + <_>9 0 2 9 3. + 0 + -0.0333920009434223 + -1.8738139867782593 + -0.0685029998421669 + <_> + + <_> + + + + <_>13 14 9 4 -1. + <_>13 16 9 2 2. + 0 + 0.0131900003179908 + 0.1291989982128143 + -0.6751220226287842 + <_> + + <_> + + + + <_>0 12 22 4 -1. + <_>0 12 11 2 2. + <_>11 14 11 2 2. + 0 + 0.0146610001102090 + -0.0248290002346039 + -0.7439680099487305 + <_> + + <_> + + + + <_>1 12 22 6 -1. + <_>12 12 11 3 2. + <_>1 15 11 3 2. + 0 + -0.0132480002939701 + 0.4682019948959351 + -0.0241650007665157 + <_> + + <_> + + + + <_>6 6 9 6 -1. + <_>9 6 3 6 3. + 0 + -0.0162189994007349 + 0.4008379876613617 + -0.2125570029020309 + <_> + + <_> + + + + <_>10 0 4 9 -1. + <_>10 0 2 9 2. + 0 + -0.0290520004928112 + -1.5650019645690918 + 0.1437589973211289 + <_> + + <_> + + + + <_>3 8 18 7 -1. + <_>9 8 6 7 3. + 0 + -0.1015319973230362 + -1.9220689535140991 + -0.0695599988102913 + <_> + + <_> + + + + <_>0 6 24 6 -1. + <_>0 8 24 2 3. + 0 + 0.0377539992332459 + 0.1339679956436157 + -2.2639141082763672 + <_> + + <_> + + + + <_>0 11 24 10 -1. + <_>8 11 8 10 3. + 0 + -0.2855559885501862 + 1.0215270519256592 + -0.1523219943046570 + <_> + + <_> + + + + <_>3 3 18 21 -1. + <_>9 3 6 21 3. + 0 + 0.1536069959402084 + -0.0974090024828911 + 0.4166240096092224 + <_> + + <_> + + + + <_>7 12 4 10 -1. + <_>9 12 2 10 2. + 0 + -2.1199999901000410e-004 + 0.1127189993858337 + -0.4165399968624115 + <_> + + <_> + + + + <_>10 16 10 8 -1. + <_>15 16 5 4 2. + <_>10 20 5 4 2. + 0 + -0.0205979999154806 + 0.6054049730300903 + 0.0624679997563362 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + 0.0373539999127388 + -0.1891900002956390 + 0.4646469950675964 + <_> + + <_> + + + + <_>12 10 6 12 -1. + <_>15 10 3 6 2. + <_>12 16 3 6 2. + 0 + 0.0572750009596348 + 0.1156530007719994 + -1.3213009834289551 + <_> + + <_> + + + + <_>6 10 6 12 -1. + <_>6 10 3 6 2. + <_>9 16 3 6 2. + 0 + 5.1029999740421772e-003 + -0.2806150019168854 + 0.1931339949369431 + <_> + + <_> + + + + <_>16 12 6 12 -1. + <_>19 12 3 6 2. + <_>16 18 3 6 2. + 0 + -0.0546449981629848 + 0.7242850065231323 + 0.0754479989409447 + <_> + + <_> + + + + <_>2 12 6 12 -1. + <_>2 12 3 6 2. + <_>5 18 3 6 2. + 0 + 0.0253490004688501 + -0.1948180049657822 + 0.4603280127048492 + <_> + + <_> + + + + <_>10 15 6 9 -1. + <_>12 15 2 9 3. + 0 + 0.0243110004812479 + 0.1556410044431686 + -0.4991390109062195 + <_> + + <_> + + + + <_>8 15 6 9 -1. + <_>10 15 2 9 3. + 0 + 0.0359620004892349 + -0.0585730001330376 + -1.5418399572372437 + <_> + + <_> + + + + <_>14 20 10 4 -1. + <_>14 20 5 4 2. + 0 + -0.1000069975852966 + -1.6100039482116699 + 0.1145050004124641 + <_> + + <_> + + + + <_>0 20 10 4 -1. + <_>5 20 5 4 2. + 0 + 0.0844359993934631 + -0.0614069998264313 + -1.4673349857330322 + <_> + + <_> + + + + <_>11 17 9 6 -1. + <_>11 19 9 2 3. + 0 + 0.0159479994326830 + 0.1628790050745010 + -0.1102640032768250 + <_> + + <_> + + + + <_>3 2 14 4 -1. + <_>3 4 14 2 2. + 0 + 0.0338240005075932 + -0.1793269962072372 + 0.5721840262413025 + <_> + + <_> + + + + <_>10 1 10 4 -1. + <_>10 3 10 2 2. + 0 + -0.0619960017502308 + 4.6511812210083008 + 0.0945340022444725 + <_> + + <_> + + + + <_>0 15 10 4 -1. + <_>5 15 5 4 2. + 0 + 0.0698769986629486 + -0.1698590070009232 + 0.8702899813652039 + <_> + + <_> + + + + <_>19 2 3 19 -1. + <_>20 2 1 19 3. + 0 + -0.0279169995337725 + 0.9104250073432922 + 0.0568270012736321 + <_> + + <_> + + + + <_>4 12 9 8 -1. + <_>7 12 3 8 3. + 0 + -0.0127640003338456 + 0.2206670045852661 + -0.2776910066604614 + -3.3196411132812500 + 20 + -1 + <_> + + + <_> + + <_> + + + + <_>4 7 5 12 -1. + <_>4 11 5 4 3. + 0 + 0.0216620005667210 + -0.8986889719963074 + 0.2943629920482636 + <_> + + <_> + + + + <_>0 1 24 3 -1. + <_>8 1 8 3 3. + 0 + 0.1004450023174286 + -0.3765920102596283 + 0.6089100241661072 + <_> + + <_> + + + + <_>6 8 12 4 -1. + <_>6 10 12 2 2. + 0 + 0.0260039996355772 + -0.3812850117683411 + 0.3921740055084229 + <_> + + <_> + + + + <_>19 3 4 10 -1. + <_>19 3 2 10 2. + 0 + 0.0284410007297993 + -0.1818230003118515 + 0.5892720222473145 + <_> + + <_> + + + + <_>0 6 9 6 -1. + <_>3 6 3 6 3. + 0 + 0.0386120006442070 + -0.2239959985017777 + 0.6377999782562256 + <_> + + <_> + + + + <_>18 0 6 22 -1. + <_>20 0 2 22 3. + 0 + -0.0465949997305870 + 0.7081220149993897 + -0.1466619968414307 + <_> + + <_> + + + + <_>0 0 6 22 -1. + <_>2 0 2 22 3. + 0 + -0.0427919998764992 + 0.4768039882183075 + -0.2923319935798645 + <_> + + <_> + + + + <_>5 15 19 3 -1. + <_>5 16 19 1 3. + 0 + 3.7960000336170197e-003 + -0.1851029992103577 + 0.5262669920921326 + <_> + + <_> + + + + <_>10 7 4 15 -1. + <_>10 12 4 5 3. + 0 + 0.0423489995300770 + 0.0392449982464314 + -0.8919770121574402 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0195989999920130 + -0.2335840016603470 + 0.4414649903774262 + <_> + + <_> + + + + <_>0 21 18 3 -1. + <_>0 22 18 1 3. + 0 + 8.7400001939386129e-004 + -0.4606359899044037 + 0.1768960058689117 + <_> + + <_> + + + + <_>7 3 10 15 -1. + <_>7 8 10 5 3. + 0 + -4.3629999272525311e-003 + 0.3349319994449616 + -0.2989340126514435 + <_> + + <_> + + + + <_>1 7 18 3 -1. + <_>1 8 18 1 3. + 0 + 0.0169730000197887 + -0.1640869975090027 + 1.5993679761886597 + <_> + + <_> + + + + <_>8 2 9 6 -1. + <_>11 2 3 6 3. + 0 + 0.0360639989376068 + 0.2260169982910156 + -0.5318610072135925 + <_> + + <_> + + + + <_>0 10 24 14 -1. + <_>0 17 24 7 2. + 0 + -0.0708649978041649 + 0.1522050052881241 + -0.4191460013389587 + <_> + + <_> + + + + <_>13 9 8 10 -1. + <_>17 9 4 5 2. + <_>13 14 4 5 2. + 0 + -0.0630759969353676 + -1.4874019622802734 + 0.1295370012521744 + <_> + + <_> + + + + <_>10 5 4 9 -1. + <_>12 5 2 9 2. + 0 + 0.0296700000762939 + -0.1914590001106262 + 0.9818490147590637 + <_> + + <_> + + + + <_>13 9 8 10 -1. + <_>17 9 4 5 2. + <_>13 14 4 5 2. + 0 + 0.0378739982843399 + 0.1345950067043304 + -0.5631629824638367 + <_> + + <_> + + + + <_>7 11 10 10 -1. + <_>7 11 5 5 2. + <_>12 16 5 5 2. + 0 + -0.0332890003919601 + -1.0828030109405518 + -0.0115040000528097 + <_> + + <_> + + + + <_>4 13 18 4 -1. + <_>13 13 9 2 2. + <_>4 15 9 2 2. + 0 + -0.0316089987754822 + -0.5922449827194214 + 0.1339479982852936 + <_> + + <_> + + + + <_>0 0 19 2 -1. + <_>0 1 19 1 2. + 0 + 1.0740000288933516e-003 + -0.4918580055236816 + 0.0944460034370422 + <_> + + <_> + + + + <_>0 18 24 6 -1. + <_>8 18 8 6 3. + 0 + -0.0715560019016266 + 0.5971019864082336 + -0.0395530015230179 + <_> + + <_> + + + + <_>6 4 8 16 -1. + <_>6 12 8 8 2. + 0 + -0.0811700001358986 + -1.1817820072174072 + -0.0282540004700422 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 10 10 2 2. + 0 + 4.4860001653432846e-003 + -0.6102809906005859 + 0.2261909991502762 + <_> + + <_> + + + + <_>0 3 6 9 -1. + <_>0 6 6 3 3. + 0 + -0.0421760007739067 + -1.1435619592666626 + -0.0290019996464252 + <_> + + <_> + + + + <_>13 15 7 9 -1. + <_>13 18 7 3 3. + 0 + -0.0656400024890900 + -1.6470279693603516 + 0.1281030029058456 + <_> + + <_> + + + + <_>3 18 12 6 -1. + <_>3 18 6 3 2. + <_>9 21 6 3 2. + 0 + 0.0181889999657869 + -0.3114939928054810 + 0.2573960125446320 + <_> + + <_> + + + + <_>12 14 6 9 -1. + <_>12 17 6 3 3. + 0 + -0.0515200011432171 + -0.6920689940452576 + 0.1527079939842224 + <_> + + <_> + + + + <_>2 15 15 8 -1. + <_>2 19 15 4 2. + 0 + -0.0471509993076324 + -0.7186830043792725 + 2.6879999786615372e-003 + <_> + + <_> + + + + <_>9 6 6 16 -1. + <_>9 14 6 8 2. + 0 + 0.0174889992922544 + 0.2237119972705841 + -0.5538179874420166 + <_> + + <_> + + + + <_>6 6 7 12 -1. + <_>6 10 7 4 3. + 0 + -0.0252640005201101 + 1.0319819450378418 + -0.1749649941921234 + <_> + + <_> + + + + <_>14 6 6 9 -1. + <_>14 9 6 3 3. + 0 + -0.0407450012862682 + 0.4496159851551056 + 0.0393490009009838 + <_> + + <_> + + + + <_>5 14 6 9 -1. + <_>5 17 6 3 3. + 0 + -0.0376669988036156 + -0.8547570109367371 + -0.0124639999121428 + <_> + + <_> + + + + <_>10 8 6 9 -1. + <_>12 8 2 9 3. + 0 + -0.0134110003709793 + 0.5784559845924377 + -0.0174679998308420 + <_> + + <_> + + + + <_>6 6 4 18 -1. + <_>6 6 2 9 2. + <_>8 15 2 9 2. + 0 + -7.8999997640494257e-005 + -0.3774920105934143 + 0.1396179944276810 + <_> + + <_> + + + + <_>14 9 6 12 -1. + <_>17 9 3 6 2. + <_>14 15 3 6 2. + 0 + -0.0114150000736117 + -0.2618660032749176 + 0.2371249943971634 + <_> + + <_> + + + + <_>4 9 6 12 -1. + <_>4 9 3 6 2. + <_>7 15 3 6 2. + 0 + 0.0372000001370907 + -0.0286260005086660 + -1.2945239543914795 + <_> + + <_> + + + + <_>14 15 9 6 -1. + <_>14 17 9 2 3. + 0 + 3.4050000831484795e-003 + 0.2053139954805374 + -0.1874749958515167 + <_> + + <_> + + + + <_>0 20 18 4 -1. + <_>0 20 9 2 2. + <_>9 22 9 2 2. + 0 + -0.0224830005317926 + 0.6702719926834106 + -0.1959400027990341 + <_> + + <_> + + + + <_>13 18 9 6 -1. + <_>13 20 9 2 3. + 0 + 0.0232749991118908 + 0.1740539968013763 + -0.3274630010128021 + <_> + + <_> + + + + <_>2 18 9 6 -1. + <_>2 20 9 2 3. + 0 + -0.0139170000329614 + -0.8395429849624634 + -6.3760001212358475e-003 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + 7.5429999269545078e-003 + -0.0341949984431267 + 0.5899819731712341 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + -0.0115390000864863 + 0.4214279949665070 + -0.2351049929857254 + <_> + + <_> + + + + <_>19 2 4 22 -1. + <_>21 2 2 11 2. + <_>19 13 2 11 2. + 0 + 0.0525019988417625 + 0.0693039968609810 + 0.7322649955749512 + <_> + + <_> + + + + <_>1 2 4 22 -1. + <_>1 2 2 11 2. + <_>3 13 2 11 2. + 0 + 0.0527159981429577 + -0.1568810045719147 + 1.0907289981842041 + <_> + + <_> + + + + <_>15 0 2 24 -1. + <_>15 0 1 24 2. + 0 + -0.0117260003462434 + -0.7093430161476135 + 0.1682880073785782 + <_> + + <_> + + + + <_>3 20 16 4 -1. + <_>11 20 8 4 2. + 0 + 0.0959459990262985 + -0.1619289964437485 + 1.0072519779205322 + <_> + + <_> + + + + <_>11 6 4 18 -1. + <_>13 6 2 9 2. + <_>11 15 2 9 2. + 0 + -0.0158719997853041 + 0.3900839984416962 + -0.0537770017981529 + <_> + + <_> + + + + <_>7 9 10 14 -1. + <_>7 9 5 7 2. + <_>12 16 5 7 2. + 0 + 0.0348180010914803 + 0.0171799995005131 + -0.9394180178642273 + <_> + + <_> + + + + <_>14 6 6 9 -1. + <_>14 9 6 3 3. + 0 + 0.0347919985651970 + 0.0504629984498024 + 0.5446569919586182 + <_> + + <_> + + + + <_>3 6 7 9 -1. + <_>3 9 7 3 3. + 0 + 0.0162840001285076 + -0.2698130011558533 + 0.4036529958248138 + <_> + + <_> + + + + <_>20 4 4 20 -1. + <_>22 4 2 10 2. + <_>20 14 2 10 2. + 0 + -0.0443190000951290 + 0.8439999818801880 + 0.0328829996287823 + <_> + + <_> + + + + <_>7 6 6 9 -1. + <_>7 9 6 3 3. + 0 + -5.5689997971057892e-003 + 0.1530939936637878 + -0.3495979905128479 + <_> + + <_> + + + + <_>7 0 10 14 -1. + <_>12 0 5 7 2. + <_>7 7 5 7 2. + 0 + -0.0658420026302338 + -0.9271119832992554 + 0.1680099964141846 + <_> + + <_> + + + + <_>2 1 18 6 -1. + <_>11 1 9 6 2. + 0 + -0.0733370035886765 + 0.5161449909210205 + -0.2023600041866303 + <_> + + <_> + + + + <_>15 0 2 24 -1. + <_>15 0 1 24 2. + 0 + 0.0164500009268522 + 0.1395059973001480 + -0.4930129945278168 + <_> + + <_> + + + + <_>7 0 2 24 -1. + <_>8 0 1 24 2. + 0 + -9.2630004510283470e-003 + -0.9010199904441834 + -0.0161160007119179 + <_> + + <_> + + + + <_>13 12 6 7 -1. + <_>13 12 3 7 2. + 0 + 5.9139998629689217e-003 + 0.1985819935798645 + -0.1673129945993424 + <_> + + <_> + + + + <_>5 12 6 7 -1. + <_>8 12 3 7 2. + 0 + -8.4699998842552304e-004 + 0.0940050035715103 + -0.4157089889049530 + <_> + + <_> + + + + <_>3 5 18 19 -1. + <_>9 5 6 19 3. + 0 + 0.2053290009498596 + -0.0600220002233982 + 0.7099360227584839 + <_> + + <_> + + + + <_>5 6 9 6 -1. + <_>8 6 3 6 3. + 0 + -0.0168830007314682 + 0.2439219951629639 + -0.3055180013179779 + <_> + + <_> + + + + <_>9 5 9 6 -1. + <_>12 5 3 6 3. + 0 + -0.0191110000014305 + 0.6122990250587463 + 0.0242529995739460 + <_> + + <_> + + + + <_>3 16 10 8 -1. + <_>3 16 5 4 2. + <_>8 20 5 4 2. + 0 + -0.0259629990905523 + 0.9076499938964844 + -0.1672209948301315 + <_> + + <_> + + + + <_>19 8 5 15 -1. + <_>19 13 5 5 3. + 0 + -0.0217620003968477 + -0.3138470053672791 + 0.2013459950685501 + <_> + + <_> + + + + <_>0 8 5 15 -1. + <_>0 13 5 5 3. + 0 + -0.0241199992597103 + -0.6658840179443359 + 7.4559999629855156e-003 + <_> + + <_> + + + + <_>20 4 4 20 -1. + <_>22 4 2 10 2. + <_>20 14 2 10 2. + 0 + 0.0471299998462200 + 0.0595339983701706 + 0.8780450224876404 + <_> + + <_> + + + + <_>0 4 4 20 -1. + <_>0 4 2 10 2. + <_>2 14 2 10 2. + 0 + -0.0459849983453751 + 0.8006799817085266 + -0.1725230067968369 + <_> + + <_> + + + + <_>7 7 10 4 -1. + <_>7 7 5 4 2. + 0 + 0.0265079997479916 + 0.1877409964799881 + -0.6085060238838196 + <_> + + <_> + + + + <_>4 19 14 4 -1. + <_>11 19 7 4 2. + 0 + -0.0486150011420250 + 0.5864409804344177 + -0.1942770034074783 + <_> + + <_> + + + + <_>10 11 12 3 -1. + <_>10 11 6 3 2. + 0 + -0.0185620002448559 + -0.2558790147304535 + 0.1632619947195053 + <_> + + <_> + + + + <_>0 1 24 3 -1. + <_>0 2 24 1 3. + 0 + 0.0126780001446605 + -0.0142280003055930 + -0.7673810124397278 + <_> + + <_> + + + + <_>7 2 14 20 -1. + <_>14 2 7 10 2. + <_>7 12 7 10 2. + 0 + -1.1919999960809946e-003 + 0.2049500048160553 + -0.1140429973602295 + <_> + + <_> + + + + <_>0 13 6 9 -1. + <_>2 13 2 9 3. + 0 + -0.0490889996290207 + -1.0740849971771240 + -0.0389409996569157 + <_> + + <_> + + + + <_>13 0 4 19 -1. + <_>13 0 2 19 2. + 0 + -0.0174369998276234 + -0.5797380208969116 + 0.1858450025320053 + <_> + + <_> + + + + <_>1 11 14 3 -1. + <_>8 11 7 3 2. + 0 + -0.0147700002416968 + -0.6615030169487000 + 5.3119999356567860e-003 + <_> + + <_> + + + + <_>7 1 16 20 -1. + <_>15 1 8 10 2. + <_>7 11 8 10 2. + 0 + -0.2290520071983337 + -0.4830510020256043 + 0.1232639998197556 + <_> + + <_> + + + + <_>0 10 21 9 -1. + <_>7 10 7 9 3. + 0 + -0.1270709931850433 + 0.5745260119438171 + -0.1942040026187897 + <_> + + <_> + + + + <_>6 19 15 5 -1. + <_>11 19 5 5 3. + 0 + 0.0103390002623200 + -0.0546419993042946 + 0.2450180053710938 + <_> + + <_> + + + + <_>8 10 6 6 -1. + <_>11 10 3 6 2. + 0 + 6.9010001607239246e-003 + 0.1218060031533241 + -0.3879739940166473 + <_> + + <_> + + + + <_>7 1 16 20 -1. + <_>15 1 8 10 2. + <_>7 11 8 10 2. + 0 + 0.2902539968490601 + 0.1096619963645935 + -30. + <_> + + <_> + + + + <_>1 1 16 20 -1. + <_>1 1 8 10 2. + <_>9 11 8 10 2. + 0 + -0.2380499988794327 + -1.7352679967880249 + -0.0638099983334541 + <_> + + <_> + + + + <_>16 4 3 12 -1. + <_>16 10 3 6 2. + 0 + 0.0624810010194778 + 0.1352300047874451 + -0.7030109763145447 + <_> + + <_> + + + + <_>5 4 3 12 -1. + <_>5 10 3 6 2. + 0 + 4.7109997831285000e-003 + -0.4698410034179688 + 0.0603419989347458 + <_> + + <_> + + + + <_>7 6 10 8 -1. + <_>12 6 5 4 2. + <_>7 10 5 4 2. + 0 + -0.0278159994632006 + 0.6980760097503662 + 1.3719999697059393e-003 + <_> + + <_> + + + + <_>4 9 6 6 -1. + <_>4 12 6 3 2. + 0 + -0.0170200001448393 + 1.6870440244674683 + -0.1431480050086975 + <_> + + <_> + + + + <_>6 5 12 4 -1. + <_>6 7 12 2 2. + 0 + -0.0497549995779991 + 0.7949770092964172 + 7.7199999941512942e-004 + <_> + + <_> + + + + <_>9 2 5 15 -1. + <_>9 7 5 5 3. + 0 + -0.0747329965233803 + -1.0132360458374023 + -0.0193889997899532 + <_> + + <_> + + + + <_>15 0 9 6 -1. + <_>15 2 9 2 3. + 0 + 0.0320090018212795 + 0.1441210061311722 + -0.4213910102844238 + <_> + + <_> + + + + <_>6 0 11 10 -1. + <_>6 5 11 5 2. + 0 + -0.0944639965891838 + 0.5068259835243225 + -0.2047889977693558 + <_> + + <_> + + + + <_>12 7 4 12 -1. + <_>12 13 4 6 2. + 0 + -0.0154269998893142 + -0.1581130027770996 + 0.1780689954757690 + <_> + + <_> + + + + <_>7 2 9 4 -1. + <_>7 4 9 2 2. + 0 + -4.0540001355111599e-003 + -0.5436670184135437 + 0.0312350001186132 + <_> + + <_> + + + + <_>6 0 13 6 -1. + <_>6 2 13 2 3. + 0 + 3.0080000869929790e-003 + -0.1737679988145828 + 0.3044170141220093 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>10 6 2 9 2. + <_>12 15 2 9 2. + 0 + -0.0100919995456934 + 0.2510380148887634 + -0.2622410058975220 + <_> + + <_> + + + + <_>10 8 6 9 -1. + <_>12 8 2 9 3. + 0 + -0.0388180017471313 + 0.9322670102119446 + 0.0726599991321564 + <_> + + <_> + + + + <_>3 18 10 6 -1. + <_>3 20 10 2 3. + 0 + 0.0346519984304905 + -0.0339349992573261 + -0.8570790290832520 + <_> + + <_> + + + + <_>4 14 20 3 -1. + <_>4 15 20 1 3. + 0 + -4.6729999594390392e-003 + 0.3496930003166199 + -0.0485179983079433 + <_> + + <_> + + + + <_>2 15 9 6 -1. + <_>2 17 9 2 3. + 0 + 6.8499997723847628e-004 + 0.0665730014443398 + -0.4497379958629608 + <_> + + <_> + + + + <_>13 0 4 19 -1. + <_>13 0 2 19 2. + 0 + 0.0353170000016689 + 0.1427579969167709 + -0.4672639966011047 + <_> + + <_> + + + + <_>7 0 4 19 -1. + <_>9 0 2 19 2. + 0 + -0.0235699992626905 + -1.0286079645156860 + -0.0452880002558231 + <_> + + <_> + + + + <_>1 4 22 2 -1. + <_>1 5 22 1 2. + 0 + -1.9109999993816018e-003 + -0.1965219974517822 + 0.2866100072860718 + <_> + + <_> + + + + <_>0 0 9 6 -1. + <_>0 2 9 2 3. + 0 + -0.0166590008884668 + -0.7753220200538635 + -8.3280000835657120e-003 + <_> + + <_> + + + + <_>0 0 24 18 -1. + <_>0 9 24 9 2. + 0 + 0.6606220006942749 + 0.1323249936103821 + -3.5266680717468262 + <_> + + <_> + + + + <_>3 2 16 8 -1. + <_>3 6 16 4 2. + 0 + 0.1097059994935989 + -0.1554719954729080 + 1.4674140214920044 + <_> + + <_> + + + + <_>3 6 18 6 -1. + <_>3 8 18 2 3. + 0 + 0.0135009996592999 + 0.1523340046405792 + -1.3020930290222168 + <_> + + <_> + + + + <_>3 1 6 10 -1. + <_>5 1 2 10 3. + 0 + -0.0228719990700483 + -0.7132599949836731 + -8.7040001526474953e-003 + <_> + + <_> + + + + <_>13 0 9 6 -1. + <_>16 0 3 6 3. + 0 + -0.0818210020661354 + 1.1127580404281616 + 0.0832199975848198 + <_> + + <_> + + + + <_>2 0 9 6 -1. + <_>5 0 3 6 3. + 0 + -0.0527280010282993 + 0.9316509962081909 + -0.1710399985313416 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0252420008182526 + -0.1973379999399185 + 0.2535940110683441 + <_> + + <_> + + + + <_>6 0 7 10 -1. + <_>6 5 7 5 2. + 0 + -0.0438189990818501 + 0.4181520044803619 + -0.2458550035953522 + <_> + + <_> + + + + <_>2 2 20 4 -1. + <_>12 2 10 2 2. + <_>2 4 10 2 2. + 0 + -0.0181889999657869 + -0.5174319744110107 + 0.2017419934272766 + <_> + + <_> + + + + <_>2 11 19 3 -1. + <_>2 12 19 1 3. + 0 + 0.0234660003334284 + -0.0430710017681122 + -1.0636579990386963 + <_> + + <_> + + + + <_>10 8 6 9 -1. + <_>12 8 2 9 3. + 0 + 0.0342160016298294 + 0.0537809990346432 + 0.4970720112323761 + <_> + + <_> + + + + <_>8 8 6 9 -1. + <_>10 8 2 9 3. + 0 + 0.0256929993629456 + -0.2380010038614273 + 0.4165149927139282 + <_> + + <_> + + + + <_>13 8 4 9 -1. + <_>13 8 2 9 2. + 0 + -0.0265650004148483 + -0.8857480287551880 + 0.1336590051651001 + <_> + + <_> + + + + <_>3 11 9 9 -1. + <_>6 11 3 9 3. + 0 + 0.0609420016407967 + -0.2066970020532608 + 0.5830900073051453 + <_> + + <_> + + + + <_>3 9 18 5 -1. + <_>9 9 6 5 3. + 0 + 0.1447450071573257 + 0.1328230053186417 + -3.1449348926544189 + <_> + + <_> + + + + <_>2 4 2 20 -1. + <_>2 14 2 10 2. + 0 + 0.0534109994769096 + -0.1732520014047623 + 0.6919069886207581 + <_> + + <_> + + + + <_>14 17 8 6 -1. + <_>14 20 8 3 2. + 0 + 0.0114080002531409 + 0.0548220016062260 + 0.3024039864540100 + <_> + + <_> + + + + <_>3 21 18 2 -1. + <_>3 22 18 1 2. + 0 + -2.3179999552667141e-003 + 0.1582089960575104 + -0.3197320103645325 + <_> + + <_> + + + + <_>5 4 15 6 -1. + <_>10 4 5 6 3. + 0 + -0.0296950004994869 + 0.7127479910850525 + 0.0581360012292862 + <_> + + <_> + + + + <_>2 15 12 6 -1. + <_>2 17 12 2 3. + 0 + 0.0272499993443489 + -0.1575410068035126 + 0.9214379787445068 + <_> + + <_> + + + + <_>17 8 6 9 -1. + <_>17 11 6 3 3. + 0 + -3.6200000904500484e-003 + -0.3454839885234833 + 0.2022099941968918 + <_> + + <_> + + + + <_>2 12 20 4 -1. + <_>2 12 10 2 2. + <_>12 14 10 2 2. + 0 + -0.0125789996236563 + -0.5565029978752136 + 0.0203889999538660 + <_> + + <_> + + + + <_>0 17 24 6 -1. + <_>0 19 24 2 3. + 0 + -0.0888490006327629 + -3.6100010871887207 + 0.1316419988870621 + <_> + + <_> + + + + <_>7 16 9 4 -1. + <_>7 18 9 2 2. + 0 + -0.0192569997161627 + 0.5190899968147278 + -0.1928430050611496 + <_> + + <_> + + + + <_>15 1 4 22 -1. + <_>17 1 2 11 2. + <_>15 12 2 11 2. + 0 + -0.0166669990867376 + -0.0874999985098839 + 0.1581249982118607 + <_> + + <_> + + + + <_>5 1 4 22 -1. + <_>5 1 2 11 2. + <_>7 12 2 11 2. + 0 + 0.0129319997504354 + 0.0274059996008873 + -0.5512390136718750 + <_> + + <_> + + + + <_>11 13 8 9 -1. + <_>11 16 8 3 3. + 0 + -0.0134319998323917 + 0.2345779985189438 + -0.0432350002229214 + <_> + + <_> + + + + <_>6 1 6 9 -1. + <_>8 1 2 9 3. + 0 + 0.0188100002706051 + -0.0396809987723827 + -0.9437329769134522 + <_> + + <_> + + + + <_>11 4 3 18 -1. + <_>11 10 3 6 3. + 0 + -6.4349998719990253e-003 + 0.4570370018482208 + -4.0520001202821732e-003 + <_> + + <_> + + + + <_>5 8 12 6 -1. + <_>5 8 6 3 2. + <_>11 11 6 3 2. + 0 + -0.0242490004748106 + -0.7624800205230713 + -0.0198570005595684 + <_> + + <_> + + + + <_>15 7 5 8 -1. + <_>15 11 5 4 2. + 0 + -0.0296679995954037 + -3.7412509918212891 + 0.1125060021877289 + <_> + + <_> + + + + <_>4 7 5 8 -1. + <_>4 11 5 4 2. + 0 + 5.1150000654160976e-003 + -0.6378179788589478 + 0.0112239997833967 + <_> + + <_> + + + + <_>12 6 6 12 -1. + <_>15 6 3 6 2. + <_>12 12 3 6 2. + 0 + -5.7819997891783714e-003 + 0.1937440037727356 + -0.0820420011878014 + <_> + + <_> + + + + <_>6 6 6 12 -1. + <_>6 6 3 6 2. + <_>9 12 3 6 2. + 0 + 0.0166069995611906 + -0.1619209945201874 + 1.1334990262985229 + <_> + + <_> + + + + <_>5 9 14 8 -1. + <_>12 9 7 4 2. + <_>5 13 7 4 2. + 0 + 0.0382280014455318 + 0.0211050007492304 + 0.7626420259475708 + <_> + + <_> + + + + <_>9 1 3 14 -1. + <_>9 8 3 7 2. + 0 + -0.0570940002799034 + -1.6974929571151733 + -0.0597620010375977 + <_> + + <_> + + + + <_>12 6 6 12 -1. + <_>12 10 6 4 3. + 0 + -0.0538830012083054 + 1.1850190162658691 + 0.0909669995307922 + <_> + + <_> + + + + <_>4 5 4 18 -1. + <_>4 5 2 9 2. + <_>6 14 2 9 2. + 0 + -2.6110000908374786e-003 + -0.4094119966030121 + 0.0838209986686707 + <_> + + <_> + + + + <_>4 6 16 18 -1. + <_>4 12 16 6 3. + 0 + 0.2971439957618713 + 0.1552989929914475 + -1.0995409488677979 + <_> + + <_> + + + + <_>5 4 7 20 -1. + <_>5 14 7 10 2. + 0 + -0.0890630036592484 + 0.4894720017910004 + -0.2004120051860809 + <_> + + <_> + + + + <_>14 8 8 12 -1. + <_>14 14 8 6 2. + 0 + -0.0561930015683174 + -0.2458139955997467 + 0.1436550021171570 + <_> + + <_> + + + + <_>9 10 6 14 -1. + <_>9 10 3 7 2. + <_>12 17 3 7 2. + 0 + 0.0370049998164177 + -0.0481689982116222 + -1.2310709953308105 + <_> + + <_> + + + + <_>9 5 9 6 -1. + <_>12 5 3 6 3. + 0 + -8.4840003401041031e-003 + 0.4337260127067566 + 0.0137799996882677 + <_> + + <_> + + + + <_>9 4 3 18 -1. + <_>10 4 1 18 3. + 0 + -2.4379999376833439e-003 + 0.1894969940185547 + -0.3229419887065888 + <_> + + <_> + + + + <_>1 4 22 14 -1. + <_>12 4 11 7 2. + <_>1 11 11 7 2. + 0 + -0.0716399997472763 + -0.4397900104522705 + 0.2273019999265671 + <_> + + <_> + + + + <_>2 7 18 2 -1. + <_>2 8 18 1 2. + 0 + 5.2260002121329308e-003 + -0.2054840028285980 + 0.5093330144882202 + <_> + + <_> + + + + <_>12 6 6 12 -1. + <_>12 10 6 4 3. + 0 + -6.1360001564025879e-003 + 0.3115719854831696 + 0.0706809982657433 + <_> + + <_> + + + + <_>6 5 9 7 -1. + <_>9 5 3 7 3. + 0 + 0.0155950002372265 + -0.3093479871749878 + 0.1562770009040833 + <_> + + <_> + + + + <_>12 7 4 12 -1. + <_>12 13 4 6 2. + 0 + 0.0259959995746613 + 0.1382160037755966 + -0.1761659979820252 + <_> + + <_> + + + + <_>8 7 4 12 -1. + <_>8 13 4 6 2. + 0 + -0.0120850000530481 + -0.5107020139694214 + 0.0584409981966019 + <_> + + <_> + + + + <_>7 2 10 22 -1. + <_>7 13 10 11 2. + 0 + -0.0678360015153885 + 0.4775710105895996 + -0.0714460015296936 + <_> + + <_> + + + + <_>0 1 3 20 -1. + <_>1 1 1 20 3. + 0 + -0.0147150000557303 + 0.4523890018463135 + -0.1986140012741089 + <_> + + <_> + + + + <_>4 13 18 4 -1. + <_>13 13 9 2 2. + <_>4 15 9 2 2. + 0 + 0.0251189991831779 + 0.1295489966869354 + -0.8626639842987061 + <_> + + <_> + + + + <_>2 13 18 4 -1. + <_>2 13 9 2 2. + <_>11 15 9 2 2. + 0 + 0.0188260003924370 + -0.0415700003504753 + -1.1354700326919556 + <_> + + <_> + + + + <_>15 15 9 6 -1. + <_>15 17 9 2 3. + 0 + -0.0212639998644590 + -0.3473800122737885 + 0.1577949970960617 + <_> + + <_> + + + + <_>0 15 9 6 -1. + <_>0 17 9 2 3. + 0 + 9.4609996303915977e-003 + 4.8639997839927673e-003 + -0.6165480017662048 + <_> + + <_> + + + + <_>6 0 18 24 -1. + <_>15 0 9 12 2. + <_>6 12 9 12 2. + 0 + 0.2295770049095154 + 0.0813729986548424 + 0.6984140276908875 + <_> + + <_> + + + + <_>6 6 6 12 -1. + <_>6 10 6 4 3. + 0 + -0.0380619987845421 + 1.1616369485855103 + -0.1497669965028763 + <_> + + <_> + + + + <_>8 7 10 4 -1. + <_>8 9 10 2 2. + 0 + -0.0134849995374680 + -0.3203639984130859 + 0.1736509948968887 + <_> + + <_> + + + + <_>1 9 18 6 -1. + <_>1 9 9 3 2. + <_>10 12 9 3 2. + 0 + 0.0362389981746674 + -0.1815849989652634 + 0.6195669770240784 + <_> + + <_> + + + + <_>6 6 18 3 -1. + <_>6 7 18 1 3. + 0 + 6.7210001870989799e-003 + 7.9600000753998756e-004 + 0.4244140088558197 + <_> + + <_> + + + + <_>7 7 9 8 -1. + <_>10 7 3 8 3. + 0 + 0.0965259969234467 + -0.1469680070877075 + 1.2525680065155029 + <_> + + <_> + + + + <_>10 12 6 12 -1. + <_>12 12 2 12 3. + 0 + -0.0356569997966290 + -0.3978169858455658 + 0.1419139951467514 + <_> + + <_> + + + + <_>3 14 18 3 -1. + <_>3 15 18 1 3. + 0 + 0.0107720000669360 + -0.1819400042295456 + 0.5976219773292542 + <_> + + <_> + + + + <_>15 17 9 7 -1. + <_>18 17 3 7 3. + 0 + 0.0792799964547157 + 0.1464249938726425 + -0.7883689999580383 + <_> + + <_> + + + + <_>1 12 10 6 -1. + <_>1 14 10 2 3. + 0 + 0.0328410007059574 + -0.0624080002307892 + -1.4227490425109863 + <_> + + <_> + + + + <_>15 17 9 7 -1. + <_>18 17 3 7 3. + 0 + -0.0277810003608465 + 0.3403309881687164 + 0.0306700002402067 + <_> + + <_> + + + + <_>10 3 3 19 -1. + <_>11 3 1 19 3. + 0 + -4.0339999832212925e-003 + 0.3108470141887665 + -0.2259570062160492 + <_> + + <_> + + + + <_>15 17 9 7 -1. + <_>18 17 3 7 3. + 0 + 7.4260002002120018e-003 + -0.0389369986951351 + 0.3170210123062134 + <_> + + <_> + + + + <_>6 1 11 9 -1. + <_>6 4 11 3 3. + 0 + 0.1121399998664856 + -0.1757829934358597 + 0.6505659818649292 + <_> + + <_> + + + + <_>15 17 9 7 -1. + <_>18 17 3 7 3. + 0 + -0.1187810003757477 + -1.0092990398406982 + 0.1106970012187958 + <_> + + <_> + + + + <_>6 5 11 6 -1. + <_>6 8 11 3 2. + 0 + -0.0415849983692169 + -0.5380640029907227 + 0.0199050009250641 + <_> + + <_> + + + + <_>16 7 8 5 -1. + <_>16 7 4 5 2. + 0 + -0.0279660001397133 + 0.4814319908618927 + 0.0335909985005856 + <_> + + <_> + + + + <_>2 4 20 19 -1. + <_>12 4 10 19 2. + 0 + -0.1250640004873276 + 0.2635219991207123 + -0.2573789954185486 + <_> + + <_> + + + + <_>2 1 21 6 -1. + <_>9 1 7 6 3. + 0 + 0.2366690039634705 + 0.0365080013871193 + 0.9065560102462769 + <_> + + <_> + + + + <_>6 5 12 14 -1. + <_>6 5 6 7 2. + <_>12 12 6 7 2. + 0 + -0.0294759999960661 + -0.6004880070686340 + 9.5880003646016121e-003 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + 0.0377929992973804 + 0.1550620049238205 + -0.9573349952697754 + <_> + + <_> + + + + <_>2 11 8 5 -1. + <_>6 11 4 5 2. + 0 + 0.0720440000295639 + -0.1452589929103851 + 1.3676730394363403 + <_> + + <_> + + + + <_>16 7 8 5 -1. + <_>16 7 4 5 2. + 0 + 9.7759999334812164e-003 + 0.0129159996286035 + 0.2164089977741242 + <_> + + <_> + + + + <_>0 7 8 5 -1. + <_>4 7 4 5 2. + 0 + 0.0521540008485317 + -0.0163599997758865 + -0.8835629820823669 + <_> + + <_> + + + + <_>15 17 9 7 -1. + <_>18 17 3 7 3. + 0 + -0.0437909997999668 + 0.3582960069179535 + 0.0651310011744499 + <_> + + <_> + + + + <_>8 6 8 10 -1. + <_>8 6 4 5 2. + <_>12 11 4 5 2. + 0 + -0.0383789986371994 + 1.1961040496826172 + -0.1497150063514710 + <_> + + <_> + + + + <_>15 15 9 9 -1. + <_>18 15 3 9 3. + 0 + -0.0988389998674393 + -0.6183400154113770 + 0.1278620064258575 + <_> + + <_> + + + + <_>0 15 9 9 -1. + <_>3 15 3 9 3. + 0 + -0.1219070032238960 + -1.8276120424270630 + -0.0648629963397980 + <_> + + <_> + + + + <_>12 10 9 7 -1. + <_>15 10 3 7 3. + 0 + -0.1198170036077499 + -30. + 0.1132330000400543 + <_> + + <_> + + + + <_>3 10 9 7 -1. + <_>6 10 3 7 3. + 0 + 0.0309100002050400 + -0.2393400073051453 + 0.3633289933204651 + <_> + + <_> + + + + <_>13 15 10 8 -1. + <_>18 15 5 4 2. + <_>13 19 5 4 2. + 0 + 0.0108009995892644 + -0.0351400002837181 + 0.2770789861679077 + <_> + + <_> + + + + <_>0 1 6 12 -1. + <_>0 1 3 6 2. + <_>3 7 3 6 2. + 0 + 0.0568449981510639 + -0.1552429944276810 + 1.0802700519561768 + <_> + + <_> + + + + <_>10 0 6 12 -1. + <_>13 0 3 6 2. + <_>10 6 3 6 2. + 0 + 1.0280000278726220e-003 + -0.0612029992043972 + 0.2050800025463104 + <_> + + <_> + + + + <_>7 0 10 12 -1. + <_>7 0 5 6 2. + <_>12 6 5 6 2. + 0 + -0.0282739996910095 + -0.6477800011634827 + 0.0239170007407665 + <_> + + <_> + + + + <_>4 1 16 8 -1. + <_>4 1 8 8 2. + 0 + -0.1601359993219376 + 1.0892050266265869 + 0.0583890005946159 + <_> + + <_> + + + + <_>0 21 19 3 -1. + <_>0 22 19 1 3. + 0 + 4.9629998393356800e-003 + -0.2580629885196686 + 0.2083459943532944 + <_> + + <_> + + + + <_>6 9 18 4 -1. + <_>15 9 9 2 2. + <_>6 11 9 2 2. + 0 + 0.0469370000064373 + 0.1388629972934723 + -1.5662620067596436 + <_> + + <_> + + + + <_>3 4 9 6 -1. + <_>3 6 9 2 3. + 0 + 0.0242860000580549 + -0.2072830051183701 + 0.5243099927902222 + <_> + + <_> + + + + <_>9 1 6 15 -1. + <_>9 6 6 5 3. + 0 + 0.0702020004391670 + 0.1479689925909042 + -1.3095090389251709 + <_> + + <_> + + + + <_>5 9 6 6 -1. + <_>8 9 3 6 2. + 0 + 9.8120002076029778e-003 + 0.0279060006141663 + -0.5086460113525391 + <_> + + <_> + + + + <_>5 1 14 9 -1. + <_>5 4 14 3 3. + 0 + -0.0562009997665882 + 1.2618130445480347 + 0.0638019964098930 + <_> + + <_> + + + + <_>3 0 8 20 -1. + <_>3 0 4 10 2. + <_>7 10 4 10 2. + 0 + 0.1098280027508736 + -0.1285009980201721 + 3.0776169300079346 + -3.2573320865631104 + 21 + -1 + <_> + + + <_> + + <_> + + + + <_>5 0 7 9 -1. + <_>5 3 7 3 3. + 0 + 0.0209100004285574 + -0.6855940222740173 + 0.3898429870605469 + <_> + + <_> + + + + <_>6 6 12 5 -1. + <_>10 6 4 5 3. + 0 + 0.0350320003926754 + -0.4772439897060394 + 0.4502719938755035 + <_> + + <_> + + + + <_>0 1 8 14 -1. + <_>4 1 4 14 2. + 0 + 0.0397990010678768 + -0.4701110124588013 + 0.4270249903202057 + <_> + + <_> + + + + <_>2 12 22 4 -1. + <_>2 14 22 2 2. + 0 + -4.8409998416900635e-003 + 0.2561430037021637 + -0.6655629873275757 + <_> + + <_> + + + + <_>8 17 6 6 -1. + <_>8 20 6 3 2. + 0 + 2.3439999204128981e-003 + -0.4808349907398224 + 0.2801379859447479 + <_> + + <_> + + + + <_>18 1 6 7 -1. + <_>18 1 3 7 2. + 0 + 0.0253129992634058 + -0.2394820004701614 + 0.4419179856777191 + <_> + + <_> + + + + <_>0 0 6 6 -1. + <_>3 0 3 6 2. + 0 + -0.0321930013597012 + 0.7608669996261597 + -0.2505910098552704 + <_> + + <_> + + + + <_>4 6 17 18 -1. + <_>4 12 17 6 3. + 0 + 0.0754090026021004 + -0.3497459888458252 + 0.3438029885292053 + <_> + + <_> + + + + <_>6 0 12 6 -1. + <_>6 0 6 3 2. + <_>12 3 6 3 2. + 0 + -0.0184690002351999 + -0.7908560037612915 + 0.0347880013287067 + <_> + + <_> + + + + <_>4 7 18 4 -1. + <_>13 7 9 2 2. + <_>4 9 9 2 2. + 0 + -0.0128020001575351 + 0.4710780084133148 + -0.0600060001015663 + <_> + + <_> + + + + <_>4 12 10 6 -1. + <_>4 14 10 2 3. + 0 + -0.0265980008989573 + 0.6711609959602356 + -0.2425750046968460 + <_> + + <_> + + + + <_>7 9 10 12 -1. + <_>12 9 5 6 2. + <_>7 15 5 6 2. + 0 + 0.0219889990985394 + 0.2471749931573868 + -0.4830169975757599 + <_> + + <_> + + + + <_>0 1 24 3 -1. + <_>8 1 8 3 3. + 0 + 0.1465409994125366 + -0.2150409966707230 + 0.7205590009689331 + <_> + + <_> + + + + <_>13 11 6 6 -1. + <_>13 11 3 6 2. + 0 + 3.5310001112520695e-003 + 0.2793099880218506 + -0.3433989882469177 + <_> + + <_> + + + + <_>5 11 6 6 -1. + <_>8 11 3 6 2. + 0 + 9.4010001048445702e-003 + 0.0558619983494282 + -0.8214359879493713 + <_> + + <_> + + + + <_>3 10 19 3 -1. + <_>3 11 19 1 3. + 0 + -8.6390003561973572e-003 + -0.9962059855461121 + 0.1887499988079071 + <_> + + <_> + + + + <_>0 2 6 9 -1. + <_>0 5 6 3 3. + 0 + -0.0391930006444454 + -1.1945559978485107 + -0.0291980002075434 + <_> + + <_> + + + + <_>14 16 10 6 -1. + <_>14 18 10 2 3. + 0 + 0.0248550008982420 + 0.1498759984970093 + -0.5413780212402344 + <_> + + <_> + + + + <_>0 16 10 6 -1. + <_>0 18 10 2 3. + 0 + -0.0349950008094311 + -1.4210180044174194 + -0.0423140004277229 + <_> + + <_> + + + + <_>14 13 9 6 -1. + <_>14 15 9 2 3. + 0 + -0.0183789990842342 + -0.2824259996414185 + 0.1558180004358292 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + -0.0135920001193881 + 0.4731709957122803 + -0.2193720042705536 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + 6.2629999592900276e-003 + -0.0597140006721020 + 0.6062589883804321 + <_> + + <_> + + + + <_>0 18 9 6 -1. + <_>0 20 9 2 3. + 0 + -0.0184780005365610 + -0.8564720153808594 + -0.0137839997187257 + <_> + + <_> + + + + <_>14 13 9 6 -1. + <_>14 15 9 2 3. + 0 + 0.0142360003665090 + 0.1665479987859726 + -0.2771399915218353 + <_> + + <_> + + + + <_>6 2 6 9 -1. + <_>8 2 2 9 3. + 0 + -0.0325470007956028 + -1.1728240251541138 + -0.0401850007474422 + <_> + + <_> + + + + <_>15 8 4 12 -1. + <_>15 8 2 12 2. + 0 + -2.6410000864416361e-003 + 0.2651430070400238 + -0.0563430003821850 + <_> + + <_> + + + + <_>8 13 8 8 -1. + <_>8 17 8 4 2. + 0 + -8.7799999164417386e-004 + 0.0365560017526150 + -0.5507519841194153 + <_> + + <_> + + + + <_>4 20 18 3 -1. + <_>10 20 6 3 3. + 0 + 0.0473719984292984 + -0.0426140017807484 + 0.4819490015506744 + <_> + + <_> + + + + <_>5 8 4 12 -1. + <_>7 8 2 12 2. + 0 + -7.0790001191198826e-003 + 0.2869899868965149 + -0.3292300105094910 + <_> + + <_> + + + + <_>7 7 12 3 -1. + <_>7 7 6 3 2. + 0 + -0.0431459993124008 + -1.4065419435501099 + 0.1283639967441559 + <_> + + <_> + + + + <_>10 6 4 9 -1. + <_>12 6 2 9 2. + 0 + 0.0205920003354549 + -0.2143529951572418 + 0.5398179888725281 + <_> + + <_> + + + + <_>5 20 18 3 -1. + <_>11 20 6 3 3. + 0 + -0.0223670005798340 + 0.3371829986572266 + 0.0452120006084442 + <_> + + <_> + + + + <_>1 20 18 3 -1. + <_>7 20 6 3 3. + 0 + 0.0500399991869926 + -0.2512170076370239 + 0.4175049960613251 + <_> + + <_> + + + + <_>18 1 6 20 -1. + <_>21 1 3 10 2. + <_>18 11 3 10 2. + 0 + 0.0617949999868870 + 0.0400849990546703 + 0.6877980232238770 + <_> + + <_> + + + + <_>0 1 6 20 -1. + <_>0 1 3 10 2. + <_>3 11 3 10 2. + 0 + -0.0418619997799397 + 0.5302739739418030 + -0.2290199995040894 + <_> + + <_> + + + + <_>13 3 4 18 -1. + <_>15 3 2 9 2. + <_>13 12 2 9 2. + 0 + -3.1959998887032270e-003 + 0.2516149878501892 + -0.2151460051536560 + <_> + + <_> + + + + <_>0 2 6 12 -1. + <_>0 6 6 4 3. + 0 + 0.0242550000548363 + 7.2320001199841499e-003 + -0.7251909971237183 + <_> + + <_> + + + + <_>12 9 12 6 -1. + <_>18 9 6 3 2. + <_>12 12 6 3 2. + 0 + -0.0173039995133877 + -0.4995819926261902 + 0.1839450001716614 + <_> + + <_> + + + + <_>7 3 4 18 -1. + <_>7 3 2 9 2. + <_>9 12 2 9 2. + 0 + -4.1470001451671124e-003 + 0.0852119997143745 + -0.4636470079421997 + <_> + + <_> + + + + <_>14 0 6 9 -1. + <_>16 0 2 9 3. + 0 + -0.0143699999898672 + -0.5225890278816223 + 0.2389259934425354 + <_> + + <_> + + + + <_>0 9 12 6 -1. + <_>0 9 6 3 2. + <_>6 12 6 3 2. + 0 + -9.0399999171495438e-003 + -0.6325039863586426 + 0.0325510017573833 + <_> + + <_> + + + + <_>14 4 8 20 -1. + <_>18 4 4 10 2. + <_>14 14 4 10 2. + 0 + -0.1237310022115707 + 1.2856210470199585 + 0.0765450000762939 + <_> + + <_> + + + + <_>2 4 8 20 -1. + <_>2 4 4 10 2. + <_>6 14 4 10 2. + 0 + -0.0822219997644424 + 0.8320819735527039 + -0.1859059929847717 + <_> + + <_> + + + + <_>14 13 9 6 -1. + <_>14 15 9 2 3. + 0 + 0.0656590014696121 + 0.1129880025982857 + -30. + <_> + + <_> + + + + <_>1 13 9 6 -1. + <_>1 15 9 2 3. + 0 + -0.0315829999744892 + -1.3485900163650513 + -0.0470970012247562 + <_> + + <_> + + + + <_>3 15 18 3 -1. + <_>9 15 6 3 3. + 0 + -0.0796360000967979 + -1.3533639907836914 + 0.1566880047321320 + <_> + + <_> + + + + <_>5 13 9 6 -1. + <_>5 15 9 2 3. + 0 + -0.0188800003379583 + 0.4030030071735382 + -0.2514890134334564 + <_> + + <_> + + + + <_>5 0 18 3 -1. + <_>5 1 18 1 3. + 0 + -5.0149997696280479e-003 + -0.2628709971904755 + 0.1858250051736832 + <_> + + <_> + + + + <_>8 2 6 7 -1. + <_>11 2 3 7 2. + 0 + -0.0122180003672838 + 0.5869240164756775 + -0.1942770034074783 + <_> + + <_> + + + + <_>9 1 9 6 -1. + <_>12 1 3 6 3. + 0 + 1.2710000155493617e-003 + -0.1668899953365326 + 0.2300689965486527 + <_> + + <_> + + + + <_>6 1 9 6 -1. + <_>9 1 3 6 3. + 0 + 0.0297439992427826 + 0.0125200003385544 + -0.6672359704971314 + <_> + + <_> + + + + <_>5 6 14 6 -1. + <_>12 6 7 3 2. + <_>5 9 7 3 2. + 0 + 0.0281750001013279 + -0.0170600004494190 + 0.6457939743995667 + <_> + + <_> + + + + <_>8 2 6 13 -1. + <_>10 2 2 13 3. + 0 + 0.0303450003266335 + -0.2417870014905930 + 0.3487890064716339 + <_> + + <_> + + + + <_>6 11 12 6 -1. + <_>12 11 6 3 2. + <_>6 14 6 3 2. + 0 + -0.0173259992152452 + -0.5359939932823181 + 0.2099599987268448 + <_> + + <_> + + + + <_>3 1 18 15 -1. + <_>9 1 6 15 3. + 0 + -0.0841780006885529 + 0.7509329915046692 + -0.1759320050477982 + <_> + + <_> + + + + <_>13 0 6 7 -1. + <_>13 0 3 7 2. + 0 + 7.4950000271201134e-003 + -0.1618809998035431 + 0.3065750002861023 + <_> + + <_> + + + + <_>3 3 16 6 -1. + <_>3 6 16 3 2. + 0 + 0.0564949996769428 + -0.1731880009174347 + 1.0016150474548340 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + -5.2939997985959053e-003 + 0.2341759949922562 + -0.0653470009565353 + <_> + + <_> + + + + <_>7 7 6 9 -1. + <_>9 7 2 9 3. + 0 + -0.0149450004100800 + 0.2501890063285828 + -0.3059119880199432 + <_> + + <_> + + + + <_>13 0 4 24 -1. + <_>13 0 2 24 2. + 0 + 0.0549190007150173 + 0.1312199980020523 + -0.9376509785652161 + <_> + + <_> + + + + <_>7 0 4 24 -1. + <_>9 0 2 24 2. + 0 + -0.0197219997644424 + -0.8397849798202515 + -0.0234730001538992 + <_> + + <_> + + + + <_>11 9 5 12 -1. + <_>11 13 5 4 3. + 0 + -0.0671589970588684 + 2.3586840629577637 + 0.0829709991812706 + <_> + + <_> + + + + <_>7 15 9 6 -1. + <_>7 17 9 2 3. + 0 + -0.0143259996548295 + 0.1881449967622757 + -0.3122160136699677 + <_> + + <_> + + + + <_>5 7 18 6 -1. + <_>5 9 18 2 3. + 0 + 0.0298410002142191 + 0.1482509970664978 + -0.8468170166015625 + <_> + + <_> + + + + <_>8 9 5 12 -1. + <_>8 13 5 4 3. + 0 + 0.0518830008804798 + -0.0437310002744198 + -1.3366169929504395 + <_> + + <_> + + + + <_>4 17 17 6 -1. + <_>4 19 17 2 3. + 0 + 0.0411270000040531 + 0.1766009926795960 + -0.6090409755706787 + <_> + + <_> + + + + <_>0 3 18 14 -1. + <_>0 3 9 7 2. + <_>9 10 9 7 2. + 0 + -0.1286509931087494 + -0.9870100021362305 + -0.0377850010991097 + <_> + + <_> + + + + <_>0 1 24 2 -1. + <_>0 2 24 1 2. + 0 + 2.4170000106096268e-003 + -0.1611959934234619 + 0.3267570137977600 + <_> + + <_> + + + + <_>0 15 18 3 -1. + <_>0 16 18 1 3. + 0 + 7.7030002139508724e-003 + -0.2384150028228760 + 0.2931939959526062 + <_> + + <_> + + + + <_>9 0 6 9 -1. + <_>11 0 2 9 3. + 0 + 0.0455200001597404 + 0.1442459970712662 + -1.5010160207748413 + <_> + + <_> + + + + <_>3 3 14 12 -1. + <_>3 9 14 6 2. + 0 + -0.0787009969353676 + -1.0394560098648071 + -0.0453759990632534 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + 7.8619997948408127e-003 + 0.1963360011577606 + -0.1447239965200424 + <_> + + <_> + + + + <_>8 0 6 9 -1. + <_>10 0 2 9 3. + 0 + -0.0134589998051524 + -0.9063469767570496 + -0.0380490012466908 + <_> + + <_> + + + + <_>10 6 6 10 -1. + <_>12 6 2 10 3. + 0 + 0.0288270004093647 + -0.0294739995151758 + 0.6005839705467224 + <_> + + <_> + + + + <_>5 0 6 9 -1. + <_>7 0 2 9 3. + 0 + -0.0273659992963076 + -0.9980400204658508 + -0.0386530011892319 + <_> + + <_> + + + + <_>2 0 21 7 -1. + <_>9 0 7 7 3. + 0 + -0.0729179978370667 + 0.7336149811744690 + 0.0574400015175343 + <_> + + <_> + + + + <_>6 11 12 5 -1. + <_>10 11 4 5 3. + 0 + -0.0139889996498823 + 0.2789260149002075 + -0.2651630043983460 + <_> + + <_> + + + + <_>8 7 9 8 -1. + <_>11 7 3 8 3. + 0 + 0.0432429984211922 + 4.7760000452399254e-003 + 0.3592590093612671 + <_> + + <_> + + + + <_>9 6 6 18 -1. + <_>9 6 3 9 2. + <_>12 15 3 9 2. + 0 + 0.0295330006629229 + -0.2008399963378906 + 0.5120289921760559 + <_> + + <_> + + + + <_>15 14 8 10 -1. + <_>19 14 4 5 2. + <_>15 19 4 5 2. + 0 + -0.0318970009684563 + 0.6472169756889343 + -1.3760000001639128e-003 + <_> + + <_> + + + + <_>1 14 8 10 -1. + <_>1 14 4 5 2. + <_>5 19 4 5 2. + 0 + 0.0378689989447594 + -0.1836380064487457 + 0.6134309768676758 + <_> + + <_> + + + + <_>11 0 8 10 -1. + <_>15 0 4 5 2. + <_>11 5 4 5 2. + 0 + -0.0224179998040199 + -0.2918789982795715 + 0.1819480061531067 + <_> + + <_> + + + + <_>5 0 8 10 -1. + <_>5 0 4 5 2. + <_>9 5 4 5 2. + 0 + 0.0589589998126030 + -0.0664519965648651 + -1.9290030002593994 + <_> + + <_> + + + + <_>6 1 12 5 -1. + <_>6 1 6 5 2. + 0 + 0.0312229990959167 + -0.0127320000901818 + 0.6156079769134522 + <_> + + <_> + + + + <_>1 12 18 2 -1. + <_>10 12 9 2 2. + 0 + 0.0374849997460842 + -0.2085690051317215 + 0.4436399936676025 + <_> + + <_> + + + + <_>2 8 20 6 -1. + <_>12 8 10 3 2. + <_>2 11 10 3 2. + 0 + -0.0209660008549690 + -0.3571279942989349 + 0.2425220012664795 + <_> + + <_> + + + + <_>7 6 9 7 -1. + <_>10 6 3 7 3. + 0 + -0.0254779998213053 + 1.0846560001373291 + -0.1505440026521683 + <_> + + <_> + + + + <_>10 5 8 16 -1. + <_>14 5 4 8 2. + <_>10 13 4 8 2. + 0 + -7.2570000775158405e-003 + 0.2130260020494461 + -0.1830819994211197 + <_> + + <_> + + + + <_>3 9 16 8 -1. + <_>3 9 8 4 2. + <_>11 13 8 4 2. + 0 + -0.0509830005466938 + 0.5173680186271668 + -0.1883309930562973 + <_> + + <_> + + + + <_>7 8 10 4 -1. + <_>7 8 5 4 2. + 0 + -0.0206400007009506 + -0.4403020143508911 + 0.2274599969387054 + <_> + + <_> + + + + <_>7 12 10 8 -1. + <_>7 12 5 4 2. + <_>12 16 5 4 2. + 0 + 0.0106729995459318 + 0.0350599996745586 + -0.5166500210762024 + <_> + + <_> + + + + <_>9 19 15 4 -1. + <_>14 19 5 4 3. + 0 + 0.0318959988653660 + 0.0132280001416802 + 0.3491519987583160 + <_> + + <_> + + + + <_>1 0 18 9 -1. + <_>7 0 6 9 3. + 0 + -0.0238249991089106 + 0.3411880135536194 + -0.2151020020246506 + <_> + + <_> + + + + <_>13 4 10 8 -1. + <_>18 4 5 4 2. + <_>13 8 5 4 2. + 0 + -6.0680001042783260e-003 + 0.3293739855289459 + -0.2852379977703095 + <_> + + <_> + + + + <_>3 16 18 4 -1. + <_>9 16 6 4 3. + 0 + 0.0238819997757673 + -0.2533380091190338 + 0.2629610002040863 + <_> + + <_> + + + + <_>8 7 10 12 -1. + <_>13 7 5 6 2. + <_>8 13 5 6 2. + 0 + 0.0279660001397133 + 0.1404909938573837 + -0.4988709986209869 + <_> + + <_> + + + + <_>6 7 10 12 -1. + <_>6 7 5 6 2. + <_>11 13 5 6 2. + 0 + 0.0146030001342297 + -0.0153959998860955 + -0.7695800065994263 + <_> + + <_> + + + + <_>4 6 18 7 -1. + <_>10 6 6 7 3. + 0 + 0.1087239980697632 + 0.1906960010528565 + -0.3239310085773468 + <_> + + <_> + + + + <_>0 17 18 3 -1. + <_>0 18 18 1 3. + 0 + -0.0140380002558231 + 0.3492470085620880 + -0.2235870063304901 + <_> + + <_> + + + + <_>3 17 18 3 -1. + <_>3 18 18 1 3. + 0 + 4.0440000593662262e-003 + -0.0383290015161037 + 0.5117729902267456 + <_> + + <_> + + + + <_>2 4 6 10 -1. + <_>4 4 2 10 3. + 0 + -4.9769999459385872e-003 + -0.4288829863071442 + 0.0491739995777607 + <_> + + <_> + + + + <_>16 0 8 24 -1. + <_>16 0 4 24 2. + 0 + -0.0851830020546913 + 0.6662459969520569 + 7.8079998493194580e-003 + <_> + + <_> + + + + <_>4 0 8 15 -1. + <_>8 0 4 15 2. + 0 + 2.1559998858720064e-003 + -0.4913519918918610 + 0.0695559978485107 + <_> + + <_> + + + + <_>16 0 8 24 -1. + <_>16 0 4 24 2. + 0 + 0.3638449907302856 + 0.1299709975719452 + -1.8949509859085083 + <_> + + <_> + + + + <_>1 4 18 9 -1. + <_>7 4 6 9 3. + 0 + 0.2208250015974045 + -0.0572119988501072 + -1.4281120300292969 + <_> + + <_> + + + + <_>15 12 9 6 -1. + <_>15 14 9 2 3. + 0 + -0.0161400008946657 + -0.5758939981460571 + 0.1806250065565109 + <_> + + <_> + + + + <_>3 9 18 6 -1. + <_>3 9 9 3 2. + <_>12 12 9 3 2. + 0 + -0.0483300015330315 + 0.9730849862098694 + -0.1651300042867661 + <_> + + <_> + + + + <_>18 5 6 9 -1. + <_>18 8 6 3 3. + 0 + 0.0175299998372793 + 0.1793269962072372 + -0.2794890105724335 + <_> + + <_> + + + + <_>0 5 6 9 -1. + <_>0 8 6 3 3. + 0 + -0.0343099981546402 + -0.8107249736785889 + -0.0165960006415844 + <_> + + <_> + + + + <_>4 7 18 4 -1. + <_>13 7 9 2 2. + <_>4 9 9 2 2. + 0 + -4.5830002054572105e-003 + 0.2790899872779846 + -7.4519999325275421e-003 + <_> + + <_> + + + + <_>2 1 12 20 -1. + <_>2 1 6 10 2. + <_>8 11 6 10 2. + 0 + 0.1289640069007874 + -0.1350850015878677 + 2.5411539077758789 + <_> + + <_> + + + + <_>17 0 6 23 -1. + <_>17 0 3 23 2. + 0 + 0.0303610004484653 + -0.0684190019965172 + 0.2873409986495972 + <_> + + <_> + + + + <_>1 6 2 18 -1. + <_>1 15 2 9 2. + 0 + 0.0440860018134117 + -0.1813589930534363 + 0.6541320085525513 + <_> + + <_> + + + + <_>8 8 10 6 -1. + <_>8 10 10 2 3. + 0 + 3.0159999150782824e-003 + -0.1569049954414368 + 0.2696380019187927 + <_> + + <_> + + + + <_>0 6 20 6 -1. + <_>0 6 10 3 2. + <_>10 9 10 3 2. + 0 + -0.0263369996100664 + 0.2917560040950775 + -0.2527410089969635 + <_> + + <_> + + + + <_>11 12 12 5 -1. + <_>15 12 4 5 3. + 0 + -0.0278660003095865 + 0.4438750147819519 + 0.0550380013883114 + <_> + + <_> + + + + <_>0 4 3 19 -1. + <_>1 4 1 19 3. + 0 + 0.0117250001057982 + -0.1934649944305420 + 0.4665670096874237 + <_> + + <_> + + + + <_>19 1 3 18 -1. + <_>20 1 1 18 3. + 0 + 1.5689999563619494e-003 + -8.2360003143548965e-003 + 0.2570089995861054 + <_> + + <_> + + + + <_>2 1 3 18 -1. + <_>3 1 1 18 3. + 0 + -3.5550000611692667e-003 + -0.4243089854717255 + 0.0711740031838417 + <_> + + <_> + + + + <_>3 10 18 3 -1. + <_>9 10 6 3 3. + 0 + -0.0316950008273125 + -0.8539350032806397 + 0.1691620051860809 + <_> + + <_> + + + + <_>4 4 10 9 -1. + <_>9 4 5 9 2. + 0 + -0.0320970006287098 + 0.8378490209579468 + -0.1759729981422424 + <_> + + <_> + + + + <_>7 13 14 7 -1. + <_>7 13 7 7 2. + 0 + 0.1554419994354248 + 0.0995500013232231 + 2.3873300552368164 + <_> + + <_> + + + + <_>3 13 14 7 -1. + <_>10 13 7 7 2. + 0 + 0.0880459994077683 + -0.1872529983520508 + 0.6238430142402649 + <_> + + <_> + + + + <_>8 15 9 6 -1. + <_>11 15 3 6 3. + 0 + -1.6720000421628356e-003 + 0.2500869929790497 + -0.0651189982891083 + <_> + + <_> + + + + <_>4 14 8 10 -1. + <_>4 14 4 5 2. + <_>8 19 4 5 2. + 0 + 9.3409996479749680e-003 + -0.3537890017032623 + 0.1071500033140183 + <_> + + <_> + + + + <_>10 14 4 10 -1. + <_>10 19 4 5 2. + 0 + 0.0371380001306534 + 0.1638700067996979 + -0.9171839952468872 + <_> + + <_> + + + + <_>3 8 5 16 -1. + <_>3 16 5 8 2. + 0 + 0.0801839977502823 + -0.1481299996376038 + 1.4895190000534058 + <_> + + <_> + + + + <_>15 10 9 6 -1. + <_>15 12 9 2 3. + 0 + -7.9100002767518163e-004 + -0.2132689952850342 + 0.1967640072107315 + <_> + + <_> + + + + <_>0 10 9 6 -1. + <_>0 12 9 2 3. + 0 + -5.0400001928210258e-003 + -0.7131869792938232 + 1.8240000354126096e-003 + <_> + + <_> + + + + <_>6 7 12 9 -1. + <_>6 10 12 3 3. + 0 + 0.1196239963173866 + 0.0330989994108677 + 1.0441709756851196 + <_> + + <_> + + + + <_>9 10 5 8 -1. + <_>9 14 5 4 2. + 0 + -4.5280000194907188e-003 + -0.2730849981307983 + 0.2722980082035065 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + -0.0296390000730753 + 0.3622579872608185 + 0.0567950010299683 + <_> + + <_> + + + + <_>8 15 6 9 -1. + <_>10 15 2 9 3. + 0 + 0.0266500003635883 + -0.0480410009622574 + -0.9672350287437439 + <_> + + <_> + + + + <_>16 6 7 6 -1. + <_>16 9 7 3 2. + 0 + 0.0444220006465912 + 0.1305290013551712 + -0.3507730066776276 + <_> + + <_> + + + + <_>8 1 4 22 -1. + <_>10 1 2 22 2. + 0 + -0.0243599992245436 + -1.0766899585723877 + -0.0512229986488819 + <_> + + <_> + + + + <_>6 6 14 3 -1. + <_>6 6 7 3 2. + 0 + 0.0197349991649389 + 0.0262380000203848 + 0.2807050049304962 + <_> + + <_> + + + + <_>0 18 19 3 -1. + <_>0 19 19 1 3. + 0 + 5.4930001497268677e-003 + -0.2611129879951477 + 0.2101140022277832 + <_> + + <_> + + + + <_>17 0 6 24 -1. + <_>17 0 3 24 2. + 0 + -0.2320030033588409 + -1.7748440504074097 + 0.1148260012269020 + <_> + + <_> + + + + <_>0 13 15 6 -1. + <_>5 13 5 6 3. + 0 + -0.0256140008568764 + 0.2990080118179321 + -0.2250249981880188 + <_> + + <_> + + + + <_>9 6 10 14 -1. + <_>14 6 5 7 2. + <_>9 13 5 7 2. + 0 + -6.4949998632073402e-003 + 0.1956380009651184 + -0.0997629985213280 + <_> + + <_> + + + + <_>1 6 8 10 -1. + <_>1 6 4 5 2. + <_>5 11 4 5 2. + 0 + 3.9840000681579113e-003 + -0.4302150011062622 + 0.0812610015273094 + <_> + + <_> + + + + <_>7 6 12 5 -1. + <_>7 6 6 5 2. + 0 + -0.0358130000531673 + -0.5098739862442017 + 0.1634590029716492 + <_> + + <_> + + + + <_>7 7 9 6 -1. + <_>10 7 3 6 3. + 0 + -0.0141690000891685 + 0.7797809839248657 + -0.1747629940509796 + <_> + + <_> + + + + <_>7 8 14 14 -1. + <_>14 8 7 7 2. + <_>7 15 7 7 2. + 0 + -0.1264210045337677 + -0.6304789781570435 + 0.1272830069065094 + <_> + + <_> + + + + <_>3 8 14 14 -1. + <_>3 8 7 7 2. + <_>10 15 7 7 2. + 0 + 0.0686779990792274 + -0.0464479997754097 + -1.1128979921340942 + <_> + + <_> + + + + <_>9 8 13 4 -1. + <_>9 10 13 2 2. + 0 + 0.0858649984002113 + 0.1183540001511574 + -4.8235158920288086 + <_> + + <_> + + + + <_>3 2 6 12 -1. + <_>3 2 3 6 2. + <_>6 8 3 6 2. + 0 + 0.0155119998380542 + -0.0174679998308420 + -0.6369339823722839 + <_> + + <_> + + + + <_>6 10 17 6 -1. + <_>6 13 17 3 2. + 0 + 0.0810910016298294 + 0.0861330032348633 + 2.4559431076049805 + <_> + + <_> + + + + <_>1 10 17 6 -1. + <_>1 13 17 3 2. + 0 + 0.0184950008988380 + 0.0402290001511574 + -0.5085819959640503 + <_> + + <_> + + + + <_>16 7 8 9 -1. + <_>16 10 8 3 3. + 0 + -0.0863209962844849 + -1.9006760120391846 + 0.1101910024881363 + <_> + + <_> + + + + <_>0 7 8 9 -1. + <_>0 10 8 3 3. + 0 + 0.0723550021648407 + -0.0621119998395443 + -1.4165179729461670 + <_> + + <_> + + + + <_>0 9 24 10 -1. + <_>12 9 12 5 2. + <_>0 14 12 5 2. + 0 + -0.0781790018081665 + 0.8884930014610291 + 0.0423699989914894 + <_> + + <_> + + + + <_>3 2 15 8 -1. + <_>8 2 5 8 3. + 0 + 0.0966819971799850 + -0.2209420055150986 + 0.3357509970664978 + <_> + + <_> + + + + <_>4 2 18 8 -1. + <_>10 2 6 8 3. + 0 + -0.0398759990930557 + 0.5780479907989502 + 0.0453479997813702 + <_> + + <_> + + + + <_>0 1 18 4 -1. + <_>0 1 9 2 2. + <_>9 3 9 2 2. + 0 + -9.5349997282028198e-003 + -0.5417569875717163 + 3.2399999909102917e-003 + <_> + + <_> + + + + <_>20 2 3 18 -1. + <_>21 2 1 18 3. + 0 + 4.0600000647827983e-004 + -0.0815490037202835 + 0.3583790063858032 + <_> + + <_> + + + + <_>1 3 3 19 -1. + <_>2 3 1 19 3. + 0 + 0.0121079999953508 + -0.2028039991855621 + 0.4376800060272217 + <_> + + <_> + + + + <_>18 8 6 16 -1. + <_>20 8 2 16 3. + 0 + -0.0208739992231131 + 0.4146989881992340 + -0.0455680005252361 + <_> + + <_> + + + + <_>0 8 6 16 -1. + <_>2 8 2 16 3. + 0 + 0.0578880012035370 + -0.0290099997073412 + -0.9182230234146118 + <_> + + <_> + + + + <_>8 18 11 6 -1. + <_>8 20 11 2 3. + 0 + 1.3200000103097409e-004 + -0.1177240014076233 + 0.2000000029802322 + <_> + + <_> + + + + <_>4 6 12 5 -1. + <_>8 6 4 5 3. + 0 + -0.0171370003372431 + 0.3300479948520660 + -0.2305520027875900 + <_> + + <_> + + + + <_>7 6 12 5 -1. + <_>11 6 4 5 3. + 0 + 0.0306550003588200 + -0.0215450003743172 + 0.2687819898128510 + <_> + + <_> + + + + <_>6 3 9 6 -1. + <_>9 3 3 6 3. + 0 + -7.8699999721720815e-004 + -0.4410069882869721 + 0.0491579994559288 + <_> + + <_> + + + + <_>7 6 12 5 -1. + <_>7 6 6 5 2. + 0 + 0.0880369991064072 + 0.1178200021386147 + -2.8293309211730957 + <_> + + <_> + + + + <_>9 8 6 7 -1. + <_>12 8 3 7 2. + 0 + -0.0390289984643459 + 0.9177719950675964 + -0.1582739949226379 + <_> + + <_> + + + + <_>8 2 9 6 -1. + <_>11 2 3 6 3. + 0 + 0.0801059976220131 + 0.1128920018672943 + -1.9937280416488647 + <_> + + <_> + + + + <_>8 14 6 9 -1. + <_>8 17 6 3 3. + 0 + 0.0395389981567860 + -0.1435739994049072 + 1.3085240125656128 + <_> + + <_> + + + + <_>8 2 9 6 -1. + <_>11 2 3 6 3. + 0 + 0.0206840001046658 + 0.2004809975624085 + -0.0441869981586933 + <_> + + <_> + + + + <_>4 3 16 20 -1. + <_>4 3 8 10 2. + <_>12 13 8 10 2. + 0 + -0.0670379996299744 + 0.3261860013008118 + -0.2055040001869202 + <_> + + <_> + + + + <_>7 6 10 12 -1. + <_>12 6 5 6 2. + <_>7 12 5 6 2. + 0 + 0.0468150004744530 + 0.1582529991865158 + -0.9553509950637817 + <_> + + <_> + + + + <_>0 2 7 12 -1. + <_>0 6 7 4 3. + 0 + 0.0784439966082573 + -0.0746510028839111 + -2.1161499023437500 + <_> + + <_> + + + + <_>12 17 11 6 -1. + <_>12 19 11 2 3. + 0 + 0.0663800016045570 + 0.1164190024137497 + -1.6113519668579102 + <_> + + <_> + + + + <_>4 7 12 8 -1. + <_>4 7 6 4 2. + <_>10 11 6 4 2. + 0 + 0.0300539992749691 + -0.1656260043382645 + 0.7002540230751038 + <_> + + <_> + + + + <_>8 11 8 10 -1. + <_>12 11 4 5 2. + <_>8 16 4 5 2. + 0 + 0.0171199999749660 + 0.2262769937515259 + -0.4011499881744385 + <_> + + <_> + + + + <_>9 1 4 9 -1. + <_>11 1 2 9 2. + 0 + 0.0200730003416538 + -0.1938969939947128 + 0.4442029893398285 + <_> + + <_> + + + + <_>14 0 3 22 -1. + <_>15 0 1 22 3. + 0 + 0.0331019982695580 + 0.1163749992847443 + -1.5771679878234863 + <_> + + <_> + + + + <_>7 0 3 22 -1. + <_>8 0 1 22 3. + 0 + -0.0148820001631975 + -0.8968030214309692 + -0.0420100018382072 + <_> + + <_> + + + + <_>4 7 18 4 -1. + <_>13 7 9 2 2. + <_>4 9 9 2 2. + 0 + -0.0102810002863407 + 0.3560299873352051 + -0.0131240002810955 + <_> + + <_> + + + + <_>10 2 4 15 -1. + <_>10 7 4 5 3. + 0 + -0.0286950003355742 + -0.4603959918022156 + 0.0268019996583462 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + -4.7189998440444469e-003 + 0.2378879934549332 + -0.0655189976096153 + <_> + + <_> + + + + <_>0 0 18 13 -1. + <_>9 0 9 13 2. + 0 + 0.3220160007476807 + -0.0284899994730949 + -0.8423460125923157 + <_> + + <_> + + + + <_>16 0 3 24 -1. + <_>17 0 1 24 3. + 0 + -0.0170450005680323 + -0.5093880295753479 + 0.1605760008096695 + <_> + + <_> + + + + <_>5 0 3 24 -1. + <_>6 0 1 24 3. + 0 + -7.3469998314976692e-003 + -0.5415499806404114 + 4.7320001758635044e-003 + <_> + + <_> + + + + <_>10 15 5 8 -1. + <_>10 19 5 4 2. + 0 + -0.0300019998103380 + -0.8878579735755920 + 0.1362179964780808 + <_> + + <_> + + + + <_>2 18 18 2 -1. + <_>2 19 18 1 2. + 0 + -0.0112929996103048 + 0.8061519861221314 + -0.1615950018167496 + <_> + + <_> + + + + <_>2 8 20 3 -1. + <_>2 9 20 1 3. + 0 + 4.7749998047947884e-003 + 0.0129680000245571 + 0.5507990121841431 + <_> + + <_> + + + + <_>7 6 9 6 -1. + <_>7 8 9 2 3. + 0 + 5.0710001960396767e-003 + -0.0457280017435551 + -1.0766259431838989 + <_> + + <_> + + + + <_>3 2 19 10 -1. + <_>3 7 19 5 2. + 0 + 0.1934410035610199 + 0.0712620019912720 + 1.1694519519805908 + <_> + + <_> + + + + <_>2 7 19 3 -1. + <_>2 8 19 1 3. + 0 + 5.3750001825392246e-003 + -0.1973620057106018 + 0.3820689916610718 + <_> + + <_> + + + + <_>15 6 9 4 -1. + <_>15 8 9 2 2. + 0 + -0.0682760030031204 + -5.4372339248657227 + 0.1115190014243126 + <_> + + <_> + + + + <_>2 2 18 8 -1. + <_>8 2 6 8 3. + 0 + -0.0349330008029938 + 0.4479340016841888 + -0.1865790039300919 + <_> + + <_> + + + + <_>10 9 14 4 -1. + <_>10 9 7 4 2. + 0 + 5.1219998858869076e-003 + -0.0148719996213913 + 0.1841389983892441 + <_> + + <_> + + + + <_>4 4 6 16 -1. + <_>7 4 3 16 2. + 0 + 0.0953119993209839 + -0.1511709988117218 + 0.9499149918556213 + <_> + + <_> + + + + <_>15 8 9 16 -1. + <_>18 8 3 16 3. + 0 + -0.0628490000963211 + 0.4647360146045685 + 0.0384050011634827 + <_> + + <_> + + + + <_>0 8 9 16 -1. + <_>3 8 3 16 3. + 0 + -0.1704069972038269 + -1.6499999761581421 + -0.0632369965314865 + <_> + + <_> + + + + <_>18 0 6 14 -1. + <_>20 0 2 14 3. + 0 + 0.0105839995667338 + -0.0383489988744259 + 0.4191380143165588 + <_> + + <_> + + + + <_>0 0 6 14 -1. + <_>2 0 2 14 3. + 0 + -0.0415790006518364 + 0.3446190059185028 + -0.2118770033121109 + <_> + + <_> + + + + <_>15 0 6 22 -1. + <_>17 0 2 22 3. + 0 + 0.1271860003471375 + 0.1239819973707199 + -2.1254889965057373 + <_> + + <_> + + + + <_>3 0 6 22 -1. + <_>5 0 2 22 3. + 0 + 0.0825570002198219 + -0.0620240010321140 + -1.4875819683074951 + <_> + + <_> + + + + <_>12 2 12 20 -1. + <_>16 2 4 20 3. + 0 + 0.0852930024266243 + 0.0170879997313023 + 0.3207660019397736 + <_> + + <_> + + + + <_>0 2 12 20 -1. + <_>4 2 4 20 3. + 0 + 0.0555440001189709 + -0.2741400003433228 + 0.1897639930248261 + <_> + + <_> + + + + <_>11 6 4 9 -1. + <_>11 6 2 9 2. + 0 + 4.5650000683963299e-003 + -0.1792020052671433 + 0.2796730101108551 + <_> + + <_> + + + + <_>9 0 6 16 -1. + <_>12 0 3 16 2. + 0 + 0.0129979997873306 + -0.3229750096797943 + 0.2694180011749268 + <_> + + <_> + + + + <_>12 1 3 12 -1. + <_>12 7 3 6 2. + 0 + 0.0578919984400272 + 0.1264439970254898 + -0.6071349978446960 + <_> + + <_> + + + + <_>3 4 18 6 -1. + <_>3 4 9 3 2. + <_>12 7 9 3 2. + 0 + -0.0228240005671978 + -0.4968209862709045 + 0.0223769992589951 + <_> + + <_> + + + + <_>5 5 16 8 -1. + <_>13 5 8 4 2. + <_>5 9 8 4 2. + 0 + 0.0483120009303093 + 0.0436070002615452 + 0.4853779971599579 + <_> + + <_> + + + + <_>0 13 10 6 -1. + <_>0 15 10 2 3. + 0 + 0.0257140006870031 + -0.0429509989917278 + -0.9302350282669067 + <_> + + <_> + + + + <_>8 14 9 6 -1. + <_>8 16 9 2 3. + 0 + 6.9269998930394650e-003 + -2.9680000152438879e-003 + 0.3429630100727081 + <_> + + <_> + + + + <_>6 2 9 6 -1. + <_>9 2 3 6 3. + 0 + -0.0344469994306564 + -1.5299769639968872 + -0.0610149987041950 + <_> + + <_> + + + + <_>14 1 10 8 -1. + <_>19 1 5 4 2. + <_>14 5 5 4 2. + 0 + 0.0293879993259907 + 0.0375959984958172 + 0.6417239904403687 + <_> + + <_> + + + + <_>9 1 3 12 -1. + <_>9 7 3 6 2. + 0 + -2.4319998919963837e-003 + 0.0990889966487885 + -0.3968810141086578 + -3.3703000545501709 + 22 + -1 + <_> + + + <_> + + <_> + + + + <_>6 4 12 9 -1. + <_>6 7 12 3 3. + 0 + -0.0959440022706985 + 0.6241909861564636 + -0.4587520062923431 + <_> + + <_> + + + + <_>6 5 12 6 -1. + <_>10 5 4 6 3. + 0 + 0.0168340001255274 + -0.9307280182838440 + 0.2156360000371933 + <_> + + <_> + + + + <_>1 1 8 5 -1. + <_>5 1 4 5 2. + 0 + 0.0260499995201826 + -0.4053229987621307 + 0.4225659966468811 + <_> + + <_> + + + + <_>12 12 6 8 -1. + <_>12 16 6 4 2. + 0 + 3.6500001442618668e-004 + 0.0952880010008812 + -0.6329810023307800 + <_> + + <_> + + + + <_>3 12 12 6 -1. + <_>3 14 12 2 3. + 0 + -6.6940002143383026e-003 + 0.3724380135536194 + -0.3033240139484406 + <_> + + <_> + + + + <_>9 18 12 6 -1. + <_>15 18 6 3 2. + <_>9 21 6 3 2. + 0 + 0.0188740007579327 + -0.2335720062255859 + 0.4033069908618927 + <_> + + <_> + + + + <_>4 13 6 6 -1. + <_>4 16 6 3 2. + 0 + -1.6300000424962491e-004 + 0.0428869985044003 + -0.7779679894447327 + <_> + + <_> + + + + <_>11 3 7 18 -1. + <_>11 12 7 9 2. + 0 + -0.0762590020895004 + -0.4962849915027618 + 0.1633539944887161 + <_> + + <_> + + + + <_>3 9 18 3 -1. + <_>9 9 6 3 3. + 0 + 0.0501490011811256 + 0.0327470004558563 + -0.8004789948463440 + <_> + + <_> + + + + <_>5 3 19 2 -1. + <_>5 4 19 1 2. + 0 + -2.9239999130368233e-003 + -0.5000280141830444 + 0.2548060119152069 + <_> + + <_> + + + + <_>4 2 12 6 -1. + <_>4 2 6 3 2. + <_>10 5 6 3 2. + 0 + 0.0162439998239279 + 0.0389130003750324 + -0.7072489857673645 + <_> + + <_> + + + + <_>9 6 6 9 -1. + <_>11 6 2 9 3. + 0 + 0.0378119982779026 + -0.0662679970264435 + 0.7386879920959473 + <_> + + <_> + + + + <_>8 6 6 9 -1. + <_>10 6 2 9 3. + 0 + -0.0123199997469783 + 0.4869639873504639 + -0.2448559999465942 + <_> + + <_> + + + + <_>16 9 5 15 -1. + <_>16 14 5 5 3. + 0 + 0.0580039992928505 + 0.1345909982919693 + -0.1323210000991821 + <_> + + <_> + + + + <_>3 9 5 15 -1. + <_>3 14 5 5 3. + 0 + 4.8630000092089176e-003 + -0.4417290091514587 + 0.1400559991598129 + <_> + + <_> + + + + <_>6 6 14 6 -1. + <_>13 6 7 3 2. + <_>6 9 7 3 2. + 0 + 0.0456909984350204 + 0.0312179997563362 + 0.8981829881668091 + <_> + + <_> + + + + <_>8 6 3 14 -1. + <_>8 13 3 7 2. + 0 + 0.0213210005313158 + 0.0120080001652241 + -0.8606619834899902 + <_> + + <_> + + + + <_>0 16 24 5 -1. + <_>8 16 8 5 3. + 0 + 0.1567910015583038 + 0.0140559999272227 + 0.8533290028572083 + <_> + + <_> + + + + <_>0 20 20 3 -1. + <_>10 20 10 3 2. + 0 + -0.0103289997205138 + 0.2902280092239380 + -0.2947880029678345 + <_> + + <_> + + + + <_>5 10 18 2 -1. + <_>5 11 18 1 2. + 0 + 2.4290001019835472e-003 + -0.4043990075588226 + 0.1940020024776459 + <_> + + <_> + + + + <_>0 6 6 10 -1. + <_>2 6 2 10 3. + 0 + -0.0233389995992184 + 0.3294520080089569 + -0.2571269869804382 + <_> + + <_> + + + + <_>2 1 20 3 -1. + <_>2 2 20 1 3. + 0 + -6.8970001302659512e-003 + -0.5335299968719482 + 0.2163520008325577 + <_> + + <_> + + + + <_>9 13 6 11 -1. + <_>11 13 2 11 3. + 0 + -0.0344030000269413 + -1.4425489902496338 + -0.0446829982101917 + <_> + + <_> + + + + <_>9 15 6 8 -1. + <_>9 19 6 4 2. + 0 + -0.0212350003421307 + -0.7901750206947327 + 0.1908410042524338 + <_> + + <_> + + + + <_>9 12 6 9 -1. + <_>9 15 6 3 3. + 0 + 2.0620001014322042e-003 + -0.2693119943141937 + 0.3148800134658814 + <_> + + <_> + + + + <_>5 11 18 2 -1. + <_>5 12 18 1 2. + 0 + -4.2190002277493477e-003 + -0.5446439981460571 + 0.1657460033893585 + <_> + + <_> + + + + <_>2 6 15 6 -1. + <_>2 8 15 2 3. + 0 + -0.0143349999561906 + 0.0221050009131432 + -0.6234250068664551 + <_> + + <_> + + + + <_>6 0 18 3 -1. + <_>6 1 18 1 3. + 0 + -8.2120001316070557e-003 + -0.4988499879837036 + 0.1923709958791733 + <_> + + <_> + + + + <_>5 0 3 18 -1. + <_>6 0 1 18 3. + 0 + -9.3350000679492950e-003 + -0.7913119792938232 + -0.0141439996659756 + <_> + + <_> + + + + <_>18 3 6 10 -1. + <_>20 3 2 10 3. + 0 + -0.0379379987716675 + 0.7984129786491394 + -0.0337990000844002 + <_> + + <_> + + + + <_>0 3 6 10 -1. + <_>2 3 2 10 3. + 0 + 4.7059999778866768e-003 + -0.3316340148448944 + 0.2072629928588867 + <_> + + <_> + + + + <_>10 5 8 9 -1. + <_>10 5 4 9 2. + 0 + -4.4499998912215233e-003 + -0.2725630104541779 + 0.1840219944715500 + <_> + + <_> + + + + <_>6 5 8 9 -1. + <_>10 5 4 9 2. + 0 + 5.2189999260008335e-003 + -0.5309600234031677 + 0.0526079982519150 + <_> + + <_> + + + + <_>3 2 20 3 -1. + <_>3 3 20 1 3. + 0 + -9.5399999991059303e-003 + -0.5648540258407593 + 0.1926939934492111 + <_> + + <_> + + + + <_>5 2 13 4 -1. + <_>5 4 13 2 2. + 0 + 0.0449699983000755 + -0.1741150021553040 + 0.9538260102272034 + <_> + + <_> + + + + <_>17 0 7 14 -1. + <_>17 7 7 7 2. + 0 + 0.0142090003937483 + -0.0919490009546280 + 0.2483610063791275 + <_> + + <_> + + + + <_>0 0 7 14 -1. + <_>0 7 7 7 2. + 0 + 0.1638019979000092 + -0.0584970004856586 + -1.6404409408569336 + <_> + + <_> + + + + <_>9 11 10 6 -1. + <_>9 11 5 6 2. + 0 + 2.5579999200999737e-003 + 0.2344799935817719 + -0.0927340015769005 + <_> + + <_> + + + + <_>5 11 10 6 -1. + <_>10 11 5 6 2. + 0 + -3.8499999791383743e-003 + 0.1788070052862167 + -0.3584409952163696 + <_> + + <_> + + + + <_>11 6 3 18 -1. + <_>11 12 3 6 3. + 0 + -0.0252219997346401 + -0.4290300011634827 + 0.2024450004100800 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + -0.0194150004535913 + 0.5801630020141602 + -0.1880639940500259 + <_> + + <_> + + + + <_>6 16 18 3 -1. + <_>6 17 18 1 3. + 0 + 0.0144199999049306 + 0.0328469984233379 + 0.8198050260543823 + <_> + + <_> + + + + <_>4 6 9 10 -1. + <_>4 11 9 5 2. + 0 + 0.0515829995274544 + 0.0691760033369064 + -0.4586629867553711 + <_> + + <_> + + + + <_>9 7 15 4 -1. + <_>9 9 15 2 2. + 0 + -0.0379600003361702 + -1.2553000450134277 + 0.1433289945125580 + <_> + + <_> + + + + <_>5 6 12 6 -1. + <_>5 6 6 3 2. + <_>11 9 6 3 2. + 0 + -0.0295609999448061 + 0.5315179824829102 + -0.2059649974107742 + <_> + + <_> + + + + <_>6 1 12 9 -1. + <_>6 4 12 3 3. + 0 + -0.0391109995543957 + 1.1658719778060913 + 0.0538970008492470 + <_> + + <_> + + + + <_>7 9 6 12 -1. + <_>7 9 3 6 2. + <_>10 15 3 6 2. + 0 + -0.0291590001434088 + 0.3930760025978088 + -0.2218450009822846 + <_> + + <_> + + + + <_>11 5 13 6 -1. + <_>11 7 13 2 3. + 0 + -0.0836170017719269 + -0.7374449968338013 + 0.1426820009946823 + <_> + + <_> + + + + <_>1 11 22 13 -1. + <_>12 11 11 13 2. + 0 + 0.4200400114059448 + -0.1427740007638931 + 1.7894840240478516 + <_> + + <_> + + + + <_>18 8 6 6 -1. + <_>18 11 6 3 2. + 0 + 0.0600050017237663 + 0.1197670027613640 + -1.8886189460754395 + <_> + + <_> + + + + <_>0 8 6 6 -1. + <_>0 11 6 3 2. + 0 + -0.0189810004085302 + -1.4148449897766113 + -0.0565229989588261 + <_> + + <_> + + + + <_>0 6 24 3 -1. + <_>0 7 24 1 3. + 0 + -6.0049998573958874e-003 + 0.4417079985141754 + -0.1020080000162125 + <_> + + <_> + + + + <_>0 5 10 6 -1. + <_>0 7 10 2 3. + 0 + -0.0582140013575554 + -1.3918470144271851 + -0.0482689999043942 + <_> + + <_> + + + + <_>6 7 18 3 -1. + <_>6 8 18 1 3. + 0 + -0.0122710000723600 + 0.5131769776344299 + -0.0936969965696335 + <_> + + <_> + + + + <_>0 0 10 6 -1. + <_>0 2 10 2 3. + 0 + 0.0465859994292259 + -0.0574840009212494 + -1.4283169507980347 + <_> + + <_> + + + + <_>19 0 3 19 -1. + <_>20 0 1 19 3. + 0 + 1.2110000243410468e-003 + -0.0808919966220856 + 0.3233320116996765 + <_> + + <_> + + + + <_>4 6 12 16 -1. + <_>4 6 6 8 2. + <_>10 14 6 8 2. + 0 + -0.0886420011520386 + -0.8644909858703613 + -0.0331469997763634 + <_> + + <_> + + + + <_>19 6 4 18 -1. + <_>21 6 2 9 2. + <_>19 15 2 9 2. + 0 + -0.0231849998235703 + 0.5216220021247864 + -0.0161680001765490 + <_> + + <_> + + + + <_>1 6 4 18 -1. + <_>1 6 2 9 2. + <_>3 15 2 9 2. + 0 + 0.0430900007486343 + -0.1615380048751831 + 1.0915000438690186 + <_> + + <_> + + + + <_>3 21 18 3 -1. + <_>3 22 18 1 3. + 0 + 2.0599999697878957e-004 + -0.1709149926900864 + 0.3123669922351837 + <_> + + <_> + + + + <_>0 19 9 4 -1. + <_>0 21 9 2 2. + 0 + 8.9159999042749405e-003 + -6.7039998248219490e-003 + -0.6881039738655090 + <_> + + <_> + + + + <_>12 18 12 6 -1. + <_>18 18 6 3 2. + <_>12 21 6 3 2. + 0 + -0.0177529994398355 + 0.6329280138015747 + -4.2360001243650913e-003 + <_> + + <_> + + + + <_>7 18 9 4 -1. + <_>7 20 9 2 2. + 0 + 6.2299999408423901e-003 + -0.3363719880580902 + 0.1279059946537018 + <_> + + <_> + + + + <_>12 16 10 8 -1. + <_>17 16 5 4 2. + <_>12 20 5 4 2. + 0 + 0.0227700006216764 + -0.0347039997577667 + 0.3914180099964142 + <_> + + <_> + + + + <_>2 16 10 8 -1. + <_>2 16 5 4 2. + <_>7 20 5 4 2. + 0 + -0.0215349998325109 + 0.6476510167121887 + -0.2009779959917069 + <_> + + <_> + + + + <_>14 0 10 12 -1. + <_>19 0 5 6 2. + <_>14 6 5 6 2. + 0 + 0.0617589987814426 + 0.0542970001697540 + 0.9070010185241699 + <_> + + <_> + + + + <_>0 0 10 12 -1. + <_>0 0 5 6 2. + <_>5 6 5 6 2. + 0 + -0.0780699998140335 + 0.6552339792251587 + -0.1975439935922623 + <_> + + <_> + + + + <_>15 14 9 6 -1. + <_>15 16 9 2 3. + 0 + 0.0113150002434850 + 0.1938530057668686 + -0.5170729756355286 + <_> + + <_> + + + + <_>0 14 9 6 -1. + <_>0 16 9 2 3. + 0 + -0.0255900006741285 + -0.9309650063514710 + -0.0315469987690449 + <_> + + <_> + + + + <_>14 14 10 6 -1. + <_>14 16 10 2 3. + 0 + -0.0380589999258518 + -0.6832690238952637 + 0.1270910054445267 + <_> + + <_> + + + + <_>0 14 10 6 -1. + <_>0 16 10 2 3. + 0 + 9.7970003262162209e-003 + 0.0155239999294281 + -0.6334789991378784 + <_> + + <_> + + + + <_>5 18 18 2 -1. + <_>5 19 18 1 2. + 0 + -0.0138419996947050 + 1.0060529708862305 + 0.0628129988908768 + <_> + + <_> + + + + <_>0 18 18 3 -1. + <_>0 19 18 1 3. + 0 + 8.3459997549653053e-003 + -0.2338320016860962 + 0.3098269999027252 + <_> + + <_> + + + + <_>3 5 18 12 -1. + <_>12 5 9 6 2. + <_>3 11 9 6 2. + 0 + -0.0714399963617325 + -0.7250540256500244 + 0.1714829951524735 + <_> + + <_> + + + + <_>5 3 7 9 -1. + <_>5 6 7 3 3. + 0 + 0.0100060002878308 + -0.2207199931144714 + 0.3526619970798492 + <_> + + <_> + + + + <_>4 0 19 15 -1. + <_>4 5 19 5 3. + 0 + 0.1100530028343201 + 0.1666200011968613 + -0.7431899905204773 + <_> + + <_> + + + + <_>3 0 16 4 -1. + <_>3 2 16 2 2. + 0 + 0.0353109985589981 + -0.2398270070552826 + 0.4143599867820740 + <_> + + <_> + + + + <_>4 12 16 12 -1. + <_>4 12 8 12 2. + 0 + -0.1117469966411591 + 0.5104539990425110 + 2.2319999989122152e-003 + <_> + + <_> + + + + <_>4 3 12 15 -1. + <_>10 3 6 15 2. + 0 + -0.1136780008673668 + 0.9047520160675049 + -0.1661529988050461 + <_> + + <_> + + + + <_>16 4 2 19 -1. + <_>16 4 1 19 2. + 0 + 0.0166679993271828 + 0.1402450054883957 + -0.5217850208282471 + <_> + + <_> + + + + <_>6 4 2 19 -1. + <_>7 4 1 19 2. + 0 + -8.0340001732110977e-003 + -0.6617839932441711 + 3.7640000227838755e-003 + <_> + + <_> + + + + <_>13 14 8 10 -1. + <_>17 14 4 5 2. + <_>13 19 4 5 2. + 0 + -0.0330969989299774 + 0.8018590211868286 + 0.0593850016593933 + <_> + + <_> + + + + <_>3 14 8 10 -1. + <_>3 14 4 5 2. + <_>7 19 4 5 2. + 0 + 0.0125479996204376 + -0.3354550004005432 + 0.1457860022783279 + <_> + + <_> + + + + <_>12 6 3 18 -1. + <_>12 12 3 6 3. + 0 + -0.0420739986002445 + -0.5550910234451294 + 0.1326660066843033 + <_> + + <_> + + + + <_>5 11 12 6 -1. + <_>5 11 6 3 2. + <_>11 14 6 3 2. + 0 + 0.0252219997346401 + -0.0616319999098778 + -1.3678770065307617 + <_> + + <_> + + + + <_>10 5 8 10 -1. + <_>14 5 4 5 2. + <_>10 10 4 5 2. + 0 + -0.0242689996957779 + 0.3418509960174561 + -7.4160001240670681e-003 + <_> + + <_> + + + + <_>6 4 12 10 -1. + <_>6 4 6 5 2. + <_>12 9 6 5 2. + 0 + -0.0122800003737211 + 0.2774580121040344 + -0.3103390038013458 + <_> + + <_> + + + + <_>6 8 18 10 -1. + <_>15 8 9 5 2. + <_>6 13 9 5 2. + 0 + -0.1137709990143776 + 1.1719540357589722 + 0.0836810022592545 + <_> + + <_> + + + + <_>0 8 18 10 -1. + <_>0 8 9 5 2. + <_>9 13 9 5 2. + 0 + -0.0847719982266426 + 0.8169479966163635 + -0.1783750057220459 + <_> + + <_> + + + + <_>12 6 3 18 -1. + <_>12 12 3 6 3. + 0 + -0.0245520006865263 + -0.1862729936838150 + 0.1434009969234467 + <_> + + <_> + + + + <_>0 14 18 3 -1. + <_>0 15 18 1 3. + 0 + -9.0269995853304863e-003 + 0.3265919983386993 + -0.2354129999876022 + <_> + + <_> + + + + <_>12 6 3 18 -1. + <_>12 12 3 6 3. + 0 + 0.0111779998987913 + 0.1976120024919510 + -0.0217010006308556 + <_> + + <_> + + + + <_>9 6 3 18 -1. + <_>9 12 3 6 3. + 0 + -0.0293669998645782 + -0.9341480135917664 + -0.0217049997299910 + <_> + + <_> + + + + <_>6 14 18 3 -1. + <_>6 15 18 1 3. + 0 + 6.3640000298619270e-003 + 0.0255730003118515 + 0.4641279876232147 + <_> + + <_> + + + + <_>0 5 18 3 -1. + <_>0 6 18 1 3. + 0 + 0.0140260001644492 + -0.2122859954833984 + 0.4007880091667175 + <_> + + <_> + + + + <_>2 5 22 3 -1. + <_>2 6 22 1 3. + 0 + -0.0133419996127486 + 0.7420269846916199 + 0.0290019996464252 + <_> + + <_> + + + + <_>0 0 21 10 -1. + <_>7 0 7 10 3. + 0 + 0.2842279970645905 + -0.1924359947443008 + 0.4363119900226593 + <_> + + <_> + + + + <_>6 3 18 17 -1. + <_>12 3 6 17 3. + 0 + -0.2372400015592575 + 0.6973639726638794 + 0.0693079978227615 + <_> + + <_> + + + + <_>0 3 18 17 -1. + <_>6 3 6 17 3. + 0 + -0.1116970032453537 + 0.3914720118045807 + -0.2092200070619583 + <_> + + <_> + + + + <_>0 12 24 11 -1. + <_>8 12 8 11 3. + 0 + 0.1278750002384186 + -0.0725559964776039 + 0.3608820140361786 + <_> + + <_> + + + + <_>4 10 16 6 -1. + <_>4 13 16 3 2. + 0 + -0.0629009976983070 + 0.9542499780654907 + -0.1540279984474182 + <_> + + <_> + + + + <_>12 8 6 8 -1. + <_>12 12 6 4 2. + 0 + 0.0174390003085136 + -0.0511349998414516 + 0.2775030136108398 + <_> + + <_> + + + + <_>6 14 8 7 -1. + <_>10 14 4 7 2. + 0 + 1.2319999514147639e-003 + 0.0756279975175858 + -0.3645609915256500 + <_> + + <_> + + + + <_>15 10 6 14 -1. + <_>18 10 3 7 2. + <_>15 17 3 7 2. + 0 + 0.0274950005114079 + 0.0518440008163452 + 0.4156259894371033 + <_> + + <_> + + + + <_>3 10 6 14 -1. + <_>3 10 3 7 2. + <_>6 17 3 7 2. + 0 + -0.0435439981520176 + 0.7196999788284302 + -0.1713220030069351 + <_> + + <_> + + + + <_>6 12 18 2 -1. + <_>6 13 18 1 2. + 0 + 0.0110259996727109 + 0.1435460001230240 + -0.6540300250053406 + <_> + + <_> + + + + <_>5 8 10 6 -1. + <_>5 10 10 2 3. + 0 + 0.0208659991621971 + 0.0400890000164509 + -0.4574329853057861 + <_> + + <_> + + + + <_>12 11 9 4 -1. + <_>12 13 9 2 2. + 0 + -0.0223040003329515 + 0.5385500192642212 + 0.0716629996895790 + <_> + + <_> + + + + <_>0 11 9 6 -1. + <_>0 13 9 2 3. + 0 + 0.0324920006096363 + -0.0459919981658459 + -1.0047069787979126 + <_> + + <_> + + + + <_>11 2 3 18 -1. + <_>12 2 1 18 3. + 0 + 0.0122699998319149 + 0.0343349985778332 + 0.4243179857730866 + <_> + + <_> + + + + <_>10 2 3 18 -1. + <_>11 2 1 18 3. + 0 + 8.3820000290870667e-003 + -0.2585060000419617 + 0.2626349925994873 + <_> + + <_> + + + + <_>9 12 6 10 -1. + <_>11 12 2 10 3. + 0 + 0.0373539999127388 + 0.1569249927997589 + -1.0429090261459351 + <_> + + <_> + + + + <_>1 10 6 9 -1. + <_>1 13 6 3 3. + 0 + -0.0141110001131892 + -0.7317770123481751 + -0.0202769991010427 + <_> + + <_> + + + + <_>6 9 16 6 -1. + <_>14 9 8 3 2. + <_>6 12 8 3 2. + 0 + 0.0570669993758202 + 0.0833600014448166 + 1.5661499500274658 + <_> + + <_> + + + + <_>1 8 9 6 -1. + <_>1 10 9 2 3. + 0 + 4.9680001102387905e-003 + -0.3531819880008698 + 0.1469839960336685 + <_> + + <_> + + + + <_>7 7 16 6 -1. + <_>7 9 16 2 3. + 0 + -0.0244929995387793 + 0.2832590043544769 + -3.4640000667423010e-003 + <_> + + <_> + + + + <_>0 0 18 3 -1. + <_>0 1 18 1 3. + 0 + -0.0112549997866154 + -0.8401749730110169 + -0.0362519994378090 + <_> + + <_> + + + + <_>10 0 6 9 -1. + <_>12 0 2 9 3. + 0 + 0.0345330014824867 + 0.1499850004911423 + -0.8736709952354431 + <_> + + <_> + + + + <_>9 5 6 6 -1. + <_>12 5 3 6 2. + 0 + 0.0243030004203320 + -0.1878750026226044 + 0.5948399901390076 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>12 6 2 9 2. + <_>10 15 2 9 2. + 0 + -7.8790001571178436e-003 + 0.4431569874286652 + -0.0565709993243217 + <_> + + <_> + + + + <_>8 0 6 9 -1. + <_>10 0 2 9 3. + 0 + 0.0351420007646084 + -0.0564949996769428 + -1.3617190122604370 + <_> + + <_> + + + + <_>9 1 6 9 -1. + <_>9 4 6 3 3. + 0 + 4.6259998343884945e-003 + -0.3116169869899750 + 0.2544769942760468 + <_> + + <_> + + + + <_>1 0 18 9 -1. + <_>1 3 18 3 3. + 0 + -0.0831310003995895 + 1.6424349546432495 + -0.1442939937114716 + <_> + + <_> + + + + <_>0 3 24 3 -1. + <_>0 4 24 1 3. + 0 + -0.0140159996226430 + -0.7781950235366821 + 0.1717330068349838 + <_> + + <_> + + + + <_>6 14 9 4 -1. + <_>6 16 9 2 2. + 0 + 1.2450000504031777e-003 + -0.2319139987230301 + 0.2852790057659149 + <_> + + <_> + + + + <_>8 9 8 10 -1. + <_>12 9 4 5 2. + <_>8 14 4 5 2. + 0 + -0.0168030001223087 + -0.3596509993076325 + 0.2041299939155579 + <_> + + <_> + + + + <_>5 2 13 9 -1. + <_>5 5 13 3 3. + 0 + -0.0767479985952377 + 0.7805050015449524 + -0.1561280041933060 + <_> + + <_> + + + + <_>4 4 16 9 -1. + <_>4 7 16 3 3. + 0 + -0.2367199957370758 + 1.1813700199127197 + 0.0781119987368584 + <_> + + <_> + + + + <_>4 4 14 9 -1. + <_>4 7 14 3 3. + 0 + -0.1005740016698837 + -0.4710409939289093 + 0.0791729986667633 + <_> + + <_> + + + + <_>8 5 9 6 -1. + <_>8 7 9 2 3. + 0 + 1.3239999534562230e-003 + 0.2226269990205765 + -0.3709979951381683 + <_> + + <_> + + + + <_>1 7 16 6 -1. + <_>1 9 16 2 3. + 0 + 0.0221529994159937 + -0.0386490002274513 + -0.9227499961853027 + <_> + + <_> + + + + <_>10 5 13 9 -1. + <_>10 8 13 3 3. + 0 + -0.1124619990587235 + 0.4189960062503815 + 0.0804110020399094 + <_> + + <_> + + + + <_>1 5 13 9 -1. + <_>1 8 13 3 3. + 0 + 0.0164810009300709 + -0.1675669997930527 + 0.7184240221977234 + <_> + + <_> + + + + <_>0 4 24 6 -1. + <_>12 4 12 3 2. + <_>0 7 12 3 2. + 0 + 0.0681139975786209 + 0.1571989953517914 + -0.8768110275268555 + <_> + + <_> + + + + <_>1 14 10 9 -1. + <_>1 17 10 3 3. + 0 + 0.0160119999200106 + -4.1600000113248825e-003 + -0.5932779908180237 + <_> + + <_> + + + + <_>5 17 18 3 -1. + <_>5 18 18 1 3. + 0 + 4.6640001237392426e-003 + -0.0301539991050959 + 0.4834530055522919 + <_> + + <_> + + + + <_>0 16 18 3 -1. + <_>0 17 18 1 3. + 0 + 6.7579997703433037e-003 + -0.2266740053892136 + 0.3366230130195618 + <_> + + <_> + + + + <_>9 17 9 6 -1. + <_>9 19 9 2 3. + 0 + 4.7289999201893806e-003 + -0.0603739991784096 + 0.3145810067653656 + <_> + + <_> + + + + <_>1 20 22 4 -1. + <_>1 20 11 2 2. + <_>12 22 11 2 2. + 0 + 2.5869999080896378e-003 + -0.2987259924411774 + 0.1778749972581863 + <_> + + <_> + + + + <_>8 14 8 6 -1. + <_>8 17 8 3 2. + 0 + 2.8989999555051327e-003 + 0.2189020067453384 + -0.2956709861755371 + <_> + + <_> + + + + <_>8 6 8 15 -1. + <_>8 11 8 5 3. + 0 + -0.0300539992749691 + 1.2150429487228394 + -0.1435499936342239 + <_> + + <_> + + + + <_>5 4 18 3 -1. + <_>5 5 18 1 3. + 0 + 0.0141810001805425 + 0.0124519998207688 + 0.5549010038375855 + <_> + + <_> + + + + <_>9 3 5 10 -1. + <_>9 8 5 5 2. + 0 + -0.0605270005762577 + -1.4933999776840210 + -0.0652270019054413 + <_> + + <_> + + + + <_>6 8 12 3 -1. + <_>6 8 6 3 2. + 0 + -0.0198829993605614 + -0.3852640092372894 + 0.1976120024919510 + <_> + + <_> + + + + <_>2 6 18 6 -1. + <_>2 6 9 3 2. + <_>11 9 9 3 2. + 0 + 0.0312189999967813 + -0.2128120064735413 + 0.2944650053977966 + <_> + + <_> + + + + <_>10 6 4 18 -1. + <_>12 6 2 9 2. + <_>10 15 2 9 2. + 0 + 0.0182719994336367 + 9.7200000891461968e-004 + 0.6681420207023621 + <_> + + <_> + + + + <_>7 5 6 6 -1. + <_>10 5 3 6 2. + 0 + 1.1089999461546540e-003 + -0.6246790289878845 + -1.6599999507889152e-003 + <_> + + <_> + + + + <_>14 5 2 18 -1. + <_>14 14 2 9 2. + 0 + -0.0367139987647533 + -0.4233390092849731 + 0.1208470016717911 + <_> + + <_> + + + + <_>8 5 2 18 -1. + <_>8 14 2 9 2. + 0 + 0.0120440004393458 + 0.0258820001035929 + -0.5073239803314209 + <_> + + <_> + + + + <_>9 2 10 6 -1. + <_>9 2 5 6 2. + 0 + 0.0747490003705025 + 0.1318469941616058 + -0.2173960059881210 + <_> + + <_> + + + + <_>3 1 18 12 -1. + <_>12 1 9 12 2. + 0 + -0.2347320020198822 + 1.1775610446929932 + -0.1511469930410385 + <_> + + <_> + + + + <_>5 2 17 22 -1. + <_>5 13 17 11 2. + 0 + 0.1409649997949600 + 0.0339910015463829 + 0.3992309868335724 + <_> + + <_> + + + + <_>4 0 12 6 -1. + <_>4 2 12 2 3. + 0 + 6.1789997853338718e-003 + -0.3180670142173767 + 0.1168169975280762 + <_> + + <_> + + + + <_>6 9 16 6 -1. + <_>14 9 8 3 2. + <_>6 12 8 3 2. + 0 + -0.0572169981896877 + 0.8439909815788269 + 0.0838890001177788 + <_> + + <_> + + + + <_>9 0 5 18 -1. + <_>9 9 5 9 2. + 0 + -0.0552270002663136 + 0.3688830137252808 + -0.1891340017318726 + <_> + + <_> + + + + <_>12 0 6 9 -1. + <_>14 0 2 9 3. + 0 + -0.0215830001980066 + -0.5216180086135864 + 0.1577260047197342 + <_> + + <_> + + + + <_>6 0 6 9 -1. + <_>8 0 2 9 3. + 0 + 0.0257479995489120 + -0.0599219985306263 + -1.0674990415573120 + <_> + + <_> + + + + <_>9 1 6 12 -1. + <_>11 1 2 12 3. + 0 + -0.0130989998579025 + 0.7895839810371399 + 0.0520999990403652 + <_> + + <_> + + + + <_>5 9 13 4 -1. + <_>5 11 13 2 2. + 0 + 2.2799998987466097e-003 + -1.1704430580139160 + -0.0593569986522198 + <_> + + <_> + + + + <_>5 8 19 3 -1. + <_>5 9 19 1 3. + 0 + 8.8060004636645317e-003 + 0.0417179986834526 + 0.6635259985923767 + <_> + + <_> + + + + <_>9 9 6 8 -1. + <_>9 13 6 4 2. + 0 + -8.9699998497962952e-003 + -0.3586269915103912 + 0.0604580007493496 + <_> + + <_> + + + + <_>11 9 4 15 -1. + <_>11 14 4 5 3. + 0 + 4.0230001322925091e-003 + 0.2097939997911453 + -0.2480600029230118 + <_> + + <_> + + + + <_>2 0 6 14 -1. + <_>2 0 3 7 2. + <_>5 7 3 7 2. + 0 + 0.0250170007348061 + -0.1879590004682541 + 0.3954710066318512 + <_> + + <_> + + + + <_>15 1 6 14 -1. + <_>18 1 3 7 2. + <_>15 8 3 7 2. + 0 + -5.9009999968111515e-003 + 0.2566390037536621 + -0.0949190035462379 + <_> + + <_> + + + + <_>3 1 6 14 -1. + <_>3 1 3 7 2. + <_>6 8 3 7 2. + 0 + 4.3850000947713852e-003 + 0.0331390015780926 + -0.4607540071010590 + <_> + + <_> + + + + <_>3 20 18 4 -1. + <_>12 20 9 2 2. + <_>3 22 9 2 2. + 0 + -0.0337719991803169 + -0.9888160228729248 + 0.1463689953088760 + <_> + + <_> + + + + <_>5 0 4 20 -1. + <_>5 0 2 10 2. + <_>7 10 2 10 2. + 0 + 0.0445230007171631 + -0.1328669935464859 + 1.5796790122985840 + <_> + + <_> + + + + <_>16 8 8 12 -1. + <_>20 8 4 6 2. + <_>16 14 4 6 2. + 0 + -0.0409290008246899 + 0.3387709856033325 + 0.0749709978699684 + <_> + + <_> + + + + <_>0 8 8 12 -1. + <_>0 8 4 6 2. + <_>4 14 4 6 2. + 0 + 0.0393519997596741 + -0.1832789927721024 + 0.4698069989681244 + <_> + + <_> + + + + <_>13 13 10 8 -1. + <_>18 13 5 4 2. + <_>13 17 5 4 2. + 0 + -0.0703229978680611 + -0.9832270145416260 + 0.1180810034275055 + <_> + + <_> + + + + <_>1 13 10 8 -1. + <_>1 13 5 4 2. + <_>6 17 5 4 2. + 0 + 0.0357430018484592 + -0.0330509990453720 + -0.8361089825630188 + <_> + + <_> + + + + <_>15 8 4 15 -1. + <_>15 13 4 5 3. + 0 + -0.0429619997739792 + 1.1670809984207153 + 0.0806920006871223 + <_> + + <_> + + + + <_>5 8 4 15 -1. + <_>5 13 4 5 3. + 0 + -0.0210079997777939 + 0.6386979818344116 + -0.1762630045413971 + <_> + + <_> + + + + <_>6 11 16 12 -1. + <_>6 15 16 4 3. + 0 + -0.1574220061302185 + -0.2330249994993210 + 0.1251749992370606 + <_> + + <_> + + + + <_>2 11 16 12 -1. + <_>2 15 16 4 3. + 0 + 7.8659998252987862e-003 + -0.2203799933195114 + 0.2719680070877075 + <_> + + <_> + + + + <_>14 12 7 9 -1. + <_>14 15 7 3 3. + 0 + 0.0236220005899668 + 0.1612730026245117 + -0.4332900047302246 + <_> + + <_> + + + + <_>10 1 3 21 -1. + <_>10 8 3 7 3. + 0 + 0.0746920034289360 + -0.1699199974536896 + 0.5888490080833435 + <_> + + <_> + + + + <_>13 11 9 4 -1. + <_>13 13 9 2 2. + 0 + -6.4799998654052615e-004 + 0.2584289908409119 + -0.0359119996428490 + <_> + + <_> + + + + <_>3 10 17 9 -1. + <_>3 13 17 3 3. + 0 + -0.0162909999489784 + -0.7676439881324768 + -0.0204729996621609 + <_> + + <_> + + + + <_>13 8 8 15 -1. + <_>13 13 8 5 3. + 0 + -0.0331339985132217 + -0.2718009948730469 + 0.1432570070028305 + <_> + + <_> + + + + <_>3 8 8 15 -1. + <_>3 13 8 5 3. + 0 + 0.0487979985773563 + 0.0764089971780777 + -0.4144519865512848 + <_> + + <_> + + + + <_>11 14 10 8 -1. + <_>16 14 5 4 2. + <_>11 18 5 4 2. + 0 + 2.2869999520480633e-003 + -0.0386289991438389 + 0.2075379937887192 + <_> + + <_> + + + + <_>0 18 22 6 -1. + <_>0 18 11 3 2. + <_>11 21 11 3 2. + 0 + 0.0453040003776550 + -0.1777790039777756 + 0.6346139907836914 + <_> + + <_> + + + + <_>0 16 24 4 -1. + <_>0 16 12 4 2. + 0 + 0.1070580035448074 + 0.1897229999303818 + -0.5123620033264160 + <_> + + <_> + + + + <_>6 20 12 3 -1. + <_>12 20 6 3 2. + 0 + -0.0405250005424023 + 0.7061499953269959 + -0.1780329942703247 + <_> + + <_> + + + + <_>18 12 6 12 -1. + <_>21 12 3 6 2. + <_>18 18 3 6 2. + 0 + 0.0319689996540546 + 0.0681499987840652 + 0.6873310208320618 + <_> + + <_> + + + + <_>0 12 6 12 -1. + <_>0 12 3 6 2. + <_>3 18 3 6 2. + 0 + -0.0576170012354851 + 0.7517049908638001 + -0.1576499938964844 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + 0.0135939996689558 + 0.1941190063953400 + -0.2456189990043640 + <_> + + <_> + + + + <_>1 6 22 10 -1. + <_>1 6 11 5 2. + <_>12 11 11 5 2. + 0 + 0.0713960006833076 + -0.0468810014426708 + -0.8819829821586609 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + -0.0148959998041391 + -0.4453240036964417 + 0.1767989993095398 + <_> + + <_> + + + + <_>0 18 18 2 -1. + <_>0 19 18 1 2. + 0 + -0.0100260004401207 + 0.6512269973754883 + -0.1670999974012375 + <_> + + <_> + + + + <_>3 15 19 3 -1. + <_>3 16 19 1 3. + 0 + 3.7589999847114086e-003 + -0.0583010017871857 + 0.3448329865932465 + <_> + + <_> + + + + <_>0 13 18 3 -1. + <_>0 14 18 1 3. + 0 + 0.0162630006670952 + -0.1558150053024292 + 0.8643270134925842 + <_> + + <_> + + + + <_>15 17 9 6 -1. + <_>15 19 9 2 3. + 0 + -0.0401760004460812 + -0.6102859973907471 + 0.1179639995098114 + <_> + + <_> + + + + <_>0 17 9 6 -1. + <_>0 19 9 2 3. + 0 + 0.0270809996873140 + -0.0496019981801510 + -0.8999000191688538 + <_> + + <_> + + + + <_>12 17 9 6 -1. + <_>12 19 9 2 3. + 0 + 0.0524200014770031 + 0.1129719987511635 + -1.0833640098571777 + <_> + + <_> + + + + <_>3 17 9 6 -1. + <_>3 19 9 2 3. + 0 + -0.0191600006073713 + -0.7988010048866272 + -0.0340790003538132 + <_> + + <_> + + + + <_>16 2 3 20 -1. + <_>17 2 1 20 3. + 0 + -3.7730000913143158e-003 + -0.1912409961223602 + 0.2153519988059998 + <_> + + <_> + + + + <_>0 13 24 8 -1. + <_>0 17 24 4 2. + 0 + 0.0757620036602020 + -0.1342169940471649 + 1.6807060241699219 + <_> + + <_> + + + + <_>9 1 6 22 -1. + <_>12 1 3 11 2. + <_>9 12 3 11 2. + 0 + -0.0221730004996061 + 0.4860099852085114 + 3.6160000599920750e-003 + -2.9928278923034668 + 23 + -1 + diff --git a/nuget.config b/nuget.config deleted file mode 100644 index 381af68..0000000 --- a/nuget.config +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file