From 7674f213840b4b2fbede51bef7bfafd7352b0d6e Mon Sep 17 00:00:00 2001 From: shu-gong Date: Mon, 6 Jun 2022 21:46:16 +0800 Subject: [PATCH] dev upload --- CMake/FindDCMTK.cmake | 164 + CMake/FindEigen.cmake | 82 + CMake/FindFlann.cmake | 28 + CMake/FindOpenCL.cmake | 163 + CMake/MacOSXBundleInfo_cx_custom.plist.in | 40 + CMake/cxBundleUtilities.cmake | 385 + CMake/cxCatchUtilities.cmake | 74 + CMake/cxDocumentation.cmake | 59 + CMake/cxGetVersion.cmake | 309 + CMake/cxInitializeLibraries.cmake | 295 + CMake/cxInstallCustusX.cmake | 115 + CMake/cxInstallUtilities.cmake | 704 + CMake/cxPlugins.cmake | 139 + CMake/cxTestMacros.cmake | 70 + CMake/cxUtilities.cmake | 544 + CMakeGraphVizOptions.cmake | 7 + CMakeLists.txt | 110 + CMakeLists.txt.user | 1010 + License.txt | 34 + QtCreatorLicenceTemplate.txt | 24 + README.md | 28 + config/audio/Windows XP Critical Stop.wav | Bin 0 -> 39382 bytes config/audio/Windows XP Hardware Fail.wav | Bin 0 -> 36614 bytes config/audio/Windows XP Hardware Insert.wav | Bin 0 -> 36636 bytes config/audio/Windows XP Hardware Remove.wav | Bin 0 -> 36538 bytes config/audio/Windows XP Information Bar.wav | Bin 0 -> 20336 bytes config/audio/Windows XP Navigation.wav | Bin 0 -> 24204 bytes config/audio/Windows XP Print complete.wav | Bin 0 -> 43762 bytes config/audio/camera_shutter.wav | Bin 0 -> 41030 bytes config/models/man.stl | 12602 ++++++++++++ config/models/wire_phantom_cross_pts.vtk | 1344 ++ config/models/woman.stl | 15780 ++++++++++++++++ .../elastix/par/p_Affine.txt | 156 + .../elastix/par/p_BSpline.txt | 170 + .../elastix/par/p_BSpline_quick.txt | 170 + .../elastix/par/p_Rigid.txt | 156 + .../elastix/par/p_Rigid_quick.txt | 156 + .../Bronchoscopy/settings/settings.ini | 3 + .../tool/Bronchoscopy_Anser_one_needle.xml | 8 + .../tool/Bronchoscopy_Anser_two_needles.xml | 9 + .../tool/Guidewire_and_Catheter.xml | 9 + .../Laboratory/filter_scripts/cxCreateVenv.sh | 29 + .../filter_scripts/python_Airways.ini | 15 + .../python_AirwaysCenterline.ini | 15 + .../filter_scripts/python_Lungs.ini | 15 + .../filter_scripts/python_Lungs_test.ini | 15 + .../filter_scripts/python_LymphNodes.ini | 15 + .../python_MediumOrgansMediastinum.ini | 15 + .../filter_scripts/python_Nodules.ini | 15 + .../filter_scripts/python_PulmSystHeart.ini | 15 + .../python_SmallOrgansMediastinum.ini | 15 + .../filter_scripts/python_Tumors.ini | 15 + .../filter_scripts/python_VesselsInLungs.ini | 15 + .../filter_scripts/python_example.ini | 9 + .../python_liver_and_vessels.ini | 9 + .../filter_scripts/python_liversegment.ini | 9 + .../Laboratory/filter_scripts/python_test.ini | 11 + .../extractCenterlinesFAST.py | 80 + .../segmentAirwaysFAST.py | 89 + .../segmentBloodVesselsFAST.py | 83 + .../python_example/custus_utilities.py | 90 + .../scripts/python_example/example.py | 21 + .../scripts/python_example/requirements.txt | 9 + .../scripts/python_example/test.py | 35 + .../scripts/python_liversegment/README.md | 33 + .../python_liversegment/custus_utilities.py | 90 + .../python_liversegment/livermask/LICENSE.md | 25 + .../livermask/livermask.py | 233 + .../python_liversegment/requirements.txt | 41 + .../segment_liver_and_vessels_2D.py | 121 + .../segment_liver_and_vessels_3D.py | 177 + .../python_liversegment/segmentation.py | 69 + .../segmentTumors.py | 83 + .../profiles/Laboratory/settings/settings.ini | 2 + .../profiles/Laboratory/tool/LabDefault.xml | 9 + config/shaders/Texture3DOverlay.frag | 127 + config/shaders/cxOverlay2D_frag.glsl | 140 + config/shaders/raycasting_shader.frag | 285 + config/shaders/raycasting_shader.vert | 5 + config/shaders/upscale.frag | 8 + config/shaders/upscale.vert | 6 + config/tool/Laboratory/MyKonfig.xml | 10 + config/tool/Laboratory/test.xml | 7 + config/tool/ProbeCalibConfigs.xml | 4255 +++++ .../tool/ProbeCalibConfigs_specifications.pdf | Bin 0 -> 136877 bytes config/tool/TEMPLATE_configuration.xml | 17 + config/tool/TEMPLATE_tool.xml | 58 + .../Anser_Bronchoscope/AnserBronchoscope.xml | 46 + .../Anser_Bronchoscope/Bronchoscope.stl | 646 + .../Anser_Bronchoscope/Identity.cal | 6 + .../Anser_Catheter/AnserCatheter.cal | 6 + .../Anser_Catheter/AnserCatheter.xml | 46 + .../Catheter_2mm_with_Sensor_Model.stl | 5392 ++++++ .../Anser_Guidewire/AnserGuidewire.cal | 6 + .../Anser_Guidewire/AnserGuidewire.xml | 46 + .../Guidewire_1_5mm_with_Sensor_Model.stl | 4370 +++++ .../Anser_Needle1/AnserNeedle.png | Bin 0 -> 512297 bytes .../Anser_Needle1/AnserNeedle1.xml | 46 + .../Anser_Needle1/Biopsy_Needle_Model.stl | 6302 ++++++ .../Bronchoscopy/Anser_Needle1/Dummy.cal | 6 + .../Anser_Needle2/AnserNeedle2.xml | 46 + .../Bronchoscopy/Anser_Needle2/Dummy.cal | 6 + .../Anser_Pointer/AnserPointer.jpg | Bin 0 -> 3928927 bytes .../Anser_Pointer/AnserPointer.xml | 46 + .../Bronchoscopy/Anser_Pointer/Identity.cal | 6 + .../AuroraCatheter_port4.cal | 4 + .../Catheter_AURORA_port4.xml | 45 + .../Catheter_AURORA_port4/catheter_6DOF.png | Bin 0 -> 79864 bytes .../Shared/Catheter_AURORA_port4/cylinder.stl | Bin 0 -> 6484 bytes .../NDI-Pointer-8700340_POLARIS/8700340.cal | 4 + .../NDI-Pointer-8700340_POLARIS/8700340.rom | Bin 0 -> 752 bytes .../NDI-Pointer-8700340_POLARIS.png | Bin 0 -> 140619 bytes .../NDI-Pointer-8700340_POLARIS/NDI_pnt.xml | 43 + .../8700339.rom | Bin 0 -> 752 bytes .../NDI_ref_small.xml | 43 + .../AuroraPointer_port2.cal | 4 + .../Pointer_AURORA_port2.xml | 45 + .../AuroraPointer_port3.cal | 4 + .../Pointer_AURORA_port3.xml | 45 + .../Reference_AURORA_port1.xml | 43 + config/transferFunctions/presets.xml | 118 + data | 1 + doc/CMakeLists.txt | 376 + doc/cx_doxyfile.dox.in | 2332 +++ doc/cx_user_doc.qhcp.in | 14 + doc/dev_manual/cx_dev_architecture.md | 111 + doc/dev_manual/cx_dev_build_instructions.md | 167 + doc/dev_manual/cx_dev_code_style.md | 129 + .../cx_dev_customize_applications.md | 87 + doc/dev_manual/cx_dev_group_definitions.h | 81 + doc/dev_manual/cx_dev_group_resource.h | 228 + doc/dev_manual/cx_dev_main_page.md | 25 + doc/dev_manual/cx_dev_superbuild.md | 36 + doc/doxy_footer_empty.html | 12 + doc/doxy_header_empty.html | 27 + doc/images/ACS_slice_planes.png | Bin 0 -> 85930 bytes doc/images/LayoutExample.dia | Bin 0 -> 1297 bytes doc/images/LayoutExample.png | Bin 0 -> 7190 bytes doc/images/OpenIGTLinkServer_pipeline.dia | Bin 0 -> 1418 bytes doc/images/OpenIGTLinkServer_pipeline.png | Bin 0 -> 6664 bytes doc/images/PolarisTool.jpg | Bin 0 -> 15554 bytes doc/images/center_image.png | Bin 0 -> 3777 bytes doc/images/configure_tracking.png | Bin 0 -> 70829 bytes doc/images/coordinateSystems.png | Bin 0 -> 121747 bytes doc/images/coordinateSystemsTools.png | Bin 0 -> 65642 bytes doc/images/cxArchitecture_Plugin_Examples.dia | Bin 0 -> 2106 bytes doc/images/cxArchitecture_Plugin_Examples.png | Bin 0 -> 10767 bytes doc/images/cxArchitecture_application.dia | Bin 0 -> 2354 bytes doc/images/cxArchitecture_application.png | Bin 0 -> 20201 bytes doc/images/cxArchitecture_rtstream.dia | Bin 0 -> 3360 bytes doc/images/cxArchitecture_rtstream.png | Bin 0 -> 28440 bytes doc/images/cxArchitecture_top_new.dia | Bin 0 -> 2356 bytes doc/images/cxArchitecture_top_new.png | Bin 0 -> 17111 bytes doc/images/cxArchitecture_tracking.dia | Bin 0 -> 3756 bytes doc/images/cxArchitecture_tracking.png | Bin 0 -> 26490 bytes doc/images/cxArchitecture_view_layout.dia | Bin 0 -> 1796 bytes doc/images/cxArchitecture_view_layout.png | Bin 0 -> 5662 bytes doc/images/cxArchitecture_visualization.dia | Bin 0 -> 3775 bytes doc/images/cxArchitecture_visualization.png | Bin 0 -> 43358 bytes doc/images/cx_coordinate_systems.pptx | Bin 0 -> 55154 bytes .../cx_coordinate_systems/cx_coords_all.png | Bin 0 -> 34761 bytes .../cx_coords_overview.png | Bin 0 -> 11823 bytes .../cx_coords_us_probe.png | Bin 0 -> 18983 bytes .../cx_coords_us_probe_image.png | Bin 0 -> 98218 bytes .../cx_coords_us_probe_linear.png | Bin 0 -> 8988 bytes .../cx_coords_us_probe_sector.png | Bin 0 -> 21215 bytes doc/images/cx_operating_table.png | Bin 0 -> 276801 bytes doc/images/cx_us_acq_lab.png | Bin 0 -> 239610 bytes doc/images/cx_us_acq_reconstruct.png | Bin 0 -> 107209 bytes doc/images/cx_us_acq_reconstruct_widget.png | Bin 0 -> 113612 bytes doc/images/cx_us_acq_running.png | Bin 0 -> 102634 bytes doc/images/cx_us_acq_start.png | Bin 0 -> 105359 bytes doc/images/cx_us_probe_streaming.png | Bin 0 -> 20636 bytes doc/images/image_registration_1.png | Bin 0 -> 161397 bytes doc/images/mainwindow.png | Bin 0 -> 139612 bytes doc/images/metastase_mr_us_small.png | Bin 0 -> 242782 bytes doc/images/polaris_tool_small.png | Bin 0 -> 34663 bytes doc/images/sscArchitecture_data.dia | Bin 0 -> 2646 bytes doc/images/sscArchitecture_data.png | Bin 0 -> 16128 bytes doc/images/sscArchitecture_slice.dia | Bin 0 -> 2706 bytes doc/images/sscArchitecture_slice.png | Bin 0 -> 17939 bytes doc/images/sscArchitecture_tool.dia | Bin 0 -> 2412 bytes doc/images/sscArchitecture_tool.png | Bin 0 -> 11529 bytes doc/images/sscArchitecture_tracking.dia | Bin 0 -> 1639 bytes doc/images/sscArchitecture_tracking.png | Bin 0 -> 7557 bytes doc/images/ssc_coordinate_systems.dia | Bin 0 -> 2059 bytes doc/images/ssc_coordinate_systems.png | Bin 0 -> 9341 bytes doc/images/ssc_coords_data.dia | Bin 0 -> 2075 bytes doc/images/ssc_coords_data.png | Bin 0 -> 13632 bytes doc/images/tracking_simple.dia | Bin 0 -> 2298 bytes doc/images/tracking_simple.png | Bin 0 -> 6109 bytes .../tracking_tool_buttons_configured.png | Bin 0 -> 4787 bytes doc/images/us_coordinate_systems.png | Bin 0 -> 13399 bytes doc/images/us_coordinate_systems.pptx | Bin 0 -> 45359 bytes doc/images/us_probe.png | Bin 0 -> 37011 bytes doc/images/videoservice_simple.dia | Bin 0 -> 2021 bytes doc/images/videoservice_simple.png | Bin 0 -> 11210 bytes doc/images/volume_properties_widget.png | Bin 0 -> 121330 bytes doc/images/workflow_steps.png | Bin 0 -> 5869 bytes doc/images/workflow_steps_small.png | Bin 0 -> 59983 bytes doc/images/workflow_store.png | Bin 0 -> 2343 bytes doc/release_notes/Release_notes.pdf | Bin 0 -> 67239 bytes .../cx_dev_coordinate_systems.md | 115 + doc/shared_manual/cx_external_libraries.md | 25 + doc/shared_manual/cx_license.md | 37 + doc/shared_manual/cx_us_probe_definition.md | 85 + doc/shared_manual/cx_user_doc_plugins.md.in | 27 + .../cx_user_supported_platforms.md | 30 + .../features/cx_user_definitions.md | 17 + .../features/cx_user_doc_feature_overview.md | 96 + .../cx_user_doc_widgets_algorithms.md | 11 + .../features/cx_user_doc_widgets_browsing.md | 31 + .../cx_user_doc_widgets_properties.md | 135 + .../features/cx_user_doc_widgets_utility.md | 92 + .../features/cx_user_group_definitions.h | 54 + .../installation/cx_probe_setup.md | 46 + .../installation/cx_tracking_setup.md | 96 + .../installation/cx_user_installation.md | 34 + .../installation/cx_user_ndi_install.md | 44 + .../installation/cx_video_setup.md | 9 + .../cx_safety_requirements_for_use.md | 25 + doc/user_manual/cx_sintef_organization.md | 11 + doc/user_manual/cx_user_doc_main_page.md | 49 + doc/user_manual/tutorial/cx_user_tutorial.md | 29 + ..._user_tutorial_customize_user_interface.md | 58 + .../tutorial/cx_user_tutorial_dicom_import.md | 22 + ...er_tutorial_image_landmark_registration.md | 46 + ..._tutorial_patient_landmark_registration.md | 16 + .../tutorial/cx_user_tutorial_tracking.md | 44 + ...cx_user_tutorial_ultrasound_acquisition.md | 61 + .../cx_user_tutorial_video_streaming.md | 36 + .../tutorial/cx_user_tutorial_volumes.md | 65 + install/cx/__init__.py | 0 install/cx/__init__.pyc | Bin 0 -> 132 bytes .../cx/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 136 bytes install/cx/build/__init__.py | 0 install/cx/build/__init__.pyc | Bin 0 -> 138 bytes .../build/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 142 bytes install/cx/build/cxComponentAssembly.py | 129 + install/cx/build/cxComponentAssembly.pyc | Bin 0 -> 4749 bytes install/cx/build/cxComponents.py | 751 + install/cx/build/cxComponents.pyc | Bin 0 -> 45356 bytes install/cx/build/cxCustusXBuilder.py | 358 + install/cx/build/cxCustusXInstaller.py | 355 + install/cx/build/cxCustusXTestInstallation.py | 160 + install/cx/build/cxInstallData.py | 319 + install/cx/build/cxInstallData.pyc | Bin 0 -> 14608 bytes install/cx/build/cxTestRunner.py | 245 + install/cx/script/__init__.py | 0 install/cx/script/__init__.pyc | Bin 0 -> 139 bytes install/cx/script/cxBuildScript.py | 78 + install/cx/script/cxBuildScript.pyc | Bin 0 -> 3258 bytes install/cx/script/cxInstallScript.py | 125 + install/cx/script/cxInstallScript.pyc | Bin 0 -> 5406 bytes install/cx/script/cxJenkinsBuildScriptBase.py | 193 + .../cxJenkinsBuildScript_JobDefinitions.py | 187 + .../cx/script/cxJenkinsMasterBuildScript.py | 126 + install/cx/utils/__init__.py | 0 install/cx/utils/__init__.pyc | Bin 0 -> 138 bytes install/cx/utils/ctest2junit.xsl | 121 + install/cx/utils/cxArgParse.py | 27 + install/cx/utils/cxArgParse.pyc | Bin 0 -> 1028 bytes .../cx/utils/cxCatchConsoleNameListParser.py | 202 + install/cx/utils/cxClean_sloccount.py | 42 + install/cx/utils/cxConvertCTest2JUnit.py | 70 + install/cx/utils/cxCppBuilder.py | 236 + install/cx/utils/cxCppBuilder.pyc | Bin 0 -> 10569 bytes install/cx/utils/cxPrintFormatter.py | 46 + install/cx/utils/cxPrintFormatter.pyc | Bin 0 -> 1920 bytes install/cx/utils/cxRepoHandler.py | 183 + install/cx/utils/cxRepoHandler.pyc | Bin 0 -> 7952 bytes install/cx/utils/cxSSH.py | 178 + install/cx/utils/cxSSH.pyc | Bin 0 -> 4734 bytes install/cx/utils/cxShell.py | 224 + install/cx/utils/cxShell.pyc | Bin 0 -> 9294 bytes install/cx/utils/cxShellCommand.py | 130 + install/cx/utils/cxShellCommand.pyc | Bin 0 -> 6177 bytes install/cx/utils/cxUtilities.py | 201 + install/cx/utils/cxUtilities.pyc | Bin 0 -> 5812 bytes install/cxGitCommit.py | 40 + install/cxGitUtilities.py | 214 + install/cxInstaller.py | 25 + install/cxJenkinsMasterBuild.py | 23 + install/cxJenkins_job_step.py | 23 + install/cxRunTests.py | 90 + install/install_text/install_readme.rtf | 17 + install/install_text/install_welcome.txt | 3 + .../platforms/ubuntu/ubuntu2004_packages.sh | 100 + install/platforms/ubuntu/ubuntu_nvidia.sh | 31 + install/platforms/ubuntu/ubuntu_packages.sh | 72 + install/platforms/windows/Setup/Config.ps1 | 67 + install/platforms/windows/Setup/GetTools.ps1 | 657 + install/platforms/windows/Setup/README.txt | 92 + install/platforms/windows/Setup/Setup.bat | 27 + install/platforms/windows/Setup/Setup.psm1 | 15 + install/platforms/windows/Setup/Tool.ps1 | 296 + install/platforms/windows/Setup/Utilities.ps1 | 956 + .../windows/WindowsSetupAndBuild.txt | 8 + install/run_python | 22 + install/run_python.bat | 28 + source/CMakeLists.txt | 47 + source/ThirdParty/CMakeLists.txt | 5 + .../ThirdParty/VTKMultiVolume/CMakeLists.txt | 124 + ...UMultiVolumeRayCastMapper_CompositeFS.glsl | 281 + ...iVolumeRayCastMapper_FourComponentsFS.glsl | 33 + ...GPUMultiVolumeRayCastMapper_NoShadeFS.glsl | 42 + ...ltiVolumeRayCastMapper_OneComponentFS.glsl | 57 + ...tkGPUMultiVolumeRayCastMapper_ShadeFS.glsl | 269 + source/ThirdParty/VTKMultiVolume/README | 3 + .../ThirdParty/VTKMultiVolume/run_example1.sh | 3 + .../ThirdParty/VTKMultiVolume/run_example2.sh | 2 + .../vtkGPUMultiVolumeRayCastMapper.cxx | 1120 ++ .../vtkGPUMultiVolumeRayCastMapper.h | 379 + .../vtkGPUMultiVolumeRenderDemo.cxx | 871 + .../VTKMultiVolume/vtkMultiVolumePicker.cxx | 246 + .../VTKMultiVolume/vtkMultiVolumePicker.h | 73 + .../vtkOpenGLGPUMultiVolumeRayCastMapper.cxx | 8494 +++++++++ .../vtkOpenGLGPUMultiVolumeRayCastMapper.h | 524 + source/ThirdParty/catch/LICENSE_1_0.txt | 23 + source/ThirdParty/catch/catch.hpp | 7856 ++++++++ source/ThirdParty/iir1/AUTHORS | 2 + source/ThirdParty/iir1/COPYING | 19 + source/ThirdParty/iir1/ChangeLog | 0 source/ThirdParty/iir1/Documentation.txt | 174 + source/ThirdParty/iir1/Doxyfile | 1551 ++ source/ThirdParty/iir1/Iir.h | 60 + source/ThirdParty/iir1/Makefile.am | 64 + source/ThirdParty/iir1/NEWS | 0 source/ThirdParty/iir1/README | 38 + source/ThirdParty/iir1/autogen.sh | 4 + source/ThirdParty/iir1/config.h.in | 56 + source/ThirdParty/iir1/configure.ac | 15 + source/ThirdParty/iir1/demo/iirdemo.cpp | 72 + source/ThirdParty/iir1/iir.pc | 11 + source/ThirdParty/iir1/iir.pc.in | 11 + source/ThirdParty/iir1/iir/Bessel.cpp | 224 + source/ThirdParty/iir1/iir/Bessel.h | 254 + source/ThirdParty/iir1/iir/Biquad.cpp | 236 + source/ThirdParty/iir1/iir/Biquad.h | 239 + source/ThirdParty/iir1/iir/Butterworth.cpp | 212 + source/ThirdParty/iir1/iir/Butterworth.h | 185 + source/ThirdParty/iir1/iir/Cascade.cpp | 123 + source/ThirdParty/iir1/iir/Cascade.h | 150 + source/ThirdParty/iir1/iir/ChebyshevI.cpp | 272 + source/ThirdParty/iir1/iir/ChebyshevI.h | 196 + source/ThirdParty/iir1/iir/ChebyshevII.cpp | 271 + source/ThirdParty/iir1/iir/ChebyshevII.h | 197 + source/ThirdParty/iir1/iir/Common.h | 67 + source/ThirdParty/iir1/iir/Custom.cpp | 66 + source/ThirdParty/iir1/iir/Custom.h | 76 + source/ThirdParty/iir1/iir/Elliptic.cpp | 384 + source/ThirdParty/iir1/iir/Elliptic.h | 197 + source/ThirdParty/iir1/iir/Layout.h | 170 + source/ThirdParty/iir1/iir/Legendre.cpp | 344 + source/ThirdParty/iir1/iir/Legendre.h | 274 + source/ThirdParty/iir1/iir/MathSupplement.h | 119 + source/ThirdParty/iir1/iir/PoleFilter.cpp | 338 + source/ThirdParty/iir1/iir/PoleFilter.h | 218 + source/ThirdParty/iir1/iir/RBJ.cpp | 207 + source/ThirdParty/iir1/iir/RBJ.h | 129 + source/ThirdParty/iir1/iir/RootFinder.cpp | 187 + source/ThirdParty/iir1/iir/RootFinder.h | 129 + source/ThirdParty/iir1/iir/State.cpp | 43 + source/ThirdParty/iir1/iir/State.h | 253 + source/ThirdParty/iir1/iir/Types.h | 139 + source/ThirdParty/iir1/iir/Utilities.h | 780 + source/ThirdParty/iir1/iir/config.h | 80 + source/ThirdParty/iir1/iirconfig.h.in | 0 .../libQtSignalAdapters/ConnectionFactories.h | 165 + .../ThirdParty/libQtSignalAdapters/Doxyfile | 1473 ++ .../ThirdParty/libQtSignalAdapters/Qt2Func.h | 11 + .../ThirdParty/libQtSignalAdapters/Qt2Func0.h | 198 + .../ThirdParty/libQtSignalAdapters/Qt2Func1.h | 119 + .../ThirdParty/libQtSignalAdapters/Qt2Func2.h | 121 + .../ThirdParty/libQtSignalAdapters/Qt2Func3.h | 123 + .../ThirdParty/libQtSignalAdapters/Qt2Func4.h | 125 + .../ThirdParty/libQtSignalAdapters/Qt2Func5.h | 128 + .../ThirdParty/libQtSignalAdapters/QtConn.h | 43 + .../libQtSignalAdapters/QtConnDefault.h | 59 + .../TestQt2Func/SimpleGUI.ui | 31 + .../libQtSignalAdapters/TestQt2Func/main.cc | 104 + source/ThirdParty/qxt/README.txt | 1 + source/ThirdParty/qxt/qxtglobal.h | 214 + source/ThirdParty/qxt/qxtspanslider.cpp | 750 + source/ThirdParty/qxt/qxtspanslider.h | 105 + source/ThirdParty/qxt/qxtspanslider_p.h | 81 + source/apps/CMakeLists.txt | 14 + source/apps/CustusX/CMakeLists.txt | 70 + source/apps/CustusX/CustusX.rc | 1 + source/apps/CustusX/CustusX/.gitignore | 7 + source/apps/CustusX/cxMain.cpp | 45 + source/apps/LogConsole/CMakeLists.txt | 59 + source/apps/LogConsole/cxLogConsole.cpp | 106 + source/apps/LogConsole/cxLogConsole.h | 46 + source/apps/LogConsole/main.cpp | 36 + source/apps/MemoryTester/CMakeLists.txt | 29 + source/apps/MemoryTester/cxMemoryTester.cpp | 238 + source/apps/MemoryTester/cxMemoryTester.h | 78 + .../apps/MemoryTester/cxMemoryTesterMain.cpp | 33 + .../MemoryTester/images/application-exit.png | Bin 0 -> 1489 bytes source/apps/MemoryTester/images/effect.png | Bin 0 -> 1805 bytes source/apps/MemoryTester/images/exec.png | Bin 0 -> 1308 bytes source/apps/MemoryTester/images/go-home.png | Bin 0 -> 972 bytes source/apps/MemoryTester/resource.qrc | 9 + .../apps/OpenGLTestApplication/CMakeLists.txt | 41 + .../OpenGLTestApplication.cxx | 9 + .../OpenGLTestApplication/shadercallback.cpp | 207 + .../OpenGLTestApplication/shadercallback.h | 181 + source/apps/OpenGLTestApplication/texture.cpp | 2 + source/apps/OpenGLTestApplication/texture.h | 54 + .../apps/OpenGLTestApplication/vtkfixture.cpp | 354 + .../apps/OpenGLTestApplication/vtkfixture.h | 28 + source/apps/OpenIGTLinkServer/CMakeLists.txt | 19 + source/apps/OpenIGTLinkServer/main.cpp | 139 + source/apps/PositionFileReader/CMakeLists.txt | 8 + source/apps/PositionFileReader/main.cpp | 140 + source/apps/insertplanner/CMakeLists.txt | 34 + .../apps/insertplanner/build/CMakeCache.txt | 309 + .../CMakeFiles/3.5.1/CMakeCCompiler.cmake | 67 + .../CMakeFiles/3.5.1/CMakeCXXCompiler.cmake | 68 + .../3.5.1/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 8640 bytes .../3.5.1/CMakeDetermineCompilerABI_CXX.bin | Bin 0 -> 8656 bytes .../build/CMakeFiles/3.5.1/CMakeSystem.cmake | 15 + .../3.5.1/CompilerIdC/CMakeCCompilerId.c | 544 + .../build/CMakeFiles/3.5.1/CompilerIdC/a.out | Bin 0 -> 8800 bytes .../CompilerIdCXX/CMakeCXXCompilerId.cpp | 533 + .../CMakeFiles/3.5.1/CompilerIdCXX/a.out | Bin 0 -> 8808 bytes .../build/CMakeFiles/CMakeOutput.log | 554 + .../build/CMakeFiles/cmake.check_cache | 1 + .../build/CMakeFiles/feature_tests.bin | Bin 0 -> 12696 bytes .../build/CMakeFiles/feature_tests.c | 34 + .../build/CMakeFiles/feature_tests.cxx | 405 + .../apps/insertplanner/cmake/FindEigen3.cmake | 97 + .../apps/insertplanner/cmake/FindFlann.cmake | 28 + .../apps/insertplanner/cmake/VTKConfig.cmake | 106 + .../insertplanner/include/StateSpace/SE3.hpp | 417 + .../insertplanner/include/StateSpace/SO3.hpp | 357 + .../include/StateSpace/StateSpace.hpp | 84 + .../include/StateSpace/insertSpace.hpp | 93 + .../insertplanner/include/StateSpace/rn.hpp | 163 + .../include/dec/vtkForwardDeclarations.h | 43 + .../include/macros/class_forward.h | 126 + .../include/planner/InsertPlanner.hpp | 145 + .../insertplanner/include/planner/Planner.hpp | 247 + .../insertplanner/include/planner/RRT.hpp | 295 + .../insertplanner/include/planner/Tree.hpp | 135 + source/apps/insertplanner/src/main.cpp | 36 + .../insertplanner/test/insert_state_test.cpp | 47 + source/apps/tests/CMakeLists.txt | 20 + .../CorrectlyRenderTranslucentGeometry.cxx | 301 + source/gui/CMakeLists.txt | 165 + source/gui/CMakeLists.txt.autosave | 165 + source/gui/browser/cxControllableSplitter.cpp | 194 + source/gui/browser/cxControllableSplitter.h | 65 + source/gui/browser/cxDataTreeNode.cpp | 205 + source/gui/browser/cxDataTreeNode.h | 54 + source/gui/browser/cxGroupTreeNode.cpp | 65 + source/gui/browser/cxGroupTreeNode.h | 43 + .../gui/browser/cxReplacableContentWidget.cpp | 2 + .../gui/browser/cxReplacableContentWidget.h | 80 + source/gui/browser/cxShowDataTreeNode.cpp | 179 + source/gui/browser/cxShowDataTreeNode.h | 93 + source/gui/browser/cxSpaceTreeNode.cpp | 95 + source/gui/browser/cxSpaceTreeNode.h | 43 + source/gui/browser/cxToolTreeNode.cpp | 123 + source/gui/browser/cxToolTreeNode.h | 47 + source/gui/browser/cxTopTreeNode.cpp | 57 + source/gui/browser/cxTopTreeNode.h | 41 + source/gui/browser/cxTreeItemModel.cpp | 378 + source/gui/browser/cxTreeItemModel.h | 87 + source/gui/browser/cxTreeNode.cpp | 73 + source/gui/browser/cxTreeNode.h | 111 + source/gui/browser/cxTreeNodeImpl.cpp | 123 + source/gui/browser/cxTreeNodeImpl.h | 62 + source/gui/browser/cxTreeRepository.cpp | 306 + source/gui/browser/cxTreeRepository.h | 127 + .../browser/cxViewGroupPropertiesWidget.cpp | 265 + .../gui/browser/cxViewGroupPropertiesWidget.h | 81 + source/gui/browser/cxViewGroupTreeNode.cpp | 84 + source/gui/browser/cxViewGroupTreeNode.h | 47 + .../browser/cxViewServicePropertiesWidget.cpp | 7 + .../browser/cxViewServicePropertiesWidget.h | 11 + source/gui/browser/cxViewServiceTreeNode.cpp | 117 + source/gui/browser/cxViewServiceTreeNode.h | 47 + .../customizedWidgets/cxCustomizedWidget.cpp | 53 + .../customizedWidgets/cxCustomizedWidget.h | 53 + source/gui/cxLayoutInteractor.cpp | 248 + source/gui/cxLayoutInteractor.h | 74 + source/gui/cxMainWindow.cpp | 615 + source/gui/cxMainWindow.h | 166 + source/gui/cxMainWindowActions.cpp | 502 + source/gui/cxMainWindowActions.h | 103 + source/gui/cxMainWindowApplicationComponent.h | 58 + source/gui/cxResources.h | 15 + source/gui/cxResources.qrc | 120 + source/gui/cxSecondaryMainWindow.cpp | 45 + source/gui/cxSecondaryMainWindow.h | 43 + source/gui/cxSecondaryViewLayoutWindow.cpp | 108 + source/gui/cxSecondaryViewLayoutWindow.h | 55 + source/gui/cxStyleSheet.ss | 97 + source/gui/dataWidgets/cxClipperWidget.cpp | 342 + source/gui/dataWidgets/cxClipperWidget.h | 83 + source/gui/dataWidgets/cxClippingWidget.cpp | 119 + source/gui/dataWidgets/cxClippingWidget.h | 67 + source/gui/dataWidgets/cxColorWidget.cpp | 30 + source/gui/dataWidgets/cxColorWidget.h | 47 + source/gui/dataWidgets/cxCroppingWidget.cpp | 145 + source/gui/dataWidgets/cxCroppingWidget.h | 72 + .../dataWidgets/cxDataViewSelectionWidget.cpp | 539 + .../dataWidgets/cxDataViewSelectionWidget.h | 134 + source/gui/dataWidgets/cxEraserWidget.cpp | 335 + source/gui/dataWidgets/cxEraserWidget.h | 90 + source/gui/dataWidgets/cxExportDataDialog.cpp | 80 + source/gui/dataWidgets/cxExportDataDialog.h | 51 + .../dataWidgets/cxImagePropertiesWidget.cpp | 69 + .../gui/dataWidgets/cxImagePropertiesWidget.h | 43 + source/gui/dataWidgets/cxImportDataDialog.cpp | 269 + source/gui/dataWidgets/cxImportDataDialog.h | 74 + source/gui/dataWidgets/cxInfoWidget.cpp | 73 + source/gui/dataWidgets/cxInfoWidget.h | 55 + .../dataWidgets/cxManageClippersWidget.cpp | 131 + .../gui/dataWidgets/cxManageClippersWidget.h | 74 + source/gui/dataWidgets/cxMeshGlyphsWidget.cpp | 116 + source/gui/dataWidgets/cxMeshGlyphsWidget.h | 72 + source/gui/dataWidgets/cxMeshInfoWidget.cpp | 197 + source/gui/dataWidgets/cxMeshInfoWidget.h | 102 + .../dataWidgets/cxMeshPropertiesWidget.cpp | 88 + .../gui/dataWidgets/cxMeshPropertiesWidget.h | 75 + .../gui/dataWidgets/cxMeshTextureWidget.cpp | 73 + source/gui/dataWidgets/cxMeshTextureWidget.h | 50 + source/gui/dataWidgets/cxOverlayWidget.cpp | 31 + source/gui/dataWidgets/cxOverlayWidget.h | 44 + .../cxSelectClippersForDataWidget.cpp | 189 + .../cxSelectClippersForDataWidget.h | 76 + source/gui/dataWidgets/cxShadingWidget.cpp | 136 + source/gui/dataWidgets/cxShadingWidget.h | 86 + .../dataWidgets/cxSlicePropertiesWidget.cpp | 41 + .../gui/dataWidgets/cxSlicePropertiesWidget.h | 55 + .../dataWidgets/cxStreamPropertiesWidget.cpp | 78 + .../dataWidgets/cxStreamPropertiesWidget.h | 48 + .../cxTransferFunction2DColorWidget.cpp | 79 + .../cxTransferFunction2DColorWidget.h | 61 + .../cxTransferFunction2DOpacityWidget.cpp | 72 + .../cxTransferFunction2DOpacityWidget.h | 58 + .../cxTransferFunctionAlphaWidget.cpp | 406 + .../cxTransferFunctionAlphaWidget.h | 117 + .../cxTransferFunctionColorWidget.cpp | 417 + .../cxTransferFunctionColorWidget.h | 124 + .../cxTransferFunctionPresetWidget.cpp | 150 + .../cxTransferFunctionPresetWidget.h | 65 + .../dataWidgets/cxTransferFunctionWidget.cpp | 294 + .../dataWidgets/cxTransferFunctionWidget.h | 182 + source/gui/dataWidgets/cxVolumeInfoWidget.cpp | 75 + source/gui/dataWidgets/cxVolumeInfoWidget.h | 62 + .../dataWidgets/cxVolumePropertiesWidget.cpp | 70 + .../dataWidgets/cxVolumePropertiesWidget.h | 58 + .../cx_user_doc_widgets_mesh_properties.md | 67 + source/gui/doc/preferences.md | 85 + .../gui/filterWidgets/cxFilterSetupWidget.cpp | 181 + .../gui/filterWidgets/cxFilterSetupWidget.h | 72 + source/gui/filterWidgets/cxFiltersWidget.cpp | 256 + source/gui/filterWidgets/cxFiltersWidget.h | 87 + source/gui/icons/CustusX/CustusX.icns | Bin 0 -> 88849 bytes source/gui/icons/CustusX/CustusX.ico | Bin 0 -> 99678 bytes source/gui/icons/CustusX/CustusX.png | Bin 0 -> 48761 bytes source/gui/icons/CustusX/CustusX_128x128.png | Bin 0 -> 4869 bytes source/gui/icons/CustusX/CustusX_16x16.png | Bin 0 -> 523 bytes source/gui/icons/CustusX/CustusX_256x256.png | Bin 0 -> 9590 bytes source/gui/icons/CustusX/CustusX_32x32.png | Bin 0 -> 1097 bytes source/gui/icons/CustusX/CustusX_64x64.png | Bin 0 -> 2071 bytes source/gui/icons/CustusX/CustusX_full.png | Bin 0 -> 36190 bytes source/gui/icons/CustusX/CustusX_old.png | Bin 0 -> 20501 bytes source/gui/icons/Video-icon_gray.png | Bin 0 -> 2303 bytes source/gui/icons/Video-icon_green.png | Bin 0 -> 1981 bytes source/gui/icons/Video-icon_red.png | Bin 0 -> 1863 bytes source/gui/icons/camera-at.png | Bin 0 -> 3874 bytes source/gui/icons/camera-f.png | Bin 0 -> 3493 bytes source/gui/icons/camera-n.png | Bin 0 -> 3631 bytes source/gui/icons/camera-o.png | Bin 0 -> 3809 bytes source/gui/icons/camera-t.png | Bin 0 -> 3478 bytes source/gui/icons/camera-u.png | Bin 0 -> 3609 bytes source/gui/icons/camera_view_A.png | Bin 0 -> 1925 bytes source/gui/icons/camera_view_I.png | Bin 0 -> 1593 bytes source/gui/icons/camera_view_L.png | Bin 0 -> 1551 bytes source/gui/icons/camera_view_O.png | Bin 0 -> 1948 bytes source/gui/icons/camera_view_P.png | Bin 0 -> 1690 bytes source/gui/icons/camera_view_R.png | Bin 0 -> 1757 bytes source/gui/icons/camera_view_S.png | Bin 0 -> 1930 bytes source/gui/icons/center_image.png | Bin 0 -> 3777 bytes source/gui/icons/center_tool.png | Bin 0 -> 2599 bytes source/gui/icons/copy.png | Bin 0 -> 1338 bytes source/gui/icons/cut.png | Bin 0 -> 1323 bytes source/gui/icons/design/camera.xcf | Bin 0 -> 6642 bytes source/gui/icons/design/camera2.xcf | Bin 0 -> 6151 bytes source/gui/icons/design/camera50x50.jpg | Bin 0 -> 1285 bytes source/gui/icons/design/camera_view.xcf | Bin 0 -> 6822 bytes source/gui/icons/design/center_image.xcf | Bin 0 -> 17491 bytes source/gui/icons/design/dimensions.xcf | Bin 0 -> 33225 bytes source/gui/icons/design/edit-delete-6.png | Bin 0 -> 4916 bytes source/gui/icons/design/go-down-5.png | Bin 0 -> 3488 bytes source/gui/icons/design/go-previous-5.png | Bin 0 -> 3820 bytes source/gui/icons/design/go-up-5.png | Bin 0 -> 3639 bytes source/gui/icons/design/images.jpg | Bin 0 -> 7360 bytes source/gui/icons/design/list-add-7.png | Bin 0 -> 2455 bytes source/gui/icons/design/matrix_inverse.xcf | Bin 0 -> 34206 bytes source/gui/icons/design/metrics.xcf | Bin 0 -> 26370 bytes source/gui/icons/design/patient.xcf | Bin 0 -> 21427 bytes source/gui/icons/design/point_picker.xcf | Bin 0 -> 25455 bytes source/gui/icons/design/polaris.xcf | Bin 0 -> 9354 bytes source/gui/icons/design/streaming.xcf | Bin 0 -> 10651 bytes .../gui/icons/design/vicra-table-wh-sm4.jpg | Bin 0 -> 30210 bytes source/gui/icons/design/volume.xcf | Bin 0 -> 32340 bytes .../gui/icons/design/workflow_state_base.xcf | Bin 0 -> 15682 bytes .../design/workflow_state_navigation2.xcf | Bin 0 -> 548870 bytes .../design/workflow_state_patient_data2.png | Bin 0 -> 3887 bytes .../design/workflow_state_patient_data2.xcf | Bin 0 -> 11774 bytes source/gui/icons/eye.png | Bin 0 -> 3440 bytes source/gui/icons/matrix_inverse.png | Bin 0 -> 3656 bytes .../gui/icons/message_levels/circle_blue.png | Bin 0 -> 5860 bytes .../gui/icons/message_levels/circle_red.png | Bin 0 -> 5724 bytes .../gui/icons/message_levels/dialog-clean.png | Bin 0 -> 5134 bytes .../message_levels/dialog-information-4.png | Bin 0 -> 4853 bytes .../message_levels/dialog-warning-panel.png | Bin 0 -> 4703 bytes .../gui/icons/message_levels/script-error.png | Bin 0 -> 5592 bytes .../gui/icons/message_levels/water_drop_1.png | Bin 0 -> 3903 bytes .../icons/message_levels/window-close-3.png | Bin 0 -> 6252 bytes source/gui/icons/metric.png | Bin 0 -> 3143 bytes source/gui/icons/metric_angle.png | Bin 0 -> 1230 bytes source/gui/icons/metric_custom.png | Bin 0 -> 1617 bytes source/gui/icons/metric_distance.png | Bin 0 -> 718 bytes source/gui/icons/metric_frame.png | Bin 0 -> 1144 bytes source/gui/icons/metric_plane.png | Bin 0 -> 1561 bytes source/gui/icons/metric_point.png | Bin 0 -> 714 bytes source/gui/icons/metric_reference.png | Bin 0 -> 644 bytes source/gui/icons/metric_remove.png | Bin 0 -> 4494 bytes source/gui/icons/metric_sphere.png | Bin 0 -> 2091 bytes source/gui/icons/metric_tool.png | Bin 0 -> 1448 bytes source/gui/icons/metric_torus.png | Bin 0 -> 1454 bytes source/gui/icons/new.png | Bin 0 -> 852 bytes source/gui/icons/open.png | Bin 0 -> 2073 bytes source/gui/icons/open_icon_library/LICENSES | 394 + .../applications-internet.png | Bin 0 -> 6799 bytes .../open_icon_library/arrange_horizontal.png | Bin 0 -> 4864 bytes .../open_icon_library/arrange_vertical.png | Bin 0 -> 4967 bytes .../icons/open_icon_library/arrow-left-3.png | Bin 0 -> 3201 bytes .../icons/open_icon_library/arrow-right-3.png | Bin 0 -> 3238 bytes .../arrow-right-double-3.png | Bin 0 -> 4359 bytes .../icons/open_icon_library/button-green.png | Bin 0 -> 4538 bytes .../icons/open_icon_library/button-red.png | Bin 0 -> 4440 bytes .../icons/open_icon_library/dialog-close.png | Bin 0 -> 4774 bytes .../open_icon_library/document-import-2.png | Bin 0 -> 4031 bytes .../open_icon_library/document-new-8.png | Bin 0 -> 3356 bytes .../open_icon_library/document-open-7.png | Bin 0 -> 3537 bytes .../open_icon_library/document-save-5.png | Bin 0 -> 4106 bytes .../icons/open_icon_library/edit-delete-2.png | Bin 0 -> 5056 bytes .../icons/open_icon_library/edit-undo-8.png | Bin 0 -> 4233 bytes .../gui/icons/open_icon_library/eye.png.png | Bin 0 -> 4076 bytes .../gui/icons/open_icon_library/go-down-4.png | Bin 0 -> 2637 bytes .../open_icon_library/help-contents-5.png | Bin 0 -> 4971 bytes .../icons/open_icon_library/layer-lower-3.png | Bin 0 -> 1440 bytes .../icons/open_icon_library/layer-raise-3.png | Bin 0 -> 1432 bytes .../media-playback-pause-3.png | Bin 0 -> 7006 bytes .../media-playback-start-3.png | Bin 0 -> 7030 bytes .../media-playback-stop-3.png | Bin 0 -> 6168 bytes .../open_icon_library/media-playback-stop.png | Bin 0 -> 1829 bytes .../open_icon_library/media-record-3.png | Bin 0 -> 3859 bytes .../media-seek-backward-3.png | Bin 0 -> 7378 bytes .../media-seek-forward-3.png | Bin 0 -> 7331 bytes .../icons/open_icon_library/oval_green.png | Bin 0 -> 3839 bytes .../gui/icons/open_icon_library/oval_red.png | Bin 0 -> 3875 bytes .../open_icon_library/process-stop-7.png | Bin 0 -> 5430 bytes .../icons/open_icon_library/system-run-5.png | Bin 0 -> 6359 bytes .../icons/open_icon_library/tool-animator.png | Bin 0 -> 5227 bytes .../open_icon_library/view-fullscreen-4.png | Bin 0 -> 3711 bytes .../open_icon_library/view-list-tree.png | Bin 0 -> 2796 bytes .../gui/icons/open_icon_library/zoom-in-3.png | Bin 0 -> 7098 bytes .../icons/open_icon_library/zoom-out-3.png | Bin 0 -> 6878 bytes source/gui/icons/paste.png | Bin 0 -> 1645 bytes source/gui/icons/patient.png | Bin 0 -> 371909 bytes source/gui/icons/patient_clear.png | Bin 0 -> 6395 bytes source/gui/icons/patient_import.png | Bin 0 -> 5618 bytes source/gui/icons/patient_load.png | Bin 0 -> 5683 bytes source/gui/icons/patient_new.png | Bin 0 -> 5793 bytes source/gui/icons/patient_save.png | Bin 0 -> 5985 bytes source/gui/icons/point_picker.png | Bin 0 -> 2446 bytes source/gui/icons/polaris-green.png | Bin 0 -> 3129 bytes source/gui/icons/polaris-red.png | Bin 0 -> 3133 bytes source/gui/icons/polaris.png | Bin 0 -> 2698 bytes source/gui/icons/preset_2D.png | Bin 0 -> 3429 bytes source/gui/icons/preset_2D_and_3D.png | Bin 0 -> 4111 bytes source/gui/icons/preset_3D.png | Bin 0 -> 3554 bytes source/gui/icons/preset_remove.png | Bin 0 -> 4916 bytes source/gui/icons/preset_reset.png | Bin 0 -> 3438 bytes source/gui/icons/preset_save.png | Bin 0 -> 5053 bytes source/gui/icons/readme.txt | 4 + source/gui/icons/save.png | Bin 0 -> 1187 bytes source/gui/icons/screenshot-screen.png | Bin 0 -> 3793 bytes source/gui/icons/screenshot-window.png | Bin 0 -> 3850 bytes source/gui/icons/space_generic.png | Bin 0 -> 2310 bytes source/gui/icons/space_patient_reference.png | Bin 0 -> 20604 bytes source/gui/icons/space_reference.png | Bin 0 -> 36456 bytes source/gui/icons/streaming_green.png | Bin 0 -> 4948 bytes source/gui/icons/streaming_red.png | Bin 0 -> 4953 bytes source/gui/icons/surface.png | Bin 0 -> 2392 bytes source/gui/icons/tool_manual.png | Bin 0 -> 23489 bytes source/gui/icons/tool_pointer.png | Bin 0 -> 9314 bytes source/gui/icons/tool_reference.png | Bin 0 -> 15135 bytes source/gui/icons/tool_us_probe.png | Bin 0 -> 27853 bytes source/gui/icons/volume.png | Bin 0 -> 2795 bytes .../gui/icons/workflow_state_acquisition.png | Bin 0 -> 3653 bytes .../gui/icons/workflow_state_navigation.png | Bin 0 -> 3545 bytes .../gui/icons/workflow_state_patient_data.png | Bin 0 -> 3553 bytes source/gui/icons/workflow_state_planning.png | Bin 0 -> 3435 bytes source/gui/icons/workflow_state_post_op.png | Bin 0 -> 3663 bytes .../gui/icons/workflow_state_registration.png | Bin 0 -> 3748 bytes source/gui/icons/workflow_state_revert.png | Bin 0 -> 3264 bytes source/gui/icons/workflow_state_save.png | Bin 0 -> 3360 bytes source/gui/infoWidgets/cxBrowserWidget.cpp | 307 + source/gui/infoWidgets/cxBrowserWidget.h | 95 + .../gui/infoWidgets/cxDataMetricWrappers.cpp | 1154 ++ source/gui/infoWidgets/cxDataMetricWrappers.h | 338 + .../gui/infoWidgets/cxFrameMetricWrapper.cpp | 119 + source/gui/infoWidgets/cxFrameMetricWrapper.h | 54 + source/gui/infoWidgets/cxMetricManager.cpp | 539 + source/gui/infoWidgets/cxMetricManager.h | 104 + source/gui/infoWidgets/cxMetricWidget.cpp | 481 + source/gui/infoWidgets/cxMetricWidget.h | 142 + source/gui/infoWidgets/cxSamplerWidget.cpp | 143 + source/gui/infoWidgets/cxSamplerWidget.h | 63 + source/gui/infoWidgets/cxStatusBar.cpp | 262 + source/gui/infoWidgets/cxStatusBar.h | 115 + .../gui/infoWidgets/cxToolMetricWrapper.cpp | 181 + source/gui/infoWidgets/cxToolMetricWrapper.h | 60 + .../navigationWidgets/cxNavigationWidget.cpp | 58 + .../navigationWidgets/cxNavigationWidget.h | 53 + .../navigationWidgets/cxPlaybackWidget.cpp | 457 + .../gui/navigationWidgets/cxPlaybackWidget.h | 88 + .../navigationWidgets/cxTrackPadWidget.cpp | 178 + .../gui/navigationWidgets/cxTrackPadWidget.h | 82 + .../cxPluginBrowser.cpp | 356 + .../pluginFrameworkWidgets/cxPluginBrowser.h | 117 + .../cxPluginFrameworkWidget.cpp | 33 + .../cxPluginFrameworkWidget.h | 43 + .../cxPluginTableModel.cpp | 168 + .../cxPluginTableModel.h | 80 + .../gui/preferencesWidgets/cxGeneralTab.cpp | 247 + source/gui/preferencesWidgets/cxGeneralTab.h | 77 + .../cxLayoutEditorWidget.cpp | 438 + .../preferencesWidgets/cxLayoutEditorWidget.h | 118 + .../cxOperatingTableTab.cpp | 23 + .../preferencesWidgets/cxOperatingTableTab.h | 31 + .../cxOperatingTableWidget.cpp | 123 + .../cxOperatingTableWidget.h | 47 + .../preferencesWidgets/cxPreferenceTab.cpp | 196 + .../gui/preferencesWidgets/cxPreferenceTab.h | 88 + .../cxPreferencesDialog.cpp | 676 + .../preferencesWidgets/cxPreferencesDialog.h | 280 + .../cxToolConfigureWidget.cpp | 362 + .../cxToolConfigureWidget.h | 101 + .../preferencesWidgets/cxToolFilterWidget.cpp | 104 + .../preferencesWidgets/cxToolFilterWidget.h | 72 + .../preferencesWidgets/cxToolListWidget.cpp | 273 + .../gui/preferencesWidgets/cxToolListWidget.h | 132 + source/gui/properties/cxDataInterface.cpp | 665 + source/gui/properties/cxDataInterface.h | 394 + .../properties/cxShadingParamsInterfaces.cpp | 124 + .../properties/cxShadingParamsInterfaces.h | 107 + .../properties/cxStringPropertyClipPlane.cpp | 58 + .../properties/cxStringPropertyClipPlane.h | 54 + .../cxVideoConnectionWidget.cpp | 340 + .../cxVideoConnectionWidget.h | 108 + source/gui/testing/CMakeLists.txt | 68 + .../gui/testing/cxTestCustusXController.cpp | 159 + source/gui/testing/cxTestCustusXController.h | 56 + source/gui/testing/cxtestCatchBaseWidgets.cpp | 229 + source/gui/testing/cxtestClipperWidget.cpp | 465 + source/gui/testing/cxtestClippersWidget.cpp | 208 + source/gui/testing/cxtestEraserWidget.cpp | 84 + source/gui/testing/cxtestMetricManager.cpp | 28 + source/gui/testing/cxtestMetricManager.h | 28 + source/gui/testing/cxtestMetricsWidget.cpp | 333 + source/gui/testing/cxtestOpenCLAndGui.cpp | 84 + source/gui/testing/cxtestProfileChange.cpp | 52 + .../cxtestSelectClippersForDataWidget.cpp | 184 + .../testing/cxtestSessionStorageHelper.cpp | 38 + .../gui/testing/cxtestSessionStorageHelper.h | 39 + source/gui/testing/cxtestSpeed.cpp | 233 + .../cxtestTestTransferFunctionColorWidget.cpp | 48 + .../cxtestTestTransferFunctionColorWidget.h | 39 + .../testing/cxtestTestTransferFunctions.cpp | 76 + .../gui/testing/cxtestTestTransferFunctions.h | 50 + .../testing/cxtestTransferFunctionWidgets.cpp | 101 + source/gui/testing/cxtest_tc.cpp | 1 + .../gui/toolWidgets/cxToolManagerWidget.cpp | 109 + source/gui/toolWidgets/cxToolManagerWidget.h | 63 + .../toolWidgets/cxToolPropertiesWidget.cpp | 306 + .../gui/toolWidgets/cxToolPropertiesWidget.h | 107 + source/gui/utilities/cxAudioImpl.cpp | 120 + source/gui/utilities/cxAudioImpl.h | 81 + source/gui/utilities/cxClippers.cpp | 174 + source/gui/utilities/cxClippers.h | 60 + .../utilities/cxDynamicMainWindowWidgets.cpp | 296 + .../utilities/cxDynamicMainWindowWidgets.h | 77 + source/gui/utilities/cxMetricUtilities.cpp | 140 + source/gui/utilities/cxMetricUtilities.h | 43 + .../utilities/cxToolImagePreviewWidget.cpp | 37 + .../gui/utilities/cxToolImagePreviewWidget.h | 43 + source/installation/CMakeLists.txt | 25 + source/logic/CMakeLists.txt | 41 + source/logic/cxLogicManager.cpp | 314 + source/logic/cxLogicManager.h | 178 + source/logic/cxPluginFramework.cpp | 506 + source/logic/cxPluginFramework.h | 111 + source/logic/cxPluginFrameworkUtilities.cpp | 61 + source/logic/cxPluginFrameworkUtilities.h | 27 + source/logic/testing/CMakeLists.txt | 24 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + source/logic/testing/cxtestPlugins.cpp | 52 + .../logic/testing/cxtestStreamerService.cpp | 62 + source/plugins/CMakeLists.txt | 91 + .../org.custusx.acquisition/CMakeLists.txt | 107 + .../cxAcquisitionImplService.cpp | 159 + .../cxAcquisitionImplService.h | 78 + .../cxAcquisitionService.cpp | 53 + .../cxAcquisitionService.h | 99 + .../cxAcquisitionServiceNull.cpp | 93 + .../cxAcquisitionServiceNull.h | 53 + .../cxAcquisitionServicePluginActivator.cpp | 44 + .../cxAcquisitionServicePluginActivator.h | 59 + .../cxAcquisitionServiceProxy.cpp | 145 + .../cxAcquisitionServiceProxy.h | 66 + .../cxRecordSession.cpp | 251 + .../org.custusx.acquisition/cxRecordSession.h | 91 + .../doc/org.custusx.acquisition.md | 37 + .../gui/cxAcquisitionPlugin.cpp | 53 + .../gui/cxAcquisitionPlugin.h | 58 + .../gui/cxRecordSessionSelector.cpp | 212 + .../gui/cxRecordSessionSelector.h | 86 + .../gui/cxRecordSessionWidget.cpp | 133 + .../gui/cxRecordSessionWidget.h | 77 + .../gui/cxRecordTrackingWidget.cpp | 190 + .../gui/cxRecordTrackingWidget.h | 92 + .../gui/cxSoundSpeedConversionWidget.cpp | 157 + .../gui/cxSoundSpeedConversionWidget.h | 83 + .../cxStringPropertySelectRecordSession.cpp | 93 + .../gui/cxStringPropertySelectRecordSession.h | 89 + .../gui/cxUSAcqusitionWidget.cpp | 213 + .../gui/cxUSAcqusitionWidget.h | 85 + .../logic/cxAcquisitionData.cpp | 287 + .../logic/cxAcquisitionData.h | 168 + .../logic/cxUSAcquisition.cpp | 229 + .../logic/cxUSAcquisition.h | 103 + .../logic/cxUSSavingRecorder.cpp | 219 + .../logic/cxUSSavingRecorder.h | 110 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 32 + .../testing/cxtestAcquisition.cpp | 67 + .../testing/cxtestAcquisitionFixture.cpp | 270 + .../testing/cxtestAcquisitionFixture.h | 79 + .../testing/cxtestUSSavingRecorder.cpp | 99 + .../testing/cxtestUSSavingRecorderFixture.cpp | 201 + .../testing/cxtestUSSavingRecorderFixture.h | 77 + source/plugins/org.custusx.anglecorrection | 1 + .../CMakeLists.txt | 93 + .../README.md | 2 + .../cxBronchoscopePositionProjection.cpp | 440 + .../cxBronchoscopePositionProjection.h | 75 + .../cxBronchoscopyNavigation.cpp | 5 + ...onchoscopyNavigationGUIExtenderService.cpp | 58 + ...BronchoscopyNavigationGUIExtenderService.h | 68 + ...xBronchoscopyNavigationPluginActivator.cpp | 77 + .../cxBronchoscopyNavigationPluginActivator.h | 74 + .../cxBronchoscopyNavigationWidget.cpp | 222 + .../cxBronchoscopyNavigationWidget.h | 107 + .../cxVirtualCameraRotationWidget.cpp | 133 + .../cxVirtualCameraRotationWidget.h | 81 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 18 + .../testing/cxtestExamplePlugin.cpp | 37 + .../cxBronchoscopyTool.cpp | 152 + .../cxBronchoscopyTool.h | 101 + .../cxTrackingSystemBronchoscopyService.cpp | 131 + .../cxTrackingSystemBronchoscopyService.h | 99 + .../org.custusx.calibration/CMakeLists.txt | 91 + .../cxCalibrationGUIExtenderService.cpp | 41 + .../cxCalibrationGUIExtenderService.h | 48 + .../cxCalibrationPluginActivator.cpp | 44 + .../cxCalibrationPluginActivator.h | 61 + .../doc/org.custusx.calibration.md | 68 + .../gui/cxCalibrationMethodsWidget.cpp | 37 + .../gui/cxCalibrationMethodsWidget.h | 43 + .../gui/cxEBUSCalibrationWidget.cpp | 221 + .../gui/cxEBUSCalibrationWidget.h | 104 + .../gui/cxLapFrameToolCalibrationWidget.cpp | 238 + .../gui/cxLapFrameToolCalibrationWidget.h | 104 + .../gui/cxTemporalCalibrationWidget.cpp | 152 + .../gui/cxTemporalCalibrationWidget.h | 68 + .../gui/cxToolManualCalibrationWidget.cpp | 92 + .../gui/cxToolManualCalibrationWidget.h | 59 + .../gui/cxToolTipCalibrationWidget.cpp | 222 + .../gui/cxToolTipCalibrationWidget.h | 99 + .../gui/cxToolTipSampleWidget.cpp | 171 + .../gui/cxToolTipSampleWidget.h | 77 + .../logic/cxTemporalCalibration.cpp | 538 + .../logic/cxTemporalCalibration.h | 83 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 22 + .../testing/cxtestDummyCalibration.cpp | 17 + .../testing/cxtestDummyCalibration.h | 26 + .../testing/cxtestTemporalCalibration.cpp | 38 + .../org.custusx.ceetron/CMakeLists.txt | 59 + .../cxCeetronPluginActivator.cpp | 46 + .../cxCeetronPluginActivator.h | 43 + .../cxCgeoReaderWriter.cpp | 150 + .../org.custusx.ceetron/cxCgeoReaderWriter.h | 51 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 31 + .../testing/cxtestCeetronPlugin.cpp | 58 + .../testing/cxtestCgeoTestFunctions.h | 31 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 18 + .../org.custusx.control/CMakeLists.txt | 76 + .../org.custusx.control/control/data_3d.txt | 3700 ++++ .../control/sharedcontrol.cpp | 204 + .../cxControlGUIExtenderService.cpp | 36 + .../cxControlGUIExtenderService.h | 48 + .../cxControlPluginActivator.cpp | 45 + .../cxControlPluginActivator.h | 52 + .../org.custusx.control/cxControlWidget.cpp | 61 + .../org.custusx.control/cxControlWidget.h | 63 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 28 + .../testing/cxtestControlPlugin.cpp | 16 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../wrapper/cxSharedControlWrapper.cpp | 19 + .../wrapper/cxSharedControlWrapper.h | 102 + .../CMakeLists.txt | 116 + .../cxFileManagerImplService.cpp | 55 + .../cxFileManagerImplService.h | 50 + .../cxFileManagerServicePluginActivator.cpp | 78 + .../cxFileManagerServicePluginActivator.h | 45 + .../cxImportExportGuiExtenderService.cpp | 35 + .../cxImportExportGuiExtenderService.h | 39 + .../dicom/cxDicomConverter.cpp | 281 + .../dicom/cxDicomConverter.h | 56 + .../dicom/cxDicomImageReader.cpp | 405 + .../dicom/cxDicomImageReader.h | 88 + .../org.custusx.core.filemanager.export.md | 38 + .../org.custusx.core.filemanager.import.md | 50 + .../doc/org.custusx.core.filemanager.md | 7 + .../filereaderwriters/cxDICOMReader.cpp | 188 + .../filereaderwriters/cxDICOMReader.h | 60 + .../filereaderwriters/cxMNIReaderWriter.cpp | 298 + .../filereaderwriters/cxMNIReaderWriter.h | 55 + .../filereaderwriters/cxMetaImageReader.cpp | 198 + .../filereaderwriters/cxMetaImageReader.h | 47 + .../filereaderwriters/cxNIfTIReader.cpp | 141 + .../filereaderwriters/cxNIfTIReader.h | 51 + .../filereaderwriters/cxPNGImageReader.cpp | 99 + .../filereaderwriters/cxPNGImageReader.h | 49 + .../cxPolyDataMeshReader.cpp | 117 + .../filereaderwriters/cxPolyDataMeshReader.h | 51 + .../filereaderwriters/cxStlMeshReader.cpp | 115 + .../filereaderwriters/cxStlMeshReader.h | 50 + .../cxXMLPolyDataMeshReader.cpp | 98 + .../cxXMLPolyDataMeshReader.h | 54 + .../gui/cxExportDataTypeWidget.cpp | 83 + .../gui/cxExportDataTypeWidget.h | 113 + .../gui/cxExportWidget.cpp | 46 + .../gui/cxExportWidget.h | 35 + .../gui/cxImportDataTypeWidget.cpp | 561 + .../gui/cxImportDataTypeWidget.h | 101 + .../gui/cxImportWidget.cpp | 305 + .../gui/cxImportWidget.h | 74 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 36 + .../testing/cxtestDataReaderWriter.cpp | 125 + .../testing/cxtestTestToolMesh.cpp | 44 + .../testing/cxtestTestToolMesh.h | 39 + .../testing/cxtestToolFiles.cpp | 53 + .../CMakeLists.txt | 100 + .../cxOpenIGTLinkPluginActivator.cpp | 65 + .../cxOpenIGTLinkPluginActivator.h | 64 + ...g_custusx_core_openigtlink_datatransfer.md | 73 + ...g_custusx_core_openigtlink_plus_install.md | 45 + .../cxOpenIGTLinkGuiExtenderService.cpp | 53 + .../cxOpenIGTLinkGuiExtenderService.h | 49 + .../cxPlusConnectWidget.cpp | 336 + .../guiExtenderService/cxPlusConnectWidget.h | 73 + .../network/cxNetworkHandler.cpp | 410 + .../network/cxNetworkHandler.h | 90 + .../cxProbeDefinitionFromStringMessages.cpp | 361 + .../cxProbeDefinitionFromStringMessages.h | 68 + .../streamerService/cxOpenIGTLinkStreamer.cpp | 87 + .../streamerService/cxOpenIGTLinkStreamer.h | 67 + .../cxOpenIGTLinkStreamerService.cpp | 164 + .../cxOpenIGTLinkStreamerService.h | 62 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 39 + .../testing/cxtestIOReceiver.cpp | 22 + .../testing/cxtestIOReceiver.h | 27 + .../testing/cxtestOpenIGTLinkIO.cpp | 330 + ...cxtestOpenIGTLinkTrackingSystemService.cpp | 522 + .../testing/cxtestPlusReceiver.cpp | 80 + .../testing/cxtestPlusReceiver.h | 32 + ...xtestProbeDefinitionFromStringMessages.cpp | 170 + .../testing/cxtestReceiver.cpp | 179 + .../testing/cxtestReceiver.h | 60 + .../cxOpenIGTLinkTool.cpp | 256 + .../trackingSystemService/cxOpenIGTLinkTool.h | 109 + .../cxOpenIGTLinkTrackingSystemService.cpp | 239 + .../cxOpenIGTLinkTrackingSystemService.h | 85 + .../CMakeLists.txt | 67 + .../cxDataManager.cpp | 50 + .../cxDataManager.h | 125 + .../cxDataManagerImpl.cpp | 631 + .../cxDataManagerImpl.h | 140 + .../cxPatientData.cpp | 187 + .../cxPatientData.h | 84 + .../cxPatientModelImplService.cpp | 383 + .../cxPatientModelImplService.h | 120 + .../cxPatientModelPluginActivator.cpp | 48 + .../cxPatientModelPluginActivator.h | 62 + .../cxSessionStorageServiceImpl.cpp | 315 + .../cxSessionStorageServiceImpl.h | 73 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 37 + .../testing/cxtestCatchDistanceMetric.cpp | 80 + .../testing/cxtestCatchFrameMetric.cpp | 51 + .../testing/cxtestCatchPatientService.cpp | 129 + .../testing/cxtestCatchToolMetric.cpp | 76 + .../testing/cxtestMetricFixture.cpp | 305 + .../testing/cxtestMetricFixture.h | 155 + .../testing/cxtestPatientModelPlugin.cpp | 48 + .../testing/cxtestPatientStorage.cpp | 65 + .../cxtestSessionStorageTestFixture.cpp | 76 + .../testing/cxtestSessionStorageTestFixture.h | 61 + .../org.custusx.core.state/CMakeLists.txt | 68 + .../cxApplicationsParser.cpp | 188 + .../cxApplicationsParser.h | 48 + .../cxCustusXWorkflowStateMachine.cpp | 37 + .../cxCustusXWorkflowStateMachine.h | 44 + .../cxCustusXWorkflowStates.cpp | 124 + .../cxCustusXWorkflowStates.h | 129 + .../cxStatePluginActivator.cpp | 42 + .../cxStatePluginActivator.h | 56 + .../cxStateServiceImpl.cpp | 118 + .../cxStateServiceImpl.h | 60 + .../manifest_headers.cmake | 6 + .../target_libraries.cmake | 9 + .../CMakeLists.txt | 81 + .../cxIGSTKTrackingPluginActivator.cpp | 46 + .../cxIGSTKTrackingPluginActivator.h | 58 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 24 + .../testing/cxExportHack.cpp | 9 + .../testing/cxExportHack.h | 14 + .../testing/cxtestToolFiles.cpp | 135 + .../trackingSystemIGSTK/cxIgstkTool.cpp | 454 + .../trackingSystemIGSTK/cxIgstkTool.h | 128 + .../cxIgstkToolManager.cpp | 231 + .../trackingSystemIGSTK/cxIgstkToolManager.h | 104 + .../trackingSystemIGSTK/cxIgstkTracker.cpp | 395 + .../trackingSystemIGSTK/cxIgstkTracker.h | 165 + .../cxIgstkTrackerThread.cpp | 85 + .../cxIgstkTrackerThread.h | 87 + .../trackingSystemIGSTK/cxToolUsingIGSTK.cpp | 231 + .../trackingSystemIGSTK/cxToolUsingIGSTK.h | 131 + .../cxTrackingSystemIGSTKService.cpp | 477 + .../cxTrackingSystemIGSTKService.h | 132 + .../org.custusx.core.tracking/CMakeLists.txt | 64 + .../cxTrackingImplService.cpp | 754 + .../cxTrackingImplService.h | 173 + .../cxTrackingPluginActivator.cpp | 45 + .../cxTrackingPluginActivator.h | 60 + .../cxTrackingSystemDummyService.cpp | 109 + .../cxTrackingSystemDummyService.h | 54 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 33 + .../testing/cxtestCatchProbe.cpp | 124 + .../testing/cxtestCatchTrackingService.cpp | 27 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 18 + .../testing/cxtestTestToolMesh.cpp | 44 + .../testing/cxtestTestToolMesh.h | 39 + .../testing/cxtestToolFiles.cpp | 45 + .../testing/cxtestTrackingPlugin.cpp | 78 + .../cxTrackingSystemPlaybackService.cpp | 182 + .../cxTrackingSystemPlaybackService.h | 80 + .../org.custusx.core.video/CMakeLists.txt | 90 + .../cxIGTLinkClientStreamer.cpp | 364 + .../cxIGTLinkClientStreamer.h | 85 + .../cxIGTLinkStreamerService.cpp | 70 + .../cxIGTLinkStreamerService.h | 47 + .../cxImageFileStreamerService.cpp | 88 + .../cxImageFileStreamerService.h | 46 + .../cxImageReceiverThread.cpp | 172 + .../cxImageReceiverThread.h | 113 + .../cxLocalServerStreamerServer.cpp | 158 + .../cxLocalServerStreamerServer.h | 83 + .../cxOpenCVStreamerService.cpp | 66 + .../cxOpenCVStreamerService.h | 49 + .../cxPlaybackUSAcquisitionVideo.cpp | 252 + .../cxPlaybackUSAcquisitionVideo.h | 90 + .../cxStreamerServiceUtilities.cpp | 37 + .../cxStreamerServiceUtilities.h | 38 + .../cxVideoConnection.cpp | 335 + .../cxVideoConnection.h | 107 + .../cxVideoImplService.cpp | 339 + .../cxVideoImplService.h | 106 + .../cxVideoPluginActivator.cpp | 52 + .../cxVideoPluginActivator.h | 60 + .../cxVideoServiceBackend.cpp | 61 + .../cxVideoServiceBackend.h | 64 + .../doc/org.custusx.core.video.md | 55 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 38 + .../testing/cxCatchVideo.cpp | 105 + .../testing/cxtestCatchStreamingWidgets.cpp | 61 + .../cxtestTestVideoConnectionWidget.cpp | 82 + .../testing/cxtestTestVideoConnectionWidget.h | 42 + .../testing/cxtestVideoPlugin.cpp | 17 + .../org.custusx.core.view/CMakeLists.txt | 89 + .../org.custusx.core.view/cx2DZoomHandler.cpp | 129 + .../org.custusx.core.view/cx2DZoomHandler.h | 60 + .../org.custusx.core.view/cxAxisConnector.cpp | 74 + .../org.custusx.core.view/cxAxisConnector.h | 57 + .../org.custusx.core.view/cxCameraStyle.cpp | 65 + .../org.custusx.core.view/cxCameraStyle.h | 82 + .../cxCameraStyleForView.cpp | 515 + .../cxCameraStyleForView.h | 142 + .../cxDataRepContainer.cpp | 151 + .../cxDataRepContainer.h | 62 + .../cxMultiVolume3DRepProducer.cpp | 287 + .../cxMultiVolume3DRepProducer.h | 93 + .../cxNavigationAlgorithms.cpp | 146 + .../cxNavigationAlgorithms.h | 89 + .../org.custusx.core.view/cxRenderLoop.cpp | 184 + .../org.custusx.core.view/cxRenderLoop.h | 92 + .../org.custusx.core.view/cxRepManager.cpp | 43 + .../org.custusx.core.view/cxRepManager.h | 120 + .../org.custusx.core.view/cxViewGroup.cpp | 172 + .../org.custusx.core.view/cxViewGroup.h | 94 + .../cxViewImplService.cpp | 750 + .../org.custusx.core.view/cxViewImplService.h | 199 + .../cxViewPluginActivator.cpp | 42 + .../cxViewPluginActivator.h | 57 + .../org.custusx.core.view/cxViewWrapper.cpp | 244 + .../org.custusx.core.view/cxViewWrapper.h | 139 + .../org.custusx.core.view/cxViewWrapper2D.cpp | 716 + .../org.custusx.core.view/cxViewWrapper2D.h | 157 + .../org.custusx.core.view/cxViewWrapper3D.cpp | 968 + .../org.custusx.core.view/cxViewWrapper3D.h | 152 + .../cxViewWrapperVideo.cpp | 232 + .../cxViewWrapperVideo.h | 79 + .../manifest_headers.cmake | 6 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 55 + .../testing/cxCppUnitMain.cpp | 53 + .../testing/cxViewsFixture.cpp | 253 + .../testing/cxViewsFixture.h | 102 + .../cxtestCatchMultiVolume3DRepProducer.cpp | 148 + .../testing/cxtestCatchViewRenderSpeed.cpp | 47 + .../testing/cxtestCatchVolumeReps.cpp | 278 + ...chVtkOpenGLGPUMultiVolumeRayCastMapper.cpp | 586 + .../testing/cxtestDataTypeSort.cpp | 91 + .../testing/cxtestGeometricRep.cpp | 111 + ...cxtestLayoutWidgetUsingViewWidgetsMock.cpp | 16 + .../cxtestLayoutWidgetUsingViewWidgetsMock.h | 18 + .../cxtestMultiVolume3DRepProducerFixture.cpp | 43 + .../cxtestMultiVolume3DRepProducerFixture.h | 53 + .../testing/cxtestNavigationAlgorithms.cpp | 120 + .../testing/cxtestRendering.cpp | 94 + .../cxtestViewCollectionWidgetMixedMock.cpp | 22 + .../cxtestViewCollectionWidgetMixedMock.h | 16 + .../testing/cxtestViewGroup.cpp | 128 + .../testing/cxtestViewPlugin.cpp | 237 + .../testing/cxtestViewService.cpp | 95 + .../testing/cxtestViewServiceMock.cpp | 56 + .../testing/cxtestViewServiceMock.h | 23 + .../testing/cxtestVisualRendering.cpp | 465 + .../testing/cxtestVisualizationHelper.cpp | 42 + .../testing/cxtestVisualizationHelper.h | 45 + .../plugins/org.custusx.dicom/CMakeLists.txt | 111 + .../core/cxDicomConverter.cpp | 281 + .../org.custusx.dicom/core/cxDicomConverter.h | 56 + .../core/cxDicomImageReader.cpp | 405 + .../core/cxDicomImageReader.h | 88 + .../cxDicomGUIExtenderService.cpp | 42 + .../cxDicomGUIExtenderService.h | 46 + .../cxDicomPluginActivator.cpp | 49 + .../cxDicomPluginActivator.h | 61 + .../doc/org.custusx.dicom.md | 25 + .../doc/org_custusx_dicom_widget.jpg | Bin 0 -> 24404 bytes .../org.custusx.dicom/target_libraries.cmake | 9 + .../org.custusx.dicom/testing/CMakeLists.txt | 27 + .../testing/cxtestDicomConverter.cpp | 400 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../widgets/cxDICOMAppWidget.cpp | 644 + .../widgets/cxDICOMAppWidget.h | 142 + .../widgets/cxDICOMModel.cpp | 349 + .../org.custusx.dicom/widgets/cxDICOMModel.h | 99 + .../widgets/cxDICOMThumbnailGenerator.cpp | 161 + .../widgets/cxDICOMThumbnailGenerator.h | 63 + .../widgets/cxDICOMThumbnailListWidget.cpp | 347 + .../widgets/cxDICOMThumbnailListWidget.h | 68 + .../widgets/cxDicomImporter.cpp | 230 + .../widgets/cxDicomImporter.h | 100 + .../widgets/cxDicomModelNode.cpp | 318 + .../widgets/cxDicomModelNode.h | 169 + .../widgets/cxDicomWidget.cpp | 239 + .../org.custusx.dicom/widgets/cxDicomWidget.h | 75 + .../org.custusx.example/CMakeLists.txt | 63 + .../cxExampleGUIExtenderService.cpp | 36 + .../cxExampleGUIExtenderService.h | 48 + .../cxExamplePluginActivator.cpp | 45 + .../cxExamplePluginActivator.h | 52 + .../org.custusx.example/cxExampleWidget.cpp | 435 + .../org.custusx.example/cxExampleWidget.h | 128 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 28 + .../testing/cxtestExamplePlugin.cpp | 16 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../CMakeLists.txt | 74 + .../cxAccusurf.cpp | 247 + .../org.custusx.filter.accusurf/cxAccusurf.h | 44 + .../cxAccusurfFilterService.cpp | 173 + .../cxAccusurfFilterService.h | 75 + .../cxFilterAccusurfPluginActivator.cpp | 48 + .../cxFilterAccusurfPluginActivator.h | 51 + .../doc/org.custusx.filter.accusurf.md | 17 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 43 + .../testing/cxtestAccusurfFilter.cpp | 60 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../org.custusx.filter.airways/CMakeLists.txt | 90 + .../cxAirwaysFilterService.cpp | 807 + .../cxAirwaysFilterService.h | 119 + .../cxFilterAirwaysPluginActivator.cpp | 48 + .../cxFilterAirwaysPluginActivator.h | 43 + .../doc/org.custusx.filter.airways.md | 16 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 32 + .../testing/cxtestAirways.cpp | 47 + .../testing/cxtestAirwaysFixture.cpp | 118 + .../testing/cxtestAirwaysFixture.h | 35 + .../CMakeLists.txt | 72 + .../cxAirwaysFromCenterline.cpp | 381 + .../cxAirwaysFromCenterline.h | 71 + .../cxAirwaysFromCenterlineFilterService.cpp | 163 + .../cxAirwaysFromCenterlineFilterService.h | 72 + ...erAirwaysFromCenterlinePluginActivator.cpp | 48 + ...lterAirwaysFromCenterlinePluginActivator.h | 51 + ...rg.custusx.filter.airwaysfromcenterline.md | 24 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 45 + .../cxtestAirwaysFromCenterlineFilter.cpp | 59 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../CMakeLists.txt | 85 + .../cxFilterRouteToNodePluginActivator.cpp | 48 + .../cxFilterRouteToNodePluginActivator.h | 52 + .../cxRouteToNode.cpp | 843 + .../cxRouteToNode.h | 95 + .../cxRouteToNodeFilterService.cpp | 351 + .../cxRouteToNodeFilterService.h | 88 + .../doc/org.custusx.filter.routetotarget.md | 21 + .../include/StateSpace/SE3.hpp | 417 + .../include/StateSpace/SO3.hpp | 357 + .../include/StateSpace/StateSpace.hpp | 84 + .../include/StateSpace/insertSpace.hpp | 93 + .../include/StateSpace/rn.hpp | 163 + .../include/macros/class_forward.h | 126 + .../include/planner/InsertPlanner.hpp | 142 + .../planner/InsertPlanner.hpp.autosave | 142 + .../include/planner/Planner.hpp | 247 + .../include/planner/RRT.hpp | 295 + .../include/planner/Tree.hpp | 135 + .../target_libraries.cmake | 9 + .../CMakeLists.txt | 70 + .../cxFilterRouteToTargetPluginActivator.cpp | 48 + .../cxFilterRouteToTargetPluginActivator.h | 52 + .../cxRouteToTarget.cpp | 841 + .../cxRouteToTarget.h | 95 + .../cxRouteToTargetFilterService.cpp | 351 + .../cxRouteToTargetFilterService.h | 88 + .../doc/org.custusx.filter.routetotarget.md | 21 + .../target_libraries.cmake | 9 + .../plugins/org.custusx.help/CMakeLists.txt | 71 + .../plugins/org.custusx.help/cxHelpEngine.cpp | 147 + .../plugins/org.custusx.help/cxHelpEngine.h | 65 + .../cxHelpGUIExtenderService.cpp | 42 + .../cxHelpGUIExtenderService.h | 48 + .../cxHelpPluginActivator.cpp | 50 + .../org.custusx.help/cxHelpPluginActivator.h | 60 + .../org.custusx.help/target_libraries.cmake | 9 + .../org.custusx.help/testing/CMakeLists.txt | 31 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../testing/cxtestHelpPlugin.cpp | 133 + .../testing/cxtestHelpPlugin.h | 30 + .../widgets/cxHelpBrowser.cpp | 71 + .../org.custusx.help/widgets/cxHelpBrowser.h | 50 + .../widgets/cxHelpIndexWidget.cpp | 50 + .../widgets/cxHelpIndexWidget.h | 50 + .../widgets/cxHelpSearchWidget.cpp | 77 + .../widgets/cxHelpSearchWidget.h | 56 + .../org.custusx.help/widgets/cxHelpWidget.cpp | 223 + .../org.custusx.help/widgets/cxHelpWidget.h | 103 + .../plugins/org.custusx.node/CMakeLists.txt | 63 + .../cxNodeGUIExtenderService.cpp | 36 + .../cxNodeGUIExtenderService.h | 48 + .../cxNodePluginActivator.cpp | 45 + .../org.custusx.node/cxNodePluginActivator.h | 52 + .../plugins/org.custusx.node/cxNodeWidget.cpp | 435 + .../plugins/org.custusx.node/cxNodeWidget.h | 128 + .../org.custusx.node/target_libraries.cmake | 9 + .../org.custusx.node/testing/CMakeLists.txt | 28 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../testing/cxtestNodePlugin.cpp | 16 + .../org.custusx.planning/CMakeLists.txt | 84 + .../cmake/FindEigen3.cmake | 97 + .../cmake/FindFlann.cmake | 28 + .../cmake/VTKConfig.cmake | 106 + .../plugins/org.custusx.planning/cxPlanning | 0 .../cxPlanningGUIExtenderService.cpp | 36 + .../cxPlanningGUIExtenderService.h | 48 + .../cxPlanningPluginActivator.cpp | 45 + .../cxPlanningPluginActivator.h | 52 + .../org.custusx.planning/cxPlanningWidget.cpp | 73 + .../org.custusx.planning/cxPlanningWidget.h | 55 + .../include/StateSpace/SE3.hpp | 417 + .../include/StateSpace/SO3.hpp | 358 + .../include/StateSpace/StateSpace.hpp | 83 + .../include/StateSpace/insertSpace.hpp | 93 + .../include/StateSpace/rn.hpp | 163 + .../include/macros/class_forward.h | 126 + .../include/planner/InsertPlanner.hpp | 151 + .../include/planner/Planner.hpp | 247 + .../include/planner/RRT.hpp | 295 + .../include/planner/Tree.hpp | 135 + .../plugins/org.custusx.planning/src/main.cpp | 36 + .../target_libraries.cmake | 9 + .../test/insert_state_test.cpp | 47 + .../CMakeLists.txt | 67 + .../cxRegistrationGUIExtenderService.cpp | 43 + .../cxRegistrationGUIExtenderService.h | 48 + .../cxRegistrationGUIPluginActivator.cpp | 51 + .../cxRegistrationGUIPluginActivator.h | 59 + ...xRegistrationHistoryGUIExtenderService.cpp | 51 + .../cxRegistrationHistoryGUIExtenderService.h | 48 + .../cxRegistrationHistoryWidget.cpp | 444 + .../cxRegistrationHistoryWidget.h | 98 + .../cxRegistrationWidget.cpp | 199 + .../cxRegistrationWidget.h | 100 + .../cxWirePhantomWidget.cpp | 432 + .../cxWirePhantomWidget.h | 73 + .../doc/org.custusx.registration.gui.md | 28 + .../manifest_headers.cmake | 6 + .../target_libraries.cmake | 10 + .../CMakeLists.txt | 74 + .../cxBranch.cpp | 197 + .../cxBranch.h | 69 + .../cxBranchList.cpp | 729 + .../cxBranchList.h | 63 + ...nchoscopyImage2ImageRegistrationWidget.cpp | 117 + ...ronchoscopyImage2ImageRegistrationWidget.h | 61 + .../cxBronchoscopyRegistration.cpp | 683 + .../cxBronchoscopyRegistration.h | 56 + .../cxBronchoscopyRegistrationWidget.cpp | 238 + .../cxBronchoscopyRegistrationWidget.h | 92 + ...ationMethodBronchoscopyPluginActivator.cpp | 47 + ...trationMethodBronchoscopyPluginActivator.h | 59 + ...xRegistrationMethodBronchoscopyService.cpp | 31 + .../cxRegistrationMethodBronchoscopyService.h | 66 + ...custusx_registration_method_bronchoscopy.h | 4 + ...ustusx_registration_method_bronchoscopy.md | 9 + ...tration_method_bronchoscopy_image2image.md | 9 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 27 + .../testing/cxtestBranchHandling.cpp | 112 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../CMakeLists.txt | 72 + .../cxCenterlinePointsWidget.cpp | 314 + .../cxCenterlinePointsWidget.h | 101 + .../cxCenterlineRegistration.cpp | 331 + .../cxCenterlineRegistration.h | 92 + .../cxCenterlineRegistrationWidget.cpp | 215 + .../cxCenterlineRegistrationWidget.h | 96 + ...trationMethodCenterlinePluginActivator.cpp | 45 + ...istrationMethodCenterlinePluginActivator.h | 59 + .../cxRegistrationMethodCenterlineService.cpp | 35 + .../cxRegistrationMethodCenterlineService.h | 45 + ...g_custusx_registration_method_centerline.h | 4 + ..._custusx_registration_method_centerline.md | 26 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 45 + .../testing/cxtestCenterlineRegistration.cpp | 63 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../CMakeLists.txt | 78 + ...rationMethodCommandLinePluginActivator.cpp | 43 + ...strationMethodCommandLinePluginActivator.h | 57 + ...cxRegistrationMethodCommandLineService.cpp | 27 + .../cxRegistrationMethodCommandLineService.h | 45 + ..._custusx_registration_method_commandline.h | 4 + ...custusx_registration_method_commandline.md | 15 + .../gui/cxElastixSyntaxHighlighter.cpp | 104 + .../gui/cxElastixSyntaxHighlighter.h | 41 + .../gui/cxElastixWidget.cpp | 230 + .../gui/cxElastixWidget.h | 86 + .../logic/cxElastixExecuter.cpp | 526 + .../logic/cxElastixExecuter.h | 230 + .../logic/cxElastixManager.cpp | 164 + .../logic/cxElastixManager.h | 74 + .../logic/cxElastixParameters.cpp | 208 + .../logic/cxElastixParameters.h | 81 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 29 + .../testing/cxElastixSingleThreadedRunner.cpp | 111 + .../testing/cxElastixSingleThreadedRunner.h | 60 + .../testing/cxtestCatchElastix.cpp | 148 + .../CMakeLists.txt | 87 + .../cxImageLandmarksWidget.cpp | 363 + .../cxImageLandmarksWidget.h | 108 + ...xLandmarkImage2ImageRegistrationWidget.cpp | 149 + .../cxLandmarkImage2ImageRegistrationWidget.h | 80 + .../cxLandmarkListener.cpp | 109 + .../cxLandmarkListener.h | 56 + .../cxLandmarkPatientRegistrationWidget.cpp | 121 + .../cxLandmarkPatientRegistrationWidget.h | 74 + .../cxLandmarkRegistrationWidget.cpp | 418 + .../cxLandmarkRegistrationWidget.h | 108 + .../cxPatientLandMarksWidget.cpp | 215 + .../cxPatientLandMarksWidget.h | 74 + ...istrationMethodLandmarkPluginActivator.cpp | 51 + ...egistrationMethodLandmarkPluginActivator.h | 63 + .../cxRegistrationMethodLandmarkService.cpp | 81 + .../cxRegistrationMethodLandmarkService.h | 87 + ...n_method_fast_landmark_image_to_patient.md | 56 + ...org_custusx_registration_method_landmark.h | 8 + ...rg_custusx_registration_method_landmark.md | 11 + ...stration_method_landmark_image_to_image.md | 28 + ...ration_method_landmark_image_to_patient.md | 36 + ...on_method_landmark_import_point_metrics.md | 13 + .../fast/cxFastImageRegistrationWidget.cpp | 48 + .../fast/cxFastImageRegistrationWidget.h | 52 + ...xFastLandmarkPatientRegistrationWidget.cpp | 50 + .../cxFastLandmarkPatientRegistrationWidget.h | 56 + .../cxFastOrientationRegistrationWidget.cpp | 99 + .../cxFastOrientationRegistrationWidget.h | 67 + .../fast/cxFastPatientRegistrationWidget.cpp | 55 + .../fast/cxFastPatientRegistrationWidget.h | 53 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 35 + .../testing/cxtestFastPatientRegistration.cpp | 122 + ...stFastPatientRegistrationWidgetFixture.cpp | 46 + ...testFastPatientRegistrationWidgetFixture.h | 45 + .../cxtestLandmarkPatientRegistration.cpp | 56 + .../CMakeLists.txt | 83 + .../cxManualImage2ImageRegistrationWidget.cpp | 197 + .../cxManualImage2ImageRegistrationWidget.h | 56 + ...ManualImageTransformRegistrationWidget.cpp | 55 + ...cxManualImageTransformRegistrationWidget.h | 40 + .../cxManualPatientRegistrationWidget.cpp | 82 + .../cxManualPatientRegistrationWidget.h | 60 + .../cxManualRegistrationWidget.cpp | 92 + .../cxManualRegistrationWidget.h | 72 + .../cxPatientOrientationWidget.cpp | 91 + .../cxPatientOrientationWidget.h | 57 + ...trationMethodManualImageToImageService.cpp | 19 + ...istrationMethodManualImageToImageService.h | 40 + ...ationMethodManualImageToPatientService.cpp | 29 + ...trationMethodManualImageToPatientService.h | 41 + ...ationMethodManualImageTransformService.cpp | 29 + ...trationMethodManualImageTransformService.h | 35 + ...nMethodManualPatientOrientationService.cpp | 13 + ...ionMethodManualPatientOrientationService.h | 33 + ...egistrationMethodManualPluginActivator.cpp | 58 + ...xRegistrationMethodManualPluginActivator.h | 65 + .../cxRegistrationMethodManualService.cpp | 23 + .../cxRegistrationMethodManualService.h | 40 + .../doc/I2I_registration_widget.png | Bin 0 -> 74393 bytes .../org_custusx_registration_method_manual.h | 11 + .../org_custusx_registration_method_manual.md | 12 + ..._registration_method_manual_image2image.md | 16 + ...stration_method_manual_image_to_patient.md | 12 + ...istration_method_manual_image_transform.md | 14 + ...ation_method_manual_patient_orientation.md | 17 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 29 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../cxtestRegistrationMethodManual.cpp | 342 + .../CMakeLists.txt | 64 + .../cxPlateImageRegistrationWidget.cpp | 39 + .../cxPlateImageRegistrationWidget.h | 46 + .../cxPlateRegistrationWidget.cpp | 134 + .../cxPlateRegistrationWidget.h | 53 + ...RegistrationMethodPlatePluginActivator.cpp | 45 + ...cxRegistrationMethodPlatePluginActivator.h | 59 + .../cxRegistrationMethodPlateService.cpp | 34 + .../cxRegistrationMethodPlateService.h | 45 + .../org.custusx.registration.method.plate.h | 4 + .../org.custusx.registration.method.plate.md | 30 + .../manifest_headers.cmake | 5 + .../target_libraries.cmake | 9 + .../CMakeLists.txt | 70 + .../cxRMPCFromPointerService.cpp | 24 + .../cxRMPCFromPointerService.h | 44 + .../cxRMPCFromPointerWidget.cpp | 167 + .../cxRMPCFromPointerWidget.h | 79 + .../cxRMPCPluginActivator.cpp | 49 + .../cxRMPCPluginActivator.h | 58 + .../cxRMPCService.cpp | 24 + .../cxRMPCService.h | 43 + .../cxRMPCWidget.cpp | 96 + .../cxRMPCWidget.h | 75 + ...g_custusx_registration_method_pointcloud.h | 5 + ..._custusx_registration_method_pointcloud.md | 50 + .../target_libraries.cmake | 9 + .../CMakeLists.txt | 75 + .../cxICPRegistrationBaseWidget.cpp | 262 + .../cxICPRegistrationBaseWidget.h | 118 + .../cxICPWidget.cpp | 98 + .../cxICPWidget.h | 64 + .../cxMeshInView.cpp | 57 + .../cxMeshInView.h | 41 + .../cxPrepareVesselsWidget.cpp | 109 + .../cxPrepareVesselsWidget.h | 59 + .../cxRegisterI2IWidget.cpp | 42 + .../cxRegisterI2IWidget.h | 51 + ...egistrationMethodVesselPluginActivator.cpp | 45 + ...xRegistrationMethodVesselPluginActivator.h | 58 + .../cxRegistrationMethodVesselService.cpp | 33 + .../cxRegistrationMethodVesselService.h | 46 + .../cxSeansVesselRegistrationWidget.cpp | 119 + .../cxSeansVesselRegistrationWidget.h | 72 + .../org_custusx_registration_method_vessel.h | 4 + .../org_custusx_registration_method_vessel.md | 49 + .../target_libraries.cmake | 9 + .../org.custusx.registration/CMakeLists.txt | 85 + .../cxLandmarkTranslationRegistration.cpp | 273 + .../cxLandmarkTranslationRegistration.h | 41 + .../cxRegServices.cpp | 42 + .../org.custusx.registration/cxRegServices.h | 51 + .../cxRegistrationApplicator.cpp | 155 + .../cxRegistrationApplicator.h | 52 + .../cxRegistrationBaseWidget.cpp | 22 + .../cxRegistrationBaseWidget.h | 43 + .../cxRegistrationImplService.cpp | 546 + .../cxRegistrationImplService.h | 105 + .../cxRegistrationMethodService.h | 57 + .../cxRegistrationPluginActivator.cpp | 45 + .../cxRegistrationPluginActivator.h | 59 + .../cxRegistrationProperties.cpp | 78 + .../cxRegistrationProperties.h | 72 + .../cxRegistrationService.cpp | 43 + .../cxRegistrationService.h | 85 + .../cxRegistrationServiceNull.cpp | 114 + .../cxRegistrationServiceNull.h | 59 + .../cxRegistrationServiceProxy.cpp | 143 + .../cxRegistrationServiceProxy.h | 80 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 31 + .../testing/cxtestCatchSeansVesselReg.cpp | 166 + .../testing/cxtestRegistrationApplicator.cpp | 161 + .../testing/cxtestRegistrationPlugin.cpp | 79 + .../cxtestRegistrationServiceProxy.cpp | 52 + .../testing/cxtestSeansVesselRegFixture.cpp | 303 + .../testing/cxtestSeansVesselRegFixture.h | 51 + .../org.custusx.training/CMakeLists.txt | 77 + .../cxTrainingGUIExtenderService.cpp | 44 + .../cxTrainingGUIExtenderService.h | 47 + .../cxTrainingPluginActivator.cpp | 47 + .../cxTrainingPluginActivator.h | 59 + .../doc/org_custusx_training.md | 20 + .../org_custusx_training_sessionA_step1.md | 7 + .../org_custusx_training_sessionA_step2.md | 8 + .../org_custusx_training_sessionA_step3.md | 12 + .../org_custusx_training_sessionA_step4.md | 8 + .../org_custusx_training_sessionA_step5.md | 7 + .../org_custusx_training_sessionA_step6.md | 7 + .../manifest_headers.cmake | 6 + .../target_libraries.cmake | 9 + .../widgets/cxNeuroTrainingWidget.cpp | 143 + .../widgets/cxNeuroTrainingWidget.h | 45 + .../widgets/cxTrainingWidget.cpp | 233 + .../widgets/cxTrainingWidget.h | 88 + .../CMakeLists.txt | 60 + .../cxPNNReconstructionMethodService.cpp | 349 + .../cxPNNReconstructionMethodService.h | 70 + .../cxPNNReconstructionPluginActivator.cpp | 45 + .../cxPNNReconstructionPluginActivator.h | 59 + .../doc/org.custusx.usreconstruction.pnn.md | 19 + .../manifest_headers.cmake | 5 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 27 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../testing/cxtestPNNPlugin.cpp | 91 + .../CMakeLists.txt | 78 + .../cxVNNclAlgorithm.cpp | 440 + .../cxVNNclAlgorithm.h | 191 + .../cxVNNclPluginActivator.cpp | 45 + .../cxVNNclPluginActivator.h | 58 + .../cxVNNclReconstructionMethodService.cpp | 156 + .../cxVNNclReconstructionMethodService.h | 152 + .../doc/org.custusx.usreconstruction.vnncl.md | 36 + .../kernels.cl | 1103 ++ .../kernels.cl.h | 368 + .../recConfig.h.in | 15 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 28 + .../testing/cxtestVNNclFixture.cpp | 204 + .../testing/cxtestVNNclFixture.h | 83 + .../cxtestVNNclReconstructionService.cpp | 121 + .../CMakeLists.txt | 97 + .../cxPositionFilter.cpp | 72 + .../cxPositionFilter.h | 47 + .../cxReconstructCore.cpp | 242 + .../cxReconstructCore.h | 106 + ...ReconstructOutputValueParamsInterfaces.cpp | 57 + ...cxReconstructOutputValueParamsInterfaces.h | 122 + .../cxReconstructParams.cpp | 179 + .../cxReconstructParams.h | 93 + .../cxReconstructPreprocessor.cpp | 461 + .../cxReconstructPreprocessor.h | 77 + .../cxReconstructThreads.cpp | 101 + .../cxReconstructThreads.h | 114 + .../cxReconstructedOutputVolumeParams.cpp | 115 + .../cxReconstructedOutputVolumeParams.h | 90 + .../cxReconstructionExecuter.cpp | 185 + .../cxReconstructionExecuter.h | 83 + .../cxReconstructionMethodService.h | 81 + .../cxReconstructionWidget.cpp | 282 + .../cxReconstructionWidget.h | 99 + .../cxUsReconstructionGUIExtenderService.cpp | 43 + .../cxUsReconstructionGUIExtenderService.h | 48 + .../cxUsReconstructionImplService.cpp | 296 + .../cxUsReconstructionImplService.h | 137 + .../cxUsReconstructionPluginActivator.cpp | 68 + .../cxUsReconstructionPluginActivator.h | 59 + .../cxUsReconstructionService.cpp | 26 + .../cxUsReconstructionService.h | 108 + .../cxUsReconstructionServiceNull.cpp | 126 + .../cxUsReconstructionServiceNull.h | 63 + .../cxUsReconstructionServiceProxy.cpp | 178 + .../cxUsReconstructionServiceProxy.h | 71 + .../doc/org.custusx.usreconstruction.md | 23 + .../manifest_headers.cmake | 4 + .../matrixInterpolation.cpp | 195 + .../matrixInterpolation.h | 47 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 31 + .../testing/cxtestPositionFilter.cpp | 163 + .../testing/cxtestReconstructRealData.cpp | 144 + .../testing/cxtestReconstructRealData.h | 48 + .../cxtestReconstructionAlgorithmFixture.cpp | 161 + .../cxtestReconstructionAlgorithmFixture.h | 101 + .../testing/cxtestReconstructionManager.cpp | 203 + .../cxtestReconstructionManagerFixture.cpp | 157 + .../cxtestReconstructionManagerFixture.h | 62 + .../CMakeLists.txt | 76 + .../cxVBPluginActivator.cpp | 44 + .../cxVBPluginActivator.h | 59 + .../cxVBService.cpp | 34 + .../cxVBService.h | 48 + .../cxVBWidget.cpp | 272 + .../cxVBWidget.h | 87 + .../cxVBcameraPath.cpp | 235 + .../cxVBcameraPath.h | 90 + .../doc/org.custusx.virtualbronchoscopy.md | 14 + .../target_libraries.cmake | 9 + .../org.custusx.webserver/CMakeLists.txt | 77 + .../cxHttpRequestHandler.cpp | 367 + .../cxHttpRequestHandler.h | 83 + .../cxLayoutVideoSource.cpp | 105 + .../cxLayoutVideoSource.h | 58 + .../org.custusx.webserver/cxRemoteAPI.cpp | 68 + .../org.custusx.webserver/cxRemoteAPI.h | 52 + .../cxScreenVideoProvider.cpp | 188 + .../cxScreenVideoProvider.h | 75 + .../cxWebServerGUIExtenderService.cpp | 37 + .../cxWebServerGUIExtenderService.h | 50 + .../cxWebServerPluginActivator.cpp | 47 + .../cxWebServerPluginActivator.h | 45 + .../cxWebServerWidget.cpp | 83 + .../org.custusx.webserver/cxWebServerWidget.h | 59 + .../target_libraries.cmake | 9 + .../testing/CMakeLists.txt | 27 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../testing/cxtestWebServerPlugin.cpp | 16 + source/resource/CMakeLists.txt | 26 + source/resource/GUIExtender/CMakeLists.txt | 20 + .../GUIExtender/cxGUIExtenderService.cpp | 17 + .../GUIExtender/cxGUIExtenderService.h | 63 + .../OpenIGTLinkUtilities/CMakeLists.txt | 42 + .../cxIGTLinkConversion.cpp | 207 + .../cxIGTLinkConversion.h | 72 + .../cxIGTLinkConversionBase.cpp | 35 + .../cxIGTLinkConversionBase.h | 41 + .../cxIGTLinkConversionImage.cpp | 421 + .../cxIGTLinkConversionImage.h | 70 + .../cxIGTLinkConversionPolyData.cpp | 495 + .../cxIGTLinkConversionPolyData.h | 67 + .../cxIGTLinkConversionSonixCXLegacy.cpp | 257 + .../cxIGTLinkConversionSonixCXLegacy.h | 84 + .../cxIGTLinkImageMessage.cpp | 57 + .../cxIGTLinkImageMessage.h | 51 + .../cxIGTLinkUSStatusMessage.cpp | 169 + .../cxIGTLinkUSStatusMessage.h | 90 + .../OpenIGTLinkUtilities/igtl_sonix_status.c | 37 + .../OpenIGTLinkUtilities/igtl_sonix_status.h | 80 + .../OpenIGTLinkUtilities/igtl_us_status.c | 48 + .../OpenIGTLinkUtilities/igtl_us_status.h | 81 + .../testing/CMakeLists.txt | 23 + .../testing/cxtestCatchIGTLinkConversion.cpp | 153 + .../cxtestIGTLinkConversionFixture.cpp | 92 + .../testing/cxtestIGTLinkConversionFixture.h | 49 + source/resource/core/CMakeLists.txt | 355 + source/resource/core/Data/cxActiveData.cpp | 253 + source/resource/core/Data/cxActiveData.h | 90 + .../resource/core/Data/cxActiveImageProxy.cpp | 67 + .../resource/core/Data/cxActiveImageProxy.h | 76 + source/resource/core/Data/cxAngleMetric.cpp | 120 + source/resource/core/Data/cxAngleMetric.h | 93 + source/resource/core/Data/cxCustomMetric.cpp | 580 + source/resource/core/Data/cxCustomMetric.h | 147 + source/resource/core/Data/cxData.cpp | 274 + source/resource/core/Data/cxData.h | 176 + source/resource/core/Data/cxDataFactory.cpp | 82 + source/resource/core/Data/cxDataFactory.h | 57 + source/resource/core/Data/cxDataMetric.cpp | 108 + source/resource/core/Data/cxDataMetric.h | 80 + .../resource/core/Data/cxDistanceMetric.cpp | 168 + source/resource/core/Data/cxDistanceMetric.h | 94 + source/resource/core/Data/cxErrorObserver.cpp | 19 + source/resource/core/Data/cxErrorObserver.h | 83 + .../core/Data/cxFileManagerService.cpp | 28 + .../resource/core/Data/cxFileManagerService.h | 67 + .../core/Data/cxFileManagerServiceBase.cpp | 197 + .../core/Data/cxFileManagerServiceBase.h | 68 + .../core/Data/cxFileManagerServiceNull.cpp | 118 + .../core/Data/cxFileManagerServiceNull.h | 52 + .../core/Data/cxFileManagerServiceProxy.cpp | 133 + .../core/Data/cxFileManagerServiceProxy.h | 64 + .../core/Data/cxFileReaderWriterService.cpp | 91 + .../core/Data/cxFileReaderWriterService.h | 107 + .../Data/cxFileReaderWriterServiceNull.cpp | 90 + .../core/Data/cxFileReaderWriterServiceNull.h | 48 + .../Data/cxFileReaderWriterServiceProxy.cpp | 96 + .../Data/cxFileReaderWriterServiceProxy.h | 55 + source/resource/core/Data/cxFrameForest.cpp | 175 + source/resource/core/Data/cxFrameForest.h | 90 + source/resource/core/Data/cxFrameMetric.cpp | 50 + source/resource/core/Data/cxFrameMetric.h | 57 + .../resource/core/Data/cxFrameMetricBase.cpp | 108 + source/resource/core/Data/cxFrameMetricBase.h | 60 + .../resource/core/Data/cxGPUImageBuffer.cpp | 606 + source/resource/core/Data/cxGPUImageBuffer.h | 143 + source/resource/core/Data/cxImage.cpp | 996 + source/resource/core/Data/cxImage.h | 223 + .../core/Data/cxImageDefaultTFGenerator.cpp | 186 + .../core/Data/cxImageDefaultTFGenerator.h | 59 + source/resource/core/Data/cxImageLUT2D.cpp | 190 + source/resource/core/Data/cxImageLUT2D.h | 71 + .../resource/core/Data/cxImageParameters.cpp | 181 + source/resource/core/Data/cxImageParameters.h | 63 + source/resource/core/Data/cxImageTF3D.cpp | 148 + source/resource/core/Data/cxImageTF3D.h | 77 + source/resource/core/Data/cxImageTFData.cpp | 383 + source/resource/core/Data/cxImageTFData.h | 132 + source/resource/core/Data/cxLandmark.cpp | 206 + source/resource/core/Data/cxLandmark.h | 112 + source/resource/core/Data/cxMesh.cpp | 457 + source/resource/core/Data/cxMesh.h | 132 + .../resource/core/Data/cxMeshPropertyData.cpp | 140 + .../resource/core/Data/cxMeshPropertyData.h | 64 + .../resource/core/Data/cxMeshTextureData.cpp | 141 + source/resource/core/Data/cxMeshTextureData.h | 70 + .../Data/cxMetricReferenceArgumentList.cpp | 137 + .../core/Data/cxMetricReferenceArgumentList.h | 64 + .../core/Data/cxNavigatedVideoImage.cpp | 98 + .../core/Data/cxNavigatedVideoImage.h | 54 + source/resource/core/Data/cxPlaneMetric.cpp | 82 + source/resource/core/Data/cxPlaneMetric.h | 87 + source/resource/core/Data/cxPointMetric.cpp | 133 + source/resource/core/Data/cxPointMetric.h | 87 + source/resource/core/Data/cxPresets.cpp | 124 + source/resource/core/Data/cxPresets.h | 84 + .../core/Data/cxRegionOfInterestMetric.cpp | 241 + .../core/Data/cxRegionOfInterestMetric.h | 125 + .../core/Data/cxRegistrationTransform.cpp | 478 + .../core/Data/cxRegistrationTransform.h | 141 + source/resource/core/Data/cxShapedMetric.cpp | 142 + source/resource/core/Data/cxShapedMetric.h | 92 + source/resource/core/Data/cxSphereMetric.cpp | 84 + source/resource/core/Data/cxSphereMetric.h | 78 + source/resource/core/Data/cxToolMetric.cpp | 90 + source/resource/core/Data/cxToolMetric.h | 68 + source/resource/core/Data/cxTrackedStream.cpp | 209 + source/resource/core/Data/cxTrackedStream.h | 83 + .../Data/cxTransferFunctions3DPresets.cpp | 202 + .../core/Data/cxTransferFunctions3DPresets.h | 66 + .../core/Data/cxUnsignedDerivedImage.cpp | 155 + .../core/Data/cxUnsignedDerivedImage.h | 81 + .../doc/org.custusx.resource.core.metrics.md | 84 + source/resource/core/Math/cxBoundingBox3D.cpp | 310 + source/resource/core/Math/cxBoundingBox3D.h | 107 + source/resource/core/Math/cxFrame3D.cpp | 192 + source/resource/core/Math/cxFrame3D.h | 103 + source/resource/core/Math/cxMathBase.h | 74 + source/resource/core/Math/cxMathUtils.cpp | 59 + source/resource/core/Math/cxMathUtils.h | 29 + .../core/Math/cxMatrixBaseEigenAddons.h | 51 + .../core/Math/cxPlainObjectEigenAddons.h | 41 + source/resource/core/Math/cxTransform3D.cpp | 291 + source/resource/core/Math/cxTransform3D.h | 242 + .../core/Math/cxTransformEigenAddons.h | 40 + source/resource/core/Math/cxVector3D.cpp | 115 + source/resource/core/Math/cxVector3D.h | 70 + .../resource/core/Tool/ProbeXmlConfigParser.h | 102 + .../core/Tool/ProbeXmlConfigParserImpl.cpp | 469 + .../core/Tool/ProbeXmlConfigParserImpl.h | 95 + .../core/Tool/ProbeXmlConfigParserMock.cpp | 82 + .../core/Tool/ProbeXmlConfigParserMock.h | 49 + .../resource/core/Tool/cxActiveToolProxy.cpp | 70 + source/resource/core/Tool/cxActiveToolProxy.h | 78 + ...CreateProbeDefinitionFromConfiguration.cpp | 100 + ...cxCreateProbeDefinitionFromConfiguration.h | 100 + source/resource/core/Tool/cxDummyTool.cpp | 373 + source/resource/core/Tool/cxDummyTool.h | 225 + .../resource/core/Tool/cxDummyToolManager.cpp | 187 + .../resource/core/Tool/cxDummyToolManager.h | 108 + source/resource/core/Tool/cxManualTool.cpp | 126 + source/resource/core/Tool/cxManualTool.h | 75 + .../core/Tool/cxManualToolAdapter.cpp | 125 + .../resource/core/Tool/cxManualToolAdapter.h | 66 + source/resource/core/Tool/cxPlaybackTool.cpp | 148 + source/resource/core/Tool/cxPlaybackTool.h | 80 + source/resource/core/Tool/cxProbe.h | 77 + .../core/Tool/cxProbeAdapterRTSource.cpp | 166 + .../core/Tool/cxProbeAdapterRTSource.h | 79 + .../resource/core/Tool/cxProbeDefinition.cpp | 303 + source/resource/core/Tool/cxProbeDefinition.h | 181 + source/resource/core/Tool/cxProbeImpl.cpp | 399 + source/resource/core/Tool/cxProbeImpl.h | 119 + source/resource/core/Tool/cxProbeSector.cpp | 441 + source/resource/core/Tool/cxProbeSector.h | 68 + source/resource/core/Tool/cxSliceProxy.cpp | 272 + source/resource/core/Tool/cxSliceProxy.h | 151 + .../resource/core/Tool/cxSlicedImageProxy.cpp | 277 + .../resource/core/Tool/cxSlicedImageProxy.h | 113 + source/resource/core/Tool/cxTool.cpp | 59 + source/resource/core/Tool/cxTool.h | 154 + .../core/Tool/cxToolConfigurationParser.cpp | 401 + .../core/Tool/cxToolConfigurationParser.h | 102 + .../resource/core/Tool/cxToolFileParser.cpp | 361 + source/resource/core/Tool/cxToolFileParser.h | 132 + source/resource/core/Tool/cxToolImpl.cpp | 156 + source/resource/core/Tool/cxToolImpl.h | 76 + source/resource/core/Tool/cxToolNull.cpp | 139 + source/resource/core/Tool/cxToolNull.h | 72 + source/resource/core/Tool/cxToolProxy.cpp | 196 + source/resource/core/Tool/cxToolProxy.h | 90 + source/resource/core/Tool/cxTracker.cpp | 21 + source/resource/core/Tool/cxTracker.h | 34 + .../core/Tool/cxTrackerConfiguration.cpp | 30 + .../core/Tool/cxTrackerConfiguration.h | 88 + .../core/Tool/cxTrackerConfigurationImpl.cpp | 275 + .../core/Tool/cxTrackerConfigurationImpl.h | 63 + .../core/Tool/cxTrackerConfigurationNull.h | 48 + .../core/Tool/cxTrackingPositionFilter.cpp | 121 + .../core/Tool/cxTrackingPositionFilter.h | 59 + .../resource/core/Tool/cxTrackingService.cpp | 25 + source/resource/core/Tool/cxTrackingService.h | 100 + .../core/Tool/cxTrackingServiceNull.cpp | 152 + .../core/Tool/cxTrackingServiceNull.h | 66 + .../core/Tool/cxTrackingServiceProxy.cpp | 186 + .../core/Tool/cxTrackingServiceProxy.h | 75 + .../core/Tool/cxTrackingSystemService.cpp | 113 + .../core/Tool/cxTrackingSystemService.h | 80 + .../core/Video/cxBasicVideoSource.cpp | 203 + .../resource/core/Video/cxBasicVideoSource.h | 109 + .../resource/core/Video/cxStreamerService.cpp | 27 + .../resource/core/Video/cxStreamerService.h | 86 + .../core/Video/cxStreamerServiceNull.cpp | 43 + .../core/Video/cxStreamerServiceNull.h | 42 + .../core/Video/cxStreamerServiceProxy.cpp | 73 + .../core/Video/cxStreamerServiceProxy.h | 52 + .../cxStringPropertyActiveVideoSource.cpp | 59 + .../Video/cxStringPropertyActiveVideoSource.h | 46 + .../resource/core/Video/cxTestVideoSource.cpp | 126 + .../resource/core/Video/cxTestVideoSource.h | 90 + .../resource/core/Video/cxVideoRecorder.cpp | 123 + source/resource/core/Video/cxVideoRecorder.h | 73 + source/resource/core/Video/cxVideoService.cpp | 27 + source/resource/core/Video/cxVideoService.h | 114 + .../core/Video/cxVideoServiceNull.cpp | 87 + .../resource/core/Video/cxVideoServiceNull.h | 51 + .../core/Video/cxVideoServiceProxy.cpp | 139 + .../resource/core/Video/cxVideoServiceProxy.h | 59 + source/resource/core/Video/cxVideoSource.h | 80 + .../resource/core/Video/cxVideoSourceSHM.cpp | 208 + source/resource/core/Video/cxVideoSourceSHM.h | 117 + .../ItkVtkGlue/itkImageToVTKImageFilter.h | 134 + .../ItkVtkGlue/itkImageToVTKImageFilter.txx | 144 + .../ItkVtkGlue/itkVTKImageToImageFilter.h | 107 + .../ItkVtkGlue/itkVTKImageToImageFilter.txx | 144 + .../core/algorithms/cxAlgorithmHelpers.cpp | 126 + .../core/algorithms/cxAlgorithmHelpers.h | 58 + .../algorithms/cxCompositeTimedAlgorithm.cpp | 186 + .../algorithms/cxCompositeTimedAlgorithm.h | 105 + .../core/algorithms/cxImageAlgorithms.cpp | 516 + .../core/algorithms/cxImageAlgorithms.h | 129 + .../algorithms/cxThreadedTimedAlgorithm.cpp | 71 + .../algorithms/cxThreadedTimedAlgorithm.h | 119 + .../core/algorithms/cxTimedAlgorithm.cpp | 75 + .../core/algorithms/cxTimedAlgorithm.h | 98 + .../itkBinaryThinningImageFilter3D.h | 170 + .../itkBinaryThinningImageFilter3D.txx | 972 + source/resource/core/cxCoreServices.cpp | 56 + source/resource/core/cxCoreServices.h | 69 + source/resource/core/cxForwardDeclarations.h | 177 + source/resource/core/cxPrecompiledHeader.cpp | 1 + source/resource/core/cxPrecompiledHeader.h | 25 + source/resource/core/logger/cxAudio.h | 50 + source/resource/core/logger/cxLog.cpp | 139 + source/resource/core/logger/cxLog.h | 100 + .../resource/core/logger/cxLogFileWatcher.cpp | 43 + .../resource/core/logger/cxLogFileWatcher.h | 65 + source/resource/core/logger/cxLogMessage.cpp | 110 + source/resource/core/logger/cxLogMessage.h | 93 + .../core/logger/cxLogMessageFilter.cpp | 21 + .../resource/core/logger/cxLogMessageFilter.h | 124 + source/resource/core/logger/cxLogger.cpp | 76 + source/resource/core/logger/cxLogger.h | 128 + .../core/logger/cxMessageListener.cpp | 146 + .../resource/core/logger/cxMessageListener.h | 77 + source/resource/core/logger/cxReporter.cpp | 214 + source/resource/core/logger/cxReporter.h | 134 + .../core/logger/internal/cxLogFile.cpp | 300 + .../resource/core/logger/internal/cxLogFile.h | 68 + .../internal/cxLogFileWatcherThread.cpp | 119 + .../logger/internal/cxLogFileWatcherThread.h | 85 + .../internal/cxLogIOStreamRedirecter.cpp | 111 + .../logger/internal/cxLogIOStreamRedirecter.h | 48 + .../logger/internal/cxLogQDebugRedirecter.cpp | 67 + .../logger/internal/cxLogQDebugRedirecter.h | 34 + .../core/logger/internal/cxLogThread.cpp | 148 + .../core/logger/internal/cxLogThread.h | 122 + .../internal/cxReporterMessageRepository.cpp | 145 + .../internal/cxReporterMessageRepository.h | 101 + .../core/logger/internal/cxReporterThread.cpp | 136 + .../core/logger/internal/cxReporterThread.h | 95 + .../core/network/cxNetworkService.cpp | 26 + .../resource/core/network/cxNetworkService.h | 49 + .../patientModel/cxPatientModelService.cpp | 76 + .../core/patientModel/cxPatientModelService.h | 212 + .../cxPatientModelServiceNull.cpp | 190 + .../patientModel/cxPatientModelServiceNull.h | 76 + .../cxPatientModelServiceProxy.cpp | 242 + .../patientModel/cxPatientModelServiceProxy.h | 96 + .../core/properties/cxBoolProperty.cpp | 81 + .../resource/core/properties/cxBoolProperty.h | 81 + .../core/properties/cxBoolPropertyBase.h | 64 + .../core/properties/cxColorProperty.cpp | 69 + .../core/properties/cxColorProperty.h | 72 + .../core/properties/cxColorPropertyBase.h | 64 + .../core/properties/cxDoublePairProperty.cpp | 94 + .../core/properties/cxDoublePairProperty.h | 87 + .../properties/cxDoublePairPropertyBase.h | 118 + .../core/properties/cxDoubleProperty.cpp | 97 + .../core/properties/cxDoubleProperty.h | 96 + .../core/properties/cxDoublePropertyBase.h | 162 + .../cxDoublePropertyTemporalCalibration.cpp | 75 + .../cxDoublePropertyTemporalCalibration.h | 55 + .../core/properties/cxFilePathProperty.cpp | 74 + .../core/properties/cxFilePathProperty.h | 57 + .../properties/cxFilePathPropertyBase.cpp | 134 + .../core/properties/cxFilePathPropertyBase.h | 94 + .../core/properties/cxFilePreviewProperty.cpp | 38 + .../core/properties/cxFilePreviewProperty.h | 47 + .../resource/core/properties/cxProperty.cpp | 86 + source/resource/core/properties/cxProperty.h | 79 + .../resource/core/properties/cxPropertyNull.h | 52 + .../properties/cxSelectDataStringProperty.cpp | 215 + .../properties/cxSelectDataStringProperty.h | 176 + .../cxSelectDataStringPropertyBase.cpp | 158 + .../cxSelectDataStringPropertyBase.h | 75 + .../core/properties/cxSpaceProperty.cpp | 135 + .../core/properties/cxSpaceProperty.h | 85 + .../core/properties/cxSpacePropertyBase.cpp | 2 + .../core/properties/cxSpacePropertyBase.h | 87 + .../core/properties/cxStringListProperty.cpp | 126 + .../core/properties/cxStringListProperty.h | 73 + .../core/properties/cxStringProperty.cpp | 131 + .../core/properties/cxStringProperty.h | 87 + .../core/properties/cxStringPropertyBase.h | 129 + ...cxStringPropertySelectCoordinateSystem.cpp | 94 + .../cxStringPropertySelectCoordinateSystem.h | 92 + .../cxStringPropertySelectPointMetric.cpp | 47 + .../cxStringPropertySelectPointMetric.h | 43 + .../properties/cxStringPropertySelectTool.cpp | 139 + .../properties/cxStringPropertySelectTool.h | 83 + .../core/properties/cxToolProperty.cpp | 146 + .../resource/core/properties/cxToolProperty.h | 95 + .../cxVector3DComponentProperty.cpp | 68 + .../properties/cxVector3DComponentProperty.h | 64 + .../core/properties/cxVector3DProperty.cpp | 101 + .../core/properties/cxVector3DProperty.h | 87 + .../core/properties/cxVector3DPropertyBase.h | 114 + source/resource/core/settings/CMakeLists.txt | 49 + source/resource/core/settings/cxConfig.h.in | 31 + .../core/settings/cxConfigDescription.txt.in | 1 + .../core/settings/cxDataLocations.cpp | 357 + .../resource/core/settings/cxDataLocations.h | 77 + .../core/settings/cxPatientStorage.cpp | 73 + .../resource/core/settings/cxPatientStorage.h | 67 + source/resource/core/settings/cxProfile.cpp | 359 + source/resource/core/settings/cxProfile.h | 166 + .../settings/cxRequestEnterStateTransition.h | 72 + .../core/settings/cxSessionStorageService.cpp | 64 + .../core/settings/cxSessionStorageService.h | 73 + .../settings/cxSessionStorageServiceProxy.cpp | 99 + .../settings/cxSessionStorageServiceProxy.h | 53 + source/resource/core/settings/cxSettings.cpp | 85 + source/resource/core/settings/cxSettings.h | 84 + .../resource/core/settings/cxStateService.cpp | 137 + .../resource/core/settings/cxStateService.h | 144 + .../core/settings/cxStateServiceNull.cpp | 39 + .../core/settings/cxStateServiceNull.h | 51 + .../core/settings/cxStateServiceProxy.cpp | 125 + .../core/settings/cxStateServiceProxy.h | 60 + .../core/settings/cxWorkflowState.cpp | 96 + .../resource/core/settings/cxWorkflowState.h | 109 + .../core/settings/cxWorkflowStateMachine.cpp | 115 + .../core/settings/cxWorkflowStateMachine.h | 76 + source/resource/core/testing/CMakeLists.txt | 91 + .../core/testing/cxtestActiveData.cpp | 185 + .../core/testing/cxtestCatchBoundingBox3D.cpp | 136 + .../core/testing/cxtestCatchFrame.cpp | 89 + .../testing/cxtestCatchImageAlgorithms.cpp | 110 + .../testing/cxtestCatchProcessWrapper.cpp | 46 + .../core/testing/cxtestCatchSharedMemory.cpp | 43 + .../core/testing/cxtestCatchSliceComputer.cpp | 216 + .../core/testing/cxtestCatchStringHelpers.cpp | 54 + .../core/testing/cxtestCatchTransform3D.cpp | 217 + .../core/testing/cxtestCatchVLCRecorder.cpp | 111 + .../core/testing/cxtestCatchVector3D.cpp | 38 + .../core/testing/cxtestCoreServices.cpp | 32 + .../core/testing/cxtestDataLocations.cpp | 36 + .../core/testing/cxtestEnumConversion.cpp | 87 + .../testing/cxtestFileManagerServiceMock.cpp | 24 + .../testing/cxtestFileManagerServiceMock.h | 31 + source/resource/core/testing/cxtestImage.cpp | 304 + .../core/testing/cxtestImageParameters.cpp | 156 + .../core/testing/cxtestOpenCLPrinter.cpp | 24 + .../testing/cxtestPatientModelServiceMock.cpp | 76 + .../testing/cxtestPatientModelServiceMock.h | 41 + .../core/testing/cxtestProbeDefinition.cpp | 92 + .../testing/cxtestProcessWrapperFixture.cpp | 84 + .../testing/cxtestProcessWrapperFixture.h | 42 + .../resource/core/testing/cxtestReporter.cpp | 100 + .../core/testing/cxtestSpaceListenerMock.cpp | 19 + .../core/testing/cxtestSpaceListenerMock.h | 36 + .../core/testing/cxtestSpaceProviderMock.cpp | 17 + .../core/testing/cxtestSpaceProviderMock.h | 55 + .../cxtestStreamedTimestampSynchronizer.cpp | 117 + .../core/testing/cxtestTestDataStructures.cpp | 26 + .../core/testing/cxtestTestDataStructures.h | 33 + .../testing/cxtestTrackingPositionFilter.cpp | 61 + .../testing/cxtestTrackingSystemService.cpp | 109 + .../core/testing/cxtestVLCRecorderFixture.cpp | 73 + .../core/testing/cxtestVLCRecorderFixture.h | 47 + .../core/testing/cxtestVisServices.cpp | 129 + .../resource/core/testing/cxtestVisServices.h | 66 + .../core/testing/cxtestXmlOptionFile.cpp | 145 + .../cxSavingVideoRecorder.cpp | 265 + .../cxSavingVideoRecorder.h | 148 + .../usReconstructionTypes/cxUSFrameData.cpp | 537 + .../usReconstructionTypes/cxUSFrameData.h | 143 + .../cxUSReconstructInputData.cpp | 41 + .../cxUSReconstructInputData.h | 73 + .../cxUSReconstructInputDataAlgoritms.cpp | 107 + .../cxUSReconstructInputDataAlgoritms.h | 73 + .../cxUsReconstructionFileMaker.cpp | 432 + .../cxUsReconstructionFileMaker.h | 118 + .../cxUsReconstructionFileReader.cpp | 375 + .../cxUsReconstructionFileReader.h | 175 + ...x.resource.core.usacquisitionfileformat.md | 125 + .../testing/CMakeLists.txt | 24 + .../testing/cxCppUnitMain.cpp | 54 + .../testing/cxTestUSReconstructionFileIO.cpp | 179 + .../testing/cxTestUSReconstructionFileIO.h | 76 + .../cxtestCatchUSReconstructionFile.cpp | 81 + ...cxtestUSReconstructInputDataAlgorithms.cpp | 77 + .../cxtestUSReconstructionFileFixture.cpp | 149 + .../cxtestUSReconstructionFileFixture.h | 64 + .../resource/core/utilities/cxApplication.cpp | 143 + .../resource/core/utilities/cxApplication.h | 51 + .../utilities/cxCoordinateSystemHelpers.cpp | 51 + .../utilities/cxCoordinateSystemHelpers.h | 51 + .../core/utilities/cxCustomMetaImage.cpp | 271 + .../core/utilities/cxCustomMetaImage.h | 62 + .../core/utilities/cxCyclicActionLogger.cpp | 205 + .../core/utilities/cxCyclicActionLogger.h | 77 + .../core/utilities/cxDefinitionStrings.cpp | 162 + .../core/utilities/cxDefinitionStrings.h | 39 + .../resource/core/utilities/cxDefinitions.cpp | 18 + .../resource/core/utilities/cxDefinitions.h | 243 + .../resource/core/utilities/cxDoubleRange.h | 79 + .../core/utilities/cxEnumConversion.h | 23 + .../resource/core/utilities/cxEnumConverter.h | 201 + .../resource/core/utilities/cxFileHelpers.cpp | 138 + .../resource/core/utilities/cxFileHelpers.h | 56 + .../resource/core/utilities/cxGLHelpers.cpp | 35 + source/resource/core/utilities/cxGLHelpers.h | 41 + .../core/utilities/cxImageDataContainer.cpp | 225 + .../core/utilities/cxImageDataContainer.h | 152 + source/resource/core/utilities/cxIndent.cpp | 49 + source/resource/core/utilities/cxIndent.h | 57 + .../resource/core/utilities/cxMeshHelpers.cpp | 108 + .../resource/core/utilities/cxMeshHelpers.h | 52 + .../resource/core/utilities/cxNullDeleter.h | 13 + .../core/utilities/cxOpenCLPrinter.cpp | 171 + .../resource/core/utilities/cxOpenCLPrinter.h | 52 + .../core/utilities/cxOptionalValue.cpp | 26 + .../resource/core/utilities/cxOptionalValue.h | 44 + .../core/utilities/cxOrderedQDomDocument.h | 48 + .../core/utilities/cxPlaneTypeCollection.cpp | 71 + .../core/utilities/cxPlaneTypeCollection.h | 49 + .../core/utilities/cxPlaybackTime.cpp | 237 + .../resource/core/utilities/cxPlaybackTime.h | 112 + .../core/utilities/cxPositionStorageFile.cpp | 259 + .../core/utilities/cxPositionStorageFile.h | 105 + .../core/utilities/cxProcessReporter.cpp | 102 + .../core/utilities/cxProcessReporter.h | 55 + .../core/utilities/cxProcessWrapper.cpp | 117 + .../core/utilities/cxProcessWrapper.h | 76 + .../core/utilities/cxSharedMemory.cpp | 204 + .../resource/core/utilities/cxSharedMemory.h | 109 + .../core/utilities/cxSharedPointerChecker.cpp | 30 + .../core/utilities/cxSharedPointerChecker.h | 49 + .../core/utilities/cxSliceComputer.cpp | 471 + .../resource/core/utilities/cxSliceComputer.h | 108 + source/resource/core/utilities/cxSocket.cpp | 204 + source/resource/core/utilities/cxSocket.h | 111 + .../core/utilities/cxSocketConnection.cpp | 226 + .../core/utilities/cxSocketConnection.h | 124 + .../core/utilities/cxSpaceListener.cpp | 18 + .../resource/core/utilities/cxSpaceListener.h | 45 + .../core/utilities/cxSpaceListenerImpl.cpp | 141 + .../core/utilities/cxSpaceListenerImpl.h | 57 + .../core/utilities/cxSpaceProvider.cpp | 27 + .../resource/core/utilities/cxSpaceProvider.h | 63 + .../core/utilities/cxSpaceProviderImpl.cpp | 380 + .../core/utilities/cxSpaceProviderImpl.h | 71 + .../core/utilities/cxSpaceProviderNull.cpp | 93 + .../core/utilities/cxSpaceProviderNull.h | 41 + .../cxStreamedTimestampSynchronizer.cpp | 95 + .../cxStreamedTimestampSynchronizer.h | 87 + .../core/utilities/cxStringHelpers.cpp | 65 + .../resource/core/utilities/cxStringHelpers.h | 48 + .../resource/core/utilities/cxSyncedValue.cpp | 38 + .../resource/core/utilities/cxSyncedValue.h | 48 + source/resource/core/utilities/cxTime.cpp | 64 + source/resource/core/utilities/cxTime.h | 60 + .../resource/core/utilities/cxTimeKeeper.cpp | 46 + source/resource/core/utilities/cxTimeKeeper.h | 46 + .../core/utilities/cxTransformFile.cpp | 76 + .../resource/core/utilities/cxTransformFile.h | 55 + .../core/utilities/cxTypeConversions.cpp | 83 + .../core/utilities/cxTypeConversions.h | 107 + .../resource/core/utilities/cxUtilHelpers.cpp | 81 + .../resource/core/utilities/cxUtilHelpers.h | 63 + .../resource/core/utilities/cxVLCRecorder.cpp | 153 + .../resource/core/utilities/cxVLCRecorder.h | 93 + .../core/utilities/cxViewportListener.cpp | 206 + .../core/utilities/cxViewportListener.h | 110 + .../core/utilities/cxVolumeHelpers.cpp | 415 + .../resource/core/utilities/cxVolumeHelpers.h | 91 + .../core/utilities/cxXMLNodeWrapper.cpp | 152 + .../core/utilities/cxXMLNodeWrapper.h | 101 + .../core/utilities/cxXmlFileHandler.cpp | 61 + .../core/utilities/cxXmlFileHandler.h | 38 + .../core/utilities/cxXmlOptionItem.cpp | 422 + .../resource/core/utilities/cxXmlOptionItem.h | 126 + source/resource/core/utilities/sscConfig.h.in | 12 + .../core/vesselReg/HackTPSTransform.hxx | 18 + .../core/vesselReg/SeansVesselReg.cxx | 1006 + .../core/vesselReg/SeansVesselReg.hxx | 144 + .../vesselReg/SeansVesselReg.hxx.autosave | 145 + source/resource/core/vtkForwardDeclarations.h | 170 + source/resource/filter/CMakeLists.txt | 49 + source/resource/filter/cxFilter.cpp | 23 + source/resource/filter/cxFilter.h | 164 + source/resource/filter/cxFilterGroup.cpp | 46 + source/resource/filter/cxFilterGroup.h | 69 + source/resource/filter/cxFilterImpl.cpp | 143 + source/resource/filter/cxFilterImpl.h | 93 + .../filter/cxFilterTimedAlgorithm.cpp | 65 + .../resource/filter/cxFilterTimedAlgorithm.h | 59 + source/resource/filter/cxPipeline.cpp | 380 + source/resource/filter/cxPipeline.h | 150 + .../filter/doc/org.custusx.resource.filter.md | 117 + .../doc/org.custusx.resource.filter.script.md | 28 + .../cxBinaryThinningImageFilter3DFilter.cpp | 198 + .../cxBinaryThinningImageFilter3DFilter.h | 57 + .../filters/cxBinaryThresholdImageFilter.cpp | 248 + .../filters/cxBinaryThresholdImageFilter.h | 83 + .../filter/filters/cxColorVariationFilter.cpp | 339 + .../filter/filters/cxColorVariationFilter.h | 85 + .../cxConnectedThresholdImageFilter.cpp | 156 + .../filters/cxConnectedThresholdImageFilter.h | 73 + .../filter/filters/cxContourFilter.cpp | 369 + .../resource/filter/filters/cxContourFilter.h | 96 + .../filter/filters/cxDilationFilter.cpp | 219 + .../filter/filters/cxDilationFilter.h | 53 + .../resource/filter/filters/cxDummyFilter.cpp | 132 + .../resource/filter/filters/cxDummyFilter.h | 54 + .../filter/filters/cxGenericScriptFilter.cpp | 770 + .../filter/filters/cxGenericScriptFilter.h | 145 + .../filter/filters/cxResampleImageFilter.cpp | 154 + .../filter/filters/cxResampleImageFilter.h | 60 + .../filter/filters/cxSmoothingImageFilter.cpp | 151 + .../filter/filters/cxSmoothingImageFilter.h | 61 + source/resource/filter/testing/CMakeLists.txt | 46 + .../cxtestBinaryThresholdImageFilter.cpp | 54 + .../testing/cxtestColorVariationFilter.cpp | 58 + .../filter/testing/cxtestDilationFilter.cpp | 92 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../filter/testing/cxtestScriptFilter.cpp | 621 + .../resource/pluginUtilities/CMakeLists.txt | 28 + .../pluginUtilities/cxRegisteredService.cpp | 41 + .../pluginUtilities/cxRegisteredService.h | 59 + .../cxServiceTrackerCustomizer.h | 79 + .../cxServiceTrackerListener.h | 102 + source/resource/testUtilities/CMakeLists.txt | 69 + .../testUtilities/cisst_code/CMakeLists.txt | 31 + .../cisst_code/cisstMacros.cmake | 224 + .../cisst_code/cisstTestMain.cpp | 258 + .../cisst_code/cisstTestParameters.cpp | 155 + .../cisst_code/cisstTestParameters.h | 109 + .../testUtilities/cisst_code/license.txt | 155 + .../testUtilities/cxSimpleSyntheticVolume.cpp | 137 + .../testUtilities/cxSimpleSyntheticVolume.h | 38 + .../testUtilities/cxSyntheticVolume.cpp | 349 + .../testUtilities/cxSyntheticVolume.h | 126 + .../testUtilities/cxtestCatchExamples.cpp | 211 + .../cxtestDirectSignalListener.cpp | 42 + .../cxtestDirectSignalListener.h | 46 + .../cxtestJenkinsMeasurement.cpp | 40 + .../testUtilities/cxtestJenkinsMeasurement.h | 31 + .../testUtilities/cxtestProbeFixture.cpp | 83 + .../testUtilities/cxtestProbeFixture.h | 53 + .../cxtestQueuedSignalListener.cpp | 82 + .../cxtestQueuedSignalListener.h | 60 + .../cxtestSphereSyntheticVolume.cpp | 52 + .../cxtestSphereSyntheticVolume.h | 43 + .../cxtestSyntheticReconstructInput.cpp | 190 + .../cxtestSyntheticReconstructInput.h | 85 + .../cxtestSyntheticVolumeComparer.cpp | 156 + .../cxtestSyntheticVolumeComparer.h | 68 + .../testUtilities/cxtestUtilities.cpp | 127 + .../resource/testUtilities/cxtestUtilities.h | 88 + .../testUtilities/cxtestVtkPolyDataTree.h | 141 + source/resource/videoServer/CMakeLists.txt | 122 + source/resource/videoServer/SonixHelper.h | 52 + .../cxCommandlineImageStreamerFactory.cpp | 105 + .../cxCommandlineImageStreamerFactory.h | 56 + .../videoServer/cxDirectlyLinkedSender.cpp | 52 + .../videoServer/cxDirectlyLinkedSender.h | 60 + source/resource/videoServer/cxFrame.h | 68 + .../videoServer/cxGrabberSenderQTcpSocket.cpp | 74 + .../videoServer/cxGrabberSenderQTcpSocket.h | 61 + source/resource/videoServer/cxImageServer.cpp | 144 + source/resource/videoServer/cxImageServer.h | 56 + .../videoServer/cxImageStreamerOpenCV.cpp | 518 + .../videoServer/cxImageStreamerOpenCV.h | 113 + .../videoServer/cxImageStreamerSonix.cpp | 440 + .../videoServer/cxImageStreamerSonix.h | 118 + .../videoServer/cxMHDImageStreamer.cpp | 358 + .../resource/videoServer/cxMHDImageStreamer.h | 118 + source/resource/videoServer/cxSender.cpp | 18 + source/resource/videoServer/cxSender.h | 71 + source/resource/videoServer/cxSenderImpl.cpp | 28 + source/resource/videoServer/cxSenderImpl.h | 63 + .../videoServer/cxSonixProbeFileReader.cpp | 131 + .../videoServer/cxSonixProbeFileReader.h | 57 + source/resource/videoServer/cxStreamer.cpp | 64 + source/resource/videoServer/cxStreamer.h | 106 + .../videoServer/cxVideoServerConfig.h.in | 6 + source/resource/videoServer/cxtestSender.cpp | 35 + source/resource/videoServer/cxtestSender.h | 54 + .../videoServer/testing/CMakeLists.txt | 26 + ...kingOnWindowsInLibWithoutExportedClass.cpp | 7 + .../testing/cxtestSonixProbeFileReader.cpp | 67 + .../videoServer/vtkSonixVideoSource.cxx | 1488 ++ .../videoServer/vtkSonixVideoSource.h | 278 + .../videoServer/vtkUltrasoundWin32Header.h | 33 + source/resource/view/CMakeLists.txt | 177 + .../view/Primitives/cxDepthPeeling.cpp | 175 + .../resource/view/Primitives/cxDepthPeeling.h | 44 + .../view/Primitives/cxGraphicalAxes3D.cpp | 179 + .../view/Primitives/cxGraphicalAxes3D.h | 72 + .../view/Primitives/cxGraphicalBox.cpp | 301 + .../resource/view/Primitives/cxGraphicalBox.h | 110 + .../view/Primitives/cxGraphicalDisk.cpp | 252 + .../view/Primitives/cxGraphicalDisk.h | 87 + .../cxGraphicalObjectWithDirection.cpp | 120 + .../cxGraphicalObjectWithDirection.h | 63 + .../view/Primitives/cxGraphicalPrimitives.cpp | 771 + .../view/Primitives/cxGraphicalPrimitives.h | 295 + .../view/Primitives/cxGraphicalTorus3D.cpp | 53 + .../view/Primitives/cxGraphicalTorus3D.h | 45 + .../view/Primitives/cxImageEnveloper.cpp | 151 + .../view/Primitives/cxImageEnveloper.h | 63 + .../view/Primitives/cxImageMapperMonitor.cpp | 106 + .../view/Primitives/cxImageMapperMonitor.h | 62 + .../view/Primitives/cxOpenGLShaders.cpp | 207 + .../view/Primitives/cxOpenGLShaders.h | 46 + .../view/Primitives/cxShaderCallback.cpp | 297 + .../view/Primitives/cxShaderCallback.h | 89 + .../cxSliceAutoViewportCalculator.cpp | 268 + .../cxSliceAutoViewportCalculator.h | 59 + .../view/Primitives/cxSlicePlaneClipper.cpp | 128 + .../view/Primitives/cxSlicePlaneClipper.h | 75 + .../Primitives/cxTexture3DSlicerProxy.cpp | 654 + .../view/Primitives/cxTexture3DSlicerProxy.h | 170 + .../view/Primitives/cxTextureSlicePainter.cpp | 397 + .../view/Primitives/cxTextureSlicePainter.h | 122 + .../resource/view/Primitives/cxToolTracer.cpp | 195 + .../resource/view/Primitives/cxToolTracer.h | 95 + .../Primitives/cxUltrasoundSectorSource.cpp | 86 + .../Primitives/cxUltrasoundSectorSource.h | 76 + .../view/Primitives/cxVideoGraphics.cpp | 312 + .../view/Primitives/cxVideoGraphics.h | 109 + .../view/Primitives/cxVideoSourceGraphics.cpp | 165 + .../view/Primitives/cxVideoSourceGraphics.h | 72 + .../view/Primitives/cxViewFollower.cpp | 151 + .../resource/view/Primitives/cxViewFollower.h | 73 + .../view/Primitives/cxVolumeProperty.cpp | 99 + .../view/Primitives/cxVolumeProperty.h | 59 + .../view/Primitives/cxVtkHelperClasses.cpp | 493 + .../view/Primitives/cxVtkHelperClasses.h | 193 + .../Rep/Shaders/glsl/Texture3DOverlay.frag | 127 + .../Rep/Shaders/glsl/raycasting_shader.frag | 285 + .../Rep/Shaders/glsl/raycasting_shader.vert | 5 + .../view/Rep/Shaders/glsl/upscale.frag | 8 + .../view/Rep/Shaders/glsl/upscale.vert | 6 + source/resource/view/Rep/cxDataMetricRep.cpp | 154 + source/resource/view/Rep/cxDataMetricRep.h | 77 + source/resource/view/Rep/cxDisplayTextRep.cpp | 118 + source/resource/view/Rep/cxDisplayTextRep.h | 63 + source/resource/view/Rep/cxRep.h | 103 + source/resource/view/Rep/cxRepImpl.cpp | 120 + source/resource/view/Rep/cxRepImpl.h | 107 + .../resource/view/Rep2D/cxCrossHairRep2D.cpp | 123 + source/resource/view/Rep2D/cxCrossHairRep2D.h | 76 + .../view/Rep2D/cxDistanceMetricRep2D.cpp | 121 + .../view/Rep2D/cxDistanceMetricRep2D.h | 67 + .../resource/view/Rep2D/cxGeometricRep2D.cpp | 142 + source/resource/view/Rep2D/cxGeometricRep2D.h | 72 + source/resource/view/Rep2D/cxGuideRep2D.cpp | 137 + source/resource/view/Rep2D/cxGuideRep2D.h | 70 + .../Rep2D/cxOrientationAnnotation2DRep.cpp | 150 + .../view/Rep2D/cxOrientationAnnotation2DRep.h | 78 + .../view/Rep2D/cxOrientationAnnotationRep.cpp | 243 + .../view/Rep2D/cxOrientationAnnotationRep.h | 87 + .../view/Rep2D/cxPointMetricRep2D.cpp | 132 + .../resource/view/Rep2D/cxPointMetricRep2D.h | 72 + source/resource/view/Rep2D/cxSlicerRepSW.cpp | 101 + source/resource/view/Rep2D/cxSlicerRepSW.h | 68 + .../view/Rep2D/cxSphereMetricRep2D.cpp | 106 + .../resource/view/Rep2D/cxSphereMetricRep2D.h | 65 + source/resource/view/Rep2D/cxToolRep2D.cpp | 405 + source/resource/view/Rep2D/cxToolRep2D.h | 124 + .../resource/view/Rep3D/cxAngleMetricRep.cpp | 110 + source/resource/view/Rep3D/cxAngleMetricRep.h | 69 + source/resource/view/Rep3D/cxAxesRep.cpp | 90 + source/resource/view/Rep3D/cxAxesRep.h | 60 + .../resource/view/Rep3D/cxCustomMetricRep.cpp | 215 + .../resource/view/Rep3D/cxCustomMetricRep.h | 72 + .../view/Rep3D/cxDistanceMetricRep.cpp | 74 + .../resource/view/Rep3D/cxDistanceMetricRep.h | 62 + .../resource/view/Rep3D/cxDonutMetricRep.cpp | 128 + source/resource/view/Rep3D/cxDonutMetricRep.h | 62 + .../resource/view/Rep3D/cxFiberBundleRep.cpp | 160 + source/resource/view/Rep3D/cxFiberBundleRep.h | 79 + .../resource/view/Rep3D/cxFrameMetricRep.cpp | 61 + source/resource/view/Rep3D/cxFrameMetricRep.h | 60 + source/resource/view/Rep3D/cxGeometricRep.cpp | 216 + source/resource/view/Rep3D/cxGeometricRep.h | 106 + source/resource/view/Rep3D/cxImage2DRep3D.cpp | 157 + source/resource/view/Rep3D/cxImage2DRep3D.h | 111 + source/resource/view/Rep3D/cxLandmarkRep.cpp | 367 + source/resource/view/Rep3D/cxLandmarkRep.h | 160 + .../Rep3D/cxMehdiGPURayCastMultiVolumeRep.cpp | 302 + .../Rep3D/cxMehdiGPURayCastMultiVolumeRep.h | 134 + .../resource/view/Rep3D/cxMetricNamesRep.cpp | 246 + source/resource/view/Rep3D/cxMetricNamesRep.h | 84 + .../Rep3D/cxOrientationAnnotation3DRep.cpp | 249 + .../view/Rep3D/cxOrientationAnnotation3DRep.h | 68 + source/resource/view/Rep3D/cxPickerRep.cpp | 448 + source/resource/view/Rep3D/cxPickerRep.h | 117 + .../resource/view/Rep3D/cxPlaneMetricRep.cpp | 133 + source/resource/view/Rep3D/cxPlaneMetricRep.h | 66 + .../resource/view/Rep3D/cxPointMetricRep.cpp | 89 + source/resource/view/Rep3D/cxPointMetricRep.h | 64 + .../Rep3D/cxRegionOfInterestMetricRep.cpp | 80 + .../view/Rep3D/cxRegionOfInterestMetricRep.h | 59 + .../view/Rep3D/cxSlicePlanes3DRep.cpp | 359 + .../resource/view/Rep3D/cxSlicePlanes3DRep.h | 185 + source/resource/view/Rep3D/cxSlices3DRep.cpp | 105 + source/resource/view/Rep3D/cxSlices3DRep.h | 73 + .../resource/view/Rep3D/cxSphereMetricRep.cpp | 70 + .../resource/view/Rep3D/cxSphereMetricRep.h | 65 + .../resource/view/Rep3D/cxStream2DRep3D.cpp | 87 + source/resource/view/Rep3D/cxStream2DRep3D.h | 56 + source/resource/view/Rep3D/cxStreamRep3D.cpp | 121 + source/resource/view/Rep3D/cxStreamRep3D.h | 57 + .../view/Rep3D/cxTexture3DSlicerRep.cpp | 128 + .../view/Rep3D/cxTexture3DSlicerRep.h | 109 + .../resource/view/Rep3D/cxToolMetricRep.cpp | 104 + source/resource/view/Rep3D/cxToolMetricRep.h | 70 + source/resource/view/Rep3D/cxToolRep3D.cpp | 408 + source/resource/view/Rep3D/cxToolRep3D.h | 121 + .../resource/view/Rep3D/cxVolumetricRep.cpp | 168 + source/resource/view/Rep3D/cxVolumetricRep.h | 107 + source/resource/view/RepVideo/cxVideoRep.cpp | 207 + source/resource/view/RepVideo/cxVideoRep.h | 90 + source/resource/view/View/cxLayoutData.cpp | 299 + source/resource/view/View/cxLayoutData.h | 126 + source/resource/view/View/cxQVTKWidget.cpp | 700 + source/resource/view/View/cxQVTKWidget.h | 191 + .../view/View/cxScreenShotImageWriter.cpp | 115 + .../view/View/cxScreenShotImageWriter.h | 46 + source/resource/view/View/cxView.cpp | 17 + source/resource/view/View/cxView.h | 95 + .../view/View/cxViewCollectionImageWriter.cpp | 171 + .../view/View/cxViewCollectionImageWriter.h | 56 + .../view/View/cxViewCollectionVideoSource.cpp | 5 + .../view/View/cxViewCollectionVideoSource.h | 10 + .../view/View/cxViewCollectionWidget.cpp | 43 + .../view/View/cxViewCollectionWidget.h | 76 + ...ViewCollectionWidgetUsingViewContainer.cpp | 134 + ...cxViewCollectionWidgetUsingViewContainer.h | 64 + .../ViewContainer/cxViewContainer.cpp | 300 + .../internal/ViewContainer/cxViewContainer.h | 94 + .../ViewContainer/cxViewContainerItem.cpp | 94 + .../ViewContainer/cxViewContainerItem.h | 97 + .../cxViewLinkingViewContainerItem.cpp | 77 + .../cxViewLinkingViewContainerItem.h | 49 + .../ViewMixed/cxViewCollectionWidgetMixed.cpp | 194 + .../ViewMixed/cxViewCollectionWidgetMixed.h | 92 + .../View/internal/ViewWidget/QVTKWidget3.cpp | 352 + .../View/internal/ViewWidget/QVTKWidget3.h | 86 + .../internal/ViewWidget/cxMultiViewCache.cpp | 65 + .../internal/ViewWidget/cxMultiViewCache.h | 67 + .../View/internal/ViewWidget/cxViewCache.cpp | 18 + .../View/internal/ViewWidget/cxViewCache.h | 107 + ...cxViewCollectionWidgetUsingViewWidgets.cpp | 161 + .../cxViewCollectionWidgetUsingViewWidgets.h | 72 + .../ViewWidget/cxViewLinkingViewWidget.cpp | 17 + .../ViewWidget/cxViewLinkingViewWidget.h | 97 + .../View/internal/ViewWidget/cxViewWidget.cpp | 189 + .../View/internal/ViewWidget/cxViewWidget.h | 84 + .../resource/view/View/internal/cxOSXHelper.h | 32 + .../view/View/internal/cxOSXHelper.mm | 23 + .../View/internal/cxViewRepCollection.cpp | 220 + .../view/View/internal/cxViewRepCollection.h | 80 + .../view/View/internal/cxViewUtilities.cpp | 37 + .../view/View/internal/cxViewUtilities.h | 41 + source/resource/view/cxCameraControl.cpp | 272 + source/resource/view/cxCameraControl.h | 117 + .../resource/view/cxCameraStyleInteractor.cpp | 118 + .../resource/view/cxCameraStyleInteractor.h | 73 + source/resource/view/cxInteractiveClipper.cpp | 296 + source/resource/view/cxInteractiveClipper.h | 93 + source/resource/view/cxInteractiveCropper.cpp | 330 + source/resource/view/cxInteractiveCropper.h | 97 + source/resource/view/cxLayoutRepository.cpp | 347 + source/resource/view/cxLayoutRepository.h | 67 + source/resource/view/cxNavigation.cpp | 133 + source/resource/view/cxNavigation.h | 52 + .../resource/view/cxRenderWindowFactory.cpp | 114 + source/resource/view/cxRenderWindowFactory.h | 68 + source/resource/view/cxRepContainer.cpp | 2 + source/resource/view/cxRepContainer.h | 116 + .../view/cxSharedContextCreatedCallback.cpp | 62 + .../view/cxSharedContextCreatedCallback.h | 42 + .../resource/view/cxSharedOpenGLContext.cpp | 537 + source/resource/view/cxSharedOpenGLContext.h | 97 + source/resource/view/cxViewGroupData.cpp | 689 + source/resource/view/cxViewGroupData.h | 211 + source/resource/view/cxViewService.cpp | 72 + source/resource/view/cxViewService.h | 107 + source/resource/view/cxViewServiceNull.cpp | 113 + source/resource/view/cxViewServiceNull.h | 64 + source/resource/view/cxViewServiceProxy.cpp | 202 + source/resource/view/cxViewServiceProxy.h | 72 + source/resource/view/cxVisServices.cpp | 38 + source/resource/view/cxVisServices.h | 49 + source/resource/view/testing/CMakeLists.txt | 49 + .../view/testing/cxTestGPURayCaster.cpp | 84 + .../view/testing/cxTestGPURayCaster.h | 44 + .../view/testing/cxTestRenderSpeed.cpp | 215 + .../resource/view/testing/cxTestRenderSpeed.h | 115 + .../resource/view/testing/cxViewsWindow.cpp | 130 + source/resource/view/testing/cxViewsWindow.h | 62 + .../view/testing/cxtestImageEnveloper.cpp | 256 + .../view/testing/cxtestMultiViewCache.cpp | 58 + .../view/testing/cxtestRenderTester.cpp | 359 + .../view/testing/cxtestRenderTester.h | 83 + .../testing/cxtestRenderWindowFactory.cpp | 144 + .../testing/cxtestSharedOpenGLContext.cpp | 191 + .../view/testing/cxtestStream2DRep3D.cpp | 41 + .../view/testing/cxtestVideoGraphics.cpp | 91 + .../testing/cxtestVideoGraphicsFixture.cpp | 87 + .../view/testing/cxtestVideoGraphicsFixture.h | 46 + ...ViewServiceMockWithRenderWindowFactory.cpp | 40 + ...stViewServiceMockWithRenderWindowFactory.h | 35 + source/resource/widgets/CMakeLists.txt | 75 + .../resource/widgets/cxActiveToolWidget.cpp | 35 + source/resource/widgets/cxActiveToolWidget.h | 47 + source/resource/widgets/cxBaseWidget.cpp | 103 + source/resource/widgets/cxBaseWidget.h | 154 + .../resource/widgets/cxBoundingBoxWidget.cpp | 80 + source/resource/widgets/cxBoundingBoxWidget.h | 51 + source/resource/widgets/cxCheckBoxWidget.cpp | 83 + source/resource/widgets/cxCheckBoxWidget.h | 59 + .../resource/widgets/cxColorSelectButton.cpp | 66 + source/resource/widgets/cxColorSelectButton.h | 63 + .../resource/widgets/cxColorSelectWidget.cpp | 75 + source/resource/widgets/cxColorSelectWidget.h | 51 + .../widgets/cxCompactFilterSetupWidget.cpp | 98 + .../widgets/cxCompactFilterSetupWidget.h | 55 + source/resource/widgets/cxConsoleWidget.cpp | 670 + source/resource/widgets/cxConsoleWidget.h | 161 + .../widgets/cxConsoleWidgetCollection.cpp | 201 + .../widgets/cxConsoleWidgetCollection.h | 60 + .../resource/widgets/cxDataSelectWidget.cpp | 236 + source/resource/widgets/cxDataSelectWidget.h | 90 + .../cxDetailedLabeledComboBoxWidget.cpp | 55 + .../widgets/cxDetailedLabeledComboBoxWidget.h | 44 + .../resource/widgets/cxDisplayTimerWidget.cpp | 79 + .../resource/widgets/cxDisplayTimerWidget.h | 56 + .../resource/widgets/cxDoubleSpanSlider.cpp | 150 + source/resource/widgets/cxDoubleSpanSlider.h | 136 + source/resource/widgets/cxDoubleWidgets.cpp | 349 + source/resource/widgets/cxDoubleWidgets.h | 250 + source/resource/widgets/cxFileInputWidget.cpp | 147 + source/resource/widgets/cxFileInputWidget.h | 73 + .../resource/widgets/cxFilePreviewWidget.cpp | 130 + source/resource/widgets/cxFilePreviewWidget.h | 79 + .../resource/widgets/cxFileSelectWidget.cpp | 195 + source/resource/widgets/cxFileSelectWidget.h | 86 + .../resource/widgets/cxFileWatcherWidget.cpp | 74 + source/resource/widgets/cxFileWatcherWidget.h | 55 + source/resource/widgets/cxFilenameWidget.cpp | 73 + source/resource/widgets/cxFilenameWidget.h | 51 + .../resource/widgets/cxFilterPresetWidget.cpp | 64 + .../resource/widgets/cxFilterPresetWidget.h | 49 + source/resource/widgets/cxFrameTreeWidget.cpp | 91 + source/resource/widgets/cxFrameTreeWidget.h | 62 + source/resource/widgets/cxHelperWidgets.cpp | 145 + source/resource/widgets/cxHelperWidgets.h | 105 + .../resource/widgets/cxImagePreviewWidget.cpp | 59 + .../resource/widgets/cxImagePreviewWidget.h | 47 + .../widgets/cxLabeledComboBoxWidget.cpp | 113 + .../widgets/cxLabeledComboBoxWidget.h | 62 + .../widgets/cxLabeledLineEditWidget.cpp | 73 + .../widgets/cxLabeledLineEditWidget.h | 51 + source/resource/widgets/cxMousePadWidget.cpp | 157 + source/resource/widgets/cxMousePadWidget.h | 88 + .../widgets/cxMultiFileInputWidget.cpp | 246 + .../resource/widgets/cxMultiFileInputWidget.h | 79 + .../widgets/cxOptimizedUpdateWidget.cpp | 52 + .../widgets/cxOptimizedUpdateWidget.h | 75 + source/resource/widgets/cxOptionsWidget.cpp | 180 + source/resource/widgets/cxOptionsWidget.h | 65 + source/resource/widgets/cxPipelineWidget.cpp | 158 + source/resource/widgets/cxPipelineWidget.h | 78 + .../resource/widgets/cxPopupToolbarWidget.cpp | 130 + .../resource/widgets/cxPopupToolbarWidget.h | 93 + source/resource/widgets/cxPresetWidget.cpp | 218 + source/resource/widgets/cxPresetWidget.h | 78 + .../resource/widgets/cxProbeConfigWidget.cpp | 300 + source/resource/widgets/cxProbeConfigWidget.h | 68 + .../resource/widgets/cxSelectionGroupBox.cpp | 106 + source/resource/widgets/cxSelectionGroupBox.h | 59 + source/resource/widgets/cxSpaceEditWidget.cpp | 205 + source/resource/widgets/cxSpaceEditWidget.h | 67 + .../widgets/cxStringListSelectWidget.cpp | 124 + .../widgets/cxStringListSelectWidget.h | 62 + source/resource/widgets/cxTabbedWidget.cpp | 64 + source/resource/widgets/cxTabbedWidget.h | 59 + .../widgets/cxTimedAlgorithmProgressBar.cpp | 147 + .../widgets/cxTimedAlgorithmProgressBar.h | 85 + source/resource/widgets/cxTimelineWidget.cpp | 451 + source/resource/widgets/cxTimelineWidget.h | 96 + .../resource/widgets/cxTransform3DWidget.cpp | 365 + source/resource/widgets/cxTransform3DWidget.h | 88 + source/resource/widgets/cxVector3DWidget.cpp | 92 + source/resource/widgets/cxVector3DWidget.h | 54 + .../widgets/cxWebServerWidgetBase.cpp | 58 + .../resource/widgets/cxWebServerWidgetBase.h | 55 + .../widgets/cxWidgetObscuredListener.cpp | 43 + .../widgets/cxWidgetObscuredListener.h | 50 + .../resource/widgets/snwSyntaxHighlighter.cpp | 85 + .../resource/widgets/snwSyntaxHighlighter.h | 41 + .../resource/widgets/testing/CMakeLists.txt | 32 + .../widgets/testing/cxtestOptionsWidget.cpp | 82 + source/testing/CMakeLists.txt | 30 + source/testing/cxImportTests.h.in | 2 + source/testing/cxtestCatchImpl.cpp | 90 + source/testing/cxtestCatchImpl.h | 56 + source/testing/cxtestCatchMain.cpp | 63 + 2613 files changed, 355203 insertions(+) create mode 100644 CMake/FindDCMTK.cmake create mode 100644 CMake/FindEigen.cmake create mode 100644 CMake/FindFlann.cmake create mode 100644 CMake/FindOpenCL.cmake create mode 100644 CMake/MacOSXBundleInfo_cx_custom.plist.in create mode 100644 CMake/cxBundleUtilities.cmake create mode 100644 CMake/cxCatchUtilities.cmake create mode 100644 CMake/cxDocumentation.cmake create mode 100644 CMake/cxGetVersion.cmake create mode 100644 CMake/cxInitializeLibraries.cmake create mode 100644 CMake/cxInstallCustusX.cmake create mode 100644 CMake/cxInstallUtilities.cmake create mode 100644 CMake/cxPlugins.cmake create mode 100644 CMake/cxTestMacros.cmake create mode 100644 CMake/cxUtilities.cmake create mode 100644 CMakeGraphVizOptions.cmake create mode 100644 CMakeLists.txt create mode 100644 CMakeLists.txt.user create mode 100644 License.txt create mode 100644 QtCreatorLicenceTemplate.txt create mode 100644 README.md create mode 100755 config/audio/Windows XP Critical Stop.wav create mode 100755 config/audio/Windows XP Hardware Fail.wav create mode 100755 config/audio/Windows XP Hardware Insert.wav create mode 100755 config/audio/Windows XP Hardware Remove.wav create mode 100755 config/audio/Windows XP Information Bar.wav create mode 100755 config/audio/Windows XP Navigation.wav create mode 100755 config/audio/Windows XP Print complete.wav create mode 100644 config/audio/camera_shutter.wav create mode 100644 config/models/man.stl create mode 100644 config/models/wire_phantom_cross_pts.vtk create mode 100644 config/models/woman.stl create mode 100644 config/org.custusx.registration.method.commandline/elastix/par/p_Affine.txt create mode 100644 config/org.custusx.registration.method.commandline/elastix/par/p_BSpline.txt create mode 100644 config/org.custusx.registration.method.commandline/elastix/par/p_BSpline_quick.txt create mode 100644 config/org.custusx.registration.method.commandline/elastix/par/p_Rigid.txt create mode 100644 config/org.custusx.registration.method.commandline/elastix/par/p_Rigid_quick.txt create mode 100644 config/profiles/Bronchoscopy/settings/settings.ini create mode 100755 config/profiles/Bronchoscopy/tool/Bronchoscopy_Anser_one_needle.xml create mode 100755 config/profiles/Bronchoscopy/tool/Bronchoscopy_Anser_two_needles.xml create mode 100644 config/profiles/Bronchoscopy/tool/Guidewire_and_Catheter.xml create mode 100755 config/profiles/Laboratory/filter_scripts/cxCreateVenv.sh create mode 100644 config/profiles/Laboratory/filter_scripts/python_Airways.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_AirwaysCenterline.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_Lungs.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_Lungs_test.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_LymphNodes.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_MediumOrgansMediastinum.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_Nodules.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_PulmSystHeart.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_SmallOrgansMediastinum.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_Tumors.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_VesselsInLungs.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_example.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_liver_and_vessels.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_liversegment.ini create mode 100644 config/profiles/Laboratory/filter_scripts/python_test.ini create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/extractCenterlinesFAST.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentAirwaysFAST.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentBloodVesselsFAST.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_example/custus_utilities.py create mode 100755 config/profiles/Laboratory/filter_scripts/scripts/python_example/example.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_example/requirements.txt create mode 100755 config/profiles/Laboratory/filter_scripts/scripts/python_example/test.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/README.md create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/custus_utilities.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/LICENSE.md create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/livermask.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/requirements.txt create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_2D.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_3D.py create mode 100755 config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segmentation.py create mode 100644 config/profiles/Laboratory/filter_scripts/scripts/python_tumor_segmentation/segmentTumors.py create mode 100644 config/profiles/Laboratory/settings/settings.ini create mode 100644 config/profiles/Laboratory/tool/LabDefault.xml create mode 100644 config/shaders/Texture3DOverlay.frag create mode 100644 config/shaders/cxOverlay2D_frag.glsl create mode 100644 config/shaders/raycasting_shader.frag create mode 100644 config/shaders/raycasting_shader.vert create mode 100644 config/shaders/upscale.frag create mode 100644 config/shaders/upscale.vert create mode 100644 config/tool/Laboratory/MyKonfig.xml create mode 100644 config/tool/Laboratory/test.xml create mode 100755 config/tool/ProbeCalibConfigs.xml create mode 100644 config/tool/ProbeCalibConfigs_specifications.pdf create mode 100755 config/tool/TEMPLATE_configuration.xml create mode 100755 config/tool/TEMPLATE_tool.xml create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/AnserBronchoscope.xml create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Bronchoscope.stl create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Identity.cal create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.cal create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.xml create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Catheter/Catheter_2mm_with_Sensor_Model.stl create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.cal create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.xml create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Guidewire/Guidewire_1_5mm_with_Sensor_Model.stl create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Needle1/AnserNeedle.png create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Needle1/AnserNeedle1.xml create mode 100644 config/tool/Tools/Bronchoscopy/Anser_Needle1/Biopsy_Needle_Model.stl create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Needle1/Dummy.cal create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Needle2/AnserNeedle2.xml create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Needle2/Dummy.cal create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Pointer/AnserPointer.jpg create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Pointer/AnserPointer.xml create mode 100755 config/tool/Tools/Bronchoscopy/Anser_Pointer/Identity.cal create mode 100755 config/tool/Tools/Shared/Catheter_AURORA_port4/AuroraCatheter_port4.cal create mode 100755 config/tool/Tools/Shared/Catheter_AURORA_port4/Catheter_AURORA_port4.xml create mode 100644 config/tool/Tools/Shared/Catheter_AURORA_port4/catheter_6DOF.png create mode 100755 config/tool/Tools/Shared/Catheter_AURORA_port4/cylinder.stl create mode 100755 config/tool/Tools/Shared/NDI-Pointer-8700340_POLARIS/8700340.cal create mode 100755 config/tool/Tools/Shared/NDI-Pointer-8700340_POLARIS/8700340.rom create mode 100644 config/tool/Tools/Shared/NDI-Pointer-8700340_POLARIS/NDI-Pointer-8700340_POLARIS.png create mode 100644 config/tool/Tools/Shared/NDI-Pointer-8700340_POLARIS/NDI_pnt.xml create mode 100644 config/tool/Tools/Shared/NDI-Reference-frame_small_POLARIS/8700339.rom create mode 100644 config/tool/Tools/Shared/NDI-Reference-frame_small_POLARIS/NDI_ref_small.xml create mode 100755 config/tool/Tools/Shared/Pointer_AURORA_port2/AuroraPointer_port2.cal create mode 100755 config/tool/Tools/Shared/Pointer_AURORA_port2/Pointer_AURORA_port2.xml create mode 100755 config/tool/Tools/Shared/Pointer_AURORA_port3/AuroraPointer_port3.cal create mode 100755 config/tool/Tools/Shared/Pointer_AURORA_port3/Pointer_AURORA_port3.xml create mode 100644 config/tool/Tools/Shared/Reference_AURORA_port1/Reference_AURORA_port1.xml create mode 100644 config/transferFunctions/presets.xml create mode 160000 data create mode 100644 doc/CMakeLists.txt create mode 100644 doc/cx_doxyfile.dox.in create mode 100644 doc/cx_user_doc.qhcp.in create mode 100644 doc/dev_manual/cx_dev_architecture.md create mode 100644 doc/dev_manual/cx_dev_build_instructions.md create mode 100644 doc/dev_manual/cx_dev_code_style.md create mode 100644 doc/dev_manual/cx_dev_customize_applications.md create mode 100644 doc/dev_manual/cx_dev_group_definitions.h create mode 100644 doc/dev_manual/cx_dev_group_resource.h create mode 100644 doc/dev_manual/cx_dev_main_page.md create mode 100644 doc/dev_manual/cx_dev_superbuild.md create mode 100644 doc/doxy_footer_empty.html create mode 100644 doc/doxy_header_empty.html create mode 100644 doc/images/ACS_slice_planes.png create mode 100644 doc/images/LayoutExample.dia create mode 100644 doc/images/LayoutExample.png create mode 100644 doc/images/OpenIGTLinkServer_pipeline.dia create mode 100644 doc/images/OpenIGTLinkServer_pipeline.png create mode 100644 doc/images/PolarisTool.jpg create mode 100644 doc/images/center_image.png create mode 100644 doc/images/configure_tracking.png create mode 100644 doc/images/coordinateSystems.png create mode 100644 doc/images/coordinateSystemsTools.png create mode 100644 doc/images/cxArchitecture_Plugin_Examples.dia create mode 100644 doc/images/cxArchitecture_Plugin_Examples.png create mode 100644 doc/images/cxArchitecture_application.dia create mode 100644 doc/images/cxArchitecture_application.png create mode 100644 doc/images/cxArchitecture_rtstream.dia create mode 100644 doc/images/cxArchitecture_rtstream.png create mode 100644 doc/images/cxArchitecture_top_new.dia create mode 100644 doc/images/cxArchitecture_top_new.png create mode 100644 doc/images/cxArchitecture_tracking.dia create mode 100644 doc/images/cxArchitecture_tracking.png create mode 100644 doc/images/cxArchitecture_view_layout.dia create mode 100644 doc/images/cxArchitecture_view_layout.png create mode 100644 doc/images/cxArchitecture_visualization.dia create mode 100644 doc/images/cxArchitecture_visualization.png create mode 100644 doc/images/cx_coordinate_systems.pptx create mode 100644 doc/images/cx_coordinate_systems/cx_coords_all.png create mode 100644 doc/images/cx_coordinate_systems/cx_coords_overview.png create mode 100644 doc/images/cx_coordinate_systems/cx_coords_us_probe.png create mode 100644 doc/images/cx_coordinate_systems/cx_coords_us_probe_image.png create mode 100644 doc/images/cx_coordinate_systems/cx_coords_us_probe_linear.png create mode 100644 doc/images/cx_coordinate_systems/cx_coords_us_probe_sector.png create mode 100644 doc/images/cx_operating_table.png create mode 100644 doc/images/cx_us_acq_lab.png create mode 100644 doc/images/cx_us_acq_reconstruct.png create mode 100644 doc/images/cx_us_acq_reconstruct_widget.png create mode 100644 doc/images/cx_us_acq_running.png create mode 100644 doc/images/cx_us_acq_start.png create mode 100644 doc/images/cx_us_probe_streaming.png create mode 100644 doc/images/image_registration_1.png create mode 100644 doc/images/mainwindow.png create mode 100644 doc/images/metastase_mr_us_small.png create mode 100644 doc/images/polaris_tool_small.png create mode 100644 doc/images/sscArchitecture_data.dia create mode 100644 doc/images/sscArchitecture_data.png create mode 100644 doc/images/sscArchitecture_slice.dia create mode 100644 doc/images/sscArchitecture_slice.png create mode 100644 doc/images/sscArchitecture_tool.dia create mode 100644 doc/images/sscArchitecture_tool.png create mode 100644 doc/images/sscArchitecture_tracking.dia create mode 100644 doc/images/sscArchitecture_tracking.png create mode 100644 doc/images/ssc_coordinate_systems.dia create mode 100644 doc/images/ssc_coordinate_systems.png create mode 100644 doc/images/ssc_coords_data.dia create mode 100644 doc/images/ssc_coords_data.png create mode 100644 doc/images/tracking_simple.dia create mode 100644 doc/images/tracking_simple.png create mode 100644 doc/images/tracking_tool_buttons_configured.png create mode 100644 doc/images/us_coordinate_systems.png create mode 100644 doc/images/us_coordinate_systems.pptx create mode 100644 doc/images/us_probe.png create mode 100644 doc/images/videoservice_simple.dia create mode 100644 doc/images/videoservice_simple.png create mode 100644 doc/images/volume_properties_widget.png create mode 100644 doc/images/workflow_steps.png create mode 100644 doc/images/workflow_steps_small.png create mode 100644 doc/images/workflow_store.png create mode 100644 doc/release_notes/Release_notes.pdf create mode 100644 doc/shared_manual/cx_dev_coordinate_systems.md create mode 100644 doc/shared_manual/cx_external_libraries.md create mode 100644 doc/shared_manual/cx_license.md create mode 100644 doc/shared_manual/cx_us_probe_definition.md create mode 100644 doc/shared_manual/cx_user_doc_plugins.md.in create mode 100644 doc/shared_manual/cx_user_supported_platforms.md create mode 100644 doc/shared_manual/features/cx_user_definitions.md create mode 100644 doc/shared_manual/features/cx_user_doc_feature_overview.md create mode 100644 doc/shared_manual/features/cx_user_doc_widgets_algorithms.md create mode 100644 doc/shared_manual/features/cx_user_doc_widgets_browsing.md create mode 100644 doc/shared_manual/features/cx_user_doc_widgets_properties.md create mode 100644 doc/shared_manual/features/cx_user_doc_widgets_utility.md create mode 100644 doc/shared_manual/features/cx_user_group_definitions.h create mode 100644 doc/shared_manual/installation/cx_probe_setup.md create mode 100644 doc/shared_manual/installation/cx_tracking_setup.md create mode 100644 doc/shared_manual/installation/cx_user_installation.md create mode 100644 doc/shared_manual/installation/cx_user_ndi_install.md create mode 100644 doc/shared_manual/installation/cx_video_setup.md create mode 100644 doc/user_manual/cx_safety_requirements_for_use.md create mode 100644 doc/user_manual/cx_sintef_organization.md create mode 100644 doc/user_manual/cx_user_doc_main_page.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_customize_user_interface.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_dicom_import.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_image_landmark_registration.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_patient_landmark_registration.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_tracking.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_ultrasound_acquisition.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_video_streaming.md create mode 100644 doc/user_manual/tutorial/cx_user_tutorial_volumes.md create mode 100644 install/cx/__init__.py create mode 100644 install/cx/__init__.pyc create mode 100644 install/cx/__pycache__/__init__.cpython-39.pyc create mode 100644 install/cx/build/__init__.py create mode 100644 install/cx/build/__init__.pyc create mode 100644 install/cx/build/__pycache__/__init__.cpython-39.pyc create mode 100755 install/cx/build/cxComponentAssembly.py create mode 100644 install/cx/build/cxComponentAssembly.pyc create mode 100755 install/cx/build/cxComponents.py create mode 100644 install/cx/build/cxComponents.pyc create mode 100755 install/cx/build/cxCustusXBuilder.py create mode 100644 install/cx/build/cxCustusXInstaller.py create mode 100755 install/cx/build/cxCustusXTestInstallation.py create mode 100755 install/cx/build/cxInstallData.py create mode 100644 install/cx/build/cxInstallData.pyc create mode 100755 install/cx/build/cxTestRunner.py create mode 100644 install/cx/script/__init__.py create mode 100644 install/cx/script/__init__.pyc create mode 100755 install/cx/script/cxBuildScript.py create mode 100644 install/cx/script/cxBuildScript.pyc create mode 100755 install/cx/script/cxInstallScript.py create mode 100644 install/cx/script/cxInstallScript.pyc create mode 100644 install/cx/script/cxJenkinsBuildScriptBase.py create mode 100755 install/cx/script/cxJenkinsBuildScript_JobDefinitions.py create mode 100755 install/cx/script/cxJenkinsMasterBuildScript.py create mode 100644 install/cx/utils/__init__.py create mode 100644 install/cx/utils/__init__.pyc create mode 100644 install/cx/utils/ctest2junit.xsl create mode 100644 install/cx/utils/cxArgParse.py create mode 100644 install/cx/utils/cxArgParse.pyc create mode 100755 install/cx/utils/cxCatchConsoleNameListParser.py create mode 100755 install/cx/utils/cxClean_sloccount.py create mode 100755 install/cx/utils/cxConvertCTest2JUnit.py create mode 100755 install/cx/utils/cxCppBuilder.py create mode 100644 install/cx/utils/cxCppBuilder.pyc create mode 100755 install/cx/utils/cxPrintFormatter.py create mode 100644 install/cx/utils/cxPrintFormatter.pyc create mode 100644 install/cx/utils/cxRepoHandler.py create mode 100644 install/cx/utils/cxRepoHandler.pyc create mode 100644 install/cx/utils/cxSSH.py create mode 100644 install/cx/utils/cxSSH.pyc create mode 100755 install/cx/utils/cxShell.py create mode 100644 install/cx/utils/cxShell.pyc create mode 100644 install/cx/utils/cxShellCommand.py create mode 100644 install/cx/utils/cxShellCommand.pyc create mode 100755 install/cx/utils/cxUtilities.py create mode 100644 install/cx/utils/cxUtilities.pyc create mode 100755 install/cxGitCommit.py create mode 100755 install/cxGitUtilities.py create mode 100755 install/cxInstaller.py create mode 100755 install/cxJenkinsMasterBuild.py create mode 100755 install/cxJenkins_job_step.py create mode 100755 install/cxRunTests.py create mode 100644 install/install_text/install_readme.rtf create mode 100644 install/install_text/install_welcome.txt create mode 100755 install/platforms/ubuntu/ubuntu2004_packages.sh create mode 100755 install/platforms/ubuntu/ubuntu_nvidia.sh create mode 100755 install/platforms/ubuntu/ubuntu_packages.sh create mode 100644 install/platforms/windows/Setup/Config.ps1 create mode 100644 install/platforms/windows/Setup/GetTools.ps1 create mode 100644 install/platforms/windows/Setup/README.txt create mode 100644 install/platforms/windows/Setup/Setup.bat create mode 100644 install/platforms/windows/Setup/Setup.psm1 create mode 100644 install/platforms/windows/Setup/Tool.ps1 create mode 100644 install/platforms/windows/Setup/Utilities.ps1 create mode 100644 install/platforms/windows/WindowsSetupAndBuild.txt create mode 100755 install/run_python create mode 100644 install/run_python.bat create mode 100755 source/CMakeLists.txt create mode 100644 source/ThirdParty/CMakeLists.txt create mode 100644 source/ThirdParty/VTKMultiVolume/CMakeLists.txt create mode 100644 source/ThirdParty/VTKMultiVolume/GLSL/vtkGPUMultiVolumeRayCastMapper_CompositeFS.glsl create mode 100644 source/ThirdParty/VTKMultiVolume/GLSL/vtkGPUMultiVolumeRayCastMapper_FourComponentsFS.glsl create mode 100644 source/ThirdParty/VTKMultiVolume/GLSL/vtkGPUMultiVolumeRayCastMapper_NoShadeFS.glsl create mode 100644 source/ThirdParty/VTKMultiVolume/GLSL/vtkGPUMultiVolumeRayCastMapper_OneComponentFS.glsl create mode 100644 source/ThirdParty/VTKMultiVolume/GLSL/vtkGPUMultiVolumeRayCastMapper_ShadeFS.glsl create mode 100644 source/ThirdParty/VTKMultiVolume/README create mode 100644 source/ThirdParty/VTKMultiVolume/run_example1.sh create mode 100644 source/ThirdParty/VTKMultiVolume/run_example2.sh create mode 100644 source/ThirdParty/VTKMultiVolume/vtkGPUMultiVolumeRayCastMapper.cxx create mode 100644 source/ThirdParty/VTKMultiVolume/vtkGPUMultiVolumeRayCastMapper.h create mode 100644 source/ThirdParty/VTKMultiVolume/vtkGPUMultiVolumeRenderDemo.cxx create mode 100644 source/ThirdParty/VTKMultiVolume/vtkMultiVolumePicker.cxx create mode 100644 source/ThirdParty/VTKMultiVolume/vtkMultiVolumePicker.h create mode 100644 source/ThirdParty/VTKMultiVolume/vtkOpenGLGPUMultiVolumeRayCastMapper.cxx create mode 100644 source/ThirdParty/VTKMultiVolume/vtkOpenGLGPUMultiVolumeRayCastMapper.h create mode 100644 source/ThirdParty/catch/LICENSE_1_0.txt create mode 100644 source/ThirdParty/catch/catch.hpp create mode 100644 source/ThirdParty/iir1/AUTHORS create mode 100644 source/ThirdParty/iir1/COPYING create mode 100644 source/ThirdParty/iir1/ChangeLog create mode 100644 source/ThirdParty/iir1/Documentation.txt create mode 100644 source/ThirdParty/iir1/Doxyfile create mode 100644 source/ThirdParty/iir1/Iir.h create mode 100644 source/ThirdParty/iir1/Makefile.am create mode 100644 source/ThirdParty/iir1/NEWS create mode 100644 source/ThirdParty/iir1/README create mode 100755 source/ThirdParty/iir1/autogen.sh create mode 100644 source/ThirdParty/iir1/config.h.in create mode 100644 source/ThirdParty/iir1/configure.ac create mode 100644 source/ThirdParty/iir1/demo/iirdemo.cpp create mode 100644 source/ThirdParty/iir1/iir.pc create mode 100644 source/ThirdParty/iir1/iir.pc.in create mode 100644 source/ThirdParty/iir1/iir/Bessel.cpp create mode 100644 source/ThirdParty/iir1/iir/Bessel.h create mode 100644 source/ThirdParty/iir1/iir/Biquad.cpp create mode 100644 source/ThirdParty/iir1/iir/Biquad.h create mode 100644 source/ThirdParty/iir1/iir/Butterworth.cpp create mode 100644 source/ThirdParty/iir1/iir/Butterworth.h create mode 100644 source/ThirdParty/iir1/iir/Cascade.cpp create mode 100644 source/ThirdParty/iir1/iir/Cascade.h create mode 100644 source/ThirdParty/iir1/iir/ChebyshevI.cpp create mode 100644 source/ThirdParty/iir1/iir/ChebyshevI.h create mode 100644 source/ThirdParty/iir1/iir/ChebyshevII.cpp create mode 100644 source/ThirdParty/iir1/iir/ChebyshevII.h create mode 100644 source/ThirdParty/iir1/iir/Common.h create mode 100644 source/ThirdParty/iir1/iir/Custom.cpp create mode 100644 source/ThirdParty/iir1/iir/Custom.h create mode 100644 source/ThirdParty/iir1/iir/Elliptic.cpp create mode 100644 source/ThirdParty/iir1/iir/Elliptic.h create mode 100644 source/ThirdParty/iir1/iir/Layout.h create mode 100644 source/ThirdParty/iir1/iir/Legendre.cpp create mode 100644 source/ThirdParty/iir1/iir/Legendre.h create mode 100644 source/ThirdParty/iir1/iir/MathSupplement.h create mode 100644 source/ThirdParty/iir1/iir/PoleFilter.cpp create mode 100644 source/ThirdParty/iir1/iir/PoleFilter.h create mode 100644 source/ThirdParty/iir1/iir/RBJ.cpp create mode 100644 source/ThirdParty/iir1/iir/RBJ.h create mode 100644 source/ThirdParty/iir1/iir/RootFinder.cpp create mode 100644 source/ThirdParty/iir1/iir/RootFinder.h create mode 100644 source/ThirdParty/iir1/iir/State.cpp create mode 100644 source/ThirdParty/iir1/iir/State.h create mode 100644 source/ThirdParty/iir1/iir/Types.h create mode 100644 source/ThirdParty/iir1/iir/Utilities.h create mode 100644 source/ThirdParty/iir1/iir/config.h create mode 100644 source/ThirdParty/iir1/iirconfig.h.in create mode 100644 source/ThirdParty/libQtSignalAdapters/ConnectionFactories.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Doxyfile create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func0.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func1.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func2.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func3.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func4.h create mode 100644 source/ThirdParty/libQtSignalAdapters/Qt2Func5.h create mode 100644 source/ThirdParty/libQtSignalAdapters/QtConn.h create mode 100644 source/ThirdParty/libQtSignalAdapters/QtConnDefault.h create mode 100644 source/ThirdParty/libQtSignalAdapters/TestQt2Func/SimpleGUI.ui create mode 100644 source/ThirdParty/libQtSignalAdapters/TestQt2Func/main.cc create mode 100644 source/ThirdParty/qxt/README.txt create mode 100644 source/ThirdParty/qxt/qxtglobal.h create mode 100644 source/ThirdParty/qxt/qxtspanslider.cpp create mode 100644 source/ThirdParty/qxt/qxtspanslider.h create mode 100644 source/ThirdParty/qxt/qxtspanslider_p.h create mode 100644 source/apps/CMakeLists.txt create mode 100644 source/apps/CustusX/CMakeLists.txt create mode 100644 source/apps/CustusX/CustusX.rc create mode 100644 source/apps/CustusX/CustusX/.gitignore create mode 100644 source/apps/CustusX/cxMain.cpp create mode 100644 source/apps/LogConsole/CMakeLists.txt create mode 100644 source/apps/LogConsole/cxLogConsole.cpp create mode 100644 source/apps/LogConsole/cxLogConsole.h create mode 100644 source/apps/LogConsole/main.cpp create mode 100644 source/apps/MemoryTester/CMakeLists.txt create mode 100644 source/apps/MemoryTester/cxMemoryTester.cpp create mode 100644 source/apps/MemoryTester/cxMemoryTester.h create mode 100644 source/apps/MemoryTester/cxMemoryTesterMain.cpp create mode 100644 source/apps/MemoryTester/images/application-exit.png create mode 100644 source/apps/MemoryTester/images/effect.png create mode 100644 source/apps/MemoryTester/images/exec.png create mode 100644 source/apps/MemoryTester/images/go-home.png create mode 100644 source/apps/MemoryTester/resource.qrc create mode 100644 source/apps/OpenGLTestApplication/CMakeLists.txt create mode 100644 source/apps/OpenGLTestApplication/OpenGLTestApplication.cxx create mode 100644 source/apps/OpenGLTestApplication/shadercallback.cpp create mode 100644 source/apps/OpenGLTestApplication/shadercallback.h create mode 100644 source/apps/OpenGLTestApplication/texture.cpp create mode 100644 source/apps/OpenGLTestApplication/texture.h create mode 100644 source/apps/OpenGLTestApplication/vtkfixture.cpp create mode 100644 source/apps/OpenGLTestApplication/vtkfixture.h create mode 100644 source/apps/OpenIGTLinkServer/CMakeLists.txt create mode 100644 source/apps/OpenIGTLinkServer/main.cpp create mode 100644 source/apps/PositionFileReader/CMakeLists.txt create mode 100644 source/apps/PositionFileReader/main.cpp create mode 100644 source/apps/insertplanner/CMakeLists.txt create mode 100644 source/apps/insertplanner/build/CMakeCache.txt create mode 100644 source/apps/insertplanner/build/CMakeFiles/3.5.1/CMakeCCompiler.cmake create mode 100644 source/apps/insertplanner/build/CMakeFiles/3.5.1/CMakeCXXCompiler.cmake create mode 100755 source/apps/insertplanner/build/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_C.bin create mode 100755 source/apps/insertplanner/build/CMakeFiles/3.5.1/CMakeDetermineCompilerABI_CXX.bin create mode 100644 source/apps/insertplanner/build/CMakeFiles/3.5.1/CMakeSystem.cmake create mode 100644 source/apps/insertplanner/build/CMakeFiles/3.5.1/CompilerIdC/CMakeCCompilerId.c create mode 100755 source/apps/insertplanner/build/CMakeFiles/3.5.1/CompilerIdC/a.out create mode 100644 source/apps/insertplanner/build/CMakeFiles/3.5.1/CompilerIdCXX/CMakeCXXCompilerId.cpp create mode 100755 source/apps/insertplanner/build/CMakeFiles/3.5.1/CompilerIdCXX/a.out create mode 100644 source/apps/insertplanner/build/CMakeFiles/CMakeOutput.log create mode 100644 source/apps/insertplanner/build/CMakeFiles/cmake.check_cache create mode 100755 source/apps/insertplanner/build/CMakeFiles/feature_tests.bin create mode 100644 source/apps/insertplanner/build/CMakeFiles/feature_tests.c create mode 100644 source/apps/insertplanner/build/CMakeFiles/feature_tests.cxx create mode 100644 source/apps/insertplanner/cmake/FindEigen3.cmake create mode 100644 source/apps/insertplanner/cmake/FindFlann.cmake create mode 100644 source/apps/insertplanner/cmake/VTKConfig.cmake create mode 100644 source/apps/insertplanner/include/StateSpace/SE3.hpp create mode 100644 source/apps/insertplanner/include/StateSpace/SO3.hpp create mode 100644 source/apps/insertplanner/include/StateSpace/StateSpace.hpp create mode 100644 source/apps/insertplanner/include/StateSpace/insertSpace.hpp create mode 100644 source/apps/insertplanner/include/StateSpace/rn.hpp create mode 100644 source/apps/insertplanner/include/dec/vtkForwardDeclarations.h create mode 100644 source/apps/insertplanner/include/macros/class_forward.h create mode 100644 source/apps/insertplanner/include/planner/InsertPlanner.hpp create mode 100644 source/apps/insertplanner/include/planner/Planner.hpp create mode 100644 source/apps/insertplanner/include/planner/RRT.hpp create mode 100644 source/apps/insertplanner/include/planner/Tree.hpp create mode 100644 source/apps/insertplanner/src/main.cpp create mode 100644 source/apps/insertplanner/test/insert_state_test.cpp create mode 100644 source/apps/tests/CMakeLists.txt create mode 100644 source/apps/tests/CorrectlyRenderTranslucentGeometry.cxx create mode 100755 source/gui/CMakeLists.txt create mode 100644 source/gui/CMakeLists.txt.autosave create mode 100644 source/gui/browser/cxControllableSplitter.cpp create mode 100644 source/gui/browser/cxControllableSplitter.h create mode 100644 source/gui/browser/cxDataTreeNode.cpp create mode 100644 source/gui/browser/cxDataTreeNode.h create mode 100644 source/gui/browser/cxGroupTreeNode.cpp create mode 100644 source/gui/browser/cxGroupTreeNode.h create mode 100644 source/gui/browser/cxReplacableContentWidget.cpp create mode 100644 source/gui/browser/cxReplacableContentWidget.h create mode 100644 source/gui/browser/cxShowDataTreeNode.cpp create mode 100644 source/gui/browser/cxShowDataTreeNode.h create mode 100644 source/gui/browser/cxSpaceTreeNode.cpp create mode 100644 source/gui/browser/cxSpaceTreeNode.h create mode 100644 source/gui/browser/cxToolTreeNode.cpp create mode 100644 source/gui/browser/cxToolTreeNode.h create mode 100644 source/gui/browser/cxTopTreeNode.cpp create mode 100644 source/gui/browser/cxTopTreeNode.h create mode 100644 source/gui/browser/cxTreeItemModel.cpp create mode 100644 source/gui/browser/cxTreeItemModel.h create mode 100644 source/gui/browser/cxTreeNode.cpp create mode 100644 source/gui/browser/cxTreeNode.h create mode 100644 source/gui/browser/cxTreeNodeImpl.cpp create mode 100644 source/gui/browser/cxTreeNodeImpl.h create mode 100644 source/gui/browser/cxTreeRepository.cpp create mode 100644 source/gui/browser/cxTreeRepository.h create mode 100644 source/gui/browser/cxViewGroupPropertiesWidget.cpp create mode 100644 source/gui/browser/cxViewGroupPropertiesWidget.h create mode 100644 source/gui/browser/cxViewGroupTreeNode.cpp create mode 100644 source/gui/browser/cxViewGroupTreeNode.h create mode 100644 source/gui/browser/cxViewServicePropertiesWidget.cpp create mode 100644 source/gui/browser/cxViewServicePropertiesWidget.h create mode 100644 source/gui/browser/cxViewServiceTreeNode.cpp create mode 100644 source/gui/browser/cxViewServiceTreeNode.h create mode 100644 source/gui/customizedWidgets/cxCustomizedWidget.cpp create mode 100644 source/gui/customizedWidgets/cxCustomizedWidget.h create mode 100644 source/gui/cxLayoutInteractor.cpp create mode 100644 source/gui/cxLayoutInteractor.h create mode 100644 source/gui/cxMainWindow.cpp create mode 100644 source/gui/cxMainWindow.h create mode 100644 source/gui/cxMainWindowActions.cpp create mode 100644 source/gui/cxMainWindowActions.h create mode 100644 source/gui/cxMainWindowApplicationComponent.h create mode 100644 source/gui/cxResources.h create mode 100644 source/gui/cxResources.qrc create mode 100644 source/gui/cxSecondaryMainWindow.cpp create mode 100644 source/gui/cxSecondaryMainWindow.h create mode 100644 source/gui/cxSecondaryViewLayoutWindow.cpp create mode 100644 source/gui/cxSecondaryViewLayoutWindow.h create mode 100644 source/gui/cxStyleSheet.ss create mode 100644 source/gui/dataWidgets/cxClipperWidget.cpp create mode 100644 source/gui/dataWidgets/cxClipperWidget.h create mode 100644 source/gui/dataWidgets/cxClippingWidget.cpp create mode 100644 source/gui/dataWidgets/cxClippingWidget.h create mode 100644 source/gui/dataWidgets/cxColorWidget.cpp create mode 100644 source/gui/dataWidgets/cxColorWidget.h create mode 100644 source/gui/dataWidgets/cxCroppingWidget.cpp create mode 100644 source/gui/dataWidgets/cxCroppingWidget.h create mode 100644 source/gui/dataWidgets/cxDataViewSelectionWidget.cpp create mode 100644 source/gui/dataWidgets/cxDataViewSelectionWidget.h create mode 100644 source/gui/dataWidgets/cxEraserWidget.cpp create mode 100644 source/gui/dataWidgets/cxEraserWidget.h create mode 100644 source/gui/dataWidgets/cxExportDataDialog.cpp create mode 100644 source/gui/dataWidgets/cxExportDataDialog.h create mode 100644 source/gui/dataWidgets/cxImagePropertiesWidget.cpp create mode 100644 source/gui/dataWidgets/cxImagePropertiesWidget.h create mode 100644 source/gui/dataWidgets/cxImportDataDialog.cpp create mode 100644 source/gui/dataWidgets/cxImportDataDialog.h create mode 100644 source/gui/dataWidgets/cxInfoWidget.cpp create mode 100644 source/gui/dataWidgets/cxInfoWidget.h create mode 100644 source/gui/dataWidgets/cxManageClippersWidget.cpp create mode 100644 source/gui/dataWidgets/cxManageClippersWidget.h create mode 100644 source/gui/dataWidgets/cxMeshGlyphsWidget.cpp create mode 100644 source/gui/dataWidgets/cxMeshGlyphsWidget.h create mode 100644 source/gui/dataWidgets/cxMeshInfoWidget.cpp create mode 100644 source/gui/dataWidgets/cxMeshInfoWidget.h create mode 100644 source/gui/dataWidgets/cxMeshPropertiesWidget.cpp create mode 100644 source/gui/dataWidgets/cxMeshPropertiesWidget.h create mode 100644 source/gui/dataWidgets/cxMeshTextureWidget.cpp create mode 100644 source/gui/dataWidgets/cxMeshTextureWidget.h create mode 100644 source/gui/dataWidgets/cxOverlayWidget.cpp create mode 100644 source/gui/dataWidgets/cxOverlayWidget.h create mode 100644 source/gui/dataWidgets/cxSelectClippersForDataWidget.cpp create mode 100644 source/gui/dataWidgets/cxSelectClippersForDataWidget.h create mode 100644 source/gui/dataWidgets/cxShadingWidget.cpp create mode 100644 source/gui/dataWidgets/cxShadingWidget.h create mode 100644 source/gui/dataWidgets/cxSlicePropertiesWidget.cpp create mode 100644 source/gui/dataWidgets/cxSlicePropertiesWidget.h create mode 100644 source/gui/dataWidgets/cxStreamPropertiesWidget.cpp create mode 100644 source/gui/dataWidgets/cxStreamPropertiesWidget.h create mode 100644 source/gui/dataWidgets/cxTransferFunction2DColorWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunction2DColorWidget.h create mode 100644 source/gui/dataWidgets/cxTransferFunction2DOpacityWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunction2DOpacityWidget.h create mode 100755 source/gui/dataWidgets/cxTransferFunctionAlphaWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunctionAlphaWidget.h create mode 100644 source/gui/dataWidgets/cxTransferFunctionColorWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunctionColorWidget.h create mode 100644 source/gui/dataWidgets/cxTransferFunctionPresetWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunctionPresetWidget.h create mode 100644 source/gui/dataWidgets/cxTransferFunctionWidget.cpp create mode 100644 source/gui/dataWidgets/cxTransferFunctionWidget.h create mode 100644 source/gui/dataWidgets/cxVolumeInfoWidget.cpp create mode 100644 source/gui/dataWidgets/cxVolumeInfoWidget.h create mode 100644 source/gui/dataWidgets/cxVolumePropertiesWidget.cpp create mode 100644 source/gui/dataWidgets/cxVolumePropertiesWidget.h create mode 100644 source/gui/doc/cx_user_doc_widgets_mesh_properties.md create mode 100644 source/gui/doc/preferences.md create mode 100644 source/gui/filterWidgets/cxFilterSetupWidget.cpp create mode 100644 source/gui/filterWidgets/cxFilterSetupWidget.h create mode 100644 source/gui/filterWidgets/cxFiltersWidget.cpp create mode 100644 source/gui/filterWidgets/cxFiltersWidget.h create mode 100644 source/gui/icons/CustusX/CustusX.icns create mode 100644 source/gui/icons/CustusX/CustusX.ico create mode 100755 source/gui/icons/CustusX/CustusX.png create mode 100755 source/gui/icons/CustusX/CustusX_128x128.png create mode 100755 source/gui/icons/CustusX/CustusX_16x16.png create mode 100755 source/gui/icons/CustusX/CustusX_256x256.png create mode 100755 source/gui/icons/CustusX/CustusX_32x32.png create mode 100755 source/gui/icons/CustusX/CustusX_64x64.png create mode 100755 source/gui/icons/CustusX/CustusX_full.png create mode 100644 source/gui/icons/CustusX/CustusX_old.png create mode 100644 source/gui/icons/Video-icon_gray.png create mode 100644 source/gui/icons/Video-icon_green.png create mode 100644 source/gui/icons/Video-icon_red.png create mode 100644 source/gui/icons/camera-at.png create mode 100644 source/gui/icons/camera-f.png create mode 100644 source/gui/icons/camera-n.png create mode 100644 source/gui/icons/camera-o.png create mode 100644 source/gui/icons/camera-t.png create mode 100644 source/gui/icons/camera-u.png create mode 100644 source/gui/icons/camera_view_A.png create mode 100644 source/gui/icons/camera_view_I.png create mode 100644 source/gui/icons/camera_view_L.png create mode 100644 source/gui/icons/camera_view_O.png create mode 100644 source/gui/icons/camera_view_P.png create mode 100644 source/gui/icons/camera_view_R.png create mode 100644 source/gui/icons/camera_view_S.png create mode 100644 source/gui/icons/center_image.png create mode 100644 source/gui/icons/center_tool.png create mode 100644 source/gui/icons/copy.png create mode 100644 source/gui/icons/cut.png create mode 100644 source/gui/icons/design/camera.xcf create mode 100644 source/gui/icons/design/camera2.xcf create mode 100644 source/gui/icons/design/camera50x50.jpg create mode 100644 source/gui/icons/design/camera_view.xcf create mode 100644 source/gui/icons/design/center_image.xcf create mode 100644 source/gui/icons/design/dimensions.xcf create mode 100644 source/gui/icons/design/edit-delete-6.png create mode 100644 source/gui/icons/design/go-down-5.png create mode 100644 source/gui/icons/design/go-previous-5.png create mode 100644 source/gui/icons/design/go-up-5.png create mode 100644 source/gui/icons/design/images.jpg create mode 100644 source/gui/icons/design/list-add-7.png create mode 100644 source/gui/icons/design/matrix_inverse.xcf create mode 100644 source/gui/icons/design/metrics.xcf create mode 100644 source/gui/icons/design/patient.xcf create mode 100644 source/gui/icons/design/point_picker.xcf create mode 100644 source/gui/icons/design/polaris.xcf create mode 100644 source/gui/icons/design/streaming.xcf create mode 100644 source/gui/icons/design/vicra-table-wh-sm4.jpg create mode 100644 source/gui/icons/design/volume.xcf create mode 100644 source/gui/icons/design/workflow_state_base.xcf create mode 100644 source/gui/icons/design/workflow_state_navigation2.xcf create mode 100644 source/gui/icons/design/workflow_state_patient_data2.png create mode 100644 source/gui/icons/design/workflow_state_patient_data2.xcf create mode 100644 source/gui/icons/eye.png create mode 100644 source/gui/icons/matrix_inverse.png create mode 100644 source/gui/icons/message_levels/circle_blue.png create mode 100644 source/gui/icons/message_levels/circle_red.png create mode 100644 source/gui/icons/message_levels/dialog-clean.png create mode 100644 source/gui/icons/message_levels/dialog-information-4.png create mode 100644 source/gui/icons/message_levels/dialog-warning-panel.png create mode 100644 source/gui/icons/message_levels/script-error.png create mode 100644 source/gui/icons/message_levels/water_drop_1.png create mode 100644 source/gui/icons/message_levels/window-close-3.png create mode 100644 source/gui/icons/metric.png create mode 100644 source/gui/icons/metric_angle.png create mode 100644 source/gui/icons/metric_custom.png create mode 100644 source/gui/icons/metric_distance.png create mode 100644 source/gui/icons/metric_frame.png create mode 100644 source/gui/icons/metric_plane.png create mode 100644 source/gui/icons/metric_point.png create mode 100644 source/gui/icons/metric_reference.png create mode 100644 source/gui/icons/metric_remove.png create mode 100644 source/gui/icons/metric_sphere.png create mode 100644 source/gui/icons/metric_tool.png create mode 100644 source/gui/icons/metric_torus.png create mode 100644 source/gui/icons/new.png create mode 100644 source/gui/icons/open.png create mode 100644 source/gui/icons/open_icon_library/LICENSES create mode 100644 source/gui/icons/open_icon_library/applications-internet.png create mode 100644 source/gui/icons/open_icon_library/arrange_horizontal.png create mode 100644 source/gui/icons/open_icon_library/arrange_vertical.png create mode 100644 source/gui/icons/open_icon_library/arrow-left-3.png create mode 100644 source/gui/icons/open_icon_library/arrow-right-3.png create mode 100644 source/gui/icons/open_icon_library/arrow-right-double-3.png create mode 100644 source/gui/icons/open_icon_library/button-green.png create mode 100644 source/gui/icons/open_icon_library/button-red.png create mode 100644 source/gui/icons/open_icon_library/dialog-close.png create mode 100644 source/gui/icons/open_icon_library/document-import-2.png create mode 100644 source/gui/icons/open_icon_library/document-new-8.png create mode 100644 source/gui/icons/open_icon_library/document-open-7.png create mode 100644 source/gui/icons/open_icon_library/document-save-5.png create mode 100644 source/gui/icons/open_icon_library/edit-delete-2.png create mode 100644 source/gui/icons/open_icon_library/edit-undo-8.png create mode 100644 source/gui/icons/open_icon_library/eye.png.png create mode 100644 source/gui/icons/open_icon_library/go-down-4.png create mode 100644 source/gui/icons/open_icon_library/help-contents-5.png create mode 100644 source/gui/icons/open_icon_library/layer-lower-3.png create mode 100644 source/gui/icons/open_icon_library/layer-raise-3.png create mode 100644 source/gui/icons/open_icon_library/media-playback-pause-3.png create mode 100644 source/gui/icons/open_icon_library/media-playback-start-3.png create mode 100644 source/gui/icons/open_icon_library/media-playback-stop-3.png create mode 100644 source/gui/icons/open_icon_library/media-playback-stop.png create mode 100644 source/gui/icons/open_icon_library/media-record-3.png create mode 100644 source/gui/icons/open_icon_library/media-seek-backward-3.png create mode 100644 source/gui/icons/open_icon_library/media-seek-forward-3.png create mode 100644 source/gui/icons/open_icon_library/oval_green.png create mode 100644 source/gui/icons/open_icon_library/oval_red.png create mode 100644 source/gui/icons/open_icon_library/process-stop-7.png create mode 100644 source/gui/icons/open_icon_library/system-run-5.png create mode 100644 source/gui/icons/open_icon_library/tool-animator.png create mode 100644 source/gui/icons/open_icon_library/view-fullscreen-4.png create mode 100644 source/gui/icons/open_icon_library/view-list-tree.png create mode 100644 source/gui/icons/open_icon_library/zoom-in-3.png create mode 100644 source/gui/icons/open_icon_library/zoom-out-3.png create mode 100644 source/gui/icons/paste.png create mode 100644 source/gui/icons/patient.png create mode 100644 source/gui/icons/patient_clear.png create mode 100644 source/gui/icons/patient_import.png create mode 100644 source/gui/icons/patient_load.png create mode 100644 source/gui/icons/patient_new.png create mode 100644 source/gui/icons/patient_save.png create mode 100644 source/gui/icons/point_picker.png create mode 100644 source/gui/icons/polaris-green.png create mode 100644 source/gui/icons/polaris-red.png create mode 100644 source/gui/icons/polaris.png create mode 100644 source/gui/icons/preset_2D.png create mode 100644 source/gui/icons/preset_2D_and_3D.png create mode 100644 source/gui/icons/preset_3D.png create mode 100644 source/gui/icons/preset_remove.png create mode 100644 source/gui/icons/preset_reset.png create mode 100644 source/gui/icons/preset_save.png create mode 100644 source/gui/icons/readme.txt create mode 100644 source/gui/icons/save.png create mode 100644 source/gui/icons/screenshot-screen.png create mode 100644 source/gui/icons/screenshot-window.png create mode 100644 source/gui/icons/space_generic.png create mode 100644 source/gui/icons/space_patient_reference.png create mode 100644 source/gui/icons/space_reference.png create mode 100644 source/gui/icons/streaming_green.png create mode 100644 source/gui/icons/streaming_red.png create mode 100644 source/gui/icons/surface.png create mode 100644 source/gui/icons/tool_manual.png create mode 100644 source/gui/icons/tool_pointer.png create mode 100644 source/gui/icons/tool_reference.png create mode 100644 source/gui/icons/tool_us_probe.png create mode 100644 source/gui/icons/volume.png create mode 100644 source/gui/icons/workflow_state_acquisition.png create mode 100644 source/gui/icons/workflow_state_navigation.png create mode 100644 source/gui/icons/workflow_state_patient_data.png create mode 100644 source/gui/icons/workflow_state_planning.png create mode 100644 source/gui/icons/workflow_state_post_op.png create mode 100644 source/gui/icons/workflow_state_registration.png create mode 100644 source/gui/icons/workflow_state_revert.png create mode 100644 source/gui/icons/workflow_state_save.png create mode 100644 source/gui/infoWidgets/cxBrowserWidget.cpp create mode 100644 source/gui/infoWidgets/cxBrowserWidget.h create mode 100644 source/gui/infoWidgets/cxDataMetricWrappers.cpp create mode 100644 source/gui/infoWidgets/cxDataMetricWrappers.h create mode 100644 source/gui/infoWidgets/cxFrameMetricWrapper.cpp create mode 100644 source/gui/infoWidgets/cxFrameMetricWrapper.h create mode 100644 source/gui/infoWidgets/cxMetricManager.cpp create mode 100644 source/gui/infoWidgets/cxMetricManager.h create mode 100644 source/gui/infoWidgets/cxMetricWidget.cpp create mode 100644 source/gui/infoWidgets/cxMetricWidget.h create mode 100644 source/gui/infoWidgets/cxSamplerWidget.cpp create mode 100644 source/gui/infoWidgets/cxSamplerWidget.h create mode 100644 source/gui/infoWidgets/cxStatusBar.cpp create mode 100644 source/gui/infoWidgets/cxStatusBar.h create mode 100644 source/gui/infoWidgets/cxToolMetricWrapper.cpp create mode 100644 source/gui/infoWidgets/cxToolMetricWrapper.h create mode 100644 source/gui/navigationWidgets/cxNavigationWidget.cpp create mode 100644 source/gui/navigationWidgets/cxNavigationWidget.h create mode 100644 source/gui/navigationWidgets/cxPlaybackWidget.cpp create mode 100644 source/gui/navigationWidgets/cxPlaybackWidget.h create mode 100644 source/gui/navigationWidgets/cxTrackPadWidget.cpp create mode 100644 source/gui/navigationWidgets/cxTrackPadWidget.h create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginBrowser.cpp create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginBrowser.h create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginFrameworkWidget.cpp create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginFrameworkWidget.h create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginTableModel.cpp create mode 100644 source/gui/pluginFrameworkWidgets/cxPluginTableModel.h create mode 100644 source/gui/preferencesWidgets/cxGeneralTab.cpp create mode 100644 source/gui/preferencesWidgets/cxGeneralTab.h create mode 100644 source/gui/preferencesWidgets/cxLayoutEditorWidget.cpp create mode 100644 source/gui/preferencesWidgets/cxLayoutEditorWidget.h create mode 100644 source/gui/preferencesWidgets/cxOperatingTableTab.cpp create mode 100644 source/gui/preferencesWidgets/cxOperatingTableTab.h create mode 100644 source/gui/preferencesWidgets/cxOperatingTableWidget.cpp create mode 100644 source/gui/preferencesWidgets/cxOperatingTableWidget.h create mode 100644 source/gui/preferencesWidgets/cxPreferenceTab.cpp create mode 100644 source/gui/preferencesWidgets/cxPreferenceTab.h create mode 100755 source/gui/preferencesWidgets/cxPreferencesDialog.cpp create mode 100644 source/gui/preferencesWidgets/cxPreferencesDialog.h create mode 100644 source/gui/preferencesWidgets/cxToolConfigureWidget.cpp create mode 100644 source/gui/preferencesWidgets/cxToolConfigureWidget.h create mode 100644 source/gui/preferencesWidgets/cxToolFilterWidget.cpp create mode 100644 source/gui/preferencesWidgets/cxToolFilterWidget.h create mode 100644 source/gui/preferencesWidgets/cxToolListWidget.cpp create mode 100644 source/gui/preferencesWidgets/cxToolListWidget.h create mode 100644 source/gui/properties/cxDataInterface.cpp create mode 100644 source/gui/properties/cxDataInterface.h create mode 100644 source/gui/properties/cxShadingParamsInterfaces.cpp create mode 100644 source/gui/properties/cxShadingParamsInterfaces.h create mode 100644 source/gui/properties/cxStringPropertyClipPlane.cpp create mode 100644 source/gui/properties/cxStringPropertyClipPlane.h create mode 100644 source/gui/streamingWidgets/cxVideoConnectionWidget.cpp create mode 100644 source/gui/streamingWidgets/cxVideoConnectionWidget.h create mode 100644 source/gui/testing/CMakeLists.txt create mode 100644 source/gui/testing/cxTestCustusXController.cpp create mode 100644 source/gui/testing/cxTestCustusXController.h create mode 100644 source/gui/testing/cxtestCatchBaseWidgets.cpp create mode 100644 source/gui/testing/cxtestClipperWidget.cpp create mode 100644 source/gui/testing/cxtestClippersWidget.cpp create mode 100644 source/gui/testing/cxtestEraserWidget.cpp create mode 100644 source/gui/testing/cxtestMetricManager.cpp create mode 100644 source/gui/testing/cxtestMetricManager.h create mode 100644 source/gui/testing/cxtestMetricsWidget.cpp create mode 100644 source/gui/testing/cxtestOpenCLAndGui.cpp create mode 100644 source/gui/testing/cxtestProfileChange.cpp create mode 100644 source/gui/testing/cxtestSelectClippersForDataWidget.cpp create mode 100644 source/gui/testing/cxtestSessionStorageHelper.cpp create mode 100644 source/gui/testing/cxtestSessionStorageHelper.h create mode 100644 source/gui/testing/cxtestSpeed.cpp create mode 100644 source/gui/testing/cxtestTestTransferFunctionColorWidget.cpp create mode 100644 source/gui/testing/cxtestTestTransferFunctionColorWidget.h create mode 100644 source/gui/testing/cxtestTestTransferFunctions.cpp create mode 100644 source/gui/testing/cxtestTestTransferFunctions.h create mode 100644 source/gui/testing/cxtestTransferFunctionWidgets.cpp create mode 100644 source/gui/testing/cxtest_tc.cpp create mode 100644 source/gui/toolWidgets/cxToolManagerWidget.cpp create mode 100644 source/gui/toolWidgets/cxToolManagerWidget.h create mode 100644 source/gui/toolWidgets/cxToolPropertiesWidget.cpp create mode 100644 source/gui/toolWidgets/cxToolPropertiesWidget.h create mode 100644 source/gui/utilities/cxAudioImpl.cpp create mode 100644 source/gui/utilities/cxAudioImpl.h create mode 100644 source/gui/utilities/cxClippers.cpp create mode 100644 source/gui/utilities/cxClippers.h create mode 100644 source/gui/utilities/cxDynamicMainWindowWidgets.cpp create mode 100644 source/gui/utilities/cxDynamicMainWindowWidgets.h create mode 100644 source/gui/utilities/cxMetricUtilities.cpp create mode 100644 source/gui/utilities/cxMetricUtilities.h create mode 100644 source/gui/utilities/cxToolImagePreviewWidget.cpp create mode 100644 source/gui/utilities/cxToolImagePreviewWidget.h create mode 100755 source/installation/CMakeLists.txt create mode 100644 source/logic/CMakeLists.txt create mode 100644 source/logic/cxLogicManager.cpp create mode 100644 source/logic/cxLogicManager.h create mode 100644 source/logic/cxPluginFramework.cpp create mode 100644 source/logic/cxPluginFramework.h create mode 100644 source/logic/cxPluginFrameworkUtilities.cpp create mode 100644 source/logic/cxPluginFrameworkUtilities.h create mode 100644 source/logic/testing/CMakeLists.txt create mode 100644 source/logic/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100755 source/logic/testing/cxtestPlugins.cpp create mode 100644 source/logic/testing/cxtestStreamerService.cpp create mode 100644 source/plugins/CMakeLists.txt create mode 100644 source/plugins/org.custusx.acquisition/CMakeLists.txt create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionImplService.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionImplService.h create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionService.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionService.h create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServiceNull.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServiceNull.h create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServicePluginActivator.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServicePluginActivator.h create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServiceProxy.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxAcquisitionServiceProxy.h create mode 100644 source/plugins/org.custusx.acquisition/cxRecordSession.cpp create mode 100644 source/plugins/org.custusx.acquisition/cxRecordSession.h create mode 100644 source/plugins/org.custusx.acquisition/doc/org.custusx.acquisition.md create mode 100644 source/plugins/org.custusx.acquisition/gui/cxAcquisitionPlugin.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxAcquisitionPlugin.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordSessionSelector.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordSessionSelector.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordSessionWidget.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordSessionWidget.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordTrackingWidget.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxRecordTrackingWidget.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxSoundSpeedConversionWidget.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxSoundSpeedConversionWidget.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxStringPropertySelectRecordSession.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxStringPropertySelectRecordSession.h create mode 100644 source/plugins/org.custusx.acquisition/gui/cxUSAcqusitionWidget.cpp create mode 100644 source/plugins/org.custusx.acquisition/gui/cxUSAcqusitionWidget.h create mode 100644 source/plugins/org.custusx.acquisition/logic/cxAcquisitionData.cpp create mode 100644 source/plugins/org.custusx.acquisition/logic/cxAcquisitionData.h create mode 100644 source/plugins/org.custusx.acquisition/logic/cxUSAcquisition.cpp create mode 100644 source/plugins/org.custusx.acquisition/logic/cxUSAcquisition.h create mode 100644 source/plugins/org.custusx.acquisition/logic/cxUSSavingRecorder.cpp create mode 100644 source/plugins/org.custusx.acquisition/logic/cxUSSavingRecorder.h create mode 100644 source/plugins/org.custusx.acquisition/target_libraries.cmake create mode 100644 source/plugins/org.custusx.acquisition/testing/CMakeLists.txt create mode 100755 source/plugins/org.custusx.acquisition/testing/cxtestAcquisition.cpp create mode 100644 source/plugins/org.custusx.acquisition/testing/cxtestAcquisitionFixture.cpp create mode 100644 source/plugins/org.custusx.acquisition/testing/cxtestAcquisitionFixture.h create mode 100644 source/plugins/org.custusx.acquisition/testing/cxtestUSSavingRecorder.cpp create mode 100644 source/plugins/org.custusx.acquisition/testing/cxtestUSSavingRecorderFixture.cpp create mode 100644 source/plugins/org.custusx.acquisition/testing/cxtestUSSavingRecorderFixture.h create mode 160000 source/plugins/org.custusx.anglecorrection create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/CMakeLists.txt create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/README.md create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopePositionProjection.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopePositionProjection.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigation.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationGUIExtenderService.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationPluginActivator.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationPluginActivator.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationWidget.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxBronchoscopyNavigationWidget.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxVirtualCameraRotationWidget.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/cxVirtualCameraRotationWidget.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/target_libraries.cmake create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/testing/CMakeLists.txt create mode 100755 source/plugins/org.custusx.bronchoscopynavigation/testing/cxtestExamplePlugin.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/trackingSystemBronchoscopy/cxBronchoscopyTool.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/trackingSystemBronchoscopy/cxBronchoscopyTool.h create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/trackingSystemBronchoscopy/cxTrackingSystemBronchoscopyService.cpp create mode 100644 source/plugins/org.custusx.bronchoscopynavigation/trackingSystemBronchoscopy/cxTrackingSystemBronchoscopyService.h create mode 100644 source/plugins/org.custusx.calibration/CMakeLists.txt create mode 100644 source/plugins/org.custusx.calibration/cxCalibrationGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.calibration/cxCalibrationGUIExtenderService.h create mode 100644 source/plugins/org.custusx.calibration/cxCalibrationPluginActivator.cpp create mode 100644 source/plugins/org.custusx.calibration/cxCalibrationPluginActivator.h create mode 100644 source/plugins/org.custusx.calibration/doc/org.custusx.calibration.md create mode 100644 source/plugins/org.custusx.calibration/gui/cxCalibrationMethodsWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxCalibrationMethodsWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxEBUSCalibrationWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxEBUSCalibrationWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxLapFrameToolCalibrationWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxLapFrameToolCalibrationWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxTemporalCalibrationWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxTemporalCalibrationWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolManualCalibrationWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolManualCalibrationWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolTipCalibrationWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolTipCalibrationWidget.h create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolTipSampleWidget.cpp create mode 100644 source/plugins/org.custusx.calibration/gui/cxToolTipSampleWidget.h create mode 100644 source/plugins/org.custusx.calibration/logic/cxTemporalCalibration.cpp create mode 100644 source/plugins/org.custusx.calibration/logic/cxTemporalCalibration.h create mode 100644 source/plugins/org.custusx.calibration/target_libraries.cmake create mode 100644 source/plugins/org.custusx.calibration/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.calibration/testing/cxtestDummyCalibration.cpp create mode 100644 source/plugins/org.custusx.calibration/testing/cxtestDummyCalibration.h create mode 100644 source/plugins/org.custusx.calibration/testing/cxtestTemporalCalibration.cpp create mode 100644 source/plugins/org.custusx.ceetron/CMakeLists.txt create mode 100644 source/plugins/org.custusx.ceetron/cxCeetronPluginActivator.cpp create mode 100644 source/plugins/org.custusx.ceetron/cxCeetronPluginActivator.h create mode 100644 source/plugins/org.custusx.ceetron/cxCgeoReaderWriter.cpp create mode 100644 source/plugins/org.custusx.ceetron/cxCgeoReaderWriter.h create mode 100644 source/plugins/org.custusx.ceetron/target_libraries.cmake create mode 100644 source/plugins/org.custusx.ceetron/testing/CMakeLists.txt create mode 100755 source/plugins/org.custusx.ceetron/testing/cxtestCeetronPlugin.cpp create mode 100644 source/plugins/org.custusx.ceetron/testing/cxtestCgeoTestFunctions.h create mode 100644 source/plugins/org.custusx.ceetron/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.control/CMakeLists.txt create mode 100644 source/plugins/org.custusx.control/control/data_3d.txt create mode 100644 source/plugins/org.custusx.control/control/sharedcontrol.cpp create mode 100644 source/plugins/org.custusx.control/cxControlGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.control/cxControlGUIExtenderService.h create mode 100644 source/plugins/org.custusx.control/cxControlPluginActivator.cpp create mode 100644 source/plugins/org.custusx.control/cxControlPluginActivator.h create mode 100644 source/plugins/org.custusx.control/cxControlWidget.cpp create mode 100644 source/plugins/org.custusx.control/cxControlWidget.h create mode 100644 source/plugins/org.custusx.control/target_libraries.cmake create mode 100644 source/plugins/org.custusx.control/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.control/testing/cxtestControlPlugin.cpp create mode 100644 source/plugins/org.custusx.control/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.control/wrapper/cxSharedControlWrapper.cpp create mode 100644 source/plugins/org.custusx.control/wrapper/cxSharedControlWrapper.h create mode 100644 source/plugins/org.custusx.core.filemanager/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.filemanager/cxFileManagerImplService.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/cxFileManagerImplService.h create mode 100644 source/plugins/org.custusx.core.filemanager/cxFileManagerServicePluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/cxFileManagerServicePluginActivator.h create mode 100644 source/plugins/org.custusx.core.filemanager/cxImportExportGuiExtenderService.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/cxImportExportGuiExtenderService.h create mode 100644 source/plugins/org.custusx.core.filemanager/dicom/cxDicomConverter.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/dicom/cxDicomConverter.h create mode 100644 source/plugins/org.custusx.core.filemanager/dicom/cxDicomImageReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/dicom/cxDicomImageReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/doc/org.custusx.core.filemanager.export.md create mode 100644 source/plugins/org.custusx.core.filemanager/doc/org.custusx.core.filemanager.import.md create mode 100644 source/plugins/org.custusx.core.filemanager/doc/org.custusx.core.filemanager.md create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxDICOMReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxDICOMReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxMNIReaderWriter.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxMNIReaderWriter.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxMetaImageReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxMetaImageReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxNIfTIReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxNIfTIReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxPNGImageReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxPNGImageReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxPolyDataMeshReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxPolyDataMeshReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxStlMeshReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxStlMeshReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxXMLPolyDataMeshReader.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/filereaderwriters/cxXMLPolyDataMeshReader.h create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxExportDataTypeWidget.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxExportDataTypeWidget.h create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxExportWidget.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxExportWidget.h create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxImportDataTypeWidget.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxImportDataTypeWidget.h create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxImportWidget.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/gui/cxImportWidget.h create mode 100644 source/plugins/org.custusx.core.filemanager/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.filemanager/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.filemanager/testing/cxtestDataReaderWriter.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/testing/cxtestTestToolMesh.cpp create mode 100644 source/plugins/org.custusx.core.filemanager/testing/cxtestTestToolMesh.h create mode 100644 source/plugins/org.custusx.core.filemanager/testing/cxtestToolFiles.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.openigtlink3/cxOpenIGTLinkPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/cxOpenIGTLinkPluginActivator.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/doc/org_custusx_core_openigtlink_datatransfer.md create mode 100644 source/plugins/org.custusx.core.openigtlink3/doc/org_custusx_core_openigtlink_plus_install.md create mode 100644 source/plugins/org.custusx.core.openigtlink3/guiExtenderService/cxOpenIGTLinkGuiExtenderService.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/guiExtenderService/cxOpenIGTLinkGuiExtenderService.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/guiExtenderService/cxPlusConnectWidget.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/guiExtenderService/cxPlusConnectWidget.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/network/cxNetworkHandler.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/network/cxNetworkHandler.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/network/cxProbeDefinitionFromStringMessages.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/network/cxProbeDefinitionFromStringMessages.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/streamerService/cxOpenIGTLinkStreamer.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/streamerService/cxOpenIGTLinkStreamer.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/streamerService/cxOpenIGTLinkStreamerService.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/streamerService/cxOpenIGTLinkStreamerService.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestIOReceiver.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestIOReceiver.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestOpenIGTLinkIO.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestOpenIGTLinkTrackingSystemService.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestPlusReceiver.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestPlusReceiver.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestProbeDefinitionFromStringMessages.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestReceiver.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/testing/cxtestReceiver.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/trackingSystemService/cxOpenIGTLinkTool.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/trackingSystemService/cxOpenIGTLinkTool.h create mode 100644 source/plugins/org.custusx.core.openigtlink3/trackingSystemService/cxOpenIGTLinkTrackingSystemService.cpp create mode 100644 source/plugins/org.custusx.core.openigtlink3/trackingSystemService/cxOpenIGTLinkTrackingSystemService.h create mode 100644 source/plugins/org.custusx.core.patientmodel/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.patientmodel/cxDataManager.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxDataManager.h create mode 100644 source/plugins/org.custusx.core.patientmodel/cxDataManagerImpl.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxDataManagerImpl.h create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientData.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientData.h create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientModelImplService.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientModelImplService.h create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientModelPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxPatientModelPluginActivator.h create mode 100644 source/plugins/org.custusx.core.patientmodel/cxSessionStorageServiceImpl.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/cxSessionStorageServiceImpl.h create mode 100644 source/plugins/org.custusx.core.patientmodel/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestCatchDistanceMetric.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestCatchFrameMetric.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestCatchPatientService.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestCatchToolMetric.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestMetricFixture.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestMetricFixture.h create mode 100755 source/plugins/org.custusx.core.patientmodel/testing/cxtestPatientModelPlugin.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestPatientStorage.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestSessionStorageTestFixture.cpp create mode 100644 source/plugins/org.custusx.core.patientmodel/testing/cxtestSessionStorageTestFixture.h create mode 100644 source/plugins/org.custusx.core.state/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.state/cxApplicationsParser.cpp create mode 100644 source/plugins/org.custusx.core.state/cxApplicationsParser.h create mode 100644 source/plugins/org.custusx.core.state/cxCustusXWorkflowStateMachine.cpp create mode 100644 source/plugins/org.custusx.core.state/cxCustusXWorkflowStateMachine.h create mode 100644 source/plugins/org.custusx.core.state/cxCustusXWorkflowStates.cpp create mode 100644 source/plugins/org.custusx.core.state/cxCustusXWorkflowStates.h create mode 100644 source/plugins/org.custusx.core.state/cxStatePluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.state/cxStatePluginActivator.h create mode 100644 source/plugins/org.custusx.core.state/cxStateServiceImpl.cpp create mode 100644 source/plugins/org.custusx.core.state/cxStateServiceImpl.h create mode 100644 source/plugins/org.custusx.core.state/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.core.state/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/cxIGSTKTrackingPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/cxIGSTKTrackingPluginActivator.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/testing/cxExportHack.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/testing/cxExportHack.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/testing/cxtestToolFiles.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTool.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTool.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkToolManager.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkToolManager.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTracker.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTracker.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTrackerThread.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxIgstkTrackerThread.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxToolUsingIGSTK.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxToolUsingIGSTK.h create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxTrackingSystemIGSTKService.cpp create mode 100644 source/plugins/org.custusx.core.tracking.system.igstk/trackingSystemIGSTK/cxTrackingSystemIGSTKService.h create mode 100644 source/plugins/org.custusx.core.tracking/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingImplService.cpp create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingImplService.h create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingPluginActivator.h create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingSystemDummyService.cpp create mode 100644 source/plugins/org.custusx.core.tracking/cxTrackingSystemDummyService.h create mode 100644 source/plugins/org.custusx.core.tracking/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.tracking/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestCatchProbe.cpp create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestCatchTrackingService.cpp create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestTestToolMesh.cpp create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestTestToolMesh.h create mode 100644 source/plugins/org.custusx.core.tracking/testing/cxtestToolFiles.cpp create mode 100755 source/plugins/org.custusx.core.tracking/testing/cxtestTrackingPlugin.cpp create mode 100644 source/plugins/org.custusx.core.tracking/trackingSystemPlayback/cxTrackingSystemPlaybackService.cpp create mode 100644 source/plugins/org.custusx.core.tracking/trackingSystemPlayback/cxTrackingSystemPlaybackService.h create mode 100644 source/plugins/org.custusx.core.video/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.video/cxIGTLinkClientStreamer.cpp create mode 100644 source/plugins/org.custusx.core.video/cxIGTLinkClientStreamer.h create mode 100644 source/plugins/org.custusx.core.video/cxIGTLinkStreamerService.cpp create mode 100644 source/plugins/org.custusx.core.video/cxIGTLinkStreamerService.h create mode 100644 source/plugins/org.custusx.core.video/cxImageFileStreamerService.cpp create mode 100644 source/plugins/org.custusx.core.video/cxImageFileStreamerService.h create mode 100644 source/plugins/org.custusx.core.video/cxImageReceiverThread.cpp create mode 100644 source/plugins/org.custusx.core.video/cxImageReceiverThread.h create mode 100644 source/plugins/org.custusx.core.video/cxLocalServerStreamerServer.cpp create mode 100644 source/plugins/org.custusx.core.video/cxLocalServerStreamerServer.h create mode 100644 source/plugins/org.custusx.core.video/cxOpenCVStreamerService.cpp create mode 100644 source/plugins/org.custusx.core.video/cxOpenCVStreamerService.h create mode 100644 source/plugins/org.custusx.core.video/cxPlaybackUSAcquisitionVideo.cpp create mode 100644 source/plugins/org.custusx.core.video/cxPlaybackUSAcquisitionVideo.h create mode 100644 source/plugins/org.custusx.core.video/cxStreamerServiceUtilities.cpp create mode 100644 source/plugins/org.custusx.core.video/cxStreamerServiceUtilities.h create mode 100644 source/plugins/org.custusx.core.video/cxVideoConnection.cpp create mode 100644 source/plugins/org.custusx.core.video/cxVideoConnection.h create mode 100644 source/plugins/org.custusx.core.video/cxVideoImplService.cpp create mode 100644 source/plugins/org.custusx.core.video/cxVideoImplService.h create mode 100644 source/plugins/org.custusx.core.video/cxVideoPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.video/cxVideoPluginActivator.h create mode 100644 source/plugins/org.custusx.core.video/cxVideoServiceBackend.cpp create mode 100644 source/plugins/org.custusx.core.video/cxVideoServiceBackend.h create mode 100644 source/plugins/org.custusx.core.video/doc/org.custusx.core.video.md create mode 100644 source/plugins/org.custusx.core.video/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.video/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.video/testing/cxCatchVideo.cpp create mode 100644 source/plugins/org.custusx.core.video/testing/cxtestCatchStreamingWidgets.cpp create mode 100644 source/plugins/org.custusx.core.video/testing/cxtestTestVideoConnectionWidget.cpp create mode 100644 source/plugins/org.custusx.core.video/testing/cxtestTestVideoConnectionWidget.h create mode 100755 source/plugins/org.custusx.core.video/testing/cxtestVideoPlugin.cpp create mode 100644 source/plugins/org.custusx.core.view/CMakeLists.txt create mode 100644 source/plugins/org.custusx.core.view/cx2DZoomHandler.cpp create mode 100644 source/plugins/org.custusx.core.view/cx2DZoomHandler.h create mode 100644 source/plugins/org.custusx.core.view/cxAxisConnector.cpp create mode 100644 source/plugins/org.custusx.core.view/cxAxisConnector.h create mode 100644 source/plugins/org.custusx.core.view/cxCameraStyle.cpp create mode 100644 source/plugins/org.custusx.core.view/cxCameraStyle.h create mode 100644 source/plugins/org.custusx.core.view/cxCameraStyleForView.cpp create mode 100644 source/plugins/org.custusx.core.view/cxCameraStyleForView.h create mode 100644 source/plugins/org.custusx.core.view/cxDataRepContainer.cpp create mode 100644 source/plugins/org.custusx.core.view/cxDataRepContainer.h create mode 100644 source/plugins/org.custusx.core.view/cxMultiVolume3DRepProducer.cpp create mode 100644 source/plugins/org.custusx.core.view/cxMultiVolume3DRepProducer.h create mode 100644 source/plugins/org.custusx.core.view/cxNavigationAlgorithms.cpp create mode 100644 source/plugins/org.custusx.core.view/cxNavigationAlgorithms.h create mode 100644 source/plugins/org.custusx.core.view/cxRenderLoop.cpp create mode 100644 source/plugins/org.custusx.core.view/cxRenderLoop.h create mode 100755 source/plugins/org.custusx.core.view/cxRepManager.cpp create mode 100644 source/plugins/org.custusx.core.view/cxRepManager.h create mode 100644 source/plugins/org.custusx.core.view/cxViewGroup.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewGroup.h create mode 100644 source/plugins/org.custusx.core.view/cxViewImplService.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewImplService.h create mode 100644 source/plugins/org.custusx.core.view/cxViewPluginActivator.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewPluginActivator.h create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper.h create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper2D.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper2D.h create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper3D.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapper3D.h create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapperVideo.cpp create mode 100644 source/plugins/org.custusx.core.view/cxViewWrapperVideo.h create mode 100644 source/plugins/org.custusx.core.view/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.core.view/target_libraries.cmake create mode 100644 source/plugins/org.custusx.core.view/testing/CMakeLists.txt create mode 100755 source/plugins/org.custusx.core.view/testing/cxCppUnitMain.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxViewsFixture.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxViewsFixture.h create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestCatchMultiVolume3DRepProducer.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestCatchViewRenderSpeed.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestCatchVolumeReps.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestCatchVtkOpenGLGPUMultiVolumeRayCastMapper.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestDataTypeSort.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestGeometricRep.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestLayoutWidgetUsingViewWidgetsMock.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestLayoutWidgetUsingViewWidgetsMock.h create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestMultiVolume3DRepProducerFixture.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestMultiVolume3DRepProducerFixture.h create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestNavigationAlgorithms.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestRendering.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewCollectionWidgetMixedMock.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewCollectionWidgetMixedMock.h create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewGroup.cpp create mode 100755 source/plugins/org.custusx.core.view/testing/cxtestViewPlugin.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewService.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewServiceMock.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestViewServiceMock.h create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestVisualRendering.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestVisualizationHelper.cpp create mode 100644 source/plugins/org.custusx.core.view/testing/cxtestVisualizationHelper.h create mode 100644 source/plugins/org.custusx.dicom/CMakeLists.txt create mode 100644 source/plugins/org.custusx.dicom/core/cxDicomConverter.cpp create mode 100644 source/plugins/org.custusx.dicom/core/cxDicomConverter.h create mode 100644 source/plugins/org.custusx.dicom/core/cxDicomImageReader.cpp create mode 100644 source/plugins/org.custusx.dicom/core/cxDicomImageReader.h create mode 100644 source/plugins/org.custusx.dicom/cxDicomGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.dicom/cxDicomGUIExtenderService.h create mode 100644 source/plugins/org.custusx.dicom/cxDicomPluginActivator.cpp create mode 100644 source/plugins/org.custusx.dicom/cxDicomPluginActivator.h create mode 100644 source/plugins/org.custusx.dicom/doc/org.custusx.dicom.md create mode 100644 source/plugins/org.custusx.dicom/doc/org_custusx_dicom_widget.jpg create mode 100644 source/plugins/org.custusx.dicom/target_libraries.cmake create mode 100644 source/plugins/org.custusx.dicom/testing/CMakeLists.txt create mode 100755 source/plugins/org.custusx.dicom/testing/cxtestDicomConverter.cpp create mode 100644 source/plugins/org.custusx.dicom/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMAppWidget.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMAppWidget.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMModel.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMModel.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMThumbnailGenerator.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMThumbnailGenerator.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMThumbnailListWidget.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDICOMThumbnailListWidget.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomImporter.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomImporter.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomModelNode.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomModelNode.h create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomWidget.cpp create mode 100644 source/plugins/org.custusx.dicom/widgets/cxDicomWidget.h create mode 100644 source/plugins/org.custusx.example/CMakeLists.txt create mode 100644 source/plugins/org.custusx.example/cxExampleGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.example/cxExampleGUIExtenderService.h create mode 100644 source/plugins/org.custusx.example/cxExamplePluginActivator.cpp create mode 100644 source/plugins/org.custusx.example/cxExamplePluginActivator.h create mode 100644 source/plugins/org.custusx.example/cxExampleWidget.cpp create mode 100644 source/plugins/org.custusx.example/cxExampleWidget.h create mode 100644 source/plugins/org.custusx.example/target_libraries.cmake create mode 100644 source/plugins/org.custusx.example/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.example/testing/cxtestExamplePlugin.cpp create mode 100644 source/plugins/org.custusx.example/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.filter.accusurf/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.accusurf/cxAccusurf.cpp create mode 100644 source/plugins/org.custusx.filter.accusurf/cxAccusurf.h create mode 100644 source/plugins/org.custusx.filter.accusurf/cxAccusurfFilterService.cpp create mode 100644 source/plugins/org.custusx.filter.accusurf/cxAccusurfFilterService.h create mode 100644 source/plugins/org.custusx.filter.accusurf/cxFilterAccusurfPluginActivator.cpp create mode 100644 source/plugins/org.custusx.filter.accusurf/cxFilterAccusurfPluginActivator.h create mode 100644 source/plugins/org.custusx.filter.accusurf/doc/org.custusx.filter.accusurf.md create mode 100644 source/plugins/org.custusx.filter.accusurf/target_libraries.cmake create mode 100644 source/plugins/org.custusx.filter.accusurf/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.accusurf/testing/cxtestAccusurfFilter.cpp create mode 100644 source/plugins/org.custusx.filter.accusurf/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.filter.airways/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.airways/cxAirwaysFilterService.cpp create mode 100644 source/plugins/org.custusx.filter.airways/cxAirwaysFilterService.h create mode 100644 source/plugins/org.custusx.filter.airways/cxFilterAirwaysPluginActivator.cpp create mode 100644 source/plugins/org.custusx.filter.airways/cxFilterAirwaysPluginActivator.h create mode 100644 source/plugins/org.custusx.filter.airways/doc/org.custusx.filter.airways.md create mode 100644 source/plugins/org.custusx.filter.airways/target_libraries.cmake create mode 100644 source/plugins/org.custusx.filter.airways/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.airways/testing/cxtestAirways.cpp create mode 100644 source/plugins/org.custusx.filter.airways/testing/cxtestAirwaysFixture.cpp create mode 100644 source/plugins/org.custusx.filter.airways/testing/cxtestAirwaysFixture.h create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxAirwaysFromCenterline.cpp create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxAirwaysFromCenterline.h create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxAirwaysFromCenterlineFilterService.cpp create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxAirwaysFromCenterlineFilterService.h create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxFilterAirwaysFromCenterlinePluginActivator.cpp create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/cxFilterAirwaysFromCenterlinePluginActivator.h create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/doc/org.custusx.filter.airwaysfromcenterline.md create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/target_libraries.cmake create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/testing/cxtestAirwaysFromCenterlineFilter.cpp create mode 100644 source/plugins/org.custusx.filter.airwaysfromcenterline/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.filter.routetonode/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.routetonode/cxFilterRouteToNodePluginActivator.cpp create mode 100644 source/plugins/org.custusx.filter.routetonode/cxFilterRouteToNodePluginActivator.h create mode 100644 source/plugins/org.custusx.filter.routetonode/cxRouteToNode.cpp create mode 100644 source/plugins/org.custusx.filter.routetonode/cxRouteToNode.h create mode 100644 source/plugins/org.custusx.filter.routetonode/cxRouteToNodeFilterService.cpp create mode 100644 source/plugins/org.custusx.filter.routetonode/cxRouteToNodeFilterService.h create mode 100644 source/plugins/org.custusx.filter.routetonode/doc/org.custusx.filter.routetotarget.md create mode 100644 source/plugins/org.custusx.filter.routetonode/include/StateSpace/SE3.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/StateSpace/SO3.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/StateSpace/StateSpace.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/StateSpace/insertSpace.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/StateSpace/rn.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/macros/class_forward.h create mode 100644 source/plugins/org.custusx.filter.routetonode/include/planner/InsertPlanner.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/planner/InsertPlanner.hpp.autosave create mode 100644 source/plugins/org.custusx.filter.routetonode/include/planner/Planner.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/planner/RRT.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/include/planner/Tree.hpp create mode 100644 source/plugins/org.custusx.filter.routetonode/target_libraries.cmake create mode 100644 source/plugins/org.custusx.filter.routetotarget/CMakeLists.txt create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxFilterRouteToTargetPluginActivator.cpp create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxFilterRouteToTargetPluginActivator.h create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxRouteToTarget.cpp create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxRouteToTarget.h create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxRouteToTargetFilterService.cpp create mode 100644 source/plugins/org.custusx.filter.routetotarget/cxRouteToTargetFilterService.h create mode 100644 source/plugins/org.custusx.filter.routetotarget/doc/org.custusx.filter.routetotarget.md create mode 100644 source/plugins/org.custusx.filter.routetotarget/target_libraries.cmake create mode 100644 source/plugins/org.custusx.help/CMakeLists.txt create mode 100644 source/plugins/org.custusx.help/cxHelpEngine.cpp create mode 100644 source/plugins/org.custusx.help/cxHelpEngine.h create mode 100644 source/plugins/org.custusx.help/cxHelpGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.help/cxHelpGUIExtenderService.h create mode 100644 source/plugins/org.custusx.help/cxHelpPluginActivator.cpp create mode 100644 source/plugins/org.custusx.help/cxHelpPluginActivator.h create mode 100644 source/plugins/org.custusx.help/target_libraries.cmake create mode 100644 source/plugins/org.custusx.help/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.help/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100755 source/plugins/org.custusx.help/testing/cxtestHelpPlugin.cpp create mode 100644 source/plugins/org.custusx.help/testing/cxtestHelpPlugin.h create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpBrowser.cpp create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpBrowser.h create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpIndexWidget.cpp create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpIndexWidget.h create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpSearchWidget.cpp create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpSearchWidget.h create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpWidget.cpp create mode 100644 source/plugins/org.custusx.help/widgets/cxHelpWidget.h create mode 100644 source/plugins/org.custusx.node/CMakeLists.txt create mode 100644 source/plugins/org.custusx.node/cxNodeGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.node/cxNodeGUIExtenderService.h create mode 100644 source/plugins/org.custusx.node/cxNodePluginActivator.cpp create mode 100644 source/plugins/org.custusx.node/cxNodePluginActivator.h create mode 100644 source/plugins/org.custusx.node/cxNodeWidget.cpp create mode 100644 source/plugins/org.custusx.node/cxNodeWidget.h create mode 100644 source/plugins/org.custusx.node/target_libraries.cmake create mode 100644 source/plugins/org.custusx.node/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.node/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.node/testing/cxtestNodePlugin.cpp create mode 100644 source/plugins/org.custusx.planning/CMakeLists.txt create mode 100644 source/plugins/org.custusx.planning/cmake/FindEigen3.cmake create mode 100644 source/plugins/org.custusx.planning/cmake/FindFlann.cmake create mode 100644 source/plugins/org.custusx.planning/cmake/VTKConfig.cmake create mode 100644 source/plugins/org.custusx.planning/cxPlanning create mode 100644 source/plugins/org.custusx.planning/cxPlanningGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.planning/cxPlanningGUIExtenderService.h create mode 100644 source/plugins/org.custusx.planning/cxPlanningPluginActivator.cpp create mode 100644 source/plugins/org.custusx.planning/cxPlanningPluginActivator.h create mode 100644 source/plugins/org.custusx.planning/cxPlanningWidget.cpp create mode 100644 source/plugins/org.custusx.planning/cxPlanningWidget.h create mode 100644 source/plugins/org.custusx.planning/include/StateSpace/SE3.hpp create mode 100644 source/plugins/org.custusx.planning/include/StateSpace/SO3.hpp create mode 100644 source/plugins/org.custusx.planning/include/StateSpace/StateSpace.hpp create mode 100644 source/plugins/org.custusx.planning/include/StateSpace/insertSpace.hpp create mode 100644 source/plugins/org.custusx.planning/include/StateSpace/rn.hpp create mode 100644 source/plugins/org.custusx.planning/include/macros/class_forward.h create mode 100644 source/plugins/org.custusx.planning/include/planner/InsertPlanner.hpp create mode 100644 source/plugins/org.custusx.planning/include/planner/Planner.hpp create mode 100644 source/plugins/org.custusx.planning/include/planner/RRT.hpp create mode 100644 source/plugins/org.custusx.planning/include/planner/Tree.hpp create mode 100644 source/plugins/org.custusx.planning/src/main.cpp create mode 100644 source/plugins/org.custusx.planning/target_libraries.cmake create mode 100644 source/plugins/org.custusx.planning/test/insert_state_test.cpp create mode 100644 source/plugins/org.custusx.registration.gui/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationGUIExtenderService.h create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationGUIPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationGUIPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationHistoryGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationHistoryGUIExtenderService.h create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationHistoryWidget.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationHistoryWidget.h create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.gui/cxWirePhantomWidget.cpp create mode 100644 source/plugins/org.custusx.registration.gui/cxWirePhantomWidget.h create mode 100644 source/plugins/org.custusx.registration.gui/doc/org.custusx.registration.gui.md create mode 100644 source/plugins/org.custusx.registration.gui/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.registration.gui/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBranch.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBranch.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBranchList.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBranchList.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyImage2ImageRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyImage2ImageRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyRegistration.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyRegistration.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxBronchoscopyRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxRegistrationMethodBronchoscopyPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxRegistrationMethodBronchoscopyPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxRegistrationMethodBronchoscopyService.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/cxRegistrationMethodBronchoscopyService.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/doc/org_custusx_registration_method_bronchoscopy.h create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/doc/org_custusx_registration_method_bronchoscopy.md create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/doc/org_custusx_registration_method_bronchoscopy_image2image.md create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/testing/cxtestBranchHandling.cpp create mode 100644 source/plugins/org.custusx.registration.method.bronchoscopy/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlinePointsWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlinePointsWidget.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlineRegistration.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlineRegistration.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlineRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxCenterlineRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxRegistrationMethodCenterlinePluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxRegistrationMethodCenterlinePluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxRegistrationMethodCenterlineService.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/cxRegistrationMethodCenterlineService.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/doc/org_custusx_registration_method_centerline.h create mode 100644 source/plugins/org.custusx.registration.method.centerline/doc/org_custusx_registration_method_centerline.md create mode 100644 source/plugins/org.custusx.registration.method.centerline/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.centerline/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.centerline/testing/cxtestCenterlineRegistration.cpp create mode 100644 source/plugins/org.custusx.registration.method.centerline/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.commandline/cxRegistrationMethodCommandLinePluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/cxRegistrationMethodCommandLinePluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/cxRegistrationMethodCommandLineService.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/cxRegistrationMethodCommandLineService.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/doc/org_custusx_registration_method_commandline.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/doc/org_custusx_registration_method_commandline.md create mode 100644 source/plugins/org.custusx.registration.method.commandline/gui/cxElastixSyntaxHighlighter.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/gui/cxElastixSyntaxHighlighter.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/gui/cxElastixWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/gui/cxElastixWidget.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixExecuter.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixExecuter.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixManager.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixManager.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixParameters.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/logic/cxElastixParameters.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/target_libraries.cmake create mode 100755 source/plugins/org.custusx.registration.method.commandline/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.commandline/testing/cxElastixSingleThreadedRunner.cpp create mode 100644 source/plugins/org.custusx.registration.method.commandline/testing/cxElastixSingleThreadedRunner.h create mode 100644 source/plugins/org.custusx.registration.method.commandline/testing/cxtestCatchElastix.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxImageLandmarksWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxImageLandmarksWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkImage2ImageRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkImage2ImageRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkListener.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkListener.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkPatientRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkPatientRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxLandmarkRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxPatientLandMarksWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxPatientLandMarksWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxRegistrationMethodLandmarkPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxRegistrationMethodLandmarkPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxRegistrationMethodLandmarkService.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/cxRegistrationMethodLandmarkService.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_fast_landmark_image_to_patient.md create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_landmark.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_landmark.md create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_landmark_image_to_image.md create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_landmark_image_to_patient.md create mode 100644 source/plugins/org.custusx.registration.method.landmark/doc/org_custusx_registration_method_landmark_import_point_metrics.md create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastImageRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastImageRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastLandmarkPatientRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastLandmarkPatientRegistrationWidget.h create mode 100755 source/plugins/org.custusx.registration.method.landmark/fast/cxFastOrientationRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastOrientationRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastPatientRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/fast/cxFastPatientRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.landmark/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.landmark/testing/cxtestFastPatientRegistration.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/testing/cxtestFastPatientRegistrationWidgetFixture.cpp create mode 100644 source/plugins/org.custusx.registration.method.landmark/testing/cxtestFastPatientRegistrationWidgetFixture.h create mode 100644 source/plugins/org.custusx.registration.method.landmark/testing/cxtestLandmarkPatientRegistration.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualImage2ImageRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualImage2ImageRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualImageTransformRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualImageTransformRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualPatientRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualPatientRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxManualRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxPatientOrientationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxPatientOrientationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageToImageService.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageToImageService.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageToPatientService.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageToPatientService.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageTransformService.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualImageTransformService.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualPatientOrientationService.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualPatientOrientationService.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualService.cpp create mode 100644 source/plugins/org.custusx.registration.method.manual/cxRegistrationMethodManualService.h create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/I2I_registration_widget.png create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual.h create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual.md create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual_image2image.md create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual_image_to_patient.md create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual_image_transform.md create mode 100644 source/plugins/org.custusx.registration.method.manual/doc/org_custusx_registration_method_manual_patient_orientation.md create mode 100644 source/plugins/org.custusx.registration.method.manual/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.manual/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.manual/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100755 source/plugins/org.custusx.registration.method.manual/testing/cxtestRegistrationMethodManual.cpp create mode 100644 source/plugins/org.custusx.registration.method.plate/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.plate/cxPlateImageRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.plate/cxPlateImageRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.plate/cxPlateRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.plate/cxPlateRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.plate/cxRegistrationMethodPlatePluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.plate/cxRegistrationMethodPlatePluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.plate/cxRegistrationMethodPlateService.cpp create mode 100644 source/plugins/org.custusx.registration.method.plate/cxRegistrationMethodPlateService.h create mode 100644 source/plugins/org.custusx.registration.method.plate/doc/org.custusx.registration.method.plate.h create mode 100644 source/plugins/org.custusx.registration.method.plate/doc/org.custusx.registration.method.plate.md create mode 100644 source/plugins/org.custusx.registration.method.plate/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.registration.method.plate/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCFromPointerService.cpp create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCFromPointerService.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCFromPointerWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCFromPointerWidget.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCService.cpp create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCService.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/cxRMPCWidget.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/doc/org_custusx_registration_method_pointcloud.h create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/doc/org_custusx_registration_method_pointcloud.md create mode 100644 source/plugins/org.custusx.registration.method.pointcloud/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration.method.vessel/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxICPRegistrationBaseWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxICPRegistrationBaseWidget.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxICPWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxICPWidget.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxMeshInView.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxMeshInView.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxPrepareVesselsWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxPrepareVesselsWidget.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegisterI2IWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegisterI2IWidget.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegistrationMethodVesselPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegistrationMethodVesselPluginActivator.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegistrationMethodVesselService.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxRegistrationMethodVesselService.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxSeansVesselRegistrationWidget.cpp create mode 100644 source/plugins/org.custusx.registration.method.vessel/cxSeansVesselRegistrationWidget.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/doc/org_custusx_registration_method_vessel.h create mode 100644 source/plugins/org.custusx.registration.method.vessel/doc/org_custusx_registration_method_vessel.md create mode 100644 source/plugins/org.custusx.registration.method.vessel/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration/cxLandmarkTranslationRegistration.cpp create mode 100644 source/plugins/org.custusx.registration/cxLandmarkTranslationRegistration.h create mode 100644 source/plugins/org.custusx.registration/cxRegServices.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegServices.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationApplicator.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationApplicator.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationBaseWidget.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationBaseWidget.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationImplService.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationImplService.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationMethodService.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationPluginActivator.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationPluginActivator.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationProperties.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationProperties.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationService.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationService.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationServiceNull.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationServiceNull.h create mode 100644 source/plugins/org.custusx.registration/cxRegistrationServiceProxy.cpp create mode 100644 source/plugins/org.custusx.registration/cxRegistrationServiceProxy.h create mode 100644 source/plugins/org.custusx.registration/target_libraries.cmake create mode 100644 source/plugins/org.custusx.registration/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.registration/testing/cxtestCatchSeansVesselReg.cpp create mode 100644 source/plugins/org.custusx.registration/testing/cxtestRegistrationApplicator.cpp create mode 100755 source/plugins/org.custusx.registration/testing/cxtestRegistrationPlugin.cpp create mode 100644 source/plugins/org.custusx.registration/testing/cxtestRegistrationServiceProxy.cpp create mode 100644 source/plugins/org.custusx.registration/testing/cxtestSeansVesselRegFixture.cpp create mode 100644 source/plugins/org.custusx.registration/testing/cxtestSeansVesselRegFixture.h create mode 100644 source/plugins/org.custusx.training/CMakeLists.txt create mode 100644 source/plugins/org.custusx.training/cxTrainingGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.training/cxTrainingGUIExtenderService.h create mode 100644 source/plugins/org.custusx.training/cxTrainingPluginActivator.cpp create mode 100644 source/plugins/org.custusx.training/cxTrainingPluginActivator.h create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step1.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step2.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step3.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step4.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step5.md create mode 100644 source/plugins/org.custusx.training/doc/org_custusx_training_sessionA_step6.md create mode 100644 source/plugins/org.custusx.training/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.training/target_libraries.cmake create mode 100644 source/plugins/org.custusx.training/widgets/cxNeuroTrainingWidget.cpp create mode 100644 source/plugins/org.custusx.training/widgets/cxNeuroTrainingWidget.h create mode 100644 source/plugins/org.custusx.training/widgets/cxTrainingWidget.cpp create mode 100644 source/plugins/org.custusx.training/widgets/cxTrainingWidget.h create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/cxPNNReconstructionMethodService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/cxPNNReconstructionMethodService.h create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/cxPNNReconstructionPluginActivator.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/cxPNNReconstructionPluginActivator.h create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/doc/org.custusx.usreconstruction.pnn.md create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/target_libraries.cmake create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction.pnn/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100755 source/plugins/org.custusx.usreconstruction.pnn/testing/cxtestPNNPlugin.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclAlgorithm.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclAlgorithm.h create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclPluginActivator.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclPluginActivator.h create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclReconstructionMethodService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/cxVNNclReconstructionMethodService.h create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/doc/org.custusx.usreconstruction.vnncl.md create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/kernels.cl create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/kernels.cl.h create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/recConfig.h.in create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/target_libraries.cmake create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/testing/cxtestVNNclFixture.cpp create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/testing/cxtestVNNclFixture.h create mode 100644 source/plugins/org.custusx.usreconstruction.vnncl/testing/cxtestVNNclReconstructionService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction/cxPositionFilter.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxPositionFilter.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructCore.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructCore.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructOutputValueParamsInterfaces.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructOutputValueParamsInterfaces.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructParams.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructParams.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructPreprocessor.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructPreprocessor.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructThreads.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructThreads.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructedOutputVolumeParams.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructedOutputVolumeParams.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructionExecuter.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructionExecuter.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructionMethodService.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructionWidget.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxReconstructionWidget.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionGUIExtenderService.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionImplService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionImplService.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionPluginActivator.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionPluginActivator.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionService.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionService.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionServiceNull.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionServiceNull.h create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionServiceProxy.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/cxUsReconstructionServiceProxy.h create mode 100644 source/plugins/org.custusx.usreconstruction/doc/org.custusx.usreconstruction.md create mode 100644 source/plugins/org.custusx.usreconstruction/manifest_headers.cmake create mode 100644 source/plugins/org.custusx.usreconstruction/matrixInterpolation.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/matrixInterpolation.h create mode 100644 source/plugins/org.custusx.usreconstruction/target_libraries.cmake create mode 100755 source/plugins/org.custusx.usreconstruction/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestPositionFilter.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructRealData.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructRealData.h create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructionAlgorithmFixture.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructionAlgorithmFixture.h create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructionManager.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructionManagerFixture.cpp create mode 100644 source/plugins/org.custusx.usreconstruction/testing/cxtestReconstructionManagerFixture.h create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/CMakeLists.txt create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBPluginActivator.cpp create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBPluginActivator.h create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBService.cpp create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBService.h create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBWidget.cpp create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBWidget.h create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBcameraPath.cpp create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/cxVBcameraPath.h create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/doc/org.custusx.virtualbronchoscopy.md create mode 100644 source/plugins/org.custusx.virtualbronchoscopy/target_libraries.cmake create mode 100644 source/plugins/org.custusx.webserver/CMakeLists.txt create mode 100644 source/plugins/org.custusx.webserver/cxHttpRequestHandler.cpp create mode 100644 source/plugins/org.custusx.webserver/cxHttpRequestHandler.h create mode 100644 source/plugins/org.custusx.webserver/cxLayoutVideoSource.cpp create mode 100644 source/plugins/org.custusx.webserver/cxLayoutVideoSource.h create mode 100644 source/plugins/org.custusx.webserver/cxRemoteAPI.cpp create mode 100644 source/plugins/org.custusx.webserver/cxRemoteAPI.h create mode 100644 source/plugins/org.custusx.webserver/cxScreenVideoProvider.cpp create mode 100644 source/plugins/org.custusx.webserver/cxScreenVideoProvider.h create mode 100644 source/plugins/org.custusx.webserver/cxWebServerGUIExtenderService.cpp create mode 100644 source/plugins/org.custusx.webserver/cxWebServerGUIExtenderService.h create mode 100644 source/plugins/org.custusx.webserver/cxWebServerPluginActivator.cpp create mode 100644 source/plugins/org.custusx.webserver/cxWebServerPluginActivator.h create mode 100644 source/plugins/org.custusx.webserver/cxWebServerWidget.cpp create mode 100644 source/plugins/org.custusx.webserver/cxWebServerWidget.h create mode 100644 source/plugins/org.custusx.webserver/target_libraries.cmake create mode 100644 source/plugins/org.custusx.webserver/testing/CMakeLists.txt create mode 100644 source/plugins/org.custusx.webserver/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100755 source/plugins/org.custusx.webserver/testing/cxtestWebServerPlugin.cpp create mode 100644 source/resource/CMakeLists.txt create mode 100644 source/resource/GUIExtender/CMakeLists.txt create mode 100644 source/resource/GUIExtender/cxGUIExtenderService.cpp create mode 100644 source/resource/GUIExtender/cxGUIExtenderService.h create mode 100644 source/resource/OpenIGTLinkUtilities/CMakeLists.txt create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversion.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversion.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionBase.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionBase.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionImage.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionImage.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionPolyData.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionPolyData.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionSonixCXLegacy.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkConversionSonixCXLegacy.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkImageMessage.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkImageMessage.h create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkUSStatusMessage.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/cxIGTLinkUSStatusMessage.h create mode 100644 source/resource/OpenIGTLinkUtilities/igtl_sonix_status.c create mode 100644 source/resource/OpenIGTLinkUtilities/igtl_sonix_status.h create mode 100644 source/resource/OpenIGTLinkUtilities/igtl_us_status.c create mode 100644 source/resource/OpenIGTLinkUtilities/igtl_us_status.h create mode 100644 source/resource/OpenIGTLinkUtilities/testing/CMakeLists.txt create mode 100644 source/resource/OpenIGTLinkUtilities/testing/cxtestCatchIGTLinkConversion.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/testing/cxtestIGTLinkConversionFixture.cpp create mode 100644 source/resource/OpenIGTLinkUtilities/testing/cxtestIGTLinkConversionFixture.h create mode 100755 source/resource/core/CMakeLists.txt create mode 100644 source/resource/core/Data/cxActiveData.cpp create mode 100644 source/resource/core/Data/cxActiveData.h create mode 100644 source/resource/core/Data/cxActiveImageProxy.cpp create mode 100644 source/resource/core/Data/cxActiveImageProxy.h create mode 100644 source/resource/core/Data/cxAngleMetric.cpp create mode 100644 source/resource/core/Data/cxAngleMetric.h create mode 100644 source/resource/core/Data/cxCustomMetric.cpp create mode 100644 source/resource/core/Data/cxCustomMetric.h create mode 100644 source/resource/core/Data/cxData.cpp create mode 100644 source/resource/core/Data/cxData.h create mode 100644 source/resource/core/Data/cxDataFactory.cpp create mode 100644 source/resource/core/Data/cxDataFactory.h create mode 100644 source/resource/core/Data/cxDataMetric.cpp create mode 100644 source/resource/core/Data/cxDataMetric.h create mode 100644 source/resource/core/Data/cxDistanceMetric.cpp create mode 100644 source/resource/core/Data/cxDistanceMetric.h create mode 100644 source/resource/core/Data/cxErrorObserver.cpp create mode 100644 source/resource/core/Data/cxErrorObserver.h create mode 100644 source/resource/core/Data/cxFileManagerService.cpp create mode 100644 source/resource/core/Data/cxFileManagerService.h create mode 100644 source/resource/core/Data/cxFileManagerServiceBase.cpp create mode 100644 source/resource/core/Data/cxFileManagerServiceBase.h create mode 100644 source/resource/core/Data/cxFileManagerServiceNull.cpp create mode 100644 source/resource/core/Data/cxFileManagerServiceNull.h create mode 100644 source/resource/core/Data/cxFileManagerServiceProxy.cpp create mode 100644 source/resource/core/Data/cxFileManagerServiceProxy.h create mode 100644 source/resource/core/Data/cxFileReaderWriterService.cpp create mode 100644 source/resource/core/Data/cxFileReaderWriterService.h create mode 100644 source/resource/core/Data/cxFileReaderWriterServiceNull.cpp create mode 100644 source/resource/core/Data/cxFileReaderWriterServiceNull.h create mode 100644 source/resource/core/Data/cxFileReaderWriterServiceProxy.cpp create mode 100644 source/resource/core/Data/cxFileReaderWriterServiceProxy.h create mode 100644 source/resource/core/Data/cxFrameForest.cpp create mode 100644 source/resource/core/Data/cxFrameForest.h create mode 100644 source/resource/core/Data/cxFrameMetric.cpp create mode 100644 source/resource/core/Data/cxFrameMetric.h create mode 100644 source/resource/core/Data/cxFrameMetricBase.cpp create mode 100644 source/resource/core/Data/cxFrameMetricBase.h create mode 100644 source/resource/core/Data/cxGPUImageBuffer.cpp create mode 100644 source/resource/core/Data/cxGPUImageBuffer.h create mode 100644 source/resource/core/Data/cxImage.cpp create mode 100644 source/resource/core/Data/cxImage.h create mode 100644 source/resource/core/Data/cxImageDefaultTFGenerator.cpp create mode 100644 source/resource/core/Data/cxImageDefaultTFGenerator.h create mode 100644 source/resource/core/Data/cxImageLUT2D.cpp create mode 100644 source/resource/core/Data/cxImageLUT2D.h create mode 100644 source/resource/core/Data/cxImageParameters.cpp create mode 100644 source/resource/core/Data/cxImageParameters.h create mode 100644 source/resource/core/Data/cxImageTF3D.cpp create mode 100644 source/resource/core/Data/cxImageTF3D.h create mode 100644 source/resource/core/Data/cxImageTFData.cpp create mode 100644 source/resource/core/Data/cxImageTFData.h create mode 100644 source/resource/core/Data/cxLandmark.cpp create mode 100644 source/resource/core/Data/cxLandmark.h create mode 100644 source/resource/core/Data/cxMesh.cpp create mode 100644 source/resource/core/Data/cxMesh.h create mode 100644 source/resource/core/Data/cxMeshPropertyData.cpp create mode 100644 source/resource/core/Data/cxMeshPropertyData.h create mode 100644 source/resource/core/Data/cxMeshTextureData.cpp create mode 100644 source/resource/core/Data/cxMeshTextureData.h create mode 100644 source/resource/core/Data/cxMetricReferenceArgumentList.cpp create mode 100644 source/resource/core/Data/cxMetricReferenceArgumentList.h create mode 100644 source/resource/core/Data/cxNavigatedVideoImage.cpp create mode 100644 source/resource/core/Data/cxNavigatedVideoImage.h create mode 100644 source/resource/core/Data/cxPlaneMetric.cpp create mode 100644 source/resource/core/Data/cxPlaneMetric.h create mode 100644 source/resource/core/Data/cxPointMetric.cpp create mode 100644 source/resource/core/Data/cxPointMetric.h create mode 100644 source/resource/core/Data/cxPresets.cpp create mode 100644 source/resource/core/Data/cxPresets.h create mode 100644 source/resource/core/Data/cxRegionOfInterestMetric.cpp create mode 100644 source/resource/core/Data/cxRegionOfInterestMetric.h create mode 100644 source/resource/core/Data/cxRegistrationTransform.cpp create mode 100644 source/resource/core/Data/cxRegistrationTransform.h create mode 100644 source/resource/core/Data/cxShapedMetric.cpp create mode 100644 source/resource/core/Data/cxShapedMetric.h create mode 100644 source/resource/core/Data/cxSphereMetric.cpp create mode 100644 source/resource/core/Data/cxSphereMetric.h create mode 100644 source/resource/core/Data/cxToolMetric.cpp create mode 100644 source/resource/core/Data/cxToolMetric.h create mode 100644 source/resource/core/Data/cxTrackedStream.cpp create mode 100644 source/resource/core/Data/cxTrackedStream.h create mode 100644 source/resource/core/Data/cxTransferFunctions3DPresets.cpp create mode 100644 source/resource/core/Data/cxTransferFunctions3DPresets.h create mode 100644 source/resource/core/Data/cxUnsignedDerivedImage.cpp create mode 100644 source/resource/core/Data/cxUnsignedDerivedImage.h create mode 100644 source/resource/core/Data/doc/org.custusx.resource.core.metrics.md create mode 100644 source/resource/core/Math/cxBoundingBox3D.cpp create mode 100644 source/resource/core/Math/cxBoundingBox3D.h create mode 100644 source/resource/core/Math/cxFrame3D.cpp create mode 100644 source/resource/core/Math/cxFrame3D.h create mode 100644 source/resource/core/Math/cxMathBase.h create mode 100644 source/resource/core/Math/cxMathUtils.cpp create mode 100644 source/resource/core/Math/cxMathUtils.h create mode 100644 source/resource/core/Math/cxMatrixBaseEigenAddons.h create mode 100644 source/resource/core/Math/cxPlainObjectEigenAddons.h create mode 100644 source/resource/core/Math/cxTransform3D.cpp create mode 100644 source/resource/core/Math/cxTransform3D.h create mode 100644 source/resource/core/Math/cxTransformEigenAddons.h create mode 100644 source/resource/core/Math/cxVector3D.cpp create mode 100644 source/resource/core/Math/cxVector3D.h create mode 100755 source/resource/core/Tool/ProbeXmlConfigParser.h create mode 100644 source/resource/core/Tool/ProbeXmlConfigParserImpl.cpp create mode 100644 source/resource/core/Tool/ProbeXmlConfigParserImpl.h create mode 100644 source/resource/core/Tool/ProbeXmlConfigParserMock.cpp create mode 100644 source/resource/core/Tool/ProbeXmlConfigParserMock.h create mode 100644 source/resource/core/Tool/cxActiveToolProxy.cpp create mode 100644 source/resource/core/Tool/cxActiveToolProxy.h create mode 100644 source/resource/core/Tool/cxCreateProbeDefinitionFromConfiguration.cpp create mode 100644 source/resource/core/Tool/cxCreateProbeDefinitionFromConfiguration.h create mode 100644 source/resource/core/Tool/cxDummyTool.cpp create mode 100644 source/resource/core/Tool/cxDummyTool.h create mode 100644 source/resource/core/Tool/cxDummyToolManager.cpp create mode 100644 source/resource/core/Tool/cxDummyToolManager.h create mode 100644 source/resource/core/Tool/cxManualTool.cpp create mode 100644 source/resource/core/Tool/cxManualTool.h create mode 100644 source/resource/core/Tool/cxManualToolAdapter.cpp create mode 100644 source/resource/core/Tool/cxManualToolAdapter.h create mode 100644 source/resource/core/Tool/cxPlaybackTool.cpp create mode 100644 source/resource/core/Tool/cxPlaybackTool.h create mode 100644 source/resource/core/Tool/cxProbe.h create mode 100644 source/resource/core/Tool/cxProbeAdapterRTSource.cpp create mode 100644 source/resource/core/Tool/cxProbeAdapterRTSource.h create mode 100644 source/resource/core/Tool/cxProbeDefinition.cpp create mode 100644 source/resource/core/Tool/cxProbeDefinition.h create mode 100644 source/resource/core/Tool/cxProbeImpl.cpp create mode 100644 source/resource/core/Tool/cxProbeImpl.h create mode 100644 source/resource/core/Tool/cxProbeSector.cpp create mode 100644 source/resource/core/Tool/cxProbeSector.h create mode 100644 source/resource/core/Tool/cxSliceProxy.cpp create mode 100644 source/resource/core/Tool/cxSliceProxy.h create mode 100644 source/resource/core/Tool/cxSlicedImageProxy.cpp create mode 100644 source/resource/core/Tool/cxSlicedImageProxy.h create mode 100644 source/resource/core/Tool/cxTool.cpp create mode 100755 source/resource/core/Tool/cxTool.h create mode 100644 source/resource/core/Tool/cxToolConfigurationParser.cpp create mode 100644 source/resource/core/Tool/cxToolConfigurationParser.h create mode 100644 source/resource/core/Tool/cxToolFileParser.cpp create mode 100644 source/resource/core/Tool/cxToolFileParser.h create mode 100644 source/resource/core/Tool/cxToolImpl.cpp create mode 100644 source/resource/core/Tool/cxToolImpl.h create mode 100644 source/resource/core/Tool/cxToolNull.cpp create mode 100644 source/resource/core/Tool/cxToolNull.h create mode 100644 source/resource/core/Tool/cxToolProxy.cpp create mode 100644 source/resource/core/Tool/cxToolProxy.h create mode 100644 source/resource/core/Tool/cxTracker.cpp create mode 100644 source/resource/core/Tool/cxTracker.h create mode 100644 source/resource/core/Tool/cxTrackerConfiguration.cpp create mode 100644 source/resource/core/Tool/cxTrackerConfiguration.h create mode 100644 source/resource/core/Tool/cxTrackerConfigurationImpl.cpp create mode 100644 source/resource/core/Tool/cxTrackerConfigurationImpl.h create mode 100644 source/resource/core/Tool/cxTrackerConfigurationNull.h create mode 100644 source/resource/core/Tool/cxTrackingPositionFilter.cpp create mode 100644 source/resource/core/Tool/cxTrackingPositionFilter.h create mode 100644 source/resource/core/Tool/cxTrackingService.cpp create mode 100644 source/resource/core/Tool/cxTrackingService.h create mode 100644 source/resource/core/Tool/cxTrackingServiceNull.cpp create mode 100644 source/resource/core/Tool/cxTrackingServiceNull.h create mode 100644 source/resource/core/Tool/cxTrackingServiceProxy.cpp create mode 100644 source/resource/core/Tool/cxTrackingServiceProxy.h create mode 100644 source/resource/core/Tool/cxTrackingSystemService.cpp create mode 100644 source/resource/core/Tool/cxTrackingSystemService.h create mode 100644 source/resource/core/Video/cxBasicVideoSource.cpp create mode 100644 source/resource/core/Video/cxBasicVideoSource.h create mode 100644 source/resource/core/Video/cxStreamerService.cpp create mode 100644 source/resource/core/Video/cxStreamerService.h create mode 100644 source/resource/core/Video/cxStreamerServiceNull.cpp create mode 100644 source/resource/core/Video/cxStreamerServiceNull.h create mode 100644 source/resource/core/Video/cxStreamerServiceProxy.cpp create mode 100644 source/resource/core/Video/cxStreamerServiceProxy.h create mode 100644 source/resource/core/Video/cxStringPropertyActiveVideoSource.cpp create mode 100644 source/resource/core/Video/cxStringPropertyActiveVideoSource.h create mode 100644 source/resource/core/Video/cxTestVideoSource.cpp create mode 100644 source/resource/core/Video/cxTestVideoSource.h create mode 100644 source/resource/core/Video/cxVideoRecorder.cpp create mode 100644 source/resource/core/Video/cxVideoRecorder.h create mode 100644 source/resource/core/Video/cxVideoService.cpp create mode 100644 source/resource/core/Video/cxVideoService.h create mode 100644 source/resource/core/Video/cxVideoServiceNull.cpp create mode 100644 source/resource/core/Video/cxVideoServiceNull.h create mode 100644 source/resource/core/Video/cxVideoServiceProxy.cpp create mode 100644 source/resource/core/Video/cxVideoServiceProxy.h create mode 100644 source/resource/core/Video/cxVideoSource.h create mode 100644 source/resource/core/Video/cxVideoSourceSHM.cpp create mode 100644 source/resource/core/Video/cxVideoSourceSHM.h create mode 100644 source/resource/core/algorithms/ItkVtkGlue/itkImageToVTKImageFilter.h create mode 100644 source/resource/core/algorithms/ItkVtkGlue/itkImageToVTKImageFilter.txx create mode 100644 source/resource/core/algorithms/ItkVtkGlue/itkVTKImageToImageFilter.h create mode 100644 source/resource/core/algorithms/ItkVtkGlue/itkVTKImageToImageFilter.txx create mode 100644 source/resource/core/algorithms/cxAlgorithmHelpers.cpp create mode 100644 source/resource/core/algorithms/cxAlgorithmHelpers.h create mode 100644 source/resource/core/algorithms/cxCompositeTimedAlgorithm.cpp create mode 100644 source/resource/core/algorithms/cxCompositeTimedAlgorithm.h create mode 100644 source/resource/core/algorithms/cxImageAlgorithms.cpp create mode 100644 source/resource/core/algorithms/cxImageAlgorithms.h create mode 100644 source/resource/core/algorithms/cxThreadedTimedAlgorithm.cpp create mode 100644 source/resource/core/algorithms/cxThreadedTimedAlgorithm.h create mode 100644 source/resource/core/algorithms/cxTimedAlgorithm.cpp create mode 100644 source/resource/core/algorithms/cxTimedAlgorithm.h create mode 100644 source/resource/core/algorithms/itkBinaryThinningImageFilter3D.h create mode 100644 source/resource/core/algorithms/itkBinaryThinningImageFilter3D.txx create mode 100644 source/resource/core/cxCoreServices.cpp create mode 100644 source/resource/core/cxCoreServices.h create mode 100644 source/resource/core/cxForwardDeclarations.h create mode 100644 source/resource/core/cxPrecompiledHeader.cpp create mode 100644 source/resource/core/cxPrecompiledHeader.h create mode 100644 source/resource/core/logger/cxAudio.h create mode 100644 source/resource/core/logger/cxLog.cpp create mode 100644 source/resource/core/logger/cxLog.h create mode 100644 source/resource/core/logger/cxLogFileWatcher.cpp create mode 100644 source/resource/core/logger/cxLogFileWatcher.h create mode 100644 source/resource/core/logger/cxLogMessage.cpp create mode 100644 source/resource/core/logger/cxLogMessage.h create mode 100644 source/resource/core/logger/cxLogMessageFilter.cpp create mode 100644 source/resource/core/logger/cxLogMessageFilter.h create mode 100644 source/resource/core/logger/cxLogger.cpp create mode 100644 source/resource/core/logger/cxLogger.h create mode 100644 source/resource/core/logger/cxMessageListener.cpp create mode 100644 source/resource/core/logger/cxMessageListener.h create mode 100644 source/resource/core/logger/cxReporter.cpp create mode 100644 source/resource/core/logger/cxReporter.h create mode 100644 source/resource/core/logger/internal/cxLogFile.cpp create mode 100644 source/resource/core/logger/internal/cxLogFile.h create mode 100644 source/resource/core/logger/internal/cxLogFileWatcherThread.cpp create mode 100644 source/resource/core/logger/internal/cxLogFileWatcherThread.h create mode 100644 source/resource/core/logger/internal/cxLogIOStreamRedirecter.cpp create mode 100644 source/resource/core/logger/internal/cxLogIOStreamRedirecter.h create mode 100644 source/resource/core/logger/internal/cxLogQDebugRedirecter.cpp create mode 100644 source/resource/core/logger/internal/cxLogQDebugRedirecter.h create mode 100644 source/resource/core/logger/internal/cxLogThread.cpp create mode 100644 source/resource/core/logger/internal/cxLogThread.h create mode 100644 source/resource/core/logger/internal/cxReporterMessageRepository.cpp create mode 100644 source/resource/core/logger/internal/cxReporterMessageRepository.h create mode 100644 source/resource/core/logger/internal/cxReporterThread.cpp create mode 100644 source/resource/core/logger/internal/cxReporterThread.h create mode 100644 source/resource/core/network/cxNetworkService.cpp create mode 100644 source/resource/core/network/cxNetworkService.h create mode 100644 source/resource/core/patientModel/cxPatientModelService.cpp create mode 100644 source/resource/core/patientModel/cxPatientModelService.h create mode 100644 source/resource/core/patientModel/cxPatientModelServiceNull.cpp create mode 100644 source/resource/core/patientModel/cxPatientModelServiceNull.h create mode 100644 source/resource/core/patientModel/cxPatientModelServiceProxy.cpp create mode 100644 source/resource/core/patientModel/cxPatientModelServiceProxy.h create mode 100644 source/resource/core/properties/cxBoolProperty.cpp create mode 100644 source/resource/core/properties/cxBoolProperty.h create mode 100644 source/resource/core/properties/cxBoolPropertyBase.h create mode 100644 source/resource/core/properties/cxColorProperty.cpp create mode 100644 source/resource/core/properties/cxColorProperty.h create mode 100644 source/resource/core/properties/cxColorPropertyBase.h create mode 100644 source/resource/core/properties/cxDoublePairProperty.cpp create mode 100644 source/resource/core/properties/cxDoublePairProperty.h create mode 100644 source/resource/core/properties/cxDoublePairPropertyBase.h create mode 100644 source/resource/core/properties/cxDoubleProperty.cpp create mode 100644 source/resource/core/properties/cxDoubleProperty.h create mode 100644 source/resource/core/properties/cxDoublePropertyBase.h create mode 100644 source/resource/core/properties/cxDoublePropertyTemporalCalibration.cpp create mode 100644 source/resource/core/properties/cxDoublePropertyTemporalCalibration.h create mode 100644 source/resource/core/properties/cxFilePathProperty.cpp create mode 100644 source/resource/core/properties/cxFilePathProperty.h create mode 100644 source/resource/core/properties/cxFilePathPropertyBase.cpp create mode 100644 source/resource/core/properties/cxFilePathPropertyBase.h create mode 100644 source/resource/core/properties/cxFilePreviewProperty.cpp create mode 100644 source/resource/core/properties/cxFilePreviewProperty.h create mode 100644 source/resource/core/properties/cxProperty.cpp create mode 100644 source/resource/core/properties/cxProperty.h create mode 100644 source/resource/core/properties/cxPropertyNull.h create mode 100644 source/resource/core/properties/cxSelectDataStringProperty.cpp create mode 100644 source/resource/core/properties/cxSelectDataStringProperty.h create mode 100644 source/resource/core/properties/cxSelectDataStringPropertyBase.cpp create mode 100644 source/resource/core/properties/cxSelectDataStringPropertyBase.h create mode 100644 source/resource/core/properties/cxSpaceProperty.cpp create mode 100644 source/resource/core/properties/cxSpaceProperty.h create mode 100644 source/resource/core/properties/cxSpacePropertyBase.cpp create mode 100644 source/resource/core/properties/cxSpacePropertyBase.h create mode 100644 source/resource/core/properties/cxStringListProperty.cpp create mode 100644 source/resource/core/properties/cxStringListProperty.h create mode 100644 source/resource/core/properties/cxStringProperty.cpp create mode 100644 source/resource/core/properties/cxStringProperty.h create mode 100644 source/resource/core/properties/cxStringPropertyBase.h create mode 100644 source/resource/core/properties/cxStringPropertySelectCoordinateSystem.cpp create mode 100644 source/resource/core/properties/cxStringPropertySelectCoordinateSystem.h create mode 100644 source/resource/core/properties/cxStringPropertySelectPointMetric.cpp create mode 100644 source/resource/core/properties/cxStringPropertySelectPointMetric.h create mode 100644 source/resource/core/properties/cxStringPropertySelectTool.cpp create mode 100644 source/resource/core/properties/cxStringPropertySelectTool.h create mode 100644 source/resource/core/properties/cxToolProperty.cpp create mode 100644 source/resource/core/properties/cxToolProperty.h create mode 100644 source/resource/core/properties/cxVector3DComponentProperty.cpp create mode 100644 source/resource/core/properties/cxVector3DComponentProperty.h create mode 100644 source/resource/core/properties/cxVector3DProperty.cpp create mode 100644 source/resource/core/properties/cxVector3DProperty.h create mode 100644 source/resource/core/properties/cxVector3DPropertyBase.h create mode 100755 source/resource/core/settings/CMakeLists.txt create mode 100644 source/resource/core/settings/cxConfig.h.in create mode 100644 source/resource/core/settings/cxConfigDescription.txt.in create mode 100644 source/resource/core/settings/cxDataLocations.cpp create mode 100644 source/resource/core/settings/cxDataLocations.h create mode 100644 source/resource/core/settings/cxPatientStorage.cpp create mode 100644 source/resource/core/settings/cxPatientStorage.h create mode 100644 source/resource/core/settings/cxProfile.cpp create mode 100644 source/resource/core/settings/cxProfile.h create mode 100644 source/resource/core/settings/cxRequestEnterStateTransition.h create mode 100644 source/resource/core/settings/cxSessionStorageService.cpp create mode 100644 source/resource/core/settings/cxSessionStorageService.h create mode 100644 source/resource/core/settings/cxSessionStorageServiceProxy.cpp create mode 100644 source/resource/core/settings/cxSessionStorageServiceProxy.h create mode 100644 source/resource/core/settings/cxSettings.cpp create mode 100644 source/resource/core/settings/cxSettings.h create mode 100644 source/resource/core/settings/cxStateService.cpp create mode 100644 source/resource/core/settings/cxStateService.h create mode 100644 source/resource/core/settings/cxStateServiceNull.cpp create mode 100644 source/resource/core/settings/cxStateServiceNull.h create mode 100644 source/resource/core/settings/cxStateServiceProxy.cpp create mode 100644 source/resource/core/settings/cxStateServiceProxy.h create mode 100644 source/resource/core/settings/cxWorkflowState.cpp create mode 100644 source/resource/core/settings/cxWorkflowState.h create mode 100644 source/resource/core/settings/cxWorkflowStateMachine.cpp create mode 100644 source/resource/core/settings/cxWorkflowStateMachine.h create mode 100755 source/resource/core/testing/CMakeLists.txt create mode 100644 source/resource/core/testing/cxtestActiveData.cpp create mode 100644 source/resource/core/testing/cxtestCatchBoundingBox3D.cpp create mode 100644 source/resource/core/testing/cxtestCatchFrame.cpp create mode 100644 source/resource/core/testing/cxtestCatchImageAlgorithms.cpp create mode 100644 source/resource/core/testing/cxtestCatchProcessWrapper.cpp create mode 100644 source/resource/core/testing/cxtestCatchSharedMemory.cpp create mode 100644 source/resource/core/testing/cxtestCatchSliceComputer.cpp create mode 100644 source/resource/core/testing/cxtestCatchStringHelpers.cpp create mode 100644 source/resource/core/testing/cxtestCatchTransform3D.cpp create mode 100644 source/resource/core/testing/cxtestCatchVLCRecorder.cpp create mode 100644 source/resource/core/testing/cxtestCatchVector3D.cpp create mode 100644 source/resource/core/testing/cxtestCoreServices.cpp create mode 100644 source/resource/core/testing/cxtestDataLocations.cpp create mode 100644 source/resource/core/testing/cxtestEnumConversion.cpp create mode 100644 source/resource/core/testing/cxtestFileManagerServiceMock.cpp create mode 100644 source/resource/core/testing/cxtestFileManagerServiceMock.h create mode 100644 source/resource/core/testing/cxtestImage.cpp create mode 100644 source/resource/core/testing/cxtestImageParameters.cpp create mode 100644 source/resource/core/testing/cxtestOpenCLPrinter.cpp create mode 100644 source/resource/core/testing/cxtestPatientModelServiceMock.cpp create mode 100644 source/resource/core/testing/cxtestPatientModelServiceMock.h create mode 100644 source/resource/core/testing/cxtestProbeDefinition.cpp create mode 100644 source/resource/core/testing/cxtestProcessWrapperFixture.cpp create mode 100644 source/resource/core/testing/cxtestProcessWrapperFixture.h create mode 100644 source/resource/core/testing/cxtestReporter.cpp create mode 100644 source/resource/core/testing/cxtestSpaceListenerMock.cpp create mode 100644 source/resource/core/testing/cxtestSpaceListenerMock.h create mode 100644 source/resource/core/testing/cxtestSpaceProviderMock.cpp create mode 100644 source/resource/core/testing/cxtestSpaceProviderMock.h create mode 100644 source/resource/core/testing/cxtestStreamedTimestampSynchronizer.cpp create mode 100644 source/resource/core/testing/cxtestTestDataStructures.cpp create mode 100644 source/resource/core/testing/cxtestTestDataStructures.h create mode 100644 source/resource/core/testing/cxtestTrackingPositionFilter.cpp create mode 100644 source/resource/core/testing/cxtestTrackingSystemService.cpp create mode 100644 source/resource/core/testing/cxtestVLCRecorderFixture.cpp create mode 100644 source/resource/core/testing/cxtestVLCRecorderFixture.h create mode 100644 source/resource/core/testing/cxtestVisServices.cpp create mode 100644 source/resource/core/testing/cxtestVisServices.h create mode 100644 source/resource/core/testing/cxtestXmlOptionFile.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxSavingVideoRecorder.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxSavingVideoRecorder.h create mode 100644 source/resource/core/usReconstructionTypes/cxUSFrameData.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxUSFrameData.h create mode 100644 source/resource/core/usReconstructionTypes/cxUSReconstructInputData.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxUSReconstructInputData.h create mode 100644 source/resource/core/usReconstructionTypes/cxUSReconstructInputDataAlgoritms.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxUSReconstructInputDataAlgoritms.h create mode 100644 source/resource/core/usReconstructionTypes/cxUsReconstructionFileMaker.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxUsReconstructionFileMaker.h create mode 100644 source/resource/core/usReconstructionTypes/cxUsReconstructionFileReader.cpp create mode 100644 source/resource/core/usReconstructionTypes/cxUsReconstructionFileReader.h create mode 100644 source/resource/core/usReconstructionTypes/doc/org.custusx.resource.core.usacquisitionfileformat.md create mode 100644 source/resource/core/usReconstructionTypes/testing/CMakeLists.txt create mode 100644 source/resource/core/usReconstructionTypes/testing/cxCppUnitMain.cpp create mode 100644 source/resource/core/usReconstructionTypes/testing/cxTestUSReconstructionFileIO.cpp create mode 100644 source/resource/core/usReconstructionTypes/testing/cxTestUSReconstructionFileIO.h create mode 100644 source/resource/core/usReconstructionTypes/testing/cxtestCatchUSReconstructionFile.cpp create mode 100644 source/resource/core/usReconstructionTypes/testing/cxtestUSReconstructInputDataAlgorithms.cpp create mode 100644 source/resource/core/usReconstructionTypes/testing/cxtestUSReconstructionFileFixture.cpp create mode 100644 source/resource/core/usReconstructionTypes/testing/cxtestUSReconstructionFileFixture.h create mode 100644 source/resource/core/utilities/cxApplication.cpp create mode 100644 source/resource/core/utilities/cxApplication.h create mode 100644 source/resource/core/utilities/cxCoordinateSystemHelpers.cpp create mode 100644 source/resource/core/utilities/cxCoordinateSystemHelpers.h create mode 100644 source/resource/core/utilities/cxCustomMetaImage.cpp create mode 100644 source/resource/core/utilities/cxCustomMetaImage.h create mode 100644 source/resource/core/utilities/cxCyclicActionLogger.cpp create mode 100644 source/resource/core/utilities/cxCyclicActionLogger.h create mode 100644 source/resource/core/utilities/cxDefinitionStrings.cpp create mode 100644 source/resource/core/utilities/cxDefinitionStrings.h create mode 100644 source/resource/core/utilities/cxDefinitions.cpp create mode 100644 source/resource/core/utilities/cxDefinitions.h create mode 100644 source/resource/core/utilities/cxDoubleRange.h create mode 100644 source/resource/core/utilities/cxEnumConversion.h create mode 100644 source/resource/core/utilities/cxEnumConverter.h create mode 100644 source/resource/core/utilities/cxFileHelpers.cpp create mode 100644 source/resource/core/utilities/cxFileHelpers.h create mode 100644 source/resource/core/utilities/cxGLHelpers.cpp create mode 100644 source/resource/core/utilities/cxGLHelpers.h create mode 100644 source/resource/core/utilities/cxImageDataContainer.cpp create mode 100644 source/resource/core/utilities/cxImageDataContainer.h create mode 100644 source/resource/core/utilities/cxIndent.cpp create mode 100644 source/resource/core/utilities/cxIndent.h create mode 100644 source/resource/core/utilities/cxMeshHelpers.cpp create mode 100644 source/resource/core/utilities/cxMeshHelpers.h create mode 100644 source/resource/core/utilities/cxNullDeleter.h create mode 100644 source/resource/core/utilities/cxOpenCLPrinter.cpp create mode 100644 source/resource/core/utilities/cxOpenCLPrinter.h create mode 100644 source/resource/core/utilities/cxOptionalValue.cpp create mode 100644 source/resource/core/utilities/cxOptionalValue.h create mode 100644 source/resource/core/utilities/cxOrderedQDomDocument.h create mode 100644 source/resource/core/utilities/cxPlaneTypeCollection.cpp create mode 100644 source/resource/core/utilities/cxPlaneTypeCollection.h create mode 100644 source/resource/core/utilities/cxPlaybackTime.cpp create mode 100644 source/resource/core/utilities/cxPlaybackTime.h create mode 100644 source/resource/core/utilities/cxPositionStorageFile.cpp create mode 100644 source/resource/core/utilities/cxPositionStorageFile.h create mode 100644 source/resource/core/utilities/cxProcessReporter.cpp create mode 100644 source/resource/core/utilities/cxProcessReporter.h create mode 100644 source/resource/core/utilities/cxProcessWrapper.cpp create mode 100644 source/resource/core/utilities/cxProcessWrapper.h create mode 100644 source/resource/core/utilities/cxSharedMemory.cpp create mode 100644 source/resource/core/utilities/cxSharedMemory.h create mode 100644 source/resource/core/utilities/cxSharedPointerChecker.cpp create mode 100644 source/resource/core/utilities/cxSharedPointerChecker.h create mode 100644 source/resource/core/utilities/cxSliceComputer.cpp create mode 100644 source/resource/core/utilities/cxSliceComputer.h create mode 100644 source/resource/core/utilities/cxSocket.cpp create mode 100644 source/resource/core/utilities/cxSocket.h create mode 100644 source/resource/core/utilities/cxSocketConnection.cpp create mode 100644 source/resource/core/utilities/cxSocketConnection.h create mode 100644 source/resource/core/utilities/cxSpaceListener.cpp create mode 100644 source/resource/core/utilities/cxSpaceListener.h create mode 100644 source/resource/core/utilities/cxSpaceListenerImpl.cpp create mode 100644 source/resource/core/utilities/cxSpaceListenerImpl.h create mode 100644 source/resource/core/utilities/cxSpaceProvider.cpp create mode 100644 source/resource/core/utilities/cxSpaceProvider.h create mode 100644 source/resource/core/utilities/cxSpaceProviderImpl.cpp create mode 100644 source/resource/core/utilities/cxSpaceProviderImpl.h create mode 100644 source/resource/core/utilities/cxSpaceProviderNull.cpp create mode 100644 source/resource/core/utilities/cxSpaceProviderNull.h create mode 100644 source/resource/core/utilities/cxStreamedTimestampSynchronizer.cpp create mode 100644 source/resource/core/utilities/cxStreamedTimestampSynchronizer.h create mode 100644 source/resource/core/utilities/cxStringHelpers.cpp create mode 100644 source/resource/core/utilities/cxStringHelpers.h create mode 100644 source/resource/core/utilities/cxSyncedValue.cpp create mode 100644 source/resource/core/utilities/cxSyncedValue.h create mode 100644 source/resource/core/utilities/cxTime.cpp create mode 100644 source/resource/core/utilities/cxTime.h create mode 100644 source/resource/core/utilities/cxTimeKeeper.cpp create mode 100644 source/resource/core/utilities/cxTimeKeeper.h create mode 100644 source/resource/core/utilities/cxTransformFile.cpp create mode 100644 source/resource/core/utilities/cxTransformFile.h create mode 100644 source/resource/core/utilities/cxTypeConversions.cpp create mode 100644 source/resource/core/utilities/cxTypeConversions.h create mode 100644 source/resource/core/utilities/cxUtilHelpers.cpp create mode 100644 source/resource/core/utilities/cxUtilHelpers.h create mode 100644 source/resource/core/utilities/cxVLCRecorder.cpp create mode 100644 source/resource/core/utilities/cxVLCRecorder.h create mode 100644 source/resource/core/utilities/cxViewportListener.cpp create mode 100644 source/resource/core/utilities/cxViewportListener.h create mode 100644 source/resource/core/utilities/cxVolumeHelpers.cpp create mode 100644 source/resource/core/utilities/cxVolumeHelpers.h create mode 100644 source/resource/core/utilities/cxXMLNodeWrapper.cpp create mode 100644 source/resource/core/utilities/cxXMLNodeWrapper.h create mode 100644 source/resource/core/utilities/cxXmlFileHandler.cpp create mode 100644 source/resource/core/utilities/cxXmlFileHandler.h create mode 100644 source/resource/core/utilities/cxXmlOptionItem.cpp create mode 100644 source/resource/core/utilities/cxXmlOptionItem.h create mode 100644 source/resource/core/utilities/sscConfig.h.in create mode 100644 source/resource/core/vesselReg/HackTPSTransform.hxx create mode 100755 source/resource/core/vesselReg/SeansVesselReg.cxx create mode 100755 source/resource/core/vesselReg/SeansVesselReg.hxx create mode 100644 source/resource/core/vesselReg/SeansVesselReg.hxx.autosave create mode 100644 source/resource/core/vtkForwardDeclarations.h create mode 100755 source/resource/filter/CMakeLists.txt create mode 100644 source/resource/filter/cxFilter.cpp create mode 100644 source/resource/filter/cxFilter.h create mode 100644 source/resource/filter/cxFilterGroup.cpp create mode 100644 source/resource/filter/cxFilterGroup.h create mode 100644 source/resource/filter/cxFilterImpl.cpp create mode 100644 source/resource/filter/cxFilterImpl.h create mode 100644 source/resource/filter/cxFilterTimedAlgorithm.cpp create mode 100644 source/resource/filter/cxFilterTimedAlgorithm.h create mode 100644 source/resource/filter/cxPipeline.cpp create mode 100644 source/resource/filter/cxPipeline.h create mode 100644 source/resource/filter/doc/org.custusx.resource.filter.md create mode 100644 source/resource/filter/doc/org.custusx.resource.filter.script.md create mode 100644 source/resource/filter/filters/cxBinaryThinningImageFilter3DFilter.cpp create mode 100644 source/resource/filter/filters/cxBinaryThinningImageFilter3DFilter.h create mode 100644 source/resource/filter/filters/cxBinaryThresholdImageFilter.cpp create mode 100644 source/resource/filter/filters/cxBinaryThresholdImageFilter.h create mode 100644 source/resource/filter/filters/cxColorVariationFilter.cpp create mode 100644 source/resource/filter/filters/cxColorVariationFilter.h create mode 100644 source/resource/filter/filters/cxConnectedThresholdImageFilter.cpp create mode 100644 source/resource/filter/filters/cxConnectedThresholdImageFilter.h create mode 100644 source/resource/filter/filters/cxContourFilter.cpp create mode 100644 source/resource/filter/filters/cxContourFilter.h create mode 100644 source/resource/filter/filters/cxDilationFilter.cpp create mode 100644 source/resource/filter/filters/cxDilationFilter.h create mode 100644 source/resource/filter/filters/cxDummyFilter.cpp create mode 100644 source/resource/filter/filters/cxDummyFilter.h create mode 100644 source/resource/filter/filters/cxGenericScriptFilter.cpp create mode 100644 source/resource/filter/filters/cxGenericScriptFilter.h create mode 100644 source/resource/filter/filters/cxResampleImageFilter.cpp create mode 100644 source/resource/filter/filters/cxResampleImageFilter.h create mode 100644 source/resource/filter/filters/cxSmoothingImageFilter.cpp create mode 100644 source/resource/filter/filters/cxSmoothingImageFilter.h create mode 100644 source/resource/filter/testing/CMakeLists.txt create mode 100644 source/resource/filter/testing/cxtestBinaryThresholdImageFilter.cpp create mode 100644 source/resource/filter/testing/cxtestColorVariationFilter.cpp create mode 100644 source/resource/filter/testing/cxtestDilationFilter.cpp create mode 100644 source/resource/filter/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/resource/filter/testing/cxtestScriptFilter.cpp create mode 100644 source/resource/pluginUtilities/CMakeLists.txt create mode 100644 source/resource/pluginUtilities/cxRegisteredService.cpp create mode 100644 source/resource/pluginUtilities/cxRegisteredService.h create mode 100644 source/resource/pluginUtilities/cxServiceTrackerCustomizer.h create mode 100644 source/resource/pluginUtilities/cxServiceTrackerListener.h create mode 100755 source/resource/testUtilities/CMakeLists.txt create mode 100644 source/resource/testUtilities/cisst_code/CMakeLists.txt create mode 100644 source/resource/testUtilities/cisst_code/cisstMacros.cmake create mode 100644 source/resource/testUtilities/cisst_code/cisstTestMain.cpp create mode 100644 source/resource/testUtilities/cisst_code/cisstTestParameters.cpp create mode 100644 source/resource/testUtilities/cisst_code/cisstTestParameters.h create mode 100644 source/resource/testUtilities/cisst_code/license.txt create mode 100644 source/resource/testUtilities/cxSimpleSyntheticVolume.cpp create mode 100644 source/resource/testUtilities/cxSimpleSyntheticVolume.h create mode 100644 source/resource/testUtilities/cxSyntheticVolume.cpp create mode 100644 source/resource/testUtilities/cxSyntheticVolume.h create mode 100644 source/resource/testUtilities/cxtestCatchExamples.cpp create mode 100644 source/resource/testUtilities/cxtestDirectSignalListener.cpp create mode 100644 source/resource/testUtilities/cxtestDirectSignalListener.h create mode 100644 source/resource/testUtilities/cxtestJenkinsMeasurement.cpp create mode 100644 source/resource/testUtilities/cxtestJenkinsMeasurement.h create mode 100644 source/resource/testUtilities/cxtestProbeFixture.cpp create mode 100644 source/resource/testUtilities/cxtestProbeFixture.h create mode 100644 source/resource/testUtilities/cxtestQueuedSignalListener.cpp create mode 100644 source/resource/testUtilities/cxtestQueuedSignalListener.h create mode 100644 source/resource/testUtilities/cxtestSphereSyntheticVolume.cpp create mode 100644 source/resource/testUtilities/cxtestSphereSyntheticVolume.h create mode 100644 source/resource/testUtilities/cxtestSyntheticReconstructInput.cpp create mode 100644 source/resource/testUtilities/cxtestSyntheticReconstructInput.h create mode 100644 source/resource/testUtilities/cxtestSyntheticVolumeComparer.cpp create mode 100644 source/resource/testUtilities/cxtestSyntheticVolumeComparer.h create mode 100644 source/resource/testUtilities/cxtestUtilities.cpp create mode 100644 source/resource/testUtilities/cxtestUtilities.h create mode 100644 source/resource/testUtilities/cxtestVtkPolyDataTree.h create mode 100644 source/resource/videoServer/CMakeLists.txt create mode 100644 source/resource/videoServer/SonixHelper.h create mode 100644 source/resource/videoServer/cxCommandlineImageStreamerFactory.cpp create mode 100644 source/resource/videoServer/cxCommandlineImageStreamerFactory.h create mode 100644 source/resource/videoServer/cxDirectlyLinkedSender.cpp create mode 100644 source/resource/videoServer/cxDirectlyLinkedSender.h create mode 100644 source/resource/videoServer/cxFrame.h create mode 100644 source/resource/videoServer/cxGrabberSenderQTcpSocket.cpp create mode 100644 source/resource/videoServer/cxGrabberSenderQTcpSocket.h create mode 100644 source/resource/videoServer/cxImageServer.cpp create mode 100644 source/resource/videoServer/cxImageServer.h create mode 100644 source/resource/videoServer/cxImageStreamerOpenCV.cpp create mode 100644 source/resource/videoServer/cxImageStreamerOpenCV.h create mode 100644 source/resource/videoServer/cxImageStreamerSonix.cpp create mode 100644 source/resource/videoServer/cxImageStreamerSonix.h create mode 100644 source/resource/videoServer/cxMHDImageStreamer.cpp create mode 100644 source/resource/videoServer/cxMHDImageStreamer.h create mode 100644 source/resource/videoServer/cxSender.cpp create mode 100644 source/resource/videoServer/cxSender.h create mode 100644 source/resource/videoServer/cxSenderImpl.cpp create mode 100644 source/resource/videoServer/cxSenderImpl.h create mode 100644 source/resource/videoServer/cxSonixProbeFileReader.cpp create mode 100644 source/resource/videoServer/cxSonixProbeFileReader.h create mode 100644 source/resource/videoServer/cxStreamer.cpp create mode 100644 source/resource/videoServer/cxStreamer.h create mode 100644 source/resource/videoServer/cxVideoServerConfig.h.in create mode 100644 source/resource/videoServer/cxtestSender.cpp create mode 100644 source/resource/videoServer/cxtestSender.h create mode 100644 source/resource/videoServer/testing/CMakeLists.txt create mode 100644 source/resource/videoServer/testing/cxtestExportDummyClassForLinkingOnWindowsInLibWithoutExportedClass.cpp create mode 100644 source/resource/videoServer/testing/cxtestSonixProbeFileReader.cpp create mode 100644 source/resource/videoServer/vtkSonixVideoSource.cxx create mode 100644 source/resource/videoServer/vtkSonixVideoSource.h create mode 100644 source/resource/videoServer/vtkUltrasoundWin32Header.h create mode 100755 source/resource/view/CMakeLists.txt create mode 100644 source/resource/view/Primitives/cxDepthPeeling.cpp create mode 100644 source/resource/view/Primitives/cxDepthPeeling.h create mode 100644 source/resource/view/Primitives/cxGraphicalAxes3D.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalAxes3D.h create mode 100644 source/resource/view/Primitives/cxGraphicalBox.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalBox.h create mode 100644 source/resource/view/Primitives/cxGraphicalDisk.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalDisk.h create mode 100644 source/resource/view/Primitives/cxGraphicalObjectWithDirection.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalObjectWithDirection.h create mode 100644 source/resource/view/Primitives/cxGraphicalPrimitives.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalPrimitives.h create mode 100644 source/resource/view/Primitives/cxGraphicalTorus3D.cpp create mode 100644 source/resource/view/Primitives/cxGraphicalTorus3D.h create mode 100644 source/resource/view/Primitives/cxImageEnveloper.cpp create mode 100644 source/resource/view/Primitives/cxImageEnveloper.h create mode 100644 source/resource/view/Primitives/cxImageMapperMonitor.cpp create mode 100644 source/resource/view/Primitives/cxImageMapperMonitor.h create mode 100644 source/resource/view/Primitives/cxOpenGLShaders.cpp create mode 100644 source/resource/view/Primitives/cxOpenGLShaders.h create mode 100644 source/resource/view/Primitives/cxShaderCallback.cpp create mode 100644 source/resource/view/Primitives/cxShaderCallback.h create mode 100644 source/resource/view/Primitives/cxSliceAutoViewportCalculator.cpp create mode 100644 source/resource/view/Primitives/cxSliceAutoViewportCalculator.h create mode 100644 source/resource/view/Primitives/cxSlicePlaneClipper.cpp create mode 100644 source/resource/view/Primitives/cxSlicePlaneClipper.h create mode 100644 source/resource/view/Primitives/cxTexture3DSlicerProxy.cpp create mode 100644 source/resource/view/Primitives/cxTexture3DSlicerProxy.h create mode 100644 source/resource/view/Primitives/cxTextureSlicePainter.cpp create mode 100644 source/resource/view/Primitives/cxTextureSlicePainter.h create mode 100644 source/resource/view/Primitives/cxToolTracer.cpp create mode 100644 source/resource/view/Primitives/cxToolTracer.h create mode 100644 source/resource/view/Primitives/cxUltrasoundSectorSource.cpp create mode 100644 source/resource/view/Primitives/cxUltrasoundSectorSource.h create mode 100644 source/resource/view/Primitives/cxVideoGraphics.cpp create mode 100644 source/resource/view/Primitives/cxVideoGraphics.h create mode 100644 source/resource/view/Primitives/cxVideoSourceGraphics.cpp create mode 100644 source/resource/view/Primitives/cxVideoSourceGraphics.h create mode 100644 source/resource/view/Primitives/cxViewFollower.cpp create mode 100644 source/resource/view/Primitives/cxViewFollower.h create mode 100644 source/resource/view/Primitives/cxVolumeProperty.cpp create mode 100644 source/resource/view/Primitives/cxVolumeProperty.h create mode 100644 source/resource/view/Primitives/cxVtkHelperClasses.cpp create mode 100644 source/resource/view/Primitives/cxVtkHelperClasses.h create mode 100644 source/resource/view/Rep/Shaders/glsl/Texture3DOverlay.frag create mode 100644 source/resource/view/Rep/Shaders/glsl/raycasting_shader.frag create mode 100644 source/resource/view/Rep/Shaders/glsl/raycasting_shader.vert create mode 100644 source/resource/view/Rep/Shaders/glsl/upscale.frag create mode 100644 source/resource/view/Rep/Shaders/glsl/upscale.vert create mode 100644 source/resource/view/Rep/cxDataMetricRep.cpp create mode 100644 source/resource/view/Rep/cxDataMetricRep.h create mode 100644 source/resource/view/Rep/cxDisplayTextRep.cpp create mode 100644 source/resource/view/Rep/cxDisplayTextRep.h create mode 100644 source/resource/view/Rep/cxRep.h create mode 100644 source/resource/view/Rep/cxRepImpl.cpp create mode 100644 source/resource/view/Rep/cxRepImpl.h create mode 100644 source/resource/view/Rep2D/cxCrossHairRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxCrossHairRep2D.h create mode 100644 source/resource/view/Rep2D/cxDistanceMetricRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxDistanceMetricRep2D.h create mode 100644 source/resource/view/Rep2D/cxGeometricRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxGeometricRep2D.h create mode 100644 source/resource/view/Rep2D/cxGuideRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxGuideRep2D.h create mode 100644 source/resource/view/Rep2D/cxOrientationAnnotation2DRep.cpp create mode 100644 source/resource/view/Rep2D/cxOrientationAnnotation2DRep.h create mode 100644 source/resource/view/Rep2D/cxOrientationAnnotationRep.cpp create mode 100644 source/resource/view/Rep2D/cxOrientationAnnotationRep.h create mode 100644 source/resource/view/Rep2D/cxPointMetricRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxPointMetricRep2D.h create mode 100644 source/resource/view/Rep2D/cxSlicerRepSW.cpp create mode 100644 source/resource/view/Rep2D/cxSlicerRepSW.h create mode 100644 source/resource/view/Rep2D/cxSphereMetricRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxSphereMetricRep2D.h create mode 100644 source/resource/view/Rep2D/cxToolRep2D.cpp create mode 100644 source/resource/view/Rep2D/cxToolRep2D.h create mode 100644 source/resource/view/Rep3D/cxAngleMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxAngleMetricRep.h create mode 100644 source/resource/view/Rep3D/cxAxesRep.cpp create mode 100644 source/resource/view/Rep3D/cxAxesRep.h create mode 100644 source/resource/view/Rep3D/cxCustomMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxCustomMetricRep.h create mode 100644 source/resource/view/Rep3D/cxDistanceMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxDistanceMetricRep.h create mode 100644 source/resource/view/Rep3D/cxDonutMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxDonutMetricRep.h create mode 100644 source/resource/view/Rep3D/cxFiberBundleRep.cpp create mode 100644 source/resource/view/Rep3D/cxFiberBundleRep.h create mode 100644 source/resource/view/Rep3D/cxFrameMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxFrameMetricRep.h create mode 100644 source/resource/view/Rep3D/cxGeometricRep.cpp create mode 100644 source/resource/view/Rep3D/cxGeometricRep.h create mode 100644 source/resource/view/Rep3D/cxImage2DRep3D.cpp create mode 100644 source/resource/view/Rep3D/cxImage2DRep3D.h create mode 100644 source/resource/view/Rep3D/cxLandmarkRep.cpp create mode 100644 source/resource/view/Rep3D/cxLandmarkRep.h create mode 100644 source/resource/view/Rep3D/cxMehdiGPURayCastMultiVolumeRep.cpp create mode 100644 source/resource/view/Rep3D/cxMehdiGPURayCastMultiVolumeRep.h create mode 100644 source/resource/view/Rep3D/cxMetricNamesRep.cpp create mode 100644 source/resource/view/Rep3D/cxMetricNamesRep.h create mode 100644 source/resource/view/Rep3D/cxOrientationAnnotation3DRep.cpp create mode 100644 source/resource/view/Rep3D/cxOrientationAnnotation3DRep.h create mode 100644 source/resource/view/Rep3D/cxPickerRep.cpp create mode 100644 source/resource/view/Rep3D/cxPickerRep.h create mode 100644 source/resource/view/Rep3D/cxPlaneMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxPlaneMetricRep.h create mode 100644 source/resource/view/Rep3D/cxPointMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxPointMetricRep.h create mode 100644 source/resource/view/Rep3D/cxRegionOfInterestMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxRegionOfInterestMetricRep.h create mode 100644 source/resource/view/Rep3D/cxSlicePlanes3DRep.cpp create mode 100644 source/resource/view/Rep3D/cxSlicePlanes3DRep.h create mode 100644 source/resource/view/Rep3D/cxSlices3DRep.cpp create mode 100644 source/resource/view/Rep3D/cxSlices3DRep.h create mode 100644 source/resource/view/Rep3D/cxSphereMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxSphereMetricRep.h create mode 100644 source/resource/view/Rep3D/cxStream2DRep3D.cpp create mode 100644 source/resource/view/Rep3D/cxStream2DRep3D.h create mode 100644 source/resource/view/Rep3D/cxStreamRep3D.cpp create mode 100644 source/resource/view/Rep3D/cxStreamRep3D.h create mode 100644 source/resource/view/Rep3D/cxTexture3DSlicerRep.cpp create mode 100644 source/resource/view/Rep3D/cxTexture3DSlicerRep.h create mode 100644 source/resource/view/Rep3D/cxToolMetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxToolMetricRep.h create mode 100644 source/resource/view/Rep3D/cxToolRep3D.cpp create mode 100644 source/resource/view/Rep3D/cxToolRep3D.h create mode 100644 source/resource/view/Rep3D/cxVolumetricRep.cpp create mode 100644 source/resource/view/Rep3D/cxVolumetricRep.h create mode 100644 source/resource/view/RepVideo/cxVideoRep.cpp create mode 100644 source/resource/view/RepVideo/cxVideoRep.h create mode 100644 source/resource/view/View/cxLayoutData.cpp create mode 100644 source/resource/view/View/cxLayoutData.h create mode 100644 source/resource/view/View/cxQVTKWidget.cpp create mode 100644 source/resource/view/View/cxQVTKWidget.h create mode 100644 source/resource/view/View/cxScreenShotImageWriter.cpp create mode 100644 source/resource/view/View/cxScreenShotImageWriter.h create mode 100644 source/resource/view/View/cxView.cpp create mode 100644 source/resource/view/View/cxView.h create mode 100644 source/resource/view/View/cxViewCollectionImageWriter.cpp create mode 100644 source/resource/view/View/cxViewCollectionImageWriter.h create mode 100644 source/resource/view/View/cxViewCollectionVideoSource.cpp create mode 100644 source/resource/view/View/cxViewCollectionVideoSource.h create mode 100644 source/resource/view/View/cxViewCollectionWidget.cpp create mode 100644 source/resource/view/View/cxViewCollectionWidget.h create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewCollectionWidgetUsingViewContainer.cpp create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewCollectionWidgetUsingViewContainer.h create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewContainer.cpp create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewContainer.h create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewContainerItem.cpp create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewContainerItem.h create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewLinkingViewContainerItem.cpp create mode 100644 source/resource/view/View/internal/ViewContainer/cxViewLinkingViewContainerItem.h create mode 100644 source/resource/view/View/internal/ViewMixed/cxViewCollectionWidgetMixed.cpp create mode 100644 source/resource/view/View/internal/ViewMixed/cxViewCollectionWidgetMixed.h create mode 100644 source/resource/view/View/internal/ViewWidget/QVTKWidget3.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/QVTKWidget3.h create mode 100644 source/resource/view/View/internal/ViewWidget/cxMultiViewCache.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/cxMultiViewCache.h create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewCache.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewCache.h create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewCollectionWidgetUsingViewWidgets.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewCollectionWidgetUsingViewWidgets.h create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewLinkingViewWidget.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewLinkingViewWidget.h create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewWidget.cpp create mode 100644 source/resource/view/View/internal/ViewWidget/cxViewWidget.h create mode 100644 source/resource/view/View/internal/cxOSXHelper.h create mode 100644 source/resource/view/View/internal/cxOSXHelper.mm create mode 100644 source/resource/view/View/internal/cxViewRepCollection.cpp create mode 100644 source/resource/view/View/internal/cxViewRepCollection.h create mode 100644 source/resource/view/View/internal/cxViewUtilities.cpp create mode 100644 source/resource/view/View/internal/cxViewUtilities.h create mode 100644 source/resource/view/cxCameraControl.cpp create mode 100644 source/resource/view/cxCameraControl.h create mode 100644 source/resource/view/cxCameraStyleInteractor.cpp create mode 100644 source/resource/view/cxCameraStyleInteractor.h create mode 100644 source/resource/view/cxInteractiveClipper.cpp create mode 100644 source/resource/view/cxInteractiveClipper.h create mode 100644 source/resource/view/cxInteractiveCropper.cpp create mode 100644 source/resource/view/cxInteractiveCropper.h create mode 100644 source/resource/view/cxLayoutRepository.cpp create mode 100644 source/resource/view/cxLayoutRepository.h create mode 100644 source/resource/view/cxNavigation.cpp create mode 100644 source/resource/view/cxNavigation.h create mode 100644 source/resource/view/cxRenderWindowFactory.cpp create mode 100644 source/resource/view/cxRenderWindowFactory.h create mode 100644 source/resource/view/cxRepContainer.cpp create mode 100644 source/resource/view/cxRepContainer.h create mode 100644 source/resource/view/cxSharedContextCreatedCallback.cpp create mode 100644 source/resource/view/cxSharedContextCreatedCallback.h create mode 100644 source/resource/view/cxSharedOpenGLContext.cpp create mode 100644 source/resource/view/cxSharedOpenGLContext.h create mode 100644 source/resource/view/cxViewGroupData.cpp create mode 100644 source/resource/view/cxViewGroupData.h create mode 100644 source/resource/view/cxViewService.cpp create mode 100644 source/resource/view/cxViewService.h create mode 100644 source/resource/view/cxViewServiceNull.cpp create mode 100644 source/resource/view/cxViewServiceNull.h create mode 100644 source/resource/view/cxViewServiceProxy.cpp create mode 100644 source/resource/view/cxViewServiceProxy.h create mode 100644 source/resource/view/cxVisServices.cpp create mode 100644 source/resource/view/cxVisServices.h create mode 100755 source/resource/view/testing/CMakeLists.txt create mode 100644 source/resource/view/testing/cxTestGPURayCaster.cpp create mode 100644 source/resource/view/testing/cxTestGPURayCaster.h create mode 100644 source/resource/view/testing/cxTestRenderSpeed.cpp create mode 100644 source/resource/view/testing/cxTestRenderSpeed.h create mode 100644 source/resource/view/testing/cxViewsWindow.cpp create mode 100644 source/resource/view/testing/cxViewsWindow.h create mode 100644 source/resource/view/testing/cxtestImageEnveloper.cpp create mode 100644 source/resource/view/testing/cxtestMultiViewCache.cpp create mode 100644 source/resource/view/testing/cxtestRenderTester.cpp create mode 100644 source/resource/view/testing/cxtestRenderTester.h create mode 100644 source/resource/view/testing/cxtestRenderWindowFactory.cpp create mode 100644 source/resource/view/testing/cxtestSharedOpenGLContext.cpp create mode 100644 source/resource/view/testing/cxtestStream2DRep3D.cpp create mode 100644 source/resource/view/testing/cxtestVideoGraphics.cpp create mode 100644 source/resource/view/testing/cxtestVideoGraphicsFixture.cpp create mode 100644 source/resource/view/testing/cxtestVideoGraphicsFixture.h create mode 100644 source/resource/view/testing/cxtestViewServiceMockWithRenderWindowFactory.cpp create mode 100644 source/resource/view/testing/cxtestViewServiceMockWithRenderWindowFactory.h create mode 100755 source/resource/widgets/CMakeLists.txt create mode 100644 source/resource/widgets/cxActiveToolWidget.cpp create mode 100644 source/resource/widgets/cxActiveToolWidget.h create mode 100644 source/resource/widgets/cxBaseWidget.cpp create mode 100644 source/resource/widgets/cxBaseWidget.h create mode 100644 source/resource/widgets/cxBoundingBoxWidget.cpp create mode 100644 source/resource/widgets/cxBoundingBoxWidget.h create mode 100644 source/resource/widgets/cxCheckBoxWidget.cpp create mode 100644 source/resource/widgets/cxCheckBoxWidget.h create mode 100644 source/resource/widgets/cxColorSelectButton.cpp create mode 100644 source/resource/widgets/cxColorSelectButton.h create mode 100644 source/resource/widgets/cxColorSelectWidget.cpp create mode 100644 source/resource/widgets/cxColorSelectWidget.h create mode 100644 source/resource/widgets/cxCompactFilterSetupWidget.cpp create mode 100644 source/resource/widgets/cxCompactFilterSetupWidget.h create mode 100644 source/resource/widgets/cxConsoleWidget.cpp create mode 100644 source/resource/widgets/cxConsoleWidget.h create mode 100644 source/resource/widgets/cxConsoleWidgetCollection.cpp create mode 100644 source/resource/widgets/cxConsoleWidgetCollection.h create mode 100644 source/resource/widgets/cxDataSelectWidget.cpp create mode 100644 source/resource/widgets/cxDataSelectWidget.h create mode 100644 source/resource/widgets/cxDetailedLabeledComboBoxWidget.cpp create mode 100644 source/resource/widgets/cxDetailedLabeledComboBoxWidget.h create mode 100644 source/resource/widgets/cxDisplayTimerWidget.cpp create mode 100644 source/resource/widgets/cxDisplayTimerWidget.h create mode 100644 source/resource/widgets/cxDoubleSpanSlider.cpp create mode 100644 source/resource/widgets/cxDoubleSpanSlider.h create mode 100644 source/resource/widgets/cxDoubleWidgets.cpp create mode 100644 source/resource/widgets/cxDoubleWidgets.h create mode 100644 source/resource/widgets/cxFileInputWidget.cpp create mode 100644 source/resource/widgets/cxFileInputWidget.h create mode 100644 source/resource/widgets/cxFilePreviewWidget.cpp create mode 100644 source/resource/widgets/cxFilePreviewWidget.h create mode 100644 source/resource/widgets/cxFileSelectWidget.cpp create mode 100644 source/resource/widgets/cxFileSelectWidget.h create mode 100644 source/resource/widgets/cxFileWatcherWidget.cpp create mode 100644 source/resource/widgets/cxFileWatcherWidget.h create mode 100644 source/resource/widgets/cxFilenameWidget.cpp create mode 100644 source/resource/widgets/cxFilenameWidget.h create mode 100644 source/resource/widgets/cxFilterPresetWidget.cpp create mode 100644 source/resource/widgets/cxFilterPresetWidget.h create mode 100644 source/resource/widgets/cxFrameTreeWidget.cpp create mode 100644 source/resource/widgets/cxFrameTreeWidget.h create mode 100644 source/resource/widgets/cxHelperWidgets.cpp create mode 100644 source/resource/widgets/cxHelperWidgets.h create mode 100644 source/resource/widgets/cxImagePreviewWidget.cpp create mode 100644 source/resource/widgets/cxImagePreviewWidget.h create mode 100644 source/resource/widgets/cxLabeledComboBoxWidget.cpp create mode 100644 source/resource/widgets/cxLabeledComboBoxWidget.h create mode 100644 source/resource/widgets/cxLabeledLineEditWidget.cpp create mode 100644 source/resource/widgets/cxLabeledLineEditWidget.h create mode 100644 source/resource/widgets/cxMousePadWidget.cpp create mode 100644 source/resource/widgets/cxMousePadWidget.h create mode 100644 source/resource/widgets/cxMultiFileInputWidget.cpp create mode 100644 source/resource/widgets/cxMultiFileInputWidget.h create mode 100644 source/resource/widgets/cxOptimizedUpdateWidget.cpp create mode 100644 source/resource/widgets/cxOptimizedUpdateWidget.h create mode 100644 source/resource/widgets/cxOptionsWidget.cpp create mode 100644 source/resource/widgets/cxOptionsWidget.h create mode 100644 source/resource/widgets/cxPipelineWidget.cpp create mode 100644 source/resource/widgets/cxPipelineWidget.h create mode 100644 source/resource/widgets/cxPopupToolbarWidget.cpp create mode 100644 source/resource/widgets/cxPopupToolbarWidget.h create mode 100644 source/resource/widgets/cxPresetWidget.cpp create mode 100644 source/resource/widgets/cxPresetWidget.h create mode 100644 source/resource/widgets/cxProbeConfigWidget.cpp create mode 100644 source/resource/widgets/cxProbeConfigWidget.h create mode 100644 source/resource/widgets/cxSelectionGroupBox.cpp create mode 100644 source/resource/widgets/cxSelectionGroupBox.h create mode 100644 source/resource/widgets/cxSpaceEditWidget.cpp create mode 100644 source/resource/widgets/cxSpaceEditWidget.h create mode 100644 source/resource/widgets/cxStringListSelectWidget.cpp create mode 100644 source/resource/widgets/cxStringListSelectWidget.h create mode 100644 source/resource/widgets/cxTabbedWidget.cpp create mode 100644 source/resource/widgets/cxTabbedWidget.h create mode 100644 source/resource/widgets/cxTimedAlgorithmProgressBar.cpp create mode 100644 source/resource/widgets/cxTimedAlgorithmProgressBar.h create mode 100644 source/resource/widgets/cxTimelineWidget.cpp create mode 100644 source/resource/widgets/cxTimelineWidget.h create mode 100644 source/resource/widgets/cxTransform3DWidget.cpp create mode 100644 source/resource/widgets/cxTransform3DWidget.h create mode 100644 source/resource/widgets/cxVector3DWidget.cpp create mode 100644 source/resource/widgets/cxVector3DWidget.h create mode 100644 source/resource/widgets/cxWebServerWidgetBase.cpp create mode 100644 source/resource/widgets/cxWebServerWidgetBase.h create mode 100644 source/resource/widgets/cxWidgetObscuredListener.cpp create mode 100644 source/resource/widgets/cxWidgetObscuredListener.h create mode 100755 source/resource/widgets/snwSyntaxHighlighter.cpp create mode 100755 source/resource/widgets/snwSyntaxHighlighter.h create mode 100755 source/resource/widgets/testing/CMakeLists.txt create mode 100755 source/resource/widgets/testing/cxtestOptionsWidget.cpp create mode 100755 source/testing/CMakeLists.txt create mode 100644 source/testing/cxImportTests.h.in create mode 100644 source/testing/cxtestCatchImpl.cpp create mode 100644 source/testing/cxtestCatchImpl.h create mode 100644 source/testing/cxtestCatchMain.cpp diff --git a/CMake/FindDCMTK.cmake b/CMake/FindDCMTK.cmake new file mode 100644 index 0000000..5fd53d7 --- /dev/null +++ b/CMake/FindDCMTK.cmake @@ -0,0 +1,164 @@ +# - find DCMTK libraries and applications +# + +# DCMTK_INCLUDE_DIRS - Directories to include to use DCMTK +# DCMTK_LIBRARIES - Files to link against to use DCMTK +# DCMTK_FOUND - If false, don't try to use DCMTK +# DCMTK_DIR - (optional) Source directory for DCMTK +# +# DCMTK_DIR can be used to make it simpler to find the various include +# directories and compiled libraries if you've just compiled it in the +# source tree. Just set it to the root of the tree where you extracted +# the source (default to /usr/include/dcmtk/) + +#============================================================================= +# Copyright 2004-2009 Kitware, Inc. +# Copyright 2009-2010 Mathieu Malaterre +# Copyright 2010 Thomas Sondergaard +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +# +# Written for VXL by Amitha Perera. +# Upgraded for GDCM by Mathieu Malaterre. +# Modified for EasyViz by Thomas Sondergaard. +# + +if(NOT DCMTK_FOUND AND NOT DCMTK_DIR) + set(DCMTK_DIR + "/usr/include/dcmtk/" + CACHE + PATH + "Root of DCMTK source tree (optional).") + mark_as_advanced(DCMTK_DIR) +endif() + + +foreach(lib + dcmdata + dcmdsig + dcmimage + dcmimgle + dcmjpeg + dcmjpls + dcmnet + dcmpstat + dcmqrdb + dcmsign + dcmsr + dcmtls + ijg12 + ijg16 + ijg8 + oflog + ofstd) + + find_library(DCMTK_${lib}_LIBRARY + ${lib} + PATHS + ${DCMTK_DIR}/${lib}/libsrc + ${DCMTK_DIR}/${lib}/libsrc/Release + ${DCMTK_DIR}/${lib}/libsrc/Debug + ${DCMTK_DIR}/${lib}/Release + ${DCMTK_DIR}/${lib}/Debug + ${DCMTK_DIR}/lib + PATH_SUFFIXES + dcmtk) + + mark_as_advanced(DCMTK_${lib}_LIBRARY) + + if(DCMTK_${lib}_LIBRARY) + list(APPEND DCMTK_LIBRARIES ${DCMTK_${lib}_LIBRARY}) + endif() + +endforeach() + + +set(DCMTK_config_TEST_HEADER osconfig.h) +set(DCMTK_dcmdata_TEST_HEADER dctypes.h) +set(DCMTK_dcmimage_TEST_HEADER dicoimg.h) +set(DCMTK_dcmimgle_TEST_HEADER dcmimage.h) +set(DCMTK_dcmjpeg_TEST_HEADER djdecode.h) +set(DCMTK_dcmnet_TEST_HEADER assoc.h) +set(DCMTK_dcmpstat_TEST_HEADER dcmpstat.h) +set(DCMTK_dcmqrdb_TEST_HEADER dcmqrdba.h) +set(DCMTK_dcmsign_TEST_HEADER sicert.h) +set(DCMTK_dcmsr_TEST_HEADER dsrtree.h) +set(DCMTK_dcmtls_TEST_HEADER tlslayer.h) +set(DCMTK_ofstd_TEST_HEADER ofstdinc.h) + +foreach(dir + config + dcmdata + dcmdsig + dcmimage + dcmimgle + dcmjpeg + dcmjpls + dcmnet + dcmpstat + dcmqrdb + dcmsign + dcmsr + dcmtls + oflog + ofstd) + find_path(DCMTK_${dir}_INCLUDE_DIR + ${DCMTK_${dir}_TEST_HEADER} + PATHS + ${DCMTK_DIR}/${dir}/include + ${DCMTK_DIR}/${dir} + ${DCMTK_DIR}/include/${dir}) + + mark_as_advanced(DCMTK_${dir}_INCLUDE_DIR) + + if(DCMTK_${dir}_INCLUDE_DIR) + list(APPEND + DCMTK_INCLUDE_DIRS + ${DCMTK_${dir}_INCLUDE_DIR}) + endif() +endforeach() + +if(WIN32) + list(APPEND DCMTK_LIBRARIES netapi32 wsock32) +endif() + +if(DCMTK_dcmjpls_LIBRARY) + list(APPEND DCMTK_LIBRARIES CharLS) +endif() + +if(DCMTK_ofstd_INCLUDE_DIR) + get_filename_component(DCMTK_dcmtk_INCLUDE_DIR + ${DCMTK_ofstd_INCLUDE_DIR} + PATH + CACHE) + list(APPEND DCMTK_INCLUDE_DIRS ${DCMTK_dcmtk_INCLUDE_DIR}) + mark_as_advanced(DCMTK_dcmtk_INCLUDE_DIR) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(DCMTK DEFAULT_MSG + DCMTK_config_INCLUDE_DIR + DCMTK_ofstd_INCLUDE_DIR + DCMTK_ofstd_LIBRARY + DCMTK_dcmdata_INCLUDE_DIR + DCMTK_dcmdata_LIBRARY + DCMTK_dcmimgle_INCLUDE_DIR + DCMTK_dcmimgle_LIBRARY) + +# Compatibility: This variable is deprecated +set(DCMTK_INCLUDE_DIR ${DCMTK_INCLUDE_DIRS}) + +foreach(executable dcmdump dcmdjpeg dcmdrle) + string(TOUPPER ${executable} EXECUTABLE) + find_program(DCMTK_${EXECUTABLE}_EXECUTABLE ${executable} ${DCMTK_DIR}/bin) + mark_as_advanced(DCMTK_${EXECUTABLE}_EXECUTABLE) +endforeach() diff --git a/CMake/FindEigen.cmake b/CMake/FindEigen.cmake new file mode 100644 index 0000000..126f4a0 --- /dev/null +++ b/CMake/FindEigen.cmake @@ -0,0 +1,82 @@ +# - Try to find Eigen3 lib +# +# This module supports requiring a minimum version, e.g. you can do +# find_package(Eigen3 3.1.2) +# to require version 3.1.2 or newer of Eigen3. +# +# Once done this will define +# +# EIGEN_FOUND - system has eigen lib with correct version +# EIGEN_INCLUDE_DIR - the eigen include directory +# EIGEN_VERSION - eigen version + +# Copyright (c) 2006, 2007 Montel Laurent, +# Copyright (c) 2008, 2009 Gael Guennebaud, +# Copyright (c) 2009 Benoit Jacob +# Redistribution and use is allowed according to the terms of the 2-clause BSD license. + +if(NOT Eigen_FIND_VERSION) + if(NOT Eigen_FIND_VERSION_MAJOR) + set(Eigen_FIND_VERSION_MAJOR 2) + endif(NOT Eigen_FIND_VERSION_MAJOR) + if(NOT Eigen_FIND_VERSION_MINOR) + set(Eigen_FIND_VERSION_MINOR 91) + endif(NOT Eigen_FIND_VERSION_MINOR) + if(NOT Eigen_FIND_VERSION_PATCH) + set(Eigen_FIND_VERSION_PATCH 0) + endif(NOT Eigen_FIND_VERSION_PATCH) + + set(Eigen_FIND_VERSION "${Eigen_FIND_VERSION_MAJOR}.${Eigen_FIND_VERSION_MINOR}.${Eigen_FIND_VERSION_PATCH}") +endif(NOT Eigen_FIND_VERSION) + +macro(_eigen3_check_version) + file(READ "${EIGEN_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _eigen3_version_header) + + string(REGEX MATCH "define[ \t]+EIGEN_WORLD_VERSION[ \t]+([0-9]+)" _eigen3_world_version_match "${_eigen3_version_header}") + set(EIGEN_WORLD_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MAJOR_VERSION[ \t]+([0-9]+)" _eigen3_major_version_match "${_eigen3_version_header}") + set(EIGEN_MAJOR_VERSION "${CMAKE_MATCH_1}") + string(REGEX MATCH "define[ \t]+EIGEN_MINOR_VERSION[ \t]+([0-9]+)" _eigen3_minor_version_match "${_eigen3_version_header}") + set(EIGEN_MINOR_VERSION "${CMAKE_MATCH_1}") + + set(EIGEN_VERSION ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION}) + if(${EIGEN_VERSION} VERSION_LESS ${Eigen_FIND_VERSION}) + set(EIGEN_VERSION_OK FALSE) + else(${EIGEN_VERSION} VERSION_LESS ${Eigen_FIND_VERSION}) + set(EIGEN_VERSION_OK TRUE) + endif(${EIGEN_VERSION} VERSION_LESS ${Eigen_FIND_VERSION}) + + if(NOT EIGEN_VERSION_OK) + + message(STATUS "Eigen version ${EIGEN_VERSION} found in ${EIGEN_INCLUDE_DIR}, " + "but at least version ${Eigen_FIND_VERSION} is required") + endif(NOT EIGEN_VERSION_OK) +endmacro(_eigen3_check_version) + +if (EIGEN_INCLUDE_DIRS) + + # in cache already + _eigen3_check_version() + set(EIGEN_FOUND ${EIGEN_VERSION_OK}) + +else () + + find_path(EIGEN_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library + PATHS + ${CMAKE_INSTALL_PREFIX}/include + ${KDE4_INCLUDE_DIR} + PATH_SUFFIXES eigen3 eigen + ) + + if(EIGEN_INCLUDE_DIR) + _eigen3_check_version() + endif(EIGEN_INCLUDE_DIR) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(Eigen DEFAULT_MSG EIGEN_INCLUDE_DIR EIGEN_VERSION_OK) + + mark_as_advanced(EIGEN_INCLUDE_DIR) + SET(EIGEN_INCLUDE_DIRS ${EIGEN_INCLUDE_DIR} CACHE PATH "The Eigen include path.") + +endif() + diff --git a/CMake/FindFlann.cmake b/CMake/FindFlann.cmake new file mode 100644 index 0000000..a6375c0 --- /dev/null +++ b/CMake/FindFlann.cmake @@ -0,0 +1,28 @@ +############################################################################### +# Find Flann +# +# This sets the following variables: +# FLANN_FOUND - True if FLANN was found. +# FLANN_INCLUDE_DIRS - Directories containing the FLANN include files. +# FLANN_LIBRARIES - Libraries needed to use FLANN. +# FLANN_DEFINITIONS - Compiler flags for FLANN. + +find_package(PkgConfig) +pkg_check_modules(PC_FLANN flann) +set(FLANN_DEFINITIONS ${PC_FLANN_CFLAGS_OTHER}) + +find_path(FLANN_INCLUDE_DIR flann/flann.hpp + HINTS ${PC_FLANN_INCLUDEDIR} ${PC_FLANN_INCLUDE_DIRS}) + +find_library(FLANN_LIBRARY flann + HINTS ${PC_FLANN_LIBDIR} ${PC_FLANN_LIBRARY_DIRS}) + +set(FLANN_INCLUDE_DIRS ${FLANN_INCLUDE_DIR}) +set(FLANN_LIBRARIES ${FLANN_LIBRARY}) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Flann DEFAULT_MSG + FLANN_LIBRARY FLANN_INCLUDE_DIR) + +mark_as_advanced(FLANN_LIBRARY FLANN_INCLUDE_DIR) + diff --git a/CMake/FindOpenCL.cmake b/CMake/FindOpenCL.cmake new file mode 100644 index 0000000..56baf94 --- /dev/null +++ b/CMake/FindOpenCL.cmake @@ -0,0 +1,163 @@ +## Thanks to git://gitorious.org/findopencl/findopencl.git +## Used by SSC, but not created or owned by SSC. + +# - Try to find OpenCL +# This module tries to find an OpenCL implementation on your system. It supports +# AMD / ATI, Apple and NVIDIA implementations, but should work, too. +# +# To set manually the paths, define these environment variables: +# OpenCL_INCPATH - Include path (e.g. OpenCL_INCPATH=/opt/cuda/4.0/cuda/include) +# OpenCL_LIBPATH - Library path (e.h. OpenCL_LIBPATH=/usr/lib64/nvidia) +# +# Once done this will define +# OPENCL_FOUND - system has OpenCL +# OPENCL_INCLUDE_DIRS - the OpenCL include directory +# OPENCL_LIBRARIES - link these to use OpenCL +# +# WIN32 should work, but is untested + +FIND_PACKAGE(PackageHandleStandardArgs) + +IF (APPLE) + + FIND_LIBRARY(OPENCL_LIBRARIES OpenCL DOC "OpenCL lib for OSX") + FIND_PATH(OPENCL_INCLUDE_DIRS OpenCL/cl.h DOC "Include for OpenCL on OSX") + FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS OpenCL/cl.hpp DOC "Include for OpenCL CPP bindings on OSX") + +ELSE (APPLE) + + IF (WIN32) + + FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h) + FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp) + + # The AMD SDK and Nvidias CUDA currently installs both x86 and x86_64 libraries + # This is only a hack to find out architecture + + IF(CMAKE_SIZEOF_VOID_P EQUAL 8) #64bit + IF(DEFINED ENV{ATISTREAMSDKROOT}) + SET(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86_64") #amd + ELSE(DEFINED ENV{ATISTREAMSDKROOT}) + SET(OPENCL_LIB_DIR "$ENV{CUDA_PATH}/lib/x64") #nvidia + ENDIF(DEFINED ENV{ATISTREAMSDKROOT}) + ELSE (CMAKE_SIZEOF_VOID_P EQUAL 8) #32bit + IF(DEFINED ENV{ATISTREAMSDKROOT}) + SET(OPENCL_LIB_DIR "$ENV{ATISTREAMSDKROOT}/lib/x86") #amd + ELSE(DEFINED ENV{ATISTREAMSDKROOT}) + SET(OPENCL_LIB_DIR "$ENV{CUDA_PATH}/lib/Win32") #nvidia + ENDIF(DEFINED ENV{ATISTREAMSDKROOT}) + ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8) + FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib PATHS ${OPENCL_LIB_DIR} ENV OpenCL_LIBPATH) + + GET_FILENAME_COMPONENT(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE) + + # On Win32 search relative to the library + FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "${_OPENCL_INC_CAND}" ENV OpenCL_INCPATH) + FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "${_OPENCL_INC_CAND}" ENV OpenCL_INCPATH) + + ELSE (WIN32) + + # Unix style platforms + FIND_LIBRARY(OPENCL_LIBRARIES OpenCL + PATHS ENV LD_LIBRARY_PATH ENV OpenCL_LIBPATH + ) + + GET_FILENAME_COMPONENT(OPENCL_LIB_DIR ${OPENCL_LIBRARIES} PATH) + GET_FILENAME_COMPONENT(_OPENCL_INC_CAND ${OPENCL_LIB_DIR}/../../include ABSOLUTE) + + # The AMD SDK currently does not place its headers + # in /usr/include, therefore also search relative + # to the library + FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include" "/opt/AMDAPP/include" ENV OpenCL_INCPATH) + FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS ${_OPENCL_INC_CAND} "/usr/local/cuda/include" "/opt/AMDAPP/include" ENV OpenCL_INCPATH) + + ENDIF (WIN32) + +ENDIF (APPLE) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenCL DEFAULT_MSG OPENCL_LIBRARIES OPENCL_INCLUDE_DIRS) + +IF(_OPENCL_CPP_INCLUDE_DIRS) + SET( OPENCL_HAS_CPP_BINDINGS TRUE ) + LIST( APPEND OPENCL_INCLUDE_DIRS ${_OPENCL_CPP_INCLUDE_DIRS} ) + # This is often the same, so clean up + LIST( REMOVE_DUPLICATES OPENCL_INCLUDE_DIRS ) +ENDIF(_OPENCL_CPP_INCLUDE_DIRS) + +#================================================================================ +IF (OPENCL_FOUND) +# Code for determining OpenCL version found: +# https://github.com/bkloppenborg/simtoi/blob/master/CMakeModules/FindOpenCL.cmake + + SET (_OPENCL_VERSION_TEST_SOURCE +" +#if __APPLE__ +#include +#else /* !__APPLE__ */ +#include +#endif /* __APPLE__ */ + +#include +#include + +int main() +{ + char *version; + cl_int result; + cl_platform_id id; + size_t n; + + result = clGetPlatformIDs(1, &id, NULL); + + if (result == CL_SUCCESS) { + result = clGetPlatformInfo(id, CL_PLATFORM_VERSION, 0, NULL, &n); + + if (result == CL_SUCCESS) { + version = (char*)malloc(n * sizeof(char)); + + result = clGetPlatformInfo(id, CL_PLATFORM_VERSION, n, version, + NULL); + + if (result == CL_SUCCESS) { + printf(\"%s\", version); + fflush(stdout); + } + + free(version); + } + } + + return result == CL_SUCCESS ? EXIT_SUCCESS : EXIT_FAILURE; +} +") + + SET (_OPENCL_VERSION_SOURCE + "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/openclversion.c") + + FILE (WRITE ${_OPENCL_VERSION_SOURCE} "${_OPENCL_VERSION_TEST_SOURCE}\n") + + TRY_RUN (_OPENCL_VERSION_RUN_RESULT _OPENCL_VERSION_COMPILE_RESULT + ${CMAKE_BINARY_DIR} ${_OPENCL_VERSION_SOURCE} + RUN_OUTPUT_VARIABLE _OPENCL_VERSION_STRING + CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${OPENCL_INCLUDE_DIRS}" + "-DLINK_LIBRARIES:STRING=${OPENCL_LIBRARIES}") + + IF (_OPENCL_VERSION_RUN_RESULT EQUAL 0) + STRING (REGEX REPLACE "OpenCL[ \t]+([0-9]+)\\.[0-9]+.*" "\\1" + OPENCL_VERSION_MAJOR "${_OPENCL_VERSION_STRING}") + STRING (REGEX REPLACE "OpenCL[ \t]+[0-9]+\\.([0-9]+).*" "\\1" + OPENCL_VERSION_MINOR "${_OPENCL_VERSION_STRING}") + + SET (OPENCL_VERSION_COMPONENTS 2) + SET (OPENCL_VERSION "${OPENCL_VERSION_MAJOR}.${OPENCL_VERSION_MINOR}") + ENDIF (_OPENCL_VERSION_RUN_RESULT EQUAL 0) + + IF ("${OPENCL_VERSION}" STREQUAL "") + MESSAGE (WARNING "Cannot determine OpenCL's version") + ENDIF ("${OPENCL_VERSION}" STREQUAL "") +ENDIF (OPENCL_FOUND) +#================================================================================ + +MARK_AS_ADVANCED( + OPENCL_INCLUDE_DIRS +) diff --git a/CMake/MacOSXBundleInfo_cx_custom.plist.in b/CMake/MacOSXBundleInfo_cx_custom.plist.in new file mode 100644 index 0000000..4510dcc --- /dev/null +++ b/CMake/MacOSXBundleInfo_cx_custom.plist.in @@ -0,0 +1,40 @@ + + + + + NSPrincipalClass + NSApplication + NSHighResolutionCapable + True + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${MACOSX_BUNDLE_EXECUTABLE_NAME} + CFBundleGetInfoString + ${MACOSX_BUNDLE_INFO_STRING} + CFBundleIconFile + ${MACOSX_BUNDLE_ICON_FILE} + CFBundleIdentifier + ${MACOSX_BUNDLE_GUI_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleLongVersionString + ${MACOSX_BUNDLE_LONG_VERSION_STRING} + CFBundleName + ${MACOSX_BUNDLE_BUNDLE_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} + CFBundleSignature + ???? + CFBundleVersion + ${MACOSX_BUNDLE_BUNDLE_VERSION} + CSResourcesFileMapped + + LSRequiresCarbon + + NSHumanReadableCopyright + ${MACOSX_BUNDLE_COPYRIGHT} + + diff --git a/CMake/cxBundleUtilities.cmake b/CMake/cxBundleUtilities.cmake new file mode 100644 index 0000000..b1302be --- /dev/null +++ b/CMake/cxBundleUtilities.cmake @@ -0,0 +1,385 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + + +#.rst: +# cxBundleUtilities +# --------------- +# +# Functions to help assemble a standalone bundle application. +# +# Depends upon and is an enhancement of the vanilla BundleUtilities.cmake, +# +# +# The following functions are provided by this module: +# +# :: +# +# cx_fixup_bundle +# cx_get_bundle_keys +# +# :: +# +# CX_FIXUP_BUNDLE( ) +# +# Fix up a bundle in-place and make it standalone, such that it can be +# drag-n-drop copied to another machine and run on that machine as long +# as all of the system libraries are compatible. +# +# If you pass plugins to fixup_bundle as the libs parameter, you should +# install them or copy them into the bundle before calling fixup_bundle. +# The "libs" parameter is a list of libraries that must be fixed up, but +# that cannot be determined by otool output analysis. (i.e., plugins) +# +# Gather all the keys for all the executables and libraries in a bundle, +# and then, for each key, copy each prerequisite into the bundle. Then +# fix each one up according to its own list of prerequisites. +# +# Then clear all the keys and call verify_app on the final bundle to +# ensure that it is truly standalone. +# +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") +# +# :: +# +# CX_GET_BUNDLE_KEYS( ) +# +# Loop over all the executable and library files within the bundle (and +# given as extra ) and accumulate a list of keys representing +# them. Set values associated with each key such that we can loop over +# all of them and copy prerequisite libs into the bundle and then do +# appropriate install_name_tool fixups. +# +# As an optional parameter (IGNORE_ITEM) a list of file names can be passed, +# which are then ignored (e.g. IGNORE_ITEM "vcredist_x86.exe;vcredist_x64.exe") + +#============================================================================= +# Copyright 2008-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +include(CMakeParseArguments) + +# Inject feature into GetPrerequisites: +# Tag GStreamer framework as SYSTEM, thus keeping it out of the bundle, +# and requiring the user to install GStreamer on his Mac. +# +# This is a workaround for not being able to install the whole of GStreamer +# into the bundle - gst plugins dont load properly. +# +function(gp_resolved_file_type_override resolved_file type) + if(APPLE) + if(resolved_file MATCHES "^(/Library/Frameworks/GStreamer.framework/)") + set(${type} "system" PARENT_SCOPE) + endif() + endif() +endfunction() + +include(BundleUtilities) + +############################################################################### +# Clean /./ - like structures from a path list +# +## Input variables: +# INPUT_PATH : List of paths to file. +# +## Output variables: +# RESULT_PATH : List of cleaned paths to files +############################################################################### +function(cx_clean_path INPUT_PATH RESULT_PATH) + set(_TEMP_INPUT ${INPUT_PATH}) + set(_TEMP_RETVAL "") + foreach(_ITER ${_TEMP_INPUT}) + string(REPLACE "/./" "/" _ITER ${_ITER}) + list(APPEND _TEMP_RETVAL ${_ITER}) + endforeach() + set(${RESULT_PATH} ${_TEMP_RETVAL} PARENT_SCOPE) +endfunction() + +####################################################################### +# +# get_new_prerequisites() +# +# Given a top_binary, search recursively for prerequisites in dirs, +# return prereqs in found_binaries. +# +# Ignore binaries that are already present in found_binaries +# +####################################################################### +function(cx_get_new_prerequisites context target exepath dirs found_binaries found_binaries_retval msg_indent rpaths) + get_item_key("${target}" target_key) # debug + set(MY_MESSAGE_INDENT ".${msg_indent}") + + gp_resolve_item("${context}" "${target}" "${exepath}" "${dirs}" resolved_target) + + # look for target in found_binaries. + # If already present: return + list (FIND found_binaries ${resolved_target} _index) + if (${_index} GREATER -1) +# message(STATUS " get_new_prerequisites: target found in list, returning... "${target_key}) + return() + endif() + + set(show_status 0) + if(show_status) + message(STATUS ${MY_MESSAGE_INDENT} "get_new_prerequisites: append+investigate: " ${target_key}) + message(STATUS ${MY_MESSAGE_INDENT} " ${target}") + endif() + + list(APPEND found_binaries ${resolved_target}) + + set(prereqs "") + get_prerequisites("${resolved_target}" prereqs 1 0 "${exepath}" "${dirs}" "${rpaths}") + + list(LENGTH prereqs prereqs_length) + if(show_status) + message(STATUS ${MY_MESSAGE_INDENT} " Investigating " ${prereqs_length} " prereqs {") + endif() + + foreach(pr ${prereqs}) + list (FIND found_binaries ${pr} _index) + if (${_index} EQUAL -1) + cx_get_new_prerequisites("${resolved_target}" "${pr}" "${exepath}" "${dirs}" + "${found_binaries}" found_binaries "${MY_MESSAGE_INDENT}" "${rpaths}") +# cx_get_new_prerequisites("${context}" "${pr}" "${exepath}" "${dirs}" +# "${found_binaries}" found_binaries "${MY_MESSAGE_INDENT}" "${rpaths}") + endif() + endforeach() + + # Propagate values to caller's scope: + set(${found_binaries_retval} ${found_binaries} PARENT_SCOPE) + + if(show_status) + set(found_binaries_length 0) + list(LENGTH found_binaries found_binaries_length) + message(STATUS ${MY_MESSAGE_INDENT} "} found binaries so far: " ${found_binaries_length}) + foreach(key ${${found_binaries}}) + message(STATUS ${MY_MESSAGE_INDENT} " binary: " ${key} ) + endforeach() + endif() + +endfunction() + +# Modified version of the vanilla get_bundle_keys, +# - Uses cx_get_new_prerequisites() to find prereqs, +# - Treats all binaries (libs and exes) similarly, thus assuming +# that the RPATH settings are the same for all. This assumption is +# used because all binaries are copied into the same folder, thus +# possibly overwriting each other, thus should be the same. +# +function(cx_get_bundle_keys app libs dirs keys_var) + set(${keys_var} PARENT_SCOPE) + + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + get_bundle_and_executable("${app}" bundle executable valid) + if(valid) + # Always use the exepath of the main bundle executable for @executable_path + # replacements: + # + get_filename_component(exepath "${executable}" PATH) + + # But do fixups on all executables in the bundle: + # + get_bundle_all_executables("${bundle}" exes) + + # Set keys for main executable first: + # + set_bundle_key_values(${keys_var} "${executable}" "${executable}" "${exepath}" "${dirs}" 0) + + # Get rpaths specified by main executable: + # + get_item_key("${executable}" executable_key) + set(main_rpaths "${${executable_key}_RPATHS}") + + # --begin optimize code + # Loop over all libs and exes, assemble list of + # prerequisites in found_binaries + set(targets ${libs} ${exes}) + set(found_binaries "") + foreach(target ${targets}) + + set(ignoreFile FALSE) + get_filename_component(binary_filename ${target} NAME) + if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" ) + foreach(item ${CFG_IGNORE_ITEM}) + if("${item}" STREQUAL "${binary_filename}") + set(ignoreFile TRUE) + endif() + endforeach() + endif() + + + if(NOT ignoreFile) + message(STATUS "Examining prerequisites for target: " ${target} ) + cx_get_new_prerequisites("${target}" "${target}" "${exepath}" "${dirs}" + "${found_binaries}" found_binaries "." "${main_rpaths}") +# list(LENGTH found_binaries found_binaries_length) +# message(STATUS " completed, found preqs: " ${found_binaries_length}) + else() + message(STATUS "Ignoring file: ${target}") + endif() + endforeach() + + # Set key values for all found binaries + foreach(binary ${found_binaries}) + set(copyflag 1) + get_filename_component(binary_filename ${binary} NAME) + list (FIND targets ${binary} _index) + if (${_index} GREATER -1) + set(copyflag 0) + message(STATUS "In bundle: " ${binary_filename} ) + else() + message(STATUS "Required : " ${binary} ) + endif() + + set(prereqs "") + set(ignoreFile FALSE) + if(NOT "${CFG_IGNORE_ITEM}" STREQUAL "" ) + foreach(item ${CFG_IGNORE_ITEM}) + if("${item}" STREQUAL "${binary_filename}") + set(ignoreFile TRUE) + endif() + endforeach() + endif() + + if(NOT ignoreFile) + set_bundle_key_values(${keys_var} "${executable}" "${binary}" "${exepath}" "${dirs}" "${copyflag}" "${main_rpaths}") + else() + message(STATUS "Ignoring file: ${binary}") + endif() + endforeach() + + # --end optimize code + + + # Propagate values to caller's scope: + # + set(${keys_var} ${${keys_var}} PARENT_SCOPE) + foreach(key ${${keys_var}}) + set(${key}_ITEM "${${key}_ITEM}" PARENT_SCOPE) + set(${key}_RESOLVED_ITEM "${${key}_RESOLVED_ITEM}" PARENT_SCOPE) + set(${key}_DEFAULT_EMBEDDED_PATH "${${key}_DEFAULT_EMBEDDED_PATH}" PARENT_SCOPE) + set(${key}_EMBEDDED_ITEM "${${key}_EMBEDDED_ITEM}" PARENT_SCOPE) + set(${key}_RESOLVED_EMBEDDED_ITEM "${${key}_RESOLVED_EMBEDDED_ITEM}" PARENT_SCOPE) + set(${key}_COPYFLAG "${${key}_COPYFLAG}" PARENT_SCOPE) + set(${key}_RPATHS "${${key}_RPATHS}" PARENT_SCOPE) + set(${key}_RDEP_RPATHS "${${key}_RDEP_RPATHS}" PARENT_SCOPE) + endforeach() + endif() +endfunction() + +# Based on the vanilla version (3.6.2), +# EXCEPT: - cx_get_bundle_keys() is called instead of get_bundle_keys() +# - binaries are chmoded to writable prior to fixup (BU_CHMOD_BUNDLE_ITEMS=ON) +# +function(cx_fixup_bundle app libs dirs) + message(STATUS "fixup_bundle") + message(STATUS " app='${app}'") + message(STATUS " libs='${libs}'") + message(STATUS " dirs='${dirs}'") + + cx_clean_path("${app}" app) + cx_clean_path("${libs}" libs) + cx_clean_path("${dirs}" dirs) + + set(options) + set(oneValueArgs) + set(multiValueArgs IGNORE_ITEM) + cmake_parse_arguments(CFG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + message(STATUS " ignoreItems='${CFG_IGNORE_ITEM}'") + + get_bundle_and_executable("${app}" bundle executable valid) + if(valid) + get_filename_component(exepath "${executable}" PATH) + + message(STATUS "fixup_bundle: preparing...") + cx_get_bundle_keys("${app}" "${libs}" "${dirs}" keys IGNORE_ITEM "${CFG_IGNORE_ITEM}") + + message(STATUS "fixup_bundle: copying...") + list(LENGTH keys n) + math(EXPR n ${n}*2) + + set(i 0) + foreach(key ${keys}) + math(EXPR i ${i}+1) + if(${${key}_COPYFLAG}) + message(STATUS "${i}/${n}: copying '${${key}_RESOLVED_ITEM}'") + else() + message(STATUS "${i}/${n}: *NOT* copying '${${key}_RESOLVED_ITEM}'") + endif() + + set(show_status 0) + if(show_status) + message(STATUS "key='${key}'") + message(STATUS "item='${${key}_ITEM}'") + message(STATUS "resolved_item='${${key}_RESOLVED_ITEM}'") + message(STATUS "default_embedded_path='${${key}_DEFAULT_EMBEDDED_PATH}'") + message(STATUS "embedded_item='${${key}_EMBEDDED_ITEM}'") + message(STATUS "resolved_embedded_item='${${key}_RESOLVED_EMBEDDED_ITEM}'") + message(STATUS "copyflag='${${key}_COPYFLAG}'") + message(STATUS "rpaths='${${key}_RPATHS}'") + message(STATUS "rdep_rpaths='${${key}_RDEP_RPATHS}'") + message(STATUS "") + endif() + + if(${${key}_COPYFLAG}) + set(item "${${key}_ITEM}") + if(item MATCHES "[^/]+\\.framework/") + copy_resolved_framework_into_bundle("${${key}_RESOLVED_ITEM}" + "${${key}_RESOLVED_EMBEDDED_ITEM}") + else() + if(UNIX) + set (BU_CHMOD_BUNDLE_ITEMS ON) + endif() + copy_resolved_item_into_bundle("${${key}_RESOLVED_ITEM}" + "${${key}_RESOLVED_EMBEDDED_ITEM}") + endif() + endif() + endforeach() + + message(STATUS "fixup_bundle: fixing...") + foreach(key ${keys}) + math(EXPR i ${i}+1) + if(APPLE) + message(STATUS "${i}/${n}: fixing up '${${key}_RESOLVED_EMBEDDED_ITEM}'") + fixup_bundle_item("${${key}_RESOLVED_EMBEDDED_ITEM}" "${exepath}" "${dirs}") + else() + message(STATUS "${i}/${n}: fix-up not required on this platform '${${key}_RESOLVED_EMBEDDED_ITEM}'") + endif() + endforeach() + + message(STATUS "fixup_bundle: cleaning up...") + clear_bundle_keys(keys) + + message(STATUS "fixup_bundle: verifying...") + verify_app("${app}" IGNORE_ITEM "${CFG_IGNORE_ITEM}") + else() + message(SEND_ERROR "error: fixup_bundle: not a valid bundle") + endif() + + message(STATUS "fixup_bundle: done") +endfunction() + + + + diff --git a/CMake/cxCatchUtilities.cmake b/CMake/cxCatchUtilities.cmake new file mode 100644 index 0000000..2002edd --- /dev/null +++ b/CMake/cxCatchUtilities.cmake @@ -0,0 +1,74 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + +############################################################################### +# Create the Catch executable +# +# NOTE: Should only be called once. +# +############################################################################### +function(cx_add_executable_catch CX_CATCH_LIB) + + message(STATUS "Generating master Catch exe.") + message(STATUS "Adding tests from:") + foreach(LIBRARY ${CX_SHARED_TEST_LIBRARIES}) + message(STATUS " ${LIBRARY}") + endforeach() + + configure_file( + "${CustusX_SOURCE_DIR}/source/testing/cxImportTests.h.in" + "${CustusX_BINARY_DIR}/source/testing/cxImportTests.h" + ) + + set(TEST_EXE_NAME "Catch") + set(cxtest_MAIN ${CustusX_SOURCE_DIR}/source/testing/cxtestCatchMain.cpp) + + + set(BUNDLE_TYPE "") + if(CX_APPLE) + set(BUNDLE_TYPE "MACOSX_BUNDLE") + endif() + + add_executable(${TEST_EXE_NAME} ${BUNDLE_TYPE} ${cxtest_MAIN}) + target_link_libraries(${TEST_EXE_NAME} PRIVATE cxResource ${CX_SHARED_TEST_LIBRARIES} ${CX_CATCH_LIB}) + + cx_install_target(${TEST_EXE_NAME}) + +endfunction(cx_add_executable_catch) + +############################################################################### +# Clear the internal Catch cache +# +# NOTE: Should only be called once, before adding tests to Catch +# +############################################################################### +function(cx_clear_catch_cache) + unset(CX_SHARED_TEST_LIBRARIES CACHE) +endfunction(cx_clear_catch_cache) + +############################################################################### +# Add shared library with tests to Catch +# +# Usage: cx_add_tests_to_catch(cxtestShareLibrary) +# +############################################################################### +function(cx_add_tests_to_catch SHARED_LIBRARY_WITH_TESTS) + set(CX_SHARED_TEST_LIBRARIES + ${CX_SHARED_TEST_LIBRARIES} + ${SHARED_LIBRARY_WITH_TESTS} + CACHE INTERNAL + "List of all shared libraries containing catch tests." + ) + if(CX_LINUX) + cx_install_target(${SHARED_LIBRARY_WITH_TESTS}) + endif(CX_LINUX) +endfunction(cx_add_tests_to_catch) + diff --git a/CMake/cxDocumentation.cmake b/CMake/cxDocumentation.cmake new file mode 100644 index 0000000..e7cf339 --- /dev/null +++ b/CMake/cxDocumentation.cmake @@ -0,0 +1,59 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + +############################################################################### +# +# Converts a CMake list to a string containing elements separated by spaces +# +# http://opensource.apple.com/source/curl/curl-83.1.2/curl/CMake/Utilities.cmake +############################################################################### +function(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR) + set(NEW_LIST_SPACE) + foreach(ITEM ${${_LIST_NAME}}) + set(NEW_LIST_SPACE "${NEW_LIST_SPACE} ${ITEM}") + endforeach() + string(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE) + set(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE) +endfunction() + +############################################################################### +# +# Add a string VALUE_TO_APPEND to a global property PROPERTY_NAME. +# +############################################################################### +function(cx_add_string_to_global_property_list PROPERTY_NAME VALUE_TO_APPEND) + get_property(PROPERTY_VALUE GLOBAL PROPERTY ${PROPERTY_NAME}) + set(PROPERTY_VALUE ${PROPERTY_VALUE} "${VALUE_TO_APPEND}") + set_property(GLOBAL PROPERTY ${PROPERTY_NAME} ${PROPERTY_VALUE}) +endfunction() + +############################################################################### +# +# Add a folder containing documentation files. +# +# +############################################################################### +function(cx_doc_define_user_docs PLUGIN_DOC_FOLDER) + cx_add_string_to_global_property_list(CX_PLUGIN_DOC_FOLDERS "${PLUGIN_DOC_FOLDER}") +endfunction() + +############################################################################### +# +# Define documentation for a plugin. +# +# Call this once for each plugin that contains a documentation folder, +# typically in ${CMAKE_CURRENT_SOURCE_DIR}/doc. +# +############################################################################### +function(cx_doc_define_plugin_user_docs PLUGIN_NAME PLUGIN_DOC_FOLDER) + cx_add_string_to_global_property_list(CX_PLUGIN_DOC_FOLDERS "${PLUGIN_DOC_FOLDER}") + cx_add_string_to_global_property_list(CX_PLUGIN_DOC_NAMES "${PLUGIN_NAME}") +endfunction() diff --git a/CMake/cxGetVersion.cmake b/CMake/cxGetVersion.cmake new file mode 100644 index 0000000..e4ab450 --- /dev/null +++ b/CMake/cxGetVersion.cmake @@ -0,0 +1,309 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + + + + +############################################################################### +# Get a bool telling if git is on a tag or not +# +############################################################################### +function(cx_get_git_is_on_tag _varResult) + find_package(Git REQUIRED) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --exact-match + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_OUTPUT + RESULT_VARIABLE GIT_RESULT + ) + + if(${GIT_RESULT} EQUAL 0) + set(RESULT ON) + else() + set(RESULT OFF) + endif() + + set (${_varResult} ${RESULT} PARENT_SCOPE) +endfunction() + + +############################################################################### +# Get a description of the current build from git. +# +# http://stackoverflow.com/questions/1435953/how-can-i-pass-git-sha1-to-compiler-as-definition-using-cmake +# use the entire output of git describe here instead. +# +############################################################################### +function(cx_get_git_build_description _varResult) + find_package(Git REQUIRED) + execute_process( + COMMAND ${GIT_EXECUTABLE} describe --tags + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE RESULT + ) + # remove first character - should always be a "v" as first in f.ex. "v3.5.3" + string(SUBSTRING ${RESULT} 1 -1 RESULT) + + STRING(REGEX REPLACE "\r|\n" "" RESULT ${RESULT}) + STRING(REGEX REPLACE " " "" RESULT ${RESULT}) + string(REPLACE "/" "_" RESULT ${RESULT}) # make filename-friendly + + set (${_varResult} ${RESULT} PARENT_SCOPE) +endfunction() + + +############################################################################### +# Get a description of the current build from git. +# +# http://stackoverflow.com/questions/1435953/how-can-i-pass-git-sha1-to-compiler-as-definition-using-cmake +# use the entire output of git describe here instead. +# +############################################################################### +function(cx_get_git_sha _varResult) + find_package(Git REQUIRED) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --short=4 HEAD + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE RESULT + ) + STRING(REGEX REPLACE "\r|\n" "" RESULT ${RESULT}) + STRING(REGEX REPLACE " " "" RESULT ${RESULT}) + string(REPLACE "/" "_" RESULT ${RESULT}) # make filename-friendly + + set (${_varResult} ${RESULT} PARENT_SCOPE) +endfunction() + +############################################################################### +# Get a description of the current branch from git. +# +############################################################################### +function(cx_get_git_branch _varResult) + find_package(Git REQUIRED) + execute_process( + COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE RESULT + ) + STRING(REGEX REPLACE "\r|\n" "" RESULT ${RESULT}) + STRING(REGEX REPLACE " " "" RESULT ${RESULT}) + string(REPLACE "/" "_" RESULT ${RESULT}) # make filename-friendly + + set (${_varResult} ${RESULT} PARENT_SCOPE) +endfunction() + + + +############################################################################### +# +# Define the variables +# +# ${PROJECT_NAME}_VERSION_MAJOR +# ${PROJECT_NAME}_VERSION_MINOR +# ${PROJECT_NAME}_VERSION_PATCH +# ${PROJECT_NAME}_VERSION_STRING +# +############################################################################### +macro(cx_define_version MAJOR MINOR PATCH) + set(${PROJECT_NAME}_VERSION_MAJOR ${MAJOR}) + set(${PROJECT_NAME}_VERSION_MINOR ${MINOR}) + set(${PROJECT_NAME}_VERSION_PATCH ${PATCH}) + + set(${PROJECT_NAME}_VERSION_STRING ${MAJOR}) + + if(NOT ${MINOR} STREQUAL "") + set(${PROJECT_NAME}_VERSION_STRING ${${PROJECT_NAME}_VERSION_STRING}.${MINOR}) + endif() + if(NOT ${PATCH} STREQUAL "") + set(${PROJECT_NAME}_VERSION_STRING ${${PROJECT_NAME}_VERSION_STRING}.${PATCH}) + endif() + +endmacro() + + +############################################################################### +# +# Set the CustusX version based on the current git tag. +# +# git describe --tags is used to get a string interpreted as +# v.. +# +# +############################################################################### +macro(cx_set_version_from_git) + cx_get_git_build_description(GIT_DESCRIBE) + # GIT_DESCRIBE is a dot-separated string: Interpret the first two elements + # as minor, major, and the rest as patch + string(REPLACE "." ";" GIT_DESCRIBE_LIST ${GIT_DESCRIBE}) + list(GET GIT_DESCRIBE_LIST 0 major) + list(GET GIT_DESCRIBE_LIST 1 minor) + list(REMOVE_AT GIT_DESCRIBE_LIST 0 1) + string(REPLACE ";" "." patch "${GIT_DESCRIBE_LIST}") + + cx_define_version(${major} ${minor} "${patch}") +endmacro() + + +############################################################################### +# +# Set the CustusX version based on the current date and git SHA. +# +# Format based on rules from http://semver.org/ +# The format is YYYY.MM.DD-dev+GIT_BRANCH.GIT_SHA +# +# +############################################################################### +MACRO(cx_set_version_today_alpha) + cx_get_today(TODAY_DATE) + cx_get_git_sha(GIT_SHA) + cx_get_git_branch(GIT_BRANCH) + + string(REPLACE "-" ";" TODAY_DATE_LIST ${TODAY_DATE}) + # truncate branch name - this is encoded into the exename and should be + # kept within reasonable size (think windows filepath restrictions) + string(LENGTH ${GIT_BRANCH} TEXT_LENGTH) + if(${TEXT_LENGTH} GREATER 30) + string(SUBSTRING ${GIT_BRANCH} 0, 30, GIT_BRANCH) + endif() + + list(GET TODAY_DATE_LIST 0 YEAR) + list(GET TODAY_DATE_LIST 1 MONTH) + list(GET TODAY_DATE_LIST 2 DAY) + + set(major ${YEAR}) + set(minor ${MONTH}) + set(patch ${DAY}-dev+${GIT_BRANCH}.${GIT_SHA}) + + cx_define_version(${major} ${minor} ${patch}) + +ENDMACRO() + + +############################################################################### +# +# Define the variables +# +# ${PROJECT_NAME}_VERSION_MAJOR +# ${PROJECT_NAME}_VERSION_MINOR +# ${PROJECT_NAME}_VERSION_PATCH +# ${PROJECT_NAME}_VERSION_STRING +# +# Based on the git tag. If not on a git tag, generate development +# values based on date and SHA. +# +# +############################################################################### +MACRO(cx_read_version) + cx_get_git_is_on_tag(GIT_ON_TAG) + + if(${GIT_ON_TAG}) + cx_set_version_from_git() + message(STATUS "CustusX Tagged Version: ${CustusX_VERSION_STRING}") + else() + cx_set_version_today_alpha() + message(STATUS "CustusX Alpha Version: ${CustusX_VERSION_STRING}") + endif() + +ENDMACRO() + + + + + + + + + + + + +############################################################################### +# DISABLED +# +# Define variables for the current version. +# Input (major, minor, patch) define the version, +# while the type determines additional info: +# +# type==ALPHA: +# add detailed information to the postfix, such as git sha and date. +# type==RELEASE: +# add no extra information. +# type==: +# the postfix is set to +# +# The following variables are defined: +# +# ${PROJECT_NAME}_VERSION_MAJOR +# ${PROJECT_NAME}_VERSION_MINOR +# ${PROJECT_NAME}_VERSION_PATCH +# ${PROJECT_NAME}_VERSION_POSTFIX +# ${PROJECT_NAME}_VERSION_STRING +# +############################################################################### +MACRO(cx_define_version_disabled major minor patch type) + set(${PROJECT_NAME}_VERSION_MAJOR ${major}) + set(${PROJECT_NAME}_VERSION_MINOR ${minor}) + set(${PROJECT_NAME}_VERSION_PATCH ${patch}) + + cx_get_git_is_dirty(GIT_IS_DIRTY) + message(STATUS "cx_get_git_is_dirty retva: " ${GIT_IS_DIRTY}) + + cx_get_git_build_description(GIT_DESCRIBE) + cx_get_git_sha(GIT_SHA) + + if(${type} STREQUAL ALPHA) + cx_get_today(TODAY_DATE) + set(GIT_DESCRIBE "${TODAY_DATE}.${GIT_SHA}") + set(POSTFIX ".alpha") + elseif(${type} STREQUAL BETA) + set(POSTFIX ".beta") + elseif(${type} STREQUAL RELEASE) + set(POSTFIX "") + else() + set(POSTFIX "." ${type}) + endif() + + #on windows this string contains newlines and whitespaces that needs to be removed + STRING(REGEX REPLACE "\r|\n" "" GIT_DESCRIBE ${GIT_DESCRIBE}) + STRING(REGEX REPLACE " " "" GIT_DESCRIBE ${GIT_DESCRIBE}) + + set(${PROJECT_NAME}_VERSION_POSTFIX ${POSTFIX}) + set(GENERATED_VERSION_STRING ${major}.${minor}.${patch}${POSTFIX}) + string(REGEX MATCH ${GENERATED_VERSION_STRING} MATCHING_STRING ${GIT_DESCRIBE}) + + if(${type} STREQUAL ALPHA) + set(${PROJECT_NAME}_VERSION_STRING ${GIT_DESCRIBE}${POSTFIX}) + elseif("${MATCHING_STRING}" STREQUAL "") + message("Warning: + Version string extracted from git: ${GIT_DESCRIBE} + Version string generated: ${GENERATED_VERSION_STRING} + The generated string should be contained in the git string. + Reverting to generated string, setting dirty tag.") + set(${PROJECT_NAME}_VERSION_STRING ${GENERATED_VERSION_STRING}.dirty) + else() + set(${PROJECT_NAME}_VERSION_STRING ${GIT_DESCRIBE}) + endif() +ENDMACRO() + + +MACRO(cx_read_version_disabled) + file(READ ${PROJECT_SOURCE_DIR}/version.ini CX_VERSION_FILE_DATA) + + string(REGEX REPLACE ".*major[ ]*=[ ]*([0-9]+).*" "\\1" VERSION_MAJOR ${CX_VERSION_FILE_DATA}) + string(REGEX REPLACE ".*minor[ ]*=[ ]*([0-9]+).*" "\\1" VERSION_MINOR ${CX_VERSION_FILE_DATA}) + string(REGEX REPLACE ".*patch[ ]*=[ ]*([0-9]+).*" "\\1" VERSION_PATCH ${CX_VERSION_FILE_DATA}) + string(REGEX REPLACE ".*type[ ]*=[ ]*([^$]*).*" "\\1" VERSION_TYPE ${CX_VERSION_FILE_DATA}) + STRING(REGEX REPLACE "(\r?\n)+$" "" VERSION_TYPE "${VERSION_TYPE}") + + cx_define_version(${VERSION_MAJOR} ${VERSION_MINOR} ${VERSION_PATCH} ${VERSION_TYPE}) + message(STATUS "CustusX Version: ${CustusX_VERSION_STRING}") + +ENDMACRO() + diff --git a/CMake/cxInitializeLibraries.cmake b/CMake/cxInitializeLibraries.cmake new file mode 100644 index 0000000..d509c74 --- /dev/null +++ b/CMake/cxInitializeLibraries.cmake @@ -0,0 +1,295 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + + +############################################################################### +# Initialize cppunit library +# +# Define variables: +# CPPUNIT_FOUND +# CPPUNIT_INCLUDE_DIR +# CPPUNIT_LIBRARY +# CPPUNIT_LIBRARIES +# CPPUNIT_DEBUG_LIBRARIES +# +############################################################################### +macro(cx_initialize_cppunit) + find_path(CPPUNIT_INCLUDE_DIR cppunit/TestCase.h + /usr/local/include + /usr/include) + + if(CX_WINDOWS) + #CPP_UNIT not used on Windows + else(CX_WINDOWS) + find_library(CPPUNIT_LIBRARIES cppunit /opt/local/lib REQUIRED) + endif(CX_WINDOWS) + + include_directories(${CPPUNIT_INCLUDE_DIR}) +endmacro() + +############################################################################### +# Initialize openCV library +# +# Define variables: +# CX_USE_OpenCV : cache option +# +############################################################################### +macro(cx_initialize_opencv) + if(CX_USE_OpenCV) + find_package( OpenCV REQUIRED) + else() + find_package( OpenCV QUIET) + endif() + IF( OpenCV_FOUND ) + option(CX_USE_OpenCV "use OpenCV" ON) + ELSE() + option(CX_USE_OpenCV "use OpenCV" OFF) + ENDIF() +endmacro() + + +############################################################################### +# Initialize openCL library +# +# Define variables: +# SSC_USE_OpenCL : cache option +# +############################################################################### +macro(cx_initialize_opencl) + if(SSC_USE_OpenCL) + find_package( OpenCL REQUIRED) + else() + find_package( OpenCL QUIET) + endif() + IF( OPENCL_FOUND ) + option(SSC_USE_OpenCL "Use OpenCL" ON) + ELSE() + option(SSC_USE_OpenCL "Use OpenCL" OFF) + ENDIF() + + if(OPENCL_FOUND) + add_definitions(-DSSC_USE_OpenCL) + include_directories(${OPENCL_INCLUDE_DIRS}) + endif() +endmacro() + + +############################################################################### +# Initialize FAST library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_FAST) + find_package(FAST REQUIRED) + include_directories("${FAST_DIR}/../FAST/source/") + include_directories("${FAST_DIR}/") + link_directories("${FAST_DIR}/lib/") + set(FAST_SOURCE_DIR ${FAST_DIR}/../FAST/source/FAST/) + add_definitions("-DFAST_SOURCE_DIR=\"${FAST_SOURCE_DIR}/\"") + message("===========================") + message("Initializing FAST") + message("-- ${FAST_DIR}/../FAST/source/") + message("===========================") + cx_install_add_library_dirs(${FAST_DIR}/bin/) +endmacro() + +############################################################################### +# Initialize OpenCLUtilityLibrary +# +# Find the package and run the include USE file. +# +# Define variables: +# CX_USE_OPENCL_UTILITY : cache option +# +############################################################################### +macro(cx_initialize_OpenCLUtilityLibrary) + if(CX_USE_OPENCL_UTILITY) + find_package( OpenCLUtilityLibrary REQUIRED) + else() + find_package( OpenCLUtilityLibrary QUIET) + endif() + + if(OpenCLUtilityLibrary_FOUND) + option(CX_USE_OPENCL_UTILITY "use OpenCL UtilityLibrary" ON) + else() + option(CX_USE_OPENCL_UTILITY "use OpenCL UtilityLibrary" OFF) + endif() + + if( CX_USE_OPENCL_UTILITY ) + ADD_DEFINITIONS(-DCX_USE_OPENCL_UTILITY) + include(${OpenCLUtilityLibrary_USE_FILE}) + endif() +endmacro() + + +############################################################################### +# Initialize Boost library +# Find the package. +############################################################################### +macro(cx_initialize_Boost) + find_package( Boost REQUIRED ) + include_directories(${Boost_INCLUDE_DIRS}) +endmacro() + +############################################################################### +# Initialize Qt library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_QT) + find_package(Qt5Core REQUIRED) # attempt to remove warning in cmake + find_package(Qt5Widgets REQUIRED) + find_package(Qt5OpenGL REQUIRED) + find_package(Qt5Xml REQUIRED) + find_package(Qt5Help REQUIRED) + find_package(Qt5Sql REQUIRED) + find_package(Qt5Test REQUIRED) + find_package(Qt5Network REQUIRED) + find_package(Qt5Concurrent REQUIRED) # attempt to remove warning in cmake + find_package(Qt5Multimedia REQUIRED) + find_package(Qt5OpenGL REQUIRED) +endmacro() + +############################################################################### +# Initialize VTK library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_VTK) + # this path add should be automatic, but fails at least on ca/macosx10.8 + set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${VTK_DIR}/lib) + + # vtk consist of (as of 6.1) 120 libs. This explicit inclusion brings is down to about half. + # gives about 15% compile speed increase + # + # See http://www.vtk.org/Wiki/VTK/Build_System_Migration + # + find_package(VTK COMPONENTS + vtkCommonCore + vtkRenderingCore + vtkRenderingQt + vtkInteractionStyle + vtkRenderingVolume + vtkIOGeometry vtkIOLegacy vtkIOMINC vtkIOXML + vtkIOXMLParser + vtkFiltersModeling + vtkInteractionWidgets + vtkParallelCore + vtkFiltersParallel + vtkImagingMath vtkImagingMorphological vtkImagingColor vtkImagingStatistics vtkImagingStencil + vtkRenderingOpenGL2 + vtkRenderingVolumeOpenGL2 + NO_MODULE) + + +# find_package(VTK REQUIRED) # import all libs - try this for debugging lib includes + include(${VTK_USE_FILE}) +endmacro() + +############################################################################### +# Initialize ITK library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_ITK ) + # we use only a small part of ITK. Adding only a few libs reduces cmd-line- + # length problems on Win, and reduces built time: + find_package(ITK COMPONENTS + ITKCommon ITKIOVTK ITKVTK ITKIOImageBase ITKMathematicalMorphology + ITKSmoothing ITKRegionGrowing ITKBinaryMathematicalMorphology + ITKRegistrationCommon ITKQuadEdgeMesh ITKIOMesh ITKQuadEdgeMeshFiltering + ITKMetaIO ITKIOMeta + ) + include(${ITK_USE_FILE}) + #find_package(ITK REQUIRED) # import all libs - try this for debugging lib includes +endmacro() + +############################################################################### +# Initialize OpenIGTLink library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_OpenIGTLink) + find_package(OpenIGTLink REQUIRED) + include(${OpenIGTLink_USE_FILE}) +endmacro() + +############################################################################### +# Initialize OpenIGTLinkIO library +# Find the package. +############################################################################### +macro(cx_initialize_OpenIGTLinkIO) + find_package(OpenIGTLinkIO REQUIRED) +endmacro() + +############################################################################### +# Initialize IGSTK library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_IGSTK) + find_package(IGSTK REQUIRED) + include(${IGSTK_USE_FILE}) +endmacro() + +############################################################################### +# Initialize CTK library +# Find the package and run the include USE file. +############################################################################### +macro(cx_initialize_CTK) + find_package(CTK REQUIRED) + include(${CTK_USE_FILE}) + +# override internal settings from CTK - otherwise the plugins will appear within ctk-named folders. + set(CTK_INSTALL_PLUGIN_DIR "${CX_INSTALL_BINARY_DIR}") + set(CTK_INSTALL_PLUGIN_INCLUDE_DIR "${CX_INSTALL_ROOT_DIR}/include/plugins") + +endmacro() + +############################################################################### +# Initialize Code coverage +# +# Add option SSC_USE_GCOV and generate variable SSC_GCOV_LIBRARY containing +# lib to link. +############################################################################### +macro(cx_initialize_coverage) + # code coverage + option(SSC_USE_GCOV "add gcov to enable coverage testing" OFF) + if(SSC_USE_GCOV) + message(STATUS "Building SSC with gcov code coverage support.") + set(SSC_GCOV_LIBRARY ) + if(WIN32) + message(ERROR "gcov not supported for WIN32") + # needed on apple + elseif(APPLE) + set( SSC_GCOV_LIBRARY ${SSC_GCOV_LIBRARY} profile_rt ) + # needed on linux + else(WIN32) + set( SSC_GCOV_LIBRARY ${SSC_GCOV_LIBRARY} gcov) + endif(WIN32) + + add_definitions(--coverage) + endif() +endmacro() + + +############################################################################### +# Initialize eigen library +# Find the package and include folders +############################################################################### +macro(cx_initialize_Eigen) + find_package(Eigen REQUIRED) + include_directories(${EIGEN_INCLUDE_DIR}) +endmacro() + + +############################################################################### +# Initialize flann library +# Find the package and include folders +############################################################################### +macro(cx_initialize_Flann) + find_package(Flann REQUIRED) + include_directories(${FLANN_INCLUDE_DIR}) +endmacro() diff --git a/CMake/cxInstallCustusX.cmake b/CMake/cxInstallCustusX.cmake new file mode 100644 index 0000000..c2759ae --- /dev/null +++ b/CMake/cxInstallCustusX.cmake @@ -0,0 +1,115 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + +############################################################################### +# +# Installation script. +# Run this after all other actions. Requires that the bundle has been created. +# +############################################################################### + + +include(cxInstallUtilities) + +if(CX_APPLE) +# find_package(XCTest) +# message(STATUS "xctest libs: " ${XCTest_LIBRARIES}) +# message(STATUS "CMAKE_SYSTEM_FRAMEWORK_PATH: " ${CMAKE_SYSTEM_FRAMEWORK_PATH}) + set(CX_MACOSX_DEVELOPER_FRAMEWORK_PATH "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks") +# message(STATUS "CMAKE_SYSTEM_FRAMEWORK_PATH: " $ENV{DEVELOPER_FRAMEWORKS_DIR}) + +endif() + +cx_install_apply_customizable_properties() +cx_install_configuration_files() + +cx_install_windows_runtime_libs(${CX_INSTALL_ROOT_DIR}/bin) + +#-------------------------------------------------------------------------------- +# Bundle utilities +#-------------------------------------------------------------------------------- +set(CX_MAIN_EXECUTABLE "${CX_INSTALL_BINARY_DIR}/${CX_BUNDLE_NAME}") +if(CX_WINDOWS) + set( CX_MAIN_EXECUTABLE "${CX_MAIN_EXECUTABLE}.exe") +endif() + +cx_install_add_library_dirs( + ${CX_MACOSX_DEVELOPER_FRAMEWORK_PATH} + ${XCTest_LIBRARIES} + ${ULTERIUS_BIN_DIR} + ${QT_LIBRARY_DIRS} #remove? + ${QT_BINARY_DIR} #remove? + ${GEStreamer_LIBRARY_DIRS} +# ${OpenCV_LIB_DIR} # This is empty for OpenCV 3.2 + ${OpenCV_DIR}/bin + ${OpenCV_DIR}/lib + ${OPENCL_LIBRARY_DIRS} + ${IGSTK_DIR}/bin + ${IGSTK_DIR}/lib + ${OpenIGTLink_LIBRARY_DIRS} + ${OpenIGTLinkIO_DIR}/lib + ${OpenIGTLinkIO_DIR}/bin + ${VTK_DIR}/lib + ${VTK_DIR}/bin + ${CTK_DIR}/CTK-build/bin + ${CTK_DIR}/DCMTK-build/bin + ${CTK_DCMTK_DIR}/lib + ${CTK_DCMTK_DIR}/bin + ${ITK_DIR}/lib + ${ITK_DIR}/bin + ${FAST_LIBRARY_DIRS} + ${FAST_DIR}/lib + ${FAST_DIR}/bin + ${OpenCLUtilityLibrary_LIBRARY_DIRS} + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} + ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/plugins +) + +#message(STATUS "QT_LIB: " ${QT_LIBRARY_DIRS}) - empty +#message(STATUS "QT_BIN: " ${QT_BINARY_DIR}) - empty + +if(CX_WINDOWS) + find_qt_bin_dir(QT_BIN_DIR) + find_qt_plugin_dir(QT_PLUGINS_DIR) + set(RUNTIME_ENVIRONMENT + ${CX_ALL_LIBRARY_DIRS} + ${QT_BIN_DIR} + ${QT_PLUGINS_DIR} + ) + + file(TO_NATIVE_PATH "${RUNTIME_ENVIRONMENT}" RUNTIME_ENVIRONMENT) + file(WRITE + "${CustusX_BINARY_DIR}/bin/set_run_environment.bat" + "@echo off +rem This file is automatically generated by the CustusXs CMake files. +echo Setting up a runtime environment for executables in the CustusX project. +set OLD_PATH=%PATH% +set PATH=%PATH%;${RUNTIME_ENVIRONMENT} +call %* +set PATH=%OLD_PATH% + " + ) +endif(CX_WINDOWS) + +cx_install_all_stored_targets(${CX_INSTALL_BINARY_DIR}) + +cx_fixup_and_add_qtplugins_to_bundle( + "${CX_MAIN_EXECUTABLE}" + "${CX_INSTALL_BINARY_DIR}" + "${CX_ALL_LIBRARY_DIRS}" +) + +include(CPack) + +#hiding packages created by ctk: we install the plugins ourselves +cpack_add_component(Development HIDDEN DISABLED) +cpack_add_component(RuntimePlugins HIDDEN DISABLED) + diff --git a/CMake/cxInstallUtilities.cmake b/CMake/cxInstallUtilities.cmake new file mode 100644 index 0000000..d7e0619 --- /dev/null +++ b/CMake/cxInstallUtilities.cmake @@ -0,0 +1,704 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + +# Utitily variable for setting permissions with install(FILE) or install(DIRECTORY) +set(CX_FULL_PERMISSIONS + OWNER_READ OWNER_EXECUTE OWNER_WRITE + GROUP_READ GROUP_EXECUTE GROUP_WRITE + WORLD_READ WORLD_EXECUTE WORLD_WRITE) + +# Utitily variable for setting permissions with install(FILE) or install(DIRECTORY) +set(CX_READ_PERMISSIONS + OWNER_READ GROUP_READ WORLD_READ) + +include( cxUtilities ) + +############################################################################### +# +# Define which generators to use, i.e what kind of installers to create +# +############################################################################### +macro(cx_install_set_generators) + + if(APPLE) + # keep only packagemaker +# option (CPACK_BINARY_STGZ "Enable to build STGZ packages" OFF) +# option (CPACK_BINARY_TGZ "Enable to build TGZ packages" OFF) +# option (CPACK_SOURCE_TBZ2 "Enable to build TBZ2 source packages" OFF) +# option (CPACK_SOURCE_TGZ "Enable to build TGZ source packages" OFF) +# set(CPACK_GENERATOR "PackageMaker") +# set(CPACK_GENERATOR "Bundle") + set(CPACK_GENERATOR "DragNDrop") + endif(APPLE) + + if(CX_LINUX) + set(CPACK_GENERATOR "TGZ") + endif(CX_LINUX) + + if(CX_WINDOWS) + # looks like NSIS is the default + endif (CX_WINDOWS) + +endmacro() + + +############################################################################### +# +# Initialize a few properties to be used during package generation. +# +# These properties can be overriden anywhere in the system, and will +# be converted to normal variable prior to package generation. +# +# Matched by cx_install_apply_customizable_properties() +# +############################################################################### +macro(cx_install_initialize_customizable_properties) + + cx_install_set_generator_filename() + + set(CX_LICENSE_FILE "${CustusX_SOURCE_DIR}/License.txt") + set_property(GLOBAL PROPERTY CX_LICENSE_FILE "${CX_LICENSE_FILE}") + + set_property(GLOBAL PROPERTY CPACK_PACKAGE_NAME "${CX_SYSTEM_BASE_NAME}") + set_property(GLOBAL PROPERTY CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/source/gui/icons/CustusX/CustusX.png") + set_property(GLOBAL PROPERTY CPACK_PACKAGE_VENDOR "SINTEF Medical Technology") + set_property(GLOBAL PROPERTY CPACK_RESOURCE_FILE_WELCOME "${PROJECT_SOURCE_DIR}/install/install_text/install_welcome.txt") + set_property(GLOBAL PROPERTY CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/install/install_text/install_readme.rtf") + set_property(GLOBAL PROPERTY CPACK_RESOURCE_FILE_LICENSE "${CX_LICENSE_FILE}") + + if(CX_WINDOWS) + set_property(GLOBAL PROPERTY CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/source/gui/icons/CustusX\\\\CustusX.ico") + set_property(GLOBAL PROPERTY CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/source/gui/icons/CustusX\\\\CustusX.png") + endif (CX_WINDOWS) +endmacro() + +############################################################################### +# +# Initialize a few properties to be used during package generation. +# +# These properties can be overriden anywhere in the system, and will +# be converted to normal variable prior to package generation. +# +############################################################################### +macro(cx_install_apply_customizable_properties) + + get_property(CPACK_PACKAGE_NAME GLOBAL PROPERTY CPACK_PACKAGE_NAME) + get_property(CPACK_PACKAGE_ICON GLOBAL PROPERTY CPACK_PACKAGE_ICON) + get_property(CPACK_PACKAGE_VENDOR GLOBAL PROPERTY CPACK_PACKAGE_VENDOR) + get_property(CPACK_RESOURCE_FILE_WELCOME GLOBAL PROPERTY CPACK_RESOURCE_FILE_WELCOME) + get_property(CPACK_RESOURCE_FILE_README GLOBAL PROPERTY CPACK_RESOURCE_FILE_README) + get_property(CPACK_RESOURCE_FILE_LICENSE GLOBAL PROPERTY CPACK_RESOURCE_FILE_LICENSE) + + if(CX_WINDOWS) + get_property(CPACK_NSIS_MUI_ICON GLOBAL PROPERTY CPACK_NSIS_MUI_ICON) + get_property(CPACK_PACKAGE_ICON GLOBAL PROPERTY CPACK_PACKAGE_ICON) + + set(CPACK_NSIS_INSTALLED_ICON_NAME "bin/${CX_SYSTEM_DEFAULT_APPLICATION}.exe") + set(CPACK_NSIS_MENU_LINKS "doc/Windows_Install_ReadMe.rtf" "README") + + set(CPACK_PACKAGE_EXECUTABLES + "${CX_SYSTEM_DEFAULT_APPLICATION}" "${CX_SYSTEM_DEFAULT_APPLICATION}" + "OpenIGTLinkServer" "OpenIGTLinkServer" + ) + + endif (CX_WINDOWS) +endmacro() + +############################################################################### +# +# Make sure that binaries can use paths relative to itself when looking up +# libraries. This enables packaging of libs and exes without depending on +# system locations. +# +############################################################################### +macro(cx_install_set_relative_path) + if(CX_LINUX) + # Enable relative paths in Linux: + # http://www.cmake.org/Wiki/CMake_RPATH_handling + # http://www.cmake.org/pipermail/cmake/2008-January/019329.html + # Mac handles this differently + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:\\\$ORIGIN/") + endif(CX_LINUX) + if(CX_APPLE) + # Add support for Frameworks installed into the bundle: + # http://cmake.org/Wiki/CMake_RPATH_handling + SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:@executable_path/../Frameworks/") + endif(CX_APPLE) + +endmacro() + + +############################################################################### +# +# Define variable CPACK_PACKAGE_FILE_NAME which sets the name of the installer file. +# +############################################################################### +macro(cx_install_set_generator_filename) + set(CPACK_PACKAGE_FILE_NAME "${CX_SYSTEM_BASE_NAME}_${${PROJECT_NAME}_VERSION_STRING}") + # append build type to name if not Release: + if(NOT ${CMAKE_BUILD_TYPE} STREQUAL "Release") + set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}_${CMAKE_BUILD_TYPE}) + endif() + # append system info if linux: + if(CX_LINUX) + set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME}_${CMAKE_SYSTEM}) + endif(CX_LINUX) +endmacro() + +############################################################################### +# +# Set version info in CPACK +# +############################################################################### +macro(cx_install_set_version_info) + set(CPACK_PACKAGE_VERSION ${${PROJECT_NAME}_VERSION_STRING}) + set(CPACK_PACKAGE_VERSION_MAJOR "${${PROJECT_NAME}_VERSION_MAJOR}") + set(CPACK_PACKAGE_VERSION_MINOR "${${PROJECT_NAME}_VERSION_MINOR}") + set(CPACK_PACKAGE_VERSION_PATCH "${${PROJECT_NAME}_VERSION_PATCH}") +endmacro() + +############################################################################### +# +# Setup a folder structure for the installed system. +# +# Structure on linux: +# +# bundle/bin/bundle +# binary* +# lib*.so +# qt.conf +# liborg_plugin*.so +# bundle/doc/something.txt +# bundle/config/... +# +# Structure on mac: +# +# bundle/bundle.app/Contents/MacOS/bundle +# binary* +# lib*.so +# liborg_plugin*.so +# bundle/bundle.app/Contents/Resources/qt.conf +# bundle/bundle.app/doc/something.txt +# bundle/bundle.app/config/... +# +# Structure on windows: +# +# bundle/bin/*.exe +# *.dll +# plugins/ +# bundle/config/... +# bundle/doc/... +# bundle/documentation/... +# bundle/include/... +# +# +# Creates the following variables: +# CX_BUNDLE_NAME Name used to identify bundle. +# CX_INSTALL_ROOT_DIR Base folder for installation, relative to CMAKE_INSTALL_PREFIX +# All files are installed into this location. +# CX_INSTALL_BINARY_DIR Location of binaries +# CX_INSTALL_CONFIG_DIR Location of config stuff... (qt.conf fex) +# CX_INSTALL_PLUGIN_DIR Location of runtime plugins +# +############################################################################### +macro(cx_install_set_folder_structure) + + cx_assert_variable_exists(CX_SYSTEM_DEFAULT_APPLICATION) + cx_assert_variable_exists(CX_SYSTEM_BASE_NAME) + + set(CX_BUNDLE_NAME ${CX_SYSTEM_DEFAULT_APPLICATION}) + + set(CX_INSTALL_ROOT_DIR ".") + set(CPACK_PACKAGING_INSTALL_PREFIX "/") + if(APPLE) + +# set(CPACK_BUNDLE_NAME ${CX_BUNDLE_NAME}) +# set(CPACK_BUNDLE_PLIST "Info.plist") +# set(CPACK_BUNDLE_ICON "${PROJECT_SOURCE_DIR}/source/gui/icons/CustusX/CustusX.ico") +# set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY TRUE) + +# set(CPACK_PACKAGING_INSTALL_PREFIX "/") + #set(CX_INSTALL_ROOT_DIR "Applications/${CX_SYSTEM_BASE_NAME}") - NA when creating dragndrop + endif(APPLE) + if(CX_LINUX) +# set(CPACK_PACKAGING_INSTALL_PREFIX "/") + set(CX_INSTALL_ROOT_DIR ${CX_SYSTEM_BASE_NAME}) + endif(CX_LINUX) + if(CX_WINDOWS) +# set(CPACK_PACKAGING_INSTALL_PREFIX "/") +# set(CX_INSTALL_ROOT_DIR ".") + endif(CX_WINDOWS) + + + set(CX_INSTALL_BINARY_DIR "${CX_INSTALL_ROOT_DIR}/bin") + set(CX_INSTALL_CONFIG_DIR "${CX_INSTALL_ROOT_DIR}/config") + set(CX_INSTALL_DOC_DIR "${CX_INSTALL_ROOT_DIR}/doc") + set(CX_INSTALL_PLUGIN_DIR "${CX_INSTALL_BINARY_DIR}") + + if(APPLE) + set(CX_INSTALL_BUNDLE_CONTENTS_DIR "${CX_INSTALL_ROOT_DIR}/${CX_BUNDLE_NAME}.app/Contents") + set(CX_INSTALL_BINARY_DIR "${CX_INSTALL_BUNDLE_CONTENTS_DIR}/MacOS") + set(CX_INSTALL_CONFIG_DIR "${CX_INSTALL_BUNDLE_CONTENTS_DIR}/config") + set(CX_INSTALL_DOC_DIR "${CX_INSTALL_BUNDLE_CONTENTS_DIR}/doc") + set(CX_INSTALL_PLUGIN_DIR "${CX_INSTALL_BINARY_DIR}") + endif(APPLE) + + set(CX_CONFIG_ROOT_RELATIVE_INSTALLED ../config) + set(CX_DOC_ROOT_RELATIVE_INSTALLED ../doc) + + # Turn off installation of CTK plugins. We do this ourselves using fixup_bundle + set(CX_CTK_PLUGIN_NO_INSTALL NO_INSTALL) + + +message("-----------------CX_INSTALL_ROOT_DIR: " ${CX_INSTALL_ROOT_DIR}) +message("-----------------CX_INSTALL_BINARY_DIR: " ${CX_INSTALL_BINARY_DIR}) +message("-----------------CX_INSTALL_CONFIG_DIR: " ${CX_INSTALL_CONFIG_DIR}) +message("-----------------CX_BUNDLE_NAME: " ${CX_BUNDLE_NAME}) + +#file(TO_CMAKE_PATH ${CX_INSTALL_BINARY_DIR} CX_INSTALL_BINARY_DIR) + +#message("-----------------CX_INSTALL_BINARY_DIR: " ${CX_INSTALL_ROOT_DIR}) +#message("-----------------CX_INSTALL_BINARY_DIR: " ${CX_INSTALL_BINARY_DIR}) +#message("-----------------CX_BUNDLE_NAME: " ${CX_BUNDLE_NAME}) + +# set(CX_INSTALL_PLUGIN_DIR "${CX_INSTALL_BINARY_DIR}/plugins") - did not work: get into trouble with relative paths and fixup_bundle + +endmacro() + +############################################################################### +# +# Needed to make sure all users get write permissions on the folder CustusX is installed in +# +# Note: might not be necessary any more as settings have been moved to ~/cx_settings folder. +# +############################################################################### +#macro(cx_install_root_directory_full_permissions) +# set(TEMP_INSTALL_ROOT_DIR_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/tmp/${CX_SYSTEM_BASE_NAME}) +# file(MAKE_DIRECTORY ${TEMP_INSTALL_ROOT_DIR_SOURCE}) +# install(DIRECTORY ${TEMP_INSTALL_ROOT_DIR_SOURCE} +# DESTINATION ${CX_INSTALL_ROOT_DIR}/.. +# DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS} +# ) +#endmacro() + + +############################################################################### +# +# Set variables used throughout the build. +# Call first, in root dir! +# +############################################################################### +macro(cx_initialize_custusx_install) + +# cx_install_root_directory_full_permissions() + + set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "Core") + + cx_install_set_version_info() + + cx_install_set_relative_path() + + cx_install_set_generators() + cx_install_initialize_customizable_properties() + + cx_install_set_folder_structure() + + # used as a global variable: clear at start of run + unset(CX_APPLE_TARGETS_TO_COPY CACHE) + unset(CX_ALL_LIBRARY_DIRS CACHE) + +endmacro() + +############################################################################### +# +# Add library directories that should be parsed for libs during the install/fixup_bundle step. +# +############################################################################### +macro(cx_install_add_library_dirs) +# message(STATUS "adding: "${ARGV}) + set(CX_ALL_LIBRARY_DIRS + ${CX_ALL_LIBRARY_DIRS} + ${ARGV} + CACHE INTERNAL "List of dirs to look for libraries to use in fixup_bundle") +endmacro() + +############################################################################### +# +# Install one target to the default location. +# +# If the platform is APPLE, the target is stored in a variable for later +# copying into the bundle. This copy should be done by the bundle code. +# Why: fixup_bundle doesnt work properly on CX_APPLE with the normal install(TARGET...), +# while the opposite is true on CX_LINUX. +# +############################################################################### +function(cx_install_target TARGET_ID) + cx_assert_variable_exists(CX_INSTALL_ROOT_DIR) + + if(CX_APPLE) + get_property(is_bundle TARGET ${TARGET_ID} PROPERTY MACOSX_BUNDLE SET) + if(${is_bundle}) + set( NEW_ENTRY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_ID}.app/Contents/MacOS/${TARGET_ID}" ) + else() + set( NEW_ENTRY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TARGET_ID}" ) + endif() + + list(FIND CX_APPLE_TARGETS_TO_COPY ${NEW_ENTRY} PREEXISTING) + if( ${PREEXISTING} EQUAL -1 ) + set(CX_APPLE_TARGETS_TO_COPY + ${NEW_ENTRY} ${CX_APPLE_TARGETS_TO_COPY} + CACHE INTERNAL + "List of all project targets that should be copied into the bundle (for use with fixup_bundle)") + message(STATUS "Storing target for later file copy: " ${NEW_ENTRY}) + else() + #message(STATUS "########### Already present: " ${PREEXISTING}) + endif() + #message(STATUS "########### List content: " ${CX_APPLE_TARGETS_TO_COPY}) + else() + install(TARGETS ${TARGET_ID} + DESTINATION ${CX_INSTALL_BINARY_DIR}) + endif() + +endfunction() + +############################################################################### +# +# Install all the targets in CX_APPLE_TARGETS_TO_COPY to the BUNDLE_BINARY_DIR. +# See cx_install_target() for more. +# +############################################################################### +function(cx_install_all_stored_targets BUNDLE_BINARY_DIR) + if(CX_APPLE) + #message(STATUS "############################## All exes: " ${CX_APPLE_TARGETS_TO_COPY}) + foreach(EXE ${CX_APPLE_TARGETS_TO_COPY} ) + message(STATUS "Install target by file copy: " ${EXE}) + if(IS_DIRECTORY ${EXE}) + install(DIRECTORY + ${EXE} + DESTINATION ${CX_INSTALL_BINARY_DIR} + FILE_PERMISSIONS ${CX_FULL_PERMISSIONS} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS}) + else() + install(FILES + ${EXE} + DESTINATION ${CX_INSTALL_BINARY_DIR} + PERMISSIONS ${CX_FULL_PERMISSIONS}) + endif() + endforeach() + else() + # NA: cx_install_target() does all the work. + endif() +endfunction() + + +############################################################################### +# +# Install all configuration files required by CustusX +# +############################################################################### +function(cx_install_configuration_files) + +set(CONFIG_EXCLUDE_PATTERN "") +if (NOT CX_LINUX) + set(CONFIG_EXCLUDE_PATTERN "elastix_linux64_v4.6/*") +endif () +if (NOT CX_APPLE) + set(CONFIG_EXCLUDE_PATTERN "elastix_macosx64_v4.6/*") +endif () + + install(DIRECTORY ${CustusX_SOURCE_DIR}/config/ + DESTINATION ${CX_INSTALL_CONFIG_DIR}/ + FILE_PERMISSIONS ${CX_FULL_PERMISSIONS} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS} + PATTERN ${CONFIG_EXCLUDE_PATTERN} EXCLUDE) + + if(CX_USE_OPENCL_UTILITY) + install(FILES + ${OpenCLUtilityLibrary_KERNELS_DIR}/HistogramPyramids.cl + ${OpenCLUtilityLibrary_KERNELS_DIR}/HistogramPyramids.clh + DESTINATION ${CX_INSTALL_CONFIG_DIR}/tsf/) + endif() +endfunction() + +############################################################################### +# +# Installing required run time libs for Windows, msv*.dll +# +############################################################################### +function(cx_install_windows_runtime_libs DESTINATION_FOLDER) + if(CX_WINDOWS) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) + #OpenMP is required by FAST + set(CMAKE_INSTALL_OPENMP_LIBRARIES TRUE) + include (InstallRequiredSystemLibraries) + if(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS) + install(FILES ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS} + DESTINATION ${DESTINATION_FOLDER} + PERMISSIONS ${CX_FULL_PERMISSIONS}) + endif(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS) + endif(CX_WINDOWS) +endfunction() + +############################################################################### +# wrapper around the fixup_bundle function. +# - will add qtplugins to bundle automatically. +# +# +# Input Variables: +# APPS_LOCAL : Name of executable to base bundle on, with full path +# relative to CMAKE_INSTALL_PREFIX +# INSTALL_BINARY_DIR : where to put binaries +# INSTALL_CONFIG_DIR : where to put configuration +# INSTALL_LIBRARIES_PATTERN_LOCAL : List of names of additional libs/plugins to add, +# path relative to CMAKE_INSTALL_PREFIX +# DIRS_LOCAL : List of all paths where libraries can be found. +# This is pretty much the entire application source. +# +# See +# http://www.itk.org/Wiki/BundleUtilitiesExample +# for example on how to use bundle utilities. +# +# More info on Mac+Qt, plugins, and pitfalls related to this: +# http://lists.trolltech.com/qt-interest/2008-09/thread00258-0.html +# http://doc.qt.nokia.com/4.7-snapshot/qt-conf.html +# +# How to debug install: cpack --debug --verbose +# ( from http://www.cmake.org/Wiki/CMake:Packaging_With_CPack) +# +############################################################################### +function(cx_fixup_and_add_qtplugins_to_bundle APPS_LOCAL INSTALL_BINARY_DIR DIRS_LOCAL) + find_qt_plugin_dir(QT_PLUGINS_DIR) + find_qt_libs_dir(QT_LIBS_DIR) + find_qt_qml_dir(QT_QML_DIR) + cx_assert_variable_exists(QT_PLUGINS_DIR) + cx_assert_variable_exists(QT_LIBS_DIR) + cx_assert_variable_exists(QT_QML_DIR) + cx_assert_variable_exists(CX_INSTALL_ROOT_DIR) + cx_assert_variable_exists(INSTALL_BINARY_DIR) + cx_assert_variable_exists(CX_INSTALL_PLUGIN_DIR) + + #Add Qt libraries (frameworks for Apple) to fixup_bundle search path + set(DIRS_LOCAL ${DIRS_LOCAL} ${QT_LIBS_DIR}) + + # Install plugins in the default location as given by http://qt-project.org/doc/qt-4.8/qt-conf.html + if(CX_LINUX) + SET(INSTALL_QTPLUGIN_DIR "${INSTALL_BINARY_DIR}/plugins") + SET(INSTALL_QTCONF_DIR "${INSTALL_BINARY_DIR}") + + # Install .so and versioned .so.x.y + file(GLOB INSTALL_FILE_LIST + LIST_DIRECTORIES false + "${QT_LIBS_DIR}/*xcb*" + "${QT_LIBS_DIR}/libQt*" + "${QT_LIBS_DIR}/*-qt5*" + # These libraries are needed for the Linux installation: + "${QT_LIBS_DIR}/libicui18n.*" + "${QT_LIBS_DIR}/libicuuc.*" + "${QT_LIBS_DIR}/libicudata.*" + ) + + file(GLOB REMOVE_FILE_LIST + LIST_DIRECTORIES false + "${QT_LIBS_DIR}/*.a" + ) + + list(REMOVE_ITEM INSTALL_FILE_LIST ${REMOVE_FILE_LIST} ) + + install(FILES + ${INSTALL_FILE_LIST} + DESTINATION ${INSTALL_BINARY_DIR}/) + + endif() + if(CX_WINDOWS) + SET(INSTALL_QTPLUGIN_DIR "${INSTALL_BINARY_DIR}/plugins") + SET(INSTALL_QTCONF_DIR "${INSTALL_BINARY_DIR}") + endif() + IF(APPLE) + SET(INSTALL_QTPLUGIN_DIR "${CX_INSTALL_ROOT_DIR}/${CX_BUNDLE_NAME}.app/Contents/plugins") + SET(INSTALL_QTCONF_DIR "${CX_INSTALL_ROOT_DIR}/${CX_BUNDLE_NAME}.app/Contents/Resources") + ENDIF(APPLE) + + # Install needed Qt plugins by copying directories from the qt installation + # Only install one sql driver (libqsqlite), as the other ones need additional packages installed to work + install(DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${INSTALL_QTPLUGIN_DIR} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS} + PATTERN "*sqldrivers*" EXCLUDE + ) + + install(DIRECTORY "${QT_PLUGINS_DIR}/" + DESTINATION ${INSTALL_QTPLUGIN_DIR} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS} + FILES_MATCHING PATTERN "*qsqlite*" + ) + +# Install Qt qml by copying all files in the qml directory +SET(INSTALL_QTQML_DIR "${INSTALL_BINARY_DIR}") +install(DIRECTORY "${QT_QML_DIR}/" + DESTINATION ${INSTALL_QTQML_DIR} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS} +) + + message(STATUS "QT_PLUGINS_DIR: " ${QT_PLUGINS_DIR}) + message(STATUS "QT_LIBS_DIR: " ${QT_LIBS_DIR}) + message(STATUS "QT_QML_DIR: " ${QT_QML_DIR}) + + # install runtime plugins + set(CX_PLUGIN_DIR "/plugins") + if(CX_WINDOWS) + set(CX_PLUGIN_DIR "") + endif(CX_WINDOWS) + install(DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}${CX_PLUGIN_DIR}/" # trailing slash copies contents, not plugin folder + DESTINATION ${CX_INSTALL_PLUGIN_DIR} + DIRECTORY_PERMISSIONS ${CX_FULL_PERMISSIONS}) + + # explicitly tell which executables that should be fixed up. + # why: fixup_bundle seems to fail to assemble exes in some cases. + foreach(TARGET ${CX_APPLE_TARGETS_TO_COPY}) + get_filename_component(TARGET_FILENAME ${TARGET} NAME) + set(TARGET_FILEPATH ${INSTALL_BINARY_DIR}/${TARGET_FILENAME}) + set(LIB_PATTERN_CODE " + ${LIB_PATTERN_CODE} + set\(TEMP \"\${CMAKE_INSTALL_PREFIX}/${TARGET_FILEPATH}\"\) + set(PLUGINS \${PLUGINS} \${TEMP}) + ") + endforeach() + + # collect all installations here. They will be used by fixup_bundle to collect dependencies. + # this is a sum of the input pattern (if any) and the qtplugins + set(INSTALL_LIBRARIES_PATTERN_LOCAL + ${INSTALL_LIBRARIES_PATTERN_LOCAL} + ${CX_INSTALL_PLUGIN_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX} + ${INSTALL_QTPLUGIN_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX} + ${INSTALL_QTQML_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX} + ) + + # install a qt.conf file + # this inserts some cmake code into the install script to write the file + # This is a requirement to get qt plugins in a relative path working! + install(CODE " + file(WRITE \"\${CMAKE_INSTALL_PREFIX}/${INSTALL_QTCONF_DIR}/qt.conf\" \"\") + ") + + + # create a code snippet : Search for the files in pattern, + # add files to PLUGINS + foreach(PATTERN ${INSTALL_LIBRARIES_PATTERN_LOCAL} ) + message(STATUS "PATTERN=" ${PATTERN}) + + set(LIB_PATTERN_CODE + "${LIB_PATTERN_CODE} + set(TEMP) + file\(GLOB_RECURSE TEMP \"\${CMAKE_INSTALL_PREFIX}/${PATTERN}\"\) + set(PLUGINS \${PLUGINS} \${TEMP}) + " + ) + endforeach() + + + if(CX_WINDOWS) + #On Windows verify_app fails if path contains a . + set(TEMP_APPS_LOCAL "") + foreach(APP ${APPS_LOCAL}) + string(REPLACE "./" "/" APP ${APP}) + list(APPEND TEMP_APPS_LOCAL ${APP}) + endforeach() + set(APPS_LOCAL ${TEMP_APPS_LOCAL}) + endif(CX_WINDOWS) + + # fixup_bundle resets link paths for all targets within the bundle. + # this code appears in cmake_install.cmake in the CURRENT_BINARY_DIR. Check there when changing. + install(CODE " + # Begin inserted fixup_bundle snippet + ${LIB_PATTERN_CODE} + set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + ${PROJECT_SOURCE_DIR}/CMake) +function(gp_resolved_file_type_override resolved_file type_var) + if(resolved_file MATCHES \"^/usr/lib/libGLEW\") + message(\"resolving \${resolved_file} as other\") + set(\${type_var} other PARENT_SCOPE) + endif() +endfunction() + #include(BundleUtilities) + include(cxBundleUtilities) + message(STATUS \"CMAKE_INSTALL_PREFIX: \${CMAKE_INSTALL_PREFIX}\") + message(STATUS \"APPS_LOCAL: ${APPS_LOCAL}\") + message(STATUS \"PLUGINS: \${PLUGINS}\") + file(TO_CMAKE_PATH \"\${CMAKE_INSTALL_PREFIX}/${APPS_LOCAL}\" _APP_PATH) + message(STATUS \"_APP_PATH: \${_APP_PATH}\") + #fixup_bundle(\"\${_APP_PATH}\" \"\${PLUGINS}\" \"${DIRS_LOCAL}\") + cx_fixup_bundle(\"\${_APP_PATH}\" \"\${PLUGINS}\" \"${DIRS_LOCAL}\") + # End inserted fixup_bundle snippet + ") +endfunction() + +############################################################################### +# Create a text string describing essential build information +# for CustusX, such as library versions, built modules etc. +# +# The result is provided as the variable CX_CONFIGURATION_DESCRIPTION +# +############################################################################### +function(cxCreateConfigurationDescription) + +cx_initialize_cppunit() +cx_initialize_opencv() +cx_initialize_OpenIGTLink() +cx_initialize_IGSTK() +find_package(Qt5Core) + + +set(PLUGINS_DESCRIPTION " Plugins:") +getListOfVarsStartingWith("CX_PLUGIN_" matchedVars) +foreach (_var IN LISTS matchedVars) + string(REPLACE "CX_PLUGIN_" "" PLUGIN_NAME ${_var}) + # skip the ":" between name and value in because this spams console with one issue per line in QtCreator... + set(PLUGINS_DESCRIPTION "${PLUGINS_DESCRIPTION}\n ${PLUGIN_NAME} ${${_var}}") +endforeach() + + cx_assert_variable_exists(CX_SYSTEM_BASE_NAME) + cx_assert_variable_exists(CustusX_VERSION_STRING) + cx_assert_variable_exists(SSC_USE_GCOV) + cx_assert_variable_exists(CX_USE_OPENCL_UTILITY) + set(CONFIGURATION_TEXT +" +Configuration for ${CX_SYSTEM_BASE_NAME} ${CustusX_VERSION_STRING} + + Build Settings: + System Base Name: ${CX_SYSTEM_BASE_NAME} + Built on system: ${CMAKE_SYSTEM} ${CMAKE_ARCHITECTURE} ${CMAKE_SYSTEM_PROCESSOR} + Build type: ${CMAKE_BUILD_TYPE} + Shared Libraries: ${BUILD_SHARED_LIBRARIES} + Coverage: ${SSC_USE_GCOV} + Dev docs: ${BUILD_DOCUMENTATION} + User docs: ${CX_BUILD_USER_DOCUMENTATION} + + Libraries: + Qt Version ${Qt5Core_VERSION_STRING} + VTK Version: ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}.${VTK_BUILD_VERSION} + ITK Version: ${ITK_VERSION} + CTK Version: ${CTK_VERSION} + OpenCV Version: ${OpenCV_VERSION} + CMake Version: ${CMAKE_VERSION} + IGSTK Version: ${IGSTK_VERSION_MAJOR}.${IGSTK_VERSION_MINOR}.${IGSTK_VERSION_PATCH} + OpenIGTLink Version: ${OpenIGTLink_VERSION_MAJOR}.${OpenIGTLink_VERSION_MINOR}.${OpenIGTLink_VERSION_PATCH} + Boost Version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION} + OpenCL Version: ${OPENCL_VERSION} + OpenGL Version: ${OPENGL_VERSION} + Eigen Version: ${EIGEN_VERSION} + + OpenCL Utility Library: ${CX_USE_OPENCL_UTILITY} + +${PLUGINS_DESCRIPTION} +") + set(CX_CONFIGURATION_DESCRIPTION ${CONFIGURATION_TEXT} PARENT_SCOPE) +endfunction() diff --git a/CMake/cxPlugins.cmake b/CMake/cxPlugins.cmake new file mode 100644 index 0000000..3d79332 --- /dev/null +++ b/CMake/cxPlugins.cmake @@ -0,0 +1,139 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + + +############################################################################### +# +# This macro is required by CTK. +# It defines plugin names internal to the project. +# +# Extract all library names starting with org_mydomain_ +# +############################################################################### +macro(GetMyTargetLibraries all_target_libraries varname) + set(re_ctkplugin "^org_custusx_[a-zA-Z0-9_]+$") + set(_tmp_list) + list(APPEND _tmp_list ${all_target_libraries}) + ctkMacroListFilter(_tmp_list re_ctkplugin OUTPUT_VARIABLE ${varname}) +endmacro() + + +############################################################################### +# +# Given a PLUGINS_LIST of plugin name:VAL pairs, +# insert the NEW_PLUGIN with NEW_PLUGIN_VALUE +# if it is not already present in the list +# +# PLUGINS_VARIABLE: variable containing : pairs +# +############################################################################### +function(cx_insert_plugin_if_not_in_list PLUGINS_LIST_VARIABLE NEW_PLUGIN_NAME NEW_PLUGIN_VALUE PLUGIN_BUILD_OPTION_PREFIX) + set(plugins_list ${${PLUGINS_LIST_VARIABLE}}) + list(FIND plugins_list ${NEW_PLUGIN_NAME}:OFF FOUND_OFF) + list(FIND plugins_list ${NEW_PLUGIN_NAME}:ON FOUND_ON) + getListOfVarsStartingWith(${PLUGIN_BUILD_OPTION_PREFIX}${NEW_PLUGIN_NAME} matchedVars) + list(LENGTH matchedVars VAR_DEFINED) + if((${FOUND_OFF} EQUAL -1) AND (${FOUND_ON} EQUAL -1)) + if(${VAR_DEFINED} EQUAL 0) + message("Found new plugin " ${NEW_PLUGIN_NAME} ", adding option " ${NEW_PLUGIN_VALUE} ".") + endif() + set(plugins_list ${plugins_list} ${NEW_PLUGIN_NAME}:${NEW_PLUGIN_VALUE}) + endif() + + set(${PLUGINS_LIST_VARIABLE} ${plugins_list} PARENT_SCOPE) +endfunction() + + +############################################################################### +# +# Given a list of plugin name:VAL pairs, look for other plugins not defined in the list. +# Undefined plugins are added with the default value of OFF. +# +# PLUGINS_VARIABLE: variable containing : pairs +# PLUGIN_BUILD_OPTION_PREFIX: prefix used by ctkMacroSetupPlugins to generate build variables +# +############################################################################### +function(cx_append_plugins_in_current_folder_not_already_defined PLUGINS_VARIABLE PLUGIN_BUILD_OPTION_PREFIX) + SUBDIRLIST(SUBDIRS ${CMAKE_CURRENT_SOURCE_DIR}) + set(plugins_list ${${PLUGINS_VARIABLE}}) + + foreach(plugin_name ${SUBDIRS}) + cx_insert_plugin_if_not_in_list(plugins_list ${plugin_name} "OFF" ${PLUGIN_BUILD_OPTION_PREFIX}) + endforeach() + + set(${PLUGINS_VARIABLE} ${plugins_list} PARENT_SCOPE) +endfunction() + + +############################################################################### +# +# Find all variables prefixed with CX_EXTERNAL_PLUGIN_, +# then add them as plugins. +# Add paths to external plugins this way, i.e plugins not defined within CustusX. +# +# Usage: +# When calling cmake from the command line, add +# -DCX_EXTERNAL_PLUGIN_= +# +# PLUGINS_VARIABLE: return variable containing : pairs, only ADD to this var +# +############################################################################### +function(cx_append_plugins_external_to_core PLUGINS_VARIABLE) + # define local copy of input + set(plugins_list ${${PLUGINS_VARIABLE}}) + + getListOfVarsStartingWith("CX_EXTERNAL_PLUGIN_" matchedVars) + foreach (_var IN LISTS matchedVars) + set(FULL_NAME ${${_var}}) + file(TO_CMAKE_PATH ${FULL_NAME} FULL_NAME) + file(RELATIVE_PATH REL_NAME ${CMAKE_CURRENT_SOURCE_DIR} ${FULL_NAME}) + string(FIND ${REL_NAME} ".." FOUND_DOTDOT) + file(TO_CMAKE_PATH ${REL_NAME} REL_NAME) #fixing the paths on windows + #message(STATUS "REL_NAME " ${REL_NAME}) + #message(STATUS " FULL_NAME " ${FULL_NAME}) + #message(STATUS " FOUND_DOTDOT " ${FOUND_DOTDOT}) + if(${FOUND_DOTDOT} EQUAL -1) + set(plugins_list ${plugins_list} "${REL_NAME}:ON") + else() + set(plugins_list ${plugins_list} "${FULL_NAME}:ON") + endif() + endforeach() + + # copy modified input back as retval + set(${PLUGINS_VARIABLE} ${plugins_list} PARENT_SCOPE) +endfunction() + + + +############################################################################### +# +# Find all previously defined plugins, add them to CX_PLUGINS +# +# PLUGINS_VARIABLE: return variable containing : pairs, only ADD to this var +# PLUGIN_BUILD_OPTION_PREFIX: prefix used by ctkMacroSetupPlugins to generate build variables +# +############################################################################### +function(cx_append_plugins_already_present PLUGINS_VARIABLE PLUGIN_BUILD_OPTION_PREFIX) + # define local copy of input + set(plugins_list ${${PLUGINS_VARIABLE}}) + + # Find all previously defined plugins, add them to CX_PLUGINS + getListOfVarsStartingWith(${PLUGIN_BUILD_OPTION_PREFIX} matchedVars) + foreach (_var IN LISTS matchedVars) + string(REPLACE ${PLUGIN_BUILD_OPTION_PREFIX} "" plugin_name ${_var}) +# is this a bug? referring CX_PLUGINS directly in here makes it a local var... + cx_insert_plugin_if_not_in_list(CX_PLUGINS ${plugin_name} "OFF" ${PLUGIN_BUILD_OPTION_PREFIX}) +# cx_insert_plugin_if_not_in_list(plugins_list ${plugin_name} "OFF" ${PLUGIN_BUILD_OPTION_PREFIX}) + endforeach() + + # copy modified input back as retval + set(${PLUGINS_VARIABLE} ${plugins_list} PARENT_SCOPE) +endfunction() diff --git a/CMake/cxTestMacros.cmake b/CMake/cxTestMacros.cmake new file mode 100644 index 0000000..78b9a4e --- /dev/null +++ b/CMake/cxTestMacros.cmake @@ -0,0 +1,70 @@ +# This file is part of SSC, +# a C++ Library supporting Image Guided Therapy Applications. +# +# Copyright (C) 2008- SINTEF Medical Technology +# Copyright (C) 2008- Sonowand AS +# +# SSC is owned by SINTEF Medical Technology and Sonowand AS, +# hereafter named the owners. Each particular piece of code +# is owned by the part that added it to the library. +# SSC source code and binaries can only be used by the owners +# and those with explicit permission from the owners. +# SSC shall not be distributed to anyone else. +# +# SSC is distributed WITHOUT ANY WARRANTY; without even +# the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. +# +# See sscLicense.txt for more information. + + +# Macro for defining a cppunit suite as both a standalone executable and +# a ctest-compatible set of tests. +# +# Controlled by +# SSC_BUILD_PURE_CPPUNIT_TESTS : build the standalone exe (dont do this if doing coverage testing) +# BUILD_TESTING : Turn off all generation +# +# Input: +# TEST_NAME : Name of resulting cppunit executable. The corresponding ctest version will have a postfix. +# CPPUNIT_MAIN : Name of the main function file of the classical cppunit project. +# SOURCE_FILES : List of all source files. Remember to ad it in hyphens when calling function ( "${SOURCE_FILES}" ) +# LIBRARIES : List of all libraries. Remember to ad it in hyphens when calling function ( "${LIBRARIES}" ) +# +macro(SSC_ADD_CTEST_CPPUNIT_TESTS TEST_NAME CPPUNIT_MAIN SOURCE_FILES LIBRARIES ) +# message("Test name:" ${TEST_NAME}) +# message("CPPUNIT_MAIN:" ${CPPUNIT_MAIN}) +# message("SOURCE_FILES:" ${SOURCE_FILES}) +# message("LIBRARIES:" ${LIBRARIES}) + + if(BUILD_TESTING) + # build the standalone cppunit executable: + if(SSC_BUILD_PURE_CPPUNIT_TESTS AND NOT SSC_USE_GCOV) + add_executable(${TEST_NAME} + ${CPPUNIT_MAIN} + ${SOURCE_FILES} + ) + target_link_libraries(${TEST_NAME} ${LIBRARIES} ${CPPUNIT_LIBRARIES}) + endif() + + # --------------- ------------------------------- + # -- CppUnit - CTest integration. --------------- + # -- Use CISST_ADD_TESTS() to convert each CppUnit test to a CTest test. + + # Initialize cisst routines + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CustusX_SOURCE_DIR}/source/resource/testUtilities/cisst_code) + include(cisstMacros) + #add_subdirectory(cisst_code) + + # link all CppUnit tests to the cisstTestsMain library + set(MERGE_CTEST_NAME ${TEST_NAME}_CppUnit_CTest) + add_executable(${MERGE_CTEST_NAME} ${SOURCE_FILES} ) + target_link_libraries(${MERGE_CTEST_NAME} cisstTestsMain cxtestUtilities ${LIBRARIES} ${CPPUNIT_LIBRARIES}) + # Generate a CTest list of tests + CISST_ADD_TESTS(${MERGE_CTEST_NAME}) + + # -- finished CppUnit - CTest integration. ------ + # ----------------------------------------------- + + endif(BUILD_TESTING) +endmacro(SSC_ADD_CTEST_CPPUNIT_TESTS) diff --git a/CMake/cxUtilities.cmake b/CMake/cxUtilities.cmake new file mode 100644 index 0000000..12fc807 --- /dev/null +++ b/CMake/cxUtilities.cmake @@ -0,0 +1,544 @@ +# ========================================================================= +# This file is part of CustusX, an Image Guided Therapy Application. +# +# Copyright (c) SINTEF Department of Medical Technology. +# All rights reserved. +# +# CustusX is released under a BSD 3-Clause license. +# +# See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +# ========================================================================= + + +############################################################################### +# Adding compiler flags to the CMAKE_CXX_FLAGS variable +# +############################################################################### +function(cx_add_defintions) + message(STATUS 'Before CMAKE_CXX_FLAGS ' ${CMAKE_CXX_FLAGS}) + message(STATUS 'CX_CMAKE_CXX_FLAGS ' ${CX_CMAKE_CXX_FLAGS}) + foreach(_ITER ${CX_CMAKE_CXX_FLAGS}) + message(STATUS ' _ITER ' ${_ITER}) + add_definitions(${_ITER}) + endforeach() + message(STATUS 'After CMAKE_CXX_FLAGS ' ${CMAKE_CXX_FLAGS}) + + get_directory_property( DirDefs DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_DEFINITIONS ) + message( STATUS "DirDefs: " ${DirDefs} ) +endfunction() + +############################################################################### +# Make file path absolute if needed. Assuming +# +## Input variables: +# INPUT_PATH : Path to file. +# +## Output variables: +# RESULT_PATH : Absolute path to file. +############################################################################### +function(cx_make_path_absolute INPUT_PATH RESULT_PATH) + if(IS_ABSOLUTE ${INPUT_PATH}) + set(ABS_SOURCE_FILE + ${INPUT_PATH} + ) + else() + set(ABS_SOURCE_FILE + ${CMAKE_CURRENT_LIST_DIR}/${INPUT_PATH} + ) + endif() + set(${RESULT_PATH} ${ABS_SOURCE_FILE} PARENT_SCOPE) +endfunction() + +############################################################################### +# Clean /./ - like structures from a path list +# +## Input variables: +# INPUT_PATH : List of paths to file. +# +## Output variables: +# RESULT_PATH : List of cleaned paths to files +############################################################################### +function(cx_clean_path INPUT_PATH RESULT_PATH) + set(_TEMP_INPUT ${INPUT_PATH}) + set(_TEMP_RETVAL "") + foreach(_ITER ${_TEMP_INPUT}) + string(REPLACE "/./" "/" _ITER ${_ITER}) + list(APPEND _TEMP_RETVAL ${_ITER}) + endforeach() + set(${RESULT_PATH} ${_TEMP_RETVAL} PARENT_SCOPE) +endfunction() + +############################################################################### +# Assert that the input variable exists. +# Use to check prerequisites in code. +############################################################################### +function(cx_assert_variable_exists _var_name) + if( NOT DEFINED ${_var_name} ) +# if( ${ARGC} EQUAL 0) + message(SEND_ERROR "ERROR: Input variable does not exist: ${_var_name}") + else() + #message(STATUS "FOUND VARIABLE [${ARGC}] [${ARGV}]") + endif() +endfunction() + +############################################################################### +# wrapper for option() with a convenience boolean setter for the value. +# +# Input arguments: +# +# NAME : Name of option. +# DESCRIPTION : Description of option +# BOOLEAN_VALUE : Value convertible to boolean that is used to set the value +# of option. No value means false. +# +############################################################################### +function( cx_define_option_from_boolean NAME DESCRIPTION) + set( BOOLEAN_VALUE False) + if( ARGC GREATER 2 ) + set( BOOLEAN_VALUE ${ARGV2}) + endif() + + if(${BOOLEAN_VALUE}) + option(${NAME} ${DESCRIPTION} ON) + else() + option(${NAME} ${DESCRIPTION} OFF) + endif() +endfunction() + +############################################################################### +# Define the following Operating System identifiers both in cmake and cpp: +# CX_WINDOWS for all windows +# CX_WIN64 for 64 bit windows +# CX_WIN32 for 32 bit windows +# CX_LINUX +# CX_APPLE +# +# Additionally, the +# __APPLE__ +# is defined for mac +############################################################################### +macro(cx_set_os_identifiers) + if(WIN32) + set(CX_WINDOWS 1) #for cmake + add_definitions(-DCX_WINDOWS) #for compiler + message( STATUS "This is a Windows build.") + add_definitions(-D__WIN32__) # -because they are needed at moc'ing time + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(CX_WIN64 1) #for cmake + add_definitions(-DCX_WIN64) #for compiler + message( STATUS "This is a 64 bit build.") + else() + set(CX_WIN32 1) #for cmake + add_definitions(-DCX_WIN32) #for compiler + message( STATUS "This is a 32 bit build.") + endif() + endif() + + if(APPLE) + add_definitions(-D__APPLE__) + add_definitions(-DCX_APPLE) + set(CX_APPLE 1) + endif(APPLE) + + # define LINUX convenience variable + if(UNIX AND NOT APPLE) + add_definitions(-DCX_LINUX) #for compiler + set(CX_LINUX 1) + endif(UNIX AND NOT APPLE) +endmacro() + +############################################################################### +# Find date for latest cmake rebuild, in ISO 8601 format +# +############################################################################### +MACRO(cx_get_today RESULT) + string(TIMESTAMP ${RESULT} "%Y-%m-%d") +ENDMACRO() + + +############################################################################### +# Print a cmake list to stdout using lots of wrap. +# +# Usage: print_list_verbose(LIST_VAR "Header text") +############################################################################### +function(cx_print_list_verbose LIST_VAR HEADER_TEXT) + message(STATUS "-----------------------------------------") + message(STATUS "---- " ${HEADER_TEXT} " ----") + message(STATUS "{" ) + foreach(VAR ${${LIST_VAR}}) + message(STATUS " " ${VAR}) + endforeach() + message(STATUS "}" ) + message(STATUS "-----------------------------------------" ) +endfunction() + +############################################################################### +# private +############################################################################### +macro(_cx_query_is_full_filename RESULT CLASS_NAME_WITH_PATH) + STRING(REGEX MATCH "(\\.h|\\.cpp|\\.cxx|\\.qrc|\\.hxx|\\.hpp|\\.txx)$" VALID_SUFFIX ${CLASS_NAME_WITH_PATH}) + if("${VALID_SUFFIX}" STREQUAL "") + set(${RESULT} "False") + else() + set(${RESULT} "True") + endif() +endmacro() + +############################################################################### +# private +############################################################################### +function(_cx_add_one_class SOURCE_FILES CLASS_NAME_WITH_PATH) + _cx_query_is_full_filename(IS_FULL_FILENAME ${CLASS_NAME_WITH_PATH}) + if(${IS_FULL_FILENAME} MATCHES "False") + set(RESULT_add_one_class ${CLASS_NAME_WITH_PATH}.h ${CLASS_NAME_WITH_PATH}.cpp) + else() + set(RESULT_add_one_class ${CLASS_NAME_WITH_PATH}) + endif() + + set(${SOURCE_FILES} ${${SOURCE_FILES}} ${RESULT_add_one_class} PARENT_SCOPE) +endfunction() + +############################################################################### +# private +############################################################################### +function(_cx_add_header_name SOURCE_FILES CLASS_NAME_WITH_PATH) + _cx_query_is_full_filename(IS_FULL_FILENAME ${CLASS_NAME_WITH_PATH}) + if(${IS_FULL_FILENAME} MATCHES "False") + set(RESULT_cx_add_header_name ${CLASS_NAME_WITH_PATH}.h) + else() + set(RESULT_cx_add_header_name ${CLASS_NAME_WITH_PATH}) + endif() + + set(${SOURCE_FILES} ${${SOURCE_FILES}} ${RESULT_cx_add_header_name} PARENT_SCOPE) # set retval +endfunction() + +############################################################################### +# Add classes and files to SOURCE_FILES. +# +# First argument: List to populate with generated files. +# Other arguments: Classes/files to add to list. Classes will expand to a h and cpp file. +# Either input class names or file names, prepended with folder. +# +# Usage: add_class(SOURCE_FILES class1 class2 folder/class3 file1.h ...) +############################################################################### +function(cx_add_class SOURCE_FILES_ARGUMENT) + set(CLASS_NAME_WITH_PATH ${ARGV}) + list(REMOVE_AT CLASS_NAME_WITH_PATH 0) + + foreach(CLASS_NAME ${CLASS_NAME_WITH_PATH}) + _cx_add_one_class(RESULT_add_class ${CLASS_NAME}) + endforeach() + + set(${SOURCE_FILES_ARGUMENT} ${${SOURCE_FILES_ARGUMENT}} ${RESULT_add_class} PARENT_SCOPE) +endfunction() + +############################################################################### +# Add Qt moc classes and files to SOURCE_FILES. +# +# As add_class(), but the class is run through the Qt Moc system as well. +############################################################################### +function(cx_add_class_qt_moc SOURCE_FILES_ARGUMENT) + set(CLASS_NAME_WITH_PATH ${ARGV}) + list(REMOVE_AT CLASS_NAME_WITH_PATH 0) + + foreach(CLASS_NAME ${CLASS_NAME_WITH_PATH}) + _cx_add_one_class(RESULT_add_class_qt_moc ${CLASS_NAME}) + endforeach() + + foreach(CLASS_NAME ${CLASS_NAME_WITH_PATH}) + _cx_add_header_name(HEADER_NAMES ${CLASS_NAME}) + endforeach() + + # optimized: QT5_WRAP_CPP has large overhead: call once. + qt5_wrap_cpp( RESULT_add_class_qt_moc ${HEADER_NAMES} ) + + set(${SOURCE_FILES_ARGUMENT} ${${SOURCE_FILES_ARGUMENT}} ${RESULT_add_class_qt_moc} PARENT_SCOPE) +endfunction() + +############################################################################### +# Determin OpenGL Version +# +# INFO: does not work on windows +############################################################################### +macro(cx_opengl_version) + + if(OPENGL_FOUND AND NOT DEFINED CX_WINDOWS AND NOT DEFINED CX_APPLE) + execute_process(COMMAND glxinfo COMMAND grep "OpenGL version" OUTPUT_VARIABLE _OPENGL_VERSION_STRING) + + string(REGEX REPLACE "[^:]*:()" "\\1" OPENGL_VERSION "${_OPENGL_VERSION_STRING}") + + if("${OPENGL_VERSION}" STREQUAL "") + message(WARNING "Cannot determine OpenGL's version") + endif("${OPENGL_VERSION}" STREQUAL "") + else(OPENGL_FOUND AND NOT DEFINED CX_WINDOWS AND NOT DEFINED CX_APPLE) + set(OPENGL_VERSION "") + endif(OPENGL_FOUND AND NOT DEFINED CX_WINDOWS AND NOT DEFINED CX_APPLE) + +endmacro(cx_opengl_version) + +############################################################################### +# +# Get a list of all variables with _prefix, return in _varResult +# +############################################################################### +function(getListOfVarsStartingWith _prefix _varResult) + get_cmake_property(_vars VARIABLES) + string (REGEX MATCHALL "(^|;)${_prefix}[A-Za-z0-9/_\\.:-]*" _matchedVars "${_vars}") + set (${_varResult} ${_matchedVars} PARENT_SCOPE) +endfunction() + + +############################################################################### +# Borrowed from +# https://github.com/lxde/lxqt-qtplugin/blob/master/qt5/CMakeLists.txt +# +# quote: +# there is no standard way to get the plugin dir of Qt5 with cmake +# The best way is get_target_property(QT_PLUGINS_DIR Qt5::QGtk2ThemePlugin LOCATION). +# This directly returns the platformthemes dir. However, this does not work +# in some distros, such as ubuntu. +# Finally, I came up with a more reliable way by using qmake. +############################################################################### +function(find_qt_plugin_dir _varResult) + get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION) + if(NOT QT_QMAKE_EXECUTABLE) + message(FATAL_ERROR "qmake is not found.") + endif() + # execute the command "qmake -query QT_INSTALL_PLUGINS" to get the path of plugins dir. + execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PLUGINS + OUTPUT_VARIABLE _QT_PLUGINS_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(_QT_PLUGINS_DIR) + message(STATUS "Qt5 plugin directory:" ${_QT_PLUGINS_DIR}) + else() + message(FATAL_ERROR "Qt5 plugin directory cannot be detected.") + endif() + set (${_varResult} ${_QT_PLUGINS_DIR} PARENT_SCOPE) +endfunction() + + +############################################################################### +# +# Find the location of qts bin folder +# +############################################################################### +function(find_qt_bin_dir _varResult) + find_package(Qt5Core REQUIRED) + get_target_property(QtCore_location Qt5::Core LOCATION) + get_filename_component(_QT_BIN_DIR ${QtCore_location} DIRECTORY) + set(${_varResult} ${_QT_BIN_DIR} PARENT_SCOPE) +endfunction() + +############################################################################### +# +# Find the location of qts qml folder +# +############################################################################### +function(find_qt_qml_dir _varResult) +get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION) +if(NOT QT_QMAKE_EXECUTABLE) + message(FATAL_ERROR "qmake is not found.") +endif() +# execute the command "qmake -query QT_INSTALL_QML" to get the path of qml dir. +execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_QML + OUTPUT_VARIABLE _QT_QML_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +if(_QT_QML_DIR) + message(STATUS "Qt5 qml directory:" ${_QT_QML_DIR}) +else() + message(FATAL_ERROR "Qt5 qml directory cannot be detected.") +endif() +set (${_varResult} ${_QT_QML_DIR} PARENT_SCOPE) +endfunction() + +############################################################################### +# +#Find Qt libraries directory (Qt frameworks directory for APPLE) +# +############################################################################### +function(find_qt_libs_dir _varResult) + get_target_property(_QT_LIBRARY_DIRS Qt5::Core LOCATION) + get_filename_component(_QT_LIBRARY_DIRS ${_QT_LIBRARY_DIRS} DIRECTORY) + if(APPLE) + get_filename_component(_QT_LIBRARY_DIRS ${_QT_LIBRARY_DIRS} DIRECTORY) + endif() + set(${_varResult} ${_QT_LIBRARY_DIRS} PARENT_SCOPE) +endfunction() + +############################################################################### +# +# Create a list of all subdirs in curdir. +# Return as list of paths relative to curdir. +# +############################################################################### +macro(SUBDIRLIST result curdir) + file(GLOB children RELATIVE ${curdir} ${curdir}/*) + #message(STATUS "children: " ${children}) + set(dirlist "") + foreach(child ${children}) + if(IS_DIRECTORY ${curdir}/${child}) + list(APPEND dirlist ${child}) + endif() + endforeach() + set(${result} ${dirlist}) +endmacro() + + +############################################################################### +# +# Utility for printing all variables known to CMake at a given point. +# +############################################################################### +function(cx_print_variables REGEX_TO_MATCH) + get_cmake_property(_variableNames VARIABLES) + foreach (_variableName ${_variableNames}) + if(_variableName MATCHES ${REGEX_TO_MATCH}) + message(STATUS "${_variableName}=${${_variableName}}") + endif() + endforeach() +endfunction() + + +############################################################################### +# +# Creates a export header. +# +# MY_LIBRARY_NAME: Prefix for the export header name +# OUT_EXPORT_HEADER: Path to the prefix header +# +############################################################################### +macro(cx_create_export_header MY_LIBRARY_NAME) + set(MY_EXPORT_HEADER_PREFIX ${MY_LIBRARY_NAME}) + set(MY_LIBRARY_EXPORT_DIRECTIVE ${MY_LIBRARY_NAME}_EXPORT) + set(MY_LIBNAME ${MY_LIBRARY_NAME}) + configure_file( + ${CTK_SOURCE_DIR}/Libs/ctkExport.h.in + ${CMAKE_CURRENT_BINARY_DIR}/${MY_LIBRARY_NAME}Export.h + ) +endmacro() + +############################################################################### +# +# Removes duplicate include directories. +# +# Confirmed on Windows: +# 1. Speeds up the configuration step significantly when generating a target. +# 2. Slightly speeds up mocing if used before QT5_WRAP_CPP, because duplicate include +# directories are removed and thus not added to moc_.cpp_parameters (the -IC: tags) +# +############################################################################### +#macro(cx_remove_duplicate_include_directories) +# get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) +# list(REMOVE_DUPLICATES dirs) +# set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES ${dirs}) +#endmacro() + + +############################################################################### +# +# http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake +# +############################################################################### +macro(ADD_MSVC_PRECOMPILED_HEADER PrecompiledHeader PrecompiledSource SourcesVar) + if(MSVC) + message(STATUS "Generating precompiled headers.") + get_filename_component(PrecompiledBasename ${PrecompiledHeader} NAME_WE) + set(PrecompiledBinary "${CMAKE_CURRENT_BINARY_DIR}/${PrecompiledBasename}.pch") + set(Sources ${${SourcesVar}}) + + set_source_files_properties(${PrecompiledSource} + PROPERTIES COMPILE_FLAGS "/Yc\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\"" + OBJECT_OUTPUTS "${PrecompiledBinary}") + set_source_files_properties(${Sources} + PROPERTIES COMPILE_FLAGS "/Yu\"${PrecompiledHeader}\" /FI\"${PrecompiledHeader}\" /Fp\"${PrecompiledBinary}\"" + OBJECT_DEPENDS "${PrecompiledBinary}") + # Add precompiled header to SourcesVar + list(APPEND ${SourcesVar} ${PrecompiledSource}) + endif(MSVC) +endmacro(ADD_MSVC_PRECOMPILED_HEADER) + +############################################################################### +# +# Define the option CX_APP_${APP_NAME}, default value ON +# If the option is ON, add the subdirectory APP_NAME. +# +############################################################################### +macro(cx_add_optional_app_subdirectory APP_NAME) + option(CX_APP_${APP_NAME} "Build the application ${APP_NAME}" ON) + if(${CX_APP_${APP_NAME}}) + add_subdirectory(${APP_NAME}) + endif() +endmacro() + +############################################################################### +# +# Set some default values for the MACOSX_BUNDLE variable family +# Customize for each application, +# in particular the icon, which must have the resource installed int +# +############################################################################### +macro(cx_initialize_macosx_bundle) + set(CX_COPYRIGHT_TEXT "Copyright SINTEF Medical Technology. BSD licence") + + if(APPLE) # For Apple set the icns file containing icons + set(MACOSX_BUNDLE_ICON_FILE "CustusX.icns") # set how it shows up in the Info.plist file + set(MACOSX_BUNDLE_INFO_STRING ${CX_SYSTEM_DEFAULT_APPLICATION}) + set(MACOSX_BUNDLE_BUNDLE_NAME ${CX_SYSTEM_DEFAULT_APPLICATION}) + set(MACOSX_BUNDLE_BUNDLE_VERSION "${CustusX_VERSION_STRING}") + set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${MACOSX_BUNDLE_BUNDLE_VERSION}") + set(MACOSX_BUNDLE_LONG_VERSION_STRING "${CX_SYSTEM_DEFAULT_APPLICATION} ${MACOSX_BUNDLE_BUNDLE_VERSION}") + set(MACOSX_BUNDLE_COPYRIGHT ${CX_COPYRIGHT_TEXT}) + endif(APPLE) +endmacro() + +############################################################################### +# +# Add a non-source file to the project file. +# +# Call this for each file that sould be added to the project for easy edit +# access from an IDE (VS, XCode, QtCreator) +# +# See also http://public.kitware.com/Bug/view.php?id=7835 +# +############################################################################### +function(cx_add_non_source_file NON_SOURCE_FILE) + if(IS_ABSOLUTE ${NON_SOURCE_FILE}) + cx_add_string_to_global_property_list(CX_NON_SOURCE_FILES "${NON_SOURCE_FILE}") + else() + cx_add_string_to_global_property_list(CX_NON_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${NON_SOURCE_FILE}") + endif() +endfunction() + +############################################################################### +# +# Add all non-source files to the project file. +# (Files that shall not be compiled with this project file.) +## +############################################################################### +function(cx_add_non_source_files_to_project_file) + get_property(NON_SOURCE_FILES GLOBAL PROPERTY CX_NON_SOURCE_FILES) + add_custom_target(NonSourceFiles SOURCES ${NON_SOURCE_FILES}) +endfunction() + +############################################################################### +# +# Set Retina display resolution on the input TARGET +# +# http://blog.qt.io/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/ +# http://mpiannucci.com/view/cmakeretina +# https://blog.inventic.eu/2013/02/problem-with-qt-application-on-macos-retina-display/ +# +# Must be combined with disabling retina on VTK/GL windows, as described in +# http://public.kitware.com/pipermail/vtkusers/2015-February/090117.html +# +## +############################################################################### +function(cx_set_target_high_resolution TARGET) + if(APPLE) + set_target_properties(${TARGET} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CustusX_SOURCE_DIR}/CMake/MacOSXBundleInfo_cx_custom.plist.in) +# set(MACOSX_BUNDLE_INFO_PLIST ${CustusX_SOURCE_DIR}/CMake/MacOSXBundleInfo_cx_custom.plist.in) + endif(APPLE) +endfunction() + diff --git a/CMakeGraphVizOptions.cmake b/CMakeGraphVizOptions.cmake new file mode 100644 index 0000000..ba2866a --- /dev/null +++ b/CMakeGraphVizOptions.cmake @@ -0,0 +1,7 @@ +#set(GRAPHVIZ_EXECUTABLES OFF) +#set(GRAPHVIZ_STATIC_LIBS OFF) +#set(GRAPHVIZ_SHARED_LIBS OFF) +#set(GRAPHVIZ_MODULE_LIBS OFF) +set(GRAPHVIZ_EXTERNAL_LIBS OFF) +set(GRAPHVIZ_IGNORE_TARGETS "Catch;TestGEInterface_CppUnit_CTest;cxResourceVisualizationTestUtilities;cisstTestsMain;cxMemoryTester;cxtestUtilities") +#set(GRAPHVIZ_IGNORE_TARGETS_REGEX "*Test*") \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..964178d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,110 @@ +########################################################### +## CustusX project +########################################################### + +project(CustusX) + +#### Enable C++11 +set (CMAKE_CXX_STANDARD 11) + +cmake_minimum_required(VERSION 2.8.11) + +# kill warning about mixing full and partial paths in libs: +# http://www.cmake.org/cmake/help/v2.8.10/cmake.html#policy%3aCMP0003 +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + +if (POLICY CMP0042) + cmake_policy(SET CMP0042 NEW) +endif() + +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + ${PROJECT_SOURCE_DIR}/CMake) + +include(cxUtilities) +include(cxInstallUtilities) +include(cxInitializeLibraries) +include(cxCatchUtilities) +include(cxGetVersion) +include(cxDocumentation) + +#------------------------------------------------------------------------------ +# Add some compiler flags (preprocessor definitions) +#------------------------------------------------------------------------------ + +cx_add_defintions() +cx_set_os_identifiers() + +# _USE_MATH_DEFINES Must be defined before math.h is included +if (CX_WINDOWS) + add_definitions(-D_USE_MATH_DEFINES) +endif(CX_WINDOWS) + +# required to compile some eigen code on at least Ubuntu +if(CX_LINUX) + SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024 -no-pie") +endif(CX_LINUX) + +if(SSC_PRINT_CALLER_INFO) + add_definitions(-DSSC_PRINT_CALLER_INFO) +endif() + +set(BUILD_SHARED_LIBS OFF CACHE BOOL "build shared or static libs") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin") + +# Use the old RPATH functionality that was the default in Ubuntu 16.04, instead of the new default: RUNPATH, or using LD_LIBRARY_PATH +if(CX_LINUX) + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--disable-new-dtags") + set(CMAKE_EXE_LINKER_FLAGS "-Wl,--disable-new-dtags") +endif(CX_LINUX) + + +message( STATUS "The " ${CMAKE_GENERATOR} " was used." ) + +#------------------------------------------------------------------------------ +# Set CustusX version +#------------------------------------------------------------------------------ + +set(CX_SYSTEM_BASE_NAME "CustusX" CACHE STRING "base name of the installed system, use for root folder, version, installer..") +set(CX_SYSTEM_DEFAULT_APPLICATION "CustusX" CACHE STRING "The application to set as main installed app, must match an exe TARGET") +message(STATUS "Setting CX_SYSTEM_BASE_NAME=[${CX_SYSTEM_BASE_NAME}]") +message(STATUS "Setting CX_SYSTEM_DEFAULT_APPLICATION=[${CX_SYSTEM_DEFAULT_APPLICATION}]") + +cx_read_version() + +set(CMAKE_BUILD_TYPE:STRING=Debug) + +cx_initialize_custusx_install() +cx_initialize_macosx_bundle() +cx_clear_catch_cache() +cx_initialize_coverage() + +include(Dart) + +#------------------------------------------------------------------------------ +# Includes +#------------------------------------------------------------------------------ +include_directories( /usr/local/include ) +include_directories( /opt/local/include ) +include_directories( /opt/X11/include ) + +#------------------------------------------------------------------------------ +# Add subdirectories +#------------------------------------------------------------------------------ +add_subdirectory( source ) +add_subdirectory( doc ) # after plugins - uses global properties set there + + +#------------------------------------------------------------------------------ +# CTest +#------------------------------------------------------------------------------ +enable_testing() + +#------------------------------------------------------------------------------ +# Add non-source files +#------------------------------------------------------------------------------ +cx_add_non_source_file("README.md") +cx_add_non_source_files_to_project_file() diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user new file mode 100644 index 0000000..cda3dd0 --- /dev/null +++ b/CMakeLists.txt.user @@ -0,0 +1,1010 @@ + + + + + + EnvironmentId + {f8c23c46-8fea-48f7-8b46-85e77cf83b37} + + + ProjectExplorer.Project.ActiveTarget + 1 + + + ProjectExplorer.Project.EditorSettings + + true + false + true + + Cpp + + CppGlobal + + + + QmlJS + + QmlJSGlobal + + + 2 + UTF-8 + false + 4 + false + 80 + true + true + 1 + true + false + 0 + true + 0 + 8 + true + 1 + true + true + true + false + + + + ProjectExplorer.Project.PluginSettings + + + + ProjectExplorer.Project.Target.0 + + Desktop + Desktop + {d457b802-f935-4b9c-89e5-59ed4c8398d8} + 0 + 0 + 7 + + true + /home/shu/dev/cx/CX/build_Release + + + + + false + + true + Make + + CMakeProjectManager.MakeStep + + 1 + Build + + ProjectExplorer.BuildSteps.Build + + + + clean + + true + + true + Make + + CMakeProjectManager.MakeStep + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + all + + CMakeProjectManager.CMakeBuildConfiguration + + 1 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + Catch + + + 2 + + Catch + + CMakeProjectManager.CMakeRunConfiguration.Catch + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CorrectlyRenderTranslucentGeometry + + + 2 + + CorrectlyRenderTranslucentGeometry + + CMakeProjectManager.CMakeRunConfiguration.CorrectlyRenderTranslucentGeometry + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + cxMemoryTester + + + 2 + + cxMemoryTester + + CMakeProjectManager.CMakeRunConfiguration.cxMemoryTester + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + sscPositionFileReader + + + 2 + + sscPositionFileReader + + CMakeProjectManager.CMakeRunConfiguration.sscPositionFileReader + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + OpenIGTLinkServer + + + 2 + + OpenIGTLinkServer + + CMakeProjectManager.CMakeRunConfiguration.OpenIGTLinkServer + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + LogConsole + + + 2 + + LogConsole + + CMakeProjectManager.CMakeRunConfiguration.LogConsole + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + insert_planner + + + 2 + + insert_planner + + CMakeProjectManager.CMakeRunConfiguration.insert_planner + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CustusX + + + 2 + + CustusX + + CMakeProjectManager.CMakeRunConfiguration.CustusX + 3768 + false + true + false + false + true + + 8 + + + + ProjectExplorer.Project.Target.1 + + Debug + Debug + {544d81c9-20e4-440a-94e5-864704344ea7} + 0 + 0 + 7 + + true + /home/shu/dev/cx/CX/build_Debug + + + + + all + + false + + true + Make + + CMakeProjectManager.MakeStep + + 1 + Build + + ProjectExplorer.BuildSteps.Build + + + + clean + + true + + true + Make + + CMakeProjectManager.MakeStep + + 1 + Clean + + ProjectExplorer.BuildSteps.Clean + + 2 + false + + Default + Default + CMakeProjectManager.CMakeBuildConfiguration + + 1 + + + 0 + Deploy + + ProjectExplorer.BuildSteps.Deploy + + 1 + Deploy locally + + ProjectExplorer.DefaultDeployConfiguration + + 1 + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + Catch + + + 2 + + Catch + + CMakeProjectManager.CMakeRunConfiguration.Catch + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CorrectlyRenderTranslucentGeometry + + + 2 + + CorrectlyRenderTranslucentGeometry + + CMakeProjectManager.CMakeRunConfiguration.CorrectlyRenderTranslucentGeometry + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + cxMemoryTester + + + 2 + + cxMemoryTester + + CMakeProjectManager.CMakeRunConfiguration.cxMemoryTester + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + sscPositionFileReader + + + 2 + + sscPositionFileReader + + CMakeProjectManager.CMakeRunConfiguration.sscPositionFileReader + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + OpenIGTLinkServer + + + 2 + + OpenIGTLinkServer + + CMakeProjectManager.CMakeRunConfiguration.OpenIGTLinkServer + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + LogConsole + + + 2 + + LogConsole + + CMakeProjectManager.CMakeRunConfiguration.LogConsole + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + insert_planner + + + 2 + + insert_planner + + CMakeProjectManager.CMakeRunConfiguration.insert_planner + 3768 + false + true + false + false + true + + + + false + false + false + false + true + 0.01 + 10 + true + 1 + 25 + + 1 + true + false + true + valgrind + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + + CustusX + + + 2 + + CustusX + + CMakeProjectManager.CMakeRunConfiguration.CustusX + 3768 + false + true + false + false + true + + 8 + + + + ProjectExplorer.Project.TargetCount + 2 + + + ProjectExplorer.Project.Updater.FileVersion + 18 + + + Version + 18 + + diff --git a/License.txt b/License.txt new file mode 100644 index 0000000..2f347f9 --- /dev/null +++ b/License.txt @@ -0,0 +1,34 @@ +CustusX is licensed under the BSD-3 license, which means you can use the application +for whatever you wish. Plugins can have other lisenses, but the plugins bundled inside +the CustusX repository use the same license as CustusX. CustusX is built on top of several +other open-source libraries, with their own licenses. They are listed here: \ref external_libraries. + +This is the full CustusX license: + + Copyright (c) 2008-2018, SINTEF Department of Medical Technology + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. 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. + + 3. 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. \ No newline at end of file diff --git a/QtCreatorLicenceTemplate.txt b/QtCreatorLicenceTemplate.txt new file mode 100644 index 0000000..e66bba1 --- /dev/null +++ b/QtCreatorLicenceTemplate.txt @@ -0,0 +1,24 @@ +/*========================================================================= +This file is part of CustusX, an Image Guided Therapy Application. + +Copyright (c) SINTEF Department of Medical Technology. +All rights reserved. + +CustusX is released under a BSD 3-Clause license. + +See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details. +=========================================================================*/ + +namespace cx +{ + +/** + * + * + * \ingroup cx + * \date %DATE%, %YEAR% + * \author %USER% + */ + + +} // namespace cx diff --git a/README.md b/README.md new file mode 100644 index 0000000..672e0a1 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +CustusX +======== +### A Research Platform for Image-Guided Therapy + +CustusX is a Navigation System for Image-Guided Surgery. The intended audience is clinical and technological researchers in the fields of medical imaging and navigation. The platform can be used both as a customizable navigation system and as a toolkit for developing new applications. The main focus of CustusX is the use of intraoperative Ultrasound. + +See [custusx.org](http://custusx.org) for more. + +## Usage + +DISCLAIMER: CustusX is a research tool: It is not intended for normal clinical use, and is not not FDA nor CE approved. + +The code is free to download and use under a BSD-3 license. However, the code base is currently undergoing large changes, thus there is no guarantee that internal interfaces will be stable. + +See [custusx.org](http://custusx.org) for [downloads](http://custusx.org/index.php/downloads) and [documentation](http://custusx.org/uploads/developer_doc/nightly/). + +### Build instructions + +[Build instructions available here.](http://custusx.org/uploads/developer_doc/nightly/build_instructions.html) + +## Structure + +CustusX is written in C++ using CMake, Qt, CTK, VTK, ITK, Eigen, OpenCV, IGSTK, OpenIGTLink and other libraries. The OSGi plugin framework implemented by CTK is used, and is the recommended way to extend CustusX yourself. The platform includes the CustusX application, but it is straightforward to build your own applications using the same platform. + +## Contributors + +CustusX is maintained by [SINTEF Medical Technology](http://www.sintef.no/home/Technology-and-Society/departments/medical-technology/#/), in cooperation with the [Norwegian National Competence Services for Ultrasound and Image-Guided Therapy](http://www.usigt.org/index.php/the-custusx-navigation-system) ([St. Olavs Hospital](http://www.stolav.no/en/), [SINTEF](http://www.sintef.no/home/Technology-and-Society/departments/medical-technology/#/), [NTNU](http://www.ntnu.edu/)). + diff --git a/config/audio/Windows XP Critical Stop.wav b/config/audio/Windows XP Critical Stop.wav new file mode 100755 index 0000000000000000000000000000000000000000..1be1479232d679ccdedef80998ebdd9a40171885 GIT binary patch literal 39382 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 literal 0 HcmV?d00001 diff --git a/config/audio/Windows XP Information Bar.wav b/config/audio/Windows XP Information Bar.wav new file mode 100755 index 0000000000000000000000000000000000000000..2f106bd5883e8fac073cfec8533bc42519ac9606 GIT binary patch literal 20336 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 z�B?e95RWr{qcU0QsQyMKDM1!pouZmsJn8(rA5_h*7fHj%I7`E9z z*^=GQo?&HLryzwAf*%A+&3k4%W7mv!X1;OFcn@tS*7(E-H%1vTXi|NlkA@kGj1;)8 zCD>EXve(WUUClT%)tqh?m{n$j85tZKTo)|jo30ltXT4=xZSAjk=fJjKfQnh++;f_o z6gP#dw-b&+5|UAwe-ny?F6iECQGDysOXk2A6=Q!8q-xJdDOQ>)B}jR2K-<{6dzjl& zsG$AQdZ|cSC2b+E6xL`B+Fc>>57GkS&(WE)D3c{kqI?4XvwhUH+p`U;)K~~6ujh=o z4-P0rY$JNbZ(t-7IqtgmVQN;piTI$YrJoy}LadMXRfRVf^T1o%tn zfgV3xd{fNe-Y}23TP>~>kBWP_6WfV5pP$7GVkzOIc$xG`@vwNEaGX$qx?aIMAQj>U z)^4e|gOY2-Rn#z_UHyjGpFP$Q?(4R28*d$3glq_dVfe<;VG54Xrwy#5Nf1e~?f_SS z9Sc2M?BbZ?;fNvbCJZJX%n`+TW2mDi>m-S?uQn4YakMvz`eX6AG?Bk1aL#C2jEC5>0d_n)@@0r{+V Az5oCK literal 0 HcmV?d00001 diff --git a/config/audio/Windows XP Navigation.wav b/config/audio/Windows XP Navigation.wav new file mode 100755 index 0000000000000000000000000000000000000000..8505e25655812575b3a10e678884cb44a4743b0d GIT binary patch literal 24204 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

    LtsH_{aoWgv6I3$TgJ)WYd%}o6~u- z8!Gd$XFD86@FW#=ta@1>uIYMd3p|>{lPk^D@8)kk7CptIr|@QvGpl38bSNYmAU#yQ zrSo6t=Oi6qm6`4?=sYA-Tk-dudfz9E=%<%0_F4zSU@!p(Mu_N@h6i>3yWu#KKfPq) zXtU9J*6t#I2m|Y_sm4L&G+Eq(y$_Tw^?SbTvyK^4=Ei4qu%Ysr!GCY|x*9s! z>!c2X%OHGzn>_VVr!TWN)#zS&zy)TZ3-!W-)Xe=*`Jt}0#t!h!biWf0yV(3EIQ|@t z{c-3^_E%rF0_jWlLpsneF`+FK&oX)x9zAMTbe>(&jgV|h|0R0FMVPnE=W@3Xxf z3nr@f9?q-oS2Ne@le6@ycyoms9tW2PthfKh9^g(Ku9eZz7}C0CwoHG~JO6|Qoka6d zO!_Dux5AoK*^4^l;1cPZ%nzH?#`hY&iU}|1dB>HN<9F;*-mZ>cmZ!&6(g2ueANhXS zSVPB6uJ}DIC)x-6+?m9~usl)KX9ay1)EXKN7wNeL`8{gmPte@$KIad~=r`;KF6RAC zeq_gakQ`iPzx-{wPSN3it8e_hezL*%3(0S{lQ>T$P8ZdW_`0QGDBnJY8DlW-UVZ<= z_Nfoc_Cy$d)m_gYQ8hDo@@3rn7hNw5`v_l#TYueMcD4VcYTDtFWLtdBa318(^3I>&brIa}5W{xs?Ov*S5&y2RL;nbL zCgb%4UE>N7k2J^qh^9|N*mJ9Lbb4X?8~WGfb|6=}Zi$NgAm49v#Ymd&wub(ZeC&b2 zSyrKE^L>RZf1a1O$!afpzik)xQ=MjD%{i3!#rW<)9-Se^fZ|owU zaH{kJy{tiR{xN*#^ZOmvaNnot<7$7EO#dFkI+5P!bniLmO8*PSYjpmpMfZp0?pE2z zo_PvJUWKcV=}Ygh-+a*PMx0uYF+ZW_4O#k_J;=AM;70NAoA`dA+5EMJqg2OlYF_Yj zmEJKKD&bPly%;mDlaE?wJC}G~=zREYah~=Kk>0C9hKlLiQ2#sQx7&N4gCA#DTRdsc zd8~c+`_<)IJDN|k`bBlJO_X1=cfE_%UN~^MDj4Hz;994-?LF)GW|>-HcXBnWmqTDK zPcC(u@ON0Y8*5Hdf6Zzha^5r2b5xVCYzAIm>2&8?5UzEebhW6il&Sf8?OXVAl$yNL zu6vBrk@IxQI(fRq$-|e`{v6iM!`18H*&c&0!`5TXI7hgejtBIVx9BG~I3akqlcnhmqu}*~6T647rn{Zn5A}_QAvS@JH?VnzYWfvU zo^8kc0KR`5iqFt5 zp_|-krQO-TZgE0#2mjrxOUL`=>ZfL#Gx`0XZg5TE%)@ltkJo)==^D(w1h1Ef=2FpK zgR4CYCx205?e3K2=UDTsbsm*d7h6@8&I`m^A<$f?qm z(7jG<9U<@;F*mSWucOBo)b=GnrZ}#HkC*gasxobIJF88`kCmXCkeuDqw zS^PVlql2^0kF(pKmTy_DU!p@#!M=~#Q`}e1WX@J2XPRxM=nlt}^N9P*LT?l0_3CCk z?cdSgFN6IeRr~?_&@1$gnwq=yjW_Ex-!9etVHy0Y4%Y_-Rb7{3Ld?g5I^F3z+*R#8) ztS){@dvm^>56Mrdk*#{qRebzr;q^PAc!vtPz`XU64tKX1dM6w&m+9Nt9Aysrdk9=i z`y5^GGSUaV_bz?uNi*eLI(EJB7wIP7(4PPg!-eaxV2{dHsO;co@gtBG#)_ z&rti4N9-(bp>4J*K3eZM(N6jm%)89!3$WlNjDH)n&NTmT(v!bye)^VG##TMzEVIX0 zE0jly_V?>q_v@Y$@Z~(Xw1wEMF!-F`GtCI6k-h^5UbV_O-zSsjKz}9%pM&uih^Zy6 z-iF;b%TqJ!pG%;AhWT$6j$MYU*NLs0(O;ImPkO(N+J1<|m#xOnvZA|9UO#FTya-y~ z62bF&;XADLuJ>~myRYlL4~wUUZ+~m-bt)wD_AeoSJw2QB_p9xvzOOFd0<)KC_hf@C zU4#L5%lCz<>^0oDmj1`!c${~xan1Ya*~*V+)lxUP|GGKx2WFKMtwervPOA;_lIM_`63-6ru+DKtzFl|Qq8GfC^b|XSX{zZQr@R;Gw~KlIF8Mo~_La0>=XJNf6y{w8ulHD&Pa(TN z7rRmZ_F=)f#`^|TY`Rkg|D$#7daJ$Dbh6XzG?&8U3*|GDN6LElWS+l;e6>z+2Y)8( zz#}2{3BB-S-1sAAe98=Rzm@tB_O2-G=xc59wCbKCtH+4)TYB?X#M;6Wecyt>ZSviQ z-cLFYy&BRTtzdsG?Bk=btSaYd**bAxOi)W=-{ylWu zLVgZxUNSR(Q;&GcI_elK_`223`*^>~*hl%ksdVgX$S*O|?-0|ERKbH-(1kY_^5=u9 zb(fy;6c5*{)wh#wu4dtAUF=^V`D5>{vjX}cZ_=3unfva+ zu^VK2t`*kXAa*tRk!G#Q*yp=#_0$P+ku&F`bcjc+7QSTsebz2r*?XJXJD8S7#D6Pn zW~-ayReWl=gLTo5RQy-)<8gL#wlGOA+-s%ysQP%)9dp!gc*0~Keev@tl8ii7`ON7)^~KnYfGmYTh=01k{?`lzQ3fs-Y(-R zr#V01ebyWg^85>~d5V|E$wm+!W?%BO>iB2#L7l5VXKnGd66+$en{?+#;ONdI7+k3~ z2bn3Jrs)aD^mqN$rJsz(vB%`;I%qzlawfv}0>}@;j;E|nf=r#c?DOjB>*_T<_-0x9 z1QxvPl;d>yyIcqA4Vl!<9XQ-URbQ>UeNsktv6#;?Kf|Xrs`y-^&$lnzF3ZGaZRZqhkEh6T?!i#`d)mlXMQJo=iL{$y=&nuxB0%v-ISAEfzQUGj(WG}vn7 zQv4fZrp%|DpHK@=)BaYK{aH8+(Xnsk`(@C1Rz|WjJD=@#`qj;<>?U2cxzV53->;>s zlO5RCtUEu)_fw%IACmA{6|4$_OPu6_*rbFIB!q2q_D za+clviFo=MOc;#?Ph!};x>JpauE2sDT{X=5^=DXflXqUTPCK19mtjdKd)9x($@|OB z?Cp@eRs`bG?Y~k_f2(`khkb*v@uRw2FQ4W8oQL1`?ow5jPtU%jZn~(CZ9kjo!Qm?T>`HoK1Mi;mk`%Y4ouVBqBI>d8W@D|naUG;r#nV;@w^JaZ$on6v7 zy!oK+nfc%sMn4GO-tzWEoV;8Hn(1VBU}`?4Zl!ykXO4b{{qr^};K%WCd6~^WhcSQ4 z%MNDTJI#|fW5J$=6X^at&L3@U_(DPQpUvBc(0+}1=;M0#ZdG|3Z|*UF^u@?eiRlb$ z@?{wFJzRQB@0cW``OM@)y7N*aZ-C>yP81I{@&fbdG3E5;J}mf!*|HNaE`iO5teW$= z+HIKq6SGkrroY=2N11VF$=eS|pL61HJWgjX+mY#TUIZ-`VMj`o`&YLObC4 z16F?^+C3`dJ=k^FLm$Thil<}3XWX{u^^Kf_jaRKiS$imAA(zNE1*Zne<9a3 zn0TH%eHJ?goBbaW(;aGaozI0&C3~;;^W8D`^ZiNtiGEg5pDOeGN#wb&;dbxM#=V@L zzn3?MSONW!?wm62)eFw0`?D+$kk$L4`$O~pD$G6sKi*Ay@^nAmJzz#|A#dmM{d`E| zeuR5?`D@x6tYJ@q<3wxwMR3e#N`K;GU%er{_U-1-h1inMN^-`wQ(fj9dw{Mt&G=v9 z>0Y}tOT_wa>w+ET zAKzr*_f|2z1&;4vqlHtK-$C+We6OSRA`Je7{B<*H{XzH1N%lTn?@XAzUG{c}{MUT{ zL#fuR$8vId9L6sa&qLU;0{14##Rq5^WY0Pe%bw$V3k*F+g?^+F1LY4uMJdzJ=BY^xKEZr-MC=J)E?;mC@5; zeaJcBdR!U@vlI09R`T>T-+vG1&FW(WKL_hp>k7UPdT*78#@m;~_d|I(n?=tfs@3Kq zAH{M%KCYnmao8;7%NU+~0PBx33$0X7?t|phM)fpWCzwcoEAp4%_=^7CgZ49I*WR_U|U2N5iF`YI=>$ z-_k!52XcSF5FDtrCU}PQ5h$#ejUaFm?LEwWvyA@}c|K_!K+g!$dfE7cY(M7Do%So^ zvF2EQ))gF|7uV}z>aEj^=1oUy^_Pu*LIhj*GFF_YW5H14*Yb0Lm0NS&Xf*at;<=2V-FM2iG1vB=R05YFZjJ%O`fPT=hKo2xVn*S7RGGD zr6D9o82)s! zCYZ~Ur=g#_QVyg0WEl6?uU30!hDbN#(g1lHF01*(dz$f++1|#> zZQ<$(A{vJ|HCQv<=vg?^!MHc;RmaoRUZ;7D_BpJ!)B{Gzcv!HV^d+y?^zn3pQy@PH z5^XR(_ba?^HqR&aV@l_!RUdP4U>3gD@^PG4!{AycNweTG13M~Y2E!|#CNJRqG`?@f zjzO4uL_v7748`g~bS)2-)$^P8M>JaD*66tQ8WEw2<$^0JUd)hO!g8MwO zCyakZ_S*1b7#zCjv`ck|CkyVIVUVm2!mvFB$)|C09&d7&Kwp|VlCP1eeEPbTv^zcd z#D1R$UnvaEJv(9QXv~W@dvSD;SM|B+p=1M8L5(iCfaZLL+X3sw%E%ahcI5pUsH}%e zCnJXyFFVt}j-M-3O&ij&7%+kUKKj*mRlUi~l)Fxjg76rfwgbkmqC45>z~T|4!+2k- znwH^w?x^iz+%Oh<(y`6@CU-h+!j0Tdbfnin7}Ut$a<8p=UOrpuEuNP8$#U_}bIndw z(3?MfjE(NaFqlnVkEy+(+uPh+Z}bd#n$4qpvfs;1ckS$z)7(jun(U$WHp#^bJlZEq zeIPuLw6@q>OukLcY_#Fw;c7B{yqW%+%3A^T_TQmFe8swx;+#fZhHO*lFAx zSz4&$)k0+`Jp*B1`4V}!-lu5kFMHdKe~pKm^x4b><1wQj4y=`*m+4sn$Ie)EM5*^w z*+TkX!^s-H4Rys3c2au3N0c2foEJ;T-HXy~VhEoAdm zzNE8_P?3j2t~tc!75-LtXB??k4-;zxX3Q^H-DHn^i19(Dtvs#f$C83$Z07Uy?nbYK z`*ixFy}QxDw`-}6`QAyS?fE^%YjBBa72UIWw5{}kG4u>9T*}=nud%V$N?|Z9!}wAw zdy9;&DzfUQLkk9*F?BJU^`$Fk-4_1tEZ$^pPChbw4wIEO*uG5suX=ZnE;ERigK?l) z$?9x&*OnDjxX~zI44cKYw1waZdcxmr@-&ApOJ$=I#7AI3DldIwhHRv_cV#hmw{_DW zSCFL-WYyAxEL!SH*Uw!P4tyJ|9|q&sVEuPDL}p_3 z9DSp;aicMBq<*p&GP6shxgTZ-o@OTRS~|g8x^oX$5Aly>H!Io=q6q?<_3A-bI>|fz z;J&i>K2Im;;QC{%D#oa_+`%`!%-CCTBkQw?Q0tDi?UMq7oPfHhrZHC=x? zB=(YzEVJIBswV4%8Q#l!b};ENwD*>e<#3#iVex&Kh{mzeo{w`N^OEdU_hZHPjLy8D z`ze>`oIPnz?e!4pYdm?Dp4^Ap+t|@;bmZe)YqsaawUO2AjYh*Q`;n3U99SE7@0egk*~iy7J;+`vKDOigB-tBN zkX%GQ4gab=)(P~FEZNQ~??pK8(v@;gY4!lw8O$b~p>s6Hp|SK=tL}8#DSTW@TTC5AGr?>#7~kLE#|y^4rdG34%e{vK3L~eB^d($saJn{{&5`P$UW}9B z`x2|Qtd2H1cV%ysr^)opmenvgbQq{0=*)Gl&%Jcn?Ns-y#`pEIJw*QUq)V!4Asy3jVTWvI)g7j`kky&AzgX&{n|h4z zmDQP~uh5=4$O>XenI)EzRlP7L3KQrbs>-&g$Cv+Ht4ETLfoDs#I){8NZnWm(7(R}~ z$i4EAz0?A8P-j|>De`Xe5vEQnICe8~qNoPxddX_;=UJ$a_oC%k*&c*5Yt&?4A^|o>XaWwshiD`=toZh(zXJU1N*I@Yw3p~y2 zsy$_P9%FQm;(Hib_4od88Asj~?&%!q%o{NEQ1Wz$+-nhY#zGnw_gxb!jO87p*_*7Ff zeP_IipD5xMx?y^1Iz%(s&t3BA`@0}JwOCzOy4ytZk^8&h^B6p8watYF|`(wGs&w?kUj4)*wGzgdERLXtKrgMoEcxL zEOXgpulYJe?sJ~to&MH~tJGNbL5V46KSz}sj+QCpQ^XK1jpX^Tg6}L`dK|(_A=zJ? zz9mBqZ^W5raB`ZOZ%LlDTb?h;{`;AdkDN8+j{0hjOSb=od_n1Y!|53TnVoQ-OdhLy z_29#d&Kfu!Vk#fgm)hzj>8UvZ+zPR3zaHNY7wI_2OzGl+ET%-c0$&Dt$@ zKeu)Lc=E#`R@HVj+r-E51+konWbHPm%qo3YoJ4y%cDmjaxUUlFAh~#xpLCk+Ri?8X zE@ie!K2kT0>!Mu+-#n?1`C~`Xo~Nb~=@G_{6Knd?96n|Zk&b-?UykH^v*PJ6E-g=1MS?JR5NWHntcXGNKXvXabc zZ?t!mz4<)JYB%SF{b@ha?{vL%?C0sqIZ4)|N3z`l0-2w)>Z;as;Zn3`t&k^ZUYC!Y zS!8|=mll&xg+R`D@@&U3{Oqdwa@+MO>_3|83SDj-C`OGpObftZ~cLtSwgpo7%S5wv&d8#IJT%M!K z`BXCqj;24e%^uycnkVuU=3qYN9I<3Of@sROIgo_#>p zsgr40WSv@RudN1}%E_HLb@xzPnnVmATz9CN)Q-|PKtcC@znkUi?N3%LmKGIR9 z6~wZliF`zWK4smk^YT9&A? zF0dUdrtBWGU(0TAH7>>XqvWKQ4*v#OPPFpOM}PUKP6YDo!CY1sl@(*EYz!ZB@|vzU zi;uf#&l%kj@Qjc1Y00TuP6YDg)?s{Xpe1|F?1ys_Gu-HEpS+sIYJb;;)ts;nDr>-H zqUh>gXzx+O-=-|*PO3&v|x2G&wUFG z1YRq3Fdu{KNQRR4RKwLN(sWjLK(aqAgZbV}^(CfCdpD!2bKPC~)hn#dE86oJOm^WN zaA_H@on7TDDyMfx z(AAlIwM;Kk9XXL5M4smlV|5wbIeFX%-ys+?jJB4LT*8+{7}=b)p*Wm#i<~AeCS7KA zl~bhZ)VRI5Y$YG7CxzP58w3vFdtzGP<@;sKLIaCD&j%*kbIEf;)6LlU-nC?V9ws%) zlhwZEY%u3*vkGFB)uA}kT9xIDHBZ;o%W6KI8U*J&A2&~B&*tTB`RGsH5AM5p5zeGO z8dT)~{v4uec0fFJkbDHmL0-LZX*2DOr>5Q6yawT%oOfk&1bOAnGSZw#=E=A) zbqH^Ax}7H*m&->RsiXb+M(eO~CDwZ->-q=~78Y==vE5~;Z? z=RA2p(Xz(q`Ne9Ub{@&yIgwmy&5`rbAznF23zAh#mDM3MRoPw)u>}yzrzCwz z`;>g-3@qny8?oSE76+5(9RGDT=kaEkw-z)&YFUQ&*ehIZv^! z(^GSb9qpae>5c^hai+cMOC1EUt+L&NynoT2^XDKF#FFjmq`g(Kx>%%Z z`QDM{Ls{(#u`R~u`QRwf5>sehwzMZ@W`2fFj%DTqrrG7_yqwhJdU&-dO zqP@ePwKo&f@{;WhnCg4@Sv>@o_RzkBd^xKvAl9GuJW-m{?PPnk`5@=}LFQmJ93K-? zK7(k_YCjh8iAWGz=x4o--4QB%yq719*YYr*D&(6M4mP?k-=qBv(jd7FVh0<2NYTEH zy=6w{Im&47OWp-CTVc4uPqNyX_I^C-ptd)V=98jrw09-%EqiqZnPnnc!}r$g#cCyA z$Kpy??N!@7$q#{Zt$gGu^Edd|g0(!Qo9CY!)b6Sx-(Gz0Q>?aE2b)-2#m8Nc=}vcF zzuRJPo*Q3Xw6`x-^I1`g{n}r5RWn+96=XWx+!-t{W- z`1ra!t&pu<5bIXton&FaRw{cf~`c?XqP*A@9@+B>q@m%Pfynv&Jckm*d8Pe$|U+E%%Eosac=?+V{OEazG2 z>hrG+5NK1ZR@&>uy2=%s;oeR>z5N8S?GTPUxW{T3S#idHkWY1c(iPvsnZ#7D z4l2YtL#Cc&rSTgIVqJLBjkabGt9(zk+rhktpJ)#Y@+|YVl8TtA7y0XakM_ixtfmfPbu}%?M|)$t7w!AR9{GA)s@?DVL1xh1u7ATj z>*b>{+xg@*h^;AzmG)v{&*9nMxilYrHnWJ^6^1j_-VuU9W2J`jstwJtmb<+f_uK9pc8-Em#l6j%{NQz<$Gf4 zRJ7N#n$gkH`T*_Qi}uYBXwLV}Uh#cjL2M%*ck#U)X&1VJOun%q2*k&H%S`8@Ju$`V zcDP60$*XnoJ>Pp!S#49Sb|l|dVv6>iC8o;vma=3lI~ z#ie|cNFuGrnMUoE??GlO?JbJ$)%T90RvQhg^8lok* z*Ok%9YVr}^lkKp>|6_x$TH1FM-y36!_AoV8x6o4g9_<<5ti+n{I|*WmwS&bwG`+bj|I$YXC8msZWRf#Fz8_{4~C9kw+bh5hF zxXQ<5yS4G{AQQxP&=Ku>|18h9pygX#w$QZm&sO7mO_6W&US+jy@v$YV8K2kQ5>q=i zTknr)8!gdZ%U*l0R>f+(+)iEt*S37g_~dDOkq7rWvi9C-b%1;i?a6D~;`_dWL9Fhh zy)|hN2$J<=+r7I_w%e4^b+jbbSl!KP%QC)=KjZrj(j9OQk{REcSIJYn+(}FF7n`k0 zwj6-W+hMYCRSUp7ip{g@_N!} zuO*8-`Pf5qUVDl>+Uttd-9;MhL980zLQK2pi0{!}SA40g#>;4LD6!TREe*70^v?a- zD<50%Jyx51ue3L(y|UVmS&ckagL}M5OqKS0uTXrfkjd!yp7Fc9 z8hxy^@1-~Ly(J$NVl8OjO;%szK`g$vD#%1j#>Z-fWU`uk1e^GnJY{rCz9*)P55CDq ze6MiN=t@f^ue9$iS`LgU+H2%Bp2y3|YQEnmhy}@AY$T@SsnQ;KqS`y zYSe|yQ+XNv`wq|(?Nv;bH%DA1&cb#hQ58{Lffc-c-?6(rR=SQ)8^L8u>o2{QWPr=bg&;%5LR-qH6TLY5ZSm z55ln;FB|ieSfi(sHd<|rwUSrfRKDl>T#^5(Sd;CrDbgyY%9kd2qn5_;(Vp?)Z<8-o ztc_YKc@U@&&gcsF$RZ8*DlJt^jq*lcVm0ijARI_edH?S5Z}3f?4C}1LYM4)jO5VMyq)zQRLr$iA-!)|26qo z)l8(3HI5Hf6^@PXG-lZ>zdpK>R@YQoDn0)?qDCG0 zv&lkJR88Y6S)(_9eRQRzQBTv@za0J7Z5}AC##ed{)N`R{v6a(-r^c@fq7RzDdu4vVW^3l7B00y81u+wkz#!2bqa Cl;=_a literal 0 HcmV?d00001 diff --git a/config/audio/camera_shutter.wav b/config/audio/camera_shutter.wav new file mode 100644 index 0000000000000000000000000000000000000000..8ae9e277780602bc176ff3fb9933cfeca9eaf571 GIT binary patch literal 41030 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 + + + + Bronchoscopy/Anser_Needle1/AnserNeedle1.xml + + + diff --git a/config/profiles/Bronchoscopy/tool/Bronchoscopy_Anser_two_needles.xml b/config/profiles/Bronchoscopy/tool/Bronchoscopy_Anser_two_needles.xml new file mode 100755 index 0000000..4fe545f --- /dev/null +++ b/config/profiles/Bronchoscopy/tool/Bronchoscopy_Anser_two_needles.xml @@ -0,0 +1,9 @@ + + + + + Bronchoscopy/Anser_Needle1/AnserNeedle1.xml + Bronchoscopy/Anser_Needle2/AnserNeedle2.xml + + + diff --git a/config/profiles/Bronchoscopy/tool/Guidewire_and_Catheter.xml b/config/profiles/Bronchoscopy/tool/Guidewire_and_Catheter.xml new file mode 100644 index 0000000..1e9e6bb --- /dev/null +++ b/config/profiles/Bronchoscopy/tool/Guidewire_and_Catheter.xml @@ -0,0 +1,9 @@ + + + + + Bronchoscopy/Anser_Guidewire/AnserGuidewire.xml + Bronchoscopy/Anser_Catheter/AnserCatheter.xml + + + diff --git a/config/profiles/Laboratory/filter_scripts/cxCreateVenv.sh b/config/profiles/Laboratory/filter_scripts/cxCreateVenv.sh new file mode 100755 index 0000000..537eba5 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/cxCreateVenv.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +# Create python virtual environment +# Usage: +# cxCreateVenv venvBasePath reqPath +# venvBasePath = Path to location where the venv should be craeted +# reqPath = Path to requirements.txt + +venvBasePath=$1; +reqPath=$2; + +#if [ $1 -eq 0 ]; then +if [ -z $venvBasePath ]; then + echo "No venvBasePath input. Setting it to ./" + venvBasePath="./"; +fi + +#if [ $2 -eq 0 ]; then +if [ -z $reqPath ]; then + echo "No reqPath input. Setting it to $venvBasePath" + reqPath=$venvBasePath; +fi + +cd "$venvBasePath"; +python3 -m venv venv; +source venv/bin/activate; +pip install --upgrade pip; +python -m pip install -r "$reqPath/requirements.txt"; +deactivate diff --git a/config/profiles/Laboratory/filter_scripts/python_Airways.ini b/config/profiles/Laboratory/filter_scripts/python_Airways.ini new file mode 100644 index 0000000..0c2a029 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_Airways.ini @@ -0,0 +1,15 @@ +[script] +path = ./scripts/python_airways_segmentation/segmentAirwaysFAST.py +engine = +model = +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _airways.mhd +volume = true +mesh = true +color = "254,175,180,43" +classes = Airways diff --git a/config/profiles/Laboratory/filter_scripts/python_AirwaysCenterline.ini b/config/profiles/Laboratory/filter_scripts/python_AirwaysCenterline.ini new file mode 100644 index 0000000..075cf66 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_AirwaysCenterline.ini @@ -0,0 +1,15 @@ +[script] +path = ./scripts/python_airways_segmentation/extractCenterlinesFAST.py +engine = +model = +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _centerline.vtk +volume = false +mesh = true +color = "255,255,0,255" +classes = Centerline diff --git a/config/profiles/Laboratory/filter_scripts/python_Lungs.ini b/config/profiles/Laboratory/filter_scripts/python_Lungs.ini new file mode 100644 index 0000000..c3a4dbf --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_Lungs.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_Lungs +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _lungs.mhd +volume = false +mesh = true +color = "254,175,180,43" +classes = Lungs diff --git a/config/profiles/Laboratory/filter_scripts/python_Lungs_test.ini b/config/profiles/Laboratory/filter_scripts/python_Lungs_test.ini new file mode 100644 index 0000000..9fbcb2d --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_Lungs_test.ini @@ -0,0 +1,15 @@ +[script] +path = ../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_Lungs +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _lungs.mhd +volume = true +mesh = true +color = "254,175,180,43" +classes = Lungs diff --git a/config/profiles/Laboratory/filter_scripts/python_LymphNodes.ini b/config/profiles/Laboratory/filter_scripts/python_LymphNodes.ini new file mode 100644 index 0000000..5668b3b --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_LymphNodes.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_LymphNodes +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _lymphNodes.mhd +volume = false +mesh = true +color = "0,255,0,255" +classes = LymphNodes diff --git a/config/profiles/Laboratory/filter_scripts/python_MediumOrgansMediastinum.ini b/config/profiles/Laboratory/filter_scripts/python_MediumOrgansMediastinum.ini new file mode 100644 index 0000000..470020b --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_MediumOrgansMediastinum.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_MediumOrgansMediastinum +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _mediumOrgansMediastinum.mhd +volume = false +mesh = true +color = "0,0,255,255;0,0,255,255;0,0,255,255;0,0,255,255;255,255,255,255" +classes = VenaCava AorticArch AscendingAorta DescendingAorta Spine diff --git a/config/profiles/Laboratory/filter_scripts/python_Nodules.ini b/config/profiles/Laboratory/filter_scripts/python_Nodules.ini new file mode 100644 index 0000000..eed3cc5 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_Nodules.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_Nodules +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _nodules.mhd +volume = false +mesh = true +color = "255,255,0,255" +classes = Nodules diff --git a/config/profiles/Laboratory/filter_scripts/python_PulmSystHeart.ini b/config/profiles/Laboratory/filter_scripts/python_PulmSystHeart.ini new file mode 100644 index 0000000..7dbe359 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_PulmSystHeart.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_PulmSystHeart +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _pulmSystHeart.mhd +volume = false +mesh = true +color = "0,0,255,128;0,0,255,255;0,0,255,255" +classes = Heart PulmonaryVeins PulmonaryTrunk diff --git a/config/profiles/Laboratory/filter_scripts/python_SmallOrgansMediastinum.ini b/config/profiles/Laboratory/filter_scripts/python_SmallOrgansMediastinum.ini new file mode 100644 index 0000000..218a225 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_SmallOrgansMediastinum.ini @@ -0,0 +1,15 @@ +[script] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/main.py +engine = DeepSintef +model = CT_SmallOrgansMediastinum +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _smallOrgansMediastinum.mhd +volume = false +mesh = true +color = "0,0,255,255;170,85,0,255;0,0,255,255;0,0,255,255" +classes = SubCarArt Esophagus BrachiocephalicVeins Azygos diff --git a/config/profiles/Laboratory/filter_scripts/python_Tumors.ini b/config/profiles/Laboratory/filter_scripts/python_Tumors.ini new file mode 100644 index 0000000..89cca42 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_Tumors.ini @@ -0,0 +1,15 @@ +[script] +path = ./scripts/python_tumor_segmentation/segmentTumors.py +engine = +model = +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _tumors.mhd +volume = false +mesh = true +color = "255,255,0,255" +classes = Tumors diff --git a/config/profiles/Laboratory/filter_scripts/python_VesselsInLungs.ini b/config/profiles/Laboratory/filter_scripts/python_VesselsInLungs.ini new file mode 100644 index 0000000..38a151a --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_VesselsInLungs.ini @@ -0,0 +1,15 @@ +[script] +path = ./scripts/python_airways_segmentation/segmentBloodVesselsFAST.py +engine = +model = +arguments = + +[environment] +path = ../../../../../../medtekAI/medtekAI/Docker-DeepSintef/venv/bin/python -u + +[output] +file_append = _lung_vessels.mhd +volume = false +mesh = true +color = "0,0,255,255" +classes = LungVessels diff --git a/config/profiles/Laboratory/filter_scripts/python_example.ini b/config/profiles/Laboratory/filter_scripts/python_example.ini new file mode 100644 index 0000000..cb215cb --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_example.ini @@ -0,0 +1,9 @@ +[script] +path = ./scripts/python_example/example.py +arguments = parameter1 parameter2 + +[environment] +path = ./scripts/python_example/venv/bin/python -u + +[output] +file_append = _copy.mhd diff --git a/config/profiles/Laboratory/filter_scripts/python_liver_and_vessels.ini b/config/profiles/Laboratory/filter_scripts/python_liver_and_vessels.ini new file mode 100644 index 0000000..1d6fc97 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_liver_and_vessels.ini @@ -0,0 +1,9 @@ +[script] +path = ./scripts/python_liversegment/segment_liver_and_vessels_3D.py +arguments = + +[environment] +path = ./scripts/python_liversegment/venv/bin/python -u + +[output] +file_append = _vessels.mhd diff --git a/config/profiles/Laboratory/filter_scripts/python_liversegment.ini b/config/profiles/Laboratory/filter_scripts/python_liversegment.ini new file mode 100644 index 0000000..5ca6750 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_liversegment.ini @@ -0,0 +1,9 @@ +[script] +path = ./scripts/python_liversegment/segmentation.py +arguments = + +[environment] +path = ./scripts/python_liversegment/venv/bin/python -u + +[output] +file_append = _segmented.mhd diff --git a/config/profiles/Laboratory/filter_scripts/python_test.ini b/config/profiles/Laboratory/filter_scripts/python_test.ini new file mode 100644 index 0000000..c617e0d --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/python_test.ini @@ -0,0 +1,11 @@ +[script] +path = ./scripts/python_example/test.py +arguments = parameter1 parameter2 + +[environment] +path = python3 -u + +[output] +file_append = _copy.mhd +volume = true +mesh = true diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/extractCenterlinesFAST.py b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/extractCenterlinesFAST.py new file mode 100644 index 0000000..38d16f2 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/extractCenterlinesFAST.py @@ -0,0 +1,80 @@ + +import fast +import os +import SimpleITK as sitk +import sys +import getopt + +def centerlineExtractionFAST(filenameSegmentedAirwaysVolume, filenameOutputCenterline): + importer = fast.ImageFileImporter.create(filenameSegmentedAirwaysVolume) + centerline_extractor = fast.CenterlineExtraction.create().connect(importer) + centerline = centerline_extractor.runAndGetOutputData() + exporter_centerline = fast.VTKMeshFileExporter.create(filenameOutputCenterline).connect(centerline) + exporter_centerline.run() + +InputVolume = '' +OutputLabel = '' +def read_arguments(arguments): + global InputVolume + global OutputLabel + + arg_list = arguments.strip().split(',') + #print('arg_list: ' + arg_list) + print('---') + print(arg_list) + print('---') + pairs = [[x.split(' ')[0], x.split(' ')[1]] for x in arg_list] + param_dict = dict(pairs) + InputVolume = param_dict['InputVolume'] + OutputLabel = param_dict['OutputLabel'] + + if InputVolume == '' or OutputLabel == '': + print('Input volume or output volume is empty, cannot proceed!') + sys.exit() + + print(InputVolume) + print(OutputLabel) + + +def main(argv): + os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" + + arguments = '' + task = '' + try: + opts, args = getopt.getopt(argv, "ht:a:", ["Task=", "Arguments="]) + except getopt.GetoptError: + print('usage: main.py -Task --Arguments ') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('main.py -Task --Arguments ') + sys.exit() + elif opt in ("-t", "--Task"): + task = arg + elif opt in ("-a", "--Arguments"): + arguments = arg + + # Constants and input variables + n_argin_expected = 2 # Expect input and output volume paths + if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + print(input_image_path) + output_centerline_path = sys.argv[2] # Second argument should always be destination file + print(output_centerline_path) + #centerline_path = sys.argv[3] # Third argument should always be destination centerline file + #print(centerline_path) + else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + # Get input arguments + print('Arguments: ' + arguments) + #read_arguments(arguments) + + centerlineExtractionFAST(input_image_path, output_centerline_path) + + +if __name__ == "__main__": + main(sys.argv[1:]) + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentAirwaysFAST.py b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentAirwaysFAST.py new file mode 100644 index 0000000..d0d6c4e --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentAirwaysFAST.py @@ -0,0 +1,89 @@ + +import fast +import os +import SimpleITK as sitk +import sys +import getopt +import numpy as np + + +def segmentAirwaysFAST(filenameInput, filenameOutputAirways): + importer = fast.ImageFileImporter.create(filenameInput) + image = importer.runAndGetOutputData() + print("An image was imported with size: ", image.getWidth(), image.getHeight()) + + airways_filter = fast.AirwaySegmentation.create().connect(importer) + segmentation_airways = airways_filter.runAndGetOutputData() + + if np.asarray(segmentation_airways).size < 1000: + print("Error: Could not segment airways.") + return + + exporter_airways = fast.MetaImageExporter.create(filenameOutputAirways).connect(segmentation_airways) + exporter_airways.run() + + +InputVolume = '' +OutputLabel = '' +def read_arguments(arguments): + global InputVolume + global OutputLabel + + arg_list = arguments.strip().split(',') + #print('arg_list: ' + arg_list) + print('---') + print(arg_list) + print('---') + pairs = [[x.split(' ')[0], x.split(' ')[1]] for x in arg_list] + param_dict = dict(pairs) + InputVolume = param_dict['InputVolume'] + OutputLabel = param_dict['OutputLabel'] + + if InputVolume == '' or OutputLabel == '': + print('Input volume or output volume is empty, cannot proceed!') + sys.exit() + + print(InputVolume) + print(OutputLabel) + + +def main(argv): + os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" + + arguments = '' + task = '' + try: + opts, args = getopt.getopt(argv, "ht:a:", ["Task=", "Arguments="]) + except getopt.GetoptError: + print('usage: main.py -Task --Arguments ') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('main.py -Task --Arguments ') + sys.exit() + elif opt in ("-t", "--Task"): + task = arg + elif opt in ("-a", "--Arguments"): + arguments = arg + + # Constants and input variables + n_argin_expected = 2 # Expect input and output volume paths + if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + print(input_image_path) + output_image_path = sys.argv[2] # Second argument should always be destination volume file + print(output_image_path) + else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + # Get input arguments + print('Arguments: ' + arguments) + #read_arguments(arguments) + + segmentAirwaysFAST(input_image_path, output_image_path) + + +if __name__ == "__main__": + main(sys.argv[1:]) + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentBloodVesselsFAST.py b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentBloodVesselsFAST.py new file mode 100644 index 0000000..4563a57 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_airways_segmentation/segmentBloodVesselsFAST.py @@ -0,0 +1,83 @@ + +import fast +import os +import SimpleITK as sitk +import sys +import getopt + + +def segmentBloodVesselsFAST(filenameInput, filenameOutputVessels): + importer = fast.ImageFileImporter.create(filenameInput) + image = importer.runAndGetOutputData() + print("An image was imported with size: ", image.getWidth(), image.getHeight()) + + lungs_filter = fast.LungSegmentation.create(extractBloodVessels=True).connect(importer) + segmentation_lungs = lungs_filter.runAndGetOutputData(2) + exporter_vessels = fast.MetaImageExporter.create(filenameOutputVessels).connect(segmentation_lungs) + exporter_vessels.run() + + +InputVolume = '' +OutputLabel = '' +def read_arguments(arguments): + global InputVolume + global OutputLabel + + arg_list = arguments.strip().split(',') + #print('arg_list: ' + arg_list) + print('---') + print(arg_list) + print('---') + pairs = [[x.split(' ')[0], x.split(' ')[1]] for x in arg_list] + param_dict = dict(pairs) + InputVolume = param_dict['InputVolume'] + OutputLabel = param_dict['OutputLabel'] + + if InputVolume == '' or OutputLabel == '': + print('Input volume or output volume is empty, cannot proceed!') + sys.exit() + + print(InputVolume) + print(OutputLabel) + + +def main(argv): + os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" + + arguments = '' + task = '' + try: + opts, args = getopt.getopt(argv, "ht:a:", ["Task=", "Arguments="]) + except getopt.GetoptError: + print('usage: main.py -Task --Arguments ') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('main.py -Task --Arguments ') + sys.exit() + elif opt in ("-t", "--Task"): + task = arg + elif opt in ("-a", "--Arguments"): + arguments = arg + + # Constants and input variables + n_argin_expected = 2 # Expect input and output volume paths + if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + print(input_image_path) + output_image_path = sys.argv[2] # Second argument should always be destination volume file + print(output_image_path) + else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + # Get input arguments + print('Arguments: ' + arguments) + #read_arguments(arguments) + + segmentBloodVesselsFAST(input_image_path, output_image_path) + + +if __name__ == "__main__": + main(sys.argv[1:]) + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_example/custus_utilities.py b/config/profiles/Laboratory/filter_scripts/scripts/python_example/custus_utilities.py new file mode 100644 index 0000000..ca6baff --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_example/custus_utilities.py @@ -0,0 +1,90 @@ +import os +import shutil +import SimpleITK as sitk +import numpy as np +import matplotlib.pyplot as plt + +debug = True # Print extra info + +class custusVolume(): + def __init__(self,volume_path): + self.volume_path = volume_path + self.base_path = os.path.dirname(volume_path) + + file_name = os.path.basename(volume_path) + root_ext = os.path.splitext(file_name) + self.volume_name = root_ext[0] + self.volume_type = root_ext[1] + self.volume = None + + def duplicate(self,new_path): + new_path = os.path.splitext(new_path)[0] # Drop extension + mhd_path = os.path.join(self.base_path,self.volume_name + '.mhd') + new_mhd_path = new_path + '.mhd' + shutil.copy(mhd_path, new_mhd_path) + + raw_path = os.path.join(self.base_path, self.volume_name + '.raw') + new_raw_path = new_path + '.raw' + shutil.copy(raw_path, new_raw_path) + + def load_volume(self): + mhd_path = os.path.join(self.base_path, self.volume_name + '.mhd') + self.volume = sitk.ReadImage(mhd_path) + + if debug == True: + print('Image origin: ', self.volume.GetOrigin()) + print('Image spacing: ', self.volume.GetSpacing()) + print('Image dtype: ', self.volume.GetPixelIDTypeAsString()) + + def resample(self, new_spacing): + resample = sitk.ResampleImageFilter() + resample.SetInterpolator = sitk.sitkLinear + resample.SetOutputDirection = self.volume.GetDirection() + resample.SetOutputOrigin = self.volume.GetOrigin() + resample.SetOutputSpacing(new_spacing) + + orig_size = np.array(self.volume.GetSize(), dtype=np.int) + orig_spacing = self.volume.GetSpacing() + new_size = orig_size * (orig_spacing / new_spacing) + new_size = np.ceil(new_size).astype(np.int) # Image dimensions are in integers + new_size = [int(s) for s in new_size] + resample.SetSize(new_size) + + self.volume = resample.Execute(self.volume) + + def get_array(self,dtype='float32'): + image_array = sitk.GetArrayFromImage(self.volume) + if debug == True: + print('Input image type: ', image_array.dtype) + print('Min voxel value: ', image_array.min()) + print('Max voxel value: ', image_array.max()) + + return image_array.astype(dtype) + + def save_volume(self, data, path): + # Create new volume + new_volume = sitk.GetImageFromArray(data.astype(np.uint8)) # NB: Only Uint8 for now + new_volume.CopyInformation(self.volume) # May want to replace with specific copy of selected items + + # Create path + base_path = os.path.dirname(path) + file_name = os.path.basename(path) + root_ext = os.path.splitext(file_name) + volume_name = root_ext[0] + mhd_path = os.path.join(base_path, volume_name + '.mhd') + + # Write to file + sitk.WriteImage(new_volume, mhd_path) + + +class simpleView(): + def __init__(self, image_pixels): + self.image = image_pixels + + def plot_pixels(self): + plt.imshow(self.image, cmap='gray') + plt.show() + + + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_example/example.py b/config/profiles/Laboratory/filter_scripts/scripts/python_example/example.py new file mode 100755 index 0000000..5da385d --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_example/example.py @@ -0,0 +1,21 @@ +import sys +import tkinter as tk +from tkinter import filedialog +from custus_utilities import custusVolume + + +print("Example script is running. ") +print("Python version: ", sys.version) +print('Number of arguments:', len(sys.argv), 'arguments.') +print('Argument List:', str(sys.argv)) + +# Input dialog example: +root = tk.Tk() +root.withdraw() +data_path = filedialog.askdirectory(title = "Choose data folder") + +# Duplcate input volume: +input_image_path = sys.argv[1] # First argument should always be input volume +output_image_path = sys.argv[2] # Second argument should always be destination volume file +input_volume = custusVolume(input_image_path) +input_volume.duplicate(output_image_path) diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_example/requirements.txt b/config/profiles/Laboratory/filter_scripts/scripts/python_example/requirements.txt new file mode 100644 index 0000000..a5ea859 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_example/requirements.txt @@ -0,0 +1,9 @@ +cycler==0.10.0 +kiwisolver==1.2.0 +matplotlib==3.2.2 +numpy==1.19.0 +pyparsing==2.4.7 +python-dateutil==2.8.1 +SimpleITK==1.2.4 +six==1.15.0 +tkinter==0.0.0 diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_example/test.py b/config/profiles/Laboratory/filter_scripts/scripts/python_example/test.py new file mode 100755 index 0000000..1d34991 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_example/test.py @@ -0,0 +1,35 @@ +import sys, os, shutil + + +print("Example script is running. ") +print("Python version: ", sys.version) +print('Number of arguments:', len(sys.argv), 'arguments.') +print('Argument List:', str(sys.argv)) + +# Copied from custus_utilities to make tests run +class custusVolume(): + def __init__(self,volume_path): + self.volume_path = volume_path + self.base_path = os.path.dirname(volume_path) + + file_name = os.path.basename(volume_path) + root_ext = os.path.splitext(file_name) + self.volume_name = root_ext[0] + self.volume_type = root_ext[1] + self.volume = None + + def duplicate(self,new_path): + new_path = os.path.splitext(new_path)[0] # Drop extension + mhd_path = os.path.join(self.base_path,self.volume_name + '.mhd') + new_mhd_path = new_path + '.mhd' + shutil.copy(mhd_path, new_mhd_path) + + raw_path = os.path.join(self.base_path, self.volume_name + '.raw') + new_raw_path = new_path + '.raw' + shutil.copy(raw_path, new_raw_path) + +# Duplcate input volume: +input_image_path = sys.argv[1] # First argument should always be input volume +output_image_path = sys.argv[2] # Second argument should always be destination volume file +input_volume = custusVolume(input_image_path) +input_volume.duplicate(output_image_path) diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/README.md b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/README.md new file mode 100644 index 0000000..4ceb729 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/README.md @@ -0,0 +1,33 @@ +# Automatic liver segmentation in CT using deep learning + +#### NOTE: Trained 2D model on the LITS dataset is automatically downloaded when running the inference script and can be used as you wish, but please, give credit. ENJOY! :) + + +![Screenshot](figures/Segmentation_CustusX.PNG) + +The figure shows a predicted liver with the corresponding patient CT in 3DSlicer. It is the Volume-10 from the LITS17 dataset. + +First of all: +The LITS dataset can be accessible from here (https://competitions.codalab.org), and the corresponding paper for the challenge (Bilic. P et al.. (2019). The Liver Tumor Segmentation Benchmark (LiTS). https://arxiv.org/abs/1901.04056). If trained model is used please cite this paper. + +Usage: +> git clone https://github.com/andreped/livermask.git \ +> cd livermask \ +> python3 -m venv venv \ +> python -m pip install -r /path/to/requirements.txt . \ <- might want to run > python setup.py bdist_wheel < before +> cd livermask \ +> python livermask.py "path_to_ct_nifti.nii" "output_name.nii" + +If you lack any modules after, try installing them through setup.py (could be done instead of using requirements.txt): +> pip install wheel \ +> python setup.py bdist_wheel + +NOTE: Currently, model only works for the nifti format, and outputs a binary volume in the same format (*.nii). But this format can be imported in CustusX. I wouldn't recommend mixing DICOM and .nii prediction file in CustusX, as there seem to be some orientation issues between these (bug to be fixed in the future). But simply convert DICOM -> NIFTI using the command-line tool dcm2niix (https://github.com/rordenlab/dcm2niix). + +Convert DICOM -> NIFTI doing this: +> dcm2niix -s y -m y -d 1 "path_to_CT_folder" "output_name" + +Note that "-d 1" assumed that "path_to_CT_folder" is the folder just before the set of DICOM scans you want to import and convert. This can be removed if you want to convert multiple ones at the same time. It is possible to set "." for "output_name", which in theory should output a file with the same name as the DICOM folder, but that doesn't seem to happen... + +A few final notes: +1) If you get SSLError during downloading the model, disable VPN, e.g. cisco. For those on the sintef network, try changing network to Eduroam or similar, as it might be a most-famous evry-issue... diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/custus_utilities.py b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/custus_utilities.py new file mode 100644 index 0000000..ca6baff --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/custus_utilities.py @@ -0,0 +1,90 @@ +import os +import shutil +import SimpleITK as sitk +import numpy as np +import matplotlib.pyplot as plt + +debug = True # Print extra info + +class custusVolume(): + def __init__(self,volume_path): + self.volume_path = volume_path + self.base_path = os.path.dirname(volume_path) + + file_name = os.path.basename(volume_path) + root_ext = os.path.splitext(file_name) + self.volume_name = root_ext[0] + self.volume_type = root_ext[1] + self.volume = None + + def duplicate(self,new_path): + new_path = os.path.splitext(new_path)[0] # Drop extension + mhd_path = os.path.join(self.base_path,self.volume_name + '.mhd') + new_mhd_path = new_path + '.mhd' + shutil.copy(mhd_path, new_mhd_path) + + raw_path = os.path.join(self.base_path, self.volume_name + '.raw') + new_raw_path = new_path + '.raw' + shutil.copy(raw_path, new_raw_path) + + def load_volume(self): + mhd_path = os.path.join(self.base_path, self.volume_name + '.mhd') + self.volume = sitk.ReadImage(mhd_path) + + if debug == True: + print('Image origin: ', self.volume.GetOrigin()) + print('Image spacing: ', self.volume.GetSpacing()) + print('Image dtype: ', self.volume.GetPixelIDTypeAsString()) + + def resample(self, new_spacing): + resample = sitk.ResampleImageFilter() + resample.SetInterpolator = sitk.sitkLinear + resample.SetOutputDirection = self.volume.GetDirection() + resample.SetOutputOrigin = self.volume.GetOrigin() + resample.SetOutputSpacing(new_spacing) + + orig_size = np.array(self.volume.GetSize(), dtype=np.int) + orig_spacing = self.volume.GetSpacing() + new_size = orig_size * (orig_spacing / new_spacing) + new_size = np.ceil(new_size).astype(np.int) # Image dimensions are in integers + new_size = [int(s) for s in new_size] + resample.SetSize(new_size) + + self.volume = resample.Execute(self.volume) + + def get_array(self,dtype='float32'): + image_array = sitk.GetArrayFromImage(self.volume) + if debug == True: + print('Input image type: ', image_array.dtype) + print('Min voxel value: ', image_array.min()) + print('Max voxel value: ', image_array.max()) + + return image_array.astype(dtype) + + def save_volume(self, data, path): + # Create new volume + new_volume = sitk.GetImageFromArray(data.astype(np.uint8)) # NB: Only Uint8 for now + new_volume.CopyInformation(self.volume) # May want to replace with specific copy of selected items + + # Create path + base_path = os.path.dirname(path) + file_name = os.path.basename(path) + root_ext = os.path.splitext(file_name) + volume_name = root_ext[0] + mhd_path = os.path.join(base_path, volume_name + '.mhd') + + # Write to file + sitk.WriteImage(new_volume, mhd_path) + + +class simpleView(): + def __init__(self, image_pixels): + self.image = image_pixels + + def plot_pixels(self): + plt.imshow(self.image, cmap='gray') + plt.show() + + + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/LICENSE.md b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/LICENSE.md new file mode 100644 index 0000000..da84f4c --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/LICENSE.md @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2020, André Pedersen +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. 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. + +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. diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/livermask.py b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/livermask.py new file mode 100644 index 0000000..b154a0f --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/livermask/livermask.py @@ -0,0 +1,233 @@ +import numpy as np +import os, sys +import h5py +from tqdm import tqdm +import nibabel as nib +from nibabel.processing import resample_to_output, resample_from_to +from scipy.ndimage import zoom +from tensorflow.python.keras.models import load_model +import gdown +from skimage.morphology import remove_small_holes, binary_dilation, binary_erosion, ball +from skimage.measure import label, regionprops +import warnings +import matplotlib.pyplot as plt + +warnings.filterwarnings('ignore', '.*output shape of zoom.*') +debug = True # Print extra info + + +class simpleView(): + def __init__(self, image_pixels): + self.image = image_pixels + + def plot_pixels(self): + plt.imshow(self.image, cmap='gray') + plt.show() + + +def intensity_normalization(volume, intensity_clipping_range): + result = np.copy(volume) + + result[volume < intensity_clipping_range[0]] = intensity_clipping_range[0] + result[volume > intensity_clipping_range[1]] = intensity_clipping_range[1] + + min_val = np.amin(result) + max_val = np.amax(result) + if (max_val - min_val) != 0: + result = (result - min_val) / (max_val - min_val) + + return result + + +def post_process(pred): + return pred + + +def get_model(output='model.h5'): + url = "https://drive.google.com/uc?id=181VE-FiqZ2z7xY30LK9GIvLeEEJW0YF-" + md5 = "ef5a6dfb794b39bea03f5496a9a49d4d" + gdown.cached_download(url, output, md5=md5) # , postprocess=gdown.extractall) + + +def data_pretransform(data, img_size=512, intensity_clipping_range = [-150, 250]): + # resize + data = zoom(data, [1.0, img_size / data.shape[1], img_size / data.shape[2]], order=1) + + # intensity normalization + #intensity_clipping_range = [-150, 250] # HU clipping limits (Pravdaray's configs) + data = intensity_normalization(volume=data, intensity_clipping_range=intensity_clipping_range) + + # fix orientation + data = np.swapaxes(data, 0, 2) + data = np.rot90(data, k=-1, axes=(0, 1)) + data = np.flip(data, axis=2) + return data + + +def data_predict(data, model, threshold = 0.5): + # predict on data + pred = np.zeros_like(data).astype(np.float32) + for i in range(data.shape[-1]): + print('Predicting slice ', i, ' of ', data.shape[-1]) + pred[..., i] = model.predict(np.expand_dims(np.expand_dims(data[..., i], axis=0), axis=-1))[0, ..., 1] + + # threshold + pred = (pred >= threshold).astype(int) + return pred + + +def data_posttransform(data, curr_shape, img_size): + # fix orientation back + data = np.flip(data, axis=2) + data = np.rot90(data, k=1, axes=(0, 1)) + data = np.swapaxes(data, 0, 2) + + # resize back + data = zoom(data, [1.0, curr_shape[1] / img_size, curr_shape[2] / img_size], order=1) + data = (data >= 0.5).astype(np.float32) + return data + + +def morph_postprocess(data): + # morphological post-processing + print("morphological post-processing...") + if debug: + print('Data in: ', data.shape) + + ### opening + # 1) first erode + data = binary_erosion(data.astype(bool), ball(3)).astype(np.float32) + if debug: + print('Data eroded: ', data.shape) + + # 2) keep only largest connected component + labels = label(data) + regions = regionprops(labels) + area_sizes = [] + for region in regions: + area_sizes.append([region.label, region.area]) + area_sizes = np.array(area_sizes) + if debug: + print('area_sizes: ', area_sizes) + if len(area_sizes > 1): + tmp = np.zeros_like(data) + tmp[labels == area_sizes[np.argmax(area_sizes[:, 1]), 0]] = 1 + data = tmp.copy() + del tmp + del labels, regions, area_sizes + + # 3) dilate + data = binary_dilation(data.astype(bool), ball(3)) + + ### closing with remove small holes + data = binary_dilation(data.astype(bool), ball(3)) + data = remove_small_holes(data.astype(bool), area_threshold=0.001 * np.prod(data.shape)).astype(np.float32) + data = binary_erosion(data.astype(bool), ball(3)) + + return data.astype(np.uint8) + + +def func(path, output): + cwd = "/".join(os.path.realpath(__file__).replace("\\", "/").split("/")[:-1]) + "/" + + # print(cwd) + # print(" :) ") + + name = cwd + "model.h5" + # name = "\.model.h5" + + # get model + get_model() + + # load model + model = load_model(name, compile=False) + + print("preprocessing...") + nib_volume = nib.load(path) + new_spacing = [1., 1., 1.] + resampled_volume = resample_to_output(nib_volume, new_spacing, order=1) + data = resampled_volume.get_data().astype('float32') + curr_shape = data.shape + if debug: + print('Original data shape: ', data.shape) + print('Min voxel value: ', data.min()) + print('Max voxel value: ', data.max()) + + # resize to get (512, 512) output images + img_size = 512 + data = zoom(data, [img_size / data.shape[0], img_size / data.shape[1], 1.0], order=1) + + # intensity normalization + intensity_clipping_range = [-150, 250] # HU clipping limits (Pravdaray's configs) + data = intensity_normalization(volume=data, intensity_clipping_range=intensity_clipping_range) + + # fix orientation + data = np.rot90(data, k=1, axes=(0, 1)) + data = np.flip(data, axis=0) + if debug: + print('Data for prediction, shape: ', data.shape) + + print("predicting...") + # predict on data + pred = np.zeros_like(data).astype(np.float32) + for i in tqdm(range(data.shape[-1]), "pred: "): + pred[..., i] = \ + model.predict(np.expand_dims(np.expand_dims(np.expand_dims(data[..., i], axis=0), axis=-1), axis=0))[0, ..., 1] + del data + + # threshold + pred = (pred >= 0.4).astype(int) + + # fix orientation back + pred = np.flip(pred, axis=0) + pred = np.rot90(pred, k=-1, axes=(0, 1)) + + print("resize back...") + # resize back from 512x512 + pred = zoom(pred, [curr_shape[0] / img_size, curr_shape[1] / img_size, 1.0], order=1) + pred = (pred >= 0.5).astype(np.float32) + + print("morphological post-processing...") + # morpological post-processing + # 1) first erode + pred = binary_erosion(pred.astype(bool), ball(3)).astype(np.float32) + + # 2) keep only largest connected component + labels = label(pred) + regions = regionprops(labels) + area_sizes = [] + for region in regions: + area_sizes.append([region.label, region.area]) + area_sizes = np.array(area_sizes) + tmp = np.zeros_like(pred) + tmp[labels == area_sizes[np.argmax(area_sizes[:, 1]), 0]] = 1 + pred = tmp.copy() + del tmp, labels, regions, area_sizes + + # 3) dilate + pred = binary_dilation(pred.astype(bool), ball(3)) + + # 4) remove small holes + pred = remove_small_holes(pred.astype(bool), area_threshold=0.001 * np.prod(pred.shape)).astype(np.float32) + + print("saving...") + pred = pred.astype(np.uint8) + img = nib.Nifti1Image(pred, affine=resampled_volume.affine) + resampled_lab = resample_from_to(img, nib_volume, order=0) + nib.save(resampled_lab, output) + + +def main(): + os.environ["CUDA_VISIBLE_DEVICES"] = "-1" + + # __os.path + + path = sys.argv[1] + output = sys.argv[2] + # output = sys.argv[3] + + func(path, output) + + +if __name__ == "__main__": + main() diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/requirements.txt b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/requirements.txt new file mode 100644 index 0000000..a2fa366 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/requirements.txt @@ -0,0 +1,41 @@ +absl-py==0.9.0 +astor==0.8.1 +certifi==2020.4.5.1 +chardet==3.0.4 +cycler==0.10.0 +decorator==4.4.2 +filelock==3.0.12 +gast==0.3.3 +gdown==3.10.1 +grpcio==1.29.0 +h5py==2.10.0 +idna==2.8 +imageio==2.8.0 +Keras-Applications==1.0.8 +Keras-Preprocessing==1.1.0 +kiwisolver==1.1.0 +Markdown==3.2 +matplotlib==3.2.1 +mock==4.0.1 +networkx==2.4 +nibabel==3.0.1 +numpy==1.18.4 +Pillow==7.1.2 +protobuf==3.12.2 +pyparsing==2.4.7 +PySocks==1.7.1 +python-dateutil==2.8.1 +PyWavelets==1.1.1 +requests==2.22.0 +scikit-image==0.17.2 +scipy==1.4.1 +SimpleITK==1.2.4 +six==1.15.0 +tensorboard==1.13.1 +tensorflow==1.13.1 +tensorflow-estimator==1.13.0 +termcolor==1.1.0 +tifffile==2020.5.30 +tqdm==4.46.1 +urllib3==1.25.8 +Werkzeug==1.0.0 diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_2D.py b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_2D.py new file mode 100644 index 0000000..b85e10d --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_2D.py @@ -0,0 +1,121 @@ +import sys +import os +import tensorflow as tf +from tensorflow.python.keras.models import load_model +from custus_utilities import custusVolume +from livermask.livermask import get_model, data_pretransform, data_predict, data_posttransform, morph_postprocess + +import numpy as np +from scipy.ndimage import zoom + +# Remove TF warnings? +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' +tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) + +# Limit us to using a single GPU (GPU 1) +os.environ['CUDA_DEVICE_ORDER'] = "PCI_BUS_ID" +os.environ['CUDA_VISIBLE_DEVICES'] = "1" + +# Allow growth - don't use all GPU memory +config = tf.ConfigProto() +config.gpu_options.allow_growth = True +session = tf.Session(config=config) + +# Constants and input variables +n_argin_expected = 2 # Expect input and output volume paths +liver_model_path = 'networks/liver_model.h5' +vessels_model_path = 'networks/liver_vessels_model_2D.hd5' +img_size = 512 +input_image_path = '' +output_image_path = '' + +# Get liver segmentation model +if not os.path.exists(liver_model_path): + print('Downloading liver model file') + get_model(liver_model_path) +else: + print('Liver model file exists') + +if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + output_image_path = sys.argv[2] # Second argument should always be destination volume file +else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + +# Load input volume: +input_volume = custusVolume(input_image_path) +input_volume.load_volume() + +#data = data_pretransform(data, img_size) +#predicted_output = model.predict(data) +#data = data_posttransform(data, curr_shape, img_size) +#data = morph_postprocess(data) + +# Pre process +data = input_volume.get_array() +curr_shape = data.shape # Remember original shape +print("curr_shape: ", curr_shape) + +if data.min() >= 0: # TODO: make a better method to ensure CT-values in Hunsfield units + data_shift = 1024.0 + print('Data shift: ', data_shift) + data = data - data_shift + +orig_data_without_pretransform = data.copy() +data = data_pretransform(data, img_size, intensity_clipping_range = [-150, 250]) + +# load model +liver_model = load_model(liver_model_path, compile=False) + +data = np.expand_dims(data, axis=0) # Need to change shape to use liver model +print("--- Segmenting liver ---") +data = data_predict(data, liver_model, threshold = 0.4) +data = np.squeeze(data, axis=0) # Changing shape back +del liver_model + +# Post process +data = morph_postprocess(data) # Remove small objects, and fill holes +liver_mask = data.copy() + +# Save liver segmentation +# TODO: Return liver segmentation to CustusX in addition to vessels +data = data_posttransform(data, curr_shape, img_size) +input_volume.save_volume(data, output_image_path + '_liver') + +### Starting vessel +data = data_pretransform(orig_data_without_pretransform, img_size, intensity_clipping_range = [0, 400]) + +# Apply liver as mask +data = data * liver_mask +del orig_data_without_pretransform + +# For networks trained in 256x256 images +# resize to fixed size (256x256 image plane) +#img_size = 256 +tmp_shape = data.shape +data = zoom(data, + zoom=[img_size / tmp_shape[0], + img_size / tmp_shape[1], + 1.0], + order=1) + +# load vessel model +vessels_model = load_model(vessels_model_path, compile=False) + +# Predict vessels +print("--- Segmenting liver vessels ---") +data = data_predict(data, vessels_model, threshold = 0.4) + +# Apply liver mask on vessels as well +data = data * liver_mask +print(data.shape) +del liver_mask + +# Post process +data = data_posttransform(data, curr_shape, img_size) + + +# Update volume and save +#input_volume.save_volume(data, output_image_path + '_vessels') +input_volume.save_volume(data, output_image_path) diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_3D.py b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_3D.py new file mode 100644 index 0000000..1ff94a0 --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segment_liver_and_vessels_3D.py @@ -0,0 +1,177 @@ +import sys +import os +import tensorflow as tf +from tensorflow.python.keras.models import load_model, Model, model_from_json +from custus_utilities import custusVolume +from livermask.livermask import get_model, data_pretransform, data_predict, data_posttransform, morph_postprocess + +import numpy as np +from scipy.ndimage import zoom + +# Remove TF warnings? +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' +tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR) + +# Limit us to using a single GPU (GPU 1) +os.environ['CUDA_DEVICE_ORDER'] = "PCI_BUS_ID" +os.environ['CUDA_VISIBLE_DEVICES'] = "1" + +# Allow growth - don't use all GPU memory +config = tf.ConfigProto() +config.gpu_options.allow_growth = True +session = tf.Session(config=config) + +# Constants and input variables +n_argin_expected = 2 # Expect input and output volume paths +liver_model_path = 'networks/liver_model.h5' + +# Probably more "robust" for different input resolutions. Finds mostly large vessels +# Set threshold to 0.4 - 0.5 +vessels_model_path = 'networks/liver_vessels_model_3D.hd5' +vessels_threshold = 0.4 +# Finds more vessels. Good results with 0.5 mm slice size +# Set threshold to 0.6 - 0.7 +#vessels_model_path = 'networks/model3D_masked_orig_spacing.hd5' +#vessels_threshold = 0.7 + +img_size = 512 +input_image_path = '' +output_image_path = '' + +# Get liver segmentation model +if not os.path.exists(liver_model_path): + print('Downloading liver model file') + get_model(liver_model_path) +#else: +# print('Liver model file exists') + +if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + output_image_path = sys.argv[2] # Second argument should always be destination volume file +else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + +input_volume = custusVolume(input_image_path) +input_volume.load_volume() + +# Pre process +data = input_volume.get_array() +curr_shape = data.shape # Remember original shape +print("curr_shape: ", curr_shape) + +if data.min() >= 0: # TODO: make a better method to ensure CT-values in Hunsfield units + data_shift = 1024.0 + print('Data shift: ', data_shift) + data = data - data_shift + +orig_data_without_pretransform = data.copy() +data = data_pretransform(data, img_size, intensity_clipping_range = [-150, 250]) + +# Predict liver +# load liver model +liver_model = load_model(liver_model_path, compile=False) +#liver_model.summary() + +data = np.expand_dims(data, axis=0) # Need to change shape to use liver model +print("--- Segmenting liver ---") +data = data_predict(data, liver_model, threshold = 0.4) +data = np.squeeze(data, axis=0) # Changing shape back +del liver_model + +# Post process +data = morph_postprocess(data) # Remove small objects, and fill holes +liver_mask = data.copy() + +# Save liver segmentation +# TODO: Return liver segmentation to CustusX in addition to vessels +data = data_posttransform(data, curr_shape, img_size) +input_volume.save_volume(data, output_image_path + '_liver') + +### Starting vessel +data = data_pretransform(orig_data_without_pretransform, img_size, intensity_clipping_range = [0, 400]) + +# Apply liver as mask +data = data * liver_mask +del orig_data_without_pretransform + +# For networks trained in 256x256 images +# resize to fixed size (256x256 image plane) +#img_size = 256 +tmp_shape = data.shape +data = zoom(data, + zoom=[img_size / tmp_shape[0], + img_size / tmp_shape[1], + 1.0], + order=1) + +# load vessel model +vessels_model = load_model(vessels_model_path, compile=False) + +# Predict vessels +print("--- Segmenting liver vessels ---") + +#Create 3D slabs from 3D volume +slab_size = 16 +stride = 8 +counts = int(np.ceil(data.shape[2] / stride)) + +combined_data = np.zeros((img_size, img_size, data.shape[2]), dtype=np.float32) + +print("Prosessing ", counts, " slabs") +for count in range(counts): + print("slab: ", count) + + start_z = int((count*stride)) + stop_z = int((count + 1) * stride) + stride + #print("Start stop: ", start_z, stop_z) + tmp = np.zeros((img_size, img_size, slab_size, 1), dtype=np.float32) + data_slab = data[:, :, start_z:stop_z] + #data_slab = data[:, :, int(count * stride):int((count + 1) * stride)] + tmp[:, :, :data_slab.shape[-1], 0] = data_slab + data_slab = tmp.copy() + + # filter away CT slices that are masked + if np.count_nonzero(data_slab) == 0: + print("Empty slab: ", count) + #continue + + data_slab = data_predict(data_slab, vessels_model, threshold = vessels_threshold) + #print("data_slab: ", data_slab.shape) + + # Use only data from the center of the slab. + start_z = int(start_z + (stride/2)) + stop_z = int(stop_z - (stride/2)) + start_slab_z = int(stride / 2) + + if count == 0: # Don't leave first 4 slices empty + start_z = 0 + start_slab_z = 0 + + if stop_z > (combined_data.shape[2]): + stop_z = combined_data.shape[2] + + stop_slab_z = start_slab_z + stop_z - start_z + #print("modified: ", start_z, stop_z, start_slab_z, stop_slab_z) + + if start_z < combined_data.shape[2]: + combined_data[:, :, start_z:stop_z] = np.squeeze(data_slab, axis=3)[:, :, start_slab_z:stop_slab_z] + #print("combined_data: ", combined_data.shape) + +data=combined_data +print(data.shape) + + +# Apply liver mask on vessels as well +#data = data_predict(data, vessels_model, threshold = 0.2) +#data = data * liver_mask +del liver_mask + + +# Post process +data = data_posttransform(data, curr_shape, img_size) + + +# Update volume and save +#input_volume.save_volume(data, output_image_path + '_vessels') +input_volume.save_volume(data, output_image_path) diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segmentation.py b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segmentation.py new file mode 100755 index 0000000..f0eb95f --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_liversegment/segmentation.py @@ -0,0 +1,69 @@ +import sys +import os +import numpy as np +from custus_utilities import custusVolume, simpleView +from livermask.livermask import get_model, data_pretransform, data_predict, data_posttransform, morph_postprocess +from tensorflow.python.keras.models import load_model + +debug = True # Print extra info + +# Constants and input variables +n_argin_expected = 2 # Expect input and output volume paths +model_path = 'networks/liver_model.h5' +img_size = 512 +input_image_path = '' +output_image_path = '' + +if debug == True: + # Print some initial info for debug + print("Segmentation script is running. ") + print("Python version: ", sys.version) + print('Number of arguments:', len(sys.argv), 'arguments.') + # print('Argument List:', str(sys.argv)) + +# Get input arguments +if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + output_image_path = sys.argv[2] # Second argument should always be destination volume file +else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + +# Load input volume: +input_volume = custusVolume(input_image_path) +input_volume.load_volume() + +# Get segmentation model +if not os.path.exists(model_path): + print('Downloading model file') + get_model(model_path) +else: + print('Model file exists') + +# load model +model = load_model(model_path, compile=False) + +# Pre process +data = input_volume.get_array() +curr_shape = data.shape # Remember original shape + +if data.min() >= 0: # TODO: make a better method to ensure CT-values in Hunsfield units + data_shift = 1024.0 + print('Data shift: ', data_shift) + data = data - data_shift + +data = data_pretransform(data, img_size) + +# Predict +data = np.expand_dims(data, axis=0) # Need to change shape to use liver model +data = data_predict(data, model) +data = np.squeeze(data, axis=0) # Changing shape back + +# Post process +data = data_posttransform(data, curr_shape, img_size) +data = morph_postprocess(data) + +# Update volume and save +input_volume.save_volume(data, output_image_path) + + diff --git a/config/profiles/Laboratory/filter_scripts/scripts/python_tumor_segmentation/segmentTumors.py b/config/profiles/Laboratory/filter_scripts/scripts/python_tumor_segmentation/segmentTumors.py new file mode 100644 index 0000000..ec7404b --- /dev/null +++ b/config/profiles/Laboratory/filter_scripts/scripts/python_tumor_segmentation/segmentTumors.py @@ -0,0 +1,83 @@ + +import lungtumormask +import os +import SimpleITK as sitk +import sys +import getopt + + +def segmentTumors(filenameInput, filenameOutput): + if os.path.splitext(filenameInput)[1:] != '.nii.gz': + filenameInput_nii_gz = os.path.splitext(filenameInput)[0] + '.nii.gz' + filenameOutput_nii_gz = os.path.splitext(filenameOutput)[0] + '.nii.gz' + sitk.WriteImage(sitk.ReadImage(filenameInput), filenameInput_nii_gz) + os.system ('lungtumormask ' + filenameInput_nii_gz + ' ' + filenameOutput_nii_gz) + sitk.WriteImage(sitk.ReadImage(filenameOutput_nii_gz), filenameOutput) + else: + os.system('lungtumormask ' + filenameInput + ' ' + filenameOutput) + return filenameOutput + +InputVolume = '' +OutputLabel = '' +def read_arguments(arguments): + global InputVolume + global OutputLabel + + arg_list = arguments.strip().split(',') + #print('arg_list: ' + arg_list) + print('---') + print(arg_list) + print('---') + pairs = [[x.split(' ')[0], x.split(' ')[1]] for x in arg_list] + param_dict = dict(pairs) + InputVolume = param_dict['InputVolume'] + OutputLabel = param_dict['OutputLabel'] + + if InputVolume == '' or OutputLabel == '': + print('Input volume or output volume is empty, cannot proceed!') + sys.exit() + + print(InputVolume) + print(OutputLabel) + + +def main(argv): + os.environ["CUDA_VISIBLE_DEVICES"] = "0,1" + + arguments = '' + task = '' + try: + opts, args = getopt.getopt(argv, "ht:a:", ["Task=", "Arguments="]) + except getopt.GetoptError: + print('usage: main.py -Task --Arguments ') + sys.exit(2) + for opt, arg in opts: + if opt == '-h': + print('main.py -Task --Arguments ') + sys.exit() + elif opt in ("-t", "--Task"): + task = arg + elif opt in ("-a", "--Arguments"): + arguments = arg + + # Constants and input variables + n_argin_expected = 2 # Expect input and output volume paths + if len(sys.argv) > n_argin_expected: # command string is sys.argv[0] + input_image_path = sys.argv[1] # First argument should always be input volume + print('Input file: ' + input_image_path) + output_image_path = sys.argv[2] # Second argument should always be destination volume file + print('Output file: ' + output_image_path) + else: + print('Too few arguments, script aborted.') + exit(1) # TODO: Find proper exit code + # Get input arguments + print('Arguments: ' + arguments) + #read_arguments(arguments) + + segmentTumors(input_image_path, output_image_path) + + +if __name__ == "__main__": + main(sys.argv[1:]) + + diff --git a/config/profiles/Laboratory/settings/settings.ini b/config/profiles/Laboratory/settings/settings.ini new file mode 100644 index 0000000..b44df1e --- /dev/null +++ b/config/profiles/Laboratory/settings/settings.ini @@ -0,0 +1,2 @@ +[General] +toolConfigFile=LabDefault.xml diff --git a/config/profiles/Laboratory/tool/LabDefault.xml b/config/profiles/Laboratory/tool/LabDefault.xml new file mode 100644 index 0000000..6d72815 --- /dev/null +++ b/config/profiles/Laboratory/tool/LabDefault.xml @@ -0,0 +1,9 @@ + + + + + Shared/NDI-Pointer-8700340_POLARIS/NDI_pnt.xml + Shared/NDI-Reference-frame_small_POLARIS/NDI_ref_small.xml + + + diff --git a/config/shaders/Texture3DOverlay.frag b/config/shaders/Texture3DOverlay.frag new file mode 100644 index 0000000..72214ac --- /dev/null +++ b/config/shaders/Texture3DOverlay.frag @@ -0,0 +1,127 @@ +#version 120 +#extension GL_EXT_gpu_shader4 : enable +#pragma debug(on) +uniform int layers; +uniform sampler3D texture0,texture1,texture2,texture3,texture4; +uniform samplerBuffer lut0,lut1,lut2,lut3,lut4; +uniform int lutsize0,lutsize1,lutsize2,lutsize3,lutsize4; +uniform float window0,window1,window2,window3,window4; +uniform float level0,level1,level2,level3,level4; +uniform float llr0,llr1,llr2,llr3,llr4; // low level reject +uniform float alpha0,alpha1,alpha2,alpha3,alpha4; // low level reject +//in vec4 gl_TexCoord[10]; +vec3 bounds_lo = vec3(0.0,0.0,0.0); +vec3 bounds_hi = vec3(1.0,1.0,1.0); + +bool clampMe(int index) +{ + vec3 coord = gl_TexCoord[index].xyz; + return any(lessThan(coord, bounds_lo)) || any(greaterThan(coord, bounds_hi)); +} + +float windowLevel(float x, float window, float level) +{ + return (x-level)/window + 0.5; +} + +/** Map Luminance volume layer N through a window/level/llr + lut + * + */ +vec4 applyLutLayerN(in vec4 base,in int index,in int lutsize,in samplerBuffer lut,in sampler3D texture,in float window,in float level,in float llr,in float alpha) +{ + if (clampMe(2*index)) // ignore drawing outside texture + { + return base; + } + + // get volume intensity value (same in all of rgb) + float idx = texture3D(texture, gl_TexCoord[2*index].xyz).r; + + // ignore drawing below llr + if (idx < llr) + { + return base; + } + + // apply window+level transform + idx = windowLevel(idx, window, level); + + // map through lookup table - interpolated + idx = clamp(idx, 0.0, 1.0); + float pos = idx * (lutsize-1); // floating-point lut index + int p0 = int(floor(pos)); // integer part of lut index + vec4 c0 = texelFetchBuffer(lut, p0); + vec4 c1 = texelFetchBuffer(lut, p0+1); + vec4 col = mix(c0,c1,pos-p0); // interpolate lut. + + col.a = alpha; + + col = mix(base, col, alpha); + return col; +} + +/** Map RGBA layer N through a window/level/llr + * + */ +vec4 applyRGBALayerN(in vec4 base,in int index,in sampler3D texture,in float window,in float level,in float llr,in float alpha) +{ + if (clampMe(2*index)) // ignore drawing outside texture + { + return base; + } + + // get rgb color from texture + vec4 col = texture3D(texture, gl_TexCoord[2*index].xyz); + + // ignore drawing below llr + if (all(lessThan(col.rgb, vec3(llr)))) + { + return base; + } + + // apply window+level transform to each component + col.r = windowLevel(col.r, window, level); + col.g = windowLevel(col.g, window, level); + col.b = windowLevel(col.b, window, level); + col.a = alpha; + + col = mix(base, col, alpha); + return col; +} + +/** Apply colors from layer N. Decide if it is type luminance or rgb. + * + */ +vec4 applyLayerN(in vec4 base,in int index,in int lutsize,in samplerBuffer lut,in sampler3D texture,in float window,in float level,in float llr,in float alpha) +{ + if (lutsize>0) + { + return applyLutLayerN(base,index,lutsize,lut,texture,window,level,llr,alpha); + } + else + { + return applyRGBALayerN(base,index,texture,window,level,llr,alpha); + } +} + +void main() +{ + vec4 col = vec4(0.0, 0.0, 0.0, 1.0); + + col = applyLayerN(col,0,lutsize0,lut0,texture0, window0, level0, llr0, alpha0); + + if (layers>1) + { + col = applyLayerN(col,1,lutsize1,lut1,texture1, window1, level1, llr1, alpha1); + } + if (layers>2) + { + col = applyLayerN(col,2,lutsize2,lut2,texture2, window2, level2, llr2, alpha2); + } + if (layers>3) + { + col = applyLayerN(col,3,lutsize3,lut3,texture3, window3, level3, llr3, alpha3); + } + + gl_FragColor = col; +} diff --git a/config/shaders/cxOverlay2D_frag.glsl b/config/shaders/cxOverlay2D_frag.glsl new file mode 100644 index 0000000..8603039 --- /dev/null +++ b/config/shaders/cxOverlay2D_frag.glsl @@ -0,0 +1,140 @@ +#version 150 + +// Note: +// All content using the ${VAR} syntax is converted to valid glsl statements by the +// preprocessor in the calling code. This trick bypasses limitations on the Mac +// AMD platforms. + +const int layers = ${LAYERS}; + +uniform sampler3D texture[layers]; +uniform sampler1D lut[layers]; +//uniform sampler1D lut[4]; +uniform int lutsize[layers]; +uniform float window[layers]; +uniform float level[layers]; +uniform float llr[layers]; +uniform float alpha[layers]; + +const vec3 bounds_lo = vec3(0.0,0.0,0.0); +const vec3 bounds_hi = vec3(1.0,1.0,1.0); +in vec4 gl_TexCoord[2*layers]; + +//Why we use 2*layers +//GL have 8 texture units +//Here even numbers are used for volumes and odd numbers are used for lut + +bool clampMe(int index) +{ + vec3 coord = gl_TexCoord[index].xyz; + return any(lessThan(coord, bounds_lo)) || any(greaterThan(coord, bounds_hi)); +} + +float windowLevel(float x, float window_, float level_) +{ + return (x-level_)/window_ + 0.5; +} + +/** Workaround for Mac/AMD: cannot index lut using variable + */ +vec4 sampleLut(in int index, in float idx) +{ +${SAMPLE_LUT_CONTENT} +// On mac/amd: +// if (index==0) +// return texture1D(lut[0], idx); +// else if (index==1) +// return texture1D(lut[1], idx); +// ... +// On other platforms; +// return texture1D(lut[index], idx); + + return vec4(1.0,0.0,0.0,1.0); +} + +/** Map Luminance volume layer N through a window/level/llr + lut + * + */ +vec4 applyLutLayerN(in vec4 base,in int index) +{ + if (clampMe(2*index)) // ignore drawing outside texture + { + return base; + } + + // get volume intensity value (same in all of rgb) + float idx = texture3D(texture[index], gl_TexCoord[2*index].xyz).r; + + // ignore drawing below llr + if (idx < llr[index]) + { + return base; + } + + // apply window+level transform + idx = windowLevel(idx, window[index], level[index]); + idx = clamp(idx, 0.0, 1.0); + // map through lookup table - interpolated + vec4 col = sampleLut(index, idx); + col.a = alpha[index]; + + col = mix(base, col, alpha[index]); + return col; +} + +/** Map RGBA layer N through a window/level/llr + * + */ +vec4 applyRGBALayerN(in vec4 base,in int index) +{ + if (clampMe(2*index)) // ignore drawing outside texture + { + return base; + } + + // get rgb color from texture + vec4 col = texture3D(texture[index], gl_TexCoord[2*index].xyz); + + // ignore drawing below llr + if (all(lessThan(col.rgb, vec3(llr[index])))) + { + return base; + } + + // apply window+level transform to each component + col.r = windowLevel(col.r, window[index], level[index]); + col.g = windowLevel(col.g, window[index], level[index]); + col.b = windowLevel(col.b, window[index], level[index]); + col.a = alpha[index]; + + col = mix(base, col, alpha[index]); + return col; +} + +/** Apply colors from layer N. Decide if it is type luminance or rgb. + * + */ +vec4 applyLayerN(in vec4 base, in int index) +{ + if (lutsize[index]>0) + { + return applyLutLayerN(base,index); + } + else + { + return applyRGBALayerN(base,index); + } +} + + +void main() +{ + vec4 col = vec4(0.0, 0.0, 0.0, 1.0); + + for (int i=0; i 0.0) + { + float distance = -pos.x/delta.x; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (pos.x > 1.0 && delta.x < 0.0) + { + float distance = (pos.x-1.0)/-delta.x; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (pos.y < 0.0 && delta.y > 0.0) + { + float distance = -pos.y/delta.y; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (pos.y > 1.0 && delta.y < 0.0) + { + float distance = (pos.y-1.0)/-delta.y; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (pos.z < 0.0 && delta.z > 0.0) + { + float distance = -pos.z/delta.z; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (pos.z > 1.0 && delta.z < 0.0) + { + float distance = (pos.z-1.0)/-delta.z; + distance += 0.001; + if (distance < minimum && inUnitCube(pos + distance*delta)) + { + minimum = distance; + } + } + if (minimum == maxDistance) + { + return -1.0; + } + return min(minimum, stepsize); +} + +vec4 computeRayDirection( vec4 position, vec4 viewport) +{ + vec4 near, far; + near = position; + near.z = 0.0; + near = unproject(near, viewport); + far = position; + far.z = 1.0; + far = unproject(far, viewport); + + vec4 rayDirection = far-near; + rayDirection = normalize(rayDirection); + return rayDirection; +} + +float opacityTransfer( float intensity, float threshold, float alpha, float maxVal) +{ + return alpha * (intensity - threshold) / (maxVal - threshold); +} + +void main() +{ + vec4 vect = gl_TexCoord[1]; + vec4 colorAccumulator = vec4(0, 0, 0, 0); // The dest color + vec4 colorSample; // The src color + float n = 0.0; + const float thau = 0.02; + vec2 depthLookup = depthTexCoords(gl_FragCoord, viewport); + float maxLength = length(unproject(vec4(gl_FragCoord.xy, texture2D(depthBuffer, depthLookup).r, gl_FragCoord.w), viewport) - gl_TexCoord[1]); + vec4 rayDirection = computeRayDirection(gl_FragCoord, viewport); + vec4 rayDeltaVector = rayDirection * stepsize; + bool beenHit[volumes]; + bool doBreak = false; + + for (int j = 0; j < volumes; ++j) + { + beenHit[j] = false; + } + for(int i = 0; i < maxIterations; i++) + { + colorSample = vec4(0); + if (i > maxLength / stepsize) + { + colorSample = texture2D(backgroundBuffer, depthLookup); + colorSample.a = 1.0; + doBreak = true; + } + else + { + int hit = 0; + int contributingVolumes = 0; + for (int i = 0; i < volumes; ++i) + { + if (inUnitCube(M[i]*vect) && (!useCutPlane[i] || dot(cutPlaneNormal, cutPlaneOffset-vect.xyz) < 0.0)) + { + beenHit[i] = true; + ++hit; + vec4 volumeColorSample = texture3D(volumeTexture[i], (M[i]*vect).xyz); + if (!all(lessThan(volumeColorSample.rgb, vec3(threshold[i])))) + { + ++contributingVolumes; + float intensity; + vec4 windowed = applyWindowLevel(volumeColorSample, window[i], level[i]);; + if (lutSize[i] > 0) + { + intensity = volumeColorSample.r; + windowed = applyLut(windowed.r, lut[i], lutSize[i]); + } + else + { + intensity = max(volumeColorSample.r, max(volumeColorSample.g, volumeColorSample.b)); + } + windowed.a = stepsize * opacityTransfer(intensity, threshold[i], alpha[i], maxValue[i]); + colorSample = blendRGBA(colorSample, windowed); + } + } + } + + bool allVolumesBeenHit = true; + for (int i = 0; i < volumes; ++i) + { + allVolumesBeenHit = allVolumesBeenHit && beenHit[i]; + } + if (allVolumesBeenHit && hit == 0 && i > 0) + { + // We left the last volume + colorSample = texture2D(backgroundBuffer, depthLookup); + colorSample.a = 1.0; + doBreak = true; + } else if (hit > 0 && contributingVolumes == 0) + { + // We're inside at least one volume, but none of the volumes exceeded the threshold + vect += rayDeltaVector; + continue; + } else if (hit==0) + { + // We didn't hit any volume, but there could be some volumes left to hit. Skip distance to next volume, or break if no more volumes will be hit. + float minimum = maxDistance; + for (int j = 0; j < volumes; ++j) + { + if (!beenHit[j]) + { + float hit = toHit(M[j], vect, rayDirection); + beenHit[j] = (hit < 0.0); // haven't been hit, but will not hit + minimum = min(hit, minimum); + } + } + if (minimum == maxDistance) + { + colorSample = texture2D(backgroundBuffer, depthLookup); + colorSample.a = 1.0; + doBreak = true; + } + vect += minimum * rayDirection; + continue; + } + } + + colorAccumulator = blendRGBA(colorAccumulator, colorSample); + + vect += rayDeltaVector; + + if (colorAccumulator.a > 0.95 || doBreak) break; // terminate if opacity > 1 or the ray is outside the volume + } + + gl_FragColor = colorAccumulator; + gl_FragColor.a = 1.0; +} diff --git a/config/shaders/raycasting_shader.vert b/config/shaders/raycasting_shader.vert new file mode 100644 index 0000000..5a5eb2d --- /dev/null +++ b/config/shaders/raycasting_shader.vert @@ -0,0 +1,5 @@ +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[1] = gl_Vertex; +} diff --git a/config/shaders/upscale.frag b/config/shaders/upscale.frag new file mode 100644 index 0000000..251eaa4 --- /dev/null +++ b/config/shaders/upscale.frag @@ -0,0 +1,8 @@ +uniform sampler2D colors; +uniform sampler2D depth; +void main() +{ + vec4 start = gl_TexCoord[0]; + gl_FragColor = texture2D(colors, start.xy); + gl_FragDepth = texture2D(depth, start.xy).r; +} diff --git a/config/shaders/upscale.vert b/config/shaders/upscale.vert new file mode 100644 index 0000000..514c6a2 --- /dev/null +++ b/config/shaders/upscale.vert @@ -0,0 +1,6 @@ +const vec2 madd=vec2(0.5,0.5); +varying vec2 textureCoord; +void main() { + gl_TexCoord[0].xy = gl_Vertex.xy*madd+madd; // scale vertex attribute to [0-1] range + gl_Position = vec4(gl_Vertex.xy,0.0,1.0); +} diff --git a/config/tool/Laboratory/MyKonfig.xml b/config/tool/Laboratory/MyKonfig.xml new file mode 100644 index 0000000..2d52403 --- /dev/null +++ b/config/tool/Laboratory/MyKonfig.xml @@ -0,0 +1,10 @@ + + + + ../Tools/Shared/NDI-Pointer-8700340_POLARIS/NDI_pnt.xml + ../Tools/Shared/NDI-Reference-frame_small_POLARIS/NDI_ref_small.xml + ../Tools/Laboratory/SW-Pointer-07-081-0229_POLARIS/SW_nav_I.xml + ../Tools/Shared/M12L-Probe-8700449_Vivid7-Karkirurgen_POLARIS/Vivid7_prb_M12L.xml + ../Tools/Laboratory/SW-Pointer-07-241-1224_POLARIS/SW_nav_I.xml + + diff --git a/config/tool/Laboratory/test.xml b/config/tool/Laboratory/test.xml new file mode 100644 index 0000000..c8ad17f --- /dev/null +++ b/config/tool/Laboratory/test.xml @@ -0,0 +1,7 @@ + + + + ../Tools/Shared/NDI-Pointer-8700340_POLARIS/NDI_pnt.xml + ../Tools/Laboratory/AccuracyPhantom_POLARIS/AccuracyPhantom_POLARIS.xml + + diff --git a/config/tool/ProbeCalibConfigs.xml b/config/tool/ProbeCalibConfigs.xml new file mode 100755 index 0000000..6027eff --- /dev/null +++ b/config/tool/ProbeCalibConfigs.xml @@ -0,0 +1,4255 @@ + + + 4.10.0 + + PlusDeviceSet_OpenIGTLinkCommandsTest + + ProbeToReference + LinearArray + Digital + Running PLUS server with PlusDeviceSet_OpenIGTLinkCommandsTest.xml + + Digital + 114 + Digital + + Digital + Digital streaming + + + + + + Vivid 7 - Karkirurgen + + M12L + LinearArray + VGA + Image size: Small (default) + + 170 + VGA + WidthMaxDepth40 + + 800 + 600 + + -30 + + WidthMaxDepth40 + Width: Max, Depth: 40 mm + 0 + 359 + 0 + + 297.5 + 53 + + 4 + + 125 + 53 + + + 125 + 411 + + + 470 + 411 + + + 470 + 53 + + + 125 + 470 + 53 + 411 + + + 0.11142 + 0.11142 + + + + WidthMaxDepth45 + Width: Max, Depth: 45 mm + 0 + 359 + 0 + + 297.5 + 53 + + 4 + + 144 + 53 + + + 144 + 412 + + + 451 + 412 + + + 451 + 53 + + + 144 + 451 + 53 + 412 + + + 0.13928 + 0.13928 + + + + WidthMaxDepth50 + Width: Max, Depth: 50 mm + 0 + 360 + 0 + + 298 + 53 + + 4 + + 160 + 53 + + + 160 + 412 + + + 436 + 412 + + + 436 + 53 + + + 160 + 436 + 53 + 412 + + + 0.13928 + 0.13928 + + + + WidthMaxDepth60 + Width: Max, Depth: 60 mm + 0 + 360 + 0 + + 297.5 + 53 + + 4 + + 183 + 53 + + + 183 + 412 + + + 412 + 412 + + + 412 + 53 + + + 183 + 412 + 53 + 412 + + + 0.16713 + 0.16713 + + + + AngioWidthMaxDepth40 + Angio, Width: Max, Depth: 40 mm + 0 + 359 + 0 + + 297.5 + 53 + + 4 + + 125 + 53 + + + 125 + 411 + + + 470 + 411 + + + 470 + 53 + + + 130 + 465 + 58 + 406 + + + 0.11142 + 0.11142 + + + + AngioWidthMaxDepth45 + Angio, Width: Max, Depth: 45 mm + 0 + 359 + 0 + + 297.5 + 53 + + 4 + + 144 + 53 + + + 144 + 412 + + + 451 + 412 + + + 451 + 53 + + + 149 + 446 + 58 + 407 + + + 0.13928 + 0.13928 + + + + AngioWidthMaxDepth50 + Angio, Width: Max, Depth: 50 mm + 0 + 360 + 0 + + 298 + 53 + + 4 + + 160 + 53 + + + 160 + 412 + + + 436 + 412 + + + 436 + 53 + + + 165 + 431 + 58 + 407 + + + 0.13928 + 0.13928 + + + + AngioWidthMaxDepth60 + Angio, Width: Max, Depth: 60 mm + 0 + 360 + 0 + + 297.5 + 53 + + 4 + + 183 + 53 + + + 183 + 412 + + + 412 + 412 + + + 412 + 53 + + + 188 + 407 + 58 + 407 + + + 0.16713 + 0.16713 + + + + + + Hypofyse + LinearArray + VGA + Image size: Large (not default) + + 31 + VGA + WidthMaxDepth2p5 + + 800 + 600 + + 0 + + WidthMaxDepth2 + Width: Max, Depth: 2.0 cm + 0 + 389 + 0 + + 298 + 54 + + 4 + + 170 + 54 + + + 170 + 443 + + + 426 + 443 + + + 426 + 54 + + + 170 + 426 + 54 + 443 + + + 0.05128 + 0.05128 + + + + WidthMaxDepth2p5 + Width: Max, Depth: 2.5 cm + 0 + 389 + 0 + + 298 + 54 + + 4 + + 196 + 54 + + + 196 + 443 + + + 400 + 443 + + + 400 + 54 + + + 196 + 400 + 54 + 443 + + + 0.06410 + 0.06410 + + + + WidthMaxDepth3 + Width: Max, Depth: 3.0 cm + 0 + 389 + 0 + + 298 + 54 + + 4 + + 213 + 54 + + + 213 + 443 + + + 383 + 443 + + + 383 + 54 + + + 213 + 383 + 54 + 443 + + + 0.076923 + 0.076923 + + + + AngioWidthMaxDepth2 + Angio, Width: Max, Depth: 2.0 cm + 0 + 388 + 0 + + 297 + 55 + + 4 + + 170 + 55 + + + 170 + 443 + + + 424 + 443 + + + 424 + 55 + + + 170 + 424 + 55 + 443 + + + 0.05141 + 0.05141 + + + + AngioWidthMaxDepth2p5 + Angio, Width: Max, Depth: 2.5 cm + 0 + 388 + 0 + + 297.5 + 55 + + 4 + + 196 + 55 + + + 196 + 443 + + + 399 + 443 + + + 399 + 55 + + + 196 + 399 + 55 + 443 + + + 0.06410 + 0.06410 + + + + AngioWidthMaxDepth3 + Angio, Width: Max, Depth: 3.0 cm + 0 + 388 + 0 + + 298 + 55 + + 4 + + 214 + 55 + + + 214 + 443 + + + 382 + 443 + + + 382 + 55 + + + 214 + 382 + 55 + 443 + + + 0.07712 + 0.07712 + + + + + + + Hitachi + + OL531 + CurvedLinearArray + S-Video + If the entire ultrasound plane is not visible, try turning off the acquisition program, unplug and replug the videograbber and restart the acquistion program. + + 210 + S-Video + Width6Depth40 + + 800 + 600 + + 0 + + Width6Depth40 + Width: 6, Depth: 40 mm + 117.80442 + 447.95982776887 + 111.173187522534 + + 460.229963610149 + 7.96907988273809 + + 4 + + 365.033807544298 + 65.3900646723316 + + + -18.5483728881313 + 296.761450434311 + + + 938.451627111869 + 297.682333543155 + + + 555.033807544298 + 66.0354970206169 + + + 193 + 755 + 66 + 509 + + + 0.0898876404494382 + 0.0898876404494382 + + + + Width6Depth65 + Width: 6, Depth: 65 mm + 117.80442 + 447.033784768108 + 69.3130568420792 + + 461.703783489208 + 29.8079480431447 + + 4 + + 402.351913460274 + 65.6081627472749 + + + 19.5626916178488 + 296.501247020863 + + + 903.562691617849 + 296.968510529791 + + + 520.351913460274 + 66.7497495651369 + + + 180 + 755 + 66 + 509 + + + 0.146341463414634 + 0.146341463414634 + + + + WidthXDepth85 + Width: 6, Depth: 85 mm + 117.80442 + 448.883283440978 + 52.0768341671354 + + 462.823941117056 + 38.9375414762421 + + 4 + + 418.231224624285 + 65.8352419851453 + + + 33.8583010977613 + 297.683592879489 + + + 890.858301097761 + 299.221283015822 + + + 507.231224624285 + 66.1402955349753 + + + 179 + 755 + 66 + 508 + + + 0.190476 + 0.190476 + + + + Width6Depth125 + Width: 6, Depth: 125 mm + 117.80442 + 448.14417310791 + 35.4674421533576 + + 463.053304118525 + 46.8246738651634 + + 4 + + 432.682994210813 + 65.1436184038448 + + + 48.9429612596572 + 296.610218588878 + + + 876.942961259657 + 296.975720489414 + + + 492.682994210813 + 66.3187990811548 + + + 179 + 755 + 66 + 508 + + + 0.281030 + 0.281030 + + + + + + + Terason + + 4C2 + CurvedLinearArray + VGA + + VGA + WidthMaxDepth8 + + 800 + 600 + + -17 + + WidthMaxDepth8 + Width: Max, Depth: 8 cm + 59.8124 + 382.8531 + 317.7879 + + 367.7173 + -162.324 + + 4 + + 209.2741 + 113.1482 + + + 18.3907 + 445.0217 + + + 716.3907 + 445.3969 + + + 525.2741 + 113.6561 + + + 19 + 716 + 114 + 538 + + + 0.20566 + 0.20566 + + + + WidthMaxDepth12 + Width: Max, Depth: 12 cm + 59.8124 + 451.3605 + 247.2999 + + 367.3943 + -130.1734 + + 4 + + 244.0952 + 84.1967 + + + 19.0553 + 475.4553 + + + 715.0553 + 475.8449 + + + 490.0952 + 84.5397 + + + 20 + 715 + 85 + 568 + + + 0.26316 + 0.26316 + + + + WidthMaxDepth16 + Width: Max, Depth: 16 cm + 59.8124 + 459.8605 + 187.8994 + + 367.2824 + -78.6999 + + 4 + + 273.5993 + 84.1793 + + + 44.3214 + 482.8062 + + + 689.3214 + 483.3355 + + + 460.5993 + 84.3894 + + + 45 + 689 + 85 + 568 + + + 0.34483 + 0.34483 + + + + + + + Ultrasonix + + LAP9-4 + LinearArray + Digital + Generated 20160215 + + Digital + 114 + Digital + + Digital + Digital streaming + + + + + C5-2 + CurvedLinearArray + DVI + Generated 20131107T134801 + + DVI + -321 + Width100Depth7 + + 1024 + 768 + + 0 + + Width100Depth6 + Width: 100%, Depth: 6 cm + 60.25158 + 497.06096096442 + 511.21474050296 + + 450.85157005888 + -353.51583913165 + + 4 + + 194.272836253463 + 88.6468733015886 + + + -55.2021140636547 + 518.567619578324 + + + 956.797885936345 + 518.629914523987 + + + 707.272836253463 + 88.7382113310631 + + + 68 + 860 + 88 + 654 + + + 0.118811881188119 + 0.118811881188119 + + + + Width100Depth7 + Width: 100%, Depth: 7 cm + 60.25158 + 513.278877290178 + 446.791660116682 + + 450.913192935504 + -303.517281229089 + + 4 + + 226.668410175969 + 82.9242602166382 + + + -30.9463141072342 + 526.872297384002 + + + 932.053685892766 + 527.289111881568 + + + 674.668410175969 + 83.2079316902299 + + + 46 + 857 + 95 + 656 + + + 0.152963391517441 + 0.152963391517441 + + + + Width100Depth10 + Width: 100%, Depth: 10 cm + 60.25158 + 532.298502780166 + 326.074189539506 + + 451.020571865839 + -197.708057314593 + + 4 + + 287.363900705769 + 84.3218543413342 + + + 20.2032243225285 + 544.720452358808 + + + 881.203224322529 + 545.08839154973 + + + 614.363900705769 + 84.5034484879452 + + + 46 + 860 + 84 + 660 + + + 0.185873605947955 + 0.185873605947955 + + + + + + SURF + LinearArray + DVI + Generated 20121203T114735 + + DVI + 0 + Width100Depth4 + + 1280 + 1024 + + Empty + + Width100Depth3 + Width: 100 pst, Depth: 3 cm + 0 + 614 + 0 + + 581 + 193 + + 4 + + 191 + 193 + + + 191 + 807 + + + 971 + 807 + + + 971 + 193 + + + 191 + 971 + 206 + 807 + + + 0.0478468899521531 + 0.0478468899521531 + + + + Width100Depth4 + Width: 100 pst, Depth: 4 cm + 0 + 614 + 0 + + 581 + 193 + + 4 + + 293 + 193 + + + 293 + 807 + + + 869 + 807 + + + 869 + 193 + + + 293 + 869 + 206 + 807 + + + 0.065146493402516 + 0.065146493402516 + + + + Width100Depth4p5 + Width: 100 pst, Depth: 4.5 cm + 0 + 611 + 0 + + 581 + 193 + + 4 + + 293 + 193 + + + 293 + 804 + + + 869 + 804 + + + 869 + 193 + + + 293 + 869 + 212 + 804 + + + 0.0740130577862495 + 0.0740130577862495 + + + + Width100Depth5 + Width: 100 pst, Depth: 5 cm + 0 + 610 + 0 + + 581 + 193 + + 4 + + 353 + 193 + + + 353 + 803 + + + 809 + 803 + + + 809 + 193 + + + 894 + 1310 + 299 + 912 + + + 0.0819671029735986 + 0.0819671029735986 + + + + Width100Depth6 + Width: 100 pst, Depth: 6 cm + 0 + 612 + 0 + + 581 + 193 + + 4 + + 373 + 193 + + + 373 + 805 + + + 789 + 805 + + + 789 + 193 + + + 373 + 789 + 192 + 805 + + + 0.0980390848084346 + 0.0980390848084346 + + + + + + EC9-5 + CurvedLinearArray + DVI + + + DVI + 105 + WidthMaxDepth6 + + 800 + 600 + + 0 + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 147.80448 + 331.360888963094 + 87.408282758841 + + 353.490181744088 + 69.3768729969867 + + 4 + + 269.509178176695 + 93.6131873756858 + + + -48.8590487209914 + 185.491970761377 + + + 755.140951279009 + 187.885431830014 + + + 436.509178176695 + 96.7274511658697 + + + 37 + 675 + 94 + 488 + + + 0.119760479041916 + 0.119760479041916 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 147.80448 + 342.487626865713 + 72.4835719920847 + + 353.209461738654 + 73.1806880478179 + + 4 + + 283.567970956376 + 93.2787220400662 + + + -45.4907143967343 + 188.242694944481 + + + 751.509285603266 + 189.620999756851 + + + 422.567970956376 + 94.2345572368043 + + + 37 + 672 + 94 + 488 + + + 0.168066567543732 + 0.168066567543732 + + + + WidthMaxDepth8 + Width: Max, Depth: 8 cm + 147.80448 + 368.628042712363 + 48.5276994426568 + + 352.243905052567 + 75.8381799867135 + + 4 + + 305.618976940719 + 89.2937993244392 + + + -48.5551584267509 + 191.505910694145 + + + 752.444841573249 + 193.558711844477 + + + 398.618976940719 + 90.131196483088 + + + 37 + 672 + 90 + 492 + + + 0.215633423180593 + 0.215633423180593 + + + + WidthMaxDepth10 + Width: Max, Depth: 10 cm + 147.80448 + 377.029111382972 + 39.2532663617214 + + 352.740238210134 + 77.361674629618 + + 4 + + 315.026092613079 + 88.2457061413488 + + + -47.2197054816272 + 192.787241393911 + + + 751.780294518373 + 195.928328804783 + + + 390.026092613079 + 89.6329411293188 + + + 38 + 672 + 89 + 493 + + + 0.264550264550265 + 0.264550264550265 + + + + + + L13-7 + LinearArray + Digital + + 100 + <__ImageTimestampCalibration>170 + Digital + WidthMaxDepth3 + + 271 + 616 + + 0 + + WidthMaxDepth3 + Width: Max, Depth: 3 cm + 0 + 616 + 0 + + 136 + 1 + + 4 + + 1 + 1 + + + 271 + 1 + + + 271 + 616 + + + 1 + 616 + + + 1 + 271 + 1 + 616 + + + 0.048 + 0.048 + + + + + + L14-5 + LinearArray + DVI + + 160 + 170 + DVI + WidthMaxDepth4 + + 1024 + 768 + + 0 + + WidthMaxDepth3 + Width: Max, Depth: 3 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 59 + 68 + + + 59 + 680 + + + 845 + 680 + + + 845 + 68 + + + 59 + 845 + 68 + 680 + + + 0.0478468899521531 + 0.0478468899521531 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 0 + 612 + 0 + + 451 + 68 + + 4 + + 157 + 68 + + + 157 + 680 + + + 747 + 680 + + + 747 + 68 + + + 155 + 746 + 68 + 680 + + + 0.064102417766216002 + 0.064102417766216002 + + + + WidthMaxDepth5 + Width: Max, Depth: 5 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 219 + 68 + + + 219 + 680 + + + 685 + 680 + + + 685 + 68 + + + 219 + 685 + 68 + 680 + + + 0.0809716599190283 + 0.0809716599190283 + + + + WidthMaxDepth7 + Width: Max, Depth: 7 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 285 + 68 + + + 285 + 680 + + + 619 + 680 + + + 619 + 68 + + + 285 + 619 + 68 + 680 + + + 0.113122171945701 + 0.113122171945701 + + + + WidthMaxDepth3elasto + Width: Max, Depth: 3 cm, elasto + 0 + 612 + 0 + + 452 + 68 + + 4 + + 63 + 68 + + + 63 + 680 + + + 840 + 680 + + + 840 + 68 + + + 63 + 840 + 68 + 680 + + + 0.0478468899521531 + 0.0478468899521531 + + + + WidthMaxDepth4elasto + Width: Max, Depth: 4 cm, elasto + 0 + 612 + 0 + + 452 + 68 + + 4 + + 161 + 68 + + + 161 + 680 + + + 743 + 680 + + + 743 + 68 + + + 161 + 743 + 68 + 680 + + + 0.064102417766216 + 0.064102417766216 + + + + WidthMaxDepth5elasto + Width: Max, Depth: 5 cm, elasto + 0 + 612 + 0 + + 452 + 68 + + 4 + + 223 + 68 + + + 223 + 680 + + + 681 + 680 + + + 681 + 68 + + + 223 + 681 + 68 + 680 + + + 0.0809716599190283 + 0.0809716599190283 + + + + WidthMaxDepth7elasto + Width: Max, Depth: 7 cm, elasto + 0 + 612 + 0 + + 452 + 68 + + 4 + + 289 + 68 + + + 289 + 680 + + + 615 + 680 + + + 615 + 68 + + + 289 + 615 + 68 + 680 + + + 0.113122171945701 + 0.113122171945701 + + + + clipped4cm + clipped 4cm + 0 + + 452 + 68 + + + 157 + 747 + 191 + 598 + + + 0.064102417766216002 + 0.064102417766216002 + + + + + Digital + 215 + Digital + + Digital + Digital streaming + + + + + hypofyse + LinearArray + Digital + + + Digital + 213 + Digital + + Digital + Digital streaming + + + + + + Vivid E9 + + ML6-15 + LinearArray + DVI + Generated 20130514T112327 + + DVI + Empty + Empty + + 1280 + 960 + + Empty + + WidthXDepth70 + Width: X, Depth: 70 mm + 0 + 560 + 0 + + 512 + 104 + + 4 + + 310 + 104 + + + 310 + 664 + + + 714 + 664 + + + 714 + 104 + + + 311 + 713 + 107 + 662 + + + 0.124113475177305 + 0.124113475177305 + + + + WidthXDepth60 + Width: X, Depth: 60 mm + 0 + 560 + 0 + + 511.5 + 105 + + 4 + + 276 + 105 + + + 276 + 665 + + + 747 + 665 + + + 747 + 105 + + + 280 + 746 + 105 + 660 + + + 0.106382978723404 + 0.106382978723404 + + + + WidthXDepth50 + Width: X, Depth: 50 mm + 0 + 560 + 0 + + 511 + 105 + + 4 + + 229 + 105 + + + 229 + 665 + + + 793 + 665 + + + 793 + 105 + + + 230 + 793 + 105 + 664 + + + 0.0884954366115321 + 0.0884954366115321 + + + + WidthXDepth40 + Width: X, Depth:40 mm + 0 + 560 + 0 + + 512 + 105 + + 4 + + 158 + 105 + + + 158 + 665 + + + 866 + 665 + + + 866 + 105 + + + 159 + 866 + 105 + 664 + + + 0.0709218743369634 + 0.0709218743369634 + + + + + Digital + 500 + Digital + + Digital + Digital streaming + + + + + 4V + 3D + DVI + Generated 20130226T130311 + + DVI + 45 + Width65Depth10 + + 1280 + 960 + + 0 + + Width65Depth5 + Width: 65, Depth: 5 cm + 65.04552 + 561.581905215479 + 8.91561780827309 + + 512.939465220422 + 96.0360241773803 + + 4 + + 508.146120676028 + 103.553476470673 + + + 206.220262089223 + 577.066952711917 + + + 819.220262089223 + 577.346212357153 + + + 517.146120676028 + 103.896831437517 + + + 207 + 819 + 103 + 666 + + + 0.088886957538942 + 0.088886957538942 + + + + Width65Depth10 + Width: 65, Depth: 10 cm + 65.04552 + 562.294151315564 + 3.93324434820828 + + 512.378479368116 + 100.223221128149 + + 4 + + 510.263831147018 + 103.539646011019 + + + 207.955044418661 + 577.653672454573 + + + 815.955044418661 + 578.192605871868 + + + 514.263831147018 + 103.675156784053 + + + 208 + 815 + 103 + 666 + + + 0.17765913232138 + 0.17765913232138 + + + + Width65Depth15 + Width: 65, Depth: 15 cm + 65.04552 + 562.008315862807 + 3.19444306931874 + + 512.530509077867 + 101.250504774857 + + 4 + + 510.813065981048 + 103.94398871435 + + + 208.657954279765 + 577.817005008519 + + + 815.657954279765 + 578.291289896902 + + + 513.813065981048 + 104.176169539183 + + + 209 + 815 + 103 + 666 + + + 0.266234625893445 + 0.266234625893445 + + + + + + 6S + PhasedArray + DVI + Generated 20121203T101906 + + DVI + 115 + Width75Depth6 + + 1280 + 960 + + 0 + + Width75Depth4 + Width: 75 deg, Depth: 4 cm + 75.07638 + 560.69410043062396 + 9.4058801274758306 + + 509.5 + 96 + + 4 + + 506.941413113316 + 103.383420585543 + + + 165.31605057716 + 547.984349430442 + + + 859.31605057716 + 548.530966823075 + + + 517.941413113316 + 103.716539255138 + + + 162 + 855 + 103 + 666 + + + 0.071016261656335899 + 0.071016261656335899 + + + + Width75Depth6 + Width: 75 deg, Depth: 6 cm + 75.07638 + 561.78236367384704 + 5.07516267406477 + + 509.5 + 99.5 + + 4 + + 509.155191587345 + 103.533252552877 + + + 166.866761034752 + 548.997116906448 + + + 856.866761034752 + 549.581106749819 + + + 515.155191587345 + 103.668512232888 + + + 164 + 853 + 102 + 665 + + + 0.10679030913372101 + 0.10679030913372101 + + + + Width75Depth8 + Width: 75 deg, Depth: 8 cm + 75.07638 + 561.82458648106001 + 3.75231344991797 + + 509.5 + 101 + + 4 + + 510.220915288791 + 103.73911468463 + + + 167.906758797918 + 549.23645950338 + + + 856.906758797918 + 549.390686058067 + + + 514.220915288791 + 104.10182700178 + + + 164 + 852 + 103 + 666 + + + 0.14238707884496099 + 0.14238707884496099 + + + + Width75Depth10 + Width: 75 deg, Depth: 10 cm + 75.07638 + 561.82458648106001 + 3.75231344991797 + + 509.5 + 101 + + 4 + + 510.220915288791 + 103.73911468463 + + + 167.906758797918 + 549.23645950338 + + + 856.906758797918 + 549.390686058067 + + + 514.220915288791 + 104.10182700178 + + + 164 + 852 + 103 + 666 + + + 0.177925803329476 + 0.177925803329476 + + + + Width75Depth12 + Width: 75 deg, Depth: 12 cm + 75.07638 + 561.82458648106001 + 3.75231344991797 + + 509.5 + 101 + + 4 + + 510.220915288791 + 103.73911468463 + + + 167.906758797918 + 549.23645950338 + + + 856.906758797918 + 549.390686058067 + + + 514.220915288791 + 104.10182700178 + + + 164 + 852 + 103 + 666 + + + 0.213348589619937 + 0.213348589619937 + + + + AngioWidth75degDepth4cm + Angio Width: 75 deg, Depth: 4 cm + 70 + 555.69999999999993 + 9.4000000000000004 + + 509.5 + 95.925052398562002 + + + 162 + 855 + 103 + 666 + + + 0.071016261656335899 + 0.071016261656335899 + + + + AngioWidth75degDepth6cm + Angio Width: 75 deg, Depth: 6 cm + 70 + 553.79999999999995 + 5.0999999999999996 + + 509.5 + 99.508915508497296 + + + 164 + 853 + 133 + 666 + + + 0.10679030913372101 + 0.10679030913372101 + + + + AngioWidth75degDepth8cm + Angio Width: 75 deg, Depth: 8 cm + 70 + 556 + 0 + + 509.5 + 100.76372749245201 + + + 164 + 852 + 142 + 666 + + + 0.14238707884496099 + 0.14238707884496099 + + + + AngioWidth75degDepth10cm + Angio Width: 75 deg, Depth: 10 cm + 70 + 550.79999999999995 + 3.7999999999999998 + + 509.5 + 100.76372749245201 + + + 164 + 852 + 138 + 666 + + + 0.177925803329476 + 0.177925803329476 + + + + AngioWidth75degDepth12cm + Angio Width: 75 deg, Depth: 12 cm + 70 + 551.60000000000002 + 3 + + 509.5 + 100.76372749245201 + + + 164 + 852 + 138 + 666 + + + 0.213348589619937 + 0.213348589619937 + + + + + Digital + 35 + Digital + + Digital + Digital streaming + + + + + 9L + LinearArray + DVI + + + DVI + 209 + WidthMaxDepth6 + + 800 + 600 + + 0 + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 0 + 351 + 0 + + 320.625 + 66.25 + + 4 + + 127 + 68 + + + 127 + 419 + + + 515 + 419 + + + 515 + 68 + + + 125 + 515 + 66 + 417 + + + 0.113635 + 0.113635 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 0 + 351 + 0 + + 320.3125 + 66.25 + + 4 + + 192 + 68 + + + 192 + 419 + + + 450 + 419 + + + 450 + 68 + + + 190 + 449 + 66 + 417 + + + 0.16997100000000001 + 0.16997100000000001 + + + + WidthMaxDepth8 + Width: Max, Depth: 8 cm + 0 + 351 + 0 + + 320 + 66.25 + + 4 + + 224 + 68 + + + 224 + 419 + + + 418 + 419 + + + 418 + 68 + + + 222 + 417 + 66 + 417 + + + 0.22727 + 0.22727 + + + + 8cmangio + 8 cm angio + 0 + + 320 + 66.25 + + + 225 + 415 + 68 + 415 + + + 0.22727 + 0.22727 + + + + 4cmAngio + 4 cm Angio + 0 + + 320.625 + 66.25 + + + 128 + 513 + 68 + 415 + + + 0.113635 + 0.113635 + + + + 6cmAngio + 6 cm Angio + 0 + + 320.3125 + 66.25 + + + 193 + 446 + 68 + 415 + + + 0.16997100000000001 + 0.16997100000000001 + + + + + + 11L + LinearArray + DVI + + + DVI_E9-2 + 135 + Empty + + 1280 + 1024 + + 0 + + WidthMaxDepth40_E9-2 + Width: Max, Depth: 40 mm, E9-2 + 0 + 601 + 0 + + 509 + 105 + + 4 + + 220 + 105 + + + 220 + 706 + + + 798 + 706 + + + 798 + 105 + + + 220 + 798 + 104 + 706 + + + 0.0664359861591695 + 0.0665557404326123 + + + + WidthMaxDepth45_E9-2 + Width: Max, Depth: 45 mm, E9-2 + 0 + 601 + 0 + + 509.5 + 105 + + 4 + + 253 + 105 + + + 253 + 706 + + + 766 + 706 + + + 766 + 105 + + + 253 + 766 + 104 + 706 + + + 0.0748538011695906 + 0.0748752079866889 + + + + WidthMaxDepth50_E9-2 + Width: Max, Depth: 50 mm, E9-2 + 0 + 601 + 0 + + 509.5 + 105 + + 4 + + 279 + 105 + + + 279 + 706 + + + 740 + 706 + + + 740 + 105 + + + 279 + 740 + 104 + 706 + + + 0.0832971800433839 + 0.0831946755407654 + + + + WidthMaxDepth60_E9-2 + Width: Max, Depth: 60 mm, E9-2 + 0 + 601 + 0 + + 509.5 + 105 + + 4 + + 318 + 105 + + + 318 + 706 + + + 701 + 706 + + + 701 + 105 + + + 318 + 701 + 104 + 706 + + + 0.100523560209424 + 0.0998336106489185 + + + + + DVI_E9-1 + 135 + WidthMaxDepth4_E9-1 + + 1280 + 960 + + 0 + + WidthMaxDepth3cm_E9-1 + Width: Max, Depth: 3 cm, E9-1 + 0 + + 509.5 + 104 + + + 149 + 869 + 104 + 667 + + + 0.071047957371225601 + 0.071047957371225601 + + + + WidthMaxDepth4_E9-1 + Width: Max, Depth: 4 cm, E9-1 + 0 + 563 + 0 + + 509.5 + 104 + + 4 + + 242 + 105 + + + 242 + 668 + + + 783 + 668 + + + 783 + 105 + + + 239 + 780 + 104 + 667 + + + 0.071047957371225601 + 0.071047957371225601 + + + + WidthMaxDepth5_E9-1 + Width: Max, Depth: 5 cm, E9-1 + 0 + 564 + 0 + + 509.5 + 104 + + 4 + + 296 + 105 + + + 296 + 669 + + + 729 + 669 + + + 729 + 105 + + + 293 + 726 + 104 + 668 + + + 0.088651924880248797 + 0.088651924880248797 + + + + WidthMaxDepth6_E9-1 + Width: Max, Depth: 6 cm, E9-1 + 0 + 563 + 0 + + 509.5 + 104 + + 4 + + 332 + 105 + + + 332 + 668 + + + 693 + 668 + + + 693 + 105 + + + 329 + 690 + 104 + 667 + + + 0.106571936056838 + 0.106571936056838 + + + + AngioWidthMaxDepth3cm_E9-1 + Angio, Width: Max, Depth: 3 cm, E9-1 + 0 + + 509.5 + 104 + + + 154 + 865 + 110 + 661 + + + 0.071047957371225601 + 0.071047957371225601 + + + + AngioWidthMaxDepth4_E9-1 + Angio, Width: Max, Depth: 4 cm, E9-1 + 0 + 563 + 0 + + 509.5 + 104 + + 4 + + 242 + 105 + + + 242 + 668 + + + 783 + 668 + + + 783 + 105 + + + 246 + 775 + 109 + 662 + + + 0.071047957371225601 + 0.071047957371225601 + + + + AngioWidthMaxDepth5_E9-1 + Angio, Width: Max, Depth: 5 cm, E9-1 + 0 + 564 + 0 + + 509.5 + 104 + + 4 + + 296 + 105 + + + 296 + 669 + + + 729 + 669 + + + 729 + 105 + + + 297 + 722 + 109 + 663 + + + 0.088651924880248797 + 0.088651924880248797 + + + + AngioWidthMaxDepth6_E9-1 + Angio, Width: Max, Depth: 6 cm, E9-1 + 0 + 563 + 0 + + 509.5 + 104 + + 4 + + 332 + 105 + + + 332 + 668 + + + 693 + 668 + + + 693 + 105 + + + 334 + 685 + 109 + 663 + + + 0.106571936056838 + 0.106571936056838 + + + + + Digital + 70 + Digital + + Digital + Digital streaming + + + + + 4C + CurvedLinearArray + Digital + + + Digital + 0 + Digital + + Digital + Digital streaming + + + + + + Philips_IU22 + + L17-5 + LinearArray + DVI + + + DVI + 0 + WidthMaxDepth4 + + 1680 + 1050 + + 0 + + WidthMaxDepth2p5 + Width: Max, Depth: 2.5 cm + 0 + 506 + 0 + + 743 + 274 + + 4 + + 356 + 274 + + + 356 + 780 + + + 1131 + 780 + + + 1131 + 274 + + + 356 + 1083 + 272 + 780 + + + 0.0494315373208107 + 0.0494315373208107 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 0 + 606 + 0 + + 743 + 225 + + 4 + + 455 + 225 + + + 455 + 830 + + + 1032 + 830 + + + 1032 + 225 + + + 455 + 1032 + 223 + 830 + + + 0.0664451827242525 + 0.0664451827242525 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 0 + 606 + 0 + + 745 + 225 + + 4 + + 551 + 225 + + + 551 + 830 + + + 938 + 830 + + + 938 + 225 + + + 551 + 938 + 223 + 830 + + + 0.0993788819875776 + 0.0993788819875776 + + + + WidthMaxDepth7 + Width: Max, Depth: 7 cm + 0 + 606 + 0 + + 745 + 225 + + 4 + + 579 + 225 + + + 579 + 830 + + + 910 + 830 + + + 910 + 225 + + + 579 + 910 + 223 + 830 + + + 0.115942028985507 + 0.115942028985507 + + + + Calibration + ONLY for Calibration recordings made 28.01.2014 + 0 + 288 + 0 + + 184.5 + 157 + + 4 + + 170 + 157 + + + 170 + 446 + + + 539 + 446 + + + 539 + 157 + + + 170 + 516 + 170 + 446 + + + 0.1038 + 0.0865 + + + + + + + Philips_HD7XE + + 15-6L + LinearArray + DVI + + + DVI + 0 + Depth4 + + 800 + 600 + + 0 + + Depth2 + Depth: 2 cm + 0 + 449 + 0 + + 335.5 + 53 + + 4 + + 48 + 53 + + + 48 + 502 + + + 623 + 502 + + + 623 + 53 + + + 48 + 623 + 52 + 502 + + + 0.0442468130410275 + 0.0442468130410275 + + + + Depth4 + Depth: 4 cm + 0 + 450 + 0 + + 335.5 + 53 + + 4 + + 192 + 53 + + + 192 + 503 + + + 479 + 503 + + + 479 + 53 + + + 192 + 479 + 52 + 503 + + + 0.0884936260820549 + 0.0884936260820549 + + + + Depth6 + Depth: 6 cm + 0 + 450 + 0 + + 335.5 + 53 + + 4 + + 240 + 53 + + + 240 + 503 + + + 431 + 503 + + + 431 + 53 + + + 240 + 431 + 52 + 503 + + + 0.132740439123082 + 0.132740439123082 + + + + Depth8 + Depth: 8 cm + 0 + 452 + 0 + + 335.5 + 52 + + 4 + + 264 + 52 + + + 264 + 504 + + + 407 + 504 + + + 407 + 52 + + + 264 + 407 + 51 + 504 + + + 0.17698725216411 + 0.17698725216411 + + + + + + + Olympus Exera + + EBUS + CurvedLinearArray + DVI + + + 40 + DVI + WidthMaxDepth4 + + 720 + 576 + + 0 + + WidthMaxDepth2 + Width: Max, Depth: 2.0 cm + 46.9512 + 432.518014447505 + 184.230837303473 + + 349.615533803648 + -119.661421687757 + + 4 + + 276.225615042247 + 49.3205928514639 + + + 103.928390496405 + 446.039005879409 + + + 594.928390496405 + 446.201413703814 + + + 422.225615042247 + 49.6571464495344 + + + 104 + 594 + 49 + 497 + + + 0.0448430493273543 + 0.0448430493273543 + + + + WidthMaxDepth3 + Width: Max, Depth: 3.0 cm + 46.9512 + 438.984808440708 + 122.922502645651 + + 349.848811242921 + -63.8984750484017 + + 4 + + 300.881588300476 + 48.8497077927194 + + + 126.008261443238 + 451.499656998735 + + + 573.008261443238 + 451.794928088185 + + + 397.881588300476 + 49.2509570527325 + + + 127 + 573 + 48 + 498 + + + 0.0665188470066519 + 0.0665188470066519 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 46.9512 + 443.795217523073 + 92.1178759527894 + + 349.69151478681 + -36.8486846417843 + + 4 + + 312.995576519364 + 47.6445765375862 + + + 136.205982348081 + 454.706776316814 + + + 562.205982348081 + 455.127376601055 + + + 385.995576519364 + 47.8136929043983 + + + 137 + 562 + 47 + 499 + + + 0.0879765395894428 + 0.0879765395894428 + + + + WidthMaxDepth5p1 + Width: Max, Depth: 5.1 cm + 46.9512 + 446.022870449417 + 72.5385890037485 + + 349.79712213247 + -19.4965766761504 + + 4 + + 320.900759113273 + 47.0379789992092 + + + 143.223760478731 + 456.143448432408 + + + 556.223760478731 + 456.207144363804 + + + 377.900759113273 + 47.376680184167 + + + 144 + 556 + 47 + 499 + + + 0.111358574610245 + 0.111358574610245 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 46.9512 + 446.99617589948 + 61.4931252269184 + + 349.876649160553 + -9.42440984983454 + + 4 + + 325.380340448922 + 46.9789172654866 + + + 147.315617321805 + 456.977131464551 + + + 552.315617321805 + 457.030125480053 + + + 373.380340448922 + 47.399713073397 + + + 148 + 552 + 46 + 499 + + + 0.131233595800525 + 0.131233595800525 + + + + + + + Olympus Exera III + + EBUS + CurvedLinearArray + DVI + + + 100 + DVI + WidthMaxDepth4 + + 640 + 480 + + 0 + + WidthMaxDepth2 + Width: Max, Depth: 2 cm + 67.52952 + 386.255174972005 + 137.088990050699 + + 368.120569004237 + -46.5626282469226 + + 4 + + 291.928645556043 + 67.4030770963311 + + + 77.2540410378263 + 388.507225882362 + + + 658.254041037826 + 388.996418805307 + + + 443.928645556043 + 67.6587652073519 + + + 171 + 565 + 66 + 417 + + + 0.0557103064066852 + 0.0557103064066852 + + + + WidthMaxDepth3 + Width: Max, Depth: 3 cm + 67.34952 + 391.940795800609 + 90.5580916630676 + + 369.162587203462 + -5.40084030072551 + + 4 + + 318.950128496291 + 69.9614643099832 + + + 101.62762684711 + 396.133991800814 + + + 636.62762684711 + 396.18056984186 + + + 418.950128496291 + 70.242855389473 + + + 169 + 564 + 67 + 420 + + + 0.0835654596100279 + 0.0835654596100279 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 66.44952 + 399.127136743357 + 68.5517439553779 + + 368.972956726604 + 9.64129798077524 + + 4 + + 331.411757869272 + 66.9867244742947 + + + 112.720111419937 + 400.867594034426 + + + 624.720111419937 + 401.198354254681 + + + 406.411757869272 + 67.0667084566566 + + + 173 + 562 + 67 + 419 + + + 0.11142061281337 + 0.11142061281337 + + + + WidthMaxDepth5 + Width: Max, Depth: 5 cm + 65.72952 + 400.438036663988 + 58.2942868828975 + + 369.694033505773 + 18.5897932816696 + + 4 + + 338.060176124889 + 67.5543003290346 + + + 120.759297787426 + 403.903745818508 + + + 617.759297787426 + 404.464085407483 + + + 401.060176124889 + 67.7262255939856 + + + 168 + 562 + 66 + 419 + + + 0.139275766016713 + 0.139275766016713 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 65.18952 + 402.303841114076 + 49.9828045292817 + + 369.431526538722 + 25.168932900022 + + 4 + + 342.506102828243 + 67.2795290323918 + + + 125.787543628472 + 406.221185772184 + + + 612.787543628472 + 406.405157272174 + + + 395.506102828243 + 67.8116019057764 + + + 167 + 562 + 65 + 418 + + + 0.167130919220056 + 0.167130919220056 + + + + + + + Philips - Red Cross Hospital + + C8-5 + CurvedLinearArray + DVI + Generated 20140411T091042 + + DVI + 0 + WidthMaxDepth5 + + 1680 + 1050 + + + + WidthMaxDepth3 + Width: Max, Depth: 3 cm + 91.19664 + 469.983868717329 + 237.186439152229 + + 744.409625129893 + 90.0550591273387 + + 4 + + 574.951260376471 + 256.010684319166 + + + 239.170268267516 + 584.851013647602 + + + 1249.17026826752 + 585.339358769089 + + + 912.951260376471 + 256.941619719028 + + + 282 + 1089 + 256 + 797 + + + 0.0638297872340425 + 0.0638297872340425 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 91.19664 + 513.446791815228 + 193.650390877195 + + 745.418958277092 + 104.363617985479 + + 4 + + 607.06501743122 + 239.857754166006 + + + 240.231845855772 + 599.108407968122 + + + 1250.23184585577 + 599.490242502921 + + + 883.06501743122 + 240.576819571186 + + + 282 + 1089 + 239 + 811 + + + 0.0779725614101826 + 0.0779725614101826 + + + + WidthMaxDepth5 + Width: Max, Depth: 5 cm + 91.19664 + 542.449356882916 + 164.013137765557 + + 743.778882492092 + 115.493914541345 + + 4 + + 626.599341270552 + 230.251330331405 + + + 239.045224317317 + 609.79462327081 + + + 1248.04522431732 + 610.271352231412 + + + 860.599341270552 + 230.616847836556 + + + 282 + 1089 + 230 + 821 + + + 0.0920810313075506 + 0.0920810313075506 + + + + WidthMaxDepth6 + Width: Max, Depth: 6 cm + 91.19664 + 565.341603299004 + 142.018631038034 + + 745.189956196863 + 123.029313641222 + + 4 + + 643.724437905664 + 222.397518615528 + + + 239.814905958772 + 617.958156726968 + + + 1249.81490595877 + 618.722929899431 + + + 845.724437905664 + 223.339380680677 + + + 282 + 1089 + 222 + 830 + + + 0.106761565836299 + 0.106761565836299 + + + + + + + Simulator + + 12FLA-L-sim + LinearArray + SIM + + 160 + 170 + SIM + WidthMaxDepth4 + + 1024 + 768 + + 0 + + WidthMaxDepth3 + Width: Max, Depth: 3 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 59 + 68 + + + 59 + 680 + + + 845 + 680 + + + 845 + 68 + + + 59 + 845 + 68 + 680 + + + 0.0478468899521531 + 0.0478468899521531 + + + + WidthMaxDepth4 + Width: Max, Depth: 4 cm + 0 + 612 + 0 + + 451 + 68 + + 4 + + 157 + 68 + + + 157 + 680 + + + 747 + 680 + + + 747 + 68 + + + 155 + 746 + 68 + 680 + + + 0.064102417766216002 + 0.064102417766216002 + + + + WidthMaxDepth5 + Width: Max, Depth: 5 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 219 + 68 + + + 219 + 680 + + + 685 + 680 + + + 685 + 68 + + + 219 + 685 + 68 + 680 + + + 0.0809716599190283 + 0.0809716599190283 + + + + WidthMaxDepth7 + Width: Max, Depth: 7 cm + 0 + 612 + 0 + + 452 + 68 + + 4 + + 285 + 68 + + + 285 + 680 + + + 619 + 680 + + + 619 + 68 + + + 285 + 619 + 68 + 680 + + + 0.113122171945701 + 0.113122171945701 + + + + + + diff --git a/config/tool/ProbeCalibConfigs_specifications.pdf b/config/tool/ProbeCalibConfigs_specifications.pdf new file mode 100644 index 0000000000000000000000000000000000000000..70fb36fc8e86e9307e7a551e5eaeceacc951631e GIT binary patch literal 136877 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�v(A^afo<=ix$9)>{j7Zyi;KxkNXrqx)Xn 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 SU + + + + + > + + + > + + + > + > + + + + \ No newline at end of file diff --git a/config/tool/TEMPLATE_tool.xml b/config/tool/TEMPLATE_tool.xml new file mode 100755 index 0000000..699ea99 --- /dev/null +++ b/config/tool/TEMPLATE_tool.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + AccuracyPhantom.rom + Phantom Reference + Phantom Reference + Unknown + Laboratory + AccuracyPhantom.stl + + + + + + + + + + + + + + + Polaris + AccuracyPhantom.rom + AccuracyPhantom.rom + yes + + + + 134.25 134.25 99.50 + NDI + + AccuracyPhantom.rom + + + + + + + + +

    + + + + \ No newline at end of file diff --git a/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/AnserBronchoscope.xml b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/AnserBronchoscope.xml new file mode 100755 index 0000000..510e5c2 --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/AnserBronchoscope.xml @@ -0,0 +1,46 @@ + + + + + + + pointer + AnserBronchoscope + AnserBronchoscope + EMT Pointer + UCC + Bronchoscopy + Bronchoscope.stl + + + AnserBronchoscope + + + + + + + + + + + + + Aurora + Aurora01 + AuroraSensor1 + yes + 5 + 1 + 0 + NDI + + + + + + + Identity.cal + + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Bronchoscope.stl b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Bronchoscope.stl new file mode 100755 index 0000000..ae2d621 --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Bronchoscope.stl @@ -0,0 +1,646 @@ +solid Bronchoscope_v1 +facet normal -0.0 -0.0 1.0 + outer loop + vertex -2.41481456572267 -0.647047612756302 0.0 + vertex -2.41481456572267 0.647047612756302 0.0 + vertex -2.5 1.53080849893419e-16 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -2.41481456572267 0.647047612756302 0.0 + vertex -2.41481456572267 -0.647047612756302 0.0 + vertex -2.1650635094611 -1.25 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -2.41481456572267 0.647047612756302 0.0 + vertex -2.1650635094611 -1.25 0.0 + vertex -2.1650635094611 1.25 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -2.1650635094611 1.25 0.0 + vertex -2.1650635094611 -1.25 0.0 + vertex -1.76776695296637 -1.76776695296637 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -2.1650635094611 1.25 0.0 + vertex -1.76776695296637 -1.76776695296637 0.0 + vertex -1.76776695296637 1.76776695296637 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -1.76776695296637 -1.76776695296637 0.0 + vertex -1.25 -2.1650635094611 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -1.25 -2.1650635094611 0.0 + vertex -1.25 2.1650635094611 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -1.25 2.1650635094611 0.0 + vertex -1.25 -2.1650635094611 0.0 + vertex -0.647047612756303 -2.41481456572267 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -1.25 2.1650635094611 0.0 + vertex -0.647047612756303 -2.41481456572267 0.0 + vertex -0.647047612756302 2.41481456572267 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -0.647047612756302 2.41481456572267 0.0 + vertex -0.647047612756303 -2.41481456572267 0.0 + vertex -3.06161699786838e-16 -2.5 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex -0.647047612756302 2.41481456572267 0.0 + vertex -3.06161699786838e-16 -2.5 0.0 + vertex 0.0 2.5 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 0.0 2.5 0.0 + vertex -3.06161699786838e-16 -2.5 0.0 + vertex 0.647047612756301 -2.41481456572267 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 0.0 2.5 0.0 + vertex 0.647047612756301 -2.41481456572267 0.0 + vertex 0.647047612756304 2.41481456572267 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 0.647047612756304 2.41481456572267 0.0 + vertex 0.647047612756301 -2.41481456572267 0.0 + vertex 1.25 -2.1650635094611 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 0.647047612756304 2.41481456572267 0.0 + vertex 1.25 -2.1650635094611 0.0 + vertex 1.25 2.1650635094611 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 1.25 2.1650635094611 0.0 + vertex 1.25 -2.1650635094611 0.0 + vertex 1.76776695296637 -1.76776695296637 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 1.25 2.1650635094611 0.0 + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 1.76776695296637 1.76776695296637 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 1.76776695296637 1.76776695296637 0.0 + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 2.1650635094611 -1.25 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 1.76776695296637 1.76776695296637 0.0 + vertex 2.1650635094611 -1.25 0.0 + vertex 2.1650635094611 1.25 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 2.1650635094611 1.25 0.0 + vertex 2.1650635094611 -1.25 0.0 + vertex 2.41481456572267 -0.647047612756304 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 2.1650635094611 1.25 0.0 + vertex 2.41481456572267 -0.647047612756304 0.0 + vertex 2.41481456572267 0.647047612756301 0.0 + endloop +endfacet +facet normal -0.0 -0.0 1.0 + outer loop + vertex 2.41481456572267 0.647047612756301 0.0 + vertex 2.41481456572267 -0.647047612756304 0.0 + vertex 2.5 -4.59242549680257e-16 0.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -2.41481456572267 0.647047612756302 -15.0 + vertex -2.41481456572267 -0.647047612756302 -15.0 + vertex -2.5 1.53080849893419e-16 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -2.41481456572267 -0.647047612756302 -15.0 + vertex -2.41481456572267 0.647047612756302 -15.0 + vertex -2.1650635094611 1.25 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -2.41481456572267 -0.647047612756302 -15.0 + vertex -2.1650635094611 1.25 -15.0 + vertex -2.1650635094611 -1.25 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -2.1650635094611 -1.25 -15.0 + vertex -2.1650635094611 1.25 -15.0 + vertex -1.76776695296637 -1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -2.1650635094611 1.25 -15.0 + vertex -1.76776695296637 1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -1.76776695296637 1.76776695296637 -15.0 + vertex -1.25 -2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -1.25 -2.1650635094611 -15.0 + vertex -1.76776695296637 1.76776695296637 -15.0 + vertex -1.25 2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -1.25 -2.1650635094611 -15.0 + vertex -1.25 2.1650635094611 -15.0 + vertex -0.647047612756303 -2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -0.647047612756303 -2.41481456572267 -15.0 + vertex -1.25 2.1650635094611 -15.0 + vertex -0.647047612756302 2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -0.647047612756303 -2.41481456572267 -15.0 + vertex -0.647047612756302 2.41481456572267 -15.0 + vertex -3.06161699786838e-16 -2.5 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -3.06161699786838e-16 -2.5 -15.0 + vertex -0.647047612756302 2.41481456572267 -15.0 + vertex 0.0 2.5 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex -3.06161699786838e-16 -2.5 -15.0 + vertex 0.0 2.5 -15.0 + vertex 0.647047612756301 -2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 0.647047612756301 -2.41481456572267 -15.0 + vertex 0.0 2.5 -15.0 + vertex 0.647047612756304 2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 0.647047612756301 -2.41481456572267 -15.0 + vertex 0.647047612756304 2.41481456572267 -15.0 + vertex 1.25 -2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 1.25 -2.1650635094611 -15.0 + vertex 0.647047612756304 2.41481456572267 -15.0 + vertex 1.25 2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 1.25 -2.1650635094611 -15.0 + vertex 1.25 2.1650635094611 -15.0 + vertex 1.76776695296637 -1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 1.76776695296637 -1.76776695296637 -15.0 + vertex 1.25 2.1650635094611 -15.0 + vertex 1.76776695296637 1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 1.76776695296637 -1.76776695296637 -15.0 + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 2.1650635094611 -1.25 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 2.1650635094611 -1.25 -15.0 + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 2.1650635094611 1.25 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 2.1650635094611 -1.25 -15.0 + vertex 2.1650635094611 1.25 -15.0 + vertex 2.41481456572267 -0.647047612756304 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 2.41481456572267 -0.647047612756304 -15.0 + vertex 2.1650635094611 1.25 -15.0 + vertex 2.41481456572267 0.647047612756301 -15.0 + endloop +endfacet +facet normal 0.0 0.0 -1.0 + outer loop + vertex 2.41481456572267 -0.647047612756304 -15.0 + vertex 2.41481456572267 0.647047612756301 -15.0 + vertex 2.5 -4.59242549680257e-16 -15.0 + endloop +endfacet +facet normal -0.793353340291235 0.608761429008721 0.0 + outer loop + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -2.1650635094611 1.25 -15.0 + vertex -2.1650635094611 1.25 0.0 + endloop +endfacet +facet normal -0.793353340291235 0.608761429008721 0.0 + outer loop + vertex -2.1650635094611 1.25 -15.0 + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -1.76776695296637 1.76776695296637 -15.0 + endloop +endfacet +facet normal -0.608761429008721 0.793353340291235 0.0 + outer loop + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -1.25 2.1650635094611 -15.0 + vertex -1.76776695296637 1.76776695296637 -15.0 + endloop +endfacet +facet normal -0.608761429008721 0.793353340291235 0.0 + outer loop + vertex -1.25 2.1650635094611 -15.0 + vertex -1.76776695296637 1.76776695296637 0.0 + vertex -1.25 2.1650635094611 0.0 + endloop +endfacet +facet normal -0.382683432365089 0.923879532511287 0.0 + outer loop + vertex -1.25 2.1650635094611 0.0 + vertex -0.647047612756302 2.41481456572267 -15.0 + vertex -1.25 2.1650635094611 -15.0 + endloop +endfacet +facet normal -0.382683432365089 0.923879532511287 0.0 + outer loop + vertex -0.647047612756302 2.41481456572267 -15.0 + vertex -1.25 2.1650635094611 0.0 + vertex -0.647047612756302 2.41481456572267 0.0 + endloop +endfacet +facet normal -0.130526192220052 0.99144486137381 0.0 + outer loop + vertex -0.647047612756302 2.41481456572267 0.0 + vertex 0.0 2.5 -15.0 + vertex -0.647047612756302 2.41481456572267 -15.0 + endloop +endfacet +facet normal -0.130526192220052 0.99144486137381 0.0 + outer loop + vertex 0.0 2.5 -15.0 + vertex -0.647047612756302 2.41481456572267 0.0 + vertex 0.0 2.5 0.0 + endloop +endfacet +facet normal 0.130526192220052 0.99144486137381 0.0 + outer loop + vertex 0.0 2.5 0.0 + vertex 0.647047612756304 2.41481456572267 -15.0 + vertex 0.0 2.5 -15.0 + endloop +endfacet +facet normal 0.130526192220052 0.99144486137381 0.0 + outer loop + vertex 0.647047612756304 2.41481456572267 -15.0 + vertex 0.0 2.5 0.0 + vertex 0.647047612756304 2.41481456572267 0.0 + endloop +endfacet +facet normal 0.382683432365091 0.923879532511286 0.0 + outer loop + vertex 0.647047612756304 2.41481456572267 0.0 + vertex 1.25 2.1650635094611 -15.0 + vertex 0.647047612756304 2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.382683432365091 0.923879532511286 0.0 + outer loop + vertex 1.25 2.1650635094611 -15.0 + vertex 0.647047612756304 2.41481456572267 0.0 + vertex 1.25 2.1650635094611 0.0 + endloop +endfacet +facet normal 0.60876142900872 0.793353340291235 0.0 + outer loop + vertex 1.25 2.1650635094611 0.0 + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 1.25 2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.60876142900872 0.793353340291235 0.0 + outer loop + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 1.25 2.1650635094611 0.0 + vertex 1.76776695296637 1.76776695296637 0.0 + endloop +endfacet +facet normal 0.793353340291236 0.60876142900872 0.0 + outer loop + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 2.1650635094611 1.25 0.0 + vertex 2.1650635094611 1.25 -15.0 + endloop +endfacet +facet normal 0.793353340291236 0.60876142900872 0.0 + outer loop + vertex 2.1650635094611 1.25 0.0 + vertex 1.76776695296637 1.76776695296637 -15.0 + vertex 1.76776695296637 1.76776695296637 0.0 + endloop +endfacet +facet normal 0.923879532511287 0.382683432365089 0.0 + outer loop + vertex 2.1650635094611 1.25 -15.0 + vertex 2.41481456572267 0.647047612756301 0.0 + vertex 2.41481456572267 0.647047612756301 -15.0 + endloop +endfacet +facet normal 0.923879532511287 0.382683432365089 0.0 + outer loop + vertex 2.41481456572267 0.647047612756301 0.0 + vertex 2.1650635094611 1.25 -15.0 + vertex 2.1650635094611 1.25 0.0 + endloop +endfacet +facet normal 0.99144486137381 0.130526192220051 0.0 + outer loop + vertex 2.41481456572267 0.647047612756301 -15.0 + vertex 2.5 -4.59242549680257e-16 0.0 + vertex 2.5 -4.59242549680257e-16 -15.0 + endloop +endfacet +facet normal 0.99144486137381 0.130526192220051 0.0 + outer loop + vertex 2.5 -4.59242549680257e-16 0.0 + vertex 2.41481456572267 0.647047612756301 -15.0 + vertex 2.41481456572267 0.647047612756301 0.0 + endloop +endfacet +facet normal 0.99144486137381 -0.130526192220052 0.0 + outer loop + vertex 2.5 -4.59242549680257e-16 -15.0 + vertex 2.41481456572267 -0.647047612756304 0.0 + vertex 2.41481456572267 -0.647047612756304 -15.0 + endloop +endfacet +facet normal 0.99144486137381 -0.130526192220052 0.0 + outer loop + vertex 2.41481456572267 -0.647047612756304 0.0 + vertex 2.5 -4.59242549680257e-16 -15.0 + vertex 2.5 -4.59242549680257e-16 0.0 + endloop +endfacet +facet normal 0.923879532511286 -0.382683432365091 0.0 + outer loop + vertex 2.41481456572267 -0.647047612756304 -15.0 + vertex 2.1650635094611 -1.25 0.0 + vertex 2.1650635094611 -1.25 -15.0 + endloop +endfacet +facet normal 0.923879532511286 -0.382683432365091 0.0 + outer loop + vertex 2.1650635094611 -1.25 0.0 + vertex 2.41481456572267 -0.647047612756304 -15.0 + vertex 2.41481456572267 -0.647047612756304 0.0 + endloop +endfacet +facet normal 0.793353340291235 -0.608761429008721 0.0 + outer loop + vertex 2.1650635094611 -1.25 -15.0 + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 1.76776695296637 -1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.793353340291235 -0.608761429008721 0.0 + outer loop + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 2.1650635094611 -1.25 -15.0 + vertex 2.1650635094611 -1.25 0.0 + endloop +endfacet +facet normal 0.608761429008721 -0.793353340291235 0.0 + outer loop + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 1.25 -2.1650635094611 -15.0 + vertex 1.76776695296637 -1.76776695296637 -15.0 + endloop +endfacet +facet normal 0.608761429008721 -0.793353340291235 0.0 + outer loop + vertex 1.25 -2.1650635094611 -15.0 + vertex 1.76776695296637 -1.76776695296637 0.0 + vertex 1.25 -2.1650635094611 0.0 + endloop +endfacet +facet normal 0.382683432365089 -0.923879532511287 0.0 + outer loop + vertex 1.25 -2.1650635094611 0.0 + vertex 0.647047612756301 -2.41481456572267 -15.0 + vertex 1.25 -2.1650635094611 -15.0 + endloop +endfacet +facet normal 0.382683432365089 -0.923879532511287 0.0 + outer loop + vertex 0.647047612756301 -2.41481456572267 -15.0 + vertex 1.25 -2.1650635094611 0.0 + vertex 0.647047612756301 -2.41481456572267 0.0 + endloop +endfacet +facet normal 0.130526192220051 -0.99144486137381 0.0 + outer loop + vertex 0.647047612756301 -2.41481456572267 0.0 + vertex -3.06161699786838e-16 -2.5 -15.0 + vertex 0.647047612756301 -2.41481456572267 -15.0 + endloop +endfacet +facet normal 0.130526192220051 -0.99144486137381 0.0 + outer loop + vertex -3.06161699786838e-16 -2.5 -15.0 + vertex 0.647047612756301 -2.41481456572267 0.0 + vertex -3.06161699786838e-16 -2.5 0.0 + endloop +endfacet +facet normal -0.130526192220052 -0.99144486137381 -0.0 + outer loop + vertex -3.06161699786838e-16 -2.5 0.0 + vertex -0.647047612756303 -2.41481456572267 -15.0 + vertex -3.06161699786838e-16 -2.5 -15.0 + endloop +endfacet +facet normal -0.130526192220052 -0.99144486137381 -0.0 + outer loop + vertex -0.647047612756303 -2.41481456572267 -15.0 + vertex -3.06161699786838e-16 -2.5 0.0 + vertex -0.647047612756303 -2.41481456572267 0.0 + endloop +endfacet +facet normal -0.38268343236509 -0.923879532511287 -0.0 + outer loop + vertex -0.647047612756303 -2.41481456572267 0.0 + vertex -1.25 -2.1650635094611 -15.0 + vertex -0.647047612756303 -2.41481456572267 -15.0 + endloop +endfacet +facet normal -0.38268343236509 -0.923879532511287 -0.0 + outer loop + vertex -1.25 -2.1650635094611 -15.0 + vertex -0.647047612756303 -2.41481456572267 0.0 + vertex -1.25 -2.1650635094611 0.0 + endloop +endfacet +facet normal -0.608761429008721 -0.793353340291235 -0.0 + outer loop + vertex -1.25 -2.1650635094611 0.0 + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -1.25 -2.1650635094611 -15.0 + endloop +endfacet +facet normal -0.608761429008721 -0.793353340291235 -0.0 + outer loop + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -1.25 -2.1650635094611 0.0 + vertex -1.76776695296637 -1.76776695296637 0.0 + endloop +endfacet +facet normal -0.793353340291235 -0.608761429008721 -0.0 + outer loop + vertex -2.1650635094611 -1.25 0.0 + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -1.76776695296637 -1.76776695296637 0.0 + endloop +endfacet +facet normal -0.793353340291235 -0.608761429008721 -0.0 + outer loop + vertex -1.76776695296637 -1.76776695296637 -15.0 + vertex -2.1650635094611 -1.25 0.0 + vertex -2.1650635094611 -1.25 -15.0 + endloop +endfacet +facet normal -0.923879532511287 -0.382683432365089 -0.0 + outer loop + vertex -2.41481456572267 -0.647047612756302 0.0 + vertex -2.1650635094611 -1.25 -15.0 + vertex -2.1650635094611 -1.25 0.0 + endloop +endfacet +facet normal -0.923879532511287 -0.382683432365089 -0.0 + outer loop + vertex -2.1650635094611 -1.25 -15.0 + vertex -2.41481456572267 -0.647047612756302 0.0 + vertex -2.41481456572267 -0.647047612756302 -15.0 + endloop +endfacet +facet normal -0.99144486137381 -0.130526192220052 -0.0 + outer loop + vertex -2.5 1.53080849893419e-16 0.0 + vertex -2.41481456572267 -0.647047612756302 -15.0 + vertex -2.41481456572267 -0.647047612756302 0.0 + endloop +endfacet +facet normal -0.99144486137381 -0.130526192220052 -0.0 + outer loop + vertex -2.41481456572267 -0.647047612756302 -15.0 + vertex -2.5 1.53080849893419e-16 0.0 + vertex -2.5 1.53080849893419e-16 -15.0 + endloop +endfacet +facet normal -0.99144486137381 0.130526192220052 0.0 + outer loop + vertex -2.41481456572267 0.647047612756302 0.0 + vertex -2.5 1.53080849893419e-16 -15.0 + vertex -2.5 1.53080849893419e-16 0.0 + endloop +endfacet +facet normal -0.99144486137381 0.130526192220052 0.0 + outer loop + vertex -2.5 1.53080849893419e-16 -15.0 + vertex -2.41481456572267 0.647047612756302 0.0 + vertex -2.41481456572267 0.647047612756302 -15.0 + endloop +endfacet +facet normal -0.923879532511287 0.38268343236509 0.0 + outer loop + vertex -2.1650635094611 1.25 0.0 + vertex -2.41481456572267 0.647047612756302 -15.0 + vertex -2.41481456572267 0.647047612756302 0.0 + endloop +endfacet +facet normal -0.923879532511287 0.38268343236509 0.0 + outer loop + vertex -2.41481456572267 0.647047612756302 -15.0 + vertex -2.1650635094611 1.25 0.0 + vertex -2.1650635094611 1.25 -15.0 + endloop +endfacet +endsolid Bronchoscope_v1 diff --git a/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Identity.cal b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Identity.cal new file mode 100755 index 0000000..d08d54d --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Bronchoscope/Identity.cal @@ -0,0 +1,6 @@ + 1.000 0.000 0.000 0.000 + 0.000 1.000 0.000 0.000 + 0.000 0.000 1.000 0.000 + 0.000 0.000 0.000 1.000 + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.cal b/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.cal new file mode 100644 index 0000000..29664b9 --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.cal @@ -0,0 +1,6 @@ + -1.000 0.000 0.000 0.000 + 0.000 -1.000 0.000 0.000 + 0.000 0.000 1.000 0.000 + 0.000 0.000 0.000 1.000 + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.xml b/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.xml new file mode 100755 index 0000000..5ba24bd --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Catheter/AnserCatheter.xml @@ -0,0 +1,46 @@ + + + + + + + pointer + AnserCatheter + AnserCatheter + EMT Pointer + UCC + Bronchoscopy + Catheter_2mm_with_Sensor_Model.stl + + + Pointer_3 + + + + + + + + + + + + + Aurora + Aurora01 + AuroraSensor1 + yes + 5 + 1 + 0 + NDI + + + + + + + AnserCatheter.cal + + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Catheter/Catheter_2mm_with_Sensor_Model.stl b/config/tool/Tools/Bronchoscopy/Anser_Catheter/Catheter_2mm_with_Sensor_Model.stl new file mode 100644 index 0000000..130c35d --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Catheter/Catheter_2mm_with_Sensor_Model.stl @@ -0,0 +1,5392 @@ +solid Catheter_2mm_with_Sensor_Model +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.3903014181382605 1.4566247227581783 2.8199664825478975e-15 + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + vertex 0.0 1.5080088792679829 2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + vertex -0.3903014181382605 1.4566247227581783 2.8199664825478975e-15 + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + vertex -0.49999999999999994 0.8660254037844385 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.49999999999999994 0.8660254037844385 1.4099832412739487e-15 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + vertex -1.456624722758178 0.3903014181382616 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -1.456624722758178 0.3903014181382616 0.0 + vertex -0.8660254037844388 0.4999999999999998 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.8660254037844388 0.4999999999999998 1.4099832412739487e-15 + vertex -1.456624722758178 0.3903014181382616 0.0 + vertex -0.9659258262890689 0.25881904510252046 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.9659258262890689 0.25881904510252046 0.0 + vertex -1.456624722758178 0.3903014181382616 0.0 + vertex -1.5080088792679829 0.0 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.9659258262890689 0.25881904510252046 0.0 + vertex -1.5080088792679829 0.0 0.0 + vertex -0.9999999999999999 0.0 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.9999999999999999 0.0 0.0 + vertex -1.5080088792679829 0.0 0.0 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.9999999999999999 0.0 0.0 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + vertex -0.965925826289068 -0.258819045102521 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.965925826289068 -0.258819045102521 -1.4099832412739487e-15 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + vertex -0.7071067811865476 -0.7071067811865476 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.7071067811865476 -0.7071067811865476 -1.4099832412739487e-15 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.25881904510252135 -0.9659258262890685 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.25881904510252135 -0.9659258262890685 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.06470476127563704 -1.0167367306603932 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.06470476127563704 -1.0167367306603932 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.125000000000004 -1.0417118362865505 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.125000000000004 -1.0417118362865505 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.2165063509461133 -1.133218187232661 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.2165063509461133 -1.133218187232661 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.24148145657227119 -1.1935134259570301 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.24148145657227119 -1.1935134259570301 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.2500000000000045 -1.25821818723266 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.2500000000000045 -1.25821818723266 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex -0.2165063509461151 -1.3832181872326594 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.2165063509461151 -1.3832181872326594 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex -0.17677669529664136 -1.4349948825292964 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.17677669529664136 -1.4349948825292964 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex -0.12500000000000225 -1.4747245381787706 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex -0.12500000000000225 -1.4747245381787706 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + vertex 0.49999999999999994 0.8660254037844388 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + vertex 0.49999999999999994 0.8660254037844388 1.4099832412739487e-15 + vertex 0.7071067811865474 0.7071067811865479 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + vertex 0.7071067811865474 0.7071067811865479 1.4099832412739487e-15 + vertex 1.4566247227581788 0.39030141813826297 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 0.39030141813826297 0.0 + vertex 0.7071067811865474 0.7071067811865479 1.4099832412739487e-15 + vertex 0.866025403784439 0.5000000000000004 1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 0.39030141813826297 0.0 + vertex 0.866025403784439 0.5000000000000004 1.4099832412739487e-15 + vertex 0.9659258262890673 0.25881904510252135 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 0.39030141813826297 0.0 + vertex 0.9659258262890673 0.25881904510252135 0.0 + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + vertex 0.9659258262890673 0.25881904510252135 0.0 + vertex 1.0 1.762479051592436e-16 0.0 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + vertex 1.0 1.762479051592436e-16 0.0 + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + vertex 1.0 1.762479051592436e-16 0.0 + vertex 0.9659258262890691 -0.25881904510252063 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + vertex 0.9659258262890691 -0.25881904510252063 -1.4099832412739487e-15 + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + vertex 0.2588190451025215 -0.9659258262890682 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.2588190451025215 -0.9659258262890682 -2.8199664825478975e-15 + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex 0.06470476127562452 -1.0167367306603927 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.06470476127562452 -1.0167367306603927 -2.8199664825478975e-15 + vertex 0.12499999999999854 -1.0417118362865505 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.12499999999999854 -1.0417118362865505 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.0814414919360216 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.0814414919360216 -2.8199664825478975e-15 + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.0814414919360216 -2.8199664825478975e-15 + vertex 0.21650635094610257 -1.133218187232661 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.21650635094610257 -1.133218187232661 -2.8199664825478975e-15 + vertex 0.24148145657226044 -1.1935134259570308 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.24148145657226044 -1.1935134259570308 -2.8199664825478975e-15 + vertex 0.24999999999999548 -1.2582181872326603 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.24999999999999548 -1.2582181872326603 -2.8199664825478975e-15 + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + vertex 0.2165063509461061 -1.3832181872326612 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.2165063509461061 -1.3832181872326612 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.4349948825292977 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.4349948825292977 -2.8199664825478975e-15 + vertex 0.12499999999999854 -1.4747245381787688 -2.8199664825478975e-15 + endloop +endfacet +facet normal -2.8446055214704387e-18 -2.0067862323808827e-15 1.0 + outer loop + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.12499999999999854 -1.4747245381787688 -2.8199664825478975e-15 + vertex 0.0654455143048394 -1.4993928138538584 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.13052619222005166 -0.9914448613738105 -1.981304842938301e-15 + outer loop + vertex 0.0 1.0000000000000198 -9.999999999999998 + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + endloop +endfacet +facet normal 0.13052619222005166 -0.9914448613738105 -1.981304842938301e-15 + outer loop + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + vertex 0.0 1.0000000000000198 -9.999999999999998 + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.38268343236508945 -0.923879532511287 -1.8462821921531214e-15 + outer loop + vertex 0.49999999999999994 0.8660254037844589 -9.999999999999998 + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + endloop +endfacet +facet normal -0.38268343236508945 -0.923879532511287 -1.8462821921531214e-15 + outer loop + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + vertex 0.49999999999999994 0.8660254037844589 -9.999999999999998 + vertex 0.49999999999999994 0.8660254037844388 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.7933533402912349 -0.608761429008721 -1.21654971898055e-15 + outer loop + vertex 0.866025403784439 0.5000000000000004 1.4099832412739487e-15 + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 0.866025403784439 0.5000000000000204 -9.999999999999998 + endloop +endfacet +facet normal -0.7933533402912349 -0.608761429008721 -1.21654971898055e-15 + outer loop + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 0.866025403784439 0.5000000000000004 1.4099832412739487e-15 + vertex 0.7071067811865474 0.7071067811865479 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.6087614290087203 -0.7933533402912354 -1.5854384610982909e-15 + outer loop + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 0.49999999999999994 0.8660254037844388 1.4099832412739487e-15 + vertex 0.49999999999999994 0.8660254037844589 -9.999999999999998 + endloop +endfacet +facet normal -0.6087614290087203 -0.7933533402912354 -1.5854384610982909e-15 + outer loop + vertex 0.49999999999999994 0.8660254037844388 1.4099832412739487e-15 + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 0.7071067811865474 0.7071067811865479 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.7933533402912359 0.6087614290087199 1.216549718980548e-15 + outer loop + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + vertex 0.7071067811865474 -0.7071067811865275 -10.000000000000002 + endloop +endfacet +facet normal -0.7933533402912359 0.6087614290087199 1.216549718980548e-15 + outer loop + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.38268343236508995 -0.9238795325112866 -1.8462821921531206e-15 + outer loop + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + vertex -0.49999999999999994 0.8660254037844385 1.4099832412739487e-15 + vertex -0.49999999999999994 0.8660254037844584 -9.999999999999998 + endloop +endfacet +facet normal 0.38268343236508995 -0.9238795325112866 -1.8462821921531206e-15 + outer loop + vertex -0.49999999999999994 0.8660254037844385 1.4099832412739487e-15 + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + vertex -0.25881904510252135 0.9659258262890683 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.6087614290087209 -0.793353340291235 -1.5854384610982903e-15 + outer loop + vertex -0.49999999999999994 0.8660254037844584 -9.999999999999998 + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -0.7071067811865476 0.7071067811865674 -9.999999999999998 + endloop +endfacet +facet normal 0.6087614290087209 -0.793353340291235 -1.5854384610982903e-15 + outer loop + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -0.49999999999999994 0.8660254037844584 -9.999999999999998 + vertex -0.49999999999999994 0.8660254037844385 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.7933533402912353 -0.6087614290087205 -1.2165497189805492e-15 + outer loop + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -0.8660254037844388 0.5000000000000197 -9.999999999999998 + vertex -0.7071067811865476 0.7071067811865674 -9.999999999999998 + endloop +endfacet +facet normal 0.7933533402912353 -0.6087614290087205 -1.2165497189805492e-15 + outer loop + vertex -0.8660254037844388 0.5000000000000197 -9.999999999999998 + vertex -0.7071067811865476 0.7071067811865476 1.4099832412739487e-15 + vertex -0.8660254037844388 0.4999999999999998 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.923879532511287 -0.3826834323650895 -7.647551239577509e-16 + outer loop + vertex -0.8660254037844388 0.4999999999999998 1.4099832412739487e-15 + vertex -0.9659258262890689 0.2588190451025404 -10.0 + vertex -0.8660254037844388 0.5000000000000197 -9.999999999999998 + endloop +endfacet +facet normal 0.923879532511287 -0.3826834323650895 -7.647551239577509e-16 + outer loop + vertex -0.9659258262890689 0.2588190451025404 -10.0 + vertex -0.8660254037844388 0.4999999999999998 1.4099832412739487e-15 + vertex -0.9659258262890689 0.25881904510252046 0.0 + endloop +endfacet +facet normal 0.9914448613738105 -0.13052619222005138 -2.6084373105482993e-16 + outer loop + vertex -0.9659258262890689 0.25881904510252046 0.0 + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + vertex -0.9659258262890689 0.2588190451025404 -10.0 + endloop +endfacet +facet normal 0.9914448613738105 -0.13052619222005138 -2.6084373105482993e-16 + outer loop + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + vertex -0.9659258262890689 0.25881904510252046 0.0 + vertex -0.9999999999999999 0.0 0.0 + endloop +endfacet +facet normal -0.923879532511287 0.38268343236508934 7.647551239577506e-16 + outer loop + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + vertex 0.9659258262890691 -0.25881904510250053 -10.000000000000002 + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + endloop +endfacet +facet normal -0.923879532511287 0.38268343236508934 7.647551239577506e-16 + outer loop + vertex 0.9659258262890691 -0.25881904510250053 -10.000000000000002 + vertex 0.866025403784439 -0.49999999999999944 -1.4099832412739487e-15 + vertex 0.9659258262890691 -0.25881904510252063 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.9238795325112868 0.38268343236508984 7.647551239577516e-16 + outer loop + vertex -0.965925826289068 -0.258819045102521 -1.4099832412739487e-15 + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + vertex -0.965925826289068 -0.2588190451025009 -10.000000000000002 + endloop +endfacet +facet normal 0.9238795325112868 0.38268343236508984 7.647551239577516e-16 + outer loop + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + vertex -0.965925826289068 -0.258819045102521 -1.4099832412739487e-15 + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.793353340291235 0.6087614290087207 1.2165497189805494e-15 + outer loop + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + endloop +endfacet +facet normal 0.793353340291235 0.6087614290087207 1.2165497189805494e-15 + outer loop + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + vertex -0.8660254037844388 -0.5000000000000001 -1.4099832412739487e-15 + vertex -0.7071067811865476 -0.7071067811865476 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.9914448613738105 0.13052619222005166 2.6084373105483047e-16 + outer loop + vertex -0.9999999999999999 0.0 0.0 + vertex -0.965925826289068 -0.2588190451025009 -10.000000000000002 + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + endloop +endfacet +facet normal 0.9914448613738105 0.13052619222005166 2.6084373105483047e-16 + outer loop + vertex -0.965925826289068 -0.2588190451025009 -10.000000000000002 + vertex -0.9999999999999999 0.0 0.0 + vertex -0.965925826289068 -0.258819045102521 -1.4099832412739487e-15 + endloop +endfacet +facet normal -0.9914448613738105 0.13052619222005102 2.6084373105482924e-16 + outer loop + vertex 0.9659258262890691 -0.25881904510252063 -1.4099832412739487e-15 + vertex 1.0 2.009226118815377e-14 -10.0 + vertex 0.9659258262890691 -0.25881904510250053 -10.000000000000002 + endloop +endfacet +facet normal -0.9914448613738105 0.13052619222005102 2.6084373105482924e-16 + outer loop + vertex 1.0 2.009226118815377e-14 -10.0 + vertex 0.9659258262890691 -0.25881904510252063 -1.4099832412739487e-15 + vertex 1.0 1.762479051592436e-16 0.0 + endloop +endfacet +facet normal -0.13052619222005102 -0.9914448613738105 -1.981304842938301e-15 + outer loop + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + vertex 0.0 1.0000000000000198 -9.999999999999998 + endloop +endfacet +facet normal -0.13052619222005102 -0.9914448613738105 -1.981304842938301e-15 + outer loop + vertex 0.0 0.9999999999999999 1.4099832412739487e-15 + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + vertex 0.2588190451025198 0.9659258262890683 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.9238795325112865 -0.38268343236509045 -7.6475512395775265e-16 + outer loop + vertex 0.9659258262890673 0.25881904510252135 0.0 + vertex 0.866025403784439 0.5000000000000204 -9.999999999999998 + vertex 0.9659258262890673 0.2588190451025413 -10.0 + endloop +endfacet +facet normal -0.9238795325112865 -0.38268343236509045 -7.6475512395775265e-16 + outer loop + vertex 0.866025403784439 0.5000000000000204 -9.999999999999998 + vertex 0.9659258262890673 0.25881904510252135 0.0 + vertex 0.866025403784439 0.5000000000000004 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.6087614290087207 0.7933533402912353 1.5854384610982909e-15 + outer loop + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + vertex -0.7071067811865476 -0.7071067811865476 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.6087614290087207 0.7933533402912353 1.5854384610982909e-15 + outer loop + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + endloop +endfacet +facet normal 0.3826834323650898 0.9238795325112868 1.8462821921531214e-15 + outer loop + vertex -0.25881904510252135 -0.9659258262890685 -2.8199664825478975e-15 + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + vertex -0.49999999999999994 -0.8660254037844392 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.3826834323650898 0.9238795325112868 1.8462821921531214e-15 + outer loop + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + vertex -0.25881904510252135 -0.9659258262890685 -2.8199664825478975e-15 + vertex -0.25881904510252135 -0.9659258262890484 -10.000000000000004 + endloop +endfacet +facet normal -0.9914448613738105 -0.13052619222005188 -2.6084373105483096e-16 + outer loop + vertex 1.0 1.762479051592436e-16 0.0 + vertex 0.9659258262890673 0.2588190451025413 -10.0 + vertex 1.0 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal -0.9914448613738105 -0.13052619222005188 -2.6084373105483096e-16 + outer loop + vertex 0.9659258262890673 0.2588190451025413 -10.0 + vertex 1.0 1.762479051592436e-16 0.0 + vertex 0.9659258262890673 0.25881904510252135 0.0 + endloop +endfacet +facet normal -0.3826834323650906 0.9238795325112865 1.8462821921531202e-15 + outer loop + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + vertex 0.2588190451025215 -0.9659258262890481 -10.000000000000004 + vertex 0.2588190451025215 -0.9659258262890682 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.3826834323650906 0.9238795325112865 1.8462821921531202e-15 + outer loop + vertex 0.2588190451025215 -0.9659258262890481 -10.000000000000004 + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + endloop +endfacet +facet normal -0.6087614290087207 0.7933533402912353 1.5854384610982909e-15 + outer loop + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + vertex 0.49999999999999994 -0.8660254037844388 -1.4099832412739487e-15 + endloop +endfacet +facet normal -0.6087614290087207 0.7933533402912353 1.5854384610982909e-15 + outer loop + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + vertex 0.7071067811865474 -0.7071067811865476 -1.4099832412739487e-15 + vertex 0.7071067811865474 -0.7071067811865275 -10.000000000000002 + endloop +endfacet +facet normal -0.1305261922200518 0.9914448613738105 1.981304842938301e-15 + outer loop + vertex 0.2588190451025215 -0.9659258262890682 -2.8199664825478975e-15 + vertex 0.0 -0.9999999999999802 -10.000000000000004 + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.1305261922200518 0.9914448613738105 1.981304842938301e-15 + outer loop + vertex 0.0 -0.9999999999999802 -10.000000000000004 + vertex 0.2588190451025215 -0.9659258262890682 -2.8199664825478975e-15 + vertex 0.2588190451025215 -0.9659258262890481 -10.000000000000004 + endloop +endfacet +facet normal 0.13052619222005132 0.9914448613738105 1.981304842938301e-15 + outer loop + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + vertex -0.25881904510252135 -0.9659258262890484 -10.000000000000004 + vertex -0.25881904510252135 -0.9659258262890685 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.13052619222005132 0.9914448613738105 1.981304842938301e-15 + outer loop + vertex -0.25881904510252135 -0.9659258262890484 -10.000000000000004 + vertex 0.0 -1.0000000000000002 -2.8199664825478975e-15 + vertex 0.0 -0.9999999999999802 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + vertex 0.0 1.0000000000000198 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.2588190451025198 0.9659258262890883 -9.999999999999998 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + vertex 0.49999999999999994 0.8660254037844589 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.49999999999999994 0.8660254037844589 -9.999999999999998 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + vertex 1.456624722758177 0.390301418138282 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.7071067811865474 0.7071067811865678 -9.999999999999998 + vertex 1.456624722758177 0.390301418138282 -10.0 + vertex 0.866025403784439 0.5000000000000204 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.866025403784439 0.5000000000000204 -9.999999999999998 + vertex 1.456624722758177 0.390301418138282 -10.0 + vertex 0.9659258262890673 0.2588190451025413 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.9659258262890673 0.2588190451025413 -10.0 + vertex 1.456624722758177 0.390301418138282 -10.0 + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.9659258262890673 0.2588190451025413 -10.0 + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + vertex 1.0 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 1.0 2.009226118815377e-14 -10.0 + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 1.0 2.009226118815377e-14 -10.0 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + vertex 0.9659258262890691 -0.25881904510250053 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.9659258262890691 -0.25881904510250053 -10.000000000000002 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.866025403784439 -0.49999999999997935 -10.000000000000002 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + vertex 0.7071067811865474 -0.7071067811865275 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.7071067811865474 -0.7071067811865275 -10.000000000000002 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.49999999999999994 -0.8660254037844187 -10.000000000000002 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 0.2588190451025215 -0.9659258262890481 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.2588190451025215 -0.9659258262890481 -10.000000000000004 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 0.0 -0.9999999999999802 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.0 -0.9999999999999802 -10.000000000000004 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + vertex -0.3903014181382605 1.4566247227581977 -9.999999999999996 + vertex 0.0 1.5080088792680022 -9.999999999999996 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.3903014181382605 1.4566247227581977 -9.999999999999996 + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + vertex 0.0 1.0000000000000198 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex 0.0 1.0000000000000198 -9.999999999999998 + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + vertex -0.25881904510252135 0.9659258262890883 -9.999999999999998 + vertex -0.49999999999999994 0.8660254037844584 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + vertex -0.49999999999999994 0.8660254037844584 -9.999999999999998 + vertex -0.7071067811865476 0.7071067811865674 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + vertex -0.7071067811865476 0.7071067811865674 -9.999999999999998 + vertex -1.456624722758177 0.3903014181382843 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758177 0.3903014181382843 -10.0 + vertex -0.7071067811865476 0.7071067811865674 -9.999999999999998 + vertex -0.8660254037844388 0.5000000000000197 -9.999999999999998 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758177 0.3903014181382843 -10.0 + vertex -0.8660254037844388 0.5000000000000197 -9.999999999999998 + vertex -0.9659258262890689 0.2588190451025404 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758177 0.3903014181382843 -10.0 + vertex -0.9659258262890689 0.2588190451025404 -10.0 + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + vertex -0.9659258262890689 0.2588190451025404 -10.0 + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + vertex -0.9999999999999999 1.9916013282994526e-14 -10.0 + vertex -0.965925826289068 -0.2588190451025009 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + vertex -0.965925826289068 -0.2588190451025009 -10.000000000000002 + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + vertex -0.8660254037844388 -0.49999999999998007 -10.000000000000002 + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + vertex -0.7071067811865476 -0.7071067811865275 -10.000000000000002 + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + vertex -0.49999999999999994 -0.8660254037844191 -10.000000000000002 + vertex -0.25881904510252135 -0.9659258262890484 -10.000000000000004 + endloop +endfacet +facet normal 0.0 1.998401444325281e-15 -1.0 + outer loop + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + vertex -0.25881904510252135 -0.9659258262890484 -10.000000000000004 + vertex 0.0 -0.9999999999999802 -10.000000000000004 + endloop +endfacet +facet normal 0.7933533402912353 -0.6087614290087205 -1.2418320860260713e-15 + outer loop + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + endloop +endfacet +facet normal 0.7933533402912353 -0.6087614290087205 -1.2418320860260713e-15 + outer loop + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.6087614290087209 -0.7933533402912352 -1.6064754598161537e-15 + outer loop + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + endloop +endfacet +facet normal 0.6087614290087209 -0.7933533402912352 -1.6064754598161537e-15 + outer loop + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + vertex 1.0663233046199165 -1.0663233046198968 -10.000000000000004 + vertex 1.0663233046199165 -1.066323304619916 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.9238795325112863 0.38268343236509106 7.418394302631766e-16 + outer loop + vertex -1.456624722758178 0.3903014181382616 0.0 + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + vertex -1.456624722758177 0.3903014181382843 -10.0 + endloop +endfacet +facet normal -0.9238795325112863 0.38268343236509106 7.418394302631766e-16 + outer loop + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + vertex -1.456624722758178 0.3903014181382616 0.0 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.7933533402912345 0.6087614290087217 1.199023008616619e-15 + outer loop + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex -1.3059739985785723 0.7540044396340131 -9.999999999999998 + endloop +endfacet +facet normal -0.7933533402912345 0.6087614290087217 1.199023008616619e-15 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex -1.3059739985785743 0.7540044396339909 1.4099832412739487e-15 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.9238795325112868 -0.3826834323650897 -7.890475905825537e-16 + outer loop + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + endloop +endfacet +facet normal 0.9238795325112868 -0.3826834323650897 -7.890475905825537e-16 + outer loop + vertex 1.3059739985785723 -0.7540044396339716 -10.000000000000002 + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + vertex 1.305973998578574 -0.7540044396339906 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.9914448613738105 -0.13052619222005132 -2.850529461317882e-16 + outer loop + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal 0.9914448613738105 -0.13052619222005132 -2.850529461317882e-16 + outer loop + vertex 1.4566247227581788 -0.3903014181382415 -10.000000000000002 + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + vertex 1.4566247227581788 -0.39030141813826086 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.9914448613738104 0.13052619222005218 2.359729612647837e-16 + outer loop + vertex 1.4566247227581788 0.39030141813826297 0.0 + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + vertex 1.456624722758177 0.390301418138282 -10.0 + endloop +endfacet +facet normal 0.9914448613738104 0.13052619222005218 2.359729612647837e-16 + outer loop + vertex 1.5080088792679829 2.009226118815377e-14 -10.0 + vertex 1.4566247227581788 0.39030141813826297 0.0 + vertex 1.5080088792679829 1.0574874309554614e-15 0.0 + endloop +endfacet +facet normal 0.9238795325112868 0.38268343236508967 7.387776132851958e-16 + outer loop + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + vertex 1.456624722758177 0.390301418138282 -10.0 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + endloop +endfacet +facet normal 0.9238795325112868 0.38268343236508967 7.387776132851958e-16 + outer loop + vertex 1.456624722758177 0.390301418138282 -10.0 + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + vertex 1.4566247227581788 0.39030141813826297 0.0 + endloop +endfacet +facet normal 0.7933533402912347 0.6087614290087213 1.190535744822548e-15 + outer loop + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + endloop +endfacet +facet normal 0.7933533402912347 0.6087614290087213 1.190535744822548e-15 + outer loop + vertex 1.3059739985785723 0.7540044396340118 -9.999999999999998 + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 1.3059739985785723 0.7540044396339922 1.4099832412739487e-15 + endloop +endfacet +facet normal 0.6087614290087203 0.7933533402912355 1.5605816782401305e-15 + outer loop + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + endloop +endfacet +facet normal 0.6087614290087203 0.7933533402912355 1.5605816782401305e-15 + outer loop + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + vertex 1.0663233046199165 1.0663233046199168 1.4099832412739487e-15 + vertex 1.0663233046199165 1.0663233046199363 -9.999999999999998 + endloop +endfacet +facet normal 0.38268343236509 0.9238795325112867 1.818353810178623e-15 + outer loop + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + endloop +endfacet +facet normal 0.38268343236509 0.9238795325112867 1.818353810178623e-15 + outer loop + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + vertex 0.7540044396339904 1.3059739985785737 2.8199664825478975e-15 + vertex 0.7540044396339904 1.3059739985785934 -9.999999999999996 + endloop +endfacet +facet normal 0.13052619222005166 0.9914448613738105 1.95362052669443e-15 + outer loop + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + vertex 0.0 1.5080088792680022 -9.999999999999996 + vertex 0.0 1.5080088792679829 2.8199664825478975e-15 + endloop +endfacet +facet normal 0.13052619222005166 0.9914448613738105 1.95362052669443e-15 + outer loop + vertex 0.0 1.5080088792680022 -9.999999999999996 + vertex 0.39030141813826247 1.4566247227581783 2.8199664825478975e-15 + vertex 0.39030141813826247 1.4566247227581974 -9.999999999999996 + endloop +endfacet +facet normal -0.13052619222005116 0.9914448613738105 1.959459318636267e-15 + outer loop + vertex 0.0 1.5080088792679829 2.8199664825478975e-15 + vertex -0.3903014181382605 1.4566247227581977 -9.999999999999996 + vertex -0.3903014181382605 1.4566247227581783 2.8199664825478975e-15 + endloop +endfacet +facet normal -0.13052619222005116 0.9914448613738105 1.959459318636267e-15 + outer loop + vertex -0.3903014181382605 1.4566247227581977 -9.999999999999996 + vertex 0.0 1.5080088792679829 2.8199664825478975e-15 + vertex 0.0 1.5080088792680022 -9.999999999999996 + endloop +endfacet +facet normal -0.3826834323650888 0.9238795325112872 1.82253528899931e-15 + outer loop + vertex -0.3903014181382605 1.4566247227581783 2.8199664825478975e-15 + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + endloop +endfacet +facet normal -0.3826834323650888 0.9238795325112872 1.82253528899931e-15 + outer loop + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + vertex -0.3903014181382605 1.4566247227581783 2.8199664825478975e-15 + vertex -0.3903014181382605 1.4566247227581977 -9.999999999999996 + endloop +endfacet +facet normal -0.6087614290087197 0.793353340291236 1.559480767229056e-15 + outer loop + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex -1.0663233046199148 1.0663233046199176 1.4099832412739487e-15 + endloop +endfacet +facet normal -0.6087614290087197 0.793353340291236 1.559480767229056e-15 + outer loop + vertex -1.0663233046199148 1.0663233046199376 -9.999999999999998 + vertex -0.7540044396339906 1.3059739985785745 2.8199664825478975e-15 + vertex -0.7540044396339906 1.3059739985785936 -9.999999999999996 + endloop +endfacet +facet normal -0.9914448613738104 0.13052619222005213 2.300132038962741e-16 + outer loop + vertex -1.5080088792679829 0.0 0.0 + vertex -1.456624722758177 0.3903014181382843 -10.0 + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + endloop +endfacet +facet normal -0.9914448613738104 0.13052619222005213 2.300132038962741e-16 + outer loop + vertex -1.456624722758177 0.3903014181382843 -10.0 + vertex -1.5080088792679829 0.0 0.0 + vertex -1.456624722758178 0.3903014181382616 0.0 + endloop +endfacet +facet normal -0.9914448613738105 -0.13052619222005152 -2.8934039837544003e-16 + outer loop + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + endloop +endfacet +facet normal -0.9914448613738105 -0.13052619222005152 -2.8934039837544003e-16 + outer loop + vertex -1.5080088792679829 2.009226118815377e-14 -10.0 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + vertex -1.5080088792679829 0.0 0.0 + endloop +endfacet +facet normal -0.9238795325112868 -0.3826834323650895 -7.886053611280648e-16 + outer loop + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + endloop +endfacet +facet normal -0.9238795325112868 -0.3826834323650895 -7.886053611280648e-16 + outer loop + vertex -1.456624722758178 -0.3903014181382415 -10.000000000000002 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + vertex -1.456624722758178 -0.39030141813826225 -1.4099832412739487e-15 + endloop +endfacet +facet normal -0.7933533402912353 -0.6087614290087207 -1.2330951162371257e-15 + outer loop + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + endloop +endfacet +facet normal -0.7933533402912353 -0.6087614290087207 -1.2330951162371257e-15 + outer loop + vertex -1.3059739985785732 -0.7540044396339712 -10.000000000000002 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -1.3059739985785732 -0.7540044396339917 -1.4099832412739487e-15 + endloop +endfacet +facet normal -0.6087614290087207 -0.7933533402912353 -1.6095952956514473e-15 + outer loop + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -1.0663233046199165 -1.0663233046198957 -10.000000000000004 + endloop +endfacet +facet normal -0.6087614290087207 -0.7933533402912353 -1.6095952956514473e-15 + outer loop + vertex -1.0663233046199165 -1.0663233046199168 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.38268343236509017 -0.9238795325112867 -1.878834282402793e-15 + outer loop + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.7540044396339906 -1.3059739985785532 -10.000000000000004 + endloop +endfacet +facet normal -0.38268343236509017 -0.9238795325112867 -1.878834282402793e-15 + outer loop + vertex -0.7540044396339906 -1.3059739985785737 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.13052619222005268 -0.9914448613738103 -2.060801626313811e-15 + outer loop + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex -0.39030141813826247 -1.4566247227581575 -10.000000000000004 + endloop +endfacet +facet normal -0.13052619222005268 -0.9914448613738103 -2.060801626313811e-15 + outer loop + vertex -0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.13052619222005268 -0.9914448613738103 -2.060801626313811e-15 + outer loop + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex -0.06467767483185792 -1.4994939018382232 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.13052619222005268 -0.9914448613738103 -2.060801626313811e-15 + outer loop + vertex -0.06467767483185792 -1.4994939018382232 -2.8199664825478975e-15 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + endloop +endfacet +facet normal -0.13052619222005268 -0.9914448613738103 -2.060801626313811e-15 + outer loop + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex -3.524958103184872e-15 -1.5080088792679833 0.03330514966530299 + endloop +endfacet +facet normal 0.13052619222005174 -0.9914448613738105 -2.0223781810156476e-15 + outer loop + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex -3.524958103184872e-15 -1.5080088792679833 0.03330514966530299 + endloop +endfacet +facet normal 0.13052619222005174 -0.9914448613738105 -2.0223781810156476e-15 + outer loop + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex 0.06467767483185087 -1.499493901838225 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.13052619222005174 -0.9914448613738105 -2.0223781810156476e-15 + outer loop + vertex 0.06467767483185087 -1.499493901838225 -2.8199664825478975e-15 + vertex 0.0 -1.5080088792679625 -10.000000000000004 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + endloop +endfacet +facet normal 0.13052619222005174 -0.9914448613738105 -2.0223781810156476e-15 + outer loop + vertex 0.06467767483185087 -1.499493901838225 -2.8199664825478975e-15 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + vertex 0.0654455143048394 -1.4993928138538584 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.13052619222005174 -0.9914448613738105 -2.0223781810156476e-15 + outer loop + vertex 0.0654455143048394 -1.4993928138538584 -2.8199664825478975e-15 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.3826834323650893 -0.9238795325112871 -1.865437742284195e-15 + outer loop + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.3903014181382607 -1.456624722758158 -10.000000000000004 + endloop +endfacet +facet normal 0.3826834323650893 -0.9238795325112871 -1.865437742284195e-15 + outer loop + vertex 0.39030141813826247 -1.456624722758178 -2.8199664825478975e-15 + vertex 0.7540044396339904 -1.305973998578554 -10.000000000000004 + vertex 0.7540044396339922 -1.3059739985785737 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.5224239143946148 -0.4008699686805964 0.7525799106265234 + outer loop + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + endloop +endfacet +facet normal -0.5224239143946148 -0.4008699686805964 0.7525799106265234 + outer loop + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + endloop +endfacet +facet normal 0.6022231583645222 -0.7848325000932163 0.14616844504506268 + outer loop + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + endloop +endfacet +facet normal 0.6022231583645222 -0.7848325000932163 0.14616844504506268 + outer loop + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + endloop +endfacet +facet normal 0.3339872812496724 0.25627745454459055 0.9070691055567914 + outer loop + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + endloop +endfacet +facet normal 0.3339872812496724 0.25627745454459055 0.9070691055567914 + outer loop + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + endloop +endfacet +facet normal 0.432673028360522 0.3320016916316126 0.8381938482732276 + outer loop + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + endloop +endfacet +facet normal 0.432673028360522 0.3320016916316126 0.8381938482732276 + outer loop + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + endloop +endfacet +facet normal -0.5128432133389782 0.6683502879127872 0.5387947022559204 + outer loop + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + endloop +endfacet +facet normal -0.5128432133389782 0.6683502879127872 0.5387947022559204 + outer loop + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + vertex -0.10169679244183076 -1.082074175756629 0.15641015763454835 + endloop +endfacet +facet normal -0.14737468979699653 0.019402245992940576 0.9888904153937728 + outer loop + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + vertex -0.03217030421014755 -1.2495981801992888 0.24979069203532045 + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + endloop +endfacet +facet normal -0.14737468979699653 0.019402245992940576 0.9888904153937728 + outer loop + vertex -0.03217030421014755 -1.2495981801992888 0.24979069203532045 + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + vertex -0.033305149665310216 -1.2582181872326603 0.24979069203532045 + endloop +endfacet +facet normal -0.05688450697813613 0.13733134823551874 0.9888904153937731 + outer loop + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + vertex -0.008620007033375373 -1.226047883022518 0.24979069203532045 + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + endloop +endfacet +facet normal -0.05688450697813613 0.13733134823551874 0.9888904153937731 + outer loop + vertex -0.008620007033375373 -1.226047883022518 0.24979069203532045 + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + vertex -0.016652574832656784 -1.2293750815456626 0.24979069203532045 + endloop +endfacet +facet normal 0.9238615992792697 -0.3826760041771556 0.0062306664294708896 + outer loop + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + vertex 0.2165063509461061 -1.3832181872326612 -2.8199664825478975e-15 + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.9238615992792697 -0.3826760041771556 0.0062306664294708896 + outer loop + vertex 0.2165063509461061 -1.3832181872326612 -2.8199664825478975e-15 + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + endloop +endfacet +facet normal -0.7217903637663498 -0.5538492257810746 0.41505385900596664 + outer loop + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + endloop +endfacet +facet normal -0.7217903637663498 -0.5538492257810746 0.41505385900596664 + outer loop + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + endloop +endfacet +facet normal -0.03756913397120014 -0.2853659038732713 0.9576820250371441 + outer loop + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + endloop +endfacet +facet normal -0.03756913397120014 -0.2853659038732713 0.9576820250371441 + outer loop + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + endloop +endfacet +facet normal 0.6528673657505664 -0.0859516192943638 0.7525799106265015 + outer loop + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + endloop +endfacet +facet normal 0.6528673657505664 -0.0859516192943638 0.7525799106265015 + outer loop + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + endloop +endfacet +facet normal 0.2562774545445938 -0.3339872812496793 0.907069105556788 + outer loop + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + endloop +endfacet +facet normal 0.2562774545445938 -0.3339872812496793 0.907069105556788 + outer loop + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + endloop +endfacet +facet normal -0.8405426812759311 0.348164178337941 0.41505385900595443 + outer loop + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + endloop +endfacet +facet normal -0.8405426812759311 0.348164178337941 0.41505385900595443 + outer loop + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + endloop +endfacet +facet normal 0.10996010695361286 -0.8352299346285954 0.5387947022559357 + outer loop + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + endloop +endfacet +facet normal 0.10996010695361286 -0.8352299346285954 0.5387947022559357 + outer loop + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + endloop +endfacet +facet normal -0.7848325000932126 -0.6022231583645179 0.14616844504509932 + outer loop + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + endloop +endfacet +facet normal -0.7848325000932126 -0.6022231583645179 0.14616844504509932 + outer loop + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + endloop +endfacet +facet normal 0.5224239143946234 0.4008699686806024 0.7525799106265141 + outer loop + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + endloop +endfacet +facet normal 0.5224239143946234 0.4008699686806024 0.7525799106265141 + outer loop + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + endloop +endfacet +facet normal 0.6014837578993824 0.46153472026719694 0.6520759089025736 + outer loop + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + endloop +endfacet +facet normal 0.6014837578993824 0.46153472026719694 0.6520759089025736 + outer loop + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + endloop +endfacet +facet normal 0.668350287912784 0.5128432133389903 0.5387947022559127 + outer loop + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + endloop +endfacet +facet normal 0.668350287912784 0.5128432133389903 0.5387947022559127 + outer loop + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + endloop +endfacet +facet normal -0.8860236063609939 0.3670029943374509 0.28332132132687005 + outer loop + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + endloop +endfacet +facet normal -0.8860236063609939 0.3670029943374509 0.28332132132687005 + outer loop + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + endloop +endfacet +facet normal -0.7933379406757759 -0.6087496124681839 0.006230666429462569 + outer loop + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + vertex -0.2165063509461151 -1.3832181872326594 -2.8199664825478975e-15 + vertex -0.17677669529664136 -1.4349948825292964 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.7933379406757759 -0.6087496124681839 0.006230666429462569 + outer loop + vertex -0.2165063509461151 -1.3832181872326594 -2.8199664825478975e-15 + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + endloop +endfacet +facet normal 0.9508204486300562 -0.12517788681931974 0.2833213213268433 + outer loop + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + endloop +endfacet +facet normal 0.9508204486300562 -0.12517788681931974 0.2833213213268433 + outer loop + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + endloop +endfacet +facet normal -0.1373313482355186 -0.05688450697813669 0.9888904153937731 + outer loop + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + vertex -0.02884310568700289 -1.2748707620653137 0.24979069203532045 + vertex -0.03217030421014755 -1.2668381942660312 0.24979069203532045 + endloop +endfacet +facet normal -0.1373313482355186 -0.05688450697813669 0.9888904153937731 + outer loop + vertex -0.02884310568700289 -1.2748707620653137 0.24979069203532045 + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + endloop +endfacet +facet normal 0.950820448630056 0.1251778868193187 0.28332132132684407 + outer loop + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + endloop +endfacet +facet normal 0.950820448630056 0.1251778868193187 0.28332132132684407 + outer loop + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + endloop +endfacet +facet normal 0.09049018281886372 -0.11792910224258348 0.9888904153937721 + outer loop + vertex 0.016652574832649734 -1.2870612929196577 0.24979069203532045 + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + vertex 0.02355029717676671 -1.2817684844094308 0.24979069203532045 + endloop +endfacet +facet normal 0.09049018281886372 -0.11792910224258348 0.9888904153937721 + outer loop + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + vertex 0.016652574832649734 -1.2870612929196577 0.24979069203532045 + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + endloop +endfacet +facet normal -0.503858413232649 -0.20870498827675263 0.8381938482732247 + outer loop + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + endloop +endfacet +facet normal -0.503858413232649 -0.20870498827675263 0.8381938482732247 + outer loop + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + endloop +endfacet +facet normal -0.2659186891137595 -0.11014712751939064 0.9576820250371451 + outer loop + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + endloop +endfacet +facet normal -0.2659186891137595 -0.11014712751939064 0.9576820250371451 + outer loop + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + endloop +endfacet +facet normal -0.38893642667766104 -0.16110274283081658 0.9070691055567928 + outer loop + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + endloop +endfacet +facet normal -0.38893642667766104 -0.16110274283081658 0.9070691055567928 + outer loop + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + endloop +endfacet +facet normal -0.7004426714296492 -0.29013285417099643 0.652075908902551 + outer loop + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + endloop +endfacet +facet normal -0.7004426714296492 -0.29013285417099643 0.652075908902551 + outer loop + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + endloop +endfacet +facet normal -0.6083755336889739 -0.25199739706994057 0.7525799106265268 + outer loop + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + endloop +endfacet +facet normal -0.6083755336889739 -0.25199739706994057 0.7525799106265268 + outer loop + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + endloop +endfacet +facet normal 0.6087496124681874 -0.7933379406757731 0.00623066642947197 + outer loop + vertex 0.12499999999999854 -1.4747245381787688 -2.8199664825478975e-15 + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + endloop +endfacet +facet normal 0.6087496124681874 -0.7933379406757731 0.00623066642947197 + outer loop + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + vertex 0.12499999999999854 -1.4747245381787688 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.4349948825292977 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.3785733036141129 -0.913956803937581 0.1461684450450875 + outer loop + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + endloop +endfacet +facet normal -0.3785733036141129 -0.913956803937581 0.1461684450450875 + outer loop + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + endloop +endfacet +facet normal -0.3339872812496736 0.25627745454458517 0.9070691055567925 + outer loop + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + endloop +endfacet +facet normal -0.3339872812496736 0.25627745454458517 0.9070691055567925 + outer loop + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + endloop +endfacet +facet normal -0.22834955514255362 0.17521877635386973 0.957682025037147 + outer loop + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + endloop +endfacet +facet normal -0.22834955514255362 0.17521877635386973 0.957682025037147 + outer loop + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + endloop +endfacet +facet normal 0.7933379406757728 -0.6087496124681876 0.006230666429484464 + outer loop + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + vertex 0.1767766952966322 -1.4349948825292977 -2.8199664825478975e-15 + vertex 0.2165063509461061 -1.3832181872326612 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.7933379406757728 -0.6087496124681876 0.006230666429484464 + outer loop + vertex 0.1767766952966322 -1.4349948825292977 -2.8199664825478975e-15 + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + endloop +endfacet +facet normal -0.10996010695361429 -0.8352299346286136 0.5387947022559071 + outer loop + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + endloop +endfacet +facet normal -0.10996010695361429 -0.8352299346286136 0.5387947022559071 + outer loop + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + endloop +endfacet +facet normal 0.005856153069759455 -0.0024256980248294163 0.9999799105283644 + outer loop + vertex 0.028843105686992138 -1.2748707620653144 0.24979069203532045 + vertex 0.032170304210136794 -1.2668381942660323 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.0038587283144483923 -0.00502879264629199 0.9999799105283645 + outer loop + vertex 0.016652574832649734 -1.2870612929196577 0.24979069203532045 + vertex 0.02355029717676671 -1.2817684844094308 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.7608457195416894 0.5838174542926037 0.28332132132685045 + outer loop + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + endloop +endfacet +facet normal 0.7608457195416894 0.5838174542926037 0.28332132132685045 + outer loop + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + endloop +endfacet +facet normal 0.7848325000932154 0.6022231583645197 0.1461684450450779 + outer loop + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + endloop +endfacet +facet normal 0.7848325000932154 0.6022231583645197 0.1461684450450779 + outer loop + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + endloop +endfacet +facet normal 0.46153472026719555 -0.6014837578993875 0.6520759089025698 + outer loop + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + endloop +endfacet +facet normal 0.46153472026719555 -0.6014837578993875 0.6520759089025698 + outer loop + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.1016967924418216 -1.434362198708691 0.15641015763454835 + endloop +endfacet +facet normal 0.7933379406757938 0.6087496124681606 0.006230666429440065 + outer loop + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + vertex 0.21650635094610257 -1.133218187232661 -2.8199664825478975e-15 + vertex 0.1767766952966322 -1.0814414919360216 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.7933379406757938 0.6087496124681606 0.006230666429440065 + outer loop + vertex 0.21650635094610257 -1.133218187232661 -2.8199664825478975e-15 + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + endloop +endfacet +facet normal 0.005856153069759481 0.0024256980248254425 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex 0.032170304210136794 -1.2495981801992897 0.24979069203532045 + vertex 0.028843105686992138 -1.2415656124000074 0.24979069203532045 + endloop +endfacet +facet normal 0.1373313482355223 0.05688450697813525 0.9888904153937726 + outer loop + vertex 0.028843105686992138 -1.2415656124000074 0.24979069203532045 + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + endloop +endfacet +facet normal 0.1373313482355223 0.05688450697813525 0.9888904153937726 + outer loop + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + vertex 0.028843105686992138 -1.2415656124000074 0.24979069203532045 + vertex 0.032170304210136794 -1.2495981801992897 0.24979069203532045 + endloop +endfacet +facet normal 0.9914256166453455 -0.13052365860349469 0.006230666429443319 + outer loop + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + vertex 0.24999999999999548 -1.2582181872326603 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.9914256166453455 -0.13052365860349469 0.006230666429443319 + outer loop + vertex 0.2414814565722622 -1.3229229485082903 -2.8199664825478975e-15 + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + endloop +endfacet +facet normal -0.6683502879127796 0.5128432133389892 0.5387947022559194 + outer loop + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + endloop +endfacet +facet normal -0.6683502879127796 0.5128432133389892 0.5387947022559194 + outer loop + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + endloop +endfacet +facet normal -0.8405426812759305 -0.34816417833794233 0.41505385900595493 + outer loop + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + endloop +endfacet +facet normal -0.8405426812759305 -0.34816417833794233 0.41505385900595493 + outer loop + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + endloop +endfacet +facet normal 0.1611027428308191 -0.3889364266776677 0.9070691055567897 + outer loop + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + endloop +endfacet +facet normal 0.1611027428308191 -0.3889364266776677 0.9070691055567897 + outer loop + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + endloop +endfacet +facet normal -0.0024256980248276066 -0.005856153069761591 0.9999799105283645 + outer loop + vertex -0.008620007033375373 -1.2903884914428019 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.016652574832656784 -1.2870612929196577 0.24979069203532045 + endloop +endfacet +facet normal 0.5538492257810632 -0.7217903637663541 0.41505385900597436 + outer loop + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + endloop +endfacet +facet normal 0.5538492257810632 -0.7217903637663541 0.41505385900597436 + outer loop + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + endloop +endfacet +facet normal 0.2659186891137522 0.11014712751938485 0.9576820250371477 + outer loop + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + endloop +endfacet +facet normal 0.2659186891137522 0.11014712751938485 0.9576820250371477 + outer loop + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + endloop +endfacet +facet normal 0.38893642667766004 0.16110274283081286 0.9070691055567938 + outer loop + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + endloop +endfacet +facet normal 0.38893642667766004 0.16110274283081286 0.9070691055567938 + outer loop + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + endloop +endfacet +facet normal -0.07118538487212357 -0.5407066799083576 0.8381938482732313 + outer loop + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + endloop +endfacet +facet normal -0.07118538487212357 -0.5407066799083576 0.8381938482732313 + outer loop + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + endloop +endfacet +facet normal -0.6528673657505389 -0.08595161929436052 0.7525799106265255 + outer loop + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + endloop +endfacet +facet normal -0.6528673657505389 -0.08595161929436052 0.7525799106265255 + outer loop + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + endloop +endfacet +facet normal -0.9238615992792736 -0.3826760041771471 0.0062306664294413065 + outer loop + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + vertex -0.2165063509461151 -1.3832181872326594 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.9238615992792736 -0.3826760041771471 0.0062306664294413065 + outer loop + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + endloop +endfacet +facet normal -0.14737468979699647 -0.019402245992944756 0.9888904153937728 + outer loop + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + vertex -0.033305149665310216 -1.2582181872326603 0.24979069203532045 + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + endloop +endfacet +facet normal -0.14737468979699647 -0.019402245992944756 0.9888904153937728 + outer loop + vertex -0.033305149665310216 -1.2582181872326603 0.24979069203532045 + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + vertex -0.03217030421014755 -1.2668381942660312 0.24979069203532045 + endloop +endfacet +facet normal -0.006284426339275533 -0.0008273604234717379 0.9999799105283644 + outer loop + vertex -0.03217030421014755 -1.2668381942660312 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.033305149665310216 -1.2582181872326603 0.24979069203532045 + endloop +endfacet +facet normal -0.1611027428308122 -0.3889364266776588 0.9070691055567944 + outer loop + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + endloop +endfacet +facet normal -0.1611027428308122 -0.3889364266776588 0.9070691055567944 + outer loop + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + endloop +endfacet +facet normal 0.11014712751938689 -0.2659186891137451 0.9576820250371494 + outer loop + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + endloop +endfacet +facet normal 0.11014712751938689 -0.2659186891137451 0.9576820250371494 + outer loop + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + endloop +endfacet +facet normal 0.17521877635385927 -0.2283495551425441 0.9576820250371512 + outer loop + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + endloop +endfacet +facet normal 0.17521877635385927 -0.2283495551425441 0.9576820250371512 + outer loop + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + vertex 0.049083025594433505 -1.3432324813514294 0.23537027852899356 + endloop +endfacet +facet normal -0.41738019737540444 -0.05494914542799168 0.9070691055567939 + outer loop + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + endloop +endfacet +facet normal -0.41738019737540444 -0.05494914542799168 0.9070691055567939 + outer loop + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + endloop +endfacet +facet normal -0.5407066799083692 -0.07118538487212282 0.8381938482732236 + outer loop + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + endloop +endfacet +facet normal -0.5407066799083692 -0.07118538487212282 0.8381938482732236 + outer loop + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + vertex -0.15108061075316143 -1.2987001148759696 0.2033935848836513 + vertex -0.12404654452066631 -1.2914563586608427 0.22144805975514487 + endloop +endfacet +facet normal 0.5038584132326399 0.20870498827674513 0.838193848273232 + outer loop + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + endloop +endfacet +facet normal 0.5038584132326399 0.20870498827674513 0.838193848273232 + outer loop + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + vertex 0.11121708922442215 -1.1940069708304502 0.22144805975514487 + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + endloop +endfacet +facet normal 0.6083755336889972 0.25199739706994767 0.7525799106265056 + outer loop + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + endloop +endfacet +facet normal 0.6083755336889972 0.25199739706994767 0.7525799106265056 + outer loop + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + vertex 0.13545516992144335 -1.1800131084153849 0.2033935848836513 + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + endloop +endfacet +facet normal 0.13733134823552332 -0.05688450697813956 0.9888904153937723 + outer loop + vertex 0.028843105686992138 -1.2748707620653144 0.24979069203532045 + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + vertex 0.032170304210136794 -1.2668381942660323 0.24979069203532045 + endloop +endfacet +facet normal 0.13733134823552332 -0.05688450697813956 0.9888904153937723 + outer loop + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + vertex 0.028843105686992138 -1.2748707620653144 0.24979069203532045 + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + endloop +endfacet +facet normal -0.9807964619786421 0.1291243038443659 0.1461684450450445 + outer loop + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + endloop +endfacet +facet normal -0.9807964619786421 0.1291243038443659 0.1461684450450445 + outer loop + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + endloop +endfacet +facet normal -0.11014712751939307 0.26591868911375366 0.9576820250371463 + outer loop + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + endloop +endfacet +facet normal -0.11014712751939307 0.26591868911375366 0.9576820250371463 + outer loop + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + endloop +endfacet +facet normal 0.7004426714296358 0.29013285417098905 0.6520759089025685 + outer loop + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + endloop +endfacet +facet normal 0.7004426714296358 0.29013285417098905 0.6520759089025685 + outer loop + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + vertex 0.1572429703287134 -1.1674339159851985 0.18156854249492158 + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + endloop +endfacet +facet normal 0.7783103948663921 0.32238672128961415 0.5387947022559274 + outer loop + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + endloop +endfacet +facet normal 0.7783103948663921 0.32238672128961415 0.5387947022559274 + outer loop + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + vertex 0.17614401147602587 -1.156521394790833 0.15641015763454835 + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + endloop +endfacet +facet normal 0.43267302836052174 -0.3320016916316136 0.8381938482732274 + outer loop + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + endloop +endfacet +facet normal 0.43267302836052174 -0.3320016916316136 0.8381938482732274 + outer loop + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + endloop +endfacet +facet normal 0.840542681275922 -0.3481641783379376 0.4150538590059757 + outer loop + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + endloop +endfacet +facet normal 0.840542681275922 -0.3481641783379376 0.4150538590059757 + outer loop + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + endloop +endfacet +facet normal 0.8405426812759224 0.34816417833793645 0.41505385900597624 + outer loop + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + endloop +endfacet +facet normal 0.8405426812759224 0.34816417833793645 0.41505385900597624 + outer loop + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + endloop +endfacet +facet normal 0.14737468979700055 0.019402245992941495 0.9888904153937722 + outer loop + vertex 0.032170304210136794 -1.2495981801992897 0.24979069203532045 + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + endloop +endfacet +facet normal 0.14737468979700055 0.019402245992941495 0.9888904153937722 + outer loop + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + vertex 0.032170304210136794 -1.2495981801992897 0.24979069203532045 + vertex 0.03330514966530299 -1.2582181872326608 0.24979069203532045 + endloop +endfacet +facet normal 0.886023606361 0.3670029943374525 0.28332132132684895 + outer loop + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + endloop +endfacet +facet normal 0.886023606361 0.3670029943374525 0.28332132132684895 + outer loop + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + endloop +endfacet +facet normal 0.9139568039375788 0.3785733036141193 0.14616844504508508 + outer loop + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + endloop +endfacet +facet normal 0.9139568039375788 0.3785733036141193 0.14616844504508508 + outer loop + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + vertex 0.21207345690411228 -1.1357775198010933 0.06624714438645385 + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + endloop +endfacet +facet normal 0.9914256166453436 0.13052365860350945 0.006230666429415439 + outer loop + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + vertex 0.24999999999999548 -1.2582181872326603 -2.8199664825478975e-15 + vertex 0.24148145657226044 -1.1935134259570308 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.9914256166453436 0.13052365860350945 0.006230666429415439 + outer loop + vertex 0.24999999999999548 -1.2582181872326603 -2.8199664825478975e-15 + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + endloop +endfacet +facet normal 0.9807964619786363 0.12912430384437854 0.14616844504507112 + outer loop + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + endloop +endfacet +facet normal 0.9807964619786363 0.12912430384437854 0.14616844504507112 + outer loop + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + vertex 0.23653720572043838 -1.1948382339799533 0.06624714438645385 + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + endloop +endfacet +facet normal -0.0008273604234696572 -0.006284426339277678 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.008620007033375373 -1.2903884914428019 0.24979069203532045 + endloop +endfacet +facet normal -0.4326730283605234 -0.3320016916316159 0.8381938482732255 + outer loop + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + endloop +endfacet +facet normal -0.4326730283605234 -0.3320016916316159 0.8381938482732255 + outer loop + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + vertex -0.1354551699214543 -1.3364232660499356 0.2033935848836513 + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + endloop +endfacet +facet normal 0.41738019737540477 -0.054949145427991536 0.9070691055567938 + outer loop + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + endloop +endfacet +facet normal 0.41738019737540477 -0.054949145427991536 0.9070691055567938 + outer loop + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + endloop +endfacet +facet normal 0.9807964619786363 -0.12912430384437898 0.1461684450450708 + outer loop + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + vertex 0.24979069203532028 -1.25821818723266 0.03330514966530299 + endloop +endfacet +facet normal 0.9807964619786363 -0.12912430384437898 0.1461684450450708 + outer loop + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + vertex 0.24488133486312977 -1.25821818723266 0.06624714438645385 + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + endloop +endfacet +facet normal 0.16110274283081621 0.38893642667766315 0.9070691055567921 + outer loop + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + endloop +endfacet +facet normal 0.16110274283081621 0.38893642667766315 0.9070691055567921 + outer loop + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + endloop +endfacet +facet normal -0.6014837578993947 -0.4615347202672067 0.6520759089025554 + outer loop + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + vertex -0.15724297032872397 -1.349002458480122 0.18156854249492158 + endloop +endfacet +facet normal -0.6014837578993947 -0.4615347202672067 0.6520759089025554 + outer loop + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + endloop +endfacet +facet normal 0.652867365750566 0.08595161929436099 0.7525799106265021 + outer loop + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + endloop +endfacet +facet normal 0.652867365750566 0.08595161929436099 0.7525799106265021 + outer loop + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + endloop +endfacet +facet normal -0.2853659038732668 -0.03756913397120283 0.9576820250371453 + outer loop + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + endloop +endfacet +facet normal -0.2853659038732668 -0.03756913397120283 0.9576820250371453 + outer loop + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + vertex -0.09482112410815335 -1.2836254308628505 0.23537027852899356 + vertex -0.06398982768078398 -1.275364209883532 0.24488133486312996 + endloop +endfacet +facet normal 0.208704988276747 0.5038584132326484 0.8381938482732266 + outer loop + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + endloop +endfacet +facet normal 0.208704988276747 0.5038584132326484 0.8381938482732266 + outer loop + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + endloop +endfacet +facet normal 0.3481641783379285 0.8405426812759286 0.41505385900597036 + outer loop + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + endloop +endfacet +facet normal 0.3481641783379285 0.8405426812759286 0.41505385900597036 + outer loop + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + endloop +endfacet +facet normal -0.3481641783379294 -0.8405426812759212 0.415053859005984 + outer loop + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + endloop +endfacet +facet normal -0.3481641783379294 -0.8405426812759212 0.415053859005984 + outer loop + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + endloop +endfacet +facet normal 0.7783103948663905 -0.32238672128961554 0.538794702255929 + outer loop + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + endloop +endfacet +facet normal 0.7783103948663905 -0.32238672128961554 0.538794702255929 + outer loop + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + endloop +endfacet +facet normal -0.0549491454279913 -0.4173801973754016 0.9070691055567952 + outer loop + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + endloop +endfacet +facet normal -0.0549491454279913 -0.4173801973754016 0.9070691055567952 + outer loop + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + endloop +endfacet +facet normal -0.5838174542925982 0.7608457195416857 0.283321321326872 + outer loop + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + endloop +endfacet +facet normal -0.5838174542925982 0.7608457195416857 0.283321321326872 + outer loop + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + endloop +endfacet +facet normal 0.32238672128961576 0.7783103948663977 0.5387947022559184 + outer loop + vertex 0.10169679244182371 -1.0820741757566301 0.15641015763454835 + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + endloop +endfacet +facet normal 0.32238672128961576 0.7783103948663977 0.5387947022559184 + outer loop + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + vertex 0.10169679244182371 -1.0820741757566301 0.15641015763454835 + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + endloop +endfacet +facet normal -0.9020134041190082 -0.11875231750957894 0.4150538590059646 + outer loop + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + endloop +endfacet +facet normal -0.9020134041190082 -0.11875231750957894 0.4150538590059646 + outer loop + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + endloop +endfacet +facet normal 0.28536590387325905 -0.03756913397120185 0.9576820250371475 + outer loop + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + endloop +endfacet +facet normal 0.28536590387325905 -0.03756913397120185 0.9576820250371475 + outer loop + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + endloop +endfacet +facet normal 0.0024256980248273745 -0.005856153069761597 0.9999799105283644 + outer loop + vertex 0.008620007033366385 -1.2903884914428023 0.24979069203532045 + vertex 0.016652574832649734 -1.2870612929196577 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.14737468979700055 -0.019402245992945287 0.9888904153937721 + outer loop + vertex 0.032170304210136794 -1.2668381942660323 0.24979069203532045 + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + vertex 0.03330514966530299 -1.2582181872326608 0.24979069203532045 + endloop +endfacet +facet normal 0.14737468979700055 -0.019402245992945287 0.9888904153937721 + outer loop + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + vertex 0.032170304210136794 -1.2668381942660323 0.24979069203532045 + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + endloop +endfacet +facet normal 0.6683502879127727 -0.5128432133389853 0.5387947022559316 + outer loop + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + endloop +endfacet +facet normal 0.6683502879127727 -0.5128432133389853 0.5387947022559316 + outer loop + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + endloop +endfacet +facet normal 0.006284426339275537 -0.0008273604234717137 0.9999799105283644 + outer loop + vertex 0.032170304210136794 -1.2668381942660323 0.24979069203532045 + vertex 0.03330514966530299 -1.2582181872326608 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal -0.1291243038443668 -0.9807964619786367 0.14616844504507934 + outer loop + vertex -3.524958103184872e-15 -1.5080088792679833 0.03330514966530299 + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + endloop +endfacet +facet normal -0.1291243038443668 -0.9807964619786367 0.14616844504507934 + outer loop + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + vertex -3.524958103184872e-15 -1.5080088792679833 0.03330514966530299 + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + endloop +endfacet +facet normal -0.10996010695361437 0.8352299346286047 0.5387947022559211 + outer loop + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + endloop +endfacet +facet normal -0.10996010695361437 0.8352299346286047 0.5387947022559211 + outer loop + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + endloop +endfacet +facet normal 0.5407066799083567 -0.07118538487212071 0.8381938482732321 + outer loop + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + endloop +endfacet +facet normal 0.5407066799083567 -0.07118538487212071 0.8381938482732321 + outer loop + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + endloop +endfacet +facet normal -0.05688450697813604 -0.13733134823551854 0.9888904153937731 + outer loop + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + vertex -0.008620007033375373 -1.2903884914428019 0.24979069203532045 + vertex -0.016652574832656784 -1.2870612929196577 0.24979069203532045 + endloop +endfacet +facet normal -0.05688450697813604 -0.13733134823551854 0.9888904153937731 + outer loop + vertex -0.008620007033375373 -1.2903884914428019 0.24979069203532045 + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + endloop +endfacet +facet normal 0.2901328541709969 0.7004426714296447 0.6520759089025556 + outer loop + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + endloop +endfacet +facet normal 0.2901328541709969 0.7004426714296447 0.6520759089025556 + outer loop + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.10169679244182371 -1.0820741757566301 0.15641015763454835 + endloop +endfacet +facet normal 0.22834955514254673 -0.1752187763538683 0.9576820250371489 + outer loop + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + endloop +endfacet +facet normal 0.22834955514254673 -0.1752187763538683 0.9576820250371489 + outer loop + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + endloop +endfacet +facet normal -0.11014712751939221 -0.2659186891137597 0.9576820250371447 + outer loop + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + endloop +endfacet +facet normal -0.11014712751939221 -0.2659186891137597 0.9576820250371447 + outer loop + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + vertex -0.025407243630193824 -1.3530393113408083 0.23537027852899356 + endloop +endfacet +facet normal 0.20870498827674763 -0.50385841323264 0.8381938482732314 + outer loop + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + endloop +endfacet +facet normal 0.20870498827674763 -0.50385841323264 0.8381938482732314 + outer loop + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + endloop +endfacet +facet normal -0.0050287926462900525 -0.003858728314450526 0.9999799105283645 + outer loop + vertex -0.023550297176773937 -1.2817684844094308 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.02884310568700289 -1.2748707620653137 0.24979069203532045 + endloop +endfacet +facet normal -0.9139568039375823 -0.378573303614116 0.14616844504507182 + outer loop + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + vertex -0.21632508493149044 -1.383113533250322 0.03330514966530299 + endloop +endfacet +facet normal -0.9139568039375823 -0.378573303614116 0.14616844504507182 + outer loop + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + endloop +endfacet +facet normal -0.3320016916316133 -0.4326730283605194 0.8381938482732288 + outer loop + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + endloop +endfacet +facet normal -0.3320016916316133 -0.4326730283605194 0.8381938482732288 + outer loop + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + endloop +endfacet +facet normal -0.7516675744382135 -0.09895891353024773 0.6520759089025494 + outer loop + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + endloop +endfacet +facet normal -0.7516675744382135 -0.09895891353024773 0.6520759089025494 + outer loop + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + vertex -0.17538174443751559 -1.305211584021853 0.18156854249492158 + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + endloop +endfacet +facet normal -0.8352299346285949 -0.10996010695360993 0.5387947022559372 + outer loop + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + endloop +endfacet +facet normal -0.8352299346285949 -0.10996010695360993 0.5387947022559372 + outer loop + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + endloop +endfacet +facet normal 0.7608457195416829 -0.5838174542926005 0.28332132132687493 + outer loop + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + endloop +endfacet +facet normal 0.7608457195416829 -0.5838174542926005 0.28332132132687493 + outer loop + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + endloop +endfacet +facet normal 0.6083755336890001 -0.2519973970699517 0.7525799106265019 + outer loop + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + endloop +endfacet +facet normal 0.6083755336890001 -0.2519973970699517 0.7525799106265019 + outer loop + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + vertex 0.1572429703287134 -1.349002458480122 0.18156854249492158 + endloop +endfacet +facet normal 0.12912430384436888 -0.9807964619786403 0.14616844504505308 + outer loop + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + vertex -3.524958103184872e-15 -1.5080088792679833 0.03330514966530299 + endloop +endfacet +facet normal 0.12912430384436888 -0.9807964619786403 0.14616844504505308 + outer loop + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + endloop +endfacet +facet normal -0.3223867212896212 -0.7783103948664031 0.5387947022559073 + outer loop + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + vertex -0.10169679244183252 -1.4343621987086914 0.15641015763454835 + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + endloop +endfacet +facet normal -0.3223867212896212 -0.7783103948664031 0.5387947022559073 + outer loop + vertex -0.10169679244183252 -1.4343621987086914 0.15641015763454835 + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + endloop +endfacet +facet normal 0.7848325000932181 -0.6022231583645219 0.14616844504505394 + outer loop + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + endloop +endfacet +facet normal 0.7848325000932181 -0.6022231583645219 0.14616844504505394 + outer loop + vertex 0.1766286922154532 -1.4348468794481184 0.03330514966530299 + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + endloop +endfacet +facet normal -0.22834955514255562 -0.17521877635387312 0.9576820250371457 + outer loop + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + endloop +endfacet +facet normal -0.22834955514255562 -0.17521877635387312 0.9576820250371457 + outer loop + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + endloop +endfacet +facet normal -0.9914256166453453 -0.13052365860349552 0.00623066642944291 + outer loop + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + vertex -0.2500000000000045 -1.25821818723266 -2.8199664825478975e-15 + vertex -0.24148145657226944 -1.3229229485082896 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.9914256166453453 -0.13052365860349552 0.00623066642944291 + outer loop + vertex -0.2500000000000045 -1.25821818723266 -2.8199664825478975e-15 + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + endloop +endfacet +facet normal -0.09895891353024999 -0.7516675744382119 0.6520759089025508 + outer loop + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + endloop +endfacet +facet normal -0.09895891353024999 -0.7516675744382119 0.6520759089025508 + outer loop + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + vertex -3.524958103184872e-15 -1.4397867297275841 0.18156854249492158 + endloop +endfacet +facet normal -0.33398728124967153 -0.25627745454459244 0.9070691055567912 + outer loop + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + vertex -0.08501429411877312 -1.3073012128270982 0.23537027852899356 + endloop +endfacet +facet normal -0.33398728124967153 -0.25627745454459244 0.9070691055567912 + outer loop + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + vertex -0.11121708922443291 -1.3224294036348703 0.22144805975514487 + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + endloop +endfacet +facet normal 0.25199739706994123 0.6083755336889786 0.7525799106265227 + outer loop + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + endloop +endfacet +facet normal 0.25199739706994123 0.6083755336889786 0.7525799106265227 + outer loop + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + endloop +endfacet +facet normal -0.7516675744382136 0.09895891353024477 0.6520759089025497 + outer loop + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + endloop +endfacet +facet normal -0.7516675744382136 0.09895891353024477 0.6520759089025497 + outer loop + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + endloop +endfacet +facet normal -0.7608457195416818 0.5838174542926006 0.28332132132687776 + outer loop + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + endloop +endfacet +facet normal -0.7608457195416818 0.5838174542926006 0.28332132132687776 + outer loop + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + endloop +endfacet +facet normal -0.7217903637663539 0.5538492257810789 0.41505385900595365 + outer loop + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + vertex -0.2038366405019334 -1.140533047968162 0.09816605118887195 + endloop +endfacet +facet normal -0.7217903637663539 0.5538492257810789 0.41505385900595365 + outer loop + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + endloop +endfacet +facet normal 0.5128432133389746 -0.6683502879127843 0.5387947022559274 + outer loop + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + vertex 0.1016967924418216 -1.434362198708691 0.15641015763454835 + endloop +endfacet +facet normal 0.5128432133389746 -0.6683502879127843 0.5387947022559274 + outer loop + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + endloop +endfacet +facet normal -0.11792910224257486 -0.09049018281886093 0.9888904153937733 + outer loop + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + vertex -0.023550297176773937 -1.2817684844094308 0.24979069203532045 + vertex -0.02884310568700289 -1.2748707620653137 0.24979069203532045 + endloop +endfacet +facet normal -0.11792910224257486 -0.09049018281886093 0.9888904153937733 + outer loop + vertex -0.023550297176773937 -1.2817684844094308 0.24979069203532045 + vertex -0.05737170996685195 -1.2913417594258891 0.24488133486312996 + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + endloop +endfacet +facet normal 0.8860236063609946 -0.3670029943374506 0.2833213213268683 + outer loop + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + endloop +endfacet +facet normal 0.8860236063609946 -0.3670029943374506 0.2833213213268683 + outer loop + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + endloop +endfacet +facet normal 0.12517788681931355 -0.9508204486300471 0.28332132132687654 + outer loop + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + endloop +endfacet +facet normal 0.12517788681931355 -0.9508204486300471 0.28332132132687654 + outer loop + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + endloop +endfacet +facet normal 0.11875231750957664 -0.9020134041190071 0.41505385900596753 + outer loop + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + endloop +endfacet +facet normal 0.11875231750957664 -0.9020134041190071 0.41505385900596753 + outer loop + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + endloop +endfacet +facet normal -0.3670029943374474 -0.8860236063610033 0.2833213213268452 + outer loop + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + endloop +endfacet +facet normal -0.3670029943374474 -0.8860236063610033 0.2833213213268452 + outer loop + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + endloop +endfacet +facet normal -0.11875231750957489 -0.9020134041190043 0.415053859005974 + outer loop + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + endloop +endfacet +facet normal -0.11875231750957489 -0.9020134041190043 0.415053859005974 + outer loop + vertex -0.05731497536563773 -1.472120587331761 0.1284224328044178 + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + vertex -3.524958103184872e-15 -1.4796662469878064 0.1284224328044178 + endloop +endfacet +facet normal -0.38185155117422603 -0.9242126686056189 0.0045095514985503595 + outer loop + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + vertex -0.12500000000000225 -1.4747245381787706 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.38185155117422603 -0.9242126686056189 0.0045095514985503595 + outer loop + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + endloop +endfacet +facet normal -0.38185155117422603 -0.9242126686056189 0.0045095514985503595 + outer loop + vertex -0.0646505883880862 -1.4994974678361983 0.03330514966530299 + vertex -0.06544551430484839 -1.4993928138538584 -2.8199664825478975e-15 + vertex -0.06467767483185792 -1.4994939018382232 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.11792910224257623 0.09049018281886013 0.9888904153937731 + outer loop + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + vertex -0.0235502971767757 -1.23466789005589 0.24979069203532045 + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + endloop +endfacet +facet normal -0.11792910224257623 0.09049018281886013 0.9888904153937731 + outer loop + vertex -0.0235502971767757 -1.23466789005589 0.24979069203532045 + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + vertex -0.02884310568700289 -1.2415656124000072 0.24979069203532045 + endloop +endfacet +facet normal -0.1251778868193129 -0.9508204486300544 0.28332132132685184 + outer loop + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + vertex -0.06337995325271066 -1.494755392953102 0.06624714438645385 + endloop +endfacet +facet normal -0.1251778868193129 -0.9508204486300544 0.28332132132685184 + outer loop + vertex -0.060918310734394986 -1.4855684180046693 0.09816605118887195 + vertex -3.524958103184872e-15 -1.5030995220957932 0.06624714438645385 + vertex -3.524958103184872e-15 -1.493588465761656 0.09816605118887195 + endloop +endfacet +facet normal -0.09049018281886234 0.11792910224257586 0.9888904153937731 + outer loop + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + vertex -0.016652574832656784 -1.2293750815456626 0.24979069203532045 + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + endloop +endfacet +facet normal -0.09049018281886234 0.11792910224257586 0.9888904153937731 + outer loop + vertex -0.016652574832656784 -1.2293750815456626 0.24979069203532045 + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + vertex -0.0235502971767757 -1.23466789005589 0.24979069203532045 + endloop +endfacet +facet normal 0.11014712751938845 0.2659186891137496 0.957682025037148 + outer loop + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + endloop +endfacet +facet normal 0.11014712751938845 0.2659186891137496 0.957682025037148 + outer loop + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + endloop +endfacet +facet normal 0.4008699686806122 -0.5224239143946343 0.7525799106265015 + outer loop + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + endloop +endfacet +facet normal 0.4008699686806122 -0.5224239143946343 0.7525799106265015 + outer loop + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + endloop +endfacet +facet normal -0.2562774545445913 0.3339872812496675 0.9070691055567931 + outer loop + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + endloop +endfacet +facet normal -0.2562774545445913 0.3339872812496675 0.9070691055567931 + outer loop + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + endloop +endfacet +facet normal -0.2901328541710013 -0.7004426714296476 0.6520759089025506 + outer loop + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.10169679244183252 -1.4343621987086914 0.15641015763454835 + endloop +endfacet +facet normal -0.2901328541710013 -0.7004426714296476 0.6520759089025506 + outer loop + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.052642133419570546 -1.4546813037732995 0.15641015763454835 + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + endloop +endfacet +facet normal 0.09895891353024881 -0.7516675744382005 0.6520759089025642 + outer loop + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + vertex -3.524958103184872e-15 -1.4397867297275841 0.18156854249492158 + vertex -3.524958103184872e-15 -1.4616117721163142 0.15641015763454835 + endloop +endfacet +facet normal 0.09895891353024881 -0.7516675744382005 0.6520759089025642 + outer loop + vertex -3.524958103184872e-15 -1.4397867297275841 0.18156854249492158 + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + vertex 0.046993396789186896 -1.4335999316701704 0.18156854249492158 + endloop +endfacet +facet normal -0.76084571954169 -0.5838174542926062 0.2833213213268439 + outer loop + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + endloop +endfacet +facet normal -0.76084571954169 -0.5838174542926062 0.2833213213268439 + outer loop + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + endloop +endfacet +facet normal 0.7217903637663444 0.553849225781069 0.41505385900598346 + outer loop + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + endloop +endfacet +facet normal 0.7217903637663444 0.553849225781069 0.41505385900598346 + outer loop + vertex 0.20383664050192618 -1.140533047968162 0.09816605118887195 + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + vertex 0.19177964536672754 -1.1474941573550863 0.1284224328044178 + endloop +endfacet +facet normal -0.0038587283144486044 -0.005028792646291971 0.9999799105283644 + outer loop + vertex -0.016652574832656784 -1.2870612929196577 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.023550297176773937 -1.2817684844094308 0.24979069203532045 + endloop +endfacet +facet normal 0.9020134041189981 0.11875231750957564 0.4150538590059873 + outer loop + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + vertex 0.2273502307720066 -1.1972998764982712 0.09816605118887195 + endloop +endfacet +facet normal 0.9020134041189981 0.11875231750957564 0.4150538590059873 + outer loop + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + endloop +endfacet +facet normal 0.08595161929436575 -0.6528673657505659 0.7525799106265018 + outer loop + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + vertex 0.046993396789186896 -1.4335999316701704 0.18156854249492158 + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + endloop +endfacet +facet normal 0.08595161929436575 -0.6528673657505659 0.7525799106265018 + outer loop + vertex 0.046993396789186896 -1.4335999316701704 0.18156854249492158 + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + vertex -3.524958103184872e-15 -1.4397867297275841 0.18156854249492158 + endloop +endfacet +facet normal 0.006284426339275533 0.0008273604234677373 0.9999799105283645 + outer loop + vertex 0.03330514966530299 -1.2582181872326608 0.24979069203532045 + vertex 0.032170304210136794 -1.2495981801992897 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.07118538487212415 -0.5407066799083583 0.8381938482732307 + outer loop + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + endloop +endfacet +facet normal 0.07118538487212415 -0.5407066799083583 0.8381938482732307 + outer loop + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + endloop +endfacet +facet normal 0.019402245992943618 -0.14737468979700152 0.9888904153937721 + outer loop + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + vertex 0.008620007033366385 -1.2903884914428023 0.24979069203532045 + endloop +endfacet +facet normal 0.019402245992943618 -0.14737468979700152 0.9888904153937721 + outer loop + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + endloop +endfacet +facet normal 0.05494914542799308 -0.41738019737541554 0.9070691055567887 + outer loop + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + endloop +endfacet +facet normal 0.05494914542799308 -0.41738019737541554 0.9070691055567887 + outer loop + vertex 0.033238171428178476 -1.382264731753322 0.22144805975514487 + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + vertex -3.524958103184872e-15 -1.3866406200370807 0.22144805975514487 + endloop +endfacet +facet normal 0.037569133971198036 -0.2853659038732522 0.9576820250371498 + outer loop + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + endloop +endfacet +facet normal 0.037569133971198036 -0.2853659038732522 0.9576820250371498 + outer loop + vertex 0.025407243630183072 -1.3530393113408097 0.23537027852899356 + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + vertex -3.524958103184872e-15 -1.3563842384215345 0.23537027852899356 + endloop +endfacet +facet normal -0.40086996868060415 -0.5224239143946197 0.752579910626516 + outer loop + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + vertex -0.1105986831098525 -1.3688168703425085 0.2033935848836513 + endloop +endfacet +facet normal -0.40086996868060415 -0.5224239143946197 0.752579910626516 + outer loop + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + endloop +endfacet +facet normal -0.5128432133389863 -0.6683502879127887 0.5387947022559105 + outer loop + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + endloop +endfacet +facet normal -0.5128432133389863 -0.6683502879127887 0.5387947022559105 + outer loop + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + vertex -0.10169679244183252 -1.4343621987086914 0.15641015763454835 + endloop +endfacet +facet normal 0.05688450697813606 -0.13733134823552615 0.9888904153937721 + outer loop + vertex 0.008620007033366385 -1.2903884914428023 0.24979069203532045 + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + vertex 0.016652574832649734 -1.2870612929196577 0.24979069203532045 + endloop +endfacet +facet normal 0.05688450697813606 -0.13733134823552615 0.9888904153937721 + outer loop + vertex 0.03312357219322393 -1.3155898971995064 0.24488133486312996 + vertex 0.008620007033366385 -1.2903884914428023 0.24979069203532045 + vertex 0.017146022650865084 -1.322208014913439 0.24488133486312996 + endloop +endfacet +facet normal 0.0008273604234697193 -0.006284426339277714 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex 0.008620007033366385 -1.2903884914428023 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.10996010695361498 0.8352299346286047 0.5387947022559207 + outer loop + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + endloop +endfacet +facet normal 0.10996010695361498 0.8352299346286047 0.5387947022559207 + outer loop + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + endloop +endfacet +facet normal 0.11875231750957763 0.9020134041190111 0.4150538590059586 + outer loop + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + endloop +endfacet +facet normal 0.11875231750957763 0.9020134041190111 0.4150538590059586 + outer loop + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + vertex 0.05731497536562875 -1.0443157871335587 0.1284224328044178 + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + endloop +endfacet +facet normal -0.6022231583645238 -0.7848325000932093 0.14616844504509166 + outer loop + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + endloop +endfacet +facet normal -0.6022231583645238 -0.7848325000932093 0.14616844504509166 + outer loop + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + endloop +endfacet +facet normal 0.037569133971199695 0.2853659038732583 0.9576820250371479 + outer loop + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + endloop +endfacet +facet normal 0.037569133971199695 0.2853659038732583 0.9576820250371479 + outer loop + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + endloop +endfacet +facet normal -0.583817454292609 -0.7608457195416878 0.28332132132684407 + outer loop + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + vertex -0.17315725246773847 -1.4313754397003957 0.06624714438645385 + endloop +endfacet +facet normal -0.583817454292609 -0.7608457195416878 0.28332132132684407 + outer loop + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + vertex -0.1224406674315729 -1.470291644136777 0.06624714438645385 + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + endloop +endfacet +facet normal -0.608749612468179 -0.7933379406757795 0.006230666429431151 + outer loop + vertex -0.12500000000000225 -1.4747245381787706 -2.8199664825478975e-15 + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + vertex -0.17677669529664136 -1.4349948825292964 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.608749612468179 -0.7933379406757795 0.006230666429431151 + outer loop + vertex -0.176628692215462 -1.4348468794481186 0.03330514966530299 + vertex -0.12500000000000225 -1.4747245381787706 -2.8199664825478975e-15 + vertex -0.12489534601766746 -1.4745432721641458 0.03330514966530299 + endloop +endfacet +facet normal 0.08595161929436396 0.6528673657505416 0.752579910626523 + outer loop + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.0766496447377363 0.18156854249492158 + endloop +endfacet +facet normal 0.08595161929436396 0.6528673657505416 0.752579910626523 + outer loop + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + endloop +endfacet +facet normal 0.07118538487212589 0.5407066799083611 0.8381938482732288 + outer loop + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + endloop +endfacet +facet normal 0.07118538487212589 0.5407066799083611 0.8381938482732288 + outer loop + vertex 0.04048192764330522 -1.107137576479504 0.2033935848836513 + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + endloop +endfacet +facet normal -0.6014837578993938 0.4615347202672078 0.6520759089025554 + outer loop + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + endloop +endfacet +facet normal -0.6014837578993938 0.4615347202672078 0.6520759089025554 + outer loop + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.15724297032872397 -1.1674339159851985 0.18156854249492158 + endloop +endfacet +facet normal 0.33398728124967547 -0.25627745454458944 0.9070691055567907 + outer loop + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + endloop +endfacet +facet normal 0.33398728124967547 -0.25627745454458944 0.9070691055567907 + outer loop + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + vertex 0.069413880477956 -1.3276320677106188 0.23537027852899356 + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + endloop +endfacet +facet normal 0.05494914542799346 0.41738019737540805 0.9070691055567921 + outer loop + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + endloop +endfacet +facet normal 0.05494914542799346 0.41738019737540805 0.9070691055567921 + outer loop + vertex 0.033238171428178476 -1.134171642711999 0.22144805975514487 + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + vertex 0.025407243630184834 -1.1633970631245119 0.23537027852899356 + endloop +endfacet +facet normal -0.9020134041190082 0.1187523175095769 0.41505385900596525 + outer loop + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + endloop +endfacet +facet normal -0.9020134041190082 0.1187523175095769 0.41505385900596525 + outer loop + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + endloop +endfacet +facet normal 0.835229934628595 -0.10996010695360973 0.5387947022559371 + outer loop + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + endloop +endfacet +facet normal 0.835229934628595 -0.10996010695360973 0.5387947022559371 + outer loop + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + endloop +endfacet +facet normal 0.540706679908357 0.0711853848721176 0.8381938482732322 + outer loop + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + vertex 0.15108061075315243 -1.2177362595893513 0.2033935848836513 + endloop +endfacet +facet normal 0.540706679908357 0.0711853848721176 0.8381938482732322 + outer loop + vertex 0.15641015763454605 -1.2582181872326608 0.2033935848836513 + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + endloop +endfacet +facet normal 0.7004426714296353 -0.2901328541709915 0.652075908902568 + outer loop + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + endloop +endfacet +facet normal 0.7004426714296353 -0.2901328541709915 0.652075908902568 + outer loop + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + vertex 0.1572429703287134 -1.349002458480122 0.18156854249492158 + endloop +endfacet +facet normal -0.3320016916316132 0.43267302836051896 0.838193848273229 + outer loop + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + endloop +endfacet +facet normal -0.3320016916316132 0.43267302836051896 0.838193848273229 + outer loop + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + endloop +endfacet +facet normal 0.3320016916316124 -0.43267302836051974 0.838193848273229 + outer loop + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + vertex 0.09080837309247497 -1.349026560325139 0.22144805975514487 + endloop +endfacet +facet normal 0.3320016916316124 -0.43267302836051974 0.838193848273229 + outer loop + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + vertex 0.06421121640220485 -1.3694352764570876 0.22144805975514487 + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + endloop +endfacet +facet normal -0.7783103948663928 -0.3223867212896167 0.538794702255925 + outer loop + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + endloop +endfacet +facet normal -0.7783103948663928 -0.3223867212896167 0.538794702255925 + outer loop + vertex -0.21390240009910735 -1.3155331625982931 0.1284224328044178 + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + vertex -0.19646311654064325 -1.3108603206522262 0.15641015763454835 + endloop +endfacet +facet normal -0.25627745454458833 -0.3339872812496726 0.9070691055567921 + outer loop + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + endloop +endfacet +facet normal -0.25627745454458833 -0.3339872812496726 0.9070691055567921 + outer loop + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + vertex -0.09080837309248237 -1.3490265603251397 0.22144805975514487 + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + endloop +endfacet +facet normal -0.17521877635386826 -0.22834955514255567 0.9576820250371467 + outer loop + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + endloop +endfacet +facet normal -0.17521877635386826 -0.22834955514255567 0.9576820250371467 + outer loop + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + vertex -0.06941388047796324 -1.3276320677106195 0.23537027852899356 + vertex -0.04908302559444249 -1.3432324813514291 0.23537027852899356 + endloop +endfacet +facet normal -0.0038587283144484058 0.005028792646287936 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.016652574832656784 -1.2293750815456626 0.24979069203532045 + vertex -0.0235502971767757 -1.23466789005589 0.24979069203532045 + endloop +endfacet +facet normal -0.09049018281885975 -0.11792910224257903 0.988890415393773 + outer loop + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + vertex -0.016652574832656784 -1.2870612929196577 0.24979069203532045 + vertex -0.023550297176773937 -1.2817684844094308 0.24979069203532045 + endloop +endfacet +facet normal -0.09049018281885975 -0.11792910224257903 0.988890415393773 + outer loop + vertex -0.016652574832656784 -1.2870612929196577 0.24979069203532045 + vertex -0.046843805029911666 -1.3050619922625688 0.24488133486312996 + vertex -0.03312357219323291 -1.3155898971995077 0.24488133486312996 + endloop +endfacet +facet normal -0.7933379406757879 0.608749612468168 0.006230666429476907 + outer loop + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + vertex -0.2165063509461133 -1.133218187232661 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.7933379406757879 0.608749612468168 0.006230666429476907 + outer loop + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + endloop +endfacet +facet normal -0.25199739706995117 -0.6083755336889874 0.7525799106265123 + outer loop + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + endloop +endfacet +facet normal -0.25199739706995117 -0.6083755336889874 0.7525799106265123 + outer loop + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + endloop +endfacet +facet normal -0.1752187763538731 0.22834955514255156 0.9576820250371468 + outer loop + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + endloop +endfacet +facet normal -0.1752187763538731 0.22834955514255156 0.9576820250371468 + outer loop + vertex -0.03312357219323291 -1.2008464772658134 0.24488133486312996 + vertex -0.06941388047796324 -1.1888043067547018 0.23537027852899356 + vertex -0.046843805029911666 -1.2113743822027532 0.24488133486312996 + endloop +endfacet +facet normal 0.8352299346285949 0.10996010695360765 0.5387947022559377 + outer loop + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + vertex 0.21390240009909658 -1.2009032118670273 0.1284224328044178 + endloop +endfacet +facet normal 0.8352299346285949 0.10996010695360765 0.5387947022559377 + outer loop + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + endloop +endfacet +facet normal 0.7516675744382 -0.09895891353024598 0.6520759089025653 + outer loop + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + endloop +endfacet +facet normal 0.7516675744382 -0.09895891353024598 0.6520759089025653 + outer loop + vertex 0.19646311654063445 -1.3108603206522262 0.15641015763454835 + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + vertex 0.17538174443750484 -1.305211584021853 0.18156854249492158 + endloop +endfacet +facet normal -0.4173801973754045 0.0549491454279878 0.907069105556794 + outer loop + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + endloop +endfacet +facet normal -0.4173801973754045 0.0549491454279878 0.907069105556794 + outer loop + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + endloop +endfacet +facet normal -0.40086996868059327 0.522423914394613 0.7525799106265263 + outer loop + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + endloop +endfacet +facet normal -0.40086996868059327 0.522423914394613 0.7525799106265263 + outer loop + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + endloop +endfacet +facet normal -0.5407066799083695 0.07118538487211921 0.838193848273224 + outer loop + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + endloop +endfacet +facet normal -0.5407066799083695 0.07118538487211921 0.838193848273224 + outer loop + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + vertex -0.128422432804424 -1.2582181872326603 0.22144805975514487 + endloop +endfacet +facet normal 0.0989589135302516 0.751667574438211 0.6520759089025517 + outer loop + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + vertex -5.4636850599365515e-15 -1.0766496447377363 0.18156854249492158 + endloop +endfacet +facet normal 0.0989589135302516 0.751667574438211 0.6520759089025517 + outer loop + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + vertex 0.046993396789186896 -1.0828364427951491 0.18156854249492158 + vertex 0.05264213341956156 -1.0617550706920216 0.15641015763454835 + endloop +endfacet +facet normal 0.5038584132326388 -0.20870498827674797 0.8381938482732321 + outer loop + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + endloop +endfacet +facet normal 0.5038584132326388 -0.20870498827674797 0.8381938482732321 + outer loop + vertex 0.15108061075315243 -1.2987001148759698 0.2033935848836513 + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + endloop +endfacet +facet normal 0.3889364266776589 -0.16110274283081596 0.9070691055567939 + outer loop + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + endloop +endfacet +facet normal 0.3889364266776589 -0.16110274283081596 0.9070691055567939 + outer loop + vertex 0.12404654452065732 -1.2914563586608434 0.22144805975514487 + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + vertex 0.11121708922442215 -1.3224294036348712 0.22144805975514487 + endloop +endfacet +facet normal -0.46153472026720294 0.6014837578993997 0.6520759089025534 + outer loop + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.10169679244183076 -1.082074175756629 0.15641015763454835 + endloop +endfacet +facet normal -0.46153472026720294 0.6014837578993997 0.6520759089025534 + outer loop + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.14382098312107816 -1.114397204111587 0.15641015763454835 + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + endloop +endfacet +facet normal -0.9508204486300562 -0.12517788681932046 0.2833213213268431 + outer loop + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + endloop +endfacet +facet normal -0.9508204486300562 -0.12517788681932046 0.2833213213268431 + outer loop + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + endloop +endfacet +facet normal -0.9807964619786389 -0.12912430384437312 0.14616844504505808 + outer loop + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + vertex -0.24127928060354276 -1.3228687756207402 0.03330514966530299 + endloop +endfacet +facet normal -0.9807964619786389 -0.12912430384437312 0.14616844504505808 + outer loop + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + endloop +endfacet +facet normal -0.2087049882767493 -0.5038584132326414 0.8381938482732302 + outer loop + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + vertex -0.06421121640221561 -1.3694352764570876 0.22144805975514487 + endloop +endfacet +facet normal -0.2087049882767493 -0.5038584132326414 0.8381938482732302 + outer loop + vertex -0.03323817142818746 -1.382264731753322 0.22144805975514487 + vertex -0.07820507881727858 -1.39367335715411 0.2033935848836513 + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + endloop +endfacet +facet normal 0.9139568039375828 -0.3785733036141208 0.14616844504505672 + outer loop + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + vertex 0.24127928060353376 -1.3228687756207407 0.03330514966530299 + endloop +endfacet +facet normal 0.9139568039375828 -0.3785733036141208 0.14616844504505672 + outer loop + vertex 0.21632508493148148 -1.3831135332503224 0.03330514966530299 + vertex 0.23653720572043838 -1.3215981404853676 0.06624714438645385 + vertex 0.21207345690411403 -1.3806588546642276 0.06624714438645385 + endloop +endfacet +facet normal -0.9508204486300562 0.1251778868193189 0.28332132132684396 + outer loop + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + vertex -0.2448813348631386 -1.25821818723266 0.06624714438645385 + endloop +endfacet +facet normal -0.9508204486300562 0.1251778868193189 0.28332132132684396 + outer loop + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + vertex -0.23537027852900166 -1.25821818723266 0.09816605118887195 + vertex -0.22735023077201383 -1.19729987649827 0.09816605118887195 + endloop +endfacet +facet normal -0.019402245992941953 -0.1473746897969949 0.9888904153937731 + outer loop + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex -0.008620007033375373 -1.2903884914428019 0.24979069203532045 + endloop +endfacet +facet normal -0.019402245992941953 -0.1473746897969949 0.9888904153937731 + outer loop + vertex -3.524958103184872e-15 -1.2915233368979662 0.24979069203532045 + vertex -0.017146022650876013 -1.3222080149134403 0.24488133486312996 + vertex -3.524958103184872e-15 -1.3244653316191175 0.24488133486312996 + endloop +endfacet +facet normal 0.005028792646290096 -0.0038587283144502172 0.9999799105283645 + outer loop + vertex 0.02355029717676671 -1.2817684844094308 0.24979069203532045 + vertex 0.028843105686992138 -1.2748707620653144 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + endloop +endfacet +facet normal 0.5838174542926003 -0.7608457195416856 0.2833213213268679 + outer loop + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + endloop +endfacet +facet normal 0.5838174542926003 -0.7608457195416856 0.2833213213268679 + outer loop + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + vertex 0.17315725246773125 -1.4313754397003962 0.06624714438645385 + endloop +endfacet +facet normal -0.6528673657505389 0.08595161929435712 0.7525799106265261 + outer loop + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + endloop +endfacet +facet normal -0.6528673657505389 0.08595161929435712 0.7525799106265261 + outer loop + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + vertex -0.1815685424949279 -1.2582181872326603 0.18156854249492158 + vertex -0.15641015763455346 -1.2582181872326603 0.2033935848836513 + endloop +endfacet +facet normal -0.006284426339275536 0.000827360423467717 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.03217030421014755 -1.2495981801992888 0.24979069203532045 + vertex -0.033305149665310216 -1.2582181872326603 0.24979069203532045 + endloop +endfacet +facet normal -0.8352299346285949 0.10996010695360738 0.5387947022559376 + outer loop + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + vertex -0.22144805975515106 -1.25821818723266 0.1284224328044178 + endloop +endfacet +facet normal -0.8352299346285949 0.10996010695360738 0.5387947022559376 + outer loop + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + vertex -0.20339358488365783 -1.2582181872326603 0.15641015763454835 + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + endloop +endfacet +facet normal 0.3670029943374449 -0.8860236063609948 0.2833213213268751 + outer loop + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + endloop +endfacet +facet normal 0.3670029943374449 -0.8860236063609948 0.2833213213268751 + outer loop + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + endloop +endfacet +facet normal 0.34816417833793284 -0.840542681275926 0.415053859005972 + outer loop + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + endloop +endfacet +facet normal 0.34816417833793284 -0.840542681275926 0.415053859005972 + outer loop + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + vertex 0.060918310734382294 -1.48556841800467 0.09816605118887195 + vertex 0.11768513926449448 -1.4620548277345906 0.09816605118887195 + endloop +endfacet +facet normal 0.3223867212896171 -0.7783103948663905 0.538794702255928 + outer loop + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + vertex 0.1016967924418216 -1.434362198708691 0.15641015763454835 + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + endloop +endfacet +facet normal 0.3223867212896171 -0.7783103948663905 0.538794702255928 + outer loop + vertex 0.1016967924418216 -1.434362198708691 0.15641015763454835 + vertex 0.057314975365626804 -1.4721205873317624 0.1284224328044178 + vertex 0.11072402987756838 -1.4499978325993923 0.1284224328044178 + endloop +endfacet +facet normal 0.2901328541709959 -0.7004426714296349 0.6520759089025665 + outer loop + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.046993396789186896 -1.4335999316701704 0.18156854249492158 + endloop +endfacet +facet normal 0.2901328541709959 -0.7004426714296349 0.6520759089025665 + outer loop + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.05264213341956156 -1.4546813037732993 0.15641015763454835 + vertex 0.1016967924418216 -1.434362198708691 0.15641015763454835 + endloop +endfacet +facet normal 0.25199739706995455 -0.6083755336890018 0.7525799106264996 + outer loop + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.07820507881727135 -1.3936733571541091 0.2033935848836513 + endloop +endfacet +facet normal 0.25199739706995455 -0.6083755336890018 0.7525799106264996 + outer loop + vertex 0.09078427124745674 -1.4154611575613776 0.18156854249492158 + vertex 0.04048192764330522 -1.4092987979858171 0.2033935848836513 + vertex 0.046993396789186896 -1.4335999316701704 0.18156854249492158 + endloop +endfacet +facet normal -0.7783103948663902 0.3223867212896137 0.5387947022559304 + outer loop + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + vertex -0.21390240009910735 -1.2009032118670269 0.1284224328044178 + endloop +endfacet +facet normal -0.7783103948663902 0.3223867212896137 0.5387947022559304 + outer loop + vertex -0.19177964536673653 -1.1474941573550863 0.1284224328044178 + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + endloop +endfacet +facet normal -0.991425616645345 0.13052365860349516 0.006230666429498303 + outer loop + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + vertex -0.24148145657227119 -1.1935134259570301 -2.8199664825478975e-15 + vertex -0.2500000000000045 -1.25821818723266 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.991425616645345 0.13052365860349516 0.006230666429498303 + outer loop + vertex -0.24148145657227119 -1.1935134259570301 -2.8199664825478975e-15 + vertex -0.24979069203532767 -1.2582181872326603 0.03330514966530299 + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + endloop +endfacet +facet normal -0.6683502879127855 -0.5128432133389927 0.5387947022559086 + outer loop + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + endloop +endfacet +facet normal -0.6683502879127855 -0.5128432133389927 0.5387947022559086 + outer loop + vertex -0.19177964536673653 -1.3689422171102335 0.1284224328044178 + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.17614401147603662 -1.3599149796744874 0.15641015763454835 + endloop +endfacet +facet normal 0.056884506978133256 0.13733134823551943 0.9888904153937731 + outer loop + vertex 0.008620007033366385 -1.2260478830225185 0.24979069203532045 + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + endloop +endfacet +facet normal 0.056884506978133256 0.13733134823551943 0.9888904153937731 + outer loop + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + vertex 0.008620007033366385 -1.2260478830225185 0.24979069203532045 + vertex 0.016652574832649734 -1.2293750815456628 0.24979069203532045 + endloop +endfacet +facet normal 0.9020134041189979 -0.11875231750957714 0.41505385900598724 + outer loop + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + vertex 0.23537027852899267 -1.25821818723266 0.09816605118887195 + endloop +endfacet +facet normal 0.9020134041189979 -0.11875231750957714 0.41505385900598724 + outer loop + vertex 0.2273502307720066 -1.31913649796705 0.09816605118887195 + vertex 0.221448059755144 -1.25821818723266 0.1284224328044178 + vertex 0.21390240009909658 -1.3155331625982936 0.1284224328044178 + endloop +endfacet +facet normal -0.784832500093217 0.6022231583645236 0.1461684450450513 + outer loop + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + endloop +endfacet +facet normal -0.784832500093217 0.6022231583645236 0.1461684450450513 + outer loop + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + endloop +endfacet +facet normal -0.8860236063609996 -0.367002994337448 0.2833213213268562 + outer loop + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + vertex -0.21207345690412108 -1.3806588546642264 0.06624714438645385 + endloop +endfacet +facet normal -0.8860236063609996 -0.367002994337448 0.2833213213268562 + outer loop + vertex -0.23653720572044543 -1.3215981404853665 0.06624714438645385 + vertex -0.2038366405019334 -1.3759033264971585 0.09816605118887195 + vertex -0.22735023077201383 -1.3191364979670495 0.09816605118887195 + endloop +endfacet +facet normal 0.2659186891137517 -0.11014712751938852 0.9576820250371475 + outer loop + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + vertex 0.06398982768077323 -1.275364209883532 0.24488133486312996 + endloop +endfacet +facet normal 0.2659186891137517 -0.11014712751938852 0.9576820250371475 + outer loop + vertex 0.09482112410814278 -1.2836254308628505 0.23537027852899356 + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + vertex 0.08501429411876431 -1.3073012128270978 0.23537027852899356 + endloop +endfacet +facet normal -0.08595161929436403 -0.6528673657505554 0.752579910626511 + outer loop + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + vertex -0.040481927643314215 -1.4092987979858176 0.2033935848836513 + endloop +endfacet +facet normal -0.08595161929436403 -0.6528673657505554 0.752579910626511 + outer loop + vertex -3.524958103184872e-15 -1.4146283448672117 0.2033935848836513 + vertex -0.046993396789197645 -1.4335999316701715 0.18156854249492158 + vertex -3.524958103184872e-15 -1.4397867297275841 0.18156854249492158 + endloop +endfacet +facet normal 0.1179291022425794 -0.09049018281886645 0.9888904153937722 + outer loop + vertex 0.02355029717676671 -1.2817684844094308 0.24979069203532045 + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + vertex 0.028843105686992138 -1.2748707620653144 0.24979069203532045 + endloop +endfacet +facet normal 0.1179291022425794 -0.09049018281886645 0.9888904153937722 + outer loop + vertex 0.05737170996684296 -1.2913417594258887 0.24488133486312996 + vertex 0.02355029717676671 -1.2817684844094308 0.24979069203532045 + vertex 0.04684380502990268 -1.3050619922625672 0.24488133486312996 + endloop +endfacet +facet normal -0.26591868911375927 0.1101471275193882 0.9576820250371454 + outer loop + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + endloop +endfacet +facet normal -0.26591868911375927 0.1101471275193882 0.9576820250371454 + outer loop + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + endloop +endfacet +facet normal 0.17521877635387137 0.22834955514254704 0.9576820250371482 + outer loop + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + endloop +endfacet +facet normal 0.17521877635387137 0.22834955514254704 0.9576820250371482 + outer loop + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + endloop +endfacet +facet normal 0.13052365860348356 0.9914256166453468 0.0062306664294788676 + outer loop + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + endloop +endfacet +facet normal 0.13052365860348356 0.9914256166453468 0.0062306664294788676 + outer loop + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + vertex 0.06470476127562452 -1.0167367306603927 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.0024256980248273134 0.005856153069757532 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex 0.016652574832649734 -1.2293750815456628 0.24979069203532045 + vertex 0.008620007033366385 -1.2260478830225185 0.24979069203532045 + endloop +endfacet +facet normal 0.12912430384436857 0.9807964619786391 0.14616844504506107 + outer loop + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + endloop +endfacet +facet normal 0.12912430384436857 0.9807964619786391 0.14616844504506107 + outer loop + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + endloop +endfacet +facet normal 0.1251778868193133 0.950820448630046 0.2833213213268803 + outer loop + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + endloop +endfacet +facet normal 0.1251778868193133 0.950820448630046 0.2833213213268803 + outer loop + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + endloop +endfacet +facet normal 0.019402245992942886 0.14737468979699409 0.9888904153937731 + outer loop + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + endloop +endfacet +facet normal 0.019402245992942886 0.14737468979699409 0.9888904153937731 + outer loop + vertex 0.017146022650867024 -1.1942283595518812 0.24488133486312996 + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + vertex 0.008620007033366385 -1.2260478830225185 0.24979069203532045 + endloop +endfacet +facet normal 0.0008273604234696458 0.006284426339273641 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex 0.008620007033366385 -1.2260478830225185 0.24979069203532045 + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + endloop +endfacet +facet normal -0.1305236586034812 0.991425616645347 0.006230666429478553 + outer loop + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex -0.06470476127563704 -1.0167367306603932 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.1305236586034812 0.991425616645347 0.006230666429478553 + outer loop + vertex -3.524958103184872e-15 -1.0082181872326599 -2.8199664825478975e-15 + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + endloop +endfacet +facet normal -0.1291243038443678 0.9807964619786397 0.14616844504505846 + outer loop + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + endloop +endfacet +facet normal -0.1291243038443678 0.9807964619786397 0.14616844504505846 + outer loop + vertex -3.524958103184872e-15 -1.0084274951973369 0.03330514966530299 + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + endloop +endfacet +facet normal -0.12517788681931233 0.9508204486300454 0.2833213213268828 + outer loop + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + endloop +endfacet +facet normal -0.12517788681931233 0.9508204486300454 0.2833213213268828 + outer loop + vertex -3.524958103184872e-15 -1.0133368523695265 0.06624714438645385 + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + endloop +endfacet +facet normal 0.7516675744382 0.09895891353024348 0.6520759089025656 + outer loop + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + vertex 0.19646311654063445 -1.2055760538130946 0.15641015763454835 + endloop +endfacet +facet normal 0.7516675744382 0.09895891353024348 0.6520759089025656 + outer loop + vertex 0.20339358488364903 -1.2582181872326603 0.15641015763454835 + vertex 0.17538174443750484 -1.211224790443468 0.18156854249492158 + vertex 0.18156854249491716 -1.2582181872326608 0.18156854249492158 + endloop +endfacet +facet normal -0.11875231750957713 0.9020134041190138 0.4150538590059529 + outer loop + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + endloop +endfacet +facet normal -0.11875231750957713 0.9020134041190138 0.4150538590059529 + outer loop + vertex -3.524958103184872e-15 -1.022847908703664 0.09816605118887195 + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + vertex -5.4636850599365515e-15 -1.036770127477513 0.1284224328044178 + endloop +endfacet +facet normal -0.08595161929436287 0.6528673657505414 0.7525799106265234 + outer loop + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + vertex -5.4636850599365515e-15 -1.0766496447377363 0.18156854249492158 + endloop +endfacet +facet normal -0.08595161929436287 0.6528673657505414 0.7525799106265234 + outer loop + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + endloop +endfacet +facet normal -0.09895891353025102 0.7516675744382114 0.6520759089025511 + outer loop + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + endloop +endfacet +facet normal -0.09895891353025102 0.7516675744382114 0.6520759089025511 + outer loop + vertex -5.4636850599365515e-15 -1.0548246023490062 0.15641015763454835 + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + vertex -5.4636850599365515e-15 -1.0766496447377363 0.18156854249492158 + endloop +endfacet +facet normal -0.07118538487212431 0.5407066799083583 0.8381938482732307 + outer loop + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + vertex -5.4636850599365515e-15 -1.1018080295981099 0.2033935848836513 + endloop +endfacet +facet normal -0.07118538487212431 0.5407066799083583 0.8381938482732307 + outer loop + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + endloop +endfacet +facet normal -0.05494914542799191 0.4173801973754054 0.9070691055567933 + outer loop + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + vertex -3.524958103184872e-15 -1.1297957544282404 0.22144805975514487 + endloop +endfacet +facet normal -0.05494914542799191 0.4173801973754054 0.9070691055567933 + outer loop + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + endloop +endfacet +facet normal -0.03756913397119975 0.2853659038732614 0.957682025037147 + outer loop + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + vertex -3.524958103184872e-15 -1.1600521360437857 0.23537027852899356 + endloop +endfacet +facet normal -0.03756913397119975 0.2853659038732614 0.957682025037147 + outer loop + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + endloop +endfacet +facet normal -0.0194022459929433 0.147374689796994 0.9888904153937731 + outer loop + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + vertex -5.4636850599365515e-15 -1.1919710428462034 0.24488133486312996 + endloop +endfacet +facet normal -0.0194022459929433 0.147374689796994 0.9888904153937731 + outer loop + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + vertex -0.017146022650876013 -1.1942283595518808 0.24488133486312996 + vertex -0.008620007033375373 -1.226047883022518 0.24979069203532045 + endloop +endfacet +facet normal -0.0008273604234696915 0.006284426339273596 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -5.4636850599365515e-15 -1.2249130375673543 0.24979069203532045 + vertex -0.008620007033375373 -1.226047883022518 0.24979069203532045 + endloop +endfacet +facet normal -0.38267600417717734 0.9238615992792609 0.006230666429485318 + outer loop + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + vertex -0.06470476127563704 -1.0167367306603932 -2.8199664825478975e-15 + vertex -0.125000000000004 -1.0417118362865505 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.38267600417717734 0.9238615992792609 0.006230666429485318 + outer loop + vertex -0.06470476127563704 -1.0167367306603932 -2.8199664825478975e-15 + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + endloop +endfacet +facet normal -0.29013285417100354 0.7004426714296462 0.6520759089025508 + outer loop + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + vertex -0.10169679244183076 -1.082074175756629 0.15641015763454835 + endloop +endfacet +facet normal -0.29013285417100354 0.7004426714296462 0.6520759089025508 + outer loop + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + endloop +endfacet +facet normal 0.0038587283144482505 0.005028792646288041 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex 0.02355029717676671 -1.2346678900558896 0.24979069203532045 + vertex 0.016652574832649734 -1.2293750815456628 0.24979069203532045 + endloop +endfacet +facet normal 0.38267600417715925 0.9238615992792684 0.006230666429472414 + outer loop + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + vertex 0.06470476127562452 -1.0167367306603927 -2.8199664825478975e-15 + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + endloop +endfacet +facet normal 0.38267600417715925 0.9238615992792684 0.006230666429472414 + outer loop + vertex 0.06470476127562452 -1.0167367306603927 -2.8199664825478975e-15 + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + vertex 0.12499999999999854 -1.0417118362865505 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.0024256980248274274 0.00585615306975746 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.008620007033375373 -1.226047883022518 0.24979069203532045 + vertex -0.016652574832656784 -1.2293750815456626 0.24979069203532045 + endloop +endfacet +facet normal 0.9238615992792649 0.382676004177169 0.0062306664293855 + outer loop + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + vertex 0.24148145657226044 -1.1935134259570308 -2.8199664825478975e-15 + vertex 0.21650635094610257 -1.133218187232661 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.9238615992792649 0.382676004177169 0.0062306664293855 + outer loop + vertex 0.24148145657226044 -1.1935134259570308 -2.8199664825478975e-15 + vertex 0.21632508493148148 -1.133322841214998 0.03330514966530299 + vertex 0.24127928060353376 -1.1935675988445795 0.03330514966530299 + endloop +endfacet +facet normal -0.34816417833793595 0.8405426812759335 0.4150538590059541 + outer loop + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + endloop +endfacet +facet normal -0.34816417833793595 0.8405426812759335 0.4150538590059541 + outer loop + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + endloop +endfacet +facet normal 0.28536590387325905 0.03756913397119818 0.9576820250371477 + outer loop + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + endloop +endfacet +facet normal 0.28536590387325905 0.03756913397119818 0.9576820250371477 + outer loop + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + vertex 0.06398982768077323 -1.2410721645817888 0.24488133486312996 + vertex 0.06624714438645138 -1.2582181872326608 0.24488133486312996 + endloop +endfacet +facet normal -0.9139568039375825 0.3785733036141219 0.14616844504505522 + outer loop + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + endloop +endfacet +facet normal -0.9139568039375825 0.3785733036141219 0.14616844504505522 + outer loop + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + vertex -0.23653720572044543 -1.1948382339799528 0.06624714438645385 + vertex -0.21207345690412285 -1.1357775198010933 0.06624714438645385 + endloop +endfacet +facet normal -0.20870498827674935 0.5038584132326394 0.8381938482732315 + outer loop + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + endloop +endfacet +facet normal -0.20870498827674935 0.5038584132326394 0.8381938482732315 + outer loop + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + endloop +endfacet +facet normal -0.251997397069947 0.608375533688977 0.7525799106265221 + outer loop + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + vertex -0.04699339678919588 -1.0828364427951491 0.18156854249492158 + endloop +endfacet +facet normal -0.251997397069947 0.608375533688977 0.7525799106265221 + outer loop + vertex -0.04048192764331245 -1.1071375764795033 0.2033935848836513 + vertex -0.09078427124746571 -1.1009752169039415 0.18156854249492158 + vertex -0.07820507881727858 -1.1227630173112113 0.2033935848836513 + endloop +endfacet +facet normal -0.5224239143946142 0.40086996868059166 0.7525799106265263 + outer loop + vertex -0.15724297032872397 -1.1674339159851985 0.18156854249492158 + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + vertex -0.12838834764832324 -1.1298298395843418 0.18156854249492158 + endloop +endfacet +facet normal -0.5224239143946142 0.40086996868059166 0.7525799106265263 + outer loop + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + vertex -0.15724297032872397 -1.1674339159851985 0.18156854249492158 + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + endloop +endfacet +facet normal -0.3785733036141164 0.9139568039375832 0.1461684450450648 + outer loop + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + endloop +endfacet +facet normal -0.3785733036141164 0.9139568039375832 0.1461684450450648 + outer loop + vertex -0.06465058838808427 -1.0169389066291223 0.03330514966530299 + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + endloop +endfacet +facet normal -0.43267302836052707 0.3320016916316088 0.8381938482732266 + outer loop + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + vertex -0.1105986831098525 -1.1476195041228134 0.2033935848836513 + endloop +endfacet +facet normal -0.43267302836052707 0.3320016916316088 0.8381938482732266 + outer loop + vertex -0.09080837309248413 -1.1674098141401814 0.22144805975514487 + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + endloop +endfacet +facet normal -0.7004426714296496 0.29013285417099466 0.6520759089025514 + outer loop + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.19646311654064325 -1.2055760538130946 0.15641015763454835 + endloop +endfacet +facet normal -0.7004426714296496 0.29013285417099466 0.6520759089025514 + outer loop + vertex -0.17614401147603662 -1.1565213947908337 0.15641015763454835 + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + vertex -0.15724297032872397 -1.1674339159851985 0.18156854249492158 + endloop +endfacet +facet normal -0.3670029943374438 0.8860236063609938 0.28332132132687965 + outer loop + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + endloop +endfacet +facet normal -0.3670029943374438 0.8860236063609938 0.28332132132687965 + outer loop + vertex -0.06337995325271066 -1.0216809815122176 0.06624714438645385 + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + vertex -0.06091831073439322 -1.030867956460651 0.09816605118887195 + endloop +endfacet +facet normal 0.3670029943374406 0.8860236063609981 0.28332132132687055 + outer loop + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + vertex 0.06091831073438599 -1.0308679564606515 0.09816605118887195 + endloop +endfacet +facet normal 0.3670029943374406 0.8860236063609981 0.28332132132687055 + outer loop + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + endloop +endfacet +facet normal 0.37857330361410946 0.913956803937585 0.1461684450450714 + outer loop + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + vertex 0.06337995325270167 -1.0216809815122176 0.06624714438645385 + endloop +endfacet +facet normal 0.37857330361410946 0.913956803937585 0.1461684450450714 + outer loop + vertex 0.06465058838807722 -1.0169389066291223 0.03330514966530299 + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + endloop +endfacet +facet normal -0.608749612468176 0.7933379406757818 0.0062306664294747805 + outer loop + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + vertex -0.125000000000004 -1.0417118362865505 -2.8199664825478975e-15 + vertex -0.17677669529664136 -1.0814414919360233 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.608749612468176 0.7933379406757818 0.0062306664294747805 + outer loop + vertex -0.125000000000004 -1.0417118362865505 -2.8199664825478975e-15 + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + endloop +endfacet +facet normal -0.6022231583645203 0.7848325000932175 0.14616844504506415 + outer loop + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + vertex -0.176628692215462 -1.0815894950172025 0.03330514966530299 + endloop +endfacet +facet normal -0.6022231583645203 0.7848325000932175 0.14616844504506415 + outer loop + vertex -0.12489534601766551 -1.0418931023011748 0.03330514966530299 + vertex -0.17315725246774025 -1.0850609347649247 0.06624714438645385 + vertex -0.12244066743156938 -1.0461447303285423 0.06624714438645385 + endloop +endfacet +facet normal -0.6083755336889725 0.2519973970699379 0.7525799106265288 + outer loop + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + vertex -0.15724297032872397 -1.1674339159851985 0.18156854249492158 + endloop +endfacet +facet normal -0.6083755336889725 0.2519973970699379 0.7525799106265288 + outer loop + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + vertex -0.17538174443751559 -1.2112247904434674 0.18156854249492158 + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + endloop +endfacet +facet normal -0.3223867212896202 0.7783103948663946 0.5387947022559203 + outer loop + vertex -0.10169679244183076 -1.082074175756629 0.15641015763454835 + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + endloop +endfacet +facet normal -0.3223867212896202 0.7783103948663946 0.5387947022559203 + outer loop + vertex -0.0573149753656358 -1.0443157871335584 0.1284224328044178 + vertex -0.10169679244183076 -1.082074175756629 0.15641015763454835 + vertex -0.05264213341956878 -1.061755070692021 0.15641015763454835 + endloop +endfacet +facet normal -0.16110274283081716 0.38893642667765843 0.9070691055567939 + outer loop + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + vertex -0.0332381714281857 -1.1341716427119988 0.22144805975514487 + endloop +endfacet +facet normal -0.16110274283081716 0.38893642667765843 0.9070691055567939 + outer loop + vertex -0.025407243630193824 -1.1633970631245119 0.23537027852899356 + vertex -0.06421121640221385 -1.1470010980082328 0.22144805975514487 + vertex -0.04908302559444249 -1.1732038931138917 0.23537027852899356 + endloop +endfacet +facet normal -0.9238615992792631 0.3826760041771717 0.0062306664294938755 + outer loop + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + vertex -0.2165063509461133 -1.133218187232661 -2.8199664825478975e-15 + vertex -0.24148145657227119 -1.1935134259570301 -2.8199664825478975e-15 + endloop +endfacet +facet normal -0.9238615992792631 0.3826760041771717 0.0062306664294938755 + outer loop + vertex -0.2165063509461133 -1.133218187232661 -2.8199664825478975e-15 + vertex -0.24127928060354098 -1.1935675988445795 0.03330514966530299 + vertex -0.2163250849314887 -1.1333228412149985 0.03330514966530299 + endloop +endfacet +facet normal -0.38893642667765904 0.16110274283081327 0.9070691055567943 + outer loop + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + endloop +endfacet +facet normal -0.38893642667765904 0.16110274283081327 0.9070691055567943 + outer loop + vertex -0.08501429411877312 -1.209135161638223 0.23537027852899356 + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + endloop +endfacet +facet normal 0.37857330361411523 -0.9139568039375848 0.1461684450450576 + outer loop + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + vertex 0.06337995325270167 -1.4947553929531034 0.06624714438645385 + endloop +endfacet +facet normal 0.37857330361411523 -0.9139568039375848 0.1461684450450576 + outer loop + vertex 0.12244066743156198 -1.4702916441367788 0.06624714438645385 + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + endloop +endfacet +facet normal -0.5038584132326501 0.20870498827675069 0.8381938482732245 + outer loop + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + vertex -0.1354551699214543 -1.1800131084153855 0.2033935848836513 + endloop +endfacet +facet normal -0.5038584132326501 0.20870498827675069 0.8381938482732245 + outer loop + vertex -0.11121708922443291 -1.1940069708304504 0.22144805975514487 + vertex -0.15108061075316143 -1.2177362595893513 0.2033935848836513 + vertex -0.12404654452066631 -1.2249800158044777 0.22144805975514487 + endloop +endfacet +facet normal 0.38185155117422653 -0.9242126686056186 0.0045095514985716584 + outer loop + vertex 0.06467767483185087 -1.499493901838225 -2.8199664825478975e-15 + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + vertex 0.06465058838807351 -1.499497467836199 0.03330514966530299 + endloop +endfacet +facet normal 0.38185155117422653 -0.9242126686056186 0.0045095514985716584 + outer loop + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + vertex 0.06467767483185087 -1.499493901838225 -2.8199664825478975e-15 + vertex 0.0654455143048394 -1.4993928138538584 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.38185155117422653 -0.9242126686056186 0.0045095514985716584 + outer loop + vertex 0.12489534601765828 -1.4745432721641463 0.03330514966530299 + vertex 0.0654455143048394 -1.4993928138538584 -2.8199664825478975e-15 + vertex 0.12499999999999854 -1.4747245381787688 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.09049018281886141 0.11792910224257519 0.9888904153937733 + outer loop + vertex 0.016652574832649734 -1.2293750815456628 0.24979069203532045 + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + vertex 0.03312357219322393 -1.2008464772658134 0.24488133486312996 + endloop +endfacet +facet normal 0.09049018281886141 0.11792910224257519 0.9888904153937733 + outer loop + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + vertex 0.016652574832649734 -1.2293750815456628 0.24979069203532045 + vertex 0.02355029717676671 -1.2346678900558896 0.24979069203532045 + endloop +endfacet +facet normal 0.6022231583645262 0.7848325000932094 0.14616844504508297 + outer loop + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + endloop +endfacet +facet normal 0.6022231583645262 0.7848325000932094 0.14616844504508297 + outer loop + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + endloop +endfacet +facet normal 0.22834955514254904 0.17521877635386607 0.9576820250371487 + outer loop + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + endloop +endfacet +facet normal 0.22834955514254904 0.17521877635386607 0.9576820250371487 + outer loop + vertex 0.08501429411876431 -1.2091351616382227 0.23537027852899356 + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + endloop +endfacet +facet normal 0.11792910224257735 0.09049018281886033 0.9888904153937731 + outer loop + vertex 0.02355029717676671 -1.2346678900558896 0.24979069203532045 + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + vertex 0.04684380502990268 -1.211374382202752 0.24488133486312996 + endloop +endfacet +facet normal 0.11792910224257735 0.09049018281886033 0.9888904153937731 + outer loop + vertex 0.05737170996684296 -1.2250946150394317 0.24488133486312996 + vertex 0.02355029717676671 -1.2346678900558896 0.24979069203532045 + vertex 0.028843105686992138 -1.2415656124000074 0.24979069203532045 + endloop +endfacet +facet normal 0.005028792646289896 0.0038587283144465544 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex 0.028843105686992138 -1.2415656124000074 0.24979069203532045 + vertex 0.02355029717676671 -1.2346678900558896 0.24979069203532045 + endloop +endfacet +facet normal 0.512843213338986 0.6683502879127794 0.5387947022559227 + outer loop + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + vertex 0.10169679244182371 -1.0820741757566301 0.15641015763454835 + endloop +endfacet +facet normal 0.512843213338986 0.6683502879127794 0.5387947022559227 + outer loop + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + endloop +endfacet +facet normal 0.6087496124681853 0.7933379406757743 0.006230666429504037 + outer loop + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + vertex 0.12499999999999854 -1.0417118362865505 -2.8199664825478975e-15 + vertex 0.12489534601765828 -1.0418931023011742 0.03330514966530299 + endloop +endfacet +facet normal 0.6087496124681853 0.7933379406757743 0.006230666429504037 + outer loop + vertex 0.12499999999999854 -1.0417118362865505 -2.8199664825478975e-15 + vertex 0.1766286922154532 -1.081589495017202 0.03330514966530299 + vertex 0.1767766952966322 -1.0814414919360216 -2.8199664825478975e-15 + endloop +endfacet +facet normal 0.5838174542926072 0.7608457195416826 0.28332132132686194 + outer loop + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + endloop +endfacet +facet normal 0.5838174542926072 0.7608457195416826 0.28332132132686194 + outer loop + vertex 0.12244066743156198 -1.0461447303285423 0.06624714438645385 + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + vertex 0.17315725246773125 -1.0850609347649247 0.06624714438645385 + endloop +endfacet +facet normal 0.5538492257810743 0.7217903637663494 0.4150538590059676 + outer loop + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + vertex 0.11072402987757014 -1.0664385418659283 0.1284224328044178 + endloop +endfacet +facet normal 0.5538492257810743 0.7217903637663494 0.4150538590059676 + outer loop + vertex 0.11768513926449448 -1.0543815467307303 0.09816605118887195 + vertex 0.15658742473346415 -1.1016307624991921 0.1284224328044178 + vertex 0.1664319200376171 -1.09178626719504 0.09816605118887195 + endloop +endfacet +facet normal 0.46153472026720654 0.6014837578993882 0.6520759089025614 + outer loop + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.10169679244182371 -1.0820741757566301 0.15641015763454835 + endloop +endfacet +facet normal 0.46153472026720654 0.6014837578993882 0.6520759089025614 + outer loop + vertex 0.14382098312106936 -1.114397204111587 0.15641015763454835 + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + endloop +endfacet +facet normal 0.25627745454459455 0.333987281249667 0.9070691055567923 + outer loop + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + endloop +endfacet +facet normal 0.25627745454459455 0.333987281249667 0.9070691055567923 + outer loop + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + vertex 0.049083025594433505 -1.1732038931138917 0.23537027852899356 + vertex 0.06941388047795424 -1.188804306754701 0.23537027852899356 + endloop +endfacet +facet normal 0.400869968680605 0.5224239143946133 0.7525799106265199 + outer loop + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + vertex 0.09078427124745674 -1.100975216903942 0.18156854249492158 + endloop +endfacet +facet normal 0.400869968680605 0.5224239143946133 0.7525799106265199 + outer loop + vertex 0.1283883476483125 -1.1298298395843418 0.18156854249492158 + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + endloop +endfacet +facet normal 0.33200169163161897 0.43267302836051935 0.8381938482732266 + outer loop + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + vertex 0.07820507881727135 -1.1227630173112113 0.2033935848836513 + endloop +endfacet +facet normal 0.33200169163161897 0.43267302836051935 0.8381938482732266 + outer loop + vertex 0.11059868310984193 -1.147619504122813 0.2033935848836513 + vertex 0.06421121640220662 -1.1470010980082328 0.22144805975514487 + vertex 0.09080837309247497 -1.167409814140181 0.22144805975514487 + endloop +endfacet +facet normal -0.2853659038732666 0.03756913397119877 0.9576820250371454 + outer loop + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + vertex -0.09482112410815335 -1.2328109436024706 0.23537027852899356 + endloop +endfacet +facet normal -0.2853659038732666 0.03756913397119877 0.9576820250371454 + outer loop + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + vertex -0.09816605118887776 -1.2582181872326603 0.23537027852899356 + vertex -0.06624714438646213 -1.2582181872326603 0.24488133486312996 + endloop +endfacet +facet normal -0.5538492257810675 -0.7217903637663496 0.41505385900597647 + outer loop + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + vertex -0.1664319200376243 -1.4246501072702804 0.09816605118887195 + endloop +endfacet +facet normal -0.5538492257810675 -0.7217903637663496 0.41505385900597647 + outer loop + vertex -0.15658742473347154 -1.4148056119661285 0.1284224328044178 + vertex -0.11768513926450347 -1.4620548277345904 0.09816605118887195 + vertex -0.11072402987757914 -1.449997832599391 0.1284224328044178 + endloop +endfacet +facet normal -0.005856153069759526 -0.0024256980248293833 0.9999799105283645 + outer loop + vertex -0.02884310568700289 -1.2748707620653137 0.24979069203532045 + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.03217030421014755 -1.2668381942660312 0.24979069203532045 + endloop +endfacet +facet normal 0.721790363766351 -0.5538492257810765 0.41505385900596187 + outer loop + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + vertex 0.20383664050192618 -1.375903326497159 0.09816605118887195 + endloop +endfacet +facet normal 0.721790363766351 -0.5538492257810765 0.41505385900596187 + outer loop + vertex 0.1664319200376171 -1.4246501072702802 0.09816605118887195 + vertex 0.19177964536672754 -1.368942217110234 0.1284224328044178 + vertex 0.15658742473346415 -1.4148056119661285 0.1284224328044178 + endloop +endfacet +facet normal -0.005856153069759435 0.002425698024825542 0.9999799105283645 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.02884310568700289 -1.2415656124000072 0.24979069203532045 + vertex -0.03217030421014755 -1.2495981801992888 0.24979069203532045 + endloop +endfacet +facet normal 0.5224239143946278 -0.40086996868061214 0.752579910626506 + outer loop + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + vertex 0.1572429703287134 -1.349002458480122 0.18156854249492158 + vertex 0.13545516992144546 -1.336423266049936 0.2033935848836513 + endloop +endfacet +facet normal 0.5224239143946278 -0.40086996868061214 0.752579910626506 + outer loop + vertex 0.1572429703287134 -1.349002458480122 0.18156854249492158 + vertex 0.11059868310984193 -1.3688168703425085 0.2033935848836513 + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + endloop +endfacet +facet normal 0.6014837578993802 -0.46153472026720127 0.6520759089025726 + outer loop + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.1572429703287134 -1.349002458480122 0.18156854249492158 + endloop +endfacet +facet normal 0.6014837578993802 -0.46153472026720127 0.6520759089025726 + outer loop + vertex 0.17614401147602587 -1.3599149796744874 0.15641015763454835 + vertex 0.1283883476483125 -1.3866065348809777 0.18156854249492158 + vertex 0.14382098312106936 -1.4020391703537334 0.15641015763454835 + endloop +endfacet +facet normal -0.005028792646290036 0.0038587283144463015 0.9999799105283644 + outer loop + vertex -3.524958103184872e-15 -1.2582181872326603 0.24999999999999814 + vertex -0.0235502971767757 -1.23466789005589 0.24979069203532045 + vertex -0.02884310568700289 -1.2415656124000072 0.24979069203532045 + endloop +endfacet +facet normal 0.4173801973754043 0.054949145427988004 0.9070691055567939 + outer loop + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + vertex 0.12404654452065732 -1.2249800158044781 0.22144805975514487 + endloop +endfacet +facet normal 0.4173801973754043 0.054949145427988004 0.9070691055567939 + outer loop + vertex 0.12842243280441518 -1.2582181872326608 0.22144805975514487 + vertex 0.09482112410814278 -1.232810943602471 0.23537027852899356 + vertex 0.09816605118887071 -1.2582181872326608 0.23537027852899356 + endloop +endfacet +facet normal -0.13733134823551896 0.05688450697813423 0.9888904153937731 + outer loop + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + vertex -0.02884310568700289 -1.2415656124000072 0.24979069203532045 + vertex -0.05737170996685195 -1.2250946150394317 0.24488133486312996 + endloop +endfacet +facet normal -0.13733134823551896 0.05688450697813423 0.9888904153937731 + outer loop + vertex -0.02884310568700289 -1.2415656124000072 0.24979069203532045 + vertex -0.06398982768078398 -1.2410721645817884 0.24488133486312996 + vertex -0.03217030421014755 -1.2495981801992888 0.24979069203532045 + endloop +endfacet +facet normal -0.5538492257810682 0.7217903637663615 0.41505385900595454 + outer loop + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + vertex -0.1664319200376243 -1.0917862671950407 0.09816605118887195 + endloop +endfacet +facet normal -0.5538492257810682 0.7217903637663615 0.41505385900595454 + outer loop + vertex -0.1176851392645017 -1.0543815467307303 0.09816605118887195 + vertex -0.15658742473347154 -1.1016307624991912 0.1284224328044178 + vertex -0.11072402987757737 -1.0664385418659277 0.1284224328044178 + endloop +endfacet +facet normal -0.461534720267207 -0.601483757899397 0.6520759089025531 + outer loop + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.12838834764832324 -1.3866065348809795 0.18156854249492158 + endloop +endfacet +facet normal -0.461534720267207 -0.601483757899397 0.6520759089025531 + outer loop + vertex -0.09078427124746766 -1.4154611575613785 0.18156854249492158 + vertex -0.14382098312107816 -1.4020391703537338 0.15641015763454835 + vertex -0.10169679244183252 -1.4343621987086914 0.15641015763454835 + endloop +endfacet +endsolid Catheter_2mm_with_Sensor_Model diff --git a/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.cal b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.cal new file mode 100644 index 0000000..29664b9 --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.cal @@ -0,0 +1,6 @@ + -1.000 0.000 0.000 0.000 + 0.000 -1.000 0.000 0.000 + 0.000 0.000 1.000 0.000 + 0.000 0.000 0.000 1.000 + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.xml b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.xml new file mode 100755 index 0000000..5a0987e --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/AnserGuidewire.xml @@ -0,0 +1,46 @@ + + + + + + + pointer + AnserGuidewire + AnserGuidewire + EMT Pointer + UCC + Bronchoscopy + Guidewire_1_5mm_with_Sensor_Model.stl + + + Pointer_1 + + + + + + + + + + + + + Aurora + Aurora01 + AuroraSensor1 + yes + 5 + 1 + 0 + NDI + + + + + + + AnserGuidewire.cal + + + diff --git a/config/tool/Tools/Bronchoscopy/Anser_Guidewire/Guidewire_1_5mm_with_Sensor_Model.stl b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/Guidewire_1_5mm_with_Sensor_Model.stl new file mode 100644 index 0000000..f32d2fb --- /dev/null +++ b/config/tool/Tools/Bronchoscopy/Anser_Guidewire/Guidewire_1_5mm_with_Sensor_Model.stl @@ -0,0 +1,4370 @@ +solid Guidewire_1_5mm_with_Sensor_Model +facet normal 0.2535445455794956 -0.6121106806037456 0.7490231492401997 + outer loop + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + endloop +endfacet +facet normal 0.2535445455794956 -0.6121106806037456 0.7490231492401997 + outer loop + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + endloop +endfacet +facet normal 0.008610166138257585 -0.06540070485599243 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex 0.025336998323446238 -0.09455896505438703 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.025675660756184868 -0.19502600578587362 0.9804619408788603 + outer loop + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + vertex 0.025336998323446238 -0.09455896505438703 -0.00641635396964375 + endloop +endfacet +facet normal 0.025675660756184868 -0.19502600578587362 0.9804619408788603 + outer loop + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + endloop +endfacet +facet normal 0.042280466605787194 -0.3211520281089482 0.9460833668261514 + outer loop + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + endloop +endfacet +facet normal 0.042280466605787194 -0.3211520281089482 0.9460833668261514 + outer loop + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + endloop +endfacet +facet normal 0.05812994792809571 -0.4415407910473256 0.8953561520396109 + outer loop + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + endloop +endfacet +facet normal 0.05812994792809571 -0.4415407910473256 0.8953561520396109 + outer loop + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + endloop +endfacet +facet normal 0.07294734282080208 -0.5540900792434682 0.8292544056315599 + outer loop + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + endloop +endfacet +facet normal 0.07294734282080208 -0.5540900792434682 0.8292544056315599 + outer loop + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + endloop +endfacet +facet normal 0.08647932283904465 -0.6568756721203718 0.7490231492402022 + outer loop + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + endloop +endfacet +facet normal 0.08647932283904465 -0.6568756721203718 0.7490231492402022 + outer loop + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + vertex 4.40619762898109e-16 -0.5303300858899046 -0.2196699141100909 + endloop +endfacet +facet normal 0.09850024362326089 -0.7481836306059017 0.6561394340378655 + outer loop + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + vertex 4.40619762898109e-16 -0.5303300858899046 -0.2196699141100909 + endloop +endfacet +facet normal 0.09850024362326089 -0.7481836306059017 0.6561394340378655 + outer loop + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex 0.15400121547230528 -0.5747403605700011 -0.2934289282434605 + endloop +endfacet +facet normal 0.10881504904469959 -0.8265323563078015 0.5522712640339645 + outer loop + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex -1.321859288694327e-15 -0.6495190528383229 -0.3750000000000007 + endloop +endfacet +facet normal 0.10881504904469959 -0.8265323563078015 0.5522712640339645 + outer loop + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex 0.15400121547230528 -0.5747403605700011 -0.2934289282434605 + endloop +endfacet +facet normal 0.11726094957415721 -0.8906853399900112 0.4392374014491994 + outer loop + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex -1.321859288694327e-15 -0.6495190528383229 -0.3750000000000007 + endloop +endfacet +facet normal 0.11726094957415721 -0.8906853399900112 0.4392374014491994 + outer loop + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex 0.17933821379575107 -0.669299325624386 -0.4629874257261833 + endloop +endfacet +facet normal 0.12370811552481582 -0.9396564272751586 0.3189703761069098 + outer loop + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + endloop +endfacet +facet normal 0.12370811552481582 -0.9396564272751586 0.3189703761069098 + outer loop + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + vertex 0.17933821379575107 -0.669299325624386 -0.4629874257261833 + endloop +endfacet +facet normal 0.12805969399568615 -0.9727099473421309 0.1934840383995546 + outer loop + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + endloop +endfacet +facet normal 0.12805969399568615 -0.9727099473421309 0.1934840383995546 + outer loop + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + endloop +endfacet +facet normal 0.13025147189870337 -0.9893581533630924 0.06484595933589987 + outer loop + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + endloop +endfacet +facet normal 0.13025147189870337 -0.9893581533630924 0.06484595933589987 + outer loop + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + endloop +endfacet +facet normal 0.025243729821449935 -0.06094375489982968 0.9978219344369069 + outer loop + vertex 0.025336998323446238 -0.09455896505438703 -0.00641635396964375 + vertex 0.048947322082522754 -0.08477924874135821 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.07527722841911062 -0.181735305787277 0.9804619408788604 + outer loop + vertex 0.025336998323446238 -0.09455896505438703 -0.00641635396964375 + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + vertex 0.048947322082522754 -0.08477924874135821 -0.00641635396964375 + endloop +endfacet +facet normal 0.07527722841911062 -0.181735305787277 0.9804619408788604 + outer loop + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + vertex 0.025336998323446238 -0.09455896505438703 -0.00641635396964375 + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + endloop +endfacet +facet normal 0.12396005588999275 -0.29926604812214574 0.94608336682615 + outer loop + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + endloop +endfacet +facet normal 0.12396005588999275 -0.29926604812214574 0.94608336682615 + outer loop + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + vertex 0.05024047358083639 -0.18749999999999772 -0.025555630283198814 + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + endloop +endfacet +facet normal 0.17042838389726797 -0.41145051581811376 0.895356152039608 + outer loop + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + endloop +endfacet +facet normal 0.17042838389726797 -0.41145051581811376 0.895356152039608 + outer loop + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + vertex 0.07428432040596679 -0.27723285796078495 -0.05709035061653675 + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + endloop +endfacet +facet normal 0.21387078760034525 -0.5163297560201717 0.8292544056315638 + outer loop + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + endloop +endfacet +facet normal 0.21387078760034525 -0.5163297560201717 0.8292544056315638 + outer loop + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + vertex 0.09705714191344446 -0.362222184858393 -0.10048094716167066 + vertex 0.11816928881346311 -0.4410137897461164 -0.15498499478157451 + endloop +endfacet +facet normal 0.2887881020462324 -0.697196152612008 0.6561394340378794 + outer loop + vertex 0.15400121547230528 -0.5747403605700011 -0.2934289282434605 + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.13725952641916345 -0.5122595264191585 -0.2196699141100909 + endloop +endfacet +facet normal 0.2887881020462324 -0.697196152612008 0.6561394340378794 + outer loop + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.15400121547230528 -0.5747403605700011 -0.2934289282434605 + vertex 0.29750750260921716 -0.5152981101520853 -0.2934289282434605 + endloop +endfacet +facet normal 0.3190295813671243 -0.7702055421347291 0.5522712640339578 + outer loop + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex 0.29750750260921716 -0.5152981101520853 -0.2934289282434605 + vertex 0.15400121547230528 -0.5747403605700011 -0.2934289282434605 + endloop +endfacet +facet normal 0.3190295813671243 -0.7702055421347291 0.5522712640339578 + outer loop + vertex 0.29750750260921716 -0.5152981101520853 -0.2934289282434605 + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + endloop +endfacet +facet normal 0.34379170879189436 -0.8299866059968162 0.4392374014491882 + outer loop + vertex 0.17933821379575107 -0.669299325624386 -0.4629874257261833 + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + vertex 0.16810790103151046 -0.6273872278033522 -0.3750000000000007 + endloop +endfacet +facet normal 0.34379170879189436 -0.8299866059968162 0.4392374014491882 + outer loop + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + vertex 0.17933821379575107 -0.669299325624386 -0.4629874257261833 + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + endloop +endfacet +facet normal 0.36269384293877927 -0.8756203946120202 0.31897037610692036 + outer loop + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + vertex 0.17933821379575107 -0.669299325624386 -0.4629874257261833 + endloop +endfacet +facet normal 0.36269384293877927 -0.8756203946120202 0.31897037610692036 + outer loop + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + endloop +endfacet +facet normal 0.3754520254699307 -0.906421371909957 0.19348403839954909 + outer loop + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + vertex 0.1874999999999993 -0.6997595264191615 -0.5558857161731108 + endloop +endfacet +facet normal 0.3754520254699307 -0.906421371909957 0.19348403839954909 + outer loop + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + endloop +endfacet +facet normal 0.38187799313695214 -0.9219350302030517 0.06484595933589288 + outer loop + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + vertex 0.19245360921942936 -0.718246647706906 -0.6521053558349623 + endloop +endfacet +facet normal 0.38187799313695214 -0.9219350302030517 0.06484595933589288 + outer loop + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 0.375 -0.6495190528383229 -0.75 + endloop +endfacet +facet normal 0.04015697503453697 -0.05233358876156272 0.9978219344369069 + outer loop + vertex 0.048947322082522754 -0.08477924874135821 -0.00641635396964375 + vertex 0.06922196673094794 -0.06922196673093929 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.11974877736675738 -0.156059645031074 0.9804619408788604 + outer loop + vertex 0.048947322082522754 -0.08477924874135821 -0.00641635396964375 + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + vertex 0.06922196673094794 -0.06922196673093929 -0.00641635396964375 + endloop +endfacet +facet normal 0.11974877736675738 -0.156059645031074 0.9804619408788604 + outer loop + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + vertex 0.048947322082522754 -0.08477924874135821 -0.00641635396964375 + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + endloop +endfacet +facet normal 0.1971919722189582 -0.2569855815163473 0.9460833668261495 + outer loop + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + endloop +endfacet +facet normal 0.1971919722189582 -0.2569855815163473 0.9460833668261495 + outer loop + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + vertex 0.09705714191344991 -0.1681079010315064 -0.025555630283198814 + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + endloop +endfacet +facet normal 0.27111240715005813 -0.35332056789001925 0.8953561520396089 + outer loop + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + endloop +endfacet +facet normal 0.27111240715005813 -0.35332056789001925 0.8953561520396089 + outer loop + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + vertex 0.14350628713691066 -0.24856018052668843 -0.05709035061653675 + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + endloop +endfacet +facet normal 0.34021929164311526 -0.4433824131993738 0.8292544056315629 + outer loop + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + endloop +endfacet +facet normal 0.34021929164311526 -0.4433824131993738 0.8292544056315629 + outer loop + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + vertex 0.1874999999999993 -0.3247595264191573 -0.10048094716167066 + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + endloop +endfacet +facet normal 0.4033311265408767 -0.5256313577646965 0.7490231492402013 + outer loop + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + endloop +endfacet +facet normal 0.4033311265408767 -0.5256313577646965 0.7490231492402013 + outer loop + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + vertex 0.2282855358782733 -0.39540214677424557 -0.15498499478157451 + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + endloop +endfacet +facet normal 0.45939552855965354 -0.5986959089887368 0.656139434037878 + outer loop + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + endloop +endfacet +facet normal 0.45939552855965354 -0.5986959089887368 0.656139434037878 + outer loop + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + vertex 0.2651650429449581 -0.4592793267718391 -0.2196699141100909 + vertex 0.29750750260921716 -0.5152981101520853 -0.2934289282434605 + endloop +endfacet +facet normal 0.507502774940676 -0.6613904930900101 0.552271264033959 + outer loop + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + vertex 0.29750750260921716 -0.5152981101520853 -0.2934289282434605 + endloop +endfacet +facet normal 0.507502774940676 -0.6613904930900101 0.552271264033959 + outer loop + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + endloop +endfacet +facet normal 0.5468936311981181 -0.7127256564226544 0.43923740144918577 + outer loop + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + vertex 0.3247595264191679 -0.5624999999999954 -0.3750000000000007 + endloop +endfacet +facet normal 0.5468936311981181 -0.7127256564226544 0.43923740144918577 + outer loop + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + endloop +endfacet +facet normal 0.5769625843363707 -0.7519122790871996 0.3189703761069191 + outer loop + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + vertex 0.34645482469173233 -0.6000773588934432 -0.4629874257261833 + endloop +endfacet +facet normal 0.5769625843363707 -0.7519122790871996 0.3189703761069191 + outer loop + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + endloop +endfacet +facet normal 0.5972579218721986 -0.7783616779142621 0.1934840383995468 + outer loop + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + vertex 0.362222184858402 -0.6273872278033522 -0.5558857161731108 + endloop +endfacet +facet normal 0.5972579218721986 -0.7783616779142621 0.1934840383995468 + outer loop + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + endloop +endfacet +facet normal 0.6074801602261383 -0.7916835583043471 0.06484595933589635 + outer loop + vertex 0.375 -0.6495190528383229 -0.75 + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + vertex 0.3717918230151799 -0.6439623273009404 -0.6521053558349623 + endloop +endfacet +facet normal 0.6074801602261383 -0.7916835583043471 0.06484595933589635 + outer loop + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + vertex 0.375 -0.6495190528383229 -0.75 + vertex 0.5303300858899119 -0.5303300858899044 -0.75 + endloop +endfacet +facet normal 0.05233358876156164 -0.04015697503453786 0.9978219344369069 + outer loop + vertex 0.06922196673094794 -0.06922196673093929 -0.00641635396964375 + vertex 0.08477924874136492 -0.04894732208251711 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.1560596450310732 -0.11974877736675893 0.9804619408788604 + outer loop + vertex 0.06922196673094794 -0.06922196673093929 -0.00641635396964375 + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + vertex 0.08477924874136492 -0.04894732208251711 -0.00641635396964375 + endloop +endfacet +facet normal 0.1560596450310732 -0.11974877736675893 0.9804619408788604 + outer loop + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + vertex 0.06922196673094794 -0.06922196673093929 -0.00641635396964375 + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + endloop +endfacet +facet normal 0.2569855815163479 -0.1971919722189594 0.9460833668261491 + outer loop + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + endloop +endfacet +facet normal 0.2569855815163479 -0.1971919722189594 0.9460833668261491 + outer loop + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + vertex 0.13725952641916891 -0.13725952641916134 -0.025555630283198814 + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + endloop +endfacet +facet normal 0.35332056789001526 -0.27111240715005647 0.895356152039611 + outer loop + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + endloop +endfacet +facet normal 0.35332056789001526 -0.27111240715005647 0.895356152039611 + outer loop + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + vertex 0.20294853755482573 -0.20294853755481904 -0.05709035061653675 + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + endloop +endfacet +facet normal 0.44338241319937705 -0.34021929164311826 0.82925440563156 + outer loop + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + endloop +endfacet +facet normal 0.44338241319937705 -0.34021929164311826 0.82925440563156 + outer loop + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + vertex 0.2651650429449581 -0.2651650429449472 -0.10048094716167066 + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + endloop +endfacet +facet normal 0.5256313577646945 -0.4033311265408757 0.7490231492402034 + outer loop + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + vertex 0.4592793267718477 -0.2651650429449493 -0.2196699141100909 + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + endloop +endfacet +facet normal 0.5256313577646945 -0.4033311265408757 0.7490231492402034 + outer loop + vertex 0.4592793267718477 -0.2651650429449493 -0.2196699141100909 + vertex 0.3228445009326612 -0.3228445009326538 -0.15498499478157451 + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + endloop +endfacet +facet normal 0.5986959089887394 -0.45939552855965543 0.6561394340378741 + outer loop + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.4592793267718477 -0.2651650429449493 -0.2196699141100909 + endloop +endfacet +facet normal 0.5986959089887394 -0.45939552855965543 0.6561394340378741 + outer loop + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.3750000000000018 -0.3749999999999935 -0.2196699141100909 + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + endloop +endfacet +facet normal 0.6613904930900097 -0.5075027749406759 0.5522712640339598 + outer loop + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + endloop +endfacet +facet normal 0.6613904930900097 -0.5075027749406759 0.5522712640339598 + outer loop + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.4207391450977023 -0.4207391450976956 -0.2934289282434605 + endloop +endfacet +facet normal 0.7127256564226485 -0.5468936311981196 0.43923740144919365 + outer loop + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + endloop +endfacet +facet normal 0.7127256564226485 -0.5468936311981196 0.43923740144919365 + outer loop + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + vertex 0.4592793267718477 -0.4592793267718426 -0.3750000000000007 + endloop +endfacet +facet normal 0.7519122790871979 -0.5769625843363747 0.31897037610691614 + outer loop + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + endloop +endfacet +facet normal 0.7519122790871979 -0.5769625843363747 0.31897037610691614 + outer loop + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + vertex 0.4899611118286425 -0.48996111182863544 -0.4629874257261833 + endloop +endfacet +facet normal 0.7783616779142644 -0.5972579218721986 0.19348403839953815 + outer loop + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + endloop +endfacet +facet normal 0.7783616779142644 -0.5972579218721986 0.19348403839953815 + outer loop + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + vertex 0.5122595264191684 -0.5122595264191596 -0.5558857161731108 + endloop +endfacet +facet normal 0.7916835583043479 -0.6074801602261368 0.06484595933590209 + outer loop + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + vertex 0.5303300858899119 -0.5303300858899044 -0.75 + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + endloop +endfacet +facet normal 0.7916835583043479 -0.6074801602261368 0.06484595933590209 + outer loop + vertex 0.5303300858899119 -0.5303300858899044 -0.75 + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + vertex 0.5257930384874846 -0.5257930384874782 -0.6521053558349623 + endloop +endfacet +facet normal 0.060943754899827715 -0.025243729821452447 0.9978219344369069 + outer loop + vertex 0.08477924874136492 -0.04894732208251711 -0.00641635396964375 + vertex 0.09455896505439373 -0.025336998323443327 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.18173530578727534 -0.07527722841911384 0.9804619408788606 + outer loop + vertex 0.08477924874136492 -0.04894732208251711 -0.00641635396964375 + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + vertex 0.09455896505439373 -0.025336998323443327 -0.00641635396964375 + endloop +endfacet +facet normal 0.18173530578727534 -0.07527722841911384 0.9804619408788606 + outer loop + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + vertex 0.08477924874136492 -0.04894732208251711 -0.00641635396964375 + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + endloop +endfacet +facet normal 0.29926604812214974 -0.12396005588999433 0.9460833668261485 + outer loop + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + vertex 0.2772328579607902 -0.07428432040596132 -0.05709035061653675 + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + endloop +endfacet +facet normal 0.29926604812214974 -0.12396005588999433 0.9460833668261485 + outer loop + vertex 0.2772328579607902 -0.07428432040596132 -0.05709035061653675 + vertex 0.168107901031514 -0.0970571419134427 -0.025555630283198814 + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + endloop +endfacet +facet normal 0.4114505158181066 -0.17042838389726642 0.8953561520396116 + outer loop + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.2772328579607902 -0.07428432040596132 -0.05709035061653675 + endloop +endfacet +facet normal 0.4114505158181066 -0.17042838389726642 0.8953561520396116 + outer loop + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.24856018052669496 -0.14350628713690397 -0.05709035061653675 + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + endloop +endfacet +facet normal 0.5163297560201712 -0.2138707876003505 0.8292544056315628 + outer loop + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + endloop +endfacet +facet normal 0.5163297560201712 -0.2138707876003505 0.8292544056315628 + outer loop + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + vertex 0.32475952641916417 -0.187499999999994 -0.10048094716167066 + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + endloop +endfacet +facet normal 0.6121106806037435 -0.25354454557949657 0.7490231492402012 + outer loop + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + endloop +endfacet +facet normal 0.6121106806037435 -0.25354454557949657 0.7490231492402012 + outer loop + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + vertex 0.395402146774253 -0.2282855358782652 -0.15498499478157451 + vertex 0.4592793267718477 -0.2651650429449493 -0.2196699141100909 + endloop +endfacet +facet normal 0.697196152612015 -0.288788102046234 0.6561394340378713 + outer loop + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + endloop +endfacet +facet normal 0.697196152612015 -0.288788102046234 0.6561394340378713 + outer loop + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + vertex 0.4592793267718477 -0.2651650429449493 -0.2196699141100909 + endloop +endfacet +facet normal 0.7702055421347243 -0.31902958136712495 0.5522712640339642 + outer loop + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + endloop +endfacet +facet normal 0.7702055421347243 -0.31902958136712495 0.5522712640339642 + outer loop + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + vertex 0.515298110152092 -0.2975075026092096 -0.2934289282434605 + endloop +endfacet +facet normal 0.8299866059968092 -0.34379170879189747 0.4392374014491988 + outer loop + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + endloop +endfacet +facet normal 0.8299866059968092 -0.34379170879189747 0.4392374014491988 + outer loop + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + vertex 0.5625000000000024 -0.32475952641916084 -0.3750000000000007 + endloop +endfacet +facet normal 0.875620394612025 -0.36269384293878176 0.3189703761069043 + outer loop + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + endloop +endfacet +facet normal 0.875620394612025 -0.36269384293878176 0.3189703761069043 + outer loop + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + vertex 0.600077358893451 -0.34645482469172706 -0.4629874257261833 + endloop +endfacet +facet normal 0.9064213719099599 -0.3754520254699278 0.19348403839954031 + outer loop + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + endloop +endfacet +facet normal 0.9064213719099599 -0.3754520254699278 0.19348403839954031 + outer loop + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + vertex 0.6273872278033595 -0.3622221848583957 -0.5558857161731108 + endloop +endfacet +facet normal 0.9219350302030517 -0.3818779931369506 0.06484595933590319 + outer loop + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + endloop +endfacet +facet normal 0.9219350302030517 -0.3818779931369506 0.06484595933590319 + outer loop + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + vertex 0.6439623273009474 -0.37179182301517216 -0.6521053558349623 + endloop +endfacet +facet normal 0.06540070485598921 -0.008610166138267091 0.9978219344369069 + outer loop + vertex 0.09455896505439373 -0.025336998323443327 -0.00641635396964375 + vertex 0.0978946441650434 6.168676680573526e-15 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + endloop +endfacet +facet normal 0.19502600578587012 -0.02567566075620351 0.9804619408788606 + outer loop + vertex 0.09455896505439373 -0.025336998323443327 -0.00641635396964375 + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + vertex 0.0978946441650434 6.168676680573526e-15 -0.00641635396964375 + endloop +endfacet +facet normal 0.19502600578587012 -0.02567566075620351 0.9804619408788606 + outer loop + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + vertex 0.09455896505439373 -0.025336998323443327 -0.00641635396964375 + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + endloop +endfacet +facet normal 0.3211520281089577 -0.04228046660579895 0.9460833668261478 + outer loop + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + endloop +endfacet +facet normal 0.3211520281089577 -0.04228046660579895 0.9460833668261478 + outer loop + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.18750000000000477 -0.050240473580832334 -0.025555630283198814 + vertex 0.2772328579607902 -0.07428432040596132 -0.05709035061653675 + endloop +endfacet +facet normal 0.44154079104732447 -0.05812994792808846 0.8953561520396119 + outer loop + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.3749999999999983 6.256800633153147e-15 -0.10048094716167066 + endloop +endfacet +facet normal 0.44154079104732447 -0.05812994792808846 0.8953561520396119 + outer loop + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.2772328579607902 -0.07428432040596132 -0.05709035061653675 + endloop +endfacet +facet normal 0.5540900792434642 -0.0729473428207919 0.8292544056315635 + outer loop + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + vertex 0.3749999999999983 6.256800633153147e-15 -0.10048094716167066 + endloop +endfacet +facet normal 0.5540900792434642 -0.0729473428207919 0.8292544056315635 + outer loop + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + vertex 0.36222218485840024 -0.09705714191344023 -0.10048094716167066 + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + endloop +endfacet +facet normal 0.6568756721203721 -0.08647932283904398 0.749023149240202 + outer loop + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + endloop +endfacet +facet normal 0.6568756721203721 -0.08647932283904398 0.749023149240202 + outer loop + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.44101378974612376 -0.11816928881345765 -0.15498499478157451 + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + endloop +endfacet +facet normal 0.7481836306059015 -0.09850024362326809 0.6561394340378643 + outer loop + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + endloop +endfacet +facet normal 0.7481836306059015 -0.09850024362326809 0.6561394340378643 + outer loop + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.5122595264191648 -0.13725952641915956 -0.2196699141100909 + endloop +endfacet +facet normal 0.8265323563077905 -0.10881504904471195 0.5522712640339787 + outer loop + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + endloop +endfacet +facet normal 0.8265323563077905 -0.10881504904471195 0.5522712640339787 + outer loop + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + vertex 0.5747403605700071 -0.15400121547229964 -0.2934289282434605 + endloop +endfacet +facet normal 0.8906853399900149 -0.11726094957416046 0.43923740144919104 + outer loop + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + endloop +endfacet +facet normal 0.8906853399900149 -0.11726094957416046 0.43923740144919104 + outer loop + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + vertex 0.6273872278033595 -0.16810790103150555 -0.3750000000000007 + endloop +endfacet +facet normal 0.9396564272751644 -0.12370811552481337 0.3189703761068939 + outer loop + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + endloop +endfacet +facet normal 0.9396564272751644 -0.12370811552481337 0.3189703761068939 + outer loop + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + vertex 0.669299325624395 -0.1793382137957456 -0.4629874257261833 + endloop +endfacet +facet normal 0.9727099473421317 -0.12805969399568806 0.19348403839954934 + outer loop + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + endloop +endfacet +facet normal 0.9727099473421317 -0.12805969399568806 0.19348403839954934 + outer loop + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + vertex 0.6997595264191674 -0.18749999999999437 -0.5558857161731108 + endloop +endfacet +facet normal 0.9893581533630923 -0.13025147189870082 0.06484595933590571 + outer loop + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + endloop +endfacet +facet normal 0.9893581533630923 -0.13025147189870082 0.06484595933590571 + outer loop + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + vertex 0.7182466477069119 -0.1924536092194223 -0.6521053558349623 + endloop +endfacet +facet normal 0.06540070485598919 0.008610166138266519 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.0978946441650434 6.168676680573526e-15 -0.00641635396964375 + vertex 0.09455896505439373 0.025336998323455224 -0.00641635396964375 + endloop +endfacet +facet normal 0.1950260057858702 0.02567566075620343 0.9804619408788606 + outer loop + vertex 0.09455896505439373 0.025336998323455224 -0.00641635396964375 + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + endloop +endfacet +facet normal 0.1950260057858702 0.02567566075620343 0.9804619408788606 + outer loop + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + vertex 0.09455896505439373 0.025336998323455224 -0.00641635396964375 + vertex 0.0978946441650434 6.168676680573526e-15 -0.00641635396964375 + endloop +endfacet +facet normal 0.32115202810895754 0.042280466605798844 0.9460833668261478 + outer loop + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + endloop +endfacet +facet normal 0.32115202810895754 0.042280466605798844 0.9460833668261478 + outer loop + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + vertex 0.1941142838268956 6.168676680573526e-15 -0.025555630283198814 + endloop +endfacet +facet normal 0.44154079104732413 0.05812994792808825 0.895356152039612 + outer loop + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + vertex 0.3749999999999983 6.256800633153147e-15 -0.10048094716167066 + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + endloop +endfacet +facet normal 0.44154079104732413 0.05812994792808825 0.895356152039612 + outer loop + vertex 0.3749999999999983 6.256800633153147e-15 -0.10048094716167066 + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + vertex 0.28701257427381727 5.992428775414282e-15 -0.05709035061653675 + endloop +endfacet +facet normal 0.5540900792434642 0.07294734282079204 0.8292544056315634 + outer loop + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + endloop +endfacet +facet normal 0.5540900792434642 0.07294734282079204 0.8292544056315634 + outer loop + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + vertex 0.3749999999999983 6.256800633153147e-15 -0.10048094716167066 + endloop +endfacet +facet normal 0.6568756721203722 0.08647932283904411 0.7490231492402019 + outer loop + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + endloop +endfacet +facet normal 0.6568756721203722 0.08647932283904411 0.7490231492402019 + outer loop + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + vertex 0.45657107175654094 6.256800633153147e-15 -0.15498499478157451 + endloop +endfacet +facet normal 0.7481836306059012 0.09850024362326786 0.6561394340378646 + outer loop + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + endloop +endfacet +facet normal 0.7481836306059012 0.09850024362326786 0.6561394340378646 + outer loop + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + vertex 0.5303300858899119 6.256800633153147e-15 -0.2196699141100909 + endloop +endfacet +facet normal 0.8265323563077906 0.10881504904471188 0.5522712640339783 + outer loop + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + endloop +endfacet +facet normal 0.8265323563077906 0.10881504904471188 0.5522712640339783 + outer loop + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + vertex 0.5950150052184285 6.080552727993904e-15 -0.2934289282434605 + endloop +endfacet +facet normal 0.8906853399900149 0.11726094957416096 0.4392374014491911 + outer loop + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + endloop +endfacet +facet normal 0.8906853399900149 0.11726094957416096 0.4392374014491911 + outer loop + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + vertex 0.6495190528383332 6.080552727993904e-15 -0.3750000000000007 + endloop +endfacet +facet normal 0.9396564272751639 0.12370811552481382 0.31897037610689505 + outer loop + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + endloop +endfacet +facet normal 0.9396564272751639 0.12370811552481382 0.31897037610689505 + outer loop + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + vertex 0.6929096493834661 6.3449245857327695e-15 -0.4629874257261833 + endloop +endfacet +facet normal 0.9727099473421319 0.1280596939956886 0.19348403839954828 + outer loop + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + endloop +endfacet +facet normal 0.9727099473421319 0.1280596939956886 0.19348403839954828 + outer loop + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + vertex 0.7244443697168017 6.521172490892013e-15 -0.5558857161731108 + endloop +endfacet +facet normal 0.9893581533630923 0.1302514718987012 0.06484595933590638 + outer loop + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + vertex 0.7244443697168017 0.19411428382689683 -0.75 + endloop +endfacet +facet normal 0.9893581533630923 0.1302514718987012 0.06484595933590638 + outer loop + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + vertex 0.7435836460303576 6.256800633153147e-15 -0.6521053558349623 + endloop +endfacet +facet normal 0.06094375489982732 0.025243729821453346 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.09455896505439373 0.025336998323455224 -0.00641635396964375 + vertex 0.08477924874136492 0.04894732208252725 -0.00641635396964375 + endloop +endfacet +facet normal 0.18173530578727498 0.07527722841911386 0.9804619408788606 + outer loop + vertex 0.08477924874136492 0.04894732208252725 -0.00641635396964375 + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + endloop +endfacet +facet normal 0.18173530578727498 0.07527722841911386 0.9804619408788606 + outer loop + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + vertex 0.08477924874136492 0.04894732208252725 -0.00641635396964375 + vertex 0.09455896505439373 0.025336998323455224 -0.00641635396964375 + endloop +endfacet +facet normal 0.29926604812214963 0.1239600558899928 0.9460833668261488 + outer loop + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + endloop +endfacet +facet normal 0.29926604812214963 0.1239600558899928 0.9460833668261488 + outer loop + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + vertex 0.18750000000000477 0.050240473580843346 -0.025555630283198814 + endloop +endfacet +facet normal 0.4114505158181061 0.17042838389726436 0.895356152039612 + outer loop + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + endloop +endfacet +facet normal 0.4114505158181061 0.17042838389726436 0.895356152039612 + outer loop + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + vertex 0.2772328579607902 0.0742843204059726 -0.05709035061653675 + endloop +endfacet +facet normal 0.5163297560201728 0.21387078760035003 0.8292544056315618 + outer loop + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + endloop +endfacet +facet normal 0.5163297560201728 0.21387078760035003 0.8292544056315618 + outer loop + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + vertex 0.36222218485840024 0.09705714191345194 -0.10048094716167066 + endloop +endfacet +facet normal 0.6121106806037423 0.2535445455794942 0.7490231492402029 + outer loop + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + endloop +endfacet +facet normal 0.6121106806037423 0.2535445455794942 0.7490231492402029 + outer loop + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + vertex 0.44101378974612376 0.11816928881346883 -0.15498499478157451 + endloop +endfacet +facet normal 0.6971961526120158 0.28878810204623384 0.6561394340378703 + outer loop + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + endloop +endfacet +facet normal 0.6971961526120158 0.28878810204623384 0.6561394340378703 + outer loop + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + vertex 0.5122595264191648 0.1372595264191712 -0.2196699141100909 + endloop +endfacet +facet normal 0.7702055421347246 0.31902958136712606 0.552271264033963 + outer loop + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + endloop +endfacet +facet normal 0.7702055421347246 0.31902958136712606 0.552271264033963 + outer loop + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + vertex 0.5747403605700071 0.15400121547231205 -0.2934289282434605 + endloop +endfacet +facet normal 0.8299866059968093 0.34379170879189674 0.43923740144919937 + outer loop + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + endloop +endfacet +facet normal 0.8299866059968093 0.34379170879189674 0.43923740144919937 + outer loop + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + vertex 0.6273872278033595 0.1681079010315169 -0.3750000000000007 + endloop +endfacet +facet normal 0.8756203946120242 0.36269384293878143 0.31897037610690676 + outer loop + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + endloop +endfacet +facet normal 0.8756203946120242 0.36269384293878143 0.31897037610690676 + outer loop + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + vertex 0.669299325624395 0.17933821379575662 -0.4629874257261833 + endloop +endfacet +facet normal 0.9064213719099603 0.3754520254699266 0.19348403839954126 + outer loop + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + endloop +endfacet +facet normal 0.9064213719099603 0.3754520254699266 0.19348403839954126 + outer loop + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + vertex 0.6997595264191674 0.1875000000000068 -0.5558857161731108 + endloop +endfacet +facet normal 0.9219350302030523 0.38187799313694876 0.06484595933590358 + outer loop + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + vertex 0.7244443697168017 0.19411428382689683 -0.75 + vertex 0.6495190528383298 0.37500000000000616 -0.75 + endloop +endfacet +facet normal 0.9219350302030523 0.38187799313694876 0.06484595933590358 + outer loop + vertex 0.7244443697168017 0.19411428382689683 -0.75 + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + vertex 0.7182466477069119 0.1924536092194336 -0.6521053558349623 + endloop +endfacet +facet normal 0.05233358876156085 0.040156975034539945 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.08477924874136492 0.04894732208252725 -0.00641635396964375 + vertex 0.06922196673094617 0.06922196673095005 -0.00641635396964375 + endloop +endfacet +facet normal 0.15605964503107075 0.11974877736675699 0.980461940878861 + outer loop + vertex 0.06922196673094617 0.06922196673095005 -0.00641635396964375 + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + endloop +endfacet +facet normal 0.15605964503107075 0.11974877736675699 0.980461940878861 + outer loop + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + vertex 0.06922196673094617 0.06922196673095005 -0.00641635396964375 + vertex 0.08477924874136492 0.04894732208252725 -0.00641635396964375 + endloop +endfacet +facet normal 0.2569855815163482 0.19719197221895599 0.9460833668261497 + outer loop + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + endloop +endfacet +facet normal 0.2569855815163482 0.19719197221895599 0.9460833668261497 + outer loop + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + vertex 0.168107901031514 0.09705714191345396 -0.025555630283198814 + endloop +endfacet +facet normal 0.3533205678900155 0.2711124071500581 0.8953561520396106 + outer loop + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + endloop +endfacet +facet normal 0.3533205678900155 0.2711124071500581 0.8953561520396106 + outer loop + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + vertex 0.24856018052669496 0.14350628713691577 -0.05709035061653675 + endloop +endfacet +facet normal 0.4433824131993761 0.34021929164311726 0.8292544056315607 + outer loop + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + endloop +endfacet +facet normal 0.4433824131993761 0.34021929164311726 0.8292544056315607 + outer loop + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + vertex 0.32475952641916417 0.18750000000000627 -0.10048094716167066 + endloop +endfacet +facet normal 0.5256313577646933 0.4033311265408708 0.7490231492402067 + outer loop + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + endloop +endfacet +facet normal 0.5256313577646933 0.4033311265408708 0.7490231492402067 + outer loop + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + vertex 0.395402146774253 0.22828553587827638 -0.15498499478157451 + endloop +endfacet +facet normal 0.5986959089887445 0.4593955285596566 0.6561394340378688 + outer loop + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + endloop +endfacet +facet normal 0.5986959089887445 0.4593955285596566 0.6561394340378688 + outer loop + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + vertex 0.4592793267718477 0.26516504294496196 -0.2196699141100909 + endloop +endfacet +facet normal 0.6613904930900112 0.5075027749406743 0.5522712640339593 + outer loop + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + endloop +endfacet +facet normal 0.6613904930900112 0.5075027749406743 0.5522712640339593 + outer loop + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.515298110152092 0.297507502609221 -0.2934289282434605 + endloop +endfacet +facet normal 0.7127256564226487 0.5468936311981142 0.4392374014491998 + outer loop + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + endloop +endfacet +facet normal 0.7127256564226487 0.5468936311981142 0.4392374014491998 + outer loop + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + vertex 0.5625000000000024 0.324759526419172 -0.3750000000000007 + endloop +endfacet +facet normal 0.7519122790872014 0.5769625843363727 0.31897037610691154 + outer loop + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + endloop +endfacet +facet normal 0.7519122790872014 0.5769625843363727 0.31897037610691154 + outer loop + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + vertex 0.600077358893451 0.34645482469173877 -0.4629874257261833 + endloop +endfacet +facet normal 0.7783616779142637 0.5972579218721962 0.1934840383995476 + outer loop + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + endloop +endfacet +facet normal 0.7783616779142637 0.5972579218721962 0.1934840383995476 + outer loop + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + vertex 0.6273872278033595 0.3622221848584074 -0.5558857161731108 + endloop +endfacet +facet normal 0.7916835583043488 0.6074801602261363 0.0648459593358965 + outer loop + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + vertex 0.6495190528383298 0.37500000000000616 -0.75 + vertex 0.5303300858899119 0.5303300858899169 -0.75 + endloop +endfacet +facet normal 0.7916835583043488 0.6074801602261363 0.0648459593358965 + outer loop + vertex 0.6495190528383298 0.37500000000000616 -0.75 + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + vertex 0.6439623273009474 0.37179182301518526 -0.6521053558349623 + endloop +endfacet +facet normal 0.0401569750345392 0.05233358876156185 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.06922196673094617 0.06922196673095005 -0.00641635396964375 + vertex 0.04894732208252099 0.08477924874136986 -0.00641635396964375 + endloop +endfacet +facet normal 0.1197487773667561 0.15605964503107056 0.9804619408788612 + outer loop + vertex 0.04894732208252099 0.08477924874136986 -0.00641635396964375 + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + endloop +endfacet +facet normal 0.1197487773667561 0.15605964503107056 0.9804619408788612 + outer loop + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + vertex 0.04894732208252099 0.08477924874136986 -0.00641635396964375 + vertex 0.06922196673094617 0.06922196673095005 -0.00641635396964375 + endloop +endfacet +facet normal 0.19719197221895732 0.25698558151634315 0.9460833668261509 + outer loop + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + endloop +endfacet +facet normal 0.19719197221895732 0.25698558151634315 0.9460833668261509 + outer loop + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + vertex 0.13725952641916891 0.13725952641917305 -0.025555630283198814 + endloop +endfacet +facet normal 0.27111240715006285 0.3533205678900181 0.895356152039608 + outer loop + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + endloop +endfacet +facet normal 0.27111240715006285 0.3533205678900181 0.895356152039608 + outer loop + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + vertex 0.20294853755482573 0.20294853755483155 -0.05709035061653675 + endloop +endfacet +facet normal 0.34021929164311776 0.4433824131993795 0.8292544056315588 + outer loop + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + endloop +endfacet +facet normal 0.34021929164311776 0.4433824131993795 0.8292544056315588 + outer loop + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + vertex 0.2651650429449562 0.2651650429449601 -0.10048094716167066 + endloop +endfacet +facet normal 0.40333112654086894 0.5256313577646968 0.7490231492402052 + outer loop + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + endloop +endfacet +facet normal 0.40333112654086894 0.5256313577646968 0.7490231492402052 + outer loop + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + vertex 0.322844500932663 0.32284450093266387 -0.15498499478157451 + endloop +endfacet +facet normal 0.4593955285596506 0.5986959089887411 0.6561394340378762 + outer loop + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.29750750260921544 0.5152981101520974 -0.2934289282434605 + endloop +endfacet +facet normal 0.4593955285596506 0.5986959089887411 0.6561394340378762 + outer loop + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.37500000000000355 0.37500000000000444 -0.2196699141100909 + endloop +endfacet +facet normal 0.5075027749406752 0.6613904930900135 0.5522712640339558 + outer loop + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + vertex 0.29750750260921544 0.5152981101520974 -0.2934289282434605 + endloop +endfacet +facet normal 0.5075027749406752 0.6613904930900135 0.5522712640339558 + outer loop + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + vertex 0.4207391450977023 0.4207391450977075 -0.2934289282434605 + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + endloop +endfacet +facet normal 0.5468936311981141 0.7127256564226482 0.43923740144920104 + outer loop + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + endloop +endfacet +facet normal 0.5468936311981141 0.7127256564226482 0.43923740144920104 + outer loop + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + vertex 0.45927932677184946 0.4592793267718521 -0.3750000000000007 + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + endloop +endfacet +facet normal 0.576962584336373 0.7519122790872012 0.31897037610691176 + outer loop + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + endloop +endfacet +facet normal 0.576962584336373 0.7519122790872012 0.31897037610691176 + outer loop + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + vertex 0.48996111182864444 0.4899611118286467 -0.4629874257261833 + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + endloop +endfacet +facet normal 0.5972579218721966 0.7783616779142627 0.19348403839955 + outer loop + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + endloop +endfacet +facet normal 0.5972579218721966 0.7783616779142627 0.19348403839955 + outer loop + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + vertex 0.5122595264191684 0.5122595264191715 -0.5558857161731108 + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + endloop +endfacet +facet normal 0.6074801602261369 0.7916835583043482 0.06484595933589826 + outer loop + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + vertex 0.375 0.6495190528383352 -0.75 + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + endloop +endfacet +facet normal 0.6074801602261369 0.7916835583043482 0.06484595933589826 + outer loop + vertex 0.375 0.6495190528383352 -0.75 + vertex 0.5257930384874866 0.5257930384874893 -0.6521053558349623 + vertex 0.5303300858899119 0.5303300858899169 -0.75 + endloop +endfacet +facet normal 0.025243729821451164 0.0609437548998291 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.04894732208252099 0.08477924874136986 -0.00641635396964375 + vertex 0.025336998323448 0.0945589650543976 -0.00641635396964375 + endloop +endfacet +facet normal 0.07527722841911101 0.18173530578727345 0.9804619408788611 + outer loop + vertex 0.025336998323448 0.0945589650543976 -0.00641635396964375 + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + endloop +endfacet +facet normal 0.07527722841911101 0.18173530578727345 0.9804619408788611 + outer loop + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + vertex 0.025336998323448 0.0945589650543976 -0.00641635396964375 + vertex 0.04894732208252099 0.08477924874136986 -0.00641635396964375 + endloop +endfacet +facet normal 0.12396005588999118 0.2992660481221436 0.9460833668261509 + outer loop + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + endloop +endfacet +facet normal 0.12396005588999118 0.2992660481221436 0.9460833668261509 + outer loop + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + vertex 0.09705714191344798 0.16810790103151946 -0.025555630283198814 + endloop +endfacet +facet normal 0.1704283838972689 0.4114505158181117 0.8953561520396087 + outer loop + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + endloop +endfacet +facet normal 0.1704283838972689 0.4114505158181117 0.8953561520396087 + outer loop + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + vertex 0.14350628713691066 0.24856018052670173 -0.05709035061653675 + endloop +endfacet +facet normal 0.21387078760035225 0.5163297560201779 0.8292544056315581 + outer loop + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + endloop +endfacet +facet normal 0.21387078760035225 0.5163297560201779 0.8292544056315581 + outer loop + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + vertex 0.1874999999999993 0.32475952641917005 -0.10048094716167066 + endloop +endfacet +facet normal 0.25354454557949796 0.6121106806037409 0.7490231492402027 + outer loop + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + endloop +endfacet +facet normal 0.25354454557949796 0.6121106806037409 0.7490231492402027 + outer loop + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + vertex 0.22828553587826977 0.39540214677425795 -0.15498499478157451 + endloop +endfacet +facet normal 0.2887881020462367 0.6971961526120071 0.6561394340378784 + outer loop + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + endloop +endfacet +facet normal 0.2887881020462367 0.6971961526120071 0.6561394340378784 + outer loop + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + vertex 0.2651650429449562 0.45927932677185124 -0.2196699141100909 + vertex 0.29750750260921544 0.5152981101520974 -0.2934289282434605 + endloop +endfacet +facet normal 0.319029581367128 0.770205542134725 0.5522712640339613 + outer loop + vertex 0.29750750260921544 0.5152981101520974 -0.2934289282434605 + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + endloop +endfacet +facet normal 0.319029581367128 0.770205542134725 0.5522712640339613 + outer loop + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + vertex 0.29750750260921544 0.5152981101520974 -0.2934289282434605 + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + endloop +endfacet +facet normal 0.3437917087918968 0.8299866059968096 0.43923740144919843 + outer loop + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + endloop +endfacet +facet normal 0.3437917087918968 0.8299866059968096 0.43923740144919843 + outer loop + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + vertex 0.32475952641916417 0.5625000000000087 -0.3750000000000007 + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + endloop +endfacet +facet normal 0.3626938429387844 0.8756203946120222 0.3189703761069084 + outer loop + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + endloop +endfacet +facet normal 0.3626938429387844 0.8756203946120222 0.3189703761069084 + outer loop + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + vertex 0.34645482469173233 0.6000773588934564 -0.4629874257261833 + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + endloop +endfacet +facet normal 0.3754520254699339 0.9064213719099539 0.1934840383995568 + outer loop + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + endloop +endfacet +facet normal 0.3754520254699339 0.9064213719099539 0.1934840383995568 + outer loop + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + vertex 0.362222184858402 0.627387227803364 -0.5558857161731108 + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + endloop +endfacet +facet normal 0.38187799313695586 0.9219350302030502 0.06484595933589128 + outer loop + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + vertex 0.1941142838268919 0.7244443697168074 -0.75 + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + endloop +endfacet +facet normal 0.38187799313695586 0.9219350302030502 0.06484595933589128 + outer loop + vertex 0.1941142838268919 0.7244443697168074 -0.75 + vertex 0.37179182301517816 0.6439623273009537 -0.6521053558349623 + vertex 0.375 0.6495190528383352 -0.75 + endloop +endfacet +facet normal 0.0086101661382673 0.06540070485599002 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 0.025336998323448 0.0945589650543976 -0.00641635396964375 + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + endloop +endfacet +facet normal 0.02567566075620309 0.19502600578586757 0.9804619408788611 + outer loop + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + endloop +endfacet +facet normal 0.02567566075620309 0.19502600578586757 0.9804619408788611 + outer loop + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + vertex 0.025336998323448 0.0945589650543976 -0.00641635396964375 + endloop +endfacet +facet normal 0.04228046660580071 0.3211520281089474 0.9460833668261512 + outer loop + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + endloop +endfacet +facet normal 0.04228046660580071 0.3211520281089474 0.9460833668261512 + outer loop + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + vertex 0.05024047358083815 0.1875000000000096 -0.025555630283198814 + endloop +endfacet +facet normal 0.05812994792809575 0.4415407910473297 0.8953561520396089 + outer loop + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + endloop +endfacet +facet normal 0.05812994792809575 0.4415407910473297 0.8953561520396089 + outer loop + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + vertex 0.07428432040596679 0.2772328579607977 -0.05709035061653675 + endloop +endfacet +facet normal 0.072947342820801 0.5540900792434699 0.8292544056315587 + outer loop + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + endloop +endfacet +facet normal 0.072947342820801 0.5540900792434699 0.8292544056315587 + outer loop + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + vertex 0.09705714191344622 0.362222184858406 -0.10048094716167066 + endloop +endfacet +facet normal 0.08647932283904648 0.6568756721203722 0.7490231492402016 + outer loop + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + vertex 4.40619762898109e-16 0.5303300858899164 -0.2196699141100909 + endloop +endfacet +facet normal 0.08647932283904648 0.6568756721203722 0.7490231492402016 + outer loop + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + vertex 0.11816928881346311 0.44101378974612804 -0.15498499478157451 + endloop +endfacet +facet normal 0.09850024362327091 0.74818363060589 0.6561394340378769 + outer loop + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + vertex 4.40619762898109e-16 0.5303300858899164 -0.2196699141100909 + endloop +endfacet +facet normal 0.09850024362327091 0.74818363060589 0.6561394340378769 + outer loop + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + vertex 0.1372595264191654 0.5122595264191702 -0.2196699141100909 + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + endloop +endfacet +facet normal 0.10881504904471707 0.8265323563077999 0.5522712640339638 + outer loop + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + endloop +endfacet +facet normal 0.10881504904471707 0.8265323563077999 0.5522712640339638 + outer loop + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + vertex 0.15400121547230702 0.5747403605700127 -0.2934289282434605 + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + endloop +endfacet +facet normal 0.11726094957416416 0.8906853399900105 0.43923740144919876 + outer loop + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + endloop +endfacet +facet normal 0.11726094957416416 0.8906853399900105 0.43923740144919876 + outer loop + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + vertex 0.16810790103151224 0.6273872278033643 -0.3750000000000007 + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + endloop +endfacet +facet normal 0.12370811552482432 0.9396564272751587 0.31897037610690604 + outer loop + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + endloop +endfacet +facet normal 0.12370811552482432 0.9396564272751587 0.31897037610690604 + outer loop + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + vertex 0.17933821379575282 0.6692993256243993 -0.4629874257261833 + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + endloop +endfacet +facet normal 0.1280596939956959 0.9727099473421291 0.19348403839955683 + outer loop + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + endloop +endfacet +facet normal 0.1280596939956959 0.9727099473421291 0.19348403839955683 + outer loop + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + vertex 0.187500000000003 0.6997595264191726 -0.5558857161731108 + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + endloop +endfacet +facet normal 0.13025147189870506 0.9893581533630926 0.06484595933589267 + outer loop + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + endloop +endfacet +facet normal 0.13025147189870506 0.9893581533630926 0.06484595933589267 + outer loop + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex 0.19245360921943114 0.7182466477069188 -0.6521053558349623 + vertex 0.1941142838268919 0.7244443697168074 -0.75 + endloop +endfacet +facet normal -0.008610166138267256 0.06540070485599034 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + vertex -0.025336998323445267 0.09455896505439734 -0.00641635396964375 + endloop +endfacet +facet normal -0.025675660756202656 0.1950260057858675 0.9804619408788611 + outer loop + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + endloop +endfacet +facet normal -0.025675660756202656 0.1950260057858675 0.9804619408788611 + outer loop + vertex 2.2912227670701667e-15 0.09789464416504692 -0.00641635396964375 + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + vertex -0.025336998323445267 0.09455896505439734 -0.00641635396964375 + endloop +endfacet +facet normal -0.042280466605800135 0.3211520281089474 0.9460833668261512 + outer loop + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + endloop +endfacet +facet normal -0.042280466605800135 0.3211520281089474 0.9460833668261512 + outer loop + vertex 2.2912227670701667e-15 0.19411428382690019 -0.025555630283198814 + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + endloop +endfacet +facet normal -0.05812994792809518 0.4415407910473297 0.8953561520396089 + outer loop + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + endloop +endfacet +facet normal -0.05812994792809518 0.4415407910473297 0.8953561520396089 + outer loop + vertex 2.2912227670701667e-15 0.2870125742738255 -0.05709035061653675 + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + endloop +endfacet +facet normal -0.07294734282080022 0.55409007924347 0.8292544056315588 + outer loop + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + endloop +endfacet +facet normal -0.07294734282080022 0.55409007924347 0.8292544056315588 + outer loop + vertex 2.2912227670701667e-15 0.3750000000000053 -0.10048094716167066 + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + endloop +endfacet +facet normal -0.08647932283904626 0.6568756721203707 0.7490231492402031 + outer loop + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + vertex 4.40619762898109e-16 0.5303300858899164 -0.2196699141100909 + endloop +endfacet +facet normal -0.08647932283904626 0.6568756721203707 0.7490231492402031 + outer loop + vertex 2.2912227670701667e-15 0.4565710717565466 -0.15498499478157451 + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + endloop +endfacet +facet normal -0.09850024362327162 0.74818363060589 0.6561394340378769 + outer loop + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + endloop +endfacet +facet normal -0.09850024362327162 0.74818363060589 0.6561394340378769 + outer loop + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + vertex 4.40619762898109e-16 0.5303300858899164 -0.2196699141100909 + endloop +endfacet +facet normal -0.10881504904471707 0.8265323563077994 0.5522712640339645 + outer loop + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + endloop +endfacet +facet normal -0.10881504904471707 0.8265323563077994 0.5522712640339645 + outer loop + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + vertex 4.40619762898109e-16 0.5950150052184364 -0.2934289282434605 + endloop +endfacet +facet normal -0.117260949574164 0.8906853399900109 0.43923740144919815 + outer loop + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + endloop +endfacet +facet normal -0.117260949574164 0.8906853399900109 0.43923740144919815 + outer loop + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + vertex 4.40619762898109e-16 0.6495190528383377 -0.3750000000000007 + endloop +endfacet +facet normal -0.12370811552482448 0.9396564272751587 0.31897037610690593 + outer loop + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + endloop +endfacet +facet normal -0.12370811552482448 0.9396564272751587 0.31897037610690593 + outer loop + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + vertex 4.40619762898109e-16 0.6929096493834727 -0.4629874257261833 + endloop +endfacet +facet normal -0.12805969399569578 0.9727099473421289 0.1934840383995574 + outer loop + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + endloop +endfacet +facet normal -0.12805969399569578 0.9727099473421289 0.1934840383995574 + outer loop + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + vertex 4.40619762898109e-16 0.7244443697168097 -0.5558857161731108 + endloop +endfacet +facet normal -0.13025147189870487 0.9893581533630926 0.06484595933589217 + outer loop + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex -0.19411428382688925 0.7244443697168077 -0.75 + endloop +endfacet +facet normal -0.13025147189870487 0.9893581533630926 0.06484595933589217 + outer loop + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + vertex 4.40619762898109e-16 0.7435836460303655 -0.6521053558349623 + endloop +endfacet +facet normal -0.025243729821451844 0.06094375489982952 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.025336998323445267 0.09455896505439734 -0.00641635396964375 + vertex -0.04894732208251826 0.08477924874136941 -0.00641635396964375 + endloop +endfacet +facet normal -0.07527722841911035 0.18173530578727395 0.980461940878861 + outer loop + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + vertex -0.025336998323445267 0.09455896505439734 -0.00641635396964375 + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + endloop +endfacet +facet normal -0.07527722841911035 0.18173530578727395 0.980461940878861 + outer loop + vertex -0.025336998323445267 0.09455896505439734 -0.00641635396964375 + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + vertex -0.04894732208251826 0.08477924874136941 -0.00641635396964375 + endloop +endfacet +facet normal -0.12396005588999173 0.2992660481221431 0.9460833668261509 + outer loop + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + endloop +endfacet +facet normal -0.12396005588999173 0.2992660481221431 0.9460833668261509 + outer loop + vertex -0.05024047358083357 0.1875000000000098 -0.025555630283198814 + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + endloop +endfacet +facet normal -0.17042838389726736 0.4114505158181116 0.8953561520396092 + outer loop + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + endloop +endfacet +facet normal -0.17042838389726736 0.4114505158181116 0.8953561520396092 + outer loop + vertex -0.07428432040596405 0.2772328579607976 -0.05709035061653675 + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + endloop +endfacet +facet normal -0.2138707876003476 0.5163297560201772 0.8292544056315597 + outer loop + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + endloop +endfacet +facet normal -0.2138707876003476 0.5163297560201772 0.8292544056315597 + outer loop + vertex -0.09705714191344172 0.3622221848584062 -0.10048094716167066 + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + endloop +endfacet +facet normal -0.25354454557949535 0.6121106806037442 0.749023149240201 + outer loop + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + endloop +endfacet +facet normal -0.25354454557949535 0.6121106806037442 0.749023149240201 + outer loop + vertex -0.11816928881346038 0.44101378974612804 -0.15498499478157451 + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + endloop +endfacet +facet normal -0.2887881020462356 0.6971961526120091 0.6561394340378769 + outer loop + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + vertex -0.29750750260921266 0.5152981101520971 -0.2934289282434605 + endloop +endfacet +facet normal -0.2887881020462356 0.6971961526120091 0.6561394340378769 + outer loop + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.1372595264191608 0.5122595264191705 -0.2196699141100909 + endloop +endfacet +facet normal -0.319029581367125 0.7702055421347234 0.5522712640339653 + outer loop + vertex -0.29750750260921266 0.5152981101520971 -0.2934289282434605 + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + endloop +endfacet +facet normal -0.319029581367125 0.7702055421347234 0.5522712640339653 + outer loop + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + vertex -0.29750750260921266 0.5152981101520971 -0.2934289282434605 + vertex -0.15400121547230253 0.574740360570013 -0.2934289282434605 + endloop +endfacet +facet normal -0.34379170879189386 0.82998660599681 0.43923740144920004 + outer loop + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + endloop +endfacet +facet normal -0.34379170879189386 0.82998660599681 0.43923740144920004 + outer loop + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + vertex -0.16810790103150774 0.6273872278033649 -0.3750000000000007 + endloop +endfacet +facet normal -0.3626938429387824 0.8756203946120245 0.31897037610690504 + outer loop + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + endloop +endfacet +facet normal -0.3626938429387824 0.8756203946120245 0.31897037610690504 + outer loop + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + vertex -0.1793382137957501 0.6692993256243995 -0.4629874257261833 + endloop +endfacet +facet normal -0.37545202546993084 0.9064213719099551 0.19348403839955766 + outer loop + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + endloop +endfacet +facet normal -0.37545202546993084 0.9064213719099551 0.19348403839955766 + outer loop + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + vertex -0.18749999999999842 0.699759526419173 -0.5558857161731108 + endloop +endfacet +facet normal -0.3818779931369529 0.9219350302030511 0.06484595933589475 + outer loop + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + vertex -0.19411428382688925 0.7244443697168077 -0.75 + vertex -0.3749999999999991 0.6495190528383353 -0.75 + endloop +endfacet +facet normal -0.3818779931369529 0.9219350302030511 0.06484595933589475 + outer loop + vertex -0.19411428382688925 0.7244443697168077 -0.75 + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + vertex -0.19245360921942664 0.7182466477069193 -0.6521053558349623 + endloop +endfacet +facet normal -0.04015697503453904 0.05233358876156303 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.04894732208251826 0.08477924874136941 -0.00641635396964375 + vertex -0.06922196673094344 0.06922196673095005 -0.00641635396964375 + endloop +endfacet +facet normal -0.11974877736675962 0.15605964503106945 0.9804619408788607 + outer loop + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + vertex -0.04894732208251826 0.08477924874136941 -0.00641635396964375 + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + endloop +endfacet +facet normal -0.11974877736675962 0.15605964503106945 0.9804619408788607 + outer loop + vertex -0.04894732208251826 0.08477924874136941 -0.00641635396964375 + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + vertex -0.06922196673094344 0.06922196673095005 -0.00641635396964375 + endloop +endfacet +facet normal -0.1971919722189589 0.25698558151634204 0.9460833668261507 + outer loop + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + endloop +endfacet +facet normal -0.1971919722189589 0.25698558151634204 0.9460833668261507 + outer loop + vertex -0.09705714191344533 0.1681079010315192 -0.025555630283198814 + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + endloop +endfacet +facet normal -0.27111240715006063 0.35332056789001487 0.89535615203961 + outer loop + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + endloop +endfacet +facet normal -0.27111240715006063 0.35332056789001487 0.89535615203961 + outer loop + vertex -0.14350628713690608 0.2485601805267019 -0.05709035061653675 + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + endloop +endfacet +facet normal -0.34021929164312104 0.4433824131993753 0.8292544056315597 + outer loop + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + endloop +endfacet +facet normal -0.34021929164312104 0.4433824131993753 0.8292544056315597 + outer loop + vertex -0.18749999999999656 0.32475952641917033 -0.10048094716167066 + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + endloop +endfacet +facet normal -0.4033311265408789 0.5256313577646976 0.7490231492401995 + outer loop + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + endloop +endfacet +facet normal -0.4033311265408789 0.5256313577646976 0.7490231492401995 + outer loop + vertex -0.2282855358782688 0.39540214677425795 -0.15498499478157451 + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + endloop +endfacet +facet normal -0.45939552855965476 0.5986959089887367 0.656139434037877 + outer loop + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.29750750260921266 0.5152981101520971 -0.2934289282434605 + endloop +endfacet +facet normal -0.45939552855965476 0.5986959089887367 0.656139434037877 + outer loop + vertex -0.2651650429449517 0.4592793267718523 -0.2196699141100909 + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + endloop +endfacet +facet normal -0.5075027749406772 0.661390493090006 0.552271264033963 + outer loop + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + endloop +endfacet +facet normal -0.5075027749406772 0.661390493090006 0.552271264033963 + outer loop + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + vertex -0.29750750260921266 0.5152981101520971 -0.2934289282434605 + endloop +endfacet +facet normal -0.546893631198117 0.7127256564226455 0.4392374014492018 + outer loop + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + endloop +endfacet +facet normal -0.546893631198117 0.7127256564226455 0.4392374014492018 + outer loop + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + vertex -0.3247595264191633 0.5625000000000087 -0.3750000000000007 + endloop +endfacet +facet normal -0.5769625843363761 0.7519122790872009 0.3189703761069064 + outer loop + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + endloop +endfacet +facet normal -0.5769625843363761 0.7519122790872009 0.3189703761069064 + outer loop + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + vertex -0.3464548246917296 0.6000773588934573 -0.4629874257261833 + endloop +endfacet +facet normal -0.5972579218721997 0.778361677914259 0.19348403839955522 + outer loop + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + endloop +endfacet +facet normal -0.5972579218721997 0.778361677914259 0.19348403839955522 + outer loop + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + vertex -0.36222218485839924 0.6273872278033645 -0.5558857161731108 + endloop +endfacet +facet normal -0.60748016022614 0.7916835583043453 0.06484595933590198 + outer loop + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + vertex -0.3749999999999991 0.6495190528383353 -0.75 + vertex -0.5303300858899093 0.5303300858899173 -0.75 + endloop +endfacet +facet normal -0.60748016022614 0.7916835583043453 0.06484595933590198 + outer loop + vertex -0.3749999999999991 0.6495190528383353 -0.75 + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + vertex -0.3717918230151772 0.6439623273009536 -0.6521053558349623 + endloop +endfacet +facet normal -0.05233358876156135 0.0401569750345408 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.06922196673094344 0.06922196673095005 -0.00641635396964375 + vertex -0.08477924874136404 0.048947322082525134 -0.00641635396964375 + endloop +endfacet +facet normal -0.15605964503107173 0.11974877736675917 0.9804619408788606 + outer loop + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + vertex -0.06922196673094344 0.06922196673095005 -0.00641635396964375 + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + endloop +endfacet +facet normal -0.15605964503107173 0.11974877736675917 0.9804619408788606 + outer loop + vertex -0.06922196673094344 0.06922196673095005 -0.00641635396964375 + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + vertex -0.08477924874136404 0.048947322082525134 -0.00641635396964375 + endloop +endfacet +facet normal -0.2569855815163448 0.19719197221895485 0.9460833668261507 + outer loop + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + endloop +endfacet +facet normal -0.2569855815163448 0.19719197221895485 0.9460833668261507 + outer loop + vertex -0.13725952641916617 0.1372595264191712 -0.025555630283198814 + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + endloop +endfacet +facet normal -0.35332056789001304 0.2711124071500599 0.895356152039611 + outer loop + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + endloop +endfacet +facet normal -0.35332056789001304 0.2711124071500599 0.895356152039611 + outer loop + vertex -0.20294853755482486 0.20294853755482933 -0.05709035061653675 + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + endloop +endfacet +facet normal -0.4433824131993778 0.34021929164312337 0.8292544056315574 + outer loop + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + endloop +endfacet +facet normal -0.4433824131993778 0.34021929164312337 0.8292544056315574 + outer loop + vertex -0.2651650429449535 0.26516504294496024 -0.10048094716167066 + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + endloop +endfacet +facet normal -0.525631357764694 0.40333112654087855 0.7490231492402022 + outer loop + vertex -0.4592793267718451 0.26516504294496085 -0.2196699141100909 + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + endloop +endfacet +facet normal -0.525631357764694 0.40333112654087855 0.7490231492402022 + outer loop + vertex -0.3228445009326585 0.3228445009326648 -0.15498499478157451 + vertex -0.4592793267718451 0.26516504294496085 -0.2196699141100909 + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + endloop +endfacet +facet normal -0.5986959089887359 0.45939552855965804 0.6561394340378757 + outer loop + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + endloop +endfacet +facet normal -0.5986959089887359 0.45939552855965804 0.6561394340378757 + outer loop + vertex -0.3749999999999973 0.37500000000000555 -0.2196699141100909 + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.4592793267718451 0.26516504294496085 -0.2196699141100909 + endloop +endfacet +facet normal -0.6613904930900063 0.5075027749406786 0.5522712640339612 + outer loop + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + endloop +endfacet +facet normal -0.6613904930900063 0.5075027749406786 0.5522712640339612 + outer loop + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.4207391450976995 0.42073914509770616 -0.2934289282434605 + endloop +endfacet +facet normal -0.7127256564226376 0.5468936311981201 0.4392374014492105 + outer loop + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + endloop +endfacet +facet normal -0.7127256564226376 0.5468936311981201 0.4392374014492105 + outer loop + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + vertex -0.4592793267718451 0.4592793267718532 -0.3750000000000007 + endloop +endfacet +facet normal -0.7519122790871978 0.5769625843363841 0.3189703761068991 + outer loop + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + endloop +endfacet +facet normal -0.7519122790871978 0.5769625843363841 0.3189703761068991 + outer loop + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + vertex -0.48996111182863983 0.48996111182864865 -0.4629874257261833 + endloop +endfacet +facet normal -0.7783616779142564 0.5972579218722032 0.19348403839955602 + outer loop + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + endloop +endfacet +facet normal -0.7783616779142564 0.5972579218722032 0.19348403839955602 + outer loop + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + vertex -0.512259526419164 0.5122595264191722 -0.5558857161731108 + endloop +endfacet +facet normal -0.7916835583043422 0.6074801602261442 0.06484595933590302 + outer loop + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + vertex -0.5303300858899093 0.5303300858899173 -0.75 + vertex -0.6495190528383288 0.3750000000000066 -0.75 + endloop +endfacet +facet normal -0.7916835583043422 0.6074801602261442 0.06484595933590302 + outer loop + vertex -0.5303300858899093 0.5303300858899173 -0.75 + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + vertex -0.525793038487482 0.5257930384874905 -0.6521053558349623 + endloop +endfacet +facet normal -0.06094375489983137 0.025243729821447448 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.08477924874136404 0.048947322082525134 -0.00641635396964375 + vertex -0.09455896505438914 0.025336998323454697 -0.00641635396964375 + endloop +endfacet +facet normal -0.18173530578727487 0.07527722841911193 0.9804619408788607 + outer loop + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + vertex -0.08477924874136404 0.048947322082525134 -0.00641635396964375 + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + endloop +endfacet +facet normal -0.18173530578727487 0.07527722841911193 0.9804619408788607 + outer loop + vertex -0.08477924874136404 0.048947322082525134 -0.00641635396964375 + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + vertex -0.09455896505438914 0.025336998323454697 -0.00641635396964375 + endloop +endfacet +facet normal -0.2992660481221482 0.12396005588999141 0.9460833668261494 + outer loop + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + endloop +endfacet +facet normal -0.2992660481221482 0.12396005588999141 0.9460833668261494 + outer loop + vertex -0.16810790103151135 0.09705714191345247 -0.025555630283198814 + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + endloop +endfacet +facet normal -0.4114505158181033 0.1704283838972624 0.8953561520396138 + outer loop + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + endloop +endfacet +facet normal -0.4114505158181033 0.1704283838972624 0.8953561520396138 + outer loop + vertex -0.24856018052669399 0.14350628713691393 -0.05709035061653675 + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + endloop +endfacet +facet normal -0.5163297560201794 0.21387078760035425 0.8292544056315567 + outer loop + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + endloop +endfacet +facet normal -0.5163297560201794 0.21387078760035425 0.8292544056315567 + outer loop + vertex -0.3247595264191633 0.18750000000000555 -0.10048094716167066 + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + endloop +endfacet +facet normal -0.6121106806037421 0.25354454557949685 0.7490231492402022 + outer loop + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + vertex -0.4592793267718451 0.26516504294496085 -0.2196699141100909 + endloop +endfacet +facet normal -0.6121106806037421 0.25354454557949685 0.7490231492402022 + outer loop + vertex -0.3954021467742502 0.2282855358782762 -0.15498499478157451 + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + endloop +endfacet +facet normal -0.6971961526120126 0.2887881020462354 0.6561394340378731 + outer loop + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + endloop +endfacet +facet normal -0.6971961526120126 0.2887881020462354 0.6561394340378731 + outer loop + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + vertex -0.4592793267718451 0.26516504294496085 -0.2196699141100909 + endloop +endfacet +facet normal -0.7702055421347223 0.31902958136712645 0.5522712640339661 + outer loop + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + endloop +endfacet +facet normal -0.7702055421347223 0.31902958136712645 0.5522712640339661 + outer loop + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + vertex -0.5152981101520892 0.29750750260922104 -0.2934289282434605 + endloop +endfacet +facet normal -0.8299866059968017 0.34379170879189414 0.4392374014492157 + outer loop + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + endloop +endfacet +facet normal -0.8299866059968017 0.34379170879189414 0.4392374014492157 + outer loop + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + vertex -0.5624999999999998 0.3247595264191723 -0.3750000000000007 + endloop +endfacet +facet normal -0.8756203946120306 0.3626938429387836 0.31897037610688694 + outer loop + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + endloop +endfacet +facet normal -0.8756203946120306 0.3626938429387836 0.31897037610688694 + outer loop + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + vertex -0.6000773588934502 0.34645482469174 -0.4629874257261833 + endloop +endfacet +facet normal -0.9064213719099566 0.37545202546992584 0.19348403839955947 + outer loop + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + endloop +endfacet +facet normal -0.9064213719099566 0.37545202546992584 0.19348403839955947 + outer loop + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + vertex -0.6273872278033568 0.3622221848584076 -0.5558857161731108 + endloop +endfacet +facet normal -0.9219350302030518 0.38187799313694987 0.06484595933590379 + outer loop + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + vertex -0.6495190528383288 0.3750000000000066 -0.75 + vertex -0.7244443697168008 0.19411428382689735 -0.75 + endloop +endfacet +facet normal -0.9219350302030518 0.38187799313694987 0.06484595933590379 + outer loop + vertex -0.6495190528383288 0.3750000000000066 -0.75 + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + vertex -0.6439623273009464 0.37179182301518526 -0.6521053558349623 + endloop +endfacet +facet normal -0.06540070485599155 0.008610166138267124 0.9978219344369069 + outer loop + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.09455896505438914 0.025336998323454697 -0.00641635396964375 + vertex -0.0978946441650388 6.609296443471635e-15 -0.00641635396964375 + endloop +endfacet +facet normal -0.1950260057858666 0.02567566075620288 0.9804619408788613 + outer loop + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + vertex -0.09455896505438914 0.025336998323454697 -0.00641635396964375 + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + endloop +endfacet +facet normal -0.1950260057858666 0.02567566075620288 0.9804619408788613 + outer loop + vertex -0.09455896505438914 0.025336998323454697 -0.00641635396964375 + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + vertex -0.0978946441650388 6.609296443471635e-15 -0.00641635396964375 + endloop +endfacet +facet normal -0.32115202810895793 0.04228046660579873 0.9460833668261476 + outer loop + vertex -0.28701257427381444 6.609296443471635e-15 -0.05709035061653675 + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + endloop +endfacet +facet normal -0.32115202810895793 0.04228046660579873 0.9460833668261476 + outer loop + vertex -0.18750000000000203 0.05024047358084423 -0.025555630283198814 + vertex -0.28701257427381444 6.609296443471635e-15 -0.05709035061653675 + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + endloop +endfacet +facet normal -0.44154079104731814 0.058129947928087365 0.8953561520396153 + outer loop + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + endloop +endfacet +facet normal -0.44154079104731814 0.058129947928087365 0.8953561520396153 + outer loop + vertex -0.27723285796078756 0.07428432040597313 -0.05709035061653675 + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.28701257427381444 6.609296443471635e-15 -0.05709035061653675 + endloop +endfacet +facet normal -0.5540900792434726 0.072947342820793 0.8292544056315577 + outer loop + vertex -0.4565710717565381 6.609296443471635e-15 -0.15498499478157451 + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + endloop +endfacet +facet normal -0.5540900792434726 0.072947342820793 0.8292544056315577 + outer loop + vertex -0.36222218485839924 0.09705714191345238 -0.10048094716167066 + vertex -0.4565710717565381 6.609296443471635e-15 -0.15498499478157451 + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + endloop +endfacet +facet normal -0.6568756721203702 0.08647932283904451 0.7490231492402035 + outer loop + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + endloop +endfacet +facet normal -0.6568756721203702 0.08647932283904451 0.7490231492402035 + outer loop + vertex -0.44101378974612115 0.11816928881346928 -0.15498499478157451 + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.4565710717565381 6.609296443471635e-15 -0.15498499478157451 + endloop +endfacet +facet normal -0.7481836306058998 0.09850024362326833 0.6561394340378662 + outer loop + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + endloop +endfacet +facet normal -0.7481836306058998 0.09850024362326833 0.6561394340378662 + outer loop + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.5122595264191621 0.13725952641917138 -0.2196699141100909 + endloop +endfacet +facet normal -0.8265323563077904 0.10881504904471183 0.5522712640339789 + outer loop + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + endloop +endfacet +facet normal -0.8265323563077904 0.10881504904471183 0.5522712640339789 + outer loop + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + vertex -0.5747403605700043 0.1540012154723118 -0.2934289282434605 + endloop +endfacet +facet normal -0.8906853399900075 0.11726094957415956 0.43923740144920614 + outer loop + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + endloop +endfacet +facet normal -0.8906853399900075 0.11726094957415956 0.43923740144920614 + outer loop + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + vertex -0.6273872278033568 0.1681079010315176 -0.3750000000000007 + endloop +endfacet +facet normal -0.9396564272751698 0.12370811552481424 0.3189703761068774 + outer loop + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + endloop +endfacet +facet normal -0.9396564272751698 0.12370811552481424 0.3189703761068774 + outer loop + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + vertex -0.669299325624394 0.17933821379575804 -0.4629874257261833 + endloop +endfacet +facet normal -0.9727099473421281 0.12805969399568784 0.19348403839956682 + outer loop + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + endloop +endfacet +facet normal -0.9727099473421281 0.12805969399568784 0.19348403839956682 + outer loop + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + vertex -0.6997595264191646 0.18750000000000652 -0.5558857161731108 + endloop +endfacet +facet normal -0.9893581533630923 0.1302514718987008 0.06484595933590605 + outer loop + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + vertex -0.7244443697168008 0.19411428382689735 -0.75 + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + endloop +endfacet +facet normal -0.9893581533630923 0.1302514718987008 0.06484595933590605 + outer loop + vertex -0.7244443697168008 0.19411428382689735 -0.75 + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + vertex -0.7182466477069109 0.19245360921943466 -0.6521053558349623 + endloop +endfacet +facet normal -0.06540070485599163 -0.008610166138267695 0.9978219344369069 + outer loop + vertex -0.09455896505438914 -0.025336998323442095 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.0978946441650388 6.609296443471635e-15 -0.00641635396964375 + endloop +endfacet +facet normal -0.19502600578586665 -0.02567566075620338 0.9804619408788613 + outer loop + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + vertex -0.0978946441650388 6.609296443471635e-15 -0.00641635396964375 + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + endloop +endfacet +facet normal -0.19502600578586665 -0.02567566075620338 0.9804619408788613 + outer loop + vertex -0.0978946441650388 6.609296443471635e-15 -0.00641635396964375 + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + vertex -0.09455896505438914 -0.025336998323442095 -0.00641635396964375 + endloop +endfacet +facet normal -0.32115202810895793 -0.042280466605799295 0.9460833668261476 + outer loop + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + vertex -0.28701257427381444 6.609296443471635e-15 -0.05709035061653675 + endloop +endfacet +facet normal -0.32115202810895793 -0.042280466605799295 0.9460833668261476 + outer loop + vertex -0.19411428382689286 6.609296443471635e-15 -0.025555630283198814 + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + endloop +endfacet +facet normal -0.4415407910473178 -0.05812994792808769 0.8953561520396154 + outer loop + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.28701257427381444 6.609296443471635e-15 -0.05709035061653675 + endloop +endfacet +facet normal -0.4415407910473178 -0.05812994792808769 0.8953561520396154 + outer loop + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.36222218485839924 -0.09705714191344023 -0.10048094716167066 + endloop +endfacet +facet normal -0.5540900792434729 -0.07294734282079329 0.8292544056315574 + outer loop + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.4565710717565381 6.609296443471635e-15 -0.15498499478157451 + endloop +endfacet +facet normal -0.5540900792434729 -0.07294734282079329 0.8292544056315574 + outer loop + vertex -0.3749999999999973 6.521172490892013e-15 -0.10048094716167066 + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.36222218485839924 -0.09705714191344023 -0.10048094716167066 + endloop +endfacet +facet normal -0.6568756721203701 -0.08647932283904468 0.7490231492402037 + outer loop + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.4565710717565381 6.609296443471635e-15 -0.15498499478157451 + endloop +endfacet +facet normal -0.6568756721203701 -0.08647932283904468 0.7490231492402037 + outer loop + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + endloop +endfacet +facet normal -0.7481836306058997 -0.09850024362326867 0.6561394340378663 + outer loop + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + endloop +endfacet +facet normal -0.7481836306058997 -0.09850024362326867 0.6561394340378663 + outer loop + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + vertex -0.5303300858899093 6.609296443471635e-15 -0.2196699141100909 + endloop +endfacet +facet normal -0.826532356307791 -0.10881504904471273 0.552271264033978 + outer loop + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + endloop +endfacet +facet normal -0.826532356307791 -0.10881504904471273 0.552271264033978 + outer loop + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + vertex -0.5950150052184259 6.256800633153147e-15 -0.2934289282434605 + endloop +endfacet +facet normal -0.8906853399900072 -0.11726094957416018 0.4392374014492067 + outer loop + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + endloop +endfacet +facet normal -0.8906853399900072 -0.11726094957416018 0.4392374014492067 + outer loop + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + vertex -0.6495190528383306 6.609296443471635e-15 -0.3750000000000007 + endloop +endfacet +facet normal -0.9396564272751696 -0.12370811552481452 0.31897037610687784 + outer loop + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + endloop +endfacet +facet normal -0.9396564272751696 -0.12370811552481452 0.31897037610687784 + outer loop + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + vertex -0.6929096493834651 6.521172490892013e-15 -0.4629874257261833 + endloop +endfacet +facet normal -0.9727099473421281 -0.12805969399568784 0.1934840383995668 + outer loop + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + endloop +endfacet +facet normal -0.9727099473421281 -0.12805969399568784 0.1934840383995668 + outer loop + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + vertex -0.7244443697167989 6.433048538312391e-15 -0.5558857161731108 + endloop +endfacet +facet normal -0.9893581533630923 -0.130251471898701 0.06484595933590562 + outer loop + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + endloop +endfacet +facet normal -0.9893581533630923 -0.130251471898701 0.06484595933590562 + outer loop + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + vertex -0.7435836460303566 6.521172490892013e-15 -0.6521053558349623 + endloop +endfacet +facet normal -0.0609437548998311 -0.0252437298214497 0.9978219344369069 + outer loop + vertex -0.08477924874136228 -0.04894732208251535 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.09455896505438914 -0.025336998323442095 -0.00641635396964375 + endloop +endfacet +facet normal -0.18173530578727437 -0.07527722841911191 0.980461940878861 + outer loop + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + vertex -0.08477924874136228 -0.04894732208251535 -0.00641635396964375 + vertex -0.09455896505438914 -0.025336998323442095 -0.00641635396964375 + endloop +endfacet +facet normal -0.18173530578727437 -0.07527722841911191 0.980461940878861 + outer loop + vertex -0.08477924874136228 -0.04894732208251535 -0.00641635396964375 + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + endloop +endfacet +facet normal -0.29926604812214974 -0.12396005588999572 0.9460833668261485 + outer loop + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + vertex -0.18750000000000203 -0.05024047358083145 -0.025555630283198814 + endloop +endfacet +facet normal -0.29926604812214974 -0.12396005588999572 0.9460833668261485 + outer loop + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + endloop +endfacet +facet normal -0.41145051581809833 -0.1704283838972616 0.8953561520396163 + outer loop + vertex -0.36222218485839924 -0.09705714191344023 -0.10048094716167066 + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + vertex -0.27723285796078756 -0.07428432040596009 -0.05709035061653675 + endloop +endfacet +facet normal -0.41145051581809833 -0.1704283838972616 0.8953561520396163 + outer loop + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + vertex -0.36222218485839924 -0.09705714191344023 -0.10048094716167066 + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + endloop +endfacet +facet normal -0.5163297560201823 -0.21387078760035297 0.8292544056315551 + outer loop + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + vertex -0.36222218485839924 -0.09705714191344023 -0.10048094716167066 + endloop +endfacet +facet normal -0.5163297560201823 -0.21387078760035297 0.8292544056315551 + outer loop + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + endloop +endfacet +facet normal -0.6121106806037417 -0.2535445455794952 0.749023149240203 + outer loop + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + vertex -0.44101378974612115 -0.11816928881345641 -0.15498499478157451 + endloop +endfacet +facet normal -0.6121106806037417 -0.2535445455794952 0.749023149240203 + outer loop + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + endloop +endfacet +facet normal -0.6971961526120148 -0.2887881020462365 0.6561394340378703 + outer loop + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + endloop +endfacet +facet normal -0.6971961526120148 -0.2887881020462365 0.6561394340378703 + outer loop + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + vertex -0.5122595264191621 -0.13725952641915923 -0.2196699141100909 + endloop +endfacet +facet normal -0.7702055421347237 -0.3190295813671283 0.552271264033963 + outer loop + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + endloop +endfacet +facet normal -0.7702055421347237 -0.3190295813671283 0.552271264033963 + outer loop + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + vertex -0.5747403605700043 -0.1540012154722991 -0.2934289282434605 + endloop +endfacet +facet normal -0.8299866059968004 -0.3437917087918952 0.4392374014492174 + outer loop + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + endloop +endfacet +facet normal -0.8299866059968004 -0.3437917087918952 0.4392374014492174 + outer loop + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + vertex -0.6273872278033568 -0.16810790103150342 -0.3750000000000007 + endloop +endfacet +facet normal -0.8756203946120292 -0.36269384293878437 0.3189703761068899 + outer loop + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + endloop +endfacet +facet normal -0.8756203946120292 -0.36269384293878437 0.3189703761068899 + outer loop + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + vertex -0.669299325624394 -0.17933821379574472 -0.4629874257261833 + endloop +endfacet +facet normal -0.9064213719099566 -0.3754520254699268 0.1934840383995579 + outer loop + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + endloop +endfacet +facet normal -0.9064213719099566 -0.3754520254699268 0.1934840383995579 + outer loop + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + vertex -0.6997595264191646 -0.18749999999999384 -0.5558857161731108 + endloop +endfacet +facet normal -0.9219350302030517 -0.3818779931369506 0.06484595933590277 + outer loop + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + endloop +endfacet +facet normal -0.9219350302030517 -0.3818779931369506 0.06484595933590277 + outer loop + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + vertex -0.7182466477069109 -0.19245360921942198 -0.6521053558349623 + endloop +endfacet +facet normal -0.05233358876156173 -0.040156975034541034 0.9978219344369069 + outer loop + vertex -0.0692219667309452 -0.06922196673093595 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.08477924874136228 -0.04894732208251535 -0.00641635396964375 + endloop +endfacet +facet normal -0.15605964503107123 -0.11974877736676078 0.9804619408788604 + outer loop + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + vertex -0.0692219667309452 -0.06922196673093595 -0.00641635396964375 + vertex -0.08477924874136228 -0.04894732208251535 -0.00641635396964375 + endloop +endfacet +facet normal -0.15605964503107123 -0.11974877736676078 0.9804619408788604 + outer loop + vertex -0.0692219667309452 -0.06922196673093595 -0.00641635396964375 + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + endloop +endfacet +facet normal -0.2569855815163474 -0.1971919722189583 0.9460833668261496 + outer loop + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + vertex -0.16810790103151135 -0.09705714191344075 -0.025555630283198814 + endloop +endfacet +facet normal -0.2569855815163474 -0.1971919722189583 0.9460833668261496 + outer loop + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + endloop +endfacet +facet normal -0.3533205678900059 -0.2711124071500493 0.8953561520396169 + outer loop + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + vertex -0.24856018052669213 -0.1435062871369022 -0.05709035061653675 + endloop +endfacet +facet normal -0.3533205678900059 -0.2711124071500493 0.8953561520396169 + outer loop + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + endloop +endfacet +facet normal -0.4433824131993864 -0.3402192916431213 0.8292544056315537 + outer loop + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + vertex -0.3247595264191633 -0.18749999999999525 -0.10048094716167066 + endloop +endfacet +facet normal -0.4433824131993864 -0.3402192916431213 0.8292544056315537 + outer loop + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + endloop +endfacet +facet normal -0.5256313577646966 -0.403331126540868 0.749023149240206 + outer loop + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + vertex -0.3954021467742502 -0.2282855358782643 -0.15498499478157451 + endloop +endfacet +facet normal -0.5256313577646966 -0.403331126540868 0.749023149240206 + outer loop + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + endloop +endfacet +facet normal -0.5986959089887492 -0.4593955285596585 0.6561394340378631 + outer loop + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + vertex -0.4592793267718451 -0.26516504294494947 -0.2196699141100909 + endloop +endfacet +facet normal -0.5986959089887492 -0.4593955285596585 0.6561394340378631 + outer loop + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + endloop +endfacet +facet normal -0.6613904930900103 -0.5075027749406749 0.5522712640339599 + outer loop + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + endloop +endfacet +facet normal -0.6613904930900103 -0.5075027749406749 0.5522712640339599 + outer loop + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.5152981101520892 -0.29750750260920766 -0.2934289282434605 + endloop +endfacet +facet normal -0.712725656422642 -0.546893631198111 0.4392374014492148 + outer loop + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + endloop +endfacet +facet normal -0.712725656422642 -0.546893631198111 0.4392374014492148 + outer loop + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + vertex -0.5624999999999998 -0.324759526419158 -0.3750000000000007 + endloop +endfacet +facet normal -0.7519122790872029 -0.5769625843363748 0.31897037610690404 + outer loop + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + endloop +endfacet +facet normal -0.7519122790872029 -0.5769625843363748 0.31897037610690404 + outer loop + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + vertex -0.6000773588934502 -0.346454824691726 -0.4629874257261833 + endloop +endfacet +facet normal -0.7783616779142623 -0.5972579218721977 0.19348403839954878 + outer loop + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + endloop +endfacet +facet normal -0.7783616779142623 -0.5972579218721977 0.19348403839954878 + outer loop + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + vertex -0.6273872278033568 -0.3622221848583948 -0.5558857161731108 + endloop +endfacet +facet normal -0.7916835583043467 -0.6074801602261378 0.06484595933590631 + outer loop + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + vertex -0.530330085889911 -0.5303300858899044 -0.75 + endloop +endfacet +facet normal -0.7916835583043467 -0.6074801602261378 0.06484595933590631 + outer loop + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + vertex -0.6439623273009464 -0.3717918230151716 -0.6521053558349623 + endloop +endfacet +facet normal -0.04015697503453776 -0.052333588761565575 0.9978219344369068 + outer loop + vertex -0.04894732208252011 -0.08477924874135434 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.0692219667309452 -0.06922196673093595 -0.00641635396964375 + endloop +endfacet +facet normal -0.1197487773667553 -0.1560596450310735 0.9804619408788607 + outer loop + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + vertex -0.04894732208252011 -0.08477924874135434 -0.00641635396964375 + vertex -0.0692219667309452 -0.06922196673093595 -0.00641635396964375 + endloop +endfacet +facet normal -0.1197487773667553 -0.1560596450310735 0.9804619408788607 + outer loop + vertex -0.04894732208252011 -0.08477924874135434 -0.00641635396964375 + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + endloop +endfacet +facet normal -0.1971919722189567 -0.2569855815163434 0.9460833668261507 + outer loop + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + vertex -0.13725952641916617 -0.13725952641915887 -0.025555630283198814 + endloop +endfacet +facet normal -0.1971919722189567 -0.2569855815163434 0.9460833668261507 + outer loop + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + endloop +endfacet +facet normal -0.2711124071500544 -0.35332056789000793 0.8953561520396145 + outer loop + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + vertex -0.2029485375548231 -0.20294853755481781 -0.05709035061653675 + endloop +endfacet +facet normal -0.2711124071500544 -0.35332056789000793 0.8953561520396145 + outer loop + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + endloop +endfacet +facet normal -0.34021929164312154 -0.44338241319938265 0.8292544056315556 + outer loop + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + vertex -0.26516504294495713 -0.26516504294494786 -0.10048094716167066 + endloop +endfacet +facet normal -0.34021929164312154 -0.44338241319938265 0.8292544056315556 + outer loop + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + endloop +endfacet +facet normal -0.4033311265408706 -0.5256313577646955 0.7490231492402054 + outer loop + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + vertex -0.32284450093266026 -0.32284450093265293 -0.15498499478157451 + endloop +endfacet +facet normal -0.4033311265408706 -0.5256313577646955 0.7490231492402054 + outer loop + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + endloop +endfacet +facet normal -0.4593955285596608 -0.5986959089887535 0.6561394340378577 + outer loop + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.3750000000000009 -0.37499999999999367 -0.2196699141100909 + endloop +endfacet +facet normal -0.4593955285596608 -0.5986959089887535 0.6561394340378577 + outer loop + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.29750750260921627 -0.5152981101520798 -0.2934289282434605 + endloop +endfacet +facet normal -0.507502774940672 -0.6613904930900081 0.5522712640339651 + outer loop + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + endloop +endfacet +facet normal -0.507502774940672 -0.6613904930900081 0.5522712640339651 + outer loop + vertex -0.42073914509770133 -0.42073914509769156 -0.2934289282434605 + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + vertex -0.29750750260921627 -0.5152981101520798 -0.2934289282434605 + endloop +endfacet +facet normal -0.5468936311981114 -0.7127256564226478 0.43923740144920476 + outer loop + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + endloop +endfacet +facet normal -0.5468936311981114 -0.7127256564226478 0.43923740144920476 + outer loop + vertex -0.45927932677184685 -0.4592793267718391 -0.3750000000000007 + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + endloop +endfacet +facet normal -0.5769625843363695 -0.7519122790872063 0.31897037610690576 + outer loop + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + endloop +endfacet +facet normal -0.5769625843363695 -0.7519122790872063 0.31897037610690576 + outer loop + vertex -0.4899611118286434 -0.48996111182863367 -0.4629874257261833 + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + endloop +endfacet +facet normal -0.5972579218721935 -0.7783616779142639 0.19348403839955536 + outer loop + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + endloop +endfacet +facet normal -0.5972579218721935 -0.7783616779142639 0.19348403839955536 + outer loop + vertex -0.5122595264191675 -0.5122595264191576 -0.5558857161731108 + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + endloop +endfacet +facet normal -0.6074801602261357 -0.7916835583043482 0.06484595933590805 + outer loop + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + vertex -0.530330085889911 -0.5303300858899044 -0.75 + endloop +endfacet +facet normal -0.6074801602261357 -0.7916835583043482 0.06484595933590805 + outer loop + vertex -0.5257930384874837 -0.5257930384874767 -0.6521053558349623 + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + endloop +endfacet +facet normal -0.02524372982145294 -0.06094375489983135 0.9978219344369068 + outer loop + vertex -0.025336998323445267 -0.09455896505438333 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.04894732208252011 -0.08477924874135434 -0.00641635396964375 + endloop +endfacet +facet normal -0.07527722841911146 -0.18173530578727495 0.9804619408788607 + outer loop + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + vertex -0.025336998323445267 -0.09455896505438333 -0.00641635396964375 + vertex -0.04894732208252011 -0.08477924874135434 -0.00641635396964375 + endloop +endfacet +facet normal -0.07527722841911146 -0.18173530578727495 0.9804619408788607 + outer loop + vertex -0.025336998323445267 -0.09455896505438333 -0.00641635396964375 + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + endloop +endfacet +facet normal -0.12396005588999129 -0.2992660481221421 0.9460833668261512 + outer loop + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + vertex -0.0970571419134471 -0.16810790103150378 -0.025555630283198814 + endloop +endfacet +facet normal -0.12396005588999129 -0.2992660481221421 0.9460833668261512 + outer loop + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + endloop +endfacet +facet normal -0.17042838389726478 -0.41145051581809994 0.8953561520396149 + outer loop + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + vertex -0.1435062871369097 -0.2485601805266863 -0.05709035061653675 + endloop +endfacet +facet normal -0.17042838389726478 -0.41145051581809994 0.8953561520396149 + outer loop + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + endloop +endfacet +facet normal -0.21387078760035377 -0.5163297560201819 0.8292544056315552 + outer loop + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + vertex -0.1875000000000002 -0.3247595264191576 -0.10048094716167066 + endloop +endfacet +facet normal -0.21387078760035377 -0.5163297560201819 0.8292544056315552 + outer loop + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + endloop +endfacet +facet normal -0.2535445455794968 -0.6121106806037381 0.7490231492402054 + outer loop + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + vertex -0.22828553587827063 -0.3954021467742445 -0.15498499478157451 + endloop +endfacet +facet normal -0.2535445455794968 -0.6121106806037381 0.7490231492402054 + outer loop + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + endloop +endfacet +facet normal -0.2887881020462453 -0.6971961526120288 0.6561394340378515 + outer loop + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.29750750260921627 -0.5152981101520798 -0.2934289282434605 + endloop +endfacet +facet normal -0.2887881020462453 -0.6971961526120288 0.6561394340378515 + outer loop + vertex -0.2651650429449553 -0.4592793267718394 -0.2196699141100909 + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + endloop +endfacet +facet normal -0.3190295813671242 -0.7702055421347169 0.5522712640339746 + outer loop + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + vertex -0.29750750260921627 -0.5152981101520798 -0.2934289282434605 + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + endloop +endfacet +facet normal -0.3190295813671242 -0.7702055421347169 0.5522712640339746 + outer loop + vertex -0.29750750260921627 -0.5152981101520798 -0.2934289282434605 + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + endloop +endfacet +facet normal -0.3437917087918963 -0.8299866059968085 0.4392374014492011 + outer loop + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + endloop +endfacet +facet normal -0.3437917087918963 -0.8299866059968085 0.4392374014492011 + outer loop + vertex -0.32475952641916506 -0.5624999999999931 -0.3750000000000007 + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + endloop +endfacet +facet normal -0.36269384293878537 -0.8756203946120246 0.3189703761069013 + outer loop + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + endloop +endfacet +facet normal -0.36269384293878537 -0.8756203946120246 0.3189703761069013 + outer loop + vertex -0.34645482469173144 -0.600077358893442 -0.4629874257261833 + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + endloop +endfacet +facet normal -0.3754520254699338 -0.9064213719099524 0.19348403839956413 + outer loop + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + endloop +endfacet +facet normal -0.3754520254699338 -0.9064213719099524 0.19348403839956413 + outer loop + vertex -0.3622221848584011 -0.6273872278033489 -0.5558857161731108 + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + endloop +endfacet +facet normal -0.3818779931369562 -0.921935030203049 0.06484595933590692 + outer loop + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + endloop +endfacet +facet normal -0.3818779931369562 -0.921935030203049 0.06484595933590692 + outer loop + vertex -0.37179182301517905 -0.6439623273009386 -0.6521053558349623 + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + endloop +endfacet +facet normal -0.008610166138267492 -0.06540070485599242 0.9978219344369068 + outer loop + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex 4.40619762898109e-16 5.992428775414282e-15 -1.4099832412739487e-15 + vertex -0.025336998323445267 -0.09455896505438333 -0.00641635396964375 + endloop +endfacet +facet normal -0.025675660756203762 -0.19502600578587068 0.9804619408788604 + outer loop + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex -0.025336998323445267 -0.09455896505438333 -0.00641635396964375 + endloop +endfacet +facet normal -0.025675660756203762 -0.19502600578587068 0.9804619408788604 + outer loop + vertex 4.40619762898109e-16 -0.09789464416503264 -0.00641635396964375 + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + endloop +endfacet +facet normal -0.04228046660580001 -0.32115202810894383 0.9460833668261525 + outer loop + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + vertex -0.05024047358083718 -0.18749999999999367 -0.025555630283198814 + endloop +endfacet +facet normal -0.04228046660580001 -0.32115202810894383 0.9460833668261525 + outer loop + vertex -1.321859288694327e-15 -0.1941142838268843 -0.025555630283198814 + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + endloop +endfacet +facet normal -0.058129947928093846 -0.4415407910473194 0.8953561520396142 + outer loop + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + vertex -0.07428432040596405 -0.2772328579607835 -0.05709035061653675 + endloop +endfacet +facet normal -0.058129947928093846 -0.4415407910473194 0.8953561520396142 + outer loop + vertex 4.40619762898109e-16 -0.2870125742738111 -0.05709035061653675 + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + endloop +endfacet +facet normal -0.07294734282080173 -0.554090079243474 0.829254405631556 + outer loop + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + vertex -0.09705714191344533 -0.36222218485839447 -0.10048094716167066 + endloop +endfacet +facet normal -0.07294734282080173 -0.554090079243474 0.829254405631556 + outer loop + vertex 4.40619762898109e-16 -0.37499999999999367 -0.10048094716167066 + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + endloop +endfacet +facet normal -0.08647932283904647 -0.6568756721203691 0.7490231492402043 + outer loop + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + vertex -0.11816928881346214 -0.4410137897461155 -0.15498499478157451 + endloop +endfacet +facet normal -0.08647932283904647 -0.6568756721203691 0.7490231492402043 + outer loop + vertex 4.40619762898109e-16 -0.45657107175653444 -0.15498499478157451 + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + vertex 4.40619762898109e-16 -0.5303300858899046 -0.2196699141100909 + endloop +endfacet +facet normal -0.09850024362327389 -0.7481836306059132 0.6561394340378502 + outer loop + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + endloop +endfacet +facet normal -0.09850024362327389 -0.7481836306059132 0.6561394340378502 + outer loop + vertex -0.13725952641916433 -0.5122595264191584 -0.2196699141100909 + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + vertex 4.40619762898109e-16 -0.5303300858899046 -0.2196699141100909 + endloop +endfacet +facet normal -0.10881504904471663 -0.8265323563077916 0.552271264033976 + outer loop + vertex -1.321859288694327e-15 -0.6495190528383229 -0.3750000000000007 + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + endloop +endfacet +facet normal -0.10881504904471663 -0.8265323563077916 0.552271264033976 + outer loop + vertex -0.1540012154723043 -0.5747403605699963 -0.2934289282434605 + vertex -1.321859288694327e-15 -0.6495190528383229 -0.3750000000000007 + vertex 2.2912227670701667e-15 -0.5950150052184201 -0.2934289282434605 + endloop +endfacet +facet normal -0.12370811552482558 -0.9396564272751615 0.31897037610689755 + outer loop + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + endloop +endfacet +facet normal -0.12370811552482558 -0.9396564272751615 0.31897037610689755 + outer loop + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + endloop +endfacet +facet normal -0.11726094957416516 -0.8906853399900071 0.4392374014492057 + outer loop + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + vertex -0.1793382137957501 -0.6692993256243854 -0.4629874257261833 + endloop +endfacet +facet normal -0.11726094957416516 -0.8906853399900071 0.4392374014492057 + outer loop + vertex -0.16810790103151135 -0.6273872278033495 -0.3750000000000007 + vertex 4.40619762898109e-16 -0.6929096493834589 -0.4629874257261833 + vertex -1.321859288694327e-15 -0.6495190528383229 -0.3750000000000007 + endloop +endfacet +facet normal -0.12805969399569608 -0.9727099473421273 0.19348403839956543 + outer loop + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + endloop +endfacet +facet normal -0.12805969399569608 -0.9727099473421273 0.19348403839956543 + outer loop + vertex -0.1875000000000002 -0.6997595264191582 -0.5558857161731108 + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + vertex 4.40619762898109e-16 -0.724444369716795 -0.5558857161731108 + endloop +endfacet +facet normal -0.1302514718987056 -0.9893581533630917 0.06484595933590444 + outer loop + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + endloop +endfacet +facet normal -0.1302514718987056 -0.9893581533630917 0.06484595933590444 + outer loop + vertex -0.19245360921942847 -0.7182466477069052 -0.6521053558349623 + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + vertex 4.40619762898109e-16 -0.7435836460303519 -0.6521053558349623 + endloop +endfacet +facet normal -0.6087614290087205 0.7933533402912353 3.0374077658281636e-16 + outer loop + vertex -0.3749999999999991 0.6495190528383353 -0.75 + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex -0.5303300858899093 0.5303300858899173 -0.75 + endloop +endfacet +facet normal -0.6087614290087205 0.7933533402912353 3.0374077658281636e-16 + outer loop + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex -0.3749999999999991 0.6495190528383353 -0.75 + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + endloop +endfacet +facet normal 0.9238795325112872 0.38268343236508906 1.4651298107509085e-16 + outer loop + vertex 0.6495190528383298 0.37500000000000616 -0.75 + vertex 0.7244443697168017 0.19411428382690035 -10.033101646568916 + vertex 0.6495190528383298 0.3750000000000097 -10.033101646568916 + endloop +endfacet +facet normal 0.9238795325112872 0.38268343236508906 1.4651298107509085e-16 + outer loop + vertex 0.7244443697168017 0.19411428382690035 -10.033101646568916 + vertex 0.6495190528383298 0.37500000000000616 -0.75 + vertex 0.7244443697168017 0.19411428382689683 -0.75 + endloop +endfacet +facet normal -0.9914448613738112 0.1305261922200467 4.997284939237931e-17 + outer loop + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + vertex -0.7244443697168008 0.19411428382690088 -10.033101646568916 + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + endloop +endfacet +facet normal -0.9914448613738112 0.1305261922200467 4.997284939237931e-17 + outer loop + vertex -0.7244443697168008 0.19411428382690088 -10.033101646568916 + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + vertex -0.7244443697168008 0.19411428382689735 -0.75 + endloop +endfacet +facet normal -0.9238795325112872 -0.3826834323650889 -1.4651298107509075e-16 + outer loop + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + vertex -0.7244443697168008 -0.19411428382688026 -10.033101646568916 + vertex -0.6495190528383288 -0.3749999999999896 -10.033101646568916 + endloop +endfacet +facet normal -0.9238795325112872 -0.3826834323650889 -1.4651298107509075e-16 + outer loop + vertex -0.7244443697168008 -0.19411428382688026 -10.033101646568916 + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + endloop +endfacet +facet normal -0.991444861373811 -0.13052619222004713 -4.9972849392379475e-17 + outer loop + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + vertex -0.7244443697168008 -0.19411428382688026 -10.033101646568916 + endloop +endfacet +facet normal -0.991444861373811 -0.13052619222004713 -4.9972849392379475e-17 + outer loop + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + vertex -0.7244443697168008 -0.19411428382688398 -0.75 + vertex -0.7499999999999987 6.433048538312391e-15 -0.75 + endloop +endfacet +facet normal -0.6087614290087162 -0.7933533402912386 -3.0374077658281764e-16 + outer loop + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex -0.530330085889911 -0.5303300858899044 -0.75 + vertex -0.530330085889911 -0.5303300858899007 -10.033101646568916 + endloop +endfacet +facet normal -0.6087614290087162 -0.7933533402912386 -3.0374077658281764e-16 + outer loop + vertex -0.530330085889911 -0.5303300858899044 -0.75 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + endloop +endfacet +facet normal -0.7933533402912373 -0.6087614290087179 -2.3306849522168173e-16 + outer loop + vertex -0.530330085889911 -0.5303300858899044 -0.75 + vertex -0.6495190528383288 -0.3749999999999896 -10.033101646568916 + vertex -0.530330085889911 -0.5303300858899007 -10.033101646568916 + endloop +endfacet +facet normal -0.7933533402912373 -0.6087614290087179 -2.3306849522168173e-16 + outer loop + vertex -0.6495190528383288 -0.3749999999999896 -10.033101646568916 + vertex -0.530330085889911 -0.5303300858899044 -0.75 + vertex -0.6495190528383288 -0.37499999999999334 -0.75 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + vertex 0.375 -0.6495190528383191 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex 0.375 -0.6495190528383191 -10.033101646568916 + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + vertex 0.375 -0.6495190528383191 -10.033101646568916 + vertex 0.19411428382689014 -0.7244443697167914 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + vertex 0.19411428382689014 -0.7244443697167914 -10.033101646568916 + vertex 4.40619762898109e-16 -0.7499999999999901 -10.033101646568916 + endloop +endfacet +facet normal -0.793353340291232 0.6087614290087248 2.330684952216844e-16 + outer loop + vertex -0.6495190528383288 0.3750000000000066 -0.75 + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex -0.6495190528383288 0.3750000000000102 -10.033101646568916 + endloop +endfacet +facet normal -0.793353340291232 0.6087614290087248 2.330684952216844e-16 + outer loop + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex -0.6495190528383288 0.3750000000000066 -0.75 + vertex -0.5303300858899093 0.5303300858899173 -0.75 + endloop +endfacet +facet normal 0.13052619222005202 -0.9914448613738104 -3.795814762967739e-16 + outer loop + vertex 0.19411428382689014 -0.7244443697167914 -10.033101646568916 + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + vertex 4.40619762898109e-16 -0.7499999999999901 -10.033101646568916 + endloop +endfacet +facet normal 0.13052619222005202 -0.9914448613738104 -3.795814762967739e-16 + outer loop + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + vertex 0.19411428382689014 -0.7244443697167914 -10.033101646568916 + vertex 0.19411428382689014 -0.724444369716795 -0.75 + endloop +endfacet +facet normal -0.13052619222005152 0.9914448613738105 3.7958147629677396e-16 + outer loop + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex -0.19411428382688925 0.7244443697168111 -10.033101646568916 + vertex -0.19411428382688925 0.7244443697168077 -0.75 + endloop +endfacet +facet normal -0.13052619222005152 0.9914448613738105 3.7958147629677396e-16 + outer loop + vertex -0.19411428382688925 0.7244443697168111 -10.033101646568916 + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + vertex 4.40619762898109e-16 0.7500000000000098 -10.033101646568916 + endloop +endfacet +facet normal 0.7933533402912373 0.6087614290087178 2.330684952216817e-16 + outer loop + vertex 0.5303300858899119 0.5303300858899169 -0.75 + vertex 0.6495190528383298 0.3750000000000097 -10.033101646568916 + vertex 0.5303300858899119 0.5303300858899205 -10.033101646568916 + endloop +endfacet +facet normal 0.7933533402912373 0.6087614290087178 2.330684952216817e-16 + outer loop + vertex 0.6495190528383298 0.3750000000000097 -10.033101646568916 + vertex 0.5303300858899119 0.5303300858899169 -0.75 + vertex 0.6495190528383298 0.37500000000000616 -0.75 + endloop +endfacet +facet normal 0.13052619222005143 0.9914448613738105 3.7958147629677396e-16 + outer loop + vertex 0.1941142838268919 0.7244443697168074 -0.75 + vertex 4.40619762898109e-16 0.7500000000000098 -10.033101646568916 + vertex 4.40619762898109e-16 0.7500000000000063 -0.75 + endloop +endfacet +facet normal 0.13052619222005143 0.9914448613738105 3.7958147629677396e-16 + outer loop + vertex 4.40619762898109e-16 0.7500000000000098 -10.033101646568916 + vertex 0.1941142838268919 0.7244443697168074 -0.75 + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + endloop +endfacet +facet normal -0.9238795325112872 0.3826834323650891 1.4651298107509085e-16 + outer loop + vertex -0.7244443697168008 0.19411428382689735 -0.75 + vertex -0.6495190528383288 0.3750000000000102 -10.033101646568916 + vertex -0.7244443697168008 0.19411428382690088 -10.033101646568916 + endloop +endfacet +facet normal -0.9238795325112872 0.3826834323650891 1.4651298107509085e-16 + outer loop + vertex -0.6495190528383288 0.3750000000000102 -10.033101646568916 + vertex -0.7244443697168008 0.19411428382689735 -0.75 + vertex -0.6495190528383288 0.3750000000000066 -0.75 + endloop +endfacet +facet normal 0.7933533402912369 -0.6087614290087182 -2.330684952216819e-16 + outer loop + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + endloop +endfacet +facet normal 0.7933533402912369 -0.6087614290087182 -2.330684952216819e-16 + outer loop + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + vertex 0.5303300858899119 -0.5303300858899044 -0.75 + endloop +endfacet +facet normal 0.6087614290087177 0.7933533402912375 3.0374077658281725e-16 + outer loop + vertex 0.5303300858899119 0.5303300858899169 -0.75 + vertex 0.375 0.6495190528383388 -10.033101646568916 + vertex 0.375 0.6495190528383352 -0.75 + endloop +endfacet +facet normal 0.6087614290087177 0.7933533402912375 3.0374077658281725e-16 + outer loop + vertex 0.375 0.6495190528383388 -10.033101646568916 + vertex 0.5303300858899119 0.5303300858899169 -0.75 + vertex 0.5303300858899119 0.5303300858899205 -10.033101646568916 + endloop +endfacet +facet normal 0.991444861373811 0.13052619222004697 4.997284939237942e-17 + outer loop + vertex 0.7244443697168017 0.19411428382689683 -0.75 + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + vertex 0.7244443697168017 0.19411428382690035 -10.033101646568916 + endloop +endfacet +facet normal 0.991444861373811 0.13052619222004697 4.997284939237942e-17 + outer loop + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + vertex 0.7244443697168017 0.19411428382689683 -0.75 + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + endloop +endfacet +facet normal 0.991444861373811 -0.13052619222004683 -4.997284939237935e-17 + outer loop + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + vertex 0.7244443697168017 -0.19411428382688078 -10.033101646568916 + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + endloop +endfacet +facet normal 0.991444861373811 -0.13052619222004683 -4.997284939237935e-17 + outer loop + vertex 0.7244443697168017 -0.19411428382688078 -10.033101646568916 + vertex 0.7499999999999996 6.256800633153147e-15 -0.75 + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + endloop +endfacet +facet normal 0.9238795325112872 -0.3826834323650891 -1.4651298107509085e-16 + outer loop + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + vertex 0.7244443697168017 -0.19411428382688078 -10.033101646568916 + endloop +endfacet +facet normal 0.9238795325112872 -0.3826834323650891 -1.4651298107509085e-16 + outer loop + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + vertex 0.7244443697168017 -0.1941142838268845 -0.75 + vertex 0.6495190528383298 -0.37499999999999384 -0.75 + endloop +endfacet +facet normal -0.38268343236509245 -0.9238795325112857 -3.5371362597519717e-16 + outer loop + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + endloop +endfacet +facet normal -0.38268343236509245 -0.9238795325112857 -3.5371362597519717e-16 + outer loop + vertex -0.3749999999999991 -0.6495190528383225 -0.75 + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + endloop +endfacet +facet normal -0.1305261922200521 -0.9914448613738104 -3.795814762967739e-16 + outer loop + vertex 4.40619762898109e-16 -0.7499999999999901 -10.033101646568916 + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + vertex -0.19411428382689103 -0.7244443697167912 -10.033101646568916 + endloop +endfacet +facet normal -0.1305261922200521 -0.9914448613738104 -3.795814762967739e-16 + outer loop + vertex -0.19411428382689103 -0.7244443697167948 -0.75 + vertex 4.40619762898109e-16 -0.7499999999999901 -10.033101646568916 + vertex 4.40619762898109e-16 -0.7499999999999939 -0.75 + endloop +endfacet +facet normal 0.38268343236509195 0.923879532511286 3.537136259751972e-16 + outer loop + vertex 0.375 0.6495190528383352 -0.75 + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + vertex 0.1941142838268919 0.7244443697168074 -0.75 + endloop +endfacet +facet normal 0.38268343236509195 0.923879532511286 3.537136259751972e-16 + outer loop + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + vertex 0.375 0.6495190528383352 -0.75 + vertex 0.375 0.6495190528383388 -10.033101646568916 + endloop +endfacet +facet normal -0.3826834323650892 0.9238795325112871 3.5371362597519766e-16 + outer loop + vertex -0.19411428382688925 0.7244443697168077 -0.75 + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + vertex -0.3749999999999991 0.6495190528383353 -0.75 + endloop +endfacet +facet normal -0.3826834323650892 0.9238795325112871 3.5371362597519766e-16 + outer loop + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + vertex -0.19411428382688925 0.7244443697168077 -0.75 + vertex -0.19411428382688925 0.7244443697168111 -10.033101646568916 + endloop +endfacet +facet normal 0.3826834323650886 -0.9238795325112873 -3.5371362597519776e-16 + outer loop + vertex 0.375 -0.6495190528383191 -10.033101646568916 + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 0.19411428382689014 -0.7244443697167914 -10.033101646568916 + endloop +endfacet +facet normal 0.3826834323650886 -0.9238795325112873 -3.5371362597519776e-16 + outer loop + vertex 0.19411428382689014 -0.724444369716795 -0.75 + vertex 0.375 -0.6495190528383191 -10.033101646568916 + vertex 0.375 -0.6495190528383229 -0.75 + endloop +endfacet +facet normal 0.6087614290087182 -0.7933533402912372 -3.0374077658281715e-16 + outer loop + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + vertex 0.375 -0.6495190528383229 -0.75 + vertex 0.375 -0.6495190528383191 -10.033101646568916 + endloop +endfacet +facet normal 0.6087614290087182 -0.7933533402912372 -3.0374077658281715e-16 + outer loop + vertex 0.375 -0.6495190528383229 -0.75 + vertex 0.5303300858899119 -0.5303300858899007 -10.033101646568916 + vertex 0.5303300858899119 -0.5303300858899044 -0.75 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex -0.7244443697168008 0.19411428382690088 -10.033101646568916 + vertex -0.6495190528383288 0.3750000000000102 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.7244443697168008 0.19411428382690088 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.7499999999999987 9.958006641497263e-15 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex -0.7244443697168008 -0.19411428382688026 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.7244443697168008 -0.19411428382688026 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex -0.6495190528383288 -0.3749999999999896 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.6495190528383288 -0.3749999999999896 -10.033101646568916 + vertex -0.3749999999999991 -0.6495190528383188 -10.033101646568916 + vertex -0.530330085889911 -0.5303300858899007 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 0.5303300858899119 0.5303300858899205 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex 0.375 0.6495190528383388 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex 0.5303300858899119 0.5303300858899205 -10.033101646568916 + vertex 0.6495190528383298 0.3750000000000097 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex 0.6495190528383298 0.3750000000000097 -10.033101646568916 + vertex 0.7244443697168017 0.19411428382690035 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex 0.7244443697168017 0.19411428382690035 -10.033101646568916 + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 0.6495190528383298 -0.3749999999999902 -10.033101646568916 + vertex 0.7499999999999996 9.781758736338019e-15 -10.033101646568916 + vertex 0.7244443697168017 -0.19411428382688078 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + vertex -0.19411428382688925 0.7244443697168111 -10.033101646568916 + vertex 4.40619762898109e-16 0.7500000000000098 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.19411428382688925 0.7244443697168111 -10.033101646568916 + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + vertex 0.1941142838268919 0.724444369716811 -10.033101646568916 + vertex 0.375 0.6495190528383388 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.3749999999999991 0.649519052838339 -10.033101646568916 + vertex 0.375 0.6495190528383388 -10.033101646568916 + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex 0.375 0.6495190528383388 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + endloop +endfacet +facet normal 0.0 3.8285686989269494e-16 -1.0 + outer loop + vertex -0.5303300858899093 0.5303300858899208 -10.033101646568916 + vertex 4.40619762898109e-16 1.0046130594076885e-14 -10.033101646568916 + vertex -0.6495190528383288 0.3750000000000102 -10.033101646568916 + endloop +endfacet +endsolid Guidewire_1_5mm_with_Sensor_Model diff --git a/config/tool/Tools/Bronchoscopy/Anser_Needle1/AnserNeedle.png b/config/tool/Tools/Bronchoscopy/Anser_Needle1/AnserNeedle.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f61cda0e894cbbcb86e5531c3ab87b1b6c6276 GIT binary patch literal 512297 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�w1FBa939YWP;6 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

    eq8k8 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