]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Merged r32862 through r32923 from trunk.
authorLuca Heltai <luca.heltai@sissa.it>
Fri, 16 May 2014 12:31:17 +0000 (12:31 +0000)
committerLuca Heltai <luca.heltai@sissa.it>
Fri, 16 May 2014 12:31:17 +0000 (12:31 +0000)
git-svn-id: https://svn.dealii.org/branches/branch_manifold_id_intermediate@32924 0785d39b-7218-0410-832d-ea1e28bc413d

130 files changed:
deal.II/cmake/configure/configure_1_bzip2.cmake
deal.II/cmake/configure/configure_1_lapack.cmake
deal.II/cmake/configure/configure_1_mpi.cmake
deal.II/cmake/configure/configure_1_threads.cmake
deal.II/cmake/configure/configure_1_zlib.cmake
deal.II/cmake/configure/configure_2_metis.cmake
deal.II/cmake/configure/configure_2_trilinos.cmake
deal.II/cmake/configure/configure_2_umfpack.cmake
deal.II/cmake/configure/configure_3_petsc.cmake
deal.II/cmake/configure/configure_arpack.cmake
deal.II/cmake/configure/configure_boost.cmake
deal.II/cmake/configure/configure_hdf5.cmake
deal.II/cmake/configure/configure_mumps.cmake
deal.II/cmake/configure/configure_muparser.cmake
deal.II/cmake/configure/configure_p4est.cmake
deal.II/cmake/configure/configure_slepc.cmake
deal.II/cmake/macros/macro_check_mpi_interface.cmake [new file with mode: 0644]
deal.II/cmake/macros/macro_configure_feature.cmake
deal.II/cmake/macros/macro_deal_ii_find_file.cmake [new file with mode: 0644]
deal.II/cmake/macros/macro_deal_ii_find_library.cmake [new file with mode: 0644]
deal.II/cmake/macros/macro_deal_ii_find_path.cmake [new file with mode: 0644]
deal.II/cmake/macros/macro_deal_ii_package_handle.cmake
deal.II/cmake/macros/macro_purge_feature.cmake [new file with mode: 0644]
deal.II/cmake/macros/macro_register_feature.cmake
deal.II/cmake/modules/FindARPACK.cmake
deal.II/cmake/modules/FindBOOST.cmake [new file with mode: 0644]
deal.II/cmake/modules/FindBZIP2.cmake [new file with mode: 0644]
deal.II/cmake/modules/FindDEALII_LAPACK.cmake [deleted file]
deal.II/cmake/modules/FindHDF5.cmake
deal.II/cmake/modules/FindLAPACK.cmake [new file with mode: 0644]
deal.II/cmake/modules/FindMETIS.cmake
deal.II/cmake/modules/FindMPI.cmake [new file with mode: 0644]
deal.II/cmake/modules/FindMUMPS.cmake
deal.II/cmake/modules/FindMUPARSER.cmake
deal.II/cmake/modules/FindNETCDF.cmake
deal.II/cmake/modules/FindP4EST.cmake
deal.II/cmake/modules/FindPETSC.cmake
deal.II/cmake/modules/FindSCALAPACK.cmake [deleted file]
deal.II/cmake/modules/FindSLEPC.cmake
deal.II/cmake/modules/FindTBB.cmake
deal.II/cmake/modules/FindTRILINOS.cmake
deal.II/cmake/modules/FindUMFPACK.cmake
deal.II/cmake/modules/FindZLIB.cmake [new file with mode: 0644]
deal.II/cmake/setup_deal_ii.cmake
deal.II/cmake/setup_finalize.cmake
deal.II/cmake/setup_write_config.cmake
deal.II/doc/developers/cmake-internals.html
deal.II/doc/news/changes.h
deal.II/doc/publications/index.html
deal.II/doc/users/cmake.html
deal.II/doc/users/config.sample
deal.II/examples/step-15/doc/intro.dox
deal.II/examples/step-16/step-16.cc
deal.II/examples/step-27/doc/intro.dox
deal.II/examples/step-27/step-27.cc
deal.II/examples/step-52/CMakeLists.txt [new file with mode: 0644]
deal.II/examples/step-52/doc/builds-on [new file with mode: 0644]
deal.II/examples/step-52/doc/intro.dox [new file with mode: 0644]
deal.II/examples/step-52/doc/kind [new file with mode: 0644]
deal.II/examples/step-52/doc/results.dox [new file with mode: 0644]
deal.II/examples/step-52/doc/tooltip [new file with mode: 0644]
deal.II/examples/step-52/step-52.cc [new file with mode: 0644]
deal.II/examples/step-6/step-6.cc
deal.II/include/deal.II/algorithms/any_data.h
deal.II/include/deal.II/algorithms/theta_timestepping.h
deal.II/include/deal.II/algorithms/theta_timestepping.templates.h
deal.II/include/deal.II/base/config.h.in
deal.II/include/deal.II/base/mpi.h
deal.II/include/deal.II/base/named_data.h
deal.II/include/deal.II/base/quadrature_lib.h
deal.II/include/deal.II/base/vectorization.h
deal.II/include/deal.II/distributed/tria.h
deal.II/include/deal.II/dofs/dof_handler.h
deal.II/include/deal.II/fe/fe.h
deal.II/include/deal.II/fe/fe_abf.h
deal.II/include/deal.II/fe/fe_dg_vector.h
deal.II/include/deal.II/fe/fe_dg_vector.templates.h
deal.II/include/deal.II/fe/fe_dgp.h
deal.II/include/deal.II/fe/fe_dgp_monomial.h
deal.II/include/deal.II/fe/fe_dgp_nonparametric.h
deal.II/include/deal.II/fe/fe_dgq.h
deal.II/include/deal.II/fe/fe_face.h
deal.II/include/deal.II/fe/fe_nedelec.h
deal.II/include/deal.II/fe/fe_q_base.h
deal.II/include/deal.II/fe/fe_q_dg0.h
deal.II/include/deal.II/fe/fe_q_hierarchical.h
deal.II/include/deal.II/fe/fe_raviart_thomas.h
deal.II/include/deal.II/fe/fe_system.h
deal.II/include/deal.II/fe/fe_trace.h
deal.II/include/deal.II/grid/tria.h
deal.II/include/deal.II/hp/dof_handler.h
deal.II/include/deal.II/lac/solver_gmres.h
deal.II/include/deal.II/lac/sparsity_tools.h
deal.II/source/base/CMakeLists.txt
deal.II/source/base/mpi.cc
deal.II/source/base/named_selection.cc [new file with mode: 0644]
deal.II/source/base/quadrature_lib.cc
deal.II/source/fe/fe_dgq.cc
deal.II/source/grid/grid_in.cc
deal.II/source/lac/sparsity_tools.cc
tests/algorithms/any_data_01.cc
tests/algorithms/any_data_01.output
tests/base/quadrature_sorted_test.cc [new file with mode: 0644]
tests/base/quadrature_sorted_test.output [new file with mode: 0644]
tests/base/vectorization_01.cc
tests/base/vectorization_03.cc
tests/base/vectorization_03.output
tests/base/vectorization_04.cc [new file with mode: 0644]
tests/base/vectorization_04.output [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_02.cc [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_02.output [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_02.vtk [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_03.cc [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_03.output [new file with mode: 0644]
tests/deal.II/grid_in_vtk_3d_03.vtk [new file with mode: 0644]
tests/fe/fe_data_test.cc
tests/fe/fe_data_test.output
tests/lac/gmres_eigenvalues.cc [new file with mode: 0644]
tests/lac/gmres_eigenvalues.output [new file with mode: 0644]
tests/matrix_free/step-48.cc
tests/metis/metis_01.with_64bit_indices=off.output [moved from tests/metis/metis_01.output with 100% similarity]
tests/metis/metis_01.with_64bit_indices=on.output [new file with mode: 0644]
tests/metis/metis_01a.cc [new file with mode: 0644]
tests/metis/metis_01a.with_64bit_indices=off.output [new file with mode: 0644]
tests/metis/metis_01a.with_64bit_indices=on.output [new file with mode: 0644]
tests/metis/metis_02.with_64bit_indices=off.output [moved from tests/metis/metis_02.output with 100% similarity]
tests/metis/metis_02.with_64bit_indices=on.output [new file with mode: 0644]
tests/metis/metis_03.with_64bit_indices=off.output [moved from tests/metis/metis_03.output with 100% similarity]
tests/metis/metis_03.with_64bit_indices=on.output [new file with mode: 0644]
tests/tests.h

index 37a0f813050bb092b4d8f83c9d919b4ba2cd3cfa..42f3915ea9587940b2eb6a713cd1b8ca92dea1bd 100644 (file)
 # Configuration for the bzip2 library:
 #
 
-MACRO(FEATURE_BZIP2_FIND_EXTERNAL var)
-  FIND_PACKAGE(BZip2)
-
-  IF(BZIP2_FOUND)
-    #
-    # Rename variables:
-    #
-    SET(BZIP2_VERSION ${BZIP2_VERSION_STRING})
-    SET(BZIP2_INCLUDE_DIRS ${BZIP2_INCLUDE_DIR})
-
-    SET(${var} TRUE)
-  ENDIF()
-ENDMACRO()
-
 CONFIGURE_FEATURE(BZIP2)
index 258af871f23cd4b9416bb89337aa875a6cb8f4bc..f8c3ff1a21a2d5a52e8eede16f4add15d2c22340 100644 (file)
 #
 
 MACRO(FEATURE_LAPACK_FIND_EXTERNAL var)
-  FIND_PACKAGE(DEALII_LAPACK)
+  FIND_PACKAGE(LAPACK)
 
-  IF(LAPACK_FOUND)
-    SET(${var} TRUE)
-  ENDIF()
-ENDMACRO()
-
-
-#
-# We do a fine grained check for availability of every single LAPACK
-# function we use. We have to ensure that this check is repeated every time
-# the lapack library or DEAL_II_WITH_LAPACK changes.
-#
-
-SET(DEAL_II_LAPACK_FUNCTIONS
-  daxpy_ dgeev_ dgeevx_ dgelsd_ dgemm_ dgemv_ dgeqrf_ dgesdd_ dgesvd_
-  dgetrf_ dgetri_ dgetrs_ dorgqr_ dormqr_ dstev_ dsyevx_  dsygv_ dsygvx_
-  dtrtrs_ saxpy_ sgeev_ sgeevx_ sgelsd_ sgemm_ sgemv_ sgeqrf_ sgesdd_
-  sgesvd_ sgetrf_ sgetri_ sgetrs_ sorgqr_ sormqr_ sstev_ ssyevx_ ssygv_
-  ssygvx_ strtrs_
-  )
-
-MACRO(CHECK_FOR_LAPACK_FUNCTIONS)
-  #
-  # Clear the test flags because the following test will use a C compiler
-  #
-  CLEAR_CMAKE_REQUIRED()
-  SET(CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}")
-  SET(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
   #
-  # Push -pthread as well:
+  # We do a check for availability of every single LAPACK function we use.
   #
-  ENABLE_IF_SUPPORTED(CMAKE_REQUIRED_FLAGS "-pthread")
+  IF(LAPACK_FOUND)
+    SET(${var} TRUE)
 
-  IF(CMAKE_C_COMPILER_WORKS)
-    FOREACH(_func ${DEAL_II_LAPACK_FUNCTIONS})
-      STRING(TOUPPER ${_func} _func_uppercase)
-      CHECK_FUNCTION_EXISTS(${_func} HAVE_${_func_uppercase})
-    ENDFOREACH()
-  ELSE()
-    MESSAGE(STATUS
-      "No suitable C compiler was found! Skipping LAPACK symbol check."
-      )
-    FOREACH(_func ${DEAL_II_LAPACK_FUNCTIONS})
-      SET_IF_EMPTY(HAVE_${_func_uppercase} TRUE)
-    ENDFOREACH()
+    #
+    # Clear the test flags because the following test will use a C compiler
+    #
+    CLEAR_CMAKE_REQUIRED()
+    SET(CMAKE_REQUIRED_FLAGS "${LAPACK_LINKER_FLAGS}")
+    SET(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES})
+    # Push -pthread as well:
+    ENABLE_IF_SUPPORTED(CMAKE_REQUIRED_FLAGS "-pthread")
+
+    IF(CMAKE_C_COMPILER_WORKS)
+
+      INCLUDE(CheckCSourceCompiles)
+      CHECK_C_SOURCE_COMPILES("
+        char daxpy_(); char dgeev_(); char dgeevx_(); char dgelsd_(); char
+        dgemm_(); char dgemv_(); char dgeqrf_(); char dgesdd_(); char
+        dgesvd_(); char dgetrf_(); char dgetri_(); char dgetrs_(); char
+        dorgqr_(); char dormqr_(); char dstev_(); char dsyevx_(); char
+        dsygv_(); char dsygvx_(); char dtrtrs_(); char saxpy_(); char
+        sgeev_(); char sgeevx_(); char sgelsd_(); char sgemm_(); char
+        sgemv_(); char sgeqrf_(); char sgesdd_(); char sgesvd_(); char
+        sgetrf_(); char sgetri_(); char sgetrs_(); char sorgqr_(); char
+        sormqr_(); char sstev_(); char ssyevx_(); char ssygv_(); char
+        ssygvx_(); char strtrs_();
+        int main(){
+          daxpy_ (); dgeev_ (); dgeevx_ (); dgelsd_ (); dgemm_ (); dgemv_ ();
+          dgeqrf_ (); dgesdd_ (); dgesvd_ (); dgetrf_ (); dgetri_ (); dgetrs_
+          (); dorgqr_ (); dormqr_ (); dstev_ (); dsyevx_ (); dsygv_ ();
+          dsygvx_ (); dtrtrs_ (); saxpy_ (); sgeev_ (); sgeevx_ (); sgelsd_
+          (); sgemm_ (); sgemv_ (); sgeqrf_ (); sgesdd_ (); sgesvd_ ();
+          sgetrf_ (); sgetri_ (); sgetrs_ (); sorgqr_ (); sormqr_ (); sstev_
+          (); ssyevx_ (); ssygv_ (); ssygvx_ (); strtrs_ ();
+
+          return 0;
+        }"
+        LAPACK_SYMBOL_CHECK)
+
+      IF(NOT LAPACK_SYMBOL_CHECK)
+        MESSAGE(STATUS
+          "Could not find a sufficient BLAS/LAPACK installation: "
+         "BLAS/LAPACK symbol check failed! Consult CMakeFiles/CMakeError.log "
+          "for further information."
+          )
+        SET(LAPACK_ADDITIONAL_ERROR_STRING
+          ${LAPACK_ADDITIONAL_ERROR_STRING}
+          "Could not find a sufficient BLAS/LAPACK installation: \n"
+          "BLAS/LAPACK symbol check failed! This usually means that your "
+          "BLAS/LAPACK installation is incomplete or the link line is "
+          "broken. Consult\n"
+         "  CMakeFiles/CMakeError.log\n"
+          "for further information.\n"
+          )
+        SET(${var} FALSE)
+      ENDIF()
+    ELSE()
+      MESSAGE(STATUS
+        "No suitable C compiler was found! Skipping LAPACK symbol check."
+        )
+    ENDIF()
   ENDIF()
-
-  RESET_CMAKE_REQUIRED()
-ENDMACRO()
-
-
-MACRO(RESET_LAPACK_FUNCTIONS_CACHE)
-  FOREACH(_func ${DEAL_II_LAPACK_FUNCTIONS})
-    STRING(TOUPPER ${_func} _func_uppercase)
-    UNSET(HAVE_${_func_uppercase} CACHE)
-  ENDFOREACH()
-ENDMACRO()
-
-
-MACRO(FEATURE_LAPACK_CONFIGURE_EXTERNAL)
-  CHECK_FOR_LAPACK_FUNCTIONS()
 ENDMACRO()
 
 
 CONFIGURE_FEATURE(LAPACK)
-
-#
-# Call RESET_LAPACK_FUNCTIONS_CHECK if DEAL_II_WITH_LAPACK is unset to
-# clean the configuration
-#
-IF(NOT DEAL_II_WITH_LAPACK)
-  RESET_LAPACK_FUNCTIONS_CACHE()
-ENDIF()
index a73e27d962eab0c0599e3970196059bd0e546e8c..7c0bda441df19d60a87221dba8641f7301610af1 100644 (file)
 #
 # Configuration for mpi support:
 #
-# We look for the C and Fortran libraries as well because they are needed
-# by some external libraries for the link interface:
-#
-
-MACRO(FEATURE_MPI_FIND_EXTERNAL var)
-  #
-  # Obey a manual user override: If MPI_CXX_FOUND is set to true in the
-  # cache, we skip the FIND_PACKAGE calls:
-  #
-  IF(MPI_CXX_FOUND)
-    SET(MPI_FOUND TRUE)
-  ENDIF()
-
-  #
-  # If CMAKE_CXX_COMPILER is already an MPI wrapper, use it to determine
-  # the mpi implementation. If MPI_CXX_COMPILER is defined use the value
-  # directly.
-  #
-  SET_IF_EMPTY(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
-  IF(CMAKE_C_COMPILER_WORKS)
-    SET_IF_EMPTY(MPI_C_COMPILER ${CMAKE_C_COMPILER}) # for good measure
-  ELSE()
-    MESSAGE(STATUS
-      "No suitable C compiler was found! MPI C interface can not be "
-      "autodetected"
-      )
-  ENDIF()
-  IF(CMAKE_Fortran_COMPILER_WORKS)
-    SET_IF_EMPTY(MPI_Fortran_COMPILER ${CMAKE_Fortran_COMPILER}) # for good measure
-  ELSE()
-    MESSAGE(STATUS
-      "No suitable Fortran compiler was found! MPI Fortran interface can "
-      "not be autodetected"
-      )
-  ENDIF()
-
-  FIND_PACKAGE(MPI)
-
-  IF(NOT MPI_CXX_FOUND AND DEAL_II_WITH_MPI)
-    #
-    # CMAKE_CXX_COMPILER is apparently not an mpi wrapper.
-    # So, let's be a bit more aggressive in finding MPI (and if
-    # DEAL_II_WITH_MPI is set).
-    #
-    MESSAGE(STATUS
-      "MPI not found but DEAL_II_WITH_MPI is set to TRUE."
-      " Try again with more aggressive search paths:"
-      )
-    SET(MPI_FOUND) # clear this value so that FIND_PACKAGE runs again.
-    UNSET(MPI_CXX_COMPILER CACHE)
-    UNSET(MPI_C_COMPILER CACHE)
-    UNSET(MPI_Fortran_COMPILER CACHE)
-    FIND_PACKAGE(MPI)
-  ENDIF()
-
-  #
-  # Manually clean up variables:
-  #
-  FOREACH(_lang C CXX Fortran)
-    IF(MPI_${_lang}_LIBRARIES MATCHES "-NOTFOUND")
-      SET(MPI_${_lang}_LIBRARIES)
-    ENDIF()
-  ENDFOREACH()
-
-  IF(MPI_CXX_FOUND)
-    #
-    # Manually assemble some version information:
-    #
-    FIND_FILE(MPI_MPI_H NAMES mpi.h
-      HINTS ${MPI_INCLUDE_PATH}
-      )
-
-    IF(NOT MPI_MPI_H MATCHES "-NOTFOUND" AND NOT DEFINED MPI_VERSION)
-      FILE(STRINGS "${MPI_MPI_H}" MPI_VERSION_MAJOR_STRING
-        REGEX "#define.*MPI_VERSION")
-      STRING(REGEX REPLACE "^.*MPI_VERSION.*([0-9]+).*" "\\1"
-        MPI_VERSION_MAJOR "${MPI_VERSION_MAJOR_STRING}"
-        )
-      FILE(STRINGS ${MPI_MPI_H} MPI_VERSION_MINOR_STRING
-        REGEX "#define.*MPI_SUBVERSION")
-      STRING(REGEX REPLACE "^.*MPI_SUBVERSION.*([0-9]+).*" "\\1"
-        MPI_VERSION_MINOR "${MPI_VERSION_MINOR_STRING}"
-        )
-      SET(MPI_VERSION "${MPI_VERSION_MAJOR}.${MPI_VERSION_MINOR}")
-      IF("${MPI_VERSION}" STREQUAL ".")
-        SET(MPI_VERSION)
-        SET(MPI_VERSION_MAJOR)
-        SET(MPI_VERSION_MINOR)
-      ENDIF()
-
-      # OMPI specific version number:
-      FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_MAJOR_STRING
-        REGEX "#define.*OMPI_MAJOR_VERSION")
-      STRING(REGEX REPLACE "^.*OMPI_MAJOR_VERSION.*([0-9]+).*" "\\1"
-        OMPI_VERSION_MAJOR "${OMPI_VERSION_MAJOR_STRING}"
-        )
-      FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_MINOR_STRING
-        REGEX "#define.*OMPI_MINOR_VERSION")
-      STRING(REGEX REPLACE "^.*OMPI_MINOR_VERSION.*([0-9]+).*" "\\1"
-        OMPI_VERSION_MINOR "${OMPI_VERSION_MINOR_STRING}"
-        )
-      FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_RELEASE_STRING
-        REGEX "#define.*OMPI_RELEASE_VERSION")
-      STRING(REGEX REPLACE "^.*OMPI_RELEASE_VERSION.*([0-9]+).*" "\\1"
-        OMPI_VERSION_SUBMINOR "${OMPI_VERSION_RELEASE_STRING}"
-        )
-      SET(OMPI_VERSION
-        "${OMPI_VERSION_MAJOR}.${OMPI_VERSION_MINOR}.${OMPI_VERSION_SUBMINOR}"
-        )
-      IF("${OMPI_VERSION}" STREQUAL "..")
-        SET(OMPI_VERSION)
-        SET(OMPI_VERSION_MAJOR)
-        SET(OMPI_VERSION_MINOR)
-        SET(OMPI_VERSION_SUBMINOR)
-      ENDIF()
-    ENDIF()
-
-    SET(${var} TRUE)
-  ENDIF()
-
-  # Hide some variables:
-  MARK_AS_ADVANCED(MPI_EXTRA_LIBRARY MPI_LIBRARY MPI_MPI_H)
-
-  #
-  # Populate correct variables:
-  #
-  SET(MPI_LIBRARIES ${MPI_CXX_LIBRARIES})
-  SET(MPI_INCLUDE_DIRS ${MPI_CXX_INCLUDE_PATH})
-  SET(MPI_CXX_FLAGS ${MPI_CXX_COMPILE_FLAGS})
-  SET(MPI_LINKER_FLAGS "${MPI_CXX_LINK_FLAGS}")
-
-ENDMACRO()
-
 
 MACRO(FEATURE_MPI_ERROR_MESSAGE)
   MESSAGE(FATAL_ERROR "\n"
@@ -169,8 +36,3 @@ ENDMACRO()
 
 
 CONFIGURE_FEATURE(MPI)
-
-#
-# The user has to know the location of the mpi headers as well:
-#
-SET(MPI_USER_INCLUDE_DIRS ${MPI_INCLUDE_DIRS})
index 4a697a835885b532403cfeedf078b0fc263db66c..f07f29725d8aa4363fea328d759795aec48c00fd 100644 (file)
 ##
 ## ---------------------------------------------------------------------
 
-
 #
 # Configuration for thread support in deal.II with the help of the tbb
 # library:
 #
 
-
 #
 # Set up general threading:
 # The macro will be included in CONFIGURE_FEATURE_THREADS_EXTERNAL/BUNDLED.
index 772f66acbcda9e085ae956f0a6c471c5aa919d21..5058a7195c6deb235cabd4f021ecfe5dc31086bf 100644 (file)
@@ -1,7 +1,7 @@
 ## ---------------------------------------------------------------------
 ## $Id$
 ##
-## Copyright (C) 2012 - 2013 by the deal.II authors
+## Copyright (C) 2012 - 2014 by the deal.II authors
 ##
 ## This file is part of the deal.II library.
 ##
@@ -19,8 +19,3 @@
 #
 
 CONFIGURE_FEATURE(ZLIB)
-
-# Export ZLIB_VERSION:
-IF(DEFINED ZLIB_VERSION_STRING)
-  SET(ZLIB_VERSION ${ZLIB_VERSION_STRING})
-ENDIF()
index 739c7a62749372c5916b0f12c0b281ecc46eca24..4d499c0d6088064e99511a187073137fe3165e46 100644 (file)
@@ -14,6 +14,8 @@
 ##
 ## ---------------------------------------------------------------------
 
+SET(FEATURE_METIS_AFTER MPI)
+
 #
 # Configuration for the metis library:
 #
@@ -22,9 +24,9 @@ MACRO(FEATURE_METIS_FIND_EXTERNAL var)
   FIND_PACKAGE(METIS)
 
   IF(METIS_FOUND)
-    IF(METIS_VERSION_MAJOR GREATER 4)
-      SET(${var} TRUE)
-    ELSE()
+    SET(${var} TRUE)
+
+    IF(NOT METIS_VERSION_MAJOR GREATER 4)
       MESSAGE(STATUS "Insufficient metis installation found: "
         "Version 5.x required!"
         )
@@ -32,14 +34,10 @@ MACRO(FEATURE_METIS_FIND_EXTERNAL var)
         "Could not find a sufficient modern metis installation: "
         "Version 5.x required!\n"
         )
-
-      UNSET(METIS_LIBRARY CACHE)
-      UNSET(METIS_INCLUDE_DIR CACHE)
-      SET(METIS_DIR "" CACHE PATH
-        "An optional hint to a metis directory"
-        )
-      MARK_AS_ADVANCED(CLEAR METIS_DIR)
+      SET(${var} FALSE)
     ENDIF()
+
+    CHECK_MPI_INTERFACE(METIS ${var})
   ENDIF()
 ENDMACRO()
 
index b7b000621152424734416a97fae8f5d233c80a4b..7b680a4f5e070f7acd94d1800e3f722e37012a66 100644 (file)
@@ -180,23 +180,12 @@ MACRO(FEATURE_TRILINOS_FIND_EXTERNAL var)
       ENDIF()
     ENDIF()
 
-  ENDIF(TRILINOS_FOUND)
-
-  IF(NOT ${var})
-    UNSET(TRILINOS_CONFIG CACHE)
-    SET(TRILINOS_DIR "" CACHE STRING
-      "An optional hint to a Trilinos installation"
-      )
-    MARK_AS_ADVANCED(CLEAR TRILINOS_DIR)
+    CHECK_MPI_INTERFACE(TRILINOS ${var})
   ENDIF()
-
 ENDMACRO()
 
 
 MACRO(FEATURE_TRILINOS_CONFIGURE_EXTERNAL)
-
-  SET(TRILINOS_USER_INCLUDE_DIRS ${TRILINOS_INCLUDE_DIRS})
-
   SET(DEAL_II_EXPAND_TRILINOS_VECTOR "TrilinosWrappers::Vector")
   SET(DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR "TrilinosWrappers::BlockVector")
   SET(DEAL_II_EXPAND_TRILINOS_SPARSITY_PATTERN "TrilinosWrappers::SparsityPattern")
@@ -210,7 +199,6 @@ MACRO(FEATURE_TRILINOS_CONFIGURE_EXTERNAL)
   ENABLE_IF_SUPPORTED(TRILINOS_CXX_FLAGS "-Wno-unused")
   ENABLE_IF_SUPPORTED(TRILINOS_CXX_FLAGS "-Wno-extra")
   ENABLE_IF_SUPPORTED(TRILINOS_CXX_FLAGS "-Wno-overloaded-virtual")
-
 ENDMACRO()
 
 
index f1d0d7451351799f7f7cbc0f28939af4730349b4..5f0760ef3cbfefa445c45a9f9848e7d5e7aec65c 100644 (file)
@@ -18,7 +18,7 @@
 # Configuration for the umfpack library:
 #
 
-SET(FEATURE_UMFPACK_DEPENDS DEAL_II_WITH_LAPACK)
+SET(FEATURE_UMFPACK_DEPENDS LAPACK)
 
 MACRO(FEATURE_UMFPACK_CONFIGURE_BUNDLED)
   SET(UMFPACK_BUNDLED_INCLUDE_DIRS
index 81cdd69e30149ae60a32cb0b57ea8f602969cf86..662c30f8a348b6ebbcd1dff457fb09a25a0fac53 100644 (file)
 # Configuration for the petsc library:
 #
 
+SET(FEATURE_PETSC_AFTER MPI)
 
-MACRO(FEATURE_PETSC_FIND_EXTERNAL var)
 
+MACRO(FEATURE_PETSC_FIND_EXTERNAL var)
   FIND_PACKAGE(PETSC)
 
   IF(PETSC_FOUND)
@@ -67,7 +68,6 @@ MACRO(FEATURE_PETSC_FIND_EXTERNAL var)
       SET(${var} FALSE)
     ENDIF()
 
-
     #
     # Petsc has to be configured with the same number of bits for indices as
     # deal.II.
@@ -94,36 +94,21 @@ MACRO(FEATURE_PETSC_FIND_EXTERNAL var)
       SET(${var} FALSE)
     ENDIF()
 
-    IF(NOT ${var})
-      UNSET(PETSC_INCLUDE_DIR_ARCH CACHE)
-      UNSET(PETSC_INCLUDE_DIR_COMMON CACHE)
-      UNSET(PETSC_LIBRARY CACHE)
-      UNSET(PETSC_PETSCVARIABLES CACHE)
-      SET(PETSC_DIR "" CACHE PATH
-        "An optional hint to a PETSc directory"
-        )
-      SET(PETSC_ARCH "" CACHE STRING
-        "An optional hint to a PETSc arch"
-        )
-      MARK_AS_ADVANCED(CLEAR PETSC_DIR PETSC_ARCH)
-    ENDIF()
+    CHECK_MPI_INTERFACE(PETSC ${var})
   ENDIF()
 ENDMACRO()
 
 
 MACRO(FEATURE_PETSC_CONFIGURE_EXTERNAL)
-
-  SET(PETSC_USER_INCLUDE_DIRS ${PETSC_INCLUDE_DIRS})
+  SET(DEAL_II_EXPAND_PETSC_VECTOR "PETScWrappers::Vector")
+  SET(DEAL_II_EXPAND_PETSC_BLOCKVECTOR "PETScWrappers::BlockVector")
+  SET(DEAL_II_EXPAND_PETSC_MPI_VECTOR "PETScWrappers::MPI::Vector")
+  SET(DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR "PETScWrappers::MPI::BlockVector")
 
   #
   # Disable a bunch of warnings when compiling with petsc:
   #
   ENABLE_IF_SUPPORTED(PETSC_CXX_FLAGS "-Wno-long-long")
-
-  SET(DEAL_II_EXPAND_PETSC_VECTOR "PETScWrappers::Vector")
-  SET(DEAL_II_EXPAND_PETSC_BLOCKVECTOR "PETScWrappers::BlockVector")
-  SET(DEAL_II_EXPAND_PETSC_MPI_VECTOR "PETScWrappers::MPI::Vector")
-  SET(DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR "PETScWrappers::MPI::BlockVector")
 ENDMACRO()
 
 
index bf2f5f4acac233fe5c5f2cb84f5d20dabe53bc17..f631bec3bdff2280321508e48a10bcceda9318a0 100644 (file)
@@ -18,6 +18,6 @@
 # Configuration for the ARPACK library:
 #
 
-SET(FEATURE_ARPACK_DEPENDS DEAL_II_WITH_LAPACK)
+SET(FEATURE_ARPACK_DEPENDS LAPACK)
 
 CONFIGURE_FEATURE(ARPACK)
index ec72b800a282ef096e56e0c65873c59386712718..4ae786788b1fad84d737fb9c2a950ba3432eedee 100644 (file)
 # Configuration for the boost library:
 #
 
-#
-# This configure script has to be included after configure_threads.
-# We need some of the variables defined in SETUP_THREADING for
-# the setup of the bundled boost library (if used)
-#
-IF(NOT FEATURE_THREADS_PROCESSED)
-  MESSAGE(FATAL_ERROR "\n"
-    "Internal build system error:\n"
-    "configure_boost.cmake included before configure_1_threads.cmake\n\n"
-    )
-ENDIF()
-
-
 SET(DEAL_II_WITH_BOOST ON # Always true. We need it :-]
   CACHE BOOL "Build deal.II with support for boost." FORCE
   )
 
 
-MACRO(FEATURE_BOOST_FIND_EXTERNAL var)
-
-  #
-  # This mumbo jumbo is necessary because CMake won't let us test against
-  # BOOST_DIR directly. WTF?!
-  #
-  IF(NOT DEFINED BOOST_DIR)
-    SET(BOOST_DIR "$ENV{BOOST_DIR}")
-  ELSE()
-    SET_IF_EMPTY(BOOST_DIR "$ENV{BOOST_DIR}")
-  ENDIF()
-
-  IF(NOT "${BOOST_DIR}" STREQUAL "")
-    SET(BOOST_ROOT "${BOOST_DIR}")
-  ENDIF()
-
-  IF(DEAL_II_WITH_THREADS)
-    SET(_boost_components iostreams serialization system thread)
-  ELSE()
-    SET(_boost_components iostreams serialization system)
-  ENDIF()
-
-  #
-  # Prefer static libs if BUILD_SHARED_LIBS=OFF:
-  #
-  IF(NOT BUILD_SHARED_LIBS)
-    SET(Boost_USE_STATIC_LIBS TRUE)
-  ENDIF()
-
-  FIND_PACKAGE(Boost 1.44 COMPONENTS ${_boost_components})
-
-  #
-  # Fall back to dynamic libraries if no static libraries could be found:
-  #
-  IF(NOT Boost_FOUND AND Boost_USE_STATIC_LIBS)
-    SET(Boost_USE_STATIC_LIBS FALSE)
-    FIND_PACKAGE(Boost 1.44 COMPONENTS ${_boost_components})
-  ENDIF()
-
-  MARK_AS_ADVANCED(Boost_DIR)
-
-  IF(Boost_FOUND)
-    SET(BOOST_VERSION_MAJOR "${Boost_MAJOR_VERSION}")
-    SET(BOOST_VERSION_MINOR "${Boost_MINOR_VERSION}")
-    SET(BOOST_VERSION_SUBMINOR "${Boost_SUBMINOR_VERSION}")
-    SET(BOOST_VERSION
-      "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}"
-      )
-
-    #
-    # Remove "pthread" from Boost_LIBRARIES. Threading, if necessary, is
-    # already set up via configure_1_threads.cmake.
-    #
-    LIST(REMOVE_ITEM Boost_LIBRARIES "pthread")
-
-    SET(BOOST_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
-    SET(BOOST_LIBRARIES ${Boost_LIBRARIES})
-
-    MARK_AS_ADVANCED(BOOST_DIR)
-
-    SET(${var} TRUE)
-
-  ELSE()
-
-    SET(BOOST_DIR "" CACHE PATH "An optional hint to a boost directory")
-  ENDIF()
-ENDMACRO()
-
-
 MACRO(FEATURE_BOOST_CONFIGURE_BUNDLED)
   SET(BOOST_BUNDLED_INCLUDE_DIRS ${BOOST_FOLDER}/include)
 ENDMACRO()
@@ -112,10 +30,6 @@ ENDMACRO()
 
 CONFIGURE_FEATURE(BOOST)
 
-#
-# The user has to know the location of the boost headers as well:
-#
-SET(BOOST_USER_INCLUDE_DIRS ${BOOST_INCLUDE_DIRS})
 
 #
 # DEAL_II_WITH_BOOST is always required.
index 5dd027d482929c502f76e73fcd242dd18d55b1ec..6a335a232c20aaa0304d02fbf4f87c00f817955f 100644 (file)
 # Configuration for the hdf5 library:
 #
 
+SET(FEATURE_HDF5_AFTER MPI)
+
+
 MACRO(FEATURE_HDF5_FIND_EXTERNAL var)
   FIND_PACKAGE(HDF5)
 
   IF(HDF5_FOUND)
+    SET(${var} TRUE)
 
-    IF( (HDF5_WITH_MPI AND DEAL_II_WITH_MPI) OR
-        (NOT HDF5_WITH_MPI AND NOT DEAL_II_WITH_MPI) )
-      SET(${var} TRUE)
-
-    ELSE()
-
+    IF( (HDF5_WITH_MPI AND NOT DEAL_II_WITH_MPI) OR
+        (NOT HDF5_WITH_MPI AND DEAL_II_WITH_MPI) )
       MESSAGE(STATUS "Insufficient hdf5 installation found: "
         "hdf5 has to be configured with the same MPI configuration as deal.II."
         )
@@ -38,19 +38,12 @@ MACRO(FEATURE_HDF5_FIND_EXTERNAL var)
         "  DEAL_II_WITH_MPI = ${DEAL_II_WITH_MPI}\n"
         "  HDF5_WITH_MPI    = ${HDF5_WITH_MPI}\n"
         )
-      UNSET(HDF5_HL_LIBRARY CACHE)
-      UNSET(HDF5_INCLUDE_DIR CACHE)
-      UNSET(HDF5_LIBRARY CACHE)
-      UNSET(HDF5_PUBCONF CACHE)
+      SET(${var} FALSE)
     ENDIF()
+
+    CHECK_MPI_INTERFACE(HDF5 ${var})
   ENDIF()
 ENDMACRO()
 
 
 CONFIGURE_FEATURE(HDF5)
-
-
-#
-# The user has to know the location of the hdf5 headers as well:
-#
-SET(HDF5_USER_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
index a02e94d0b97d6e5856ac254e580a622e494d74e3..ce1d2652b10b4a50073bda70e578a6c716b66136 100644 (file)
 # Configuration for the MUMPS library:
 #
 
-SET(FEATURE_MUMPS_DEPENDS DEAL_II_WITH_MPI DEAL_II_WITH_LAPACK)
+SET(FEATURE_MUMPS_DEPENDS MPI LAPACK)
 
 
-CONFIGURE_FEATURE(MUMPS)
+MACRO(FEATURE_MUMPS_FIND_EXTERNAL var)
+  FIND_PACKAGE(MUMPS)
 
-#
-# The user has to know the location of the MUMPS headers as well:
-#
-SET(MUMPS_USER_INCLUDE_DIRS ${MUMPS_INCLUDE_DIRS})
+  IF(MUMPS_FOUND)
+    SET(${var} TRUE)
+    CHECK_MPI_INTERFACE(MUMPS ${var})
+  ENDIF()
+ENDMACRO()
+
+CONFIGURE_FEATURE(MUMPS)
index 29aab1f087378434c976fcbeba734b1c0aefd2cf..badb1c5b689de9ca854186b241ad924c705288c0 100644 (file)
@@ -22,4 +22,5 @@ MACRO(FEATURE_MUPARSER_CONFIGURE_BUNDLED)
   SET(MUPARSER_BUNDLED_INCLUDE_DIRS ${MUPARSER_FOLDER}/include)
 ENDMACRO()
 
+
 CONFIGURE_FEATURE(MUPARSER)
index a54643b60cd34f3566206f6d882e87037742e985..25acd30d862478b6cf1b3f01d4eb761aee7bf7e9 100644 (file)
@@ -18,7 +18,8 @@
 # Configuration for the p4est and sc libraries:
 #
 
-SET(FEATURE_P4EST_DEPENDS DEAL_II_WITH_MPI)
+SET(FEATURE_P4EST_DEPENDS MPI)
+
 
 MACRO(FEATURE_P4EST_FIND_EXTERNAL var)
   FIND_PACKAGE(P4EST)
@@ -55,29 +56,9 @@ MACRO(FEATURE_P4EST_FIND_EXTERNAL var)
       SET(${var} FALSE)
     ENDIF()
 
-    #
-    # Reset configuration:
-    #
-    IF(NOT ${var})
-      UNSET(P4EST_LIBRARY_OPTIMIZED CACHE)
-      UNSET(P4EST_LIBRARY_DEBUG CACHE)
-      UNSET(P4EST_INCLUDE_DIR CACHE)
-      UNSET(SC_LIBRARY_OPTIMIZED CACHE)
-      UNSET(SC_LIBRARY_DEBUG CACHE)
-      UNSET(SC_INCLUDE_DIR CACHE)
-      SET(P4EST_DIR "" CACHE PATH
-        "An optional hint to a p4est installation/directory"
-        )
-      MARK_AS_ADVANCED(CLEAR P4EST_DIR)
-    ENDIF()
-
+    CHECK_MPI_INTERFACE(P4EST ${var})
   ENDIF()
 ENDMACRO()
 
 
 CONFIGURE_FEATURE(P4EST)
-
-#
-# The user has to know the location of the P4est headers as well:
-#
-SET(P4EST_USER_INCLUDE_DIRS ${P4EST_INCLUDE_DIRS})
index a4b97958fc6323c706107c04a5171efad9035513..c300f7ea7bfd6fc3269e1038154c6ca218f06b8e 100644 (file)
@@ -18,7 +18,8 @@
 # Configuration for the SLEPC library:
 #
 
-SET(FEATURE_SLEPC_DEPENDS DEAL_II_WITH_PETSC)
+SET(FEATURE_SLEPC_DEPENDS PETSC)
+
 
 MACRO(FEATURE_SLEPC_FIND_EXTERNAL var)
   FIND_PACKAGE(SLEPC)
@@ -78,8 +79,3 @@ ENDMACRO()
 
 
 CONFIGURE_FEATURE(SLEPC)
-
-#
-# The user has to know the location of the SLEPC headers as well:
-#
-SET(SLEPC_USER_INCLUDE_DIRS ${SLEPC_INCLUDE_DIRS})
diff --git a/deal.II/cmake/macros/macro_check_mpi_interface.cmake b/deal.II/cmake/macros/macro_check_mpi_interface.cmake
new file mode 100644 (file)
index 0000000..0011282
--- /dev/null
@@ -0,0 +1,59 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Check whether a feature is compiled against the same MPI library as the
+# one deal.II picked up
+#
+# Usage:
+#     CHECK_MPI_INTERFACE(_feature _var),
+#
+
+MACRO(CHECK_MPI_INTERFACE _feature _var)
+  IF(DEAL_II_WITH_MPI)
+    SET(_nope FALSE)
+
+    FOREACH(_library ${${_feature}_LIBRARIES})
+      IF(_library MATCHES "/libmpi[^/]*\\.so")
+        LIST(FIND MPI_LIBRARIES "${_library}" _position)
+        IF("${_position}" STREQUAL "-1")
+          SET(_nope TRUE)
+          SET(_mpi_library ${_library})
+          BREAK()
+        ENDIF()
+      ENDIF()
+    ENDFOREACH()
+
+    IF(_nope)
+      MESSAGE(STATUS "Could not find a sufficient ${_feature} installation: "
+        "${_feature} is compiled against a different MPI library than the one "
+        "deal.II picked up."
+        )
+      TO_STRING(_str ${MPI_LIBRARIES})
+      SET(PETSC_ADDITIONAL_ERROR_STRING
+        ${PETSC_ADDITIONAL_ERROR_STRING}
+        "Could not find a sufficient ${_feature} installation:\n"
+        "${_feature} has to be compiled against the same MPI library as deal.II "
+        "but the link line of ${_feature} contains:\n"
+        "  ${_mpi_library}\n"
+        "which is not listed in MPI_LIBRARIES:\n"
+        "  MPI_LIBRARIES = \"${_str}\"\n"
+        )
+      SET(${_var} FALSE)
+    ENDIF()
+  ENDIF()
+ENDMACRO()
+
index 60930bf7bf34eed22107366fcf59289945ec416c..2c1277d6ae439d7846b0b56e9f31e97c4af3a28f 100644 (file)
 # FEATURE_${feature}_DEPENDS    (a variable)
 #    a variable which contains an optional list of other features
 #    this feature depends on (and which have to be enbled for this feature
-#    to work.) The features must be given with the full option toggle:
-#    DEAL_II_WITH_[...]
+#    to work.)
+#    Features must be given with short name, i.e. without DEAL_II_WITH_
+#
+# FEATURE_${feature}_after      (a variable)
+#    a variable which contains an optional list of other features
+#    that have to be configured prior to this feature
+#    Features must be given with short name, i.e. without DEAL_II_WITH_
 #
 # FEATURE_${feature}_HAVE_BUNDLED   (a variable)
 #    which should either be set to TRUE if all necessary libraries of the
@@ -150,14 +155,18 @@ MACRO(CONFIGURE_FEATURE _feature)
 
   #
   # Check for correct include order of the configure_*.cmake files:
-  # If feature B depends on feature A, configure_A.cmake has to be
-  # included before configure_B.cmake:
+  # If feature B explicitly states to come after feature A, or if feature B
+  # depends on feature A, configure_A.cmake has to be included before
+  # configure_B.cmake:
   #
-  FOREACH(_dependency ${FEATURE_${_feature}_DEPENDS})
-    STRING(REGEX REPLACE "^DEAL_II_WITH_" "" _dependency ${_dependency})
+  FOREACH(_dependency
+      ${FEATURE_${_feature}_AFTER}
+      ${FEATURE_${_feature}_DEPENDS}
+      )
     IF(NOT FEATURE_${_dependency}_PROCESSED)
       MESSAGE(FATAL_ERROR "\n"
-        "Internal build system error: DEAL_II_WITH_${_feature} depends on "
+        "Internal build system error: The configuration of "
+        "DEAL_II_WITH_${_feature} depends on "
         "DEAL_II_WITH_${_dependency}, but CONFIGURE_FEATURE(${_feature}) "
         "was called before CONFIGURE_FEATURE(${_dependency}).\n\n"
         )
@@ -169,6 +178,7 @@ MACRO(CONFIGURE_FEATURE _feature)
   #
   IF( (NOT DEAL_II_ALLOW_AUTODETECTION) AND
       (NOT DEFINED DEAL_II_WITH_${_feature}) )
+    PURGE_FEATURE(${_feature})
     SET_CACHED_OPTION(${_feature} OFF)
   ENDIF()
 
@@ -184,7 +194,7 @@ MACRO(CONFIGURE_FEATURE _feature)
     #
     SET(_dependencies_ok TRUE)
     FOREACH(_dependency ${FEATURE_${_feature}_DEPENDS})
-      IF(NOT ${_dependency})
+      IF(NOT DEAL_II_WITH_${_dependency})
         IF(DEAL_II_WITH_${_feature})
           MESSAGE(FATAL_ERROR "\n"
             "DEAL_II_WITH_${_feature} has unmet configuration requirements: "
@@ -195,6 +205,7 @@ MACRO(CONFIGURE_FEATURE _feature)
             "DEAL_II_WITH_${_feature} has unmet configuration requirements: "
             "${_dependency} has to be set to \"ON\"."
             )
+          PURGE_FEATURE(${_feature})
           SET_CACHED_OPTION(${_feature} OFF)
         ENDIF()
         SET(_dependencies_ok FALSE)
@@ -206,6 +217,9 @@ MACRO(CONFIGURE_FEATURE _feature)
         #
         # First case: DEAL_II_FORCE_BUNDLED_${_feature} is defined:
         #
+
+        PURGE_FEATURE(${_feature})
+
         IF(FEATURE_${_feature}_HAVE_BUNDLED)
           RUN_COMMAND("FEATURE_${_feature}_CONFIGURE_BUNDLED()")
           MESSAGE(STATUS "DEAL_II_WITH_${_feature} successfully set up with bundled packages.")
@@ -241,6 +255,8 @@ MACRO(CONFIGURE_FEATURE _feature)
 
         ELSE(FEATURE_${_feature}_EXTERNAL_FOUND)
 
+          PURGE_FEATURE(${_feature})
+
           MESSAGE(STATUS "DEAL_II_WITH_${_feature} has unmet external dependencies.")
 
           IF(FEATURE_${_feature}_HAVE_BUNDLED AND DEAL_II_ALLOW_BUNDLED)
@@ -272,6 +288,8 @@ MACRO(CONFIGURE_FEATURE _feature)
     # DEAL_II_WITH_${_feature} is defined and set to OFF, promote it to
     # cache nevertheless:
     #
+    MESSAGE(STATUS "DEAL_II_WITH_${_feature} is set to off.")
+    PURGE_FEATURE(${_feature})
     SET_CACHED_OPTION(${_feature} OFF)
   ENDIF()
 
diff --git a/deal.II/cmake/macros/macro_deal_ii_find_file.cmake b/deal.II/cmake/macros/macro_deal_ii_find_file.cmake
new file mode 100644 (file)
index 0000000..61bba78
--- /dev/null
@@ -0,0 +1,31 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# A small wrapper around FIND_FILE to be a bit more verbose
+#
+
+MACRO(DEAL_II_FIND_FILE _file_name)
+  FIND_FILE(${_file_name} ${ARGN})
+
+  IF(${_file_name} MATCHES "-NOTFOUND")
+    MESSAGE(STATUS "${_file_name} not found! Call:")
+    TO_STRING(_str ${ARGN})
+    MESSAGE(STATUS "    FIND_FILE(${_file_name} ${_str})")
+  ELSE()
+    MESSAGE(STATUS "Found ${_file_name}")
+  ENDIF()
+ENDMACRO()
diff --git a/deal.II/cmake/macros/macro_deal_ii_find_library.cmake b/deal.II/cmake/macros/macro_deal_ii_find_library.cmake
new file mode 100644 (file)
index 0000000..e6a7350
--- /dev/null
@@ -0,0 +1,31 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# A small wrapper around FIND_LIBRARY to be a bit more verbose
+#
+
+MACRO(DEAL_II_FIND_LIBRARY _library_name)
+  FIND_LIBRARY(${_library_name} ${ARGN})
+
+  IF(${_library_name} MATCHES "-NOTFOUND")
+    MESSAGE(STATUS "${_library_name} not found! Call:")
+    TO_STRING(_str ${ARGN})
+    MESSAGE(STATUS "    FIND_LIBRARY(${_library_name} ${_str})")
+  ELSE()
+    MESSAGE(STATUS "Found ${_library_name}")
+  ENDIF()
+ENDMACRO()
diff --git a/deal.II/cmake/macros/macro_deal_ii_find_path.cmake b/deal.II/cmake/macros/macro_deal_ii_find_path.cmake
new file mode 100644 (file)
index 0000000..201cdae
--- /dev/null
@@ -0,0 +1,31 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# A small wrapper around FIND_FILE to be a bit more verbose
+#
+
+MACRO(DEAL_II_FIND_PATH _path_name)
+  FIND_PATH(${_path_name} ${ARGN})
+
+  IF(${_path_name} MATCHES "-NOTFOUND")
+    MESSAGE(STATUS "${_path_name} not found! Call:")
+    TO_STRING(_str ${ARGN})
+    MESSAGE(STATUS "    FIND_PATH(${_path_name} ${_str})")
+  ELSE()
+    MESSAGE(STATUS "Found ${_path_name}")
+  ENDIF()
+ENDMACRO()
index 460f5b5d35bc2c61512c0a92207632c9c81f95a1..0038aa922961e0c42d6fa7005c2437cf5fecc7a4 100644 (file)
 ## ---------------------------------------------------------------------
 
 #
-# DEAL_II_PACKAGE_HANDLE
+# DEAL_II_PACKAGE_HANDLE(<feature>
+#  {<conf. variable> {(REQUIRED|OPTIONAL) <variables>}}
+#  [CLEAR <variables>]
+#  )
 #
-# TODO: Documentation
+# This macro is an alternative implementation of the
+# FIND_PACKAGE_HANDLE_STANDARD_ARGS macro shipped with CMake - aka do
+# everything that was expected from CMake in the first place *sigh*
+#
+# Its usage is best explained with an example:
+#
+#   DEAL_II_PACKAGE_HANDLE(PETSC
+#     LIBRARIES
+#       REQUIRED PETSC_LIBRARY
+#       OPTIONAL _petsc_libraries
+#     INCLUDE_DIRS
+#       REQUIRED PETSC_INCLUDE_DIR_COMMON PETSC_INCLUDE_DIR_ARCH
+#       OPTIONAL _petsc_includes
+#     CLEAR PETSC_LIBRARY PETSC_INCLUDE_DIR_COMMON PETSC_INCLUDE_DIR_ARCH
+#     )
+#
+# This will check whether all REQUIRED variables are non-empty and
+# different from "-NOTFOUND". If so, PETSC_LIBRARIES and PETSC_INCLUDE_DIRS
+# is defined and populated with the contents of all specified variables.
+# Optional variables with no content or whose content is "-NOTFOUND" are
+# filtered out.
+# After the 'CLEAR' statement all internally cached variables should be
+# listed - this is used to provide a possibility to undo a feature
+# search.
 #
 
 MACRO(DEAL_II_PACKAGE_HANDLE _feature _var)
@@ -29,10 +55,11 @@ MACRO(DEAL_II_PACKAGE_HANDLE _feature _var)
   SET(${_feature}_FOUND TRUE)
 
   SET(_variable ${_var})
-  SET(_cleanup ${_var})
   SET(${_feature}_${_variable} "")
   SET(_required TRUE)
   SET(_fine TRUE)
+  SET(_fill_clear FALSE)
+  SET(_clear "")
 
   FOREACH(_arg ${ARGN})
     IF(_arg MATCHES "^LIBRARIES(|_DEBUG|_RELEASE)$"
@@ -53,7 +80,6 @@ MACRO(DEAL_II_PACKAGE_HANDLE _feature _var)
       # *Yay* a new keyword.
       #
       SET(_variable ${_arg})
-      LIST(APPEND _cleanup ${_var})
       SET(${_feature}_${_variable} "")
       SET(_required TRUE)
       SET(_fine TRUE)
@@ -62,34 +88,44 @@ MACRO(DEAL_II_PACKAGE_HANDLE _feature _var)
       SET(_required TRUE)
     ELSEIF("${_arg}" STREQUAL "OPTIONAL")
       SET(_required FALSE)
-    ELSEIF( _arg MATCHES "^(optimized|debug|general)$"
+    ELSEIF(_arg MATCHES "^(optimized|debug|general)$"
             AND "${_variable}" STREQUAL "LIBRARIES")
       #
       # Keywords are special...
       #
       LIST(APPEND ${_feature}_${_variable} ${_arg})
+    ELSEIF("${_arg}" STREQUAL "CLEAR")
+      SET(_fill_clear TRUE)
     ELSE()
       MARK_AS_ADVANCED(${_arg})
-      IF(NOT DEFINED ${_arg} OR ${_arg} MATCHES "-NOTFOUND")
-        IF(_required AND _fine)
-          IF(NOT DEFINED ${_arg})
-            MESSAGE(STATUS
-              "  ${_feature}_${_variable}: *** Required variable \"${_arg}\" undefined ***"
-              )
-          ELSE()
-            MESSAGE(STATUS
-              "  ${_feature}_${_variable}: *** Required variable \"${_arg}\" set to NOTFOUND ***"
-              )
-          ENDIF()
-          SET(${_feature}_FOUND FALSE)
-          SET(_fine FALSE)
+      IF(_fill_clear)
+        IF(NOT _arg MATCHES "^(optimized|debug|general)$")
+          LIST(APPEND _clear ${_arg})
         ENDIF()
       ELSE()
-        LIST(APPEND ${_feature}_${_variable} ${${_arg}})
+        IF("${${_arg}}" MATCHES "^\\s*$" OR "${${_arg}}" MATCHES "-NOTFOUND")
+          IF(_required AND _fine)
+            IF("${${_arg}}" MATCHES "^\\s*$")
+              MESSAGE(STATUS
+                "  ${_feature}_${_variable}: *** Required variable \"${_arg}\" empty ***"
+                )
+            ELSE()
+              MESSAGE(STATUS
+                "  ${_feature}_${_variable}: *** Required variable \"${_arg}\" set to NOTFOUND ***"
+                )
+            ENDIF()
+            SET(${_feature}_FOUND FALSE)
+            SET(_fine FALSE)
+          ENDIF()
+        ELSE()
+          LIST(APPEND ${_feature}_${_variable} ${${_arg}})
+        ENDIF()
       ENDIF()
     ENDIF()
   ENDFOREACH()
 
+  SET(${_feature}_CLEAR_VARIABLES ${_clear} CACHE INTERNAL "")
+
   IF(_fine)
     IF(_variable MATCHES "^CXX_FLAGS(|_DEBUG|_RELEASE)"
        OR _variable MATCHES "^LINKER_FLAGS(|_DEBUG|_RELEASE)")
@@ -100,27 +136,22 @@ MACRO(DEAL_II_PACKAGE_HANDLE _feature _var)
 
   IF(${_feature}_FOUND)
     #
-    # Deduplicate entries in *_INCLUDE_DIRS and *_LIBRARIES
+    # Deduplicate entries:
     #
-    FOREACH(_suffix INCLUDE_DIRS USER_INCLUDE_DIRS BUNDLED_INCLUDE_DIRS)
-      REMOVE_DUPLICATES(${_feature}_${_suffix})
-    ENDFOREACH()
-    FOREACH(_suffix
-        LIBRARIES LIBRARIES_RELEASE LIBRARIES_DEBUG
-        USER_DEFINITIONS USER_DEFINITIONS_DEBUG USER_DEFINITIONS_RELEASE
-        DEFINITIONS DEFINITIONS_DEBUG DEFINITIONS_RELEASE
-        )
-      REMOVE_DUPLICATES(${_feature}_${_suffix} REVERSE)
+    FOREACH(_suffix ${DEAL_II_LIST_SUFFIXES})
+      IF(_suffix MATCHES "INCLUDE_DIRS$")
+        REMOVE_DUPLICATES(${_feature}_${_suffix})
+      ELSE()
+        REMOVE_DUPLICATES(${_feature}_${_suffix} REVERSE)
+      ENDIF()
     ENDFOREACH()
 
     MESSAGE(STATUS "Found ${_feature}")
-    MARK_AS_ADVANCED(${_feature}_DIR)
+
+    MARK_AS_ADVANCED(${_feature}_DIR ${_feature}_ARCH)
 
   ELSE()
 
-    FOREACH(_v _cleanup)
-      SET(${_feature}_${_v})
-    ENDFOREACH()
     MESSAGE(STATUS "Could NOT find ${_feature}")
   ENDIF()
 ENDMACRO()
diff --git a/deal.II/cmake/macros/macro_purge_feature.cmake b/deal.II/cmake/macros/macro_purge_feature.cmake
new file mode 100644 (file)
index 0000000..34380a4
--- /dev/null
@@ -0,0 +1,48 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Remove all cached and non cached variables associated with a feature.
+#
+# Usage:
+#     PURGE_FEATURE(feature)
+#
+
+MACRO(PURGE_FEATURE _feature)
+  #
+  # uncached:
+  #
+  FOREACH(_var ${DEAL_II_LIST_SUFFIXES} ${DEAL_II_STRING_SUFFIXES})
+    IF(NOT _var MATCHES BUNDLED)
+      SET(${_feature}_${_var})
+    ENDIF()
+  ENDFOREACH()
+
+  UNSET(${_feature}_FOUND)
+  UNSET(${_feature}_VERSION)
+
+  #
+  # cached:
+  #
+  FOREACH(_var ${${_feature}_CLEAR_VARIABLES})
+    SET(${_var})
+    UNSET(${_var} CACHE)
+  ENDFOREACH()
+
+  UNSET(${_feature}_CLEAR_VARIABLES CACHE)
+
+  MARK_AS_ADVANCED(CLEAR ${_feature}_DIR ${_feature}_ARCH)
+ENDMACRO()
index 1f6ed329a0c612bae2f15972b3155174ee738ce2..9fd00171906cb39431fd0e0dede651a18947ea75 100644 (file)
 # This macro will add
 #
 #   <FEATURE>_LIBRARIES (respecting general, optimized, debug keyword)
-#   <FEATURE>_LIBRARIES(_DEBUG|_RELEASE)
-#   <FEATURE>_(|BUNDLED_|USER_)INCLUDE_DIRS
-#   <FEATURE>_DEFINITIONS(|_DEBUG|_RELEASE)
-#   <FEATURE>_USER_DEFINITIONS(|_DEBUG|_RELEASE)
-#   <FEATURE>_CXX_FLAGS(|_DEBUG|_RELEASE)
-#   <FEATURE>_LINKER_FLAGS(|_DEBUG|_RELEASE)
 #
-# to the corresponding DEAL_II_* variables
+# and all other suffixes defined in DEAL_II_LIST_SUFFIXES and
+# DEAL_II_STRING_SUFFIXES to the corresponding DEAL_II_* variables
 #
 
 MACRO(REGISTER_FEATURE _feature)
@@ -63,21 +58,13 @@ MACRO(REGISTER_FEATURE _feature)
     ENDFOREACH()
   ENDIF()
 
-  FOREACH(_var
-    LIBRARIES_DEBUG LIBRARIES_RELEASE
-    INCLUDE_DIRS BUNDLED_INCLUDE_DIRS USER_INCLUDE_DIRS
-    DEFINITIONS DEFINITIONS_DEBUG DEFINITIONS_RELEASE
-    USER_DEFINITIONS USER_DEFINITIONS_DEBUG USER_DEFINITIONS_RELEASE
-    )
-    IF(DEFINED ${_feature}_${_var})
+  FOREACH(_var ${DEAL_II_LIST_SUFFIXES})
+    IF(NOT "${_var}" STREQUAL "LIBRARIES" AND DEFINED ${_feature}_${_var})
       LIST(APPEND DEAL_II_${_var} ${${_feature}_${_var}})
     ENDIF()
   ENDFOREACH()
 
-  FOREACH(_var
-    CXX_FLAGS CXX_FLAGS_DEBUG CXX_FLAGS_RELEASE
-    LINKER_FLAGS LINKER_FLAGS_DEBUG LINKER_FLAGS_RELEASE
-    )
+  FOREACH(_var ${DEAL_II_STRING_SUFFIXES})
     IF(DEFINED ${_feature}_${_var})
       ADD_FLAGS(DEAL_II_${_var} "${${_feature}_${_var}}")
     ENDIF()
index c739c0ece8657fb2e7fe4d51838bc58e01c11586..8efe5f5594a93c7686fd6da1b19f71383a1ec49b 100644 (file)
@@ -30,7 +30,7 @@
 SET(ARPACK_DIR "" CACHE PATH "An optional hint to an ARPACK installation")
 SET_IF_EMPTY(ARPACK_DIR "$ENV{ARPACK_DIR}")
 
-FIND_LIBRARY(ARPACK_LIBRARY
+DEAL_II_FIND_LIBRARY(ARPACK_LIBRARY
   NAMES arpack
   HINTS ${ARPACK_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
@@ -39,4 +39,5 @@ FIND_LIBRARY(ARPACK_LIBRARY
 DEAL_II_PACKAGE_HANDLE(ARPACK
   LIBRARIES REQUIRED ARPACK_LIBRARY LAPACK_LIBRARIES
   LINKER_FLAGS OPTIONAL LAPACK_LINKER_FLAGS
+  CLEAR ARPACK_LIBRARY
   )
diff --git a/deal.II/cmake/modules/FindBOOST.cmake b/deal.II/cmake/modules/FindBOOST.cmake
new file mode 100644 (file)
index 0000000..b14b063
--- /dev/null
@@ -0,0 +1,82 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Try to find the boost libraries
+#
+# This module exports:
+#
+#     BOOST_FOUND
+#     BOOST_LIBRARIES
+#     BOOST_INCLUDE_DIRS
+#     BOOST_VERSION
+#     BOOST_VERSION_MAJOR
+#     BOOST_VERSION_MINOR
+#     BOOST_VERSION_SUBMINOR
+#
+
+SET(BOOST_DIR "" CACHE PATH "An optional hint to a BOOST installation")
+SET_IF_EMPTY(BOOST_DIR "$ENV{BOOST_DIR}")
+
+IF(NOT "${BOOST_DIR}" STREQUAL "")
+  SET(BOOST_ROOT "${BOOST_DIR}")
+ENDIF()
+
+#
+# Prefer static libs if BUILD_SHARED_LIBS=OFF:
+#
+IF(NOT BUILD_SHARED_LIBS)
+  SET(Boost_USE_STATIC_LIBS TRUE)
+ENDIF()
+
+FIND_PACKAGE(Boost 1.44 COMPONENTS iostreams serialization system thread)
+
+#
+# Fall back to dynamic libraries if no static libraries could be found:
+#
+IF(NOT Boost_FOUND AND Boost_USE_STATIC_LIBS)
+  SET(Boost_USE_STATIC_LIBS FALSE)
+  FIND_PACKAGE(Boost 1.44 COMPONENTS iostreams serialization system thread)
+ENDIF()
+
+IF(Boost_FOUND)
+  #
+  # Remove "pthread" from Boost_LIBRARIES. Threading, if necessary, is
+  # already set up via configure_1_threads.cmake.
+  #
+  LIST(REMOVE_ITEM Boost_LIBRARIES "pthread")
+
+  SET(BOOST_VERSION_MAJOR "${Boost_MAJOR_VERSION}")
+  SET(BOOST_VERSION_MINOR "${Boost_MINOR_VERSION}")
+  SET(BOOST_VERSION_SUBMINOR "${Boost_SUBMINOR_VERSION}")
+  SET(BOOST_VERSION
+    "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}"
+    )
+ENDIF()
+
+DEAL_II_PACKAGE_HANDLE(BOOST
+  LIBRARIES REQUIRED Boost_LIBRARIES
+  INCLUDE_DIRS REQUIRED Boost_INCLUDE_DIRS
+  USER_INCLUDE_DIRS Boost_INCLUDE_DIRS
+  CLEAR
+    Boost_INCLUDE_DIR Boost_IOSTREAMS_LIBRARY_DEBUG
+    Boost_IOSTREAMS_LIBRARY_RELEASE Boost_LIBRARY_DIR
+    Boost_SERIALIZATION_LIBRARY_DEBUG Boost_SERIALIZATION_LIBRARY_RELEASE
+    Boost_SYSTEM_LIBRARY_DEBUG Boost_SYSTEM_LIBRARY_RELEASE
+    Boost_THREAD_LIBRARY_DEBUG Boost_THREAD_LIBRARY_RELEASE
+    _Boost_COMPONENTS_SEARCHED _Boost_INCLUDE_DIR_LAST
+    _Boost_LIBRARY_DIR_LAST _Boost_USE_MULTITHREADED_LAST
+  )
diff --git a/deal.II/cmake/modules/FindBZIP2.cmake b/deal.II/cmake/modules/FindBZIP2.cmake
new file mode 100644 (file)
index 0000000..e6f7cbd
--- /dev/null
@@ -0,0 +1,46 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Try to find the BZIP2 library
+#
+# This module exports
+#
+#   BZIP2_LIBRARIES
+#   BZIP2_INCLUDE_DIRS
+#   BZIP2_VERSION
+#
+
+#
+# Houston, we have a problem: CMake ships its own FindBZip2.cmake module.
+# Unfortunately we want to call DEAL_II_PACKAGE_HANDLE. Therefore, use the
+# original find module and do a dummy call to DEAL_II_PACKAGE_HANDLE:
+#
+
+LIST(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+FIND_PACKAGE(BZip2)
+LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+SET(BZIP2_VERSION ${BZIP2_VERSION_STRING})
+SET(_bzip2_libraries ${BZIP2_LIBRARIES})
+
+DEAL_II_PACKAGE_HANDLE(BZIP2
+  LIBRARIES REQUIRED _bzip2_libraries
+  INCLUDE_DIRS REQUIRED BZIP2_INCLUDE_DIR
+  CLEAR
+    BZIP2_INCLUDE_DIR BZIP2_LIBRARY_DEBUG BZIP2_LIBRARY_RELEASE
+    BZIP2_NEED_PREFIX
+  )
diff --git a/deal.II/cmake/modules/FindDEALII_LAPACK.cmake b/deal.II/cmake/modules/FindDEALII_LAPACK.cmake
deleted file mode 100644 (file)
index 1dc401e..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-## ---------------------------------------------------------------------
-## $Id$
-##
-## Copyright (C) 2013 - 2014 by the deal.II authors
-##
-## This file is part of the deal.II library.
-##
-## The deal.II library is free software; you can use it, redistribute
-## it, and/or modify it under the terms of the GNU Lesser General
-## Public License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-## The full text of the license can be found in the file LICENSE at
-## the top level of the deal.II distribution.
-##
-## ---------------------------------------------------------------------
-
-#
-# This module is a wrapper around the FindLAPACK.cmake module provided by
-# CMake.
-#
-# This module exports
-#
-#   LAPACK_FOUND
-#   LAPACK_LIBRARIES
-#   LAPACK_LINKER_FLAGS
-#   BLAS_FOUND
-#   BLAS_LIBRARIES
-#   BLAS_LINKER_FLAGS
-#
-
-
-
-#
-# We have to use a trick with CMAKE_PREFIX_PATH to make LAPACK_DIR and
-# BLAS_DIR work...
-#
-SET(LAPACK_DIR "" CACHE PATH "An optional hint to a LAPACK installation")
-SET(BLAS_DIR "" CACHE PATH "An optional hint to a BLAS installation")
-SET_IF_EMPTY(BLAS_DIR "$ENV{BLAS_DIR}")
-SET_IF_EMPTY(LAPACK_DIR "$ENV{LAPACK_DIR}")
-
-SET(_cmake_prefix_path_backup "${CMAKE_PREFIX_PATH}")
-SET(CMAKE_PREFIX_PATH ${BLAS_DIR} ${LAPACK_DIR} ${_cmake_prefix_path_backup})
-FIND_PACKAGE(BLAS)
-SET(CMAKE_PREFIX_PATH ${LAPACK_DIR} ${_cmake_prefix_path_backup})
-FIND_PACKAGE(LAPACK)
-SET(CMAKE_PREFIX_PATH ${_cmake_prefix_path_backup})
-
-MARK_AS_ADVANCED(
-  atlas_LIBRARY atlcblas_LIBRARY atllapack_LIBRARY blas_LIBRARY
-  eigen_blas_LIBRARY f77blas_LIBRARY gslcblas_LIBRARY lapack_LIBRARY
-  m_LIBRARY ptf77blas_LIBRARY ptlapack_LIBRARY refblas_LIBRARY
-  reflapack_LIBRARY
-  )
-
-
-IF(LAPACK_FOUND)
-  SET(DEALII_LAPACK_FOUND TRUE)
-
-  #
-  # So, well... LAPACK_LINKER_FLAGS and LAPACK_LIBRARIES should contain the
-  # complete link interface. But for invalid user overrides we include
-  # BLAS_LIBRARIES and BLAS_LINKER_FLAGS as well..
-  #
-  IF(NOT LAPACK_LINKER_FLAGS MATCHES "${BLAS_LINKER_FLAGS}")
-    MESSAGE(STATUS
-      "Manually adding BLAS_LINKER_FLAGS to LAPACK_LINKER_FLAGS"
-      )
-    ADD_FLAGS(LAPACK_LINKER_FLAGS "${BLAS_LINKER_FLAGS}")
-  ENDIF()
-  IF(NOT "${LAPACK_LIBRARIES}" MATCHES "${BLAS_LIBRARIES}")
-    MESSAGE(STATUS
-      "Manually adding BLAS_LIBRARIES to LAPACK_LIBRARIES"
-      )
-    LIST(APPEND LAPACK_LIBRARIES ${BLAS_LIBRARIES})
-  ENDIF()
-
-  #
-  # Well, in case of static archives we have to manually pick up the
-  # complete link interface. *sigh*
-  #
-  # If CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES is not available, do it
-  # unconditionally for the most common case (gfortran).
-  #
-  SET(_fortran_libs ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
-  SET_IF_EMPTY(_fortran_libs gfortran m quadmath c)
-
-  FOREACH(_lib ${_fortran_libs})
-    FIND_SYSTEM_LIBRARY(${_lib}_LIBRARY NAMES ${_lib})
-    MARK_AS_ADVANCED(${_lib}_LIBRARY)
-
-    IF(NOT ${_lib}_LIBRARY MATCHES "-NOTFOUND")
-      LIST(APPEND BLAS_LIBRARIES ${${_lib}_LIBRARY})
-      LIST(APPEND LAPACK_LIBRARIES ${${_lib}_LIBRARY})
-    ENDIF()
-
-  ENDFOREACH()
-
-  #
-  # Filter out spurious "FALSE" in the library lists:
-  #
-  IF(DEFINED BLAS_LIBRARIES)
-    LIST(REMOVE_ITEM BLAS_LIBRARIES "FALSE")
-  ENDIF()
-  LIST(REMOVE_ITEM LAPACK_LIBRARIES "FALSE")
-
-  MARK_AS_ADVANCED(BLAS_DIR LAPACK_DIR)
-
-ELSE()
-  SET(DEALII_LAPACK_FOUND FALSE)
-
-  #
-  # Clean up the library variables in case we couldn't find the libraries
-  # to avoid spurious inclusions of "-NOTFOUND" or "FALSE":
-  #
-  SET(BLAS_LIBRARIES)
-  SET(LAPACK_LIBRARIES)
-ENDIF()
index 258621b53e82af5a153175562d0c4e891a6f12ea..ae63b7145af184922381ff756bc62a53e84532f3 100644 (file)
 SET(HDF5_DIR "" CACHE PATH "An optional hint to an hdf5 directory")
 SET_IF_EMPTY(HDF5_DIR "$ENV{HDF5_DIR}")
 
-FIND_PATH(HDF5_INCLUDE_DIR hdf5.h
+DEAL_II_FIND_PATH(HDF5_INCLUDE_DIR hdf5.h
   HINTS ${HDF5_DIR}
   PATH_SUFFIXES hdf5 hdf5/include include/hdf5 include
   )
 
-FIND_LIBRARY(HDF5_LIBRARY NAMES hdf5
+DEAL_II_FIND_LIBRARY(HDF5_LIBRARY NAMES hdf5
   HINTS ${HDF5_DIR}
   PATH_SUFFIXES hdf5/lib lib${LIB_SUFFIX} lib64 lib
   )
 
-FIND_LIBRARY(HDF5_HL_LIBRARY NAMES hdf5_hl
+DEAL_II_FIND_LIBRARY(HDF5_HL_LIBRARY NAMES hdf5_hl
   HINTS ${HDF5_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
 
-FIND_FILE(HDF5_PUBCONF NAMES H5pubconf.h H5pubconf-64.h
+DEAL_II_FIND_FILE(HDF5_PUBCONF NAMES H5pubconf.h H5pubconf-64.h
   HINTS ${HDF5_INCLUDE_DIR} ${HDF5_DIR}
   PATH_SUFFIXES hdf5 hdf5/include include/hdf5 include
   )
-MARK_AS_ADVANCED(HDF5_PUBCONF)
 
 IF(EXISTS ${HDF5_PUBCONF})
   #
@@ -68,4 +67,7 @@ DEAL_II_PACKAGE_HANDLE(HDF5
     OPTIONAL MPI_C_LIBRARIES
   INCLUDE_DIRS
     REQUIRED HDF5_INCLUDE_DIR
+  USER_INCLUDE_DIRS
+    REQUIRED HDF5_INCLUDE_DIR
+  CLEAR HDF5_HL_LIBRARY HDF5_LIBRARY HDF5_INCLUDE_DIR HDF5_PUBCONF
   )
diff --git a/deal.II/cmake/modules/FindLAPACK.cmake b/deal.II/cmake/modules/FindLAPACK.cmake
new file mode 100644 (file)
index 0000000..20b996f
--- /dev/null
@@ -0,0 +1,90 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2013 - 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# This module is a wrapper around the FindLAPACK.cmake module provided by
+# CMake.
+#
+# This module exports
+#
+#   LAPACK_FOUND
+#   LAPACK_LIBRARIES
+#   LAPACK_LINKER_FLAGS
+#   BLAS_FOUND
+#   BLAS_LIBRARIES
+#   BLAS_LINKER_FLAGS
+#
+
+#
+# We have to use a trick with CMAKE_PREFIX_PATH to make LAPACK_DIR and
+# BLAS_DIR work...
+#
+SET(LAPACK_DIR "" CACHE PATH "An optional hint to a LAPACK installation")
+SET(BLAS_DIR "" CACHE PATH "An optional hint to a BLAS installation")
+SET_IF_EMPTY(BLAS_DIR "$ENV{BLAS_DIR}")
+SET_IF_EMPTY(LAPACK_DIR "$ENV{LAPACK_DIR}")
+
+SET(_cmake_prefix_path_backup "${CMAKE_PREFIX_PATH}")
+LIST(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+SET(CMAKE_PREFIX_PATH ${BLAS_DIR} ${LAPACK_DIR} ${_cmake_prefix_path_backup})
+FIND_PACKAGE(BLAS)
+
+SET(CMAKE_PREFIX_PATH ${LAPACK_DIR} ${_cmake_prefix_path_backup})
+FIND_PACKAGE(LAPACK)
+
+SET(CMAKE_PREFIX_PATH ${_cmake_prefix_path_backup})
+LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+#
+# Filter out spurious "FALSE" in the library lists:
+#
+IF(DEFINED BLAS_LIBRARIES)
+  LIST(REMOVE_ITEM BLAS_LIBRARIES "FALSE")
+ENDIF()
+IF(DEFINED LAPACK_LIBRARIES)
+  LIST(REMOVE_ITEM LAPACK_LIBRARIES "FALSE")
+ENDIF()
+
+#
+# Well, in case of static archives we have to manually pick up the
+# complete link interface. *sigh*
+#
+# If CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES is not available, do it
+# unconditionally for the most common case (gfortran).
+#
+SET(_fortran_libs ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
+SET_IF_EMPTY(_fortran_libs gfortran m quadmath c)
+FOREACH(_lib ${_fortran_libs})
+  FIND_SYSTEM_LIBRARY(${_lib}_LIBRARY NAMES ${_lib})
+  LIST(APPEND _additional_libraries ${_lib}_LIBRARY)
+ENDFOREACH()
+
+
+SET(_lapack_libraries ${LAPACK_LIBRARIES})
+SET(_lapack_linker_flags ${LAPACK_LINKER_FLAGS})
+DEAL_II_PACKAGE_HANDLE(LAPACK
+  LIBRARIES
+    REQUIRED _lapack_libraries
+    OPTIONAL BLAS_LIBRARIES ${_additional_libraries}
+  LINKER_FLAGS OPTIONAL _lapack_linker_flags BLAS_LINKER_FLAGS
+  CLEAR
+    atlas_LIBRARY atlcblas_LIBRARY atllapack_LIBRARY blas_LIBRARY
+    eigen_blas_LIBRARY f77blas_LIBRARY gslcblas_LIBRARY lapack_LIBRARY
+    m_LIBRARY ptf77blas_LIBRARY ptlapack_LIBRARY refblas_LIBRARY
+    reflapack_LIBRARY BLAS_LIBRARIES ${_additional_libraries}
+    LAPACK_SYMBOL_CHECK # Cleanup check in configure_1_lapack.cmake
+  )
index 01483cf68983b2a237e5305eb01f0c6faa74a982..a9ce962b2625e60923736e5772e7880552d1daad 100644 (file)
@@ -37,7 +37,7 @@ SET_IF_EMPTY(METIS_DIR "$ENV{METIS_DIR}")
 # Link in MPI unconditionally (if found).
 #
 
-FIND_LIBRARY(METIS_LIBRARY
+DEAL_II_FIND_LIBRARY(METIS_LIBRARY
   NAMES metis
   HINTS ${METIS_DIR}
   PATH_SUFFIXES
@@ -51,7 +51,7 @@ FIND_LIBRARY(METIS_LIBRARY
 # the metis library...
 #
 GET_FILENAME_COMPONENT(_path "${METIS_LIBRARY}" PATH)
-FIND_LIBRARY(PARMETIS_LIBRARY
+DEAL_II_FIND_LIBRARY(PARMETIS_LIBRARY
   NAMES parmetis
   HINTS ${_path}
   NO_DEFAULT_PATH
@@ -62,7 +62,7 @@ FIND_LIBRARY(PARMETIS_LIBRARY
   NO_CMAKE_FIND_ROOT_PATH
   )
 
-FIND_PATH(METIS_INCLUDE_DIR metis.h
+DEAL_II_FIND_PATH(METIS_INCLUDE_DIR metis.h
   HINTS ${METIS_DIR}
   PATH_SUFFIXES metis include/metis include
   )
@@ -92,6 +92,9 @@ IF(EXISTS ${METIS_INCLUDE_DIR}/metis.h)
   SET(METIS_VERSION
     "${METIS_VERSION_MAJOR}.${METIS_VERSION_MINOR}.${METIS_VERSION_SUBMINOR}"
     )
+  IF("${METIS_VERSION}" STREQUAL "..")
+    SET(METIS_VERSION)
+  ENDIF()
 ENDIF()
 
 DEAL_II_PACKAGE_HANDLE(METIS
@@ -101,4 +104,5 @@ DEAL_II_PACKAGE_HANDLE(METIS
     OPTIONAL MPI_C_LIBRARIES
   INCLUDE_DIRS
     REQUIRED METIS_INCLUDE_DIR
+  CLEAR METIS_LIBRARY PARMETIS_LIBRARY METIS_INCLUDE_DIR
   )
diff --git a/deal.II/cmake/modules/FindMPI.cmake b/deal.II/cmake/modules/FindMPI.cmake
new file mode 100644 (file)
index 0000000..111c75a
--- /dev/null
@@ -0,0 +1,163 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2012 - 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Find MPI
+#
+# This module exports:
+#   MPI_LIBRARIES
+#   MPI_INCLUDE_DIRS
+#   MPI_CXX_FLAGS
+#   MPI_LINKER_FLAGS
+#   MPI_VERSION
+#   OMPI_VERSION
+#
+
+#
+# Configuration for mpi support:
+#
+# We look for the C and Fortran libraries as well because they are needed
+# by some external libraries for the link interface.
+#
+
+IF(MPI_CXX_FOUND)
+  SET(MPI_FOUND TRUE)
+ENDIF()
+
+#
+# If CMAKE_CXX_COMPILER is already an MPI wrapper, use it to determine
+# the mpi implementation. If MPI_CXX_COMPILER is defined use the value
+# directly.
+#
+SET_IF_EMPTY(MPI_CXX_COMPILER ${CMAKE_CXX_COMPILER})
+IF(CMAKE_C_COMPILER_WORKS)
+  SET_IF_EMPTY(MPI_C_COMPILER ${CMAKE_C_COMPILER}) # for good measure
+ELSE()
+  MESSAGE(STATUS
+    "No suitable C compiler was found! MPI C interface can not be "
+    "autodetected"
+    )
+ENDIF()
+IF(CMAKE_Fortran_COMPILER_WORKS)
+  SET_IF_EMPTY(MPI_Fortran_COMPILER ${CMAKE_Fortran_COMPILER}) # for good measure
+ELSE()
+  MESSAGE(STATUS
+    "No suitable Fortran compiler was found! MPI Fortran interface can "
+    "not be autodetected"
+    )
+ENDIF()
+
+#
+# Call the system FindMPI.cmake module:
+#
+LIST(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+FIND_PACKAGE(MPI)
+
+IF(NOT MPI_CXX_FOUND AND DEAL_II_WITH_MPI)
+  #
+  # CMAKE_CXX_COMPILER is apparently not an mpi wrapper.
+  # So, let's be a bit more aggressive in finding MPI (and if
+  # DEAL_II_WITH_MPI is set).
+  #
+  MESSAGE(STATUS
+    "MPI not found but DEAL_II_WITH_MPI is set to TRUE."
+    " Try again with more aggressive search paths:"
+    )
+  # Clear variables so that FIND_PACKAGE runs again:
+  SET(MPI_FOUND)
+  UNSET(MPI_CXX_COMPILER CACHE)
+  UNSET(MPI_C_COMPILER CACHE)
+  UNSET(MPI_Fortran_COMPILER CACHE)
+  FIND_PACKAGE(MPI)
+ENDIF()
+LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+
+#
+# Manually assemble some version information:
+#
+
+DEAL_II_FIND_FILE(MPI_MPI_H
+  NAMES mpi.h
+  HINTS ${MPI_CXX_INCLUDE_PATH} ${MPI_C_INCLUDE_PATH}
+  )
+IF(NOT MPI_MPI_H MATCHES "-NOTFOUND" AND NOT DEFINED MPI_VERSION)
+  FILE(STRINGS "${MPI_MPI_H}" MPI_VERSION_MAJOR_STRING
+    REGEX "#define.*MPI_VERSION")
+  STRING(REGEX REPLACE "^.*MPI_VERSION.*([0-9]+).*" "\\1"
+    MPI_VERSION_MAJOR "${MPI_VERSION_MAJOR_STRING}"
+    )
+  FILE(STRINGS ${MPI_MPI_H} MPI_VERSION_MINOR_STRING
+    REGEX "#define.*MPI_SUBVERSION")
+  STRING(REGEX REPLACE "^.*MPI_SUBVERSION.*([0-9]+).*" "\\1"
+    MPI_VERSION_MINOR "${MPI_VERSION_MINOR_STRING}"
+    )
+  SET(MPI_VERSION "${MPI_VERSION_MAJOR}.${MPI_VERSION_MINOR}")
+  IF("${MPI_VERSION}" STREQUAL ".")
+    SET(MPI_VERSION)
+    SET(MPI_VERSION_MAJOR)
+    SET(MPI_VERSION_MINOR)
+  ENDIF()
+
+  # OMPI specific version number:
+  FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_MAJOR_STRING
+    REGEX "#define.*OMPI_MAJOR_VERSION")
+  STRING(REGEX REPLACE "^.*OMPI_MAJOR_VERSION.*([0-9]+).*" "\\1"
+    OMPI_VERSION_MAJOR "${OMPI_VERSION_MAJOR_STRING}"
+    )
+  FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_MINOR_STRING
+    REGEX "#define.*OMPI_MINOR_VERSION")
+  STRING(REGEX REPLACE "^.*OMPI_MINOR_VERSION.*([0-9]+).*" "\\1"
+    OMPI_VERSION_MINOR "${OMPI_VERSION_MINOR_STRING}"
+    )
+  FILE(STRINGS ${MPI_MPI_H} OMPI_VERSION_RELEASE_STRING
+    REGEX "#define.*OMPI_RELEASE_VERSION")
+  STRING(REGEX REPLACE "^.*OMPI_RELEASE_VERSION.*([0-9]+).*" "\\1"
+    OMPI_VERSION_SUBMINOR "${OMPI_VERSION_RELEASE_STRING}"
+    )
+  SET(OMPI_VERSION
+    "${OMPI_VERSION_MAJOR}.${OMPI_VERSION_MINOR}.${OMPI_VERSION_SUBMINOR}"
+    )
+  IF("${OMPI_VERSION}" STREQUAL "..")
+    SET(OMPI_VERSION)
+    SET(OMPI_VERSION_MAJOR)
+    SET(OMPI_VERSION_MINOR)
+    SET(OMPI_VERSION_SUBMINOR)
+  ENDIF()
+ENDIF()
+
+DEAL_II_PACKAGE_HANDLE(MPI
+  LIBRARIES
+    REQUIRED MPI_CXX_LIBRARIES
+    OPTIONAL MPI_Fortran_LIBRARIES MPI_C_LIBRARIES
+  INCLUDE_DIRS
+    REQUIRED MPI_CXX_INCLUDE_PATH
+    OPTIONAL MPI_C_INCLUDE_PATH
+  USER_INCLUDE_DIRS
+    REQUIRED MPI_CXX_INCLUDE_PATH
+    OPTIONAL MPI_C_INCLUDE_PATH
+  CXX_FLAGS OPTIONAL MPI_CXX_COMPILE_FLAGS
+  LINKER_FLAGS OPTIONAL MPI_CXX_LINK_FLAGS
+  CLEAR
+    MPI_MPI_H
+    MPI_HEADER_PATH
+    MPI_LIB
+    MPIEXEC
+    MPI_CXX_COMPILER
+    MPI_C_COMPILER
+    MPI_Fortran_COMPILER
+  )
+
index b6d56d2ca1f29fadfd123cd12f644463838197d3..e69bdac5a1297a85f7d7f1382901fd790950182d 100644 (file)
 #
 
 SET(MUMPS_DIR "" CACHE PATH "An optional hint to a mumps directory")
+SET(SCALAPACK_DIR "" CACHE PATH "An optional hint to a SCALAPACK directory")
+SET(BLACS_DIR "" CACHE PATH "An optional hint to a BLACS directory")
 SET_IF_EMPTY(MUMPS_DIR "$ENV{MUMPS_DIR}")
+SET_IF_EMPTY(SCALAPACK_DIR "$ENV{SCALAPACK_DIR}")
+SET_IF_EMPTY(BLACS_DIR "$ENV{BLACS_DIR}")
 
 #
-# Search for all known dependencies of MUMPS:
-# (We'll rely on the user of FindMUMPS, setting up mpi *cough*)
+# Search for scalapack:
 #
-FIND_PACKAGE(SCALAPACK) # which will also include lapack and blas
 
+DEAL_II_FIND_LIBRARY(SCALAPACK_LIBRARY NAMES scalapack
+  HINTS ${SCALAPACK_DIR}
+  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
+  )
+
+#
+# Well, depending on the version of scalapack and the distribution it might
+# be necessary to search for blacs, too. So we do this in a very
+# probabilistic way...
+#
+FOREACH(_lib blacs blacsCinit blacsF77init)
+  STRING(TOUPPER "${_lib}" _lib_upper)
+  DEAL_II_FIND_LIBRARY(${_lib_upper}_LIBRARY
+    NAMES ${_lib} ${_lib}_MPI-LINUX-0 ${_lib}_MPI-DARWIN-0
+    HINTS ${BLACS_DIR} ${SCALAPACK_DIR} ${SCALAPACK_DIR}/../blacs/
+    PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib LIB
+  )
+ENDFOREACH()
 
-FIND_PATH(MUMPS_INCLUDE_DIR dmumps_c.h
+#
+# Search for mumps:
+#
+
+DEAL_II_FIND_PATH(MUMPS_INCLUDE_DIR dmumps_c.h
   HINTS ${MUMPS_DIR}
   PATH_SUFFIXES mumps include/mumps include
   )
 
-FIND_LIBRARY(DMUMPS_LIBRARY
+DEAL_II_FIND_LIBRARY(DMUMPS_LIBRARY
   NAMES dmumps
   HINTS ${MUMPS_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
 
-FIND_LIBRARY(MUMPS_COMMON_LIBRARY
+DEAL_II_FIND_LIBRARY(MUMPS_COMMON_LIBRARY
   NAMES mumps_common
   HINTS ${MUMPS_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
@@ -58,16 +82,11 @@ FIND_LIBRARY(MUMPS_COMMON_LIBRARY
 #
 # If we can find libport.so (or similiar), link it in as well:
 #
-FIND_LIBRARY(PORD_LIBRARY
+DEAL_II_FIND_LIBRARY(PORD_LIBRARY
   NAMES pord
   HINTS ${MUMPS_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
-MARK_AS_ADVANCED(PORD_LIBRARY)
-IF(PORD_LIBRARY MATCHES "-NOTFOUND")
-  SET(PORD_LIBRARY "")
-  UNSET(PORD_LIBRARY CACHE)
-ENDIF()
 
 IF(EXISTS ${MUMPS_INCLUDE_DIR}/dmumps_c.h)
   FILE(STRINGS "${MUMPS_INCLUDE_DIR}/dmumps_c.h" MUMPS_VERSION_STRING
@@ -90,10 +109,16 @@ DEAL_II_PACKAGE_HANDLE(MUMPS
   LIBRARIES
     REQUIRED DMUMPS_LIBRARY MUMPS_COMMON_LIBRARY
     OPTIONAL PORD_LIBRARY
-    REQUIRED SCALAPACK_LIBRARIES
+    REQUIRED SCALAPACK_LIBRARY LAPACK_LIBRARIES
+    OPTIONAL BLACS_LIBRARY BLACSCINIT_LIBRARY BLACSF77INIT_LIBRARY MPI_Fortran_LIBRARIES
     OPTIONAL METIS_LIBRARIES MPI_Fortran_LIBRARIES
   INCLUDE_DIRS
     REQUIRED MUMPS_INCLUDE_DIR
+  USER_INCLUDE_DIRS
+    REQUIRED MUMPS_INCLUDE_DIR
   LINKER_FLAGS
-    OPTIONAL SCALAPACK_LINKER_FLAGS
+    OPTIONAL LAPACK_LINKER_FLAGS
+  CLEAR
+    DMUMPS_LIBRARY MUMPS_COMMON_LIBRARY PORD_LIBRARY SCALAPACK_LIBRARY
+    BLACS_LIBRARY BLACSCINIT_LIBRARY BLACSF77INIT_LIBRARY MUMPS_INCLUDE_DIR
   )
index d6e42eaf4d223fbfc8777e90d2d0968d22948436..914a1a1d76b675059d341a3a2bf600fc2e9b6b23 100644 (file)
 SET(MUPARSER_DIR "" CACHE PATH "An optional hint to a MUPARSER installation")
 SET_IF_EMPTY(MUPARSER_DIR "$ENV{MUPARSER_DIR}")
 
-FIND_LIBRARY(MUPARSER_LIBRARY
+DEAL_II_FIND_LIBRARY(MUPARSER_LIBRARY
   NAMES muparser muparserd
   HINTS ${MUPARSER_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
 
-FIND_PATH(MUPARSER_INCLUDE_DIR muParserDef.h
+DEAL_II_FIND_PATH(MUPARSER_INCLUDE_DIR muParserDef.h
   HINTS ${MUPARSER_DIR}
   PATH_SUFFIXES include
   )
@@ -62,4 +62,5 @@ ENDIF()
 DEAL_II_PACKAGE_HANDLE(MUPARSER
   LIBRARIES REQUIRED MUPARSER_LIBRARY
   INCLUDE_DIRS REQUIRED MUPARSER_INCLUDE_DIR
+  CLEAR MUPARSER_LIBRARY MUPARSER_INCLUDE_DIR
   )
index 9b99e8b1631e817eb06899c1b708d4593239d3dc..b124ce7e7439a90d45384c02443cb1d1dbcef6ab 100644 (file)
@@ -26,7 +26,7 @@
 SET(NETCDF_DIR "" CACHE PATH "An optional hint to a NETCDF installation")
 SET_IF_EMPTY(NETCDF_DIR "$ENV{NETCDF_DIR}")
 
-FIND_PATH(NETCDF_INCLUDE_DIR netcdfcpp.h
+DEAL_II_FIND_PATH(NETCDF_INCLUDE_DIR netcdfcpp.h
   HINTS ${NETCDF_DIR}
   PATH_SUFFIXES netcdf include
   )
@@ -38,12 +38,12 @@ FIND_PATH(NETCDF_INCLUDE_DIR netcdfcpp.h
 # - separate C++ and C library search
 #
 
-FIND_LIBRARY(NETCDF_CPLUSPLUS_LIBRARY NAMES netcdf_c++ netcdf_cpp
+DEAL_II_FIND_LIBRARY(NETCDF_CPLUSPLUS_LIBRARY NAMES netcdf_c++ netcdf_cpp
   HINTS ${NETCDF_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
 
-FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf
+DEAL_II_FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf
   HINTS ${NETCDF_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
   )
@@ -51,4 +51,5 @@ FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf
 DEAL_II_PACKAGE_HANDLE(NETCDF
   LIBRARIES REQUIRED NETCDF_CPLUSPLUS_LIBRARY NETCDF_C_LIBRARY
   INCLUDE_DIRS REQUIRED NETCDF_INCLUDE_DIR
+  CLEAR NETCDF_CPLUSPLUS_LIBRARY NETCDF_C_LIBRARY NETCDF_INCLUDE_DIR
   )
index 204fdd09359f4e2eae9974872c32f0af74ce6c0e..640fb91c04183c8710f2a57dc13c611b4af4c844 100644 (file)
@@ -28,8 +28,6 @@
 #   P4EST_VERSION_PATCH
 #
 
-INCLUDE(FindPackageHandleStandardArgs)
-
 SET(P4EST_DIR "" CACHE PATH
   "An optional hint to a p4est installation/directory"
   )
@@ -41,7 +39,7 @@ SET_IF_EMPTY(SC_DIR "$ENV{SC_DIR}")
 # given, take what we chose for p4est.
 #
 
-FIND_PATH(SC_INCLUDE_DIR sc.h
+DEAL_II_FIND_PATH(SC_INCLUDE_DIR sc.h
   HINTS
     ${SC_DIR}/FAST
     ${SC_DIR}/DEBUG
@@ -53,13 +51,13 @@ FIND_PATH(SC_INCLUDE_DIR sc.h
     sc include/p4est include src sc/src
   )
 
-FIND_LIBRARY(P4EST_LIBRARY_OPTIMIZED
+DEAL_II_FIND_LIBRARY(P4EST_LIBRARY_OPTIMIZED
   NAMES p4est
   HINTS ${P4EST_DIR}/FAST ${P4EST_DIR}/DEBUG ${P4EST_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib src
   )
 
-FIND_LIBRARY(SC_LIBRARY_OPTIMIZED
+DEAL_II_FIND_LIBRARY(SC_LIBRARY_OPTIMIZED
   NAMES sc
   HINTS
     ${SC_DIR}/FAST
@@ -76,18 +74,17 @@ FIND_LIBRARY(SC_LIBRARY_OPTIMIZED
 # Support debug variants as well:
 #
 
-FIND_LIBRARY(P4EST_LIBRARY_DEBUG
+DEAL_II_FIND_LIBRARY(P4EST_LIBRARY_DEBUG
   NAMES p4est
   HINTS ${P4EST_DIR}/DEBUG
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib src
   )
 
-FIND_LIBRARY(SC_LIBRARY_DEBUG
+DEAL_II_FIND_LIBRARY(SC_LIBRARY_DEBUG
   NAMES sc
   HINTS ${SC_DIR}/DEBUG ${P4EST_DIR}/DEBUG
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib src sc/src
   )
-MARK_AS_ADVANCED(P4EST_LIBRARY_DEBUG SC_LIBRARY_DEBUG)
 
 IF( ( "${P4EST_LIBRARY_OPTIMIZED}" STREQUAL "${P4EST_LIBRARY_DEBUG}"
       AND "${SC_LIBRARY_OPTIMIZED}" STREQUAL "${SC_LIBRARY_DEBUG}" )
@@ -103,7 +100,7 @@ ELSE()
 ENDIF()
 
 
-FIND_PATH(P4EST_INCLUDE_DIR p4est_config.h
+DEAL_II_FIND_PATH(P4EST_INCLUDE_DIR p4est_config.h
   HINTS ${P4EST_DIR}/FAST ${P4EST_DIR}/DEBUG ${P4EST_DIR}
   PATH_SUFFIXES p4est include/p4est include src
   )
@@ -156,4 +153,9 @@ DEAL_II_PACKAGE_HANDLE(P4EST
     OPTIONAL LAPACK_LIBRARIES MPI_C_LIBRARIES
   INCLUDE_DIRS
     REQUIRED P4EST_INCLUDE_DIR SC_INCLUDE_DIR
+  USER_INCLUDE_DIRS
+    REQUIRED P4EST_INCLUDE_DIR SC_INCLUDE_DIR
+  CLEAR
+    SC_INCLUDE_DIR P4EST_LIBRARY_OPTIMIZED SC_LIBRARY_OPTIMIZED
+    P4EST_LIBRARY_DEBUG SC_LIBRARY_DEBUG P4EST_INCLUDE_DIR
   )
index 9011d48c17b0d2c1104fbca6044572d581ab46f6..4cc4aef5198fbef9b608480816584c888c87bfe5 100644 (file)
@@ -37,7 +37,7 @@ SET(PETSC_ARCH "" CACHE STRING "An optional hint to a PETSc arch")
 SET_IF_EMPTY(PETSC_DIR "$ENV{PETSC_DIR}")
 SET_IF_EMPTY(PETSC_ARCH "$ENV{PETSC_ARCH}")
 
-FIND_LIBRARY(PETSC_LIBRARY
+DEAL_II_FIND_LIBRARY(PETSC_LIBRARY
   NAMES petsc
   HINTS ${PETSC_DIR} ${PETSC_DIR}/${PETSC_ARCH}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
@@ -47,7 +47,7 @@ FIND_LIBRARY(PETSC_LIBRARY
 # Search for the first part of the includes:
 #
 
-FIND_PATH(PETSC_INCLUDE_DIR_ARCH petscconf.h
+DEAL_II_FIND_PATH(PETSC_INCLUDE_DIR_ARCH petscconf.h
   HINTS ${PETSC_DIR} ${PETSC_DIR}/${PETSC_ARCH} ${PETSC_INCLUDE_DIRS}
   PATH_SUFFIXES petsc include include/petsc
 )
@@ -102,7 +102,7 @@ ENDIF()
 # Either way, we must be able to find petscversion.h:
 #
 
-FIND_PATH(PETSC_INCLUDE_DIR_COMMON petscversion.h
+DEAL_II_FIND_PATH(PETSC_INCLUDE_DIR_COMMON petscversion.h
   HINTS ${PETSC_DIR} ${PETSC_DIR}/${PETSC_ARCH} ${PETSC_INCLUDE_DIRS}
   PATH_SUFFIXES petsc include include/petsc
 )
@@ -140,7 +140,7 @@ ENDIF()
 # that file:
 #
 
-FIND_FILE(PETSC_PETSCVARIABLES
+DEAL_II_FIND_FILE(PETSC_PETSCVARIABLES
   NAMES petscvariables
   HINTS ${PETSC_DIR}/${PETSC_ARCH} ${PETSC_DIR}
   PATH_SUFFIXES conf
@@ -176,13 +176,9 @@ IF(NOT PETSC_PETSCVARIABLES MATCHES "-NOTFOUND")
     REGEX "^PETSC_WITH_EXTERNAL_LIB =.*")
   SEPARATE_ARGUMENTS(PETSC_EXTERNAL_LINK_LINE)
 
-  IF(NOT "${PETSC_EXTERNAL_LINK_LINE}" STREQUAL "${PETSC_EXTERNAL_LINK_LINE_SAVED}")
-    SET(_new_petsc_external_link_line TRUE)
-  ENDIF()
-  SET(PETSC_EXTERNAL_LINK_LINE_SAVED "${PETSC_EXTERNAL_LINK_LINE}" CACHE INTERNAL "" FORCE)
-
   SET(_hints)
   SET(_petsc_libraries)
+  SET(_cleanup_variables)
   FOREACH(_token ${PETSC_EXTERNAL_LINK_LINE}})
     IF(_token MATCHES "^-L")
       # Build up hints with the help of all tokens passed with -L:
@@ -192,9 +188,7 @@ IF(NOT PETSC_PETSCVARIABLES MATCHES "-NOTFOUND")
       # Search for every library that was specified with -l:
       STRING(REGEX REPLACE "^-l" "" _token "${_token}")
 
-      IF(_new_petsc_external_link_line)
-        UNSET(PETSC_LIBRARY_${_token} CACHE)
-      ENDIF()
+      LIST(APPEND _cleanup_variables PETSC_LIBRARY_${_token})
 
       IF(_token MATCHES "^(c|quadmath|gfortran|m|rt|nsl|dl|pthread)$")
         FIND_SYSTEM_LIBRARY(PETSC_LIBRARY_${_token} NAMES ${_token})
@@ -202,7 +196,7 @@ IF(NOT PETSC_PETSCVARIABLES MATCHES "-NOTFOUND")
           LIST(APPEND _petsc_libraries ${PETSC_LIBRARY_${_token}})
         ENDIF()
       ELSEIF(NOT _token MATCHES "(petsc|stdc\\+\\+|gcc_s)")
-        FIND_LIBRARY(PETSC_LIBRARY_${_token}
+        DEAL_II_FIND_LIBRARY(PETSC_LIBRARY_${_token}
           NAMES ${_token}
           HINTS ${_hints}
           )
@@ -222,8 +216,16 @@ DEAL_II_PACKAGE_HANDLE(PETSC
   INCLUDE_DIRS
     REQUIRED PETSC_INCLUDE_DIR_COMMON PETSC_INCLUDE_DIR_ARCH
     OPTIONAL _petsc_includes
+  USER_INCLUDE_DIRS
+    REQUIRED PETSC_INCLUDE_DIR_COMMON PETSC_INCLUDE_DIR_ARCH
+    OPTIONAL _petsc_includes
+  CLEAR
+    PETSC_LIBRARY PETSC_INCLUDE_DIR_COMMON PETSC_INCLUDE_DIR_ARCH
+    PETSC_PETSCVARIABLES ${_cleanup_variables}
   )
 
 IF(PETSC_FOUND)
   MARK_AS_ADVANCED(PETSC_ARCH)
+ELSE()
+  MARK_AS_ADVANCED(CLEAR PETSC_ARCH)
 ENDIF()
diff --git a/deal.II/cmake/modules/FindSCALAPACK.cmake b/deal.II/cmake/modules/FindSCALAPACK.cmake
deleted file mode 100644 (file)
index d8a2950..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-## ---------------------------------------------------------------------
-## $Id$
-##
-## Copyright (C) 2012 - 2014 by the deal.II authors
-##
-## This file is part of the deal.II library.
-##
-## The deal.II library is free software; you can use it, redistribute
-## it, and/or modify it under the terms of the GNU Lesser General
-## Public License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-## The full text of the license can be found in the file LICENSE at
-## the top level of the deal.II distribution.
-##
-## ---------------------------------------------------------------------
-
-#
-# Try to find the SCALAPACK library
-#
-# Used as a helper module for FindMUMPS.cmake
-#
-# This module exports
-#
-#   SCALAPACK_LIBRARIES
-#   SCALAPACK_LINKER_FLAGS
-#
-
-SET(SCALAPACK_DIR "" CACHE PATH "An optional hint to a SCALAPACK directory")
-SET(BLACS_DIR "" CACHE PATH "An optional hint to a BLACS directory")
-SET_IF_EMPTY(SCALAPACK_DIR "$ENV{SCALAPACK_DIR}")
-SET_IF_EMPTY(BLACS_DIR "$ENV{BLACS_DIR}")
-
-FIND_LIBRARY(SCALAPACK_LIBRARY NAMES scalapack
-  HINTS ${SCALAPACK_DIR}
-  PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
-  )
-
-#
-# Well, depending on the version of scalapack and the distribution it might
-# be necessary to search for blacs, too. So we do this in a very
-# probabilistic way...
-#
-FOREACH(_lib blacs blacsCinit blacsF77init)
-  STRING(TOUPPER "${_lib}" _lib_upper)
-  FIND_LIBRARY(${_lib_upper}_LIBRARY
-    NAMES ${_lib} ${_lib}_MPI-LINUX-0 ${_lib}_MPI-DARWIN-0
-    HINTS ${BLACS_DIR} ${SCALAPACK_DIR} ${SCALAPACK_DIR}/../blacs/
-    PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib LIB
-  )
-  MARK_AS_ADVANCED(${_lib_upper}_LIBRARY)
-ENDFOREACH()
-
-DEAL_II_PACKAGE_HANDLE(SCALAPACK
-  LIBRARIES
-    REQUIRED SCALAPACK_LIBRARY LAPACK_LIBRARIES
-    OPTIONAL BLACS_LIBRARY BLACSCINIT_LIBRARY BLACSF77INIT_LIBRARY MPI_Fortran_LIBRARIES
-  LINKER_FLAGS
-    OPTIONAL LAPACK_LINKER_FLAGS
-  )
-
-IF(SCALAPACK_FOUND)
-  MARK_AS_ADVANCED(BLACS_DIR)
-ENDIF()
index 28892f9b9abf9c118041ddebd72371a8d7ade25d..c60154c0a83055ea77d151378a2245281bb89482 100644 (file)
@@ -39,13 +39,13 @@ SET_IF_EMPTY(PETSC_ARCH "$ENV{PETSC_ARCH}")
 # mechanism.
 #
 
-FIND_LIBRARY(SLEPC_LIBRARY
+DEAL_II_FIND_LIBRARY(SLEPC_LIBRARY
   NAMES slepc
   HINTS ${SLEPC_DIR} ${SLEPC_DIR}/${PETSC_ARCH} ${PETSC_DIR}
   PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib
 )
 
-FIND_PATH(SLEPC_INCLUDE_DIR_ARCH slepcconf.h
+DEAL_II_FIND_PATH(SLEPC_INCLUDE_DIR_ARCH slepcconf.h
   HINTS
     ${SLEPC_DIR}
     ${SLEPC_DIR}/${PETSC_ARCH}
@@ -54,7 +54,7 @@ FIND_PATH(SLEPC_INCLUDE_DIR_ARCH slepcconf.h
   PATH_SUFFIXES slepc include include/slepc
 )
 
-FIND_PATH(SLEPC_INCLUDE_DIR_COMMON slepcversion.h
+DEAL_II_FIND_PATH(SLEPC_INCLUDE_DIR_COMMON slepcversion.h
   HINTS
     ${SLEPC_DIR}
     ${SLEPC_DIR}/${PETSC_ARCH}
@@ -95,4 +95,7 @@ DEAL_II_PACKAGE_HANDLE(SLEPC
     REQUIRED SLEPC_LIBRARY PETSC_LIBRARIES
   INCLUDE_DIRS
     REQUIRED SLEPC_INCLUDE_DIR_ARCH SLEPC_INCLUDE_DIR_COMMON
+  USER_INCLUDE_DIRS
+    REQUIRED SLEPC_INCLUDE_DIR_ARCH SLEPC_INCLUDE_DIR_COMMON
+  CLEAR SLEPC_LIBRARY SLEPC_INCLUDE_DIR_ARCH SLEPC_INCLUDE_DIR_COMMON
   )
index cf19170f4f21ae96f6a1737f68c40b7011b38606..fe2cc824def165e25c4b10a73240060e3ccf6fe6 100644 (file)
 #   TBB_VERSION_MINOR
 #
 
-INCLUDE(FindPackageHandleStandardArgs)
-
 SET(TBB_DIR "" CACHE PATH "An optional hint to a TBB installation")
 SET_IF_EMPTY(TBB_DIR "$ENV{TBB_DIR}")
 
 FILE(GLOB _path ${TBB_DIR}/build/*_release)
-FIND_LIBRARY(TBB_LIBRARY
+DEAL_II_FIND_LIBRARY(TBB_LIBRARY
   NAMES tbb
   HINTS
     ${_path}
@@ -45,7 +43,7 @@ FIND_LIBRARY(TBB_LIBRARY
 # Also search for the debug library:
 #
 FILE(GLOB _path ${TBB_DIR}/build/*_debug)
-FIND_LIBRARY(TBB_DEBUG_LIBRARY
+DEAL_II_FIND_LIBRARY(TBB_DEBUG_LIBRARY
   NAMES tbb_debug
   HINTS
     ${_path}
@@ -59,7 +57,7 @@ ELSE()
   SET(_libraries TBB_LIBRARY)
 ENDIF()
 
-FIND_PATH(TBB_INCLUDE_DIR tbb/tbb_stddef.h
+DEAL_II_FIND_PATH(TBB_INCLUDE_DIR tbb/tbb_stddef.h
   HINTS
     ${TBB_DIR}
   PATH_SUFFIXES include include/tbb tbb
@@ -84,4 +82,5 @@ ENDIF()
 DEAL_II_PACKAGE_HANDLE(TBB
   LIBRARIES REQUIRED ${_libraries}
   INCLUDE_DIRS REQUIRED TBB_INCLUDE_DIR
+  CLEAR TBB_DEBUG_LIBRARY TBB_LIBRARY TBB_INCLUDE_DIR
   )
index f1c493b05b46295db5bea959e8fcc8ae0aa5db4c..6fc8c408d4db01e6504bc4399b486a9e5357ef63 100644 (file)
@@ -31,8 +31,6 @@
 #   TRILINOS_HAS_C99_TR1_WORKAROUND
 #
 
-INCLUDE(FindPackageHandleStandardArgs)
-
 SET(TRILINOS_DIR "" CACHE PATH "An optional hint to a Trilinos installation")
 SET_IF_EMPTY(TRILINOS_DIR "$ENV{TRILINOS_DIR}")
 
@@ -52,10 +50,6 @@ FIND_PACKAGE(TRILINOS_CONFIG
   NO_SYSTEM_ENVIRONMENT_PATH
   )
 
-IF(NOT "${TRILINOS_CONFIG_DIR}" STREQUAL "${TRILINOS_CONFIG_DIR_SAVED}")
-  SET(_new_trilinos_config TRUE)
-ENDIF()
-SET(TRILINOS_CONFIG_DIR_SAVED "${TRILINOS_CONFIG_DIR}" CACHE INTERNAL "" FORCE)
 
 IF(DEFINED Trilinos_VERSION)
   #
@@ -79,17 +73,10 @@ ENDIF()
 #
 # Look for the one include file that we'll query for further information:
 #
-IF(_new_trilinos_config)
-  UNSET(EPETRA_CONFIG_H CACHE)
-ENDIF()
-FIND_FILE(EPETRA_CONFIG_H Epetra_config.h
+DEAL_II_FIND_FILE(EPETRA_CONFIG_H Epetra_config.h
   HINTS ${Trilinos_INCLUDE_DIRS}
-  NO_DEFAULT_PATH
-  NO_CMAKE_ENVIRONMENT_PATH
-  NO_CMAKE_PATH
-  NO_SYSTEM_ENVIRONMENT_PATH
-  NO_CMAKE_SYSTEM_PATH
-  NO_CMAKE_FIND_ROOT_PATH
+  NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH
+  NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH
   )
 
 IF(EXISTS ${EPETRA_CONFIG_H})
@@ -119,6 +106,44 @@ IF(EXISTS ${EPETRA_CONFIG_H})
   ENDIF()
 ENDIF()
 
+#
+# Some versions of Sacado_cmath.hpp do things that aren't compatible
+# with the -std=c++0x flag of GCC, see deal.II FAQ.
+# Test whether that is indeed the case:
+#
+
+DEAL_II_FIND_FILE(SACADO_CMATH_HPP Sacado_cmath.hpp
+  HINTS ${Trilinos_INCLUDE_DIRS}
+  NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH
+  NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH
+  )
+
+IF(EXISTS ${SACADO_CMATH_HPP})
+  LIST(APPEND CMAKE_REQUIRED_INCLUDES ${Trilinos_INCLUDE_DIRS})
+  PUSH_CMAKE_REQUIRED("${DEAL_II_CXX11_FLAG}")
+
+  CHECK_CXX_SOURCE_COMPILES(
+    "
+    #include <Sacado_cmath.hpp>
+    int main(){ return 0; }
+    "
+    TRILINOS_SUPPORTS_CPP11
+    )
+
+  #
+  # Try whether exporting HAS_C99_TR1_CMATH helps:
+  #
+  PUSH_CMAKE_REQUIRED("-DHAS_C99_TR1_CMATH")
+  CHECK_CXX_SOURCE_COMPILES(
+    "
+    #include <Sacado_cmath.hpp>
+    int main(){ return 0; }
+    "
+    TRILINOS_HAS_C99_TR1_WORKAROUND
+    )
+  RESET_CMAKE_REQUIRED()
+ENDIF()
+
 #
 # *Boy* Sanitize the include paths given by TrilinosConfig.cmake...
 #
@@ -134,11 +159,8 @@ STRING(REGEX REPLACE
 #
 SET(_libraries "")
 FOREACH(_library ${Trilinos_LIBRARIES})
-  IF(_new_trilinos_config)
-    UNSET(TRILINOS_LIBRARY_${_library} CACHE)
-  ENDIF()
-
-  FIND_LIBRARY(TRILINOS_LIBRARY_${_library}
+  LIST(APPEND _libraries TRILINOS_LIBRARY_${_library})
+  DEAL_II_FIND_LIBRARY(TRILINOS_LIBRARY_${_library}
     NAMES ${_library}
     HINTS ${Trilinos_LIBRARY_DIRS}
     NO_DEFAULT_PATH
@@ -148,54 +170,18 @@ FOREACH(_library ${Trilinos_LIBRARIES})
     NO_CMAKE_SYSTEM_PATH
     NO_CMAKE_FIND_ROOT_PATH
     )
-
-  LIST(APPEND _libraries TRILINOS_LIBRARY_${_library})
 ENDFOREACH()
 
+
 DEAL_II_PACKAGE_HANDLE(TRILINOS
   LIBRARIES
     REQUIRED ${_libraries} Trilinos_TPL_LIBRARIES
     OPTIONAL MPI_CXX_LIBRARIES
   INCLUDE_DIRS
     REQUIRED Trilinos_INCLUDE_DIRS
+  USER_INCLUDE_DIRS
+    REQUIRED Trilinos_INCLUDE_DIRS
+  CLEAR
+    TRILINOS_CONFIG_DIR EPETRA_CONFIG_H SACADO_CMATH_HPP ${_libraries}
+    TRILINOS_SUPPORTS_CPP11 TRILINOS_HAS_C99_TR1_WORKAROUND
   )
-
-IF(TRILINOS_FOUND)
-  #
-  # Some versions of Sacado_cmath.hpp do things that aren't compatible
-  # with the -std=c++0x flag of GCC, see deal.II FAQ.
-  # Test whether that is indeed the case:
-  #
-  IF(_new_trilinos_config)
-    UNSET(TRILINOS_SUPPORTS_CPP11 CACHE)
-    UNSET(TRILINOS_HAS_C99_TR1_WORKAROUND CACHE)
-  ENDIF()
-
-  LIST(APPEND CMAKE_REQUIRED_INCLUDES ${TRILINOS_INCLUDE_DIRS})
-  PUSH_CMAKE_REQUIRED("${DEAL_II_CXX11_FLAG}")
-
-  CHECK_CXX_SOURCE_COMPILES(
-    "
-    #include <Sacado_cmath.hpp>
-    int main(){ return 0; }
-    "
-    TRILINOS_SUPPORTS_CPP11
-    )
-
-  #
-  # Try whether exporting HAS_C99_TR1_CMATH helps:
-  #
-  PUSH_CMAKE_REQUIRED("-DHAS_C99_TR1_CMATH")
-  CHECK_CXX_SOURCE_COMPILES(
-    "
-    #include <Sacado_cmath.hpp>
-    int main(){ return 0; }
-    "
-    TRILINOS_HAS_C99_TR1_WORKAROUND
-    )
-  RESET_CMAKE_REQUIRED()
-
-ELSE()
-
-  UNSET(TRILINOS_CONFIG_DIR_SAVED CACHE)
-ENDIF()
index 0ab55c36b76950e75c02cb4053f3e37fccb81f0c..675f95475df0f1e80a4f1f59db5cacbd6ad09557 100644 (file)
@@ -28,8 +28,6 @@
 #   UMFPACK_VERSION_SUBMINOR
 #
 
-INCLUDE(FindPackageHandleStandardArgs)
-
 SET(UMFPACK_DIR "" CACHE PATH "An optional hint to an UMFPACK directory")
 SET(SUITESPARSE_DIR "" CACHE PATH
   "An optional hint to a SUITESPARSE directory"
@@ -45,7 +43,7 @@ ENDFOREACH()
 MACRO(FIND_UMFPACK_PATH _comp _file)
   STRING(TOLOWER ${_comp} _comp_lowercase)
   STRING(TOUPPER ${_comp} _comp_uppercase)
-  FIND_PATH(${_comp}_INCLUDE_DIR ${_file}
+  DEAL_II_FIND_PATH(${_comp}_INCLUDE_DIR ${_file}
     HINTS
       ${${_comp_uppercase}_DIR}
       ${SUITESPARSE_DIR}/${_comp}
@@ -59,7 +57,7 @@ ENDMACRO()
 
 MACRO(FIND_UMFPACK_LIBRARY _comp _name)
   STRING(TOUPPER ${_comp} _comp_uppercase)
-  FIND_LIBRARY(${_comp}_LIBRARY
+  DEAL_II_FIND_LIBRARY(${_comp}_LIBRARY
     NAMES ${_name}
     HINTS
       ${${_comp_uppercase}_DIR}
@@ -146,6 +144,7 @@ ENDIF()
 # by ldd :-( ):
 #
 FIND_SYSTEM_LIBRARY(rt_LIBRARY NAMES rt)
+MARK_AS_ADVANCED(rt_LIBRARY)
 
 DEAL_II_PACKAGE_HANDLE(UMFPACK
   LIBRARIES
@@ -158,9 +157,14 @@ DEAL_II_PACKAGE_HANDLE(UMFPACK
     OPTIONAL SuiteSparse_config_INCLUDE_DIR
   LINKER_FLAGS
     OPTIONAL LAPACK_LINKER_FLAGS
+  CLEAR
+    UMFPACK_LIBRARY CHOLMOD_LIBRARY CCOLAMD_LIBRARY COLAMD_LIBRARY
+    CAMD_LIBRARY SuiteSparse_config_LIBRARY AMD_LIBRARY UMFPACK_INCLUDE_DIR
+    AMD_INCLUDE_DIR SuiteSparse_config_INCLUDE_DIR
   )
 
 IF(UMFPACK_FOUND)
   MARK_AS_ADVANCED(SUITESPARSE_DIR)
+ELSE()
+  MARK_AS_ADVANCED(CLEAR SUITESPARSE_DIR)
 ENDIF()
-MARK_AS_ADVANCED(SuiteSparse_config_LIBRARY rt_LIBRARY)
diff --git a/deal.II/cmake/modules/FindZLIB.cmake b/deal.II/cmake/modules/FindZLIB.cmake
new file mode 100644 (file)
index 0000000..a3ecfe3
--- /dev/null
@@ -0,0 +1,49 @@
+## ---------------------------------------------------------------------
+## $Id$
+##
+## Copyright (C) 2014 by the deal.II authors
+##
+## This file is part of the deal.II library.
+##
+## The deal.II library is free software; you can use it, redistribute
+## it, and/or modify it under the terms of the GNU Lesser General
+## Public License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+## The full text of the license can be found in the file LICENSE at
+## the top level of the deal.II distribution.
+##
+## ---------------------------------------------------------------------
+
+#
+# Try to find the ZLIB library
+#
+# This module exports
+#
+#   ZLIB_LIBRARIES
+#   ZLIB_INCLUDE_DIRS
+#   ZLIB_VERSION
+#
+
+SET(ZLIB_DIR "" CACHE PATH "An optional hint to a ZLIB installation")
+SET_IF_EMPTY(ZLIB_DIR "$ENV{ZLIB_DIR}")
+
+#
+# Houston, we have a problem: CMake ships its own FindZLIB.cmake module.
+# Unfortunately we want to call DEAL_II_PACKAGE_HANDLE. Therefore, use the
+# original find module and do a dummy call to DEAL_II_PACKAGE_HANDLE:
+#
+
+IF(NOT "${ZLIB_DIR}" STREQUAL "")
+  SET(ZLIB_ROOT ${ZLIB_DIR})
+ENDIF()
+LIST(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+FIND_PACKAGE(ZLIB)
+LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules/)
+
+SET(ZLIB_VERSION ${ZLIB_VERSION_STRING})
+
+DEAL_II_PACKAGE_HANDLE(ZLIB
+  LIBRARIES REQUIRED ZLIB_LIBRARY
+  INCLUDE_DIRS REQUIRED ZLIB_INCLUDE_DIR
+  CLEAR ZLIB_INCLUDE_DIR ZLIB_LIBRARY
+  )
index 777c066931d4dcddd88cbcc5a6eac4a14e7b3236..6ef18d05cbd405e45678b766f159974add0314d0 100644 (file)
@@ -52,6 +52,8 @@
 #     DEAL_II_PROJECT_CONFIG_RELDIR   *)
 #
 #     DEAL_II_BUILD_TYPES
+#     DEAL_II_LIST_SUFFIXES
+#     DEAL_II_STRING_SUFFIXES
 #
 # *)  Can be overwritten by the command line via -D<...>
 #
@@ -134,6 +136,18 @@ IF(CMAKE_BUILD_TYPE MATCHES "Release")
   LIST(APPEND DEAL_II_BUILD_TYPES "RELEASE")
 ENDIF()
 
+SET(DEAL_II_LIST_SUFFIXES
+  DEFINITIONS DEFINITIONS_RELEASE DEFINITIONS_DEBUG
+  USER_DEFINITIONS USER_DEFINITIONS_RELEASE USER_DEFINITIONS_DEBUG
+  INCLUDE_DIRS USER_INCLUDE_DIRS BUNDLED_INCLUDE_DIRS
+  LIBRARIES LIBRARIES_RELEASE LIBRARIES_DEBUG
+  )
+
+SET(DEAL_II_STRING_SUFFIXES
+  CXX_FLAGS CXX_FLAGS_RELEASE CXX_FLAGS_DEBUG
+  LINKER_FLAGS LINKER_FLAGS_RELEASE LINKER_FLAGS_DEBUG
+  )
+
 
 ########################################################################
 #                                                                      #
index 4d228ea4ae8670eacd4be89124464af633b41aa1..a568672b895175c406c08dfb48b9bf7da6a862e1 100644 (file)
@@ -55,14 +55,7 @@ ENDFOREACH()
 # Save base configuration into variables BASE_* for later use in
 # setup_write_config.cmake:
 #
-FOREACH(_suffix
-  CXX_FLAGS CXX_FLAGS_RELEASE CXX_FLAGS_DEBUG
-  DEFINITIONS DEFINITIONS_RELEASE DEFINITIONS_DEBUG
-  USER_DEFINITIONS USER_DEFINITIONS_RELEASE USER_DEFINITIONS_DEBUG
-  LINKER_FLAGS LINKER_FLAGS_RELEASE LINKER_FLAGS_DEBUG
-  INCLUDE_DIRS USER_INCLUDE_DIRS BUNDLED_INCLUDE_DIRS
-  LIBRARIES LIBRARIES_RELEASE LIBRARIES_DEBUG
-  )
+FOREACH(_suffix ${DEAL_II_STRING_SUFFIXES} ${DEAL_II_LIST_SUFFIXES})
   SET(BASE_${_suffix} ${DEAL_II_${_suffix}})
 ENDFOREACH()
 
@@ -70,22 +63,19 @@ ENDFOREACH()
 # Register features:
 #
 FOREACH(_feature ${DEAL_II_FEATURES})
-  FILTER_SYSTEM_LIBRARIES(${_feature})
+  FILTER_SYSTEM_LIBRARIES(${_feature}) # TODO, remove here
   REGISTER_FEATURE(${_feature})
 ENDFOREACH()
 
 #
 # Deduplicate entries one more time :-]
 #
-FOREACH(_suffix INCLUDE_DIRS USER_INCLUDE_DIRS BUNDLED_INCLUDE_DIRS)
-  REMOVE_DUPLICATES(DEAL_II_${_suffix})
-ENDFOREACH()
-FOREACH(_suffix
-  LIBRARIES LIBRARIES_RELEASE LIBRARIES_DEBUG
-  USER_DEFINITIONS USER_DEFINITIONS_DEBUG USER_DEFINITIONS_RELEASE
-  DEFINITIONS DEFINITIONS_DEBUG DEFINITIONS_RELEASE
-  )
-  REMOVE_DUPLICATES(DEAL_II_${_suffix} REVERSE)
+FOREACH(_suffix ${DEAL_II_LIST_SUFFIXES})
+  IF(_suffix MATCHES "INCLUDE_DIRS$")
+    REMOVE_DUPLICATES(DEAL_II_${_suffix})
+  ELSE()
+    REMOVE_DUPLICATES(DEAL_II_${_suffix} REVERSE)
+  ENDIF()
 ENDFOREACH()
 
 #
index 1afca5ff200c8780d04d343661f0e20799d92e4b..38c03515351d6108b5e7dff92c35eb0a87b2df1c 100644 (file)
@@ -138,11 +138,6 @@ ENDIF()
 _both("DEAL_II_ALLOW_AUTODETECTION = ${DEAL_II_ALLOW_AUTODETECTION}):\n")
 
 
-#
-# Cache for quicker access to avoid the O(n^2) complexity of a loop over
-# _all_ defined variables.
-#
-
 GET_CMAKE_PROPERTY(_variables VARIABLES)
 FOREACH(_var ${_variables})
   IF(_var MATCHES "DEAL_II_WITH")
@@ -199,13 +194,8 @@ FOREACH(_var ${_features})
     # Print the feature configuration:
     #
     FOREACH(_var2
-        C_COMPILER CXX_COMPILER Fortran_COMPILER
-        CXX_FLAGS CXX_FLAGS_RELEASE CXX_FLAGS_DEBUG
-        DEFINITIONS DEFINITIONS_RELEASE DEFINITIONS_DEBUG
-        USER_DEFINITIONS USER_DEFINITIONS_RELEASE USER_DEFINITIONS_DEBUG
-        LINKER_FLAGS LINKER_FLAGS_RELEASE LINKER_FLAGS_DEBUG
-        INCLUDE_DIRS USER_INCLUDE_DIRS BUNDLED_INCLUDE_DIRS
-        LIBRARIES LIBRARIES_RELEASE LIBRARIES_DEBUG
+      C_COMPILER CXX_COMPILER Fortran_COMPILER
+      ${DEAL_II_STRING_SUFFIXES} ${DEAL_II_LIST_SUFFIXES}
       )
       IF(DEFINED ${_feature}_${_var2})
         _detailed("#            ${_feature}_${_var2} = ${${_feature}_${_var2}}\n")
@@ -244,50 +234,3 @@ ENDIF()
 _summary("  to print a help message with a list of top level targets\n")
 
 _both("#\n###")
-
-
-########################################################################
-#                                                                      #
-#                    Dump the cache into config.cmake:                 #
-#                                                                      #
-########################################################################
-
-SET(_config_cmake "${CMAKE_BINARY_DIR}/config.cmake")
-FILE(WRITE ${_config_cmake}
-"#
-# This is a raw CMake cache dump of this build directory suitable as an
-# initial cache file: Use this file to preseed a CMake cache in an empty
-# build directory by (note that it is still necessary to declare a source
-# directory):
-#   $ cmake -C [...]/config.cmake ../deal.II
-#
-# If you want to have a clean configuration file have a look at
-# doc/users/config.sample
-#\n"
-  )
-
-FUNCTION(_config _var)
-  # It is absolutely beyond my comprehension why on earth there is
-  # hardcoded logic built into CMake to throw an error if one uses
-  # uppercase variants of FindPACKAGE call variables...
-  IF(NOT _var MATCHES "BOOST_DIR")
-    UNSET(${_var})
-  ENDIF()
-  #
-  # We have to get down to the raw entry in the cache, therefore clear the
-  # current value (and do it in a function to get private scope):
-  #
-  FILE(APPEND ${_config_cmake}
-    "SET(${_var} \"${${_var}}\" CACHE STRING \"\")\n"
-    )
-ENDFUNCTION()
-
-GET_CMAKE_PROPERTY(_variables CACHE_VARIABLES)
-FOREACH(_var
-    CMAKE_C_COMPILER
-    CMAKE_CXX_COMPILER
-    CMAKE_Fortran_COMPILER
-    ${_variables}
-    )
-  _config(${_var})
-ENDFOREACH()
index 48146dc0c2f60dda763d62427389d3f8f7570ca3..dad7505cfb3a4f6e6e08c098ee77d32b44513af7 100644 (file)
@@ -331,60 +331,72 @@ RESET_CMAKE_REQUIRED()
       library (no deal.II specific dependency checking, no
       compatibility checking).
     <li>
-      It should do so by appropriate <code>FIND_LIBRARY</code> and
-      <code>FIND_PATH</code> calls. The results of this calls should be the
-      only cached variables.
-    <li>
-      <code>FIND_PACKAGE_HANDLE_STANDARD_ARGS</code> should be used for
-      setting <code>FEATURE_FOUND</code> as this already respects the
-      <code>QUIET</code> and <code>REQUIRED</code> keywords.
+      It should do so by appropriate <code>DEAL_II_FIND_LIBRARY</code>,
+      <code>DEAL_II_FIND_PATH</code> and <code>DEAL_II_FIND_FILE</code>
+      calls (same syntax as the native CMake functions; just a small
+      wrapper to provide some useful output). The results of this calls
+      should be the only cached variables.
     <li>
       A <code>WARNING</code>, <code>SEND_ERROR</code> or
       <code>FATAL_ERROR</code> must be avoided (the only exception is
       the <code>REQUIRED</code> keyword).
     <li>
-      If the feature is successfully found, a subset of the following
-      <b>uncached</b> variables might be set:
-<pre>
+      The following uncached variables are recognized by the feature
+      configuration mechanism:
+<pre class="cmake">
 FEATURE_FOUND
 FEATURE_LIBRARIES (with optimized, debug, release keywords)
 FEATURE_LIBRARIES(_DEBUG|_RELEASE)
-FEATURE_INCLUDE_DIRS
+FEATURE_INCLUDE_DIRS FEATURE_USER_INCLUDE_DIRS
 FEATURE_LINKER_FLAGS(|_DEBUG|_RELEASE)
 FEATURE_CXX_FLAGS(|_DEBUG|_RELEASE)
 FEATURE_DEFINITIONS(|_DEBUG|_RELEASE)
-
 FEATURE_VERSION
 FEATURE_VERSION(_MAJOR|_MINOR|_SUBMINOR)
 </pre>
-
-There are obviously valid exceptions from this rule, though.
+      The <code>DEAL_II_PACKAGE_HANDLE</code> macro should be exclusively
+      used for setting up these variables (except the version variants). An
+      example invocation is
+<pre class="cmake">
+DEAL_II_PACKAGE_HANDLE(UMFPACK
+  LIBRARIES
+    REQUIRED UMFPACK_LIBRARY
+    OPTIONAL CHOLMOD_LIBRARY CCOLAMD_LIBRARY COLAMD_LIBRARY CAMD_LIBRARY ${_suitesparse_config}
+    REQUIRED AMD_LIBRARY
+    OPTIONAL METIS_LIBRARIES LAPACK_LIBRARIES rt_LIBRARY
+  INCLUDE_DIRS
+    REQUIRED UMFPACK_INCLUDE_DIR AMD_INCLUDE_DIR
+    OPTIONAL SuiteSparse_config_INCLUDE_DIR
+  LINKER_FLAGS
+    OPTIONAL LAPACK_LINKER_FLAGS
+  CLEAR
+    UMFPACK_LIBRARY CHOLMOD_LIBRARY CCOLAMD_LIBRARY COLAMD_LIBRARY
+    CAMD_LIBRARY SuiteSparse_config_LIBRARY AMD_LIBRARY UMFPACK_INCLUDE_DIR
+    AMD_INCLUDE_DIR SuiteSparse_config_INCLUDE_DIR
+  )
+</pre>
+      The macro concatenates all specified variables into the final
+      <code>FEATURE_SUFFIX</code> variable. Hereby, a feature is
+      successfully found if all <code>REQUIRED</code> variables are
+      non-empty an not set to <code>"-NOTFOUND"</code>.
+      <code>OPTIONAL</code> variables are just filtered out in this case.
+      As a last set of parameters the full list of cached search result
+      variables must be specified after the <code>CLEAR</code> keyword -
+      this is used to provide a possibility to undo a feature search.
     <li>
       Only "local" variables "<code>_&lt;all lowercase&gt;</code>" or
       "global" variables prefixed by <code>FEATURE_</code> may be
       altered. Do not set <code>DEAL_II_*</code> or <code>CMAKE_*</code>
       variables directly!
-
-    <li>
-      The find module must define a macro <code>FEATURE_CLEAR</code> that
-      unsets all cached variables, so that a subsequent call to the find
-      module starts a completely fresh features search.
     <li>
       A hint with <code>FEATURE_DIR</code> can be set up for
       convenience. It is best to start the <code>Find</code> module by
-
 <pre class="cmake">
+SET(FEATURE_DIR "" CACHE PATH "short description")
 SET_IF_EMPTY(FEATURE_DIR "$ENV{FEATURE_DIR}")
 </pre>
-
-and use <code>FEATURE_DIR</code> as a hint. If the external
-library could be found, hide it via
-<code>MARK_AS_ADVANCED</code>, if the external library could not
-be found, set a cache value:
-<pre class="cmake">
-SET(FEATURE_DIR "" CACHE PATH "An optional hint to a FEATURE directory")
-</pre>
-  </ul>
+      and use <code>FEATURE_DIR</code> as a hint.
+</ul>
 
 
 <a name="configure"></a>
@@ -435,9 +447,14 @@ FEATURE_DEFINITIONS(|_DEBUG|_RELEASE)
 <pre>
 FEATURE_&lt;FEATURE&gt;_DEPENDS              (a variable)
   - a variable which contains an optional list of other features
-    this feature depends on (and which have to be enabled for this feature
-    to work.) The features must be given with the full option toggle:
-    DEAL_II_WITH_[...]
+    this feature depends on (and which have to be enbled for this feature
+    to work.)
+    Features must be given with short name, i.e. without DEAL_II_WITH_
+
+FEATURE_&lt;FEATURE&gt;_AFTER                (a variable)
+  - a variable which contains an optional list of other features
+    that have to be configured prior to this feature
+    Features must be given with short name, i.e. without DEAL_II_WITH_
 
 FEATURE_&lt;FEATURE&gt;_FIND_EXTERNAL(var)   (a macro)
   - which should set var to TRUE if all dependencies for the feature are
@@ -578,7 +595,8 @@ DEAL_II_FORCE_BUNDLED_&lt;FEATURE&gt;        (an option)
       </ul>
 
     <li>
-      For internal use, for setting necessary linker flags for the deal.II library:
+      For internal and external use, for setting necessary linker flags for
+      the deal.II library and user programs:
       <ul>
         <li> <code>DEAL_II_LINKER_FLAGS</code>
         <li> <code>DEAL_II_LINKER_FLAGS_DEBUG</code>
index c442348d1bbe73d8e99fe497f33e687212a1d7b3..180f5f88d7b78672686777c3a9dbca06da84507b 100644 (file)
@@ -148,6 +148,70 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
+<li> New: AnyData::try_read() is a function that allows users to check
+whether an entry exists and get a pointer to it without throwing an
+exception in case of failure.
+<br>
+(Guido Kanschat, 2014/05/16)
+</li>
+
+<li> New: The GMRES solver of deal.II can now write an estimate of
+  eigenvalues to the log file, in analogy to the CG solver. This is enabled
+  by the flag SolverGMRES<>::AdditionalData::compute_eigenvalues.
+  <br>
+  (Martin Kronbichler, 2014/05/11)
+  </li>  
+
+  <li> New: The GridIn::read_vtk() function places fewer restrictions
+  on the VTK files it wants to read and should, consequently, be able
+  to read more correctly formatted VTK files than before.
+  <br>
+  (Giorgos Kourakos, 2014/05/08)
+  </li>  
+
+  <li> New: There is now a QSorted quadrature which takes an 
+  arbitrary quadrature at construction time and reorders the quadrature
+  points according to the weigths, from smaller to bigger. This should
+  improve stability of higher order polynomial integration.
+  <br>
+  (Luca Heltai, 2014/05/07)
+  </li>  
+
+  <li> New: The class VectorizedArray<Number> now provides methods
+  VectorizedArray::load(ptr) to read from arbitrary pointer addresses and
+  VectorizedArray::store(ptr) to write to arbitrary pointer addresses,
+  as opposed to the data layout of VectorizedArray that requires pointers
+  to be aligned by the size of the array in bytes. This also circumvents
+  a (rare) compiler optimization bug with gcc-4.6 on SSE code in combination
+  with function calls, e.g. to std::sin.
+  <br>
+  (Martin Kronbichler, 2014/05/05)
+  </li>
+
+  <li> Changed: Namespace SparsityTools had a local typedef <code>size_type</code>
+  that was set equal to types::global_dof_index. This typedef has been removed
+  and we now use SparsityPattern::size_type wherever applicable as this is the
+  type we really want to use. (The code worked previously because
+  types::global_dof_index and SparsityPattern::size_type happen to be the same
+  as far as the underlying type is concerned; however, they are different
+  semantically.)
+  <br>
+  (Wolfgang Bangerth, 2014/05/04)
+  </li>
+
+  <li> Updated: The step-16 tutorial program was updated to the new layout
+  multigrid objects and thus avoids using deprecated interfaces.
+  <br>
+  (Martin Kronbichler, 2014/05/03)
+  </li>
+
+  <li> Fixed: FE_DGQArbitraryNodes::has_support_on_face was broken when
+  polynomials with support points not on the element boundary were used.
+  This is now fixed.
+  <br>
+  (Martin Kronbichler, 2014/04/30)
+  </li>
+
   <li> Fixed: parallel::distributed::Triangulation::load now has an
   additional parameter <code>autopartition</code> to control p4est's behavior of
   rebalancing triangulations between MPI nodes upon reading. It is
index 4cc4ae8f4000139e4059347c23a4ed2e26a1f3fb..f48418761dc3800ec80488e7f45a4d1c823c2ebe 100644 (file)
          <!-- http://link.springer.com/article/10.1007/s12289-013-1160-9 -->
         </li>
 
+       <li> A. Grayver, M. B&uuml;rg
+          <br>
+          <strong>Robust and scalable 3-D geo-electromagnetic modelling approach using the finite element method
+          </strong>
+          <br>
+          Geophysical Journal International 2014, published online
+         (DOI 10.1093/gji/ggu119), 2014.
+         <!-- http://gji.oxfordjournals.org/content/early/2014/04/29/gji.ggu119.abstract?keytype=ref&ijkey=gkyDCSgpUEOjqWw -->
+        </li>
+
        <li> N. Gupta, N. Nataraj
           <br>
           <strong>A posteriori error estimates for an optimal control
          SIAM J. Optim., vol. 24, pp. 108-126, 2014.
         </li>
 
+       <li> A. Javili, A. T. McBride, P. Steinmann, B. D. Reddy
+         <br>
+         <strong>A unified computational framework for bulk and surface elasticity theory: a curvilinear-coordinate-based finite element methodology
+         </strong>
+         <br>
+         Computational Mechanics, in press, 2014.
+         <!-- http://link.springer.com/article/10.1007/s00466-014-1030-4 -->
+       </li>
+
        <li>
          S. Kim
          <br>
          preprint, 2014.
         </li>
 
+       <li>
+         <br> M. S. Mallikarjunaiah, J. Walton 
+         <strong>On the direct numerical simulation (DNS) of an
+         anti-plane shear crack in a new class of strain-limiting
+         elastic bodies 
+         </strong>
+         <br>
+         Proceedings of theUS National Congress on Theoretical and
+         Applied Mechanics (USNTAM-14) to be held in Michigan State
+         University-East Lansing, June 15-20, 2014.
+        </li>
+
        <li>
          <br> A. Mola, L. Heltai, A. DeSimone
          <strong>A fully nonlinear potential model for ship hydrodynamics directly interfaced with CAD data structures
index 4cc9cf795f0ef239a9015048057536159c586d83..7bc712f4f9d69d14e8731bc4598160e709ebf46b 100644 (file)
@@ -854,9 +854,9 @@ cmake -DCMAKE_C_COMPILER="mpicc" -DCMAKE_CXX_COMPILER="mpicxx" -DCMAKE_Fortran_C
     </p>
 
     <p>
-      deal.II will configure sensible default <code>CXXFLAGS</code>
-      depending on platform, compiler and build target. There are two
-      options to override this behaviour:
+      deal.II will configure sensible default <code>CXXFLAGS</code> and
+      <code>LDFLAGS</code> depending on platform, compiler and build
+      target. There are two options to override this behaviour:
 
       <ol>
        <li>
@@ -866,6 +866,10 @@ cmake -DCMAKE_C_COMPILER="mpicc" -DCMAKE_CXX_COMPILER="mpicxx" -DCMAKE_Fortran_C
 DEAL_II_CXX_FLAGS         - used during all builds
 DEAL_II_CXX_FLAGS_DEBUG   - additional flags for the debug library
 DEAL_II_CXX_FLAGS_RELEASE - additional flags for the release library
+
+DEAL_II_LINKER_FLAGS         - used during all builds
+DEAL_II_LINKER_FLAGS_DEBUG   - additional flags for the debug library
+DEAL_II_LINKER_FLAGS_RELEASE - additional flags for the release library
 </pre>
 
          The content of the cached variables will be preserved
@@ -974,18 +978,6 @@ $ cmake -C config.sample <...>
       configuration.
     </p>
 
-    <p>
-      The build system automatically exports a <code>config.camke</code>
-      into the binary directory that can be used to conveniently clone a
-      build directories cache entries, e.g. assuming that there is a
-      configured build directory <code>build</code> next to an empty
-      directory <code>build2</code>:
-<pre class="cmake">
-$ cd build2
-$ cmake -C ../build/config.cmake ../deal.II
-</pre>
-    </p>
-
     <a name="compiling"></a>
     <h2> Compiling only certain parts </h2>
     <p>
index a64c3dcbb49ea72a6f7b5d9575e5ab1a9228a094..b37132c37046809ef14838d0b721c30c272092ec 100644 (file)
@@ -1,37 +1,9 @@
-## ---------------------------------------------------------------------
-## $Id$
-##
-## Copyright (C) 2013 by the deal.II Authors
-##
-## This file is part of the deal.II library.
-##
-## The deal.II library is free software; you can use it, redistribute
-## it, and/or modify it under the terms of the GNU Lesser General
-## Public License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-## The full text of the license can be found in the file LICENSE at
-## the top level of the deal.II distribution.
-##
-## ---------------------------------------------------------------------
-
-#
-# Example configuration file
-#
-# This file can be used as a script to preseed the initial cache of a build
-# directory. To do so, invoke cmake with
-#
-#   $ cmake -C configuration.cmake [...]
-#
-#
-# Please note that this file is actually intrepeted as a full featured
-# CMake script file, so in order to set variables in the cache a statement
-# of the form
-#
-#   SET(<variable> <value> CACHE <type> "<string>")
-#
-# has to be used. See doc/readme.html and doc/users/cmake.html for further
-# details on how to use the cmake build system of deal.II.
-#
+##                                                                       ##
+#                      Example configuration file                         #
+#                                                                         #
+#        See doc/readme.html and doc/users/cmake.html for further         #
+#        details on how to use the cmake build system of deal.II.         #
+##                                                                       ##
 
 
 ###########################################################################
 #   "Fortran Compiler."
 #   )
 #
-# SET(DEAL_II_CXX_FLAGS "" CACHE STRING
-#   "The user supplied cache variable will be appended _at the end_ of the auto generated DEAL_II_CXX_FLAGS variable"
+# SET(CMAKE_CXX_FLAGS "" CACHE STRING
+#   "The user supplied cache variable will be appended _at the end_ of the auto generated CMAKE_CXX_FLAGS variable"
 #   )
 #
 # SET(DEAL_II_CXX_FLAGS_DEBUG "" CACHE STRING
 #   "The user supplied cache variable will be appended _at the end_ of the auto generated DEAL_II_LINKER_FLAGS_RELEASE variable"
 #   )
 #
-# SET(DEAL_II_DEFINITIONS "" CACHE STRING
-#   "Additional, user supplied compile definitions"
-#   )
-#
-# SET(DEAL_II_DEFINITIONS_DEBUG "" CACHE STRING
-#   "Additional, user supplied compile definitions"
-#   )
-#
-# SET(DEAL_II_DEFINITIONS_RELEASE "" CACHE STRING
-#   "Additional, user supplied compile definitions"
-#   )
-#
 # SET(BUILD_SHARED_LIBS "ON" CACHE BOOL
 #   "Build a shared library"
 #   )
 #   "If set to ON, then use 64-bit data types to represent global degree of freedom indices. The default is to OFF. You only want to set this to ON if you will solve problems with more than 2^31 (approximately 2 billion) unknowns. If set to ON, you also need to ensure that both Trilinos and/or PETSc support 64-bit indices."
 #   )
 #
+#
 
 
 ###########################################################################
 #
 
 
+#
+# muPaser:
+#
+# SET(DEAL_II_WITH_MUPARSER ON CACHE BOOL
+#   "Build deal.II with support for muparser"
+#
+# Automatic detection:
+#
+# Specify a hint with CMAKE_PREFIX_PATH or by setting
+# SET(MUPARSER_DIR "/.../..." CACHE PATH "")
+#
+# Manual setup:
+#
+# SET(MUPARSER_FOUND TRUE CACHE BOOL "")
+# SET(MUPARSER_LIBRARIES "library;and;semicolon;separated;list;of;link;interface" CACHE STRING "")
+# SET(MUPARSER_INCLUDE_DIRS "semicolon;separated;list;of;include;dirs" CACHE STRING "")
+#
+
+
 #
 # Netcdf:
 #
 # C++11 support is autodetected. You can explicitly disable C+11 support by
 # specifying
 #
-#   SET(DEAL_II_WITH_CXX11 FALSE CACHE BOOL "")
+#   SET(DEAL_II_HAVE_CXX11_FLAG FALSE CACHE BOOL "")
 #
 # A custom C++11 flag can be set by setting
 #
-#   SET(DEAL_II_CXX11_FLAG "-std=c++11" CACHE STRING "")
+#   SET(DEAL_II_HAVE_CXX11_FLAG TRUE CACHE BOOL "")
+#   SET(DEAL_II_CXX11_FLAG "-std=c++0x" CACHE STRING "")
 #
 
 
 #   "Library suffix for the debug library"
 #   )
 #
-# SET(DEAL_II_RELEASE_SUFFIX "" CACHE STRING
+# SET_IF_EMPTY(DEAL_II_RELEASE_SUFFIX "" CACHE STRING
 #   "Library suffix for the release library"
 #   )
 #
index 2cebf0f9f1ff4ef3900336a49575d7cdaefa32ab..099982af18dbee6aa373a990c7d2bde8035d02d7 100644 (file)
@@ -47,7 +47,7 @@ $\Omega$ is the domain we get by projecting the wire's positions into $x-y$
 space. In this example, we choose $\Omega$ as the unit disk.
 
 As described above, we solve this equation using Newton's method in which we
-compute the $n$th approximate solution from the $n-1$st one, and use
+compute the $n$th approximate solution from the $n$th$-1$ one, and use
 a damping parameter $\alpha^n$ to get better global convergence behavior:
   @f{align*}
     F'(u^{n},\delta u^{n})&=- F(u^{n})
index 1eb7c93fac7bfb2b19acb717c7a3bb31fffbf31f..e8a2035f0bd1eb60d83c81fa2ec8571d71e07aa2 100644 (file)
 #include <deal.II/numerics/data_out.h>
 #include <deal.II/numerics/error_estimator.h>
 
-// These, now, are the include necessary for the multilevel methods. The
-// first two declare classes that allow us to enumerate degrees of freedom not
-// only on the finest mesh level, but also on intermediate levels (that's what
-// the MGDoFHandler class does) as well as allow to access this information
-// (iterators and accessors over these cells).
+// These, now, are the include necessary for the multilevel methods. The first
+// one declares how to handle Dirichlet boundary conditions on each of the
+// levels of the multigrid method. For the actual description of the degrees
+// of freedom, we do not need any new include file because DoFHandler already
+// has all necessary methods implemented. We will only need to distribute the
+// DoFs for the levels further down.
 //
 // The rest of the include files deals with the mechanics of multigrid as a
 // linear operator (solver or preconditioner).
-#include <deal.II/multigrid/mg_dof_handler.h>
 #include <deal.II/multigrid/mg_constrained_dofs.h>
 #include <deal.II/multigrid/multigrid.h>
 #include <deal.II/multigrid/mg_transfer.h>
@@ -112,7 +112,7 @@ namespace Step16
 
     Triangulation<dim>   triangulation;
     FE_Q<dim>            fe;
-    MGDoFHandler<dim>    mg_dof_handler;
+    DoFHandler<dim>      dof_handler;
 
     SparsityPattern      sparsity_pattern;
     SparseMatrix<double> system_matrix;
@@ -234,7 +234,7 @@ namespace Step16
     triangulation (Triangulation<dim>::
                    limit_level_difference_at_vertices),
     fe (degree),
-    mg_dof_handler (triangulation),
+    dof_handler (triangulation),
     degree(degree)
   {}
 
@@ -243,29 +243,31 @@ namespace Step16
   // @sect4{LaplaceProblem::setup_system}
 
   // The following function extends what the corresponding one in step-6
-  // did. The top part, apart from the additional output, does the same:
+  // did, with the exception of also distributing the degrees of freedom on
+  // each level of the mesh which is needed for the multigrid hierarchy.
   template <int dim>
   void LaplaceProblem<dim>::setup_system ()
   {
-    mg_dof_handler.distribute_dofs (fe);
+    dof_handler.distribute_dofs (fe);
+    dof_handler.distribute_mg_dofs (fe);
 
     // Here we output not only the degrees of freedom on the finest level, but
     // also in the multilevel structure
     deallog << "Number of degrees of freedom: "
-            << mg_dof_handler.n_dofs();
+            << dof_handler.n_dofs();
 
     for (unsigned int l=0; l<triangulation.n_levels(); ++l)
       deallog << "   " << 'L' << l << ": "
-              << mg_dof_handler.n_dofs(l);
+              << dof_handler.n_dofs(l);
     deallog  << std::endl;
 
-    sparsity_pattern.reinit (mg_dof_handler.n_dofs(),
-                             mg_dof_handler.n_dofs(),
-                             mg_dof_handler.max_couplings_between_dofs());
-    DoFTools::make_sparsity_pattern (mg_dof_handler, sparsity_pattern);
+    sparsity_pattern.reinit (dof_handler.n_dofs(),
+                             dof_handler.n_dofs(),
+                             dof_handler.max_couplings_between_dofs());
+    DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
 
-    solution.reinit (mg_dof_handler.n_dofs());
-    system_rhs.reinit (mg_dof_handler.n_dofs());
+    solution.reinit (dof_handler.n_dofs());
+    system_rhs.reinit (dof_handler.n_dofs());
 
     // But it starts to be a wee bit different here, although this still
     // doesn't have anything to do with multigrid methods. step-6 took care of
@@ -280,13 +282,13 @@ namespace Step16
     // for a later clean-up stage:
     constraints.clear ();
     hanging_node_constraints.clear ();
-    DoFTools::make_hanging_node_constraints (mg_dof_handler, hanging_node_constraints);
-    DoFTools::make_hanging_node_constraints (mg_dof_handler, constraints);
+    DoFTools::make_hanging_node_constraints (dof_handler, hanging_node_constraints);
+    DoFTools::make_hanging_node_constraints (dof_handler, constraints);
 
     typename FunctionMap<dim>::type      dirichlet_boundary_functions;
     ZeroFunction<dim>                    homogeneous_dirichlet_bc (1);
     dirichlet_boundary_functions[0] = &homogeneous_dirichlet_bc;
-    VectorTools::interpolate_boundary_values (static_cast<const DoFHandler<dim>&>(mg_dof_handler),
+    VectorTools::interpolate_boundary_values (static_cast<const DoFHandler<dim>&>(dof_handler),
                                               dirichlet_boundary_functions,
                                               constraints);
     constraints.close ();
@@ -299,7 +301,7 @@ namespace Step16
     // about the boundary values as well, so we pass the
     // <code>dirichlet_boundary</code> here as well.
     mg_constrained_dofs.clear();
-    mg_constrained_dofs.initialize(mg_dof_handler, dirichlet_boundary_functions);
+    mg_constrained_dofs.initialize(dof_handler, dirichlet_boundary_functions);
 
 
     // Now for the things that concern the multigrid data structures. First,
@@ -337,9 +339,9 @@ namespace Step16
     for (unsigned int level=0; level<n_levels; ++level)
       {
         CompressedSparsityPattern csp;
-        csp.reinit(mg_dof_handler.n_dofs(level),
-                   mg_dof_handler.n_dofs(level));
-        MGTools::make_sparsity_pattern(mg_dof_handler, csp, level);
+        csp.reinit(dof_handler.n_dofs(level),
+                   dof_handler.n_dofs(level));
+        MGTools::make_sparsity_pattern(dof_handler, csp, level);
 
         mg_sparsity_patterns[level].copy_from (csp);
 
@@ -352,11 +354,7 @@ namespace Step16
   // @sect4{LaplaceProblem::assemble_system}
 
   // The following function assembles the linear system on the finest level of
-  // the mesh. It is almost exactly the same as in step-6, with the exception
-  // that we don't eliminate hanging nodes and boundary values after
-  // assembling, but while copying local contributions into the global
-  // matrix. This is not only simpler but also more efficient for large
-  // problems.
+  // the mesh. It is almost exactly the same as in step-6.
   //
   // This latter trick is something that only found its way into deal.II over
   // time and wasn't used in the initial version of this tutorial
@@ -382,9 +380,9 @@ namespace Step16
     const Coefficient<dim> coefficient;
     std::vector<double>    coefficient_values (n_q_points);
 
-    typename MGDoFHandler<dim>::active_cell_iterator
-    cell = mg_dof_handler.begin_active(),
-    endc = mg_dof_handler.end();
+    typename DoFHandler<dim>::active_cell_iterator
+    cell = dof_handler.begin_active(),
+    endc = dof_handler.end();
     for (; cell!=endc; ++cell)
       {
         cell_matrix = 0;
@@ -455,44 +453,39 @@ namespace Step16
     // obscure if you're not familiar with the algorithm actually implemented
     // in deal.II to support multilevel algorithms on adaptive meshes; if some
     // of the things below seem strange, take a look at the @ref mg_paper.
-    //
-    // Our first job is to identify those degrees of freedom on each level
-    // that are located on interfaces between adaptively refined levels, and
-    // those that lie on the interface but also on the exterior boundary of
-    // the domain. As in many other parts of the library, we do this by using
-    // Boolean masks, i.e. vectors of Booleans each element of which indicates
-    // whether the corresponding degree of freedom index is an interface DoF
-    // or not. The <code>MGConstraints</code> already computed the information
-    // for us when we called initialize in <code>setup_system()</code>.
-    std::vector<std::vector<bool> > interface_dofs
-      = mg_constrained_dofs.get_refinement_edge_indices ();
-    std::vector<std::vector<bool> > boundary_interface_dofs
-      = mg_constrained_dofs.get_refinement_edge_boundary_indices ();
-
-    // The indices just identified will later be used to decide where the
-    // assembled value has to be added into on each level.  On the other hand,
-    // we also have to impose zero boundary conditions on the external
-    // boundary of each level. But this the <code>MGConstraints</code> knows.
-    // So we simply ask for them by calling <code>get_boundary_indices()</code>.
-    // The third step is to construct constraints on all those
-    // degrees of freedom: their value should be zero after each application
-    // of the level operators. To this end, we construct ConstraintMatrix
-    // objects for each level, and add to each of these constraints for each
-    // degree of freedom. Due to the way the ConstraintMatrix stores its data,
-    // the function to add a constraint on a single degree of freedom and
-    // force it to be zero is called Constraintmatrix::add_line(); doing so
-    // for several degrees of freedom at once can be done using
+
+    // Our first job is to identify the boundary conditions for the levels. On
+    // each level, we impose Dirichlet boundary conditions on the exterior
+    // boundary of the domain as well as on interfaces between adaptively
+    // refined levels. As in many other parts of the library, we do this by
+    // using a mask described by an IndexSet. The <code>MGConstraints</code>
+    // already computed the information for us when we called initialize in
+    // <code>setup_system()</code>. So we simply ask for them by calling
+    // <code>get_boundary_indices()</code> and
+    // <code>get_refinement_edge_indices(level)</code>. Moreover, we have to
+    // identify the subset of the refinement edge indices which are also
+    // located on the boundary as they require special treatment in the
+    // algorithm further down.
+
+    // These three masks are used to fill a ConstraintMatrix objects for each
+    // level that we use during the assembly of the matrix: the value of the
+    // associated degrees of freedom should be zero after each application of
+    // the level operators. Due to the way the ConstraintMatrix stores its
+    // data, the function to add a constraint on a single degree of freedom
+    // and force it to be zero is called Constraintmatrix::add_line(); doing
+    // so for several degrees of freedom at once can be done using
     // Constraintmatrix::add_lines():
     std::vector<ConstraintMatrix> boundary_constraints (triangulation.n_levels());
     std::vector<ConstraintMatrix> boundary_interface_constraints (triangulation.n_levels());
     for (unsigned int level=0; level<triangulation.n_levels(); ++level)
       {
-        boundary_constraints[level].add_lines (interface_dofs[level]);
         boundary_constraints[level].add_lines (mg_constrained_dofs.get_boundary_indices()[level]);
+        boundary_constraints[level].
+        add_lines (mg_constrained_dofs.get_refinement_edge_indices(level));
         boundary_constraints[level].close ();
 
         boundary_interface_constraints[level]
-        .add_lines (boundary_interface_dofs[level]);
+        .add_lines (mg_constrained_dofs.get_refinement_edge_boundary_indices(level));
         boundary_interface_constraints[level].close ();
       }
 
@@ -501,10 +494,10 @@ namespace Step16
     // <code>assemble_system</code>, with two exceptions: (i) we don't need a
     // right hand side, and more significantly (ii) we don't just loop over
     // all active cells, but in fact all cells, active or not. Consequently,
-    // the correct iterator to use is MGDoFHandler::cell_iterator rather than
-    // MGDoFHandler::active_cell_iterator. Let's go about it:
-    typename MGDoFHandler<dim>::cell_iterator cell = mg_dof_handler.begin(),
-                                              endc = mg_dof_handler.end();
+    // the correct iterator to use is DoFHandler::cell_iterator rather than
+    // DoFHandler::active_cell_iterator. Let's go about it:
+    typename DoFHandler<dim>::cell_iterator cell = dof_handler.begin(),
+                                            endc = dof_handler.end();
 
     for (; cell!=endc; ++cell)
       {
@@ -526,8 +519,8 @@ namespace Step16
         // with a gotcha that is easily forgotten: The indices of global
         // degrees of freedom we want here are the ones for current level, not
         // for the global matrix. We therefore need the function
-        // MGDoFAccessor::get_mg_dof_indices, not
-        // MGDoFAccessor::get_dof_indices as used in the assembly of the
+        // DoFAccessor::get_mg_dof_indices, not
+        // DoFAccessor::get_dof_indices as used in the assembly of the
         // global system:
         cell->get_mg_dof_indices (local_dof_indices);
 
@@ -554,7 +547,7 @@ namespace Step16
         // we have a symmetric operator, one of these matrices is the
         // transpose of the other.
         //
-        // The way we assemble these matrices is as follows: since the are
+        // The way we assemble these matrices is as follows: since they are
         // formed from parts of the local contributions, we first delete all
         // those parts of the local contributions that we are not interested
         // in, namely all those elements of the local matrix for which not $i$
@@ -572,8 +565,10 @@ namespace Step16
         // necessary.
         for (unsigned int i=0; i<dofs_per_cell; ++i)
           for (unsigned int j=0; j<dofs_per_cell; ++j)
-            if ( !(interface_dofs[cell->level()][local_dof_indices[i]]==true &&
-                   interface_dofs[cell->level()][local_dof_indices[j]]==false))
+            if ( !(mg_constrained_dofs.get_refinement_edge_indices(cell->level()).
+                   is_element(local_dof_indices[i])==true &&
+                   mg_constrained_dofs.get_refinement_edge_indices(cell->level()).
+                   is_element(local_dof_indices[j])==false))
               cell_matrix(i,j) = 0;
 
         boundary_interface_constraints[cell->level()]
@@ -597,8 +592,11 @@ namespace Step16
   // the finite element function spaces involved and can often be computed in
   // a generic way independent of the problem under consideration. In that
   // case, we can use the MGTransferPrebuilt class that, given the constraints
-  // on the global level and an MGDoFHandler object computes the matrices
-  // corresponding to these transfer operators.
+  // of the final linear system and the MGConstrainedDoFs object that knows
+  // about the boundary conditions on the each level and the degrees of
+  // freedom on interfaces between different refinement level can build the
+  // matrices for those transfer operations from a DoFHandler object with
+  // level degrees of freedom.
   //
   // The second part of the following lines deals with the coarse grid
   // solver. Since our coarse grid is very coarse indeed, we decide for a
@@ -609,15 +607,8 @@ namespace Step16
   template <int dim>
   void LaplaceProblem<dim>::solve ()
   {
-
-    // Create the object that deals with the transfer between different
-    // refinement levels. We need to pass it the hanging node constraints.
     MGTransferPrebuilt<Vector<double> > mg_transfer(hanging_node_constraints, mg_constrained_dofs);
-    // Now the prolongation matrix has to be built.  This matrix needs to take
-    // the boundary values on each level into account and needs to know about
-    // the indices at the refinement edges. The <code>MGConstraints</code>
-    // knows about that so pass it as an argument.
-    mg_transfer.build_matrices(mg_dof_handler);
+    mg_transfer.build_matrices(dof_handler);
 
     FullMatrix<double> coarse_matrix;
     coarse_matrix.copy_from (mg_matrices[0]);
@@ -668,13 +659,13 @@ namespace Step16
     // the transpose operator for the latter operation, allowing us to
     // initialize both up and down versions of the operator with the matrices
     // we already built:
-    MGMatrix<> mg_matrix(&mg_matrices);
-    MGMatrix<> mg_interface_up(&mg_interface_matrices);
-    MGMatrix<> mg_interface_down(&mg_interface_matrices);
+    mg::Matrix<Vector<double> > mg_matrix(mg_matrices);
+    mg::Matrix<Vector<double> > mg_interface_up(mg_interface_matrices);
+    mg::Matrix<Vector<double> > mg_interface_down(mg_interface_matrices);
 
     // Now, we are ready to set up the V-cycle operator and the multilevel
     // preconditioner.
-    Multigrid<Vector<double> > mg(mg_dof_handler,
+    Multigrid<Vector<double> > mg(dof_handler,
                                   mg_matrix,
                                   coarse_grid_solver,
                                   mg_transfer,
@@ -683,7 +674,7 @@ namespace Step16
     mg.set_edge_matrices(mg_interface_down, mg_interface_up);
 
     PreconditionMG<dim, Vector<double>, MGTransferPrebuilt<Vector<double> > >
-    preconditioner(mg_dof_handler, mg, mg_transfer);
+    preconditioner(dof_handler, mg, mg_transfer);
 
     // With all this together, we can finally get about solving the linear
     // system in the usual way:
@@ -709,9 +700,7 @@ namespace Step16
   // computed. In particular, the first one refines the mesh at the beginning
   // of each cycle while the second one outputs results at the end of each
   // such cycle. The functions are almost unchanged from those in step-6, with
-  // the exception of two minor differences: The KellyErrorEstimator::estimate
-  // function wants an argument of type DoFHandler, not MGDoFHandler, and so
-  // we have to cast from derived to base class; and we generate output in VTK
+  // the exception of one minor difference: we generate output in VTK
   // format, to use the more modern visualization programs available today
   // compared to those that were available when step-6 was written.
   template <int dim>
@@ -719,7 +708,7 @@ namespace Step16
   {
     Vector<float> estimated_error_per_cell (triangulation.n_active_cells());
 
-    KellyErrorEstimator<dim>::estimate (static_cast<DoFHandler<dim>&>(mg_dof_handler),
+    KellyErrorEstimator<dim>::estimate (dof_handler,
                                         QGauss<dim-1>(3),
                                         typename FunctionMap<dim>::type(),
                                         solution,
@@ -737,7 +726,7 @@ namespace Step16
   {
     DataOut<dim> data_out;
 
-    data_out.attach_dof_handler (mg_dof_handler);
+    data_out.attach_dof_handler (dof_handler);
     data_out.add_data_vector (solution, "solution");
     data_out.build_patches ();
 
@@ -784,10 +773,10 @@ namespace Step16
         setup_system ();
 
         std::cout << "   Number of degrees of freedom: "
-                  << mg_dof_handler.n_dofs()
+                  << dof_handler.n_dofs()
                   << " (by level: ";
         for (unsigned int level=0; level<triangulation.n_levels(); ++level)
-          std::cout << mg_dof_handler.n_dofs(level)
+          std::cout << dof_handler.n_dofs(level)
                     << (level == triangulation.n_levels()-1
                         ? ")" : ", ");
         std::cout << std::endl;
index e6a266c7980c9a43d580133dd6d21dda5628ef7d..a1a6e886965a67165ad4afa10d41fe0f924774dc 100644 (file)
@@ -681,101 +681,17 @@ freedom in non-$hp$ mode, but the difference is that each constrained
 hanging node is constrained not only against the two adjacent degrees
 of freedom, but is constrained against many more degrees of freedom.
 
-In previous programs, for example in step-6, we have dealt with eliminating
-these constrained degrees of freedom by first building an object of type
-ConstraintMatrix that stores the constraints, and then "condensing" away these
-degrees of freedom first from the sparsity pattern. The same scheme is used
-for the matrix and right hand side, which are also both first built then
-condensed.
-
-Dealing with sparsity patterns and matrices in this way turns out to be
-inefficient because the effort necessary is at least ${\cal O}(N \log N)$ in
-the number of unknowns, whereas an ideal finite element program would of
-course only have algorithms that are linear in the number of unknowns. The
-solution to this problem is to use the ConstraintMatrix object already at the
-time of creating the sparsity pattern, or while copying local contributions
-into the global matrix object (or global vector).
-
-So, instead of the code snippet (taken from step-6)
-@code
-  DoFTools::make_hanging_node_constraints (dof_handler,
-                                          hanging_node_constraints);
-  hanging_node_constraints.close ();
-
-  DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern);
-  hanging_node_constraints.condense (sparsity_pattern);
-@endcode
-we now use the following:
-@code
-  DoFTools::make_hanging_node_constraints (dof_handler,
-                                          hanging_node_constraints);
-  hanging_node_constraints.close ();
-
-  DoFTools::make_sparsity_pattern (dof_handler, sparsity_pattern,
-                                   hanging_node_constraints, false);
-@endcode
-
-Note the last <tt>false</tt> argument we pass when creating the sparsity
-pattern. It tells the sparsity pattern that constrained entries should not
-be inserted into the sparsity pattern. This makes sense for the way we're
-going to do assembly, which does the elimination of constraints already
-locally. Hence, we will never write the constrained entries. This is the
-second key to increase this program's performance, since the system matrix
-will have less entries &mdash; this saves both memory and computing time
-when doing matrix-vector multiplications or applying a preconditioner.
-
-In a similar vein, we have to slightly modify the way we copy local
-contributions into global matrices and vectors. In previous tutorial programs,
-we have always used a process like this:
-@code
-  typename hp::DoFHandler<dim>::active_cell_iterator
-    cell = dof_handler.begin_active(),
-    endc = dof_handler.end();
-  for (; cell!=endc; ++cell)
-    {
-      ...  // assemble local contributions them into global object
-
-      cell->get_dof_indices (local_dof_indices);
-      for (unsigned int i=0; i<dofs_per_cell; ++i)
-       {
-         for (unsigned int j=0; j<dofs_per_cell; ++j)
-           system_matrix.add (local_dof_indices[i],
-                              local_dof_indices[j],
-                              cell_matrix(i,j));
-         system_rhs(local_dof_indices[i]) += cell_rhs(i);
-       }
-    }
-
-  hanging_node_constraints.condense (system_matrix);
-  hanging_node_constraints.condense (system_rhs);
-@endcode
-We now replace copying and later condensing into one step, as already shown in
-step-17, step-18, and step-22:
-@code
-  typename hp::DoFHandler<dim>::active_cell_iterator
-    cell = dof_handler.begin_active(),
-    endc = dof_handler.end();
-  for (; cell!=endc; ++cell)
-    {
-      ...  // assemble local contributions them into global object
-
-      cell->get_dof_indices (local_dof_indices);
-
-      hanging_node_constraints
-       .distribute_local_to_global (cell_matrix, cell_rhs,
-                                    local_dof_indices,
-                                    system_matrix, system_rhs);
-    }
-@endcode
-Essentially, what the
-<code>hanging_node_constraints.distribute_local_to_global</code> call does is
-to implement the same loops as before, but whenever we hit a constrained degree
-of freedom, the function does the right thing and already condenses it away.
-
-Using this technique of eliminating constrained nodes already when
-transferring local contributions into the global objects, we avoid the problem
-of having to go back later and change these objects. Timing these operations
-shows that this makes the overall algorithms faster.
+It turns out that the strategy presented first in step-6 to eliminate the
+constraints while computing the element matrices and vectors with
+ConstraintMatrix::distribute_local_to_global is the most efficient approach
+also for this case. The alternative strategy to first build the matrix without
+constraints and then "condensing" away constrained degrees of freedom is
+considerably more expensive. It turns out that building the sparsity pattern
+by this inefficient algorithm requires at least ${\cal O}(N \log N)$ in the
+number of unknowns, whereas an ideal finite element program would of course
+only have algorithms that are linear in the number of unknowns. Timing the
+sparsity pattern creation as well as the matrix assembly shows that the
+algorithm presented in step-6 (and used in the code below) is indeed faster.
 
 In our program, we will also treat the boundary conditions as (possibly
 inhomogeneous) constraints and eliminate the matrix rows and columns to
@@ -783,7 +699,7 @@ those as well. All we have to do for this is to call the function that
 interpolates the Dirichlet boundary conditions already in the setup phase in
 order to tell the ConstraintMatrix object about them, and then do the
 transfer from local to global data on matrix and vector simultaneously. This
-is exactly what we've shown in the step-22 tutorial program.
+is exactly what we've shown in step-6.
 
 
 <h3>The test case</h3>
index 1a4beaca1f84ff99ab0dd070fdbda588e8fc2816..2883bc28419afbd32d92ef17f5bbc6e03d9c4802 100644 (file)
@@ -192,26 +192,10 @@ namespace Step27
 
   // @sect4{LaplaceProblem::setup_system}
   //
-  // This function is again an almost verbatim copy of what we already did in
-  // step-6. The first change is that we append the Dirichlet boundary
-  // conditions to the ConstraintMatrix object, which we consequently call
-  // just <code>constraints</code> instead of
-  // <code>hanging_node_constraints</code>. The second difference is that we
-  // don't directly build the sparsity pattern, but first create an
-  // intermediate object that we later copy into the usual SparsityPattern
-  // data structure, since this is more efficient for the problem with many
-  // entries per row (and different number of entries in different rows). In
-  // another slight deviation, we do not first build the sparsity pattern and
-  // then condense away constrained degrees of freedom, but pass the
-  // constraint matrix object directly to the function that builds the
-  // sparsity pattern. We disable the insertion of constrained entries with
-  // <tt>false</tt> as fourth argument in the DoFTools::make_sparsity_pattern
-  // function. All of these changes are explained in the introduction of this
-  // program.
-  //
-  // The last change, maybe hidden in plain sight, is that the dof_handler
-  // variable here is an hp object -- nevertheless all the function calls we
-  // had before still work in exactly the same way as they always did.
+  // This function is again a verbatim copy of what we already did in
+  // step-6. Despite function calls with exactly the same names and arguments,
+  // the algorithms used internally are different in some aspect since the
+  // dof_handler variable here is an hp object.
   template <int dim>
   void LaplaceProblem<dim>::setup_system ()
   {
@@ -324,12 +308,6 @@ namespace Step27
                                                 local_dof_indices,
                                                 system_matrix, system_rhs);
       }
-
-    // Now with the loop over all cells finished, we are done for this
-    // function. The steps we still had to do at this point in earlier
-    // tutorial programs, namely condensing hanging node constraints and
-    // applying Dirichlet boundary conditions, have been taken care of by the
-    // ConstraintMatrix object <code>constraints</code> on the fly.
   }
 
 
diff --git a/deal.II/examples/step-52/CMakeLists.txt b/deal.II/examples/step-52/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ec29e87
--- /dev/null
@@ -0,0 +1,31 @@
+##
+#  CMake script for the step-52 tutorial program:
+##
+
+# Set the name of the project and target:
+SET(TARGET "step-52")
+
+# Declare all source files the target consists of:
+SET(TARGET_SRC
+  ${TARGET}.cc
+  # You can specify additional files here!
+  )
+
+# Usually, you will not need to modify anything beyond this point...
+
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
+
+FIND_PACKAGE(deal.II 8.0 QUIET
+  HINTS ${deal.II_DIR} ${DEAL_II_DIR} ../ ../../ $ENV{DEAL_II_DIR}
+  )
+IF(NOT ${deal.II_FOUND})
+  MESSAGE(FATAL_ERROR "\n"
+    "*** Could not locate deal.II. ***\n\n"
+    "You may want to either pass a flag -DDEAL_II_DIR=/path/to/deal.II to cmake\n"
+    "or set an environment variable \"DEAL_II_DIR\" that contains this path."
+    )
+ENDIF()
+
+DEAL_II_INITIALIZE_CACHED_VARIABLES()
+PROJECT(${TARGET})
+DEAL_II_INVOKE_AUTOPILOT()
diff --git a/deal.II/examples/step-52/doc/builds-on b/deal.II/examples/step-52/doc/builds-on
new file mode 100644 (file)
index 0000000..48a0f73
--- /dev/null
@@ -0,0 +1 @@
+step-4
diff --git a/deal.II/examples/step-52/doc/intro.dox b/deal.II/examples/step-52/doc/intro.dox
new file mode 100644 (file)
index 0000000..4ae88a5
--- /dev/null
@@ -0,0 +1,102 @@
+<br>
+
+<i>This program was contributed by Bruno Turcksin and Damien Lebrun-Grandie.</i>
+
+<a name="Intro"></a>
+<h1>Introducion</h1>
+
+This program shows how to use Runge-Kutta methods to solve a time-dependent
+problem.
+
+<h3>Problem statement<h3>
+
+In this example, we solve the energy-integrated time-dependent diffusion
+approximation of the neutron transport equation (see step-28 for the
+time-independent multigroup diffusion). We assume that the medium is not
+fissible and therefore, the neutron flux satisfies the following equation:
+@f{eqnarray*}
+\frac{1}{v}\frac{\partial \phi(x,t)}{\partial t} = \nabla D(x) \nabla \phi(x,t)
+- \Sigma_a(x) \phi(x,t) + S(x,t)
+@f}
+augmented by appropriate boundary conditions. Here, $v$ is the velocity of
+neutrons, $D$ is the diffusion coefficient, $\Sigma_a$ is the <i>absorption
+cross section</i>, and $S$ is a source. Because we are only interested in the
+time dependence, we assume that $D$ and $\Sigma_a$ are constant. In this
+example, we are only interested in the error in time and thus, we are looking
+for a solution of the form:
+@f{eqnarray*}
+\phi(x,t) = A\sin(\omega t)(bx-x^2).
+@f}
+By using quadratic finite elements, we will not have any spatial error. We
+impose the following boundary conditions: homogeneous Dirichlet fo $x=0$ and
+$x=b$ and homogeneous Neumann conditions for $y=0$ and $y=b$. The source is
+given by:
+@f{eqnarray*}
+S=A\left(\frac{1}{v}\omega \cos(\omega t)(bx -x^2) + \sin(\omega t)
+\left(\Sigma_a (bx-x^2)+2D\right) \right).
+@f}
+Because the solution is a sine, we know that
+\f$\phi\left(x,\frac{\pi}{\omega}\right) = 0$. Therefore, we can easily
+compute the error at this time since it is simply the norm of the solution
+found.
+
+<h3>Runge-Kutta</h3>
+
+The Runke-Kutta methods implemented in deal.II assume that the equation to be
+solved can be written as:
+@f{eqnarray*}
+\frac{dy}{dt} = f(t,y).
+@f}
+When using finite elements, the previous equation becomes:
+@f{eqnarray*}
+M\frac{dy}{dt} = f(t,y),
+@f}
+where $M$ is the mass matrix. Therefore, we have:
+@f{eqnarray*}
+\frac{dy}{dt} = M^{-1}f(t,y).
+@f}
+Runke-Kutta methods can be written as:
+@f{eqnarray*}
+y_{n+1} = y_n + \sum_{i=1}^s b_i k_i
+@f}
+where
+@f{eqnarray*}
+k_i = h M^{-1} f(t_n+c_ih,y_n+\sum_{j=1}^sa_{ij}k_j)
+@f}
+with $a_{ij}$, $b_i$, and $c_i$ are known coefficient and $h$ is the time step
+used. The methods currently implemented in deal.II can be divided in three
+categories:
+<ol>
+<li> explicit Runge-Kutta
+<li> embedded (or adaptive) Runge-Kutta
+<li> implicit Runge-Kutta
+</ol> 
+
+<h4>Explicit Runge-Kutta</h4>
+These methods that include for forward Euler, third order Runge-Kutta, and
+fourth order Runge-Kutta, require a function to evaluate $M^{-1}f(t,y). These
+methods become unstable when the time step chosen is too large.
+
+<h4>Embedded Runge-Kutta</h4>
+These methods include Heun-Euler, Bogacki-Shampine, Dormand-Prince (ode45 in
+Matlab), Fehlberg, and Cash-Karp. These methods use a low order method to
+estimate the error and decide if the time step needs to be refined or it can be
+coarsen. Only embedded explicit methods have been implemented so far.
+
+<h4>Implicit Runge-Kutta</h4>
+These methods include backward Euler, implicit midpoint, Crank-Nicolson, and the
+two stages SDIRK. These methods require to evaluate $M^{-1}f(t,y)$ and
+$\left(I-\Delta t M^{-1} \frac{\partial f}{\partial Y}\right) = \left(M - \Delta
+t \frac{\partial f}{\partial y}\right)^{-1} M$. These methods are always stable.
+
+<h3>Remarks</h3>
+To simplify the problem, we solve the domain in two dimensional and the mesh is
+uniform (there is no need to adapt the mesh since we use quadratic finite
+elements and the exact solution is quadratic). Going from a two dimensional
+domain to a three dimensional domain is not very challenging. However if the
+mesh must be adapted, we cannot forget to:
+<ol>
+<li> project the solution to the new mesh when the mesh is changed. The mesh
+used should be the same at the beginning and at the end of the time step.
+<li> update the mass matrix and its inverse.
+</ol>
diff --git a/deal.II/examples/step-52/doc/kind b/deal.II/examples/step-52/doc/kind
new file mode 100644 (file)
index 0000000..86a44aa
--- /dev/null
@@ -0,0 +1 @@
+time dependent
diff --git a/deal.II/examples/step-52/doc/results.dox b/deal.II/examples/step-52/doc/results.dox
new file mode 100644 (file)
index 0000000..4a70bbe
--- /dev/null
@@ -0,0 +1,30 @@
+<h1>Results</h1>
+
+The output of this program consist of the console output and solutions given in
+vtu format.
+
+The console output is:
+@code
+Forward Euler error: 1.00883
+Third order Runge-Kutta error: 0.000227982
+Fourth order Runge-Kutta error: 1.90541e-06
+Backward Euler error: 1.03428
+Implicit Midpoint error: 0.00862702
+Crank-Nicolson error: 0.00862675
+SDIRK error: 0.0042349
+Heun-Euler error: 0.0073012
+Number of steps done: 284
+Bogacki-Shampine error: 0.000207511
+Number of steps done: 200
+Dopri error: 4.01775e-09
+Number of steps done: 200
+Fehlberg error: 9.89504e-09
+Number of steps done: 200
+Cash-Karp error: 2.5579e-10
+Number of steps done: 200
+@endcode
+
+Like expected the high-order methods give a more accurate solutions. We see that
+the Heun-Euler method adapted the number of time steps in order to satisfy the
+tolerance. The others embedded methods did not need to change the number of time
+steps.
diff --git a/deal.II/examples/step-52/doc/tooltip b/deal.II/examples/step-52/doc/tooltip
new file mode 100644 (file)
index 0000000..d35ea62
--- /dev/null
@@ -0,0 +1 @@
+Time-dependent diffusion equation. Neutron transport
diff --git a/deal.II/examples/step-52/step-52.cc b/deal.II/examples/step-52/step-52.cc
new file mode 100644 (file)
index 0000000..1031e49
--- /dev/null
@@ -0,0 +1,629 @@
+/* ---------------------------------------------------------------------
+ * $Id: step-52.cc 30526 2013-08-29 20:06:27Z felix.gruber $
+ *
+ * Copyright (C) 2014 by the deal.II authors
+ *
+ * This file is part of the deal.II library.
+ *
+ * The deal.II library is free software; you can use it, redistribute
+ * it, and/or modify it under the terms of the GNU Lesser General
+ * Public License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * The full text of the license can be found in the file LICENSE at
+ * the top level of the deal.II distribution.
+ *
+ * ---------------------------------------------------------------------
+
+ *
+ * Authors: Damien Lebrun-Grandie, Bruno Turcksin, 2014
+ */
+
+// @sect3{Include files}
+
+// The first task as usal is to include the functionality of these well-known
+// deal.II library files and some C++ header files.
+#include <deal.II/base/function.h>
+#include <deal.II/base/quadrature_lib.h>
+
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/grid_out.h>
+
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/dofs/dof_accessor.h>
+#include <deal.II/dofs/dof_tools.h>
+
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_values.h>
+
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/lac/sparse_direct.h>
+
+#include <deal.II/numerics/vector_tools.h>
+#include <deal.II/numerics/data_out.h>
+
+#include <fstream>
+#include <iostream>
+#include <cmath>
+#include <map>
+
+// This is the only include file that is new: It includes all the Runge-Kutta
+// methods.
+#include <deal.II/base/time_stepping.h>
+
+
+// The next step is like in all previous tutorial programs: We put everything
+// into a namespace of its own and then import the deal.II classes and functions
+// into it.
+namespace Step52
+{
+  using namespace dealii;
+
+  // @sect3{Diffusion}
+
+  // Now, here comes the declaration of the main class.
+  class Diffusion
+  {
+    public:
+      Diffusion();
+
+      void run();
+
+    private:
+      // Create the sparsity_pattern and initialize system_matrix.
+      void setup_system();
+
+      // Assemble the part of the matrix of the system that does not depend on
+      // the time.
+      void assemble_system();
+
+      // Compute the intensity of the source at the given point.
+      double get_source(double time,const Point<2> &point) const;
+      
+      // Evaluate the diffusion equation \f$M^{-1}(f(t,y))\f$
+      Vector<double> evaluate_diffusion(const double time, const Vector<double> &y) const;
+
+      // Evaluate \f$\left(I-\tau M^{-1} \frac{\partial f(t,y)}{\partial y}\right)^{-1} = 
+      // \left(M-\tau \frac{\partial f}{\partial y}\right)^{-1} M \f$
+      Vector<double> id_minus_tau_J_inverse(const double time, const double tau, 
+          const Vector<double> &y);
+      
+      // Output the results as vtu
+      void output_results(unsigned int time_step,TimeStepping::runge_kutta_method method) const;
+
+      // Driver for the explicit methods
+      void explicit_method(TimeStepping::runge_kutta_method method,
+                           const unsigned int n_time_steps,
+                           const double       initial_time,
+                           const double       final_time);
+
+      // Driver for the implicit methods
+      void implicit_method(TimeStepping::runge_kutta_method method,
+                           const unsigned int n_time_steps,
+                           const double       initial_time,
+                           const double       final_time);
+
+      // Driver for the embedded explicit methods. Returns the number of steps
+      // executed.
+      unsigned int embedded_explicit_method(TimeStepping::runge_kutta_method method,
+                                            const unsigned int n_time_steps,
+                                            const double initial_time,
+                                            const double final_time);
+
+
+      unsigned int                 fe_degree;
+
+      double                       diffusion_coefficient;
+      double                       absorption_xs;
+      
+      Triangulation<2>             triangulation;
+      
+      FE_Q<2>                      fe;
+      
+      DoFHandler<2>                dof_handler;
+      
+      ConstraintMatrix             constraint_matrix;
+      
+      SparsityPattern              sparsity_pattern;
+      
+      SparseMatrix<double>         system_matrix;
+      SparseMatrix<double>         mass_matrix;
+      SparseMatrix<double>         mass_minus_tau_Jacobian;
+      
+      SparseDirectUMFPACK          inverse_mass_matrix;
+      
+      Vector<double>               solution;
+  };
+
+
+
+  // We choose quadratic finite elements so that there are no spatial error.
+  Diffusion::Diffusion()
+    :
+      fe_degree(2),
+      diffusion_coefficient(1./30.),
+      absorption_xs(1.),
+      fe(fe_degree),
+      dof_handler(triangulation)
+  {}
+
+
+
+  void Diffusion::setup_system()
+  {
+    dof_handler.distribute_dofs(fe);
+
+    // Create the constraint matrix.
+    VectorTools::interpolate_boundary_values(dof_handler,1,ZeroFunction<2>(),constraint_matrix);
+    constraint_matrix.close();
+
+    // Create the sparsity_pattern.
+    CompressedSparsityPattern c_sparsity(dof_handler.n_dofs());
+    DoFTools::make_sparsity_pattern(dof_handler,c_sparsity,constraint_matrix);
+    sparsity_pattern.copy_from(c_sparsity);
+
+    system_matrix.reinit(sparsity_pattern);
+    mass_matrix.reinit(sparsity_pattern);
+    mass_minus_tau_Jacobian.reinit(sparsity_pattern);
+    solution.reinit(dof_handler.n_dofs());
+  }
+
+
+
+  void Diffusion::assemble_system()
+  {
+    system_matrix = 0.;
+    mass_matrix = 0.;
+
+    const QGauss<2> quadrature_formula(fe_degree+1);
+
+    FEValues<2> fe_values(fe, quadrature_formula,
+        update_values | update_gradients | update_JxW_values);
+
+
+    const unsigned int dofs_per_cell = fe.dofs_per_cell;
+    const unsigned int n_q_points    = quadrature_formula.size();
+
+    FullMatrix<double> cell_matrix (dofs_per_cell, dofs_per_cell);
+    FullMatrix<double> cell_mass_matrix (dofs_per_cell, dofs_per_cell);
+
+    std::vector<types::global_dof_index> local_dof_indices (dofs_per_cell);
+
+    typename DoFHandler<2>::active_cell_iterator
+    cell = dof_handler.begin_active(),
+    endc = dof_handler.end();
+           
+    // Compute \f$-\int D \nabla b \cdot \nabla b - \int \Sigma_a b b\f$ and \f$\int b b\f$
+    for (; cell!=endc; ++cell)
+    {
+      cell_matrix = 0.;
+      cell_mass_matrix = 0.;
+
+      fe_values.reinit (cell);
+
+      for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+        for (unsigned int i=0; i<dofs_per_cell; ++i)
+          for (unsigned int j=0; j<dofs_per_cell; ++j)
+          {
+            cell_matrix(i,j) += ((-diffusion_coefficient * fe_values.shape_grad(i,q_point) *
+                  fe_values.shape_grad(j,q_point) - absorption_xs *
+                  fe_values.shape_value(i,q_point) * fe_values.shape_value(j,q_point)) *
+                fe_values.JxW(q_point));
+            cell_mass_matrix(i,j) +=  fe_values.shape_value(i,q_point) * 
+              fe_values.shape_value(j,q_point) *
+              fe_values.JxW(q_point);
+          }
+
+      cell->get_dof_indices(local_dof_indices);
+
+      constraint_matrix.distribute_local_to_global(cell_matrix,local_dof_indices,system_matrix);
+      constraint_matrix.distribute_local_to_global(cell_mass_matrix,local_dof_indices,mass_matrix);
+    }
+
+    // Compute the inverse of the mass matrix.
+    inverse_mass_matrix.initialize(mass_matrix);
+  }
+
+
+
+  double Diffusion::get_source(double time,const Point<2> &point) const
+  {
+    const double pi = 3.14159265358979323846;
+    const double intensity = 10.;
+    const double frequency = pi/10.;
+    const double b = 5.;
+    const double x = point(0);
+    double source = 0.;
+
+    source = intensity*(frequency*std::cos(frequency*time)*(b*x-x*x) + std::sin(frequency*time) *
+        (absorption_xs*(b*x-x*x)+2.*diffusion_coefficient));
+    
+    return source;
+  }
+
+
+
+  Vector<double> Diffusion::evaluate_diffusion(const double time, const Vector<double> &y) const
+  {
+    Vector<double> tmp(dof_handler.n_dofs());
+    tmp = 0.;
+    // Compute system_matrix*y
+    system_matrix.vmult(tmp,y);
+
+
+    // Compute the source term
+    const QGauss<2> quadrature_formula(fe_degree+1);
+
+    FEValues<2> fe_values(fe, quadrature_formula,
+        update_values | update_quadrature_points | update_JxW_values);
+
+
+    const unsigned int dofs_per_cell = fe.dofs_per_cell;
+    const unsigned int n_q_points    = quadrature_formula.size();
+
+    Vector<double>  cell_source(dofs_per_cell);
+
+    std::vector<types::global_dof_index> local_dof_indices (dofs_per_cell);
+
+    typename DoFHandler<2>::active_cell_iterator
+    cell = dof_handler.begin_active(),
+    endc = dof_handler.end();
+           
+    for (; cell!=endc; ++cell)
+    {
+      cell_source = 0.;
+
+      fe_values.reinit (cell);
+
+      for (unsigned int q_point=0; q_point<n_q_points; ++q_point)
+      {
+        double source = get_source(time,fe_values.quadrature_point(q_point)) ;
+        for (unsigned int i=0; i<dofs_per_cell; ++i)
+          cell_source(i) += source * fe_values.shape_value(i,q_point) * 
+            fe_values.JxW(q_point);
+      }
+
+      cell->get_dof_indices(local_dof_indices);
+
+      // Add the source term to the tmp vector.
+      constraint_matrix.distribute_local_to_global(cell_source,local_dof_indices,tmp);
+    }
+    
+
+    Vector<double> value(dof_handler.n_dofs());
+    inverse_mass_matrix.vmult(value,tmp);
+
+    return value;
+  }
+
+
+
+  Vector<double> Diffusion::id_minus_tau_J_inverse(const double time, const double tau, 
+      const Vector<double> &y)
+  {
+    Vector<double> tmp(dof_handler.n_dofs());
+    Vector<double> result(y);
+    SparseDirectUMFPACK inverse_mass_minus_tau_Jacobian;
+
+    mass_minus_tau_Jacobian.copy_from(mass_matrix);
+    mass_minus_tau_Jacobian.add(-tau,system_matrix);
+    inverse_mass_minus_tau_Jacobian.initialize(mass_minus_tau_Jacobian);
+    mass_matrix.vmult(tmp,y);
+    inverse_mass_minus_tau_Jacobian.vmult(result,tmp);
+
+    return result;
+  }
+
+
+
+  void Diffusion::output_results(unsigned int time_step,TimeStepping::runge_kutta_method method) const
+  {
+    std::string method_name;
+
+    switch (method)
+    {
+      case TimeStepping::FORWARD_EULER :
+        {
+          method_name = "forward_euler";
+          break;
+        }
+      case TimeStepping::RK_THIRD_ORDER :
+        {
+          method_name = "rk3";
+          break;
+        }
+      case TimeStepping::RK_CLASSIC_FOURTH_ORDER :
+        {
+          method_name = "rk4";
+          break;
+        }
+      case TimeStepping::BACKWARD_EULER :
+        {
+          method_name = "backward_euler";
+          break;
+        }
+      case TimeStepping::IMPLICIT_MIDPOINT :
+        {
+          method_name = "implicit_midpoint";
+          break;
+        }
+      case TimeStepping::SDIRK_TWO_STAGES :
+        {
+          method_name = "sdirk";
+          break;
+        }
+      case TimeStepping::HEUN_EULER :
+        {
+          method_name = "heun_euler";
+          break;
+        }
+      case TimeStepping::BOGACKI_SHAMPINE :
+        {
+          method_name = "bocacki_shampine";
+          break;
+        }
+      case TimeStepping::DOPRI :
+        {
+          method_name = "dopri";
+          break;
+        }
+      case TimeStepping::FEHLBERG :
+        {
+          method_name = "fehlberg";
+          break;
+        }
+      case TimeStepping::CASH_KARP :
+        {
+          method_name = "cash_karp";
+          break;
+        }
+      default :
+        {
+          break;
+        }
+    }
+
+    DataOut<2> data_out;
+
+    data_out.attach_dof_handler(dof_handler);
+    data_out.add_data_vector(solution, "flux");
+
+    data_out.build_patches();
+
+    const std::string filename = "solution-" + method_name + "-" +
+                                 Utilities::int_to_string (time_step, 3) +
+                                 ".vtu";
+    std::ofstream output(filename.c_str());
+    data_out.write_vtu(output);
+  }
+
+
+
+  void Diffusion::explicit_method(TimeStepping::runge_kutta_method method,
+                                  const unsigned int                n_time_steps,
+                                  const double                      initial_time,
+                                  const double                      final_time)
+  {
+    const double time_step = (final_time-initial_time)/static_cast<double> (n_time_steps);
+    double time = initial_time;
+    solution = 0.;
+
+    TimeStepping::ExplicitRungeKutta<Vector<double> > explicit_runge_kutta(method);
+    output_results(0,method);
+    for (unsigned int i=0; i<n_time_steps; ++i)
+    {
+      // Because we use a member function, we need to bind this to the
+      // function.
+      time = explicit_runge_kutta.evolve_one_time_step(
+          std_cxx1x::bind(&Diffusion::evaluate_diffusion,this,std_cxx1x::_1,std_cxx1x::_2),
+          time,time_step,solution);
+
+      // We output the results every 10 time steps.
+      if ((i+1)%10==0)
+        output_results(i+1,method);
+    }
+  }
+
+
+
+  void Diffusion::implicit_method(TimeStepping::runge_kutta_method method,
+                                  const unsigned int               n_time_steps,
+                                  const double                     initial_time,
+                                  const double                     final_time)
+  {
+    const double time_step = (final_time-initial_time)/static_cast<double> (n_time_steps);
+    double time = initial_time;
+    solution = 0.;
+
+    TimeStepping::ImplicitRungeKutta<Vector<double> > implicit_runge_kutta(method);
+    output_results(0,method);
+    for (unsigned int i=0; i<n_time_steps; ++i)
+    {
+      // Because we use a member function, we need to bind this to the
+      // function.
+      time = implicit_runge_kutta.evolve_one_time_step(
+          std_cxx1x::bind(&Diffusion::evaluate_diffusion,this,std_cxx1x::_1,std_cxx1x::_2),
+          std_cxx1x::bind(&Diffusion::id_minus_tau_J_inverse,this,std_cxx1x::_1,std_cxx1x::_2,
+            std_cxx1x::_3),
+          time,time_step,solution);
+
+      // We output the results every 10 time steps.
+      if ((i+1)%10==0)
+        output_results(i+1,method);
+    }
+  }
+
+
+
+  unsigned int Diffusion::embedded_explicit_method(TimeStepping::runge_kutta_method method,
+                                                   const unsigned int n_time_steps,
+                                                   const double initial_time,
+                                                   const double final_time)
+  {
+    double time_step = (final_time-initial_time)/static_cast<double> (n_time_steps);
+    double time = initial_time;
+    // Factor multiplying the current time step when the error is below the
+    // threshold.
+    const double coarsen_param = 1.2;
+    // Factor multiplying the current time step when the error is above the
+    // threshold.
+    const double refine_param = 0.8;
+    // Smallest time step acceptable.
+    const double min_delta = 1e-8;
+    // Largest time step acceptable.
+    const double max_delta = 10*time_step;
+    // Threshold above which the time step is refined.
+    const double refine_tol = 1e-1;
+    // Threshold below which the time step is coarsen.
+    const double coarsen_tol = 1e-5;
+    solution = 0.;
+
+    TimeStepping::EmbeddedExplicitRungeKutta<Vector<double> > embedded_explicit_runge_kutta(method,
+        coarsen_param,refine_param,min_delta,max_delta,refine_tol,coarsen_tol);
+    output_results(0,method);
+    unsigned int n_steps=0;
+    while (time<final_time)
+    {
+      // Choose the last time step to reach final_time.
+      if (time+time_step>final_time)
+        time_step = final_time-time;
+
+      // Because we use a member function, we need to bind this to the
+      // function.
+      time = embedded_explicit_runge_kutta.evolve_one_time_step(
+          std_cxx1x::bind(&Diffusion::evaluate_diffusion,this,std_cxx1x::_1,std_cxx1x::_2),
+          time,time_step,solution);
+
+      // We output the results every 10 time steps.
+      if ((n_steps+1)%10==0)
+        output_results(n_steps+1,method);
+
+      // Update the time step
+      time_step = embedded_explicit_runge_kutta.get_status().delta_t_guess;
+      ++n_steps;
+    }
+
+    return n_steps;
+  }
+
+
+
+  void Diffusion::run()
+  {
+    // Create the grid (a square [0,5]x[0,5]) and refine the mesh four times.
+    // The final gird has 16 times 16 cells, for a total of 256.
+    GridGenerator::hyper_cube(triangulation, 0., 5.);
+    triangulation.refine_global(4);
+
+    // Set the boundary indicator for x=0 and x=5 to 1
+    typename Triangulation<2>::active_cell_iterator
+    cell = triangulation.begin_active(),
+    endc = triangulation.end();
+           
+    for (; cell!=endc; ++cell)
+      for (unsigned int f=0; f<GeometryInfo<2>::faces_per_cell; ++f)
+        if (cell->face(f)->at_boundary())
+        {
+          if ((cell->face(f)->center()[0]==0.) || (cell->face(f)->center()[0]==5.))
+            cell->face(f)->set_boundary_indicator(1);  
+          else
+            cell->face(f)->set_boundary_indicator(0);  
+        }
+
+    setup_system();
+
+    assemble_system();
+
+    unsigned int n_steps = 0;
+    const unsigned int n_time_steps = 200;
+    const double initial_time = 0.;
+    const double final_time = 10.;
+
+    // Use forward Euler
+    explicit_method(TimeStepping::FORWARD_EULER,n_time_steps,initial_time,final_time);
+    std::cout<<"Forward Euler error: "<<solution.l2_norm()<<std::endl;
+    // Use third order Runge-Kutta
+    explicit_method(TimeStepping::RK_THIRD_ORDER,n_time_steps,initial_time,final_time);
+    std::cout<<"Third order Runge-Kutta error: "<<solution.l2_norm()<<std::endl;
+    // Use fourth order Runge-Kutta
+    explicit_method(TimeStepping::RK_CLASSIC_FOURTH_ORDER,n_time_steps,initial_time,final_time);
+    std::cout<<"Fourth order Runge-Kutta error: "<<solution.l2_norm()<<std::endl;
+
+
+    // Use backward Euler
+    implicit_method(TimeStepping::BACKWARD_EULER,n_time_steps,initial_time,final_time);
+    std::cout<<"Backward Euler error: "<<solution.l2_norm()<<std::endl;
+    // Use implicit midpoint
+    implicit_method(TimeStepping::IMPLICIT_MIDPOINT,n_time_steps,initial_time,final_time);
+    std::cout<<"Implicit Midpoint error: "<<solution.l2_norm()<<std::endl;
+    // Use Crank-NICOLSON
+    implicit_method(TimeStepping::CRANK_NICOLSON,n_time_steps,initial_time,final_time);
+    std::cout<<"Crank-Nicolson error: "<<solution.l2_norm()<<std::endl;
+    // Use two stages SDIRK
+    implicit_method(TimeStepping::SDIRK_TWO_STAGES,n_time_steps,initial_time,final_time);
+    std::cout<<"SDIRK error: "<<solution.l2_norm()<<std::endl;
+
+    
+    // Use Heun-Euler
+    n_steps = embedded_explicit_method(TimeStepping::HEUN_EULER,n_time_steps,initial_time,final_time);
+    std::cout<<"Heun-Euler error: "<<solution.l2_norm()<<std::endl;
+    std::cout<<"Number of steps done: "<<n_steps<<std::endl;
+    // Use Bogacki-Shampine
+    n_steps = embedded_explicit_method(TimeStepping::BOGACKI_SHAMPINE,n_time_steps,initial_time,final_time);
+    std::cout<<"Bogacki-Shampine error: "<<solution.l2_norm()<<std::endl;
+    std::cout<<"Number of steps done: "<<n_steps<<std::endl;
+    // Use Dopri
+    n_steps = embedded_explicit_method(TimeStepping::DOPRI,n_time_steps,initial_time,final_time);
+    std::cout<<"Dopri error: "<<solution.l2_norm()<<std::endl;
+    std::cout<<"Number of steps done: "<<n_steps<<std::endl;
+    // Use Fehlberg
+    n_steps = embedded_explicit_method(TimeStepping::FEHLBERG,n_time_steps,initial_time,final_time);
+    std::cout<<"Fehlberg error: "<<solution.l2_norm()<<std::endl;
+    std::cout<<"Number of steps done: "<<n_steps<<std::endl;
+    // Use Cash-Karp
+    n_steps = embedded_explicit_method(TimeStepping::CASH_KARP,n_time_steps,initial_time,final_time);
+    std::cout<<"Cash-Karp error: "<<solution.l2_norm()<<std::endl;
+    std::cout<<"Number of steps done: "<<n_steps<<std::endl;
+  }
+}
+
+
+
+// The following <code>main</code> function is similar to previous examples as
+// well, and need not be commented on.
+int main ()
+{
+  try
+  {
+    Step52::Diffusion diffusion;
+    diffusion.run();
+  }
+  catch (std::exception &exc)
+  {
+    std::cerr << std::endl << std::endl
+      << "----------------------------------------------------"
+      << std::endl;
+    std::cerr << "Exception on processing: " << std::endl
+      << exc.what() << std::endl
+      << "Aborting!" << std::endl
+      << "----------------------------------------------------"
+      << std::endl;
+    return 1;
+  }
+  catch (...)
+  {
+    std::cerr << std::endl << std::endl
+      << "----------------------------------------------------"
+      << std::endl;
+    std::cerr << "Unknown exception!" << std::endl
+      << "Aborting!" << std::endl
+      << "----------------------------------------------------"
+      << std::endl;
+    return 1;
+  };
+
+  return 0;
+}
index 5dcd8ecee8806a7f3cf891068710260eb5689ee5..07901f9bcbaf077a8621cc07f94c3ac15f8032fe 100644 (file)
@@ -449,11 +449,13 @@ void Step6<dim>::assemble_system ()
                                              system_matrix,
                                              system_rhs);
     }
-  // Now we are done assembling the linear system.  The constrained nodes are
-  // still in the linear system (there is a one on the diagonal of the matrix
-  // and all other entries for this line are set to zero) but the computed
-  // values are invalid. We compute the correct values for these nodes at the
-  // end of the <code>solve</code> function.
+  // Now we are done assembling the linear system. The constraint matrix took
+  // care of applying the boundary conditions and also eliminated hanging node
+  // constraints. The constrained nodes are still in the linear system (there
+  // is a one on the diagonal of the matrix and all other entries for this
+  // line are set to zero) but the computed values are invalid. We compute the
+  // correct values for these nodes at the end of the <code>solve</code>
+  // function.
 }
 
 
index d5a92111d9f563e1fa75e7e17806d88ceba3069e..8845a5071e8520f02a0e6599a4f2b33c9d130522 100644 (file)
@@ -20,6 +20,7 @@
 #include <deal.II/base/config.h>
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/subscriptor.h>
+#include <deal.II/base/named_data.h>
 
 #include <boost/any.hpp>
 #include <vector>
@@ -38,6 +39,9 @@ class AnyData :
    public Subscriptor
 {
   public:
+    /// Default constructor for empty object
+    AnyData();
+    
     /// Number of stored data objects.
     unsigned int size() const;
     
@@ -52,20 +56,53 @@ class AnyData :
 
     /**
      * @brief Access to stored data object by name.
+     *
+     * Find the object with given name, try to convert it to
+     * <tt>type</tt> and return it. This function throws an exception
+     * if either the name does not exist or if the conversion
+     * fails. If such an exception is not desired, use try_read()
+     * instead.
      */
     template <typename type>
     type entry (const std::string& name);
 
-    /// Read-only access to stored data object by name.
+    /**
+     * @brief Read-only access to stored data object by name.
+     *
+     * Find the object with given name, try to convert it to
+     * <tt>type</tt> and return it. This function throws an exception
+     * if either the name does not exist or if the conversion
+     * fails. If such an exception is not desired, use try_read()
+     * instead.
+     */
     template <typename type>
     const type entry (const std::string& name) const;
 
-    /// Dedicated read only access by name.
+    /**
+     * @brief Dedicated read only access by name.
+     *
+     * For a constant object, this function equals entry(). For a
+     * non-const object, it forces read only access to the data. In
+     * particular, it throws an exception if the object is not found
+     * or cannot be converted to type.  If such an exception is not
+     * desired, use try_read() instead.
+     */
     template <typename type>
     const type read (const std::string& name) const;
     
+    /**
+     * @brief Dedicated read only access by name without exceptions.
+     *
+     * This function tries to find the name in the list and return a
+     * pointer to the associated object. If either the name is not
+     * found or the object cannot be converted to the return type, a
+     * null pointer is returned.
+     */
+    template <typename type>
+    const type * try_read (const std::string& name) const;
+    
   /**
-   * @brief Access to stored data object by index.
+   * Access to stored data object by index.
    */
     template <typename type>
     type entry (const unsigned int i);
@@ -81,12 +118,21 @@ class AnyData :
     /// Name of object at index.
     const std::string &name(const unsigned int i) const;
 
-    /// Find index of a named object
+    /**
+     * @brief Find index of a named object
+     *
+     * Try to find the objecty and return its index in the list. Throw
+     * an exception if the object has not been found.
+     */
     unsigned int find(const std::string &name) const;
 
     /// Find out if object is of a certain type
     template <typename type>
     bool is_type(const unsigned int i) const;
+
+    /// Conversion from old NamedData
+    template <typename type>
+    AnyData(const NamedData<type>&);
     
     /// The requested type and the stored type are different
   DeclException2(ExcTypeMismatch,
@@ -103,6 +149,20 @@ class AnyData :
 };
 
 
+inline
+AnyData::AnyData()
+{}
+
+
+template <typename type>
+inline
+AnyData::AnyData(const NamedData<type>& other)
+{
+  for (unsigned int i=0;i<other.size();++i)
+    add(other(i), other.name(i));
+}
+
+
 unsigned int
 inline
 AnyData::size () const
@@ -221,6 +281,25 @@ AnyData::read(const std::string& n) const
 }
 
 
+template <typename type>
+inline
+const type*
+AnyData::try_read(const std::string& n) const
+{
+  // Try to find name
+  std::vector<std::string>::const_iterator it =
+    std::find(names.begin(), names.end(), n);
+  // Return null pointer if not found
+  if (it == names.end())
+    return 0;
+
+  // Compute index and return casted pointer
+  unsigned int i=it-names.begin();
+  const type* p = boost::any_cast<type>(&data[i]);
+  return p;
+}
+
+
 template <typename type>
 inline
 void
index 43ade372dfbf9d6b930726255cb1aed5073f94dd..e6bb52410afb2e940ab78e9b4e95ca4d34c163a5 100644 (file)
@@ -65,11 +65,11 @@ namespace Algorithms
    * error term. In order to avoid a loss of convergence order, the
    * adaptive theta scheme can be used, where <i>#theta=½+c dt</i>.
    *
-   * Assume that we want to solve the equation <i>u' + Au = 0</i> with a
+   * Assume that we want to solve the equation <i>u' + F(u) = 0</i> with a
    * step size <i>k</i>.  A step of the theta scheme can be written as
    *
    * @f[
-   *   (M + \theta k A) u_{n+1} = (M - (1-\theta)k A) u_n.
+   *   M u_{n+1} + \theta k F(u_{n+1})  = M u_n - (1-\theta)k F(u_n).
    * @f]
    *
    * Here, <i>M</i> is the mass matrix. We see, that the right hand side
@@ -80,15 +80,20 @@ namespace Algorithms
    * Operator objects, one for the explicit, one for the implicit
    * part. Each of these will use its own TimestepData to account for
    * the modified step sizes (and different times if the problem is not
-   * autonomous).
+   * autonomous). Note that once the explicit part has been computed,
+   * the left hand side actually constitutes a linear or nonlinear
+   * system which has to be solved.
    *
-   * <h3>Usage of vectors in NamedData</h3>
+   * <h3>Usage AnyData</h3>
    *
-   * ThetaTimestepping uses NamedData for communicating vectors. With
+   * ThetaTimestepping uses AnyData for communicating vectors and time
+   * step information. With
    * outer or inner Operator objects. It does not use itself the input
    * vectors provided, but forwards them to the explicit and implicit
    * operators.
    *
+   * <h4>Vector data</h4>
+   *
    * The explicit Operator #op_explicit receives in its input in first
    * place the vector <tt>"Previous iterate"</tt>, which is the solution
    * value after the previous timestep. It is followed by all vectors
@@ -103,6 +108,17 @@ namespace Algorithms
    * #op_implicit is directly written into the output argument given to
    * ThetaTimestepping.
    *
+   * <h4>Scalar data</h4>
+   *
+   * Since the introduction of AnyData, ThetaTimestepping is able to
+   * communicate the current time step information through AnyData as
+   * well. Therefore, the AnyData objects handed as input to
+   * #op_explicit and #op_implicit contain two entries of type
+   * <tt>const double</tt> reference named "Time" and "Timestep". Note
+   * that "Time" refers to the time at the beginning of the current
+   * step for #op_explicit and at the end for #op_implicit,
+   * respectively.
+   *
    * <h3>Usage of ThetaTimestepping</h3>
    *
    * The use ThetaTimestepping is more complicated than for instance
index 6194088cfebd1c89ea871933d48b24372fd11b0e..348ab379cb6cb2afb54f16945bdafc832a74b225 100644 (file)
@@ -91,6 +91,8 @@ namespace Algorithms
     // timestep
     AnyData src1;
     src1.add<const VECTOR*>(&solution, "Previous iterate");
+    src1.add<const double&>(d_explicit.time, "Time");
+    src1.add<const double&>(d_explicit.step, "Timestep");
     src1.merge(in);
 
     AnyData src2;
@@ -100,6 +102,8 @@ namespace Algorithms
     out1.add<VECTOR*>(aux, "Solution");
     // The data provided to the inner solver
     src2.add<const VECTOR*>(aux, "Previous time");
+    src2.add<const double&>(d_implicit.time, "Time");
+    src2.add<const double&>(d_explicit.step, "Timestep");
     src2.merge(in);
 
     if (output != 0)
index 1d99e497ba8745314341051f86dad10748f5d406..8f82a02ee3917ed3a3c49df7afda51cbf38372c8 100644 (file)
 #ifdef DEAL_II_WITH_LAPACK
 /** Compatibility definition (with naming from deal.II < 8.0): */
 #  define HAVE_LIBLAPACK
-
-/* Defined if the corresponding BLAS or LAPACK function is available */
-#cmakedefine HAVE_DAXPY_
-#cmakedefine HAVE_DGEEVX_
-#cmakedefine HAVE_DGEEV_
-#cmakedefine HAVE_DGELSD_
-#cmakedefine HAVE_DGEMM_
-#cmakedefine HAVE_DGEMV_
-#cmakedefine HAVE_DGEQRF_
-#cmakedefine HAVE_DGESDD_
-#cmakedefine HAVE_DGESVD_
-#cmakedefine HAVE_DGETRF_
-#cmakedefine HAVE_DGETRI_
-#cmakedefine HAVE_DGETRS_
-#cmakedefine HAVE_DORGQR_
-#cmakedefine HAVE_DORMQR_
-#cmakedefine HAVE_DSTEV_
-#cmakedefine HAVE_DSYEVX_
-#cmakedefine HAVE_DSYGV_
-#cmakedefine HAVE_DSYGVX_
-#cmakedefine HAVE_DTRTRS_
-#cmakedefine HAVE_SAXPY_
-#cmakedefine HAVE_SGEEVX_
-#cmakedefine HAVE_SGEEV_
-#cmakedefine HAVE_SGELSD_
-#cmakedefine HAVE_SGEMM_
-#cmakedefine HAVE_SGEMV_
-#cmakedefine HAVE_SGEQRF_
-#cmakedefine HAVE_SGESDD_
-#cmakedefine HAVE_SGESVD_
-#cmakedefine HAVE_SGETRF_
-#cmakedefine HAVE_SGETRI_
-#cmakedefine HAVE_SGETRS_
-#cmakedefine HAVE_SORGQR_
-#cmakedefine HAVE_SORMQR_
-#cmakedefine HAVE_SSTEV_
-#cmakedefine HAVE_SSYEVX_
-#cmakedefine HAVE_SSYGV_
-#cmakedefine HAVE_SSYGVX_
-#cmakedefine HAVE_STRTRS_
+#  define HAVE_DAXPY_
+#  define HAVE_DGEEVX_
+#  define HAVE_DGEEV_
+#  define HAVE_DGELSD_
+#  define HAVE_DGEMM_
+#  define HAVE_DGEMV_
+#  define HAVE_DGEQRF_
+#  define HAVE_DGESDD_
+#  define HAVE_DGESVD_
+#  define HAVE_DGETRF_
+#  define HAVE_DGETRI_
+#  define HAVE_DGETRS_
+#  define HAVE_DORGQR_
+#  define HAVE_DORMQR_
+#  define HAVE_DSTEV_
+#  define HAVE_DSYEVX_
+#  define HAVE_DSYGV_
+#  define HAVE_DSYGVX_
+#  define HAVE_DTRTRS_
+#  define HAVE_SAXPY_
+#  define HAVE_SGEEVX_
+#  define HAVE_SGEEV_
+#  define HAVE_SGELSD_
+#  define HAVE_SGEMM_
+#  define HAVE_SGEMV_
+#  define HAVE_SGEQRF_
+#  define HAVE_SGESDD_
+#  define HAVE_SGESVD_
+#  define HAVE_SGETRF_
+#  define HAVE_SGETRI_
+#  define HAVE_SGETRS_
+#  define HAVE_SORGQR_
+#  define HAVE_SORMQR_
+#  define HAVE_SSTEV_
+#  define HAVE_SSYEVX_
+#  define HAVE_SSYGV_
+#  define HAVE_SSYGVX_
+#  define HAVE_STRTRS_
 #endif
 
 
index 5a734f16c70171fd81f265c0dca560f5f08810c6..6c1dff4bc90204b69757ea4fee4b3b8f164cdec8 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2011 - 2013 by the deal.II authors
+// Copyright (C) 2011 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -274,15 +274,20 @@ namespace Utilities
        * Initialize MPI (and optionally PETSc) and set the number of threads
        * used by deal.II (and TBB) to the given parameter. If set to
        * numbers::invalid_unsigned_int, the number of threads is determined by
-       * TBB. When in doubt, set this value to 1.
+       * TBB. When in doubt, set this value to 1 since MPI jobs are typically
+       * run in a way where one has one MPI process per available processor
+       * core and there will be little CPU resources left to support multithreaded
+       * processes.
        *
-       * This will call MultithreadInfo::set_thread_limit() with @p
-       * max_num_threads, so the environment variable DEAL_II_NUM_THREADS will
-       * be respected.
+       * This function calls MultithreadInfo::set_thread_limit()
+       * unconditionally with @p max_num_threads . That function in turn also
+       * evaluates the environment variable DEAL_II_NUM_THREADS and the number
+       * of threads to be used will be the minimum of the argument passed here
+       * and the environment (if both are set).
        */
       MPI_InitFinalize (int    &argc,
                         char ** &argv,
-                        unsigned int max_num_threads);
+                        const unsigned int max_num_threads);
       /**
        * Destructor. Calls <tt>MPI_Finalize()</tt> in case this class owns the
        * MPI process.
@@ -304,7 +309,7 @@ namespace Utilities
        */
       void do_init(int    &argc,
                    char ** &argv,
-                   unsigned int max_num_threads);
+                   const unsigned int max_num_threads);
     };
 
     namespace internal
index 20b549080c3fc1930c79d9ec923178467c4af7ea..59e2a96b883db4844be5ecc18641b34205b20a71 100644 (file)
@@ -26,6 +26,7 @@
 
 DEAL_II_NAMESPACE_OPEN
 
+class AnyData;
 
 /**
  * @deprecated The use of this class is deprecated and AnyData should
@@ -207,6 +208,13 @@ public:
   template <typename DATA>
   void initialize(const NamedData<DATA> &data);
 
+  /**
+   * Create the index vector
+   * pointing into the AnyData
+   * object.
+   */
+  void initialize(const AnyData &data);
+
   /**
    * The number of names in this
    * object. This function may be
index a448a80c9e08d9722f62c62f82603567d6112bae..5bfe461aa0f30197386f9e0c4b9e9af4be0a0e1e 100644 (file)
@@ -435,6 +435,29 @@ private:
 
 
 
+/**
+ * Sorted Quadrature. Given an arbitrary quadrature formula, this
+ * class generates a quadrature formula where the quadrature points
+ * are ordered according the weights, from those with smaller
+ * corresponding weight, to those with higher corresponding weights.
+ * This might be necessary, for example, when integrating high order
+ * polynomials, since in these cases you might sum very big numbers
+ * with very small numbers, and summation is not stable if the numbers
+ * to sum are not close to each other.
+ */
+template <int dim>
+class QSorted : public Quadrature<dim>
+{
+public:
+  /** The constructor takes an arbitrary quadrature formula. */
+  QSorted (const Quadrature<dim>);
+  
+  /** A rule to reorder pairs of points and weights.*/
+  bool operator()(const std::pair<double, Point<dim> > &a,
+                 const std::pair<double, Point<dim> > &b);
+};
+
+
 /*@}*/
 
 /* -------------- declaration of explicit specializations ------------- */
index a8e14d9dac4534aaa17e24bd80a4ddd5fffe77df..ca843ed5dd0825e880cc6e5b80a9f9a6b3c6c508 100644 (file)
@@ -172,6 +172,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 64 bytes, as opposed
+   * to casting a double address to VectorizedArray<double>*.
+   */
+  void load (const double* ptr)
+  {
+    data = _mm512_loadu_pd (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 64 bytes, as opposed to casting a double address to
+   * VectorizedArray<double>*.
+   */
+  void store (double* ptr) const
+  {
+    _mm512_storeu_pd (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class represents a POD data type, it
    * remains public.
@@ -343,6 +364,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 64 bytes, as opposed
+   * to casting a float address to VectorizedArray<float>*.
+   */
+  void load (const float* ptr)
+  {
+    data = _mm512_loadu_ps (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 64 bytes, as opposed to casting a float address to
+   * VectorizedArray<float>*.
+   */
+  void store (float* ptr) const
+  {
+    _mm512_storeu_ps (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class represents a POD data type, it
    * remains public.
@@ -526,6 +568,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 32 bytes, as opposed
+   * to casting a double address to VectorizedArray<double>*.
+   */
+  void load (const double* ptr)
+  {
+    data = _mm256_loadu_pd (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 32 bytes, as opposed to casting a double address to
+   * VectorizedArray<double>*.
+   */
+  void store (double* ptr) const
+  {
+    _mm256_storeu_pd (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class
    * represents a POD data type, it remains
@@ -704,6 +767,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 32 bytes, as opposed
+   * to casting a float address to VectorizedArray<float>*.
+   */
+  void load (const float* ptr)
+  {
+    data = _mm256_loadu_ps (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 32 bytes, as opposed to casting a float address to
+   * VectorizedArray<float>*.
+   */
+  void store (float* ptr) const
+  {
+    _mm256_storeu_ps (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class
    * represents a POD data type, it remains
@@ -890,6 +974,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 16 bytes, as opposed
+   * to casting a double address to VectorizedArray<double>*.
+   */
+  void load (const double* ptr)
+  {
+    data = _mm_loadu_pd (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 16 bytes, as opposed to casting a double address to
+   * VectorizedArray<double>*.
+   */
+  void store (double* ptr) const
+  {
+    _mm_storeu_pd (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class
    * represents a POD data type, it remains
@@ -1069,6 +1174,27 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by 16 bytes, as opposed
+   * to casting a float address to VectorizedArray<float>*.
+   */
+  void load (const float* ptr)
+  {
+    data = _mm_loadu_ps (ptr);
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * 16 bytes, as opposed to casting a float address to
+   * VectorizedArray<float>*.
+   */
+  void store (float* ptr) const
+  {
+    _mm_storeu_ps (ptr, data);
+  }
+
   /**
    * Actual data field. Since this class
    * represents a POD data type, it remains
@@ -1288,6 +1414,28 @@ public:
     return *this;
   }
 
+  /**
+   * Loads @p n_array_elements from memory into the calling class, starting at
+   * the given address. The memory need not be aligned by the amount of bytes
+   * in the vectorized array, as opposed to casting a double address to
+   * VectorizedArray<double>*.
+   */
+  void load (const Number* ptr)
+  {
+    data = *ptr;
+  }
+
+  /**
+   * Writes the content of the calling class into memory in form of @p
+   * n_array_elements to the given address. The memory need not be aligned by
+   * the amount of bytes in the vectorized array, as opposed to casting a
+   * double address to VectorizedArray<double>*.
+   */
+  void store (Number* ptr) const
+  {
+    *ptr = data;
+  }
+
   /**
    * Actual data field. Since this class
    * represents a POD data type, it is declared
@@ -1761,52 +1909,65 @@ namespace std
   ::dealii::VectorizedArray<Number>
   sin (const ::dealii::VectorizedArray<Number> &x)
   {
-    ::dealii::VectorizedArray<Number> sin_val;
+    // put values in an array and later read in that array with an unaligned
+    // read. This should safe some instructions as compared to directly
+    // setting the individual elements and also circumvents a compiler
+    // optimization bug in gcc-4.6 (see also deal.II developers list from
+    // April 2014, topic "matrix_free/step-48 Test").
+    Number values[::dealii::VectorizedArray<Number>::n_array_elements];
     for (unsigned int i=0; i<dealii::VectorizedArray<Number>::n_array_elements; ++i)
-      sin_val[i] = std::sin(x[i]);
-    return sin_val;
+      values[i] = std::sin(x[i]);
+    ::dealii::VectorizedArray<Number> out;
+    out.load(&values[0]);
+    return out;
   }
 
 
 
   /**
-   * Computes the tangent of a vectorized data field. The result is returned as
-   * vectorized array in the form <tt>{tan(x[0]), tan(x[1]), ...,
-   * tan(x[n_array_elements-1])}</tt>.
+   * Computes the cosine of a vectorized data field. The result is returned as
+   * vectorized array in the form <tt>{cos(x[0]), cos(x[1]), ...,
+   * cos(x[n_array_elements-1])}</tt>.
    *
    * @relates VectorizedArray
    */
   template <typename Number>
   inline
   ::dealii::VectorizedArray<Number>
-  tan (const ::dealii::VectorizedArray<Number> &x)
+  cos (const ::dealii::VectorizedArray<Number> &x)
   {
-    ::dealii::VectorizedArray<Number> tan_val;
+    Number values[::dealii::VectorizedArray<Number>::n_array_elements];
     for (unsigned int i=0; i<dealii::VectorizedArray<Number>::n_array_elements; ++i)
-      tan_val[i] = std::tan(x[i]);
-    return tan_val;
+      values[i] = std::cos(x[i]);
+    ::dealii::VectorizedArray<Number> out;
+    out.load(&values[0]);
+    return out;
   }
 
 
+
   /**
-   * Computes the cosine of a vectorized data field. The result is returned as
-   * vectorized array in the form <tt>{cos(x[0]), cos(x[1]), ...,
-   * cos(x[n_array_elements-1])}</tt>.
+   * Computes the tangent of a vectorized data field. The result is returned as
+   * vectorized array in the form <tt>{tan(x[0]), tan(x[1]), ...,
+   * tan(x[n_array_elements-1])}</tt>.
    *
    * @relates VectorizedArray
    */
   template <typename Number>
   inline
   ::dealii::VectorizedArray<Number>
-  cos (const ::dealii::VectorizedArray<Number> &x)
+  tan (const ::dealii::VectorizedArray<Number> &x)
   {
-    ::dealii::VectorizedArray<Number> cos_val;
+    Number values[::dealii::VectorizedArray<Number>::n_array_elements];
     for (unsigned int i=0; i<dealii::VectorizedArray<Number>::n_array_elements; ++i)
-      cos_val[i] = std::cos(x[i]);
-    return cos_val;
+      values[i] = std::tan(x[i]);
+    ::dealii::VectorizedArray<Number> out;
+    out.load(&values[0]);
+    return out;
   }
 
 
+
   /**
    * Computes the exponential of a vectorized data field. The result is returned
    * as vectorized array in the form <tt>{exp(x[0]), exp(x[1]), ...,
@@ -1819,13 +1980,16 @@ namespace std
   ::dealii::VectorizedArray<Number>
   exp (const ::dealii::VectorizedArray<Number> &x)
   {
-    ::dealii::VectorizedArray<Number> exp_val;
+    Number values[::dealii::VectorizedArray<Number>::n_array_elements];
     for (unsigned int i=0; i<dealii::VectorizedArray<Number>::n_array_elements; ++i)
-      exp_val[i] = std::exp(x[i]);
-    return exp_val;
+      values[i] = std::exp(x[i]);
+    ::dealii::VectorizedArray<Number> out;
+    out.load(&values[0]);
+    return out;
   }
 
 
+
   /**
    * Computes the natural logarithm of a vectorized data field. The result is
    * returned as vectorized array in the form <tt>{log(x[0]), log(x[1]), ...,
@@ -1838,10 +2002,12 @@ namespace std
   ::dealii::VectorizedArray<Number>
   log (const ::dealii::VectorizedArray<Number> &x)
   {
-    ::dealii::VectorizedArray<Number> log_val;
+    Number values[::dealii::VectorizedArray<Number>::n_array_elements];
     for (unsigned int i=0; i<dealii::VectorizedArray<Number>::n_array_elements; ++i)
-      log_val[i] = std::log(x[i]);
-    return log_val;
+      values[i] = std::log(x[i]);
+    ::dealii::VectorizedArray<Number> out;
+    out.load(&values[0]);
+    return out;
   }
 
 
index 794846d24820de7e04f2311a3f7614019fabc311..e48384738c25ab0fb659f1b6e75d3e832776bc8e 100644 (file)
@@ -331,7 +331,7 @@ namespace parallel
 
       /**
        * A typedef that is used to to identify
-       * see @ref GlossActive "active cell iterators". The
+       * @ref GlossActive "active cell iterators". The
        * concept of iterators is discussed at length in the
        * @ref Iterators "iterators documentation module".
        *
index 5feae64959c235e8221713b4f92b64d8bbd633d8..7901770fea118488f9965cb4571773451b945c51 100644 (file)
@@ -197,8 +197,57 @@ public:
   typedef typename ActiveSelector::hex_iterator         hex_iterator;
   typedef typename ActiveSelector::active_hex_iterator  active_hex_iterator;
 
+  /**
+   * A typedef that is used to to identify
+   * @ref GlossActive "active cell iterators". The
+   * concept of iterators is discussed at length in the
+   * @ref Iterators "iterators documentation module".
+   *
+   * The current typedef identifies active cells in a DoFHandler object.
+   * While the actual data type of the typedef is hidden behind a few layers
+   * of (unfortunately necessary) indirections, it is in essence
+   * TriaActiveIterator<DoFCellAccessor>. The TriaActiveIterator
+   * class works like a pointer to active objects that when you
+   * dereference it yields an object of type DoFCellAccessor.
+   * DoFCellAccessor is a class that identifies properties that
+   * are specific to cells in a DoFHandler, but it is derived
+   * (and consequently inherits) from both DoFAccessor, TriaCellAccessor
+   * and TriaAccessor that describe
+   * what you can ask of more general objects (lines, faces, as
+   * well as cells) in a triangulation and DoFHandler objects.
+   *
+   * @ingroup Iterators
+   */
   typedef typename ActiveSelector::active_cell_iterator active_cell_iterator;
 
+  /**
+   * A typedef that is used to to identify cell iterators. The
+   * concept of iterators is discussed at length in the
+   * @ref Iterators "iterators documentation module".
+   *
+   * The current typedef identifies cells in a DoFHandler object. Some
+   * of these cells may in fact be active (see @ref GlossActive "active cell iterators")
+   * in which case they can in fact be asked for the degrees of freedom
+   * that live on them. On the other hand, if the cell is not active,
+   * any such query will result in an error. Note that this is what distinguishes
+   * this typedef from the level_cell_iterator typedef.
+   *
+   * While the actual data type of the typedef is hidden behind a few layers
+   * of (unfortunately necessary) indirections, it is in essence
+   * TriaIterator<DoFCellAccessor>. The TriaIterator
+   * class works like a pointer to objects that when you
+   * dereference it yields an object of type DoFCellAccessor.
+   * DoFCellAccessor is a class that identifies properties that
+   * are specific to cells in a DoFHandler, but it is derived
+   * (and consequently inherits) from both DoFAccessor, TriaCellAccessor
+   * and TriaAccessor that describe
+   * what you can ask of more general objects (lines, faces, as
+   * well as cells) in a triangulation and DoFHandler objects.
+   *
+   * @ingroup Iterators
+   */
+  typedef typename ActiveSelector::cell_iterator        cell_iterator;
+
   typedef typename ActiveSelector::face_iterator        face_iterator;
   typedef typename ActiveSelector::active_face_iterator active_face_iterator;
 
@@ -208,7 +257,6 @@ public:
   typedef typename LevelSelector::cell_iterator         level_cell_iterator;
   typedef typename LevelSelector::face_iterator         level_face_iterator;
 
-  typedef typename ActiveSelector::cell_iterator        cell_iterator;
 
   /**
    * Alias the @p FunctionMap type
index 1be926e630b3694c7133ce09a97ab4673f7f5b34..530ac15439f65390e4e312715ecf710a8b86c81d 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1998 - 2013 by the deal.II authors
+// Copyright (C) 1998 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -533,13 +533,13 @@ public:
                                                    const Point<dim>   &p,
                                                    const unsigned int component) const;
   /**
-   * Check for non-zero values on a face in order to optimize out matrix
-   * elements.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
+   * non-zero function values somewhere on the face @p face_index. The
+   * function is typically used to determine whether some matrix elements
+   * resulting from face integrals can be assumed to be zero and may therefore
+   * be omitted from integration.
    *
-   * A default implementation is provided in this basis class which always
+   * A default implementation is provided in this basa class which always
    * returns @p true. This is the safe way to go.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
index 1a50681b304493b41f15534b2c531bb8f380f205..c95843b45c81b58d0e7c85dd474dcb3f1722bb88 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2003 - 2013 by the deal.II authors
+// Copyright (C) 2003 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -122,13 +122,11 @@ public:
   virtual std::string get_name () const;
 
   /**
-   * Check whether a shape function
-   * may be non-zero on a face.
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    *
-   * Right now, this is only
-   * implemented for RT0 in
-   * 1D. Otherwise, returns always
-   * @p true.
+   * Right now, this is only implemented for RT0 in 1D. Otherwise, returns
+   * always @p true.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 061669414872478676eadc7bac349510287a97a3..069f2594cf93ed0ac9492a46c6a979f366bf4726 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2010 - 2013 by the deal.II authors
+// Copyright (C) 2010 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -81,11 +81,10 @@ public:
 
 
   /**
-   * Check whether a shape function
-   * may be non-zero on a face.
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    *
-   * Returns always
-   * @p true.
+   * For this element, we always return @p true.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 8639be4cdbae13db444e67544cdcbf958f4defa0..b404e45703b08e6f9981e8dbfaa7144ef167616b 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2006 - 2013 by the deal.II authors
+// Copyright (C) 2006 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -80,9 +80,8 @@ FE_DGVector<POLY,dim,spacedim>::get_dpo_vector (const unsigned int deg)
 
 template <class POLY, int dim, int spacedim>
 bool
-FE_DGVector<POLY,dim,spacedim>::has_support_on_face (
-  const unsigned int,
-  const unsigned int) const
+FE_DGVector<POLY,dim,spacedim>::has_support_on_face (const unsigned int,
+                                                    const unsigned int) const
 {
   return true;
 }
index 9fd6a5f04a7f87930a61970c484574343f65f95d..686ce5ffbe837f96f3af498fa0d478f8b20e8349 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -271,17 +271,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index f6a585c3343a396edaae7edaa06d5340e509c01f..74b580c991d96f1c40fa1920655428e42e724dc9 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2004 - 2013 by the deal.II authors
+// Copyright (C) 2004 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -271,17 +271,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 46c5e740e5c6bd3c771b0c02284a25a37a03a351..0579a743d6fea0f4f2844d11b712a0686681e77f 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -324,17 +324,8 @@ public:
    */
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index ec0c7f9e18abd3049e31bc6a43a83cd1d8ed60d3..f7039dfaaf15597b92fd57b20f63f8f1cf431f18 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2001 - 2013 by the deal.II authors
+// Copyright (C) 2001 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -312,17 +312,8 @@ public:
    */
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 2ee366f50fb55bd77443d0eba8320d3848d3e538..b94889963ddcf8dc94206967bd40d327be92c1f8 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2009 - 2013 by the deal.II authors
+// Copyright (C) 2009 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -96,12 +96,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
@@ -199,12 +195,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
@@ -407,12 +399,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index f09e5010bdb333cb1b71996b9b8a5ebd6c4c3980..35c4f73d079f02a75ff21bb04af587e898630595 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -178,8 +178,8 @@ public:
 
 
   /**
-   * Check whether a shape function
-   * may be non-zero on a face.
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 6bfb8a2ace2cabdd67e843670e866a970c8e02d4..1a0b225838857825690fa8f13caa0cdc344c0150 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2000 - 2013 by the deal.II authors
+// Copyright (C) 2000 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -87,12 +87,8 @@ public:
                                     FullMatrix<double>       &matrix) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 90b28f579acfb6cefe7e32fbc463ac1496490880..358503de0e48cd8fe70a18e38cdb57e65179e325 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2012 - 2013 by the deal.II authors
+// Copyright (C) 2012 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -302,12 +302,8 @@ public:
 
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 64d3b644cf97c1d6f1e6fc8618875c3d36321762..d715e328326a98f258c24bdfe3bad77a8e11e9d2 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2002 - 2013 by the deal.II authors
+// Copyright (C) 2002 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -254,17 +254,8 @@ public:
   virtual std::string get_name () const;
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 01182aef014b9c49e754e6613b2a373474408ca1..0966faef7b43e3dfbfd378f6f4a92ee80ba1e7ac 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2003 - 2013 by the deal.II authors
+// Copyright (C) 2003 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -127,13 +127,11 @@ public:
 
 
   /**
-   * Check whether a shape function
-   * may be non-zero on a face.
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    *
-   * Right now, this is only
-   * implemented for RT0 in
-   * 1D. Otherwise, returns always
-   * @p true.
+   * Right now, this is only implemented for RT0 in 1D. Otherwise, returns
+   * always @p true.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
@@ -412,9 +410,10 @@ private:
    */
   static std::vector<bool>
   get_ria_vector (const unsigned int degree);
+
   /**
-   * Check whether a shape function
-   * may be non-zero on a face.
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    *
    * Right now, this is only
    * implemented for RT0 in
index 3744e734cc19d95e731716a6a2ea108f585610f2..362e113fa2fbce659d4295a654c6a083c4f2eefa 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 1999 - 2013 by the deal.II authors
+// Copyright (C) 1999 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -347,12 +347,8 @@ public:
   base_element (const unsigned int index) const;
 
   /**
-   * Check for non-zero values on a face.
-   *
    * This function returns @p true, if the shape function @p shape_index has
-   * non-zero values on the face @p face_index.
-   *
-   * Implementation of the interface in FiniteElement
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index 86f2be75becd0e01fc107d39cd39ab563e5c4df5..cd9daa02bac0b527f8e24030dda6ab5d81533754 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2000 - 2013 by the deal.II authors
+// Copyright (C) 2000 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -75,17 +75,8 @@ public:
   virtual std::string get_name () const;
 
   /**
-   * Check for non-zero values on a face.
-   *
-   * This function returns
-   * @p true, if the shape
-   * function @p shape_index has
-   * non-zero values on the face
-   * @p face_index.
-   *
-   * Implementation of the
-   * interface in
-   * FiniteElement
+   * This function returns @p true, if the shape function @p shape_index has
+   * non-zero function values somewhere on the face @p face_index.
    */
   virtual bool has_support_on_face (const unsigned int shape_index,
                                     const unsigned int face_index) const;
index ca22f7352e119efb28209af7204d667441d5a708..2fdf1cd100b61869f009f9d98bbefd60aa03ebbb 100644 (file)
@@ -1469,7 +1469,7 @@ public:
 
   /**
    * A typedef that is used to to identify
-   * see @ref GlossActive "active cell iterators". The
+   * @ref GlossActive "active cell iterators". The
    * concept of iterators is discussed at length in the
    * @ref Iterators "iterators documentation module".
    *
index 8b0c2b1ace78a288f534d71d405a0194316e2a9c..b0513deadb03ac7a8739e0b75939b5a77cf6d991 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2005 - 2013 by the deal.II authors
+// Copyright (C) 2005 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -95,19 +95,67 @@ namespace hp
     typedef typename ActiveSelector::hex_iterator         hex_iterator;
     typedef typename ActiveSelector::active_hex_iterator  active_hex_iterator;
 
+    /**
+     * A typedef that is used to to identify
+     * @ref GlossActive "active cell iterators". The
+     * concept of iterators is discussed at length in the
+     * @ref Iterators "iterators documentation module".
+     *
+     * The current typedef identifies active cells in a hp::DoFHandler object.
+     * While the actual data type of the typedef is hidden behind a few layers
+     * of (unfortunately necessary) indirections, it is in essence
+     * TriaActiveIterator<DoFCellAccessor>. The TriaActiveIterator
+     * class works like a pointer to active objects that when you
+     * dereference it yields an object of type DoFCellAccessor.
+     * DoFCellAccessor is a class that identifies properties that
+     * are specific to cells in a DoFHandler, but it is derived
+     * (and consequently inherits) from both DoFAccessor, TriaCellAccessor
+     * and TriaAccessor that describe
+     * what you can ask of more general objects (lines, faces, as
+     * well as cells) in a triangulation and hp::DoFHandler objects.
+     *
+     * @ingroup Iterators
+     */
     typedef typename ActiveSelector::active_cell_iterator active_cell_iterator;
 
+    typedef typename LevelSelector::cell_iterator         level_cell_iterator;
+
+    /**
+     * A typedef that is used to to identify cell iterators. The
+     * concept of iterators is discussed at length in the
+     * @ref Iterators "iterators documentation module".
+     *
+     * The current typedef identifies cells in a DoFHandler object. Some
+     * of these cells may in fact be active (see @ref GlossActive "active cell iterators")
+     * in which case they can in fact be asked for the degrees of freedom
+     * that live on them. On the other hand, if the cell is not active,
+     * any such query will result in an error. Note that this is what distinguishes
+     * this typedef from the level_cell_iterator typedef.
+     *
+     * While the actual data type of the typedef is hidden behind a few layers
+     * of (unfortunately necessary) indirections, it is in essence
+     * TriaIterator<DoFCellAccessor>. The TriaIterator
+     * class works like a pointer to objects that when you
+     * dereference it yields an object of type DoFCellAccessor.
+     * DoFCellAccessor is a class that identifies properties that
+     * are specific to cells in a DoFHandler, but it is derived
+     * (and consequently inherits) from both DoFAccessor, TriaCellAccessor
+     * and TriaAccessor that describe
+     * what you can ask of more general objects (lines, faces, as
+     * well as cells) in a triangulation and DoFHandler objects.
+     *
+     * @ingroup Iterators
+     */
+    typedef typename ActiveSelector::cell_iterator        cell_iterator;
+
     typedef typename ActiveSelector::face_iterator        face_iterator;
     typedef typename ActiveSelector::active_face_iterator active_face_iterator;
 
     typedef typename LevelSelector::CellAccessor          level_cell_accessor;
     typedef typename LevelSelector::FaceAccessor          level_face_accessor;
 
-    typedef typename LevelSelector::cell_iterator         level_cell_iterator;
     typedef typename LevelSelector::face_iterator         level_face_iterator;
 
-    typedef level_cell_iterator                           cell_iterator;
-
     /**
      * Alias the @p FunctionMap type
      * declared elsewhere.
@@ -862,7 +910,7 @@ namespace hp
      */
     std::vector<types::global_dof_index>      vertex_dofs_offsets;
 
-    std::vector<MGVertexDoFs> mg_vertex_dofs;
+    std::vector<MGVertexDoFs> mg_vertex_dofs;  // we should really remove this field!
 
     /**
      * Array to store the
index 448244f6eb93813f2383a33f058ac3b3554cfd18..1d09bd1618d8e3e3e4003e6a125d94f41aaa1a85 100644 (file)
@@ -26,6 +26,7 @@
 #include <deal.II/lac/solver.h>
 #include <deal.II/lac/solver_control.h>
 #include <deal.II/lac/full_matrix.h>
+#include <deal.II/lac/lapack_full_matrix.h>
 #include <deal.II/lac/vector.h>
 
 #include <vector>
@@ -170,7 +171,8 @@ public:
     AdditionalData (const unsigned int max_n_tmp_vectors = 30,
                     const bool right_preconditioning = false,
                     const bool use_default_residual = true,
-                    const bool force_re_orthogonalization = false);
+                    const bool force_re_orthogonalization = false,
+                    const bool compute_eigenvalues = false);
 
     /**
      * Maximum number of temporary vectors. This parameter controls the size
@@ -200,6 +202,17 @@ public:
      * if necessary.
      */
     bool force_re_orthogonalization;
+
+    /**
+     * Compute all eigenvalues of the Hessenberg matrix generated while
+     * solving, i.e., the projected system matrix. This gives an approximation
+     * of the eigenvalues of the (preconditioned) system matrix. Since the
+     * Hessenberg matrix is thrown away at restart, the eigenvalues are
+     * printed for every 30 iterations.
+     *
+     * @note Requires LAPACK support.
+     */
+    bool compute_eigenvalues;
   };
 
   /**
@@ -428,6 +441,14 @@ namespace internal
         }
       return *data[i-offset];
     }
+
+    // A comparator for better printing eigenvalues
+    inline
+    bool complex_less_pred(const std::complex<double> &x,
+                           const std::complex<double> &y)
+    {
+      return x.real() < y.real() || (x.real() == y.real() && x.imag() < y.imag());
+    }
   }
 }
 
@@ -439,12 +460,14 @@ SolverGMRES<VECTOR>::AdditionalData::
 AdditionalData (const unsigned int max_n_tmp_vectors,
                 const bool         right_preconditioning,
                 const bool         use_default_residual,
-                const bool         force_re_orthogonalization)
+                const bool         force_re_orthogonalization,
+                const bool         compute_eigenvalues)
   :
   max_n_tmp_vectors(max_n_tmp_vectors),
   right_preconditioning(right_preconditioning),
   use_default_residual(use_default_residual),
-  force_re_orthogonalization(force_re_orthogonalization)
+  force_re_orthogonalization(force_re_orthogonalization),
+  compute_eigenvalues (compute_eigenvalues)
 {}
 
 
@@ -581,6 +604,12 @@ SolverGMRES<VECTOR>::solve (const MATRIX         &A,
   // restart
   unsigned int accumulated_iterations = 0;
 
+  // for eigenvalue computation, need to collect the Hessenberg matrix (before
+  // applying Givens rotations)
+  FullMatrix<double> H_orig;
+  if (additional_data.compute_eigenvalues)
+    H_orig.reinit(n_tmp_vectors, n_tmp_vectors-1);
+
   // matrix used for the orthogonalization process later
   H.reinit(n_tmp_vectors, n_tmp_vectors-1);
 
@@ -727,6 +756,12 @@ SolverGMRES<VECTOR>::solve (const MATRIX         &A,
           if (numbers::is_finite(1./s))
             vv *= 1./s;
 
+          // for eigenvalues, get the resulting coefficients from the
+          // orthogonalization process
+          if (additional_data.compute_eigenvalues)
+            for (unsigned int i=0; i<dim+1; ++i)
+              H_orig(i,inner_iteration) = h(i);
+
           //  Transformation into triagonal structure
           givens_rotation(h,gamma,ci,si,inner_iteration);
 
@@ -795,6 +830,28 @@ SolverGMRES<VECTOR>::solve (const MATRIX         &A,
         for (unsigned int j=0; j<dim; ++j)
           H1(i,j) = H(i,j);
 
+      // compute eigenvalues from the Hessenberg matrix generated during the
+      // inner iterations
+      if (additional_data.compute_eigenvalues)
+        {
+          LAPACKFullMatrix<double> mat(dim,dim);
+          for (unsigned int i=0; i<dim; ++i)
+            for (unsigned int j=0; j<dim; ++j)
+              mat(i,j) = H_orig(i,j);
+          mat.compute_eigenvalues();
+          std::vector<std::complex<double> > eigenvalues(dim);
+          for (unsigned int i=0; i<mat.n(); ++i)
+            eigenvalues[i] = mat.eigenvalue(i);
+
+          std::sort(eigenvalues.begin(), eigenvalues.end(),
+                    internal::SolverGMRES::complex_less_pred);
+
+          deallog << "Eigenvalue estimate: ";
+          for (unsigned int i=0; i<mat.n(); ++i)
+            deallog << ' ' << eigenvalues[i];
+          deallog << std::endl;
+        }
+
       H1.backward(h,gamma);
 
       if (left_precondition)
index 55baf883622bcdfc9531e25e30503d0b52a94a0e..8a616e751376e7c531eb29f11254432db9eb93dd 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2008 - 2013 by the deal.II authors
+// Copyright (C) 2008 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -20,6 +20,7 @@
 
 #include <deal.II/base/config.h>
 #include <deal.II/base/exceptions.h>
+#include <deal.II/lac/sparsity_pattern.h>
 
 #include <vector>
 
@@ -30,9 +31,6 @@
 
 DEAL_II_NAMESPACE_OPEN
 
-class SparsityPattern;
-
-
 
 /*! @addtogroup Sparsity
  *@{
@@ -46,11 +44,6 @@ class SparsityPattern;
 */
 namespace SparsityTools
 {
-  /**
-   * Declare type for container size.
-   */
-  typedef types::global_dof_index size_type;
-
   /**
    * Use the METIS partitioner to generate a partitioning of the degrees of
    * freedom represented by this sparsity pattern. In effect, we view this
@@ -138,8 +131,8 @@ namespace SparsityTools
    */
   void
   reorder_Cuthill_McKee (const SparsityPattern     &sparsity,
-                         std::vector<size_type> &new_indices,
-                         const std::vector<size_type> &starting_indices = std::vector<size_type>());
+                         std::vector<SparsityPattern::size_type> &new_indices,
+                         const std::vector<SparsityPattern::size_type> &starting_indices = std::vector<SparsityPattern::size_type>());
 
 
 #ifdef DEAL_II_WITH_MPI
@@ -167,7 +160,7 @@ namespace SparsityTools
    */
   template <class CSP_t>
   void distribute_sparsity_pattern(CSP_t &csp,
-                                   const std::vector<size_type> &rows_per_cpu,
+                                   const std::vector<typename CSP_t::size_type> &rows_per_cpu,
                                    const MPI_Comm &mpi_comm,
                                    const IndexSet &myrange);
 
index 6745cb7eaf711bb1764bf2a3b38c10da6d2ca820..2041c63052f74a46c7da8081e9d1ed8134a79a76 100644 (file)
@@ -38,6 +38,7 @@ SET(_src
   memory_consumption.cc
   mpi.cc
   multithread_info.cc
+  named_selection.cc
   parallel.cc
   parameter_handler.cc
   parsed_function.cc
index df1d36039366e5b262076b97e66acba2cc608eb4..ca73d301d7b4b91d1d5de207a4ccf2e850a105b0 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2005 - 2013 by the deal.II authors
+// Copyright (C) 2005 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -315,7 +315,7 @@ namespace Utilities
 
     MPI_InitFinalize::MPI_InitFinalize (int    &argc,
                                         char ** &argv,
-                                        unsigned int max_num_threads)
+                                        const unsigned int max_num_threads)
       :
       owns_mpi (true)
     {
@@ -337,7 +337,7 @@ namespace Utilities
     void
     MPI_InitFinalize::do_init(int    &argc,
                               char ** &argv,
-                              unsigned int max_num_threads)
+                              const unsigned int max_num_threads)
     {
       static bool constructor_has_already_run = false;
       Assert (constructor_has_already_run == false,
@@ -389,7 +389,8 @@ namespace Utilities
 
       constructor_has_already_run = true;
 
-      //set maximum number of threads:
+      // set maximum number of threads (also respecting the environment
+      // variable that the called function evaluates)
       multithread_info.set_thread_limit(max_num_threads);
     }
 
diff --git a/deal.II/source/base/named_selection.cc b/deal.II/source/base/named_selection.cc
new file mode 100644 (file)
index 0000000..59f45de
--- /dev/null
@@ -0,0 +1,31 @@
+// ---------------------------------------------------------------------
+// $Id: logstream.cc 31932 2013-12-08 02:15:54Z heister $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+#include <deal.II/base/named_data.h>
+#include <deal.II/algorithms/any_data.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+void
+NamedSelection::initialize(const AnyData &data)
+{
+  indices.resize(names.size());
+  for (unsigned int i=0; i<names.size(); ++i)
+    indices[i] = data.find(names[i]);
+}
+
+DEAL_II_NAMESPACE_CLOSE
+
index 7752b9d81eb2e346ef242cfb19c6a67b96492414..8bebce9102752bc098c2bc47f0932e9509c41e98 100644 (file)
@@ -936,6 +936,31 @@ QGaussOneOverR<2>::QGaussOneOverR(const unsigned int n,
 }
 
 
+template <int dim>
+QSorted<dim>::QSorted(Quadrature<dim> quad) :
+  Quadrature<dim>(quad.size())
+{
+  std::vector< std::pair<double, Point<dim> > > wp;
+  for (unsigned int i=0; i<quad.size(); ++i)
+    wp.push_back(std::pair<double, Point<dim> >(quad.weight(i),
+                                               quad.point(i)));
+  sort(wp.begin(), wp.end(), *this);
+  for(unsigned int i=0; i<quad.size(); ++i)
+    {
+      this->weights[i] = wp[i].first;
+      this->quadrature_points[i] = wp[i].second;
+    }
+}
+
+
+template <int dim>
+bool QSorted<dim>::operator()(const std::pair<double, Point<dim> > &a,
+                             const std::pair<double, Point<dim> > &b) 
+{
+  return (a.first < b.first);
+}
+
+
 // construct the quadrature formulae in higher dimensions by
 // tensor product of lower dimensions
 
@@ -1009,4 +1034,8 @@ template class QSimpson<3>;
 template class QMilne<3>;
 template class QWeddle<3>;
 
+template class QSorted<1>;
+template class QSorted<2>;
+template class QSorted<3>;
+
 DEAL_II_NAMESPACE_CLOSE
index 8fe34b6c6028adbc68802c063d8495bf3ee56dd6..0ca4d1c021475f1d38f533bc03261857888f411d 100644 (file)
@@ -696,10 +696,17 @@ FE_DGQ<dim, spacedim>::has_support_on_face (const unsigned int shape_index,
 
   unsigned int n = this->degree+1;
 
-  // for DGQ(0) elements, the single
-  // shape functions is constant and
+  // for DGQ(0) elements or arbitrary node DGQ with support points not located
+  // at the element boundary, the single shape functions is constant and
   // therefore lives on the boundary
-  if (this->degree == 0)
+  bool support_points_on_boundary = true;
+  for (unsigned int d=0; d<dim; ++d)
+    if (std::abs(this->unit_support_points[0][d]) > 1e-13)
+      support_points_on_boundary = false;
+  for (unsigned int d=0; d<dim; ++d)
+    if (std::abs(this->unit_support_points.back()[d]-1.) > 1e-13)
+      support_points_on_boundary = false;
+  if (support_points_on_boundary == false)
     return true;
 
   unsigned int n2 = n*n;
index 52ae8a51873aba3d074b7d940627a4bd7a413fec..024a708b2e0fc97cdb4012a4d4968d963f4bef43 100644 (file)
@@ -57,20 +57,27 @@ void GridIn<dim, spacedim>::read_vtk(std::istream &in)
 {
   Assert((dim == 2)||(dim == 3), ExcNotImplemented());
   std::string line;
-  std::string text[4];
-  text[0] = "# vtk DataFile Version 3.0";
-  text[1] = "vtk output";
-  text[2] = "ASCII";
-  text[3] = "DATASET UNSTRUCTURED_GRID";
 
-  for (unsigned int i = 0; i < 4; i++) //Checking for the match between initial strings/text in the file.
+  // verify that the first, third and fourth lines match
+  // expectations. the second line of the file may essentially be
+  // anything the author of the file chose to identify what's in
+  // there, so we just ensure that we can read it
+  {    
+    std::string text[4];
+    text[0] = "# vtk DataFile Version 3.0";
+    text[1] = "****";
+    text[2] = "ASCII";
+    text[3] = "DATASET UNSTRUCTURED_GRID";
+
+    for (unsigned int i = 0; i < 4; ++i)
     {
       getline(in,line);
-
-      AssertThrow (line.compare(text[i]) == 0,
-                   ExcMessage(std::string("While reading VTK file, failed to find <") +
-                              text[i] + ">"));
+      if (i != 1)
+       AssertThrow (line.compare(text[i]) == 0,
+                    ExcMessage(std::string("While reading VTK file, failed to find a header line with text <") +
+                               text[i] + ">"));
     }
+  }
 
   ///////////////////Declaring storage and mappings//////////////////
 
@@ -150,6 +157,7 @@ void GridIn<dim, spacedim>::read_vtk(std::istream &in)
                   for (unsigned int j = 0; j < type; j++) //loop to feed data
                     in >> cells.back().vertices[j];
 
+
                   cells.back().material_id = 0;
 
                   for (unsigned int j = 0; j < type; j++) //loop to feed the data of the vertices to the cell
@@ -269,14 +277,14 @@ void GridIn<dim, spacedim>::read_vtk(std::istream &in)
 
           for (unsigned int i = 0; i < 2; i++)
             {
-              getline(in,linenew);
-
-              if (linenew.compare(textnew[i]) == 0)
-                {}
-              else
-                AssertThrow (false,
-                             ExcMessage (std::string("While reading VTK file, failed to find <") +
-                                         textnew[i] + "> section"));
+              getline(in, linenew);
+              if (i == 0)
+               if (linenew.size() > textnew[0].size())
+                 linenew.resize(textnew[0].size());
+
+             AssertThrow (linenew.compare(textnew[i]) == 0,
+                          ExcMessage (std::string("While reading VTK file, failed to find <") +
+                                      textnew[i] + "> section"));
             }
 
           for (unsigned int i = 0; i < no_cells; i++) //assigning IDs to cells.
@@ -305,10 +313,6 @@ void GridIn<dim, spacedim>::read_vtk(std::istream &in)
                 }
             }
         }
-      else
-        AssertThrow (false,
-                     ExcMessage ("While reading VTK file, failed to find CELL_DATA section"));
-
 
       Assert(subcelldata.check_consistency(dim), ExcInternalError());
 
index 10bac030c31d65c9b4e9387d12448ae58198c789..673f2783a494d3d0b54c41ff9d935c5dce5add08 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2008 - 2013 by the deal.II authors
+// Copyright (C) 2008 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -94,7 +94,7 @@ namespace SparsityTools
     int_rowstart.reserve(sparsity_pattern.n_rows()+1);
     std::vector<idx_t> int_colnums;
     int_colnums.reserve(sparsity_pattern.n_nonzero_elements());
-    for (size_type row=0; row<sparsity_pattern.n_rows(); ++row)
+    for (SparsityPattern::size_type row=0; row<sparsity_pattern.n_rows(); ++row)
       {
         for (SparsityPattern::iterator col=sparsity_pattern.begin(row);
              col < sparsity_pattern.end(row); ++col)
@@ -147,14 +147,14 @@ namespace SparsityTools
      * invalid_size_type indicates that a node has not been numbered yet),
      * pick a valid starting index among the as-yet unnumbered one.
      */
-    size_type
+    SparsityPattern::size_type
     find_unnumbered_starting_index (const SparsityPattern     &sparsity,
-                                    const std::vector<size_type> &new_indices)
+                                    const std::vector<SparsityPattern::size_type> &new_indices)
     {
       {
-        size_type starting_point   = numbers::invalid_size_type;
-        size_type min_coordination = sparsity.n_rows();
-        for (size_type row=0; row<sparsity.n_rows(); ++row)
+        SparsityPattern::size_type starting_point   = numbers::invalid_size_type;
+        SparsityPattern::size_type min_coordination = sparsity.n_rows();
+        for (SparsityPattern::size_type row=0; row<sparsity.n_rows(); ++row)
           // look over all as-yet unnumbered indices
           if (new_indices[row] == numbers::invalid_size_type)
             {
@@ -166,7 +166,7 @@ namespace SparsityTools
                   break;
               // post-condition after loop: coordination, i.e. the number of
               // entries in this row is now j-rowstart[row]
-              if (static_cast<size_type>(j-sparsity.begin(row)) <
+              if (static_cast<SparsityPattern::size_type>(j-sparsity.begin(row)) <
                   min_coordination)
                 {
                   min_coordination = j-sparsity.begin(row);
@@ -183,7 +183,7 @@ namespace SparsityTools
         // starting point, e.g. the first unnumbered one
         if (starting_point == numbers::invalid_size_type)
           {
-            for (size_type i=0; i<new_indices.size(); ++i)
+            for (SparsityPattern::size_type i=0; i<new_indices.size(); ++i)
               if (new_indices[i] == numbers::invalid_size_type)
                 {
                   starting_point = i;
@@ -201,9 +201,9 @@ namespace SparsityTools
 
 
   void
-  reorder_Cuthill_McKee (const SparsityPattern     &sparsity,
-                         std::vector<size_type> &new_indices,
-                         const std::vector<size_type> &starting_indices)
+  reorder_Cuthill_McKee (const SparsityPattern                         &sparsity,
+                         std::vector<SparsityPattern::size_type>       &new_indices,
+                         const std::vector<SparsityPattern::size_type> &starting_indices)
   {
     Assert (sparsity.n_rows() == sparsity.n_cols(),
             ExcDimensionMismatch (sparsity.n_rows(), sparsity.n_cols()));
@@ -211,26 +211,26 @@ namespace SparsityTools
             ExcDimensionMismatch (sparsity.n_rows(), new_indices.size()));
     Assert (starting_indices.size() <= sparsity.n_rows(),
             ExcMessage ("You can't specify more starting indices than there are rows"));
-    for (size_type i=0; i<starting_indices.size(); ++i)
+    for (SparsityPattern::size_type i=0; i<starting_indices.size(); ++i)
       Assert (starting_indices[i] < sparsity.n_rows(),
               ExcMessage ("Invalid starting index"));
 
     // store the indices of the dofs renumbered in the last round. Default to
     // starting points
-    std::vector<size_type> last_round_dofs (starting_indices);
+    std::vector<SparsityPattern::size_type> last_round_dofs (starting_indices);
 
     // initialize the new_indices array with invalid values
     std::fill (new_indices.begin(), new_indices.end(),
                numbers::invalid_size_type);
 
     // delete disallowed elements
-    for (size_type i=0; i<last_round_dofs.size(); ++i)
+    for (SparsityPattern::size_type i=0; i<last_round_dofs.size(); ++i)
       if ((last_round_dofs[i]==numbers::invalid_size_type) ||
           (last_round_dofs[i]>=sparsity.n_rows()))
         last_round_dofs[i] = numbers::invalid_size_type;
 
     std::remove_if (last_round_dofs.begin(), last_round_dofs.end(),
-                    std::bind2nd(std::equal_to<size_type>(),
+                    std::bind2nd(std::equal_to<SparsityPattern::size_type>(),
                                  numbers::invalid_size_type));
 
     // now if no valid points remain: find dof with lowest coordination number
@@ -240,10 +240,10 @@ namespace SparsityTools
                                                             new_indices));
 
     // store next free dof index
-    size_type next_free_number = 0;
+    SparsityPattern::size_type next_free_number = 0;
 
     // enumerate the first round dofs
-    for (size_type i=0; i!=last_round_dofs.size(); ++i)
+    for (SparsityPattern::size_type i=0; i!=last_round_dofs.size(); ++i)
       new_indices[last_round_dofs[i]] = next_free_number++;
 
     // now do as many steps as needed to
@@ -252,12 +252,12 @@ namespace SparsityTools
       {
         // store the indices of the dofs to be
         // renumbered in the next round
-        std::vector<size_type> next_round_dofs;
+        std::vector<SparsityPattern::size_type> next_round_dofs;
 
         // find all neighbors of the
         // dofs numbered in the last
         // round
-        for (size_type i=0; i<last_round_dofs.size(); ++i)
+        for (SparsityPattern::size_type i=0; i<last_round_dofs.size(); ++i)
           for (SparsityPattern::iterator j=sparsity.begin(last_round_dofs[i]);
                j<sparsity.end(last_round_dofs[i]); ++j)
             if (j->is_valid_entry() == false)
@@ -269,7 +269,7 @@ namespace SparsityTools
         std::sort (next_round_dofs.begin(), next_round_dofs.end());
 
         // delete multiple entries
-        std::vector<size_type>::iterator end_sorted;
+        std::vector<SparsityPattern::size_type>::iterator end_sorted;
         end_sorted = std::unique (next_round_dofs.begin(), next_round_dofs.end());
         next_round_dofs.erase (end_sorted, next_round_dofs.end());
 
@@ -332,14 +332,14 @@ namespace SparsityTools
         // store for each coordination
         // number the dofs with these
         // coordination number
-        std::multimap<size_type, int> dofs_by_coordination;
+        std::multimap<SparsityPattern::size_type, int> dofs_by_coordination;
 
         // find coordination number for
         // each of these dofs
-        for (std::vector<size_type>::iterator s=next_round_dofs.begin();
+        for (std::vector<SparsityPattern::size_type>::iterator s=next_round_dofs.begin();
              s!=next_round_dofs.end(); ++s)
           {
-            size_type coordination = 0;
+            SparsityPattern::size_type coordination = 0;
             for (SparsityPattern::iterator j=sparsity.begin(*s);
                  j<sparsity.end(*s); ++j)
               if (j->is_valid_entry() == false)
@@ -349,14 +349,14 @@ namespace SparsityTools
 
             // insert this dof at its
             // coordination number
-            const std::pair<const size_type, int> new_entry (coordination, *s);
+            const std::pair<const SparsityPattern::size_type, int> new_entry (coordination, *s);
             dofs_by_coordination.insert (new_entry);
           }
 
         // assign new DoF numbers to
         // the elements of the present
         // front:
-        std::multimap<size_type, int>::iterator i;
+        std::multimap<SparsityPattern::size_type, int>::iterator i;
         for (i = dofs_by_coordination.begin(); i!=dofs_by_coordination.end(); ++i)
           new_indices[i->second] = next_free_number++;
 
@@ -382,27 +382,27 @@ namespace SparsityTools
 #ifdef DEAL_II_WITH_MPI
   template <class CSP_t>
   void distribute_sparsity_pattern(CSP_t &csp,
-                                   const std::vector<size_type> &rows_per_cpu,
+                                   const std::vector<typename CSP_t::size_type> &rows_per_cpu,
                                    const MPI_Comm &mpi_comm,
                                    const IndexSet &myrange)
   {
-    size_type myid = Utilities::MPI::this_mpi_process(mpi_comm);
-    std::vector<size_type> start_index(rows_per_cpu.size()+1);
+    const unsigned int myid = Utilities::MPI::this_mpi_process(mpi_comm);
+    std::vector<typename CSP_t::size_type> start_index(rows_per_cpu.size()+1);
     start_index[0]=0;
-    for (size_type i=0; i<rows_per_cpu.size(); ++i)
+    for (typename CSP_t::size_type i=0; i<rows_per_cpu.size(); ++i)
       start_index[i+1]=start_index[i]+rows_per_cpu[i];
 
-    typedef std::map<size_type, std::vector<size_type> > map_vec_t;
+    typedef std::map<typename CSP_t::size_type, std::vector<typename CSP_t::size_type> > map_vec_t;
 
     map_vec_t send_data;
 
     {
       unsigned int dest_cpu=0;
 
-      size_type n_local_rel_rows = myrange.n_elements();
-      for (size_type row_idx=0; row_idx<n_local_rel_rows; ++row_idx)
+      typename CSP_t::size_type n_local_rel_rows = myrange.n_elements();
+      for (typename CSP_t::size_type row_idx=0; row_idx<n_local_rel_rows; ++row_idx)
         {
-          size_type row=myrange.nth_index_in_set(row_idx);
+          typename CSP_t::size_type row=myrange.nth_index_in_set(row_idx);
 
           //calculate destination CPU
           while (row>=start_index[dest_cpu+1])
@@ -415,21 +415,21 @@ namespace SparsityTools
               continue;
             }
 
-          size_type rlen = csp.row_length(row);
+          typename CSP_t::size_type rlen = csp.row_length(row);
 
           //skip empty lines
           if (!rlen)
             continue;
 
           //save entries
-          std::vector<size_type> &dst = send_data[dest_cpu];
+          std::vector<typename CSP_t::size_type> &dst = send_data[dest_cpu];
 
           dst.push_back(rlen); // number of entries
           dst.push_back(row); // row index
-          for (size_type c=0; c<rlen; ++c)
+          for (typename CSP_t::size_type c=0; c<rlen; ++c)
             {
               //columns
-              size_type column = csp.column_number(row, c);
+              typename CSP_t::size_type column = csp.column_number(row, c);
               dst.push_back(column);
             }
         }
@@ -440,7 +440,7 @@ namespace SparsityTools
     {
       std::vector<unsigned int> send_to;
       send_to.reserve(send_data.size());
-      for (map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it)
+      for (typename map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it)
         send_to.push_back(it->first);
 
       num_receive =
@@ -454,7 +454,7 @@ namespace SparsityTools
     // send data
     {
       unsigned int idx=0;
-      for (map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it, ++idx)
+      for (typename map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it, ++idx)
         MPI_Isend(&(it->second[0]),
                   it->second.size(),
                   DEAL_II_DOF_INDEX_MPI_TYPE,
@@ -465,11 +465,11 @@ namespace SparsityTools
     }
 
 //TODO: In the following, we read individual bytes and then reinterpret them
-//    as size_type objects. this is error prone. use properly typed reads that
+//    as typename CSP_t::size_type objects. this is error prone. use properly typed reads that
 //    match the write above
     {
       //receive
-      std::vector<size_type> recv_buf;
+      std::vector<typename CSP_t::size_type> recv_buf;
       for (unsigned int index=0; index<num_receive; ++index)
         {
           MPI_Status status;
@@ -478,19 +478,19 @@ namespace SparsityTools
           Assert (status.MPI_TAG==124, ExcInternalError());
 
           MPI_Get_count(&status, MPI_BYTE, &len);
-          Assert( len%sizeof(size_type)==0, ExcInternalError());
+          Assert( len%sizeof(typename CSP_t::size_type)==0, ExcInternalError());
 
-          recv_buf.resize(len/sizeof(size_type));
+          recv_buf.resize(len/sizeof(typename CSP_t::size_type));
 
           MPI_Recv(&recv_buf[0], len, MPI_BYTE, status.MPI_SOURCE,
                    status.MPI_TAG, mpi_comm, &status);
 
-          std::vector<size_type>::const_iterator ptr = recv_buf.begin();
-          std::vector<size_type>::const_iterator end = recv_buf.end();
+          typename std::vector<typename CSP_t::size_type>::const_iterator ptr = recv_buf.begin();
+          typename std::vector<typename CSP_t::size_type>::const_iterator end = recv_buf.end();
           while (ptr+1<end)
             {
-              size_type num=*(ptr++);
-              size_type row=*(ptr++);
+              typename CSP_t::size_type num=*(ptr++);
+              typename CSP_t::size_type row=*(ptr++);
               for (unsigned int c=0; c<num; ++c)
                 {
                   csp.add(row, *ptr);
@@ -512,18 +512,18 @@ namespace SparsityTools
                                    const MPI_Comm &mpi_comm,
                                    const IndexSet &myrange)
   {
-    size_type myid = Utilities::MPI::this_mpi_process(mpi_comm);
+    const unsigned int myid = Utilities::MPI::this_mpi_process(mpi_comm);
 
-    typedef std::map<size_type, std::vector<size_type> > map_vec_t;
+    typedef std::map<typename CSP_t::size_type, std::vector<typename CSP_t::size_type> > map_vec_t;
     map_vec_t send_data;
 
     {
       unsigned int dest_cpu=0;
 
-      size_type n_local_rel_rows = myrange.n_elements();
-      for (size_type row_idx=0; row_idx<n_local_rel_rows; ++row_idx)
+      typename CSP_t::size_type n_local_rel_rows = myrange.n_elements();
+      for (typename CSP_t::size_type row_idx=0; row_idx<n_local_rel_rows; ++row_idx)
         {
-          size_type row=myrange.nth_index_in_set(row_idx);
+          typename CSP_t::size_type row=myrange.nth_index_in_set(row_idx);
 
           // calculate destination CPU, note that we start the search
           // at last destination cpu, because even if the owned ranges
@@ -539,21 +539,21 @@ namespace SparsityTools
           if (dest_cpu==myid)
             continue;
 
-          size_type rlen = csp.row_length(row);
+          typename CSP_t::size_type rlen = csp.row_length(row);
 
           //skip empty lines
           if (!rlen)
             continue;
 
           //save entries
-          std::vector<size_type> &dst = send_data[dest_cpu];
+          std::vector<typename CSP_t::size_type> &dst = send_data[dest_cpu];
 
           dst.push_back(rlen); // number of entries
           dst.push_back(row); // row index
-          for (size_type c=0; c<rlen; ++c)
+          for (typename CSP_t::size_type c=0; c<rlen; ++c)
             {
               //columns
-              size_type column = csp.column_number(row, c);
+              typename CSP_t::size_type column = csp.column_number(row, c);
               dst.push_back(column);
             }
         }
@@ -564,7 +564,7 @@ namespace SparsityTools
     {
       std::vector<unsigned int> send_to;
       send_to.reserve(send_data.size());
-      for (map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it)
+      for (typename map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it)
         send_to.push_back(it->first);
 
       num_receive =
@@ -578,7 +578,7 @@ namespace SparsityTools
     // send data
     {
       unsigned int idx=0;
-      for (map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it, ++idx)
+      for (typename map_vec_t::iterator it=send_data.begin(); it!=send_data.end(); ++it, ++idx)
         MPI_Isend(&(it->second[0]),
                   it->second.size(),
                   DEAL_II_DOF_INDEX_MPI_TYPE,
@@ -589,11 +589,11 @@ namespace SparsityTools
     }
 
 //TODO: In the following, we read individual bytes and then reinterpret them
-//    as size_type objects. this is error prone. use properly typed reads that
+//    as typename CSP_t::size_type objects. this is error prone. use properly typed reads that
 //    match the write above
     {
       //receive
-      std::vector<size_type> recv_buf;
+      std::vector<typename CSP_t::size_type> recv_buf;
       for (unsigned int index=0; index<num_receive; ++index)
         {
           MPI_Status status;
@@ -602,19 +602,19 @@ namespace SparsityTools
           Assert (status.MPI_TAG==124, ExcInternalError());
 
           MPI_Get_count(&status, MPI_BYTE, &len);
-          Assert( len%sizeof(size_type)==0, ExcInternalError());
+          Assert( len%sizeof(typename CSP_t::size_type)==0, ExcInternalError());
 
-          recv_buf.resize(len/sizeof(size_type));
+          recv_buf.resize(len/sizeof(typename CSP_t::size_type));
 
           MPI_Recv(&recv_buf[0], len, MPI_BYTE, status.MPI_SOURCE,
                    status.MPI_TAG, mpi_comm, &status);
 
-          std::vector<size_type>::const_iterator ptr = recv_buf.begin();
-          std::vector<size_type>::const_iterator end = recv_buf.end();
+          typename std::vector<typename CSP_t::size_type>::const_iterator ptr = recv_buf.begin();
+          typename std::vector<typename CSP_t::size_type>::const_iterator end = recv_buf.end();
           while (ptr+1<end)
             {
-              size_type num=*(ptr++);
-              size_type row=*(ptr++);
+              typename CSP_t::size_type num=*(ptr++);
+              typename CSP_t::size_type row=*(ptr++);
               for (unsigned int c=0; c<num; ++c)
                 {
                   csp.add(row, *ptr);
@@ -638,7 +638,7 @@ namespace SparsityTools
 
 #define SPARSITY_FUNCTIONS(SparsityType) \
   template void SparsityTools::distribute_sparsity_pattern<SparsityType> (SparsityType & csp, \
-      const std::vector<size_type> & rows_per_cpu,\
+      const std::vector<SparsityType::size_type> & rows_per_cpu,\
       const MPI_Comm & mpi_comm,\
       const IndexSet & myrange)
 
index 6f8a3de80c800097eb1b91ce910b1c494a36d4f2..eb284c9f5cec89a1efc23180b572bb9506960207 100644 (file)
@@ -62,7 +62,11 @@ void extract(const AnyData& data)
          << d  << std::endl
          << *p2 << std::endl
          << *p3 << std::endl;
-  // try
+
+  deallog << *data.try_read<double>(" d  17.") << std::endl
+         << data.try_read<char *>(" d  17.") << std::endl
+         << data.try_read<double>("does not exist") << std::endl;
+// try
   //   {
   //     double* p3a = data.entry<double*>("cd* 17.");
   //     deallog << p3a;
index 0a9f80057efc8671a4bbd5cd610a7f5a856ad1fb..9e180107c237b74638ce9d9d28ddf6f5b55106c8 100644 (file)
@@ -12,3 +12,6 @@ DEAL::7
 DEAL::17.0000
 DEAL::18.0000
 DEAL::18.0000
+DEAL::17.0000
+DEAL::0
+DEAL::0
diff --git a/tests/base/quadrature_sorted_test.cc b/tests/base/quadrature_sorted_test.cc
new file mode 100644 (file)
index 0000000..6393b76
--- /dev/null
@@ -0,0 +1,246 @@
+// ---------------------------------------------------------------------
+// $Id: quadrature_test.cc 31349 2013-10-20 19:07:06Z maier $
+//
+// Copyright (C) 1998 - 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// sort quadratures according to weights, and verify that they
+// integrate accurately polynomial of increasing order.
+// Verify that weights are actually sorted
+
+
+#include "../tests.h"
+#include <iomanip>
+#include <fstream>
+
+#include <deal.II/base/logstream.h>
+#include <deal.II/base/quadrature_lib.h>
+#include <deal.II/base/qprojector.h>
+#include <cmath>
+
+template <int dim>
+void
+fill_vector (std::vector<Quadrature<dim> *> &quadratures)
+{
+  quadratures.push_back (new QSorted<dim>(QMidpoint<dim>()));
+  quadratures.push_back (new QSorted<dim>(QTrapez<dim>()));
+  quadratures.push_back (new QSorted<dim>(QSimpson<dim>()));
+  quadratures.push_back (new QSorted<dim>(QMilne<dim>()));
+  quadratures.push_back (new QSorted<dim>(QWeddle<dim>()));
+  for (unsigned int i=0; i<9; ++i)
+    {
+      quadratures.push_back (new QSorted<dim>(QGauss<dim>(i)));
+    }
+  QMilne<1> q1d;
+  quadratures.push_back (new QSorted<dim>(Quadrature<dim>(q1d)));
+  for (unsigned int i=2; i<8; ++i)
+    {
+      quadratures.push_back (new QSorted<dim>(QGaussLobatto<dim>(i)));
+    }
+}
+
+template <int dim>
+void
+check_cells (std::vector<Quadrature<dim>*> &quadratures)
+{
+  Quadrature<dim> quadrature;
+  for (unsigned int n=0; n<quadratures.size(); ++n)
+    {
+      quadrature = *quadratures[n];
+      const std::vector<Point<dim> > &points=quadrature.get_points();
+      const std::vector<double> &weights=quadrature.get_weights();
+
+      deallog << "Quadrature no." << n;
+
+      unsigned int i=0;
+      double quadrature_int=0;
+      double exact_int=0;
+      double err = 0;
+
+      do
+        {
+          ++i;
+
+          quadrature_int=0;
+          // Check the polynomial x^i*y^i
+
+          for (unsigned int x=0; x<quadrature.size(); ++x)
+            {
+              double f=1.;
+              switch (dim)
+                {
+                case 3:
+                  f *= std::pow(static_cast<double>(points[x](2)), i*1.0);
+                case 2:
+                  f *= std::pow(static_cast<double>(points[x](1)), i*1.0);
+                case 1:
+                  f *= std::pow(static_cast<double>(points[x](0)), i*1.0);
+                }
+              quadrature_int+=f*weights[x];
+            }
+
+          // the exact integral is 1/(i+1)
+          exact_int=1./std::pow(static_cast<double>(i+1),dim);
+          err = std::fabs(quadrature_int-exact_int);
+        }
+      while (err<1e-14);
+      // Uncomment here for testing
+//      deallog << " (Int " << quadrature_int << ',' << exact_int << ")";
+      deallog << " is exact for polynomials of degree " << i-1 << std::endl;
+    }
+}
+
+
+template <int dim>
+void
+check_faces (const std::vector<Quadrature<dim-1>*>& quadratures, const bool sub)
+{
+  if (sub)
+    deallog.push("subfaces");
+  else
+    deallog.push("faces");
+
+  for (unsigned int n=0; n<quadratures.size(); ++n)
+    {
+      Quadrature<dim> quadrature (sub == false?
+                                  QProjector<dim>::project_to_all_faces(*quadratures[n]) :
+                                  QProjector<dim>::project_to_all_subfaces(*quadratures[n]));
+      const std::vector<Point<dim> > &points=quadrature.get_points();
+      const std::vector<double> &weights=quadrature.get_weights();
+
+      deallog << "Quadrature no." << n;
+
+      unsigned int i=0;
+      long double quadrature_int=0;
+      double exact_int=0;
+      double err = 0;
+
+      do
+        {
+          ++i;
+
+          quadrature_int=0;
+          // Check the polynomial
+          // x^i*y^i*z^i
+
+          for (unsigned int x=0; x<quadrature.size(); ++x)
+            {
+              long double f=1.;
+              switch (dim)
+                {
+                case 3:
+                  f *= std::pow((long double) points[x](2), i*1.0L);
+                case 2:
+                  f *= std::pow((long double) points[x](1), i*1.0L);
+                case 1:
+                  f *= std::pow((long double) points[x](0), i*1.0L);
+                }
+              quadrature_int+=f*weights[x];
+            }
+
+          // the exact integral is
+          // 1/(i+1)^(dim-1)
+          switch (dim)
+            {
+            case 2:
+              exact_int = 2 * (sub ? 2:1) / (double) (i+1);
+              break;
+            case 3:
+              exact_int = 3 * (sub ? (4+2+2):1)*8 / (double) (i+1)/(i+1);
+              break;
+            }
+
+          err = std::fabs(quadrature_int-exact_int);
+        }
+      // for comparison: use factor 8 in case
+      // of dim==3, as we integrate 8 times
+      // over the whole surface (all
+      // combinations of face_orientation,
+      // face_flip and face_rotation)
+      while (err < (dim==3 ? 8 : 1) * 2e-14);
+      // Uncomment here for testing
+      //      deallog << " (Int " << quadrature_int << '-' << exact_int << '=' << err << ")";
+      deallog << " is exact for polynomials of degree " << i-1 << std::endl;
+    }
+  deallog.pop();
+}
+
+template <int dim>
+void
+check_quadratures (const std::vector<Quadrature<dim>*>& quadratures) {
+  for(unsigned int i=0; i<quadratures.size(); ++i) {
+    Quadrature<dim> &quad = *quadratures[i];
+    bool check = true;
+    for(unsigned int q=1; q<quad.size(); ++q)
+      if(quad.weight(q) < quad.weight(q-1)) {
+       check = false;
+       break;
+      }
+    if(check == false) {
+      deallog << "Something went wrong. The qudrature is not properly sorted." << std::endl;
+      for(unsigned int q=1; q<quad.size(); ++q) {
+       deallog << "q(" << q << "): " << quad.point(q)
+               << ", w(" << q << "): " << quad.weight(q) << std::endl;
+      }
+    }
+  }
+}
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  std::vector<Quadrature<1> *> q1;
+  std::vector<Quadrature<2> *> q2;
+  std::vector<Quadrature<3> *> q3;
+  fill_vector (q1);
+  fill_vector (q2);
+  fill_vector (q3);
+
+  deallog.push("1d");
+  check_cells(q1);
+  check_quadratures(q1);
+  deallog.pop();
+
+  deallog.push("2d");
+  check_cells(q2);
+  check_faces<2>(q1,false);
+  check_faces<2>(q1,true);
+  check_quadratures(q2);
+  deallog.pop();
+
+  deallog.push("3d");
+  check_cells(q3);
+  check_faces<3>(q2,false);
+  check_faces<3>(q2,true);
+  check_quadratures(q3);
+  deallog.pop();
+
+  // delete objects again to avoid
+  // messages about memory leaks when
+  // using purify or other memory
+  // checkers
+  for (unsigned int i=0; i<q1.size(); ++i)
+    delete q1[i];
+  for (unsigned int i=0; i<q2.size(); ++i)
+    delete q2[i];
+  for (unsigned int i=0; i<q3.size(); ++i)
+    delete q3[i];
+}
+
+
diff --git a/tests/base/quadrature_sorted_test.output b/tests/base/quadrature_sorted_test.output
new file mode 100644 (file)
index 0000000..c93bc2d
--- /dev/null
@@ -0,0 +1,148 @@
+
+DEAL:1d::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:1d::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:1d::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:1d::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:1d::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:1d::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:1d::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:1d::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:1d::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:1d::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:1d::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:1d::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:1d::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:1d::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:1d::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:1d::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:1d::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:1d::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:1d::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:1d::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:1d::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:2d::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:2d::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:2d::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:2d::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:2d::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:2d::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:2d::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:2d::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:2d::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:2d::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:2d::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:2d::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:2d::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:2d::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:2d::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:2d::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:2d::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:2d::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:2d::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:2d::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:2d::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:2d:faces::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:2d:faces::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:2d:faces::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:2d:faces::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:2d:faces::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:2d:faces::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:2d:faces::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:2d:faces::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:2d:faces::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:2d:faces::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:2d:faces::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:2d:faces::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:2d:faces::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:2d:faces::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:2d:faces::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:2d:faces::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:2d:faces::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:2d:faces::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:2d:faces::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:2d:faces::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:2d:faces::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:2d:subfaces::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:2d:subfaces::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:2d:subfaces::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:2d:subfaces::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:2d:subfaces::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:2d:subfaces::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:2d:subfaces::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:2d:subfaces::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:2d:subfaces::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:2d:subfaces::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:2d:subfaces::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:2d:subfaces::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:2d:subfaces::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:2d:subfaces::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:2d:subfaces::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:2d:subfaces::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:2d:subfaces::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:2d:subfaces::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:2d:subfaces::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:2d:subfaces::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:2d:subfaces::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:3d::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:3d::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:3d::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:3d::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:3d::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:3d::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:3d::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:3d::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:3d::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:3d::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:3d::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:3d::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:3d::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:3d::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:3d::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:3d::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:3d::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:3d::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:3d::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:3d::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:3d::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:3d:faces::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:3d:faces::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:3d:faces::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:3d:faces::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:3d:faces::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:3d:faces::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:3d:faces::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:3d:faces::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:3d:faces::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:3d:faces::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:3d:faces::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:3d:faces::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:3d:faces::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:3d:faces::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:3d:faces::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:3d:faces::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:3d:faces::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:3d:faces::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:3d:faces::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:3d:faces::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:3d:faces::Quadrature no.20 is exact for polynomials of degree 11
+DEAL:3d:subfaces::Quadrature no.0 is exact for polynomials of degree 1
+DEAL:3d:subfaces::Quadrature no.1 is exact for polynomials of degree 1
+DEAL:3d:subfaces::Quadrature no.2 is exact for polynomials of degree 3
+DEAL:3d:subfaces::Quadrature no.3 is exact for polynomials of degree 5
+DEAL:3d:subfaces::Quadrature no.4 is exact for polynomials of degree 7
+DEAL:3d:subfaces::Quadrature no.5 is exact for polynomials of degree 0
+DEAL:3d:subfaces::Quadrature no.6 is exact for polynomials of degree 1
+DEAL:3d:subfaces::Quadrature no.7 is exact for polynomials of degree 3
+DEAL:3d:subfaces::Quadrature no.8 is exact for polynomials of degree 5
+DEAL:3d:subfaces::Quadrature no.9 is exact for polynomials of degree 7
+DEAL:3d:subfaces::Quadrature no.10 is exact for polynomials of degree 9
+DEAL:3d:subfaces::Quadrature no.11 is exact for polynomials of degree 11
+DEAL:3d:subfaces::Quadrature no.12 is exact for polynomials of degree 13
+DEAL:3d:subfaces::Quadrature no.13 is exact for polynomials of degree 15
+DEAL:3d:subfaces::Quadrature no.14 is exact for polynomials of degree 5
+DEAL:3d:subfaces::Quadrature no.15 is exact for polynomials of degree 1
+DEAL:3d:subfaces::Quadrature no.16 is exact for polynomials of degree 3
+DEAL:3d:subfaces::Quadrature no.17 is exact for polynomials of degree 5
+DEAL:3d:subfaces::Quadrature no.18 is exact for polynomials of degree 7
+DEAL:3d:subfaces::Quadrature no.19 is exact for polynomials of degree 9
+DEAL:3d:subfaces::Quadrature no.20 is exact for polynomials of degree 11
index 3d0fa338a1c0b7376d7446cb89cb900416950620..b0ba4f671fe6926ccff5135edfbbc45679aadab4 100644 (file)
@@ -34,7 +34,7 @@ void test ()
   a = Number(2.);
   b = Number(-1.);
   for (unsigned int i=0; i<n_vectors; ++i)
-    c[i] = i;
+    c[i] = Number(i);
 
   deallog << "Addition: ";
   VectorizedArray<Number> d = a + b;
@@ -57,17 +57,17 @@ void test ()
     AssertThrow (e[i] == c[i], ExcInternalError());
   deallog << "OK" << std::endl
           << "Multiplication scalar: ";
-  a = 2. * a;
+  a = Number(2.) * a;
   for (unsigned int i=0; i<n_vectors; ++i)
     AssertThrow (a[i] == 4., ExcInternalError());
   deallog << "OK" << std::endl
           << "Division scalar left: ";
-  d = 1. / a;
+  d = Number(1.) / a;
   for (unsigned int i=0; i<n_vectors; ++i)
     AssertThrow (d[i] == 0.25, ExcInternalError());
   deallog << "OK" << std::endl
           << "Division scalar right: ";
-  e = d / 0.25;
+  e = d / Number(0.25);
   for (unsigned int i=0; i<n_vectors; ++i)
     AssertThrow (e[i] == 1, ExcInternalError());
   deallog << "OK" << std::endl
@@ -103,7 +103,7 @@ void test ()
     AssertThrow (d[i] == std::max(a[i], c[i]), ExcInternalError());
   deallog << "OK" << std::endl
           << "Minimum value: ";
-  d = std::min(0.5 * a + b, c);
+  d = std::min(Number(0.5) * a + b, c);
   for (unsigned int i=0; i<n_vectors; ++i)
     AssertThrow (d[i] == std::min(Number(0.5 * a[i] + b[i]), c[i]),
                  ExcInternalError());
@@ -167,6 +167,6 @@ int main()
   // path of VectorizedArray is taken no matter
   // what was done for double or float
   deallog.push("long double");
-  test<float> ();
+  test<long double> ();
   deallog.pop();
 }
index 5b9ac5a1446f1554acaab402c8a847466eb3cee1..4a2db9f0c2ca99123c6e5e5ed1603f68363fb89a 100644 (file)
 #include "../tests.h"
 
 #include <deal.II/base/vectorization.h>
+#include <deal.II/lac/vector.h>
+
+
+struct Evaluation
+{
+  VectorizedArray<double> get_value(const unsigned int index) const
+  {
+    return values[index];
+  }
+
+  void submit_value(const VectorizedArray<double> val,
+                    const unsigned int index)
+  {
+    if (is_cartesian)
+      values[index] = val * cartesian_weight * jac_weight[index];
+    else
+      values[index] = val * general_weight[index];
+  }
+
+  bool is_cartesian;
+  VectorizedArray<double> cartesian_weight;
+  VectorizedArray<double> jac_weight[1];
+  VectorizedArray<double> general_weight[1];
+  VectorizedArray<double> values[1];
+};
+
+
+void initialize(Evaluation &eval)
+{
+  eval.is_cartesian = true;
+  eval.cartesian_weight = static_cast<double>(rand())/RAND_MAX;
+  for (unsigned int i=0; i<4; ++i)
+    eval.cartesian_weight = std::max(eval.cartesian_weight, eval.cartesian_weight * eval.cartesian_weight);
+  eval.general_weight[0] = 0.2313342 * eval.cartesian_weight;
+  eval.jac_weight[0] = static_cast<double>(rand())/RAND_MAX;
+}
 
 
 void test()
 {
-  VectorizedArray<double> array[3];
-  for (unsigned int i=0; i<3; ++i)
-    for (unsigned int v=0; v<VectorizedArray<double>::n_array_elements; ++v)
-      array[i][v] = static_cast<double>(rand())/RAND_MAX;
+  Evaluation current, old;
+  initialize(current);
+  initialize(old);
+  VectorizedArray<double> weight;
+  weight = static_cast<double>(rand())/RAND_MAX;
+
+  VectorizedArray<double> vec;
+  for (unsigned int v=0; v<VectorizedArray<double>::n_array_elements; ++v)
+    vec[v] = static_cast<double>(rand())/RAND_MAX;
+
+  current.values[0] = vec;
+  old.values[0] = vec * 1.112 - std::max(2.*vec - 1., VectorizedArray<double>());
+
+  Vector<double> vector(200);
+  vector = 1.2;
+
+  VectorizedArray<double> cur = current.get_value(0);
+  VectorizedArray<double> ol =  old.get_value(0);
+  current.submit_value(2. * cur - ol - weight * std::sin(cur), 0);
 
-  const VectorizedArray<double> tmp = 2. * array[0] - array[1] - array[2] * std::sin(array[0]);
+  vector *= 2.*current.get_value(0)[0];
 
+  double error = 0;
   for (unsigned int v=0; v<VectorizedArray<double>::n_array_elements; ++v)
-    deallog << tmp[v]-(2.*array[0][v]-array[1][v]-array[2][v]*std::sin(array[0][v])) << " ";
-  deallog << std::endl;
+    error += std::abs(current.get_value(0)[v]/(current.cartesian_weight[v]*current.jac_weight[0][0])-(2.*vec[v]-ol[v]-weight[v]*std::sin(vec[v])));
+  deallog << "error: " << error << std::endl;
 }
 
 
index c18e43299f25a2a03aa5a3cdb97242b5db5c9ee1..f49ae07cfab72c3a641d5fb9cad2d3c3c548a710 100644 (file)
@@ -1,2 +1,2 @@
 
-DEAL::0 0 
+DEAL::error: 0
diff --git a/tests/base/vectorization_04.cc b/tests/base/vectorization_04.cc
new file mode 100644 (file)
index 0000000..bf5b059
--- /dev/null
@@ -0,0 +1,91 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2014 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// test for VectorizedArray::load and VectorizedArray::store
+
+#include "../tests.h"
+#include <iomanip>
+#include <fstream>
+#include <cmath>
+
+#include <deal.II/base/vectorization.h>
+#include <deal.II/base/aligned_vector.h>
+
+template <typename Number>
+void test ()
+{
+  const unsigned int n_vectors = VectorizedArray<Number>::n_array_elements;
+  std::vector<Number> values(n_vectors*5);
+  for (unsigned int i=0; i<values.size(); ++i)
+    values[i] = i;
+  AlignedVector<VectorizedArray<Number> > copied(4);
+
+  // test load operation for all possible values of alignment
+  for (unsigned int shift=0; shift < n_vectors; ++shift)
+    {
+      for (unsigned int i=0; i<4; ++i)
+        copied[i].load(&values[i*n_vectors+shift]);
+      for (unsigned int i=0; i<4; ++i)
+        for (unsigned int v=0; v<n_vectors; ++v)
+          AssertThrow(copied[i][v] == values[i*n_vectors+v+shift],
+                      ExcInternalError());
+    }
+  deallog << "load OK" << std::endl;
+
+  // test store operation
+  std::vector<Number> stored(n_vectors*5);
+  for (unsigned int shift=0; shift < n_vectors; ++shift)
+    {
+      for (unsigned int i=0; i<4; ++i)
+        {
+          VectorizedArray<Number> tmp;
+          tmp.load(&values[i*n_vectors]);
+          tmp.store(&stored[i*n_vectors+shift]);
+        }
+      for (unsigned int i=0; i<4*n_vectors; ++i)
+        AssertThrow(stored[i+shift] == i, ExcInternalError());
+    }
+  deallog << "store OK" << std::endl;
+}
+
+
+
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  deallog.push("double");
+  test<double> ();
+  deallog.pop();
+  deallog.push("float");
+  test<float> ();
+  deallog.pop();
+
+  // test long double and unsigned int: in these cases, the default path of
+  // VectorizedArray is taken no matter what was done for double or float
+  deallog.push("long double");
+  test<long double> ();
+  deallog.pop();
+
+  deallog.push("unsigned int");
+  test<unsigned int> ();
+  deallog.pop();
+}
diff --git a/tests/base/vectorization_04.output b/tests/base/vectorization_04.output
new file mode 100644 (file)
index 0000000..057015e
--- /dev/null
@@ -0,0 +1,9 @@
+
+DEAL:double::load OK
+DEAL:double::store OK
+DEAL:float::load OK
+DEAL:float::store OK
+DEAL:long double::load OK
+DEAL:long double::store OK
+DEAL:unsigned int::load OK
+DEAL:unsigned int::store OK
diff --git a/tests/deal.II/grid_in_vtk_3d_02.cc b/tests/deal.II/grid_in_vtk_3d_02.cc
new file mode 100644 (file)
index 0000000..a1c296d
--- /dev/null
@@ -0,0 +1,71 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2002 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// read a 3d file in the VTK format
+
+#include "../tests.h"
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/grid/grid_in.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/base/logstream.h>
+
+#include <fstream>
+#include <iomanip>
+#include <string>
+
+std::ofstream logfile("output");
+
+
+template<int dim>
+void check_file (const std::string name,
+                 typename GridIn<dim>::Format format)
+{
+  Triangulation<dim> tria;
+  GridIn<dim> gi;
+  gi.attach_triangulation (tria);
+  gi.read(name, format);
+  deallog << '\t' << tria.n_vertices()
+          << '\t' << tria.n_cells()
+          << std::endl;
+
+  GridOut grid_out;
+  grid_out.write_gnuplot (tria, deallog.get_file_stream());
+}
+
+void filename_resolution()
+{
+  check_file<3> (std::string(SOURCE_DIR "/grid_in_vtk_3d_02.vtk"), GridIn<3>::vtk);
+}
+
+
+int main ()
+{
+  deallog << std::setprecision (2);
+  logfile << std::setprecision (2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  filename_resolution();
+}
+
diff --git a/tests/deal.II/grid_in_vtk_3d_02.output b/tests/deal.II/grid_in_vtk_3d_02.output
new file mode 100644 (file)
index 0000000..d4bc397
--- /dev/null
@@ -0,0 +1,98 @@
+
+DEAL:: 20      4
+0.0 0.0 10. 0 0
+10. 0.0 10. 0 0
+10. 10. 10. 0 0
+0.0 10. 10. 0 0
+0.0 0.0 10. 0 0
+
+0.0 0.0 0.0 0 0
+10. 0.0 0.0 0 0
+10. 10. 0.0 0 0
+0.0 10. 0.0 0 0
+0.0 0.0 0.0 0 0
+
+0.0 0.0 10. 0 0
+0.0 0.0 0.0 0 0
+
+10. 0.0 10. 0 0
+10. 0.0 0.0 0 0
+
+10. 10. 10. 0 0
+10. 10. 0.0 0 0
+
+0.0 10. 10. 0 0
+0.0 10. 0.0 0 0
+
+10. 0.0 10. 0 0
+20. 0.0 10. 0 0
+20. 10. 10. 0 0
+10. 10. 10. 0 0
+10. 0.0 10. 0 0
+
+10. 0.0 0.0 0 0
+20. 0.0 0.0 0 0
+20. 10. 0.0 0 0
+10. 10. 0.0 0 0
+10. 0.0 0.0 0 0
+
+10. 0.0 10. 0 0
+10. 0.0 0.0 0 0
+
+20. 0.0 10. 0 0
+20. 0.0 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+10. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+20. 10. 10. 0 0
+20. 20. 10. 0 0
+10. 20. 10. 0 0
+10. 10. 10. 0 0
+
+10. 10. 0.0 0 0
+20. 10. 0.0 0 0
+20. 20. 0.0 0 0
+10. 20. 0.0 0 0
+10. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+10. 10. 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+20. 20. 10. 0 0
+20. 20. 0.0 0 0
+
+10. 20. 10. 0 0
+10. 20. 0.0 0 0
+
+20. 10. 10. 0 0
+30. 10. 10. 0 0
+30. 20. 10. 0 0
+20. 20. 10. 0 0
+20. 10. 10. 0 0
+
+20. 10. 0.0 0 0
+30. 10. 0.0 0 0
+30. 20. 0.0 0 0
+20. 20. 0.0 0 0
+20. 10. 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+30. 10. 10. 0 0
+30. 10. 0.0 0 0
+
+30. 20. 10. 0 0
+30. 20. 0.0 0 0
+
+20. 20. 10. 0 0
+20. 20. 0.0 0 0
+
diff --git a/tests/deal.II/grid_in_vtk_3d_02.vtk b/tests/deal.II/grid_in_vtk_3d_02.vtk
new file mode 100644 (file)
index 0000000..8c027c3
--- /dev/null
@@ -0,0 +1,35 @@
+# vtk DataFile Version 3.0
+write mesh on file
+ASCII
+DATASET UNSTRUCTURED_GRID
+POINTS 20 double
+0.000000 0.000000 10.000000
+10.000000 0.000000 10.000000
+10.000000 10.000000 10.000000
+0.000000 10.000000 10.000000
+20.000000 0.000000 10.000000
+20.000000 10.000000 10.000000
+30.000000 10.000000 10.000000
+10.000000 20.000000 10.000000
+20.000000 20.000000 10.000000
+30.000000 20.000000 10.000000
+0.000000 0.000000 0.000000
+10.000000 0.000000 0.000000
+10.000000 10.000000 0.000000
+0.000000 10.000000 0.000000
+20.000000 0.000000 0.000000
+20.000000 10.000000 0.000000
+30.000000 10.000000 0.000000
+10.000000 20.000000 0.000000
+20.000000 20.000000 0.000000
+30.000000 20.000000 0.000000
+CELLS 4 36
+8 10 11 12 13 0 1 2 3
+8 11 14 15 12 1 4 5 2
+8 12 15 18 17 2 5 8 7
+8 15 16 19 18 5 6 9 8
+CELL_TYPES 4
+12
+12
+12
+12
diff --git a/tests/deal.II/grid_in_vtk_3d_03.cc b/tests/deal.II/grid_in_vtk_3d_03.cc
new file mode 100644 (file)
index 0000000..4b8e053
--- /dev/null
@@ -0,0 +1,71 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2002 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// read a 3d file in the VTK format
+
+#include "../tests.h"
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_boundary.h>
+#include <deal.II/grid/tria_boundary_lib.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_out.h>
+#include <deal.II/grid/grid_in.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/base/logstream.h>
+
+#include <fstream>
+#include <iomanip>
+#include <string>
+
+std::ofstream logfile("output");
+
+
+template<int dim>
+void check_file (const std::string name,
+                 typename GridIn<dim>::Format format)
+{
+  Triangulation<dim> tria;
+  GridIn<dim> gi;
+  gi.attach_triangulation (tria);
+  gi.read(name, format);
+  deallog << '\t' << tria.n_vertices()
+          << '\t' << tria.n_cells()
+          << std::endl;
+
+  GridOut grid_out;
+  grid_out.write_gnuplot (tria, deallog.get_file_stream());
+}
+
+void filename_resolution()
+{
+  check_file<3> (std::string(SOURCE_DIR "/grid_in_vtk_3d_03.vtk"), GridIn<3>::vtk);
+}
+
+
+int main ()
+{
+  deallog << std::setprecision (2);
+  logfile << std::setprecision (2);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  filename_resolution();
+}
+
diff --git a/tests/deal.II/grid_in_vtk_3d_03.output b/tests/deal.II/grid_in_vtk_3d_03.output
new file mode 100644 (file)
index 0000000..2293dc9
--- /dev/null
@@ -0,0 +1,98 @@
+
+DEAL:: 20      4
+0.0 0.0 10. 0 1
+10. 0.0 10. 0 1
+10. 10. 10. 0 1
+0.0 10. 10. 0 1
+0.0 0.0 10. 0 1
+
+0.0 0.0 0.0 0 1
+10. 0.0 0.0 0 1
+10. 10. 0.0 0 1
+0.0 10. 0.0 0 1
+0.0 0.0 0.0 0 1
+
+0.0 0.0 10. 0 1
+0.0 0.0 0.0 0 1
+
+10. 0.0 10. 0 1
+10. 0.0 0.0 0 1
+
+10. 10. 10. 0 1
+10. 10. 0.0 0 1
+
+0.0 10. 10. 0 1
+0.0 10. 0.0 0 1
+
+10. 0.0 10. 0 0
+20. 0.0 10. 0 0
+20. 10. 10. 0 0
+10. 10. 10. 0 0
+10. 0.0 10. 0 0
+
+10. 0.0 0.0 0 0
+20. 0.0 0.0 0 0
+20. 10. 0.0 0 0
+10. 10. 0.0 0 0
+10. 0.0 0.0 0 0
+
+10. 0.0 10. 0 0
+10. 0.0 0.0 0 0
+
+20. 0.0 10. 0 0
+20. 0.0 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+10. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+20. 10. 10. 0 0
+20. 20. 10. 0 0
+10. 20. 10. 0 0
+10. 10. 10. 0 0
+
+10. 10. 0.0 0 0
+20. 10. 0.0 0 0
+20. 20. 0.0 0 0
+10. 20. 0.0 0 0
+10. 10. 0.0 0 0
+
+10. 10. 10. 0 0
+10. 10. 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+20. 20. 10. 0 0
+20. 20. 0.0 0 0
+
+10. 20. 10. 0 0
+10. 20. 0.0 0 0
+
+20. 10. 10. 0 0
+30. 10. 10. 0 0
+30. 20. 10. 0 0
+20. 20. 10. 0 0
+20. 10. 10. 0 0
+
+20. 10. 0.0 0 0
+30. 10. 0.0 0 0
+30. 20. 0.0 0 0
+20. 20. 0.0 0 0
+20. 10. 0.0 0 0
+
+20. 10. 10. 0 0
+20. 10. 0.0 0 0
+
+30. 10. 10. 0 0
+30. 10. 0.0 0 0
+
+30. 20. 10. 0 0
+30. 20. 0.0 0 0
+
+20. 20. 10. 0 0
+20. 20. 0.0 0 0
+
diff --git a/tests/deal.II/grid_in_vtk_3d_03.vtk b/tests/deal.II/grid_in_vtk_3d_03.vtk
new file mode 100644 (file)
index 0000000..eda6a1a
--- /dev/null
@@ -0,0 +1,42 @@
+# vtk DataFile Version 3.0
+write mesh on file
+ASCII
+DATASET UNSTRUCTURED_GRID
+POINTS 20 double
+0.000000 0.000000 10.000000
+10.000000 0.000000 10.000000
+10.000000 10.000000 10.000000
+0.000000 10.000000 10.000000
+20.000000 0.000000 10.000000
+20.000000 10.000000 10.000000
+30.000000 10.000000 10.000000
+10.000000 20.000000 10.000000
+20.000000 20.000000 10.000000
+30.000000 20.000000 10.000000
+0.000000 0.000000 0.000000
+10.000000 0.000000 0.000000
+10.000000 10.000000 0.000000
+0.000000 10.000000 0.000000
+20.000000 0.000000 0.000000
+20.000000 10.000000 0.000000
+30.000000 10.000000 0.000000
+10.000000 20.000000 0.000000
+20.000000 20.000000 0.000000
+30.000000 20.000000 0.000000
+CELLS 4 36
+8 10 11 12 13 0 1 2 3
+8 11 14 15 12 1 4 5 2
+8 12 15 18 17 2 5 8 7
+8 15 16 19 18 5 6 9 8
+CELL_TYPES 4
+12
+12
+12
+12
+CELL_DATA 4
+SCALARS MaterialID double 1
+LOOKUP_TABLE default
+1.000000
+2.000000
+3.000000
+4.000000
index a9e16506a10e6917395fad236f855145929069ba..d554c5cb35cbfb1ce917e2fd85de6230d31dcd26 100644 (file)
@@ -21,6 +21,7 @@
 #include <fstream>
 
 #include <deal.II/base/logstream.h>
+#include <deal.II/base/quadrature_lib.h>
 #include <deal.II/base/polynomials_raviart_thomas.h>
 
 #include <deal.II/grid/tria_iterator.h>
@@ -112,6 +113,10 @@ void test_fe_datas()
   deallog << (*fe_datas.rbegin())->get_name() << std::endl;
   fe_datas.push_back(new FE_DGQ<dim> (4));
   deallog << (*fe_datas.rbegin())->get_name() << std::endl;
+  fe_datas.push_back(new FE_DGQArbitraryNodes<dim> (QGaussLobatto<1>(5)));
+  deallog << (*fe_datas.rbegin())->get_name() << std::endl;
+  fe_datas.push_back(new FE_DGQArbitraryNodes<dim> (QGauss<1>(3)));
+  deallog << (*fe_datas.rbegin())->get_name() << std::endl;
   fe_datas.push_back(new FE_DGP<dim> (1));
   deallog << (*fe_datas.rbegin())->get_name() << std::endl;
   fe_datas.push_back(new FE_DGP<dim> (2));
index f99beab9f4b408bd69fa1112692df27e4033daf7..b3cdb29e7c1dd9a8cf795785d62bc185c1662c97 100644 (file)
@@ -8,6 +8,8 @@ DEAL::FE_Q_Hierarchical<1>(4)
 DEAL::FE_DGQ<1>(1)
 DEAL::FE_DGQ<1>(2)
 DEAL::FE_DGQ<1>(4)
+DEAL::FE_DGQArbitraryNodes<1>(QGaussLobatto(5))
+DEAL::FE_DGQArbitraryNodes<1>(QUnknownNodes(2))
 DEAL::FE_DGP<1>(1)
 DEAL::FE_DGP<1>(2)
 DEAL::FESystem<1>[FE_Q<1>(2)^2]
@@ -270,7 +272,61 @@ DEAL::face_to_cell_index:
 DEAL::support on face 0:       0
 DEAL::support on face 1:       4
 DEAL::
-DEAL::fe_data[9]:FE_DGP<1>(1)
+DEAL::fe_data[9]:FE_DGQArbitraryNodes<1>(QGaussLobatto(5))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=5
+DEAL::dofs_per_quad=0
+DEAL::dofs_per_hex=0
+DEAL::first_line_index=0
+DEAL::first_quad_index=5
+DEAL::first_hex_index=5
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=5
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[5]->5
+DEAL::degree=4
+DEAL::conformity= L2
+DEAL::unit_support_points=5
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=5
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0
+DEAL::support on face 1:       4
+DEAL::
+DEAL::fe_data[10]:FE_DGQArbitraryNodes<1>(QUnknownNodes(2))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=3
+DEAL::dofs_per_quad=0
+DEAL::dofs_per_hex=0
+DEAL::first_line_index=0
+DEAL::first_quad_index=3
+DEAL::first_hex_index=3
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=3
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[3]->3
+DEAL::degree=2
+DEAL::conformity= L2
+DEAL::unit_support_points=3
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=3
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0       1       2
+DEAL::support on face 1:       0       1       2
+DEAL::
+DEAL::fe_data[11]:FE_DGP<1>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -297,7 +353,7 @@ DEAL::face_to_cell_index:
 DEAL::support on face 0:       0       1
 DEAL::support on face 1:       0       1
 DEAL::
-DEAL::fe_data[10]:FE_DGP<1>(2)
+DEAL::fe_data[12]:FE_DGP<1>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=3
 DEAL::dofs_per_quad=0
@@ -324,7 +380,7 @@ DEAL::face_to_cell_index:
 DEAL::support on face 0:       0       1       2
 DEAL::support on face 1:       0       1       2
 DEAL::
-DEAL::fe_data[11]:FESystem<1>[FE_Q<1>(2)^2]
+DEAL::fe_data[13]:FESystem<1>[FE_Q<1>(2)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -351,7 +407,7 @@ DEAL::face_to_cell_index: 2 3
 DEAL::support on face 0:       0       1
 DEAL::support on face 1:       2       3
 DEAL::
-DEAL::fe_data[12]:FESystem<1>[FE_Q<1>(1)^2-FE_Q<1>(2)]
+DEAL::fe_data[14]:FESystem<1>[FE_Q<1>(1)^2-FE_Q<1>(2)]
 DEAL::dofs_per_vertex=3
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -378,7 +434,7 @@ DEAL::face_to_cell_index: 3 4 5
 DEAL::support on face 0:       0       1       2
 DEAL::support on face 1:       3       4       5
 DEAL::
-DEAL::fe_data[13]:FE_FaceQ<1>(0)
+DEAL::fe_data[15]:FE_FaceQ<1>(0)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -405,7 +461,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[14]:FE_FaceQ<1>(1)
+DEAL::fe_data[16]:FE_FaceQ<1>(1)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -432,7 +488,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[15]:FE_FaceQ<1>(3)
+DEAL::fe_data[17]:FE_FaceQ<1>(3)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -459,7 +515,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[16]:FE_FaceP<1>(0)
+DEAL::fe_data[18]:FE_FaceP<1>(0)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -486,7 +542,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[17]:FE_FaceP<1>(1)
+DEAL::fe_data[19]:FE_FaceP<1>(1)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -513,7 +569,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[18]:FE_FaceP<1>(3)
+DEAL::fe_data[20]:FE_FaceP<1>(3)
 DEAL::dofs_per_vertex=1
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -540,7 +596,7 @@ DEAL::face_to_cell_index: 1
 DEAL::support on face 0:       0
 DEAL::support on face 1:       1
 DEAL::
-DEAL::fe_data[19]:FESystem<1>[FE_Q<1>(3)^2]
+DEAL::fe_data[21]:FESystem<1>[FE_Q<1>(3)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=4
 DEAL::dofs_per_quad=0
@@ -567,7 +623,7 @@ DEAL::face_to_cell_index: 2 3
 DEAL::support on face 0:       0       1
 DEAL::support on face 1:       2       3
 DEAL::
-DEAL::fe_data[20]:FESystem<1>[FE_Q<1>(1)^2-FE_Q<1>(3)]
+DEAL::fe_data[22]:FESystem<1>[FE_Q<1>(1)^2-FE_Q<1>(3)]
 DEAL::dofs_per_vertex=3
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -594,7 +650,7 @@ DEAL::face_to_cell_index: 3 4 5
 DEAL::support on face 0:       0       1       2
 DEAL::support on face 1:       3       4       5
 DEAL::
-DEAL::fe_data[21]:FESystem<1>[FE_Q<1>(4)^2]
+DEAL::fe_data[23]:FESystem<1>[FE_Q<1>(4)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=6
 DEAL::dofs_per_quad=0
@@ -621,7 +677,7 @@ DEAL::face_to_cell_index: 2 3
 DEAL::support on face 0:       0       1
 DEAL::support on face 1:       2       3
 DEAL::
-DEAL::fe_data[22]:FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]^2]
+DEAL::fe_data[24]:FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]^2]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -648,7 +704,7 @@ DEAL::face_to_cell_index: 4 5 6 7
 DEAL::support on face 0:       0       1       2       3
 DEAL::support on face 1:       4       5       6       7
 DEAL::
-DEAL::fe_data[23]:FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]-FESystem<1>[FE_DGQ<1>(1)^2]]
+DEAL::fe_data[25]:FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]-FESystem<1>[FE_DGQ<1>(1)^2]]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=4
 DEAL::dofs_per_quad=0
@@ -675,7 +731,7 @@ DEAL::face_to_cell_index: 2 3
 DEAL::support on face 0:       0       1       4       6
 DEAL::support on face 1:       2       3       5       7
 DEAL::
-DEAL::fe_data[24]:FESystem<1>[FESystem<1>[FE_Q<1>(1)-FE_Q<1>(2)]-FESystem<1>[FE_Q<1>(2)^2]-FESystem<1>[FE_DGQ<1>(2)^2]]
+DEAL::fe_data[26]:FESystem<1>[FESystem<1>[FE_Q<1>(1)-FE_Q<1>(2)]-FESystem<1>[FE_Q<1>(2)^2]-FESystem<1>[FE_DGQ<1>(2)^2]]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=9
 DEAL::dofs_per_quad=0
@@ -702,7 +758,7 @@ DEAL::face_to_cell_index: 4 5 6 7
 DEAL::support on face 0:       0       1       2       3       11      14
 DEAL::support on face 1:       4       5       6       7       13      16
 DEAL::
-DEAL::fe_data[25]:FESystem<1>[FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]^2]^2-FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]-FESystem<1>[FE_DGQ<1>(1)^2]]-FESystem<1>[FESystem<1>[FE_Q<1>(1)-FE_Q<1>(2)]-FESystem<1>[FE_Q<1>(2)^2]-FESystem<1>[FE_DGQ<1>(2)^2]]^2]
+DEAL::fe_data[27]:FESystem<1>[FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]^2]^2-FESystem<1>[FESystem<1>[FE_Q<1>(1)^2]-FESystem<1>[FE_DGQ<1>(1)^2]]-FESystem<1>[FESystem<1>[FE_Q<1>(1)-FE_Q<1>(2)]-FESystem<1>[FE_Q<1>(2)^2]-FESystem<1>[FE_DGQ<1>(2)^2]]^2]
 DEAL::dofs_per_vertex=18
 DEAL::dofs_per_line=22
 DEAL::dofs_per_quad=0
@@ -738,6 +794,8 @@ DEAL::FE_Q_Hierarchical<2>(4)
 DEAL::FE_DGQ<2>(1)
 DEAL::FE_DGQ<2>(2)
 DEAL::FE_DGQ<2>(4)
+DEAL::FE_DGQArbitraryNodes<2>(QGaussLobatto(5))
+DEAL::FE_DGQArbitraryNodes<2>(QUnknownNodes(2))
 DEAL::FE_DGP<2>(1)
 DEAL::FE_DGP<2>(2)
 DEAL::FESystem<2>[FE_Q<2>(2)^2]
@@ -1053,7 +1111,69 @@ DEAL::support on face 1: 4       9       14      19      24
 DEAL::support on face 2:       0       1       2       3       4
 DEAL::support on face 3:       20      21      22      23      24
 DEAL::
-DEAL::fe_data[9]:FE_DGP<2>(1)
+DEAL::fe_data[9]:FE_DGQArbitraryNodes<2>(QGaussLobatto(5))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=0
+DEAL::dofs_per_quad=25
+DEAL::dofs_per_hex=0
+DEAL::first_line_index=0
+DEAL::first_quad_index=0
+DEAL::first_hex_index=25
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=25
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[25]->25
+DEAL::degree=4
+DEAL::conformity= L2
+DEAL::unit_support_points=25
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=25
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0       5       10      15      20
+DEAL::support on face 1:       4       9       14      19      24
+DEAL::support on face 2:       0       1       2       3       4
+DEAL::support on face 3:       20      21      22      23      24
+DEAL::
+DEAL::fe_data[10]:FE_DGQArbitraryNodes<2>(QUnknownNodes(2))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=0
+DEAL::dofs_per_quad=9
+DEAL::dofs_per_hex=0
+DEAL::first_line_index=0
+DEAL::first_quad_index=0
+DEAL::first_hex_index=9
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=9
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[9]->9
+DEAL::degree=2
+DEAL::conformity= L2
+DEAL::unit_support_points=9
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=9
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0       1       2       3       4       5       6       7       8
+DEAL::support on face 1:       0       1       2       3       4       5       6       7       8
+DEAL::support on face 2:       0       1       2       3       4       5       6       7       8
+DEAL::support on face 3:       0       1       2       3       4       5       6       7       8
+DEAL::
+DEAL::fe_data[11]:FE_DGP<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=3
@@ -1084,7 +1204,7 @@ DEAL::support on face 1:  0       1       2
 DEAL::support on face 2:       0       1       2
 DEAL::support on face 3:       0       1       2
 DEAL::
-DEAL::fe_data[10]:FE_DGP<2>(2)
+DEAL::fe_data[12]:FE_DGP<2>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=6
@@ -1115,7 +1235,7 @@ DEAL::support on face 1:  0       1       2       3       4       5
 DEAL::support on face 2:       0       1       2       3       4       5
 DEAL::support on face 3:       0       1       2       3       4       5
 DEAL::
-DEAL::fe_data[11]:FESystem<2>[FE_Q<2>(2)^2]
+DEAL::fe_data[13]:FESystem<2>[FE_Q<2>(2)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=2
@@ -1146,7 +1266,7 @@ DEAL::support on face 1:  2       3       6       7       10      11
 DEAL::support on face 2:       0       1       2       3       12      13
 DEAL::support on face 3:       4       5       6       7       14      15
 DEAL::
-DEAL::fe_data[12]:FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(2)]
+DEAL::fe_data[14]:FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(2)]
 DEAL::dofs_per_vertex=3
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=1
@@ -1177,7 +1297,7 @@ DEAL::support on face 1:  3       4       5       9       10      11      13
 DEAL::support on face 2:       0       1       2       3       4       5       14
 DEAL::support on face 3:       6       7       8       9       10      11      15
 DEAL::
-DEAL::fe_data[13]:FE_FaceQ<2>(0)
+DEAL::fe_data[15]:FE_FaceQ<2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -1208,7 +1328,7 @@ DEAL::support on face 1:  1
 DEAL::support on face 2:       2
 DEAL::support on face 3:       3
 DEAL::
-DEAL::fe_data[14]:FE_FaceQ<2>(1)
+DEAL::fe_data[16]:FE_FaceQ<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -1239,7 +1359,7 @@ DEAL::support on face 1:  2       3
 DEAL::support on face 2:       4       5
 DEAL::support on face 3:       6       7
 DEAL::
-DEAL::fe_data[15]:FE_FaceQ<2>(3)
+DEAL::fe_data[17]:FE_FaceQ<2>(3)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=4
 DEAL::dofs_per_quad=0
@@ -1270,7 +1390,7 @@ DEAL::support on face 1:  4       5       6       7
 DEAL::support on face 2:       8       9       10      11
 DEAL::support on face 3:       12      13      14      15
 DEAL::
-DEAL::fe_data[16]:FE_FaceP<2>(0)
+DEAL::fe_data[18]:FE_FaceP<2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -1301,7 +1421,7 @@ DEAL::support on face 1:  1
 DEAL::support on face 2:       2
 DEAL::support on face 3:       3
 DEAL::
-DEAL::fe_data[17]:FE_FaceP<2>(1)
+DEAL::fe_data[19]:FE_FaceP<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -1332,7 +1452,7 @@ DEAL::support on face 1:  2       3
 DEAL::support on face 2:       4       5
 DEAL::support on face 3:       6       7
 DEAL::
-DEAL::fe_data[18]:FE_FaceP<2>(3)
+DEAL::fe_data[20]:FE_FaceP<2>(3)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=4
 DEAL::dofs_per_quad=0
@@ -1363,7 +1483,7 @@ DEAL::support on face 1:  4       5       6       7
 DEAL::support on face 2:       8       9       10      11
 DEAL::support on face 3:       12      13      14      15
 DEAL::
-DEAL::fe_data[19]:FE_DGRaviartThomas<2,2>(0)
+DEAL::fe_data[21]:FE_DGRaviartThomas<2,2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -1394,7 +1514,7 @@ DEAL::support on face 1:  0       1       2       3
 DEAL::support on face 2:       0       1       2       3
 DEAL::support on face 3:       0       1       2       3
 DEAL::
-DEAL::fe_data[20]:FE_DGRaviartThomas<2,2>(1)
+DEAL::fe_data[22]:FE_DGRaviartThomas<2,2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=12
@@ -1425,7 +1545,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[21]:FE_DGNedelec<2,2>(0)
+DEAL::fe_data[23]:FE_DGNedelec<2,2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -1456,7 +1576,7 @@ DEAL::support on face 1:  0       1       2       3
 DEAL::support on face 2:       0       1       2       3
 DEAL::support on face 3:       0       1       2       3
 DEAL::
-DEAL::fe_data[22]:FE_DGNedelec<2,2>(1)
+DEAL::fe_data[24]:FE_DGNedelec<2,2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=12
@@ -1487,7 +1607,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[23]:FE_RaviartThomas<2>(0)
+DEAL::fe_data[25]:FE_RaviartThomas<2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -1518,7 +1638,7 @@ DEAL::support on face 1:  1       2       3
 DEAL::support on face 2:       0       1       2
 DEAL::support on face 3:       0       1       3
 DEAL::
-DEAL::fe_data[24]:FE_RaviartThomas<2>(1)
+DEAL::fe_data[26]:FE_RaviartThomas<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=4
@@ -1549,7 +1669,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[25]:FE_RaviartThomas<2>(2)
+DEAL::fe_data[27]:FE_RaviartThomas<2>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=3
 DEAL::dofs_per_quad=12
@@ -1580,7 +1700,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23
 DEAL::
-DEAL::fe_data[26]:FESystem<2>[FE_RaviartThomas<2>(1)-FE_DGQ<2>(1)]
+DEAL::fe_data[28]:FESystem<2>[FE_RaviartThomas<2>(1)-FE_DGQ<2>(1)]
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=8
@@ -1611,7 +1731,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11      13      15
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11      14      15
 DEAL::
-DEAL::fe_data[27]:FE_Nedelec<2>(0)
+DEAL::fe_data[29]:FE_Nedelec<2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -1642,7 +1762,7 @@ DEAL::support on face 1:  1       2       3
 DEAL::support on face 2:       0       1       2
 DEAL::support on face 3:       0       1       3
 DEAL::
-DEAL::fe_data[28]:FE_Nedelec<2>(1)
+DEAL::fe_data[30]:FE_Nedelec<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=4
@@ -1673,7 +1793,7 @@ DEAL::support on face 1:  2       3       4       5       6       7
 DEAL::support on face 2:       0       1       2       3       4       5
 DEAL::support on face 3:       0       1       2       3       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[29]:FE_DGBDM<2,2>(1)
+DEAL::fe_data[31]:FE_DGBDM<2,2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=8
@@ -1704,7 +1824,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7
 DEAL::support on face 2:       0       1       2       3       4       5       6       7
 DEAL::support on face 3:       0       1       2       3       4       5       6       7
 DEAL::
-DEAL::fe_data[30]:FE_DGBDM<2,2>(2)
+DEAL::fe_data[32]:FE_DGBDM<2,2>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=14
@@ -1735,7 +1855,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::
-DEAL::fe_data[31]:FE_BDM<2>(1)
+DEAL::fe_data[33]:FE_BDM<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=0
@@ -1766,7 +1886,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7
 DEAL::support on face 2:       0       1       2       3       4       5       6       7
 DEAL::support on face 3:       0       1       2       3       4       5       6       7
 DEAL::
-DEAL::fe_data[32]:FE_BDM<2>(2)
+DEAL::fe_data[34]:FE_BDM<2>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=3
 DEAL::dofs_per_quad=2
@@ -1797,7 +1917,7 @@ DEAL::support on face 1:  0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11      12      13
 DEAL::
-DEAL::fe_data[33]:FE_RaviartThomasNodal<2>(0)
+DEAL::fe_data[35]:FE_RaviartThomasNodal<2>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -1828,7 +1948,7 @@ DEAL::support on face 1:  1       2       3
 DEAL::support on face 2:       0       1       2
 DEAL::support on face 3:       0       1       3
 DEAL::
-DEAL::fe_data[34]:FE_RaviartThomasNodal<2>(1)
+DEAL::fe_data[36]:FE_RaviartThomasNodal<2>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=4
@@ -1859,7 +1979,7 @@ DEAL::support on face 1:  2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 2:       0       1       2       3       4       5       8       9       10      11
 DEAL::support on face 3:       0       1       2       3       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[35]:FESystem<2>[FE_RaviartThomasNodal<2>(1)-FE_DGQ<2>(1)]
+DEAL::fe_data[37]:FESystem<2>[FE_RaviartThomasNodal<2>(1)-FE_DGQ<2>(1)]
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=8
@@ -1890,7 +2010,7 @@ DEAL::support on face 1:  2       3       4       5       6       7       8       9       10      11      13      15
 DEAL::support on face 2:       0       1       2       3       4       5       8       9       10      11      12      13
 DEAL::support on face 3:       0       1       2       3       6       7       8       9       10      11      14      15
 DEAL::
-DEAL::fe_data[36]:FESystem<2>[FE_Q<2>(3)^2]
+DEAL::fe_data[38]:FESystem<2>[FE_Q<2>(3)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=4
 DEAL::dofs_per_quad=8
@@ -1921,7 +2041,7 @@ DEAL::support on face 1:  2       3       6       7       12      13      14      15
 DEAL::support on face 2:       0       1       2       3       16      17      18      19
 DEAL::support on face 3:       4       5       6       7       20      21      22      23
 DEAL::
-DEAL::fe_data[37]:FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(3)]
+DEAL::fe_data[39]:FESystem<2>[FE_Q<2>(1)^2-FE_Q<2>(3)]
 DEAL::dofs_per_vertex=3
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=4
@@ -1952,7 +2072,7 @@ DEAL::support on face 1:  3       4       5       9       10      11      14      15
 DEAL::support on face 2:       0       1       2       3       4       5       16      17
 DEAL::support on face 3:       6       7       8       9       10      11      18      19
 DEAL::
-DEAL::fe_data[38]:FESystem<2>[FE_Q<2>(4)^2]
+DEAL::fe_data[40]:FESystem<2>[FE_Q<2>(4)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=6
 DEAL::dofs_per_quad=18
@@ -1983,7 +2103,7 @@ DEAL::support on face 1:  2       3       6       7       14      15      16      17      18      19
 DEAL::support on face 2:       0       1       2       3       20      21      22      23      24      25
 DEAL::support on face 3:       4       5       6       7       26      27      28      29      30      31
 DEAL::
-DEAL::fe_data[39]:FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]^2]
+DEAL::fe_data[41]:FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]^2]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2014,7 +2134,7 @@ DEAL::support on face 1:  4       5       6       7       12      13      14      15
 DEAL::support on face 2:       0       1       2       3       4       5       6       7
 DEAL::support on face 3:       8       9       10      11      12      13      14      15
 DEAL::
-DEAL::fe_data[40]:FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]-FESystem<2>[FE_DGQ<2>(1)^2]]
+DEAL::fe_data[42]:FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]-FESystem<2>[FE_DGQ<2>(1)^2]]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=8
@@ -2045,7 +2165,7 @@ DEAL::support on face 1:  2       3       6       7       9       11      13      15
 DEAL::support on face 2:       0       1       2       3       8       9       12      13
 DEAL::support on face 3:       4       5       6       7       10      11      14      15
 DEAL::
-DEAL::fe_data[41]:FESystem<2>[FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)]-FESystem<2>[FE_Q<2>(2)^2]-FESystem<2>[FE_DGQ<2>(2)^2]]
+DEAL::fe_data[43]:FESystem<2>[FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)]-FESystem<2>[FE_Q<2>(2)^2]-FESystem<2>[FE_DGQ<2>(2)^2]]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=3
 DEAL::dofs_per_quad=21
@@ -2076,7 +2196,7 @@ DEAL::support on face 1:  4       5       6       7       12      13      14      15      19      20      21      33      36      39      42      45      48
 DEAL::support on face 2:       0       1       2       3       4       5       6       7       22      23      24      31      32      33      40      41      42
 DEAL::support on face 3:       8       9       10      11      12      13      14      15      25      26      27      37      38      39      46      47      48
 DEAL::
-DEAL::fe_data[42]:FESystem<2>[FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]^2]^2-FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]-FESystem<2>[FE_DGQ<2>(1)^2]]-FESystem<2>[FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)]-FESystem<2>[FE_Q<2>(2)^2]-FESystem<2>[FE_DGQ<2>(2)^2]]^2]
+DEAL::fe_data[44]:FESystem<2>[FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]^2]^2-FESystem<2>[FESystem<2>[FE_Q<2>(1)^2]-FESystem<2>[FE_DGQ<2>(1)^2]]-FESystem<2>[FESystem<2>[FE_Q<2>(1)-FE_Q<2>(2)]-FESystem<2>[FE_Q<2>(2)^2]-FESystem<2>[FE_DGQ<2>(2)^2]]^2]
 DEAL::dofs_per_vertex=18
 DEAL::dofs_per_line=6
 DEAL::dofs_per_quad=50
@@ -2116,6 +2236,8 @@ DEAL::FE_Q_Hierarchical<3>(4)
 DEAL::FE_DGQ<3>(1)
 DEAL::FE_DGQ<3>(2)
 DEAL::FE_DGQ<3>(4)
+DEAL::FE_DGQArbitraryNodes<3>(QGaussLobatto(5))
+DEAL::FE_DGQArbitraryNodes<3>(QUnknownNodes(2))
 DEAL::FE_DGP<3>(1)
 DEAL::FE_DGP<3>(2)
 DEAL::FESystem<3>[FE_Q<3>(2)^2]
@@ -2460,7 +2582,77 @@ DEAL::support on face 3: 20      21      22      23      24      45      46      47      48      49      70      71      72      73      74      95      96      97      9
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24
 DEAL::support on face 5:       100     101     102     103     104     105     106     107     108     109     110     111     112     113     114     115     116     117     118     119     120     121     122     123     124
 DEAL::
-DEAL::fe_data[9]:FE_DGP<3>(1)
+DEAL::fe_data[9]:FE_DGQArbitraryNodes<3>(QGaussLobatto(5))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=0
+DEAL::dofs_per_quad=0
+DEAL::dofs_per_hex=125
+DEAL::first_line_index=0
+DEAL::first_quad_index=0
+DEAL::first_hex_index=0
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=125
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[125]->125
+DEAL::degree=4
+DEAL::conformity= L2
+DEAL::unit_support_points=125
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=125
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0       5       10      15      20      25      30      35      40      45      50      55      60      65      70      75      80      85      90      95      100     105     110     115     120
+DEAL::support on face 1:       4       9       14      19      24      29      34      39      44      49      54      59      64      69      74      79      84      89      94      99      104     109     114     119     124
+DEAL::support on face 2:       0       1       2       3       4       25      26      27      28      29      50      51      52      53      54      75      76      77      78      79      100     101     102     103     104
+DEAL::support on face 3:       20      21      22      23      24      45      46      47      48      49      70      71      72      73      74      95      96      97      98      99      120     121     122     123     124
+DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24
+DEAL::support on face 5:       100     101     102     103     104     105     106     107     108     109     110     111     112     113     114     115     116     117     118     119     120     121     122     123     124
+DEAL::
+DEAL::fe_data[10]:FE_DGQArbitraryNodes<3>(QUnknownNodes(2))
+DEAL::dofs_per_vertex=0
+DEAL::dofs_per_line=0
+DEAL::dofs_per_quad=0
+DEAL::dofs_per_hex=27
+DEAL::first_line_index=0
+DEAL::first_quad_index=0
+DEAL::first_hex_index=0
+DEAL::first_face_line_index=0
+DEAL::first_face_quad_index=0
+DEAL::dofs_per_face=0
+DEAL::dofs_per_cell=27
+DEAL::primitive=yes
+DEAL::components=1
+DEAL::blocks=1:[27]->27
+DEAL::degree=2
+DEAL::conformity= L2
+DEAL::unit_support_points=27
+DEAL::unit_face_support_points=0
+DEAL::generalized_support_points=27
+DEAL::generalized_face_support_points=0
+DEAL::face_to_equivalent_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::face_to_cell_index:
+DEAL::support on face 0:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::support on face 1:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::support on face 2:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::support on face 3:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26
+DEAL::
+DEAL::fe_data[11]:FE_DGP<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2495,7 +2687,7 @@ DEAL::support on face 3:  0       1       2       3
 DEAL::support on face 4:       0       1       2       3
 DEAL::support on face 5:       0       1       2       3
 DEAL::
-DEAL::fe_data[10]:FE_DGP<3>(2)
+DEAL::fe_data[12]:FE_DGP<3>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2530,7 +2722,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9
 DEAL::
-DEAL::fe_data[11]:FESystem<3>[FE_Q<3>(2)^2]
+DEAL::fe_data[13]:FESystem<3>[FE_Q<3>(2)^2]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=2
@@ -2565,7 +2757,7 @@ DEAL::support on face 3:  4       5       6       7       12      13      14      15      22      23      30      31      36      37      38      39      46      47
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       16      17      18      19      20      21      22      23      48      49
 DEAL::support on face 5:       8       9       10      11      12      13      14      15      24      25      26      27      28      29      30      31      50      51
 DEAL::
-DEAL::fe_data[12]:FESystem<3>[FE_Q<3>(1)^2-FE_Q<3>(2)]
+DEAL::fe_data[14]:FESystem<3>[FE_Q<3>(1)^2-FE_Q<3>(2)]
 DEAL::dofs_per_vertex=3
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=1
@@ -2600,7 +2792,7 @@ DEAL::support on face 3:  6       7       8       9       10      11      18      19      20      21      22      23      27      31      34      35      39
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      24      25      26      27      40
 DEAL::support on face 5:       12      13      14      15      16      17      18      19      20      21      22      23      28      29      30      31      41
 DEAL::
-DEAL::fe_data[13]:FE_FaceQ<3>(0)
+DEAL::fe_data[15]:FE_FaceQ<3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=1
@@ -2635,7 +2827,7 @@ DEAL::support on face 3:  3
 DEAL::support on face 4:       4
 DEAL::support on face 5:       5
 DEAL::
-DEAL::fe_data[14]:FE_FaceQ<3>(1)
+DEAL::fe_data[16]:FE_FaceQ<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -2670,7 +2862,7 @@ DEAL::support on face 3:  12      13      14      15
 DEAL::support on face 4:       16      17      18      19
 DEAL::support on face 5:       20      21      22      23
 DEAL::
-DEAL::fe_data[15]:FE_FaceQ<3>(3)
+DEAL::fe_data[17]:FE_FaceQ<3>(3)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=16
@@ -2705,7 +2897,7 @@ DEAL::support on face 3:  48      49      50      51      52      53      54      55      56      57      58      59      60      61      62      63
 DEAL::support on face 4:       64      65      66      67      68      69      70      71      72      73      74      75      76      77      78      79
 DEAL::support on face 5:       80      81      82      83      84      85      86      87      88      89      90      91      92      93      94      95
 DEAL::
-DEAL::fe_data[16]:FE_FaceP<3>(0)
+DEAL::fe_data[18]:FE_FaceP<3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=1
@@ -2740,7 +2932,7 @@ DEAL::support on face 3:  3
 DEAL::support on face 4:       4
 DEAL::support on face 5:       5
 DEAL::
-DEAL::fe_data[17]:FE_FaceP<3>(1)
+DEAL::fe_data[19]:FE_FaceP<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=3
@@ -2775,7 +2967,7 @@ DEAL::support on face 3:  9       10      11
 DEAL::support on face 4:       12      13      14
 DEAL::support on face 5:       15      16      17
 DEAL::
-DEAL::fe_data[18]:FE_FaceP<3>(3)
+DEAL::fe_data[20]:FE_FaceP<3>(3)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=10
@@ -2810,7 +3002,7 @@ DEAL::support on face 3:  30      31      32      33      34      35      36      37      38      39
 DEAL::support on face 4:       40      41      42      43      44      45      46      47      48      49
 DEAL::support on face 5:       50      51      52      53      54      55      56      57      58      59
 DEAL::
-DEAL::fe_data[19]:FE_DGRaviartThomas<3,3>(0)
+DEAL::fe_data[21]:FE_DGRaviartThomas<3,3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2845,7 +3037,7 @@ DEAL::support on face 3:  0       1       2       3       4       5
 DEAL::support on face 4:       0       1       2       3       4       5
 DEAL::support on face 5:       0       1       2       3       4       5
 DEAL::
-DEAL::fe_data[20]:FE_DGRaviartThomas<3,3>(1)
+DEAL::fe_data[22]:FE_DGRaviartThomas<3,3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2880,7 +3072,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::
-DEAL::fe_data[21]:FE_DGNedelec<3,3>(0)
+DEAL::fe_data[23]:FE_DGNedelec<3,3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2915,7 +3107,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[22]:FE_DGNedelec<3,3>(1)
+DEAL::fe_data[24]:FE_DGNedelec<3,3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -2950,7 +3142,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39      40      41      42      43      44      45      46      47      48      49      50      51      52      53
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39      40      41      42      43      44      45      46      47      48      49      50      51      52      53
 DEAL::
-DEAL::fe_data[23]:FE_RaviartThomas<3>(0)
+DEAL::fe_data[25]:FE_RaviartThomas<3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=1
@@ -2985,7 +3177,7 @@ DEAL::support on face 3:  0       1       2       3       4       5
 DEAL::support on face 4:       0       1       2       3       4       5
 DEAL::support on face 5:       0       1       2       3       4       5
 DEAL::
-DEAL::fe_data[24]:FE_RaviartThomas<3>(1)
+DEAL::fe_data[26]:FE_RaviartThomas<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -3020,7 +3212,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::
-DEAL::fe_data[25]:FE_RaviartThomas<3>(2)
+DEAL::fe_data[27]:FE_RaviartThomas<3>(2)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=9
@@ -3055,7 +3247,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39      40      41      42      43      44      45      46      47      48      49      50      51      52      53      54      55      56      57      58      59      60      61      62      63      64      65      66      67      68      69      70      71      72      73      74      75      76      77      78      79      80      81      82      83      84      85      86      87      88      89      90      91      92      93      94      95      96      97      98      99      100     101     102     103     104     105     106     107
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39      40      41      42      43      44      45      46      47      48      49      50      51      52      53      54      55      56      57      58      59      60      61      62      63      64      65      66      67      68      69      70      71      72      73      74      75      76      77      78      79      80      81      82      83      84      85      86      87      88      89      90      91      92      93      94      95      96      97      98      99      100     101     102     103     104     105     106     107
 DEAL::
-DEAL::fe_data[26]:FESystem<3>[FE_RaviartThomas<3>(1)-FE_DGQ<3>(1)]
+DEAL::fe_data[28]:FESystem<3>[FE_RaviartThomas<3>(1)-FE_DGQ<3>(1)]
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -3090,7 +3282,7 @@ DEAL::support on face 3:  0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      40      41      42      43
 DEAL::
-DEAL::fe_data[27]:FE_Nedelec<3>(0)
+DEAL::fe_data[29]:FE_Nedelec<3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=1
 DEAL::dofs_per_quad=0
@@ -3125,7 +3317,7 @@ DEAL::support on face 3:  0       1       3       4       5       7       10      11
 DEAL::support on face 4:       0       1       2       3       8       9       10      11
 DEAL::support on face 5:       4       5       6       7       8       9       10      11
 DEAL::
-DEAL::fe_data[28]:FE_Nedelec<3>(1)
+DEAL::fe_data[30]:FE_Nedelec<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=2
 DEAL::dofs_per_quad=4
@@ -3160,7 +3352,7 @@ DEAL::support on face 3:  0       1       2       3       6       7       8       9       10      11      14      15      20      21      22      23      26      27      30      31      36
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       16      17      18      19      20      21      22      23      24      25      28      29      34      35      38      39      40      41      42      43
 DEAL::support on face 5:       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      28      29      34      35      38      39      44      45      46      47
 DEAL::
-DEAL::fe_data[29]:FE_RaviartThomasNodal<3>(0)
+DEAL::fe_data[31]:FE_RaviartThomasNodal<3>(0)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=1
@@ -3195,7 +3387,7 @@ DEAL::support on face 3:  0       1       3       4       5
 DEAL::support on face 4:       0       1       2       3       4
 DEAL::support on face 5:       0       1       2       3       5
 DEAL::
-DEAL::fe_data[30]:FE_RaviartThomasNodal<3>(1)
+DEAL::fe_data[32]:FE_RaviartThomasNodal<3>(1)
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -3230,7 +3422,7 @@ DEAL::support on face 3:  0       1       2       3       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35
 DEAL::
-DEAL::fe_data[31]:FESystem<3>[FE_RaviartThomasNodal<3>(1)-FE_DGQ<3>(1)]
+DEAL::fe_data[33]:FESystem<3>[FE_RaviartThomasNodal<3>(1)-FE_DGQ<3>(1)]
 DEAL::dofs_per_vertex=0
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=4
@@ -3265,7 +3457,7 @@ DEAL::support on face 3:  0       1       2       3       6       7       8       9       10      11      12      13      14      15      16      17      18      19      20      21      22
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      36      37      38      39
 DEAL::support on face 5:       0       1       2       3       4       5       6       7       10      11      12      13      14      15      16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      32      33      34      35      40      41      42      43
 DEAL::
-DEAL::fe_data[32]:FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]^2]
+DEAL::fe_data[34]:FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]^2]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -3300,7 +3492,7 @@ DEAL::support on face 3:  8       9       10      11      12      13      14      15      24      25      26      27      28      29      30      31
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15
 DEAL::support on face 5:       16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31
 DEAL::
-DEAL::fe_data[33]:FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]-FESystem<3>[FE_DGQ<3>(1)^2]]
+DEAL::fe_data[35]:FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]-FESystem<3>[FE_DGQ<3>(1)^2]]
 DEAL::dofs_per_vertex=2
 DEAL::dofs_per_line=0
 DEAL::dofs_per_quad=0
@@ -3335,7 +3527,7 @@ DEAL::support on face 3:  4       5       6       7       12      13      14      15      18      19      22      23      26      27      30      31
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       16      17      18      19      24      25      26      27
 DEAL::support on face 5:       8       9       10      11      12      13      14      15      20      21      22      23      28      29      30      31
 DEAL::
-DEAL::fe_data[34]:FESystem<3>[FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)]-FESystem<3>[FE_Q<3>(2)^2]-FESystem<3>[FE_DGQ<3>(2)^2]]
+DEAL::fe_data[36]:FESystem<3>[FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)]-FESystem<3>[FE_Q<3>(2)^2]-FESystem<3>[FE_DGQ<3>(2)^2]]
 DEAL::dofs_per_vertex=4
 DEAL::dofs_per_line=3
 DEAL::dofs_per_quad=3
@@ -3370,7 +3562,7 @@ DEAL::support on face 3:  8       9       10      11      12      13      14      15      24      25      26      27      28      29      30      31      41      42      43
 DEAL::support on face 4:       0       1       2       3       4       5       6       7       8       9       10      11      12      13      14      15      32      33      34      35      36      37      38      39      40      41      42      43      80      81      82      89      90      91      92      93      94      95      96      97      116     117     118     119     120     121     122     123     124
 DEAL::support on face 5:       16      17      18      19      20      21      22      23      24      25      26      27      28      29      30      31      44      45      46      47      48      49      50      51      52      53      54      55      83      84      85      107     108     109     110     111     112     113     114     115     134     135     136     137     138     139     140     141     142
 DEAL::
-DEAL::fe_data[35]:FESystem<3>[FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]^2]^2-FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]-FESystem<3>[FE_DGQ<3>(1)^2]]-FESystem<3>[FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)]-FESystem<3>[FE_Q<3>(2)^2]-FESystem<3>[FE_DGQ<3>(2)^2]]^2]
+DEAL::fe_data[37]:FESystem<3>[FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]^2]^2-FESystem<3>[FESystem<3>[FE_Q<3>(1)^2]-FESystem<3>[FE_DGQ<3>(1)^2]]-FESystem<3>[FESystem<3>[FE_Q<3>(1)-FE_Q<3>(2)]-FESystem<3>[FE_Q<3>(2)^2]-FESystem<3>[FE_DGQ<3>(2)^2]]^2]
 DEAL::dofs_per_vertex=18
 DEAL::dofs_per_line=6
 DEAL::dofs_per_quad=6
diff --git a/tests/lac/gmres_eigenvalues.cc b/tests/lac/gmres_eigenvalues.cc
new file mode 100644 (file)
index 0000000..94ff530
--- /dev/null
@@ -0,0 +1,117 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2013 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+// test eigenvalue approximation by GMRES algorithm
+
+#include "../tests.h"
+#include <deal.II/lac/vector.h>
+#include <deal.II/lac/lapack_full_matrix.h>
+#include <deal.II/lac/solver_gmres.h>
+#include <deal.II/lac/precondition.h>
+
+
+
+template <typename number>
+void test (unsigned int variant)
+{
+  const unsigned int n = variant < 3 ? 64 : 16;
+  Vector<number> rhs(n), sol(n);
+  rhs = 1.;
+
+  LAPACKFullMatrix<number> matrix(n, n);
+
+  // put diagonal entries of different strengths. these are very challenging
+  // for GMRES and will usually take a lot of iterations until the Krylov
+  // subspace is complete enough
+  if (variant == 0)
+    for (unsigned int i=0; i<n; ++i)
+      matrix(i,i) = (i+1);
+  else if (variant == 1)
+    for (unsigned int i=0; i<n; ++i)
+      matrix(i,i) = (i+1) * (i+1) * (i+1) * (i+1);
+  else if (variant == 2)
+    for (unsigned int i=0; i<n; ++i)
+      matrix(i,i) = (i%2?1.:-1.)*(i+1);
+  else if (variant == 3)
+    for (unsigned int i=0; i<n; ++i)
+      {
+        matrix(i,i) = (i+1);
+        if (i<n-1)
+          matrix(i,i+1) = 1.5+i;
+        if (i<n-2)
+          matrix(i,i+2) = -1.65;
+       matrix(i,n-1) = 2.;
+       matrix(n-1,i) = -2.;
+      }
+  else
+    Assert(false, ExcMessage("Invalid variant"));
+  if (types_are_equal<number,float>::value == true)
+    Assert(variant < 4, ExcMessage("Invalid_variant"));
+
+  deallog.push(Utilities::int_to_string(variant,1));
+
+  SolverControl control(1000, variant==1?1e-4:1e-13);
+  typename SolverGMRES<Vector<number> >::AdditionalData data;
+  data.max_n_tmp_vectors = 80;
+  data.compute_eigenvalues = true;
+
+  SolverGMRES<Vector<number> > solver(control, data);
+  solver.solve(matrix, sol, rhs, PreconditionIdentity());
+
+  if (variant == 0)
+    {
+      typename SolverCG<Vector<number> >::AdditionalData cg_data;
+      cg_data.compute_eigenvalues = true;
+      SolverCG<Vector<number> > solver_cg(control, cg_data);
+      sol = 0;
+      solver_cg.solve(matrix, sol, rhs, PreconditionIdentity());
+    }
+
+  if (variant == 3)
+    {
+      matrix.compute_eigenvalues();
+      std::vector<std::complex<double> > eigenvalues(n);
+      for (unsigned int i=0; i<n; ++i)
+        eigenvalues[i] = matrix.eigenvalue(i);
+
+      std::sort(eigenvalues.begin(), eigenvalues.end(),
+                internal::SolverGMRES::complex_less_pred);
+
+      deallog << "Actual eigenvalues:        ";
+      for (unsigned int i=0; i<n; ++i)
+        deallog << ' ' << eigenvalues[i];
+      deallog << std::endl;
+    }
+  deallog.pop();
+}
+
+int main()
+{
+  std::ofstream logfile("output");
+  deallog << std::setprecision(3);
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  deallog.push("double");
+  test<double>(0);
+  test<double>(1);
+  test<double>(2);
+  test<double>(3);
+  deallog.pop();
+}
+
diff --git a/tests/lac/gmres_eigenvalues.output b/tests/lac/gmres_eigenvalues.output
new file mode 100644 (file)
index 0000000..ff01b9b
--- /dev/null
@@ -0,0 +1,17 @@
+
+DEAL:double:0:GMRES::Starting value 8.00
+DEAL:double:0:GMRES::Convergence step 56 value 0
+DEAL:double:0:GMRES::Eigenvalue estimate:  (1.00,0.00) (2.00,0.00) (3.00,0.00) (4.00,0.00) (5.00,0.00) (6.00,0.00) (7.00,0.00) (8.00,0.00) (9.00,0.00) (10.0,0.00) (11.0,0.00) (12.0,0.00) (13.0,0.00) (14.0,0.00) (15.0,0.00) (16.0,0.00) (17.1,0.00) (18.2,0.00) (19.5,0.00) (20.7,0.00) (22.0,0.00) (23.3,0.00) (24.7,0.00) (26.0,0.00) (27.5,0.00) (28.9,0.00) (30.3,0.00) (31.8,0.00) (33.2,0.00) (34.7,0.00) (36.1,0.00) (37.6,0.00) (39.0,0.00) (40.4,0.00) (41.7,0.00) (43.0,0.00) (44.3,0.00) (45.5,0.00) (46.7,0.00) (47.9,0.00) (49.0,0.00) (50.0,0.00) (51.0,0.00) (52.0,0.00) (53.0,0.00) (54.0,0.00) (55.0,0.00) (56.0,0.00) (57.0,0.00) (58.0,0.00) (59.0,0.00) (60.0,0.00) (61.0,0.00) (62.0,0.00) (63.0,0.00) (64.0,0.00)
+DEAL:double:0:cg::Starting value 8.00
+DEAL:double:0:cg::Convergence step 56 value 0
+DEAL:double:0:cg:: 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.0 11.0 12.0 13.0 14.0 15.0 16.1 17.3 18.4 19.7 21.0 22.3 23.7 25.1 26.6 28.0 29.5 31.0 32.5 34.0 35.5 37.0 38.4 39.9 41.3 42.7 44.0 45.3 46.6 47.7 48.9 50.0 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0
+DEAL:double:1:GMRES::Starting value 8.00
+DEAL:double:1:GMRES::Convergence step 64 value 4.41e-10
+DEAL:double:1:GMRES::Eigenvalue estimate:  (1.00,0.00) (16.0,0.00) (81.0,0.00) (256.,0.00) (625.,0.00) (1.30e+03,0.00) (2.40e+03,0.00) (4.10e+03,0.00) (6.56e+03,0.00) (1.00e+04,0.00) (1.46e+04,0.00) (2.07e+04,0.00) (2.86e+04,0.00) (3.84e+04,0.00) (5.06e+04,0.00) (6.55e+04,0.00) (8.35e+04,0.00) (1.05e+05,0.00) (1.30e+05,0.00) (1.60e+05,0.00) (1.94e+05,0.00) (2.34e+05,0.00) (2.80e+05,0.00) (3.32e+05,0.00) (3.91e+05,0.00) (4.57e+05,0.00) (5.31e+05,0.00) (6.15e+05,0.00) (7.07e+05,0.00) (8.10e+05,0.00) (9.24e+05,0.00) (1.05e+06,0.00) (1.19e+06,0.00) (1.34e+06,0.00) (1.50e+06,0.00) (1.68e+06,0.00) (1.87e+06,0.00) (2.09e+06,0.00) (2.31e+06,0.00) (2.56e+06,0.00) (2.83e+06,0.00) (3.11e+06,0.00) (3.42e+06,0.00) (3.75e+06,0.00) (4.10e+06,0.00) (4.48e+06,0.00) (4.88e+06,0.00) (5.31e+06,0.00) (5.76e+06,0.00) (6.25e+06,0.00) (6.77e+06,0.00) (7.31e+06,0.00) (7.89e+06,0.00) (8.50e+06,0.00) (9.15e+06,0.00) (9.83e+06,0.00) (1.06e+07,0.00) (1.13e+07,0.00) (1.21e+07,0.00) (1.30e+07,0.00) (1.38e+07,0.00) (1.48e+07,0.00) (1.58e+07,0.00) (1.68e+07,0.00)
+DEAL:double:2:GMRES::Starting value 8.00
+DEAL:double:2:GMRES::Convergence step 64 value 0
+DEAL:double:2:GMRES::Eigenvalue estimate:  (-63.0,0.00) (-61.0,0.00) (-59.0,0.00) (-57.0,0.00) (-55.0,0.00) (-53.0,0.00) (-51.0,0.00) (-49.0,0.00) (-47.0,0.00) (-45.0,0.00) (-43.0,0.00) (-41.0,0.00) (-39.0,0.00) (-37.0,0.00) (-35.0,0.00) (-33.0,0.00) (-31.0,0.00) (-29.0,0.00) (-27.0,0.00) (-25.0,0.00) (-23.0,0.00) (-21.0,0.00) (-19.0,0.00) (-17.0,0.00) (-15.0,0.00) (-13.0,0.00) (-11.0,0.00) (-9.00,0.00) (-7.00,0.00) (-5.00,0.00) (-3.00,0.00) (-1.00,0.00) (2.00,0.00) (4.00,0.00) (6.00,0.00) (8.00,0.00) (10.0,0.00) (12.0,0.00) (14.0,0.00) (16.0,0.00) (18.0,0.00) (20.0,0.00) (22.0,0.00) (24.0,0.00) (26.0,0.00) (28.0,0.00) (30.0,0.00) (32.0,0.00) (34.0,0.00) (36.0,0.00) (38.0,0.00) (40.0,0.00) (42.0,0.00) (44.0,0.00) (46.0,0.00) (48.0,0.00) (50.0,0.00) (52.0,0.00) (54.0,0.00) (56.0,0.00) (58.0,0.00) (60.0,0.00) (62.0,0.00) (64.0,0.00)
+DEAL:double:3:GMRES::Starting value 4.00
+DEAL:double:3:GMRES::Convergence step 16 value 0
+DEAL:double:3:GMRES::Eigenvalue estimate:  (0.272,-1.14) (0.272,1.14) (1.52,-3.81) (1.52,3.81) (2.81,-3.71) (2.81,3.71) (4.50,-4.11) (4.50,4.11) (7.18,-5.38) (7.18,5.38) (10.3,-5.98) (10.3,5.98) (13.9,-5.92) (13.9,5.92) (18.5,-4.07) (18.5,4.07)
+DEAL:double:3::Actual eigenvalues:         (0.272,-1.14) (0.272,1.14) (1.52,-3.81) (1.52,3.81) (2.81,-3.71) (2.81,3.71) (4.50,-4.11) (4.50,4.11) (7.18,-5.38) (7.18,5.38) (10.3,-5.98) (10.3,5.98) (13.9,-5.92) (13.9,5.92) (18.5,-4.07) (18.5,4.07)
index 243050d7a4584e6640493bef3c9cf1f3abdc1c2c..b920f8b52c49d19621ff524a07dfc629805d532f 100644 (file)
@@ -141,9 +141,6 @@ namespace Step48
             const VectorizedArray<double> current_value = current.get_value(q);
             const VectorizedArray<double> old_value     = old.get_value(q);
 
-            // the first 'dummy' is needed to work around a compiler bug in
-            // the tester
-            const VectorizedArray<double> dummy = -std::sin(current_value);
             current.submit_value (2.*current_value - old_value -
                                   delta_t_sqr * std::sin(current_value),q);
             current.submit_gradient (- delta_t_sqr *
diff --git a/tests/metis/metis_01.with_64bit_indices=on.output b/tests/metis/metis_01.with_64bit_indices=on.output
new file mode 100644 (file)
index 0000000..06ce046
--- /dev/null
@@ -0,0 +1,295 @@
+
+DEAL::RECURSIVE
+DEAL::4.0 0
+DEAL::4.1 0
+DEAL::4.2 0
+DEAL::4.3 0
+DEAL::4.4 1
+DEAL::4.5 1
+DEAL::4.6 1
+DEAL::4.7 4
+DEAL::4.8 4
+DEAL::4.9 2
+DEAL::4.10 2
+DEAL::4.11 2
+DEAL::4.12 3
+DEAL::4.13 3
+DEAL::4.14 3
+DEAL::4.15 4
+DEAL::K-WAY
+DEAL::4.0 2
+DEAL::4.1 2
+DEAL::4.2 3
+DEAL::4.3 3
+DEAL::4.4 0
+DEAL::4.5 0
+DEAL::4.6 1
+DEAL::4.7 6
+DEAL::4.8 6
+DEAL::4.9 7
+DEAL::4.10 7
+DEAL::4.11 8
+DEAL::4.12 8
+DEAL::4.13 5
+DEAL::4.14 5
+DEAL::4.15 4
+DEAL::RECURSIVE
+DEAL::3.0 2
+DEAL::3.1 2
+DEAL::3.2 2
+DEAL::3.3 2
+DEAL::3.4 2
+DEAL::3.5 2
+DEAL::3.6 2
+DEAL::3.7 2
+DEAL::3.8 2
+DEAL::3.9 2
+DEAL::3.10 3
+DEAL::3.11 3
+DEAL::3.12 2
+DEAL::3.13 2
+DEAL::3.14 3
+DEAL::3.15 3
+DEAL::3.16 2
+DEAL::3.17 0
+DEAL::3.18 0
+DEAL::3.19 0
+DEAL::3.20 0
+DEAL::3.21 0
+DEAL::3.22 0
+DEAL::3.23 0
+DEAL::3.24 0
+DEAL::3.25 0
+DEAL::3.26 0
+DEAL::3.27 0
+DEAL::3.28 0
+DEAL::3.29 0
+DEAL::3.30 1
+DEAL::3.31 1
+DEAL::3.32 3
+DEAL::3.33 3
+DEAL::3.34 3
+DEAL::3.35 3
+DEAL::3.36 3
+DEAL::3.37 3
+DEAL::3.38 3
+DEAL::3.39 4
+DEAL::3.40 3
+DEAL::3.41 3
+DEAL::3.42 4
+DEAL::3.43 4
+DEAL::3.44 4
+DEAL::3.45 4
+DEAL::3.46 4
+DEAL::3.47 4
+DEAL::3.48 1
+DEAL::3.49 1
+DEAL::3.50 4
+DEAL::3.51 1
+DEAL::3.52 1
+DEAL::3.53 1
+DEAL::3.54 1
+DEAL::3.55 1
+DEAL::3.56 4
+DEAL::3.57 4
+DEAL::3.58 4
+DEAL::3.59 4
+DEAL::3.60 1
+DEAL::3.61 1
+DEAL::3.62 4
+DEAL::3.63 1
+DEAL::K-WAY
+DEAL::3.0 0
+DEAL::3.1 0
+DEAL::3.2 0
+DEAL::3.3 0
+DEAL::3.4 4
+DEAL::3.5 4
+DEAL::3.6 4
+DEAL::3.7 4
+DEAL::3.8 0
+DEAL::3.9 0
+DEAL::3.10 0
+DEAL::3.11 1
+DEAL::3.12 4
+DEAL::3.13 4
+DEAL::3.14 1
+DEAL::3.15 5
+DEAL::3.16 4
+DEAL::3.17 6
+DEAL::3.18 6
+DEAL::3.19 6
+DEAL::3.20 6
+DEAL::3.21 6
+DEAL::3.22 6
+DEAL::3.23 6
+DEAL::3.24 5
+DEAL::3.25 5
+DEAL::3.26 8
+DEAL::3.27 5
+DEAL::3.28 8
+DEAL::3.29 8
+DEAL::3.30 8
+DEAL::3.31 7
+DEAL::3.32 1
+DEAL::3.33 1
+DEAL::3.34 1
+DEAL::3.35 1
+DEAL::3.36 1
+DEAL::3.37 8
+DEAL::3.38 2
+DEAL::3.39 3
+DEAL::3.40 2
+DEAL::3.41 2
+DEAL::3.42 2
+DEAL::3.43 2
+DEAL::3.44 2
+DEAL::3.45 3
+DEAL::3.46 2
+DEAL::3.47 3
+DEAL::3.48 8
+DEAL::3.49 8
+DEAL::3.50 3
+DEAL::3.51 5
+DEAL::3.52 8
+DEAL::3.53 7
+DEAL::3.54 7
+DEAL::3.55 7
+DEAL::3.56 3
+DEAL::3.57 5
+DEAL::3.58 3
+DEAL::3.59 3
+DEAL::3.60 5
+DEAL::3.61 7
+DEAL::3.62 7
+DEAL::3.63 7
+DEAL::RECURSIVE
+DEAL::2.0 0
+DEAL::2.1 1
+DEAL::2.2 0
+DEAL::2.3 1
+DEAL::2.4 0
+DEAL::2.5 1
+DEAL::2.6 0
+DEAL::2.7 1
+DEAL::2.8 1
+DEAL::2.9 2
+DEAL::2.10 2
+DEAL::2.11 2
+DEAL::2.12 1
+DEAL::2.13 1
+DEAL::2.14 1
+DEAL::2.15 2
+DEAL::2.16 3
+DEAL::2.17 3
+DEAL::2.18 3
+DEAL::2.19 3
+DEAL::2.20 3
+DEAL::2.21 3
+DEAL::2.22 3
+DEAL::2.23 3
+DEAL::2.24 2
+DEAL::2.25 2
+DEAL::2.26 3
+DEAL::2.27 2
+DEAL::2.28 2
+DEAL::2.29 2
+DEAL::2.30 3
+DEAL::2.31 2
+DEAL::2.32 0
+DEAL::2.33 0
+DEAL::2.34 0
+DEAL::2.35 0
+DEAL::2.36 0
+DEAL::2.37 0
+DEAL::2.38 0
+DEAL::2.39 0
+DEAL::2.40 1
+DEAL::2.41 1
+DEAL::2.42 1
+DEAL::2.43 2
+DEAL::2.44 1
+DEAL::2.45 1
+DEAL::2.46 4
+DEAL::2.47 2
+DEAL::2.48 3
+DEAL::2.49 3
+DEAL::2.50 3
+DEAL::2.51 3
+DEAL::2.52 4
+DEAL::2.53 4
+DEAL::2.54 4
+DEAL::2.55 4
+DEAL::2.56 4
+DEAL::2.57 2
+DEAL::2.58 4
+DEAL::2.59 4
+DEAL::2.60 4
+DEAL::2.61 4
+DEAL::2.62 4
+DEAL::2.63 4
+DEAL::K-WAY
+DEAL::2.0 6
+DEAL::2.1 6
+DEAL::2.2 8
+DEAL::2.3 8
+DEAL::2.4 7
+DEAL::2.5 0
+DEAL::2.6 7
+DEAL::2.7 8
+DEAL::2.8 6
+DEAL::2.9 6
+DEAL::2.10 6
+DEAL::2.11 6
+DEAL::2.12 1
+DEAL::2.13 1
+DEAL::2.14 6
+DEAL::2.15 0
+DEAL::2.16 4
+DEAL::2.17 4
+DEAL::2.18 4
+DEAL::2.19 4
+DEAL::2.20 4
+DEAL::2.21 2
+DEAL::2.22 4
+DEAL::2.23 4
+DEAL::2.24 2
+DEAL::2.25 2
+DEAL::2.26 2
+DEAL::2.27 2
+DEAL::2.28 2
+DEAL::2.29 0
+DEAL::2.30 2
+DEAL::2.31 3
+DEAL::2.32 7
+DEAL::2.33 7
+DEAL::2.34 7
+DEAL::2.35 1
+DEAL::2.36 7
+DEAL::2.37 7
+DEAL::2.38 5
+DEAL::2.39 8
+DEAL::2.40 1
+DEAL::2.41 0
+DEAL::2.42 8
+DEAL::2.43 1
+DEAL::2.44 0
+DEAL::2.45 0
+DEAL::2.46 1
+DEAL::2.47 1
+DEAL::2.48 5
+DEAL::2.49 8
+DEAL::2.50 5
+DEAL::2.51 5
+DEAL::2.52 5
+DEAL::2.53 3
+DEAL::2.54 5
+DEAL::2.55 5
+DEAL::2.56 8
+DEAL::2.57 0
+DEAL::2.58 8
+DEAL::2.59 3
+DEAL::2.60 3
+DEAL::2.61 3
+DEAL::2.62 3
+DEAL::2.63 3
diff --git a/tests/metis/metis_01a.cc b/tests/metis/metis_01a.cc
new file mode 100644 (file)
index 0000000..ba2b3a8
--- /dev/null
@@ -0,0 +1,165 @@
+// ---------------------------------------------------------------------
+// $Id$
+//
+// Copyright (C) 2004 - 2014 by the deal.II authors
+//
+// This file is part of the deal.II library.
+//
+// The deal.II library is free software; you can use it, redistribute
+// it, and/or modify it under the terms of the GNU Lesser General
+// Public License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// The full text of the license can be found in the file LICENSE at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// A test meant to identify why GridTools::partition_triangulation
+// produces different output whether we're in 32- or 64-bit mode. it
+// turns out that when we get METIS from PETSc and PETSc's downloaded
+// version of METIS is the source of the METIS installation we use
+// here, then PETSc configures METIS to use the same integer size as
+// PETSc. However, then, METIS produces different output.
+//
+// We can not currently test for this, so the tests in this directory
+// have different output depending on whether *we* (and consequently
+// PETSc) use 32- or 64-bit indices, not on whether or not we use 32-
+// or 64-bit METIS.
+
+#include "../tests.h"
+#include <deal.II/grid/tria.h>
+#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/grid/tria_iterator.h>
+#include <deal.II/grid/grid_tools.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/lac/sparsity_pattern.h>
+#include <deal.II/lac/sparsity_tools.h>
+#include <metis.h>
+#include <fstream>
+#include <iomanip>
+
+
+void partition (const SparsityPattern     &sparsity_pattern,
+               const unsigned int         n_partitions)
+{
+  // generate the data structures for
+  // METIS. Note that this is particularly
+  // simple, since METIS wants exactly our
+  // compressed row storage format. we only
+  // have to set up a few auxiliary arrays
+  idx_t
+    n       = static_cast<signed int>(sparsity_pattern.n_rows()),
+    ncon    = 1,                              // number of balancing constraints (should be >0)
+    nparts  = static_cast<int>(n_partitions), // number of subdomains to create
+    dummy;                                    // the numbers of edges cut by the
+  // resulting partition
+
+  // use default options for METIS
+  idx_t options[METIS_NOPTIONS];
+  METIS_SetDefaultOptions (options);
+
+  // one more nuisance: we have to copy our
+  // own data to arrays that store signed
+  // integers :-(
+  std::vector<idx_t> int_rowstart(1);
+  int_rowstart.reserve(sparsity_pattern.n_rows()+1);
+  std::vector<idx_t> int_colnums;
+  int_colnums.reserve(sparsity_pattern.n_nonzero_elements());
+  for (SparsityPattern::size_type row=0; row<sparsity_pattern.n_rows(); ++row)
+    {
+      for (SparsityPattern::iterator col=sparsity_pattern.begin(row);
+          col < sparsity_pattern.end(row); ++col)
+       int_colnums.push_back(col->column());
+      int_rowstart.push_back(int_colnums.size());
+    }
+
+  std::vector<idx_t> int_partition_indices (sparsity_pattern.n_rows());
+
+  // log the inputs to METIS
+  deallog << "METIS inputs:" << std::endl;
+  deallog << "IDXTYPEWIDTH=" << IDXTYPEWIDTH << std::endl;
+  deallog << n << ' ' << ncon << ' ' << nparts << std::endl;
+  for (unsigned int i=0; i<int_rowstart.size(); ++i)
+    deallog << int_rowstart[i] << ' ';
+  deallog << std::endl;
+  for (unsigned int i=0; i<int_colnums.size(); ++i)
+    deallog << int_colnums[i] << ' ';
+  deallog << std::endl;
+  for (unsigned int i=0; i<METIS_NOPTIONS; ++i)
+    deallog << options[i] << ' ';
+  deallog << std::endl;
+  deallog << sizeof(idx_t) << std::endl;
+  
+  
+  // Make use of METIS' error code.
+  int ierr;
+
+  // Select which type of partitioning to
+  // create
+
+  ierr = METIS_PartGraphRecursive(&n, &ncon, &int_rowstart[0], &int_colnums[0],
+                                 NULL, NULL, NULL,
+                                 &nparts,NULL,NULL,&options[0],
+                                 &dummy,&int_partition_indices[0]);
+
+  deallog << "METIS outputs:" << std::endl;
+  deallog << dummy << std::endl;
+  for (unsigned int i=0; i<int_partition_indices.size(); ++i)
+    deallog << i << ' ' << int_partition_indices[i] << std::endl;
+  deallog << std::endl;
+}
+
+
+template <int dim>
+void test ()
+{
+  Triangulation<dim> triangulation;
+  GridGenerator::hyper_cube (triangulation);
+  triangulation.refine_global (2);
+
+  SparsityPattern cell_connectivity;
+  GridTools::get_face_connectivity_of_cells (triangulation, cell_connectivity);
+
+  partition (cell_connectivity, 5);  
+}
+
+
+
+int main ()
+{
+  std::ofstream logfile("output");
+  deallog.attach(logfile);
+  deallog.depth_console(0);
+  deallog.threshold_double(1.e-10);
+
+  try
+    {
+      test<1> ();
+    }
+  catch (std::exception &exc)
+    {
+      deallog << std::endl << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      deallog << "Exception on processing: " << std::endl
+              << exc.what() << std::endl
+              << "Aborting!" << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+
+      return 1;
+    }
+  catch (...)
+    {
+      deallog << std::endl << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      deallog << "Unknown exception!" << std::endl
+              << "Aborting!" << std::endl
+              << "----------------------------------------------------"
+              << std::endl;
+      return 1;
+    };
+}
diff --git a/tests/metis/metis_01a.with_64bit_indices=off.output b/tests/metis/metis_01a.with_64bit_indices=off.output
new file mode 100644 (file)
index 0000000..0f64303
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::METIS inputs:
+DEAL::IDXTYPEWIDTH=32
+DEAL::4 1 5
+DEAL::0 2 5 8 10 
+DEAL::0 1 1 0 2 2 1 3 3 2 
+DEAL::-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
+DEAL::4
+DEAL::METIS outputs:
+DEAL::3
+DEAL::0 0
+DEAL::1 1
+DEAL::2 3
+DEAL::3 4
+DEAL::
diff --git a/tests/metis/metis_01a.with_64bit_indices=on.output b/tests/metis/metis_01a.with_64bit_indices=on.output
new file mode 100644 (file)
index 0000000..63aedc8
--- /dev/null
@@ -0,0 +1,15 @@
+
+DEAL::METIS inputs:
+DEAL::IDXTYPEWIDTH=64
+DEAL::4 1 5
+DEAL::0 2 5 8 10 
+DEAL::0 1 1 0 2 2 1 3 3 2 
+DEAL::-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 
+DEAL::8
+DEAL::METIS outputs:
+DEAL::3
+DEAL::0 3
+DEAL::1 4
+DEAL::2 0
+DEAL::3 1
+DEAL::
diff --git a/tests/metis/metis_02.with_64bit_indices=on.output b/tests/metis/metis_02.with_64bit_indices=on.output
new file mode 100644 (file)
index 0000000..7d60b2c
--- /dev/null
@@ -0,0 +1,16912 @@
+
+DEAL::1D
+DEAL::Cell association:
+DEAL::0 0
+DEAL::1 4.00000
+DEAL::2 0
+DEAL::3 4.00000
+DEAL::4 1.00000
+DEAL::5 3.00000
+DEAL::6 3.00000
+DEAL::7 3.00000
+DEAL::8 0
+DEAL::9 0
+DEAL::10 0
+DEAL::11 4.00000
+DEAL::12 3.00000
+DEAL::13 3.00000
+DEAL::14 3.00000
+DEAL::15 3.00000
+DEAL::16 3.00000
+DEAL::17 4.00000
+DEAL::18 4.00000
+DEAL::19 4.00000
+DEAL::20 3.00000
+DEAL::21 3.00000
+DEAL::22 1.00000
+DEAL::23 1.00000
+DEAL::24 0
+DEAL::25 0
+DEAL::26 1.00000
+DEAL::27 1.00000
+DEAL::28 1.00000
+DEAL::29 1.00000
+DEAL::30 1.00000
+DEAL::31 1.00000
+DEAL::32 0
+DEAL::33 4.00000
+DEAL::34 1.00000
+DEAL::35 1.00000
+DEAL::36 0
+DEAL::37 0
+DEAL::38 0
+DEAL::39 0
+DEAL::40 0
+DEAL::41 3.00000
+DEAL::42 3.00000
+DEAL::43 3.00000
+DEAL::44 4.00000
+DEAL::45 4.00000
+DEAL::46 1.00000
+DEAL::47 1.00000
+DEAL::48 0
+DEAL::49 0
+DEAL::50 4.00000
+DEAL::51 4.00000
+DEAL::52 4.00000
+DEAL::53 4.00000
+DEAL::54 3.00000
+DEAL::55 3.00000
+DEAL::56 3.00000
+DEAL::57 3.00000
+DEAL::58 4.00000
+DEAL::59 2.00000
+DEAL::60 4.00000
+DEAL::61 2.00000
+DEAL::62 1.00000
+DEAL::63 4.00000
+DEAL::64 3.00000
+DEAL::65 2.00000
+DEAL::66 0
+DEAL::67 0
+DEAL::68 2.00000
+DEAL::69 1.00000
+DEAL::70 0
+DEAL::71 0
+DEAL::72 2.00000
+DEAL::73 2.00000
+DEAL::74 1.00000
+DEAL::75 1.00000
+DEAL::76 2.00000
+DEAL::77 2.00000
+DEAL::78 1.00000
+DEAL::79 1.00000
+DEAL::80 0
+DEAL::81 0
+DEAL::82 0
+DEAL::83 0
+DEAL::84 3.00000
+DEAL::85 3.00000
+DEAL::86 4.00000
+DEAL::87 4.00000
+DEAL::88 4.00000
+DEAL::89 2.00000
+DEAL::90 4.00000
+DEAL::91 4.00000
+DEAL::92 2.00000
+DEAL::93 2.00000
+DEAL::94 2.00000
+DEAL::95 2.00000
+DEAL::96 1.00000
+DEAL::97 1.00000
+DEAL::98 3.00000
+DEAL::99 3.00000
+DEAL::100 2.00000
+DEAL::101 2.00000
+DEAL::102 2.00000
+DEAL::103 2.00000
+DEAL::104 1.00000
+DEAL::105 1.00000
+DEAL::106 3.00000
+DEAL::107 2.00000
+DEAL::108 2.00000
+DEAL::109 4.00000
+DEAL::110 4.00000
+DEAL::111 2.00000
+DEAL::112 2.00000
+DEAL::113 2.00000
+DEAL::114 2.00000
+DEAL::DoF association:
+DEAL::0 0
+DEAL::1 0
+DEAL::2 0
+DEAL::3 4
+DEAL::4 4
+DEAL::5 4
+DEAL::6 0
+DEAL::7 0
+DEAL::8 0
+DEAL::9 4
+DEAL::10 4
+DEAL::11 1
+DEAL::12 1
+DEAL::13 1
+DEAL::14 3
+DEAL::15 3
+DEAL::16 3
+DEAL::17 3
+DEAL::18 3
+DEAL::19 3
+DEAL::20 3
+DEAL::21 3
+DEAL::22 0
+DEAL::23 0
+DEAL::24 0
+DEAL::25 0
+DEAL::26 1
+DEAL::27 0
+DEAL::28 4
+DEAL::29 4
+DEAL::30 3
+DEAL::31 3
+DEAL::32 3
+DEAL::33 3
+DEAL::34 3
+DEAL::35 3
+DEAL::36 3
+DEAL::37 4
+DEAL::38 3
+DEAL::39 3
+DEAL::40 3
+DEAL::41 4
+DEAL::42 4
+DEAL::43 4
+DEAL::44 4
+DEAL::45 4
+DEAL::46 4
+DEAL::47 4
+DEAL::48 3
+DEAL::49 3
+DEAL::50 3
+DEAL::51 3
+DEAL::52 3
+DEAL::53 3
+DEAL::54 1
+DEAL::55 1
+DEAL::56 1
+DEAL::57 1
+DEAL::58 1
+DEAL::59 0
+DEAL::60 0
+DEAL::61 0
+DEAL::62 0
+DEAL::63 1
+DEAL::64 1
+DEAL::65 1
+DEAL::66 1
+DEAL::67 1
+DEAL::68 1
+DEAL::69 1
+DEAL::70 1
+DEAL::71 1
+DEAL::72 1
+DEAL::73 1
+DEAL::74 0
+DEAL::75 0
+DEAL::76 4
+DEAL::77 4
+DEAL::78 1
+DEAL::79 1
+DEAL::80 1
+DEAL::81 1
+DEAL::82 0
+DEAL::83 0
+DEAL::84 0
+DEAL::85 0
+DEAL::86 0
+DEAL::87 0
+DEAL::88 0
+DEAL::89 0
+DEAL::90 0
+DEAL::91 0
+DEAL::92 0
+DEAL::93 0
+DEAL::94 0
+DEAL::95 3
+DEAL::96 3
+DEAL::97 3
+DEAL::98 3
+DEAL::99 3
+DEAL::100 4
+DEAL::101 4
+DEAL::102 4
+DEAL::103 4
+DEAL::104 1
+DEAL::105 1
+DEAL::106 1
+DEAL::107 1
+DEAL::108 1
+DEAL::109 0
+DEAL::110 0
+DEAL::111 0
+DEAL::112 4
+DEAL::113 4
+DEAL::114 4
+DEAL::115 4
+DEAL::116 4
+DEAL::117 2
+DEAL::118 4
+DEAL::119 3
+DEAL::120 3
+DEAL::121 3
+DEAL::122 3
+DEAL::123 3
+DEAL::124 3
+DEAL::125 4
+DEAL::126 4
+DEAL::127 4
+DEAL::128 2
+DEAL::129 2
+DEAL::130 2
+DEAL::131 4
+DEAL::132 4
+DEAL::133 2
+DEAL::134 2
+DEAL::135 1
+DEAL::136 1
+DEAL::137 4
+DEAL::138 4
+DEAL::139 3
+DEAL::140 3
+DEAL::141 2
+DEAL::142 2
+DEAL::143 2
+DEAL::144 0
+DEAL::145 0
+DEAL::146 0
+DEAL::147 2
+DEAL::148 2
+DEAL::149 1
+DEAL::150 1
+DEAL::151 0
+DEAL::152 0
+DEAL::153 0
+DEAL::154 2
+DEAL::155 2
+DEAL::156 2
+DEAL::157 2
+DEAL::158 2
+DEAL::159 1
+DEAL::160 1
+DEAL::161 1
+DEAL::162 1
+DEAL::163 2
+DEAL::164 2
+DEAL::165 2
+DEAL::166 2
+DEAL::167 2
+DEAL::168 1
+DEAL::169 1
+DEAL::170 1
+DEAL::171 1
+DEAL::172 0
+DEAL::173 0
+DEAL::174 0
+DEAL::175 0
+DEAL::176 0
+DEAL::177 0
+DEAL::178 0
+DEAL::179 3
+DEAL::180 3
+DEAL::181 3
+DEAL::182 4
+DEAL::183 4
+DEAL::184 4
+DEAL::185 4
+DEAL::186 4
+DEAL::187 2
+DEAL::188 2
+DEAL::189 4
+DEAL::190 4
+DEAL::191 4
+DEAL::192 2
+DEAL::193 2
+DEAL::194 2
+DEAL::195 2
+DEAL::196 2
+DEAL::197 2
+DEAL::198 2
+DEAL::199 1
+DEAL::200 1
+DEAL::201 1
+DEAL::202 3
+DEAL::203 3
+DEAL::204 3
+DEAL::205 3
+DEAL::206 2
+DEAL::207 2
+DEAL::208 2
+DEAL::209 2
+DEAL::210 2
+DEAL::211 2
+DEAL::212 1
+DEAL::213 1
+DEAL::214 1
+DEAL::215 3
+DEAL::216 3
+DEAL::217 2
+DEAL::218 2
+DEAL::219 2
+DEAL::220 2
+DEAL::221 4
+DEAL::222 4
+DEAL::223 4
+DEAL::224 4
+DEAL::225 2
+DEAL::226 2
+DEAL::227 2
+DEAL::228 2
+DEAL::229 2
+DEAL::230 2
+DEAL::2D
+DEAL::Cell association:
+DEAL::0 4.00000
+DEAL::1 3.00000
+DEAL::2 0
+DEAL::3 0
+DEAL::4 0
+DEAL::5 2.00000
+DEAL::6 2.00000
+DEAL::7 1.00000
+DEAL::8 4.00000
+DEAL::9 1.00000
+DEAL::10 1.00000
+DEAL::11 1.00000
+DEAL::12 0
+DEAL::13 0
+DEAL::14 2.00000
+DEAL::15 2.00000
+DEAL::16 1.00000
+DEAL::17 0
+DEAL::18 0
+DEAL::19 0
+DEAL::20 0
+DEAL::21 2.00000
+DEAL::22 3.00000
+DEAL::23 2.00000
+DEAL::24 2.00000
+DEAL::25 2.00000
+DEAL::26 4.00000
+DEAL::27 4.00000
+DEAL::28 4.00000
+DEAL::29 3.00000
+DEAL::30 3.00000
+DEAL::31 1.00000
+DEAL::32 4.00000
+DEAL::33 4.00000
+DEAL::34 0
+DEAL::35 0
+DEAL::36 0
+DEAL::37 4.00000
+DEAL::38 4.00000
+DEAL::39 2.00000
+DEAL::40 2.00000
+DEAL::41 1.00000
+DEAL::42 4.00000
+DEAL::43 4.00000
+DEAL::44 0
+DEAL::45 1.00000
+DEAL::46 0
+DEAL::47 0
+DEAL::48 2.00000
+DEAL::49 2.00000
+DEAL::50 2.00000
+DEAL::51 4.00000
+DEAL::52 4.00000
+DEAL::53 4.00000
+DEAL::54 3.00000
+DEAL::55 3.00000
+DEAL::56 3.00000
+DEAL::57 4.00000
+DEAL::58 4.00000
+DEAL::59 0
+DEAL::60 0
+DEAL::61 0
+DEAL::62 0
+DEAL::63 4.00000
+DEAL::64 0
+DEAL::65 1.00000
+DEAL::66 1.00000
+DEAL::67 4.00000
+DEAL::68 4.00000
+DEAL::69 4.00000
+DEAL::70 4.00000
+DEAL::71 4.00000
+DEAL::72 4.00000
+DEAL::73 0
+DEAL::74 0
+DEAL::75 0
+DEAL::76 4.00000
+DEAL::77 4.00000
+DEAL::78 4.00000
+DEAL::79 4.00000
+DEAL::80 4.00000
+DEAL::81 4.00000
+DEAL::82 4.00000
+DEAL::83 4.00000
+DEAL::84 2.00000
+DEAL::85 2.00000
+DEAL::86 2.00000
+DEAL::87 2.00000
+DEAL::88 4.00000
+DEAL::89 4.00000
+DEAL::90 4.00000
+DEAL::91 4.00000
+DEAL::92 1.00000
+DEAL::93 1.00000
+DEAL::94 1.00000
+DEAL::95 1.00000
+DEAL::96 1.00000
+DEAL::97 1.00000
+DEAL::98 1.00000
+DEAL::99 1.00000
+DEAL::100 0
+DEAL::101 0
+DEAL::102 0
+DEAL::103 0
+DEAL::104 3.00000
+DEAL::105 4.00000
+DEAL::106 2.00000
+DEAL::107 3.00000
+DEAL::108 3.00000
+DEAL::109 3.00000
+DEAL::110 0
+DEAL::111 0
+DEAL::112 3.00000
+DEAL::113 2.00000
+DEAL::114 1.00000
+DEAL::115 0
+DEAL::116 3.00000
+DEAL::117 0
+DEAL::118 3.00000
+DEAL::119 3.00000
+DEAL::120 3.00000
+DEAL::121 3.00000
+DEAL::122 3.00000
+DEAL::123 0
+DEAL::124 2.00000
+DEAL::125 2.00000
+DEAL::126 4.00000
+DEAL::127 1.00000
+DEAL::128 1.00000
+DEAL::129 0
+DEAL::130 0
+DEAL::131 0
+DEAL::132 2.00000
+DEAL::133 2.00000
+DEAL::134 2.00000
+DEAL::135 3.00000
+DEAL::136 0
+DEAL::137 2.00000
+DEAL::138 2.00000
+DEAL::139 4.00000
+DEAL::140 4.00000
+DEAL::141 1.00000
+DEAL::142 1.00000
+DEAL::143 1.00000
+DEAL::144 1.00000
+DEAL::145 2.00000
+DEAL::146 2.00000
+DEAL::147 2.00000
+DEAL::148 2.00000
+DEAL::149 1.00000
+DEAL::150 1.00000
+DEAL::151 1.00000
+DEAL::152 0
+DEAL::153 0
+DEAL::154 0
+DEAL::155 0
+DEAL::156 0
+DEAL::157 0
+DEAL::158 3.00000
+DEAL::159 3.00000
+DEAL::160 3.00000
+DEAL::161 3.00000
+DEAL::162 3.00000
+DEAL::163 3.00000
+DEAL::164 3.00000
+DEAL::165 3.00000
+DEAL::166 3.00000
+DEAL::167 3.00000
+DEAL::168 2.00000
+DEAL::169 2.00000
+DEAL::170 2.00000
+DEAL::171 3.00000
+DEAL::172 3.00000
+DEAL::173 3.00000
+DEAL::174 3.00000
+DEAL::175 3.00000
+DEAL::176 3.00000
+DEAL::177 3.00000
+DEAL::178 0
+DEAL::179 0
+DEAL::180 0
+DEAL::181 2.00000
+DEAL::182 2.00000
+DEAL::183 2.00000
+DEAL::184 2.00000
+DEAL::185 2.00000
+DEAL::186 2.00000
+DEAL::187 2.00000
+DEAL::188 4.00000
+DEAL::189 4.00000
+DEAL::190 4.00000
+DEAL::191 1.00000
+DEAL::192 1.00000
+DEAL::193 1.00000
+DEAL::194 1.00000
+DEAL::195 0
+DEAL::196 0
+DEAL::197 0
+DEAL::198 2.00000
+DEAL::199 2.00000
+DEAL::200 2.00000
+DEAL::201 2.00000
+DEAL::202 2.00000
+DEAL::203 2.00000
+DEAL::204 2.00000
+DEAL::205 4.00000
+DEAL::206 1.00000
+DEAL::207 3.00000
+DEAL::208 1.00000
+DEAL::209 1.00000
+DEAL::210 0
+DEAL::211 2.00000
+DEAL::212 2.00000
+DEAL::213 2.00000
+DEAL::214 2.00000
+DEAL::215 4.00000
+DEAL::216 4.00000
+DEAL::217 4.00000
+DEAL::218 1.00000
+DEAL::219 1.00000
+DEAL::220 1.00000
+DEAL::221 1.00000
+DEAL::222 1.00000
+DEAL::223 1.00000
+DEAL::224 1.00000
+DEAL::225 0
+DEAL::226 0
+DEAL::227 0
+DEAL::228 2.00000
+DEAL::229 2.00000
+DEAL::230 2.00000
+DEAL::231 2.00000
+DEAL::232 2.00000
+DEAL::233 2.00000
+DEAL::234 2.00000
+DEAL::235 2.00000
+DEAL::236 4.00000
+DEAL::237 1.00000
+DEAL::238 1.00000
+DEAL::239 1.00000
+DEAL::240 0
+DEAL::241 0
+DEAL::242 0
+DEAL::243 0
+DEAL::244 0
+DEAL::245 0
+DEAL::246 0
+DEAL::247 0
+DEAL::248 0
+DEAL::249 0
+DEAL::250 0
+DEAL::251 0
+DEAL::252 0
+DEAL::253 0
+DEAL::254 2.00000
+DEAL::255 2.00000
+DEAL::256 2.00000
+DEAL::257 4.00000
+DEAL::258 4.00000
+DEAL::259 4.00000
+DEAL::260 2.00000
+DEAL::261 2.00000
+DEAL::262 2.00000
+DEAL::263 2.00000
+DEAL::264 4.00000
+DEAL::265 4.00000
+DEAL::266 4.00000
+DEAL::267 4.00000
+DEAL::268 4.00000
+DEAL::269 4.00000
+DEAL::270 3.00000
+DEAL::271 3.00000
+DEAL::272 3.00000
+DEAL::273 3.00000
+DEAL::274 1.00000
+DEAL::275 1.00000
+DEAL::276 1.00000
+DEAL::277 3.00000
+DEAL::278 4.00000
+DEAL::279 3.00000
+DEAL::280 3.00000
+DEAL::281 4.00000
+DEAL::282 4.00000
+DEAL::283 4.00000
+DEAL::284 4.00000
+DEAL::285 4.00000
+DEAL::286 4.00000
+DEAL::287 2.00000
+DEAL::288 2.00000
+DEAL::289 2.00000
+DEAL::290 2.00000
+DEAL::291 1.00000
+DEAL::292 1.00000
+DEAL::293 1.00000
+DEAL::294 1.00000
+DEAL::295 1.00000
+DEAL::296 1.00000
+DEAL::297 1.00000
+DEAL::298 1.00000
+DEAL::299 4.00000
+DEAL::300 4.00000
+DEAL::301 4.00000
+DEAL::302 4.00000
+DEAL::303 1.00000
+DEAL::304 1.00000
+DEAL::305 0
+DEAL::306 1.00000
+DEAL::307 1.00000
+DEAL::308 1.00000
+DEAL::309 1.00000
+DEAL::310 1.00000
+DEAL::311 0
+DEAL::312 1.00000
+DEAL::313 1.00000
+DEAL::314 1.00000
+DEAL::315 0
+DEAL::316 0
+DEAL::317 0
+DEAL::318 0
+DEAL::319 2.00000
+DEAL::320 2.00000
+DEAL::321 2.00000
+DEAL::322 2.00000
+DEAL::323 3.00000
+DEAL::324 3.00000
+DEAL::325 3.00000
+DEAL::326 3.00000
+DEAL::327 4.00000
+DEAL::328 4.00000
+DEAL::329 4.00000
+DEAL::330 4.00000
+DEAL::331 4.00000
+DEAL::332 4.00000
+DEAL::333 3.00000
+DEAL::334 3.00000
+DEAL::335 1.00000
+DEAL::336 1.00000
+DEAL::337 1.00000
+DEAL::338 1.00000
+DEAL::339 0
+DEAL::340 0
+DEAL::341 0
+DEAL::342 0
+DEAL::343 0
+DEAL::344 0
+DEAL::345 0
+DEAL::346 0
+DEAL::347 2.00000
+DEAL::348 2.00000
+DEAL::349 2.00000
+DEAL::350 2.00000
+DEAL::351 2.00000
+DEAL::352 2.00000
+DEAL::353 2.00000
+DEAL::354 2.00000
+DEAL::355 3.00000
+DEAL::356 3.00000
+DEAL::357 3.00000
+DEAL::358 3.00000
+DEAL::359 3.00000
+DEAL::360 3.00000
+DEAL::361 3.00000
+DEAL::362 3.00000
+DEAL::363 0
+DEAL::364 0
+DEAL::365 0
+DEAL::366 0
+DEAL::367 2.00000
+DEAL::368 2.00000
+DEAL::369 2.00000
+DEAL::370 2.00000
+DEAL::371 2.00000
+DEAL::372 2.00000
+DEAL::373 2.00000
+DEAL::374 2.00000
+DEAL::375 4.00000
+DEAL::376 4.00000
+DEAL::377 4.00000
+DEAL::378 4.00000
+DEAL::379 1.00000
+DEAL::380 1.00000
+DEAL::381 1.00000
+DEAL::382 1.00000
+DEAL::383 0
+DEAL::384 0
+DEAL::385 0
+DEAL::386 0
+DEAL::387 2.00000
+DEAL::388 1.00000
+DEAL::389 1.00000
+DEAL::390 1.00000
+DEAL::391 1.00000
+DEAL::392 1.00000
+DEAL::393 1.00000
+DEAL::394 1.00000
+DEAL::395 1.00000
+DEAL::396 1.00000
+DEAL::397 1.00000
+DEAL::398 1.00000
+DEAL::399 1.00000
+DEAL::400 1.00000
+DEAL::401 1.00000
+DEAL::402 1.00000
+DEAL::403 0
+DEAL::404 0
+DEAL::405 0
+DEAL::406 0
+DEAL::407 1.00000
+DEAL::408 0
+DEAL::409 1.00000
+DEAL::410 0
+DEAL::411 0
+DEAL::412 0
+DEAL::413 0
+DEAL::414 0
+DEAL::415 2.00000
+DEAL::416 2.00000
+DEAL::417 2.00000
+DEAL::418 2.00000
+DEAL::419 2.00000
+DEAL::420 2.00000
+DEAL::421 2.00000
+DEAL::422 2.00000
+DEAL::423 4.00000
+DEAL::424 4.00000
+DEAL::425 4.00000
+DEAL::426 4.00000
+DEAL::427 4.00000
+DEAL::428 4.00000
+DEAL::429 4.00000
+DEAL::430 3.00000
+DEAL::431 2.00000
+DEAL::432 2.00000
+DEAL::433 2.00000
+DEAL::434 2.00000
+DEAL::435 4.00000
+DEAL::436 4.00000
+DEAL::437 4.00000
+DEAL::438 4.00000
+DEAL::439 4.00000
+DEAL::440 4.00000
+DEAL::441 4.00000
+DEAL::442 4.00000
+DEAL::443 3.00000
+DEAL::444 4.00000
+DEAL::445 3.00000
+DEAL::446 4.00000
+DEAL::447 1.00000
+DEAL::448 1.00000
+DEAL::449 1.00000
+DEAL::450 1.00000
+DEAL::451 1.00000
+DEAL::452 1.00000
+DEAL::453 1.00000
+DEAL::454 1.00000
+DEAL::455 4.00000
+DEAL::456 4.00000
+DEAL::457 4.00000
+DEAL::458 4.00000
+DEAL::459 3.00000
+DEAL::460 4.00000
+DEAL::461 3.00000
+DEAL::462 3.00000
+DEAL::463 3.00000
+DEAL::464 3.00000
+DEAL::465 3.00000
+DEAL::466 3.00000
+DEAL::467 3.00000
+DEAL::468 3.00000
+DEAL::469 3.00000
+DEAL::470 3.00000
+DEAL::471 0
+DEAL::472 0
+DEAL::473 0
+DEAL::474 0
+DEAL::475 4.00000
+DEAL::476 4.00000
+DEAL::477 4.00000
+DEAL::478 4.00000
+DEAL::479 4.00000
+DEAL::480 4.00000
+DEAL::481 4.00000
+DEAL::482 4.00000
+DEAL::483 4.00000
+DEAL::484 4.00000
+DEAL::485 4.00000
+DEAL::486 4.00000
+DEAL::487 4.00000
+DEAL::488 4.00000
+DEAL::489 1.00000
+DEAL::490 1.00000
+DEAL::491 1.00000
+DEAL::492 1.00000
+DEAL::493 1.00000
+DEAL::494 1.00000
+DEAL::495 1.00000
+DEAL::496 1.00000
+DEAL::497 1.00000
+DEAL::498 1.00000
+DEAL::499 4.00000
+DEAL::500 4.00000
+DEAL::501 4.00000
+DEAL::502 4.00000
+DEAL::503 1.00000
+DEAL::504 1.00000
+DEAL::505 1.00000
+DEAL::506 1.00000
+DEAL::507 0
+DEAL::508 0
+DEAL::509 0
+DEAL::510 0
+DEAL::511 1.00000
+DEAL::512 1.00000
+DEAL::513 1.00000
+DEAL::514 1.00000
+DEAL::515 1.00000
+DEAL::516 1.00000
+DEAL::517 1.00000
+DEAL::518 1.00000
+DEAL::519 1.00000
+DEAL::520 1.00000
+DEAL::521 1.00000
+DEAL::522 1.00000
+DEAL::523 0
+DEAL::524 0
+DEAL::525 0
+DEAL::526 0
+DEAL::527 0
+DEAL::528 0
+DEAL::529 0
+DEAL::530 0
+DEAL::531 0
+DEAL::532 0
+DEAL::533 0
+DEAL::534 0
+DEAL::535 2.00000
+DEAL::536 2.00000
+DEAL::537 2.00000
+DEAL::538 2.00000
+DEAL::539 4.00000
+DEAL::540 4.00000
+DEAL::541 4.00000
+DEAL::542 4.00000
+DEAL::543 3.00000
+DEAL::544 3.00000
+DEAL::545 3.00000
+DEAL::546 3.00000
+DEAL::547 3.00000
+DEAL::548 3.00000
+DEAL::549 3.00000
+DEAL::550 3.00000
+DEAL::551 4.00000
+DEAL::552 4.00000
+DEAL::553 4.00000
+DEAL::554 4.00000
+DEAL::555 0
+DEAL::556 0
+DEAL::557 0
+DEAL::558 0
+DEAL::559 0
+DEAL::560 0
+DEAL::561 0
+DEAL::562 0
+DEAL::563 1.00000
+DEAL::564 1.00000
+DEAL::565 1.00000
+DEAL::566 1.00000
+DEAL::567 1.00000
+DEAL::568 1.00000
+DEAL::569 1.00000
+DEAL::570 1.00000
+DEAL::571 4.00000
+DEAL::572 4.00000
+DEAL::573 4.00000
+DEAL::574 4.00000
+DEAL::575 4.00000
+DEAL::576 4.00000
+DEAL::577 4.00000
+DEAL::578 4.00000
+DEAL::579 0
+DEAL::580 0
+DEAL::581 0
+DEAL::582 0
+DEAL::583 3.00000
+DEAL::584 4.00000
+DEAL::585 2.00000
+DEAL::586 2.00000
+DEAL::587 2.00000
+DEAL::588 3.00000
+DEAL::589 3.00000
+DEAL::590 3.00000
+DEAL::591 3.00000
+DEAL::592 0
+DEAL::593 0
+DEAL::594 0
+DEAL::595 0
+DEAL::596 2.00000
+DEAL::597 1.00000
+DEAL::598 1.00000
+DEAL::599 1.00000
+DEAL::600 3.00000
+DEAL::601 3.00000
+DEAL::602 3.00000
+DEAL::603 3.00000
+DEAL::604 4.00000
+DEAL::605 4.00000
+DEAL::606 4.00000
+DEAL::607 2.00000
+DEAL::608 2.00000
+DEAL::609 2.00000
+DEAL::610 3.00000
+DEAL::611 3.00000
+DEAL::612 3.00000
+DEAL::613 3.00000
+DEAL::614 3.00000
+DEAL::615 3.00000
+DEAL::616 3.00000
+DEAL::617 2.00000
+DEAL::618 2.00000
+DEAL::619 2.00000
+DEAL::620 1.00000
+DEAL::621 1.00000
+DEAL::622 1.00000
+DEAL::623 1.00000
+DEAL::624 0
+DEAL::625 0
+DEAL::626 0
+DEAL::627 4.00000
+DEAL::628 4.00000
+DEAL::629 4.00000
+DEAL::630 3.00000
+DEAL::631 3.00000
+DEAL::632 3.00000
+DEAL::633 3.00000
+DEAL::634 2.00000
+DEAL::635 2.00000
+DEAL::636 2.00000
+DEAL::637 3.00000
+DEAL::638 3.00000
+DEAL::639 3.00000
+DEAL::640 3.00000
+DEAL::641 3.00000
+DEAL::642 3.00000
+DEAL::643 3.00000
+DEAL::644 0
+DEAL::645 0
+DEAL::646 0
+DEAL::647 4.00000
+DEAL::648 4.00000
+DEAL::649 4.00000
+DEAL::650 1.00000
+DEAL::651 1.00000
+DEAL::652 1.00000
+DEAL::653 1.00000
+DEAL::654 2.00000
+DEAL::655 2.00000
+DEAL::656 2.00000
+DEAL::657 2.00000
+DEAL::658 2.00000
+DEAL::659 2.00000
+DEAL::660 2.00000
+DEAL::661 2.00000
+DEAL::662 2.00000
+DEAL::663 2.00000
+DEAL::664 3.00000
+DEAL::665 3.00000
+DEAL::666 3.00000
+DEAL::667 3.00000
+DEAL::668 3.00000
+DEAL::669 3.00000
+DEAL::670 2.00000
+DEAL::671 2.00000
+DEAL::672 2.00000
+DEAL::673 2.00000
+DEAL::674 1.00000
+DEAL::675 1.00000
+DEAL::676 1.00000
+DEAL::677 1.00000
+DEAL::678 1.00000
+DEAL::679 1.00000
+DEAL::680 1.00000
+DEAL::681 1.00000
+DEAL::682 1.00000
+DEAL::683 1.00000
+DEAL::684 1.00000
+DEAL::685 1.00000
+DEAL::686 0
+DEAL::687 0
+DEAL::688 0
+DEAL::689 0
+DEAL::690 0
+DEAL::691 0
+DEAL::692 0
+DEAL::693 0
+DEAL::694 3.00000
+DEAL::695 3.00000
+DEAL::696 3.00000
+DEAL::697 3.00000
+DEAL::698 4.00000
+DEAL::699 4.00000
+DEAL::700 4.00000
+DEAL::701 4.00000
+DEAL::702 2.00000
+DEAL::703 2.00000
+DEAL::704 2.00000
+DEAL::705 2.00000
+DEAL::706 3.00000
+DEAL::707 3.00000
+DEAL::708 3.00000
+DEAL::709 3.00000
+DEAL::710 3.00000
+DEAL::711 3.00000
+DEAL::712 3.00000
+DEAL::713 3.00000
+DEAL::714 0
+DEAL::715 0
+DEAL::716 0
+DEAL::717 0
+DEAL::718 3.00000
+DEAL::719 3.00000
+DEAL::720 3.00000
+DEAL::721 3.00000
+DEAL::722 2.00000
+DEAL::723 2.00000
+DEAL::724 2.00000
+DEAL::725 2.00000
+DEAL::726 1.00000
+DEAL::727 1.00000
+DEAL::728 1.00000
+DEAL::729 1.00000
+DEAL::730 0
+DEAL::731 0
+DEAL::732 0
+DEAL::733 0
+DEAL::734 0
+DEAL::735 0
+DEAL::736 0
+DEAL::737 0
+DEAL::738 4.00000
+DEAL::739 4.00000
+DEAL::740 4.00000
+DEAL::741 4.00000
+DEAL::742 4.00000
+DEAL::743 4.00000
+DEAL::744 4.00000
+DEAL::745 4.00000
+DEAL::746 4.00000
+DEAL::747 4.00000
+DEAL::748 4.00000
+DEAL::749 4.00000
+DEAL::750 2.00000
+DEAL::751 2.00000
+DEAL::752 2.00000
+DEAL::753 2.00000
+DEAL::754 2.00000
+DEAL::755 2.00000
+DEAL::756 2.00000
+DEAL::757 2.00000
+DEAL::758 2.00000
+DEAL::759 2.00000
+DEAL::760 2.00000
+DEAL::761 2.00000
+DEAL::762 3.00000
+DEAL::763 3.00000
+DEAL::764 3.00000
+DEAL::765 3.00000
+DEAL::766 3.00000
+DEAL::767 3.00000
+DEAL::768 3.00000
+DEAL::769 3.00000
+DEAL::770 0
+DEAL::771 0
+DEAL::772 0
+DEAL::773 0
+DEAL::774 0
+DEAL::775 0
+DEAL::776 0
+DEAL::777 0
+DEAL::778 2.00000
+DEAL::779 2.00000
+DEAL::780 2.00000
+DEAL::781 2.00000
+DEAL::782 2.00000
+DEAL::783 2.00000
+DEAL::784 2.00000
+DEAL::785 2.00000
+DEAL::786 4.00000
+DEAL::787 4.00000
+DEAL::788 4.00000
+DEAL::789 4.00000
+DEAL::790 4.00000
+DEAL::791 4.00000
+DEAL::792 4.00000
+DEAL::793 4.00000
+DEAL::794 1.00000
+DEAL::795 1.00000
+DEAL::796 1.00000
+DEAL::797 1.00000
+DEAL::798 0
+DEAL::799 0
+DEAL::800 0
+DEAL::801 0
+DEAL::802 2.00000
+DEAL::803 2.00000
+DEAL::804 2.00000
+DEAL::805 2.00000
+DEAL::806 2.00000
+DEAL::807 2.00000
+DEAL::808 2.00000
+DEAL::809 2.00000
+DEAL::810 3.00000
+DEAL::811 3.00000
+DEAL::812 3.00000
+DEAL::813 3.00000
+DEAL::814 3.00000
+DEAL::815 3.00000
+DEAL::816 3.00000
+DEAL::817 3.00000
+DEAL::818 0
+DEAL::819 0
+DEAL::820 0
+DEAL::821 0
+DEAL::822 0
+DEAL::823 0
+DEAL::824 0
+DEAL::825 3.00000
+DEAL::826 2.00000
+DEAL::827 2.00000
+DEAL::828 2.00000
+DEAL::829 2.00000
+DEAL::830 4.00000
+DEAL::831 4.00000
+DEAL::832 4.00000
+DEAL::833 4.00000
+DEAL::834 4.00000
+DEAL::835 4.00000
+DEAL::836 4.00000
+DEAL::837 4.00000
+DEAL::838 1.00000
+DEAL::839 1.00000
+DEAL::840 1.00000
+DEAL::841 1.00000
+DEAL::842 1.00000
+DEAL::843 1.00000
+DEAL::844 1.00000
+DEAL::845 1.00000
+DEAL::846 1.00000
+DEAL::847 1.00000
+DEAL::848 1.00000
+DEAL::849 1.00000
+DEAL::850 1.00000
+DEAL::851 1.00000
+DEAL::852 1.00000
+DEAL::853 1.00000
+DEAL::854 1.00000
+DEAL::855 1.00000
+DEAL::856 1.00000
+DEAL::857 1.00000
+DEAL::858 0
+DEAL::859 0
+DEAL::860 0
+DEAL::861 0
+DEAL::862 0
+DEAL::863 0
+DEAL::864 0
+DEAL::865 0
+DEAL::866 0
+DEAL::867 0
+DEAL::868 0
+DEAL::869 0
+DEAL::870 0
+DEAL::871 0
+DEAL::872 0
+DEAL::873 0
+DEAL::874 3.00000
+DEAL::875 3.00000
+DEAL::876 3.00000
+DEAL::877 3.00000
+DEAL::878 3.00000
+DEAL::879 3.00000
+DEAL::880 3.00000
+DEAL::881 3.00000
+DEAL::882 2.00000
+DEAL::883 2.00000
+DEAL::884 2.00000
+DEAL::885 2.00000
+DEAL::886 3.00000
+DEAL::887 3.00000
+DEAL::888 3.00000
+DEAL::889 3.00000
+DEAL::890 0
+DEAL::891 0
+DEAL::892 0
+DEAL::893 0
+DEAL::894 2.00000
+DEAL::895 2.00000
+DEAL::896 2.00000
+DEAL::897 2.00000
+DEAL::898 4.00000
+DEAL::899 4.00000
+DEAL::900 4.00000
+DEAL::901 4.00000
+DEAL::902 0
+DEAL::903 0
+DEAL::904 0
+DEAL::905 0
+DEAL::906 2.00000
+DEAL::907 2.00000
+DEAL::908 2.00000
+DEAL::909 2.00000
+DEAL::910 3.00000
+DEAL::911 3.00000
+DEAL::912 3.00000
+DEAL::913 3.00000
+DEAL::914 1.00000
+DEAL::915 1.00000
+DEAL::916 0
+DEAL::917 0
+DEAL::918 4.00000
+DEAL::919 4.00000
+DEAL::920 4.00000
+DEAL::921 4.00000
+DEAL::922 1.00000
+DEAL::923 1.00000
+DEAL::924 1.00000
+DEAL::925 1.00000
+DEAL::926 0
+DEAL::927 0
+DEAL::928 0
+DEAL::929 0
+DEAL::930 2.00000
+DEAL::931 2.00000
+DEAL::932 1.00000
+DEAL::933 1.00000
+DEAL::934 2.00000
+DEAL::935 2.00000
+DEAL::936 2.00000
+DEAL::937 2.00000
+DEAL::938 4.00000
+DEAL::939 4.00000
+DEAL::940 4.00000
+DEAL::941 4.00000
+DEAL::942 1.00000
+DEAL::943 1.00000
+DEAL::944 1.00000
+DEAL::945 1.00000
+DEAL::946 0
+DEAL::947 0
+DEAL::948 0
+DEAL::949 0
+DEAL::950 0
+DEAL::951 0
+DEAL::952 0
+DEAL::953 0
+DEAL::954 2.00000
+DEAL::955 2.00000
+DEAL::956 2.00000
+DEAL::957 2.00000
+DEAL::958 4.00000
+DEAL::959 4.00000
+DEAL::960 4.00000
+DEAL::961 4.00000
+DEAL::962 4.00000
+DEAL::963 4.00000
+DEAL::964 4.00000
+DEAL::965 4.00000
+DEAL::966 4.00000
+DEAL::967 4.00000
+DEAL::968 4.00000
+DEAL::969 4.00000
+DEAL::970 1.00000
+DEAL::971 1.00000
+DEAL::972 1.00000
+DEAL::973 1.00000
+DEAL::974 4.00000
+DEAL::975 4.00000
+DEAL::976 4.00000
+DEAL::977 4.00000
+DEAL::978 4.00000
+DEAL::979 4.00000
+DEAL::980 4.00000
+DEAL::981 4.00000
+DEAL::982 2.00000
+DEAL::983 2.00000
+DEAL::984 1.00000
+DEAL::985 1.00000
+DEAL::986 1.00000
+DEAL::987 1.00000
+DEAL::988 1.00000
+DEAL::989 1.00000
+DEAL::990 4.00000
+DEAL::991 4.00000
+DEAL::992 4.00000
+DEAL::993 4.00000
+DEAL::994 1.00000
+DEAL::995 1.00000
+DEAL::996 1.00000
+DEAL::997 1.00000
+DEAL::998 1.00000
+DEAL::999 0
+DEAL::1000 0
+DEAL::1001 0
+DEAL::1002 1.00000
+DEAL::1003 1.00000
+DEAL::1004 1.00000
+DEAL::1005 1.00000
+DEAL::1006 1.00000
+DEAL::1007 0
+DEAL::1008 1.00000
+DEAL::1009 0
+DEAL::1010 1.00000
+DEAL::1011 1.00000
+DEAL::1012 1.00000
+DEAL::1013 1.00000
+DEAL::1014 3.00000
+DEAL::1015 4.00000
+DEAL::1016 4.00000
+DEAL::1017 4.00000
+DEAL::1018 3.00000
+DEAL::1019 3.00000
+DEAL::1020 3.00000
+DEAL::1021 3.00000
+DEAL::1022 3.00000
+DEAL::1023 3.00000
+DEAL::1024 3.00000
+DEAL::1025 3.00000
+DEAL::1026 3.00000
+DEAL::1027 3.00000
+DEAL::1028 3.00000
+DEAL::1029 3.00000
+DEAL::1030 3.00000
+DEAL::1031 3.00000
+DEAL::1032 2.00000
+DEAL::1033 2.00000
+DEAL::1034 2.00000
+DEAL::1035 3.00000
+DEAL::1036 3.00000
+DEAL::1037 3.00000
+DEAL::1038 3.00000
+DEAL::1039 3.00000
+DEAL::1040 3.00000
+DEAL::1041 3.00000
+DEAL::1042 3.00000
+DEAL::1043 4.00000
+DEAL::1044 4.00000
+DEAL::1045 4.00000
+DEAL::1046 4.00000
+DEAL::1047 4.00000
+DEAL::1048 4.00000
+DEAL::1049 4.00000
+DEAL::1050 4.00000
+DEAL::1051 2.00000
+DEAL::1052 2.00000
+DEAL::1053 2.00000
+DEAL::1054 2.00000
+DEAL::1055 3.00000
+DEAL::1056 3.00000
+DEAL::1057 3.00000
+DEAL::1058 3.00000
+DEAL::1059 3.00000
+DEAL::1060 3.00000
+DEAL::1061 3.00000
+DEAL::1062 3.00000
+DEAL::1063 3.00000
+DEAL::1064 3.00000
+DEAL::1065 3.00000
+DEAL::1066 3.00000
+DEAL::1067 3.00000
+DEAL::1068 3.00000
+DEAL::1069 3.00000
+DEAL::1070 3.00000
+DEAL::1071 2.00000
+DEAL::1072 2.00000
+DEAL::1073 2.00000
+DEAL::1074 2.00000
+DEAL::1075 2.00000
+DEAL::1076 2.00000
+DEAL::1077 2.00000
+DEAL::1078 2.00000
+DEAL::1079 1.00000
+DEAL::1080 1.00000
+DEAL::1081 1.00000
+DEAL::1082 1.00000
+DEAL::1083 4.00000
+DEAL::1084 4.00000
+DEAL::1085 4.00000
+DEAL::1086 4.00000
+DEAL::1087 2.00000
+DEAL::1088 2.00000
+DEAL::1089 2.00000
+DEAL::1090 2.00000
+DEAL::1091 0
+DEAL::1092 0
+DEAL::1093 0
+DEAL::1094 3.00000
+DEAL::1095 2.00000
+DEAL::1096 2.00000
+DEAL::1097 2.00000
+DEAL::1098 2.00000
+DEAL::1099 0
+DEAL::1100 0
+DEAL::1101 0
+DEAL::1102 0
+DEAL::1103 4.00000
+DEAL::1104 4.00000
+DEAL::1105 4.00000
+DEAL::1106 4.00000
+DEAL::1107 2.00000
+DEAL::1108 2.00000
+DEAL::1109 2.00000
+DEAL::1110 2.00000
+DEAL::1111 3.00000
+DEAL::1112 3.00000
+DEAL::1113 3.00000
+DEAL::1114 3.00000
+DEAL::1115 0
+DEAL::1116 0
+DEAL::1117 0
+DEAL::1118 0
+DEAL::1119 4.00000
+DEAL::1120 4.00000
+DEAL::1121 4.00000
+DEAL::1122 4.00000
+DEAL::1123 2.00000
+DEAL::1124 2.00000
+DEAL::1125 2.00000
+DEAL::1126 2.00000
+DEAL::1127 2.00000
+DEAL::1128 2.00000
+DEAL::1129 2.00000
+DEAL::1130 2.00000
+DEAL::1131 3.00000
+DEAL::1132 3.00000
+DEAL::1133 3.00000
+DEAL::1134 3.00000
+DEAL::1135 3.00000
+DEAL::1136 3.00000
+DEAL::1137 3.00000
+DEAL::1138 3.00000
+DEAL::1139 1.00000
+DEAL::1140 1.00000
+DEAL::1141 1.00000
+DEAL::1142 1.00000
+DEAL::1143 1.00000
+DEAL::1144 1.00000
+DEAL::1145 1.00000
+DEAL::1146 1.00000
+DEAL::1147 1.00000
+DEAL::1148 1.00000
+DEAL::1149 1.00000
+DEAL::1150 1.00000
+DEAL::1151 0
+DEAL::1152 0
+DEAL::1153 0
+DEAL::1154 0
+DEAL::1155 3.00000
+DEAL::1156 3.00000
+DEAL::1157 3.00000
+DEAL::1158 3.00000
+DEAL::1159 3.00000
+DEAL::1160 3.00000
+DEAL::1161 3.00000
+DEAL::1162 3.00000
+DEAL::1163 3.00000
+DEAL::1164 3.00000
+DEAL::1165 3.00000
+DEAL::1166 4.00000
+DEAL::1167 4.00000
+DEAL::1168 4.00000
+DEAL::1169 4.00000
+DEAL::1170 3.00000
+DEAL::1171 3.00000
+DEAL::1172 3.00000
+DEAL::1173 3.00000
+DEAL::1174 3.00000
+DEAL::1175 3.00000
+DEAL::1176 3.00000
+DEAL::1177 3.00000
+DEAL::1178 2.00000
+DEAL::1179 2.00000
+DEAL::1180 2.00000
+DEAL::1181 2.00000
+DEAL::1182 3.00000
+DEAL::1183 3.00000
+DEAL::1184 3.00000
+DEAL::1185 3.00000
+DEAL::DoF association:
+DEAL::0 4
+DEAL::1 4
+DEAL::2 0
+DEAL::3 4
+DEAL::4 4
+DEAL::5 4
+DEAL::6 4
+DEAL::7 4
+DEAL::8 4
+DEAL::9 3
+DEAL::10 3
+DEAL::11 3
+DEAL::12 3
+DEAL::13 3
+DEAL::14 3
+DEAL::15 3
+DEAL::16 3
+DEAL::17 3
+DEAL::18 0
+DEAL::19 0
+DEAL::20 0
+DEAL::21 0
+DEAL::22 0
+DEAL::23 0
+DEAL::24 0
+DEAL::25 0
+DEAL::26 0
+DEAL::27 0
+DEAL::28 0
+DEAL::29 0
+DEAL::30 0
+DEAL::31 0
+DEAL::32 0
+DEAL::33 0
+DEAL::34 0
+DEAL::35 0
+DEAL::36 0
+DEAL::37 2
+DEAL::38 2
+DEAL::39 2
+DEAL::40 2
+DEAL::41 2
+DEAL::42 2
+DEAL::43 2
+DEAL::44 2
+DEAL::45 2
+DEAL::46 2
+DEAL::47 2
+DEAL::48 2
+DEAL::49 2
+DEAL::50 2
+DEAL::51 2
+DEAL::52 2
+DEAL::53 2
+DEAL::54 1
+DEAL::55 3
+DEAL::56 1
+DEAL::57 3
+DEAL::58 1
+DEAL::59 1
+DEAL::60 1
+DEAL::61 1
+DEAL::62 1
+DEAL::63 4
+DEAL::64 4
+DEAL::65 4
+DEAL::66 4
+DEAL::67 4
+DEAL::68 4
+DEAL::69 4
+DEAL::70 4
+DEAL::71 4
+DEAL::72 1
+DEAL::73 1
+DEAL::74 1
+DEAL::75 1
+DEAL::76 1
+DEAL::77 1
+DEAL::78 1
+DEAL::79 1
+DEAL::80 1
+DEAL::81 1
+DEAL::82 1
+DEAL::83 1
+DEAL::84 1
+DEAL::85 1
+DEAL::86 1
+DEAL::87 1
+DEAL::88 1
+DEAL::89 1
+DEAL::90 1
+DEAL::91 1
+DEAL::92 1
+DEAL::93 1
+DEAL::94 1
+DEAL::95 0
+DEAL::96 0
+DEAL::97 0
+DEAL::98 0
+DEAL::99 0
+DEAL::100 0
+DEAL::101 0
+DEAL::102 0
+DEAL::103 0
+DEAL::104 0
+DEAL::105 0
+DEAL::106 0
+DEAL::107 0
+DEAL::108 0
+DEAL::109 0
+DEAL::110 2
+DEAL::111 2
+DEAL::112 2
+DEAL::113 2
+DEAL::114 2
+DEAL::115 2
+DEAL::116 2
+DEAL::117 2
+DEAL::118 2
+DEAL::119 2
+DEAL::120 1
+DEAL::121 2
+DEAL::122 2
+DEAL::123 2
+DEAL::124 2
+DEAL::125 1
+DEAL::126 1
+DEAL::127 1
+DEAL::128 1
+DEAL::129 1
+DEAL::130 1
+DEAL::131 1
+DEAL::132 1
+DEAL::133 1
+DEAL::134 1
+DEAL::135 1
+DEAL::136 0
+DEAL::137 1
+DEAL::138 0
+DEAL::139 0
+DEAL::140 0
+DEAL::141 0
+DEAL::142 1
+DEAL::143 0
+DEAL::144 0
+DEAL::145 0
+DEAL::146 0
+DEAL::147 0
+DEAL::148 0
+DEAL::149 0
+DEAL::150 0
+DEAL::151 1
+DEAL::152 1
+DEAL::153 0
+DEAL::154 1
+DEAL::155 0
+DEAL::156 0
+DEAL::157 0
+DEAL::158 0
+DEAL::159 0
+DEAL::160 0
+DEAL::161 0
+DEAL::162 0
+DEAL::163 2
+DEAL::164 2
+DEAL::165 2
+DEAL::166 2
+DEAL::167 2
+DEAL::168 2
+DEAL::169 2
+DEAL::170 4
+DEAL::171 4
+DEAL::172 3
+DEAL::173 3
+DEAL::174 3
+DEAL::175 3
+DEAL::176 3
+DEAL::177 3
+DEAL::178 3
+DEAL::179 2
+DEAL::180 2
+DEAL::181 2
+DEAL::182 2
+DEAL::183 2
+DEAL::184 2
+DEAL::185 2
+DEAL::186 2
+DEAL::187 2
+DEAL::188 4
+DEAL::189 2
+DEAL::190 4
+DEAL::191 2
+DEAL::192 4
+DEAL::193 2
+DEAL::194 2
+DEAL::195 2
+DEAL::196 4
+DEAL::197 2
+DEAL::198 4
+DEAL::199 2
+DEAL::200 4
+DEAL::201 4
+DEAL::202 2
+DEAL::203 2
+DEAL::204 4
+DEAL::205 4
+DEAL::206 4
+DEAL::207 4
+DEAL::208 4
+DEAL::209 4
+DEAL::210 4
+DEAL::211 4
+DEAL::212 2
+DEAL::213 4
+DEAL::214 4
+DEAL::215 4
+DEAL::216 4
+DEAL::217 4
+DEAL::218 4
+DEAL::219 4
+DEAL::220 3
+DEAL::221 3
+DEAL::222 3
+DEAL::223 3
+DEAL::224 3
+DEAL::225 3
+DEAL::226 4
+DEAL::227 3
+DEAL::228 3
+DEAL::229 3
+DEAL::230 3
+DEAL::231 3
+DEAL::232 3
+DEAL::233 3
+DEAL::234 1
+DEAL::235 1
+DEAL::236 1
+DEAL::237 1
+DEAL::238 1
+DEAL::239 1
+DEAL::240 4
+DEAL::241 4
+DEAL::242 4
+DEAL::243 4
+DEAL::244 4
+DEAL::245 4
+DEAL::246 4
+DEAL::247 4
+DEAL::248 4
+DEAL::249 3
+DEAL::250 4
+DEAL::251 4
+DEAL::252 4
+DEAL::253 4
+DEAL::254 4
+DEAL::255 4
+DEAL::256 4
+DEAL::257 4
+DEAL::258 0
+DEAL::259 0
+DEAL::260 0
+DEAL::261 0
+DEAL::262 0
+DEAL::263 0
+DEAL::264 0
+DEAL::265 0
+DEAL::266 0
+DEAL::267 4
+DEAL::268 0
+DEAL::269 0
+DEAL::270 0
+DEAL::271 0
+DEAL::272 0
+DEAL::273 0
+DEAL::274 0
+DEAL::275 0
+DEAL::276 0
+DEAL::277 0
+DEAL::278 4
+DEAL::279 4
+DEAL::280 4
+DEAL::281 0
+DEAL::282 4
+DEAL::283 4
+DEAL::284 4
+DEAL::285 4
+DEAL::286 4
+DEAL::287 4
+DEAL::288 4
+DEAL::289 4
+DEAL::290 4
+DEAL::291 2
+DEAL::292 2
+DEAL::293 2
+DEAL::294 2
+DEAL::295 2
+DEAL::296 2
+DEAL::297 2
+DEAL::298 2
+DEAL::299 2
+DEAL::300 1
+DEAL::301 1
+DEAL::302 2
+DEAL::303 2
+DEAL::304 2
+DEAL::305 1
+DEAL::306 1
+DEAL::307 1
+DEAL::308 1
+DEAL::309 1
+DEAL::310 1
+DEAL::311 1
+DEAL::312 1
+DEAL::313 1
+DEAL::314 4
+DEAL::315 4
+DEAL::316 4
+DEAL::317 4
+DEAL::318 4
+DEAL::319 4
+DEAL::320 4
+DEAL::321 4
+DEAL::322 4
+DEAL::323 4
+DEAL::324 4
+DEAL::325 4
+DEAL::326 4
+DEAL::327 4
+DEAL::328 1
+DEAL::329 1
+DEAL::330 0
+DEAL::331 0
+DEAL::332 0
+DEAL::333 1
+DEAL::334 0
+DEAL::335 0
+DEAL::336 1
+DEAL::337 1
+DEAL::338 1
+DEAL::339 1
+DEAL::340 1
+DEAL::341 1
+DEAL::342 1
+DEAL::343 1
+DEAL::344 1
+DEAL::345 0
+DEAL::346 0
+DEAL::347 0
+DEAL::348 0
+DEAL::349 0
+DEAL::350 0
+DEAL::351 0
+DEAL::352 0
+DEAL::353 0
+DEAL::354 0
+DEAL::355 0
+DEAL::356 0
+DEAL::357 2
+DEAL::358 2
+DEAL::359 2
+DEAL::360 2
+DEAL::361 2
+DEAL::362 2
+DEAL::363 2
+DEAL::364 2
+DEAL::365 2
+DEAL::366 2
+DEAL::367 4
+DEAL::368 2
+DEAL::369 2
+DEAL::370 2
+DEAL::371 4
+DEAL::372 4
+DEAL::373 4
+DEAL::374 4
+DEAL::375 4
+DEAL::376 4
+DEAL::377 4
+DEAL::378 4
+DEAL::379 4
+DEAL::380 4
+DEAL::381 4
+DEAL::382 4
+DEAL::383 4
+DEAL::384 4
+DEAL::385 4
+DEAL::386 4
+DEAL::387 4
+DEAL::388 4
+DEAL::389 3
+DEAL::390 3
+DEAL::391 3
+DEAL::392 3
+DEAL::393 3
+DEAL::394 3
+DEAL::395 3
+DEAL::396 3
+DEAL::397 3
+DEAL::398 3
+DEAL::399 3
+DEAL::400 3
+DEAL::401 4
+DEAL::402 3
+DEAL::403 3
+DEAL::404 3
+DEAL::405 3
+DEAL::406 3
+DEAL::407 4
+DEAL::408 4
+DEAL::409 4
+DEAL::410 4
+DEAL::411 4
+DEAL::412 4
+DEAL::413 4
+DEAL::414 4
+DEAL::415 4
+DEAL::416 4
+DEAL::417 0
+DEAL::418 0
+DEAL::419 0
+DEAL::420 0
+DEAL::421 0
+DEAL::422 0
+DEAL::423 0
+DEAL::424 0
+DEAL::425 0
+DEAL::426 0
+DEAL::427 0
+DEAL::428 0
+DEAL::429 0
+DEAL::430 0
+DEAL::431 4
+DEAL::432 0
+DEAL::433 0
+DEAL::434 0
+DEAL::435 4
+DEAL::436 4
+DEAL::437 4
+DEAL::438 0
+DEAL::439 0
+DEAL::440 1
+DEAL::441 1
+DEAL::442 1
+DEAL::443 1
+DEAL::444 1
+DEAL::445 1
+DEAL::446 1
+DEAL::447 1
+DEAL::448 1
+DEAL::449 1
+DEAL::450 1
+DEAL::451 1
+DEAL::452 4
+DEAL::453 4
+DEAL::454 4
+DEAL::455 4
+DEAL::456 4
+DEAL::457 4
+DEAL::458 4
+DEAL::459 4
+DEAL::460 4
+DEAL::461 4
+DEAL::462 4
+DEAL::463 4
+DEAL::464 4
+DEAL::465 4
+DEAL::466 4
+DEAL::467 4
+DEAL::468 4
+DEAL::469 4
+DEAL::470 4
+DEAL::471 4
+DEAL::472 4
+DEAL::473 4
+DEAL::474 4
+DEAL::475 4
+DEAL::476 4
+DEAL::477 4
+DEAL::478 4
+DEAL::479 4
+DEAL::480 4
+DEAL::481 4
+DEAL::482 4
+DEAL::483 4
+DEAL::484 4
+DEAL::485 4
+DEAL::486 4
+DEAL::487 4
+DEAL::488 0
+DEAL::489 0
+DEAL::490 0
+DEAL::491 0
+DEAL::492 0
+DEAL::493 0
+DEAL::494 0
+DEAL::495 0
+DEAL::496 0
+DEAL::497 0
+DEAL::498 0
+DEAL::499 0
+DEAL::500 0
+DEAL::501 0
+DEAL::502 0
+DEAL::503 0
+DEAL::504 0
+DEAL::505 0
+DEAL::506 0
+DEAL::507 0
+DEAL::508 4
+DEAL::509 4
+DEAL::510 4
+DEAL::511 4
+DEAL::512 4
+DEAL::513 4
+DEAL::514 4
+DEAL::515 4
+DEAL::516 4
+DEAL::517 4
+DEAL::518 4
+DEAL::519 4
+DEAL::520 4
+DEAL::521 4
+DEAL::522 4
+DEAL::523 4
+DEAL::524 4
+DEAL::525 4
+DEAL::526 4
+DEAL::527 4
+DEAL::528 4
+DEAL::529 4
+DEAL::530 4
+DEAL::531 4
+DEAL::532 4
+DEAL::533 4
+DEAL::534 4
+DEAL::535 4
+DEAL::536 4
+DEAL::537 4
+DEAL::538 4
+DEAL::539 4
+DEAL::540 4
+DEAL::541 4
+DEAL::542 4
+DEAL::543 2
+DEAL::544 2
+DEAL::545 2
+DEAL::546 2
+DEAL::547 2
+DEAL::548 2
+DEAL::549 2
+DEAL::550 2
+DEAL::551 2
+DEAL::552 2
+DEAL::553 2
+DEAL::554 2
+DEAL::555 2
+DEAL::556 2
+DEAL::557 4
+DEAL::558 4
+DEAL::559 4
+DEAL::560 4
+DEAL::561 4
+DEAL::562 4
+DEAL::563 4
+DEAL::564 4
+DEAL::565 4
+DEAL::566 4
+DEAL::567 4
+DEAL::568 4
+DEAL::569 4
+DEAL::570 4
+DEAL::571 4
+DEAL::572 1
+DEAL::573 1
+DEAL::574 1
+DEAL::575 1
+DEAL::576 1
+DEAL::577 1
+DEAL::578 1
+DEAL::579 1
+DEAL::580 1
+DEAL::581 1
+DEAL::582 1
+DEAL::583 1
+DEAL::584 1
+DEAL::585 1
+DEAL::586 1
+DEAL::587 1
+DEAL::588 1
+DEAL::589 1
+DEAL::590 1
+DEAL::591 1
+DEAL::592 1
+DEAL::593 1
+DEAL::594 1
+DEAL::595 1
+DEAL::596 1
+DEAL::597 1
+DEAL::598 1
+DEAL::599 1
+DEAL::600 1
+DEAL::601 1
+DEAL::602 1
+DEAL::603 1
+DEAL::604 0
+DEAL::605 0
+DEAL::606 0
+DEAL::607 0
+DEAL::608 0
+DEAL::609 0
+DEAL::610 0
+DEAL::611 0
+DEAL::612 0
+DEAL::613 0
+DEAL::614 0
+DEAL::615 0
+DEAL::616 0
+DEAL::617 0
+DEAL::618 0
+DEAL::619 0
+DEAL::620 3
+DEAL::621 3
+DEAL::622 0
+DEAL::623 3
+DEAL::624 3
+DEAL::625 3
+DEAL::626 3
+DEAL::627 0
+DEAL::628 3
+DEAL::629 4
+DEAL::630 4
+DEAL::631 4
+DEAL::632 3
+DEAL::633 4
+DEAL::634 4
+DEAL::635 4
+DEAL::636 4
+DEAL::637 4
+DEAL::638 2
+DEAL::639 2
+DEAL::640 2
+DEAL::641 2
+DEAL::642 2
+DEAL::643 2
+DEAL::644 2
+DEAL::645 2
+DEAL::646 2
+DEAL::647 3
+DEAL::648 3
+DEAL::649 3
+DEAL::650 3
+DEAL::651 3
+DEAL::652 3
+DEAL::653 3
+DEAL::654 3
+DEAL::655 3
+DEAL::656 3
+DEAL::657 3
+DEAL::658 3
+DEAL::659 3
+DEAL::660 3
+DEAL::661 3
+DEAL::662 3
+DEAL::663 3
+DEAL::664 3
+DEAL::665 3
+DEAL::666 3
+DEAL::667 3
+DEAL::668 3
+DEAL::669 3
+DEAL::670 3
+DEAL::671 3
+DEAL::672 0
+DEAL::673 0
+DEAL::674 0
+DEAL::675 0
+DEAL::676 0
+DEAL::677 0
+DEAL::678 0
+DEAL::679 0
+DEAL::680 0
+DEAL::681 0
+DEAL::682 0
+DEAL::683 0
+DEAL::684 0
+DEAL::685 0
+DEAL::686 0
+DEAL::687 0
+DEAL::688 0
+DEAL::689 3
+DEAL::690 3
+DEAL::691 3
+DEAL::692 3
+DEAL::693 3
+DEAL::694 3
+DEAL::695 2
+DEAL::696 2
+DEAL::697 2
+DEAL::698 2
+DEAL::699 2
+DEAL::700 2
+DEAL::701 2
+DEAL::702 2
+DEAL::703 2
+DEAL::704 1
+DEAL::705 1
+DEAL::706 1
+DEAL::707 1
+DEAL::708 1
+DEAL::709 1
+DEAL::710 1
+DEAL::711 1
+DEAL::712 1
+DEAL::713 0
+DEAL::714 0
+DEAL::715 0
+DEAL::716 0
+DEAL::717 0
+DEAL::718 0
+DEAL::719 0
+DEAL::720 0
+DEAL::721 0
+DEAL::722 3
+DEAL::723 0
+DEAL::724 3
+DEAL::725 3
+DEAL::726 3
+DEAL::727 3
+DEAL::728 0
+DEAL::729 3
+DEAL::730 3
+DEAL::731 0
+DEAL::732 3
+DEAL::733 0
+DEAL::734 0
+DEAL::735 4
+DEAL::736 3
+DEAL::737 3
+DEAL::738 3
+DEAL::739 3
+DEAL::740 3
+DEAL::741 3
+DEAL::742 3
+DEAL::743 3
+DEAL::744 3
+DEAL::745 3
+DEAL::746 3
+DEAL::747 3
+DEAL::748 3
+DEAL::749 3
+DEAL::750 3
+DEAL::751 3
+DEAL::752 3
+DEAL::753 3
+DEAL::754 3
+DEAL::755 3
+DEAL::756 3
+DEAL::757 3
+DEAL::758 3
+DEAL::759 3
+DEAL::760 3
+DEAL::761 0
+DEAL::762 0
+DEAL::763 0
+DEAL::764 0
+DEAL::765 0
+DEAL::766 0
+DEAL::767 0
+DEAL::768 0
+DEAL::769 2
+DEAL::770 2
+DEAL::771 2
+DEAL::772 2
+DEAL::773 2
+DEAL::774 2
+DEAL::775 2
+DEAL::776 2
+DEAL::777 2
+DEAL::778 2
+DEAL::779 2
+DEAL::780 2
+DEAL::781 2
+DEAL::782 2
+DEAL::783 2
+DEAL::784 2
+DEAL::785 3
+DEAL::786 4
+DEAL::787 4
+DEAL::788 3
+DEAL::789 4
+DEAL::790 4
+DEAL::791 3
+DEAL::792 4
+DEAL::793 1
+DEAL::794 1
+DEAL::795 1
+DEAL::796 1
+DEAL::797 1
+DEAL::798 1
+DEAL::799 1
+DEAL::800 1
+DEAL::801 1
+DEAL::802 1
+DEAL::803 1
+DEAL::804 1
+DEAL::805 1
+DEAL::806 1
+DEAL::807 0
+DEAL::808 0
+DEAL::809 0
+DEAL::810 0
+DEAL::811 0
+DEAL::812 0
+DEAL::813 0
+DEAL::814 0
+DEAL::815 0
+DEAL::816 0
+DEAL::817 0
+DEAL::818 0
+DEAL::819 0
+DEAL::820 0
+DEAL::821 0
+DEAL::822 0
+DEAL::823 0
+DEAL::824 0
+DEAL::825 0
+DEAL::826 0
+DEAL::827 2
+DEAL::828 2
+DEAL::829 2
+DEAL::830 2
+DEAL::831 2
+DEAL::832 2
+DEAL::833 2
+DEAL::834 2
+DEAL::835 2
+DEAL::836 2
+DEAL::837 2
+DEAL::838 2
+DEAL::839 2
+DEAL::840 2
+DEAL::841 2
+DEAL::842 2
+DEAL::843 2
+DEAL::844 2
+DEAL::845 2
+DEAL::846 2
+DEAL::847 2
+DEAL::848 3
+DEAL::849 3
+DEAL::850 3
+DEAL::851 3
+DEAL::852 3
+DEAL::853 3
+DEAL::854 3
+DEAL::855 3
+DEAL::856 1
+DEAL::857 0
+DEAL::858 3
+DEAL::859 0
+DEAL::860 0
+DEAL::861 0
+DEAL::862 0
+DEAL::863 0
+DEAL::864 2
+DEAL::865 2
+DEAL::866 2
+DEAL::867 2
+DEAL::868 2
+DEAL::869 2
+DEAL::870 2
+DEAL::871 2
+DEAL::872 2
+DEAL::873 2
+DEAL::874 2
+DEAL::875 2
+DEAL::876 2
+DEAL::877 2
+DEAL::878 2
+DEAL::879 2
+DEAL::880 4
+DEAL::881 4
+DEAL::882 4
+DEAL::883 4
+DEAL::884 4
+DEAL::885 4
+DEAL::886 4
+DEAL::887 4
+DEAL::888 4
+DEAL::889 4
+DEAL::890 4
+DEAL::891 4
+DEAL::892 4
+DEAL::893 1
+DEAL::894 1
+DEAL::895 1
+DEAL::896 1
+DEAL::897 1
+DEAL::898 1
+DEAL::899 1
+DEAL::900 1
+DEAL::901 1
+DEAL::902 1
+DEAL::903 1
+DEAL::904 1
+DEAL::905 1
+DEAL::906 1
+DEAL::907 1
+DEAL::908 1
+DEAL::909 1
+DEAL::910 1
+DEAL::911 1
+DEAL::912 1
+DEAL::913 1
+DEAL::914 1
+DEAL::915 1
+DEAL::916 1
+DEAL::917 1
+DEAL::918 1
+DEAL::919 2
+DEAL::920 2
+DEAL::921 2
+DEAL::922 2
+DEAL::923 2
+DEAL::924 2
+DEAL::925 2
+DEAL::926 2
+DEAL::927 2
+DEAL::928 2
+DEAL::929 2
+DEAL::930 2
+DEAL::931 2
+DEAL::932 2
+DEAL::933 2
+DEAL::934 2
+DEAL::935 2
+DEAL::936 2
+DEAL::937 2
+DEAL::938 2
+DEAL::939 2
+DEAL::940 2
+DEAL::941 1
+DEAL::942 1
+DEAL::943 1
+DEAL::944 1
+DEAL::945 1
+DEAL::946 2
+DEAL::947 1
+DEAL::948 1
+DEAL::949 1
+DEAL::950 1
+DEAL::951 1
+DEAL::952 1
+DEAL::953 1
+DEAL::954 1
+DEAL::955 1
+DEAL::956 1
+DEAL::957 1
+DEAL::958 1
+DEAL::959 1
+DEAL::960 1
+DEAL::961 1
+DEAL::962 1
+DEAL::963 1
+DEAL::964 1
+DEAL::965 1
+DEAL::966 0
+DEAL::967 0
+DEAL::968 0
+DEAL::969 0
+DEAL::970 0
+DEAL::971 0
+DEAL::972 0
+DEAL::973 0
+DEAL::974 0
+DEAL::975 0
+DEAL::976 0
+DEAL::977 0
+DEAL::978 0
+DEAL::979 0
+DEAL::980 0
+DEAL::981 0
+DEAL::982 0
+DEAL::983 0
+DEAL::984 0
+DEAL::985 0
+DEAL::986 0
+DEAL::987 0
+DEAL::988 0
+DEAL::989 0
+DEAL::990 0
+DEAL::991 0
+DEAL::992 0
+DEAL::993 0
+DEAL::994 0
+DEAL::995 0
+DEAL::996 0
+DEAL::997 0
+DEAL::998 0
+DEAL::999 0
+DEAL::1000 0
+DEAL::1001 0
+DEAL::1002 0
+DEAL::1003 0
+DEAL::1004 0
+DEAL::1005 0
+DEAL::1006 0
+DEAL::1007 0
+DEAL::1008 0
+DEAL::1009 4
+DEAL::1010 3
+DEAL::1011 3
+DEAL::1012 3
+DEAL::1013 3
+DEAL::1014 3
+DEAL::1015 3
+DEAL::1016 3
+DEAL::1017 4
+DEAL::1018 3
+DEAL::1019 3
+DEAL::1020 3
+DEAL::1021 3
+DEAL::1022 3
+DEAL::1023 3
+DEAL::1024 3
+DEAL::1025 3
+DEAL::1026 3
+DEAL::1027 3
+DEAL::1028 3
+DEAL::1029 3
+DEAL::1030 3
+DEAL::1031 3
+DEAL::1032 3
+DEAL::1033 3
+DEAL::1034 4
+DEAL::1035 3
+DEAL::1036 3
+DEAL::1037 3
+DEAL::1038 3
+DEAL::1039 3
+DEAL::1040 3
+DEAL::1041 3
+DEAL::1042 3
+DEAL::1043 3
+DEAL::1044 3
+DEAL::1045 3
+DEAL::1046 3
+DEAL::1047 3
+DEAL::1048 3
+DEAL::1049 3
+DEAL::1050 3
+DEAL::1051 3
+DEAL::1052 3
+DEAL::1053 3
+DEAL::1054 3
+DEAL::1055 3
+DEAL::1056 3
+DEAL::1057 3
+DEAL::1058 3
+DEAL::1059 3
+DEAL::1060 3
+DEAL::1061 2
+DEAL::1062 2
+DEAL::1063 2
+DEAL::1064 2
+DEAL::1065 2
+DEAL::1066 2
+DEAL::1067 2
+DEAL::1068 2
+DEAL::1069 2
+DEAL::1070 2
+DEAL::1071 2
+DEAL::1072 2
+DEAL::1073 2
+DEAL::1074 2
+DEAL::1075 2
+DEAL::1076 2
+DEAL::1077 2
+DEAL::1078 2
+DEAL::1079 2
+DEAL::1080 2
+DEAL::1081 2
+DEAL::1082 3
+DEAL::1083 3
+DEAL::1084 3
+DEAL::1085 3
+DEAL::1086 3
+DEAL::1087 3
+DEAL::1088 3
+DEAL::1089 3
+DEAL::1090 3
+DEAL::1091 3
+DEAL::1092 3
+DEAL::1093 3
+DEAL::1094 3
+DEAL::1095 3
+DEAL::1096 3
+DEAL::1097 3
+DEAL::1098 3
+DEAL::1099 3
+DEAL::1100 3
+DEAL::1101 3
+DEAL::1102 3
+DEAL::1103 3
+DEAL::1104 3
+DEAL::1105 3
+DEAL::1106 3
+DEAL::1107 3
+DEAL::1108 3
+DEAL::1109 3
+DEAL::1110 3
+DEAL::1111 3
+DEAL::1112 3
+DEAL::1113 3
+DEAL::1114 3
+DEAL::1115 3
+DEAL::1116 3
+DEAL::1117 0
+DEAL::1118 0
+DEAL::1119 0
+DEAL::1120 0
+DEAL::1121 0
+DEAL::1122 0
+DEAL::1123 3
+DEAL::1124 0
+DEAL::1125 0
+DEAL::1126 0
+DEAL::1127 0
+DEAL::1128 0
+DEAL::1129 0
+DEAL::1130 0
+DEAL::1131 0
+DEAL::1132 0
+DEAL::1133 0
+DEAL::1134 0
+DEAL::1135 2
+DEAL::1136 2
+DEAL::1137 2
+DEAL::1138 2
+DEAL::1139 2
+DEAL::1140 2
+DEAL::1141 2
+DEAL::1142 2
+DEAL::1143 2
+DEAL::1144 2
+DEAL::1145 2
+DEAL::1146 2
+DEAL::1147 2
+DEAL::1148 2
+DEAL::1149 2
+DEAL::1150 2
+DEAL::1151 2
+DEAL::1152 2
+DEAL::1153 2
+DEAL::1154 2
+DEAL::1155 2
+DEAL::1156 2
+DEAL::1157 4
+DEAL::1158 2
+DEAL::1159 2
+DEAL::1160 2
+DEAL::1161 2
+DEAL::1162 4
+DEAL::1163 2
+DEAL::1164 2
+DEAL::1165 2
+DEAL::1166 2
+DEAL::1167 4
+DEAL::1168 4
+DEAL::1169 4
+DEAL::1170 4
+DEAL::1171 4
+DEAL::1172 4
+DEAL::1173 4
+DEAL::1174 4
+DEAL::1175 4
+DEAL::1176 4
+DEAL::1177 4
+DEAL::1178 4
+DEAL::1179 4
+DEAL::1180 4
+DEAL::1181 4
+DEAL::1182 4
+DEAL::1183 4
+DEAL::1184 4
+DEAL::1185 4
+DEAL::1186 1
+DEAL::1187 1
+DEAL::1188 1
+DEAL::1189 1
+DEAL::1190 1
+DEAL::1191 1
+DEAL::1192 1
+DEAL::1193 1
+DEAL::1194 1
+DEAL::1195 1
+DEAL::1196 1
+DEAL::1197 1
+DEAL::1198 1
+DEAL::1199 1
+DEAL::1200 1
+DEAL::1201 1
+DEAL::1202 1
+DEAL::1203 1
+DEAL::1204 1
+DEAL::1205 1
+DEAL::1206 1
+DEAL::1207 0
+DEAL::1208 0
+DEAL::1209 0
+DEAL::1210 0
+DEAL::1211 0
+DEAL::1212 0
+DEAL::1213 0
+DEAL::1214 0
+DEAL::1215 0
+DEAL::1216 0
+DEAL::1217 0
+DEAL::1218 0
+DEAL::1219 0
+DEAL::1220 0
+DEAL::1221 2
+DEAL::1222 2
+DEAL::1223 2
+DEAL::1224 2
+DEAL::1225 2
+DEAL::1226 2
+DEAL::1227 2
+DEAL::1228 2
+DEAL::1229 2
+DEAL::1230 2
+DEAL::1231 2
+DEAL::1232 2
+DEAL::1233 2
+DEAL::1234 2
+DEAL::1235 2
+DEAL::1236 2
+DEAL::1237 2
+DEAL::1238 2
+DEAL::1239 2
+DEAL::1240 2
+DEAL::1241 2
+DEAL::1242 2
+DEAL::1243 2
+DEAL::1244 2
+DEAL::1245 2
+DEAL::1246 2
+DEAL::1247 2
+DEAL::1248 2
+DEAL::1249 2
+DEAL::1250 2
+DEAL::1251 2
+DEAL::1252 2
+DEAL::1253 2
+DEAL::1254 2
+DEAL::1255 2
+DEAL::1256 2
+DEAL::1257 2
+DEAL::1258 2
+DEAL::1259 2
+DEAL::1260 3
+DEAL::1261 1
+DEAL::1262 3
+DEAL::1263 4
+DEAL::1264 4
+DEAL::1265 4
+DEAL::1266 4
+DEAL::1267 4
+DEAL::1268 1
+DEAL::1269 1
+DEAL::1270 1
+DEAL::1271 1
+DEAL::1272 1
+DEAL::1273 3
+DEAL::1274 3
+DEAL::1275 3
+DEAL::1276 3
+DEAL::1277 3
+DEAL::1278 1
+DEAL::1279 0
+DEAL::1280 1
+DEAL::1281 1
+DEAL::1282 1
+DEAL::1283 1
+DEAL::1284 0
+DEAL::1285 1
+DEAL::1286 1
+DEAL::1287 1
+DEAL::1288 1
+DEAL::1289 1
+DEAL::1290 0
+DEAL::1291 0
+DEAL::1292 0
+DEAL::1293 0
+DEAL::1294 0
+DEAL::1295 0
+DEAL::1296 2
+DEAL::1297 2
+DEAL::1298 2
+DEAL::1299 2
+DEAL::1300 2
+DEAL::1301 2
+DEAL::1302 2
+DEAL::1303 2
+DEAL::1304 2
+DEAL::1305 2
+DEAL::1306 2
+DEAL::1307 2
+DEAL::1308 2
+DEAL::1309 2
+DEAL::1310 2
+DEAL::1311 2
+DEAL::1312 2
+DEAL::1313 2
+DEAL::1314 2
+DEAL::1315 2
+DEAL::1316 2
+DEAL::1317 2
+DEAL::1318 4
+DEAL::1319 4
+DEAL::1320 4
+DEAL::1321 4
+DEAL::1322 4
+DEAL::1323 4
+DEAL::1324 4
+DEAL::1325 4
+DEAL::1326 4
+DEAL::1327 4
+DEAL::1328 4
+DEAL::1329 4
+DEAL::1330 4
+DEAL::1331 4
+DEAL::1332 4
+DEAL::1333 4
+DEAL::1334 4
+DEAL::1335 4
+DEAL::1336 1
+DEAL::1337 1
+DEAL::1338 1
+DEAL::1339 1
+DEAL::1340 1
+DEAL::1341 1
+DEAL::1342 2
+DEAL::1343 1
+DEAL::1344 1
+DEAL::1345 1
+DEAL::1346 1
+DEAL::1347 1
+DEAL::1348 1
+DEAL::1349 1
+DEAL::1350 1
+DEAL::1351 1
+DEAL::1352 1
+DEAL::1353 1
+DEAL::1354 1
+DEAL::1355 1
+DEAL::1356 1
+DEAL::1357 1
+DEAL::1358 1
+DEAL::1359 1
+DEAL::1360 1
+DEAL::1361 1
+DEAL::1362 1
+DEAL::1363 1
+DEAL::1364 1
+DEAL::1365 1
+DEAL::1366 1
+DEAL::1367 1
+DEAL::1368 1
+DEAL::1369 1
+DEAL::1370 1
+DEAL::1371 1
+DEAL::1372 1
+DEAL::1373 1
+DEAL::1374 1
+DEAL::1375 1
+DEAL::1376 0
+DEAL::1377 0
+DEAL::1378 0
+DEAL::1379 0
+DEAL::1380 0
+DEAL::1381 0
+DEAL::1382 0
+DEAL::1383 0
+DEAL::1384 0
+DEAL::1385 0
+DEAL::1386 0
+DEAL::1387 0
+DEAL::1388 0
+DEAL::1389 0
+DEAL::1390 0
+DEAL::1391 0
+DEAL::1392 0
+DEAL::1393 0
+DEAL::1394 2
+DEAL::1395 2
+DEAL::1396 2
+DEAL::1397 2
+DEAL::1398 2
+DEAL::1399 2
+DEAL::1400 2
+DEAL::1401 2
+DEAL::1402 2
+DEAL::1403 2
+DEAL::1404 2
+DEAL::1405 2
+DEAL::1406 2
+DEAL::1407 1
+DEAL::1408 2
+DEAL::1409 2
+DEAL::1410 2
+DEAL::1411 2
+DEAL::1412 2
+DEAL::1413 2
+DEAL::1414 2
+DEAL::1415 1
+DEAL::1416 2
+DEAL::1417 2
+DEAL::1418 2
+DEAL::1419 2
+DEAL::1420 2
+DEAL::1421 1
+DEAL::1422 2
+DEAL::1423 2
+DEAL::1424 2
+DEAL::1425 2
+DEAL::1426 2
+DEAL::1427 2
+DEAL::1428 2
+DEAL::1429 4
+DEAL::1430 1
+DEAL::1431 4
+DEAL::1432 4
+DEAL::1433 4
+DEAL::1434 4
+DEAL::1435 1
+DEAL::1436 1
+DEAL::1437 1
+DEAL::1438 1
+DEAL::1439 1
+DEAL::1440 1
+DEAL::1441 1
+DEAL::1442 1
+DEAL::1443 1
+DEAL::1444 1
+DEAL::1445 1
+DEAL::1446 1
+DEAL::1447 1
+DEAL::1448 1
+DEAL::1449 1
+DEAL::1450 1
+DEAL::1451 1
+DEAL::1452 1
+DEAL::1453 1
+DEAL::1454 0
+DEAL::1455 0
+DEAL::1456 0
+DEAL::1457 0
+DEAL::1458 0
+DEAL::1459 0
+DEAL::1460 0
+DEAL::1461 0
+DEAL::1462 0
+DEAL::1463 0
+DEAL::1464 0
+DEAL::1465 0
+DEAL::1466 0
+DEAL::1467 0
+DEAL::1468 0
+DEAL::1469 0
+DEAL::1470 0
+DEAL::1471 0
+DEAL::1472 0
+DEAL::1473 0
+DEAL::1474 0
+DEAL::1475 0
+DEAL::1476 0
+DEAL::1477 0
+DEAL::1478 0
+DEAL::1479 0
+DEAL::1480 0
+DEAL::1481 0
+DEAL::1482 0
+DEAL::1483 0
+DEAL::1484 0
+DEAL::1485 0
+DEAL::1486 0
+DEAL::1487 0
+DEAL::1488 0
+DEAL::1489 0
+DEAL::1490 0
+DEAL::1491 0
+DEAL::1492 0
+DEAL::1493 0
+DEAL::1494 0
+DEAL::1495 0
+DEAL::1496 0
+DEAL::1497 0
+DEAL::1498 0
+DEAL::1499 0
+DEAL::1500 0
+DEAL::1501 0
+DEAL::1502 0
+DEAL::1503 0
+DEAL::1504 0
+DEAL::1505 0
+DEAL::1506 0
+DEAL::1507 0
+DEAL::1508 0
+DEAL::1509 0
+DEAL::1510 0
+DEAL::1511 0
+DEAL::1512 0
+DEAL::1513 0
+DEAL::1514 0
+DEAL::1515 0
+DEAL::1516 0
+DEAL::1517 0
+DEAL::1518 0
+DEAL::1519 0
+DEAL::1520 0
+DEAL::1521 2
+DEAL::1522 2
+DEAL::1523 2
+DEAL::1524 2
+DEAL::1525 2
+DEAL::1526 2
+DEAL::1527 2
+DEAL::1528 2
+DEAL::1529 2
+DEAL::1530 2
+DEAL::1531 2
+DEAL::1532 2
+DEAL::1533 2
+DEAL::1534 2
+DEAL::1535 2
+DEAL::1536 2
+DEAL::1537 2
+DEAL::1538 2
+DEAL::1539 2
+DEAL::1540 2
+DEAL::1541 4
+DEAL::1542 4
+DEAL::1543 4
+DEAL::1544 4
+DEAL::1545 4
+DEAL::1546 4
+DEAL::1547 4
+DEAL::1548 4
+DEAL::1549 4
+DEAL::1550 4
+DEAL::1551 4
+DEAL::1552 4
+DEAL::1553 4
+DEAL::1554 4
+DEAL::1555 4
+DEAL::1556 4
+DEAL::1557 4
+DEAL::1558 4
+DEAL::1559 4
+DEAL::1560 2
+DEAL::1561 2
+DEAL::1562 2
+DEAL::1563 2
+DEAL::1564 2
+DEAL::1565 2
+DEAL::1566 2
+DEAL::1567 2
+DEAL::1568 2
+DEAL::1569 2
+DEAL::1570 2
+DEAL::1571 2
+DEAL::1572 2
+DEAL::1573 2
+DEAL::1574 2
+DEAL::1575 2
+DEAL::1576 2
+DEAL::1577 2
+DEAL::1578 2
+DEAL::1579 4
+DEAL::1580 4
+DEAL::1581 4
+DEAL::1582 4
+DEAL::1583 4
+DEAL::1584 4
+DEAL::1585 4
+DEAL::1586 4
+DEAL::1587 4
+DEAL::1588 4
+DEAL::1589 4
+DEAL::1590 4
+DEAL::1591 4
+DEAL::1592 4
+DEAL::1593 4
+DEAL::1594 4
+DEAL::1595 4
+DEAL::1596 4
+DEAL::1597 4
+DEAL::1598 4
+DEAL::1599 4
+DEAL::1600 4
+DEAL::1601 4
+DEAL::1602 4
+DEAL::1603 4
+DEAL::1604 4
+DEAL::1605 4
+DEAL::1606 4
+DEAL::1607 4
+DEAL::1608 4
+DEAL::1609 4
+DEAL::1610 4
+DEAL::1611 4
+DEAL::1612 4
+DEAL::1613 3
+DEAL::1614 3
+DEAL::1615 3
+DEAL::1616 3
+DEAL::1617 3
+DEAL::1618 3
+DEAL::1619 3
+DEAL::1620 3
+DEAL::1621 3
+DEAL::1622 3
+DEAL::1623 3
+DEAL::1624 3
+DEAL::1625 3
+DEAL::1626 3
+DEAL::1627 3
+DEAL::1628 3
+DEAL::1629 3
+DEAL::1630 3
+DEAL::1631 1
+DEAL::1632 1
+DEAL::1633 1
+DEAL::1634 1
+DEAL::1635 1
+DEAL::1636 1
+DEAL::1637 1
+DEAL::1638 1
+DEAL::1639 1
+DEAL::1640 1
+DEAL::1641 1
+DEAL::1642 1
+DEAL::1643 1
+DEAL::1644 1
+DEAL::1645 1
+DEAL::1646 1
+DEAL::1647 1
+DEAL::1648 4
+DEAL::1649 3
+DEAL::1650 4
+DEAL::1651 3
+DEAL::1652 3
+DEAL::1653 3
+DEAL::1654 3
+DEAL::1655 3
+DEAL::1656 4
+DEAL::1657 4
+DEAL::1658 4
+DEAL::1659 4
+DEAL::1660 4
+DEAL::1661 4
+DEAL::1662 3
+DEAL::1663 3
+DEAL::1664 3
+DEAL::1665 3
+DEAL::1666 4
+DEAL::1667 4
+DEAL::1668 3
+DEAL::1669 3
+DEAL::1670 3
+DEAL::1671 4
+DEAL::1672 3
+DEAL::1673 4
+DEAL::1674 4
+DEAL::1675 4
+DEAL::1676 4
+DEAL::1677 4
+DEAL::1678 4
+DEAL::1679 4
+DEAL::1680 4
+DEAL::1681 4
+DEAL::1682 4
+DEAL::1683 4
+DEAL::1684 4
+DEAL::1685 4
+DEAL::1686 4
+DEAL::1687 4
+DEAL::1688 4
+DEAL::1689 4
+DEAL::1690 4
+DEAL::1691 4
+DEAL::1692 4
+DEAL::1693 4
+DEAL::1694 4
+DEAL::1695 4
+DEAL::1696 4
+DEAL::1697 4
+DEAL::1698 4
+DEAL::1699 4
+DEAL::1700 4
+DEAL::1701 4
+DEAL::1702 4
+DEAL::1703 2
+DEAL::1704 2
+DEAL::1705 2
+DEAL::1706 2
+DEAL::1707 2
+DEAL::1708 2
+DEAL::1709 2
+DEAL::1710 2
+DEAL::1711 1
+DEAL::1712 2
+DEAL::1713 2
+DEAL::1714 2
+DEAL::1715 2
+DEAL::1716 2
+DEAL::1717 2
+DEAL::1718 2
+DEAL::1719 1
+DEAL::1720 1
+DEAL::1721 2
+DEAL::1722 2
+DEAL::1723 2
+DEAL::1724 2
+DEAL::1725 1
+DEAL::1726 1
+DEAL::1727 1
+DEAL::1728 1
+DEAL::1729 1
+DEAL::1730 1
+DEAL::1731 1
+DEAL::1732 1
+DEAL::1733 1
+DEAL::1734 1
+DEAL::1735 1
+DEAL::1736 4
+DEAL::1737 1
+DEAL::1738 1
+DEAL::1739 4
+DEAL::1740 1
+DEAL::1741 1
+DEAL::1742 1
+DEAL::1743 1
+DEAL::1744 1
+DEAL::1745 1
+DEAL::1746 1
+DEAL::1747 1
+DEAL::1748 1
+DEAL::1749 1
+DEAL::1750 1
+DEAL::1751 1
+DEAL::1752 1
+DEAL::1753 1
+DEAL::1754 1
+DEAL::1755 1
+DEAL::1756 1
+DEAL::1757 1
+DEAL::1758 1
+DEAL::1759 1
+DEAL::1760 1
+DEAL::1761 1
+DEAL::1762 1
+DEAL::1763 1
+DEAL::1764 1
+DEAL::1765 1
+DEAL::1766 1
+DEAL::1767 1
+DEAL::1768 1
+DEAL::1769 1
+DEAL::1770 1
+DEAL::1771 4
+DEAL::1772 4
+DEAL::1773 4
+DEAL::1774 4
+DEAL::1775 4
+DEAL::1776 4
+DEAL::1777 4
+DEAL::1778 4
+DEAL::1779 4
+DEAL::1780 4
+DEAL::1781 4
+DEAL::1782 4
+DEAL::1783 4
+DEAL::1784 4
+DEAL::1785 4
+DEAL::1786 4
+DEAL::1787 4
+DEAL::1788 4
+DEAL::1789 4
+DEAL::1790 4
+DEAL::1791 1
+DEAL::1792 0
+DEAL::1793 1
+DEAL::1794 1
+DEAL::1795 1
+DEAL::1796 1
+DEAL::1797 0
+DEAL::1798 0
+DEAL::1799 1
+DEAL::1800 1
+DEAL::1801 0
+DEAL::1802 1
+DEAL::1803 0
+DEAL::1804 0
+DEAL::1805 0
+DEAL::1806 0
+DEAL::1807 0
+DEAL::1808 1
+DEAL::1809 1
+DEAL::1810 1
+DEAL::1811 1
+DEAL::1812 1
+DEAL::1813 1
+DEAL::1814 1
+DEAL::1815 1
+DEAL::1816 1
+DEAL::1817 1
+DEAL::1818 1
+DEAL::1819 1
+DEAL::1820 1
+DEAL::1821 1
+DEAL::1822 1
+DEAL::1823 1
+DEAL::1824 1
+DEAL::1825 1
+DEAL::1826 1
+DEAL::1827 1
+DEAL::1828 1
+DEAL::1829 1
+DEAL::1830 1
+DEAL::1831 1
+DEAL::1832 1
+DEAL::1833 1
+DEAL::1834 1
+DEAL::1835 0
+DEAL::1836 1
+DEAL::1837 0
+DEAL::1838 1
+DEAL::1839 1
+DEAL::1840 0
+DEAL::1841 0
+DEAL::1842 0
+DEAL::1843 0
+DEAL::1844 0
+DEAL::1845 1
+DEAL::1846 1
+DEAL::1847 1
+DEAL::1848 1
+DEAL::1849 1
+DEAL::1850 1
+DEAL::1851 1
+DEAL::1852 1
+DEAL::1853 0
+DEAL::1854 1
+DEAL::1855 1
+DEAL::1856 1
+DEAL::1857 1
+DEAL::1858 1
+DEAL::1859 0
+DEAL::1860 1
+DEAL::1861 0
+DEAL::1862 1
+DEAL::1863 0
+DEAL::1864 0
+DEAL::1865 0
+DEAL::1866 0
+DEAL::1867 0
+DEAL::1868 0
+DEAL::1869 0
+DEAL::1870 0
+DEAL::1871 0
+DEAL::1872 0
+DEAL::1873 0
+DEAL::1874 0
+DEAL::1875 0
+DEAL::1876 0
+DEAL::1877 2
+DEAL::1878 2
+DEAL::1879 2
+DEAL::1880 2
+DEAL::1881 2
+DEAL::1882 2
+DEAL::1883 2
+DEAL::1884 2
+DEAL::1885 2
+DEAL::1886 2
+DEAL::1887 2
+DEAL::1888 2
+DEAL::1889 2
+DEAL::1890 3
+DEAL::1891 3
+DEAL::1892 3
+DEAL::1893 3
+DEAL::1894 3
+DEAL::1895 3
+DEAL::1896 3
+DEAL::1897 3
+DEAL::1898 3
+DEAL::1899 3
+DEAL::1900 3
+DEAL::1901 3
+DEAL::1902 3
+DEAL::1903 3
+DEAL::1904 3
+DEAL::1905 4
+DEAL::1906 4
+DEAL::1907 4
+DEAL::1908 4
+DEAL::1909 4
+DEAL::1910 4
+DEAL::1911 4
+DEAL::1912 4
+DEAL::1913 4
+DEAL::1914 4
+DEAL::1915 4
+DEAL::1916 4
+DEAL::1917 4
+DEAL::1918 4
+DEAL::1919 4
+DEAL::1920 3
+DEAL::1921 4
+DEAL::1922 4
+DEAL::1923 4
+DEAL::1924 4
+DEAL::1925 3
+DEAL::1926 3
+DEAL::1927 3
+DEAL::1928 3
+DEAL::1929 3
+DEAL::1930 3
+DEAL::1931 1
+DEAL::1932 1
+DEAL::1933 1
+DEAL::1934 1
+DEAL::1935 1
+DEAL::1936 1
+DEAL::1937 1
+DEAL::1938 1
+DEAL::1939 1
+DEAL::1940 1
+DEAL::1941 1
+DEAL::1942 1
+DEAL::1943 1
+DEAL::1944 1
+DEAL::1945 1
+DEAL::1946 1
+DEAL::1947 0
+DEAL::1948 0
+DEAL::1949 0
+DEAL::1950 0
+DEAL::1951 0
+DEAL::1952 0
+DEAL::1953 0
+DEAL::1954 0
+DEAL::1955 0
+DEAL::1956 0
+DEAL::1957 0
+DEAL::1958 0
+DEAL::1959 0
+DEAL::1960 0
+DEAL::1961 0
+DEAL::1962 0
+DEAL::1963 0
+DEAL::1964 0
+DEAL::1965 0
+DEAL::1966 0
+DEAL::1967 0
+DEAL::1968 0
+DEAL::1969 0
+DEAL::1970 0
+DEAL::1971 0
+DEAL::1972 0
+DEAL::1973 0
+DEAL::1974 0
+DEAL::1975 0
+DEAL::1976 0
+DEAL::1977 0
+DEAL::1978 0
+DEAL::1979 0
+DEAL::1980 0
+DEAL::1981 0
+DEAL::1982 2
+DEAL::1983 2
+DEAL::1984 2
+DEAL::1985 2
+DEAL::1986 2
+DEAL::1987 2
+DEAL::1988 2
+DEAL::1989 2
+DEAL::1990 2
+DEAL::1991 2
+DEAL::1992 2
+DEAL::1993 2
+DEAL::1994 2
+DEAL::1995 2
+DEAL::1996 2
+DEAL::1997 2
+DEAL::1998 2
+DEAL::1999 2
+DEAL::2000 2
+DEAL::2001 2
+DEAL::2002 2
+DEAL::2003 2
+DEAL::2004 2
+DEAL::2005 2
+DEAL::2006 2
+DEAL::2007 2
+DEAL::2008 2
+DEAL::2009 2
+DEAL::2010 2
+DEAL::2011 2
+DEAL::2012 2
+DEAL::2013 2
+DEAL::2014 2
+DEAL::2015 2
+DEAL::2016 2
+DEAL::2017 2
+DEAL::2018 3
+DEAL::2019 3
+DEAL::2020 3
+DEAL::2021 3
+DEAL::2022 3
+DEAL::2023 3
+DEAL::2024 3
+DEAL::2025 3
+DEAL::2026 3
+DEAL::2027 3
+DEAL::2028 3
+DEAL::2029 3
+DEAL::2030 3
+DEAL::2031 3
+DEAL::2032 3
+DEAL::2033 3
+DEAL::2034 3
+DEAL::2035 3
+DEAL::2036 3
+DEAL::2037 3
+DEAL::2038 3
+DEAL::2039 3
+DEAL::2040 3
+DEAL::2041 3
+DEAL::2042 3
+DEAL::2043 3
+DEAL::2044 3
+DEAL::2045 3
+DEAL::2046 3
+DEAL::2047 3
+DEAL::2048 0
+DEAL::2049 0
+DEAL::2050 0
+DEAL::2051 0
+DEAL::2052 0
+DEAL::2053 0
+DEAL::2054 0
+DEAL::2055 0
+DEAL::2056 0
+DEAL::2057 0
+DEAL::2058 0
+DEAL::2059 0
+DEAL::2060 0
+DEAL::2061 0
+DEAL::2062 0
+DEAL::2063 2
+DEAL::2064 2
+DEAL::2065 2
+DEAL::2066 2
+DEAL::2067 2
+DEAL::2068 2
+DEAL::2069 2
+DEAL::2070 2
+DEAL::2071 2
+DEAL::2072 2
+DEAL::2073 2
+DEAL::2074 2
+DEAL::2075 2
+DEAL::2076 2
+DEAL::2077 2
+DEAL::2078 2
+DEAL::2079 2
+DEAL::2080 2
+DEAL::2081 2
+DEAL::2082 2
+DEAL::2083 2
+DEAL::2084 2
+DEAL::2085 2
+DEAL::2086 2
+DEAL::2087 2
+DEAL::2088 2
+DEAL::2089 2
+DEAL::2090 2
+DEAL::2091 2
+DEAL::2092 2
+DEAL::2093 4
+DEAL::2094 4
+DEAL::2095 4
+DEAL::2096 4
+DEAL::2097 4
+DEAL::2098 4
+DEAL::2099 4
+DEAL::2100 4
+DEAL::2101 4
+DEAL::2102 4
+DEAL::2103 4
+DEAL::2104 4
+DEAL::2105 4
+DEAL::2106 4
+DEAL::2107 4
+DEAL::2108 4
+DEAL::2109 4
+DEAL::2110 4
+DEAL::2111 4
+DEAL::2112 1
+DEAL::2113 1
+DEAL::2114 1
+DEAL::2115 1
+DEAL::2116 1
+DEAL::2117 1
+DEAL::2118 1
+DEAL::2119 1
+DEAL::2120 1
+DEAL::2121 1
+DEAL::2122 1
+DEAL::2123 1
+DEAL::2124 1
+DEAL::2125 1
+DEAL::2126 1
+DEAL::2127 1
+DEAL::2128 0
+DEAL::2129 0
+DEAL::2130 0
+DEAL::2131 0
+DEAL::2132 0
+DEAL::2133 0
+DEAL::2134 0
+DEAL::2135 0
+DEAL::2136 0
+DEAL::2137 0
+DEAL::2138 0
+DEAL::2139 0
+DEAL::2140 0
+DEAL::2141 0
+DEAL::2142 0
+DEAL::2143 0
+DEAL::2144 0
+DEAL::2145 0
+DEAL::2146 1
+DEAL::2147 1
+DEAL::2148 2
+DEAL::2149 2
+DEAL::2150 1
+DEAL::2151 1
+DEAL::2152 1
+DEAL::2153 1
+DEAL::2154 1
+DEAL::2155 1
+DEAL::2156 1
+DEAL::2157 1
+DEAL::2158 1
+DEAL::2159 1
+DEAL::2160 1
+DEAL::2161 1
+DEAL::2162 1
+DEAL::2163 1
+DEAL::2164 1
+DEAL::2165 1
+DEAL::2166 1
+DEAL::2167 1
+DEAL::2168 1
+DEAL::2169 1
+DEAL::2170 1
+DEAL::2171 1
+DEAL::2172 1
+DEAL::2173 1
+DEAL::2174 1
+DEAL::2175 1
+DEAL::2176 1
+DEAL::2177 1
+DEAL::2178 1
+DEAL::2179 1
+DEAL::2180 1
+DEAL::2181 1
+DEAL::2182 1
+DEAL::2183 1
+DEAL::2184 1
+DEAL::2185 1
+DEAL::2186 1
+DEAL::2187 1
+DEAL::2188 1
+DEAL::2189 1
+DEAL::2190 1
+DEAL::2191 1
+DEAL::2192 1
+DEAL::2193 1
+DEAL::2194 1
+DEAL::2195 1
+DEAL::2196 1
+DEAL::2197 1
+DEAL::2198 1
+DEAL::2199 1
+DEAL::2200 1
+DEAL::2201 1
+DEAL::2202 1
+DEAL::2203 1
+DEAL::2204 1
+DEAL::2205 1
+DEAL::2206 0
+DEAL::2207 0
+DEAL::2208 0
+DEAL::2209 0
+DEAL::2210 0
+DEAL::2211 0
+DEAL::2212 0
+DEAL::2213 0
+DEAL::2214 0
+DEAL::2215 0
+DEAL::2216 0
+DEAL::2217 0
+DEAL::2218 0
+DEAL::2219 0
+DEAL::2220 0
+DEAL::2221 0
+DEAL::2222 1
+DEAL::2223 1
+DEAL::2224 1
+DEAL::2225 1
+DEAL::2226 1
+DEAL::2227 1
+DEAL::2228 0
+DEAL::2229 0
+DEAL::2230 0
+DEAL::2231 0
+DEAL::2232 1
+DEAL::2233 1
+DEAL::2234 1
+DEAL::2235 1
+DEAL::2236 1
+DEAL::2237 0
+DEAL::2238 0
+DEAL::2239 0
+DEAL::2240 0
+DEAL::2241 0
+DEAL::2242 0
+DEAL::2243 0
+DEAL::2244 0
+DEAL::2245 0
+DEAL::2246 0
+DEAL::2247 0
+DEAL::2248 0
+DEAL::2249 0
+DEAL::2250 0
+DEAL::2251 0
+DEAL::2252 0
+DEAL::2253 2
+DEAL::2254 2
+DEAL::2255 2
+DEAL::2256 2
+DEAL::2257 2
+DEAL::2258 2
+DEAL::2259 2
+DEAL::2260 2
+DEAL::2261 2
+DEAL::2262 2
+DEAL::2263 2
+DEAL::2264 2
+DEAL::2265 2
+DEAL::2266 2
+DEAL::2267 2
+DEAL::2268 2
+DEAL::2269 2
+DEAL::2270 2
+DEAL::2271 2
+DEAL::2272 2
+DEAL::2273 2
+DEAL::2274 2
+DEAL::2275 2
+DEAL::2276 2
+DEAL::2277 2
+DEAL::2278 2
+DEAL::2279 2
+DEAL::2280 2
+DEAL::2281 2
+DEAL::2282 2
+DEAL::2283 2
+DEAL::2284 2
+DEAL::2285 2
+DEAL::2286 2
+DEAL::2287 2
+DEAL::2288 4
+DEAL::2289 4
+DEAL::2290 4
+DEAL::2291 4
+DEAL::2292 4
+DEAL::2293 4
+DEAL::2294 4
+DEAL::2295 4
+DEAL::2296 4
+DEAL::2297 4
+DEAL::2298 4
+DEAL::2299 4
+DEAL::2300 4
+DEAL::2301 4
+DEAL::2302 4
+DEAL::2303 4
+DEAL::2304 4
+DEAL::2305 4
+DEAL::2306 4
+DEAL::2307 1
+DEAL::2308 4
+DEAL::2309 4
+DEAL::2310 4
+DEAL::2311 4
+DEAL::2312 4
+DEAL::2313 3
+DEAL::2314 4
+DEAL::2315 4
+DEAL::2316 3
+DEAL::2317 4
+DEAL::2318 1
+DEAL::2319 4
+DEAL::2320 4
+DEAL::2321 3
+DEAL::2322 3
+DEAL::2323 3
+DEAL::2324 2
+DEAL::2325 2
+DEAL::2326 2
+DEAL::2327 2
+DEAL::2328 2
+DEAL::2329 2
+DEAL::2330 2
+DEAL::2331 2
+DEAL::2332 2
+DEAL::2333 2
+DEAL::2334 2
+DEAL::2335 2
+DEAL::2336 2
+DEAL::2337 2
+DEAL::2338 2
+DEAL::2339 2
+DEAL::2340 2
+DEAL::2341 2
+DEAL::2342 2
+DEAL::2343 2
+DEAL::2344 2
+DEAL::2345 4
+DEAL::2346 4
+DEAL::2347 4
+DEAL::2348 4
+DEAL::2349 4
+DEAL::2350 4
+DEAL::2351 4
+DEAL::2352 4
+DEAL::2353 4
+DEAL::2354 4
+DEAL::2355 4
+DEAL::2356 4
+DEAL::2357 4
+DEAL::2358 4
+DEAL::2359 4
+DEAL::2360 4
+DEAL::2361 4
+DEAL::2362 4
+DEAL::2363 4
+DEAL::2364 4
+DEAL::2365 4
+DEAL::2366 4
+DEAL::2367 4
+DEAL::2368 4
+DEAL::2369 4
+DEAL::2370 4
+DEAL::2371 4
+DEAL::2372 4
+DEAL::2373 4
+DEAL::2374 4
+DEAL::2375 4
+DEAL::2376 4
+DEAL::2377 4
+DEAL::2378 4
+DEAL::2379 4
+DEAL::2380 4
+DEAL::2381 3
+DEAL::2382 3
+DEAL::2383 3
+DEAL::2384 4
+DEAL::2385 3
+DEAL::2386 3
+DEAL::2387 4
+DEAL::2388 4
+DEAL::2389 4
+DEAL::2390 4
+DEAL::2391 4
+DEAL::2392 3
+DEAL::2393 3
+DEAL::2394 3
+DEAL::2395 3
+DEAL::2396 3
+DEAL::2397 4
+DEAL::2398 4
+DEAL::2399 4
+DEAL::2400 1
+DEAL::2401 1
+DEAL::2402 1
+DEAL::2403 1
+DEAL::2404 1
+DEAL::2405 1
+DEAL::2406 1
+DEAL::2407 1
+DEAL::2408 1
+DEAL::2409 1
+DEAL::2410 1
+DEAL::2411 1
+DEAL::2412 1
+DEAL::2413 1
+DEAL::2414 1
+DEAL::2415 1
+DEAL::2416 1
+DEAL::2417 1
+DEAL::2418 1
+DEAL::2419 1
+DEAL::2420 1
+DEAL::2421 1
+DEAL::2422 1
+DEAL::2423 1
+DEAL::2424 1
+DEAL::2425 1
+DEAL::2426 1
+DEAL::2427 1
+DEAL::2428 1
+DEAL::2429 1
+DEAL::2430 1
+DEAL::2431 1
+DEAL::2432 1
+DEAL::2433 1
+DEAL::2434 1
+DEAL::2435 1
+DEAL::2436 1
+DEAL::2437 4
+DEAL::2438 4
+DEAL::2439 4
+DEAL::2440 4
+DEAL::2441 4
+DEAL::2442 4
+DEAL::2443 4
+DEAL::2444 4
+DEAL::2445 4
+DEAL::2446 4
+DEAL::2447 4
+DEAL::2448 4
+DEAL::2449 4
+DEAL::2450 4
+DEAL::2451 4
+DEAL::2452 4
+DEAL::2453 4
+DEAL::2454 4
+DEAL::2455 4
+DEAL::2456 3
+DEAL::2457 3
+DEAL::2458 3
+DEAL::2459 3
+DEAL::2460 3
+DEAL::2461 3
+DEAL::2462 4
+DEAL::2463 4
+DEAL::2464 4
+DEAL::2465 4
+DEAL::2466 4
+DEAL::2467 3
+DEAL::2468 3
+DEAL::2469 3
+DEAL::2470 3
+DEAL::2471 3
+DEAL::2472 3
+DEAL::2473 3
+DEAL::2474 3
+DEAL::2475 3
+DEAL::2476 3
+DEAL::2477 3
+DEAL::2478 3
+DEAL::2479 3
+DEAL::2480 3
+DEAL::2481 3
+DEAL::2482 3
+DEAL::2483 3
+DEAL::2484 3
+DEAL::2485 3
+DEAL::2486 3
+DEAL::2487 3
+DEAL::2488 3
+DEAL::2489 3
+DEAL::2490 3
+DEAL::2491 3
+DEAL::2492 3
+DEAL::2493 3
+DEAL::2494 3
+DEAL::2495 3
+DEAL::2496 3
+DEAL::2497 3
+DEAL::2498 3
+DEAL::2499 3
+DEAL::2500 3
+DEAL::2501 3
+DEAL::2502 3
+DEAL::2503 3
+DEAL::2504 3
+DEAL::2505 3
+DEAL::2506 3
+DEAL::2507 3
+DEAL::2508 3
+DEAL::2509 0
+DEAL::2510 0
+DEAL::2511 0
+DEAL::2512 0
+DEAL::2513 0
+DEAL::2514 0
+DEAL::2515 0
+DEAL::2516 0
+DEAL::2517 0
+DEAL::2518 0
+DEAL::2519 0
+DEAL::2520 0
+DEAL::2521 0
+DEAL::2522 0
+DEAL::2523 0
+DEAL::2524 0
+DEAL::2525 0
+DEAL::2526 0
+DEAL::2527 0
+DEAL::2528 4
+DEAL::2529 4
+DEAL::2530 4
+DEAL::2531 4
+DEAL::2532 4
+DEAL::2533 4
+DEAL::2534 4
+DEAL::2535 4
+DEAL::2536 4
+DEAL::2537 4
+DEAL::2538 4
+DEAL::2539 4
+DEAL::2540 4
+DEAL::2541 4
+DEAL::2542 4
+DEAL::2543 4
+DEAL::2544 4
+DEAL::2545 4
+DEAL::2546 4
+DEAL::2547 2
+DEAL::2548 4
+DEAL::2549 4
+DEAL::2550 4
+DEAL::2551 4
+DEAL::2552 4
+DEAL::2553 4
+DEAL::2554 4
+DEAL::2555 4
+DEAL::2556 2
+DEAL::2557 4
+DEAL::2558 4
+DEAL::2559 4
+DEAL::2560 4
+DEAL::2561 4
+DEAL::2562 4
+DEAL::2563 4
+DEAL::2564 4
+DEAL::2565 4
+DEAL::2566 4
+DEAL::2567 4
+DEAL::2568 4
+DEAL::2569 4
+DEAL::2570 4
+DEAL::2571 4
+DEAL::2572 4
+DEAL::2573 4
+DEAL::2574 4
+DEAL::2575 4
+DEAL::2576 4
+DEAL::2577 4
+DEAL::2578 4
+DEAL::2579 4
+DEAL::2580 4
+DEAL::2581 4
+DEAL::2582 4
+DEAL::2583 1
+DEAL::2584 4
+DEAL::2585 4
+DEAL::2586 4
+DEAL::2587 1
+DEAL::2588 1
+DEAL::2589 1
+DEAL::2590 1
+DEAL::2591 1
+DEAL::2592 1
+DEAL::2593 1
+DEAL::2594 1
+DEAL::2595 1
+DEAL::2596 1
+DEAL::2597 1
+DEAL::2598 1
+DEAL::2599 1
+DEAL::2600 1
+DEAL::2601 1
+DEAL::2602 1
+DEAL::2603 1
+DEAL::2604 1
+DEAL::2605 1
+DEAL::2606 1
+DEAL::2607 1
+DEAL::2608 1
+DEAL::2609 1
+DEAL::2610 1
+DEAL::2611 1
+DEAL::2612 1
+DEAL::2613 1
+DEAL::2614 1
+DEAL::2615 1
+DEAL::2616 1
+DEAL::2617 1
+DEAL::2618 1
+DEAL::2619 1
+DEAL::2620 1
+DEAL::2621 1
+DEAL::2622 1
+DEAL::2623 1
+DEAL::2624 1
+DEAL::2625 1
+DEAL::2626 4
+DEAL::2627 4
+DEAL::2628 4
+DEAL::2629 4
+DEAL::2630 4
+DEAL::2631 4
+DEAL::2632 4
+DEAL::2633 4
+DEAL::2634 4
+DEAL::2635 4
+DEAL::2636 4
+DEAL::2637 4
+DEAL::2638 4
+DEAL::2639 4
+DEAL::2640 4
+DEAL::2641 4
+DEAL::2642 4
+DEAL::2643 4
+DEAL::2644 4
+DEAL::2645 4
+DEAL::2646 4
+DEAL::2647 1
+DEAL::2648 1
+DEAL::2649 1
+DEAL::2650 1
+DEAL::2651 1
+DEAL::2652 1
+DEAL::2653 1
+DEAL::2654 1
+DEAL::2655 1
+DEAL::2656 1
+DEAL::2657 1
+DEAL::2658 1
+DEAL::2659 1
+DEAL::2660 1
+DEAL::2661 1
+DEAL::2662 1
+DEAL::2663 1
+DEAL::2664 1
+DEAL::2665 1
+DEAL::2666 0
+DEAL::2667 0
+DEAL::2668 0
+DEAL::2669 0
+DEAL::2670 0
+DEAL::2671 0
+DEAL::2672 0
+DEAL::2673 0
+DEAL::2674 0
+DEAL::2675 0
+DEAL::2676 0
+DEAL::2677 0
+DEAL::2678 0
+DEAL::2679 0
+DEAL::2680 0
+DEAL::2681 0
+DEAL::2682 1
+DEAL::2683 1
+DEAL::2684 1
+DEAL::2685 1
+DEAL::2686 1
+DEAL::2687 1
+DEAL::2688 1
+DEAL::2689 1
+DEAL::2690 1
+DEAL::2691 1
+DEAL::2692 1
+DEAL::2693 1
+DEAL::2694 1
+DEAL::2695 1
+DEAL::2696 1
+DEAL::2697 1
+DEAL::2698 1
+DEAL::2699 1
+DEAL::2700 1
+DEAL::2701 1
+DEAL::2702 1
+DEAL::2703 1
+DEAL::2704 1
+DEAL::2705 1
+DEAL::2706 1
+DEAL::2707 1
+DEAL::2708 1
+DEAL::2709 1
+DEAL::2710 1
+DEAL::2711 1
+DEAL::2712 1
+DEAL::2713 1
+DEAL::2714 1
+DEAL::2715 1
+DEAL::2716 1
+DEAL::2717 1
+DEAL::2718 1
+DEAL::2719 1
+DEAL::2720 1
+DEAL::2721 1
+DEAL::2722 1
+DEAL::2723 1
+DEAL::2724 1
+DEAL::2725 1
+DEAL::2726 1
+DEAL::2727 0
+DEAL::2728 0
+DEAL::2729 0
+DEAL::2730 0
+DEAL::2731 0
+DEAL::2732 0
+DEAL::2733 0
+DEAL::2734 0
+DEAL::2735 0
+DEAL::2736 0
+DEAL::2737 0
+DEAL::2738 0
+DEAL::2739 0
+DEAL::2740 0
+DEAL::2741 0
+DEAL::2742 0
+DEAL::2743 0
+DEAL::2744 0
+DEAL::2745 0
+DEAL::2746 0
+DEAL::2747 0
+DEAL::2748 0
+DEAL::2749 0
+DEAL::2750 0
+DEAL::2751 0
+DEAL::2752 0
+DEAL::2753 0
+DEAL::2754 0
+DEAL::2755 0
+DEAL::2756 0
+DEAL::2757 0
+DEAL::2758 0
+DEAL::2759 0
+DEAL::2760 0
+DEAL::2761 0
+DEAL::2762 0
+DEAL::2763 0
+DEAL::2764 0
+DEAL::2765 0
+DEAL::2766 0
+DEAL::2767 0
+DEAL::2768 0
+DEAL::2769 0
+DEAL::2770 0
+DEAL::2771 0
+DEAL::2772 0
+DEAL::2773 0
+DEAL::2774 0
+DEAL::2775 0
+DEAL::2776 0
+DEAL::2777 0
+DEAL::2778 0
+DEAL::2779 0
+DEAL::2780 2
+DEAL::2781 2
+DEAL::2782 2
+DEAL::2783 2
+DEAL::2784 2
+DEAL::2785 2
+DEAL::2786 2
+DEAL::2787 2
+DEAL::2788 2
+DEAL::2789 2
+DEAL::2790 2
+DEAL::2791 2
+DEAL::2792 2
+DEAL::2793 2
+DEAL::2794 2
+DEAL::2795 2
+DEAL::2796 4
+DEAL::2797 4
+DEAL::2798 4
+DEAL::2799 4
+DEAL::2800 4
+DEAL::2801 4
+DEAL::2802 4
+DEAL::2803 4
+DEAL::2804 4
+DEAL::2805 4
+DEAL::2806 4
+DEAL::2807 4
+DEAL::2808 4
+DEAL::2809 4
+DEAL::2810 4
+DEAL::2811 4
+DEAL::2812 3
+DEAL::2813 3
+DEAL::2814 3
+DEAL::2815 3
+DEAL::2816 3
+DEAL::2817 3
+DEAL::2818 3
+DEAL::2819 3
+DEAL::2820 3
+DEAL::2821 3
+DEAL::2822 3
+DEAL::2823 3
+DEAL::2824 3
+DEAL::2825 3
+DEAL::2826 3
+DEAL::2827 3
+DEAL::2828 3
+DEAL::2829 3
+DEAL::2830 3
+DEAL::2831 3
+DEAL::2832 3
+DEAL::2833 3
+DEAL::2834 3
+DEAL::2835 3
+DEAL::2836 3
+DEAL::2837 3
+DEAL::2838 3
+DEAL::2839 3
+DEAL::2840 4
+DEAL::2841 4
+DEAL::2842 4
+DEAL::2843 4
+DEAL::2844 4
+DEAL::2845 4
+DEAL::2846 4
+DEAL::2847 4
+DEAL::2848 4
+DEAL::2849 4
+DEAL::2850 4
+DEAL::2851 4
+DEAL::2852 4
+DEAL::2853 4
+DEAL::2854 4
+DEAL::2855 4
+DEAL::2856 4
+DEAL::2857 4
+DEAL::2858 4
+DEAL::2859 0
+DEAL::2860 0
+DEAL::2861 0
+DEAL::2862 0
+DEAL::2863 0
+DEAL::2864 0
+DEAL::2865 0
+DEAL::2866 0
+DEAL::2867 0
+DEAL::2868 0
+DEAL::2869 0
+DEAL::2870 0
+DEAL::2871 0
+DEAL::2872 0
+DEAL::2873 0
+DEAL::2874 0
+DEAL::2875 0
+DEAL::2876 0
+DEAL::2877 0
+DEAL::2878 0
+DEAL::2879 0
+DEAL::2880 0
+DEAL::2881 0
+DEAL::2882 0
+DEAL::2883 0
+DEAL::2884 0
+DEAL::2885 0
+DEAL::2886 0
+DEAL::2887 0
+DEAL::2888 0
+DEAL::2889 0
+DEAL::2890 0
+DEAL::2891 0
+DEAL::2892 0
+DEAL::2893 0
+DEAL::2894 0
+DEAL::2895 1
+DEAL::2896 1
+DEAL::2897 1
+DEAL::2898 1
+DEAL::2899 1
+DEAL::2900 1
+DEAL::2901 1
+DEAL::2902 1
+DEAL::2903 1
+DEAL::2904 1
+DEAL::2905 1
+DEAL::2906 1
+DEAL::2907 1
+DEAL::2908 1
+DEAL::2909 1
+DEAL::2910 1
+DEAL::2911 1
+DEAL::2912 1
+DEAL::2913 1
+DEAL::2914 1
+DEAL::2915 1
+DEAL::2916 1
+DEAL::2917 1
+DEAL::2918 1
+DEAL::2919 1
+DEAL::2920 1
+DEAL::2921 1
+DEAL::2922 1
+DEAL::2923 1
+DEAL::2924 1
+DEAL::2925 1
+DEAL::2926 1
+DEAL::2927 1
+DEAL::2928 4
+DEAL::2929 4
+DEAL::2930 4
+DEAL::2931 4
+DEAL::2932 4
+DEAL::2933 4
+DEAL::2934 4
+DEAL::2935 4
+DEAL::2936 4
+DEAL::2937 4
+DEAL::2938 4
+DEAL::2939 4
+DEAL::2940 4
+DEAL::2941 4
+DEAL::2942 4
+DEAL::2943 4
+DEAL::2944 4
+DEAL::2945 4
+DEAL::2946 4
+DEAL::2947 4
+DEAL::2948 4
+DEAL::2949 4
+DEAL::2950 4
+DEAL::2951 4
+DEAL::2952 4
+DEAL::2953 4
+DEAL::2954 4
+DEAL::2955 4
+DEAL::2956 4
+DEAL::2957 4
+DEAL::2958 4
+DEAL::2959 4
+DEAL::2960 4
+DEAL::2961 4
+DEAL::2962 4
+DEAL::2963 4
+DEAL::2964 4
+DEAL::2965 4
+DEAL::2966 4
+DEAL::2967 4
+DEAL::2968 0
+DEAL::2969 0
+DEAL::2970 0
+DEAL::2971 0
+DEAL::2972 0
+DEAL::2973 0
+DEAL::2974 0
+DEAL::2975 0
+DEAL::2976 0
+DEAL::2977 0
+DEAL::2978 0
+DEAL::2979 0
+DEAL::2980 0
+DEAL::2981 0
+DEAL::2982 0
+DEAL::2983 0
+DEAL::2984 3
+DEAL::2985 3
+DEAL::2986 3
+DEAL::2987 3
+DEAL::2988 3
+DEAL::2989 3
+DEAL::2990 3
+DEAL::2991 3
+DEAL::2992 4
+DEAL::2993 4
+DEAL::2994 4
+DEAL::2995 4
+DEAL::2996 4
+DEAL::2997 4
+DEAL::2998 4
+DEAL::2999 4
+DEAL::3000 4
+DEAL::3001 2
+DEAL::3002 2
+DEAL::3003 2
+DEAL::3004 2
+DEAL::3005 2
+DEAL::3006 2
+DEAL::3007 2
+DEAL::3008 2
+DEAL::3009 2
+DEAL::3010 2
+DEAL::3011 2
+DEAL::3012 2
+DEAL::3013 2
+DEAL::3014 2
+DEAL::3015 2
+DEAL::3016 2
+DEAL::3017 2
+DEAL::3018 2
+DEAL::3019 2
+DEAL::3020 2
+DEAL::3021 3
+DEAL::3022 3
+DEAL::3023 3
+DEAL::3024 3
+DEAL::3025 3
+DEAL::3026 3
+DEAL::3027 3
+DEAL::3028 3
+DEAL::3029 3
+DEAL::3030 3
+DEAL::3031 3
+DEAL::3032 3
+DEAL::3033 3
+DEAL::3034 3
+DEAL::3035 3
+DEAL::3036 3
+DEAL::3037 3
+DEAL::3038 3
+DEAL::3039 3
+DEAL::3040 3
+DEAL::3041 3
+DEAL::3042 3
+DEAL::3043 3
+DEAL::3044 3
+DEAL::3045 3
+DEAL::3046 0
+DEAL::3047 0
+DEAL::3048 0
+DEAL::3049 0
+DEAL::3050 0
+DEAL::3051 0
+DEAL::3052 0
+DEAL::3053 0
+DEAL::3054 0
+DEAL::3055 0
+DEAL::3056 0
+DEAL::3057 0
+DEAL::3058 0
+DEAL::3059 0
+DEAL::3060 0
+DEAL::3061 0
+DEAL::3062 0
+DEAL::3063 0
+DEAL::3064 0
+DEAL::3065 0
+DEAL::3066 0
+DEAL::3067 2
+DEAL::3068 2
+DEAL::3069 2
+DEAL::3070 2
+DEAL::3071 2
+DEAL::3072 2
+DEAL::3073 2
+DEAL::3074 2
+DEAL::3075 1
+DEAL::3076 1
+DEAL::3077 1
+DEAL::3078 1
+DEAL::3079 1
+DEAL::3080 1
+DEAL::3081 1
+DEAL::3082 1
+DEAL::3083 1
+DEAL::3084 1
+DEAL::3085 1
+DEAL::3086 1
+DEAL::3087 1
+DEAL::3088 1
+DEAL::3089 1
+DEAL::3090 1
+DEAL::3091 1
+DEAL::3092 1
+DEAL::3093 1
+DEAL::3094 3
+DEAL::3095 3
+DEAL::3096 3
+DEAL::3097 3
+DEAL::3098 3
+DEAL::3099 3
+DEAL::3100 3
+DEAL::3101 3
+DEAL::3102 3
+DEAL::3103 3
+DEAL::3104 3
+DEAL::3105 3
+DEAL::3106 3
+DEAL::3107 3
+DEAL::3108 3
+DEAL::3109 3
+DEAL::3110 3
+DEAL::3111 3
+DEAL::3112 3
+DEAL::3113 3
+DEAL::3114 4
+DEAL::3115 4
+DEAL::3116 4
+DEAL::3117 4
+DEAL::3118 4
+DEAL::3119 4
+DEAL::3120 4
+DEAL::3121 4
+DEAL::3122 4
+DEAL::3123 4
+DEAL::3124 4
+DEAL::3125 4
+DEAL::3126 4
+DEAL::3127 4
+DEAL::3128 4
+DEAL::3129 4
+DEAL::3130 4
+DEAL::3131 4
+DEAL::3132 2
+DEAL::3133 2
+DEAL::3134 2
+DEAL::3135 2
+DEAL::3136 2
+DEAL::3137 2
+DEAL::3138 2
+DEAL::3139 2
+DEAL::3140 2
+DEAL::3141 2
+DEAL::3142 2
+DEAL::3143 2
+DEAL::3144 2
+DEAL::3145 2
+DEAL::3146 2
+DEAL::3147 2
+DEAL::3148 2
+DEAL::3149 3
+DEAL::3150 3
+DEAL::3151 3
+DEAL::3152 3
+DEAL::3153 3
+DEAL::3154 3
+DEAL::3155 3
+DEAL::3156 3
+DEAL::3157 3
+DEAL::3158 3
+DEAL::3159 3
+DEAL::3160 3
+DEAL::3161 3
+DEAL::3162 3
+DEAL::3163 3
+DEAL::3164 3
+DEAL::3165 3
+DEAL::3166 3
+DEAL::3167 3
+DEAL::3168 3
+DEAL::3169 3
+DEAL::3170 0
+DEAL::3171 3
+DEAL::3172 3
+DEAL::3173 3
+DEAL::3174 3
+DEAL::3175 3
+DEAL::3176 3
+DEAL::3177 3
+DEAL::3178 3
+DEAL::3179 0
+DEAL::3180 3
+DEAL::3181 3
+DEAL::3182 3
+DEAL::3183 3
+DEAL::3184 3
+DEAL::3185 3
+DEAL::3186 3
+DEAL::3187 3
+DEAL::3188 3
+DEAL::3189 2
+DEAL::3190 2
+DEAL::3191 2
+DEAL::3192 2
+DEAL::3193 2
+DEAL::3194 2
+DEAL::3195 2
+DEAL::3196 2
+DEAL::3197 2
+DEAL::3198 2
+DEAL::3199 2
+DEAL::3200 2
+DEAL::3201 2
+DEAL::3202 2
+DEAL::3203 2
+DEAL::3204 2
+DEAL::3205 2
+DEAL::3206 2
+DEAL::3207 2
+DEAL::3208 1
+DEAL::3209 1
+DEAL::3210 1
+DEAL::3211 1
+DEAL::3212 1
+DEAL::3213 1
+DEAL::3214 1
+DEAL::3215 1
+DEAL::3216 1
+DEAL::3217 1
+DEAL::3218 1
+DEAL::3219 1
+DEAL::3220 1
+DEAL::3221 1
+DEAL::3222 1
+DEAL::3223 1
+DEAL::3224 1
+DEAL::3225 1
+DEAL::3226 0
+DEAL::3227 0
+DEAL::3228 0
+DEAL::3229 0
+DEAL::3230 0
+DEAL::3231 0
+DEAL::3232 0
+DEAL::3233 0
+DEAL::3234 0
+DEAL::3235 0
+DEAL::3236 0
+DEAL::3237 0
+DEAL::3238 0
+DEAL::3239 0
+DEAL::3240 0
+DEAL::3241 0
+DEAL::3242 0
+DEAL::3243 0
+DEAL::3244 4
+DEAL::3245 4
+DEAL::3246 4
+DEAL::3247 4
+DEAL::3248 4
+DEAL::3249 4
+DEAL::3250 4
+DEAL::3251 4
+DEAL::3252 4
+DEAL::3253 4
+DEAL::3254 4
+DEAL::3255 4
+DEAL::3256 4
+DEAL::3257 4
+DEAL::3258 4
+DEAL::3259 4
+DEAL::3260 4
+DEAL::3261 4
+DEAL::3262 4
+DEAL::3263 3
+DEAL::3264 3
+DEAL::3265 3
+DEAL::3266 3
+DEAL::3267 3
+DEAL::3268 3
+DEAL::3269 3
+DEAL::3270 3
+DEAL::3271 3
+DEAL::3272 3
+DEAL::3273 3
+DEAL::3274 3
+DEAL::3275 3
+DEAL::3276 3
+DEAL::3277 3
+DEAL::3278 3
+DEAL::3279 3
+DEAL::3280 3
+DEAL::3281 3
+DEAL::3282 3
+DEAL::3283 3
+DEAL::3284 2
+DEAL::3285 2
+DEAL::3286 2
+DEAL::3287 2
+DEAL::3288 2
+DEAL::3289 2
+DEAL::3290 2
+DEAL::3291 2
+DEAL::3292 2
+DEAL::3293 2
+DEAL::3294 2
+DEAL::3295 2
+DEAL::3296 2
+DEAL::3297 2
+DEAL::3298 2
+DEAL::3299 2
+DEAL::3300 2
+DEAL::3301 2
+DEAL::3302 3
+DEAL::3303 3
+DEAL::3304 3
+DEAL::3305 3
+DEAL::3306 3
+DEAL::3307 3
+DEAL::3308 3
+DEAL::3309 3
+DEAL::3310 3
+DEAL::3311 3
+DEAL::3312 3
+DEAL::3313 3
+DEAL::3314 3
+DEAL::3315 3
+DEAL::3316 3
+DEAL::3317 3
+DEAL::3318 3
+DEAL::3319 3
+DEAL::3320 3
+DEAL::3321 3
+DEAL::3322 3
+DEAL::3323 3
+DEAL::3324 3
+DEAL::3325 3
+DEAL::3326 3
+DEAL::3327 3
+DEAL::3328 3
+DEAL::3329 3
+DEAL::3330 3
+DEAL::3331 3
+DEAL::3332 3
+DEAL::3333 3
+DEAL::3334 3
+DEAL::3335 3
+DEAL::3336 3
+DEAL::3337 3
+DEAL::3338 0
+DEAL::3339 0
+DEAL::3340 0
+DEAL::3341 0
+DEAL::3342 0
+DEAL::3343 0
+DEAL::3344 0
+DEAL::3345 0
+DEAL::3346 0
+DEAL::3347 0
+DEAL::3348 0
+DEAL::3349 0
+DEAL::3350 0
+DEAL::3351 0
+DEAL::3352 0
+DEAL::3353 0
+DEAL::3354 0
+DEAL::3355 0
+DEAL::3356 4
+DEAL::3357 4
+DEAL::3358 4
+DEAL::3359 4
+DEAL::3360 4
+DEAL::3361 4
+DEAL::3362 4
+DEAL::3363 4
+DEAL::3364 4
+DEAL::3365 4
+DEAL::3366 4
+DEAL::3367 4
+DEAL::3368 4
+DEAL::3369 4
+DEAL::3370 4
+DEAL::3371 4
+DEAL::3372 4
+DEAL::3373 4
+DEAL::3374 1
+DEAL::3375 1
+DEAL::3376 1
+DEAL::3377 1
+DEAL::3378 1
+DEAL::3379 1
+DEAL::3380 1
+DEAL::3381 1
+DEAL::3382 1
+DEAL::3383 1
+DEAL::3384 1
+DEAL::3385 1
+DEAL::3386 1
+DEAL::3387 1
+DEAL::3388 1
+DEAL::3389 1
+DEAL::3390 1
+DEAL::3391 1
+DEAL::3392 1
+DEAL::3393 1
+DEAL::3394 1
+DEAL::3395 2
+DEAL::3396 2
+DEAL::3397 2
+DEAL::3398 2
+DEAL::3399 2
+DEAL::3400 2
+DEAL::3401 2
+DEAL::3402 2
+DEAL::3403 2
+DEAL::3404 2
+DEAL::3405 2
+DEAL::3406 2
+DEAL::3407 2
+DEAL::3408 2
+DEAL::3409 2
+DEAL::3410 2
+DEAL::3411 2
+DEAL::3412 2
+DEAL::3413 2
+DEAL::3414 2
+DEAL::3415 2
+DEAL::3416 2
+DEAL::3417 2
+DEAL::3418 2
+DEAL::3419 2
+DEAL::3420 2
+DEAL::3421 2
+DEAL::3422 2
+DEAL::3423 2
+DEAL::3424 2
+DEAL::3425 2
+DEAL::3426 2
+DEAL::3427 2
+DEAL::3428 2
+DEAL::3429 2
+DEAL::3430 2
+DEAL::3431 2
+DEAL::3432 2
+DEAL::3433 2
+DEAL::3434 2
+DEAL::3435 2
+DEAL::3436 2
+DEAL::3437 2
+DEAL::3438 2
+DEAL::3439 2
+DEAL::3440 2
+DEAL::3441 2
+DEAL::3442 2
+DEAL::3443 2
+DEAL::3444 2
+DEAL::3445 2
+DEAL::3446 2
+DEAL::3447 2
+DEAL::3448 3
+DEAL::3449 3
+DEAL::3450 3
+DEAL::3451 3
+DEAL::3452 3
+DEAL::3453 3
+DEAL::3454 3
+DEAL::3455 0
+DEAL::3456 0
+DEAL::3457 3
+DEAL::3458 0
+DEAL::3459 3
+DEAL::3460 3
+DEAL::3461 3
+DEAL::3462 3
+DEAL::3463 3
+DEAL::3464 3
+DEAL::3465 3
+DEAL::3466 3
+DEAL::3467 0
+DEAL::3468 3
+DEAL::3469 3
+DEAL::3470 3
+DEAL::3471 3
+DEAL::3472 3
+DEAL::3473 3
+DEAL::3474 3
+DEAL::3475 3
+DEAL::3476 3
+DEAL::3477 3
+DEAL::3478 3
+DEAL::3479 3
+DEAL::3480 3
+DEAL::3481 2
+DEAL::3482 2
+DEAL::3483 2
+DEAL::3484 2
+DEAL::3485 2
+DEAL::3486 2
+DEAL::3487 2
+DEAL::3488 2
+DEAL::3489 2
+DEAL::3490 2
+DEAL::3491 2
+DEAL::3492 2
+DEAL::3493 2
+DEAL::3494 2
+DEAL::3495 2
+DEAL::3496 2
+DEAL::3497 2
+DEAL::3498 2
+DEAL::3499 2
+DEAL::3500 2
+DEAL::3501 2
+DEAL::3502 1
+DEAL::3503 1
+DEAL::3504 1
+DEAL::3505 1
+DEAL::3506 1
+DEAL::3507 1
+DEAL::3508 1
+DEAL::3509 1
+DEAL::3510 1
+DEAL::3511 1
+DEAL::3512 1
+DEAL::3513 1
+DEAL::3514 1
+DEAL::3515 1
+DEAL::3516 1
+DEAL::3517 1
+DEAL::3518 1
+DEAL::3519 1
+DEAL::3520 1
+DEAL::3521 1
+DEAL::3522 1
+DEAL::3523 1
+DEAL::3524 1
+DEAL::3525 1
+DEAL::3526 1
+DEAL::3527 1
+DEAL::3528 1
+DEAL::3529 1
+DEAL::3530 1
+DEAL::3531 1
+DEAL::3532 1
+DEAL::3533 1
+DEAL::3534 1
+DEAL::3535 1
+DEAL::3536 1
+DEAL::3537 1
+DEAL::3538 1
+DEAL::3539 1
+DEAL::3540 1
+DEAL::3541 1
+DEAL::3542 1
+DEAL::3543 1
+DEAL::3544 1
+DEAL::3545 1
+DEAL::3546 1
+DEAL::3547 1
+DEAL::3548 1
+DEAL::3549 1
+DEAL::3550 1
+DEAL::3551 1
+DEAL::3552 1
+DEAL::3553 1
+DEAL::3554 1
+DEAL::3555 1
+DEAL::3556 1
+DEAL::3557 1
+DEAL::3558 1
+DEAL::3559 1
+DEAL::3560 0
+DEAL::3561 1
+DEAL::3562 1
+DEAL::3563 1
+DEAL::3564 1
+DEAL::3565 1
+DEAL::3566 1
+DEAL::3567 1
+DEAL::3568 0
+DEAL::3569 1
+DEAL::3570 0
+DEAL::3571 1
+DEAL::3572 1
+DEAL::3573 1
+DEAL::3574 0
+DEAL::3575 0
+DEAL::3576 0
+DEAL::3577 0
+DEAL::3578 0
+DEAL::3579 0
+DEAL::3580 0
+DEAL::3581 0
+DEAL::3582 0
+DEAL::3583 0
+DEAL::3584 0
+DEAL::3585 0
+DEAL::3586 0
+DEAL::3587 0
+DEAL::3588 0
+DEAL::3589 0
+DEAL::3590 0
+DEAL::3591 0
+DEAL::3592 0
+DEAL::3593 0
+DEAL::3594 0
+DEAL::3595 0
+DEAL::3596 0
+DEAL::3597 0
+DEAL::3598 0
+DEAL::3599 0
+DEAL::3600 0
+DEAL::3601 0
+DEAL::3602 0
+DEAL::3603 0
+DEAL::3604 0
+DEAL::3605 0
+DEAL::3606 0
+DEAL::3607 0
+DEAL::3608 0
+DEAL::3609 0
+DEAL::3610 0
+DEAL::3611 0
+DEAL::3612 0
+DEAL::3613 0
+DEAL::3614 0
+DEAL::3615 0
+DEAL::3616 3
+DEAL::3617 3
+DEAL::3618 3
+DEAL::3619 3
+DEAL::3620 3
+DEAL::3621 3
+DEAL::3622 3
+DEAL::3623 3
+DEAL::3624 3
+DEAL::3625 3
+DEAL::3626 3
+DEAL::3627 3
+DEAL::3628 3
+DEAL::3629 3
+DEAL::3630 3
+DEAL::3631 3
+DEAL::3632 3
+DEAL::3633 3
+DEAL::3634 3
+DEAL::3635 3
+DEAL::3636 4
+DEAL::3637 4
+DEAL::3638 4
+DEAL::3639 4
+DEAL::3640 4
+DEAL::3641 4
+DEAL::3642 4
+DEAL::3643 4
+DEAL::3644 4
+DEAL::3645 4
+DEAL::3646 4
+DEAL::3647 4
+DEAL::3648 4
+DEAL::3649 4
+DEAL::3650 4
+DEAL::3651 4
+DEAL::3652 4
+DEAL::3653 4
+DEAL::3654 4
+DEAL::3655 2
+DEAL::3656 2
+DEAL::3657 2
+DEAL::3658 2
+DEAL::3659 2
+DEAL::3660 2
+DEAL::3661 2
+DEAL::3662 2
+DEAL::3663 2
+DEAL::3664 2
+DEAL::3665 2
+DEAL::3666 2
+DEAL::3667 2
+DEAL::3668 2
+DEAL::3669 2
+DEAL::3670 2
+DEAL::3671 2
+DEAL::3672 2
+DEAL::3673 2
+DEAL::3674 2
+DEAL::3675 3
+DEAL::3676 3
+DEAL::3677 3
+DEAL::3678 3
+DEAL::3679 3
+DEAL::3680 3
+DEAL::3681 3
+DEAL::3682 3
+DEAL::3683 3
+DEAL::3684 3
+DEAL::3685 3
+DEAL::3686 3
+DEAL::3687 3
+DEAL::3688 3
+DEAL::3689 3
+DEAL::3690 3
+DEAL::3691 3
+DEAL::3692 3
+DEAL::3693 3
+DEAL::3694 3
+DEAL::3695 3
+DEAL::3696 3
+DEAL::3697 3
+DEAL::3698 3
+DEAL::3699 3
+DEAL::3700 3
+DEAL::3701 3
+DEAL::3702 3
+DEAL::3703 3
+DEAL::3704 3
+DEAL::3705 3
+DEAL::3706 3
+DEAL::3707 3
+DEAL::3708 3
+DEAL::3709 3
+DEAL::3710 3
+DEAL::3711 3
+DEAL::3712 0
+DEAL::3713 0
+DEAL::3714 0
+DEAL::3715 0
+DEAL::3716 0
+DEAL::3717 0
+DEAL::3718 0
+DEAL::3719 0
+DEAL::3720 0
+DEAL::3721 0
+DEAL::3722 0
+DEAL::3723 0
+DEAL::3724 0
+DEAL::3725 0
+DEAL::3726 0
+DEAL::3727 0
+DEAL::3728 0
+DEAL::3729 0
+DEAL::3730 0
+DEAL::3731 3
+DEAL::3732 3
+DEAL::3733 3
+DEAL::3734 3
+DEAL::3735 3
+DEAL::3736 3
+DEAL::3737 3
+DEAL::3738 3
+DEAL::3739 3
+DEAL::3740 3
+DEAL::3741 3
+DEAL::3742 3
+DEAL::3743 3
+DEAL::3744 3
+DEAL::3745 3
+DEAL::3746 3
+DEAL::3747 3
+DEAL::3748 3
+DEAL::3749 2
+DEAL::3750 2
+DEAL::3751 2
+DEAL::3752 2
+DEAL::3753 2
+DEAL::3754 2
+DEAL::3755 2
+DEAL::3756 2
+DEAL::3757 2
+DEAL::3758 2
+DEAL::3759 2
+DEAL::3760 2
+DEAL::3761 2
+DEAL::3762 2
+DEAL::3763 2
+DEAL::3764 2
+DEAL::3765 2
+DEAL::3766 2
+DEAL::3767 2
+DEAL::3768 1
+DEAL::3769 1
+DEAL::3770 1
+DEAL::3771 1
+DEAL::3772 1
+DEAL::3773 1
+DEAL::3774 1
+DEAL::3775 1
+DEAL::3776 1
+DEAL::3777 1
+DEAL::3778 1
+DEAL::3779 1
+DEAL::3780 1
+DEAL::3781 1
+DEAL::3782 1
+DEAL::3783 1
+DEAL::3784 1
+DEAL::3785 1
+DEAL::3786 0
+DEAL::3787 0
+DEAL::3788 0
+DEAL::3789 0
+DEAL::3790 0
+DEAL::3791 0
+DEAL::3792 0
+DEAL::3793 0
+DEAL::3794 0
+DEAL::3795 0
+DEAL::3796 0
+DEAL::3797 0
+DEAL::3798 0
+DEAL::3799 0
+DEAL::3800 0
+DEAL::3801 0
+DEAL::3802 0
+DEAL::3803 0
+DEAL::3804 0
+DEAL::3805 0
+DEAL::3806 0
+DEAL::3807 0
+DEAL::3808 0
+DEAL::3809 0
+DEAL::3810 0
+DEAL::3811 0
+DEAL::3812 0
+DEAL::3813 0
+DEAL::3814 0
+DEAL::3815 0
+DEAL::3816 0
+DEAL::3817 0
+DEAL::3818 0
+DEAL::3819 0
+DEAL::3820 0
+DEAL::3821 0
+DEAL::3822 0
+DEAL::3823 0
+DEAL::3824 4
+DEAL::3825 4
+DEAL::3826 4
+DEAL::3827 4
+DEAL::3828 4
+DEAL::3829 4
+DEAL::3830 4
+DEAL::3831 4
+DEAL::3832 4
+DEAL::3833 4
+DEAL::3834 4
+DEAL::3835 4
+DEAL::3836 4
+DEAL::3837 4
+DEAL::3838 4
+DEAL::3839 4
+DEAL::3840 4
+DEAL::3841 4
+DEAL::3842 4
+DEAL::3843 4
+DEAL::3844 4
+DEAL::3845 4
+DEAL::3846 4
+DEAL::3847 4
+DEAL::3848 4
+DEAL::3849 4
+DEAL::3850 4
+DEAL::3851 4
+DEAL::3852 4
+DEAL::3853 4
+DEAL::3854 4
+DEAL::3855 4
+DEAL::3856 4
+DEAL::3857 4
+DEAL::3858 4
+DEAL::3859 4
+DEAL::3860 4
+DEAL::3861 4
+DEAL::3862 4
+DEAL::3863 4
+DEAL::3864 4
+DEAL::3865 4
+DEAL::3866 4
+DEAL::3867 4
+DEAL::3868 4
+DEAL::3869 4
+DEAL::3870 4
+DEAL::3871 4
+DEAL::3872 4
+DEAL::3873 4
+DEAL::3874 4
+DEAL::3875 4
+DEAL::3876 2
+DEAL::3877 2
+DEAL::3878 2
+DEAL::3879 2
+DEAL::3880 2
+DEAL::3881 2
+DEAL::3882 2
+DEAL::3883 2
+DEAL::3884 2
+DEAL::3885 2
+DEAL::3886 2
+DEAL::3887 2
+DEAL::3888 2
+DEAL::3889 2
+DEAL::3890 2
+DEAL::3891 2
+DEAL::3892 2
+DEAL::3893 2
+DEAL::3894 2
+DEAL::3895 2
+DEAL::3896 2
+DEAL::3897 2
+DEAL::3898 2
+DEAL::3899 2
+DEAL::3900 2
+DEAL::3901 2
+DEAL::3902 2
+DEAL::3903 2
+DEAL::3904 2
+DEAL::3905 2
+DEAL::3906 2
+DEAL::3907 2
+DEAL::3908 2
+DEAL::3909 2
+DEAL::3910 2
+DEAL::3911 2
+DEAL::3912 2
+DEAL::3913 2
+DEAL::3914 2
+DEAL::3915 2
+DEAL::3916 2
+DEAL::3917 2
+DEAL::3918 2
+DEAL::3919 2
+DEAL::3920 2
+DEAL::3921 2
+DEAL::3922 2
+DEAL::3923 2
+DEAL::3924 2
+DEAL::3925 2
+DEAL::3926 3
+DEAL::3927 3
+DEAL::3928 3
+DEAL::3929 3
+DEAL::3930 3
+DEAL::3931 3
+DEAL::3932 3
+DEAL::3933 3
+DEAL::3934 3
+DEAL::3935 3
+DEAL::3936 3
+DEAL::3937 3
+DEAL::3938 3
+DEAL::3939 3
+DEAL::3940 3
+DEAL::3941 3
+DEAL::3942 3
+DEAL::3943 3
+DEAL::3944 3
+DEAL::3945 3
+DEAL::3946 3
+DEAL::3947 3
+DEAL::3948 3
+DEAL::3949 3
+DEAL::3950 3
+DEAL::3951 3
+DEAL::3952 3
+DEAL::3953 3
+DEAL::3954 3
+DEAL::3955 3
+DEAL::3956 3
+DEAL::3957 3
+DEAL::3958 0
+DEAL::3959 0
+DEAL::3960 0
+DEAL::3961 0
+DEAL::3962 0
+DEAL::3963 0
+DEAL::3964 0
+DEAL::3965 0
+DEAL::3966 0
+DEAL::3967 0
+DEAL::3968 0
+DEAL::3969 0
+DEAL::3970 0
+DEAL::3971 0
+DEAL::3972 0
+DEAL::3973 0
+DEAL::3974 0
+DEAL::3975 0
+DEAL::3976 0
+DEAL::3977 0
+DEAL::3978 0
+DEAL::3979 0
+DEAL::3980 0
+DEAL::3981 0
+DEAL::3982 0
+DEAL::3983 0
+DEAL::3984 0
+DEAL::3985 0
+DEAL::3986 0
+DEAL::3987 0
+DEAL::3988 0
+DEAL::3989 0
+DEAL::3990 0
+DEAL::3991 0
+DEAL::3992 0
+DEAL::3993 0
+DEAL::3994 0
+DEAL::3995 0
+DEAL::3996 2
+DEAL::3997 2
+DEAL::3998 2
+DEAL::3999 2
+DEAL::4000 2
+DEAL::4001 2
+DEAL::4002 2
+DEAL::4003 2
+DEAL::4004 2
+DEAL::4005 2
+DEAL::4006 2
+DEAL::4007 2
+DEAL::4008 2
+DEAL::4009 2
+DEAL::4010 2
+DEAL::4011 2
+DEAL::4012 2
+DEAL::4013 2
+DEAL::4014 2
+DEAL::4015 2
+DEAL::4016 2
+DEAL::4017 2
+DEAL::4018 2
+DEAL::4019 2
+DEAL::4020 2
+DEAL::4021 2
+DEAL::4022 2
+DEAL::4023 2
+DEAL::4024 2
+DEAL::4025 2
+DEAL::4026 2
+DEAL::4027 2
+DEAL::4028 2
+DEAL::4029 2
+DEAL::4030 2
+DEAL::4031 2
+DEAL::4032 2
+DEAL::4033 2
+DEAL::4034 2
+DEAL::4035 2
+DEAL::4036 4
+DEAL::4037 4
+DEAL::4038 4
+DEAL::4039 4
+DEAL::4040 4
+DEAL::4041 4
+DEAL::4042 4
+DEAL::4043 4
+DEAL::4044 4
+DEAL::4045 4
+DEAL::4046 4
+DEAL::4047 4
+DEAL::4048 4
+DEAL::4049 4
+DEAL::4050 4
+DEAL::4051 4
+DEAL::4052 4
+DEAL::4053 4
+DEAL::4054 4
+DEAL::4055 4
+DEAL::4056 4
+DEAL::4057 4
+DEAL::4058 4
+DEAL::4059 4
+DEAL::4060 4
+DEAL::4061 4
+DEAL::4062 4
+DEAL::4063 4
+DEAL::4064 4
+DEAL::4065 4
+DEAL::4066 4
+DEAL::4067 4
+DEAL::4068 4
+DEAL::4069 4
+DEAL::4070 4
+DEAL::4071 4
+DEAL::4072 4
+DEAL::4073 4
+DEAL::4074 1
+DEAL::4075 1
+DEAL::4076 1
+DEAL::4077 1
+DEAL::4078 1
+DEAL::4079 1
+DEAL::4080 1
+DEAL::4081 1
+DEAL::4082 1
+DEAL::4083 1
+DEAL::4084 1
+DEAL::4085 1
+DEAL::4086 1
+DEAL::4087 1
+DEAL::4088 1
+DEAL::4089 1
+DEAL::4090 1
+DEAL::4091 1
+DEAL::4092 1
+DEAL::4093 1
+DEAL::4094 0
+DEAL::4095 0
+DEAL::4096 0
+DEAL::4097 0
+DEAL::4098 0
+DEAL::4099 0
+DEAL::4100 0
+DEAL::4101 0
+DEAL::4102 0
+DEAL::4103 0
+DEAL::4104 0
+DEAL::4105 0
+DEAL::4106 0
+DEAL::4107 0
+DEAL::4108 0
+DEAL::4109 0
+DEAL::4110 0
+DEAL::4111 0
+DEAL::4112 0
+DEAL::4113 0
+DEAL::4114 0
+DEAL::4115 2
+DEAL::4116 2
+DEAL::4117 2
+DEAL::4118 2
+DEAL::4119 2
+DEAL::4120 2
+DEAL::4121 2
+DEAL::4122 2
+DEAL::4123 2
+DEAL::4124 2
+DEAL::4125 2
+DEAL::4126 2
+DEAL::4127 2
+DEAL::4128 2
+DEAL::4129 2
+DEAL::4130 2
+DEAL::4131 2
+DEAL::4132 2
+DEAL::4133 2
+DEAL::4134 2
+DEAL::4135 2
+DEAL::4136 2
+DEAL::4137 2
+DEAL::4138 2
+DEAL::4139 2
+DEAL::4140 2
+DEAL::4141 2
+DEAL::4142 2
+DEAL::4143 2
+DEAL::4144 2
+DEAL::4145 2
+DEAL::4146 2
+DEAL::4147 2
+DEAL::4148 2
+DEAL::4149 2
+DEAL::4150 2
+DEAL::4151 2
+DEAL::4152 2
+DEAL::4153 2
+DEAL::4154 3
+DEAL::4155 3
+DEAL::4156 3
+DEAL::4157 3
+DEAL::4158 3
+DEAL::4159 3
+DEAL::4160 3
+DEAL::4161 3
+DEAL::4162 3
+DEAL::4163 3
+DEAL::4164 3
+DEAL::4165 3
+DEAL::4166 3
+DEAL::4167 3
+DEAL::4168 3
+DEAL::4169 3
+DEAL::4170 3
+DEAL::4171 3
+DEAL::4172 3
+DEAL::4173 3
+DEAL::4174 3
+DEAL::4175 3
+DEAL::4176 3
+DEAL::4177 3
+DEAL::4178 3
+DEAL::4179 3
+DEAL::4180 3
+DEAL::4181 3
+DEAL::4182 3
+DEAL::4183 3
+DEAL::4184 3
+DEAL::4185 3
+DEAL::4186 3
+DEAL::4187 3
+DEAL::4188 3
+DEAL::4189 3
+DEAL::4190 3
+DEAL::4191 0
+DEAL::4192 0
+DEAL::4193 0
+DEAL::4194 0
+DEAL::4195 0
+DEAL::4196 0
+DEAL::4197 0
+DEAL::4198 0
+DEAL::4199 0
+DEAL::4200 0
+DEAL::4201 0
+DEAL::4202 0
+DEAL::4203 0
+DEAL::4204 0
+DEAL::4205 0
+DEAL::4206 0
+DEAL::4207 0
+DEAL::4208 0
+DEAL::4209 0
+DEAL::4210 0
+DEAL::4211 0
+DEAL::4212 0
+DEAL::4213 0
+DEAL::4214 0
+DEAL::4215 0
+DEAL::4216 3
+DEAL::4217 0
+DEAL::4218 0
+DEAL::4219 0
+DEAL::4220 0
+DEAL::4221 0
+DEAL::4222 3
+DEAL::4223 3
+DEAL::4224 2
+DEAL::4225 2
+DEAL::4226 2
+DEAL::4227 2
+DEAL::4228 2
+DEAL::4229 2
+DEAL::4230 2
+DEAL::4231 2
+DEAL::4232 2
+DEAL::4233 2
+DEAL::4234 2
+DEAL::4235 2
+DEAL::4236 2
+DEAL::4237 2
+DEAL::4238 2
+DEAL::4239 2
+DEAL::4240 2
+DEAL::4241 2
+DEAL::4242 2
+DEAL::4243 2
+DEAL::4244 2
+DEAL::4245 4
+DEAL::4246 4
+DEAL::4247 4
+DEAL::4248 4
+DEAL::4249 4
+DEAL::4250 4
+DEAL::4251 4
+DEAL::4252 4
+DEAL::4253 4
+DEAL::4254 4
+DEAL::4255 4
+DEAL::4256 4
+DEAL::4257 4
+DEAL::4258 4
+DEAL::4259 4
+DEAL::4260 4
+DEAL::4261 4
+DEAL::4262 4
+DEAL::4263 4
+DEAL::4264 4
+DEAL::4265 4
+DEAL::4266 4
+DEAL::4267 4
+DEAL::4268 4
+DEAL::4269 4
+DEAL::4270 4
+DEAL::4271 4
+DEAL::4272 4
+DEAL::4273 4
+DEAL::4274 4
+DEAL::4275 4
+DEAL::4276 4
+DEAL::4277 4
+DEAL::4278 4
+DEAL::4279 1
+DEAL::4280 1
+DEAL::4281 1
+DEAL::4282 1
+DEAL::4283 1
+DEAL::4284 1
+DEAL::4285 1
+DEAL::4286 1
+DEAL::4287 1
+DEAL::4288 1
+DEAL::4289 1
+DEAL::4290 1
+DEAL::4291 1
+DEAL::4292 1
+DEAL::4293 1
+DEAL::4294 1
+DEAL::4295 1
+DEAL::4296 1
+DEAL::4297 1
+DEAL::4298 1
+DEAL::4299 1
+DEAL::4300 1
+DEAL::4301 1
+DEAL::4302 1
+DEAL::4303 1
+DEAL::4304 1
+DEAL::4305 1
+DEAL::4306 1
+DEAL::4307 1
+DEAL::4308 1
+DEAL::4309 1
+DEAL::4310 1
+DEAL::4311 1
+DEAL::4312 1
+DEAL::4313 1
+DEAL::4314 1
+DEAL::4315 1
+DEAL::4316 1
+DEAL::4317 1
+DEAL::4318 1
+DEAL::4319 1
+DEAL::4320 1
+DEAL::4321 1
+DEAL::4322 1
+DEAL::4323 1
+DEAL::4324 1
+DEAL::4325 1
+DEAL::4326 1
+DEAL::4327 1
+DEAL::4328 1
+DEAL::4329 1
+DEAL::4330 1
+DEAL::4331 1
+DEAL::4332 1
+DEAL::4333 1
+DEAL::4334 1
+DEAL::4335 1
+DEAL::4336 1
+DEAL::4337 1
+DEAL::4338 1
+DEAL::4339 1
+DEAL::4340 1
+DEAL::4341 1
+DEAL::4342 1
+DEAL::4343 1
+DEAL::4344 1
+DEAL::4345 1
+DEAL::4346 1
+DEAL::4347 1
+DEAL::4348 1
+DEAL::4349 1
+DEAL::4350 1
+DEAL::4351 1
+DEAL::4352 1
+DEAL::4353 1
+DEAL::4354 1
+DEAL::4355 1
+DEAL::4356 1
+DEAL::4357 1
+DEAL::4358 1
+DEAL::4359 1
+DEAL::4360 1
+DEAL::4361 1
+DEAL::4362 1
+DEAL::4363 1
+DEAL::4364 1
+DEAL::4365 1
+DEAL::4366 1
+DEAL::4367 1
+DEAL::4368 1
+DEAL::4369 1
+DEAL::4370 1
+DEAL::4371 1
+DEAL::4372 1
+DEAL::4373 1
+DEAL::4374 1
+DEAL::4375 1
+DEAL::4376 0
+DEAL::4377 0
+DEAL::4378 0
+DEAL::4379 0
+DEAL::4380 0
+DEAL::4381 0
+DEAL::4382 0
+DEAL::4383 0
+DEAL::4384 0
+DEAL::4385 0
+DEAL::4386 0
+DEAL::4387 0
+DEAL::4388 0
+DEAL::4389 0
+DEAL::4390 0
+DEAL::4391 0
+DEAL::4392 0
+DEAL::4393 0
+DEAL::4394 0
+DEAL::4395 0
+DEAL::4396 0
+DEAL::4397 0
+DEAL::4398 0
+DEAL::4399 0
+DEAL::4400 0
+DEAL::4401 0
+DEAL::4402 0
+DEAL::4403 0
+DEAL::4404 0
+DEAL::4405 0
+DEAL::4406 0
+DEAL::4407 0
+DEAL::4408 0
+DEAL::4409 0
+DEAL::4410 0
+DEAL::4411 0
+DEAL::4412 0
+DEAL::4413 0
+DEAL::4414 0
+DEAL::4415 0
+DEAL::4416 0
+DEAL::4417 0
+DEAL::4418 0
+DEAL::4419 0
+DEAL::4420 0
+DEAL::4421 0
+DEAL::4422 0
+DEAL::4423 0
+DEAL::4424 0
+DEAL::4425 0
+DEAL::4426 0
+DEAL::4427 0
+DEAL::4428 0
+DEAL::4429 0
+DEAL::4430 0
+DEAL::4431 0
+DEAL::4432 0
+DEAL::4433 0
+DEAL::4434 0
+DEAL::4435 0
+DEAL::4436 0
+DEAL::4437 0
+DEAL::4438 0
+DEAL::4439 0
+DEAL::4440 0
+DEAL::4441 0
+DEAL::4442 0
+DEAL::4443 0
+DEAL::4444 0
+DEAL::4445 0
+DEAL::4446 0
+DEAL::4447 0
+DEAL::4448 0
+DEAL::4449 0
+DEAL::4450 0
+DEAL::4451 0
+DEAL::4452 0
+DEAL::4453 3
+DEAL::4454 3
+DEAL::4455 3
+DEAL::4456 3
+DEAL::4457 3
+DEAL::4458 3
+DEAL::4459 3
+DEAL::4460 3
+DEAL::4461 3
+DEAL::4462 3
+DEAL::4463 3
+DEAL::4464 3
+DEAL::4465 3
+DEAL::4466 3
+DEAL::4467 3
+DEAL::4468 3
+DEAL::4469 3
+DEAL::4470 3
+DEAL::4471 3
+DEAL::4472 3
+DEAL::4473 3
+DEAL::4474 3
+DEAL::4475 3
+DEAL::4476 3
+DEAL::4477 3
+DEAL::4478 3
+DEAL::4479 3
+DEAL::4480 3
+DEAL::4481 3
+DEAL::4482 3
+DEAL::4483 3
+DEAL::4484 3
+DEAL::4485 3
+DEAL::4486 3
+DEAL::4487 3
+DEAL::4488 3
+DEAL::4489 3
+DEAL::4490 3
+DEAL::4491 3
+DEAL::4492 3
+DEAL::4493 3
+DEAL::4494 3
+DEAL::4495 2
+DEAL::4496 2
+DEAL::4497 2
+DEAL::4498 2
+DEAL::4499 2
+DEAL::4500 2
+DEAL::4501 2
+DEAL::4502 2
+DEAL::4503 2
+DEAL::4504 2
+DEAL::4505 2
+DEAL::4506 2
+DEAL::4507 2
+DEAL::4508 2
+DEAL::4509 2
+DEAL::4510 2
+DEAL::4511 2
+DEAL::4512 2
+DEAL::4513 2
+DEAL::4514 2
+DEAL::4515 2
+DEAL::4516 3
+DEAL::4517 3
+DEAL::4518 3
+DEAL::4519 3
+DEAL::4520 3
+DEAL::4521 3
+DEAL::4522 3
+DEAL::4523 3
+DEAL::4524 3
+DEAL::4525 3
+DEAL::4526 3
+DEAL::4527 3
+DEAL::4528 3
+DEAL::4529 3
+DEAL::4530 3
+DEAL::4531 3
+DEAL::4532 3
+DEAL::4533 3
+DEAL::4534 3
+DEAL::4535 3
+DEAL::4536 3
+DEAL::4537 0
+DEAL::4538 0
+DEAL::4539 0
+DEAL::4540 0
+DEAL::4541 0
+DEAL::4542 0
+DEAL::4543 0
+DEAL::4544 0
+DEAL::4545 0
+DEAL::4546 0
+DEAL::4547 0
+DEAL::4548 0
+DEAL::4549 0
+DEAL::4550 0
+DEAL::4551 0
+DEAL::4552 0
+DEAL::4553 0
+DEAL::4554 0
+DEAL::4555 0
+DEAL::4556 0
+DEAL::4557 0
+DEAL::4558 2
+DEAL::4559 2
+DEAL::4560 2
+DEAL::4561 2
+DEAL::4562 2
+DEAL::4563 2
+DEAL::4564 2
+DEAL::4565 2
+DEAL::4566 2
+DEAL::4567 2
+DEAL::4568 2
+DEAL::4569 2
+DEAL::4570 2
+DEAL::4571 2
+DEAL::4572 2
+DEAL::4573 2
+DEAL::4574 2
+DEAL::4575 2
+DEAL::4576 2
+DEAL::4577 2
+DEAL::4578 2
+DEAL::4579 4
+DEAL::4580 4
+DEAL::4581 4
+DEAL::4582 4
+DEAL::4583 4
+DEAL::4584 4
+DEAL::4585 4
+DEAL::4586 4
+DEAL::4587 4
+DEAL::4588 4
+DEAL::4589 4
+DEAL::4590 4
+DEAL::4591 4
+DEAL::4592 4
+DEAL::4593 4
+DEAL::4594 4
+DEAL::4595 4
+DEAL::4596 4
+DEAL::4597 0
+DEAL::4598 0
+DEAL::4599 0
+DEAL::4600 0
+DEAL::4601 0
+DEAL::4602 0
+DEAL::4603 0
+DEAL::4604 0
+DEAL::4605 0
+DEAL::4606 0
+DEAL::4607 0
+DEAL::4608 0
+DEAL::4609 0
+DEAL::4610 0
+DEAL::4611 0
+DEAL::4612 0
+DEAL::4613 0
+DEAL::4614 0
+DEAL::4615 2
+DEAL::4616 2
+DEAL::4617 2
+DEAL::4618 2
+DEAL::4619 2
+DEAL::4620 2
+DEAL::4621 2
+DEAL::4622 2
+DEAL::4623 2
+DEAL::4624 2
+DEAL::4625 2
+DEAL::4626 2
+DEAL::4627 2
+DEAL::4628 2
+DEAL::4629 2
+DEAL::4630 2
+DEAL::4631 2
+DEAL::4632 2
+DEAL::4633 2
+DEAL::4634 2
+DEAL::4635 2
+DEAL::4636 3
+DEAL::4637 3
+DEAL::4638 3
+DEAL::4639 3
+DEAL::4640 3
+DEAL::4641 3
+DEAL::4642 3
+DEAL::4643 3
+DEAL::4644 3
+DEAL::4645 3
+DEAL::4646 3
+DEAL::4647 3
+DEAL::4648 3
+DEAL::4649 3
+DEAL::4650 3
+DEAL::4651 3
+DEAL::4652 3
+DEAL::4653 3
+DEAL::4654 3
+DEAL::4655 3
+DEAL::4656 3
+DEAL::4657 1
+DEAL::4658 0
+DEAL::4659 0
+DEAL::4660 1
+DEAL::4661 1
+DEAL::4662 1
+DEAL::4663 1
+DEAL::4664 1
+DEAL::4665 1
+DEAL::4666 1
+DEAL::4667 1
+DEAL::4668 1
+DEAL::4669 1
+DEAL::4670 0
+DEAL::4671 0
+DEAL::4672 0
+DEAL::4673 0
+DEAL::4674 0
+DEAL::4675 0
+DEAL::4676 0
+DEAL::4677 0
+DEAL::4678 4
+DEAL::4679 4
+DEAL::4680 4
+DEAL::4681 4
+DEAL::4682 4
+DEAL::4683 4
+DEAL::4684 4
+DEAL::4685 4
+DEAL::4686 4
+DEAL::4687 4
+DEAL::4688 4
+DEAL::4689 4
+DEAL::4690 4
+DEAL::4691 4
+DEAL::4692 4
+DEAL::4693 4
+DEAL::4694 4
+DEAL::4695 4
+DEAL::4696 4
+DEAL::4697 4
+DEAL::4698 4
+DEAL::4699 1
+DEAL::4700 1
+DEAL::4701 1
+DEAL::4702 1
+DEAL::4703 1
+DEAL::4704 1
+DEAL::4705 1
+DEAL::4706 1
+DEAL::4707 1
+DEAL::4708 1
+DEAL::4709 1
+DEAL::4710 1
+DEAL::4711 1
+DEAL::4712 1
+DEAL::4713 1
+DEAL::4714 1
+DEAL::4715 1
+DEAL::4716 1
+DEAL::4717 1
+DEAL::4718 1
+DEAL::4719 1
+DEAL::4720 0
+DEAL::4721 0
+DEAL::4722 0
+DEAL::4723 0
+DEAL::4724 0
+DEAL::4725 0
+DEAL::4726 0
+DEAL::4727 0
+DEAL::4728 0
+DEAL::4729 0
+DEAL::4730 0
+DEAL::4731 0
+DEAL::4732 0
+DEAL::4733 0
+DEAL::4734 0
+DEAL::4735 0
+DEAL::4736 0
+DEAL::4737 0
+DEAL::4738 2
+DEAL::4739 2
+DEAL::4740 1
+DEAL::4741 2
+DEAL::4742 2
+DEAL::4743 2
+DEAL::4744 1
+DEAL::4745 2
+DEAL::4746 1
+DEAL::4747 2
+DEAL::4748 2
+DEAL::4749 1
+DEAL::4750 2
+DEAL::4751 1
+DEAL::4752 1
+DEAL::4753 1
+DEAL::4754 1
+DEAL::4755 1
+DEAL::4756 1
+DEAL::4757 1
+DEAL::4758 1
+DEAL::4759 2
+DEAL::4760 2
+DEAL::4761 2
+DEAL::4762 2
+DEAL::4763 2
+DEAL::4764 2
+DEAL::4765 2
+DEAL::4766 2
+DEAL::4767 2
+DEAL::4768 2
+DEAL::4769 2
+DEAL::4770 2
+DEAL::4771 2
+DEAL::4772 2
+DEAL::4773 2
+DEAL::4774 2
+DEAL::4775 2
+DEAL::4776 2
+DEAL::4777 2
+DEAL::4778 4
+DEAL::4779 4
+DEAL::4780 4
+DEAL::4781 4
+DEAL::4782 4
+DEAL::4783 4
+DEAL::4784 4
+DEAL::4785 4
+DEAL::4786 4
+DEAL::4787 4
+DEAL::4788 4
+DEAL::4789 4
+DEAL::4790 4
+DEAL::4791 4
+DEAL::4792 4
+DEAL::4793 4
+DEAL::4794 4
+DEAL::4795 4
+DEAL::4796 4
+DEAL::4797 4
+DEAL::4798 4
+DEAL::4799 1
+DEAL::4800 1
+DEAL::4801 1
+DEAL::4802 1
+DEAL::4803 1
+DEAL::4804 1
+DEAL::4805 1
+DEAL::4806 1
+DEAL::4807 1
+DEAL::4808 1
+DEAL::4809 1
+DEAL::4810 1
+DEAL::4811 1
+DEAL::4812 1
+DEAL::4813 1
+DEAL::4814 1
+DEAL::4815 1
+DEAL::4816 1
+DEAL::4817 1
+DEAL::4818 1
+DEAL::4819 1
+DEAL::4820 0
+DEAL::4821 0
+DEAL::4822 0
+DEAL::4823 0
+DEAL::4824 0
+DEAL::4825 0
+DEAL::4826 0
+DEAL::4827 0
+DEAL::4828 0
+DEAL::4829 0
+DEAL::4830 0
+DEAL::4831 0
+DEAL::4832 0
+DEAL::4833 0
+DEAL::4834 0
+DEAL::4835 0
+DEAL::4836 0
+DEAL::4837 0
+DEAL::4838 0
+DEAL::4839 0
+DEAL::4840 0
+DEAL::4841 0
+DEAL::4842 0
+DEAL::4843 0
+DEAL::4844 0
+DEAL::4845 0
+DEAL::4846 0
+DEAL::4847 0
+DEAL::4848 0
+DEAL::4849 0
+DEAL::4850 0
+DEAL::4851 0
+DEAL::4852 0
+DEAL::4853 0
+DEAL::4854 0
+DEAL::4855 0
+DEAL::4856 0
+DEAL::4857 0
+DEAL::4858 0
+DEAL::4859 2
+DEAL::4860 2
+DEAL::4861 2
+DEAL::4862 2
+DEAL::4863 2
+DEAL::4864 2
+DEAL::4865 2
+DEAL::4866 2
+DEAL::4867 2
+DEAL::4868 2
+DEAL::4869 2
+DEAL::4870 2
+DEAL::4871 2
+DEAL::4872 2
+DEAL::4873 2
+DEAL::4874 2
+DEAL::4875 2
+DEAL::4876 2
+DEAL::4877 4
+DEAL::4878 4
+DEAL::4879 4
+DEAL::4880 4
+DEAL::4881 4
+DEAL::4882 4
+DEAL::4883 4
+DEAL::4884 4
+DEAL::4885 4
+DEAL::4886 4
+DEAL::4887 4
+DEAL::4888 4
+DEAL::4889 4
+DEAL::4890 4
+DEAL::4891 4
+DEAL::4892 4
+DEAL::4893 4
+DEAL::4894 4
+DEAL::4895 4
+DEAL::4896 4
+DEAL::4897 4
+DEAL::4898 4
+DEAL::4899 4
+DEAL::4900 4
+DEAL::4901 4
+DEAL::4902 4
+DEAL::4903 4
+DEAL::4904 4
+DEAL::4905 4
+DEAL::4906 4
+DEAL::4907 4
+DEAL::4908 4
+DEAL::4909 4
+DEAL::4910 4
+DEAL::4911 4
+DEAL::4912 4
+DEAL::4913 4
+DEAL::4914 4
+DEAL::4915 4
+DEAL::4916 4
+DEAL::4917 4
+DEAL::4918 4
+DEAL::4919 4
+DEAL::4920 4
+DEAL::4921 4
+DEAL::4922 4
+DEAL::4923 4
+DEAL::4924 4
+DEAL::4925 4
+DEAL::4926 4
+DEAL::4927 4
+DEAL::4928 4
+DEAL::4929 4
+DEAL::4930 4
+DEAL::4931 4
+DEAL::4932 4
+DEAL::4933 4
+DEAL::4934 4
+DEAL::4935 4
+DEAL::4936 4
+DEAL::4937 4
+DEAL::4938 4
+DEAL::4939 4
+DEAL::4940 1
+DEAL::4941 1
+DEAL::4942 1
+DEAL::4943 1
+DEAL::4944 1
+DEAL::4945 1
+DEAL::4946 1
+DEAL::4947 1
+DEAL::4948 1
+DEAL::4949 1
+DEAL::4950 1
+DEAL::4951 1
+DEAL::4952 1
+DEAL::4953 1
+DEAL::4954 1
+DEAL::4955 1
+DEAL::4956 1
+DEAL::4957 1
+DEAL::4958 1
+DEAL::4959 1
+DEAL::4960 1
+DEAL::4961 4
+DEAL::4962 4
+DEAL::4963 4
+DEAL::4964 4
+DEAL::4965 4
+DEAL::4966 4
+DEAL::4967 4
+DEAL::4968 4
+DEAL::4969 4
+DEAL::4970 4
+DEAL::4971 4
+DEAL::4972 4
+DEAL::4973 4
+DEAL::4974 4
+DEAL::4975 4
+DEAL::4976 4
+DEAL::4977 4
+DEAL::4978 4
+DEAL::4979 4
+DEAL::4980 4
+DEAL::4981 4
+DEAL::4982 4
+DEAL::4983 4
+DEAL::4984 4
+DEAL::4985 4
+DEAL::4986 4
+DEAL::4987 4
+DEAL::4988 4
+DEAL::4989 4
+DEAL::4990 4
+DEAL::4991 4
+DEAL::4992 4
+DEAL::4993 4
+DEAL::4994 4
+DEAL::4995 4
+DEAL::4996 4
+DEAL::4997 4
+DEAL::4998 4
+DEAL::4999 4
+DEAL::5000 4
+DEAL::5001 4
+DEAL::5002 4
+DEAL::5003 2
+DEAL::5004 1
+DEAL::5005 1
+DEAL::5006 2
+DEAL::5007 2
+DEAL::5008 2
+DEAL::5009 2
+DEAL::5010 2
+DEAL::5011 2
+DEAL::5012 2
+DEAL::5013 2
+DEAL::5014 2
+DEAL::5015 2
+DEAL::5016 1
+DEAL::5017 1
+DEAL::5018 1
+DEAL::5019 1
+DEAL::5020 1
+DEAL::5021 1
+DEAL::5022 1
+DEAL::5023 1
+DEAL::5024 1
+DEAL::5025 1
+DEAL::5026 1
+DEAL::5027 1
+DEAL::5028 1
+DEAL::5029 1
+DEAL::5030 1
+DEAL::5031 1
+DEAL::5032 1
+DEAL::5033 1
+DEAL::5034 1
+DEAL::5035 1
+DEAL::5036 1
+DEAL::5037 1
+DEAL::5038 1
+DEAL::5039 1
+DEAL::5040 1
+DEAL::5041 1
+DEAL::5042 1
+DEAL::5043 4
+DEAL::5044 4
+DEAL::5045 4
+DEAL::5046 4
+DEAL::5047 4
+DEAL::5048 4
+DEAL::5049 4
+DEAL::5050 4
+DEAL::5051 4
+DEAL::5052 4
+DEAL::5053 4
+DEAL::5054 4
+DEAL::5055 4
+DEAL::5056 4
+DEAL::5057 4
+DEAL::5058 4
+DEAL::5059 4
+DEAL::5060 4
+DEAL::5061 4
+DEAL::5062 4
+DEAL::5063 4
+DEAL::5064 1
+DEAL::5065 1
+DEAL::5066 1
+DEAL::5067 1
+DEAL::5068 1
+DEAL::5069 1
+DEAL::5070 1
+DEAL::5071 1
+DEAL::5072 1
+DEAL::5073 1
+DEAL::5074 1
+DEAL::5075 1
+DEAL::5076 1
+DEAL::5077 1
+DEAL::5078 1
+DEAL::5079 1
+DEAL::5080 1
+DEAL::5081 1
+DEAL::5082 1
+DEAL::5083 1
+DEAL::5084 1
+DEAL::5085 0
+DEAL::5086 0
+DEAL::5087 0
+DEAL::5088 1
+DEAL::5089 1
+DEAL::5090 1
+DEAL::5091 1
+DEAL::5092 1
+DEAL::5093 0
+DEAL::5094 0
+DEAL::5095 0
+DEAL::5096 0
+DEAL::5097 0
+DEAL::5098 0
+DEAL::5099 0
+DEAL::5100 0
+DEAL::5101 0
+DEAL::5102 0
+DEAL::5103 0
+DEAL::5104 0
+DEAL::5105 0
+DEAL::5106 1
+DEAL::5107 1
+DEAL::5108 1
+DEAL::5109 1
+DEAL::5110 1
+DEAL::5111 1
+DEAL::5112 1
+DEAL::5113 1
+DEAL::5114 1
+DEAL::5115 1
+DEAL::5116 1
+DEAL::5117 1
+DEAL::5118 1
+DEAL::5119 1
+DEAL::5120 1
+DEAL::5121 1
+DEAL::5122 1
+DEAL::5123 1
+DEAL::5124 1
+DEAL::5125 1
+DEAL::5126 1
+DEAL::5127 1
+DEAL::5128 0
+DEAL::5129 1
+DEAL::5130 0
+DEAL::5131 1
+DEAL::5132 1
+DEAL::5133 1
+DEAL::5134 0
+DEAL::5135 0
+DEAL::5136 0
+DEAL::5137 0
+DEAL::5138 0
+DEAL::5139 1
+DEAL::5140 0
+DEAL::5141 1
+DEAL::5142 1
+DEAL::5143 0
+DEAL::5144 0
+DEAL::5145 0
+DEAL::5146 1
+DEAL::5147 1
+DEAL::5148 1
+DEAL::5149 1
+DEAL::5150 1
+DEAL::5151 1
+DEAL::5152 1
+DEAL::5153 1
+DEAL::5154 1
+DEAL::5155 1
+DEAL::5156 1
+DEAL::5157 1
+DEAL::5158 1
+DEAL::5159 1
+DEAL::5160 1
+DEAL::5161 1
+DEAL::5162 1
+DEAL::5163 1
+DEAL::5164 1
+DEAL::5165 1
+DEAL::5166 1
+DEAL::5167 3
+DEAL::5168 3
+DEAL::5169 3
+DEAL::5170 3
+DEAL::5171 3
+DEAL::5172 3
+DEAL::5173 3
+DEAL::5174 3
+DEAL::5175 4
+DEAL::5176 4
+DEAL::5177 4
+DEAL::5178 4
+DEAL::5179 4
+DEAL::5180 4
+DEAL::5181 4
+DEAL::5182 4
+DEAL::5183 4
+DEAL::5184 4
+DEAL::5185 4
+DEAL::5186 4
+DEAL::5187 4
+DEAL::5188 4
+DEAL::5189 4
+DEAL::5190 4
+DEAL::5191 4
+DEAL::5192 4
+DEAL::5193 3
+DEAL::5194 3
+DEAL::5195 3
+DEAL::5196 3
+DEAL::5197 3
+DEAL::5198 3
+DEAL::5199 3
+DEAL::5200 3
+DEAL::5201 3
+DEAL::5202 3
+DEAL::5203 3
+DEAL::5204 3
+DEAL::5205 3
+DEAL::5206 3
+DEAL::5207 3
+DEAL::5208 3
+DEAL::5209 3
+DEAL::5210 3
+DEAL::5211 3
+DEAL::5212 3
+DEAL::5213 3
+DEAL::5214 3
+DEAL::5215 3
+DEAL::5216 3
+DEAL::5217 3
+DEAL::5218 3
+DEAL::5219 3
+DEAL::5220 3
+DEAL::5221 3
+DEAL::5222 3
+DEAL::5223 3
+DEAL::5224 3
+DEAL::5225 3
+DEAL::5226 3
+DEAL::5227 3
+DEAL::5228 3
+DEAL::5229 3
+DEAL::5230 3
+DEAL::5231 3
+DEAL::5232 3
+DEAL::5233 3
+DEAL::5234 3
+DEAL::5235 3
+DEAL::5236 3
+DEAL::5237 3
+DEAL::5238 3
+DEAL::5239 3
+DEAL::5240 3
+DEAL::5241 3
+DEAL::5242 3
+DEAL::5243 3
+DEAL::5244 3
+DEAL::5245 3
+DEAL::5246 3
+DEAL::5247 3
+DEAL::5248 3
+DEAL::5249 3
+DEAL::5250 3
+DEAL::5251 3
+DEAL::5252 3
+DEAL::5253 3
+DEAL::5254 3
+DEAL::5255 3
+DEAL::5256 3
+DEAL::5257 3
+DEAL::5258 3
+DEAL::5259 3
+DEAL::5260 3
+DEAL::5261 3
+DEAL::5262 3
+DEAL::5263 3
+DEAL::5264 3
+DEAL::5265 3
+DEAL::5266 3
+DEAL::5267 3
+DEAL::5268 3
+DEAL::5269 3
+DEAL::5270 3
+DEAL::5271 3
+DEAL::5272 2
+DEAL::5273 2
+DEAL::5274 2
+DEAL::5275 2
+DEAL::5276 2
+DEAL::5277 2
+DEAL::5278 2
+DEAL::5279 2
+DEAL::5280 2
+DEAL::5281 2
+DEAL::5282 2
+DEAL::5283 2
+DEAL::5284 2
+DEAL::5285 2
+DEAL::5286 2
+DEAL::5287 2
+DEAL::5288 2
+DEAL::5289 2
+DEAL::5290 3
+DEAL::5291 3
+DEAL::5292 3
+DEAL::5293 3
+DEAL::5294 3
+DEAL::5295 3
+DEAL::5296 3
+DEAL::5297 3
+DEAL::5298 3
+DEAL::5299 3
+DEAL::5300 3
+DEAL::5301 3
+DEAL::5302 3
+DEAL::5303 3
+DEAL::5304 3
+DEAL::5305 3
+DEAL::5306 3
+DEAL::5307 3
+DEAL::5308 3
+DEAL::5309 3
+DEAL::5310 3
+DEAL::5311 3
+DEAL::5312 3
+DEAL::5313 3
+DEAL::5314 3
+DEAL::5315 3
+DEAL::5316 3
+DEAL::5317 3
+DEAL::5318 3
+DEAL::5319 3
+DEAL::5320 3
+DEAL::5321 3
+DEAL::5322 3
+DEAL::5323 3
+DEAL::5324 3
+DEAL::5325 3
+DEAL::5326 3
+DEAL::5327 3
+DEAL::5328 4
+DEAL::5329 4
+DEAL::5330 4
+DEAL::5331 4
+DEAL::5332 4
+DEAL::5333 4
+DEAL::5334 4
+DEAL::5335 4
+DEAL::5336 4
+DEAL::5337 4
+DEAL::5338 4
+DEAL::5339 4
+DEAL::5340 4
+DEAL::5341 4
+DEAL::5342 4
+DEAL::5343 4
+DEAL::5344 4
+DEAL::5345 4
+DEAL::5346 4
+DEAL::5347 4
+DEAL::5348 4
+DEAL::5349 4
+DEAL::5350 4
+DEAL::5351 4
+DEAL::5352 4
+DEAL::5353 4
+DEAL::5354 4
+DEAL::5355 4
+DEAL::5356 4
+DEAL::5357 4
+DEAL::5358 4
+DEAL::5359 4
+DEAL::5360 4
+DEAL::5361 4
+DEAL::5362 4
+DEAL::5363 4
+DEAL::5364 4
+DEAL::5365 2
+DEAL::5366 2
+DEAL::5367 2
+DEAL::5368 2
+DEAL::5369 2
+DEAL::5370 2
+DEAL::5371 2
+DEAL::5372 2
+DEAL::5373 2
+DEAL::5374 2
+DEAL::5375 2
+DEAL::5376 2
+DEAL::5377 2
+DEAL::5378 2
+DEAL::5379 2
+DEAL::5380 2
+DEAL::5381 2
+DEAL::5382 2
+DEAL::5383 2
+DEAL::5384 2
+DEAL::5385 2
+DEAL::5386 3
+DEAL::5387 3
+DEAL::5388 3
+DEAL::5389 3
+DEAL::5390 3
+DEAL::5391 3
+DEAL::5392 3
+DEAL::5393 3
+DEAL::5394 3
+DEAL::5395 3
+DEAL::5396 3
+DEAL::5397 3
+DEAL::5398 3
+DEAL::5399 3
+DEAL::5400 3
+DEAL::5401 3
+DEAL::5402 3
+DEAL::5403 3
+DEAL::5404 3
+DEAL::5405 3
+DEAL::5406 3
+DEAL::5407 3
+DEAL::5408 3
+DEAL::5409 3
+DEAL::5410 3
+DEAL::5411 3
+DEAL::5412 3
+DEAL::5413 3
+DEAL::5414 3
+DEAL::5415 3
+DEAL::5416 3
+DEAL::5417 3
+DEAL::5418 3
+DEAL::5419 3
+DEAL::5420 3
+DEAL::5421 3
+DEAL::5422 3
+DEAL::5423 3
+DEAL::5424 3
+DEAL::5425 3
+DEAL::5426 3
+DEAL::5427 3
+DEAL::5428 3
+DEAL::5429 3
+DEAL::5430 3
+DEAL::5431 3
+DEAL::5432 3
+DEAL::5433 3
+DEAL::5434 3
+DEAL::5435 3
+DEAL::5436 3
+DEAL::5437 3
+DEAL::5438 3
+DEAL::5439 3
+DEAL::5440 3
+DEAL::5441 3
+DEAL::5442 3
+DEAL::5443 3
+DEAL::5444 3
+DEAL::5445 3
+DEAL::5446 3
+DEAL::5447 3
+DEAL::5448 3
+DEAL::5449 3
+DEAL::5450 3
+DEAL::5451 3
+DEAL::5452 2
+DEAL::5453 2
+DEAL::5454 2
+DEAL::5455 2
+DEAL::5456 2
+DEAL::5457 2
+DEAL::5458 2
+DEAL::5459 2
+DEAL::5460 2
+DEAL::5461 2
+DEAL::5462 2
+DEAL::5463 2
+DEAL::5464 2
+DEAL::5465 2
+DEAL::5466 2
+DEAL::5467 2
+DEAL::5468 2
+DEAL::5469 2
+DEAL::5470 2
+DEAL::5471 2
+DEAL::5472 2
+DEAL::5473 2
+DEAL::5474 2
+DEAL::5475 2
+DEAL::5476 2
+DEAL::5477 2
+DEAL::5478 2
+DEAL::5479 2
+DEAL::5480 2
+DEAL::5481 2
+DEAL::5482 2
+DEAL::5483 2
+DEAL::5484 2
+DEAL::5485 2
+DEAL::5486 2
+DEAL::5487 2
+DEAL::5488 2
+DEAL::5489 2
+DEAL::5490 1
+DEAL::5491 1
+DEAL::5492 1
+DEAL::5493 1
+DEAL::5494 1
+DEAL::5495 1
+DEAL::5496 1
+DEAL::5497 1
+DEAL::5498 1
+DEAL::5499 1
+DEAL::5500 1
+DEAL::5501 1
+DEAL::5502 1
+DEAL::5503 1
+DEAL::5504 1
+DEAL::5505 1
+DEAL::5506 1
+DEAL::5507 1
+DEAL::5508 1
+DEAL::5509 1
+DEAL::5510 1
+DEAL::5511 4
+DEAL::5512 4
+DEAL::5513 4
+DEAL::5514 4
+DEAL::5515 4
+DEAL::5516 4
+DEAL::5517 4
+DEAL::5518 4
+DEAL::5519 4
+DEAL::5520 4
+DEAL::5521 4
+DEAL::5522 4
+DEAL::5523 4
+DEAL::5524 4
+DEAL::5525 4
+DEAL::5526 4
+DEAL::5527 4
+DEAL::5528 4
+DEAL::5529 4
+DEAL::5530 2
+DEAL::5531 2
+DEAL::5532 2
+DEAL::5533 2
+DEAL::5534 2
+DEAL::5535 2
+DEAL::5536 2
+DEAL::5537 2
+DEAL::5538 2
+DEAL::5539 2
+DEAL::5540 2
+DEAL::5541 2
+DEAL::5542 2
+DEAL::5543 2
+DEAL::5544 2
+DEAL::5545 2
+DEAL::5546 2
+DEAL::5547 2
+DEAL::5548 2
+DEAL::5549 2
+DEAL::5550 2
+DEAL::5551 0
+DEAL::5552 0
+DEAL::5553 0
+DEAL::5554 0
+DEAL::5555 0
+DEAL::5556 0
+DEAL::5557 0
+DEAL::5558 0
+DEAL::5559 3
+DEAL::5560 0
+DEAL::5561 0
+DEAL::5562 3
+DEAL::5563 0
+DEAL::5564 0
+DEAL::5565 0
+DEAL::5566 0
+DEAL::5567 0
+DEAL::5568 0
+DEAL::5569 3
+DEAL::5570 3
+DEAL::5571 3
+DEAL::5572 2
+DEAL::5573 2
+DEAL::5574 2
+DEAL::5575 2
+DEAL::5576 2
+DEAL::5577 2
+DEAL::5578 2
+DEAL::5579 2
+DEAL::5580 2
+DEAL::5581 2
+DEAL::5582 2
+DEAL::5583 2
+DEAL::5584 2
+DEAL::5585 2
+DEAL::5586 2
+DEAL::5587 2
+DEAL::5588 2
+DEAL::5589 2
+DEAL::5590 2
+DEAL::5591 2
+DEAL::5592 2
+DEAL::5593 0
+DEAL::5594 0
+DEAL::5595 0
+DEAL::5596 0
+DEAL::5597 0
+DEAL::5598 0
+DEAL::5599 0
+DEAL::5600 0
+DEAL::5601 0
+DEAL::5602 0
+DEAL::5603 0
+DEAL::5604 0
+DEAL::5605 0
+DEAL::5606 0
+DEAL::5607 0
+DEAL::5608 0
+DEAL::5609 0
+DEAL::5610 0
+DEAL::5611 0
+DEAL::5612 0
+DEAL::5613 0
+DEAL::5614 4
+DEAL::5615 4
+DEAL::5616 4
+DEAL::5617 4
+DEAL::5618 4
+DEAL::5619 4
+DEAL::5620 4
+DEAL::5621 4
+DEAL::5622 4
+DEAL::5623 4
+DEAL::5624 4
+DEAL::5625 4
+DEAL::5626 4
+DEAL::5627 4
+DEAL::5628 4
+DEAL::5629 4
+DEAL::5630 4
+DEAL::5631 4
+DEAL::5632 4
+DEAL::5633 4
+DEAL::5634 4
+DEAL::5635 2
+DEAL::5636 2
+DEAL::5637 2
+DEAL::5638 2
+DEAL::5639 2
+DEAL::5640 2
+DEAL::5641 2
+DEAL::5642 2
+DEAL::5643 2
+DEAL::5644 2
+DEAL::5645 2
+DEAL::5646 2
+DEAL::5647 2
+DEAL::5648 2
+DEAL::5649 2
+DEAL::5650 2
+DEAL::5651 2
+DEAL::5652 2
+DEAL::5653 2
+DEAL::5654 2
+DEAL::5655 2
+DEAL::5656 3
+DEAL::5657 3
+DEAL::5658 3
+DEAL::5659 3
+DEAL::5660 3
+DEAL::5661 3
+DEAL::5662 3
+DEAL::5663 3
+DEAL::5664 3
+DEAL::5665 3
+DEAL::5666 3
+DEAL::5667 3
+DEAL::5668 3
+DEAL::5669 3
+DEAL::5670 3
+DEAL::5671 3
+DEAL::5672 3
+DEAL::5673 3
+DEAL::5674 3
+DEAL::5675 3
+DEAL::5676 3
+DEAL::5677 0
+DEAL::5678 0
+DEAL::5679 0
+DEAL::5680 0
+DEAL::5681 0
+DEAL::5682 0
+DEAL::5683 0
+DEAL::5684 0
+DEAL::5685 0
+DEAL::5686 0
+DEAL::5687 0
+DEAL::5688 0
+DEAL::5689 0
+DEAL::5690 0
+DEAL::5691 0
+DEAL::5692 0
+DEAL::5693 0
+DEAL::5694 0
+DEAL::5695 0
+DEAL::5696 0
+DEAL::5697 0
+DEAL::5698 4
+DEAL::5699 4
+DEAL::5700 4
+DEAL::5701 4
+DEAL::5702 4
+DEAL::5703 4
+DEAL::5704 4
+DEAL::5705 4
+DEAL::5706 4
+DEAL::5707 4
+DEAL::5708 4
+DEAL::5709 4
+DEAL::5710 4
+DEAL::5711 4
+DEAL::5712 4
+DEAL::5713 4
+DEAL::5714 4
+DEAL::5715 4
+DEAL::5716 4
+DEAL::5717 4
+DEAL::5718 4
+DEAL::5719 2
+DEAL::5720 2
+DEAL::5721 2
+DEAL::5722 2
+DEAL::5723 2
+DEAL::5724 2
+DEAL::5725 2
+DEAL::5726 2
+DEAL::5727 2
+DEAL::5728 2
+DEAL::5729 2
+DEAL::5730 2
+DEAL::5731 2
+DEAL::5732 2
+DEAL::5733 2
+DEAL::5734 2
+DEAL::5735 2
+DEAL::5736 2
+DEAL::5737 2
+DEAL::5738 2
+DEAL::5739 2
+DEAL::5740 2
+DEAL::5741 2
+DEAL::5742 2
+DEAL::5743 2
+DEAL::5744 2
+DEAL::5745 2
+DEAL::5746 2
+DEAL::5747 2
+DEAL::5748 2
+DEAL::5749 2
+DEAL::5750 2
+DEAL::5751 2
+DEAL::5752 2
+DEAL::5753 2
+DEAL::5754 2
+DEAL::5755 2
+DEAL::5756 2
+DEAL::5757 2
+DEAL::5758 2
+DEAL::5759 2
+DEAL::5760 2
+DEAL::5761 3
+DEAL::5762 3
+DEAL::5763 3
+DEAL::5764 3
+DEAL::5765 3
+DEAL::5766 3
+DEAL::5767 3
+DEAL::5768 3
+DEAL::5769 3
+DEAL::5770 3
+DEAL::5771 3
+DEAL::5772 3
+DEAL::5773 3
+DEAL::5774 3
+DEAL::5775 3
+DEAL::5776 3
+DEAL::5777 3
+DEAL::5778 3
+DEAL::5779 3
+DEAL::5780 3
+DEAL::5781 3
+DEAL::5782 3
+DEAL::5783 3
+DEAL::5784 3
+DEAL::5785 3
+DEAL::5786 3
+DEAL::5787 3
+DEAL::5788 3
+DEAL::5789 3
+DEAL::5790 3
+DEAL::5791 3
+DEAL::5792 3
+DEAL::5793 3
+DEAL::5794 3
+DEAL::5795 3
+DEAL::5796 3
+DEAL::5797 3
+DEAL::5798 3
+DEAL::5799 3
+DEAL::5800 1
+DEAL::5801 1
+DEAL::5802 1
+DEAL::5803 1
+DEAL::5804 1
+DEAL::5805 1
+DEAL::5806 1
+DEAL::5807 1
+DEAL::5808 1
+DEAL::5809 1
+DEAL::5810 1
+DEAL::5811 1
+DEAL::5812 1
+DEAL::5813 1
+DEAL::5814 1
+DEAL::5815 1
+DEAL::5816 1
+DEAL::5817 1
+DEAL::5818 1
+DEAL::5819 1
+DEAL::5820 1
+DEAL::5821 1
+DEAL::5822 1
+DEAL::5823 1
+DEAL::5824 1
+DEAL::5825 1
+DEAL::5826 1
+DEAL::5827 1
+DEAL::5828 1
+DEAL::5829 1
+DEAL::5830 1
+DEAL::5831 1
+DEAL::5832 1
+DEAL::5833 1
+DEAL::5834 1
+DEAL::5835 1
+DEAL::5836 1
+DEAL::5837 1
+DEAL::5838 1
+DEAL::5839 1
+DEAL::5840 1
+DEAL::5841 1
+DEAL::5842 1
+DEAL::5843 1
+DEAL::5844 1
+DEAL::5845 1
+DEAL::5846 1
+DEAL::5847 1
+DEAL::5848 1
+DEAL::5849 1
+DEAL::5850 1
+DEAL::5851 1
+DEAL::5852 1
+DEAL::5853 1
+DEAL::5854 1
+DEAL::5855 1
+DEAL::5856 1
+DEAL::5857 1
+DEAL::5858 1
+DEAL::5859 1
+DEAL::5860 1
+DEAL::5861 1
+DEAL::5862 1
+DEAL::5863 0
+DEAL::5864 0
+DEAL::5865 0
+DEAL::5866 0
+DEAL::5867 0
+DEAL::5868 0
+DEAL::5869 0
+DEAL::5870 0
+DEAL::5871 0
+DEAL::5872 0
+DEAL::5873 0
+DEAL::5874 0
+DEAL::5875 0
+DEAL::5876 0
+DEAL::5877 0
+DEAL::5878 0
+DEAL::5879 0
+DEAL::5880 0
+DEAL::5881 0
+DEAL::5882 0
+DEAL::5883 0
+DEAL::5884 3
+DEAL::5885 3
+DEAL::5886 3
+DEAL::5887 3
+DEAL::5888 3
+DEAL::5889 3
+DEAL::5890 3
+DEAL::5891 3
+DEAL::5892 3
+DEAL::5893 3
+DEAL::5894 3
+DEAL::5895 3
+DEAL::5896 3
+DEAL::5897 3
+DEAL::5898 3
+DEAL::5899 3
+DEAL::5900 3
+DEAL::5901 3
+DEAL::5902 3
+DEAL::5903 3
+DEAL::5904 3
+DEAL::5905 3
+DEAL::5906 3
+DEAL::5907 3
+DEAL::5908 3
+DEAL::5909 3
+DEAL::5910 3
+DEAL::5911 3
+DEAL::5912 3
+DEAL::5913 3
+DEAL::5914 3
+DEAL::5915 3
+DEAL::5916 3
+DEAL::5917 3
+DEAL::5918 3
+DEAL::5919 3
+DEAL::5920 3
+DEAL::5921 3
+DEAL::5922 3
+DEAL::5923 3
+DEAL::5924 3
+DEAL::5925 3
+DEAL::5926 3
+DEAL::5927 3
+DEAL::5928 3
+DEAL::5929 3
+DEAL::5930 3
+DEAL::5931 3
+DEAL::5932 3
+DEAL::5933 3
+DEAL::5934 3
+DEAL::5935 3
+DEAL::5936 3
+DEAL::5937 3
+DEAL::5938 3
+DEAL::5939 3
+DEAL::5940 4
+DEAL::5941 4
+DEAL::5942 4
+DEAL::5943 4
+DEAL::5944 4
+DEAL::5945 4
+DEAL::5946 4
+DEAL::5947 4
+DEAL::5948 4
+DEAL::5949 4
+DEAL::5950 4
+DEAL::5951 4
+DEAL::5952 4
+DEAL::5953 4
+DEAL::5954 4
+DEAL::5955 4
+DEAL::5956 4
+DEAL::5957 4
+DEAL::5958 4
+DEAL::5959 4
+DEAL::5960 4
+DEAL::5961 3
+DEAL::5962 3
+DEAL::5963 3
+DEAL::5964 3
+DEAL::5965 3
+DEAL::5966 3
+DEAL::5967 3
+DEAL::5968 3
+DEAL::5969 3
+DEAL::5970 3
+DEAL::5971 3
+DEAL::5972 3
+DEAL::5973 3
+DEAL::5974 3
+DEAL::5975 3
+DEAL::5976 3
+DEAL::5977 3
+DEAL::5978 3
+DEAL::5979 3
+DEAL::5980 3
+DEAL::5981 3
+DEAL::5982 3
+DEAL::5983 3
+DEAL::5984 3
+DEAL::5985 3
+DEAL::5986 3
+DEAL::5987 3
+DEAL::5988 3
+DEAL::5989 3
+DEAL::5990 3
+DEAL::5991 3
+DEAL::5992 3
+DEAL::5993 3
+DEAL::5994 3
+DEAL::5995 3
+DEAL::5996 3
+DEAL::5997 3
+DEAL::5998 3
+DEAL::5999 3
+DEAL::6000 3
+DEAL::6001 3
+DEAL::6002 3
+DEAL::6003 2
+DEAL::6004 2
+DEAL::6005 2
+DEAL::6006 2
+DEAL::6007 2
+DEAL::6008 2
+DEAL::6009 2
+DEAL::6010 2
+DEAL::6011 2
+DEAL::6012 2
+DEAL::6013 2
+DEAL::6014 2
+DEAL::6015 2
+DEAL::6016 2
+DEAL::6017 2
+DEAL::6018 2
+DEAL::6019 2
+DEAL::6020 2
+DEAL::6021 2
+DEAL::6022 2
+DEAL::6023 2
+DEAL::6024 3
+DEAL::6025 3
+DEAL::6026 3
+DEAL::6027 3
+DEAL::6028 3
+DEAL::6029 3
+DEAL::6030 3
+DEAL::6031 3
+DEAL::6032 3
+DEAL::6033 3
+DEAL::6034 3
+DEAL::6035 3
+DEAL::6036 3
+DEAL::6037 3
+DEAL::6038 3
+DEAL::6039 3
+DEAL::6040 3
+DEAL::6041 3
+DEAL::6042 3
+DEAL::6043 3
+DEAL::6044 3
+DEAL::3D
+DEAL::Cell association:
+DEAL::0 4.00000
+DEAL::1 0
+DEAL::2 0
+DEAL::3 4.00000
+DEAL::4 2.00000
+DEAL::5 4.00000
+DEAL::6 2.00000
+DEAL::7 4.00000
+DEAL::8 1.00000
+DEAL::9 1.00000
+DEAL::10 1.00000
+DEAL::11 1.00000
+DEAL::12 1.00000
+DEAL::13 1.00000
+DEAL::14 0
+DEAL::15 0
+DEAL::16 0
+DEAL::17 0
+DEAL::18 0
+DEAL::19 0
+DEAL::20 1.00000
+DEAL::21 1.00000
+DEAL::22 2.00000
+DEAL::23 2.00000
+DEAL::24 2.00000
+DEAL::25 2.00000
+DEAL::26 3.00000
+DEAL::27 3.00000
+DEAL::28 3.00000
+DEAL::29 3.00000
+DEAL::30 3.00000
+DEAL::31 1.00000
+DEAL::32 1.00000
+DEAL::33 1.00000
+DEAL::34 1.00000
+DEAL::35 1.00000
+DEAL::36 1.00000
+DEAL::37 1.00000
+DEAL::38 1.00000
+DEAL::39 1.00000
+DEAL::40 1.00000
+DEAL::41 1.00000
+DEAL::42 1.00000
+DEAL::43 0
+DEAL::44 1.00000
+DEAL::45 0
+DEAL::46 0
+DEAL::47 0
+DEAL::48 0
+DEAL::49 0
+DEAL::50 1.00000
+DEAL::51 1.00000
+DEAL::52 1.00000
+DEAL::53 2.00000
+DEAL::54 2.00000
+DEAL::55 2.00000
+DEAL::56 2.00000
+DEAL::57 2.00000
+DEAL::58 0
+DEAL::59 0
+DEAL::60 0
+DEAL::61 2.00000
+DEAL::62 0
+DEAL::63 2.00000
+DEAL::64 2.00000
+DEAL::65 2.00000
+DEAL::66 2.00000
+DEAL::67 2.00000
+DEAL::68 2.00000
+DEAL::69 2.00000
+DEAL::70 2.00000
+DEAL::71 2.00000
+DEAL::72 2.00000
+DEAL::73 2.00000
+DEAL::74 1.00000
+DEAL::75 1.00000
+DEAL::76 1.00000
+DEAL::77 1.00000
+DEAL::78 1.00000
+DEAL::79 1.00000
+DEAL::80 1.00000
+DEAL::81 1.00000
+DEAL::82 1.00000
+DEAL::83 1.00000
+DEAL::84 1.00000
+DEAL::85 1.00000
+DEAL::86 1.00000
+DEAL::87 1.00000
+DEAL::88 1.00000
+DEAL::89 3.00000
+DEAL::90 1.00000
+DEAL::91 3.00000
+DEAL::92 3.00000
+DEAL::93 3.00000
+DEAL::94 3.00000
+DEAL::95 1.00000
+DEAL::96 3.00000
+DEAL::97 3.00000
+DEAL::98 3.00000
+DEAL::99 3.00000
+DEAL::100 4.00000
+DEAL::101 4.00000
+DEAL::102 4.00000
+DEAL::103 4.00000
+DEAL::104 4.00000
+DEAL::105 4.00000
+DEAL::106 4.00000
+DEAL::107 0
+DEAL::108 0
+DEAL::109 0
+DEAL::110 0
+DEAL::111 0
+DEAL::112 0
+DEAL::113 0
+DEAL::114 0
+DEAL::115 0
+DEAL::116 0
+DEAL::117 0
+DEAL::118 0
+DEAL::119 0
+DEAL::120 0
+DEAL::121 0
+DEAL::122 2.00000
+DEAL::123 2.00000
+DEAL::124 2.00000
+DEAL::125 4.00000
+DEAL::126 2.00000
+DEAL::127 4.00000
+DEAL::128 2.00000
+DEAL::129 2.00000
+DEAL::130 2.00000
+DEAL::131 2.00000
+DEAL::132 4.00000
+DEAL::133 2.00000
+DEAL::134 4.00000
+DEAL::135 4.00000
+DEAL::136 2.00000
+DEAL::137 2.00000
+DEAL::138 2.00000
+DEAL::139 2.00000
+DEAL::140 2.00000
+DEAL::141 2.00000
+DEAL::142 2.00000
+DEAL::143 4.00000
+DEAL::144 4.00000
+DEAL::145 3.00000
+DEAL::146 3.00000
+DEAL::147 4.00000
+DEAL::148 4.00000
+DEAL::149 4.00000
+DEAL::150 3.00000
+DEAL::151 3.00000
+DEAL::152 3.00000
+DEAL::153 3.00000
+DEAL::154 3.00000
+DEAL::155 3.00000
+DEAL::156 3.00000
+DEAL::157 3.00000
+DEAL::158 3.00000
+DEAL::159 3.00000
+DEAL::160 3.00000
+DEAL::161 3.00000
+DEAL::162 3.00000
+DEAL::163 3.00000
+DEAL::164 4.00000
+DEAL::165 4.00000
+DEAL::166 4.00000
+DEAL::167 4.00000
+DEAL::168 4.00000
+DEAL::169 4.00000
+DEAL::170 4.00000
+DEAL::171 0
+DEAL::172 0
+DEAL::173 0
+DEAL::174 0
+DEAL::175 0
+DEAL::176 0
+DEAL::177 0
+DEAL::178 0
+DEAL::179 0
+DEAL::180 0
+DEAL::181 1.00000
+DEAL::182 1.00000
+DEAL::183 0
+DEAL::184 0
+DEAL::185 0
+DEAL::186 0
+DEAL::187 0
+DEAL::188 0
+DEAL::189 1.00000
+DEAL::190 1.00000
+DEAL::191 0
+DEAL::192 0
+DEAL::193 0
+DEAL::194 3.00000
+DEAL::195 1.00000
+DEAL::196 1.00000
+DEAL::197 1.00000
+DEAL::198 1.00000
+DEAL::199 0
+DEAL::200 1.00000
+DEAL::201 0
+DEAL::202 1.00000
+DEAL::203 1.00000
+DEAL::204 1.00000
+DEAL::205 1.00000
+DEAL::206 1.00000
+DEAL::207 1.00000
+DEAL::208 2.00000
+DEAL::209 1.00000
+DEAL::210 1.00000
+DEAL::211 1.00000
+DEAL::212 1.00000
+DEAL::213 1.00000
+DEAL::214 1.00000
+DEAL::215 1.00000
+DEAL::216 1.00000
+DEAL::217 1.00000
+DEAL::218 1.00000
+DEAL::219 1.00000
+DEAL::220 1.00000
+DEAL::221 1.00000
+DEAL::222 1.00000
+DEAL::223 1.00000
+DEAL::224 1.00000
+DEAL::225 1.00000
+DEAL::226 3.00000
+DEAL::227 1.00000
+DEAL::228 1.00000
+DEAL::229 1.00000
+DEAL::230 3.00000
+DEAL::231 1.00000
+DEAL::232 3.00000
+DEAL::233 3.00000
+DEAL::234 3.00000
+DEAL::235 1.00000
+DEAL::236 1.00000
+DEAL::237 1.00000
+DEAL::238 1.00000
+DEAL::239 1.00000
+DEAL::240 1.00000
+DEAL::241 1.00000
+DEAL::242 1.00000
+DEAL::243 1.00000
+DEAL::244 1.00000
+DEAL::245 1.00000
+DEAL::246 4.00000
+DEAL::247 1.00000
+DEAL::248 2.00000
+DEAL::249 3.00000
+DEAL::250 3.00000
+DEAL::251 4.00000
+DEAL::252 2.00000
+DEAL::253 4.00000
+DEAL::254 4.00000
+DEAL::255 2.00000
+DEAL::256 2.00000
+DEAL::257 4.00000
+DEAL::258 4.00000
+DEAL::259 3.00000
+DEAL::260 4.00000
+DEAL::261 3.00000
+DEAL::262 3.00000
+DEAL::263 3.00000
+DEAL::264 3.00000
+DEAL::265 3.00000
+DEAL::266 3.00000
+DEAL::267 3.00000
+DEAL::268 2.00000
+DEAL::269 3.00000
+DEAL::270 3.00000
+DEAL::271 3.00000
+DEAL::272 2.00000
+DEAL::273 3.00000
+DEAL::274 4.00000
+DEAL::275 2.00000
+DEAL::276 2.00000
+DEAL::277 4.00000
+DEAL::278 4.00000
+DEAL::279 2.00000
+DEAL::280 2.00000
+DEAL::281 4.00000
+DEAL::282 4.00000
+DEAL::283 3.00000
+DEAL::284 3.00000
+DEAL::285 3.00000
+DEAL::286 3.00000
+DEAL::287 3.00000
+DEAL::288 4.00000
+DEAL::289 3.00000
+DEAL::290 4.00000
+DEAL::291 0
+DEAL::292 0
+DEAL::293 0
+DEAL::294 0
+DEAL::295 0
+DEAL::296 0
+DEAL::297 0
+DEAL::298 0
+DEAL::299 0
+DEAL::300 0
+DEAL::301 0
+DEAL::302 4.00000
+DEAL::303 0
+DEAL::304 4.00000
+DEAL::305 4.00000
+DEAL::306 4.00000
+DEAL::307 0
+DEAL::308 0
+DEAL::309 0
+DEAL::310 0
+DEAL::311 0
+DEAL::312 0
+DEAL::313 0
+DEAL::314 0
+DEAL::315 4.00000
+DEAL::316 4.00000
+DEAL::317 4.00000
+DEAL::318 4.00000
+DEAL::319 4.00000
+DEAL::320 4.00000
+DEAL::321 4.00000
+DEAL::322 4.00000
+DEAL::323 2.00000
+DEAL::324 2.00000
+DEAL::325 2.00000
+DEAL::326 2.00000
+DEAL::327 2.00000
+DEAL::328 2.00000
+DEAL::329 2.00000
+DEAL::330 2.00000
+DEAL::331 0
+DEAL::332 0
+DEAL::333 3.00000
+DEAL::334 3.00000
+DEAL::335 4.00000
+DEAL::336 4.00000
+DEAL::337 3.00000
+DEAL::338 3.00000
+DEAL::339 4.00000
+DEAL::340 4.00000
+DEAL::341 4.00000
+DEAL::342 4.00000
+DEAL::343 4.00000
+DEAL::344 4.00000
+DEAL::345 4.00000
+DEAL::346 4.00000
+DEAL::347 4.00000
+DEAL::348 4.00000
+DEAL::349 4.00000
+DEAL::350 4.00000
+DEAL::351 4.00000
+DEAL::352 4.00000
+DEAL::353 4.00000
+DEAL::354 4.00000
+DEAL::355 3.00000
+DEAL::356 3.00000
+DEAL::357 3.00000
+DEAL::358 3.00000
+DEAL::359 3.00000
+DEAL::360 3.00000
+DEAL::361 3.00000
+DEAL::362 3.00000
+DEAL::363 4.00000
+DEAL::364 4.00000
+DEAL::365 3.00000
+DEAL::366 4.00000
+DEAL::367 4.00000
+DEAL::368 4.00000
+DEAL::369 4.00000
+DEAL::370 4.00000
+DEAL::371 4.00000
+DEAL::372 4.00000
+DEAL::373 4.00000
+DEAL::374 4.00000
+DEAL::375 4.00000
+DEAL::376 4.00000
+DEAL::377 4.00000
+DEAL::378 4.00000
+DEAL::379 2.00000
+DEAL::380 2.00000
+DEAL::381 4.00000
+DEAL::382 4.00000
+DEAL::383 2.00000
+DEAL::384 2.00000
+DEAL::385 4.00000
+DEAL::386 4.00000
+DEAL::387 4.00000
+DEAL::388 4.00000
+DEAL::389 4.00000
+DEAL::390 4.00000
+DEAL::391 4.00000
+DEAL::392 4.00000
+DEAL::393 4.00000
+DEAL::394 4.00000
+DEAL::395 2.00000
+DEAL::396 2.00000
+DEAL::397 4.00000
+DEAL::398 4.00000
+DEAL::399 2.00000
+DEAL::400 2.00000
+DEAL::401 4.00000
+DEAL::402 4.00000
+DEAL::403 4.00000
+DEAL::404 4.00000
+DEAL::405 4.00000
+DEAL::406 4.00000
+DEAL::407 4.00000
+DEAL::408 4.00000
+DEAL::409 4.00000
+DEAL::410 4.00000
+DEAL::411 4.00000
+DEAL::412 4.00000
+DEAL::413 4.00000
+DEAL::414 4.00000
+DEAL::415 4.00000
+DEAL::416 4.00000
+DEAL::417 4.00000
+DEAL::418 4.00000
+DEAL::419 1.00000
+DEAL::420 1.00000
+DEAL::421 1.00000
+DEAL::422 1.00000
+DEAL::423 1.00000
+DEAL::424 1.00000
+DEAL::425 1.00000
+DEAL::426 1.00000
+DEAL::427 0
+DEAL::428 0
+DEAL::429 0
+DEAL::430 0
+DEAL::431 0
+DEAL::432 0
+DEAL::433 0
+DEAL::434 2.00000
+DEAL::435 2.00000
+DEAL::436 2.00000
+DEAL::437 2.00000
+DEAL::438 2.00000
+DEAL::439 2.00000
+DEAL::440 2.00000
+DEAL::441 3.00000
+DEAL::442 3.00000
+DEAL::443 3.00000
+DEAL::444 3.00000
+DEAL::445 3.00000
+DEAL::446 3.00000
+DEAL::447 3.00000
+DEAL::448 1.00000
+DEAL::449 1.00000
+DEAL::450 1.00000
+DEAL::451 1.00000
+DEAL::452 1.00000
+DEAL::453 1.00000
+DEAL::454 1.00000
+DEAL::455 1.00000
+DEAL::456 0
+DEAL::457 0
+DEAL::458 0
+DEAL::459 0
+DEAL::460 0
+DEAL::461 0
+DEAL::462 0
+DEAL::463 0
+DEAL::464 1.00000
+DEAL::465 1.00000
+DEAL::466 1.00000
+DEAL::467 1.00000
+DEAL::468 1.00000
+DEAL::469 2.00000
+DEAL::470 1.00000
+DEAL::471 2.00000
+DEAL::472 3.00000
+DEAL::473 3.00000
+DEAL::474 3.00000
+DEAL::475 3.00000
+DEAL::476 3.00000
+DEAL::477 3.00000
+DEAL::478 3.00000
+DEAL::479 3.00000
+DEAL::480 3.00000
+DEAL::481 3.00000
+DEAL::482 3.00000
+DEAL::483 3.00000
+DEAL::484 3.00000
+DEAL::485 3.00000
+DEAL::486 3.00000
+DEAL::487 3.00000
+DEAL::488 1.00000
+DEAL::489 1.00000
+DEAL::490 1.00000
+DEAL::491 1.00000
+DEAL::492 1.00000
+DEAL::493 1.00000
+DEAL::494 1.00000
+DEAL::495 1.00000
+DEAL::496 1.00000
+DEAL::497 1.00000
+DEAL::498 1.00000
+DEAL::499 1.00000
+DEAL::500 1.00000
+DEAL::501 1.00000
+DEAL::502 1.00000
+DEAL::503 1.00000
+DEAL::504 0
+DEAL::505 0
+DEAL::506 0
+DEAL::507 0
+DEAL::508 0
+DEAL::509 0
+DEAL::510 0
+DEAL::511 0
+DEAL::512 0
+DEAL::513 0
+DEAL::514 0
+DEAL::515 0
+DEAL::516 0
+DEAL::517 0
+DEAL::518 0
+DEAL::519 0
+DEAL::520 0
+DEAL::521 0
+DEAL::522 0
+DEAL::523 0
+DEAL::524 0
+DEAL::525 0
+DEAL::526 0
+DEAL::527 0
+DEAL::528 0
+DEAL::529 0
+DEAL::530 0
+DEAL::531 0
+DEAL::532 0
+DEAL::533 0
+DEAL::534 0
+DEAL::535 0
+DEAL::536 0
+DEAL::537 1.00000
+DEAL::538 0
+DEAL::539 1.00000
+DEAL::540 0
+DEAL::541 1.00000
+DEAL::542 0
+DEAL::543 1.00000
+DEAL::544 0
+DEAL::545 2.00000
+DEAL::546 0
+DEAL::547 2.00000
+DEAL::548 0
+DEAL::549 2.00000
+DEAL::550 0
+DEAL::551 2.00000
+DEAL::552 2.00000
+DEAL::553 2.00000
+DEAL::554 2.00000
+DEAL::555 2.00000
+DEAL::556 2.00000
+DEAL::557 2.00000
+DEAL::558 2.00000
+DEAL::559 2.00000
+DEAL::560 2.00000
+DEAL::561 2.00000
+DEAL::562 2.00000
+DEAL::563 2.00000
+DEAL::564 2.00000
+DEAL::565 2.00000
+DEAL::566 2.00000
+DEAL::567 2.00000
+DEAL::568 2.00000
+DEAL::569 2.00000
+DEAL::570 2.00000
+DEAL::571 2.00000
+DEAL::572 2.00000
+DEAL::573 2.00000
+DEAL::574 2.00000
+DEAL::575 2.00000
+DEAL::576 2.00000
+DEAL::577 2.00000
+DEAL::578 2.00000
+DEAL::579 2.00000
+DEAL::580 2.00000
+DEAL::581 2.00000
+DEAL::582 2.00000
+DEAL::583 2.00000
+DEAL::584 2.00000
+DEAL::585 2.00000
+DEAL::586 2.00000
+DEAL::587 2.00000
+DEAL::588 2.00000
+DEAL::589 2.00000
+DEAL::590 2.00000
+DEAL::591 2.00000
+DEAL::592 1.00000
+DEAL::593 1.00000
+DEAL::594 1.00000
+DEAL::595 1.00000
+DEAL::596 1.00000
+DEAL::597 1.00000
+DEAL::598 1.00000
+DEAL::599 1.00000
+DEAL::600 1.00000
+DEAL::601 1.00000
+DEAL::602 1.00000
+DEAL::603 1.00000
+DEAL::604 1.00000
+DEAL::605 1.00000
+DEAL::606 1.00000
+DEAL::607 1.00000
+DEAL::608 3.00000
+DEAL::609 3.00000
+DEAL::610 3.00000
+DEAL::611 3.00000
+DEAL::612 3.00000
+DEAL::613 3.00000
+DEAL::614 3.00000
+DEAL::615 3.00000
+DEAL::616 3.00000
+DEAL::617 3.00000
+DEAL::618 3.00000
+DEAL::619 3.00000
+DEAL::620 3.00000
+DEAL::621 3.00000
+DEAL::622 3.00000
+DEAL::623 3.00000
+DEAL::624 3.00000
+DEAL::625 3.00000
+DEAL::626 3.00000
+DEAL::627 3.00000
+DEAL::628 3.00000
+DEAL::629 3.00000
+DEAL::630 3.00000
+DEAL::631 3.00000
+DEAL::632 3.00000
+DEAL::633 3.00000
+DEAL::634 3.00000
+DEAL::635 3.00000
+DEAL::636 3.00000
+DEAL::637 3.00000
+DEAL::638 3.00000
+DEAL::639 3.00000
+DEAL::640 4.00000
+DEAL::641 4.00000
+DEAL::642 4.00000
+DEAL::643 4.00000
+DEAL::644 4.00000
+DEAL::645 4.00000
+DEAL::646 4.00000
+DEAL::647 4.00000
+DEAL::648 0
+DEAL::649 0
+DEAL::650 0
+DEAL::651 0
+DEAL::652 0
+DEAL::653 0
+DEAL::654 0
+DEAL::655 0
+DEAL::656 2.00000
+DEAL::657 2.00000
+DEAL::658 2.00000
+DEAL::659 2.00000
+DEAL::660 2.00000
+DEAL::661 2.00000
+DEAL::662 2.00000
+DEAL::663 2.00000
+DEAL::664 2.00000
+DEAL::665 2.00000
+DEAL::666 2.00000
+DEAL::667 2.00000
+DEAL::668 4.00000
+DEAL::669 4.00000
+DEAL::670 4.00000
+DEAL::671 4.00000
+DEAL::672 2.00000
+DEAL::673 2.00000
+DEAL::674 2.00000
+DEAL::675 2.00000
+DEAL::676 2.00000
+DEAL::677 2.00000
+DEAL::678 2.00000
+DEAL::679 2.00000
+DEAL::680 4.00000
+DEAL::681 4.00000
+DEAL::682 4.00000
+DEAL::683 4.00000
+DEAL::684 4.00000
+DEAL::685 4.00000
+DEAL::686 4.00000
+DEAL::687 4.00000
+DEAL::688 3.00000
+DEAL::689 3.00000
+DEAL::690 3.00000
+DEAL::691 3.00000
+DEAL::692 3.00000
+DEAL::693 3.00000
+DEAL::694 3.00000
+DEAL::695 3.00000
+DEAL::696 3.00000
+DEAL::697 3.00000
+DEAL::698 3.00000
+DEAL::699 3.00000
+DEAL::700 3.00000
+DEAL::701 3.00000
+DEAL::702 3.00000
+DEAL::703 3.00000
+DEAL::704 4.00000
+DEAL::705 4.00000
+DEAL::706 4.00000
+DEAL::707 4.00000
+DEAL::708 4.00000
+DEAL::709 4.00000
+DEAL::710 4.00000
+DEAL::711 4.00000
+DEAL::712 0
+DEAL::713 0
+DEAL::714 0
+DEAL::715 0
+DEAL::716 0
+DEAL::717 0
+DEAL::718 0
+DEAL::719 0
+DEAL::720 2.00000
+DEAL::721 2.00000
+DEAL::722 2.00000
+DEAL::723 2.00000
+DEAL::724 2.00000
+DEAL::725 2.00000
+DEAL::726 2.00000
+DEAL::727 2.00000
+DEAL::728 3.00000
+DEAL::729 3.00000
+DEAL::730 3.00000
+DEAL::731 3.00000
+DEAL::732 3.00000
+DEAL::733 3.00000
+DEAL::734 3.00000
+DEAL::735 3.00000
+DEAL::DoF association:
+DEAL::0 4
+DEAL::1 4
+DEAL::2 3
+DEAL::3 4
+DEAL::4 3
+DEAL::5 4
+DEAL::6 3
+DEAL::7 4
+DEAL::8 4
+DEAL::9 4
+DEAL::10 4
+DEAL::11 4
+DEAL::12 4
+DEAL::13 4
+DEAL::14 4
+DEAL::15 4
+DEAL::16 4
+DEAL::17 4
+DEAL::18 4
+DEAL::19 4
+DEAL::20 4
+DEAL::21 4
+DEAL::22 4
+DEAL::23 4
+DEAL::24 4
+DEAL::25 4
+DEAL::26 4
+DEAL::27 0
+DEAL::28 4
+DEAL::29 4
+DEAL::30 4
+DEAL::31 0
+DEAL::32 0
+DEAL::33 4
+DEAL::34 4
+DEAL::35 0
+DEAL::36 0
+DEAL::37 0
+DEAL::38 0
+DEAL::39 0
+DEAL::40 4
+DEAL::41 0
+DEAL::42 0
+DEAL::43 0
+DEAL::44 0
+DEAL::45 0
+DEAL::46 4
+DEAL::47 0
+DEAL::48 0
+DEAL::49 0
+DEAL::50 0
+DEAL::51 0
+DEAL::52 0
+DEAL::53 0
+DEAL::54 0
+DEAL::55 0
+DEAL::56 4
+DEAL::57 0
+DEAL::58 0
+DEAL::59 4
+DEAL::60 0
+DEAL::61 0
+DEAL::62 0
+DEAL::63 0
+DEAL::64 0
+DEAL::65 0
+DEAL::66 0
+DEAL::67 0
+DEAL::68 0
+DEAL::69 0
+DEAL::70 0
+DEAL::71 0
+DEAL::72 0
+DEAL::73 0
+DEAL::74 0
+DEAL::75 0
+DEAL::76 0
+DEAL::77 0
+DEAL::78 2
+DEAL::79 2
+DEAL::80 2
+DEAL::81 4
+DEAL::82 2
+DEAL::83 4
+DEAL::84 4
+DEAL::85 4
+DEAL::86 4
+DEAL::87 4
+DEAL::88 2
+DEAL::89 2
+DEAL::90 2
+DEAL::91 4
+DEAL::92 4
+DEAL::93 4
+DEAL::94 4
+DEAL::95 4
+DEAL::96 2
+DEAL::97 2
+DEAL::98 2
+DEAL::99 2
+DEAL::100 2
+DEAL::101 2
+DEAL::102 2
+DEAL::103 2
+DEAL::104 2
+DEAL::105 2
+DEAL::106 2
+DEAL::107 2
+DEAL::108 2
+DEAL::109 2
+DEAL::110 2
+DEAL::111 2
+DEAL::112 2
+DEAL::113 2
+DEAL::114 4
+DEAL::115 2
+DEAL::116 4
+DEAL::117 2
+DEAL::118 4
+DEAL::119 2
+DEAL::120 4
+DEAL::121 4
+DEAL::122 2
+DEAL::123 4
+DEAL::124 4
+DEAL::125 4
+DEAL::126 4
+DEAL::127 4
+DEAL::128 4
+DEAL::129 4
+DEAL::130 4
+DEAL::131 4
+DEAL::132 2
+DEAL::133 2
+DEAL::134 2
+DEAL::135 2
+DEAL::136 2
+DEAL::137 2
+DEAL::138 2
+DEAL::139 2
+DEAL::140 2
+DEAL::141 2
+DEAL::142 2
+DEAL::143 2
+DEAL::144 4
+DEAL::145 4
+DEAL::146 4
+DEAL::147 4
+DEAL::148 4
+DEAL::149 4
+DEAL::150 4
+DEAL::151 4
+DEAL::152 4
+DEAL::153 4
+DEAL::154 4
+DEAL::155 4
+DEAL::156 4
+DEAL::157 4
+DEAL::158 4
+DEAL::159 4
+DEAL::160 4
+DEAL::161 4
+DEAL::162 1
+DEAL::163 1
+DEAL::164 1
+DEAL::165 1
+DEAL::166 1
+DEAL::167 1
+DEAL::168 1
+DEAL::169 1
+DEAL::170 1
+DEAL::171 1
+DEAL::172 1
+DEAL::173 1
+DEAL::174 1
+DEAL::175 1
+DEAL::176 1
+DEAL::177 1
+DEAL::178 1
+DEAL::179 1
+DEAL::180 1
+DEAL::181 1
+DEAL::182 1
+DEAL::183 1
+DEAL::184 1
+DEAL::185 1
+DEAL::186 1
+DEAL::187 1
+DEAL::188 1
+DEAL::189 1
+DEAL::190 1
+DEAL::191 1
+DEAL::192 1
+DEAL::193 1
+DEAL::194 1
+DEAL::195 1
+DEAL::196 1
+DEAL::197 1
+DEAL::198 1
+DEAL::199 1
+DEAL::200 1
+DEAL::201 1
+DEAL::202 1
+DEAL::203 1
+DEAL::204 1
+DEAL::205 1
+DEAL::206 1
+DEAL::207 1
+DEAL::208 1
+DEAL::209 1
+DEAL::210 1
+DEAL::211 1
+DEAL::212 1
+DEAL::213 1
+DEAL::214 1
+DEAL::215 1
+DEAL::216 1
+DEAL::217 1
+DEAL::218 1
+DEAL::219 1
+DEAL::220 1
+DEAL::221 1
+DEAL::222 1
+DEAL::223 1
+DEAL::224 1
+DEAL::225 0
+DEAL::226 0
+DEAL::227 1
+DEAL::228 1
+DEAL::229 1
+DEAL::230 0
+DEAL::231 1
+DEAL::232 0
+DEAL::233 1
+DEAL::234 1
+DEAL::235 1
+DEAL::236 1
+DEAL::237 1
+DEAL::238 1
+DEAL::239 1
+DEAL::240 1
+DEAL::241 1
+DEAL::242 1
+DEAL::243 0
+DEAL::244 1
+DEAL::245 0
+DEAL::246 0
+DEAL::247 0
+DEAL::248 1
+DEAL::249 1
+DEAL::250 1
+DEAL::251 1
+DEAL::252 1
+DEAL::253 0
+DEAL::254 1
+DEAL::255 1
+DEAL::256 1
+DEAL::257 1
+DEAL::258 1
+DEAL::259 1
+DEAL::260 1
+DEAL::261 1
+DEAL::262 1
+DEAL::263 1
+DEAL::264 1
+DEAL::265 1
+DEAL::266 1
+DEAL::267 0
+DEAL::268 0
+DEAL::269 0
+DEAL::270 0
+DEAL::271 0
+DEAL::272 0
+DEAL::273 0
+DEAL::274 0
+DEAL::275 0
+DEAL::276 0
+DEAL::277 0
+DEAL::278 0
+DEAL::279 0
+DEAL::280 0
+DEAL::281 0
+DEAL::282 0
+DEAL::283 0
+DEAL::284 0
+DEAL::285 0
+DEAL::286 0
+DEAL::287 0
+DEAL::288 0
+DEAL::289 0
+DEAL::290 0
+DEAL::291 0
+DEAL::292 0
+DEAL::293 0
+DEAL::294 0
+DEAL::295 0
+DEAL::296 0
+DEAL::297 0
+DEAL::298 0
+DEAL::299 0
+DEAL::300 0
+DEAL::301 0
+DEAL::302 0
+DEAL::303 0
+DEAL::304 0
+DEAL::305 0
+DEAL::306 0
+DEAL::307 0
+DEAL::308 0
+DEAL::309 0
+DEAL::310 0
+DEAL::311 0
+DEAL::312 0
+DEAL::313 0
+DEAL::314 0
+DEAL::315 0
+DEAL::316 0
+DEAL::317 1
+DEAL::318 0
+DEAL::319 0
+DEAL::320 0
+DEAL::321 0
+DEAL::322 0
+DEAL::323 0
+DEAL::324 0
+DEAL::325 0
+DEAL::326 0
+DEAL::327 0
+DEAL::328 0
+DEAL::329 0
+DEAL::330 0
+DEAL::331 0
+DEAL::332 2
+DEAL::333 0
+DEAL::334 0
+DEAL::335 0
+DEAL::336 0
+DEAL::337 0
+DEAL::338 0
+DEAL::339 0
+DEAL::340 0
+DEAL::341 0
+DEAL::342 0
+DEAL::343 0
+DEAL::344 0
+DEAL::345 0
+DEAL::346 0
+DEAL::347 0
+DEAL::348 0
+DEAL::349 0
+DEAL::350 0
+DEAL::351 0
+DEAL::352 0
+DEAL::353 0
+DEAL::354 0
+DEAL::355 0
+DEAL::356 0
+DEAL::357 0
+DEAL::358 0
+DEAL::359 0
+DEAL::360 0
+DEAL::361 0
+DEAL::362 0
+DEAL::363 0
+DEAL::364 0
+DEAL::365 0
+DEAL::366 0
+DEAL::367 0
+DEAL::368 0
+DEAL::369 0
+DEAL::370 0
+DEAL::371 0
+DEAL::372 1
+DEAL::373 1
+DEAL::374 0
+DEAL::375 0
+DEAL::376 1
+DEAL::377 1
+DEAL::378 1
+DEAL::379 1
+DEAL::380 1
+DEAL::381 0
+DEAL::382 2
+DEAL::383 1
+DEAL::384 2
+DEAL::385 1
+DEAL::386 1
+DEAL::387 1
+DEAL::388 1
+DEAL::389 1
+DEAL::390 1
+DEAL::391 1
+DEAL::392 1
+DEAL::393 2
+DEAL::394 1
+DEAL::395 1
+DEAL::396 2
+DEAL::397 3
+DEAL::398 3
+DEAL::399 1
+DEAL::400 1
+DEAL::401 3
+DEAL::402 1
+DEAL::403 2
+DEAL::404 3
+DEAL::405 3
+DEAL::406 2
+DEAL::407 1
+DEAL::408 1
+DEAL::409 3
+DEAL::410 1
+DEAL::411 1
+DEAL::412 1
+DEAL::413 2
+DEAL::414 2
+DEAL::415 2
+DEAL::416 2
+DEAL::417 2
+DEAL::418 1
+DEAL::419 2
+DEAL::420 2
+DEAL::421 2
+DEAL::422 2
+DEAL::423 2
+DEAL::424 2
+DEAL::425 2
+DEAL::426 2
+DEAL::427 2
+DEAL::428 1
+DEAL::429 2
+DEAL::430 2
+DEAL::431 0
+DEAL::432 4
+DEAL::433 2
+DEAL::434 0
+DEAL::435 2
+DEAL::436 2
+DEAL::437 2
+DEAL::438 0
+DEAL::439 0
+DEAL::440 2
+DEAL::441 0
+DEAL::442 2
+DEAL::443 2
+DEAL::444 2
+DEAL::445 2
+DEAL::446 2
+DEAL::447 2
+DEAL::448 4
+DEAL::449 4
+DEAL::450 2
+DEAL::451 4
+DEAL::452 3
+DEAL::453 2
+DEAL::454 2
+DEAL::455 2
+DEAL::456 2
+DEAL::457 2
+DEAL::458 2
+DEAL::459 2
+DEAL::460 2
+DEAL::461 2
+DEAL::462 2
+DEAL::463 4
+DEAL::464 2
+DEAL::465 2
+DEAL::466 2
+DEAL::467 2
+DEAL::468 2
+DEAL::469 2
+DEAL::470 2
+DEAL::471 1
+DEAL::472 3
+DEAL::473 3
+DEAL::474 3
+DEAL::475 3
+DEAL::476 3
+DEAL::477 3
+DEAL::478 3
+DEAL::479 3
+DEAL::480 3
+DEAL::481 3
+DEAL::482 1
+DEAL::483 3
+DEAL::484 3
+DEAL::485 3
+DEAL::486 3
+DEAL::487 3
+DEAL::488 3
+DEAL::489 3
+DEAL::490 3
+DEAL::491 3
+DEAL::492 3
+DEAL::493 3
+DEAL::494 3
+DEAL::495 3
+DEAL::496 3
+DEAL::497 3
+DEAL::498 3
+DEAL::499 3
+DEAL::500 3
+DEAL::501 3
+DEAL::502 3
+DEAL::503 3
+DEAL::504 3
+DEAL::505 3
+DEAL::506 3
+DEAL::507 3
+DEAL::508 3
+DEAL::509 3
+DEAL::510 3
+DEAL::511 3
+DEAL::512 3
+DEAL::513 3
+DEAL::514 3
+DEAL::515 3
+DEAL::516 3
+DEAL::517 3
+DEAL::518 3
+DEAL::519 3
+DEAL::520 3
+DEAL::521 3
+DEAL::522 3
+DEAL::523 3
+DEAL::524 3
+DEAL::525 3
+DEAL::526 3
+DEAL::527 3
+DEAL::528 3
+DEAL::529 3
+DEAL::530 3
+DEAL::531 3
+DEAL::532 3
+DEAL::533 3
+DEAL::534 4
+DEAL::535 3
+DEAL::536 3
+DEAL::537 3
+DEAL::538 3
+DEAL::539 3
+DEAL::540 3
+DEAL::541 3
+DEAL::542 3
+DEAL::543 3
+DEAL::544 3
+DEAL::545 3
+DEAL::546 3
+DEAL::547 3
+DEAL::548 3
+DEAL::549 3
+DEAL::550 3
+DEAL::551 3
+DEAL::552 3
+DEAL::553 3
+DEAL::554 3
+DEAL::555 3
+DEAL::556 3
+DEAL::557 3
+DEAL::558 3
+DEAL::559 3
+DEAL::560 3
+DEAL::561 3
+DEAL::562 3
+DEAL::563 3
+DEAL::564 1
+DEAL::565 1
+DEAL::566 1
+DEAL::567 1
+DEAL::568 1
+DEAL::569 1
+DEAL::570 1
+DEAL::571 1
+DEAL::572 1
+DEAL::573 1
+DEAL::574 1
+DEAL::575 1
+DEAL::576 1
+DEAL::577 1
+DEAL::578 1
+DEAL::579 1
+DEAL::580 1
+DEAL::581 1
+DEAL::582 1
+DEAL::583 1
+DEAL::584 1
+DEAL::585 1
+DEAL::586 1
+DEAL::587 1
+DEAL::588 1
+DEAL::589 1
+DEAL::590 1
+DEAL::591 1
+DEAL::592 0
+DEAL::593 1
+DEAL::594 1
+DEAL::595 1
+DEAL::596 1
+DEAL::597 1
+DEAL::598 0
+DEAL::599 1
+DEAL::600 1
+DEAL::601 1
+DEAL::602 0
+DEAL::603 1
+DEAL::604 1
+DEAL::605 1
+DEAL::606 1
+DEAL::607 1
+DEAL::608 1
+DEAL::609 1
+DEAL::610 1
+DEAL::611 1
+DEAL::612 1
+DEAL::613 1
+DEAL::614 1
+DEAL::615 1
+DEAL::616 1
+DEAL::617 1
+DEAL::618 1
+DEAL::619 0
+DEAL::620 1
+DEAL::621 1
+DEAL::622 1
+DEAL::623 1
+DEAL::624 1
+DEAL::625 0
+DEAL::626 0
+DEAL::627 0
+DEAL::628 1
+DEAL::629 0
+DEAL::630 1
+DEAL::631 0
+DEAL::632 1
+DEAL::633 1
+DEAL::634 1
+DEAL::635 1
+DEAL::636 1
+DEAL::637 1
+DEAL::638 1
+DEAL::639 1
+DEAL::640 1
+DEAL::641 1
+DEAL::642 0
+DEAL::643 1
+DEAL::644 1
+DEAL::645 1
+DEAL::646 0
+DEAL::647 1
+DEAL::648 1
+DEAL::649 0
+DEAL::650 1
+DEAL::651 1
+DEAL::652 1
+DEAL::653 1
+DEAL::654 0
+DEAL::655 1
+DEAL::656 0
+DEAL::657 1
+DEAL::658 1
+DEAL::659 1
+DEAL::660 1
+DEAL::661 1
+DEAL::662 0
+DEAL::663 1
+DEAL::664 0
+DEAL::665 1
+DEAL::666 1
+DEAL::667 1
+DEAL::668 1
+DEAL::669 1
+DEAL::670 1
+DEAL::671 1
+DEAL::672 1
+DEAL::673 1
+DEAL::674 1
+DEAL::675 1
+DEAL::676 1
+DEAL::677 0
+DEAL::678 1
+DEAL::679 1
+DEAL::680 1
+DEAL::681 0
+DEAL::682 1
+DEAL::683 1
+DEAL::684 1
+DEAL::685 0
+DEAL::686 1
+DEAL::687 1
+DEAL::688 1
+DEAL::689 1
+DEAL::690 1
+DEAL::691 1
+DEAL::692 1
+DEAL::693 1
+DEAL::694 1
+DEAL::695 1
+DEAL::696 1
+DEAL::697 1
+DEAL::698 1
+DEAL::699 1
+DEAL::700 1
+DEAL::701 1
+DEAL::702 1
+DEAL::703 1
+DEAL::704 1
+DEAL::705 1
+DEAL::706 1
+DEAL::707 1
+DEAL::708 1
+DEAL::709 1
+DEAL::710 1
+DEAL::711 1
+DEAL::712 1
+DEAL::713 1
+DEAL::714 1
+DEAL::715 1
+DEAL::716 1
+DEAL::717 1
+DEAL::718 1
+DEAL::719 1
+DEAL::720 1
+DEAL::721 0
+DEAL::722 1
+DEAL::723 0
+DEAL::724 1
+DEAL::725 0
+DEAL::726 1
+DEAL::727 1
+DEAL::728 0
+DEAL::729 1
+DEAL::730 1
+DEAL::731 1
+DEAL::732 1
+DEAL::733 0
+DEAL::734 0
+DEAL::735 0
+DEAL::736 0
+DEAL::737 0
+DEAL::738 1
+DEAL::739 1
+DEAL::740 3
+DEAL::741 1
+DEAL::742 1
+DEAL::743 1
+DEAL::744 1
+DEAL::745 1
+DEAL::746 1
+DEAL::747 1
+DEAL::748 0
+DEAL::749 0
+DEAL::750 0
+DEAL::751 0
+DEAL::752 0
+DEAL::753 0
+DEAL::754 0
+DEAL::755 0
+DEAL::756 0
+DEAL::757 0
+DEAL::758 0
+DEAL::759 0
+DEAL::760 0
+DEAL::761 0
+DEAL::762 0
+DEAL::763 0
+DEAL::764 0
+DEAL::765 0
+DEAL::766 0
+DEAL::767 0
+DEAL::768 0
+DEAL::769 0
+DEAL::770 0
+DEAL::771 0
+DEAL::772 0
+DEAL::773 0
+DEAL::774 0
+DEAL::775 0
+DEAL::776 0
+DEAL::777 0
+DEAL::778 0
+DEAL::779 0
+DEAL::780 0
+DEAL::781 0
+DEAL::782 0
+DEAL::783 0
+DEAL::784 0
+DEAL::785 0
+DEAL::786 0
+DEAL::787 0
+DEAL::788 0
+DEAL::789 0
+DEAL::790 0
+DEAL::791 0
+DEAL::792 0
+DEAL::793 0
+DEAL::794 0
+DEAL::795 0
+DEAL::796 0
+DEAL::797 0
+DEAL::798 0
+DEAL::799 0
+DEAL::800 0
+DEAL::801 0
+DEAL::802 0
+DEAL::803 0
+DEAL::804 0
+DEAL::805 0
+DEAL::806 0
+DEAL::807 0
+DEAL::808 0
+DEAL::809 0
+DEAL::810 0
+DEAL::811 0
+DEAL::812 0
+DEAL::813 0
+DEAL::814 1
+DEAL::815 1
+DEAL::816 1
+DEAL::817 2
+DEAL::818 1
+DEAL::819 2
+DEAL::820 1
+DEAL::821 2
+DEAL::822 1
+DEAL::823 1
+DEAL::824 1
+DEAL::825 1
+DEAL::826 1
+DEAL::827 1
+DEAL::828 2
+DEAL::829 1
+DEAL::830 1
+DEAL::831 1
+DEAL::832 1
+DEAL::833 2
+DEAL::834 1
+DEAL::835 1
+DEAL::836 1
+DEAL::837 1
+DEAL::838 1
+DEAL::839 2
+DEAL::840 1
+DEAL::841 1
+DEAL::842 1
+DEAL::843 1
+DEAL::844 2
+DEAL::845 1
+DEAL::846 1
+DEAL::847 1
+DEAL::848 2
+DEAL::849 1
+DEAL::850 2
+DEAL::851 1
+DEAL::852 1
+DEAL::853 1
+DEAL::854 1
+DEAL::855 2
+DEAL::856 1
+DEAL::857 1
+DEAL::858 1
+DEAL::859 1
+DEAL::860 2
+DEAL::861 2
+DEAL::862 1
+DEAL::863 1
+DEAL::864 2
+DEAL::865 4
+DEAL::866 1
+DEAL::867 2
+DEAL::868 4
+DEAL::869 1
+DEAL::870 2
+DEAL::871 1
+DEAL::872 1
+DEAL::873 1
+DEAL::874 1
+DEAL::875 2
+DEAL::876 1
+DEAL::877 2
+DEAL::878 2
+DEAL::879 2
+DEAL::880 2
+DEAL::881 2
+DEAL::882 2
+DEAL::883 2
+DEAL::884 2
+DEAL::885 2
+DEAL::886 2
+DEAL::887 2
+DEAL::888 2
+DEAL::889 1
+DEAL::890 2
+DEAL::891 2
+DEAL::892 1
+DEAL::893 2
+DEAL::894 2
+DEAL::895 2
+DEAL::896 1
+DEAL::897 2
+DEAL::898 1
+DEAL::899 2
+DEAL::900 1
+DEAL::901 2
+DEAL::902 1
+DEAL::903 2
+DEAL::904 2
+DEAL::905 2
+DEAL::906 1
+DEAL::907 2
+DEAL::908 2
+DEAL::909 1
+DEAL::910 2
+DEAL::911 1
+DEAL::912 2
+DEAL::913 2
+DEAL::914 2
+DEAL::915 2
+DEAL::916 2
+DEAL::917 2
+DEAL::918 2
+DEAL::919 2
+DEAL::920 2
+DEAL::921 2
+DEAL::922 2
+DEAL::923 2
+DEAL::924 2
+DEAL::925 2
+DEAL::926 2
+DEAL::927 2
+DEAL::928 2
+DEAL::929 2
+DEAL::930 2
+DEAL::931 2
+DEAL::932 2
+DEAL::933 2
+DEAL::934 2
+DEAL::935 2
+DEAL::936 0
+DEAL::937 1
+DEAL::938 0
+DEAL::939 1
+DEAL::940 0
+DEAL::941 2
+DEAL::942 0
+DEAL::943 2
+DEAL::944 1
+DEAL::945 1
+DEAL::946 1
+DEAL::947 1
+DEAL::948 0
+DEAL::949 2
+DEAL::950 0
+DEAL::951 2
+DEAL::952 0
+DEAL::953 0
+DEAL::954 0
+DEAL::955 2
+DEAL::956 0
+DEAL::957 0
+DEAL::958 0
+DEAL::959 0
+DEAL::960 1
+DEAL::961 0
+DEAL::962 0
+DEAL::963 1
+DEAL::964 0
+DEAL::965 0
+DEAL::966 0
+DEAL::967 0
+DEAL::968 0
+DEAL::969 0
+DEAL::970 0
+DEAL::971 0
+DEAL::972 2
+DEAL::973 2
+DEAL::974 0
+DEAL::975 2
+DEAL::976 0
+DEAL::977 2
+DEAL::978 2
+DEAL::979 0
+DEAL::980 2
+DEAL::981 0
+DEAL::982 0
+DEAL::983 0
+DEAL::984 0
+DEAL::985 0
+DEAL::986 2
+DEAL::987 2
+DEAL::988 2
+DEAL::989 2
+DEAL::990 2
+DEAL::991 2
+DEAL::992 2
+DEAL::993 2
+DEAL::994 2
+DEAL::995 2
+DEAL::996 2
+DEAL::997 2
+DEAL::998 2
+DEAL::999 0
+DEAL::1000 2
+DEAL::1001 0
+DEAL::1002 2
+DEAL::1003 2
+DEAL::1004 2
+DEAL::1005 2
+DEAL::1006 2
+DEAL::1007 1
+DEAL::1008 1
+DEAL::1009 2
+DEAL::1010 2
+DEAL::1011 2
+DEAL::1012 2
+DEAL::1013 2
+DEAL::1014 2
+DEAL::1015 2
+DEAL::1016 2
+DEAL::1017 1
+DEAL::1018 2
+DEAL::1019 2
+DEAL::1020 2
+DEAL::1021 2
+DEAL::1022 1
+DEAL::1023 2
+DEAL::1024 2
+DEAL::1025 2
+DEAL::1026 2
+DEAL::1027 2
+DEAL::1028 2
+DEAL::1029 2
+DEAL::1030 2
+DEAL::1031 2
+DEAL::1032 1
+DEAL::1033 2
+DEAL::1034 2
+DEAL::1035 2
+DEAL::1036 2
+DEAL::1037 2
+DEAL::1038 1
+DEAL::1039 2
+DEAL::1040 2
+DEAL::1041 2
+DEAL::1042 2
+DEAL::1043 2
+DEAL::1044 2
+DEAL::1045 2
+DEAL::1046 2
+DEAL::1047 2
+DEAL::1048 2
+DEAL::1049 2
+DEAL::1050 2
+DEAL::1051 2
+DEAL::1052 2
+DEAL::1053 2
+DEAL::1054 2
+DEAL::1055 2
+DEAL::1056 2
+DEAL::1057 2
+DEAL::1058 2
+DEAL::1059 2
+DEAL::1060 2
+DEAL::1061 2
+DEAL::1062 2
+DEAL::1063 2
+DEAL::1064 2
+DEAL::1065 2
+DEAL::1066 2
+DEAL::1067 2
+DEAL::1068 2
+DEAL::1069 2
+DEAL::1070 2
+DEAL::1071 2
+DEAL::1072 2
+DEAL::1073 2
+DEAL::1074 2
+DEAL::1075 2
+DEAL::1076 2
+DEAL::1077 2
+DEAL::1078 2
+DEAL::1079 2
+DEAL::1080 2
+DEAL::1081 2
+DEAL::1082 2
+DEAL::1083 2
+DEAL::1084 2
+DEAL::1085 2
+DEAL::1086 2
+DEAL::1087 2
+DEAL::1088 2
+DEAL::1089 2
+DEAL::1090 2
+DEAL::1091 2
+DEAL::1092 2
+DEAL::1093 2
+DEAL::1094 2
+DEAL::1095 2
+DEAL::1096 2
+DEAL::1097 2
+DEAL::1098 2
+DEAL::1099 2
+DEAL::1100 2
+DEAL::1101 2
+DEAL::1102 2
+DEAL::1103 2
+DEAL::1104 2
+DEAL::1105 2
+DEAL::1106 2
+DEAL::1107 2
+DEAL::1108 2
+DEAL::1109 2
+DEAL::1110 2
+DEAL::1111 2
+DEAL::1112 2
+DEAL::1113 2
+DEAL::1114 2
+DEAL::1115 2
+DEAL::1116 2
+DEAL::1117 2
+DEAL::1118 2
+DEAL::1119 2
+DEAL::1120 2
+DEAL::1121 2
+DEAL::1122 2
+DEAL::1123 2
+DEAL::1124 2
+DEAL::1125 2
+DEAL::1126 2
+DEAL::1127 2
+DEAL::1128 2
+DEAL::1129 2
+DEAL::1130 2
+DEAL::1131 2
+DEAL::1132 2
+DEAL::1133 2
+DEAL::1134 2
+DEAL::1135 2
+DEAL::1136 2
+DEAL::1137 2
+DEAL::1138 2
+DEAL::1139 2
+DEAL::1140 2
+DEAL::1141 2
+DEAL::1142 2
+DEAL::1143 2
+DEAL::1144 2
+DEAL::1145 2
+DEAL::1146 2
+DEAL::1147 2
+DEAL::1148 1
+DEAL::1149 1
+DEAL::1150 1
+DEAL::1151 1
+DEAL::1152 1
+DEAL::1153 1
+DEAL::1154 1
+DEAL::1155 1
+DEAL::1156 1
+DEAL::1157 1
+DEAL::1158 1
+DEAL::1159 1
+DEAL::1160 1
+DEAL::1161 1
+DEAL::1162 1
+DEAL::1163 1
+DEAL::1164 1
+DEAL::1165 1
+DEAL::1166 1
+DEAL::1167 1
+DEAL::1168 1
+DEAL::1169 1
+DEAL::1170 1
+DEAL::1171 1
+DEAL::1172 1
+DEAL::1173 1
+DEAL::1174 1
+DEAL::1175 1
+DEAL::1176 1
+DEAL::1177 1
+DEAL::1178 1
+DEAL::1179 1
+DEAL::1180 1
+DEAL::1181 1
+DEAL::1182 1
+DEAL::1183 1
+DEAL::1184 1
+DEAL::1185 1
+DEAL::1186 1
+DEAL::1187 1
+DEAL::1188 1
+DEAL::1189 1
+DEAL::1190 1
+DEAL::1191 1
+DEAL::1192 1
+DEAL::1193 1
+DEAL::1194 1
+DEAL::1195 1
+DEAL::1196 1
+DEAL::1197 1
+DEAL::1198 1
+DEAL::1199 1
+DEAL::1200 1
+DEAL::1201 1
+DEAL::1202 1
+DEAL::1203 1
+DEAL::1204 1
+DEAL::1205 1
+DEAL::1206 1
+DEAL::1207 1
+DEAL::1208 1
+DEAL::1209 1
+DEAL::1210 1
+DEAL::1211 1
+DEAL::1212 1
+DEAL::1213 1
+DEAL::1214 1
+DEAL::1215 1
+DEAL::1216 1
+DEAL::1217 1
+DEAL::1218 1
+DEAL::1219 1
+DEAL::1220 1
+DEAL::1221 1
+DEAL::1222 1
+DEAL::1223 1
+DEAL::1224 1
+DEAL::1225 1
+DEAL::1226 1
+DEAL::1227 1
+DEAL::1228 1
+DEAL::1229 1
+DEAL::1230 1
+DEAL::1231 1
+DEAL::1232 1
+DEAL::1233 1
+DEAL::1234 1
+DEAL::1235 1
+DEAL::1236 1
+DEAL::1237 1
+DEAL::1238 1
+DEAL::1239 1
+DEAL::1240 1
+DEAL::1241 1
+DEAL::1242 1
+DEAL::1243 1
+DEAL::1244 1
+DEAL::1245 1
+DEAL::1246 1
+DEAL::1247 1
+DEAL::1248 1
+DEAL::1249 1
+DEAL::1250 1
+DEAL::1251 1
+DEAL::1252 1
+DEAL::1253 1
+DEAL::1254 1
+DEAL::1255 1
+DEAL::1256 1
+DEAL::1257 1
+DEAL::1258 1
+DEAL::1259 3
+DEAL::1260 1
+DEAL::1261 1
+DEAL::1262 1
+DEAL::1263 1
+DEAL::1264 1
+DEAL::1265 1
+DEAL::1266 1
+DEAL::1267 1
+DEAL::1268 1
+DEAL::1269 1
+DEAL::1270 1
+DEAL::1271 1
+DEAL::1272 3
+DEAL::1273 1
+DEAL::1274 1
+DEAL::1275 1
+DEAL::1276 1
+DEAL::1277 1
+DEAL::1278 1
+DEAL::1279 1
+DEAL::1280 1
+DEAL::1281 1
+DEAL::1282 1
+DEAL::1283 1
+DEAL::1284 1
+DEAL::1285 1
+DEAL::1286 3
+DEAL::1287 3
+DEAL::1288 1
+DEAL::1289 1
+DEAL::1290 1
+DEAL::1291 3
+DEAL::1292 3
+DEAL::1293 1
+DEAL::1294 1
+DEAL::1295 1
+DEAL::1296 1
+DEAL::1297 1
+DEAL::1298 1
+DEAL::1299 3
+DEAL::1300 3
+DEAL::1301 3
+DEAL::1302 1
+DEAL::1303 1
+DEAL::1304 1
+DEAL::1305 1
+DEAL::1306 1
+DEAL::1307 1
+DEAL::1308 1
+DEAL::1309 1
+DEAL::1310 1
+DEAL::1311 1
+DEAL::1312 3
+DEAL::1313 1
+DEAL::1314 1
+DEAL::1315 1
+DEAL::1316 1
+DEAL::1317 1
+DEAL::1318 3
+DEAL::1319 3
+DEAL::1320 3
+DEAL::1321 3
+DEAL::1322 1
+DEAL::1323 1
+DEAL::1324 1
+DEAL::1325 3
+DEAL::1326 3
+DEAL::1327 3
+DEAL::1328 1
+DEAL::1329 3
+DEAL::1330 3
+DEAL::1331 0
+DEAL::1332 1
+DEAL::1333 1
+DEAL::1334 1
+DEAL::1335 1
+DEAL::1336 3
+DEAL::1337 1
+DEAL::1338 3
+DEAL::1339 1
+DEAL::1340 1
+DEAL::1341 1
+DEAL::1342 3
+DEAL::1343 1
+DEAL::1344 3
+DEAL::1345 3
+DEAL::1346 3
+DEAL::1347 3
+DEAL::1348 3
+DEAL::1349 3
+DEAL::1350 3
+DEAL::1351 3
+DEAL::1352 3
+DEAL::1353 3
+DEAL::1354 1
+DEAL::1355 3
+DEAL::1356 1
+DEAL::1357 3
+DEAL::1358 1
+DEAL::1359 1
+DEAL::1360 3
+DEAL::1361 3
+DEAL::1362 3
+DEAL::1363 3
+DEAL::1364 0
+DEAL::1365 3
+DEAL::1366 3
+DEAL::1367 3
+DEAL::1368 4
+DEAL::1369 4
+DEAL::1370 4
+DEAL::1371 3
+DEAL::1372 1
+DEAL::1373 3
+DEAL::1374 1
+DEAL::1375 3
+DEAL::1376 1
+DEAL::1377 3
+DEAL::1378 0
+DEAL::1379 3
+DEAL::1380 4
+DEAL::1381 3
+DEAL::1382 3
+DEAL::1383 3
+DEAL::1384 3
+DEAL::1385 3
+DEAL::1386 3
+DEAL::1387 3
+DEAL::1388 4
+DEAL::1389 4
+DEAL::1390 3
+DEAL::1391 3
+DEAL::1392 3
+DEAL::1393 3
+DEAL::1394 3
+DEAL::1395 3
+DEAL::1396 1
+DEAL::1397 3
+DEAL::1398 3
+DEAL::1399 1
+DEAL::1400 3
+DEAL::1401 3
+DEAL::1402 1
+DEAL::1403 1
+DEAL::1404 1
+DEAL::1405 3
+DEAL::1406 1
+DEAL::1407 1
+DEAL::1408 3
+DEAL::1409 1
+DEAL::1410 1
+DEAL::1411 1
+DEAL::1412 3
+DEAL::1413 1
+DEAL::1414 1
+DEAL::1415 1
+DEAL::1416 1
+DEAL::1417 1
+DEAL::1418 3
+DEAL::1419 1
+DEAL::1420 3
+DEAL::1421 3
+DEAL::1422 3
+DEAL::1423 3
+DEAL::1424 3
+DEAL::1425 1
+DEAL::1426 3
+DEAL::1427 3
+DEAL::1428 3
+DEAL::1429 3
+DEAL::1430 3
+DEAL::1431 3
+DEAL::1432 3
+DEAL::1433 1
+DEAL::1434 1
+DEAL::1435 3
+DEAL::1436 3
+DEAL::1437 3
+DEAL::1438 3
+DEAL::1439 3
+DEAL::1440 3
+DEAL::1441 3
+DEAL::1442 3
+DEAL::1443 3
+DEAL::1444 3
+DEAL::1445 3
+DEAL::1446 3
+DEAL::1447 3
+DEAL::1448 3
+DEAL::1449 3
+DEAL::1450 3
+DEAL::1451 3
+DEAL::1452 3
+DEAL::1453 3
+DEAL::1454 3
+DEAL::1455 1
+DEAL::1456 3
+DEAL::1457 3
+DEAL::1458 3
+DEAL::1459 3
+DEAL::1460 1
+DEAL::1461 3
+DEAL::1462 3
+DEAL::1463 3
+DEAL::1464 3
+DEAL::1465 3
+DEAL::1466 3
+DEAL::1467 3
+DEAL::1468 3
+DEAL::1469 3
+DEAL::1470 4
+DEAL::1471 3
+DEAL::1472 4
+DEAL::1473 4
+DEAL::1474 4
+DEAL::1475 4
+DEAL::1476 4
+DEAL::1477 3
+DEAL::1478 4
+DEAL::1479 4
+DEAL::1480 4
+DEAL::1481 4
+DEAL::1482 4
+DEAL::1483 4
+DEAL::1484 4
+DEAL::1485 4
+DEAL::1486 4
+DEAL::1487 4
+DEAL::1488 4
+DEAL::1489 4
+DEAL::1490 4
+DEAL::1491 4
+DEAL::1492 4
+DEAL::1493 4
+DEAL::1494 4
+DEAL::1495 4
+DEAL::1496 4
+DEAL::1497 4
+DEAL::1498 4
+DEAL::1499 4
+DEAL::1500 4
+DEAL::1501 4
+DEAL::1502 4
+DEAL::1503 4
+DEAL::1504 4
+DEAL::1505 4
+DEAL::1506 4
+DEAL::1507 4
+DEAL::1508 4
+DEAL::1509 4
+DEAL::1510 4
+DEAL::1511 4
+DEAL::1512 4
+DEAL::1513 4
+DEAL::1514 4
+DEAL::1515 4
+DEAL::1516 3
+DEAL::1517 4
+DEAL::1518 4
+DEAL::1519 4
+DEAL::1520 4
+DEAL::1521 4
+DEAL::1522 4
+DEAL::1523 4
+DEAL::1524 4
+DEAL::1525 4
+DEAL::1526 4
+DEAL::1527 4
+DEAL::1528 4
+DEAL::1529 4
+DEAL::1530 4
+DEAL::1531 4
+DEAL::1532 4
+DEAL::1533 4
+DEAL::1534 4
+DEAL::1535 4
+DEAL::1536 4
+DEAL::1537 4
+DEAL::1538 4
+DEAL::1539 4
+DEAL::1540 4
+DEAL::1541 4
+DEAL::1542 4
+DEAL::1543 4
+DEAL::1544 4
+DEAL::1545 4
+DEAL::1546 4
+DEAL::1547 4
+DEAL::1548 4
+DEAL::1549 4
+DEAL::1550 4
+DEAL::1551 4
+DEAL::1552 4
+DEAL::1553 4
+DEAL::1554 4
+DEAL::1555 4
+DEAL::1556 4
+DEAL::1557 4
+DEAL::1558 4
+DEAL::1559 4
+DEAL::1560 4
+DEAL::1561 4
+DEAL::1562 4
+DEAL::1563 4
+DEAL::1564 4
+DEAL::1565 4
+DEAL::1566 4
+DEAL::1567 4
+DEAL::1568 4
+DEAL::1569 4
+DEAL::1570 4
+DEAL::1571 4
+DEAL::1572 4
+DEAL::1573 4
+DEAL::1574 4
+DEAL::1575 4
+DEAL::1576 4
+DEAL::1577 4
+DEAL::1578 4
+DEAL::1579 4
+DEAL::1580 4
+DEAL::1581 4
+DEAL::1582 4
+DEAL::1583 0
+DEAL::1584 0
+DEAL::1585 0
+DEAL::1586 0
+DEAL::1587 0
+DEAL::1588 0
+DEAL::1589 0
+DEAL::1590 0
+DEAL::1591 0
+DEAL::1592 0
+DEAL::1593 0
+DEAL::1594 0
+DEAL::1595 0
+DEAL::1596 0
+DEAL::1597 0
+DEAL::1598 0
+DEAL::1599 0
+DEAL::1600 0
+DEAL::1601 0
+DEAL::1602 0
+DEAL::1603 0
+DEAL::1604 0
+DEAL::1605 0
+DEAL::1606 0
+DEAL::1607 0
+DEAL::1608 0
+DEAL::1609 0
+DEAL::1610 0
+DEAL::1611 0
+DEAL::1612 0
+DEAL::1613 0
+DEAL::1614 0
+DEAL::1615 0
+DEAL::1616 0
+DEAL::1617 0
+DEAL::1618 0
+DEAL::1619 0
+DEAL::1620 0
+DEAL::1621 0
+DEAL::1622 0
+DEAL::1623 0
+DEAL::1624 0
+DEAL::1625 0
+DEAL::1626 0
+DEAL::1627 0
+DEAL::1628 0
+DEAL::1629 0
+DEAL::1630 0
+DEAL::1631 0
+DEAL::1632 0
+DEAL::1633 0
+DEAL::1634 0
+DEAL::1635 0
+DEAL::1636 0
+DEAL::1637 0
+DEAL::1638 0
+DEAL::1639 0
+DEAL::1640 0
+DEAL::1641 0
+DEAL::1642 0
+DEAL::1643 0
+DEAL::1644 0
+DEAL::1645 0
+DEAL::1646 0
+DEAL::1647 0
+DEAL::1648 0
+DEAL::1649 0
+DEAL::1650 0
+DEAL::1651 0
+DEAL::1652 0
+DEAL::1653 0
+DEAL::1654 0
+DEAL::1655 0
+DEAL::1656 0
+DEAL::1657 0
+DEAL::1658 0
+DEAL::1659 0
+DEAL::1660 0
+DEAL::1661 0
+DEAL::1662 0
+DEAL::1663 0
+DEAL::1664 0
+DEAL::1665 0
+DEAL::1666 0
+DEAL::1667 0
+DEAL::1668 0
+DEAL::1669 0
+DEAL::1670 0
+DEAL::1671 0
+DEAL::1672 0
+DEAL::1673 0
+DEAL::1674 0
+DEAL::1675 0
+DEAL::1676 0
+DEAL::1677 0
+DEAL::1678 0
+DEAL::1679 0
+DEAL::1680 0
+DEAL::1681 0
+DEAL::1682 0
+DEAL::1683 0
+DEAL::1684 0
+DEAL::1685 0
+DEAL::1686 0
+DEAL::1687 0
+DEAL::1688 4
+DEAL::1689 0
+DEAL::1690 4
+DEAL::1691 0
+DEAL::1692 4
+DEAL::1693 0
+DEAL::1694 0
+DEAL::1695 0
+DEAL::1696 2
+DEAL::1697 0
+DEAL::1698 0
+DEAL::1699 0
+DEAL::1700 2
+DEAL::1701 0
+DEAL::1702 0
+DEAL::1703 0
+DEAL::1704 0
+DEAL::1705 4
+DEAL::1706 0
+DEAL::1707 0
+DEAL::1708 0
+DEAL::1709 0
+DEAL::1710 0
+DEAL::1711 0
+DEAL::1712 0
+DEAL::1713 0
+DEAL::1714 0
+DEAL::1715 0
+DEAL::1716 4
+DEAL::1717 4
+DEAL::1718 0
+DEAL::1719 2
+DEAL::1720 0
+DEAL::1721 0
+DEAL::1722 0
+DEAL::1723 0
+DEAL::1724 0
+DEAL::1725 0
+DEAL::1726 0
+DEAL::1727 0
+DEAL::1728 0
+DEAL::1729 0
+DEAL::1730 0
+DEAL::1731 0
+DEAL::1732 0
+DEAL::1733 0
+DEAL::1734 0
+DEAL::1735 0
+DEAL::1736 0
+DEAL::1737 0
+DEAL::1738 4
+DEAL::1739 0
+DEAL::1740 0
+DEAL::1741 0
+DEAL::1742 4
+DEAL::1743 0
+DEAL::1744 0
+DEAL::1745 0
+DEAL::1746 0
+DEAL::1747 0
+DEAL::1748 4
+DEAL::1749 0
+DEAL::1750 0
+DEAL::1751 0
+DEAL::1752 0
+DEAL::1753 0
+DEAL::1754 0
+DEAL::1755 0
+DEAL::1756 4
+DEAL::1757 4
+DEAL::1758 4
+DEAL::1759 0
+DEAL::1760 0
+DEAL::1761 0
+DEAL::1762 0
+DEAL::1763 2
+DEAL::1764 2
+DEAL::1765 2
+DEAL::1766 4
+DEAL::1767 4
+DEAL::1768 2
+DEAL::1769 2
+DEAL::1770 2
+DEAL::1771 2
+DEAL::1772 2
+DEAL::1773 4
+DEAL::1774 2
+DEAL::1775 2
+DEAL::1776 2
+DEAL::1777 2
+DEAL::1778 2
+DEAL::1779 2
+DEAL::1780 2
+DEAL::1781 2
+DEAL::1782 2
+DEAL::1783 2
+DEAL::1784 2
+DEAL::1785 2
+DEAL::1786 2
+DEAL::1787 2
+DEAL::1788 2
+DEAL::1789 2
+DEAL::1790 2
+DEAL::1791 2
+DEAL::1792 2
+DEAL::1793 2
+DEAL::1794 2
+DEAL::1795 2
+DEAL::1796 2
+DEAL::1797 2
+DEAL::1798 2
+DEAL::1799 2
+DEAL::1800 2
+DEAL::1801 4
+DEAL::1802 4
+DEAL::1803 4
+DEAL::1804 2
+DEAL::1805 2
+DEAL::1806 2
+DEAL::1807 4
+DEAL::1808 4
+DEAL::1809 4
+DEAL::1810 4
+DEAL::1811 2
+DEAL::1812 2
+DEAL::1813 2
+DEAL::1814 2
+DEAL::1815 2
+DEAL::1816 2
+DEAL::1817 2
+DEAL::1818 2
+DEAL::1819 2
+DEAL::1820 2
+DEAL::1821 2
+DEAL::1822 2
+DEAL::1823 2
+DEAL::1824 2
+DEAL::1825 2
+DEAL::1826 2
+DEAL::1827 2
+DEAL::1828 4
+DEAL::1829 2
+DEAL::1830 4
+DEAL::1831 4
+DEAL::1832 4
+DEAL::1833 4
+DEAL::1834 2
+DEAL::1835 2
+DEAL::1836 2
+DEAL::1837 2
+DEAL::1838 2
+DEAL::1839 2
+DEAL::1840 2
+DEAL::1841 4
+DEAL::1842 4
+DEAL::1843 0
+DEAL::1844 4
+DEAL::1845 4
+DEAL::1846 4
+DEAL::1847 2
+DEAL::1848 2
+DEAL::1849 2
+DEAL::1850 2
+DEAL::1851 2
+DEAL::1852 2
+DEAL::1853 2
+DEAL::1854 2
+DEAL::1855 2
+DEAL::1856 2
+DEAL::1857 2
+DEAL::1858 2
+DEAL::1859 2
+DEAL::1860 2
+DEAL::1861 2
+DEAL::1862 2
+DEAL::1863 4
+DEAL::1864 2
+DEAL::1865 2
+DEAL::1866 2
+DEAL::1867 4
+DEAL::1868 4
+DEAL::1869 2
+DEAL::1870 2
+DEAL::1871 2
+DEAL::1872 4
+DEAL::1873 4
+DEAL::1874 2
+DEAL::1875 4
+DEAL::1876 2
+DEAL::1877 4
+DEAL::1878 4
+DEAL::1879 4
+DEAL::1880 4
+DEAL::1881 4
+DEAL::1882 4
+DEAL::1883 2
+DEAL::1884 4
+DEAL::1885 4
+DEAL::1886 4
+DEAL::1887 4
+DEAL::1888 2
+DEAL::1889 4
+DEAL::1890 2
+DEAL::1891 2
+DEAL::1892 2
+DEAL::1893 2
+DEAL::1894 2
+DEAL::1895 4
+DEAL::1896 4
+DEAL::1897 4
+DEAL::1898 4
+DEAL::1899 4
+DEAL::1900 4
+DEAL::1901 4
+DEAL::1902 4
+DEAL::1903 4
+DEAL::1904 4
+DEAL::1905 4
+DEAL::1906 4
+DEAL::1907 4
+DEAL::1908 4
+DEAL::1909 4
+DEAL::1910 2
+DEAL::1911 4
+DEAL::1912 2
+DEAL::1913 4
+DEAL::1914 4
+DEAL::1915 4
+DEAL::1916 4
+DEAL::1917 2
+DEAL::1918 2
+DEAL::1919 2
+DEAL::1920 2
+DEAL::1921 2
+DEAL::1922 2
+DEAL::1923 2
+DEAL::1924 2
+DEAL::1925 2
+DEAL::1926 2
+DEAL::1927 2
+DEAL::1928 2
+DEAL::1929 2
+DEAL::1930 2
+DEAL::1931 2
+DEAL::1932 2
+DEAL::1933 2
+DEAL::1934 2
+DEAL::1935 2
+DEAL::1936 2
+DEAL::1937 2
+DEAL::1938 2
+DEAL::1939 2
+DEAL::1940 2
+DEAL::1941 2
+DEAL::1942 2
+DEAL::1943 2
+DEAL::1944 2
+DEAL::1945 2
+DEAL::1946 2
+DEAL::1947 2
+DEAL::1948 2
+DEAL::1949 2
+DEAL::1950 2
+DEAL::1951 2
+DEAL::1952 2
+DEAL::1953 2
+DEAL::1954 2
+DEAL::1955 2
+DEAL::1956 2
+DEAL::1957 2
+DEAL::1958 2
+DEAL::1959 2
+DEAL::1960 2
+DEAL::1961 2
+DEAL::1962 2
+DEAL::1963 2
+DEAL::1964 2
+DEAL::1965 2
+DEAL::1966 2
+DEAL::1967 2
+DEAL::1968 2
+DEAL::1969 2
+DEAL::1970 2
+DEAL::1971 2
+DEAL::1972 2
+DEAL::1973 2
+DEAL::1974 2
+DEAL::1975 2
+DEAL::1976 2
+DEAL::1977 2
+DEAL::1978 2
+DEAL::1979 2
+DEAL::1980 2
+DEAL::1981 2
+DEAL::1982 2
+DEAL::1983 2
+DEAL::1984 2
+DEAL::1985 2
+DEAL::1986 2
+DEAL::1987 2
+DEAL::1988 2
+DEAL::1989 2
+DEAL::1990 2
+DEAL::1991 2
+DEAL::1992 2
+DEAL::1993 0
+DEAL::1994 4
+DEAL::1995 4
+DEAL::1996 4
+DEAL::1997 4
+DEAL::1998 4
+DEAL::1999 4
+DEAL::2000 4
+DEAL::2001 0
+DEAL::2002 0
+DEAL::2003 0
+DEAL::2004 3
+DEAL::2005 0
+DEAL::2006 4
+DEAL::2007 4
+DEAL::2008 4
+DEAL::2009 4
+DEAL::2010 4
+DEAL::2011 4
+DEAL::2012 4
+DEAL::2013 4
+DEAL::2014 4
+DEAL::2015 4
+DEAL::2016 4
+DEAL::2017 4
+DEAL::2018 4
+DEAL::2019 4
+DEAL::2020 4
+DEAL::2021 3
+DEAL::2022 4
+DEAL::2023 4
+DEAL::2024 4
+DEAL::2025 3
+DEAL::2026 3
+DEAL::2027 4
+DEAL::2028 4
+DEAL::2029 3
+DEAL::2030 3
+DEAL::2031 3
+DEAL::2032 3
+DEAL::2033 3
+DEAL::2034 3
+DEAL::2035 3
+DEAL::2036 3
+DEAL::2037 4
+DEAL::2038 4
+DEAL::2039 3
+DEAL::2040 4
+DEAL::2041 3
+DEAL::2042 3
+DEAL::2043 3
+DEAL::2044 3
+DEAL::2045 4
+DEAL::2046 4
+DEAL::2047 4
+DEAL::2048 4
+DEAL::2049 4
+DEAL::2050 4
+DEAL::2051 4
+DEAL::2052 4
+DEAL::2053 4
+DEAL::2054 4
+DEAL::2055 4
+DEAL::2056 4
+DEAL::2057 4
+DEAL::2058 4
+DEAL::2059 4
+DEAL::2060 4
+DEAL::2061 4
+DEAL::2062 3
+DEAL::2063 4
+DEAL::2064 4
+DEAL::2065 4
+DEAL::2066 4
+DEAL::2067 4
+DEAL::2068 3
+DEAL::2069 3
+DEAL::2070 3
+DEAL::2071 3
+DEAL::2072 4
+DEAL::2073 4
+DEAL::2074 3
+DEAL::2075 4
+DEAL::2076 4
+DEAL::2077 4
+DEAL::2078 4
+DEAL::2079 4
+DEAL::2080 4
+DEAL::2081 4
+DEAL::2082 4
+DEAL::2083 4
+DEAL::2084 3
+DEAL::2085 3
+DEAL::2086 3
+DEAL::2087 3
+DEAL::2088 3
+DEAL::2089 3
+DEAL::2090 3
+DEAL::2091 3
+DEAL::2092 3
+DEAL::2093 3
+DEAL::2094 3
+DEAL::2095 3
+DEAL::2096 3
+DEAL::2097 3
+DEAL::2098 3
+DEAL::2099 3
+DEAL::2100 3
+DEAL::2101 3
+DEAL::2102 3
+DEAL::2103 3
+DEAL::2104 3
+DEAL::2105 3
+DEAL::2106 3
+DEAL::2107 3
+DEAL::2108 3
+DEAL::2109 3
+DEAL::2110 3
+DEAL::2111 3
+DEAL::2112 3
+DEAL::2113 3
+DEAL::2114 3
+DEAL::2115 3
+DEAL::2116 3
+DEAL::2117 3
+DEAL::2118 3
+DEAL::2119 3
+DEAL::2120 3
+DEAL::2121 3
+DEAL::2122 3
+DEAL::2123 3
+DEAL::2124 3
+DEAL::2125 3
+DEAL::2126 3
+DEAL::2127 3
+DEAL::2128 3
+DEAL::2129 3
+DEAL::2130 3
+DEAL::2131 3
+DEAL::2132 3
+DEAL::2133 3
+DEAL::2134 3
+DEAL::2135 3
+DEAL::2136 3
+DEAL::2137 3
+DEAL::2138 3
+DEAL::2139 3
+DEAL::2140 3
+DEAL::2141 3
+DEAL::2142 3
+DEAL::2143 4
+DEAL::2144 3
+DEAL::2145 3
+DEAL::2146 3
+DEAL::2147 3
+DEAL::2148 3
+DEAL::2149 3
+DEAL::2150 3
+DEAL::2151 3
+DEAL::2152 3
+DEAL::2153 3
+DEAL::2154 3
+DEAL::2155 3
+DEAL::2156 3
+DEAL::2157 3
+DEAL::2158 3
+DEAL::2159 3
+DEAL::2160 3
+DEAL::2161 3
+DEAL::2162 3
+DEAL::2163 3
+DEAL::2164 3
+DEAL::2165 3
+DEAL::2166 3
+DEAL::2167 3
+DEAL::2168 3
+DEAL::2169 3
+DEAL::2170 3
+DEAL::2171 3
+DEAL::2172 3
+DEAL::2173 3
+DEAL::2174 3
+DEAL::2175 3
+DEAL::2176 3
+DEAL::2177 3
+DEAL::2178 3
+DEAL::2179 3
+DEAL::2180 3
+DEAL::2181 3
+DEAL::2182 3
+DEAL::2183 3
+DEAL::2184 3
+DEAL::2185 3
+DEAL::2186 3
+DEAL::2187 3
+DEAL::2188 3
+DEAL::2189 3
+DEAL::2190 3
+DEAL::2191 3
+DEAL::2192 4
+DEAL::2193 3
+DEAL::2194 3
+DEAL::2195 3
+DEAL::2196 4
+DEAL::2197 3
+DEAL::2198 3
+DEAL::2199 3
+DEAL::2200 3
+DEAL::2201 3
+DEAL::2202 3
+DEAL::2203 3
+DEAL::2204 3
+DEAL::2205 3
+DEAL::2206 3
+DEAL::2207 3
+DEAL::2208 3
+DEAL::2209 3
+DEAL::2210 4
+DEAL::2211 3
+DEAL::2212 3
+DEAL::2213 3
+DEAL::2214 4
+DEAL::2215 3
+DEAL::2216 3
+DEAL::2217 3
+DEAL::2218 3
+DEAL::2219 4
+DEAL::2220 3
+DEAL::2221 3
+DEAL::2222 3
+DEAL::2223 3
+DEAL::2224 3
+DEAL::2225 3
+DEAL::2226 3
+DEAL::2227 3
+DEAL::2228 4
+DEAL::2229 4
+DEAL::2230 4
+DEAL::2231 3
+DEAL::2232 4
+DEAL::2233 3
+DEAL::2234 4
+DEAL::2235 3
+DEAL::2236 3
+DEAL::2237 4
+DEAL::2238 3
+DEAL::2239 4
+DEAL::2240 4
+DEAL::2241 3
+DEAL::2242 3
+DEAL::2243 3
+DEAL::2244 4
+DEAL::2245 3
+DEAL::2246 4
+DEAL::2247 3
+DEAL::2248 4
+DEAL::2249 4
+DEAL::2250 4
+DEAL::2251 4
+DEAL::2252 4
+DEAL::2253 3
+DEAL::2254 3
+DEAL::2255 4
+DEAL::2256 4
+DEAL::2257 4
+DEAL::2258 4
+DEAL::2259 4
+DEAL::2260 4
+DEAL::2261 4
+DEAL::2262 4
+DEAL::2263 3
+DEAL::2264 4
+DEAL::2265 4
+DEAL::2266 4
+DEAL::2267 4
+DEAL::2268 4
+DEAL::2269 4
+DEAL::2270 4
+DEAL::2271 4
+DEAL::2272 4
+DEAL::2273 4
+DEAL::2274 4
+DEAL::2275 4
+DEAL::2276 4
+DEAL::2277 4
+DEAL::2278 4
+DEAL::2279 4
+DEAL::2280 4
+DEAL::2281 4
+DEAL::2282 4
+DEAL::2283 4
+DEAL::2284 4
+DEAL::2285 4
+DEAL::2286 4
+DEAL::2287 4
+DEAL::2288 4
+DEAL::2289 4
+DEAL::2290 3
+DEAL::2291 4
+DEAL::2292 4
+DEAL::2293 4
+DEAL::2294 4
+DEAL::2295 4
+DEAL::2296 4
+DEAL::2297 4
+DEAL::2298 4
+DEAL::2299 4
+DEAL::2300 4
+DEAL::2301 4
+DEAL::2302 4
+DEAL::2303 4
+DEAL::2304 4
+DEAL::2305 4
+DEAL::2306 4
+DEAL::2307 4
+DEAL::2308 4
+DEAL::2309 4
+DEAL::2310 4
+DEAL::2311 4
+DEAL::2312 4
+DEAL::2313 4
+DEAL::2314 4
+DEAL::2315 4
+DEAL::2316 4
+DEAL::2317 4
+DEAL::2318 4
+DEAL::2319 4
+DEAL::2320 4
+DEAL::2321 4
+DEAL::2322 4
+DEAL::2323 4
+DEAL::2324 4
+DEAL::2325 4
+DEAL::2326 4
+DEAL::2327 4
+DEAL::2328 4
+DEAL::2329 4
+DEAL::2330 4
+DEAL::2331 4
+DEAL::2332 4
+DEAL::2333 4
+DEAL::2334 0
+DEAL::2335 0
+DEAL::2336 0
+DEAL::2337 0
+DEAL::2338 0
+DEAL::2339 0
+DEAL::2340 0
+DEAL::2341 0
+DEAL::2342 0
+DEAL::2343 0
+DEAL::2344 0
+DEAL::2345 0
+DEAL::2346 0
+DEAL::2347 0
+DEAL::2348 0
+DEAL::2349 0
+DEAL::2350 0
+DEAL::2351 0
+DEAL::2352 1
+DEAL::2353 1
+DEAL::2354 1
+DEAL::2355 0
+DEAL::2356 1
+DEAL::2357 0
+DEAL::2358 0
+DEAL::2359 0
+DEAL::2360 0
+DEAL::2361 0
+DEAL::2362 1
+DEAL::2363 1
+DEAL::2364 1
+DEAL::2365 0
+DEAL::2366 0
+DEAL::2367 0
+DEAL::2368 0
+DEAL::2369 0
+DEAL::2370 0
+DEAL::2371 0
+DEAL::2372 0
+DEAL::2373 0
+DEAL::2374 0
+DEAL::2375 0
+DEAL::2376 1
+DEAL::2377 1
+DEAL::2378 0
+DEAL::2379 0
+DEAL::2380 0
+DEAL::2381 0
+DEAL::2382 0
+DEAL::2383 0
+DEAL::2384 0
+DEAL::2385 0
+DEAL::2386 0
+DEAL::2387 0
+DEAL::2388 0
+DEAL::2389 0
+DEAL::2390 0
+DEAL::2391 0
+DEAL::2392 0
+DEAL::2393 0
+DEAL::2394 0
+DEAL::2395 0
+DEAL::2396 0
+DEAL::2397 0
+DEAL::2398 0
+DEAL::2399 0
+DEAL::2400 0
+DEAL::2401 0
+DEAL::2402 0
+DEAL::2403 0
+DEAL::2404 0
+DEAL::2405 0
+DEAL::2406 0
+DEAL::2407 0
+DEAL::2408 0
+DEAL::2409 1
+DEAL::2410 0
+DEAL::2411 0
+DEAL::2412 0
+DEAL::2413 1
+DEAL::2414 0
+DEAL::2415 0
+DEAL::2416 1
+DEAL::2417 0
+DEAL::2418 0
+DEAL::2419 1
+DEAL::2420 0
+DEAL::2421 1
+DEAL::2422 0
+DEAL::2423 0
+DEAL::2424 0
+DEAL::2425 1
+DEAL::2426 0
+DEAL::2427 1
+DEAL::2428 1
+DEAL::2429 1
+DEAL::2430 1
+DEAL::2431 1
+DEAL::2432 1
+DEAL::2433 1
+DEAL::2434 0
+DEAL::2435 1
+DEAL::2436 1
+DEAL::2437 1
+DEAL::2438 1
+DEAL::2439 1
+DEAL::2440 1
+DEAL::2441 1
+DEAL::2442 1
+DEAL::2443 1
+DEAL::2444 0
+DEAL::2445 0
+DEAL::2446 0
+DEAL::2447 0
+DEAL::2448 0
+DEAL::2449 0
+DEAL::2450 0
+DEAL::2451 0
+DEAL::2452 0
+DEAL::2453 0
+DEAL::2454 0
+DEAL::2455 0
+DEAL::2456 0
+DEAL::2457 0
+DEAL::2458 0
+DEAL::2459 0
+DEAL::2460 0
+DEAL::2461 0
+DEAL::2462 0
+DEAL::2463 0
+DEAL::2464 0
+DEAL::2465 0
+DEAL::2466 0
+DEAL::2467 0
+DEAL::2468 0
+DEAL::2469 0
+DEAL::2470 1
+DEAL::2471 0
+DEAL::2472 0
+DEAL::2473 0
+DEAL::2474 1
+DEAL::2475 0
+DEAL::2476 0
+DEAL::2477 0
+DEAL::2478 0
+DEAL::2479 0
+DEAL::2480 0
+DEAL::2481 0
+DEAL::2482 0
+DEAL::2483 3
+DEAL::2484 0
+DEAL::2485 0
+DEAL::2486 1
+DEAL::2487 0
+DEAL::2488 1
+DEAL::2489 0
+DEAL::2490 0
+DEAL::2491 3
+DEAL::2492 1
+DEAL::2493 0
+DEAL::2494 0
+DEAL::2495 3
+DEAL::2496 1
+DEAL::2497 1
+DEAL::2498 1
+DEAL::2499 1
+DEAL::2500 1
+DEAL::2501 1
+DEAL::2502 3
+DEAL::2503 0
+DEAL::2504 0
+DEAL::2505 3
+DEAL::2506 0
+DEAL::2507 0
+DEAL::2508 0
+DEAL::2509 0
+DEAL::2510 0
+DEAL::2511 3
+DEAL::2512 0
+DEAL::2513 0
+DEAL::2514 3
+DEAL::2515 3
+DEAL::2516 0
+DEAL::2517 0
+DEAL::2518 3
+DEAL::2519 4
+DEAL::2520 3
+DEAL::2521 1
+DEAL::2522 1
+DEAL::2523 1
+DEAL::2524 1
+DEAL::2525 1
+DEAL::2526 1
+DEAL::2527 1
+DEAL::2528 1
+DEAL::2529 1
+DEAL::2530 0
+DEAL::2531 1
+DEAL::2532 1
+DEAL::2533 1
+DEAL::2534 1
+DEAL::2535 1
+DEAL::2536 1
+DEAL::2537 1
+DEAL::2538 1
+DEAL::2539 1
+DEAL::2540 1
+DEAL::2541 1
+DEAL::2542 1
+DEAL::2543 1
+DEAL::2544 1
+DEAL::2545 1
+DEAL::2546 1
+DEAL::2547 1
+DEAL::2548 1
+DEAL::2549 1
+DEAL::2550 1
+DEAL::2551 1
+DEAL::2552 1
+DEAL::2553 1
+DEAL::2554 1
+DEAL::2555 1
+DEAL::2556 1
+DEAL::2557 1
+DEAL::2558 1
+DEAL::2559 1
+DEAL::2560 1
+DEAL::2561 1
+DEAL::2562 1
+DEAL::2563 1
+DEAL::2564 1
+DEAL::2565 1
+DEAL::2566 1
+DEAL::2567 0
+DEAL::2568 1
+DEAL::2569 1
+DEAL::2570 1
+DEAL::2571 1
+DEAL::2572 1
+DEAL::2573 1
+DEAL::2574 1
+DEAL::2575 1
+DEAL::2576 1
+DEAL::2577 1
+DEAL::2578 0
+DEAL::2579 1
+DEAL::2580 0
+DEAL::2581 1
+DEAL::2582 0
+DEAL::2583 0
+DEAL::2584 0
+DEAL::2585 0
+DEAL::2586 1
+DEAL::2587 1
+DEAL::2588 1
+DEAL::2589 1
+DEAL::2590 1
+DEAL::2591 1
+DEAL::2592 0
+DEAL::2593 0
+DEAL::2594 1
+DEAL::2595 0
+DEAL::2596 1
+DEAL::2597 1
+DEAL::2598 1
+DEAL::2599 1
+DEAL::2600 1
+DEAL::2601 1
+DEAL::2602 1
+DEAL::2603 1
+DEAL::2604 1
+DEAL::2605 1
+DEAL::2606 1
+DEAL::2607 1
+DEAL::2608 2
+DEAL::2609 1
+DEAL::2610 1
+DEAL::2611 1
+DEAL::2612 1
+DEAL::2613 1
+DEAL::2614 1
+DEAL::2615 1
+DEAL::2616 1
+DEAL::2617 1
+DEAL::2618 1
+DEAL::2619 1
+DEAL::2620 1
+DEAL::2621 2
+DEAL::2622 1
+DEAL::2623 1
+DEAL::2624 1
+DEAL::2625 1
+DEAL::2626 1
+DEAL::2627 2
+DEAL::2628 1
+DEAL::2629 1
+DEAL::2630 1
+DEAL::2631 1
+DEAL::2632 1
+DEAL::2633 1
+DEAL::2634 1
+DEAL::2635 1
+DEAL::2636 1
+DEAL::2637 1
+DEAL::2638 1
+DEAL::2639 1
+DEAL::2640 1
+DEAL::2641 1
+DEAL::2642 1
+DEAL::2643 1
+DEAL::2644 1
+DEAL::2645 1
+DEAL::2646 1
+DEAL::2647 1
+DEAL::2648 1
+DEAL::2649 2
+DEAL::2650 1
+DEAL::2651 2
+DEAL::2652 1
+DEAL::2653 1
+DEAL::2654 1
+DEAL::2655 2
+DEAL::2656 2
+DEAL::2657 2
+DEAL::2658 2
+DEAL::2659 1
+DEAL::2660 2
+DEAL::2661 2
+DEAL::2662 1
+DEAL::2663 2
+DEAL::2664 2
+DEAL::2665 1
+DEAL::2666 1
+DEAL::2667 1
+DEAL::2668 1
+DEAL::2669 1
+DEAL::2670 1
+DEAL::2671 1
+DEAL::2672 1
+DEAL::2673 1
+DEAL::2674 1
+DEAL::2675 1
+DEAL::2676 1
+DEAL::2677 1
+DEAL::2678 1
+DEAL::2679 1
+DEAL::2680 1
+DEAL::2681 1
+DEAL::2682 1
+DEAL::2683 1
+DEAL::2684 1
+DEAL::2685 1
+DEAL::2686 1
+DEAL::2687 1
+DEAL::2688 1
+DEAL::2689 1
+DEAL::2690 1
+DEAL::2691 1
+DEAL::2692 1
+DEAL::2693 1
+DEAL::2694 1
+DEAL::2695 1
+DEAL::2696 1
+DEAL::2697 1
+DEAL::2698 1
+DEAL::2699 1
+DEAL::2700 2
+DEAL::2701 1
+DEAL::2702 1
+DEAL::2703 1
+DEAL::2704 1
+DEAL::2705 1
+DEAL::2706 1
+DEAL::2707 1
+DEAL::2708 1
+DEAL::2709 1
+DEAL::2710 1
+DEAL::2711 1
+DEAL::2712 2
+DEAL::2713 1
+DEAL::2714 1
+DEAL::2715 1
+DEAL::2716 2
+DEAL::2717 1
+DEAL::2718 1
+DEAL::2719 1
+DEAL::2720 1
+DEAL::2721 3
+DEAL::2722 1
+DEAL::2723 1
+DEAL::2724 1
+DEAL::2725 1
+DEAL::2726 1
+DEAL::2727 1
+DEAL::2728 1
+DEAL::2729 1
+DEAL::2730 1
+DEAL::2731 1
+DEAL::2732 1
+DEAL::2733 1
+DEAL::2734 1
+DEAL::2735 1
+DEAL::2736 1
+DEAL::2737 1
+DEAL::2738 1
+DEAL::2739 1
+DEAL::2740 1
+DEAL::2741 1
+DEAL::2742 1
+DEAL::2743 1
+DEAL::2744 1
+DEAL::2745 1
+DEAL::2746 1
+DEAL::2747 1
+DEAL::2748 1
+DEAL::2749 1
+DEAL::2750 1
+DEAL::2751 1
+DEAL::2752 1
+DEAL::2753 3
+DEAL::2754 1
+DEAL::2755 1
+DEAL::2756 1
+DEAL::2757 1
+DEAL::2758 1
+DEAL::2759 1
+DEAL::2760 1
+DEAL::2761 1
+DEAL::2762 1
+DEAL::2763 1
+DEAL::2764 1
+DEAL::2765 1
+DEAL::2766 1
+DEAL::2767 1
+DEAL::2768 1
+DEAL::2769 1
+DEAL::2770 1
+DEAL::2771 1
+DEAL::2772 3
+DEAL::2773 3
+DEAL::2774 1
+DEAL::2775 1
+DEAL::2776 1
+DEAL::2777 1
+DEAL::2778 3
+DEAL::2779 1
+DEAL::2780 1
+DEAL::2781 1
+DEAL::2782 1
+DEAL::2783 1
+DEAL::2784 1
+DEAL::2785 1
+DEAL::2786 3
+DEAL::2787 1
+DEAL::2788 1
+DEAL::2789 1
+DEAL::2790 1
+DEAL::2791 1
+DEAL::2792 1
+DEAL::2793 3
+DEAL::2794 1
+DEAL::2795 1
+DEAL::2796 3
+DEAL::2797 3
+DEAL::2798 3
+DEAL::2799 3
+DEAL::2800 3
+DEAL::2801 3
+DEAL::2802 3
+DEAL::2803 3
+DEAL::2804 3
+DEAL::2805 3
+DEAL::2806 1
+DEAL::2807 1
+DEAL::2808 3
+DEAL::2809 3
+DEAL::2810 3
+DEAL::2811 1
+DEAL::2812 1
+DEAL::2813 1
+DEAL::2814 1
+DEAL::2815 1
+DEAL::2816 3
+DEAL::2817 3
+DEAL::2818 3
+DEAL::2819 1
+DEAL::2820 3
+DEAL::2821 1
+DEAL::2822 3
+DEAL::2823 1
+DEAL::2824 3
+DEAL::2825 1
+DEAL::2826 1
+DEAL::2827 1
+DEAL::2828 3
+DEAL::2829 3
+DEAL::2830 3
+DEAL::2831 1
+DEAL::2832 3
+DEAL::2833 1
+DEAL::2834 3
+DEAL::2835 1
+DEAL::2836 1
+DEAL::2837 1
+DEAL::2838 1
+DEAL::2839 1
+DEAL::2840 3
+DEAL::2841 3
+DEAL::2842 3
+DEAL::2843 3
+DEAL::2844 3
+DEAL::2845 3
+DEAL::2846 3
+DEAL::2847 3
+DEAL::2848 3
+DEAL::2849 3
+DEAL::2850 3
+DEAL::2851 3
+DEAL::2852 3
+DEAL::2853 1
+DEAL::2854 3
+DEAL::2855 1
+DEAL::2856 3
+DEAL::2857 3
+DEAL::2858 3
+DEAL::2859 3
+DEAL::2860 3
+DEAL::2861 3
+DEAL::2862 3
+DEAL::2863 3
+DEAL::2864 3
+DEAL::2865 3
+DEAL::2866 3
+DEAL::2867 3
+DEAL::2868 3
+DEAL::2869 3
+DEAL::2870 3
+DEAL::2871 3
+DEAL::2872 3
+DEAL::2873 3
+DEAL::2874 3
+DEAL::2875 3
+DEAL::2876 1
+DEAL::2877 1
+DEAL::2878 1
+DEAL::2879 1
+DEAL::2880 1
+DEAL::2881 1
+DEAL::2882 1
+DEAL::2883 1
+DEAL::2884 1
+DEAL::2885 1
+DEAL::2886 1
+DEAL::2887 1
+DEAL::2888 1
+DEAL::2889 1
+DEAL::2890 1
+DEAL::2891 1
+DEAL::2892 1
+DEAL::2893 1
+DEAL::2894 1
+DEAL::2895 1
+DEAL::2896 1
+DEAL::2897 1
+DEAL::2898 1
+DEAL::2899 1
+DEAL::2900 1
+DEAL::2901 3
+DEAL::2902 1
+DEAL::2903 0
+DEAL::2904 0
+DEAL::2905 1
+DEAL::2906 1
+DEAL::2907 1
+DEAL::2908 1
+DEAL::2909 1
+DEAL::2910 1
+DEAL::2911 1
+DEAL::2912 3
+DEAL::2913 1
+DEAL::2914 0
+DEAL::2915 1
+DEAL::2916 1
+DEAL::2917 3
+DEAL::2918 1
+DEAL::2919 1
+DEAL::2920 1
+DEAL::2921 1
+DEAL::2922 3
+DEAL::2923 1
+DEAL::2924 4
+DEAL::2925 4
+DEAL::2926 1
+DEAL::2927 1
+DEAL::2928 2
+DEAL::2929 1
+DEAL::2930 1
+DEAL::2931 1
+DEAL::2932 1
+DEAL::2933 1
+DEAL::2934 1
+DEAL::2935 1
+DEAL::2936 1
+DEAL::2937 4
+DEAL::2938 1
+DEAL::2939 4
+DEAL::2940 1
+DEAL::2941 4
+DEAL::2942 4
+DEAL::2943 4
+DEAL::2944 1
+DEAL::2945 1
+DEAL::2946 1
+DEAL::2947 1
+DEAL::2948 4
+DEAL::2949 3
+DEAL::2950 1
+DEAL::2951 1
+DEAL::2952 3
+DEAL::2953 3
+DEAL::2954 1
+DEAL::2955 4
+DEAL::2956 3
+DEAL::2957 1
+DEAL::2958 3
+DEAL::2959 1
+DEAL::2960 4
+DEAL::2961 4
+DEAL::2962 4
+DEAL::2963 4
+DEAL::2964 3
+DEAL::2965 4
+DEAL::2966 4
+DEAL::2967 4
+DEAL::2968 4
+DEAL::2969 3
+DEAL::2970 4
+DEAL::2971 3
+DEAL::2972 2
+DEAL::2973 3
+DEAL::2974 3
+DEAL::2975 1
+DEAL::2976 1
+DEAL::2977 1
+DEAL::2978 1
+DEAL::2979 4
+DEAL::2980 2
+DEAL::2981 3
+DEAL::2982 3
+DEAL::2983 2
+DEAL::2984 2
+DEAL::2985 2
+DEAL::2986 2
+DEAL::2987 3
+DEAL::2988 3
+DEAL::2989 3
+DEAL::2990 3
+DEAL::2991 3
+DEAL::2992 3
+DEAL::2993 3
+DEAL::2994 3
+DEAL::2995 4
+DEAL::2996 3
+DEAL::2997 3
+DEAL::2998 4
+DEAL::2999 3
+DEAL::3000 3
+DEAL::3001 3
+DEAL::3002 4
+DEAL::3003 4
+DEAL::3004 2
+DEAL::3005 4
+DEAL::3006 2
+DEAL::3007 4
+DEAL::3008 4
+DEAL::3009 4
+DEAL::3010 4
+DEAL::3011 4
+DEAL::3012 2
+DEAL::3013 4
+DEAL::3014 2
+DEAL::3015 4
+DEAL::3016 2
+DEAL::3017 4
+DEAL::3018 2
+DEAL::3019 4
+DEAL::3020 4
+DEAL::3021 2
+DEAL::3022 2
+DEAL::3023 2
+DEAL::3024 2
+DEAL::3025 2
+DEAL::3026 4
+DEAL::3027 4
+DEAL::3028 4
+DEAL::3029 4
+DEAL::3030 4
+DEAL::3031 4
+DEAL::3032 4
+DEAL::3033 4
+DEAL::3034 4
+DEAL::3035 4
+DEAL::3036 4
+DEAL::3037 4
+DEAL::3038 4
+DEAL::3039 4
+DEAL::3040 4
+DEAL::3041 4
+DEAL::3042 4
+DEAL::3043 4
+DEAL::3044 4
+DEAL::3045 4
+DEAL::3046 4
+DEAL::3047 4
+DEAL::3048 4
+DEAL::3049 2
+DEAL::3050 2
+DEAL::3051 4
+DEAL::3052 4
+DEAL::3053 2
+DEAL::3054 2
+DEAL::3055 2
+DEAL::3056 2
+DEAL::3057 4
+DEAL::3058 2
+DEAL::3059 4
+DEAL::3060 2
+DEAL::3061 2
+DEAL::3062 4
+DEAL::3063 2
+DEAL::3064 2
+DEAL::3065 4
+DEAL::3066 4
+DEAL::3067 4
+DEAL::3068 4
+DEAL::3069 4
+DEAL::3070 4
+DEAL::3071 4
+DEAL::3072 4
+DEAL::3073 4
+DEAL::3074 4
+DEAL::3075 4
+DEAL::3076 4
+DEAL::3077 3
+DEAL::3078 3
+DEAL::3079 3
+DEAL::3080 3
+DEAL::3081 3
+DEAL::3082 3
+DEAL::3083 3
+DEAL::3084 4
+DEAL::3085 3
+DEAL::3086 3
+DEAL::3087 3
+DEAL::3088 3
+DEAL::3089 3
+DEAL::3090 3
+DEAL::3091 4
+DEAL::3092 4
+DEAL::3093 4
+DEAL::3094 3
+DEAL::3095 4
+DEAL::3096 4
+DEAL::3097 3
+DEAL::3098 4
+DEAL::3099 3
+DEAL::3100 4
+DEAL::3101 3
+DEAL::3102 3
+DEAL::3103 3
+DEAL::3104 3
+DEAL::3105 3
+DEAL::3106 3
+DEAL::3107 3
+DEAL::3108 3
+DEAL::3109 3
+DEAL::3110 3
+DEAL::3111 3
+DEAL::3112 3
+DEAL::3113 3
+DEAL::3114 3
+DEAL::3115 3
+DEAL::3116 3
+DEAL::3117 3
+DEAL::3118 3
+DEAL::3119 3
+DEAL::3120 3
+DEAL::3121 3
+DEAL::3122 3
+DEAL::3123 3
+DEAL::3124 3
+DEAL::3125 3
+DEAL::3126 3
+DEAL::3127 3
+DEAL::3128 3
+DEAL::3129 3
+DEAL::3130 3
+DEAL::3131 3
+DEAL::3132 3
+DEAL::3133 3
+DEAL::3134 3
+DEAL::3135 3
+DEAL::3136 3
+DEAL::3137 3
+DEAL::3138 3
+DEAL::3139 3
+DEAL::3140 3
+DEAL::3141 3
+DEAL::3142 3
+DEAL::3143 3
+DEAL::3144 3
+DEAL::3145 3
+DEAL::3146 3
+DEAL::3147 3
+DEAL::3148 3
+DEAL::3149 3
+DEAL::3150 3
+DEAL::3151 3
+DEAL::3152 3
+DEAL::3153 2
+DEAL::3154 3
+DEAL::3155 3
+DEAL::3156 2
+DEAL::3157 3
+DEAL::3158 3
+DEAL::3159 3
+DEAL::3160 4
+DEAL::3161 2
+DEAL::3162 2
+DEAL::3163 2
+DEAL::3164 2
+DEAL::3165 2
+DEAL::3166 2
+DEAL::3167 2
+DEAL::3168 3
+DEAL::3169 3
+DEAL::3170 3
+DEAL::3171 3
+DEAL::3172 3
+DEAL::3173 3
+DEAL::3174 3
+DEAL::3175 3
+DEAL::3176 4
+DEAL::3177 4
+DEAL::3178 3
+DEAL::3179 3
+DEAL::3180 4
+DEAL::3181 3
+DEAL::3182 4
+DEAL::3183 4
+DEAL::3184 4
+DEAL::3185 4
+DEAL::3186 3
+DEAL::3187 3
+DEAL::3188 3
+DEAL::3189 4
+DEAL::3190 3
+DEAL::3191 4
+DEAL::3192 2
+DEAL::3193 4
+DEAL::3194 2
+DEAL::3195 2
+DEAL::3196 2
+DEAL::3197 2
+DEAL::3198 2
+DEAL::3199 3
+DEAL::3200 4
+DEAL::3201 4
+DEAL::3202 3
+DEAL::3203 4
+DEAL::3204 3
+DEAL::3205 4
+DEAL::3206 4
+DEAL::3207 4
+DEAL::3208 4
+DEAL::3209 4
+DEAL::3210 2
+DEAL::3211 2
+DEAL::3212 4
+DEAL::3213 4
+DEAL::3214 2
+DEAL::3215 2
+DEAL::3216 4
+DEAL::3217 2
+DEAL::3218 2
+DEAL::3219 4
+DEAL::3220 2
+DEAL::3221 4
+DEAL::3222 2
+DEAL::3223 2
+DEAL::3224 2
+DEAL::3225 2
+DEAL::3226 2
+DEAL::3227 4
+DEAL::3228 4
+DEAL::3229 4
+DEAL::3230 4
+DEAL::3231 4
+DEAL::3232 4
+DEAL::3233 4
+DEAL::3234 4
+DEAL::3235 2
+DEAL::3236 2
+DEAL::3237 2
+DEAL::3238 4
+DEAL::3239 2
+DEAL::3240 4
+DEAL::3241 2
+DEAL::3242 2
+DEAL::3243 4
+DEAL::3244 2
+DEAL::3245 4
+DEAL::3246 2
+DEAL::3247 2
+DEAL::3248 2
+DEAL::3249 2
+DEAL::3250 2
+DEAL::3251 4
+DEAL::3252 4
+DEAL::3253 4
+DEAL::3254 4
+DEAL::3255 4
+DEAL::3256 4
+DEAL::3257 4
+DEAL::3258 4
+DEAL::3259 3
+DEAL::3260 3
+DEAL::3261 3
+DEAL::3262 3
+DEAL::3263 3
+DEAL::3264 3
+DEAL::3265 3
+DEAL::3266 3
+DEAL::3267 4
+DEAL::3268 3
+DEAL::3269 4
+DEAL::3270 3
+DEAL::3271 3
+DEAL::3272 3
+DEAL::3273 3
+DEAL::3274 3
+DEAL::3275 3
+DEAL::3276 3
+DEAL::3277 3
+DEAL::3278 3
+DEAL::3279 3
+DEAL::3280 3
+DEAL::3281 4
+DEAL::3282 3
+DEAL::3283 4
+DEAL::3284 3
+DEAL::3285 3
+DEAL::3286 3
+DEAL::3287 3
+DEAL::3288 3
+DEAL::3289 4
+DEAL::3290 4
+DEAL::3291 3
+DEAL::3292 3
+DEAL::3293 3
+DEAL::3294 3
+DEAL::3295 4
+DEAL::3296 4
+DEAL::3297 0
+DEAL::3298 0
+DEAL::3299 0
+DEAL::3300 0
+DEAL::3301 0
+DEAL::3302 0
+DEAL::3303 0
+DEAL::3304 0
+DEAL::3305 0
+DEAL::3306 0
+DEAL::3307 0
+DEAL::3308 0
+DEAL::3309 0
+DEAL::3310 0
+DEAL::3311 0
+DEAL::3312 0
+DEAL::3313 0
+DEAL::3314 0
+DEAL::3315 0
+DEAL::3316 0
+DEAL::3317 0
+DEAL::3318 4
+DEAL::3319 0
+DEAL::3320 0
+DEAL::3321 0
+DEAL::3322 0
+DEAL::3323 0
+DEAL::3324 0
+DEAL::3325 0
+DEAL::3326 0
+DEAL::3327 0
+DEAL::3328 0
+DEAL::3329 0
+DEAL::3330 4
+DEAL::3331 0
+DEAL::3332 0
+DEAL::3333 0
+DEAL::3334 0
+DEAL::3335 0
+DEAL::3336 0
+DEAL::3337 0
+DEAL::3338 0
+DEAL::3339 0
+DEAL::3340 0
+DEAL::3341 0
+DEAL::3342 0
+DEAL::3343 0
+DEAL::3344 0
+DEAL::3345 0
+DEAL::3346 0
+DEAL::3347 4
+DEAL::3348 0
+DEAL::3349 0
+DEAL::3350 0
+DEAL::3351 0
+DEAL::3352 0
+DEAL::3353 0
+DEAL::3354 0
+DEAL::3355 4
+DEAL::3356 0
+DEAL::3357 0
+DEAL::3358 0
+DEAL::3359 4
+DEAL::3360 4
+DEAL::3361 0
+DEAL::3362 0
+DEAL::3363 4
+DEAL::3364 0
+DEAL::3365 0
+DEAL::3366 4
+DEAL::3367 0
+DEAL::3368 0
+DEAL::3369 0
+DEAL::3370 0
+DEAL::3371 0
+DEAL::3372 0
+DEAL::3373 4
+DEAL::3374 4
+DEAL::3375 0
+DEAL::3376 0
+DEAL::3377 0
+DEAL::3378 0
+DEAL::3379 0
+DEAL::3380 0
+DEAL::3381 4
+DEAL::3382 4
+DEAL::3383 4
+DEAL::3384 0
+DEAL::3385 4
+DEAL::3386 0
+DEAL::3387 0
+DEAL::3388 0
+DEAL::3389 4
+DEAL::3390 4
+DEAL::3391 4
+DEAL::3392 4
+DEAL::3393 4
+DEAL::3394 4
+DEAL::3395 4
+DEAL::3396 0
+DEAL::3397 4
+DEAL::3398 4
+DEAL::3399 0
+DEAL::3400 4
+DEAL::3401 4
+DEAL::3402 4
+DEAL::3403 4
+DEAL::3404 4
+DEAL::3405 4
+DEAL::3406 4
+DEAL::3407 4
+DEAL::3408 4
+DEAL::3409 4
+DEAL::3410 4
+DEAL::3411 4
+DEAL::3412 0
+DEAL::3413 0
+DEAL::3414 0
+DEAL::3415 0
+DEAL::3416 0
+DEAL::3417 0
+DEAL::3418 0
+DEAL::3419 0
+DEAL::3420 0
+DEAL::3421 0
+DEAL::3422 0
+DEAL::3423 0
+DEAL::3424 0
+DEAL::3425 0
+DEAL::3426 0
+DEAL::3427 0
+DEAL::3428 0
+DEAL::3429 0
+DEAL::3430 0
+DEAL::3431 0
+DEAL::3432 0
+DEAL::3433 0
+DEAL::3434 0
+DEAL::3435 0
+DEAL::3436 0
+DEAL::3437 0
+DEAL::3438 0
+DEAL::3439 0
+DEAL::3440 0
+DEAL::3441 0
+DEAL::3442 0
+DEAL::3443 0
+DEAL::3444 0
+DEAL::3445 0
+DEAL::3446 0
+DEAL::3447 0
+DEAL::3448 0
+DEAL::3449 0
+DEAL::3450 0
+DEAL::3451 0
+DEAL::3452 0
+DEAL::3453 0
+DEAL::3454 4
+DEAL::3455 0
+DEAL::3456 0
+DEAL::3457 0
+DEAL::3458 0
+DEAL::3459 0
+DEAL::3460 0
+DEAL::3461 0
+DEAL::3462 0
+DEAL::3463 0
+DEAL::3464 0
+DEAL::3465 0
+DEAL::3466 0
+DEAL::3467 0
+DEAL::3468 0
+DEAL::3469 0
+DEAL::3470 0
+DEAL::3471 0
+DEAL::3472 0
+DEAL::3473 0
+DEAL::3474 0
+DEAL::3475 0
+DEAL::3476 0
+DEAL::3477 0
+DEAL::3478 0
+DEAL::3479 0
+DEAL::3480 0
+DEAL::3481 0
+DEAL::3482 0
+DEAL::3483 0
+DEAL::3484 0
+DEAL::3485 0
+DEAL::3486 0
+DEAL::3487 0
+DEAL::3488 0
+DEAL::3489 0
+DEAL::3490 0
+DEAL::3491 0
+DEAL::3492 0
+DEAL::3493 0
+DEAL::3494 0
+DEAL::3495 0
+DEAL::3496 0
+DEAL::3497 0
+DEAL::3498 0
+DEAL::3499 0
+DEAL::3500 0
+DEAL::3501 0
+DEAL::3502 0
+DEAL::3503 0
+DEAL::3504 0
+DEAL::3505 0
+DEAL::3506 0
+DEAL::3507 0
+DEAL::3508 0
+DEAL::3509 4
+DEAL::3510 4
+DEAL::3511 4
+DEAL::3512 4
+DEAL::3513 4
+DEAL::3514 4
+DEAL::3515 4
+DEAL::3516 4
+DEAL::3517 4
+DEAL::3518 4
+DEAL::3519 4
+DEAL::3520 4
+DEAL::3521 4
+DEAL::3522 4
+DEAL::3523 4
+DEAL::3524 4
+DEAL::3525 4
+DEAL::3526 4
+DEAL::3527 4
+DEAL::3528 4
+DEAL::3529 4
+DEAL::3530 4
+DEAL::3531 4
+DEAL::3532 4
+DEAL::3533 4
+DEAL::3534 4
+DEAL::3535 4
+DEAL::3536 4
+DEAL::3537 4
+DEAL::3538 4
+DEAL::3539 4
+DEAL::3540 4
+DEAL::3541 4
+DEAL::3542 4
+DEAL::3543 4
+DEAL::3544 4
+DEAL::3545 4
+DEAL::3546 4
+DEAL::3547 4
+DEAL::3548 4
+DEAL::3549 4
+DEAL::3550 4
+DEAL::3551 4
+DEAL::3552 4
+DEAL::3553 4
+DEAL::3554 4
+DEAL::3555 4
+DEAL::3556 4
+DEAL::3557 4
+DEAL::3558 4
+DEAL::3559 4
+DEAL::3560 4
+DEAL::3561 4
+DEAL::3562 4
+DEAL::3563 4
+DEAL::3564 4
+DEAL::3565 4
+DEAL::3566 4
+DEAL::3567 4
+DEAL::3568 4
+DEAL::3569 4
+DEAL::3570 4
+DEAL::3571 4
+DEAL::3572 4
+DEAL::3573 4
+DEAL::3574 4
+DEAL::3575 4
+DEAL::3576 4
+DEAL::3577 4
+DEAL::3578 4
+DEAL::3579 4
+DEAL::3580 4
+DEAL::3581 4
+DEAL::3582 4
+DEAL::3583 4
+DEAL::3584 4
+DEAL::3585 4
+DEAL::3586 4
+DEAL::3587 4
+DEAL::3588 4
+DEAL::3589 4
+DEAL::3590 4
+DEAL::3591 4
+DEAL::3592 4
+DEAL::3593 4
+DEAL::3594 4
+DEAL::3595 4
+DEAL::3596 4
+DEAL::3597 4
+DEAL::3598 4
+DEAL::3599 4
+DEAL::3600 4
+DEAL::3601 4
+DEAL::3602 2
+DEAL::3603 2
+DEAL::3604 2
+DEAL::3605 2
+DEAL::3606 2
+DEAL::3607 2
+DEAL::3608 2
+DEAL::3609 2
+DEAL::3610 2
+DEAL::3611 2
+DEAL::3612 2
+DEAL::3613 2
+DEAL::3614 2
+DEAL::3615 2
+DEAL::3616 2
+DEAL::3617 2
+DEAL::3618 2
+DEAL::3619 2
+DEAL::3620 2
+DEAL::3621 2
+DEAL::3622 2
+DEAL::3623 2
+DEAL::3624 2
+DEAL::3625 2
+DEAL::3626 2
+DEAL::3627 2
+DEAL::3628 2
+DEAL::3629 2
+DEAL::3630 2
+DEAL::3631 2
+DEAL::3632 2
+DEAL::3633 2
+DEAL::3634 2
+DEAL::3635 2
+DEAL::3636 2
+DEAL::3637 2
+DEAL::3638 2
+DEAL::3639 2
+DEAL::3640 2
+DEAL::3641 2
+DEAL::3642 2
+DEAL::3643 2
+DEAL::3644 2
+DEAL::3645 2
+DEAL::3646 2
+DEAL::3647 2
+DEAL::3648 2
+DEAL::3649 2
+DEAL::3650 2
+DEAL::3651 2
+DEAL::3652 2
+DEAL::3653 2
+DEAL::3654 2
+DEAL::3655 2
+DEAL::3656 2
+DEAL::3657 2
+DEAL::3658 2
+DEAL::3659 2
+DEAL::3660 2
+DEAL::3661 2
+DEAL::3662 2
+DEAL::3663 2
+DEAL::3664 2
+DEAL::3665 2
+DEAL::3666 2
+DEAL::3667 2
+DEAL::3668 0
+DEAL::3669 3
+DEAL::3670 0
+DEAL::3671 4
+DEAL::3672 4
+DEAL::3673 0
+DEAL::3674 3
+DEAL::3675 0
+DEAL::3676 0
+DEAL::3677 0
+DEAL::3678 0
+DEAL::3679 0
+DEAL::3680 3
+DEAL::3681 3
+DEAL::3682 4
+DEAL::3683 0
+DEAL::3684 3
+DEAL::3685 3
+DEAL::3686 3
+DEAL::3687 3
+DEAL::3688 3
+DEAL::3689 3
+DEAL::3690 3
+DEAL::3691 3
+DEAL::3692 4
+DEAL::3693 4
+DEAL::3694 4
+DEAL::3695 4
+DEAL::3696 4
+DEAL::3697 4
+DEAL::3698 3
+DEAL::3699 4
+DEAL::3700 4
+DEAL::3701 4
+DEAL::3702 4
+DEAL::3703 4
+DEAL::3704 4
+DEAL::3705 4
+DEAL::3706 4
+DEAL::3707 4
+DEAL::3708 4
+DEAL::3709 4
+DEAL::3710 3
+DEAL::3711 4
+DEAL::3712 3
+DEAL::3713 3
+DEAL::3714 3
+DEAL::3715 3
+DEAL::3716 3
+DEAL::3717 3
+DEAL::3718 4
+DEAL::3719 3
+DEAL::3720 4
+DEAL::3721 4
+DEAL::3722 4
+DEAL::3723 4
+DEAL::3724 4
+DEAL::3725 4
+DEAL::3726 4
+DEAL::3727 4
+DEAL::3728 4
+DEAL::3729 4
+DEAL::3730 4
+DEAL::3731 4
+DEAL::3732 4
+DEAL::3733 4
+DEAL::3734 4
+DEAL::3735 4
+DEAL::3736 4
+DEAL::3737 4
+DEAL::3738 4
+DEAL::3739 4
+DEAL::3740 4
+DEAL::3741 4
+DEAL::3742 4
+DEAL::3743 4
+DEAL::3744 4
+DEAL::3745 4
+DEAL::3746 4
+DEAL::3747 4
+DEAL::3748 3
+DEAL::3749 3
+DEAL::3750 4
+DEAL::3751 4
+DEAL::3752 3
+DEAL::3753 4
+DEAL::3754 3
+DEAL::3755 4
+DEAL::3756 4
+DEAL::3757 4
+DEAL::3758 4
+DEAL::3759 4
+DEAL::3760 3
+DEAL::3761 4
+DEAL::3762 4
+DEAL::3763 4
+DEAL::3764 4
+DEAL::3765 3
+DEAL::3766 4
+DEAL::3767 4
+DEAL::3768 4
+DEAL::3769 4
+DEAL::3770 4
+DEAL::3771 4
+DEAL::3772 4
+DEAL::3773 4
+DEAL::3774 4
+DEAL::3775 4
+DEAL::3776 4
+DEAL::3777 4
+DEAL::3778 4
+DEAL::3779 4
+DEAL::3780 4
+DEAL::3781 4
+DEAL::3782 4
+DEAL::3783 4
+DEAL::3784 4
+DEAL::3785 4
+DEAL::3786 4
+DEAL::3787 4
+DEAL::3788 4
+DEAL::3789 4
+DEAL::3790 4
+DEAL::3791 4
+DEAL::3792 4
+DEAL::3793 4
+DEAL::3794 4
+DEAL::3795 4
+DEAL::3796 3
+DEAL::3797 4
+DEAL::3798 4
+DEAL::3799 4
+DEAL::3800 3
+DEAL::3801 4
+DEAL::3802 4
+DEAL::3803 4
+DEAL::3804 3
+DEAL::3805 4
+DEAL::3806 4
+DEAL::3807 4
+DEAL::3808 4
+DEAL::3809 3
+DEAL::3810 4
+DEAL::3811 4
+DEAL::3812 4
+DEAL::3813 4
+DEAL::3814 4
+DEAL::3815 4
+DEAL::3816 4
+DEAL::3817 4
+DEAL::3818 4
+DEAL::3819 4
+DEAL::3820 4
+DEAL::3821 4
+DEAL::3822 4
+DEAL::3823 4
+DEAL::3824 4
+DEAL::3825 4
+DEAL::3826 4
+DEAL::3827 4
+DEAL::3828 4
+DEAL::3829 4
+DEAL::3830 4
+DEAL::3831 4
+DEAL::3832 4
+DEAL::3833 4
+DEAL::3834 4
+DEAL::3835 4
+DEAL::3836 4
+DEAL::3837 4
+DEAL::3838 4
+DEAL::3839 4
+DEAL::3840 4
+DEAL::3841 4
+DEAL::3842 4
+DEAL::3843 4
+DEAL::3844 4
+DEAL::3845 4
+DEAL::3846 4
+DEAL::3847 4
+DEAL::3848 4
+DEAL::3849 4
+DEAL::3850 4
+DEAL::3851 4
+DEAL::3852 4
+DEAL::3853 4
+DEAL::3854 4
+DEAL::3855 4
+DEAL::3856 4
+DEAL::3857 4
+DEAL::3858 4
+DEAL::3859 4
+DEAL::3860 4
+DEAL::3861 4
+DEAL::3862 4
+DEAL::3863 4
+DEAL::3864 4
+DEAL::3865 4
+DEAL::3866 4
+DEAL::3867 4
+DEAL::3868 4
+DEAL::3869 4
+DEAL::3870 4
+DEAL::3871 4
+DEAL::3872 4
+DEAL::3873 4
+DEAL::3874 4
+DEAL::3875 4
+DEAL::3876 4
+DEAL::3877 4
+DEAL::3878 4
+DEAL::3879 3
+DEAL::3880 3
+DEAL::3881 3
+DEAL::3882 3
+DEAL::3883 3
+DEAL::3884 3
+DEAL::3885 3
+DEAL::3886 3
+DEAL::3887 3
+DEAL::3888 3
+DEAL::3889 3
+DEAL::3890 3
+DEAL::3891 3
+DEAL::3892 4
+DEAL::3893 3
+DEAL::3894 4
+DEAL::3895 3
+DEAL::3896 3
+DEAL::3897 3
+DEAL::3898 3
+DEAL::3899 3
+DEAL::3900 3
+DEAL::3901 3
+DEAL::3902 3
+DEAL::3903 3
+DEAL::3904 3
+DEAL::3905 3
+DEAL::3906 3
+DEAL::3907 3
+DEAL::3908 3
+DEAL::3909 3
+DEAL::3910 3
+DEAL::3911 3
+DEAL::3912 3
+DEAL::3913 4
+DEAL::3914 3
+DEAL::3915 3
+DEAL::3916 3
+DEAL::3917 3
+DEAL::3918 3
+DEAL::3919 3
+DEAL::3920 3
+DEAL::3921 3
+DEAL::3922 3
+DEAL::3923 3
+DEAL::3924 3
+DEAL::3925 3
+DEAL::3926 3
+DEAL::3927 3
+DEAL::3928 3
+DEAL::3929 3
+DEAL::3930 3
+DEAL::3931 3
+DEAL::3932 3
+DEAL::3933 4
+DEAL::3934 3
+DEAL::3935 4
+DEAL::3936 3
+DEAL::3937 3
+DEAL::3938 3
+DEAL::3939 3
+DEAL::3940 3
+DEAL::3941 3
+DEAL::3942 3
+DEAL::3943 3
+DEAL::3944 3
+DEAL::3945 3
+DEAL::3946 3
+DEAL::3947 3
+DEAL::3948 3
+DEAL::3949 3
+DEAL::3950 3
+DEAL::3951 3
+DEAL::3952 3
+DEAL::3953 4
+DEAL::3954 3
+DEAL::3955 4
+DEAL::3956 3
+DEAL::3957 3
+DEAL::3958 3
+DEAL::3959 3
+DEAL::3960 4
+DEAL::3961 4
+DEAL::3962 4
+DEAL::3963 3
+DEAL::3964 4
+DEAL::3965 4
+DEAL::3966 4
+DEAL::3967 4
+DEAL::3968 4
+DEAL::3969 4
+DEAL::3970 4
+DEAL::3971 4
+DEAL::3972 4
+DEAL::3973 4
+DEAL::3974 4
+DEAL::3975 4
+DEAL::3976 4
+DEAL::3977 3
+DEAL::3978 3
+DEAL::3979 3
+DEAL::3980 3
+DEAL::3981 4
+DEAL::3982 3
+DEAL::3983 3
+DEAL::3984 3
+DEAL::3985 3
+DEAL::3986 4
+DEAL::3987 4
+DEAL::3988 4
+DEAL::3989 4
+DEAL::3990 4
+DEAL::3991 4
+DEAL::3992 4
+DEAL::3993 4
+DEAL::3994 4
+DEAL::3995 4
+DEAL::3996 4
+DEAL::3997 4
+DEAL::3998 4
+DEAL::3999 4
+DEAL::4000 4
+DEAL::4001 4
+DEAL::4002 4
+DEAL::4003 4
+DEAL::4004 4
+DEAL::4005 4
+DEAL::4006 4
+DEAL::4007 4
+DEAL::4008 4
+DEAL::4009 4
+DEAL::4010 4
+DEAL::4011 4
+DEAL::4012 4
+DEAL::4013 4
+DEAL::4014 4
+DEAL::4015 4
+DEAL::4016 4
+DEAL::4017 4
+DEAL::4018 4
+DEAL::4019 4
+DEAL::4020 4
+DEAL::4021 4
+DEAL::4022 4
+DEAL::4023 4
+DEAL::4024 4
+DEAL::4025 4
+DEAL::4026 4
+DEAL::4027 4
+DEAL::4028 4
+DEAL::4029 4
+DEAL::4030 4
+DEAL::4031 4
+DEAL::4032 4
+DEAL::4033 4
+DEAL::4034 4
+DEAL::4035 4
+DEAL::4036 4
+DEAL::4037 4
+DEAL::4038 4
+DEAL::4039 2
+DEAL::4040 4
+DEAL::4041 4
+DEAL::4042 4
+DEAL::4043 4
+DEAL::4044 4
+DEAL::4045 4
+DEAL::4046 4
+DEAL::4047 4
+DEAL::4048 4
+DEAL::4049 4
+DEAL::4050 4
+DEAL::4051 4
+DEAL::4052 4
+DEAL::4053 4
+DEAL::4054 4
+DEAL::4055 4
+DEAL::4056 4
+DEAL::4057 4
+DEAL::4058 4
+DEAL::4059 4
+DEAL::4060 2
+DEAL::4061 4
+DEAL::4062 4
+DEAL::4063 2
+DEAL::4064 4
+DEAL::4065 4
+DEAL::4066 4
+DEAL::4067 4
+DEAL::4068 4
+DEAL::4069 4
+DEAL::4070 4
+DEAL::4071 4
+DEAL::4072 4
+DEAL::4073 4
+DEAL::4074 4
+DEAL::4075 2
+DEAL::4076 2
+DEAL::4077 2
+DEAL::4078 4
+DEAL::4079 2
+DEAL::4080 2
+DEAL::4081 2
+DEAL::4082 2
+DEAL::4083 4
+DEAL::4084 2
+DEAL::4085 4
+DEAL::4086 2
+DEAL::4087 2
+DEAL::4088 2
+DEAL::4089 2
+DEAL::4090 4
+DEAL::4091 2
+DEAL::4092 2
+DEAL::4093 4
+DEAL::4094 4
+DEAL::4095 4
+DEAL::4096 4
+DEAL::4097 4
+DEAL::4098 4
+DEAL::4099 4
+DEAL::4100 4
+DEAL::4101 4
+DEAL::4102 4
+DEAL::4103 4
+DEAL::4104 4
+DEAL::4105 4
+DEAL::4106 4
+DEAL::4107 4
+DEAL::4108 4
+DEAL::4109 2
+DEAL::4110 2
+DEAL::4111 4
+DEAL::4112 4
+DEAL::4113 2
+DEAL::4114 2
+DEAL::4115 2
+DEAL::4116 2
+DEAL::4117 4
+DEAL::4118 2
+DEAL::4119 4
+DEAL::4120 2
+DEAL::4121 2
+DEAL::4122 4
+DEAL::4123 2
+DEAL::4124 2
+DEAL::4125 4
+DEAL::4126 4
+DEAL::4127 4
+DEAL::4128 4
+DEAL::4129 4
+DEAL::4130 4
+DEAL::4131 4
+DEAL::4132 4
+DEAL::4133 4
+DEAL::4134 4
+DEAL::4135 4
+DEAL::4136 4
+DEAL::4137 4
+DEAL::4138 4
+DEAL::4139 4
+DEAL::4140 4
+DEAL::4141 4
+DEAL::4142 4
+DEAL::4143 4
+DEAL::4144 4
+DEAL::4145 4
+DEAL::4146 4
+DEAL::4147 4
+DEAL::4148 4
+DEAL::4149 4
+DEAL::4150 4
+DEAL::4151 4
+DEAL::4152 4
+DEAL::4153 4
+DEAL::4154 4
+DEAL::4155 4
+DEAL::4156 4
+DEAL::4157 4
+DEAL::4158 4
+DEAL::4159 4
+DEAL::4160 4
+DEAL::4161 4
+DEAL::4162 4
+DEAL::4163 4
+DEAL::4164 4
+DEAL::4165 4
+DEAL::4166 4
+DEAL::4167 4
+DEAL::4168 4
+DEAL::4169 4
+DEAL::4170 4
+DEAL::4171 4
+DEAL::4172 4
+DEAL::4173 4
+DEAL::4174 4
+DEAL::4175 4
+DEAL::4176 4
+DEAL::4177 4
+DEAL::4178 4
+DEAL::4179 4
+DEAL::4180 4
+DEAL::4181 4
+DEAL::4182 4
+DEAL::4183 4
+DEAL::4184 4
+DEAL::4185 4
+DEAL::4186 4
+DEAL::4187 4
+DEAL::4188 4
+DEAL::4189 4
+DEAL::4190 4
+DEAL::4191 4
+DEAL::4192 4
+DEAL::4193 4
+DEAL::4194 4
+DEAL::4195 4
+DEAL::4196 4
+DEAL::4197 4
+DEAL::4198 4
+DEAL::4199 4
+DEAL::4200 4
+DEAL::4201 4
+DEAL::4202 4
+DEAL::4203 4
+DEAL::4204 4
+DEAL::4205 4
+DEAL::4206 4
+DEAL::4207 4
+DEAL::4208 4
+DEAL::4209 4
+DEAL::4210 4
+DEAL::4211 4
+DEAL::4212 4
+DEAL::4213 2
+DEAL::4214 2
+DEAL::4215 4
+DEAL::4216 4
+DEAL::4217 2
+DEAL::4218 2
+DEAL::4219 2
+DEAL::4220 2
+DEAL::4221 2
+DEAL::4222 2
+DEAL::4223 2
+DEAL::4224 4
+DEAL::4225 2
+DEAL::4226 2
+DEAL::4227 2
+DEAL::4228 2
+DEAL::4229 2
+DEAL::4230 2
+DEAL::4231 2
+DEAL::4232 4
+DEAL::4233 2
+DEAL::4234 2
+DEAL::4235 2
+DEAL::4236 2
+DEAL::4237 2
+DEAL::4238 2
+DEAL::4239 2
+DEAL::4240 4
+DEAL::4241 2
+DEAL::4242 2
+DEAL::4243 4
+DEAL::4244 4
+DEAL::4245 4
+DEAL::4246 4
+DEAL::4247 4
+DEAL::4248 4
+DEAL::4249 4
+DEAL::4250 4
+DEAL::4251 4
+DEAL::4252 4
+DEAL::4253 4
+DEAL::4254 4
+DEAL::4255 4
+DEAL::4256 4
+DEAL::4257 4
+DEAL::4258 4
+DEAL::4259 4
+DEAL::4260 4
+DEAL::4261 4
+DEAL::4262 4
+DEAL::4263 2
+DEAL::4264 4
+DEAL::4265 4
+DEAL::4266 2
+DEAL::4267 2
+DEAL::4268 2
+DEAL::4269 2
+DEAL::4270 2
+DEAL::4271 2
+DEAL::4272 4
+DEAL::4273 2
+DEAL::4274 2
+DEAL::4275 2
+DEAL::4276 2
+DEAL::4277 4
+DEAL::4278 2
+DEAL::4279 2
+DEAL::4280 2
+DEAL::4281 2
+DEAL::4282 2
+DEAL::4283 4
+DEAL::4284 2
+DEAL::4285 4
+DEAL::4286 2
+DEAL::4287 2
+DEAL::4288 2
+DEAL::4289 2
+DEAL::4290 2
+DEAL::4291 4
+DEAL::4292 4
+DEAL::4293 4
+DEAL::4294 4
+DEAL::4295 4
+DEAL::4296 4
+DEAL::4297 4
+DEAL::4298 4
+DEAL::4299 4
+DEAL::4300 4
+DEAL::4301 4
+DEAL::4302 4
+DEAL::4303 4
+DEAL::4304 4
+DEAL::4305 4
+DEAL::4306 4
+DEAL::4307 4
+DEAL::4308 4
+DEAL::4309 4
+DEAL::4310 4
+DEAL::4311 4
+DEAL::4312 4
+DEAL::4313 4
+DEAL::4314 4
+DEAL::4315 4
+DEAL::4316 4
+DEAL::4317 4
+DEAL::4318 4
+DEAL::4319 4
+DEAL::4320 4
+DEAL::4321 4
+DEAL::4322 4
+DEAL::4323 4
+DEAL::4324 4
+DEAL::4325 4
+DEAL::4326 4
+DEAL::4327 4
+DEAL::4328 4
+DEAL::4329 4
+DEAL::4330 4
+DEAL::4331 4
+DEAL::4332 4
+DEAL::4333 4
+DEAL::4334 4
+DEAL::4335 4
+DEAL::4336 4
+DEAL::4337 4
+DEAL::4338 4
+DEAL::4339 4
+DEAL::4340 4
+DEAL::4341 4
+DEAL::4342 4
+DEAL::4343 4
+DEAL::4344 4
+DEAL::4345 4
+DEAL::4346 4
+DEAL::4347 4
+DEAL::4348 4
+DEAL::4349 4
+DEAL::4350 4
+DEAL::4351 4
+DEAL::4352 4
+DEAL::4353 4
+DEAL::4354 4
+DEAL::4355 4
+DEAL::4356 4
+DEAL::4357 4
+DEAL::4358 4
+DEAL::4359 4
+DEAL::4360 4
+DEAL::4361 4
+DEAL::4362 4
+DEAL::4363 4
+DEAL::4364 4
+DEAL::4365 4
+DEAL::4366 4
+DEAL::4367 4
+DEAL::4368 4
+DEAL::4369 4
+DEAL::4370 4
+DEAL::4371 4
+DEAL::4372 4
+DEAL::4373 4
+DEAL::4374 4
+DEAL::4375 4
+DEAL::4376 4
+DEAL::4377 4
+DEAL::4378 4
+DEAL::4379 4
+DEAL::4380 4
+DEAL::4381 4
+DEAL::4382 4
+DEAL::4383 4
+DEAL::4384 4
+DEAL::4385 4
+DEAL::4386 4
+DEAL::4387 4
+DEAL::4388 4
+DEAL::4389 4
+DEAL::4390 4
+DEAL::4391 4
+DEAL::4392 4
+DEAL::4393 4
+DEAL::4394 4
+DEAL::4395 4
+DEAL::4396 4
+DEAL::4397 4
+DEAL::4398 4
+DEAL::4399 4
+DEAL::4400 4
+DEAL::4401 4
+DEAL::4402 4
+DEAL::4403 4
+DEAL::4404 4
+DEAL::4405 4
+DEAL::4406 4
+DEAL::4407 4
+DEAL::4408 4
+DEAL::4409 4
+DEAL::4410 4
+DEAL::4411 4
+DEAL::4412 4
+DEAL::4413 4
+DEAL::4414 4
+DEAL::4415 4
+DEAL::4416 4
+DEAL::4417 4
+DEAL::4418 4
+DEAL::4419 4
+DEAL::4420 4
+DEAL::4421 4
+DEAL::4422 4
+DEAL::4423 4
+DEAL::4424 4
+DEAL::4425 4
+DEAL::4426 4
+DEAL::4427 4
+DEAL::4428 4
+DEAL::4429 4
+DEAL::4430 4
+DEAL::4431 4
+DEAL::4432 4
+DEAL::4433 4
+DEAL::4434 4
+DEAL::4435 4
+DEAL::4436 4
+DEAL::4437 4
+DEAL::4438 4
+DEAL::4439 4
+DEAL::4440 4
+DEAL::4441 4
+DEAL::4442 4
+DEAL::4443 4
+DEAL::4444 4
+DEAL::4445 4
+DEAL::4446 4
+DEAL::4447 4
+DEAL::4448 4
+DEAL::4449 4
+DEAL::4450 4
+DEAL::4451 4
+DEAL::4452 1
+DEAL::4453 1
+DEAL::4454 1
+DEAL::4455 1
+DEAL::4456 1
+DEAL::4457 1
+DEAL::4458 1
+DEAL::4459 1
+DEAL::4460 1
+DEAL::4461 1
+DEAL::4462 1
+DEAL::4463 1
+DEAL::4464 1
+DEAL::4465 1
+DEAL::4466 1
+DEAL::4467 1
+DEAL::4468 1
+DEAL::4469 1
+DEAL::4470 1
+DEAL::4471 1
+DEAL::4472 1
+DEAL::4473 1
+DEAL::4474 1
+DEAL::4475 1
+DEAL::4476 1
+DEAL::4477 1
+DEAL::4478 1
+DEAL::4479 1
+DEAL::4480 1
+DEAL::4481 1
+DEAL::4482 1
+DEAL::4483 1
+DEAL::4484 1
+DEAL::4485 1
+DEAL::4486 1
+DEAL::4487 1
+DEAL::4488 1
+DEAL::4489 1
+DEAL::4490 1
+DEAL::4491 1
+DEAL::4492 1
+DEAL::4493 1
+DEAL::4494 1
+DEAL::4495 1
+DEAL::4496 1
+DEAL::4497 1
+DEAL::4498 1
+DEAL::4499 1
+DEAL::4500 1
+DEAL::4501 1
+DEAL::4502 1
+DEAL::4503 1
+DEAL::4504 1
+DEAL::4505 1
+DEAL::4506 1
+DEAL::4507 1
+DEAL::4508 1
+DEAL::4509 1
+DEAL::4510 1
+DEAL::4511 1
+DEAL::4512 1
+DEAL::4513 1
+DEAL::4514 1
+DEAL::4515 1
+DEAL::4516 1
+DEAL::4517 1
+DEAL::4518 1
+DEAL::4519 1
+DEAL::4520 1
+DEAL::4521 1
+DEAL::4522 1
+DEAL::4523 1
+DEAL::4524 1
+DEAL::4525 1
+DEAL::4526 1
+DEAL::4527 1
+DEAL::4528 1
+DEAL::4529 1
+DEAL::4530 1
+DEAL::4531 1
+DEAL::4532 1
+DEAL::4533 1
+DEAL::4534 1
+DEAL::4535 1
+DEAL::4536 1
+DEAL::4537 1
+DEAL::4538 1
+DEAL::4539 1
+DEAL::4540 1
+DEAL::4541 1
+DEAL::4542 1
+DEAL::4543 1
+DEAL::4544 1
+DEAL::4545 1
+DEAL::4546 1
+DEAL::4547 1
+DEAL::4548 1
+DEAL::4549 1
+DEAL::4550 1
+DEAL::4551 1
+DEAL::4552 1
+DEAL::4553 1
+DEAL::4554 1
+DEAL::4555 1
+DEAL::4556 1
+DEAL::4557 1
+DEAL::4558 1
+DEAL::4559 1
+DEAL::4560 1
+DEAL::4561 1
+DEAL::4562 1
+DEAL::4563 1
+DEAL::4564 1
+DEAL::4565 1
+DEAL::4566 1
+DEAL::4567 1
+DEAL::4568 1
+DEAL::4569 0
+DEAL::4570 0
+DEAL::4571 0
+DEAL::4572 0
+DEAL::4573 0
+DEAL::4574 0
+DEAL::4575 0
+DEAL::4576 0
+DEAL::4577 0
+DEAL::4578 0
+DEAL::4579 0
+DEAL::4580 0
+DEAL::4581 0
+DEAL::4582 0
+DEAL::4583 0
+DEAL::4584 0
+DEAL::4585 0
+DEAL::4586 0
+DEAL::4587 0
+DEAL::4588 0
+DEAL::4589 0
+DEAL::4590 0
+DEAL::4591 0
+DEAL::4592 0
+DEAL::4593 0
+DEAL::4594 0
+DEAL::4595 0
+DEAL::4596 0
+DEAL::4597 0
+DEAL::4598 0
+DEAL::4599 0
+DEAL::4600 0
+DEAL::4601 0
+DEAL::4602 0
+DEAL::4603 0
+DEAL::4604 0
+DEAL::4605 0
+DEAL::4606 0
+DEAL::4607 0
+DEAL::4608 0
+DEAL::4609 0
+DEAL::4610 0
+DEAL::4611 0
+DEAL::4612 0
+DEAL::4613 0
+DEAL::4614 0
+DEAL::4615 0
+DEAL::4616 0
+DEAL::4617 0
+DEAL::4618 0
+DEAL::4619 0
+DEAL::4620 0
+DEAL::4621 0
+DEAL::4622 0
+DEAL::4623 0
+DEAL::4624 0
+DEAL::4625 0
+DEAL::4626 0
+DEAL::4627 0
+DEAL::4628 0
+DEAL::4629 0
+DEAL::4630 0
+DEAL::4631 0
+DEAL::4632 0
+DEAL::4633 0
+DEAL::4634 0
+DEAL::4635 0
+DEAL::4636 0
+DEAL::4637 0
+DEAL::4638 0
+DEAL::4639 0
+DEAL::4640 0
+DEAL::4641 0
+DEAL::4642 0
+DEAL::4643 0
+DEAL::4644 0
+DEAL::4645 0
+DEAL::4646 0
+DEAL::4647 0
+DEAL::4648 0
+DEAL::4649 0
+DEAL::4650 0
+DEAL::4651 0
+DEAL::4652 0
+DEAL::4653 0
+DEAL::4654 0
+DEAL::4655 0
+DEAL::4656 0
+DEAL::4657 0
+DEAL::4658 0
+DEAL::4659 0
+DEAL::4660 0
+DEAL::4661 0
+DEAL::4662 0
+DEAL::4663 0
+DEAL::4664 0
+DEAL::4665 0
+DEAL::4666 0
+DEAL::4667 0
+DEAL::4668 0
+DEAL::4669 0
+DEAL::4670 0
+DEAL::4671 0
+DEAL::4672 0
+DEAL::4673 0
+DEAL::4674 0
+DEAL::4675 0
+DEAL::4676 0
+DEAL::4677 0
+DEAL::4678 0
+DEAL::4679 2
+DEAL::4680 1
+DEAL::4681 2
+DEAL::4682 0
+DEAL::4683 2
+DEAL::4684 2
+DEAL::4685 2
+DEAL::4686 1
+DEAL::4687 2
+DEAL::4688 1
+DEAL::4689 1
+DEAL::4690 2
+DEAL::4691 2
+DEAL::4692 2
+DEAL::4693 2
+DEAL::4694 0
+DEAL::4695 2
+DEAL::4696 2
+DEAL::4697 2
+DEAL::4698 2
+DEAL::4699 2
+DEAL::4700 2
+DEAL::4701 2
+DEAL::4702 2
+DEAL::4703 2
+DEAL::4704 2
+DEAL::4705 2
+DEAL::4706 2
+DEAL::4707 2
+DEAL::4708 1
+DEAL::4709 2
+DEAL::4710 2
+DEAL::4711 2
+DEAL::4712 2
+DEAL::4713 2
+DEAL::4714 2
+DEAL::4715 2
+DEAL::4716 2
+DEAL::4717 2
+DEAL::4718 2
+DEAL::4719 1
+DEAL::4720 2
+DEAL::4721 2
+DEAL::4722 2
+DEAL::4723 2
+DEAL::4724 2
+DEAL::4725 2
+DEAL::4726 2
+DEAL::4727 2
+DEAL::4728 2
+DEAL::4729 2
+DEAL::4730 2
+DEAL::4731 2
+DEAL::4732 2
+DEAL::4733 2
+DEAL::4734 2
+DEAL::4735 2
+DEAL::4736 2
+DEAL::4737 2
+DEAL::4738 2
+DEAL::4739 2
+DEAL::4740 2
+DEAL::4741 2
+DEAL::4742 2
+DEAL::4743 2
+DEAL::4744 2
+DEAL::4745 2
+DEAL::4746 0
+DEAL::4747 2
+DEAL::4748 2
+DEAL::4749 2
+DEAL::4750 2
+DEAL::4751 2
+DEAL::4752 2
+DEAL::4753 2
+DEAL::4754 2
+DEAL::4755 2
+DEAL::4756 2
+DEAL::4757 2
+DEAL::4758 2
+DEAL::4759 2
+DEAL::4760 2
+DEAL::4761 2
+DEAL::4762 2
+DEAL::4763 2
+DEAL::4764 2
+DEAL::4765 2
+DEAL::4766 2
+DEAL::4767 2
+DEAL::4768 2
+DEAL::4769 2
+DEAL::4770 2
+DEAL::4771 2
+DEAL::4772 2
+DEAL::4773 2
+DEAL::4774 2
+DEAL::4775 2
+DEAL::4776 2
+DEAL::4777 2
+DEAL::4778 2
+DEAL::4779 2
+DEAL::4780 2
+DEAL::4781 2
+DEAL::4782 2
+DEAL::4783 2
+DEAL::4784 2
+DEAL::4785 2
+DEAL::4786 2
+DEAL::4787 2
+DEAL::4788 2
+DEAL::4789 3
+DEAL::4790 3
+DEAL::4791 3
+DEAL::4792 3
+DEAL::4793 3
+DEAL::4794 3
+DEAL::4795 3
+DEAL::4796 3
+DEAL::4797 3
+DEAL::4798 3
+DEAL::4799 3
+DEAL::4800 3
+DEAL::4801 3
+DEAL::4802 3
+DEAL::4803 3
+DEAL::4804 3
+DEAL::4805 3
+DEAL::4806 3
+DEAL::4807 3
+DEAL::4808 3
+DEAL::4809 3
+DEAL::4810 3
+DEAL::4811 3
+DEAL::4812 3
+DEAL::4813 3
+DEAL::4814 3
+DEAL::4815 3
+DEAL::4816 3
+DEAL::4817 3
+DEAL::4818 3
+DEAL::4819 3
+DEAL::4820 3
+DEAL::4821 3
+DEAL::4822 3
+DEAL::4823 3
+DEAL::4824 3
+DEAL::4825 3
+DEAL::4826 3
+DEAL::4827 3
+DEAL::4828 3
+DEAL::4829 3
+DEAL::4830 3
+DEAL::4831 3
+DEAL::4832 3
+DEAL::4833 3
+DEAL::4834 3
+DEAL::4835 3
+DEAL::4836 3
+DEAL::4837 3
+DEAL::4838 3
+DEAL::4839 3
+DEAL::4840 3
+DEAL::4841 3
+DEAL::4842 3
+DEAL::4843 3
+DEAL::4844 3
+DEAL::4845 3
+DEAL::4846 3
+DEAL::4847 3
+DEAL::4848 3
+DEAL::4849 3
+DEAL::4850 3
+DEAL::4851 3
+DEAL::4852 3
+DEAL::4853 3
+DEAL::4854 3
+DEAL::4855 3
+DEAL::4856 3
+DEAL::4857 3
+DEAL::4858 3
+DEAL::4859 3
+DEAL::4860 3
+DEAL::4861 3
+DEAL::4862 3
+DEAL::4863 3
+DEAL::4864 3
+DEAL::4865 3
+DEAL::4866 3
+DEAL::4867 3
+DEAL::4868 3
+DEAL::4869 3
+DEAL::4870 3
+DEAL::4871 3
+DEAL::4872 3
+DEAL::4873 3
+DEAL::4874 3
+DEAL::4875 3
+DEAL::4876 3
+DEAL::4877 3
+DEAL::4878 3
+DEAL::4879 3
+DEAL::4880 3
+DEAL::4881 3
+DEAL::4882 3
+DEAL::4883 3
+DEAL::4884 3
+DEAL::4885 3
+DEAL::4886 3
+DEAL::4887 3
+DEAL::4888 3
+DEAL::4889 3
+DEAL::4890 3
+DEAL::4891 3
+DEAL::4892 3
+DEAL::4893 3
+DEAL::4894 3
+DEAL::4895 3
+DEAL::4896 3
+DEAL::4897 3
+DEAL::4898 3
+DEAL::4899 1
+DEAL::4900 1
+DEAL::4901 1
+DEAL::4902 1
+DEAL::4903 1
+DEAL::4904 1
+DEAL::4905 1
+DEAL::4906 1
+DEAL::4907 1
+DEAL::4908 1
+DEAL::4909 1
+DEAL::4910 1
+DEAL::4911 1
+DEAL::4912 1
+DEAL::4913 1
+DEAL::4914 1
+DEAL::4915 1
+DEAL::4916 1
+DEAL::4917 1
+DEAL::4918 1
+DEAL::4919 1
+DEAL::4920 1
+DEAL::4921 1
+DEAL::4922 1
+DEAL::4923 1
+DEAL::4924 1
+DEAL::4925 1
+DEAL::4926 1
+DEAL::4927 1
+DEAL::4928 1
+DEAL::4929 1
+DEAL::4930 1
+DEAL::4931 1
+DEAL::4932 1
+DEAL::4933 1
+DEAL::4934 1
+DEAL::4935 1
+DEAL::4936 1
+DEAL::4937 1
+DEAL::4938 1
+DEAL::4939 1
+DEAL::4940 1
+DEAL::4941 1
+DEAL::4942 1
+DEAL::4943 1
+DEAL::4944 1
+DEAL::4945 1
+DEAL::4946 1
+DEAL::4947 1
+DEAL::4948 1
+DEAL::4949 1
+DEAL::4950 1
+DEAL::4951 1
+DEAL::4952 1
+DEAL::4953 1
+DEAL::4954 1
+DEAL::4955 1
+DEAL::4956 1
+DEAL::4957 1
+DEAL::4958 1
+DEAL::4959 1
+DEAL::4960 1
+DEAL::4961 1
+DEAL::4962 1
+DEAL::4963 1
+DEAL::4964 1
+DEAL::4965 1
+DEAL::4966 1
+DEAL::4967 1
+DEAL::4968 1
+DEAL::4969 1
+DEAL::4970 1
+DEAL::4971 1
+DEAL::4972 1
+DEAL::4973 1
+DEAL::4974 1
+DEAL::4975 1
+DEAL::4976 1
+DEAL::4977 1
+DEAL::4978 1
+DEAL::4979 1
+DEAL::4980 1
+DEAL::4981 1
+DEAL::4982 1
+DEAL::4983 1
+DEAL::4984 1
+DEAL::4985 1
+DEAL::4986 1
+DEAL::4987 1
+DEAL::4988 1
+DEAL::4989 1
+DEAL::4990 1
+DEAL::4991 1
+DEAL::4992 1
+DEAL::4993 1
+DEAL::4994 1
+DEAL::4995 0
+DEAL::4996 0
+DEAL::4997 0
+DEAL::4998 0
+DEAL::4999 0
+DEAL::5000 0
+DEAL::5001 0
+DEAL::5002 0
+DEAL::5003 0
+DEAL::5004 0
+DEAL::5005 0
+DEAL::5006 0
+DEAL::5007 0
+DEAL::5008 0
+DEAL::5009 0
+DEAL::5010 0
+DEAL::5011 0
+DEAL::5012 0
+DEAL::5013 0
+DEAL::5014 0
+DEAL::5015 0
+DEAL::5016 0
+DEAL::5017 0
+DEAL::5018 0
+DEAL::5019 0
+DEAL::5020 0
+DEAL::5021 0
+DEAL::5022 0
+DEAL::5023 0
+DEAL::5024 0
+DEAL::5025 0
+DEAL::5026 0
+DEAL::5027 0
+DEAL::5028 0
+DEAL::5029 0
+DEAL::5030 0
+DEAL::5031 0
+DEAL::5032 0
+DEAL::5033 0
+DEAL::5034 0
+DEAL::5035 0
+DEAL::5036 0
+DEAL::5037 0
+DEAL::5038 0
+DEAL::5039 0
+DEAL::5040 0
+DEAL::5041 0
+DEAL::5042 0
+DEAL::5043 0
+DEAL::5044 0
+DEAL::5045 0
+DEAL::5046 0
+DEAL::5047 0
+DEAL::5048 0
+DEAL::5049 0
+DEAL::5050 0
+DEAL::5051 0
+DEAL::5052 0
+DEAL::5053 0
+DEAL::5054 0
+DEAL::5055 0
+DEAL::5056 0
+DEAL::5057 0
+DEAL::5058 0
+DEAL::5059 0
+DEAL::5060 0
+DEAL::5061 0
+DEAL::5062 0
+DEAL::5063 0
+DEAL::5064 0
+DEAL::5065 0
+DEAL::5066 0
+DEAL::5067 0
+DEAL::5068 0
+DEAL::5069 0
+DEAL::5070 0
+DEAL::5071 0
+DEAL::5072 0
+DEAL::5073 0
+DEAL::5074 0
+DEAL::5075 0
+DEAL::5076 0
+DEAL::5077 0
+DEAL::5078 0
+DEAL::5079 0
+DEAL::5080 0
+DEAL::5081 0
+DEAL::5082 0
+DEAL::5083 0
+DEAL::5084 0
+DEAL::5085 0
+DEAL::5086 0
+DEAL::5087 0
+DEAL::5088 0
+DEAL::5089 0
+DEAL::5090 0
+DEAL::5091 0
+DEAL::5092 0
+DEAL::5093 0
+DEAL::5094 0
+DEAL::5095 1
+DEAL::5096 1
+DEAL::5097 1
+DEAL::5098 0
+DEAL::5099 1
+DEAL::5100 1
+DEAL::5101 2
+DEAL::5102 1
+DEAL::5103 1
+DEAL::5104 1
+DEAL::5105 1
+DEAL::5106 1
+DEAL::5107 2
+DEAL::5108 1
+DEAL::5109 1
+DEAL::5110 0
+DEAL::5111 1
+DEAL::5112 1
+DEAL::5113 1
+DEAL::5114 1
+DEAL::5115 1
+DEAL::5116 1
+DEAL::5117 1
+DEAL::5118 1
+DEAL::5119 1
+DEAL::5120 1
+DEAL::5121 2
+DEAL::5122 1
+DEAL::5123 2
+DEAL::5124 1
+DEAL::5125 1
+DEAL::5126 1
+DEAL::5127 2
+DEAL::5128 1
+DEAL::5129 1
+DEAL::5130 1
+DEAL::5131 2
+DEAL::5132 1
+DEAL::5133 1
+DEAL::5134 1
+DEAL::5135 1
+DEAL::5136 1
+DEAL::5137 1
+DEAL::5138 1
+DEAL::5139 1
+DEAL::5140 1
+DEAL::5141 1
+DEAL::5142 1
+DEAL::5143 1
+DEAL::5144 1
+DEAL::5145 1
+DEAL::5146 1
+DEAL::5147 1
+DEAL::5148 1
+DEAL::5149 1
+DEAL::5150 1
+DEAL::5151 1
+DEAL::5152 1
+DEAL::5153 1
+DEAL::5154 1
+DEAL::5155 2
+DEAL::5156 2
+DEAL::5157 1
+DEAL::5158 2
+DEAL::5159 2
+DEAL::5160 2
+DEAL::5161 1
+DEAL::5162 1
+DEAL::5163 1
+DEAL::5164 2
+DEAL::5165 1
+DEAL::5166 0
+DEAL::5167 1
+DEAL::5168 1
+DEAL::5169 1
+DEAL::5170 1
+DEAL::5171 2
+DEAL::5172 1
+DEAL::5173 1
+DEAL::5174 1
+DEAL::5175 2
+DEAL::5176 2
+DEAL::5177 2
+DEAL::5178 2
+DEAL::5179 2
+DEAL::5180 1
+DEAL::5181 2
+DEAL::5182 2
+DEAL::5183 2
+DEAL::5184 1
+DEAL::5185 1
+DEAL::5186 1
+DEAL::5187 2
+DEAL::5188 1
+DEAL::5189 1
+DEAL::5190 2
+DEAL::5191 2
+DEAL::5192 2
+DEAL::5193 2
+DEAL::5194 3
+DEAL::5195 3
+DEAL::5196 3
+DEAL::5197 3
+DEAL::5198 3
+DEAL::5199 3
+DEAL::5200 3
+DEAL::5201 3
+DEAL::5202 3
+DEAL::5203 3
+DEAL::5204 3
+DEAL::5205 3
+DEAL::5206 3
+DEAL::5207 3
+DEAL::5208 3
+DEAL::5209 3
+DEAL::5210 3
+DEAL::5211 3
+DEAL::5212 3
+DEAL::5213 3
+DEAL::5214 3
+DEAL::5215 3
+DEAL::5216 3
+DEAL::5217 3
+DEAL::5218 3
+DEAL::5219 3
+DEAL::5220 3
+DEAL::5221 3
+DEAL::5222 3
+DEAL::5223 3
+DEAL::5224 3
+DEAL::5225 3
+DEAL::5226 3
+DEAL::5227 3
+DEAL::5228 3
+DEAL::5229 3
+DEAL::5230 3
+DEAL::5231 3
+DEAL::5232 3
+DEAL::5233 3
+DEAL::5234 3
+DEAL::5235 3
+DEAL::5236 3
+DEAL::5237 3
+DEAL::5238 3
+DEAL::5239 3
+DEAL::5240 3
+DEAL::5241 3
+DEAL::5242 3
+DEAL::5243 3
+DEAL::5244 3
+DEAL::5245 3
+DEAL::5246 3
+DEAL::5247 3
+DEAL::5248 3
+DEAL::5249 3
+DEAL::5250 3
+DEAL::5251 3
+DEAL::5252 3
+DEAL::5253 3
+DEAL::5254 3
+DEAL::5255 3
+DEAL::5256 3
+DEAL::5257 3
+DEAL::5258 3
+DEAL::5259 3
+DEAL::5260 3
+DEAL::5261 3
+DEAL::5262 3
+DEAL::5263 3
+DEAL::5264 3
+DEAL::5265 3
+DEAL::5266 3
+DEAL::5267 3
+DEAL::5268 3
+DEAL::5269 3
+DEAL::5270 3
+DEAL::5271 3
+DEAL::5272 3
+DEAL::5273 3
+DEAL::5274 3
+DEAL::5275 3
+DEAL::5276 3
+DEAL::5277 3
+DEAL::5278 3
+DEAL::5279 3
+DEAL::5280 3
+DEAL::5281 3
+DEAL::5282 3
+DEAL::5283 3
+DEAL::5284 3
+DEAL::5285 3
+DEAL::5286 3
+DEAL::5287 3
+DEAL::5288 3
+DEAL::5289 3
+DEAL::5290 3
+DEAL::5291 3
+DEAL::5292 3
+DEAL::5293 3
+DEAL::5294 3
+DEAL::5295 3
+DEAL::5296 3
+DEAL::5297 3
+DEAL::5298 3
+DEAL::5299 3
+DEAL::5300 3
+DEAL::5301 3
+DEAL::5302 3
+DEAL::5303 3
+DEAL::5304 3
+DEAL::5305 3
+DEAL::5306 3
+DEAL::5307 3
+DEAL::5308 3
+DEAL::5309 3
+DEAL::5310 3
+DEAL::5311 3
+DEAL::5312 3
+DEAL::5313 3
+DEAL::5314 3
+DEAL::5315 3
+DEAL::5316 3
+DEAL::5317 3
+DEAL::5318 3
+DEAL::5319 3
+DEAL::5320 3
+DEAL::5321 3
+DEAL::5322 3
+DEAL::5323 3
+DEAL::5324 3
+DEAL::5325 3
+DEAL::5326 3
+DEAL::5327 3
+DEAL::5328 3
+DEAL::5329 3
+DEAL::5330 3
+DEAL::5331 3
+DEAL::5332 3
+DEAL::5333 3
+DEAL::5334 3
+DEAL::5335 3
+DEAL::5336 3
+DEAL::5337 3
+DEAL::5338 3
+DEAL::5339 3
+DEAL::5340 3
+DEAL::5341 3
+DEAL::5342 3
+DEAL::5343 3
+DEAL::5344 3
+DEAL::5345 3
+DEAL::5346 3
+DEAL::5347 3
+DEAL::5348 3
+DEAL::5349 3
+DEAL::5350 3
+DEAL::5351 3
+DEAL::5352 3
+DEAL::5353 3
+DEAL::5354 3
+DEAL::5355 3
+DEAL::5356 3
+DEAL::5357 3
+DEAL::5358 3
+DEAL::5359 3
+DEAL::5360 3
+DEAL::5361 3
+DEAL::5362 3
+DEAL::5363 3
+DEAL::5364 3
+DEAL::5365 3
+DEAL::5366 3
+DEAL::5367 3
+DEAL::5368 3
+DEAL::5369 3
+DEAL::5370 3
+DEAL::5371 3
+DEAL::5372 3
+DEAL::5373 3
+DEAL::5374 3
+DEAL::5375 3
+DEAL::5376 3
+DEAL::5377 3
+DEAL::5378 3
+DEAL::5379 3
+DEAL::5380 3
+DEAL::5381 3
+DEAL::5382 3
+DEAL::5383 3
+DEAL::5384 3
+DEAL::5385 3
+DEAL::5386 3
+DEAL::5387 3
+DEAL::5388 3
+DEAL::5389 3
+DEAL::5390 1
+DEAL::5391 1
+DEAL::5392 1
+DEAL::5393 1
+DEAL::5394 1
+DEAL::5395 1
+DEAL::5396 1
+DEAL::5397 1
+DEAL::5398 1
+DEAL::5399 1
+DEAL::5400 1
+DEAL::5401 1
+DEAL::5402 1
+DEAL::5403 1
+DEAL::5404 1
+DEAL::5405 1
+DEAL::5406 1
+DEAL::5407 1
+DEAL::5408 1
+DEAL::5409 1
+DEAL::5410 1
+DEAL::5411 1
+DEAL::5412 1
+DEAL::5413 1
+DEAL::5414 1
+DEAL::5415 1
+DEAL::5416 1
+DEAL::5417 1
+DEAL::5418 1
+DEAL::5419 1
+DEAL::5420 1
+DEAL::5421 1
+DEAL::5422 1
+DEAL::5423 1
+DEAL::5424 1
+DEAL::5425 1
+DEAL::5426 1
+DEAL::5427 1
+DEAL::5428 1
+DEAL::5429 1
+DEAL::5430 1
+DEAL::5431 1
+DEAL::5432 1
+DEAL::5433 1
+DEAL::5434 1
+DEAL::5435 1
+DEAL::5436 1
+DEAL::5437 1
+DEAL::5438 1
+DEAL::5439 1
+DEAL::5440 1
+DEAL::5441 1
+DEAL::5442 1
+DEAL::5443 1
+DEAL::5444 1
+DEAL::5445 1
+DEAL::5446 1
+DEAL::5447 1
+DEAL::5448 1
+DEAL::5449 1
+DEAL::5450 1
+DEAL::5451 1
+DEAL::5452 1
+DEAL::5453 1
+DEAL::5454 1
+DEAL::5455 1
+DEAL::5456 1
+DEAL::5457 1
+DEAL::5458 1
+DEAL::5459 1
+DEAL::5460 1
+DEAL::5461 1
+DEAL::5462 0
+DEAL::5463 1
+DEAL::5464 0
+DEAL::5465 1
+DEAL::5466 0
+DEAL::5467 0
+DEAL::5468 1
+DEAL::5469 1
+DEAL::5470 1
+DEAL::5471 1
+DEAL::5472 1
+DEAL::5473 1
+DEAL::5474 1
+DEAL::5475 1
+DEAL::5476 0
+DEAL::5477 1
+DEAL::5478 1
+DEAL::5479 0
+DEAL::5480 1
+DEAL::5481 1
+DEAL::5482 1
+DEAL::5483 1
+DEAL::5484 1
+DEAL::5485 1
+DEAL::5486 1
+DEAL::5487 1
+DEAL::5488 0
+DEAL::5489 1
+DEAL::5490 1
+DEAL::5491 1
+DEAL::5492 1
+DEAL::5493 1
+DEAL::5494 1
+DEAL::5495 1
+DEAL::5496 0
+DEAL::5497 1
+DEAL::5498 0
+DEAL::5499 1
+DEAL::5500 1
+DEAL::5501 1
+DEAL::5502 1
+DEAL::5503 1
+DEAL::5504 1
+DEAL::5505 1
+DEAL::5506 1
+DEAL::5507 1
+DEAL::5508 1
+DEAL::5509 1
+DEAL::5510 1
+DEAL::5511 1
+DEAL::5512 1
+DEAL::5513 1
+DEAL::5514 1
+DEAL::5515 1
+DEAL::5516 1
+DEAL::5517 1
+DEAL::5518 1
+DEAL::5519 1
+DEAL::5520 1
+DEAL::5521 1
+DEAL::5522 1
+DEAL::5523 1
+DEAL::5524 1
+DEAL::5525 1
+DEAL::5526 1
+DEAL::5527 1
+DEAL::5528 1
+DEAL::5529 1
+DEAL::5530 1
+DEAL::5531 1
+DEAL::5532 1
+DEAL::5533 1
+DEAL::5534 1
+DEAL::5535 1
+DEAL::5536 1
+DEAL::5537 1
+DEAL::5538 1
+DEAL::5539 1
+DEAL::5540 1
+DEAL::5541 1
+DEAL::5542 1
+DEAL::5543 1
+DEAL::5544 1
+DEAL::5545 1
+DEAL::5546 1
+DEAL::5547 1
+DEAL::5548 1
+DEAL::5549 1
+DEAL::5550 1
+DEAL::5551 1
+DEAL::5552 1
+DEAL::5553 1
+DEAL::5554 1
+DEAL::5555 1
+DEAL::5556 1
+DEAL::5557 1
+DEAL::5558 1
+DEAL::5559 1
+DEAL::5560 1
+DEAL::5561 1
+DEAL::5562 1
+DEAL::5563 1
+DEAL::5564 1
+DEAL::5565 1
+DEAL::5566 1
+DEAL::5567 1
+DEAL::5568 1
+DEAL::5569 1
+DEAL::5570 1
+DEAL::5571 1
+DEAL::5572 1
+DEAL::5573 1
+DEAL::5574 1
+DEAL::5575 1
+DEAL::5576 1
+DEAL::5577 1
+DEAL::5578 1
+DEAL::5579 1
+DEAL::5580 1
+DEAL::5581 1
+DEAL::5582 1
+DEAL::5583 1
+DEAL::5584 1
+DEAL::5585 1
+DEAL::5586 1
+DEAL::5587 1
+DEAL::5588 1
+DEAL::5589 1
+DEAL::5590 1
+DEAL::5591 1
+DEAL::5592 1
+DEAL::5593 1
+DEAL::5594 1
+DEAL::5595 1
+DEAL::5596 1
+DEAL::5597 1
+DEAL::5598 1
+DEAL::5599 1
+DEAL::5600 0
+DEAL::5601 0
+DEAL::5602 0
+DEAL::5603 0
+DEAL::5604 0
+DEAL::5605 0
+DEAL::5606 0
+DEAL::5607 0
+DEAL::5608 0
+DEAL::5609 0
+DEAL::5610 0
+DEAL::5611 0
+DEAL::5612 0
+DEAL::5613 0
+DEAL::5614 0
+DEAL::5615 0
+DEAL::5616 0
+DEAL::5617 0
+DEAL::5618 0
+DEAL::5619 0
+DEAL::5620 0
+DEAL::5621 0
+DEAL::5622 0
+DEAL::5623 0
+DEAL::5624 0
+DEAL::5625 0
+DEAL::5626 0
+DEAL::5627 0
+DEAL::5628 0
+DEAL::5629 0
+DEAL::5630 0
+DEAL::5631 0
+DEAL::5632 0
+DEAL::5633 0
+DEAL::5634 0
+DEAL::5635 0
+DEAL::5636 0
+DEAL::5637 0
+DEAL::5638 0
+DEAL::5639 0
+DEAL::5640 0
+DEAL::5641 0
+DEAL::5642 0
+DEAL::5643 0
+DEAL::5644 0
+DEAL::5645 0
+DEAL::5646 0
+DEAL::5647 0
+DEAL::5648 0
+DEAL::5649 0
+DEAL::5650 0
+DEAL::5651 0
+DEAL::5652 0
+DEAL::5653 0
+DEAL::5654 0
+DEAL::5655 0
+DEAL::5656 0
+DEAL::5657 0
+DEAL::5658 0
+DEAL::5659 0
+DEAL::5660 0
+DEAL::5661 0
+DEAL::5662 0
+DEAL::5663 0
+DEAL::5664 0
+DEAL::5665 0
+DEAL::5666 0
+DEAL::5667 0
+DEAL::5668 0
+DEAL::5669 0
+DEAL::5670 0
+DEAL::5671 0
+DEAL::5672 0
+DEAL::5673 0
+DEAL::5674 0
+DEAL::5675 0
+DEAL::5676 0
+DEAL::5677 0
+DEAL::5678 0
+DEAL::5679 0
+DEAL::5680 0
+DEAL::5681 0
+DEAL::5682 0
+DEAL::5683 0
+DEAL::5684 0
+DEAL::5685 0
+DEAL::5686 0
+DEAL::5687 0
+DEAL::5688 0
+DEAL::5689 0
+DEAL::5690 0
+DEAL::5691 0
+DEAL::5692 0
+DEAL::5693 0
+DEAL::5694 0
+DEAL::5695 0
+DEAL::5696 0
+DEAL::5697 0
+DEAL::5698 0
+DEAL::5699 0
+DEAL::5700 0
+DEAL::5701 0
+DEAL::5702 0
+DEAL::5703 0
+DEAL::5704 0
+DEAL::5705 0
+DEAL::5706 0
+DEAL::5707 0
+DEAL::5708 0
+DEAL::5709 0
+DEAL::5710 0
+DEAL::5711 0
+DEAL::5712 0
+DEAL::5713 0
+DEAL::5714 0
+DEAL::5715 0
+DEAL::5716 0
+DEAL::5717 0
+DEAL::5718 0
+DEAL::5719 0
+DEAL::5720 0
+DEAL::5721 0
+DEAL::5722 0
+DEAL::5723 0
+DEAL::5724 0
+DEAL::5725 0
+DEAL::5726 0
+DEAL::5727 0
+DEAL::5728 0
+DEAL::5729 0
+DEAL::5730 0
+DEAL::5731 0
+DEAL::5732 0
+DEAL::5733 0
+DEAL::5734 0
+DEAL::5735 0
+DEAL::5736 0
+DEAL::5737 0
+DEAL::5738 0
+DEAL::5739 0
+DEAL::5740 0
+DEAL::5741 0
+DEAL::5742 0
+DEAL::5743 0
+DEAL::5744 0
+DEAL::5745 0
+DEAL::5746 0
+DEAL::5747 0
+DEAL::5748 0
+DEAL::5749 0
+DEAL::5750 0
+DEAL::5751 0
+DEAL::5752 0
+DEAL::5753 0
+DEAL::5754 0
+DEAL::5755 0
+DEAL::5756 0
+DEAL::5757 0
+DEAL::5758 0
+DEAL::5759 0
+DEAL::5760 0
+DEAL::5761 0
+DEAL::5762 0
+DEAL::5763 0
+DEAL::5764 0
+DEAL::5765 0
+DEAL::5766 0
+DEAL::5767 0
+DEAL::5768 0
+DEAL::5769 0
+DEAL::5770 0
+DEAL::5771 0
+DEAL::5772 0
+DEAL::5773 0
+DEAL::5774 0
+DEAL::5775 0
+DEAL::5776 0
+DEAL::5777 0
+DEAL::5778 0
+DEAL::5779 0
+DEAL::5780 0
+DEAL::5781 0
+DEAL::5782 0
+DEAL::5783 0
+DEAL::5784 0
+DEAL::5785 0
+DEAL::5786 0
+DEAL::5787 0
+DEAL::5788 0
+DEAL::5789 0
+DEAL::5790 0
+DEAL::5791 0
+DEAL::5792 0
+DEAL::5793 0
+DEAL::5794 0
+DEAL::5795 0
+DEAL::5796 0
+DEAL::5797 0
+DEAL::5798 0
+DEAL::5799 0
+DEAL::5800 0
+DEAL::5801 0
+DEAL::5802 0
+DEAL::5803 0
+DEAL::5804 0
+DEAL::5805 0
+DEAL::5806 0
+DEAL::5807 0
+DEAL::5808 0
+DEAL::5809 0
+DEAL::5810 0
+DEAL::5811 0
+DEAL::5812 0
+DEAL::5813 0
+DEAL::5814 0
+DEAL::5815 0
+DEAL::5816 0
+DEAL::5817 0
+DEAL::5818 0
+DEAL::5819 0
+DEAL::5820 0
+DEAL::5821 0
+DEAL::5822 0
+DEAL::5823 0
+DEAL::5824 0
+DEAL::5825 0
+DEAL::5826 0
+DEAL::5827 0
+DEAL::5828 0
+DEAL::5829 0
+DEAL::5830 0
+DEAL::5831 0
+DEAL::5832 0
+DEAL::5833 0
+DEAL::5834 0
+DEAL::5835 0
+DEAL::5836 0
+DEAL::5837 0
+DEAL::5838 0
+DEAL::5839 0
+DEAL::5840 0
+DEAL::5841 0
+DEAL::5842 0
+DEAL::5843 0
+DEAL::5844 0
+DEAL::5845 0
+DEAL::5846 0
+DEAL::5847 0
+DEAL::5848 0
+DEAL::5849 0
+DEAL::5850 0
+DEAL::5851 0
+DEAL::5852 0
+DEAL::5853 0
+DEAL::5854 0
+DEAL::5855 0
+DEAL::5856 0
+DEAL::5857 0
+DEAL::5858 0
+DEAL::5859 0
+DEAL::5860 0
+DEAL::5861 0
+DEAL::5862 0
+DEAL::5863 0
+DEAL::5864 0
+DEAL::5865 0
+DEAL::5866 0
+DEAL::5867 0
+DEAL::5868 0
+DEAL::5869 0
+DEAL::5870 0
+DEAL::5871 0
+DEAL::5872 0
+DEAL::5873 0
+DEAL::5874 0
+DEAL::5875 0
+DEAL::5876 0
+DEAL::5877 0
+DEAL::5878 0
+DEAL::5879 0
+DEAL::5880 0
+DEAL::5881 0
+DEAL::5882 0
+DEAL::5883 0
+DEAL::5884 0
+DEAL::5885 0
+DEAL::5886 0
+DEAL::5887 0
+DEAL::5888 0
+DEAL::5889 0
+DEAL::5890 0
+DEAL::5891 0
+DEAL::5892 0
+DEAL::5893 0
+DEAL::5894 0
+DEAL::5895 0
+DEAL::5896 0
+DEAL::5897 0
+DEAL::5898 0
+DEAL::5899 0
+DEAL::5900 0
+DEAL::5901 0
+DEAL::5902 0
+DEAL::5903 0
+DEAL::5904 0
+DEAL::5905 0
+DEAL::5906 0
+DEAL::5907 0
+DEAL::5908 0
+DEAL::5909 0
+DEAL::5910 0
+DEAL::5911 0
+DEAL::5912 0
+DEAL::5913 0
+DEAL::5914 0
+DEAL::5915 0
+DEAL::5916 0
+DEAL::5917 0
+DEAL::5918 0
+DEAL::5919 0
+DEAL::5920 0
+DEAL::5921 0
+DEAL::5922 0
+DEAL::5923 0
+DEAL::5924 0
+DEAL::5925 0
+DEAL::5926 0
+DEAL::5927 0
+DEAL::5928 0
+DEAL::5929 0
+DEAL::5930 0
+DEAL::5931 0
+DEAL::5932 0
+DEAL::5933 0
+DEAL::5934 0
+DEAL::5935 0
+DEAL::5936 0
+DEAL::5937 0
+DEAL::5938 0
+DEAL::5939 0
+DEAL::5940 0
+DEAL::5941 0
+DEAL::5942 0
+DEAL::5943 0
+DEAL::5944 0
+DEAL::5945 0
+DEAL::5946 0
+DEAL::5947 0
+DEAL::5948 0
+DEAL::5949 0
+DEAL::5950 0
+DEAL::5951 0
+DEAL::5952 0
+DEAL::5953 0
+DEAL::5954 0
+DEAL::5955 0
+DEAL::5956 0
+DEAL::5957 0
+DEAL::5958 0
+DEAL::5959 0
+DEAL::5960 0
+DEAL::5961 0
+DEAL::5962 0
+DEAL::5963 0
+DEAL::5964 0
+DEAL::5965 0
+DEAL::5966 0
+DEAL::5967 0
+DEAL::5968 0
+DEAL::5969 0
+DEAL::5970 0
+DEAL::5971 1
+DEAL::5972 0
+DEAL::5973 1
+DEAL::5974 1
+DEAL::5975 0
+DEAL::5976 1
+DEAL::5977 0
+DEAL::5978 0
+DEAL::5979 0
+DEAL::5980 0
+DEAL::5981 0
+DEAL::5982 1
+DEAL::5983 0
+DEAL::5984 0
+DEAL::5985 0
+DEAL::5986 0
+DEAL::5987 1
+DEAL::5988 0
+DEAL::5989 0
+DEAL::5990 0
+DEAL::5991 0
+DEAL::5992 0
+DEAL::5993 0
+DEAL::5994 0
+DEAL::5995 1
+DEAL::5996 1
+DEAL::5997 1
+DEAL::5998 1
+DEAL::5999 1
+DEAL::6000 1
+DEAL::6001 1
+DEAL::6002 1
+DEAL::6003 1
+DEAL::6004 1
+DEAL::6005 1
+DEAL::6006 1
+DEAL::6007 1
+DEAL::6008 1
+DEAL::6009 1
+DEAL::6010 1
+DEAL::6011 1
+DEAL::6012 0
+DEAL::6013 1
+DEAL::6014 0
+DEAL::6015 0
+DEAL::6016 0
+DEAL::6017 1
+DEAL::6018 0
+DEAL::6019 0
+DEAL::6020 0
+DEAL::6021 1
+DEAL::6022 1
+DEAL::6023 1
+DEAL::6024 1
+DEAL::6025 1
+DEAL::6026 1
+DEAL::6027 1
+DEAL::6028 0
+DEAL::6029 1
+DEAL::6030 0
+DEAL::6031 0
+DEAL::6032 0
+DEAL::6033 0
+DEAL::6034 1
+DEAL::6035 0
+DEAL::6036 1
+DEAL::6037 0
+DEAL::6038 1
+DEAL::6039 0
+DEAL::6040 0
+DEAL::6041 0
+DEAL::6042 0
+DEAL::6043 2
+DEAL::6044 2
+DEAL::6045 1
+DEAL::6046 2
+DEAL::6047 1
+DEAL::6048 1
+DEAL::6049 1
+DEAL::6050 1
+DEAL::6051 1
+DEAL::6052 1
+DEAL::6053 1
+DEAL::6054 0
+DEAL::6055 0
+DEAL::6056 0
+DEAL::6057 1
+DEAL::6058 0
+DEAL::6059 0
+DEAL::6060 2
+DEAL::6061 1
+DEAL::6062 1
+DEAL::6063 1
+DEAL::6064 0
+DEAL::6065 2
+DEAL::6066 0
+DEAL::6067 2
+DEAL::6068 0
+DEAL::6069 0
+DEAL::6070 0
+DEAL::6071 0
+DEAL::6072 0
+DEAL::6073 2
+DEAL::6074 0
+DEAL::6075 2
+DEAL::6076 0
+DEAL::6077 2
+DEAL::6078 0
+DEAL::6079 0
+DEAL::6080 0
+DEAL::6081 0
+DEAL::6082 2
+DEAL::6083 2
+DEAL::6084 2
+DEAL::6085 2
+DEAL::6086 2
+DEAL::6087 2
+DEAL::6088 2
+DEAL::6089 2
+DEAL::6090 2
+DEAL::6091 2
+DEAL::6092 2
+DEAL::6093 2
+DEAL::6094 0
+DEAL::6095 0
+DEAL::6096 0
+DEAL::6097 0
+DEAL::6098 0
+DEAL::6099 0
+DEAL::6100 2
+DEAL::6101 2
+DEAL::6102 2
+DEAL::6103 2
+DEAL::6104 2
+DEAL::6105 2
+DEAL::6106 2
+DEAL::6107 0
+DEAL::6108 2
+DEAL::6109 0
+DEAL::6110 0
+DEAL::6111 0
+DEAL::6112 0
+DEAL::6113 0
+DEAL::6114 2
+DEAL::6115 0
+DEAL::6116 2
+DEAL::6117 0
+DEAL::6118 2
+DEAL::6119 0
+DEAL::6120 0
+DEAL::6121 0
+DEAL::6122 0
+DEAL::6123 2
+DEAL::6124 2
+DEAL::6125 2
+DEAL::6126 2
+DEAL::6127 2
+DEAL::6128 2
+DEAL::6129 2
+DEAL::6130 2
+DEAL::6131 2
+DEAL::6132 2
+DEAL::6133 2
+DEAL::6134 0
+DEAL::6135 0
+DEAL::6136 0
+DEAL::6137 2
+DEAL::6138 0
+DEAL::6139 0
+DEAL::6140 2
+DEAL::6141 2
+DEAL::6142 2
+DEAL::6143 2
+DEAL::6144 2
+DEAL::6145 2
+DEAL::6146 2
+DEAL::6147 2
+DEAL::6148 2
+DEAL::6149 2
+DEAL::6150 2
+DEAL::6151 2
+DEAL::6152 2
+DEAL::6153 2
+DEAL::6154 2
+DEAL::6155 2
+DEAL::6156 2
+DEAL::6157 2
+DEAL::6158 2
+DEAL::6159 2
+DEAL::6160 2
+DEAL::6161 2
+DEAL::6162 2
+DEAL::6163 2
+DEAL::6164 2
+DEAL::6165 2
+DEAL::6166 2
+DEAL::6167 2
+DEAL::6168 2
+DEAL::6169 2
+DEAL::6170 2
+DEAL::6171 2
+DEAL::6172 2
+DEAL::6173 2
+DEAL::6174 2
+DEAL::6175 2
+DEAL::6176 2
+DEAL::6177 2
+DEAL::6178 2
+DEAL::6179 2
+DEAL::6180 2
+DEAL::6181 2
+DEAL::6182 2
+DEAL::6183 2
+DEAL::6184 2
+DEAL::6185 2
+DEAL::6186 2
+DEAL::6187 2
+DEAL::6188 2
+DEAL::6189 2
+DEAL::6190 2
+DEAL::6191 2
+DEAL::6192 2
+DEAL::6193 2
+DEAL::6194 2
+DEAL::6195 2
+DEAL::6196 2
+DEAL::6197 2
+DEAL::6198 2
+DEAL::6199 2
+DEAL::6200 2
+DEAL::6201 2
+DEAL::6202 2
+DEAL::6203 2
+DEAL::6204 2
+DEAL::6205 2
+DEAL::6206 2
+DEAL::6207 2
+DEAL::6208 2
+DEAL::6209 2
+DEAL::6210 2
+DEAL::6211 2
+DEAL::6212 2
+DEAL::6213 2
+DEAL::6214 2
+DEAL::6215 2
+DEAL::6216 2
+DEAL::6217 2
+DEAL::6218 2
+DEAL::6219 2
+DEAL::6220 2
+DEAL::6221 2
+DEAL::6222 2
+DEAL::6223 2
+DEAL::6224 2
+DEAL::6225 2
+DEAL::6226 2
+DEAL::6227 2
+DEAL::6228 2
+DEAL::6229 2
+DEAL::6230 2
+DEAL::6231 2
+DEAL::6232 2
+DEAL::6233 2
+DEAL::6234 2
+DEAL::6235 2
+DEAL::6236 2
+DEAL::6237 2
+DEAL::6238 2
+DEAL::6239 2
+DEAL::6240 2
+DEAL::6241 2
+DEAL::6242 2
+DEAL::6243 2
+DEAL::6244 2
+DEAL::6245 2
+DEAL::6246 2
+DEAL::6247 2
+DEAL::6248 2
+DEAL::6249 2
+DEAL::6250 2
+DEAL::6251 2
+DEAL::6252 2
+DEAL::6253 2
+DEAL::6254 2
+DEAL::6255 2
+DEAL::6256 2
+DEAL::6257 2
+DEAL::6258 2
+DEAL::6259 2
+DEAL::6260 2
+DEAL::6261 2
+DEAL::6262 2
+DEAL::6263 2
+DEAL::6264 2
+DEAL::6265 2
+DEAL::6266 2
+DEAL::6267 2
+DEAL::6268 2
+DEAL::6269 2
+DEAL::6270 2
+DEAL::6271 2
+DEAL::6272 2
+DEAL::6273 2
+DEAL::6274 2
+DEAL::6275 2
+DEAL::6276 2
+DEAL::6277 2
+DEAL::6278 2
+DEAL::6279 2
+DEAL::6280 2
+DEAL::6281 2
+DEAL::6282 2
+DEAL::6283 2
+DEAL::6284 2
+DEAL::6285 2
+DEAL::6286 2
+DEAL::6287 2
+DEAL::6288 2
+DEAL::6289 2
+DEAL::6290 2
+DEAL::6291 2
+DEAL::6292 2
+DEAL::6293 2
+DEAL::6294 2
+DEAL::6295 2
+DEAL::6296 2
+DEAL::6297 2
+DEAL::6298 2
+DEAL::6299 2
+DEAL::6300 2
+DEAL::6301 2
+DEAL::6302 2
+DEAL::6303 2
+DEAL::6304 2
+DEAL::6305 2
+DEAL::6306 2
+DEAL::6307 2
+DEAL::6308 2
+DEAL::6309 2
+DEAL::6310 2
+DEAL::6311 2
+DEAL::6312 2
+DEAL::6313 2
+DEAL::6314 2
+DEAL::6315 2
+DEAL::6316 2
+DEAL::6317 2
+DEAL::6318 2
+DEAL::6319 2
+DEAL::6320 2
+DEAL::6321 2
+DEAL::6322 2
+DEAL::6323 2
+DEAL::6324 2
+DEAL::6325 2
+DEAL::6326 2
+DEAL::6327 2
+DEAL::6328 2
+DEAL::6329 2
+DEAL::6330 2
+DEAL::6331 2
+DEAL::6332 2
+DEAL::6333 2
+DEAL::6334 2
+DEAL::6335 2
+DEAL::6336 2
+DEAL::6337 2
+DEAL::6338 2
+DEAL::6339 2
+DEAL::6340 2
+DEAL::6341 2
+DEAL::6342 2
+DEAL::6343 2
+DEAL::6344 2
+DEAL::6345 2
+DEAL::6346 2
+DEAL::6347 2
+DEAL::6348 2
+DEAL::6349 2
+DEAL::6350 2
+DEAL::6351 2
+DEAL::6352 2
+DEAL::6353 2
+DEAL::6354 2
+DEAL::6355 2
+DEAL::6356 2
+DEAL::6357 2
+DEAL::6358 2
+DEAL::6359 2
+DEAL::6360 2
+DEAL::6361 2
+DEAL::6362 2
+DEAL::6363 2
+DEAL::6364 2
+DEAL::6365 2
+DEAL::6366 2
+DEAL::6367 2
+DEAL::6368 2
+DEAL::6369 2
+DEAL::6370 2
+DEAL::6371 2
+DEAL::6372 2
+DEAL::6373 2
+DEAL::6374 2
+DEAL::6375 2
+DEAL::6376 2
+DEAL::6377 2
+DEAL::6378 2
+DEAL::6379 2
+DEAL::6380 2
+DEAL::6381 2
+DEAL::6382 2
+DEAL::6383 2
+DEAL::6384 2
+DEAL::6385 2
+DEAL::6386 2
+DEAL::6387 2
+DEAL::6388 2
+DEAL::6389 2
+DEAL::6390 2
+DEAL::6391 2
+DEAL::6392 2
+DEAL::6393 2
+DEAL::6394 2
+DEAL::6395 2
+DEAL::6396 2
+DEAL::6397 2
+DEAL::6398 2
+DEAL::6399 2
+DEAL::6400 2
+DEAL::6401 2
+DEAL::6402 2
+DEAL::6403 2
+DEAL::6404 2
+DEAL::6405 2
+DEAL::6406 2
+DEAL::6407 2
+DEAL::6408 2
+DEAL::6409 2
+DEAL::6410 2
+DEAL::6411 2
+DEAL::6412 2
+DEAL::6413 2
+DEAL::6414 2
+DEAL::6415 2
+DEAL::6416 2
+DEAL::6417 2
+DEAL::6418 2
+DEAL::6419 2
+DEAL::6420 2
+DEAL::6421 2
+DEAL::6422 2
+DEAL::6423 2
+DEAL::6424 2
+DEAL::6425 2
+DEAL::6426 2
+DEAL::6427 2
+DEAL::6428 2
+DEAL::6429 2
+DEAL::6430 2
+DEAL::6431 2
+DEAL::6432 2
+DEAL::6433 2
+DEAL::6434 2
+DEAL::6435 2
+DEAL::6436 2
+DEAL::6437 2
+DEAL::6438 2
+DEAL::6439 2
+DEAL::6440 2
+DEAL::6441 2
+DEAL::6442 2
+DEAL::6443 2
+DEAL::6444 2
+DEAL::6445 2
+DEAL::6446 2
+DEAL::6447 2
+DEAL::6448 2
+DEAL::6449 2
+DEAL::6450 2
+DEAL::6451 2
+DEAL::6452 2
+DEAL::6453 2
+DEAL::6454 2
+DEAL::6455 2
+DEAL::6456 2
+DEAL::6457 2
+DEAL::6458 2
+DEAL::6459 2
+DEAL::6460 2
+DEAL::6461 2
+DEAL::6462 2
+DEAL::6463 2
+DEAL::6464 2
+DEAL::6465 2
+DEAL::6466 2
+DEAL::6467 2
+DEAL::6468 2
+DEAL::6469 2
+DEAL::6470 2
+DEAL::6471 2
+DEAL::6472 2
+DEAL::6473 2
+DEAL::6474 2
+DEAL::6475 2
+DEAL::6476 2
+DEAL::6477 2
+DEAL::6478 2
+DEAL::6479 2
+DEAL::6480 2
+DEAL::6481 2
+DEAL::6482 2
+DEAL::6483 2
+DEAL::6484 2
+DEAL::6485 2
+DEAL::6486 2
+DEAL::6487 2
+DEAL::6488 2
+DEAL::6489 2
+DEAL::6490 2
+DEAL::6491 2
+DEAL::6492 2
+DEAL::6493 2
+DEAL::6494 2
+DEAL::6495 2
+DEAL::6496 2
+DEAL::6497 2
+DEAL::6498 2
+DEAL::6499 2
+DEAL::6500 2
+DEAL::6501 2
+DEAL::6502 2
+DEAL::6503 2
+DEAL::6504 2
+DEAL::6505 2
+DEAL::6506 2
+DEAL::6507 2
+DEAL::6508 2
+DEAL::6509 2
+DEAL::6510 2
+DEAL::6511 2
+DEAL::6512 2
+DEAL::6513 2
+DEAL::6514 2
+DEAL::6515 2
+DEAL::6516 2
+DEAL::6517 2
+DEAL::6518 2
+DEAL::6519 2
+DEAL::6520 2
+DEAL::6521 2
+DEAL::6522 2
+DEAL::6523 2
+DEAL::6524 2
+DEAL::6525 2
+DEAL::6526 2
+DEAL::6527 2
+DEAL::6528 2
+DEAL::6529 2
+DEAL::6530 2
+DEAL::6531 2
+DEAL::6532 2
+DEAL::6533 2
+DEAL::6534 2
+DEAL::6535 2
+DEAL::6536 2
+DEAL::6537 2
+DEAL::6538 2
+DEAL::6539 2
+DEAL::6540 2
+DEAL::6541 2
+DEAL::6542 2
+DEAL::6543 2
+DEAL::6544 2
+DEAL::6545 2
+DEAL::6546 2
+DEAL::6547 2
+DEAL::6548 2
+DEAL::6549 2
+DEAL::6550 2
+DEAL::6551 2
+DEAL::6552 2
+DEAL::6553 2
+DEAL::6554 2
+DEAL::6555 2
+DEAL::6556 2
+DEAL::6557 2
+DEAL::6558 2
+DEAL::6559 2
+DEAL::6560 2
+DEAL::6561 2
+DEAL::6562 2
+DEAL::6563 2
+DEAL::6564 2
+DEAL::6565 2
+DEAL::6566 2
+DEAL::6567 2
+DEAL::6568 2
+DEAL::6569 2
+DEAL::6570 2
+DEAL::6571 2
+DEAL::6572 2
+DEAL::6573 2
+DEAL::6574 2
+DEAL::6575 2
+DEAL::6576 2
+DEAL::6577 2
+DEAL::6578 2
+DEAL::6579 2
+DEAL::6580 2
+DEAL::6581 2
+DEAL::6582 2
+DEAL::6583 2
+DEAL::6584 2
+DEAL::6585 2
+DEAL::6586 2
+DEAL::6587 2
+DEAL::6588 2
+DEAL::6589 2
+DEAL::6590 2
+DEAL::6591 2
+DEAL::6592 2
+DEAL::6593 2
+DEAL::6594 2
+DEAL::6595 2
+DEAL::6596 2
+DEAL::6597 2
+DEAL::6598 2
+DEAL::6599 2
+DEAL::6600 2
+DEAL::6601 2
+DEAL::6602 2
+DEAL::6603 2
+DEAL::6604 2
+DEAL::6605 2
+DEAL::6606 2
+DEAL::6607 2
+DEAL::6608 2
+DEAL::6609 2
+DEAL::6610 1
+DEAL::6611 1
+DEAL::6612 1
+DEAL::6613 1
+DEAL::6614 1
+DEAL::6615 1
+DEAL::6616 1
+DEAL::6617 1
+DEAL::6618 1
+DEAL::6619 1
+DEAL::6620 1
+DEAL::6621 1
+DEAL::6622 1
+DEAL::6623 1
+DEAL::6624 1
+DEAL::6625 1
+DEAL::6626 1
+DEAL::6627 1
+DEAL::6628 1
+DEAL::6629 1
+DEAL::6630 1
+DEAL::6631 1
+DEAL::6632 1
+DEAL::6633 1
+DEAL::6634 1
+DEAL::6635 1
+DEAL::6636 1
+DEAL::6637 1
+DEAL::6638 1
+DEAL::6639 1
+DEAL::6640 1
+DEAL::6641 1
+DEAL::6642 1
+DEAL::6643 1
+DEAL::6644 1
+DEAL::6645 1
+DEAL::6646 1
+DEAL::6647 1
+DEAL::6648 1
+DEAL::6649 1
+DEAL::6650 1
+DEAL::6651 1
+DEAL::6652 1
+DEAL::6653 1
+DEAL::6654 1
+DEAL::6655 1
+DEAL::6656 1
+DEAL::6657 1
+DEAL::6658 1
+DEAL::6659 1
+DEAL::6660 1
+DEAL::6661 1
+DEAL::6662 1
+DEAL::6663 1
+DEAL::6664 1
+DEAL::6665 1
+DEAL::6666 1
+DEAL::6667 1
+DEAL::6668 1
+DEAL::6669 1
+DEAL::6670 1
+DEAL::6671 1
+DEAL::6672 1
+DEAL::6673 1
+DEAL::6674 1
+DEAL::6675 1
+DEAL::6676 1
+DEAL::6677 1
+DEAL::6678 1
+DEAL::6679 1
+DEAL::6680 1
+DEAL::6681 1
+DEAL::6682 1
+DEAL::6683 1
+DEAL::6684 1
+DEAL::6685 1
+DEAL::6686 1
+DEAL::6687 1
+DEAL::6688 1
+DEAL::6689 1
+DEAL::6690 1
+DEAL::6691 1
+DEAL::6692 1
+DEAL::6693 1
+DEAL::6694 1
+DEAL::6695 1
+DEAL::6696 1
+DEAL::6697 1
+DEAL::6698 1
+DEAL::6699 1
+DEAL::6700 1
+DEAL::6701 1
+DEAL::6702 1
+DEAL::6703 1
+DEAL::6704 1
+DEAL::6705 1
+DEAL::6706 1
+DEAL::6707 1
+DEAL::6708 1
+DEAL::6709 1
+DEAL::6710 1
+DEAL::6711 1
+DEAL::6712 1
+DEAL::6713 1
+DEAL::6714 1
+DEAL::6715 1
+DEAL::6716 1
+DEAL::6717 1
+DEAL::6718 1
+DEAL::6719 1
+DEAL::6720 1
+DEAL::6721 1
+DEAL::6722 1
+DEAL::6723 1
+DEAL::6724 1
+DEAL::6725 1
+DEAL::6726 1
+DEAL::6727 1
+DEAL::6728 1
+DEAL::6729 1
+DEAL::6730 1
+DEAL::6731 1
+DEAL::6732 1
+DEAL::6733 1
+DEAL::6734 1
+DEAL::6735 1
+DEAL::6736 1
+DEAL::6737 1
+DEAL::6738 1
+DEAL::6739 1
+DEAL::6740 1
+DEAL::6741 1
+DEAL::6742 1
+DEAL::6743 1
+DEAL::6744 1
+DEAL::6745 1
+DEAL::6746 1
+DEAL::6747 1
+DEAL::6748 1
+DEAL::6749 1
+DEAL::6750 1
+DEAL::6751 1
+DEAL::6752 1
+DEAL::6753 1
+DEAL::6754 1
+DEAL::6755 1
+DEAL::6756 1
+DEAL::6757 1
+DEAL::6758 1
+DEAL::6759 1
+DEAL::6760 1
+DEAL::6761 1
+DEAL::6762 1
+DEAL::6763 1
+DEAL::6764 1
+DEAL::6765 1
+DEAL::6766 1
+DEAL::6767 1
+DEAL::6768 1
+DEAL::6769 1
+DEAL::6770 1
+DEAL::6771 1
+DEAL::6772 1
+DEAL::6773 1
+DEAL::6774 1
+DEAL::6775 1
+DEAL::6776 1
+DEAL::6777 1
+DEAL::6778 1
+DEAL::6779 1
+DEAL::6780 1
+DEAL::6781 1
+DEAL::6782 1
+DEAL::6783 1
+DEAL::6784 1
+DEAL::6785 1
+DEAL::6786 1
+DEAL::6787 1
+DEAL::6788 1
+DEAL::6789 1
+DEAL::6790 1
+DEAL::6791 1
+DEAL::6792 1
+DEAL::6793 1
+DEAL::6794 1
+DEAL::6795 1
+DEAL::6796 1
+DEAL::6797 1
+DEAL::6798 1
+DEAL::6799 1
+DEAL::6800 1
+DEAL::6801 1
+DEAL::6802 1
+DEAL::6803 1
+DEAL::6804 1
+DEAL::6805 1
+DEAL::6806 1
+DEAL::6807 1
+DEAL::6808 1
+DEAL::6809 1
+DEAL::6810 1
+DEAL::6811 1
+DEAL::6812 1
+DEAL::6813 1
+DEAL::6814 1
+DEAL::6815 1
+DEAL::6816 1
+DEAL::6817 1
+DEAL::6818 1
+DEAL::6819 1
+DEAL::6820 1
+DEAL::6821 1
+DEAL::6822 1
+DEAL::6823 3
+DEAL::6824 3
+DEAL::6825 3
+DEAL::6826 3
+DEAL::6827 3
+DEAL::6828 3
+DEAL::6829 3
+DEAL::6830 3
+DEAL::6831 3
+DEAL::6832 3
+DEAL::6833 3
+DEAL::6834 3
+DEAL::6835 3
+DEAL::6836 3
+DEAL::6837 3
+DEAL::6838 3
+DEAL::6839 3
+DEAL::6840 3
+DEAL::6841 3
+DEAL::6842 3
+DEAL::6843 3
+DEAL::6844 3
+DEAL::6845 3
+DEAL::6846 3
+DEAL::6847 3
+DEAL::6848 3
+DEAL::6849 3
+DEAL::6850 3
+DEAL::6851 3
+DEAL::6852 3
+DEAL::6853 3
+DEAL::6854 3
+DEAL::6855 3
+DEAL::6856 3
+DEAL::6857 3
+DEAL::6858 3
+DEAL::6859 3
+DEAL::6860 3
+DEAL::6861 3
+DEAL::6862 3
+DEAL::6863 3
+DEAL::6864 3
+DEAL::6865 3
+DEAL::6866 3
+DEAL::6867 3
+DEAL::6868 3
+DEAL::6869 3
+DEAL::6870 3
+DEAL::6871 3
+DEAL::6872 3
+DEAL::6873 3
+DEAL::6874 3
+DEAL::6875 3
+DEAL::6876 3
+DEAL::6877 3
+DEAL::6878 3
+DEAL::6879 3
+DEAL::6880 3
+DEAL::6881 3
+DEAL::6882 3
+DEAL::6883 3
+DEAL::6884 3
+DEAL::6885 3
+DEAL::6886 3
+DEAL::6887 3
+DEAL::6888 3
+DEAL::6889 3
+DEAL::6890 3
+DEAL::6891 3
+DEAL::6892 3
+DEAL::6893 3
+DEAL::6894 3
+DEAL::6895 3
+DEAL::6896 3
+DEAL::6897 3
+DEAL::6898 3
+DEAL::6899 3
+DEAL::6900 3
+DEAL::6901 3
+DEAL::6902 3
+DEAL::6903 3
+DEAL::6904 3
+DEAL::6905 3
+DEAL::6906 3
+DEAL::6907 3
+DEAL::6908 3
+DEAL::6909 3
+DEAL::6910 3
+DEAL::6911 3
+DEAL::6912 3
+DEAL::6913 3
+DEAL::6914 3
+DEAL::6915 3
+DEAL::6916 3
+DEAL::6917 3
+DEAL::6918 3
+DEAL::6919 3
+DEAL::6920 3
+DEAL::6921 3
+DEAL::6922 3
+DEAL::6923 3
+DEAL::6924 3
+DEAL::6925 3
+DEAL::6926 3
+DEAL::6927 3
+DEAL::6928 3
+DEAL::6929 3
+DEAL::6930 3
+DEAL::6931 3
+DEAL::6932 3
+DEAL::6933 3
+DEAL::6934 3
+DEAL::6935 3
+DEAL::6936 3
+DEAL::6937 3
+DEAL::6938 3
+DEAL::6939 3
+DEAL::6940 3
+DEAL::6941 3
+DEAL::6942 3
+DEAL::6943 3
+DEAL::6944 3
+DEAL::6945 3
+DEAL::6946 3
+DEAL::6947 3
+DEAL::6948 3
+DEAL::6949 3
+DEAL::6950 3
+DEAL::6951 3
+DEAL::6952 3
+DEAL::6953 3
+DEAL::6954 3
+DEAL::6955 3
+DEAL::6956 3
+DEAL::6957 3
+DEAL::6958 3
+DEAL::6959 3
+DEAL::6960 3
+DEAL::6961 3
+DEAL::6962 3
+DEAL::6963 3
+DEAL::6964 3
+DEAL::6965 3
+DEAL::6966 3
+DEAL::6967 3
+DEAL::6968 3
+DEAL::6969 3
+DEAL::6970 3
+DEAL::6971 3
+DEAL::6972 3
+DEAL::6973 3
+DEAL::6974 3
+DEAL::6975 3
+DEAL::6976 3
+DEAL::6977 3
+DEAL::6978 3
+DEAL::6979 3
+DEAL::6980 3
+DEAL::6981 3
+DEAL::6982 3
+DEAL::6983 3
+DEAL::6984 3
+DEAL::6985 3
+DEAL::6986 3
+DEAL::6987 3
+DEAL::6988 3
+DEAL::6989 3
+DEAL::6990 3
+DEAL::6991 3
+DEAL::6992 3
+DEAL::6993 3
+DEAL::6994 3
+DEAL::6995 3
+DEAL::6996 3
+DEAL::6997 3
+DEAL::6998 3
+DEAL::6999 3
+DEAL::7000 3
+DEAL::7001 3
+DEAL::7002 3
+DEAL::7003 3
+DEAL::7004 3
+DEAL::7005 3
+DEAL::7006 3
+DEAL::7007 3
+DEAL::7008 3
+DEAL::7009 3
+DEAL::7010 3
+DEAL::7011 3
+DEAL::7012 3
+DEAL::7013 3
+DEAL::7014 3
+DEAL::7015 3
+DEAL::7016 3
+DEAL::7017 3
+DEAL::7018 3
+DEAL::7019 3
+DEAL::7020 3
+DEAL::7021 3
+DEAL::7022 3
+DEAL::7023 3
+DEAL::7024 3
+DEAL::7025 3
+DEAL::7026 3
+DEAL::7027 3
+DEAL::7028 3
+DEAL::7029 3
+DEAL::7030 3
+DEAL::7031 3
+DEAL::7032 3
+DEAL::7033 3
+DEAL::7034 3
+DEAL::7035 3
+DEAL::7036 3
+DEAL::7037 3
+DEAL::7038 3
+DEAL::7039 3
+DEAL::7040 3
+DEAL::7041 3
+DEAL::7042 3
+DEAL::7043 3
+DEAL::7044 3
+DEAL::7045 3
+DEAL::7046 3
+DEAL::7047 3
+DEAL::7048 3
+DEAL::7049 3
+DEAL::7050 3
+DEAL::7051 3
+DEAL::7052 3
+DEAL::7053 3
+DEAL::7054 3
+DEAL::7055 3
+DEAL::7056 3
+DEAL::7057 3
+DEAL::7058 3
+DEAL::7059 3
+DEAL::7060 3
+DEAL::7061 3
+DEAL::7062 3
+DEAL::7063 3
+DEAL::7064 3
+DEAL::7065 3
+DEAL::7066 3
+DEAL::7067 3
+DEAL::7068 3
+DEAL::7069 3
+DEAL::7070 3
+DEAL::7071 3
+DEAL::7072 3
+DEAL::7073 3
+DEAL::7074 3
+DEAL::7075 3
+DEAL::7076 3
+DEAL::7077 3
+DEAL::7078 3
+DEAL::7079 3
+DEAL::7080 3
+DEAL::7081 3
+DEAL::7082 3
+DEAL::7083 3
+DEAL::7084 3
+DEAL::7085 3
+DEAL::7086 3
+DEAL::7087 3
+DEAL::7088 3
+DEAL::7089 3
+DEAL::7090 3
+DEAL::7091 3
+DEAL::7092 3
+DEAL::7093 3
+DEAL::7094 3
+DEAL::7095 3
+DEAL::7096 3
+DEAL::7097 3
+DEAL::7098 3
+DEAL::7099 3
+DEAL::7100 3
+DEAL::7101 3
+DEAL::7102 3
+DEAL::7103 3
+DEAL::7104 3
+DEAL::7105 3
+DEAL::7106 3
+DEAL::7107 3
+DEAL::7108 3
+DEAL::7109 3
+DEAL::7110 3
+DEAL::7111 3
+DEAL::7112 3
+DEAL::7113 3
+DEAL::7114 3
+DEAL::7115 3
+DEAL::7116 3
+DEAL::7117 3
+DEAL::7118 3
+DEAL::7119 3
+DEAL::7120 3
+DEAL::7121 3
+DEAL::7122 3
+DEAL::7123 3
+DEAL::7124 3
+DEAL::7125 3
+DEAL::7126 3
+DEAL::7127 3
+DEAL::7128 3
+DEAL::7129 3
+DEAL::7130 3
+DEAL::7131 3
+DEAL::7132 3
+DEAL::7133 3
+DEAL::7134 3
+DEAL::7135 3
+DEAL::7136 3
+DEAL::7137 3
+DEAL::7138 3
+DEAL::7139 3
+DEAL::7140 3
+DEAL::7141 3
+DEAL::7142 3
+DEAL::7143 3
+DEAL::7144 3
+DEAL::7145 3
+DEAL::7146 3
+DEAL::7147 3
+DEAL::7148 3
+DEAL::7149 3
+DEAL::7150 3
+DEAL::7151 3
+DEAL::7152 3
+DEAL::7153 3
+DEAL::7154 3
+DEAL::7155 3
+DEAL::7156 3
+DEAL::7157 3
+DEAL::7158 3
+DEAL::7159 3
+DEAL::7160 3
+DEAL::7161 3
+DEAL::7162 3
+DEAL::7163 3
+DEAL::7164 3
+DEAL::7165 3
+DEAL::7166 3
+DEAL::7167 3
+DEAL::7168 3
+DEAL::7169 3
+DEAL::7170 3
+DEAL::7171 3
+DEAL::7172 3
+DEAL::7173 3
+DEAL::7174 3
+DEAL::7175 3
+DEAL::7176 3
+DEAL::7177 3
+DEAL::7178 3
+DEAL::7179 3
+DEAL::7180 3
+DEAL::7181 3
+DEAL::7182 3
+DEAL::7183 3
+DEAL::7184 3
+DEAL::7185 3
+DEAL::7186 3
+DEAL::7187 3
+DEAL::7188 3
+DEAL::7189 3
+DEAL::7190 3
+DEAL::7191 3
+DEAL::7192 3
+DEAL::7193 3
+DEAL::7194 3
+DEAL::7195 3
+DEAL::7196 3
+DEAL::7197 3
+DEAL::7198 3
+DEAL::7199 3
+DEAL::7200 3
+DEAL::7201 3
+DEAL::7202 3
+DEAL::7203 3
+DEAL::7204 3
+DEAL::7205 3
+DEAL::7206 3
+DEAL::7207 3
+DEAL::7208 3
+DEAL::7209 3
+DEAL::7210 3
+DEAL::7211 3
+DEAL::7212 4
+DEAL::7213 4
+DEAL::7214 4
+DEAL::7215 4
+DEAL::7216 4
+DEAL::7217 4
+DEAL::7218 4
+DEAL::7219 4
+DEAL::7220 4
+DEAL::7221 4
+DEAL::7222 4
+DEAL::7223 4
+DEAL::7224 4
+DEAL::7225 4
+DEAL::7226 4
+DEAL::7227 4
+DEAL::7228 4
+DEAL::7229 4
+DEAL::7230 4
+DEAL::7231 4
+DEAL::7232 4
+DEAL::7233 4
+DEAL::7234 4
+DEAL::7235 4
+DEAL::7236 4
+DEAL::7237 4
+DEAL::7238 4
+DEAL::7239 4
+DEAL::7240 4
+DEAL::7241 4
+DEAL::7242 4
+DEAL::7243 4
+DEAL::7244 4
+DEAL::7245 4
+DEAL::7246 4
+DEAL::7247 4
+DEAL::7248 4
+DEAL::7249 4
+DEAL::7250 4
+DEAL::7251 4
+DEAL::7252 4
+DEAL::7253 4
+DEAL::7254 4
+DEAL::7255 4
+DEAL::7256 4
+DEAL::7257 4
+DEAL::7258 4
+DEAL::7259 4
+DEAL::7260 4
+DEAL::7261 4
+DEAL::7262 4
+DEAL::7263 4
+DEAL::7264 4
+DEAL::7265 4
+DEAL::7266 4
+DEAL::7267 4
+DEAL::7268 4
+DEAL::7269 4
+DEAL::7270 4
+DEAL::7271 4
+DEAL::7272 4
+DEAL::7273 4
+DEAL::7274 4
+DEAL::7275 4
+DEAL::7276 4
+DEAL::7277 4
+DEAL::7278 4
+DEAL::7279 4
+DEAL::7280 4
+DEAL::7281 4
+DEAL::7282 4
+DEAL::7283 4
+DEAL::7284 4
+DEAL::7285 4
+DEAL::7286 4
+DEAL::7287 4
+DEAL::7288 4
+DEAL::7289 4
+DEAL::7290 4
+DEAL::7291 4
+DEAL::7292 4
+DEAL::7293 4
+DEAL::7294 4
+DEAL::7295 4
+DEAL::7296 4
+DEAL::7297 4
+DEAL::7298 4
+DEAL::7299 4
+DEAL::7300 4
+DEAL::7301 4
+DEAL::7302 4
+DEAL::7303 4
+DEAL::7304 4
+DEAL::7305 4
+DEAL::7306 4
+DEAL::7307 4
+DEAL::7308 4
+DEAL::7309 4
+DEAL::7310 4
+DEAL::7311 4
+DEAL::7312 4
+DEAL::7313 4
+DEAL::7314 4
+DEAL::7315 4
+DEAL::7316 4
+DEAL::7317 4
+DEAL::7318 4
+DEAL::7319 4
+DEAL::7320 4
+DEAL::7321 4
+DEAL::7322 4
+DEAL::7323 4
+DEAL::7324 4
+DEAL::7325 4
+DEAL::7326 4
+DEAL::7327 4
+DEAL::7328 4
+DEAL::7329 0
+DEAL::7330 0
+DEAL::7331 0
+DEAL::7332 0
+DEAL::7333 0
+DEAL::7334 0
+DEAL::7335 0
+DEAL::7336 0
+DEAL::7337 0
+DEAL::7338 0
+DEAL::7339 0
+DEAL::7340 0
+DEAL::7341 0
+DEAL::7342 0
+DEAL::7343 0
+DEAL::7344 0
+DEAL::7345 0
+DEAL::7346 0
+DEAL::7347 0
+DEAL::7348 0
+DEAL::7349 0
+DEAL::7350 0
+DEAL::7351 0
+DEAL::7352 0
+DEAL::7353 0
+DEAL::7354 0
+DEAL::7355 0
+DEAL::7356 0
+DEAL::7357 0
+DEAL::7358 0
+DEAL::7359 0
+DEAL::7360 0
+DEAL::7361 0
+DEAL::7362 0
+DEAL::7363 0
+DEAL::7364 0
+DEAL::7365 0
+DEAL::7366 0
+DEAL::7367 0
+DEAL::7368 0
+DEAL::7369 0
+DEAL::7370 0
+DEAL::7371 0
+DEAL::7372 0
+DEAL::7373 0
+DEAL::7374 0
+DEAL::7375 0
+DEAL::7376 0
+DEAL::7377 0
+DEAL::7378 0
+DEAL::7379 0
+DEAL::7380 0
+DEAL::7381 0
+DEAL::7382 0
+DEAL::7383 0
+DEAL::7384 0
+DEAL::7385 0
+DEAL::7386 0
+DEAL::7387 0
+DEAL::7388 0
+DEAL::7389 0
+DEAL::7390 0
+DEAL::7391 0
+DEAL::7392 0
+DEAL::7393 0
+DEAL::7394 0
+DEAL::7395 0
+DEAL::7396 0
+DEAL::7397 0
+DEAL::7398 0
+DEAL::7399 0
+DEAL::7400 0
+DEAL::7401 0
+DEAL::7402 0
+DEAL::7403 0
+DEAL::7404 0
+DEAL::7405 0
+DEAL::7406 0
+DEAL::7407 0
+DEAL::7408 0
+DEAL::7409 0
+DEAL::7410 0
+DEAL::7411 0
+DEAL::7412 0
+DEAL::7413 0
+DEAL::7414 0
+DEAL::7415 0
+DEAL::7416 0
+DEAL::7417 0
+DEAL::7418 0
+DEAL::7419 0
+DEAL::7420 0
+DEAL::7421 0
+DEAL::7422 0
+DEAL::7423 0
+DEAL::7424 0
+DEAL::7425 2
+DEAL::7426 2
+DEAL::7427 2
+DEAL::7428 2
+DEAL::7429 2
+DEAL::7430 2
+DEAL::7431 2
+DEAL::7432 2
+DEAL::7433 2
+DEAL::7434 2
+DEAL::7435 2
+DEAL::7436 2
+DEAL::7437 2
+DEAL::7438 2
+DEAL::7439 2
+DEAL::7440 2
+DEAL::7441 2
+DEAL::7442 2
+DEAL::7443 2
+DEAL::7444 2
+DEAL::7445 2
+DEAL::7446 2
+DEAL::7447 2
+DEAL::7448 2
+DEAL::7449 2
+DEAL::7450 2
+DEAL::7451 2
+DEAL::7452 2
+DEAL::7453 2
+DEAL::7454 2
+DEAL::7455 2
+DEAL::7456 2
+DEAL::7457 2
+DEAL::7458 2
+DEAL::7459 2
+DEAL::7460 2
+DEAL::7461 2
+DEAL::7462 2
+DEAL::7463 2
+DEAL::7464 2
+DEAL::7465 2
+DEAL::7466 2
+DEAL::7467 2
+DEAL::7468 2
+DEAL::7469 2
+DEAL::7470 2
+DEAL::7471 2
+DEAL::7472 2
+DEAL::7473 2
+DEAL::7474 2
+DEAL::7475 2
+DEAL::7476 2
+DEAL::7477 2
+DEAL::7478 2
+DEAL::7479 2
+DEAL::7480 2
+DEAL::7481 2
+DEAL::7482 2
+DEAL::7483 2
+DEAL::7484 2
+DEAL::7485 2
+DEAL::7486 2
+DEAL::7487 2
+DEAL::7488 2
+DEAL::7489 2
+DEAL::7490 2
+DEAL::7491 2
+DEAL::7492 2
+DEAL::7493 2
+DEAL::7494 2
+DEAL::7495 2
+DEAL::7496 2
+DEAL::7497 2
+DEAL::7498 2
+DEAL::7499 2
+DEAL::7500 2
+DEAL::7501 2
+DEAL::7502 2
+DEAL::7503 2
+DEAL::7504 2
+DEAL::7505 2
+DEAL::7506 2
+DEAL::7507 2
+DEAL::7508 2
+DEAL::7509 2
+DEAL::7510 2
+DEAL::7511 2
+DEAL::7512 2
+DEAL::7513 2
+DEAL::7514 2
+DEAL::7515 2
+DEAL::7516 2
+DEAL::7517 2
+DEAL::7518 2
+DEAL::7519 2
+DEAL::7520 2
+DEAL::7521 2
+DEAL::7522 2
+DEAL::7523 2
+DEAL::7524 2
+DEAL::7525 2
+DEAL::7526 2
+DEAL::7527 2
+DEAL::7528 2
+DEAL::7529 2
+DEAL::7530 2
+DEAL::7531 2
+DEAL::7532 2
+DEAL::7533 2
+DEAL::7534 2
+DEAL::7535 2
+DEAL::7536 2
+DEAL::7537 2
+DEAL::7538 2
+DEAL::7539 2
+DEAL::7540 2
+DEAL::7541 2
+DEAL::7542 4
+DEAL::7543 4
+DEAL::7544 4
+DEAL::7545 4
+DEAL::7546 2
+DEAL::7547 2
+DEAL::7548 2
+DEAL::7549 2
+DEAL::7550 2
+DEAL::7551 4
+DEAL::7552 2
+DEAL::7553 4
+DEAL::7554 2
+DEAL::7555 2
+DEAL::7556 2
+DEAL::7557 2
+DEAL::7558 2
+DEAL::7559 2
+DEAL::7560 2
+DEAL::7561 2
+DEAL::7562 2
+DEAL::7563 2
+DEAL::7564 2
+DEAL::7565 2
+DEAL::7566 2
+DEAL::7567 2
+DEAL::7568 2
+DEAL::7569 2
+DEAL::7570 2
+DEAL::7571 4
+DEAL::7572 2
+DEAL::7573 4
+DEAL::7574 2
+DEAL::7575 2
+DEAL::7576 2
+DEAL::7577 2
+DEAL::7578 2
+DEAL::7579 2
+DEAL::7580 2
+DEAL::7581 2
+DEAL::7582 2
+DEAL::7583 4
+DEAL::7584 4
+DEAL::7585 2
+DEAL::7586 2
+DEAL::7587 2
+DEAL::7588 2
+DEAL::7589 4
+DEAL::7590 4
+DEAL::7591 2
+DEAL::7592 2
+DEAL::7593 2
+DEAL::7594 2
+DEAL::7595 2
+DEAL::7596 2
+DEAL::7597 2
+DEAL::7598 2
+DEAL::7599 2
+DEAL::7600 2
+DEAL::7601 2
+DEAL::7602 2
+DEAL::7603 2
+DEAL::7604 2
+DEAL::7605 2
+DEAL::7606 2
+DEAL::7607 2
+DEAL::7608 2
+DEAL::7609 2
+DEAL::7610 4
+DEAL::7611 4
+DEAL::7612 4
+DEAL::7613 4
+DEAL::7614 4
+DEAL::7615 4
+DEAL::7616 4
+DEAL::7617 4
+DEAL::7618 4
+DEAL::7619 4
+DEAL::7620 4
+DEAL::7621 4
+DEAL::7622 4
+DEAL::7623 4
+DEAL::7624 4
+DEAL::7625 4
+DEAL::7626 4
+DEAL::7627 4
+DEAL::7628 4
+DEAL::7629 4
+DEAL::7630 4
+DEAL::7631 4
+DEAL::7632 4
+DEAL::7633 4
+DEAL::7634 4
+DEAL::7635 4
+DEAL::7636 4
+DEAL::7637 4
+DEAL::7638 4
+DEAL::7639 4
+DEAL::7640 4
+DEAL::7641 4
+DEAL::7642 4
+DEAL::7643 4
+DEAL::7644 4
+DEAL::7645 4
+DEAL::7646 4
+DEAL::7647 4
+DEAL::7648 4
+DEAL::7649 4
+DEAL::7650 4
+DEAL::7651 4
+DEAL::7652 4
+DEAL::7653 4
+DEAL::7654 4
+DEAL::7655 4
+DEAL::7656 2
+DEAL::7657 2
+DEAL::7658 2
+DEAL::7659 2
+DEAL::7660 2
+DEAL::7661 2
+DEAL::7662 2
+DEAL::7663 2
+DEAL::7664 2
+DEAL::7665 2
+DEAL::7666 2
+DEAL::7667 2
+DEAL::7668 2
+DEAL::7669 2
+DEAL::7670 2
+DEAL::7671 2
+DEAL::7672 2
+DEAL::7673 2
+DEAL::7674 2
+DEAL::7675 2
+DEAL::7676 2
+DEAL::7677 2
+DEAL::7678 2
+DEAL::7679 2
+DEAL::7680 2
+DEAL::7681 2
+DEAL::7682 2
+DEAL::7683 2
+DEAL::7684 2
+DEAL::7685 2
+DEAL::7686 2
+DEAL::7687 2
+DEAL::7688 2
+DEAL::7689 2
+DEAL::7690 2
+DEAL::7691 2
+DEAL::7692 2
+DEAL::7693 2
+DEAL::7694 2
+DEAL::7695 2
+DEAL::7696 2
+DEAL::7697 2
+DEAL::7698 2
+DEAL::7699 2
+DEAL::7700 2
+DEAL::7701 2
+DEAL::7702 2
+DEAL::7703 2
+DEAL::7704 2
+DEAL::7705 2
+DEAL::7706 2
+DEAL::7707 2
+DEAL::7708 2
+DEAL::7709 2
+DEAL::7710 2
+DEAL::7711 2
+DEAL::7712 2
+DEAL::7713 2
+DEAL::7714 2
+DEAL::7715 2
+DEAL::7716 2
+DEAL::7717 2
+DEAL::7718 2
+DEAL::7719 2
+DEAL::7720 2
+DEAL::7721 2
+DEAL::7722 2
+DEAL::7723 2
+DEAL::7724 2
+DEAL::7725 2
+DEAL::7726 2
+DEAL::7727 2
+DEAL::7728 2
+DEAL::7729 2
+DEAL::7730 2
+DEAL::7731 2
+DEAL::7732 2
+DEAL::7733 2
+DEAL::7734 2
+DEAL::7735 2
+DEAL::7736 2
+DEAL::7737 2
+DEAL::7738 2
+DEAL::7739 2
+DEAL::7740 2
+DEAL::7741 2
+DEAL::7742 2
+DEAL::7743 2
+DEAL::7744 2
+DEAL::7745 2
+DEAL::7746 2
+DEAL::7747 2
+DEAL::7748 2
+DEAL::7749 2
+DEAL::7750 2
+DEAL::7751 2
+DEAL::7752 2
+DEAL::7753 2
+DEAL::7754 2
+DEAL::7755 2
+DEAL::7756 2
+DEAL::7757 2
+DEAL::7758 2
+DEAL::7759 2
+DEAL::7760 2
+DEAL::7761 2
+DEAL::7762 2
+DEAL::7763 2
+DEAL::7764 2
+DEAL::7765 2
+DEAL::7766 2
+DEAL::7767 2
+DEAL::7768 2
+DEAL::7769 2
+DEAL::7770 2
+DEAL::7771 2
+DEAL::7772 2
+DEAL::7773 4
+DEAL::7774 4
+DEAL::7775 4
+DEAL::7776 4
+DEAL::7777 4
+DEAL::7778 4
+DEAL::7779 4
+DEAL::7780 4
+DEAL::7781 4
+DEAL::7782 4
+DEAL::7783 4
+DEAL::7784 4
+DEAL::7785 4
+DEAL::7786 4
+DEAL::7787 4
+DEAL::7788 4
+DEAL::7789 4
+DEAL::7790 4
+DEAL::7791 4
+DEAL::7792 4
+DEAL::7793 4
+DEAL::7794 4
+DEAL::7795 4
+DEAL::7796 4
+DEAL::7797 4
+DEAL::7798 4
+DEAL::7799 4
+DEAL::7800 4
+DEAL::7801 4
+DEAL::7802 4
+DEAL::7803 4
+DEAL::7804 4
+DEAL::7805 4
+DEAL::7806 4
+DEAL::7807 4
+DEAL::7808 4
+DEAL::7809 4
+DEAL::7810 4
+DEAL::7811 4
+DEAL::7812 4
+DEAL::7813 4
+DEAL::7814 4
+DEAL::7815 4
+DEAL::7816 4
+DEAL::7817 4
+DEAL::7818 4
+DEAL::7819 4
+DEAL::7820 4
+DEAL::7821 4
+DEAL::7822 4
+DEAL::7823 4
+DEAL::7824 4
+DEAL::7825 4
+DEAL::7826 4
+DEAL::7827 4
+DEAL::7828 4
+DEAL::7829 4
+DEAL::7830 4
+DEAL::7831 4
+DEAL::7832 4
+DEAL::7833 4
+DEAL::7834 4
+DEAL::7835 4
+DEAL::7836 4
+DEAL::7837 4
+DEAL::7838 4
+DEAL::7839 4
+DEAL::7840 4
+DEAL::7841 4
+DEAL::7842 4
+DEAL::7843 4
+DEAL::7844 4
+DEAL::7845 4
+DEAL::7846 4
+DEAL::7847 4
+DEAL::7848 4
+DEAL::7849 4
+DEAL::7850 4
+DEAL::7851 4
+DEAL::7852 4
+DEAL::7853 4
+DEAL::7854 4
+DEAL::7855 4
+DEAL::7856 4
+DEAL::7857 4
+DEAL::7858 4
+DEAL::7859 4
+DEAL::7860 4
+DEAL::7861 4
+DEAL::7862 4
+DEAL::7863 4
+DEAL::7864 4
+DEAL::7865 4
+DEAL::7866 4
+DEAL::7867 4
+DEAL::7868 4
+DEAL::7869 4
+DEAL::7870 4
+DEAL::7871 4
+DEAL::7872 4
+DEAL::7873 4
+DEAL::7874 4
+DEAL::7875 4
+DEAL::7876 4
+DEAL::7877 4
+DEAL::7878 4
+DEAL::7879 4
+DEAL::7880 4
+DEAL::7881 4
+DEAL::7882 4
+DEAL::7883 4
+DEAL::7884 4
+DEAL::7885 4
+DEAL::7886 4
+DEAL::7887 4
+DEAL::7888 4
+DEAL::7889 4
+DEAL::7890 3
+DEAL::7891 3
+DEAL::7892 3
+DEAL::7893 3
+DEAL::7894 3
+DEAL::7895 3
+DEAL::7896 3
+DEAL::7897 3
+DEAL::7898 3
+DEAL::7899 3
+DEAL::7900 3
+DEAL::7901 3
+DEAL::7902 3
+DEAL::7903 3
+DEAL::7904 3
+DEAL::7905 3
+DEAL::7906 3
+DEAL::7907 3
+DEAL::7908 3
+DEAL::7909 3
+DEAL::7910 3
+DEAL::7911 3
+DEAL::7912 3
+DEAL::7913 3
+DEAL::7914 3
+DEAL::7915 3
+DEAL::7916 3
+DEAL::7917 3
+DEAL::7918 3
+DEAL::7919 3
+DEAL::7920 3
+DEAL::7921 3
+DEAL::7922 3
+DEAL::7923 3
+DEAL::7924 3
+DEAL::7925 3
+DEAL::7926 3
+DEAL::7927 3
+DEAL::7928 3
+DEAL::7929 3
+DEAL::7930 3
+DEAL::7931 3
+DEAL::7932 3
+DEAL::7933 3
+DEAL::7934 3
+DEAL::7935 3
+DEAL::7936 3
+DEAL::7937 3
+DEAL::7938 3
+DEAL::7939 3
+DEAL::7940 3
+DEAL::7941 3
+DEAL::7942 3
+DEAL::7943 3
+DEAL::7944 3
+DEAL::7945 3
+DEAL::7946 3
+DEAL::7947 3
+DEAL::7948 3
+DEAL::7949 3
+DEAL::7950 3
+DEAL::7951 3
+DEAL::7952 3
+DEAL::7953 3
+DEAL::7954 3
+DEAL::7955 3
+DEAL::7956 3
+DEAL::7957 3
+DEAL::7958 3
+DEAL::7959 3
+DEAL::7960 3
+DEAL::7961 3
+DEAL::7962 3
+DEAL::7963 3
+DEAL::7964 3
+DEAL::7965 3
+DEAL::7966 3
+DEAL::7967 3
+DEAL::7968 3
+DEAL::7969 3
+DEAL::7970 3
+DEAL::7971 3
+DEAL::7972 3
+DEAL::7973 3
+DEAL::7974 3
+DEAL::7975 3
+DEAL::7976 3
+DEAL::7977 3
+DEAL::7978 3
+DEAL::7979 3
+DEAL::7980 3
+DEAL::7981 3
+DEAL::7982 3
+DEAL::7983 3
+DEAL::7984 3
+DEAL::7985 3
+DEAL::7986 3
+DEAL::7987 3
+DEAL::7988 3
+DEAL::7989 3
+DEAL::7990 3
+DEAL::7991 3
+DEAL::7992 3
+DEAL::7993 3
+DEAL::7994 3
+DEAL::7995 3
+DEAL::7996 3
+DEAL::7997 3
+DEAL::7998 3
+DEAL::7999 3
+DEAL::8000 3
+DEAL::8001 3
+DEAL::8002 3
+DEAL::8003 3
+DEAL::8004 3
+DEAL::8005 3
+DEAL::8006 3
+DEAL::8007 3
+DEAL::8008 3
+DEAL::8009 3
+DEAL::8010 3
+DEAL::8011 3
+DEAL::8012 3
+DEAL::8013 3
+DEAL::8014 3
+DEAL::8015 3
+DEAL::8016 3
+DEAL::8017 3
+DEAL::8018 3
+DEAL::8019 3
+DEAL::8020 3
+DEAL::8021 3
+DEAL::8022 3
+DEAL::8023 3
+DEAL::8024 3
+DEAL::8025 3
+DEAL::8026 3
+DEAL::8027 3
+DEAL::8028 3
+DEAL::8029 3
+DEAL::8030 3
+DEAL::8031 3
+DEAL::8032 3
+DEAL::8033 3
+DEAL::8034 3
+DEAL::8035 3
+DEAL::8036 3
+DEAL::8037 3
+DEAL::8038 3
+DEAL::8039 3
+DEAL::8040 3
+DEAL::8041 3
+DEAL::8042 3
+DEAL::8043 3
+DEAL::8044 3
+DEAL::8045 3
+DEAL::8046 3
+DEAL::8047 3
+DEAL::8048 3
+DEAL::8049 3
+DEAL::8050 3
+DEAL::8051 3
+DEAL::8052 3
+DEAL::8053 3
+DEAL::8054 3
+DEAL::8055 3
+DEAL::8056 3
+DEAL::8057 3
+DEAL::8058 3
+DEAL::8059 3
+DEAL::8060 3
+DEAL::8061 3
+DEAL::8062 3
+DEAL::8063 3
+DEAL::8064 3
+DEAL::8065 3
+DEAL::8066 3
+DEAL::8067 3
+DEAL::8068 3
+DEAL::8069 3
+DEAL::8070 3
+DEAL::8071 3
+DEAL::8072 3
+DEAL::8073 3
+DEAL::8074 3
+DEAL::8075 3
+DEAL::8076 3
+DEAL::8077 3
+DEAL::8078 3
+DEAL::8079 3
+DEAL::8080 3
+DEAL::8081 3
+DEAL::8082 3
+DEAL::8083 3
+DEAL::8084 3
+DEAL::8085 3
+DEAL::8086 3
+DEAL::8087 3
+DEAL::8088 3
+DEAL::8089 3
+DEAL::8090 3
+DEAL::8091 3
+DEAL::8092 3
+DEAL::8093 3
+DEAL::8094 3
+DEAL::8095 3
+DEAL::8096 3
+DEAL::8097 3
+DEAL::8098 3
+DEAL::8099 3
+DEAL::8100 3
+DEAL::8101 3
+DEAL::8102 3
+DEAL::8103 3
+DEAL::8104 3
+DEAL::8105 3
+DEAL::8106 3
+DEAL::8107 3
+DEAL::8108 3
+DEAL::8109 3
+DEAL::8110 3
+DEAL::8111 3
+DEAL::8112 3
+DEAL::8113 3
+DEAL::8114 3
+DEAL::8115 3
+DEAL::8116 3
+DEAL::8117 3
+DEAL::8118 3
+DEAL::8119 3
+DEAL::8120 3
+DEAL::8121 4
+DEAL::8122 4
+DEAL::8123 4
+DEAL::8124 4
+DEAL::8125 4
+DEAL::8126 4
+DEAL::8127 4
+DEAL::8128 4
+DEAL::8129 4
+DEAL::8130 4
+DEAL::8131 4
+DEAL::8132 4
+DEAL::8133 4
+DEAL::8134 4
+DEAL::8135 4
+DEAL::8136 4
+DEAL::8137 4
+DEAL::8138 4
+DEAL::8139 4
+DEAL::8140 4
+DEAL::8141 4
+DEAL::8142 4
+DEAL::8143 4
+DEAL::8144 4
+DEAL::8145 4
+DEAL::8146 4
+DEAL::8147 4
+DEAL::8148 4
+DEAL::8149 4
+DEAL::8150 4
+DEAL::8151 4
+DEAL::8152 4
+DEAL::8153 4
+DEAL::8154 4
+DEAL::8155 4
+DEAL::8156 4
+DEAL::8157 4
+DEAL::8158 4
+DEAL::8159 4
+DEAL::8160 4
+DEAL::8161 4
+DEAL::8162 4
+DEAL::8163 4
+DEAL::8164 4
+DEAL::8165 4
+DEAL::8166 4
+DEAL::8167 4
+DEAL::8168 4
+DEAL::8169 4
+DEAL::8170 4
+DEAL::8171 4
+DEAL::8172 4
+DEAL::8173 4
+DEAL::8174 4
+DEAL::8175 4
+DEAL::8176 4
+DEAL::8177 4
+DEAL::8178 4
+DEAL::8179 4
+DEAL::8180 4
+DEAL::8181 4
+DEAL::8182 4
+DEAL::8183 4
+DEAL::8184 4
+DEAL::8185 4
+DEAL::8186 4
+DEAL::8187 4
+DEAL::8188 4
+DEAL::8189 4
+DEAL::8190 4
+DEAL::8191 4
+DEAL::8192 4
+DEAL::8193 4
+DEAL::8194 4
+DEAL::8195 4
+DEAL::8196 4
+DEAL::8197 4
+DEAL::8198 4
+DEAL::8199 4
+DEAL::8200 4
+DEAL::8201 4
+DEAL::8202 4
+DEAL::8203 4
+DEAL::8204 4
+DEAL::8205 4
+DEAL::8206 4
+DEAL::8207 4
+DEAL::8208 4
+DEAL::8209 4
+DEAL::8210 4
+DEAL::8211 4
+DEAL::8212 4
+DEAL::8213 4
+DEAL::8214 4
+DEAL::8215 4
+DEAL::8216 4
+DEAL::8217 4
+DEAL::8218 4
+DEAL::8219 4
+DEAL::8220 4
+DEAL::8221 4
+DEAL::8222 4
+DEAL::8223 4
+DEAL::8224 4
+DEAL::8225 4
+DEAL::8226 4
+DEAL::8227 4
+DEAL::8228 4
+DEAL::8229 4
+DEAL::8230 4
+DEAL::8231 4
+DEAL::8232 4
+DEAL::8233 4
+DEAL::8234 4
+DEAL::8235 4
+DEAL::8236 4
+DEAL::8237 4
+DEAL::8238 0
+DEAL::8239 0
+DEAL::8240 0
+DEAL::8241 0
+DEAL::8242 0
+DEAL::8243 0
+DEAL::8244 0
+DEAL::8245 0
+DEAL::8246 0
+DEAL::8247 0
+DEAL::8248 0
+DEAL::8249 0
+DEAL::8250 0
+DEAL::8251 0
+DEAL::8252 0
+DEAL::8253 0
+DEAL::8254 0
+DEAL::8255 0
+DEAL::8256 0
+DEAL::8257 0
+DEAL::8258 0
+DEAL::8259 0
+DEAL::8260 0
+DEAL::8261 0
+DEAL::8262 0
+DEAL::8263 0
+DEAL::8264 0
+DEAL::8265 0
+DEAL::8266 0
+DEAL::8267 0
+DEAL::8268 0
+DEAL::8269 0
+DEAL::8270 0
+DEAL::8271 0
+DEAL::8272 0
+DEAL::8273 0
+DEAL::8274 0
+DEAL::8275 0
+DEAL::8276 0
+DEAL::8277 0
+DEAL::8278 0
+DEAL::8279 0
+DEAL::8280 0
+DEAL::8281 0
+DEAL::8282 0
+DEAL::8283 0
+DEAL::8284 0
+DEAL::8285 0
+DEAL::8286 0
+DEAL::8287 0
+DEAL::8288 0
+DEAL::8289 0
+DEAL::8290 0
+DEAL::8291 0
+DEAL::8292 0
+DEAL::8293 0
+DEAL::8294 0
+DEAL::8295 0
+DEAL::8296 0
+DEAL::8297 0
+DEAL::8298 0
+DEAL::8299 0
+DEAL::8300 0
+DEAL::8301 0
+DEAL::8302 0
+DEAL::8303 0
+DEAL::8304 0
+DEAL::8305 0
+DEAL::8306 0
+DEAL::8307 0
+DEAL::8308 0
+DEAL::8309 0
+DEAL::8310 0
+DEAL::8311 0
+DEAL::8312 0
+DEAL::8313 0
+DEAL::8314 0
+DEAL::8315 0
+DEAL::8316 0
+DEAL::8317 0
+DEAL::8318 0
+DEAL::8319 0
+DEAL::8320 0
+DEAL::8321 0
+DEAL::8322 0
+DEAL::8323 0
+DEAL::8324 0
+DEAL::8325 0
+DEAL::8326 0
+DEAL::8327 0
+DEAL::8328 0
+DEAL::8329 0
+DEAL::8330 0
+DEAL::8331 0
+DEAL::8332 0
+DEAL::8333 0
+DEAL::8334 0
+DEAL::8335 0
+DEAL::8336 0
+DEAL::8337 0
+DEAL::8338 0
+DEAL::8339 0
+DEAL::8340 0
+DEAL::8341 0
+DEAL::8342 0
+DEAL::8343 0
+DEAL::8344 0
+DEAL::8345 0
+DEAL::8346 0
+DEAL::8347 0
+DEAL::8348 0
+DEAL::8349 0
+DEAL::8350 0
+DEAL::8351 0
+DEAL::8352 0
+DEAL::8353 0
+DEAL::8354 0
+DEAL::8355 2
+DEAL::8356 2
+DEAL::8357 2
+DEAL::8358 2
+DEAL::8359 2
+DEAL::8360 2
+DEAL::8361 2
+DEAL::8362 2
+DEAL::8363 2
+DEAL::8364 2
+DEAL::8365 2
+DEAL::8366 2
+DEAL::8367 2
+DEAL::8368 2
+DEAL::8369 2
+DEAL::8370 2
+DEAL::8371 2
+DEAL::8372 2
+DEAL::8373 2
+DEAL::8374 2
+DEAL::8375 2
+DEAL::8376 2
+DEAL::8377 2
+DEAL::8378 2
+DEAL::8379 2
+DEAL::8380 2
+DEAL::8381 2
+DEAL::8382 2
+DEAL::8383 2
+DEAL::8384 2
+DEAL::8385 2
+DEAL::8386 2
+DEAL::8387 2
+DEAL::8388 2
+DEAL::8389 2
+DEAL::8390 2
+DEAL::8391 2
+DEAL::8392 2
+DEAL::8393 2
+DEAL::8394 2
+DEAL::8395 2
+DEAL::8396 2
+DEAL::8397 2
+DEAL::8398 2
+DEAL::8399 2
+DEAL::8400 2
+DEAL::8401 2
+DEAL::8402 2
+DEAL::8403 2
+DEAL::8404 2
+DEAL::8405 2
+DEAL::8406 2
+DEAL::8407 2
+DEAL::8408 2
+DEAL::8409 2
+DEAL::8410 2
+DEAL::8411 2
+DEAL::8412 2
+DEAL::8413 2
+DEAL::8414 2
+DEAL::8415 2
+DEAL::8416 2
+DEAL::8417 2
+DEAL::8418 2
+DEAL::8419 2
+DEAL::8420 2
+DEAL::8421 2
+DEAL::8422 2
+DEAL::8423 2
+DEAL::8424 2
+DEAL::8425 2
+DEAL::8426 2
+DEAL::8427 2
+DEAL::8428 2
+DEAL::8429 2
+DEAL::8430 2
+DEAL::8431 2
+DEAL::8432 2
+DEAL::8433 2
+DEAL::8434 2
+DEAL::8435 2
+DEAL::8436 2
+DEAL::8437 2
+DEAL::8438 2
+DEAL::8439 2
+DEAL::8440 2
+DEAL::8441 2
+DEAL::8442 2
+DEAL::8443 2
+DEAL::8444 2
+DEAL::8445 2
+DEAL::8446 2
+DEAL::8447 2
+DEAL::8448 2
+DEAL::8449 2
+DEAL::8450 2
+DEAL::8451 2
+DEAL::8452 2
+DEAL::8453 2
+DEAL::8454 2
+DEAL::8455 2
+DEAL::8456 2
+DEAL::8457 2
+DEAL::8458 2
+DEAL::8459 2
+DEAL::8460 2
+DEAL::8461 2
+DEAL::8462 2
+DEAL::8463 2
+DEAL::8464 2
+DEAL::8465 2
+DEAL::8466 2
+DEAL::8467 2
+DEAL::8468 2
+DEAL::8469 2
+DEAL::8470 2
+DEAL::8471 2
+DEAL::8472 3
+DEAL::8473 3
+DEAL::8474 3
+DEAL::8475 3
+DEAL::8476 3
+DEAL::8477 3
+DEAL::8478 3
+DEAL::8479 3
+DEAL::8480 3
+DEAL::8481 3
+DEAL::8482 3
+DEAL::8483 3
+DEAL::8484 3
+DEAL::8485 3
+DEAL::8486 3
+DEAL::8487 3
+DEAL::8488 3
+DEAL::8489 3
+DEAL::8490 3
+DEAL::8491 3
+DEAL::8492 3
+DEAL::8493 3
+DEAL::8494 3
+DEAL::8495 3
+DEAL::8496 3
+DEAL::8497 3
+DEAL::8498 3
+DEAL::8499 3
+DEAL::8500 3
+DEAL::8501 3
+DEAL::8502 3
+DEAL::8503 3
+DEAL::8504 3
+DEAL::8505 3
+DEAL::8506 3
+DEAL::8507 3
+DEAL::8508 3
+DEAL::8509 3
+DEAL::8510 3
+DEAL::8511 3
+DEAL::8512 3
+DEAL::8513 3
+DEAL::8514 3
+DEAL::8515 3
+DEAL::8516 3
+DEAL::8517 3
+DEAL::8518 3
+DEAL::8519 3
+DEAL::8520 3
+DEAL::8521 3
+DEAL::8522 3
+DEAL::8523 3
+DEAL::8524 3
+DEAL::8525 3
+DEAL::8526 3
+DEAL::8527 3
+DEAL::8528 3
+DEAL::8529 3
+DEAL::8530 3
+DEAL::8531 3
+DEAL::8532 3
+DEAL::8533 3
+DEAL::8534 3
+DEAL::8535 3
+DEAL::8536 3
+DEAL::8537 3
+DEAL::8538 3
+DEAL::8539 3
+DEAL::8540 3
+DEAL::8541 3
+DEAL::8542 3
+DEAL::8543 3
+DEAL::8544 3
+DEAL::8545 3
+DEAL::8546 3
+DEAL::8547 3
+DEAL::8548 3
+DEAL::8549 3
+DEAL::8550 3
+DEAL::8551 3
+DEAL::8552 3
+DEAL::8553 3
+DEAL::8554 3
+DEAL::8555 3
+DEAL::8556 3
+DEAL::8557 3
+DEAL::8558 3
+DEAL::8559 3
+DEAL::8560 3
+DEAL::8561 3
+DEAL::8562 3
+DEAL::8563 3
+DEAL::8564 3
+DEAL::8565 3
+DEAL::8566 3
+DEAL::8567 3
+DEAL::8568 3
+DEAL::8569 3
+DEAL::8570 3
+DEAL::8571 3
+DEAL::8572 3
+DEAL::8573 3
+DEAL::8574 3
+DEAL::8575 3
+DEAL::8576 3
+DEAL::8577 3
+DEAL::8578 3
+DEAL::8579 3
+DEAL::8580 3
+DEAL::8581 3
+DEAL::8582 3
+DEAL::8583 3
+DEAL::8584 3
+DEAL::8585 3
+DEAL::8586 3
+DEAL::8587 3
+DEAL::8588 3
diff --git a/tests/metis/metis_03.with_64bit_indices=on.output b/tests/metis/metis_03.with_64bit_indices=on.output
new file mode 100644 (file)
index 0000000..462d4f8
--- /dev/null
@@ -0,0 +1,12948 @@
+
+DEAL::Dimension = 1
+# vtk DataFile Version 3.0
+#This file was generated 
+ASCII
+DATASET UNSTRUCTURED_GRID
+
+POINTS 230 double
+0.750000 0 0
+0.781250 0 0
+0.437500 0 0
+0.468750 0 0
+0.531250 0 0
+0.562500 0 0
+0.406250 0 0
+0.437500 0 0
+0.968750 0 0
+1.00000 0 0
+0.156250 0 0
+0.187500 0 0
+0.250000 0 0
+0.281250 0 0
+0.281250 0 0
+0.312500 0 0
+0.562500 0 0
+0.593750 0 0
+0.593750 0 0
+0.625000 0 0
+0.781250 0 0
+0.796875 0 0
+0.468750 0 0
+0.484375 0 0
+0.218750 0 0
+0.234375 0 0
+0.234375 0 0
+0.250000 0 0
+0.187500 0 0
+0.203125 0 0
+0.375000 0 0
+0.390625 0 0
+0.359375 0 0
+0.375000 0 0
+0.0312500 0 0
+0.0468750 0 0
+0.500000 0 0
+0.515625 0 0
+0.515625 0 0
+0.531250 0 0
+0.328125 0 0
+0.343750 0 0
+0.125000 0 0
+0.140625 0 0
+0.906250 0 0
+0.921875 0 0
+0.921875 0 0
+0.937500 0 0
+0.718750 0 0
+0.734375 0 0
+0.734375 0 0
+0.750000 0 0
+0.937500 0 0
+0.953125 0 0
+0.953125 0 0
+0.968750 0 0
+0.875000 0 0
+0.890625 0 0
+0.890625 0 0
+0.906250 0 0
+0.859375 0 0
+0.867188 0 0
+0.867188 0 0
+0.875000 0 0
+0.625000 0 0
+0.632812 0 0
+0.492188 0 0
+0.500000 0 0
+0.796875 0 0
+0.804688 0 0
+0.804688 0 0
+0.812500 0 0
+0.703125 0 0
+0.710938 0 0
+0.640625 0 0
+0.648438 0 0
+0.687500 0 0
+0.695312 0 0
+0.695312 0 0
+0.703125 0 0
+0.664062 0 0
+0.671875 0 0
+0.203125 0 0
+0.210938 0 0
+0.343750 0 0
+0.351562 0 0
+0.351562 0 0
+0.359375 0 0
+0.0156250 0 0
+0.0234375 0 0
+0.0234375 0 0
+0.0312500 0 0
+0.828125 0 0
+0.835938 0 0
+0.835938 0 0
+0.843750 0 0
+0.671875 0 0
+0.679688 0 0
+0.679688 0 0
+0.687500 0 0
+0.390625 0 0
+0.398438 0 0
+0.398438 0 0
+0.406250 0 0
+0.0468750 0 0
+0.0546875 0 0
+0.0546875 0 0
+0.0625000 0 0
+0.312500 0 0
+0.320312 0 0
+0.320312 0 0
+0.328125 0 0
+0.140625 0 0
+0.148438 0 0
+0.148438 0 0
+0.156250 0 0
+0.00781250 0 0
+0.0117188 0 0
+0.0937500 0 0
+0.0976562 0 0
+0.00390625 0 0
+0.00781250 0 0
+0.0625000 0 0
+0.0664062 0 0
+0.855469 0 0
+0.859375 0 0
+0.488281 0 0
+0.492188 0 0
+0.121094 0 0
+0.125000 0 0
+0.0703125 0 0
+0.0742188 0 0
+0.632812 0 0
+0.636719 0 0
+0.636719 0 0
+0.640625 0 0
+0.0898438 0 0
+0.0937500 0 0
+0.812500 0 0
+0.816406 0 0
+0.710938 0 0
+0.714844 0 0
+0.714844 0 0
+0.718750 0 0
+0.101562 0 0
+0.105469 0 0
+0.105469 0 0
+0.109375 0 0
+0.843750 0 0
+0.847656 0 0
+0.847656 0 0
+0.851562 0 0
+0.0781250 0 0
+0.0820312 0 0
+0.0820312 0 0
+0.0859375 0 0
+0.820312 0 0
+0.824219 0 0
+0.824219 0 0
+0.828125 0 0
+0.648438 0 0
+0.652344 0 0
+0.652344 0 0
+0.656250 0 0
+0.656250 0 0
+0.660156 0 0
+0.660156 0 0
+0.664062 0 0
+0.210938 0 0
+0.214844 0 0
+0.214844 0 0
+0.218750 0 0
+0.0117188 0 0
+0.0136719 0 0
+0.0136719 0 0
+0.0156250 0 0
+0.00195312 0 0
+0.00390625 0 0
+0.0664062 0 0
+0.0683594 0 0
+0.484375 0 0
+0.486328 0 0
+0.486328 0 0
+0.488281 0 0
+0.109375 0 0
+0.111328 0 0
+0.111328 0 0
+0.113281 0 0
+0.0976562 0 0
+0.0996094 0 0
+0.0996094 0 0
+0.101562 0 0
+0.851562 0 0
+0.853516 0 0
+0.853516 0 0
+0.855469 0 0
+0.117188 0 0
+0.119141 0 0
+0.119141 0 0
+0.121094 0 0
+0.0742188 0 0
+0.0761719 0 0
+0.0761719 0 0
+0.0781250 0 0
+0.0859375 0 0
+0.0878906 0 0
+0.0878906 0 0
+0.0898438 0 0
+0.816406 0 0
+0.818359 0 0
+0.818359 0 0
+0.820312 0 0
+0.116211 0 0
+0.117188 0 0
+0.113281 0 0
+0.114258 0 0
+0.114258 0 0
+0.115234 0 0
+0.00000 0 0
+0.000976562 0 0
+0.000976562 0 0
+0.00195312 0 0
+0.0683594 0 0
+0.0693359 0 0
+0.0693359 0 0
+0.0703125 0 0
+0.115234 0 0
+0.115723 0 0
+0.115723 0 0
+0.116211 0 0
+
+CELLS 115 345
+2      0       1
+2      2       3
+2      4       5
+2      6       7
+2      8       9
+2      10      11
+2      12      13
+2      14      15
+2      16      17
+2      18      19
+2      20      21
+2      22      23
+2      24      25
+2      26      27
+2      28      29
+2      30      31
+2      32      33
+2      34      35
+2      36      37
+2      38      39
+2      40      41
+2      42      43
+2      44      45
+2      46      47
+2      48      49
+2      50      51
+2      52      53
+2      54      55
+2      56      57
+2      58      59
+2      60      61
+2      62      63
+2      64      65
+2      66      67
+2      68      69
+2      70      71
+2      72      73
+2      74      75
+2      76      77
+2      78      79
+2      80      81
+2      82      83
+2      84      85
+2      86      87
+2      88      89
+2      90      91
+2      92      93
+2      94      95
+2      96      97
+2      98      99
+2      100     101
+2      102     103
+2      104     105
+2      106     107
+2      108     109
+2      110     111
+2      112     113
+2      114     115
+2      116     117
+2      118     119
+2      120     121
+2      122     123
+2      124     125
+2      126     127
+2      128     129
+2      130     131
+2      132     133
+2      134     135
+2      136     137
+2      138     139
+2      140     141
+2      142     143
+2      144     145
+2      146     147
+2      148     149
+2      150     151
+2      152     153
+2      154     155
+2      156     157
+2      158     159
+2      160     161
+2      162     163
+2      164     165
+2      166     167
+2      168     169
+2      170     171
+2      172     173
+2      174     175
+2      176     177
+2      178     179
+2      180     181
+2      182     183
+2      184     185
+2      186     187
+2      188     189
+2      190     191
+2      192     193
+2      194     195
+2      196     197
+2      198     199
+2      200     201
+2      202     203
+2      204     205
+2      206     207
+2      208     209
+2      210     211
+2      212     213
+2      214     215
+2      216     217
+2      218     219
+2      220     221
+2      222     223
+2      224     225
+2      226     227
+2      228     229
+
+CELL_TYPES 115
+ 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
+POINT_DATA 230
+SCALARS partitions double 1
+LOOKUP_TABLE default
+0.00000 0.00000 4.00000 4.00000 0.00000 0.00000 4.00000 4.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 2.00000 2.00000 4.00000 4.00000 2.00000 2.00000 1.00000 1.00000 4.00000 4.00000 3.00000 3.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 
+DEAL::Dimension = 2
+# vtk DataFile Version 3.0
+#This file was generated 
+ASCII
+DATASET UNSTRUCTURED_GRID
+
+POINTS 4744 double
+0.875000 0.875000 0
+1.00000 0.875000 0
+0.875000 1.00000 0
+1.00000 1.00000 0
+0.687500 0.375000 0
+0.750000 0.375000 0
+0.687500 0.437500 0
+0.750000 0.437500 0
+0.750000 0.875000 0
+0.812500 0.875000 0
+0.750000 0.937500 0
+0.812500 0.937500 0
+0.812500 0.875000 0
+0.875000 0.875000 0
+0.812500 0.937500 0
+0.875000 0.937500 0
+0.812500 0.937500 0
+0.875000 0.937500 0
+0.812500 1.00000 0
+0.875000 1.00000 0
+0.187500 0.0625000 0
+0.250000 0.0625000 0
+0.187500 0.125000 0
+0.250000 0.125000 0
+0.125000 0.125000 0
+0.187500 0.125000 0
+0.125000 0.187500 0
+0.187500 0.187500 0
+0.500000 0.437500 0
+0.562500 0.437500 0
+0.500000 0.500000 0
+0.562500 0.500000 0
+0.687500 0.125000 0
+0.750000 0.125000 0
+0.687500 0.187500 0
+0.750000 0.187500 0
+0.0625000 0.562500 0
+0.125000 0.562500 0
+0.0625000 0.625000 0
+0.125000 0.625000 0
+0.125000 0.625000 0
+0.187500 0.625000 0
+0.125000 0.687500 0
+0.187500 0.687500 0
+0.187500 0.625000 0
+0.250000 0.625000 0
+0.187500 0.687500 0
+0.250000 0.687500 0
+0.500000 0.937500 0
+0.562500 0.937500 0
+0.500000 1.00000 0
+0.562500 1.00000 0
+0.562500 0.937500 0
+0.625000 0.937500 0
+0.562500 1.00000 0
+0.625000 1.00000 0
+0.125000 0.250000 0
+0.187500 0.250000 0
+0.125000 0.312500 0
+0.187500 0.312500 0
+0.125000 0.312500 0
+0.187500 0.312500 0
+0.125000 0.375000 0
+0.187500 0.375000 0
+0.437500 0.375000 0
+0.500000 0.375000 0
+0.437500 0.437500 0
+0.500000 0.437500 0
+0.375000 0.562500 0
+0.437500 0.562500 0
+0.375000 0.625000 0
+0.437500 0.625000 0
+0.187500 0.875000 0
+0.250000 0.875000 0
+0.187500 0.937500 0
+0.250000 0.937500 0
+0.125000 0.937500 0
+0.187500 0.937500 0
+0.125000 1.00000 0
+0.187500 1.00000 0
+0.187500 0.937500 0
+0.250000 0.937500 0
+0.187500 1.00000 0
+0.250000 1.00000 0
+0.0625000 0.187500 0
+0.125000 0.187500 0
+0.0625000 0.250000 0
+0.125000 0.250000 0
+0.562500 0.312500 0
+0.625000 0.312500 0
+0.562500 0.375000 0
+0.625000 0.375000 0
+0.375000 0.00000 0
+0.437500 0.00000 0
+0.375000 0.0625000 0
+0.437500 0.0625000 0
+0.437500 0.0625000 0
+0.500000 0.0625000 0
+0.437500 0.125000 0
+0.500000 0.125000 0
+0.500000 0.125000 0
+0.562500 0.125000 0
+0.500000 0.187500 0
+0.562500 0.187500 0
+0.562500 0.125000 0
+0.625000 0.125000 0
+0.562500 0.187500 0
+0.625000 0.187500 0
+0.500000 0.187500 0
+0.562500 0.187500 0
+0.500000 0.250000 0
+0.562500 0.250000 0
+0.562500 0.187500 0
+0.625000 0.187500 0
+0.562500 0.250000 0
+0.625000 0.250000 0
+0.750000 0.375000 0
+0.812500 0.375000 0
+0.750000 0.437500 0
+0.812500 0.437500 0
+0.812500 0.437500 0
+0.875000 0.437500 0
+0.812500 0.500000 0
+0.875000 0.500000 0
+0.187500 0.562500 0
+0.250000 0.562500 0
+0.187500 0.625000 0
+0.250000 0.625000 0
+0.937500 0.562500 0
+1.00000 0.562500 0
+0.937500 0.625000 0
+1.00000 0.625000 0
+0.812500 0.687500 0
+0.875000 0.687500 0
+0.812500 0.750000 0
+0.875000 0.750000 0
+0.625000 0.750000 0
+0.687500 0.750000 0
+0.625000 0.812500 0
+0.687500 0.812500 0
+0.687500 0.750000 0
+0.750000 0.750000 0
+0.687500 0.812500 0
+0.750000 0.812500 0
+0.687500 0.812500 0
+0.750000 0.812500 0
+0.687500 0.875000 0
+0.750000 0.875000 0
+0.875000 0.812500 0
+0.937500 0.812500 0
+0.875000 0.875000 0
+0.937500 0.875000 0
+0.937500 0.812500 0
+1.00000 0.812500 0
+0.937500 0.875000 0
+1.00000 0.875000 0
+0.00000 0.375000 0
+0.0625000 0.375000 0
+0.00000 0.437500 0
+0.0625000 0.437500 0
+0.0625000 0.375000 0
+0.125000 0.375000 0
+0.0625000 0.437500 0
+0.125000 0.437500 0
+0.312500 0.437500 0
+0.375000 0.437500 0
+0.312500 0.500000 0
+0.375000 0.500000 0
+0.750000 0.125000 0
+0.812500 0.125000 0
+0.750000 0.187500 0
+0.812500 0.187500 0
+0.812500 0.187500 0
+0.875000 0.187500 0
+0.812500 0.250000 0
+0.875000 0.250000 0
+0.312500 0.625000 0
+0.375000 0.625000 0
+0.312500 0.687500 0
+0.375000 0.687500 0
+0.0625000 0.812500 0
+0.125000 0.812500 0
+0.0625000 0.875000 0
+0.125000 0.875000 0
+0.437500 0.875000 0
+0.500000 0.875000 0
+0.437500 0.937500 0
+0.500000 0.937500 0
+0.437500 0.937500 0
+0.500000 0.937500 0
+0.437500 1.00000 0
+0.500000 1.00000 0
+0.375000 0.125000 0
+0.437500 0.125000 0
+0.375000 0.187500 0
+0.437500 0.187500 0
+0.437500 0.125000 0
+0.500000 0.125000 0
+0.437500 0.187500 0
+0.500000 0.187500 0
+0.437500 0.187500 0
+0.500000 0.187500 0
+0.437500 0.250000 0
+0.500000 0.250000 0
+0.937500 0.375000 0
+1.00000 0.375000 0
+0.937500 0.437500 0
+1.00000 0.437500 0
+0.875000 0.437500 0
+0.937500 0.437500 0
+0.875000 0.500000 0
+0.937500 0.500000 0
+0.937500 0.437500 0
+1.00000 0.437500 0
+0.937500 0.500000 0
+1.00000 0.500000 0
+0.812500 0.500000 0
+0.875000 0.500000 0
+0.812500 0.562500 0
+0.875000 0.562500 0
+0.812500 0.562500 0
+0.875000 0.562500 0
+0.812500 0.625000 0
+0.875000 0.625000 0
+0.875000 0.625000 0
+0.937500 0.625000 0
+0.875000 0.687500 0
+0.937500 0.687500 0
+0.937500 0.625000 0
+1.00000 0.625000 0
+0.937500 0.687500 0
+1.00000 0.687500 0
+0.937500 0.687500 0
+1.00000 0.687500 0
+0.937500 0.750000 0
+1.00000 0.750000 0
+0.687500 0.875000 0
+0.750000 0.875000 0
+0.687500 0.937500 0
+0.750000 0.937500 0
+0.625000 0.937500 0
+0.687500 0.937500 0
+0.625000 1.00000 0
+0.687500 1.00000 0
+0.687500 0.937500 0
+0.750000 0.937500 0
+0.687500 1.00000 0
+0.750000 1.00000 0
+0.750000 0.750000 0
+0.812500 0.750000 0
+0.750000 0.812500 0
+0.812500 0.812500 0
+0.812500 0.750000 0
+0.875000 0.750000 0
+0.812500 0.812500 0
+0.875000 0.812500 0
+0.812500 0.812500 0
+0.875000 0.812500 0
+0.812500 0.875000 0
+0.875000 0.875000 0
+0.125000 0.375000 0
+0.187500 0.375000 0
+0.125000 0.437500 0
+0.187500 0.437500 0
+0.187500 0.437500 0
+0.250000 0.437500 0
+0.187500 0.500000 0
+0.250000 0.500000 0
+0.937500 0.00000 0
+1.00000 0.00000 0
+0.937500 0.0625000 0
+1.00000 0.0625000 0
+0.875000 0.0625000 0
+0.937500 0.0625000 0
+0.875000 0.125000 0
+0.937500 0.125000 0
+0.937500 0.0625000 0
+1.00000 0.0625000 0
+0.937500 0.125000 0
+1.00000 0.125000 0
+0.875000 0.125000 0
+0.937500 0.125000 0
+0.875000 0.187500 0
+0.937500 0.187500 0
+0.937500 0.125000 0
+1.00000 0.125000 0
+0.937500 0.187500 0
+1.00000 0.187500 0
+0.937500 0.187500 0
+1.00000 0.187500 0
+0.937500 0.250000 0
+1.00000 0.250000 0
+0.312500 0.750000 0
+0.375000 0.750000 0
+0.312500 0.812500 0
+0.375000 0.812500 0
+0.250000 0.812500 0
+0.312500 0.812500 0
+0.250000 0.875000 0
+0.312500 0.875000 0
+0.312500 0.812500 0
+0.375000 0.812500 0
+0.312500 0.875000 0
+0.375000 0.875000 0
+0.500000 0.00000 0
+0.562500 0.00000 0
+0.500000 0.0625000 0
+0.562500 0.0625000 0
+0.562500 0.00000 0
+0.625000 0.00000 0
+0.562500 0.0625000 0
+0.625000 0.0625000 0
+0.500000 0.0625000 0
+0.562500 0.0625000 0
+0.500000 0.125000 0
+0.562500 0.125000 0
+0.562500 0.0625000 0
+0.625000 0.0625000 0
+0.562500 0.125000 0
+0.625000 0.125000 0
+0.625000 0.00000 0
+0.687500 0.00000 0
+0.625000 0.0625000 0
+0.687500 0.0625000 0
+0.687500 0.00000 0
+0.750000 0.00000 0
+0.687500 0.0625000 0
+0.750000 0.0625000 0
+0.625000 0.0625000 0
+0.687500 0.0625000 0
+0.625000 0.125000 0
+0.687500 0.125000 0
+0.687500 0.0625000 0
+0.750000 0.0625000 0
+0.687500 0.125000 0
+0.750000 0.125000 0
+0.00000 0.250000 0
+0.0625000 0.250000 0
+0.00000 0.312500 0
+0.0625000 0.312500 0
+0.0625000 0.250000 0
+0.125000 0.250000 0
+0.0625000 0.312500 0
+0.125000 0.312500 0
+0.00000 0.312500 0
+0.0625000 0.312500 0
+0.00000 0.375000 0
+0.0625000 0.375000 0
+0.0625000 0.312500 0
+0.125000 0.312500 0
+0.0625000 0.375000 0
+0.125000 0.375000 0
+0.750000 0.00000 0
+0.812500 0.00000 0
+0.750000 0.0625000 0
+0.812500 0.0625000 0
+0.812500 0.00000 0
+0.875000 0.00000 0
+0.812500 0.0625000 0
+0.875000 0.0625000 0
+0.750000 0.0625000 0
+0.812500 0.0625000 0
+0.750000 0.125000 0
+0.812500 0.125000 0
+0.812500 0.0625000 0
+0.875000 0.0625000 0
+0.812500 0.125000 0
+0.875000 0.125000 0
+0.250000 0.500000 0
+0.312500 0.500000 0
+0.250000 0.562500 0
+0.312500 0.562500 0
+0.312500 0.500000 0
+0.375000 0.500000 0
+0.312500 0.562500 0
+0.375000 0.562500 0
+0.250000 0.562500 0
+0.312500 0.562500 0
+0.250000 0.625000 0
+0.312500 0.625000 0
+0.312500 0.562500 0
+0.375000 0.562500 0
+0.312500 0.625000 0
+0.375000 0.625000 0
+0.00000 0.875000 0
+0.0625000 0.875000 0
+0.00000 0.937500 0
+0.0625000 0.937500 0
+0.0625000 0.875000 0
+0.125000 0.875000 0
+0.0625000 0.937500 0
+0.125000 0.937500 0
+0.00000 0.937500 0
+0.0625000 0.937500 0
+0.00000 1.00000 0
+0.0625000 1.00000 0
+0.0625000 0.937500 0
+0.125000 0.937500 0
+0.0625000 1.00000 0
+0.125000 1.00000 0
+0.250000 0.875000 0
+0.312500 0.875000 0
+0.250000 0.937500 0
+0.312500 0.937500 0
+0.312500 0.875000 0
+0.375000 0.875000 0
+0.312500 0.937500 0
+0.375000 0.937500 0
+0.250000 0.937500 0
+0.312500 0.937500 0
+0.250000 1.00000 0
+0.312500 1.00000 0
+0.312500 0.937500 0
+0.375000 0.937500 0
+0.312500 1.00000 0
+0.375000 1.00000 0
+0.656250 0.656250 0
+0.687500 0.656250 0
+0.656250 0.687500 0
+0.687500 0.687500 0
+0.718750 0.281250 0
+0.750000 0.281250 0
+0.718750 0.312500 0
+0.750000 0.312500 0
+0.0312500 0.00000 0
+0.0625000 0.00000 0
+0.0312500 0.0312500 0
+0.0625000 0.0312500 0
+0.656250 0.437500 0
+0.687500 0.437500 0
+0.656250 0.468750 0
+0.687500 0.468750 0
+0.625000 0.468750 0
+0.656250 0.468750 0
+0.625000 0.500000 0
+0.656250 0.500000 0
+0.656250 0.562500 0
+0.687500 0.562500 0
+0.656250 0.593750 0
+0.687500 0.593750 0
+0.500000 0.625000 0
+0.531250 0.625000 0
+0.500000 0.656250 0
+0.531250 0.656250 0
+0.531250 0.656250 0
+0.562500 0.656250 0
+0.531250 0.687500 0
+0.562500 0.687500 0
+0.562500 0.656250 0
+0.593750 0.656250 0
+0.562500 0.687500 0
+0.593750 0.687500 0
+0.281250 0.218750 0
+0.312500 0.218750 0
+0.281250 0.250000 0
+0.312500 0.250000 0
+0.0312500 0.656250 0
+0.0625000 0.656250 0
+0.0312500 0.687500 0
+0.0625000 0.687500 0
+0.500000 0.812500 0
+0.531250 0.812500 0
+0.500000 0.843750 0
+0.531250 0.843750 0
+0.687500 0.687500 0
+0.718750 0.687500 0
+0.687500 0.718750 0
+0.718750 0.718750 0
+0.687500 0.718750 0
+0.718750 0.718750 0
+0.687500 0.750000 0
+0.718750 0.750000 0
+0.718750 0.718750 0
+0.750000 0.718750 0
+0.718750 0.750000 0
+0.750000 0.750000 0
+0.687500 0.437500 0
+0.718750 0.437500 0
+0.687500 0.468750 0
+0.718750 0.468750 0
+0.718750 0.437500 0
+0.750000 0.437500 0
+0.718750 0.468750 0
+0.750000 0.468750 0
+0.687500 0.468750 0
+0.718750 0.468750 0
+0.687500 0.500000 0
+0.718750 0.500000 0
+0.718750 0.468750 0
+0.750000 0.468750 0
+0.718750 0.500000 0
+0.750000 0.500000 0
+0.500000 0.687500 0
+0.531250 0.687500 0
+0.500000 0.718750 0
+0.531250 0.718750 0
+0.250000 0.125000 0
+0.281250 0.125000 0
+0.250000 0.156250 0
+0.281250 0.156250 0
+0.281250 0.156250 0
+0.312500 0.156250 0
+0.281250 0.187500 0
+0.312500 0.187500 0
+0.812500 0.343750 0
+0.843750 0.343750 0
+0.812500 0.375000 0
+0.843750 0.375000 0
+0.0312500 0.687500 0
+0.0625000 0.687500 0
+0.0312500 0.718750 0
+0.0625000 0.718750 0
+0.00000 0.718750 0
+0.0312500 0.718750 0
+0.00000 0.750000 0
+0.0312500 0.750000 0
+0.562500 0.812500 0
+0.593750 0.812500 0
+0.562500 0.843750 0
+0.593750 0.843750 0
+0.593750 0.812500 0
+0.625000 0.812500 0
+0.593750 0.843750 0
+0.625000 0.843750 0
+0.562500 0.843750 0
+0.593750 0.843750 0
+0.562500 0.875000 0
+0.593750 0.875000 0
+0.187500 0.0312500 0
+0.218750 0.0312500 0
+0.187500 0.0625000 0
+0.218750 0.0625000 0
+0.218750 0.0312500 0
+0.250000 0.0312500 0
+0.218750 0.0625000 0
+0.250000 0.0625000 0
+0.187500 0.218750 0
+0.218750 0.218750 0
+0.187500 0.250000 0
+0.218750 0.250000 0
+0.593750 0.500000 0
+0.625000 0.500000 0
+0.593750 0.531250 0
+0.625000 0.531250 0
+0.562500 0.531250 0
+0.593750 0.531250 0
+0.562500 0.562500 0
+0.593750 0.562500 0
+0.343750 0.0625000 0
+0.375000 0.0625000 0
+0.343750 0.0937500 0
+0.375000 0.0937500 0
+0.312500 0.0937500 0
+0.343750 0.0937500 0
+0.312500 0.125000 0
+0.343750 0.125000 0
+0.687500 0.187500 0
+0.718750 0.187500 0
+0.687500 0.218750 0
+0.718750 0.218750 0
+0.718750 0.187500 0
+0.750000 0.187500 0
+0.718750 0.218750 0
+0.750000 0.218750 0
+0.0625000 0.531250 0
+0.0937500 0.531250 0
+0.0625000 0.562500 0
+0.0937500 0.562500 0
+0.0937500 0.531250 0
+0.125000 0.531250 0
+0.0937500 0.562500 0
+0.125000 0.562500 0
+0.187500 0.687500 0
+0.218750 0.687500 0
+0.187500 0.718750 0
+0.218750 0.718750 0
+0.218750 0.687500 0
+0.250000 0.687500 0
+0.218750 0.718750 0
+0.250000 0.718750 0
+0.187500 0.250000 0
+0.218750 0.250000 0
+0.187500 0.281250 0
+0.218750 0.281250 0
+0.218750 0.250000 0
+0.250000 0.250000 0
+0.218750 0.281250 0
+0.250000 0.281250 0
+0.187500 0.281250 0
+0.218750 0.281250 0
+0.187500 0.312500 0
+0.218750 0.312500 0
+0.218750 0.281250 0
+0.250000 0.281250 0
+0.218750 0.312500 0
+0.250000 0.312500 0
+0.312500 0.312500 0
+0.343750 0.312500 0
+0.312500 0.343750 0
+0.343750 0.343750 0
+0.343750 0.343750 0
+0.375000 0.343750 0
+0.343750 0.375000 0
+0.375000 0.375000 0
+0.437500 0.500000 0
+0.468750 0.500000 0
+0.437500 0.531250 0
+0.468750 0.531250 0
+0.437500 0.625000 0
+0.468750 0.625000 0
+0.437500 0.656250 0
+0.468750 0.656250 0
+0.437500 0.656250 0
+0.468750 0.656250 0
+0.437500 0.687500 0
+0.468750 0.687500 0
+0.468750 0.656250 0
+0.500000 0.656250 0
+0.468750 0.687500 0
+0.500000 0.687500 0
+0.437500 0.718750 0
+0.468750 0.718750 0
+0.437500 0.750000 0
+0.468750 0.750000 0
+0.468750 0.750000 0
+0.500000 0.750000 0
+0.468750 0.781250 0
+0.500000 0.781250 0
+0.437500 0.781250 0
+0.468750 0.781250 0
+0.437500 0.812500 0
+0.468750 0.812500 0
+0.625000 0.312500 0
+0.656250 0.312500 0
+0.625000 0.343750 0
+0.656250 0.343750 0
+0.656250 0.312500 0
+0.687500 0.312500 0
+0.656250 0.343750 0
+0.687500 0.343750 0
+0.625000 0.343750 0
+0.656250 0.343750 0
+0.625000 0.375000 0
+0.656250 0.375000 0
+0.687500 0.312500 0
+0.718750 0.312500 0
+0.687500 0.343750 0
+0.718750 0.343750 0
+0.718750 0.312500 0
+0.750000 0.312500 0
+0.718750 0.343750 0
+0.750000 0.343750 0
+0.687500 0.343750 0
+0.718750 0.343750 0
+0.687500 0.375000 0
+0.718750 0.375000 0
+0.718750 0.343750 0
+0.750000 0.343750 0
+0.718750 0.375000 0
+0.750000 0.375000 0
+0.687500 0.625000 0
+0.718750 0.625000 0
+0.687500 0.656250 0
+0.718750 0.656250 0
+0.687500 0.656250 0
+0.718750 0.656250 0
+0.687500 0.687500 0
+0.718750 0.687500 0
+0.718750 0.656250 0
+0.750000 0.656250 0
+0.718750 0.687500 0
+0.750000 0.687500 0
+0.0625000 0.0625000 0
+0.0937500 0.0625000 0
+0.0625000 0.0937500 0
+0.0937500 0.0937500 0
+0.0937500 0.0625000 0
+0.125000 0.0625000 0
+0.0937500 0.0937500 0
+0.125000 0.0937500 0
+0.0625000 0.0937500 0
+0.0937500 0.0937500 0
+0.0625000 0.125000 0
+0.0937500 0.125000 0
+0.625000 0.375000 0
+0.656250 0.375000 0
+0.625000 0.406250 0
+0.656250 0.406250 0
+0.656250 0.375000 0
+0.687500 0.375000 0
+0.656250 0.406250 0
+0.687500 0.406250 0
+0.625000 0.406250 0
+0.656250 0.406250 0
+0.625000 0.437500 0
+0.656250 0.437500 0
+0.656250 0.406250 0
+0.687500 0.406250 0
+0.656250 0.437500 0
+0.687500 0.437500 0
+0.687500 0.500000 0
+0.718750 0.500000 0
+0.687500 0.531250 0
+0.718750 0.531250 0
+0.687500 0.531250 0
+0.718750 0.531250 0
+0.687500 0.562500 0
+0.718750 0.562500 0
+0.718750 0.531250 0
+0.750000 0.531250 0
+0.718750 0.562500 0
+0.750000 0.562500 0
+0.562500 0.687500 0
+0.593750 0.687500 0
+0.562500 0.718750 0
+0.593750 0.718750 0
+0.593750 0.687500 0
+0.625000 0.687500 0
+0.593750 0.718750 0
+0.625000 0.718750 0
+0.562500 0.718750 0
+0.593750 0.718750 0
+0.562500 0.750000 0
+0.593750 0.750000 0
+0.312500 0.125000 0
+0.343750 0.125000 0
+0.312500 0.156250 0
+0.343750 0.156250 0
+0.343750 0.125000 0
+0.375000 0.125000 0
+0.343750 0.156250 0
+0.375000 0.156250 0
+0.312500 0.156250 0
+0.343750 0.156250 0
+0.312500 0.187500 0
+0.343750 0.187500 0
+0.343750 0.156250 0
+0.375000 0.156250 0
+0.343750 0.187500 0
+0.375000 0.187500 0
+0.312500 0.187500 0
+0.343750 0.187500 0
+0.312500 0.218750 0
+0.343750 0.218750 0
+0.312500 0.218750 0
+0.343750 0.218750 0
+0.312500 0.250000 0
+0.343750 0.250000 0
+0.343750 0.218750 0
+0.375000 0.218750 0
+0.343750 0.250000 0
+0.375000 0.250000 0
+0.812500 0.250000 0
+0.843750 0.250000 0
+0.812500 0.281250 0
+0.843750 0.281250 0
+0.843750 0.250000 0
+0.875000 0.250000 0
+0.843750 0.281250 0
+0.875000 0.281250 0
+0.812500 0.281250 0
+0.843750 0.281250 0
+0.812500 0.312500 0
+0.843750 0.312500 0
+0.0625000 0.687500 0
+0.0937500 0.687500 0
+0.0625000 0.718750 0
+0.0937500 0.718750 0
+0.0937500 0.687500 0
+0.125000 0.687500 0
+0.0937500 0.718750 0
+0.125000 0.718750 0
+0.0625000 0.718750 0
+0.0937500 0.718750 0
+0.0625000 0.750000 0
+0.0937500 0.750000 0
+0.0937500 0.718750 0
+0.125000 0.718750 0
+0.0937500 0.750000 0
+0.125000 0.750000 0
+0.500000 0.750000 0
+0.531250 0.750000 0
+0.500000 0.781250 0
+0.531250 0.781250 0
+0.500000 0.781250 0
+0.531250 0.781250 0
+0.500000 0.812500 0
+0.531250 0.812500 0
+0.531250 0.781250 0
+0.562500 0.781250 0
+0.531250 0.812500 0
+0.562500 0.812500 0
+0.125000 0.00000 0
+0.156250 0.00000 0
+0.125000 0.0312500 0
+0.156250 0.0312500 0
+0.156250 0.00000 0
+0.187500 0.00000 0
+0.156250 0.0312500 0
+0.187500 0.0312500 0
+0.125000 0.0312500 0
+0.156250 0.0312500 0
+0.125000 0.0625000 0
+0.156250 0.0625000 0
+0.187500 0.125000 0
+0.218750 0.125000 0
+0.187500 0.156250 0
+0.218750 0.156250 0
+0.218750 0.125000 0
+0.250000 0.125000 0
+0.218750 0.156250 0
+0.250000 0.156250 0
+0.187500 0.156250 0
+0.218750 0.156250 0
+0.187500 0.187500 0
+0.218750 0.187500 0
+0.218750 0.156250 0
+0.250000 0.156250 0
+0.218750 0.187500 0
+0.250000 0.187500 0
+0.500000 0.375000 0
+0.531250 0.375000 0
+0.500000 0.406250 0
+0.531250 0.406250 0
+0.500000 0.406250 0
+0.531250 0.406250 0
+0.500000 0.437500 0
+0.531250 0.437500 0
+0.531250 0.406250 0
+0.562500 0.406250 0
+0.531250 0.437500 0
+0.562500 0.437500 0
+0.500000 0.500000 0
+0.531250 0.500000 0
+0.500000 0.531250 0
+0.531250 0.531250 0
+0.531250 0.500000 0
+0.562500 0.500000 0
+0.531250 0.531250 0
+0.562500 0.531250 0
+0.500000 0.531250 0
+0.531250 0.531250 0
+0.500000 0.562500 0
+0.531250 0.562500 0
+0.250000 0.00000 0
+0.281250 0.00000 0
+0.250000 0.0312500 0
+0.281250 0.0312500 0
+0.281250 0.00000 0
+0.312500 0.00000 0
+0.281250 0.0312500 0
+0.312500 0.0312500 0
+0.250000 0.0312500 0
+0.281250 0.0312500 0
+0.250000 0.0625000 0
+0.281250 0.0625000 0
+0.281250 0.0312500 0
+0.312500 0.0312500 0
+0.281250 0.0625000 0
+0.312500 0.0625000 0
+0.625000 0.187500 0
+0.656250 0.187500 0
+0.625000 0.218750 0
+0.656250 0.218750 0
+0.625000 0.218750 0
+0.656250 0.218750 0
+0.625000 0.250000 0
+0.656250 0.250000 0
+0.656250 0.218750 0
+0.687500 0.218750 0
+0.656250 0.250000 0
+0.687500 0.250000 0
+0.00000 0.500000 0
+0.0312500 0.500000 0
+0.00000 0.531250 0
+0.0312500 0.531250 0
+0.0312500 0.500000 0
+0.0625000 0.500000 0
+0.0312500 0.531250 0
+0.0625000 0.531250 0
+0.00000 0.531250 0
+0.0312500 0.531250 0
+0.00000 0.562500 0
+0.0312500 0.562500 0
+0.00000 0.562500 0
+0.0312500 0.562500 0
+0.00000 0.593750 0
+0.0312500 0.593750 0
+0.0312500 0.562500 0
+0.0625000 0.562500 0
+0.0312500 0.593750 0
+0.0625000 0.593750 0
+0.00000 0.593750 0
+0.0312500 0.593750 0
+0.00000 0.625000 0
+0.0312500 0.625000 0
+0.0312500 0.593750 0
+0.0625000 0.593750 0
+0.0312500 0.625000 0
+0.0625000 0.625000 0
+0.500000 0.875000 0
+0.531250 0.875000 0
+0.500000 0.906250 0
+0.531250 0.906250 0
+0.500000 0.906250 0
+0.531250 0.906250 0
+0.500000 0.937500 0
+0.531250 0.937500 0
+0.531250 0.906250 0
+0.562500 0.906250 0
+0.531250 0.937500 0
+0.562500 0.937500 0
+0.187500 0.312500 0
+0.218750 0.312500 0
+0.187500 0.343750 0
+0.218750 0.343750 0
+0.218750 0.312500 0
+0.250000 0.312500 0
+0.218750 0.343750 0
+0.250000 0.343750 0
+0.187500 0.343750 0
+0.218750 0.343750 0
+0.187500 0.375000 0
+0.218750 0.375000 0
+0.281250 0.250000 0
+0.312500 0.250000 0
+0.281250 0.281250 0
+0.312500 0.281250 0
+0.250000 0.281250 0
+0.281250 0.281250 0
+0.250000 0.312500 0
+0.281250 0.312500 0
+0.281250 0.281250 0
+0.312500 0.281250 0
+0.281250 0.312500 0
+0.312500 0.312500 0
+0.312500 0.250000 0
+0.343750 0.250000 0
+0.312500 0.281250 0
+0.343750 0.281250 0
+0.312500 0.281250 0
+0.343750 0.281250 0
+0.312500 0.312500 0
+0.343750 0.312500 0
+0.343750 0.281250 0
+0.375000 0.281250 0
+0.343750 0.312500 0
+0.375000 0.312500 0
+0.375000 0.437500 0
+0.406250 0.437500 0
+0.375000 0.468750 0
+0.406250 0.468750 0
+0.406250 0.437500 0
+0.437500 0.437500 0
+0.406250 0.468750 0
+0.437500 0.468750 0
+0.375000 0.468750 0
+0.406250 0.468750 0
+0.375000 0.500000 0
+0.406250 0.500000 0
+0.437500 0.562500 0
+0.468750 0.562500 0
+0.437500 0.593750 0
+0.468750 0.593750 0
+0.468750 0.562500 0
+0.500000 0.562500 0
+0.468750 0.593750 0
+0.500000 0.593750 0
+0.437500 0.593750 0
+0.468750 0.593750 0
+0.437500 0.625000 0
+0.468750 0.625000 0
+0.468750 0.593750 0
+0.500000 0.593750 0
+0.468750 0.625000 0
+0.500000 0.625000 0
+0.375000 0.687500 0
+0.406250 0.687500 0
+0.375000 0.718750 0
+0.406250 0.718750 0
+0.375000 0.718750 0
+0.406250 0.718750 0
+0.375000 0.750000 0
+0.406250 0.750000 0
+0.406250 0.718750 0
+0.437500 0.718750 0
+0.406250 0.750000 0
+0.437500 0.750000 0
+0.375000 0.812500 0
+0.406250 0.812500 0
+0.375000 0.843750 0
+0.406250 0.843750 0
+0.406250 0.812500 0
+0.437500 0.812500 0
+0.406250 0.843750 0
+0.437500 0.843750 0
+0.375000 0.843750 0
+0.406250 0.843750 0
+0.375000 0.875000 0
+0.406250 0.875000 0
+0.437500 0.812500 0
+0.468750 0.812500 0
+0.437500 0.843750 0
+0.468750 0.843750 0
+0.468750 0.812500 0
+0.500000 0.812500 0
+0.468750 0.843750 0
+0.500000 0.843750 0
+0.437500 0.843750 0
+0.468750 0.843750 0
+0.437500 0.875000 0
+0.468750 0.875000 0
+0.468750 0.843750 0
+0.500000 0.843750 0
+0.468750 0.875000 0
+0.500000 0.875000 0
+0.00000 0.125000 0
+0.0312500 0.125000 0
+0.00000 0.156250 0
+0.0312500 0.156250 0
+0.00000 0.156250 0
+0.0312500 0.156250 0
+0.00000 0.187500 0
+0.0312500 0.187500 0
+0.0312500 0.156250 0
+0.0625000 0.156250 0
+0.0312500 0.187500 0
+0.0625000 0.187500 0
+0.500000 0.250000 0
+0.531250 0.250000 0
+0.500000 0.281250 0
+0.531250 0.281250 0
+0.531250 0.250000 0
+0.562500 0.250000 0
+0.531250 0.281250 0
+0.562500 0.281250 0
+0.500000 0.281250 0
+0.531250 0.281250 0
+0.500000 0.312500 0
+0.531250 0.312500 0
+0.375000 0.0625000 0
+0.406250 0.0625000 0
+0.375000 0.0937500 0
+0.406250 0.0937500 0
+0.406250 0.0625000 0
+0.437500 0.0625000 0
+0.406250 0.0937500 0
+0.437500 0.0937500 0
+0.375000 0.0937500 0
+0.406250 0.0937500 0
+0.375000 0.125000 0
+0.406250 0.125000 0
+0.406250 0.0937500 0
+0.437500 0.0937500 0
+0.406250 0.125000 0
+0.437500 0.125000 0
+0.875000 0.250000 0
+0.906250 0.250000 0
+0.875000 0.281250 0
+0.906250 0.281250 0
+0.875000 0.281250 0
+0.906250 0.281250 0
+0.875000 0.312500 0
+0.906250 0.312500 0
+0.906250 0.281250 0
+0.937500 0.281250 0
+0.906250 0.312500 0
+0.937500 0.312500 0
+0.875000 0.312500 0
+0.906250 0.312500 0
+0.875000 0.343750 0
+0.906250 0.343750 0
+0.906250 0.312500 0
+0.937500 0.312500 0
+0.906250 0.343750 0
+0.937500 0.343750 0
+0.875000 0.343750 0
+0.906250 0.343750 0
+0.875000 0.375000 0
+0.906250 0.375000 0
+0.750000 0.437500 0
+0.781250 0.437500 0
+0.750000 0.468750 0
+0.781250 0.468750 0
+0.781250 0.437500 0
+0.812500 0.437500 0
+0.781250 0.468750 0
+0.812500 0.468750 0
+0.750000 0.468750 0
+0.781250 0.468750 0
+0.750000 0.500000 0
+0.781250 0.500000 0
+0.781250 0.468750 0
+0.812500 0.468750 0
+0.781250 0.500000 0
+0.812500 0.500000 0
+0.125000 0.500000 0
+0.156250 0.500000 0
+0.125000 0.531250 0
+0.156250 0.531250 0
+0.125000 0.531250 0
+0.156250 0.531250 0
+0.125000 0.562500 0
+0.156250 0.562500 0
+0.156250 0.531250 0
+0.187500 0.531250 0
+0.156250 0.562500 0
+0.187500 0.562500 0
+0.875000 0.500000 0
+0.906250 0.500000 0
+0.875000 0.531250 0
+0.906250 0.531250 0
+0.906250 0.500000 0
+0.937500 0.500000 0
+0.906250 0.531250 0
+0.937500 0.531250 0
+0.875000 0.531250 0
+0.906250 0.531250 0
+0.875000 0.562500 0
+0.906250 0.562500 0
+0.750000 0.687500 0
+0.781250 0.687500 0
+0.750000 0.718750 0
+0.781250 0.718750 0
+0.781250 0.687500 0
+0.812500 0.687500 0
+0.781250 0.718750 0
+0.812500 0.718750 0
+0.750000 0.718750 0
+0.781250 0.718750 0
+0.750000 0.750000 0
+0.781250 0.750000 0
+0.781250 0.718750 0
+0.812500 0.718750 0
+0.781250 0.750000 0
+0.812500 0.750000 0
+0.875000 0.750000 0
+0.906250 0.750000 0
+0.875000 0.781250 0
+0.906250 0.781250 0
+0.875000 0.781250 0
+0.906250 0.781250 0
+0.875000 0.812500 0
+0.906250 0.812500 0
+0.906250 0.781250 0
+0.937500 0.781250 0
+0.906250 0.812500 0
+0.937500 0.812500 0
+0.00000 0.437500 0
+0.0312500 0.437500 0
+0.00000 0.468750 0
+0.0312500 0.468750 0
+0.0312500 0.437500 0
+0.0625000 0.437500 0
+0.0312500 0.468750 0
+0.0625000 0.468750 0
+0.00000 0.468750 0
+0.0312500 0.468750 0
+0.00000 0.500000 0
+0.0312500 0.500000 0
+0.0625000 0.437500 0
+0.0937500 0.437500 0
+0.0625000 0.468750 0
+0.0937500 0.468750 0
+0.0937500 0.437500 0
+0.125000 0.437500 0
+0.0937500 0.468750 0
+0.125000 0.468750 0
+0.0625000 0.468750 0
+0.0937500 0.468750 0
+0.0625000 0.500000 0
+0.0937500 0.500000 0
+0.375000 0.312500 0
+0.406250 0.312500 0
+0.375000 0.343750 0
+0.406250 0.343750 0
+0.375000 0.343750 0
+0.406250 0.343750 0
+0.375000 0.375000 0
+0.406250 0.375000 0
+0.406250 0.343750 0
+0.437500 0.343750 0
+0.406250 0.375000 0
+0.437500 0.375000 0
+0.250000 0.375000 0
+0.281250 0.375000 0
+0.250000 0.406250 0
+0.281250 0.406250 0
+0.281250 0.375000 0
+0.312500 0.375000 0
+0.281250 0.406250 0
+0.312500 0.406250 0
+0.250000 0.406250 0
+0.281250 0.406250 0
+0.250000 0.437500 0
+0.281250 0.437500 0
+0.750000 0.187500 0
+0.781250 0.187500 0
+0.750000 0.218750 0
+0.781250 0.218750 0
+0.781250 0.187500 0
+0.812500 0.187500 0
+0.781250 0.218750 0
+0.812500 0.218750 0
+0.750000 0.218750 0
+0.781250 0.218750 0
+0.750000 0.250000 0
+0.781250 0.250000 0
+0.781250 0.218750 0
+0.812500 0.218750 0
+0.781250 0.250000 0
+0.812500 0.250000 0
+0.250000 0.687500 0
+0.281250 0.687500 0
+0.250000 0.718750 0
+0.281250 0.718750 0
+0.250000 0.718750 0
+0.281250 0.718750 0
+0.250000 0.750000 0
+0.281250 0.750000 0
+0.281250 0.718750 0
+0.312500 0.718750 0
+0.281250 0.750000 0
+0.312500 0.750000 0
+0.00000 0.750000 0
+0.0312500 0.750000 0
+0.00000 0.781250 0
+0.0312500 0.781250 0
+0.0312500 0.750000 0
+0.0625000 0.750000 0
+0.0312500 0.781250 0
+0.0625000 0.781250 0
+0.00000 0.781250 0
+0.0312500 0.781250 0
+0.00000 0.812500 0
+0.0312500 0.812500 0
+0.187500 0.750000 0
+0.218750 0.750000 0
+0.187500 0.781250 0
+0.218750 0.781250 0
+0.187500 0.781250 0
+0.218750 0.781250 0
+0.187500 0.812500 0
+0.218750 0.812500 0
+0.218750 0.781250 0
+0.250000 0.781250 0
+0.218750 0.812500 0
+0.250000 0.812500 0
+0.125000 0.812500 0
+0.156250 0.812500 0
+0.125000 0.843750 0
+0.156250 0.843750 0
+0.125000 0.843750 0
+0.156250 0.843750 0
+0.125000 0.875000 0
+0.156250 0.875000 0
+0.156250 0.843750 0
+0.187500 0.843750 0
+0.156250 0.875000 0
+0.187500 0.875000 0
+0.625000 0.687500 0
+0.656250 0.687500 0
+0.625000 0.718750 0
+0.656250 0.718750 0
+0.656250 0.687500 0
+0.687500 0.687500 0
+0.656250 0.718750 0
+0.687500 0.718750 0
+0.625000 0.718750 0
+0.656250 0.718750 0
+0.625000 0.750000 0
+0.656250 0.750000 0
+0.656250 0.718750 0
+0.687500 0.718750 0
+0.656250 0.750000 0
+0.687500 0.750000 0
+0.0625000 0.00000 0
+0.0937500 0.00000 0
+0.0625000 0.0312500 0
+0.0937500 0.0312500 0
+0.0937500 0.00000 0
+0.125000 0.00000 0
+0.0937500 0.0312500 0
+0.125000 0.0312500 0
+0.0625000 0.0312500 0
+0.0937500 0.0312500 0
+0.0625000 0.0625000 0
+0.0937500 0.0625000 0
+0.0937500 0.0312500 0
+0.125000 0.0312500 0
+0.0937500 0.0625000 0
+0.125000 0.0625000 0
+0.687500 0.562500 0
+0.718750 0.562500 0
+0.687500 0.593750 0
+0.718750 0.593750 0
+0.718750 0.562500 0
+0.750000 0.562500 0
+0.718750 0.593750 0
+0.750000 0.593750 0
+0.687500 0.593750 0
+0.718750 0.593750 0
+0.687500 0.625000 0
+0.718750 0.625000 0
+0.718750 0.593750 0
+0.750000 0.593750 0
+0.718750 0.625000 0
+0.750000 0.625000 0
+0.750000 0.250000 0
+0.781250 0.250000 0
+0.750000 0.281250 0
+0.781250 0.281250 0
+0.781250 0.250000 0
+0.812500 0.250000 0
+0.781250 0.281250 0
+0.812500 0.281250 0
+0.750000 0.281250 0
+0.781250 0.281250 0
+0.750000 0.312500 0
+0.781250 0.312500 0
+0.781250 0.281250 0
+0.812500 0.281250 0
+0.781250 0.312500 0
+0.812500 0.312500 0
+0.750000 0.312500 0
+0.781250 0.312500 0
+0.750000 0.343750 0
+0.781250 0.343750 0
+0.781250 0.312500 0
+0.812500 0.312500 0
+0.781250 0.343750 0
+0.812500 0.343750 0
+0.750000 0.343750 0
+0.781250 0.343750 0
+0.750000 0.375000 0
+0.781250 0.375000 0
+0.781250 0.343750 0
+0.812500 0.343750 0
+0.781250 0.375000 0
+0.812500 0.375000 0
+0.0625000 0.625000 0
+0.0937500 0.625000 0
+0.0625000 0.656250 0
+0.0937500 0.656250 0
+0.0937500 0.625000 0
+0.125000 0.625000 0
+0.0937500 0.656250 0
+0.125000 0.656250 0
+0.0625000 0.656250 0
+0.0937500 0.656250 0
+0.0625000 0.687500 0
+0.0937500 0.687500 0
+0.0937500 0.656250 0
+0.125000 0.656250 0
+0.0937500 0.687500 0
+0.125000 0.687500 0
+0.562500 0.750000 0
+0.593750 0.750000 0
+0.562500 0.781250 0
+0.593750 0.781250 0
+0.593750 0.750000 0
+0.625000 0.750000 0
+0.593750 0.781250 0
+0.625000 0.781250 0
+0.562500 0.781250 0
+0.593750 0.781250 0
+0.562500 0.812500 0
+0.593750 0.812500 0
+0.593750 0.781250 0
+0.625000 0.781250 0
+0.593750 0.812500 0
+0.625000 0.812500 0
+0.750000 0.937500 0
+0.781250 0.937500 0
+0.750000 0.968750 0
+0.781250 0.968750 0
+0.781250 0.937500 0
+0.812500 0.937500 0
+0.781250 0.968750 0
+0.812500 0.968750 0
+0.750000 0.968750 0
+0.781250 0.968750 0
+0.750000 1.00000 0
+0.781250 1.00000 0
+0.781250 0.968750 0
+0.812500 0.968750 0
+0.781250 1.00000 0
+0.812500 1.00000 0
+0.125000 0.0625000 0
+0.156250 0.0625000 0
+0.125000 0.0937500 0
+0.156250 0.0937500 0
+0.156250 0.0625000 0
+0.187500 0.0625000 0
+0.156250 0.0937500 0
+0.187500 0.0937500 0
+0.125000 0.0937500 0
+0.156250 0.0937500 0
+0.125000 0.125000 0
+0.156250 0.125000 0
+0.156250 0.0937500 0
+0.187500 0.0937500 0
+0.156250 0.125000 0
+0.187500 0.125000 0
+0.125000 0.187500 0
+0.156250 0.187500 0
+0.125000 0.218750 0
+0.156250 0.218750 0
+0.156250 0.187500 0
+0.187500 0.187500 0
+0.156250 0.218750 0
+0.187500 0.218750 0
+0.125000 0.218750 0
+0.156250 0.218750 0
+0.125000 0.250000 0
+0.156250 0.250000 0
+0.156250 0.218750 0
+0.187500 0.218750 0
+0.156250 0.250000 0
+0.187500 0.250000 0
+0.562500 0.375000 0
+0.593750 0.375000 0
+0.562500 0.406250 0
+0.593750 0.406250 0
+0.593750 0.375000 0
+0.625000 0.375000 0
+0.593750 0.406250 0
+0.625000 0.406250 0
+0.562500 0.406250 0
+0.593750 0.406250 0
+0.562500 0.437500 0
+0.593750 0.437500 0
+0.593750 0.406250 0
+0.625000 0.406250 0
+0.593750 0.437500 0
+0.625000 0.437500 0
+0.562500 0.437500 0
+0.593750 0.437500 0
+0.562500 0.468750 0
+0.593750 0.468750 0
+0.593750 0.437500 0
+0.625000 0.437500 0
+0.593750 0.468750 0
+0.625000 0.468750 0
+0.562500 0.468750 0
+0.593750 0.468750 0
+0.562500 0.500000 0
+0.593750 0.500000 0
+0.593750 0.468750 0
+0.625000 0.468750 0
+0.593750 0.500000 0
+0.625000 0.500000 0
+0.500000 0.562500 0
+0.531250 0.562500 0
+0.500000 0.593750 0
+0.531250 0.593750 0
+0.531250 0.562500 0
+0.562500 0.562500 0
+0.531250 0.593750 0
+0.562500 0.593750 0
+0.500000 0.593750 0
+0.531250 0.593750 0
+0.500000 0.625000 0
+0.531250 0.625000 0
+0.531250 0.593750 0
+0.562500 0.593750 0
+0.531250 0.625000 0
+0.562500 0.625000 0
+0.312500 0.00000 0
+0.343750 0.00000 0
+0.312500 0.0312500 0
+0.343750 0.0312500 0
+0.343750 0.00000 0
+0.375000 0.00000 0
+0.343750 0.0312500 0
+0.375000 0.0312500 0
+0.312500 0.0312500 0
+0.343750 0.0312500 0
+0.312500 0.0625000 0
+0.343750 0.0625000 0
+0.343750 0.0312500 0
+0.375000 0.0312500 0
+0.343750 0.0625000 0
+0.375000 0.0625000 0
+0.250000 0.0625000 0
+0.281250 0.0625000 0
+0.250000 0.0937500 0
+0.281250 0.0937500 0
+0.281250 0.0625000 0
+0.312500 0.0625000 0
+0.281250 0.0937500 0
+0.312500 0.0937500 0
+0.250000 0.0937500 0
+0.281250 0.0937500 0
+0.250000 0.125000 0
+0.281250 0.125000 0
+0.281250 0.0937500 0
+0.312500 0.0937500 0
+0.281250 0.125000 0
+0.312500 0.125000 0
+0.625000 0.125000 0
+0.656250 0.125000 0
+0.625000 0.156250 0
+0.656250 0.156250 0
+0.656250 0.125000 0
+0.687500 0.125000 0
+0.656250 0.156250 0
+0.687500 0.156250 0
+0.625000 0.156250 0
+0.656250 0.156250 0
+0.625000 0.187500 0
+0.656250 0.187500 0
+0.656250 0.156250 0
+0.687500 0.156250 0
+0.656250 0.187500 0
+0.687500 0.187500 0
+0.125000 0.687500 0
+0.156250 0.687500 0
+0.125000 0.718750 0
+0.156250 0.718750 0
+0.156250 0.687500 0
+0.187500 0.687500 0
+0.156250 0.718750 0
+0.187500 0.718750 0
+0.125000 0.718750 0
+0.156250 0.718750 0
+0.125000 0.750000 0
+0.156250 0.750000 0
+0.156250 0.718750 0
+0.187500 0.718750 0
+0.156250 0.750000 0
+0.187500 0.750000 0
+0.562500 0.875000 0
+0.593750 0.875000 0
+0.562500 0.906250 0
+0.593750 0.906250 0
+0.593750 0.875000 0
+0.625000 0.875000 0
+0.593750 0.906250 0
+0.625000 0.906250 0
+0.562500 0.906250 0
+0.593750 0.906250 0
+0.562500 0.937500 0
+0.593750 0.937500 0
+0.593750 0.906250 0
+0.625000 0.906250 0
+0.593750 0.937500 0
+0.625000 0.937500 0
+0.250000 0.312500 0
+0.281250 0.312500 0
+0.250000 0.343750 0
+0.281250 0.343750 0
+0.281250 0.312500 0
+0.312500 0.312500 0
+0.281250 0.343750 0
+0.312500 0.343750 0
+0.250000 0.343750 0
+0.281250 0.343750 0
+0.250000 0.375000 0
+0.281250 0.375000 0
+0.281250 0.343750 0
+0.312500 0.343750 0
+0.281250 0.375000 0
+0.312500 0.375000 0
+0.375000 0.375000 0
+0.406250 0.375000 0
+0.375000 0.406250 0
+0.406250 0.406250 0
+0.406250 0.375000 0
+0.437500 0.375000 0
+0.406250 0.406250 0
+0.437500 0.406250 0
+0.375000 0.406250 0
+0.406250 0.406250 0
+0.375000 0.437500 0
+0.406250 0.437500 0
+0.406250 0.406250 0
+0.437500 0.406250 0
+0.406250 0.437500 0
+0.437500 0.437500 0
+0.437500 0.437500 0
+0.468750 0.437500 0
+0.437500 0.468750 0
+0.468750 0.468750 0
+0.468750 0.437500 0
+0.500000 0.437500 0
+0.468750 0.468750 0
+0.500000 0.468750 0
+0.437500 0.468750 0
+0.468750 0.468750 0
+0.437500 0.500000 0
+0.468750 0.500000 0
+0.468750 0.468750 0
+0.500000 0.468750 0
+0.468750 0.500000 0
+0.500000 0.500000 0
+0.375000 0.500000 0
+0.406250 0.500000 0
+0.375000 0.531250 0
+0.406250 0.531250 0
+0.406250 0.500000 0
+0.437500 0.500000 0
+0.406250 0.531250 0
+0.437500 0.531250 0
+0.375000 0.531250 0
+0.406250 0.531250 0
+0.375000 0.562500 0
+0.406250 0.562500 0
+0.406250 0.531250 0
+0.437500 0.531250 0
+0.406250 0.562500 0
+0.437500 0.562500 0
+0.375000 0.625000 0
+0.406250 0.625000 0
+0.375000 0.656250 0
+0.406250 0.656250 0
+0.406250 0.625000 0
+0.437500 0.625000 0
+0.406250 0.656250 0
+0.437500 0.656250 0
+0.375000 0.656250 0
+0.406250 0.656250 0
+0.375000 0.687500 0
+0.406250 0.687500 0
+0.406250 0.656250 0
+0.437500 0.656250 0
+0.406250 0.687500 0
+0.437500 0.687500 0
+0.125000 0.875000 0
+0.156250 0.875000 0
+0.125000 0.906250 0
+0.156250 0.906250 0
+0.156250 0.875000 0
+0.187500 0.875000 0
+0.156250 0.906250 0
+0.187500 0.906250 0
+0.125000 0.906250 0
+0.156250 0.906250 0
+0.125000 0.937500 0
+0.156250 0.937500 0
+0.156250 0.906250 0
+0.187500 0.906250 0
+0.156250 0.937500 0
+0.187500 0.937500 0
+0.375000 0.750000 0
+0.406250 0.750000 0
+0.375000 0.781250 0
+0.406250 0.781250 0
+0.406250 0.750000 0
+0.437500 0.750000 0
+0.406250 0.781250 0
+0.437500 0.781250 0
+0.375000 0.781250 0
+0.406250 0.781250 0
+0.375000 0.812500 0
+0.406250 0.812500 0
+0.406250 0.781250 0
+0.437500 0.781250 0
+0.406250 0.812500 0
+0.437500 0.812500 0
+0.0625000 0.125000 0
+0.0937500 0.125000 0
+0.0625000 0.156250 0
+0.0937500 0.156250 0
+0.0937500 0.125000 0
+0.125000 0.125000 0
+0.0937500 0.156250 0
+0.125000 0.156250 0
+0.0625000 0.156250 0
+0.0937500 0.156250 0
+0.0625000 0.187500 0
+0.0937500 0.187500 0
+0.0937500 0.156250 0
+0.125000 0.156250 0
+0.0937500 0.187500 0
+0.125000 0.187500 0
+0.00000 0.187500 0
+0.0312500 0.187500 0
+0.00000 0.218750 0
+0.0312500 0.218750 0
+0.0312500 0.187500 0
+0.0625000 0.187500 0
+0.0312500 0.218750 0
+0.0625000 0.218750 0
+0.00000 0.218750 0
+0.0312500 0.218750 0
+0.00000 0.250000 0
+0.0312500 0.250000 0
+0.0312500 0.218750 0
+0.0625000 0.218750 0
+0.0312500 0.250000 0
+0.0625000 0.250000 0
+0.562500 0.250000 0
+0.593750 0.250000 0
+0.562500 0.281250 0
+0.593750 0.281250 0
+0.593750 0.250000 0
+0.625000 0.250000 0
+0.593750 0.281250 0
+0.625000 0.281250 0
+0.562500 0.281250 0
+0.593750 0.281250 0
+0.562500 0.312500 0
+0.593750 0.312500 0
+0.593750 0.281250 0
+0.625000 0.281250 0
+0.593750 0.312500 0
+0.625000 0.312500 0
+0.500000 0.312500 0
+0.531250 0.312500 0
+0.500000 0.343750 0
+0.531250 0.343750 0
+0.531250 0.312500 0
+0.562500 0.312500 0
+0.531250 0.343750 0
+0.562500 0.343750 0
+0.500000 0.343750 0
+0.531250 0.343750 0
+0.500000 0.375000 0
+0.531250 0.375000 0
+0.531250 0.343750 0
+0.562500 0.343750 0
+0.531250 0.375000 0
+0.562500 0.375000 0
+0.437500 0.00000 0
+0.468750 0.00000 0
+0.437500 0.0312500 0
+0.468750 0.0312500 0
+0.468750 0.00000 0
+0.500000 0.00000 0
+0.468750 0.0312500 0
+0.500000 0.0312500 0
+0.437500 0.0312500 0
+0.468750 0.0312500 0
+0.437500 0.0625000 0
+0.468750 0.0625000 0
+0.468750 0.0312500 0
+0.500000 0.0312500 0
+0.468750 0.0625000 0
+0.500000 0.0625000 0
+0.937500 0.250000 0
+0.968750 0.250000 0
+0.937500 0.281250 0
+0.968750 0.281250 0
+0.968750 0.250000 0
+1.00000 0.250000 0
+0.968750 0.281250 0
+1.00000 0.281250 0
+0.937500 0.281250 0
+0.968750 0.281250 0
+0.937500 0.312500 0
+0.968750 0.312500 0
+0.968750 0.281250 0
+1.00000 0.281250 0
+0.968750 0.312500 0
+1.00000 0.312500 0
+0.937500 0.312500 0
+0.968750 0.312500 0
+0.937500 0.343750 0
+0.968750 0.343750 0
+0.968750 0.312500 0
+1.00000 0.312500 0
+0.968750 0.343750 0
+1.00000 0.343750 0
+0.937500 0.343750 0
+0.968750 0.343750 0
+0.937500 0.375000 0
+0.968750 0.375000 0
+0.968750 0.343750 0
+1.00000 0.343750 0
+0.968750 0.375000 0
+1.00000 0.375000 0
+0.812500 0.375000 0
+0.843750 0.375000 0
+0.812500 0.406250 0
+0.843750 0.406250 0
+0.843750 0.375000 0
+0.875000 0.375000 0
+0.843750 0.406250 0
+0.875000 0.406250 0
+0.812500 0.406250 0
+0.843750 0.406250 0
+0.812500 0.437500 0
+0.843750 0.437500 0
+0.843750 0.406250 0
+0.875000 0.406250 0
+0.843750 0.437500 0
+0.875000 0.437500 0
+0.187500 0.500000 0
+0.218750 0.500000 0
+0.187500 0.531250 0
+0.218750 0.531250 0
+0.218750 0.500000 0
+0.250000 0.500000 0
+0.218750 0.531250 0
+0.250000 0.531250 0
+0.187500 0.531250 0
+0.218750 0.531250 0
+0.187500 0.562500 0
+0.218750 0.562500 0
+0.218750 0.531250 0
+0.250000 0.531250 0
+0.218750 0.562500 0
+0.250000 0.562500 0
+0.125000 0.562500 0
+0.156250 0.562500 0
+0.125000 0.593750 0
+0.156250 0.593750 0
+0.156250 0.562500 0
+0.187500 0.562500 0
+0.156250 0.593750 0
+0.187500 0.593750 0
+0.125000 0.593750 0
+0.156250 0.593750 0
+0.125000 0.625000 0
+0.156250 0.625000 0
+0.156250 0.593750 0
+0.187500 0.593750 0
+0.156250 0.625000 0
+0.187500 0.625000 0
+0.937500 0.500000 0
+0.968750 0.500000 0
+0.937500 0.531250 0
+0.968750 0.531250 0
+0.968750 0.500000 0
+1.00000 0.500000 0
+0.968750 0.531250 0
+1.00000 0.531250 0
+0.937500 0.531250 0
+0.968750 0.531250 0
+0.937500 0.562500 0
+0.968750 0.562500 0
+0.968750 0.531250 0
+1.00000 0.531250 0
+0.968750 0.562500 0
+1.00000 0.562500 0
+0.875000 0.562500 0
+0.906250 0.562500 0
+0.875000 0.593750 0
+0.906250 0.593750 0
+0.906250 0.562500 0
+0.937500 0.562500 0
+0.906250 0.593750 0
+0.937500 0.593750 0
+0.875000 0.593750 0
+0.906250 0.593750 0
+0.875000 0.625000 0
+0.906250 0.625000 0
+0.906250 0.593750 0
+0.937500 0.593750 0
+0.906250 0.625000 0
+0.937500 0.625000 0
+0.750000 0.625000 0
+0.781250 0.625000 0
+0.750000 0.656250 0
+0.781250 0.656250 0
+0.781250 0.625000 0
+0.812500 0.625000 0
+0.781250 0.656250 0
+0.812500 0.656250 0
+0.750000 0.656250 0
+0.781250 0.656250 0
+0.750000 0.687500 0
+0.781250 0.687500 0
+0.781250 0.656250 0
+0.812500 0.656250 0
+0.781250 0.687500 0
+0.812500 0.687500 0
+0.812500 0.625000 0
+0.843750 0.625000 0
+0.812500 0.656250 0
+0.843750 0.656250 0
+0.843750 0.625000 0
+0.875000 0.625000 0
+0.843750 0.656250 0
+0.875000 0.656250 0
+0.812500 0.656250 0
+0.843750 0.656250 0
+0.812500 0.687500 0
+0.843750 0.687500 0
+0.843750 0.656250 0
+0.875000 0.656250 0
+0.843750 0.687500 0
+0.875000 0.687500 0
+0.625000 0.812500 0
+0.656250 0.812500 0
+0.625000 0.843750 0
+0.656250 0.843750 0
+0.656250 0.812500 0
+0.687500 0.812500 0
+0.656250 0.843750 0
+0.687500 0.843750 0
+0.625000 0.843750 0
+0.656250 0.843750 0
+0.625000 0.875000 0
+0.656250 0.875000 0
+0.656250 0.843750 0
+0.687500 0.843750 0
+0.656250 0.875000 0
+0.687500 0.875000 0
+0.937500 0.750000 0
+0.968750 0.750000 0
+0.937500 0.781250 0
+0.968750 0.781250 0
+0.968750 0.750000 0
+1.00000 0.750000 0
+0.968750 0.781250 0
+1.00000 0.781250 0
+0.937500 0.781250 0
+0.968750 0.781250 0
+0.937500 0.812500 0
+0.968750 0.812500 0
+0.968750 0.781250 0
+1.00000 0.781250 0
+0.968750 0.812500 0
+1.00000 0.812500 0
+0.375000 0.250000 0
+0.406250 0.250000 0
+0.375000 0.281250 0
+0.406250 0.281250 0
+0.406250 0.250000 0
+0.437500 0.250000 0
+0.406250 0.281250 0
+0.437500 0.281250 0
+0.375000 0.281250 0
+0.406250 0.281250 0
+0.375000 0.312500 0
+0.406250 0.312500 0
+0.406250 0.281250 0
+0.437500 0.281250 0
+0.406250 0.312500 0
+0.437500 0.312500 0
+0.437500 0.250000 0
+0.468750 0.250000 0
+0.437500 0.281250 0
+0.468750 0.281250 0
+0.468750 0.250000 0
+0.500000 0.250000 0
+0.468750 0.281250 0
+0.500000 0.281250 0
+0.437500 0.281250 0
+0.468750 0.281250 0
+0.437500 0.312500 0
+0.468750 0.312500 0
+0.468750 0.281250 0
+0.500000 0.281250 0
+0.468750 0.312500 0
+0.500000 0.312500 0
+0.437500 0.312500 0
+0.468750 0.312500 0
+0.437500 0.343750 0
+0.468750 0.343750 0
+0.468750 0.312500 0
+0.500000 0.312500 0
+0.468750 0.343750 0
+0.500000 0.343750 0
+0.437500 0.343750 0
+0.468750 0.343750 0
+0.437500 0.375000 0
+0.468750 0.375000 0
+0.468750 0.343750 0
+0.500000 0.343750 0
+0.468750 0.375000 0
+0.500000 0.375000 0
+0.312500 0.375000 0
+0.343750 0.375000 0
+0.312500 0.406250 0
+0.343750 0.406250 0
+0.343750 0.375000 0
+0.375000 0.375000 0
+0.343750 0.406250 0
+0.375000 0.406250 0
+0.312500 0.406250 0
+0.343750 0.406250 0
+0.312500 0.437500 0
+0.343750 0.437500 0
+0.343750 0.406250 0
+0.375000 0.406250 0
+0.343750 0.437500 0
+0.375000 0.437500 0
+0.250000 0.437500 0
+0.281250 0.437500 0
+0.250000 0.468750 0
+0.281250 0.468750 0
+0.281250 0.437500 0
+0.312500 0.437500 0
+0.281250 0.468750 0
+0.312500 0.468750 0
+0.250000 0.468750 0
+0.281250 0.468750 0
+0.250000 0.500000 0
+0.281250 0.500000 0
+0.281250 0.468750 0
+0.312500 0.468750 0
+0.281250 0.500000 0
+0.312500 0.500000 0
+0.812500 0.125000 0
+0.843750 0.125000 0
+0.812500 0.156250 0
+0.843750 0.156250 0
+0.843750 0.125000 0
+0.875000 0.125000 0
+0.843750 0.156250 0
+0.875000 0.156250 0
+0.812500 0.156250 0
+0.843750 0.156250 0
+0.812500 0.187500 0
+0.843750 0.187500 0
+0.843750 0.156250 0
+0.875000 0.156250 0
+0.843750 0.187500 0
+0.875000 0.187500 0
+0.250000 0.625000 0
+0.281250 0.625000 0
+0.250000 0.656250 0
+0.281250 0.656250 0
+0.281250 0.625000 0
+0.312500 0.625000 0
+0.281250 0.656250 0
+0.312500 0.656250 0
+0.250000 0.656250 0
+0.281250 0.656250 0
+0.250000 0.687500 0
+0.281250 0.687500 0
+0.281250 0.656250 0
+0.312500 0.656250 0
+0.281250 0.687500 0
+0.312500 0.687500 0
+0.312500 0.687500 0
+0.343750 0.687500 0
+0.312500 0.718750 0
+0.343750 0.718750 0
+0.343750 0.687500 0
+0.375000 0.687500 0
+0.343750 0.718750 0
+0.375000 0.718750 0
+0.312500 0.718750 0
+0.343750 0.718750 0
+0.312500 0.750000 0
+0.343750 0.750000 0
+0.343750 0.718750 0
+0.375000 0.718750 0
+0.343750 0.750000 0
+0.375000 0.750000 0
+0.0625000 0.750000 0
+0.0937500 0.750000 0
+0.0625000 0.781250 0
+0.0937500 0.781250 0
+0.0937500 0.750000 0
+0.125000 0.750000 0
+0.0937500 0.781250 0
+0.125000 0.781250 0
+0.0625000 0.781250 0
+0.0937500 0.781250 0
+0.0625000 0.812500 0
+0.0937500 0.812500 0
+0.0937500 0.781250 0
+0.125000 0.781250 0
+0.0937500 0.812500 0
+0.125000 0.812500 0
+0.00000 0.812500 0
+0.0312500 0.812500 0
+0.00000 0.843750 0
+0.0312500 0.843750 0
+0.0312500 0.812500 0
+0.0625000 0.812500 0
+0.0312500 0.843750 0
+0.0625000 0.843750 0
+0.00000 0.843750 0
+0.0312500 0.843750 0
+0.00000 0.875000 0
+0.0312500 0.875000 0
+0.0312500 0.843750 0
+0.0625000 0.843750 0
+0.0312500 0.875000 0
+0.0625000 0.875000 0
+0.125000 0.750000 0
+0.156250 0.750000 0
+0.125000 0.781250 0
+0.156250 0.781250 0
+0.156250 0.750000 0
+0.187500 0.750000 0
+0.156250 0.781250 0
+0.187500 0.781250 0
+0.125000 0.781250 0
+0.156250 0.781250 0
+0.125000 0.812500 0
+0.156250 0.812500 0
+0.156250 0.781250 0
+0.187500 0.781250 0
+0.156250 0.812500 0
+0.187500 0.812500 0
+0.187500 0.812500 0
+0.218750 0.812500 0
+0.187500 0.843750 0
+0.218750 0.843750 0
+0.218750 0.812500 0
+0.250000 0.812500 0
+0.218750 0.843750 0
+0.250000 0.843750 0
+0.187500 0.843750 0
+0.218750 0.843750 0
+0.187500 0.875000 0
+0.218750 0.875000 0
+0.218750 0.843750 0
+0.250000 0.843750 0
+0.218750 0.875000 0
+0.250000 0.875000 0
+0.375000 0.875000 0
+0.406250 0.875000 0
+0.375000 0.906250 0
+0.406250 0.906250 0
+0.406250 0.875000 0
+0.437500 0.875000 0
+0.406250 0.906250 0
+0.437500 0.906250 0
+0.375000 0.906250 0
+0.406250 0.906250 0
+0.375000 0.937500 0
+0.406250 0.937500 0
+0.406250 0.906250 0
+0.437500 0.906250 0
+0.406250 0.937500 0
+0.437500 0.937500 0
+0.375000 0.937500 0
+0.406250 0.937500 0
+0.375000 0.968750 0
+0.406250 0.968750 0
+0.406250 0.937500 0
+0.437500 0.937500 0
+0.406250 0.968750 0
+0.437500 0.968750 0
+0.375000 0.968750 0
+0.406250 0.968750 0
+0.375000 1.00000 0
+0.406250 1.00000 0
+0.406250 0.968750 0
+0.437500 0.968750 0
+0.406250 1.00000 0
+0.437500 1.00000 0
+0.375000 0.187500 0
+0.406250 0.187500 0
+0.375000 0.218750 0
+0.406250 0.218750 0
+0.406250 0.187500 0
+0.437500 0.187500 0
+0.406250 0.218750 0
+0.437500 0.218750 0
+0.375000 0.218750 0
+0.406250 0.218750 0
+0.375000 0.250000 0
+0.406250 0.250000 0
+0.406250 0.218750 0
+0.437500 0.218750 0
+0.406250 0.250000 0
+0.437500 0.250000 0
+0.875000 0.375000 0
+0.906250 0.375000 0
+0.875000 0.406250 0
+0.906250 0.406250 0
+0.906250 0.375000 0
+0.937500 0.375000 0
+0.906250 0.406250 0
+0.937500 0.406250 0
+0.875000 0.406250 0
+0.906250 0.406250 0
+0.875000 0.437500 0
+0.906250 0.437500 0
+0.906250 0.406250 0
+0.937500 0.406250 0
+0.906250 0.437500 0
+0.937500 0.437500 0
+0.750000 0.500000 0
+0.781250 0.500000 0
+0.750000 0.531250 0
+0.781250 0.531250 0
+0.781250 0.500000 0
+0.812500 0.500000 0
+0.781250 0.531250 0
+0.812500 0.531250 0
+0.750000 0.531250 0
+0.781250 0.531250 0
+0.750000 0.562500 0
+0.781250 0.562500 0
+0.781250 0.531250 0
+0.812500 0.531250 0
+0.781250 0.562500 0
+0.812500 0.562500 0
+0.750000 0.562500 0
+0.781250 0.562500 0
+0.750000 0.593750 0
+0.781250 0.593750 0
+0.781250 0.562500 0
+0.812500 0.562500 0
+0.781250 0.593750 0
+0.812500 0.593750 0
+0.750000 0.593750 0
+0.781250 0.593750 0
+0.750000 0.625000 0
+0.781250 0.625000 0
+0.781250 0.593750 0
+0.812500 0.593750 0
+0.781250 0.625000 0
+0.812500 0.625000 0
+0.875000 0.687500 0
+0.906250 0.687500 0
+0.875000 0.718750 0
+0.906250 0.718750 0
+0.906250 0.687500 0
+0.937500 0.687500 0
+0.906250 0.718750 0
+0.937500 0.718750 0
+0.875000 0.718750 0
+0.906250 0.718750 0
+0.875000 0.750000 0
+0.906250 0.750000 0
+0.906250 0.718750 0
+0.937500 0.718750 0
+0.906250 0.750000 0
+0.937500 0.750000 0
+0.625000 0.875000 0
+0.656250 0.875000 0
+0.625000 0.906250 0
+0.656250 0.906250 0
+0.656250 0.875000 0
+0.687500 0.875000 0
+0.656250 0.906250 0
+0.687500 0.906250 0
+0.625000 0.906250 0
+0.656250 0.906250 0
+0.625000 0.937500 0
+0.656250 0.937500 0
+0.656250 0.906250 0
+0.687500 0.906250 0
+0.656250 0.937500 0
+0.687500 0.937500 0
+0.750000 0.812500 0
+0.781250 0.812500 0
+0.750000 0.843750 0
+0.781250 0.843750 0
+0.781250 0.812500 0
+0.812500 0.812500 0
+0.781250 0.843750 0
+0.812500 0.843750 0
+0.750000 0.843750 0
+0.781250 0.843750 0
+0.750000 0.875000 0
+0.781250 0.875000 0
+0.781250 0.843750 0
+0.812500 0.843750 0
+0.781250 0.875000 0
+0.812500 0.875000 0
+0.187500 0.375000 0
+0.218750 0.375000 0
+0.187500 0.406250 0
+0.218750 0.406250 0
+0.218750 0.375000 0
+0.250000 0.375000 0
+0.218750 0.406250 0
+0.250000 0.406250 0
+0.187500 0.406250 0
+0.218750 0.406250 0
+0.187500 0.437500 0
+0.218750 0.437500 0
+0.218750 0.406250 0
+0.250000 0.406250 0
+0.218750 0.437500 0
+0.250000 0.437500 0
+0.125000 0.437500 0
+0.156250 0.437500 0
+0.125000 0.468750 0
+0.156250 0.468750 0
+0.156250 0.437500 0
+0.187500 0.437500 0
+0.156250 0.468750 0
+0.187500 0.468750 0
+0.125000 0.468750 0
+0.156250 0.468750 0
+0.125000 0.500000 0
+0.156250 0.500000 0
+0.156250 0.468750 0
+0.187500 0.468750 0
+0.156250 0.500000 0
+0.187500 0.500000 0
+0.875000 0.00000 0
+0.906250 0.00000 0
+0.875000 0.0312500 0
+0.906250 0.0312500 0
+0.906250 0.00000 0
+0.937500 0.00000 0
+0.906250 0.0312500 0
+0.937500 0.0312500 0
+0.875000 0.0312500 0
+0.906250 0.0312500 0
+0.875000 0.0625000 0
+0.906250 0.0625000 0
+0.906250 0.0312500 0
+0.937500 0.0312500 0
+0.906250 0.0625000 0
+0.937500 0.0625000 0
+0.875000 0.187500 0
+0.906250 0.187500 0
+0.875000 0.218750 0
+0.906250 0.218750 0
+0.906250 0.187500 0
+0.937500 0.187500 0
+0.906250 0.218750 0
+0.937500 0.218750 0
+0.875000 0.218750 0
+0.906250 0.218750 0
+0.875000 0.250000 0
+0.906250 0.250000 0
+0.906250 0.218750 0
+0.937500 0.218750 0
+0.906250 0.250000 0
+0.937500 0.250000 0
+0.250000 0.750000 0
+0.281250 0.750000 0
+0.250000 0.781250 0
+0.281250 0.781250 0
+0.281250 0.750000 0
+0.312500 0.750000 0
+0.281250 0.781250 0
+0.312500 0.781250 0
+0.250000 0.781250 0
+0.281250 0.781250 0
+0.250000 0.812500 0
+0.281250 0.812500 0
+0.281250 0.781250 0
+0.312500 0.781250 0
+0.281250 0.812500 0
+0.312500 0.812500 0
+0.640625 0.640625 0
+0.656250 0.640625 0
+0.640625 0.656250 0
+0.656250 0.656250 0
+0.703125 0.250000 0
+0.718750 0.250000 0
+0.703125 0.265625 0
+0.718750 0.265625 0
+0.00000 0.0312500 0
+0.0156250 0.0312500 0
+0.00000 0.0468750 0
+0.0156250 0.0468750 0
+0.0156250 0.0312500 0
+0.0312500 0.0312500 0
+0.0156250 0.0468750 0
+0.0312500 0.0468750 0
+0.00000 0.0468750 0
+0.0156250 0.0468750 0
+0.00000 0.0625000 0
+0.0156250 0.0625000 0
+0.640625 0.562500 0
+0.656250 0.562500 0
+0.640625 0.578125 0
+0.656250 0.578125 0
+0.625000 0.578125 0
+0.640625 0.578125 0
+0.625000 0.593750 0
+0.640625 0.593750 0
+0.640625 0.578125 0
+0.656250 0.578125 0
+0.640625 0.593750 0
+0.656250 0.593750 0
+0.640625 0.593750 0
+0.656250 0.593750 0
+0.640625 0.609375 0
+0.656250 0.609375 0
+0.500000 0.656250 0
+0.515625 0.656250 0
+0.500000 0.671875 0
+0.515625 0.671875 0
+0.515625 0.656250 0
+0.531250 0.656250 0
+0.515625 0.671875 0
+0.531250 0.671875 0
+0.500000 0.671875 0
+0.515625 0.671875 0
+0.500000 0.687500 0
+0.515625 0.687500 0
+0.515625 0.671875 0
+0.531250 0.671875 0
+0.515625 0.687500 0
+0.531250 0.687500 0
+0.265625 0.187500 0
+0.281250 0.187500 0
+0.265625 0.203125 0
+0.281250 0.203125 0
+0.00000 0.656250 0
+0.0156250 0.656250 0
+0.00000 0.671875 0
+0.0156250 0.671875 0
+0.0156250 0.656250 0
+0.0312500 0.656250 0
+0.0156250 0.671875 0
+0.0312500 0.671875 0
+0.0156250 0.671875 0
+0.0312500 0.671875 0
+0.0156250 0.687500 0
+0.0312500 0.687500 0
+0.656250 0.625000 0
+0.671875 0.625000 0
+0.656250 0.640625 0
+0.671875 0.640625 0
+0.671875 0.625000 0
+0.687500 0.625000 0
+0.671875 0.640625 0
+0.687500 0.640625 0
+0.656250 0.640625 0
+0.671875 0.640625 0
+0.656250 0.656250 0
+0.671875 0.656250 0
+0.671875 0.640625 0
+0.687500 0.640625 0
+0.671875 0.656250 0
+0.687500 0.656250 0
+0.703125 0.281250 0
+0.718750 0.281250 0
+0.703125 0.296875 0
+0.718750 0.296875 0
+0.687500 0.296875 0
+0.703125 0.296875 0
+0.687500 0.312500 0
+0.703125 0.312500 0
+0.703125 0.296875 0
+0.718750 0.296875 0
+0.703125 0.312500 0
+0.718750 0.312500 0
+0.00000 0.00000 0
+0.0156250 0.00000 0
+0.00000 0.0156250 0
+0.0156250 0.0156250 0
+0.0156250 0.00000 0
+0.0312500 0.00000 0
+0.0156250 0.0156250 0
+0.0312500 0.0156250 0
+0.0156250 0.0156250 0
+0.0312500 0.0156250 0
+0.0156250 0.0312500 0
+0.0312500 0.0312500 0
+0.656250 0.468750 0
+0.671875 0.468750 0
+0.656250 0.484375 0
+0.671875 0.484375 0
+0.671875 0.468750 0
+0.687500 0.468750 0
+0.671875 0.484375 0
+0.687500 0.484375 0
+0.656250 0.484375 0
+0.671875 0.484375 0
+0.656250 0.500000 0
+0.671875 0.500000 0
+0.671875 0.484375 0
+0.687500 0.484375 0
+0.671875 0.500000 0
+0.687500 0.500000 0
+0.578125 0.625000 0
+0.593750 0.625000 0
+0.578125 0.640625 0
+0.593750 0.640625 0
+0.562500 0.640625 0
+0.578125 0.640625 0
+0.562500 0.656250 0
+0.578125 0.656250 0
+0.578125 0.640625 0
+0.593750 0.640625 0
+0.578125 0.656250 0
+0.593750 0.656250 0
+0.250000 0.218750 0
+0.265625 0.218750 0
+0.250000 0.234375 0
+0.265625 0.234375 0
+0.265625 0.218750 0
+0.281250 0.218750 0
+0.265625 0.234375 0
+0.281250 0.234375 0
+0.265625 0.234375 0
+0.281250 0.234375 0
+0.265625 0.250000 0
+0.281250 0.250000 0
+0.00000 0.625000 0
+0.0156250 0.625000 0
+0.00000 0.640625 0
+0.0156250 0.640625 0
+0.0156250 0.625000 0
+0.0312500 0.625000 0
+0.0156250 0.640625 0
+0.0312500 0.640625 0
+0.00000 0.640625 0
+0.0156250 0.640625 0
+0.00000 0.656250 0
+0.0156250 0.656250 0
+0.0156250 0.640625 0
+0.0312500 0.640625 0
+0.0156250 0.656250 0
+0.0312500 0.656250 0
+0.546875 0.843750 0
+0.562500 0.843750 0
+0.546875 0.859375 0
+0.562500 0.859375 0
+0.531250 0.859375 0
+0.546875 0.859375 0
+0.531250 0.875000 0
+0.546875 0.875000 0
+0.546875 0.859375 0
+0.562500 0.859375 0
+0.546875 0.875000 0
+0.562500 0.875000 0
+0.656250 0.250000 0
+0.671875 0.250000 0
+0.656250 0.265625 0
+0.671875 0.265625 0
+0.671875 0.250000 0
+0.687500 0.250000 0
+0.671875 0.265625 0
+0.687500 0.265625 0
+0.671875 0.265625 0
+0.687500 0.265625 0
+0.671875 0.281250 0
+0.687500 0.281250 0
+0.718750 0.687500 0
+0.734375 0.687500 0
+0.718750 0.703125 0
+0.734375 0.703125 0
+0.734375 0.687500 0
+0.750000 0.687500 0
+0.734375 0.703125 0
+0.750000 0.703125 0
+0.718750 0.703125 0
+0.734375 0.703125 0
+0.718750 0.718750 0
+0.734375 0.718750 0
+0.734375 0.703125 0
+0.750000 0.703125 0
+0.734375 0.718750 0
+0.750000 0.718750 0
+0.0468750 0.0937500 0
+0.0625000 0.0937500 0
+0.0468750 0.109375 0
+0.0625000 0.109375 0
+0.0312500 0.109375 0
+0.0468750 0.109375 0
+0.0312500 0.125000 0
+0.0468750 0.125000 0
+0.0468750 0.109375 0
+0.0625000 0.109375 0
+0.0468750 0.125000 0
+0.0625000 0.125000 0
+0.656250 0.500000 0
+0.671875 0.500000 0
+0.656250 0.515625 0
+0.671875 0.515625 0
+0.671875 0.500000 0
+0.687500 0.500000 0
+0.671875 0.515625 0
+0.687500 0.515625 0
+0.671875 0.515625 0
+0.687500 0.515625 0
+0.671875 0.531250 0
+0.687500 0.531250 0
+0.625000 0.531250 0
+0.640625 0.531250 0
+0.625000 0.546875 0
+0.640625 0.546875 0
+0.640625 0.531250 0
+0.656250 0.531250 0
+0.640625 0.546875 0
+0.656250 0.546875 0
+0.625000 0.546875 0
+0.640625 0.546875 0
+0.625000 0.562500 0
+0.640625 0.562500 0
+0.640625 0.546875 0
+0.656250 0.546875 0
+0.640625 0.562500 0
+0.656250 0.562500 0
+0.546875 0.718750 0
+0.562500 0.718750 0
+0.546875 0.734375 0
+0.562500 0.734375 0
+0.531250 0.734375 0
+0.546875 0.734375 0
+0.531250 0.750000 0
+0.546875 0.750000 0
+0.546875 0.734375 0
+0.562500 0.734375 0
+0.546875 0.750000 0
+0.562500 0.750000 0
+0.843750 0.312500 0
+0.859375 0.312500 0
+0.843750 0.328125 0
+0.859375 0.328125 0
+0.859375 0.312500 0
+0.875000 0.312500 0
+0.859375 0.328125 0
+0.875000 0.328125 0
+0.859375 0.328125 0
+0.875000 0.328125 0
+0.859375 0.343750 0
+0.875000 0.343750 0
+0.0312500 0.718750 0
+0.0468750 0.718750 0
+0.0312500 0.734375 0
+0.0468750 0.734375 0
+0.0468750 0.718750 0
+0.0625000 0.718750 0
+0.0468750 0.734375 0
+0.0625000 0.734375 0
+0.0312500 0.734375 0
+0.0468750 0.734375 0
+0.0312500 0.750000 0
+0.0468750 0.750000 0
+0.0468750 0.734375 0
+0.0625000 0.734375 0
+0.0468750 0.750000 0
+0.0625000 0.750000 0
+0.234375 0.00000 0
+0.250000 0.00000 0
+0.234375 0.0156250 0
+0.250000 0.0156250 0
+0.218750 0.0156250 0
+0.234375 0.0156250 0
+0.218750 0.0312500 0
+0.234375 0.0312500 0
+0.234375 0.0156250 0
+0.250000 0.0156250 0
+0.234375 0.0312500 0
+0.250000 0.0312500 0
+0.218750 0.187500 0
+0.234375 0.187500 0
+0.218750 0.203125 0
+0.234375 0.203125 0
+0.234375 0.187500 0
+0.250000 0.187500 0
+0.234375 0.203125 0
+0.250000 0.203125 0
+0.234375 0.203125 0
+0.250000 0.203125 0
+0.234375 0.218750 0
+0.250000 0.218750 0
+0.218750 0.218750 0
+0.234375 0.218750 0
+0.218750 0.234375 0
+0.234375 0.234375 0
+0.234375 0.218750 0
+0.250000 0.218750 0
+0.234375 0.234375 0
+0.250000 0.234375 0
+0.218750 0.234375 0
+0.234375 0.234375 0
+0.218750 0.250000 0
+0.234375 0.250000 0
+0.234375 0.234375 0
+0.250000 0.234375 0
+0.234375 0.250000 0
+0.250000 0.250000 0
+0.609375 0.562500 0
+0.625000 0.562500 0
+0.609375 0.578125 0
+0.625000 0.578125 0
+0.593750 0.578125 0
+0.609375 0.578125 0
+0.593750 0.593750 0
+0.609375 0.593750 0
+0.609375 0.578125 0
+0.625000 0.578125 0
+0.609375 0.593750 0
+0.625000 0.593750 0
+0.593750 0.593750 0
+0.609375 0.593750 0
+0.593750 0.609375 0
+0.609375 0.609375 0
+0.609375 0.593750 0
+0.625000 0.593750 0
+0.609375 0.609375 0
+0.625000 0.609375 0
+0.609375 0.609375 0
+0.625000 0.609375 0
+0.609375 0.625000 0
+0.625000 0.625000 0
+0.343750 0.0937500 0
+0.359375 0.0937500 0
+0.343750 0.109375 0
+0.359375 0.109375 0
+0.359375 0.0937500 0
+0.375000 0.0937500 0
+0.359375 0.109375 0
+0.375000 0.109375 0
+0.343750 0.109375 0
+0.359375 0.109375 0
+0.343750 0.125000 0
+0.359375 0.125000 0
+0.359375 0.109375 0
+0.375000 0.109375 0
+0.359375 0.125000 0
+0.375000 0.125000 0
+0.109375 0.500000 0
+0.125000 0.500000 0
+0.109375 0.515625 0
+0.125000 0.515625 0
+0.0937500 0.515625 0
+0.109375 0.515625 0
+0.0937500 0.531250 0
+0.109375 0.531250 0
+0.109375 0.515625 0
+0.125000 0.515625 0
+0.109375 0.531250 0
+0.125000 0.531250 0
+0.218750 0.718750 0
+0.234375 0.718750 0
+0.218750 0.734375 0
+0.234375 0.734375 0
+0.234375 0.718750 0
+0.250000 0.718750 0
+0.234375 0.734375 0
+0.250000 0.734375 0
+0.234375 0.734375 0
+0.250000 0.734375 0
+0.234375 0.750000 0
+0.250000 0.750000 0
+0.343750 0.312500 0
+0.359375 0.312500 0
+0.343750 0.328125 0
+0.359375 0.328125 0
+0.359375 0.312500 0
+0.375000 0.312500 0
+0.359375 0.328125 0
+0.375000 0.328125 0
+0.343750 0.328125 0
+0.359375 0.328125 0
+0.343750 0.343750 0
+0.359375 0.343750 0
+0.359375 0.328125 0
+0.375000 0.328125 0
+0.359375 0.343750 0
+0.375000 0.343750 0
+0.484375 0.531250 0
+0.500000 0.531250 0
+0.484375 0.546875 0
+0.500000 0.546875 0
+0.468750 0.546875 0
+0.484375 0.546875 0
+0.468750 0.562500 0
+0.484375 0.562500 0
+0.484375 0.546875 0
+0.500000 0.546875 0
+0.484375 0.562500 0
+0.500000 0.562500 0
+0.468750 0.687500 0
+0.484375 0.687500 0
+0.468750 0.703125 0
+0.484375 0.703125 0
+0.484375 0.687500 0
+0.500000 0.687500 0
+0.484375 0.703125 0
+0.500000 0.703125 0
+0.484375 0.703125 0
+0.500000 0.703125 0
+0.484375 0.718750 0
+0.500000 0.718750 0
+0.468750 0.781250 0
+0.484375 0.781250 0
+0.468750 0.796875 0
+0.484375 0.796875 0
+0.484375 0.781250 0
+0.500000 0.781250 0
+0.484375 0.796875 0
+0.500000 0.796875 0
+0.468750 0.796875 0
+0.484375 0.796875 0
+0.468750 0.812500 0
+0.484375 0.812500 0
+0.484375 0.796875 0
+0.500000 0.796875 0
+0.484375 0.812500 0
+0.500000 0.812500 0
+0.625000 0.656250 0
+0.640625 0.656250 0
+0.625000 0.671875 0
+0.640625 0.671875 0
+0.640625 0.656250 0
+0.656250 0.656250 0
+0.640625 0.671875 0
+0.656250 0.671875 0
+0.625000 0.671875 0
+0.640625 0.671875 0
+0.625000 0.687500 0
+0.640625 0.687500 0
+0.640625 0.671875 0
+0.656250 0.671875 0
+0.640625 0.687500 0
+0.656250 0.687500 0
+0.718750 0.250000 0
+0.734375 0.250000 0
+0.718750 0.265625 0
+0.734375 0.265625 0
+0.734375 0.250000 0
+0.750000 0.250000 0
+0.734375 0.265625 0
+0.750000 0.265625 0
+0.718750 0.265625 0
+0.734375 0.265625 0
+0.718750 0.281250 0
+0.734375 0.281250 0
+0.734375 0.265625 0
+0.750000 0.265625 0
+0.734375 0.281250 0
+0.750000 0.281250 0
+0.0312500 0.0312500 0
+0.0468750 0.0312500 0
+0.0312500 0.0468750 0
+0.0468750 0.0468750 0
+0.0468750 0.0312500 0
+0.0625000 0.0312500 0
+0.0468750 0.0468750 0
+0.0625000 0.0468750 0
+0.0312500 0.0468750 0
+0.0468750 0.0468750 0
+0.0312500 0.0625000 0
+0.0468750 0.0625000 0
+0.0468750 0.0468750 0
+0.0625000 0.0468750 0
+0.0468750 0.0625000 0
+0.0625000 0.0625000 0
+0.625000 0.437500 0
+0.640625 0.437500 0
+0.625000 0.453125 0
+0.640625 0.453125 0
+0.640625 0.437500 0
+0.656250 0.437500 0
+0.640625 0.453125 0
+0.656250 0.453125 0
+0.625000 0.453125 0
+0.640625 0.453125 0
+0.625000 0.468750 0
+0.640625 0.468750 0
+0.640625 0.453125 0
+0.656250 0.453125 0
+0.640625 0.468750 0
+0.656250 0.468750 0
+0.656250 0.593750 0
+0.671875 0.593750 0
+0.656250 0.609375 0
+0.671875 0.609375 0
+0.671875 0.593750 0
+0.687500 0.593750 0
+0.671875 0.609375 0
+0.687500 0.609375 0
+0.656250 0.609375 0
+0.671875 0.609375 0
+0.656250 0.625000 0
+0.671875 0.625000 0
+0.671875 0.609375 0
+0.687500 0.609375 0
+0.671875 0.625000 0
+0.687500 0.625000 0
+0.531250 0.625000 0
+0.546875 0.625000 0
+0.531250 0.640625 0
+0.546875 0.640625 0
+0.546875 0.625000 0
+0.562500 0.625000 0
+0.546875 0.640625 0
+0.562500 0.640625 0
+0.531250 0.640625 0
+0.546875 0.640625 0
+0.531250 0.656250 0
+0.546875 0.656250 0
+0.546875 0.640625 0
+0.562500 0.640625 0
+0.546875 0.656250 0
+0.562500 0.656250 0
+0.593750 0.656250 0
+0.609375 0.656250 0
+0.593750 0.671875 0
+0.609375 0.671875 0
+0.609375 0.656250 0
+0.625000 0.656250 0
+0.609375 0.671875 0
+0.625000 0.671875 0
+0.593750 0.671875 0
+0.609375 0.671875 0
+0.593750 0.687500 0
+0.609375 0.687500 0
+0.609375 0.671875 0
+0.625000 0.671875 0
+0.609375 0.687500 0
+0.625000 0.687500 0
+0.281250 0.187500 0
+0.296875 0.187500 0
+0.281250 0.203125 0
+0.296875 0.203125 0
+0.296875 0.187500 0
+0.312500 0.187500 0
+0.296875 0.203125 0
+0.312500 0.203125 0
+0.281250 0.203125 0
+0.296875 0.203125 0
+0.281250 0.218750 0
+0.296875 0.218750 0
+0.296875 0.203125 0
+0.312500 0.203125 0
+0.296875 0.218750 0
+0.312500 0.218750 0
+0.0312500 0.625000 0
+0.0468750 0.625000 0
+0.0312500 0.640625 0
+0.0468750 0.640625 0
+0.0468750 0.625000 0
+0.0625000 0.625000 0
+0.0468750 0.640625 0
+0.0625000 0.640625 0
+0.0312500 0.640625 0
+0.0468750 0.640625 0
+0.0312500 0.656250 0
+0.0468750 0.656250 0
+0.0468750 0.640625 0
+0.0625000 0.640625 0
+0.0468750 0.656250 0
+0.0625000 0.656250 0
+0.531250 0.812500 0
+0.546875 0.812500 0
+0.531250 0.828125 0
+0.546875 0.828125 0
+0.546875 0.812500 0
+0.562500 0.812500 0
+0.546875 0.828125 0
+0.562500 0.828125 0
+0.531250 0.828125 0
+0.546875 0.828125 0
+0.531250 0.843750 0
+0.546875 0.843750 0
+0.546875 0.828125 0
+0.562500 0.828125 0
+0.546875 0.843750 0
+0.562500 0.843750 0
+0.500000 0.843750 0
+0.515625 0.843750 0
+0.500000 0.859375 0
+0.515625 0.859375 0
+0.515625 0.843750 0
+0.531250 0.843750 0
+0.515625 0.859375 0
+0.531250 0.859375 0
+0.500000 0.859375 0
+0.515625 0.859375 0
+0.500000 0.875000 0
+0.515625 0.875000 0
+0.515625 0.859375 0
+0.531250 0.859375 0
+0.515625 0.875000 0
+0.531250 0.875000 0
+0.625000 0.250000 0
+0.640625 0.250000 0
+0.625000 0.265625 0
+0.640625 0.265625 0
+0.640625 0.250000 0
+0.656250 0.250000 0
+0.640625 0.265625 0
+0.656250 0.265625 0
+0.625000 0.265625 0
+0.640625 0.265625 0
+0.625000 0.281250 0
+0.640625 0.281250 0
+0.640625 0.265625 0
+0.656250 0.265625 0
+0.640625 0.281250 0
+0.656250 0.281250 0
+0.625000 0.281250 0
+0.640625 0.281250 0
+0.625000 0.296875 0
+0.640625 0.296875 0
+0.640625 0.281250 0
+0.656250 0.281250 0
+0.640625 0.296875 0
+0.656250 0.296875 0
+0.625000 0.296875 0
+0.640625 0.296875 0
+0.625000 0.312500 0
+0.640625 0.312500 0
+0.640625 0.296875 0
+0.656250 0.296875 0
+0.640625 0.312500 0
+0.656250 0.312500 0
+0.656250 0.281250 0
+0.671875 0.281250 0
+0.656250 0.296875 0
+0.671875 0.296875 0
+0.671875 0.281250 0
+0.687500 0.281250 0
+0.671875 0.296875 0
+0.687500 0.296875 0
+0.656250 0.296875 0
+0.671875 0.296875 0
+0.656250 0.312500 0
+0.671875 0.312500 0
+0.671875 0.296875 0
+0.687500 0.296875 0
+0.671875 0.312500 0
+0.687500 0.312500 0
+0.00000 0.0625000 0
+0.0156250 0.0625000 0
+0.00000 0.0781250 0
+0.0156250 0.0781250 0
+0.0156250 0.0625000 0
+0.0312500 0.0625000 0
+0.0156250 0.0781250 0
+0.0312500 0.0781250 0
+0.00000 0.0781250 0
+0.0156250 0.0781250 0
+0.00000 0.0937500 0
+0.0156250 0.0937500 0
+0.0156250 0.0781250 0
+0.0312500 0.0781250 0
+0.0156250 0.0937500 0
+0.0312500 0.0937500 0
+0.0312500 0.0625000 0
+0.0468750 0.0625000 0
+0.0312500 0.0781250 0
+0.0468750 0.0781250 0
+0.0468750 0.0625000 0
+0.0625000 0.0625000 0
+0.0468750 0.0781250 0
+0.0625000 0.0781250 0
+0.0312500 0.0781250 0
+0.0468750 0.0781250 0
+0.0312500 0.0937500 0
+0.0468750 0.0937500 0
+0.0468750 0.0781250 0
+0.0625000 0.0781250 0
+0.0468750 0.0937500 0
+0.0625000 0.0937500 0
+0.00000 0.0937500 0
+0.0156250 0.0937500 0
+0.00000 0.109375 0
+0.0156250 0.109375 0
+0.0156250 0.0937500 0
+0.0312500 0.0937500 0
+0.0156250 0.109375 0
+0.0312500 0.109375 0
+0.00000 0.109375 0
+0.0156250 0.109375 0
+0.00000 0.125000 0
+0.0156250 0.125000 0
+0.0156250 0.109375 0
+0.0312500 0.109375 0
+0.0156250 0.125000 0
+0.0312500 0.125000 0
+0.625000 0.500000 0
+0.640625 0.500000 0
+0.625000 0.515625 0
+0.640625 0.515625 0
+0.640625 0.500000 0
+0.656250 0.500000 0
+0.640625 0.515625 0
+0.656250 0.515625 0
+0.625000 0.515625 0
+0.640625 0.515625 0
+0.625000 0.531250 0
+0.640625 0.531250 0
+0.640625 0.515625 0
+0.656250 0.515625 0
+0.640625 0.531250 0
+0.656250 0.531250 0
+0.656250 0.531250 0
+0.671875 0.531250 0
+0.656250 0.546875 0
+0.671875 0.546875 0
+0.671875 0.531250 0
+0.687500 0.531250 0
+0.671875 0.546875 0
+0.687500 0.546875 0
+0.656250 0.546875 0
+0.671875 0.546875 0
+0.656250 0.562500 0
+0.671875 0.562500 0
+0.671875 0.546875 0
+0.687500 0.546875 0
+0.671875 0.562500 0
+0.687500 0.562500 0
+0.531250 0.687500 0
+0.546875 0.687500 0
+0.531250 0.703125 0
+0.546875 0.703125 0
+0.546875 0.687500 0
+0.562500 0.687500 0
+0.546875 0.703125 0
+0.562500 0.703125 0
+0.531250 0.703125 0
+0.546875 0.703125 0
+0.531250 0.718750 0
+0.546875 0.718750 0
+0.546875 0.703125 0
+0.562500 0.703125 0
+0.546875 0.718750 0
+0.562500 0.718750 0
+0.500000 0.718750 0
+0.515625 0.718750 0
+0.500000 0.734375 0
+0.515625 0.734375 0
+0.515625 0.718750 0
+0.531250 0.718750 0
+0.515625 0.734375 0
+0.531250 0.734375 0
+0.500000 0.734375 0
+0.515625 0.734375 0
+0.500000 0.750000 0
+0.515625 0.750000 0
+0.515625 0.734375 0
+0.531250 0.734375 0
+0.515625 0.750000 0
+0.531250 0.750000 0
+0.281250 0.125000 0
+0.296875 0.125000 0
+0.281250 0.140625 0
+0.296875 0.140625 0
+0.296875 0.125000 0
+0.312500 0.125000 0
+0.296875 0.140625 0
+0.312500 0.140625 0
+0.281250 0.140625 0
+0.296875 0.140625 0
+0.281250 0.156250 0
+0.296875 0.156250 0
+0.296875 0.140625 0
+0.312500 0.140625 0
+0.296875 0.156250 0
+0.312500 0.156250 0
+0.250000 0.156250 0
+0.265625 0.156250 0
+0.250000 0.171875 0
+0.265625 0.171875 0
+0.265625 0.156250 0
+0.281250 0.156250 0
+0.265625 0.171875 0
+0.281250 0.171875 0
+0.250000 0.171875 0
+0.265625 0.171875 0
+0.250000 0.187500 0
+0.265625 0.187500 0
+0.265625 0.171875 0
+0.281250 0.171875 0
+0.265625 0.187500 0
+0.281250 0.187500 0
+0.812500 0.312500 0
+0.828125 0.312500 0
+0.812500 0.328125 0
+0.828125 0.328125 0
+0.828125 0.312500 0
+0.843750 0.312500 0
+0.828125 0.328125 0
+0.843750 0.328125 0
+0.812500 0.328125 0
+0.828125 0.328125 0
+0.812500 0.343750 0
+0.828125 0.343750 0
+0.828125 0.328125 0
+0.843750 0.328125 0
+0.828125 0.343750 0
+0.843750 0.343750 0
+0.843750 0.343750 0
+0.859375 0.343750 0
+0.843750 0.359375 0
+0.859375 0.359375 0
+0.859375 0.343750 0
+0.875000 0.343750 0
+0.859375 0.359375 0
+0.875000 0.359375 0
+0.843750 0.359375 0
+0.859375 0.359375 0
+0.843750 0.375000 0
+0.859375 0.375000 0
+0.859375 0.359375 0
+0.875000 0.359375 0
+0.859375 0.375000 0
+0.875000 0.375000 0
+0.00000 0.687500 0
+0.0156250 0.687500 0
+0.00000 0.703125 0
+0.0156250 0.703125 0
+0.0156250 0.687500 0
+0.0312500 0.687500 0
+0.0156250 0.703125 0
+0.0312500 0.703125 0
+0.00000 0.703125 0
+0.0156250 0.703125 0
+0.00000 0.718750 0
+0.0156250 0.718750 0
+0.0156250 0.703125 0
+0.0312500 0.703125 0
+0.0156250 0.718750 0
+0.0312500 0.718750 0
+0.593750 0.843750 0
+0.609375 0.843750 0
+0.593750 0.859375 0
+0.609375 0.859375 0
+0.609375 0.843750 0
+0.625000 0.843750 0
+0.609375 0.859375 0
+0.625000 0.859375 0
+0.593750 0.859375 0
+0.609375 0.859375 0
+0.593750 0.875000 0
+0.609375 0.875000 0
+0.609375 0.859375 0
+0.625000 0.859375 0
+0.609375 0.875000 0
+0.625000 0.875000 0
+0.187500 0.00000 0
+0.203125 0.00000 0
+0.187500 0.0156250 0
+0.203125 0.0156250 0
+0.203125 0.00000 0
+0.218750 0.00000 0
+0.203125 0.0156250 0
+0.218750 0.0156250 0
+0.187500 0.0156250 0
+0.203125 0.0156250 0
+0.187500 0.0312500 0
+0.203125 0.0312500 0
+0.203125 0.0156250 0
+0.218750 0.0156250 0
+0.203125 0.0312500 0
+0.218750 0.0312500 0
+0.187500 0.187500 0
+0.203125 0.187500 0
+0.187500 0.203125 0
+0.203125 0.203125 0
+0.203125 0.187500 0
+0.218750 0.187500 0
+0.203125 0.203125 0
+0.218750 0.203125 0
+0.187500 0.203125 0
+0.203125 0.203125 0
+0.187500 0.218750 0
+0.203125 0.218750 0
+0.203125 0.203125 0
+0.218750 0.203125 0
+0.203125 0.218750 0
+0.218750 0.218750 0
+0.562500 0.500000 0
+0.578125 0.500000 0
+0.562500 0.515625 0
+0.578125 0.515625 0
+0.578125 0.500000 0
+0.593750 0.500000 0
+0.578125 0.515625 0
+0.593750 0.515625 0
+0.562500 0.515625 0
+0.578125 0.515625 0
+0.562500 0.531250 0
+0.578125 0.531250 0
+0.578125 0.515625 0
+0.593750 0.515625 0
+0.578125 0.531250 0
+0.593750 0.531250 0
+0.593750 0.531250 0
+0.609375 0.531250 0
+0.593750 0.546875 0
+0.609375 0.546875 0
+0.609375 0.531250 0
+0.625000 0.531250 0
+0.609375 0.546875 0
+0.625000 0.546875 0
+0.593750 0.546875 0
+0.609375 0.546875 0
+0.593750 0.562500 0
+0.609375 0.562500 0
+0.609375 0.546875 0
+0.625000 0.546875 0
+0.609375 0.562500 0
+0.625000 0.562500 0
+0.562500 0.562500 0
+0.578125 0.562500 0
+0.562500 0.578125 0
+0.578125 0.578125 0
+0.578125 0.562500 0
+0.593750 0.562500 0
+0.578125 0.578125 0
+0.593750 0.578125 0
+0.562500 0.578125 0
+0.578125 0.578125 0
+0.562500 0.593750 0
+0.578125 0.593750 0
+0.578125 0.578125 0
+0.593750 0.578125 0
+0.578125 0.593750 0
+0.593750 0.593750 0
+0.562500 0.593750 0
+0.578125 0.593750 0
+0.562500 0.609375 0
+0.578125 0.609375 0
+0.578125 0.593750 0
+0.593750 0.593750 0
+0.578125 0.609375 0
+0.593750 0.609375 0
+0.562500 0.609375 0
+0.578125 0.609375 0
+0.562500 0.625000 0
+0.578125 0.625000 0
+0.578125 0.609375 0
+0.593750 0.609375 0
+0.578125 0.625000 0
+0.593750 0.625000 0
+0.312500 0.0625000 0
+0.328125 0.0625000 0
+0.312500 0.0781250 0
+0.328125 0.0781250 0
+0.328125 0.0625000 0
+0.343750 0.0625000 0
+0.328125 0.0781250 0
+0.343750 0.0781250 0
+0.312500 0.0781250 0
+0.328125 0.0781250 0
+0.312500 0.0937500 0
+0.328125 0.0937500 0
+0.328125 0.0781250 0
+0.343750 0.0781250 0
+0.328125 0.0937500 0
+0.343750 0.0937500 0
+0.687500 0.218750 0
+0.703125 0.218750 0
+0.687500 0.234375 0
+0.703125 0.234375 0
+0.703125 0.218750 0
+0.718750 0.218750 0
+0.703125 0.234375 0
+0.718750 0.234375 0
+0.687500 0.234375 0
+0.703125 0.234375 0
+0.687500 0.250000 0
+0.703125 0.250000 0
+0.703125 0.234375 0
+0.718750 0.234375 0
+0.703125 0.250000 0
+0.718750 0.250000 0
+0.718750 0.218750 0
+0.734375 0.218750 0
+0.718750 0.234375 0
+0.734375 0.234375 0
+0.734375 0.218750 0
+0.750000 0.218750 0
+0.734375 0.234375 0
+0.750000 0.234375 0
+0.718750 0.234375 0
+0.734375 0.234375 0
+0.718750 0.250000 0
+0.734375 0.250000 0
+0.734375 0.234375 0
+0.750000 0.234375 0
+0.734375 0.250000 0
+0.750000 0.250000 0
+0.0625000 0.500000 0
+0.0781250 0.500000 0
+0.0625000 0.515625 0
+0.0781250 0.515625 0
+0.0781250 0.500000 0
+0.0937500 0.500000 0
+0.0781250 0.515625 0
+0.0937500 0.515625 0
+0.0625000 0.515625 0
+0.0781250 0.515625 0
+0.0625000 0.531250 0
+0.0781250 0.531250 0
+0.0781250 0.515625 0
+0.0937500 0.515625 0
+0.0781250 0.531250 0
+0.0937500 0.531250 0
+0.187500 0.718750 0
+0.203125 0.718750 0
+0.187500 0.734375 0
+0.203125 0.734375 0
+0.203125 0.718750 0
+0.218750 0.718750 0
+0.203125 0.734375 0
+0.218750 0.734375 0
+0.187500 0.734375 0
+0.203125 0.734375 0
+0.187500 0.750000 0
+0.203125 0.750000 0
+0.203125 0.734375 0
+0.218750 0.734375 0
+0.203125 0.750000 0
+0.218750 0.750000 0
+0.312500 0.343750 0
+0.328125 0.343750 0
+0.312500 0.359375 0
+0.328125 0.359375 0
+0.328125 0.343750 0
+0.343750 0.343750 0
+0.328125 0.359375 0
+0.343750 0.359375 0
+0.312500 0.359375 0
+0.328125 0.359375 0
+0.312500 0.375000 0
+0.328125 0.375000 0
+0.328125 0.359375 0
+0.343750 0.359375 0
+0.328125 0.375000 0
+0.343750 0.375000 0
+0.468750 0.500000 0
+0.484375 0.500000 0
+0.468750 0.515625 0
+0.484375 0.515625 0
+0.484375 0.500000 0
+0.500000 0.500000 0
+0.484375 0.515625 0
+0.500000 0.515625 0
+0.468750 0.515625 0
+0.484375 0.515625 0
+0.468750 0.531250 0
+0.484375 0.531250 0
+0.484375 0.515625 0
+0.500000 0.515625 0
+0.484375 0.531250 0
+0.500000 0.531250 0
+0.437500 0.531250 0
+0.453125 0.531250 0
+0.437500 0.546875 0
+0.453125 0.546875 0
+0.453125 0.531250 0
+0.468750 0.531250 0
+0.453125 0.546875 0
+0.468750 0.546875 0
+0.437500 0.546875 0
+0.453125 0.546875 0
+0.437500 0.562500 0
+0.453125 0.562500 0
+0.453125 0.546875 0
+0.468750 0.546875 0
+0.453125 0.562500 0
+0.468750 0.562500 0
+0.468750 0.625000 0
+0.484375 0.625000 0
+0.468750 0.640625 0
+0.484375 0.640625 0
+0.484375 0.625000 0
+0.500000 0.625000 0
+0.484375 0.640625 0
+0.500000 0.640625 0
+0.468750 0.640625 0
+0.484375 0.640625 0
+0.468750 0.656250 0
+0.484375 0.656250 0
+0.484375 0.640625 0
+0.500000 0.640625 0
+0.484375 0.656250 0
+0.500000 0.656250 0
+0.437500 0.687500 0
+0.453125 0.687500 0
+0.437500 0.703125 0
+0.453125 0.703125 0
+0.453125 0.687500 0
+0.468750 0.687500 0
+0.453125 0.703125 0
+0.468750 0.703125 0
+0.437500 0.703125 0
+0.453125 0.703125 0
+0.437500 0.718750 0
+0.453125 0.718750 0
+0.453125 0.703125 0
+0.468750 0.703125 0
+0.453125 0.718750 0
+0.468750 0.718750 0
+0.468750 0.718750 0
+0.484375 0.718750 0
+0.468750 0.734375 0
+0.484375 0.734375 0
+0.484375 0.718750 0
+0.500000 0.718750 0
+0.484375 0.734375 0
+0.500000 0.734375 0
+0.468750 0.734375 0
+0.484375 0.734375 0
+0.468750 0.750000 0
+0.484375 0.750000 0
+0.484375 0.734375 0
+0.500000 0.734375 0
+0.484375 0.750000 0
+0.500000 0.750000 0
+0.437500 0.750000 0
+0.453125 0.750000 0
+0.437500 0.765625 0
+0.453125 0.765625 0
+0.453125 0.750000 0
+0.468750 0.750000 0
+0.453125 0.765625 0
+0.468750 0.765625 0
+0.437500 0.765625 0
+0.453125 0.765625 0
+0.437500 0.781250 0
+0.453125 0.781250 0
+0.453125 0.765625 0
+0.468750 0.765625 0
+0.453125 0.781250 0
+0.468750 0.781250 0
+0.656250 0.343750 0
+0.671875 0.343750 0
+0.656250 0.359375 0
+0.671875 0.359375 0
+0.671875 0.343750 0
+0.687500 0.343750 0
+0.671875 0.359375 0
+0.687500 0.359375 0
+0.656250 0.359375 0
+0.671875 0.359375 0
+0.656250 0.375000 0
+0.671875 0.375000 0
+0.671875 0.359375 0
+0.687500 0.359375 0
+0.671875 0.375000 0
+0.687500 0.375000 0
+0.718750 0.625000 0
+0.734375 0.625000 0
+0.718750 0.640625 0
+0.734375 0.640625 0
+0.734375 0.625000 0
+0.750000 0.625000 0
+0.734375 0.640625 0
+0.750000 0.640625 0
+0.718750 0.640625 0
+0.734375 0.640625 0
+0.718750 0.656250 0
+0.734375 0.656250 0
+0.734375 0.640625 0
+0.750000 0.640625 0
+0.734375 0.656250 0
+0.750000 0.656250 0
+0.0937500 0.0937500 0
+0.109375 0.0937500 0
+0.0937500 0.109375 0
+0.109375 0.109375 0
+0.109375 0.0937500 0
+0.125000 0.0937500 0
+0.109375 0.109375 0
+0.125000 0.109375 0
+0.0937500 0.109375 0
+0.109375 0.109375 0
+0.0937500 0.125000 0
+0.109375 0.125000 0
+0.109375 0.109375 0
+0.125000 0.109375 0
+0.109375 0.125000 0
+0.125000 0.125000 0
+0.718750 0.500000 0
+0.734375 0.500000 0
+0.718750 0.515625 0
+0.734375 0.515625 0
+0.734375 0.500000 0
+0.750000 0.500000 0
+0.734375 0.515625 0
+0.750000 0.515625 0
+0.718750 0.515625 0
+0.734375 0.515625 0
+0.718750 0.531250 0
+0.734375 0.531250 0
+0.734375 0.515625 0
+0.750000 0.515625 0
+0.734375 0.531250 0
+0.750000 0.531250 0
+0.593750 0.718750 0
+0.609375 0.718750 0
+0.593750 0.734375 0
+0.609375 0.734375 0
+0.609375 0.718750 0
+0.625000 0.718750 0
+0.609375 0.734375 0
+0.625000 0.734375 0
+0.593750 0.734375 0
+0.609375 0.734375 0
+0.593750 0.750000 0
+0.609375 0.750000 0
+0.609375 0.734375 0
+0.625000 0.734375 0
+0.609375 0.750000 0
+0.625000 0.750000 0
+0.343750 0.187500 0
+0.359375 0.187500 0
+0.343750 0.203125 0
+0.359375 0.203125 0
+0.359375 0.187500 0
+0.375000 0.187500 0
+0.359375 0.203125 0
+0.375000 0.203125 0
+0.343750 0.203125 0
+0.359375 0.203125 0
+0.343750 0.218750 0
+0.359375 0.218750 0
+0.359375 0.203125 0
+0.375000 0.203125 0
+0.359375 0.218750 0
+0.375000 0.218750 0
+0.843750 0.281250 0
+0.859375 0.281250 0
+0.843750 0.296875 0
+0.859375 0.296875 0
+0.859375 0.281250 0
+0.875000 0.281250 0
+0.859375 0.296875 0
+0.875000 0.296875 0
+0.843750 0.296875 0
+0.859375 0.296875 0
+0.843750 0.312500 0
+0.859375 0.312500 0
+0.859375 0.296875 0
+0.875000 0.296875 0
+0.859375 0.312500 0
+0.875000 0.312500 0
+0.531250 0.750000 0
+0.546875 0.750000 0
+0.531250 0.765625 0
+0.546875 0.765625 0
+0.546875 0.750000 0
+0.562500 0.750000 0
+0.546875 0.765625 0
+0.562500 0.765625 0
+0.531250 0.765625 0
+0.546875 0.765625 0
+0.531250 0.781250 0
+0.546875 0.781250 0
+0.546875 0.765625 0
+0.562500 0.765625 0
+0.546875 0.781250 0
+0.562500 0.781250 0
+0.156250 0.0312500 0
+0.171875 0.0312500 0
+0.156250 0.0468750 0
+0.171875 0.0468750 0
+0.171875 0.0312500 0
+0.187500 0.0312500 0
+0.171875 0.0468750 0
+0.187500 0.0468750 0
+0.156250 0.0468750 0
+0.171875 0.0468750 0
+0.156250 0.0625000 0
+0.171875 0.0625000 0
+0.171875 0.0468750 0
+0.187500 0.0468750 0
+0.171875 0.0625000 0
+0.187500 0.0625000 0
+0.531250 0.375000 0
+0.546875 0.375000 0
+0.531250 0.390625 0
+0.546875 0.390625 0
+0.546875 0.375000 0
+0.562500 0.375000 0
+0.546875 0.390625 0
+0.562500 0.390625 0
+0.531250 0.390625 0
+0.546875 0.390625 0
+0.531250 0.406250 0
+0.546875 0.406250 0
+0.546875 0.390625 0
+0.562500 0.390625 0
+0.546875 0.406250 0
+0.562500 0.406250 0
+0.531250 0.531250 0
+0.546875 0.531250 0
+0.531250 0.546875 0
+0.546875 0.546875 0
+0.546875 0.531250 0
+0.562500 0.531250 0
+0.546875 0.546875 0
+0.562500 0.546875 0
+0.531250 0.546875 0
+0.546875 0.546875 0
+0.531250 0.562500 0
+0.546875 0.562500 0
+0.546875 0.546875 0
+0.562500 0.546875 0
+0.546875 0.562500 0
+0.562500 0.562500 0
+0.656250 0.187500 0
+0.671875 0.187500 0
+0.656250 0.203125 0
+0.671875 0.203125 0
+0.671875 0.187500 0
+0.687500 0.187500 0
+0.671875 0.203125 0
+0.687500 0.203125 0
+0.656250 0.203125 0
+0.671875 0.203125 0
+0.656250 0.218750 0
+0.671875 0.218750 0
+0.671875 0.203125 0
+0.687500 0.203125 0
+0.671875 0.218750 0
+0.687500 0.218750 0
+0.0312500 0.531250 0
+0.0468750 0.531250 0
+0.0312500 0.546875 0
+0.0468750 0.546875 0
+0.0468750 0.531250 0
+0.0625000 0.531250 0
+0.0468750 0.546875 0
+0.0625000 0.546875 0
+0.0312500 0.546875 0
+0.0468750 0.546875 0
+0.0312500 0.562500 0
+0.0468750 0.562500 0
+0.0468750 0.546875 0
+0.0625000 0.546875 0
+0.0468750 0.562500 0
+0.0625000 0.562500 0
+0.531250 0.875000 0
+0.546875 0.875000 0
+0.531250 0.890625 0
+0.546875 0.890625 0
+0.546875 0.875000 0
+0.562500 0.875000 0
+0.546875 0.890625 0
+0.562500 0.890625 0
+0.531250 0.890625 0
+0.546875 0.890625 0
+0.531250 0.906250 0
+0.546875 0.906250 0
+0.546875 0.890625 0
+0.562500 0.890625 0
+0.546875 0.906250 0
+0.562500 0.906250 0
+0.218750 0.343750 0
+0.234375 0.343750 0
+0.218750 0.359375 0
+0.234375 0.359375 0
+0.234375 0.343750 0
+0.250000 0.343750 0
+0.234375 0.359375 0
+0.250000 0.359375 0
+0.218750 0.359375 0
+0.234375 0.359375 0
+0.218750 0.375000 0
+0.234375 0.375000 0
+0.234375 0.359375 0
+0.250000 0.359375 0
+0.234375 0.375000 0
+0.250000 0.375000 0
+0.250000 0.250000 0
+0.265625 0.250000 0
+0.250000 0.265625 0
+0.265625 0.265625 0
+0.265625 0.250000 0
+0.281250 0.250000 0
+0.265625 0.265625 0
+0.281250 0.265625 0
+0.250000 0.265625 0
+0.265625 0.265625 0
+0.250000 0.281250 0
+0.265625 0.281250 0
+0.265625 0.265625 0
+0.281250 0.265625 0
+0.265625 0.281250 0
+0.281250 0.281250 0
+0.343750 0.250000 0
+0.359375 0.250000 0
+0.343750 0.265625 0
+0.359375 0.265625 0
+0.359375 0.250000 0
+0.375000 0.250000 0
+0.359375 0.265625 0
+0.375000 0.265625 0
+0.343750 0.265625 0
+0.359375 0.265625 0
+0.343750 0.281250 0
+0.359375 0.281250 0
+0.359375 0.265625 0
+0.375000 0.265625 0
+0.359375 0.281250 0
+0.375000 0.281250 0
+0.406250 0.468750 0
+0.421875 0.468750 0
+0.406250 0.484375 0
+0.421875 0.484375 0
+0.421875 0.468750 0
+0.437500 0.468750 0
+0.421875 0.484375 0
+0.437500 0.484375 0
+0.406250 0.484375 0
+0.421875 0.484375 0
+0.406250 0.500000 0
+0.421875 0.500000 0
+0.421875 0.484375 0
+0.437500 0.484375 0
+0.421875 0.500000 0
+0.437500 0.500000 0
+0.406250 0.687500 0
+0.421875 0.687500 0
+0.406250 0.703125 0
+0.421875 0.703125 0
+0.421875 0.687500 0
+0.437500 0.687500 0
+0.421875 0.703125 0
+0.437500 0.703125 0
+0.406250 0.703125 0
+0.421875 0.703125 0
+0.406250 0.718750 0
+0.421875 0.718750 0
+0.421875 0.703125 0
+0.437500 0.703125 0
+0.421875 0.718750 0
+0.437500 0.718750 0
+0.406250 0.843750 0
+0.421875 0.843750 0
+0.406250 0.859375 0
+0.421875 0.859375 0
+0.421875 0.843750 0
+0.437500 0.843750 0
+0.421875 0.859375 0
+0.437500 0.859375 0
+0.406250 0.859375 0
+0.421875 0.859375 0
+0.406250 0.875000 0
+0.421875 0.875000 0
+0.421875 0.859375 0
+0.437500 0.859375 0
+0.421875 0.875000 0
+0.437500 0.875000 0
+0.0312500 0.125000 0
+0.0468750 0.125000 0
+0.0312500 0.140625 0
+0.0468750 0.140625 0
+0.0468750 0.125000 0
+0.0625000 0.125000 0
+0.0468750 0.140625 0
+0.0625000 0.140625 0
+0.0312500 0.140625 0
+0.0468750 0.140625 0
+0.0312500 0.156250 0
+0.0468750 0.156250 0
+0.0468750 0.140625 0
+0.0625000 0.140625 0
+0.0468750 0.156250 0
+0.0625000 0.156250 0
+0.531250 0.281250 0
+0.546875 0.281250 0
+0.531250 0.296875 0
+0.546875 0.296875 0
+0.546875 0.281250 0
+0.562500 0.281250 0
+0.546875 0.296875 0
+0.562500 0.296875 0
+0.531250 0.296875 0
+0.546875 0.296875 0
+0.531250 0.312500 0
+0.546875 0.312500 0
+0.546875 0.296875 0
+0.562500 0.296875 0
+0.546875 0.312500 0
+0.562500 0.312500 0
+0.906250 0.250000 0
+0.921875 0.250000 0
+0.906250 0.265625 0
+0.921875 0.265625 0
+0.921875 0.250000 0
+0.937500 0.250000 0
+0.921875 0.265625 0
+0.937500 0.265625 0
+0.906250 0.265625 0
+0.921875 0.265625 0
+0.906250 0.281250 0
+0.921875 0.281250 0
+0.921875 0.265625 0
+0.937500 0.265625 0
+0.921875 0.281250 0
+0.937500 0.281250 0
+0.906250 0.343750 0
+0.921875 0.343750 0
+0.906250 0.359375 0
+0.921875 0.359375 0
+0.921875 0.343750 0
+0.937500 0.343750 0
+0.921875 0.359375 0
+0.937500 0.359375 0
+0.906250 0.359375 0
+0.921875 0.359375 0
+0.906250 0.375000 0
+0.921875 0.375000 0
+0.921875 0.359375 0
+0.937500 0.359375 0
+0.921875 0.375000 0
+0.937500 0.375000 0
+0.156250 0.500000 0
+0.171875 0.500000 0
+0.156250 0.515625 0
+0.171875 0.515625 0
+0.171875 0.500000 0
+0.187500 0.500000 0
+0.171875 0.515625 0
+0.187500 0.515625 0
+0.156250 0.515625 0
+0.171875 0.515625 0
+0.156250 0.531250 0
+0.171875 0.531250 0
+0.171875 0.515625 0
+0.187500 0.515625 0
+0.171875 0.531250 0
+0.187500 0.531250 0
+0.906250 0.531250 0
+0.921875 0.531250 0
+0.906250 0.546875 0
+0.921875 0.546875 0
+0.921875 0.531250 0
+0.937500 0.531250 0
+0.921875 0.546875 0
+0.937500 0.546875 0
+0.906250 0.546875 0
+0.921875 0.546875 0
+0.906250 0.562500 0
+0.921875 0.562500 0
+0.921875 0.546875 0
+0.937500 0.546875 0
+0.921875 0.562500 0
+0.937500 0.562500 0
+0.906250 0.750000 0
+0.921875 0.750000 0
+0.906250 0.765625 0
+0.921875 0.765625 0
+0.921875 0.750000 0
+0.937500 0.750000 0
+0.921875 0.765625 0
+0.937500 0.765625 0
+0.906250 0.765625 0
+0.921875 0.765625 0
+0.906250 0.781250 0
+0.921875 0.781250 0
+0.921875 0.765625 0
+0.937500 0.765625 0
+0.921875 0.781250 0
+0.937500 0.781250 0
+0.0312500 0.468750 0
+0.0468750 0.468750 0
+0.0312500 0.484375 0
+0.0468750 0.484375 0
+0.0468750 0.468750 0
+0.0625000 0.468750 0
+0.0468750 0.484375 0
+0.0625000 0.484375 0
+0.0312500 0.484375 0
+0.0468750 0.484375 0
+0.0312500 0.500000 0
+0.0468750 0.500000 0
+0.0468750 0.484375 0
+0.0625000 0.484375 0
+0.0468750 0.500000 0
+0.0625000 0.500000 0
+0.0937500 0.468750 0
+0.109375 0.468750 0
+0.0937500 0.484375 0
+0.109375 0.484375 0
+0.109375 0.468750 0
+0.125000 0.468750 0
+0.109375 0.484375 0
+0.125000 0.484375 0
+0.0937500 0.484375 0
+0.109375 0.484375 0
+0.0937500 0.500000 0
+0.109375 0.500000 0
+0.109375 0.484375 0
+0.125000 0.484375 0
+0.109375 0.500000 0
+0.125000 0.500000 0
+0.406250 0.312500 0
+0.421875 0.312500 0
+0.406250 0.328125 0
+0.421875 0.328125 0
+0.421875 0.312500 0
+0.437500 0.312500 0
+0.421875 0.328125 0
+0.437500 0.328125 0
+0.406250 0.328125 0
+0.421875 0.328125 0
+0.406250 0.343750 0
+0.421875 0.343750 0
+0.421875 0.328125 0
+0.437500 0.328125 0
+0.421875 0.343750 0
+0.437500 0.343750 0
+0.281250 0.406250 0
+0.296875 0.406250 0
+0.281250 0.421875 0
+0.296875 0.421875 0
+0.296875 0.406250 0
+0.312500 0.406250 0
+0.296875 0.421875 0
+0.312500 0.421875 0
+0.281250 0.421875 0
+0.296875 0.421875 0
+0.281250 0.437500 0
+0.296875 0.437500 0
+0.296875 0.421875 0
+0.312500 0.421875 0
+0.296875 0.437500 0
+0.312500 0.437500 0
+0.281250 0.687500 0
+0.296875 0.687500 0
+0.281250 0.703125 0
+0.296875 0.703125 0
+0.296875 0.687500 0
+0.312500 0.687500 0
+0.296875 0.703125 0
+0.312500 0.703125 0
+0.281250 0.703125 0
+0.296875 0.703125 0
+0.281250 0.718750 0
+0.296875 0.718750 0
+0.296875 0.703125 0
+0.312500 0.703125 0
+0.296875 0.718750 0
+0.312500 0.718750 0
+0.0312500 0.781250 0
+0.0468750 0.781250 0
+0.0312500 0.796875 0
+0.0468750 0.796875 0
+0.0468750 0.781250 0
+0.0625000 0.781250 0
+0.0468750 0.796875 0
+0.0625000 0.796875 0
+0.0312500 0.796875 0
+0.0468750 0.796875 0
+0.0312500 0.812500 0
+0.0468750 0.812500 0
+0.0468750 0.796875 0
+0.0625000 0.796875 0
+0.0468750 0.812500 0
+0.0625000 0.812500 0
+0.218750 0.750000 0
+0.234375 0.750000 0
+0.218750 0.765625 0
+0.234375 0.765625 0
+0.234375 0.750000 0
+0.250000 0.750000 0
+0.234375 0.765625 0
+0.250000 0.765625 0
+0.218750 0.765625 0
+0.234375 0.765625 0
+0.218750 0.781250 0
+0.234375 0.781250 0
+0.234375 0.765625 0
+0.250000 0.765625 0
+0.234375 0.781250 0
+0.250000 0.781250 0
+0.156250 0.812500 0
+0.171875 0.812500 0
+0.156250 0.828125 0
+0.171875 0.828125 0
+0.171875 0.812500 0
+0.187500 0.812500 0
+0.171875 0.828125 0
+0.187500 0.828125 0
+0.156250 0.828125 0
+0.171875 0.828125 0
+0.156250 0.843750 0
+0.171875 0.843750 0
+0.171875 0.828125 0
+0.187500 0.828125 0
+0.171875 0.843750 0
+0.187500 0.843750 0
+0.632812 0.632812 0
+0.640625 0.632812 0
+0.632812 0.640625 0
+0.640625 0.640625 0
+0.687500 0.265625 0
+0.695312 0.265625 0
+0.687500 0.273438 0
+0.695312 0.273438 0
+0.695312 0.265625 0
+0.703125 0.265625 0
+0.695312 0.273438 0
+0.703125 0.273438 0
+0.687500 0.273438 0
+0.695312 0.273438 0
+0.687500 0.281250 0
+0.695312 0.281250 0
+0.625000 0.562500 0
+0.632812 0.562500 0
+0.625000 0.570312 0
+0.632812 0.570312 0
+0.632812 0.562500 0
+0.640625 0.562500 0
+0.632812 0.570312 0
+0.640625 0.570312 0
+0.625000 0.570312 0
+0.632812 0.570312 0
+0.625000 0.578125 0
+0.632812 0.578125 0
+0.632812 0.570312 0
+0.640625 0.570312 0
+0.632812 0.578125 0
+0.640625 0.578125 0
+0.625000 0.609375 0
+0.632812 0.609375 0
+0.625000 0.617188 0
+0.632812 0.617188 0
+0.625000 0.617188 0
+0.632812 0.617188 0
+0.625000 0.625000 0
+0.632812 0.625000 0
+0.632812 0.617188 0
+0.640625 0.617188 0
+0.632812 0.625000 0
+0.640625 0.625000 0
+0.593750 0.625000 0
+0.601562 0.625000 0
+0.593750 0.632812 0
+0.601562 0.632812 0
+0.601562 0.625000 0
+0.609375 0.625000 0
+0.601562 0.632812 0
+0.609375 0.632812 0
+0.593750 0.632812 0
+0.601562 0.632812 0
+0.593750 0.640625 0
+0.601562 0.640625 0
+0.609375 0.625000 0
+0.617188 0.625000 0
+0.609375 0.632812 0
+0.617188 0.632812 0
+0.617188 0.625000 0
+0.625000 0.625000 0
+0.617188 0.632812 0
+0.625000 0.632812 0
+0.609375 0.632812 0
+0.617188 0.632812 0
+0.609375 0.640625 0
+0.617188 0.640625 0
+0.617188 0.632812 0
+0.625000 0.632812 0
+0.617188 0.640625 0
+0.625000 0.640625 0
+0.250000 0.203125 0
+0.257812 0.203125 0
+0.250000 0.210938 0
+0.257812 0.210938 0
+0.250000 0.210938 0
+0.257812 0.210938 0
+0.250000 0.218750 0
+0.257812 0.218750 0
+0.257812 0.210938 0
+0.265625 0.210938 0
+0.257812 0.218750 0
+0.265625 0.218750 0
+0.640625 0.625000 0
+0.648438 0.625000 0
+0.640625 0.632812 0
+0.648438 0.632812 0
+0.648438 0.625000 0
+0.656250 0.625000 0
+0.648438 0.632812 0
+0.656250 0.632812 0
+0.640625 0.632812 0
+0.648438 0.632812 0
+0.640625 0.640625 0
+0.648438 0.640625 0
+0.648438 0.632812 0
+0.656250 0.632812 0
+0.648438 0.640625 0
+0.656250 0.640625 0
+0.625000 0.640625 0
+0.632812 0.640625 0
+0.625000 0.648438 0
+0.632812 0.648438 0
+0.632812 0.640625 0
+0.640625 0.640625 0
+0.632812 0.648438 0
+0.640625 0.648438 0
+0.625000 0.648438 0
+0.632812 0.648438 0
+0.625000 0.656250 0
+0.632812 0.656250 0
+0.632812 0.648438 0
+0.640625 0.648438 0
+0.632812 0.656250 0
+0.640625 0.656250 0
+0.687500 0.250000 0
+0.695312 0.250000 0
+0.687500 0.257812 0
+0.695312 0.257812 0
+0.695312 0.250000 0
+0.703125 0.250000 0
+0.695312 0.257812 0
+0.703125 0.257812 0
+0.687500 0.257812 0
+0.695312 0.257812 0
+0.687500 0.265625 0
+0.695312 0.265625 0
+0.695312 0.257812 0
+0.703125 0.257812 0
+0.695312 0.265625 0
+0.703125 0.265625 0
+0.703125 0.265625 0
+0.710938 0.265625 0
+0.703125 0.273438 0
+0.710938 0.273438 0
+0.710938 0.265625 0
+0.718750 0.265625 0
+0.710938 0.273438 0
+0.718750 0.273438 0
+0.703125 0.273438 0
+0.710938 0.273438 0
+0.703125 0.281250 0
+0.710938 0.281250 0
+0.710938 0.273438 0
+0.718750 0.273438 0
+0.710938 0.281250 0
+0.718750 0.281250 0
+0.0156250 0.0468750 0
+0.0234375 0.0468750 0
+0.0156250 0.0546875 0
+0.0234375 0.0546875 0
+0.0234375 0.0468750 0
+0.0312500 0.0468750 0
+0.0234375 0.0546875 0
+0.0312500 0.0546875 0
+0.0156250 0.0546875 0
+0.0234375 0.0546875 0
+0.0156250 0.0625000 0
+0.0234375 0.0625000 0
+0.0234375 0.0546875 0
+0.0312500 0.0546875 0
+0.0234375 0.0625000 0
+0.0312500 0.0625000 0
+0.625000 0.593750 0
+0.632812 0.593750 0
+0.625000 0.601562 0
+0.632812 0.601562 0
+0.632812 0.593750 0
+0.640625 0.593750 0
+0.632812 0.601562 0
+0.640625 0.601562 0
+0.625000 0.601562 0
+0.632812 0.601562 0
+0.625000 0.609375 0
+0.632812 0.609375 0
+0.632812 0.601562 0
+0.640625 0.601562 0
+0.632812 0.609375 0
+0.640625 0.609375 0
+0.640625 0.609375 0
+0.648438 0.609375 0
+0.640625 0.617188 0
+0.648438 0.617188 0
+0.648438 0.609375 0
+0.656250 0.609375 0
+0.648438 0.617188 0
+0.656250 0.617188 0
+0.640625 0.617188 0
+0.648438 0.617188 0
+0.640625 0.625000 0
+0.648438 0.625000 0
+0.648438 0.617188 0
+0.656250 0.617188 0
+0.648438 0.625000 0
+0.656250 0.625000 0
+0.593750 0.640625 0
+0.601562 0.640625 0
+0.593750 0.648438 0
+0.601562 0.648438 0
+0.601562 0.640625 0
+0.609375 0.640625 0
+0.601562 0.648438 0
+0.609375 0.648438 0
+0.593750 0.648438 0
+0.601562 0.648438 0
+0.593750 0.656250 0
+0.601562 0.656250 0
+0.601562 0.648438 0
+0.609375 0.648438 0
+0.601562 0.656250 0
+0.609375 0.656250 0
+0.609375 0.640625 0
+0.617188 0.640625 0
+0.609375 0.648438 0
+0.617188 0.648438 0
+0.617188 0.640625 0
+0.625000 0.640625 0
+0.617188 0.648438 0
+0.625000 0.648438 0
+0.609375 0.648438 0
+0.617188 0.648438 0
+0.609375 0.656250 0
+0.617188 0.656250 0
+0.617188 0.648438 0
+0.625000 0.648438 0
+0.617188 0.656250 0
+0.625000 0.656250 0
+0.250000 0.187500 0
+0.257812 0.187500 0
+0.250000 0.195312 0
+0.257812 0.195312 0
+0.257812 0.187500 0
+0.265625 0.187500 0
+0.257812 0.195312 0
+0.265625 0.195312 0
+0.250000 0.195312 0
+0.257812 0.195312 0
+0.250000 0.203125 0
+0.257812 0.203125 0
+0.257812 0.195312 0
+0.265625 0.195312 0
+0.257812 0.203125 0
+0.265625 0.203125 0
+0.265625 0.203125 0
+0.273438 0.203125 0
+0.265625 0.210938 0
+0.273438 0.210938 0
+0.273438 0.203125 0
+0.281250 0.203125 0
+0.273438 0.210938 0
+0.281250 0.210938 0
+0.265625 0.210938 0
+0.273438 0.210938 0
+0.265625 0.218750 0
+0.273438 0.218750 0
+0.273438 0.210938 0
+0.281250 0.210938 0
+0.273438 0.218750 0
+0.281250 0.218750 0
+0.00000 0.671875 0
+0.00781250 0.671875 0
+0.00000 0.679688 0
+0.00781250 0.679688 0
+0.00781250 0.671875 0
+0.0156250 0.671875 0
+0.00781250 0.679688 0
+0.0156250 0.679688 0
+0.00000 0.679688 0
+0.00781250 0.679688 0
+0.00000 0.687500 0
+0.00781250 0.687500 0
+0.00781250 0.679688 0
+0.0156250 0.679688 0
+0.00781250 0.687500 0
+0.0156250 0.687500 0
+0.687500 0.281250 0
+0.695312 0.281250 0
+0.687500 0.289062 0
+0.695312 0.289062 0
+0.695312 0.281250 0
+0.703125 0.281250 0
+0.695312 0.289062 0
+0.703125 0.289062 0
+0.687500 0.289062 0
+0.695312 0.289062 0
+0.687500 0.296875 0
+0.695312 0.296875 0
+0.695312 0.289062 0
+0.703125 0.289062 0
+0.695312 0.296875 0
+0.703125 0.296875 0
+0.00000 0.0156250 0
+0.00781250 0.0156250 0
+0.00000 0.0234375 0
+0.00781250 0.0234375 0
+0.00781250 0.0156250 0
+0.0156250 0.0156250 0
+0.00781250 0.0234375 0
+0.0156250 0.0234375 0
+0.00000 0.0234375 0
+0.00781250 0.0234375 0
+0.00000 0.0312500 0
+0.00781250 0.0312500 0
+0.00781250 0.0234375 0
+0.0156250 0.0234375 0
+0.00781250 0.0312500 0
+0.0156250 0.0312500 0
+0.562500 0.625000 0
+0.570312 0.625000 0
+0.562500 0.632812 0
+0.570312 0.632812 0
+0.570312 0.625000 0
+0.578125 0.625000 0
+0.570312 0.632812 0
+0.578125 0.632812 0
+0.562500 0.632812 0
+0.570312 0.632812 0
+0.562500 0.640625 0
+0.570312 0.640625 0
+0.570312 0.632812 0
+0.578125 0.632812 0
+0.570312 0.640625 0
+0.578125 0.640625 0
+0.250000 0.234375 0
+0.257812 0.234375 0
+0.250000 0.242188 0
+0.257812 0.242188 0
+0.257812 0.234375 0
+0.265625 0.234375 0
+0.257812 0.242188 0
+0.265625 0.242188 0
+0.250000 0.242188 0
+0.257812 0.242188 0
+0.250000 0.250000 0
+0.257812 0.250000 0
+0.257812 0.242188 0
+0.265625 0.242188 0
+0.257812 0.250000 0
+0.265625 0.250000 0
+0.531250 0.843750 0
+0.539062 0.843750 0
+0.531250 0.851562 0
+0.539062 0.851562 0
+0.539062 0.843750 0
+0.546875 0.843750 0
+0.539062 0.851562 0
+0.546875 0.851562 0
+0.531250 0.851562 0
+0.539062 0.851562 0
+0.531250 0.859375 0
+0.539062 0.859375 0
+0.539062 0.851562 0
+0.546875 0.851562 0
+0.539062 0.859375 0
+0.546875 0.859375 0
+0.656250 0.265625 0
+0.664062 0.265625 0
+0.656250 0.273438 0
+0.664062 0.273438 0
+0.664062 0.265625 0
+0.671875 0.265625 0
+0.664062 0.273438 0
+0.671875 0.273438 0
+0.656250 0.273438 0
+0.664062 0.273438 0
+0.656250 0.281250 0
+0.664062 0.281250 0
+0.664062 0.273438 0
+0.671875 0.273438 0
+0.664062 0.281250 0
+0.671875 0.281250 0
+0.0312500 0.0937500 0
+0.0390625 0.0937500 0
+0.0312500 0.101562 0
+0.0390625 0.101562 0
+0.0390625 0.0937500 0
+0.0468750 0.0937500 0
+0.0390625 0.101562 0
+0.0468750 0.101562 0
+0.0312500 0.101562 0
+0.0390625 0.101562 0
+0.0312500 0.109375 0
+0.0390625 0.109375 0
+0.0390625 0.101562 0
+0.0468750 0.101562 0
+0.0390625 0.109375 0
+0.0468750 0.109375 0
+0.656250 0.515625 0
+0.664062 0.515625 0
+0.656250 0.523438 0
+0.664062 0.523438 0
+0.664062 0.515625 0
+0.671875 0.515625 0
+0.664062 0.523438 0
+0.671875 0.523438 0
+0.656250 0.523438 0
+0.664062 0.523438 0
+0.656250 0.531250 0
+0.664062 0.531250 0
+0.664062 0.523438 0
+0.671875 0.523438 0
+0.664062 0.531250 0
+0.671875 0.531250 0
+0.531250 0.718750 0
+0.539062 0.718750 0
+0.531250 0.726562 0
+0.539062 0.726562 0
+0.539062 0.718750 0
+0.546875 0.718750 0
+0.539062 0.726562 0
+0.546875 0.726562 0
+0.531250 0.726562 0
+0.539062 0.726562 0
+0.531250 0.734375 0
+0.539062 0.734375 0
+0.539062 0.726562 0
+0.546875 0.726562 0
+0.539062 0.734375 0
+0.546875 0.734375 0
+0.843750 0.328125 0
+0.851562 0.328125 0
+0.843750 0.335938 0
+0.851562 0.335938 0
+0.851562 0.328125 0
+0.859375 0.328125 0
+0.851562 0.335938 0
+0.859375 0.335938 0
+0.843750 0.335938 0
+0.851562 0.335938 0
+0.843750 0.343750 0
+0.851562 0.343750 0
+0.851562 0.335938 0
+0.859375 0.335938 0
+0.851562 0.343750 0
+0.859375 0.343750 0
+0.218750 0.00000 0
+0.226562 0.00000 0
+0.218750 0.00781250 0
+0.226562 0.00781250 0
+0.226562 0.00000 0
+0.234375 0.00000 0
+0.226562 0.00781250 0
+0.234375 0.00781250 0
+0.218750 0.00781250 0
+0.226562 0.00781250 0
+0.218750 0.0156250 0
+0.226562 0.0156250 0
+0.226562 0.00781250 0
+0.234375 0.00781250 0
+0.226562 0.0156250 0
+0.234375 0.0156250 0
+0.218750 0.203125 0
+0.226562 0.203125 0
+0.218750 0.210938 0
+0.226562 0.210938 0
+0.226562 0.203125 0
+0.234375 0.203125 0
+0.226562 0.210938 0
+0.234375 0.210938 0
+0.218750 0.210938 0
+0.226562 0.210938 0
+0.218750 0.218750 0
+0.226562 0.218750 0
+0.226562 0.210938 0
+0.234375 0.210938 0
+0.226562 0.218750 0
+0.234375 0.218750 0
+0.593750 0.562500 0
+0.601562 0.562500 0
+0.593750 0.570312 0
+0.601562 0.570312 0
+0.601562 0.562500 0
+0.609375 0.562500 0
+0.601562 0.570312 0
+0.609375 0.570312 0
+0.593750 0.570312 0
+0.601562 0.570312 0
+0.593750 0.578125 0
+0.601562 0.578125 0
+0.601562 0.570312 0
+0.609375 0.570312 0
+0.601562 0.578125 0
+0.609375 0.578125 0
+0.593750 0.609375 0
+0.601562 0.609375 0
+0.593750 0.617188 0
+0.601562 0.617188 0
+0.601562 0.609375 0
+0.609375 0.609375 0
+0.601562 0.617188 0
+0.609375 0.617188 0
+0.593750 0.617188 0
+0.601562 0.617188 0
+0.593750 0.625000 0
+0.601562 0.625000 0
+0.601562 0.617188 0
+0.609375 0.617188 0
+0.601562 0.625000 0
+0.609375 0.625000 0
+0.0937500 0.500000 0
+0.101562 0.500000 0
+0.0937500 0.507812 0
+0.101562 0.507812 0
+0.101562 0.500000 0
+0.109375 0.500000 0
+0.101562 0.507812 0
+0.109375 0.507812 0
+0.0937500 0.507812 0
+0.101562 0.507812 0
+0.0937500 0.515625 0
+0.101562 0.515625 0
+0.101562 0.507812 0
+0.109375 0.507812 0
+0.101562 0.515625 0
+0.109375 0.515625 0
+0.218750 0.734375 0
+0.226562 0.734375 0
+0.218750 0.742188 0
+0.226562 0.742188 0
+0.226562 0.734375 0
+0.234375 0.734375 0
+0.226562 0.742188 0
+0.234375 0.742188 0
+0.218750 0.742188 0
+0.226562 0.742188 0
+0.218750 0.750000 0
+0.226562 0.750000 0
+0.226562 0.742188 0
+0.234375 0.742188 0
+0.226562 0.750000 0
+0.234375 0.750000 0
+0.468750 0.531250 0
+0.476562 0.531250 0
+0.468750 0.539062 0
+0.476562 0.539062 0
+0.476562 0.531250 0
+0.484375 0.531250 0
+0.476562 0.539062 0
+0.484375 0.539062 0
+0.468750 0.539062 0
+0.476562 0.539062 0
+0.468750 0.546875 0
+0.476562 0.546875 0
+0.476562 0.539062 0
+0.484375 0.539062 0
+0.476562 0.546875 0
+0.484375 0.546875 0
+0.468750 0.703125 0
+0.476562 0.703125 0
+0.468750 0.710938 0
+0.476562 0.710938 0
+0.476562 0.703125 0
+0.484375 0.703125 0
+0.476562 0.710938 0
+0.484375 0.710938 0
+0.468750 0.710938 0
+0.476562 0.710938 0
+0.468750 0.718750 0
+0.476562 0.718750 0
+0.476562 0.710938 0
+0.484375 0.710938 0
+0.476562 0.718750 0
+0.484375 0.718750 0
+0.625000 0.625000 0
+0.628906 0.625000 0
+0.625000 0.628906 0
+0.628906 0.628906 0
+0.628906 0.625000 0
+0.632812 0.625000 0
+0.628906 0.628906 0
+0.632812 0.628906 0
+0.625000 0.628906 0
+0.628906 0.628906 0
+0.625000 0.632812 0
+0.628906 0.632812 0
+0.632812 0.625000 0
+0.636719 0.625000 0
+0.632812 0.628906 0
+0.636719 0.628906 0
+0.636719 0.625000 0
+0.640625 0.625000 0
+0.636719 0.628906 0
+0.640625 0.628906 0
+0.632812 0.628906 0
+0.636719 0.628906 0
+0.632812 0.632812 0
+0.636719 0.632812 0
+0.636719 0.628906 0
+0.640625 0.628906 0
+0.636719 0.632812 0
+0.640625 0.632812 0
+0.625000 0.632812 0
+0.628906 0.632812 0
+0.625000 0.636719 0
+0.628906 0.636719 0
+0.628906 0.632812 0
+0.632812 0.632812 0
+0.628906 0.636719 0
+0.632812 0.636719 0
+0.625000 0.636719 0
+0.628906 0.636719 0
+0.625000 0.640625 0
+0.628906 0.640625 0
+0.628906 0.636719 0
+0.632812 0.636719 0
+0.628906 0.640625 0
+0.632812 0.640625 0
+0.695312 0.273438 0
+0.699219 0.273438 0
+0.695312 0.277344 0
+0.699219 0.277344 0
+0.699219 0.273438 0
+0.703125 0.273438 0
+0.699219 0.277344 0
+0.703125 0.277344 0
+0.695312 0.277344 0
+0.699219 0.277344 0
+0.695312 0.281250 0
+0.699219 0.281250 0
+0.699219 0.277344 0
+0.703125 0.277344 0
+0.699219 0.281250 0
+0.703125 0.281250 0
+0.632812 0.609375 0
+0.636719 0.609375 0
+0.632812 0.613281 0
+0.636719 0.613281 0
+0.636719 0.609375 0
+0.640625 0.609375 0
+0.636719 0.613281 0
+0.640625 0.613281 0
+0.632812 0.613281 0
+0.636719 0.613281 0
+0.632812 0.617188 0
+0.636719 0.617188 0
+0.636719 0.613281 0
+0.640625 0.613281 0
+0.636719 0.617188 0
+0.640625 0.617188 0
+0.601562 0.632812 0
+0.605469 0.632812 0
+0.601562 0.636719 0
+0.605469 0.636719 0
+0.605469 0.632812 0
+0.609375 0.632812 0
+0.605469 0.636719 0
+0.609375 0.636719 0
+0.601562 0.636719 0
+0.605469 0.636719 0
+0.601562 0.640625 0
+0.605469 0.640625 0
+0.605469 0.636719 0
+0.609375 0.636719 0
+0.605469 0.640625 0
+0.609375 0.640625 0
+0.257812 0.203125 0
+0.261719 0.203125 0
+0.257812 0.207031 0
+0.261719 0.207031 0
+0.261719 0.203125 0
+0.265625 0.203125 0
+0.261719 0.207031 0
+0.265625 0.207031 0
+0.257812 0.207031 0
+0.261719 0.207031 0
+0.257812 0.210938 0
+0.261719 0.210938 0
+0.261719 0.207031 0
+0.265625 0.207031 0
+0.261719 0.210938 0
+0.265625 0.210938 0
+0.628906 0.628906 0
+0.630859 0.628906 0
+0.628906 0.630859 0
+0.630859 0.630859 0
+0.630859 0.628906 0
+0.632812 0.628906 0
+0.630859 0.630859 0
+0.632812 0.630859 0
+0.628906 0.630859 0
+0.630859 0.630859 0
+0.628906 0.632812 0
+0.630859 0.632812 0
+0.630859 0.630859 0
+0.632812 0.630859 0
+0.630859 0.632812 0
+0.632812 0.632812 0
+
+CELLS 1186 5930
+4      0       1       3       2
+4      4       5       7       6
+4      8       9       11      10
+4      12      13      15      14
+4      16      17      19      18
+4      20      21      23      22
+4      24      25      27      26
+4      28      29      31      30
+4      32      33      35      34
+4      36      37      39      38
+4      40      41      43      42
+4      44      45      47      46
+4      48      49      51      50
+4      52      53      55      54
+4      56      57      59      58
+4      60      61      63      62
+4      64      65      67      66
+4      68      69      71      70
+4      72      73      75      74
+4      76      77      79      78
+4      80      81      83      82
+4      84      85      87      86
+4      88      89      91      90
+4      92      93      95      94
+4      96      97      99      98
+4      100     101     103     102
+4      104     105     107     106
+4      108     109     111     110
+4      112     113     115     114
+4      116     117     119     118
+4      120     121     123     122
+4      124     125     127     126
+4      128     129     131     130
+4      132     133     135     134
+4      136     137     139     138
+4      140     141     143     142
+4      144     145     147     146
+4      148     149     151     150
+4      152     153     155     154
+4      156     157     159     158
+4      160     161     163     162
+4      164     165     167     166
+4      168     169     171     170
+4      172     173     175     174
+4      176     177     179     178
+4      180     181     183     182
+4      184     185     187     186
+4      188     189     191     190
+4      192     193     195     194
+4      196     197     199     198
+4      200     201     203     202
+4      204     205     207     206
+4      208     209     211     210
+4      212     213     215     214
+4      216     217     219     218
+4      220     221     223     222
+4      224     225     227     226
+4      228     229     231     230
+4      232     233     235     234
+4      236     237     239     238
+4      240     241     243     242
+4      244     245     247     246
+4      248     249     251     250
+4      252     253     255     254
+4      256     257     259     258
+4      260     261     263     262
+4      264     265     267     266
+4      268     269     271     270
+4      272     273     275     274
+4      276     277     279     278
+4      280     281     283     282
+4      284     285     287     286
+4      288     289     291     290
+4      292     293     295     294
+4      296     297     299     298
+4      300     301     303     302
+4      304     305     307     306
+4      308     309     311     310
+4      312     313     315     314
+4      316     317     319     318
+4      320     321     323     322
+4      324     325     327     326
+4      328     329     331     330
+4      332     333     335     334
+4      336     337     339     338
+4      340     341     343     342
+4      344     345     347     346
+4      348     349     351     350
+4      352     353     355     354
+4      356     357     359     358
+4      360     361     363     362
+4      364     365     367     366
+4      368     369     371     370
+4      372     373     375     374
+4      376     377     379     378
+4      380     381     383     382
+4      384     385     387     386
+4      388     389     391     390
+4      392     393     395     394
+4      396     397     399     398
+4      400     401     403     402
+4      404     405     407     406
+4      408     409     411     410
+4      412     413     415     414
+4      416     417     419     418
+4      420     421     423     422
+4      424     425     427     426
+4      428     429     431     430
+4      432     433     435     434
+4      436     437     439     438
+4      440     441     443     442
+4      444     445     447     446
+4      448     449     451     450
+4      452     453     455     454
+4      456     457     459     458
+4      460     461     463     462
+4      464     465     467     466
+4      468     469     471     470
+4      472     473     475     474
+4      476     477     479     478
+4      480     481     483     482
+4      484     485     487     486
+4      488     489     491     490
+4      492     493     495     494
+4      496     497     499     498
+4      500     501     503     502
+4      504     505     507     506
+4      508     509     511     510
+4      512     513     515     514
+4      516     517     519     518
+4      520     521     523     522
+4      524     525     527     526
+4      528     529     531     530
+4      532     533     535     534
+4      536     537     539     538
+4      540     541     543     542
+4      544     545     547     546
+4      548     549     551     550
+4      552     553     555     554
+4      556     557     559     558
+4      560     561     563     562
+4      564     565     567     566
+4      568     569     571     570
+4      572     573     575     574
+4      576     577     579     578
+4      580     581     583     582
+4      584     585     587     586
+4      588     589     591     590
+4      592     593     595     594
+4      596     597     599     598
+4      600     601     603     602
+4      604     605     607     606
+4      608     609     611     610
+4      612     613     615     614
+4      616     617     619     618
+4      620     621     623     622
+4      624     625     627     626
+4      628     629     631     630
+4      632     633     635     634
+4      636     637     639     638
+4      640     641     643     642
+4      644     645     647     646
+4      648     649     651     650
+4      652     653     655     654
+4      656     657     659     658
+4      660     661     663     662
+4      664     665     667     666
+4      668     669     671     670
+4      672     673     675     674
+4      676     677     679     678
+4      680     681     683     682
+4      684     685     687     686
+4      688     689     691     690
+4      692     693     695     694
+4      696     697     699     698
+4      700     701     703     702
+4      704     705     707     706
+4      708     709     711     710
+4      712     713     715     714
+4      716     717     719     718
+4      720     721     723     722
+4      724     725     727     726
+4      728     729     731     730
+4      732     733     735     734
+4      736     737     739     738
+4      740     741     743     742
+4      744     745     747     746
+4      748     749     751     750
+4      752     753     755     754
+4      756     757     759     758
+4      760     761     763     762
+4      764     765     767     766
+4      768     769     771     770
+4      772     773     775     774
+4      776     777     779     778
+4      780     781     783     782
+4      784     785     787     786
+4      788     789     791     790
+4      792     793     795     794
+4      796     797     799     798
+4      800     801     803     802
+4      804     805     807     806
+4      808     809     811     810
+4      812     813     815     814
+4      816     817     819     818
+4      820     821     823     822
+4      824     825     827     826
+4      828     829     831     830
+4      832     833     835     834
+4      836     837     839     838
+4      840     841     843     842
+4      844     845     847     846
+4      848     849     851     850
+4      852     853     855     854
+4      856     857     859     858
+4      860     861     863     862
+4      864     865     867     866
+4      868     869     871     870
+4      872     873     875     874
+4      876     877     879     878
+4      880     881     883     882
+4      884     885     887     886
+4      888     889     891     890
+4      892     893     895     894
+4      896     897     899     898
+4      900     901     903     902
+4      904     905     907     906
+4      908     909     911     910
+4      912     913     915     914
+4      916     917     919     918
+4      920     921     923     922
+4      924     925     927     926
+4      928     929     931     930
+4      932     933     935     934
+4      936     937     939     938
+4      940     941     943     942
+4      944     945     947     946
+4      948     949     951     950
+4      952     953     955     954
+4      956     957     959     958
+4      960     961     963     962
+4      964     965     967     966
+4      968     969     971     970
+4      972     973     975     974
+4      976     977     979     978
+4      980     981     983     982
+4      984     985     987     986
+4      988     989     991     990
+4      992     993     995     994
+4      996     997     999     998
+4      1000    1001    1003    1002
+4      1004    1005    1007    1006
+4      1008    1009    1011    1010
+4      1012    1013    1015    1014
+4      1016    1017    1019    1018
+4      1020    1021    1023    1022
+4      1024    1025    1027    1026
+4      1028    1029    1031    1030
+4      1032    1033    1035    1034
+4      1036    1037    1039    1038
+4      1040    1041    1043    1042
+4      1044    1045    1047    1046
+4      1048    1049    1051    1050
+4      1052    1053    1055    1054
+4      1056    1057    1059    1058
+4      1060    1061    1063    1062
+4      1064    1065    1067    1066
+4      1068    1069    1071    1070
+4      1072    1073    1075    1074
+4      1076    1077    1079    1078
+4      1080    1081    1083    1082
+4      1084    1085    1087    1086
+4      1088    1089    1091    1090
+4      1092    1093    1095    1094
+4      1096    1097    1099    1098
+4      1100    1101    1103    1102
+4      1104    1105    1107    1106
+4      1108    1109    1111    1110
+4      1112    1113    1115    1114
+4      1116    1117    1119    1118
+4      1120    1121    1123    1122
+4      1124    1125    1127    1126
+4      1128    1129    1131    1130
+4      1132    1133    1135    1134
+4      1136    1137    1139    1138
+4      1140    1141    1143    1142
+4      1144    1145    1147    1146
+4      1148    1149    1151    1150
+4      1152    1153    1155    1154
+4      1156    1157    1159    1158
+4      1160    1161    1163    1162
+4      1164    1165    1167    1166
+4      1168    1169    1171    1170
+4      1172    1173    1175    1174
+4      1176    1177    1179    1178
+4      1180    1181    1183    1182
+4      1184    1185    1187    1186
+4      1188    1189    1191    1190
+4      1192    1193    1195    1194
+4      1196    1197    1199    1198
+4      1200    1201    1203    1202
+4      1204    1205    1207    1206
+4      1208    1209    1211    1210
+4      1212    1213    1215    1214
+4      1216    1217    1219    1218
+4      1220    1221    1223    1222
+4      1224    1225    1227    1226
+4      1228    1229    1231    1230
+4      1232    1233    1235    1234
+4      1236    1237    1239    1238
+4      1240    1241    1243    1242
+4      1244    1245    1247    1246
+4      1248    1249    1251    1250
+4      1252    1253    1255    1254
+4      1256    1257    1259    1258
+4      1260    1261    1263    1262
+4      1264    1265    1267    1266
+4      1268    1269    1271    1270
+4      1272    1273    1275    1274
+4      1276    1277    1279    1278
+4      1280    1281    1283    1282
+4      1284    1285    1287    1286
+4      1288    1289    1291    1290
+4      1292    1293    1295    1294
+4      1296    1297    1299    1298
+4      1300    1301    1303    1302
+4      1304    1305    1307    1306
+4      1308    1309    1311    1310
+4      1312    1313    1315    1314
+4      1316    1317    1319    1318
+4      1320    1321    1323    1322
+4      1324    1325    1327    1326
+4      1328    1329    1331    1330
+4      1332    1333    1335    1334
+4      1336    1337    1339    1338
+4      1340    1341    1343    1342
+4      1344    1345    1347    1346
+4      1348    1349    1351    1350
+4      1352    1353    1355    1354
+4      1356    1357    1359    1358
+4      1360    1361    1363    1362
+4      1364    1365    1367    1366
+4      1368    1369    1371    1370
+4      1372    1373    1375    1374
+4      1376    1377    1379    1378
+4      1380    1381    1383    1382
+4      1384    1385    1387    1386
+4      1388    1389    1391    1390
+4      1392    1393    1395    1394
+4      1396    1397    1399    1398
+4      1400    1401    1403    1402
+4      1404    1405    1407    1406
+4      1408    1409    1411    1410
+4      1412    1413    1415    1414
+4      1416    1417    1419    1418
+4      1420    1421    1423    1422
+4      1424    1425    1427    1426
+4      1428    1429    1431    1430
+4      1432    1433    1435    1434
+4      1436    1437    1439    1438
+4      1440    1441    1443    1442
+4      1444    1445    1447    1446
+4      1448    1449    1451    1450
+4      1452    1453    1455    1454
+4      1456    1457    1459    1458
+4      1460    1461    1463    1462
+4      1464    1465    1467    1466
+4      1468    1469    1471    1470
+4      1472    1473    1475    1474
+4      1476    1477    1479    1478
+4      1480    1481    1483    1482
+4      1484    1485    1487    1486
+4      1488    1489    1491    1490
+4      1492    1493    1495    1494
+4      1496    1497    1499    1498
+4      1500    1501    1503    1502
+4      1504    1505    1507    1506
+4      1508    1509    1511    1510
+4      1512    1513    1515    1514
+4      1516    1517    1519    1518
+4      1520    1521    1523    1522
+4      1524    1525    1527    1526
+4      1528    1529    1531    1530
+4      1532    1533    1535    1534
+4      1536    1537    1539    1538
+4      1540    1541    1543    1542
+4      1544    1545    1547    1546
+4      1548    1549    1551    1550
+4      1552    1553    1555    1554
+4      1556    1557    1559    1558
+4      1560    1561    1563    1562
+4      1564    1565    1567    1566
+4      1568    1569    1571    1570
+4      1572    1573    1575    1574
+4      1576    1577    1579    1578
+4      1580    1581    1583    1582
+4      1584    1585    1587    1586
+4      1588    1589    1591    1590
+4      1592    1593    1595    1594
+4      1596    1597    1599    1598
+4      1600    1601    1603    1602
+4      1604    1605    1607    1606
+4      1608    1609    1611    1610
+4      1612    1613    1615    1614
+4      1616    1617    1619    1618
+4      1620    1621    1623    1622
+4      1624    1625    1627    1626
+4      1628    1629    1631    1630
+4      1632    1633    1635    1634
+4      1636    1637    1639    1638
+4      1640    1641    1643    1642
+4      1644    1645    1647    1646
+4      1648    1649    1651    1650
+4      1652    1653    1655    1654
+4      1656    1657    1659    1658
+4      1660    1661    1663    1662
+4      1664    1665    1667    1666
+4      1668    1669    1671    1670
+4      1672    1673    1675    1674
+4      1676    1677    1679    1678
+4      1680    1681    1683    1682
+4      1684    1685    1687    1686
+4      1688    1689    1691    1690
+4      1692    1693    1695    1694
+4      1696    1697    1699    1698
+4      1700    1701    1703    1702
+4      1704    1705    1707    1706
+4      1708    1709    1711    1710
+4      1712    1713    1715    1714
+4      1716    1717    1719    1718
+4      1720    1721    1723    1722
+4      1724    1725    1727    1726
+4      1728    1729    1731    1730
+4      1732    1733    1735    1734
+4      1736    1737    1739    1738
+4      1740    1741    1743    1742
+4      1744    1745    1747    1746
+4      1748    1749    1751    1750
+4      1752    1753    1755    1754
+4      1756    1757    1759    1758
+4      1760    1761    1763    1762
+4      1764    1765    1767    1766
+4      1768    1769    1771    1770
+4      1772    1773    1775    1774
+4      1776    1777    1779    1778
+4      1780    1781    1783    1782
+4      1784    1785    1787    1786
+4      1788    1789    1791    1790
+4      1792    1793    1795    1794
+4      1796    1797    1799    1798
+4      1800    1801    1803    1802
+4      1804    1805    1807    1806
+4      1808    1809    1811    1810
+4      1812    1813    1815    1814
+4      1816    1817    1819    1818
+4      1820    1821    1823    1822
+4      1824    1825    1827    1826
+4      1828    1829    1831    1830
+4      1832    1833    1835    1834
+4      1836    1837    1839    1838
+4      1840    1841    1843    1842
+4      1844    1845    1847    1846
+4      1848    1849    1851    1850
+4      1852    1853    1855    1854
+4      1856    1857    1859    1858
+4      1860    1861    1863    1862
+4      1864    1865    1867    1866
+4      1868    1869    1871    1870
+4      1872    1873    1875    1874
+4      1876    1877    1879    1878
+4      1880    1881    1883    1882
+4      1884    1885    1887    1886
+4      1888    1889    1891    1890
+4      1892    1893    1895    1894
+4      1896    1897    1899    1898
+4      1900    1901    1903    1902
+4      1904    1905    1907    1906
+4      1908    1909    1911    1910
+4      1912    1913    1915    1914
+4      1916    1917    1919    1918
+4      1920    1921    1923    1922
+4      1924    1925    1927    1926
+4      1928    1929    1931    1930
+4      1932    1933    1935    1934
+4      1936    1937    1939    1938
+4      1940    1941    1943    1942
+4      1944    1945    1947    1946
+4      1948    1949    1951    1950
+4      1952    1953    1955    1954
+4      1956    1957    1959    1958
+4      1960    1961    1963    1962
+4      1964    1965    1967    1966
+4      1968    1969    1971    1970
+4      1972    1973    1975    1974
+4      1976    1977    1979    1978
+4      1980    1981    1983    1982
+4      1984    1985    1987    1986
+4      1988    1989    1991    1990
+4      1992    1993    1995    1994
+4      1996    1997    1999    1998
+4      2000    2001    2003    2002
+4      2004    2005    2007    2006
+4      2008    2009    2011    2010
+4      2012    2013    2015    2014
+4      2016    2017    2019    2018
+4      2020    2021    2023    2022
+4      2024    2025    2027    2026
+4      2028    2029    2031    2030
+4      2032    2033    2035    2034
+4      2036    2037    2039    2038
+4      2040    2041    2043    2042
+4      2044    2045    2047    2046
+4      2048    2049    2051    2050
+4      2052    2053    2055    2054
+4      2056    2057    2059    2058
+4      2060    2061    2063    2062
+4      2064    2065    2067    2066
+4      2068    2069    2071    2070
+4      2072    2073    2075    2074
+4      2076    2077    2079    2078
+4      2080    2081    2083    2082
+4      2084    2085    2087    2086
+4      2088    2089    2091    2090
+4      2092    2093    2095    2094
+4      2096    2097    2099    2098
+4      2100    2101    2103    2102
+4      2104    2105    2107    2106
+4      2108    2109    2111    2110
+4      2112    2113    2115    2114
+4      2116    2117    2119    2118
+4      2120    2121    2123    2122
+4      2124    2125    2127    2126
+4      2128    2129    2131    2130
+4      2132    2133    2135    2134
+4      2136    2137    2139    2138
+4      2140    2141    2143    2142
+4      2144    2145    2147    2146
+4      2148    2149    2151    2150
+4      2152    2153    2155    2154
+4      2156    2157    2159    2158
+4      2160    2161    2163    2162
+4      2164    2165    2167    2166
+4      2168    2169    2171    2170
+4      2172    2173    2175    2174
+4      2176    2177    2179    2178
+4      2180    2181    2183    2182
+4      2184    2185    2187    2186
+4      2188    2189    2191    2190
+4      2192    2193    2195    2194
+4      2196    2197    2199    2198
+4      2200    2201    2203    2202
+4      2204    2205    2207    2206
+4      2208    2209    2211    2210
+4      2212    2213    2215    2214
+4      2216    2217    2219    2218
+4      2220    2221    2223    2222
+4      2224    2225    2227    2226
+4      2228    2229    2231    2230
+4      2232    2233    2235    2234
+4      2236    2237    2239    2238
+4      2240    2241    2243    2242
+4      2244    2245    2247    2246
+4      2248    2249    2251    2250
+4      2252    2253    2255    2254
+4      2256    2257    2259    2258
+4      2260    2261    2263    2262
+4      2264    2265    2267    2266
+4      2268    2269    2271    2270
+4      2272    2273    2275    2274
+4      2276    2277    2279    2278
+4      2280    2281    2283    2282
+4      2284    2285    2287    2286
+4      2288    2289    2291    2290
+4      2292    2293    2295    2294
+4      2296    2297    2299    2298
+4      2300    2301    2303    2302
+4      2304    2305    2307    2306
+4      2308    2309    2311    2310
+4      2312    2313    2315    2314
+4      2316    2317    2319    2318
+4      2320    2321    2323    2322
+4      2324    2325    2327    2326
+4      2328    2329    2331    2330
+4      2332    2333    2335    2334
+4      2336    2337    2339    2338
+4      2340    2341    2343    2342
+4      2344    2345    2347    2346
+4      2348    2349    2351    2350
+4      2352    2353    2355    2354
+4      2356    2357    2359    2358
+4      2360    2361    2363    2362
+4      2364    2365    2367    2366
+4      2368    2369    2371    2370
+4      2372    2373    2375    2374
+4      2376    2377    2379    2378
+4      2380    2381    2383    2382
+4      2384    2385    2387    2386
+4      2388    2389    2391    2390
+4      2392    2393    2395    2394
+4      2396    2397    2399    2398
+4      2400    2401    2403    2402
+4      2404    2405    2407    2406
+4      2408    2409    2411    2410
+4      2412    2413    2415    2414
+4      2416    2417    2419    2418
+4      2420    2421    2423    2422
+4      2424    2425    2427    2426
+4      2428    2429    2431    2430
+4      2432    2433    2435    2434
+4      2436    2437    2439    2438
+4      2440    2441    2443    2442
+4      2444    2445    2447    2446
+4      2448    2449    2451    2450
+4      2452    2453    2455    2454
+4      2456    2457    2459    2458
+4      2460    2461    2463    2462
+4      2464    2465    2467    2466
+4      2468    2469    2471    2470
+4      2472    2473    2475    2474
+4      2476    2477    2479    2478
+4      2480    2481    2483    2482
+4      2484    2485    2487    2486
+4      2488    2489    2491    2490
+4      2492    2493    2495    2494
+4      2496    2497    2499    2498
+4      2500    2501    2503    2502
+4      2504    2505    2507    2506
+4      2508    2509    2511    2510
+4      2512    2513    2515    2514
+4      2516    2517    2519    2518
+4      2520    2521    2523    2522
+4      2524    2525    2527    2526
+4      2528    2529    2531    2530
+4      2532    2533    2535    2534
+4      2536    2537    2539    2538
+4      2540    2541    2543    2542
+4      2544    2545    2547    2546
+4      2548    2549    2551    2550
+4      2552    2553    2555    2554
+4      2556    2557    2559    2558
+4      2560    2561    2563    2562
+4      2564    2565    2567    2566
+4      2568    2569    2571    2570
+4      2572    2573    2575    2574
+4      2576    2577    2579    2578
+4      2580    2581    2583    2582
+4      2584    2585    2587    2586
+4      2588    2589    2591    2590
+4      2592    2593    2595    2594
+4      2596    2597    2599    2598
+4      2600    2601    2603    2602
+4      2604    2605    2607    2606
+4      2608    2609    2611    2610
+4      2612    2613    2615    2614
+4      2616    2617    2619    2618
+4      2620    2621    2623    2622
+4      2624    2625    2627    2626
+4      2628    2629    2631    2630
+4      2632    2633    2635    2634
+4      2636    2637    2639    2638
+4      2640    2641    2643    2642
+4      2644    2645    2647    2646
+4      2648    2649    2651    2650
+4      2652    2653    2655    2654
+4      2656    2657    2659    2658
+4      2660    2661    2663    2662
+4      2664    2665    2667    2666
+4      2668    2669    2671    2670
+4      2672    2673    2675    2674
+4      2676    2677    2679    2678
+4      2680    2681    2683    2682
+4      2684    2685    2687    2686
+4      2688    2689    2691    2690
+4      2692    2693    2695    2694
+4      2696    2697    2699    2698
+4      2700    2701    2703    2702
+4      2704    2705    2707    2706
+4      2708    2709    2711    2710
+4      2712    2713    2715    2714
+4      2716    2717    2719    2718
+4      2720    2721    2723    2722
+4      2724    2725    2727    2726
+4      2728    2729    2731    2730
+4      2732    2733    2735    2734
+4      2736    2737    2739    2738
+4      2740    2741    2743    2742
+4      2744    2745    2747    2746
+4      2748    2749    2751    2750
+4      2752    2753    2755    2754
+4      2756    2757    2759    2758
+4      2760    2761    2763    2762
+4      2764    2765    2767    2766
+4      2768    2769    2771    2770
+4      2772    2773    2775    2774
+4      2776    2777    2779    2778
+4      2780    2781    2783    2782
+4      2784    2785    2787    2786
+4      2788    2789    2791    2790
+4      2792    2793    2795    2794
+4      2796    2797    2799    2798
+4      2800    2801    2803    2802
+4      2804    2805    2807    2806
+4      2808    2809    2811    2810
+4      2812    2813    2815    2814
+4      2816    2817    2819    2818
+4      2820    2821    2823    2822
+4      2824    2825    2827    2826
+4      2828    2829    2831    2830
+4      2832    2833    2835    2834
+4      2836    2837    2839    2838
+4      2840    2841    2843    2842
+4      2844    2845    2847    2846
+4      2848    2849    2851    2850
+4      2852    2853    2855    2854
+4      2856    2857    2859    2858
+4      2860    2861    2863    2862
+4      2864    2865    2867    2866
+4      2868    2869    2871    2870
+4      2872    2873    2875    2874
+4      2876    2877    2879    2878
+4      2880    2881    2883    2882
+4      2884    2885    2887    2886
+4      2888    2889    2891    2890
+4      2892    2893    2895    2894
+4      2896    2897    2899    2898
+4      2900    2901    2903    2902
+4      2904    2905    2907    2906
+4      2908    2909    2911    2910
+4      2912    2913    2915    2914
+4      2916    2917    2919    2918
+4      2920    2921    2923    2922
+4      2924    2925    2927    2926
+4      2928    2929    2931    2930
+4      2932    2933    2935    2934
+4      2936    2937    2939    2938
+4      2940    2941    2943    2942
+4      2944    2945    2947    2946
+4      2948    2949    2951    2950
+4      2952    2953    2955    2954
+4      2956    2957    2959    2958
+4      2960    2961    2963    2962
+4      2964    2965    2967    2966
+4      2968    2969    2971    2970
+4      2972    2973    2975    2974
+4      2976    2977    2979    2978
+4      2980    2981    2983    2982
+4      2984    2985    2987    2986
+4      2988    2989    2991    2990
+4      2992    2993    2995    2994
+4      2996    2997    2999    2998
+4      3000    3001    3003    3002
+4      3004    3005    3007    3006
+4      3008    3009    3011    3010
+4      3012    3013    3015    3014
+4      3016    3017    3019    3018
+4      3020    3021    3023    3022
+4      3024    3025    3027    3026
+4      3028    3029    3031    3030
+4      3032    3033    3035    3034
+4      3036    3037    3039    3038
+4      3040    3041    3043    3042
+4      3044    3045    3047    3046
+4      3048    3049    3051    3050
+4      3052    3053    3055    3054
+4      3056    3057    3059    3058
+4      3060    3061    3063    3062
+4      3064    3065    3067    3066
+4      3068    3069    3071    3070
+4      3072    3073    3075    3074
+4      3076    3077    3079    3078
+4      3080    3081    3083    3082
+4      3084    3085    3087    3086
+4      3088    3089    3091    3090
+4      3092    3093    3095    3094
+4      3096    3097    3099    3098
+4      3100    3101    3103    3102
+4      3104    3105    3107    3106
+4      3108    3109    3111    3110
+4      3112    3113    3115    3114
+4      3116    3117    3119    3118
+4      3120    3121    3123    3122
+4      3124    3125    3127    3126
+4      3128    3129    3131    3130
+4      3132    3133    3135    3134
+4      3136    3137    3139    3138
+4      3140    3141    3143    3142
+4      3144    3145    3147    3146
+4      3148    3149    3151    3150
+4      3152    3153    3155    3154
+4      3156    3157    3159    3158
+4      3160    3161    3163    3162
+4      3164    3165    3167    3166
+4      3168    3169    3171    3170
+4      3172    3173    3175    3174
+4      3176    3177    3179    3178
+4      3180    3181    3183    3182
+4      3184    3185    3187    3186
+4      3188    3189    3191    3190
+4      3192    3193    3195    3194
+4      3196    3197    3199    3198
+4      3200    3201    3203    3202
+4      3204    3205    3207    3206
+4      3208    3209    3211    3210
+4      3212    3213    3215    3214
+4      3216    3217    3219    3218
+4      3220    3221    3223    3222
+4      3224    3225    3227    3226
+4      3228    3229    3231    3230
+4      3232    3233    3235    3234
+4      3236    3237    3239    3238
+4      3240    3241    3243    3242
+4      3244    3245    3247    3246
+4      3248    3249    3251    3250
+4      3252    3253    3255    3254
+4      3256    3257    3259    3258
+4      3260    3261    3263    3262
+4      3264    3265    3267    3266
+4      3268    3269    3271    3270
+4      3272    3273    3275    3274
+4      3276    3277    3279    3278
+4      3280    3281    3283    3282
+4      3284    3285    3287    3286
+4      3288    3289    3291    3290
+4      3292    3293    3295    3294
+4      3296    3297    3299    3298
+4      3300    3301    3303    3302
+4      3304    3305    3307    3306
+4      3308    3309    3311    3310
+4      3312    3313    3315    3314
+4      3316    3317    3319    3318
+4      3320    3321    3323    3322
+4      3324    3325    3327    3326
+4      3328    3329    3331    3330
+4      3332    3333    3335    3334
+4      3336    3337    3339    3338
+4      3340    3341    3343    3342
+4      3344    3345    3347    3346
+4      3348    3349    3351    3350
+4      3352    3353    3355    3354
+4      3356    3357    3359    3358
+4      3360    3361    3363    3362
+4      3364    3365    3367    3366
+4      3368    3369    3371    3370
+4      3372    3373    3375    3374
+4      3376    3377    3379    3378
+4      3380    3381    3383    3382
+4      3384    3385    3387    3386
+4      3388    3389    3391    3390
+4      3392    3393    3395    3394
+4      3396    3397    3399    3398
+4      3400    3401    3403    3402
+4      3404    3405    3407    3406
+4      3408    3409    3411    3410
+4      3412    3413    3415    3414
+4      3416    3417    3419    3418
+4      3420    3421    3423    3422
+4      3424    3425    3427    3426
+4      3428    3429    3431    3430
+4      3432    3433    3435    3434
+4      3436    3437    3439    3438
+4      3440    3441    3443    3442
+4      3444    3445    3447    3446
+4      3448    3449    3451    3450
+4      3452    3453    3455    3454
+4      3456    3457    3459    3458
+4      3460    3461    3463    3462
+4      3464    3465    3467    3466
+4      3468    3469    3471    3470
+4      3472    3473    3475    3474
+4      3476    3477    3479    3478
+4      3480    3481    3483    3482
+4      3484    3485    3487    3486
+4      3488    3489    3491    3490
+4      3492    3493    3495    3494
+4      3496    3497    3499    3498
+4      3500    3501    3503    3502
+4      3504    3505    3507    3506
+4      3508    3509    3511    3510
+4      3512    3513    3515    3514
+4      3516    3517    3519    3518
+4      3520    3521    3523    3522
+4      3524    3525    3527    3526
+4      3528    3529    3531    3530
+4      3532    3533    3535    3534
+4      3536    3537    3539    3538
+4      3540    3541    3543    3542
+4      3544    3545    3547    3546
+4      3548    3549    3551    3550
+4      3552    3553    3555    3554
+4      3556    3557    3559    3558
+4      3560    3561    3563    3562
+4      3564    3565    3567    3566
+4      3568    3569    3571    3570
+4      3572    3573    3575    3574
+4      3576    3577    3579    3578
+4      3580    3581    3583    3582
+4      3584    3585    3587    3586
+4      3588    3589    3591    3590
+4      3592    3593    3595    3594
+4      3596    3597    3599    3598
+4      3600    3601    3603    3602
+4      3604    3605    3607    3606
+4      3608    3609    3611    3610
+4      3612    3613    3615    3614
+4      3616    3617    3619    3618
+4      3620    3621    3623    3622
+4      3624    3625    3627    3626
+4      3628    3629    3631    3630
+4      3632    3633    3635    3634
+4      3636    3637    3639    3638
+4      3640    3641    3643    3642
+4      3644    3645    3647    3646
+4      3648    3649    3651    3650
+4      3652    3653    3655    3654
+4      3656    3657    3659    3658
+4      3660    3661    3663    3662
+4      3664    3665    3667    3666
+4      3668    3669    3671    3670
+4      3672    3673    3675    3674
+4      3676    3677    3679    3678
+4      3680    3681    3683    3682
+4      3684    3685    3687    3686
+4      3688    3689    3691    3690
+4      3692    3693    3695    3694
+4      3696    3697    3699    3698
+4      3700    3701    3703    3702
+4      3704    3705    3707    3706
+4      3708    3709    3711    3710
+4      3712    3713    3715    3714
+4      3716    3717    3719    3718
+4      3720    3721    3723    3722
+4      3724    3725    3727    3726
+4      3728    3729    3731    3730
+4      3732    3733    3735    3734
+4      3736    3737    3739    3738
+4      3740    3741    3743    3742
+4      3744    3745    3747    3746
+4      3748    3749    3751    3750
+4      3752    3753    3755    3754
+4      3756    3757    3759    3758
+4      3760    3761    3763    3762
+4      3764    3765    3767    3766
+4      3768    3769    3771    3770
+4      3772    3773    3775    3774
+4      3776    3777    3779    3778
+4      3780    3781    3783    3782
+4      3784    3785    3787    3786
+4      3788    3789    3791    3790
+4      3792    3793    3795    3794
+4      3796    3797    3799    3798
+4      3800    3801    3803    3802
+4      3804    3805    3807    3806
+4      3808    3809    3811    3810
+4      3812    3813    3815    3814
+4      3816    3817    3819    3818
+4      3820    3821    3823    3822
+4      3824    3825    3827    3826
+4      3828    3829    3831    3830
+4      3832    3833    3835    3834
+4      3836    3837    3839    3838
+4      3840    3841    3843    3842
+4      3844    3845    3847    3846
+4      3848    3849    3851    3850
+4      3852    3853    3855    3854
+4      3856    3857    3859    3858
+4      3860    3861    3863    3862
+4      3864    3865    3867    3866
+4      3868    3869    3871    3870
+4      3872    3873    3875    3874
+4      3876    3877    3879    3878
+4      3880    3881    3883    3882
+4      3884    3885    3887    3886
+4      3888    3889    3891    3890
+4      3892    3893    3895    3894
+4      3896    3897    3899    3898
+4      3900    3901    3903    3902
+4      3904    3905    3907    3906
+4      3908    3909    3911    3910
+4      3912    3913    3915    3914
+4      3916    3917    3919    3918
+4      3920    3921    3923    3922
+4      3924    3925    3927    3926
+4      3928    3929    3931    3930
+4      3932    3933    3935    3934
+4      3936    3937    3939    3938
+4      3940    3941    3943    3942
+4      3944    3945    3947    3946
+4      3948    3949    3951    3950
+4      3952    3953    3955    3954
+4      3956    3957    3959    3958
+4      3960    3961    3963    3962
+4      3964    3965    3967    3966
+4      3968    3969    3971    3970
+4      3972    3973    3975    3974
+4      3976    3977    3979    3978
+4      3980    3981    3983    3982
+4      3984    3985    3987    3986
+4      3988    3989    3991    3990
+4      3992    3993    3995    3994
+4      3996    3997    3999    3998
+4      4000    4001    4003    4002
+4      4004    4005    4007    4006
+4      4008    4009    4011    4010
+4      4012    4013    4015    4014
+4      4016    4017    4019    4018
+4      4020    4021    4023    4022
+4      4024    4025    4027    4026
+4      4028    4029    4031    4030
+4      4032    4033    4035    4034
+4      4036    4037    4039    4038
+4      4040    4041    4043    4042
+4      4044    4045    4047    4046
+4      4048    4049    4051    4050
+4      4052    4053    4055    4054
+4      4056    4057    4059    4058
+4      4060    4061    4063    4062
+4      4064    4065    4067    4066
+4      4068    4069    4071    4070
+4      4072    4073    4075    4074
+4      4076    4077    4079    4078
+4      4080    4081    4083    4082
+4      4084    4085    4087    4086
+4      4088    4089    4091    4090
+4      4092    4093    4095    4094
+4      4096    4097    4099    4098
+4      4100    4101    4103    4102
+4      4104    4105    4107    4106
+4      4108    4109    4111    4110
+4      4112    4113    4115    4114
+4      4116    4117    4119    4118
+4      4120    4121    4123    4122
+4      4124    4125    4127    4126
+4      4128    4129    4131    4130
+4      4132    4133    4135    4134
+4      4136    4137    4139    4138
+4      4140    4141    4143    4142
+4      4144    4145    4147    4146
+4      4148    4149    4151    4150
+4      4152    4153    4155    4154
+4      4156    4157    4159    4158
+4      4160    4161    4163    4162
+4      4164    4165    4167    4166
+4      4168    4169    4171    4170
+4      4172    4173    4175    4174
+4      4176    4177    4179    4178
+4      4180    4181    4183    4182
+4      4184    4185    4187    4186
+4      4188    4189    4191    4190
+4      4192    4193    4195    4194
+4      4196    4197    4199    4198
+4      4200    4201    4203    4202
+4      4204    4205    4207    4206
+4      4208    4209    4211    4210
+4      4212    4213    4215    4214
+4      4216    4217    4219    4218
+4      4220    4221    4223    4222
+4      4224    4225    4227    4226
+4      4228    4229    4231    4230
+4      4232    4233    4235    4234
+4      4236    4237    4239    4238
+4      4240    4241    4243    4242
+4      4244    4245    4247    4246
+4      4248    4249    4251    4250
+4      4252    4253    4255    4254
+4      4256    4257    4259    4258
+4      4260    4261    4263    4262
+4      4264    4265    4267    4266
+4      4268    4269    4271    4270
+4      4272    4273    4275    4274
+4      4276    4277    4279    4278
+4      4280    4281    4283    4282
+4      4284    4285    4287    4286
+4      4288    4289    4291    4290
+4      4292    4293    4295    4294
+4      4296    4297    4299    4298
+4      4300    4301    4303    4302
+4      4304    4305    4307    4306
+4      4308    4309    4311    4310
+4      4312    4313    4315    4314
+4      4316    4317    4319    4318
+4      4320    4321    4323    4322
+4      4324    4325    4327    4326
+4      4328    4329    4331    4330
+4      4332    4333    4335    4334
+4      4336    4337    4339    4338
+4      4340    4341    4343    4342
+4      4344    4345    4347    4346
+4      4348    4349    4351    4350
+4      4352    4353    4355    4354
+4      4356    4357    4359    4358
+4      4360    4361    4363    4362
+4      4364    4365    4367    4366
+4      4368    4369    4371    4370
+4      4372    4373    4375    4374
+4      4376    4377    4379    4378
+4      4380    4381    4383    4382
+4      4384    4385    4387    4386
+4      4388    4389    4391    4390
+4      4392    4393    4395    4394
+4      4396    4397    4399    4398
+4      4400    4401    4403    4402
+4      4404    4405    4407    4406
+4      4408    4409    4411    4410
+4      4412    4413    4415    4414
+4      4416    4417    4419    4418
+4      4420    4421    4423    4422
+4      4424    4425    4427    4426
+4      4428    4429    4431    4430
+4      4432    4433    4435    4434
+4      4436    4437    4439    4438
+4      4440    4441    4443    4442
+4      4444    4445    4447    4446
+4      4448    4449    4451    4450
+4      4452    4453    4455    4454
+4      4456    4457    4459    4458
+4      4460    4461    4463    4462
+4      4464    4465    4467    4466
+4      4468    4469    4471    4470
+4      4472    4473    4475    4474
+4      4476    4477    4479    4478
+4      4480    4481    4483    4482
+4      4484    4485    4487    4486
+4      4488    4489    4491    4490
+4      4492    4493    4495    4494
+4      4496    4497    4499    4498
+4      4500    4501    4503    4502
+4      4504    4505    4507    4506
+4      4508    4509    4511    4510
+4      4512    4513    4515    4514
+4      4516    4517    4519    4518
+4      4520    4521    4523    4522
+4      4524    4525    4527    4526
+4      4528    4529    4531    4530
+4      4532    4533    4535    4534
+4      4536    4537    4539    4538
+4      4540    4541    4543    4542
+4      4544    4545    4547    4546
+4      4548    4549    4551    4550
+4      4552    4553    4555    4554
+4      4556    4557    4559    4558
+4      4560    4561    4563    4562
+4      4564    4565    4567    4566
+4      4568    4569    4571    4570
+4      4572    4573    4575    4574
+4      4576    4577    4579    4578
+4      4580    4581    4583    4582
+4      4584    4585    4587    4586
+4      4588    4589    4591    4590
+4      4592    4593    4595    4594
+4      4596    4597    4599    4598
+4      4600    4601    4603    4602
+4      4604    4605    4607    4606
+4      4608    4609    4611    4610
+4      4612    4613    4615    4614
+4      4616    4617    4619    4618
+4      4620    4621    4623    4622
+4      4624    4625    4627    4626
+4      4628    4629    4631    4630
+4      4632    4633    4635    4634
+4      4636    4637    4639    4638
+4      4640    4641    4643    4642
+4      4644    4645    4647    4646
+4      4648    4649    4651    4650
+4      4652    4653    4655    4654
+4      4656    4657    4659    4658
+4      4660    4661    4663    4662
+4      4664    4665    4667    4666
+4      4668    4669    4671    4670
+4      4672    4673    4675    4674
+4      4676    4677    4679    4678
+4      4680    4681    4683    4682
+4      4684    4685    4687    4686
+4      4688    4689    4691    4690
+4      4692    4693    4695    4694
+4      4696    4697    4699    4698
+4      4700    4701    4703    4702
+4      4704    4705    4707    4706
+4      4708    4709    4711    4710
+4      4712    4713    4715    4714
+4      4716    4717    4719    4718
+4      4720    4721    4723    4722
+4      4724    4725    4727    4726
+4      4728    4729    4731    4730
+4      4732    4733    4735    4734
+4      4736    4737    4739    4738
+4      4740    4741    4743    4742
+
+CELL_TYPES 1186
+ 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9
+POINT_DATA 4744
+SCALARS partitions double 1
+LOOKUP_TABLE default
+4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 
+DEAL::Dimension = 3
+# vtk DataFile Version 3.0
+#This file was generated 
+ASCII
+DATASET UNSTRUCTURED_GRID
+
+POINTS 5888 double
+0.750000 0.750000 0.00000
+1.00000 0.750000 0.00000
+0.750000 1.00000 0.00000
+1.00000 1.00000 0.00000
+0.750000 0.750000 0.250000
+1.00000 0.750000 0.250000
+0.750000 1.00000 0.250000
+1.00000 1.00000 0.250000
+0.250000 0.00000 0.750000
+0.500000 0.00000 0.750000
+0.250000 0.250000 0.750000
+0.500000 0.250000 0.750000
+0.250000 0.00000 1.00000
+0.500000 0.00000 1.00000
+0.250000 0.250000 1.00000
+0.500000 0.250000 1.00000
+0.00000 0.250000 0.750000
+0.250000 0.250000 0.750000
+0.00000 0.500000 0.750000
+0.250000 0.500000 0.750000
+0.00000 0.250000 1.00000
+0.250000 0.250000 1.00000
+0.00000 0.500000 1.00000
+0.250000 0.500000 1.00000
+0.500000 0.00000 0.750000
+0.750000 0.00000 0.750000
+0.500000 0.250000 0.750000
+0.750000 0.250000 0.750000
+0.500000 0.00000 1.00000
+0.750000 0.00000 1.00000
+0.500000 0.250000 1.00000
+0.750000 0.250000 1.00000
+0.750000 0.00000 0.750000
+1.00000 0.00000 0.750000
+0.750000 0.250000 0.750000
+1.00000 0.250000 0.750000
+0.750000 0.00000 1.00000
+1.00000 0.00000 1.00000
+0.750000 0.250000 1.00000
+1.00000 0.250000 1.00000
+0.500000 0.250000 0.750000
+0.750000 0.250000 0.750000
+0.500000 0.500000 0.750000
+0.750000 0.500000 0.750000
+0.500000 0.250000 1.00000
+0.750000 0.250000 1.00000
+0.500000 0.500000 1.00000
+0.750000 0.500000 1.00000
+0.750000 0.250000 0.750000
+1.00000 0.250000 0.750000
+0.750000 0.500000 0.750000
+1.00000 0.500000 0.750000
+0.750000 0.250000 1.00000
+1.00000 0.250000 1.00000
+0.750000 0.500000 1.00000
+1.00000 0.500000 1.00000
+0.500000 0.500000 0.750000
+0.750000 0.500000 0.750000
+0.500000 0.750000 0.750000
+0.750000 0.750000 0.750000
+0.500000 0.500000 1.00000
+0.750000 0.500000 1.00000
+0.500000 0.750000 1.00000
+0.750000 0.750000 1.00000
+0.00000 0.250000 0.00000
+0.125000 0.250000 0.00000
+0.00000 0.375000 0.00000
+0.125000 0.375000 0.00000
+0.00000 0.250000 0.125000
+0.125000 0.250000 0.125000
+0.00000 0.375000 0.125000
+0.125000 0.375000 0.125000
+0.125000 0.250000 0.00000
+0.250000 0.250000 0.00000
+0.125000 0.375000 0.00000
+0.250000 0.375000 0.00000
+0.125000 0.250000 0.125000
+0.250000 0.250000 0.125000
+0.125000 0.375000 0.125000
+0.250000 0.375000 0.125000
+0.00000 0.375000 0.00000
+0.125000 0.375000 0.00000
+0.00000 0.500000 0.00000
+0.125000 0.500000 0.00000
+0.00000 0.375000 0.125000
+0.125000 0.375000 0.125000
+0.00000 0.500000 0.125000
+0.125000 0.500000 0.125000
+0.00000 0.250000 0.125000
+0.125000 0.250000 0.125000
+0.00000 0.375000 0.125000
+0.125000 0.375000 0.125000
+0.00000 0.250000 0.250000
+0.125000 0.250000 0.250000
+0.00000 0.375000 0.250000
+0.125000 0.375000 0.250000
+0.125000 0.250000 0.125000
+0.250000 0.250000 0.125000
+0.125000 0.375000 0.125000
+0.250000 0.375000 0.125000
+0.125000 0.250000 0.250000
+0.250000 0.250000 0.250000
+0.125000 0.375000 0.250000
+0.250000 0.375000 0.250000
+0.00000 0.375000 0.125000
+0.125000 0.375000 0.125000
+0.00000 0.500000 0.125000
+0.125000 0.500000 0.125000
+0.00000 0.375000 0.250000
+0.125000 0.375000 0.250000
+0.00000 0.500000 0.250000
+0.125000 0.500000 0.250000
+0.375000 0.00000 0.250000
+0.500000 0.00000 0.250000
+0.375000 0.125000 0.250000
+0.500000 0.125000 0.250000
+0.375000 0.00000 0.375000
+0.500000 0.00000 0.375000
+0.375000 0.125000 0.375000
+0.500000 0.125000 0.375000
+0.250000 0.125000 0.250000
+0.375000 0.125000 0.250000
+0.250000 0.250000 0.250000
+0.375000 0.250000 0.250000
+0.250000 0.125000 0.375000
+0.375000 0.125000 0.375000
+0.250000 0.250000 0.375000
+0.375000 0.250000 0.375000
+0.375000 0.125000 0.250000
+0.500000 0.125000 0.250000
+0.375000 0.250000 0.250000
+0.500000 0.250000 0.250000
+0.375000 0.125000 0.375000
+0.500000 0.125000 0.375000
+0.375000 0.250000 0.375000
+0.500000 0.250000 0.375000
+0.375000 0.00000 0.375000
+0.500000 0.00000 0.375000
+0.375000 0.125000 0.375000
+0.500000 0.125000 0.375000
+0.375000 0.00000 0.500000
+0.500000 0.00000 0.500000
+0.375000 0.125000 0.500000
+0.500000 0.125000 0.500000
+0.250000 0.125000 0.375000
+0.375000 0.125000 0.375000
+0.250000 0.250000 0.375000
+0.375000 0.250000 0.375000
+0.250000 0.125000 0.500000
+0.375000 0.125000 0.500000
+0.250000 0.250000 0.500000
+0.375000 0.250000 0.500000
+0.375000 0.125000 0.375000
+0.500000 0.125000 0.375000
+0.375000 0.250000 0.375000
+0.500000 0.250000 0.375000
+0.375000 0.125000 0.500000
+0.500000 0.125000 0.500000
+0.375000 0.250000 0.500000
+0.500000 0.250000 0.500000
+0.500000 0.250000 0.250000
+0.625000 0.250000 0.250000
+0.500000 0.375000 0.250000
+0.625000 0.375000 0.250000
+0.500000 0.250000 0.375000
+0.625000 0.250000 0.375000
+0.500000 0.375000 0.375000
+0.625000 0.375000 0.375000
+0.500000 0.375000 0.250000
+0.625000 0.375000 0.250000
+0.500000 0.500000 0.250000
+0.625000 0.500000 0.250000
+0.500000 0.375000 0.375000
+0.625000 0.375000 0.375000
+0.500000 0.500000 0.375000
+0.625000 0.500000 0.375000
+0.625000 0.375000 0.250000
+0.750000 0.375000 0.250000
+0.625000 0.500000 0.250000
+0.750000 0.500000 0.250000
+0.625000 0.375000 0.375000
+0.750000 0.375000 0.375000
+0.625000 0.500000 0.375000
+0.750000 0.500000 0.375000
+0.500000 0.250000 0.375000
+0.625000 0.250000 0.375000
+0.500000 0.375000 0.375000
+0.625000 0.375000 0.375000
+0.500000 0.250000 0.500000
+0.625000 0.250000 0.500000
+0.500000 0.375000 0.500000
+0.625000 0.375000 0.500000
+0.500000 0.375000 0.375000
+0.625000 0.375000 0.375000
+0.500000 0.500000 0.375000
+0.625000 0.500000 0.375000
+0.500000 0.375000 0.500000
+0.625000 0.375000 0.500000
+0.500000 0.500000 0.500000
+0.625000 0.500000 0.500000
+0.625000 0.375000 0.375000
+0.750000 0.375000 0.375000
+0.625000 0.500000 0.375000
+0.750000 0.500000 0.375000
+0.625000 0.375000 0.500000
+0.750000 0.375000 0.500000
+0.625000 0.500000 0.500000
+0.750000 0.500000 0.500000
+0.250000 0.750000 0.250000
+0.375000 0.750000 0.250000
+0.250000 0.875000 0.250000
+0.375000 0.875000 0.250000
+0.250000 0.750000 0.375000
+0.375000 0.750000 0.375000
+0.250000 0.875000 0.375000
+0.375000 0.875000 0.375000
+0.375000 0.750000 0.250000
+0.500000 0.750000 0.250000
+0.375000 0.875000 0.250000
+0.500000 0.875000 0.250000
+0.375000 0.750000 0.375000
+0.500000 0.750000 0.375000
+0.375000 0.875000 0.375000
+0.500000 0.875000 0.375000
+0.250000 0.750000 0.375000
+0.375000 0.750000 0.375000
+0.250000 0.875000 0.375000
+0.375000 0.875000 0.375000
+0.250000 0.750000 0.500000
+0.375000 0.750000 0.500000
+0.250000 0.875000 0.500000
+0.375000 0.875000 0.500000
+0.375000 0.750000 0.375000
+0.500000 0.750000 0.375000
+0.375000 0.875000 0.375000
+0.500000 0.875000 0.375000
+0.375000 0.750000 0.500000
+0.500000 0.750000 0.500000
+0.375000 0.875000 0.500000
+0.500000 0.875000 0.500000
+0.375000 0.875000 0.375000
+0.500000 0.875000 0.375000
+0.375000 1.00000 0.375000
+0.500000 1.00000 0.375000
+0.375000 0.875000 0.500000
+0.500000 0.875000 0.500000
+0.375000 1.00000 0.500000
+0.500000 1.00000 0.500000
+0.00000 0.00000 0.00000
+0.125000 0.00000 0.00000
+0.00000 0.125000 0.00000
+0.125000 0.125000 0.00000
+0.00000 0.00000 0.125000
+0.125000 0.00000 0.125000
+0.00000 0.125000 0.125000
+0.125000 0.125000 0.125000
+0.125000 0.00000 0.00000
+0.250000 0.00000 0.00000
+0.125000 0.125000 0.00000
+0.250000 0.125000 0.00000
+0.125000 0.00000 0.125000
+0.250000 0.00000 0.125000
+0.125000 0.125000 0.125000
+0.250000 0.125000 0.125000
+0.00000 0.125000 0.00000
+0.125000 0.125000 0.00000
+0.00000 0.250000 0.00000
+0.125000 0.250000 0.00000
+0.00000 0.125000 0.125000
+0.125000 0.125000 0.125000
+0.00000 0.250000 0.125000
+0.125000 0.250000 0.125000
+0.125000 0.125000 0.00000
+0.250000 0.125000 0.00000
+0.125000 0.250000 0.00000
+0.250000 0.250000 0.00000
+0.125000 0.125000 0.125000
+0.250000 0.125000 0.125000
+0.125000 0.250000 0.125000
+0.250000 0.250000 0.125000
+0.00000 0.00000 0.125000
+0.125000 0.00000 0.125000
+0.00000 0.125000 0.125000
+0.125000 0.125000 0.125000
+0.00000 0.00000 0.250000
+0.125000 0.00000 0.250000
+0.00000 0.125000 0.250000
+0.125000 0.125000 0.250000
+0.00000 0.125000 0.125000
+0.125000 0.125000 0.125000
+0.00000 0.250000 0.125000
+0.125000 0.250000 0.125000
+0.00000 0.125000 0.250000
+0.125000 0.125000 0.250000
+0.00000 0.250000 0.250000
+0.125000 0.250000 0.250000
+0.125000 0.125000 0.125000
+0.250000 0.125000 0.125000
+0.125000 0.250000 0.125000
+0.250000 0.250000 0.125000
+0.125000 0.125000 0.250000
+0.250000 0.125000 0.250000
+0.125000 0.250000 0.250000
+0.250000 0.250000 0.250000
+0.250000 0.250000 0.00000
+0.375000 0.250000 0.00000
+0.250000 0.375000 0.00000
+0.375000 0.375000 0.00000
+0.250000 0.250000 0.125000
+0.375000 0.250000 0.125000
+0.250000 0.375000 0.125000
+0.375000 0.375000 0.125000
+0.375000 0.250000 0.00000
+0.500000 0.250000 0.00000
+0.375000 0.375000 0.00000
+0.500000 0.375000 0.00000
+0.375000 0.250000 0.125000
+0.500000 0.250000 0.125000
+0.375000 0.375000 0.125000
+0.500000 0.375000 0.125000
+0.250000 0.375000 0.00000
+0.375000 0.375000 0.00000
+0.250000 0.500000 0.00000
+0.375000 0.500000 0.00000
+0.250000 0.375000 0.125000
+0.375000 0.375000 0.125000
+0.250000 0.500000 0.125000
+0.375000 0.500000 0.125000
+0.375000 0.375000 0.00000
+0.500000 0.375000 0.00000
+0.375000 0.500000 0.00000
+0.500000 0.500000 0.00000
+0.375000 0.375000 0.125000
+0.500000 0.375000 0.125000
+0.375000 0.500000 0.125000
+0.500000 0.500000 0.125000
+0.250000 0.250000 0.125000
+0.375000 0.250000 0.125000
+0.250000 0.375000 0.125000
+0.375000 0.375000 0.125000
+0.250000 0.250000 0.250000
+0.375000 0.250000 0.250000
+0.250000 0.375000 0.250000
+0.375000 0.375000 0.250000
+0.375000 0.250000 0.125000
+0.500000 0.250000 0.125000
+0.375000 0.375000 0.125000
+0.500000 0.375000 0.125000
+0.375000 0.250000 0.250000
+0.500000 0.250000 0.250000
+0.375000 0.375000 0.250000
+0.500000 0.375000 0.250000
+0.375000 0.375000 0.125000
+0.500000 0.375000 0.125000
+0.375000 0.500000 0.125000
+0.500000 0.500000 0.125000
+0.375000 0.375000 0.250000
+0.500000 0.375000 0.250000
+0.375000 0.500000 0.250000
+0.500000 0.500000 0.250000
+0.00000 0.00000 0.250000
+0.125000 0.00000 0.250000
+0.00000 0.125000 0.250000
+0.125000 0.125000 0.250000
+0.00000 0.00000 0.375000
+0.125000 0.00000 0.375000
+0.00000 0.125000 0.375000
+0.125000 0.125000 0.375000
+0.00000 0.125000 0.250000
+0.125000 0.125000 0.250000
+0.00000 0.250000 0.250000
+0.125000 0.250000 0.250000
+0.00000 0.125000 0.375000
+0.125000 0.125000 0.375000
+0.00000 0.250000 0.375000
+0.125000 0.250000 0.375000
+0.125000 0.125000 0.250000
+0.250000 0.125000 0.250000
+0.125000 0.250000 0.250000
+0.250000 0.250000 0.250000
+0.125000 0.125000 0.375000
+0.250000 0.125000 0.375000
+0.125000 0.250000 0.375000
+0.250000 0.250000 0.375000
+0.00000 0.00000 0.375000
+0.125000 0.00000 0.375000
+0.00000 0.125000 0.375000
+0.125000 0.125000 0.375000
+0.00000 0.00000 0.500000
+0.125000 0.00000 0.500000
+0.00000 0.125000 0.500000
+0.125000 0.125000 0.500000
+0.00000 0.125000 0.375000
+0.125000 0.125000 0.375000
+0.00000 0.250000 0.375000
+0.125000 0.250000 0.375000
+0.00000 0.125000 0.500000
+0.125000 0.125000 0.500000
+0.00000 0.250000 0.500000
+0.125000 0.250000 0.500000
+0.750000 0.250000 0.00000
+0.875000 0.250000 0.00000
+0.750000 0.375000 0.00000
+0.875000 0.375000 0.00000
+0.750000 0.250000 0.125000
+0.875000 0.250000 0.125000
+0.750000 0.375000 0.125000
+0.875000 0.375000 0.125000
+0.875000 0.250000 0.00000
+1.00000 0.250000 0.00000
+0.875000 0.375000 0.00000
+1.00000 0.375000 0.00000
+0.875000 0.250000 0.125000
+1.00000 0.250000 0.125000
+0.875000 0.375000 0.125000
+1.00000 0.375000 0.125000
+0.750000 0.375000 0.00000
+0.875000 0.375000 0.00000
+0.750000 0.500000 0.00000
+0.875000 0.500000 0.00000
+0.750000 0.375000 0.125000
+0.875000 0.375000 0.125000
+0.750000 0.500000 0.125000
+0.875000 0.500000 0.125000
+0.875000 0.375000 0.00000
+1.00000 0.375000 0.00000
+0.875000 0.500000 0.00000
+1.00000 0.500000 0.00000
+0.875000 0.375000 0.125000
+1.00000 0.375000 0.125000
+0.875000 0.500000 0.125000
+1.00000 0.500000 0.125000
+0.750000 0.250000 0.125000
+0.875000 0.250000 0.125000
+0.750000 0.375000 0.125000
+0.875000 0.375000 0.125000
+0.750000 0.250000 0.250000
+0.875000 0.250000 0.250000
+0.750000 0.375000 0.250000
+0.875000 0.375000 0.250000
+0.875000 0.250000 0.125000
+1.00000 0.250000 0.125000
+0.875000 0.375000 0.125000
+1.00000 0.375000 0.125000
+0.875000 0.250000 0.250000
+1.00000 0.250000 0.250000
+0.875000 0.375000 0.250000
+1.00000 0.375000 0.250000
+0.750000 0.375000 0.125000
+0.875000 0.375000 0.125000
+0.750000 0.500000 0.125000
+0.875000 0.500000 0.125000
+0.750000 0.375000 0.250000
+0.875000 0.375000 0.250000
+0.750000 0.500000 0.250000
+0.875000 0.500000 0.250000
+0.875000 0.375000 0.125000
+1.00000 0.375000 0.125000
+0.875000 0.500000 0.125000
+1.00000 0.500000 0.125000
+0.875000 0.375000 0.250000
+1.00000 0.375000 0.250000
+0.875000 0.500000 0.250000
+1.00000 0.500000 0.250000
+0.625000 0.00000 0.250000
+0.750000 0.00000 0.250000
+0.625000 0.125000 0.250000
+0.750000 0.125000 0.250000
+0.625000 0.00000 0.375000
+0.750000 0.00000 0.375000
+0.625000 0.125000 0.375000
+0.750000 0.125000 0.375000
+0.500000 0.125000 0.250000
+0.625000 0.125000 0.250000
+0.500000 0.250000 0.250000
+0.625000 0.250000 0.250000
+0.500000 0.125000 0.375000
+0.625000 0.125000 0.375000
+0.500000 0.250000 0.375000
+0.625000 0.250000 0.375000
+0.500000 0.00000 0.375000
+0.625000 0.00000 0.375000
+0.500000 0.125000 0.375000
+0.625000 0.125000 0.375000
+0.500000 0.00000 0.500000
+0.625000 0.00000 0.500000
+0.500000 0.125000 0.500000
+0.625000 0.125000 0.500000
+0.625000 0.00000 0.375000
+0.750000 0.00000 0.375000
+0.625000 0.125000 0.375000
+0.750000 0.125000 0.375000
+0.625000 0.00000 0.500000
+0.750000 0.00000 0.500000
+0.625000 0.125000 0.500000
+0.750000 0.125000 0.500000
+0.500000 0.125000 0.375000
+0.625000 0.125000 0.375000
+0.500000 0.250000 0.375000
+0.625000 0.250000 0.375000
+0.500000 0.125000 0.500000
+0.625000 0.125000 0.500000
+0.500000 0.250000 0.500000
+0.625000 0.250000 0.500000
+0.750000 0.00000 0.250000
+0.875000 0.00000 0.250000
+0.750000 0.125000 0.250000
+0.875000 0.125000 0.250000
+0.750000 0.00000 0.375000
+0.875000 0.00000 0.375000
+0.750000 0.125000 0.375000
+0.875000 0.125000 0.375000
+0.750000 0.125000 0.250000
+0.875000 0.125000 0.250000
+0.750000 0.250000 0.250000
+0.875000 0.250000 0.250000
+0.750000 0.125000 0.375000
+0.875000 0.125000 0.375000
+0.750000 0.250000 0.375000
+0.875000 0.250000 0.375000
+0.875000 0.125000 0.250000
+1.00000 0.125000 0.250000
+0.875000 0.250000 0.250000
+1.00000 0.250000 0.250000
+0.875000 0.125000 0.375000
+1.00000 0.125000 0.375000
+0.875000 0.250000 0.375000
+1.00000 0.250000 0.375000
+0.750000 0.00000 0.375000
+0.875000 0.00000 0.375000
+0.750000 0.125000 0.375000
+0.875000 0.125000 0.375000
+0.750000 0.00000 0.500000
+0.875000 0.00000 0.500000
+0.750000 0.125000 0.500000
+0.875000 0.125000 0.500000
+0.875000 0.00000 0.375000
+1.00000 0.00000 0.375000
+0.875000 0.125000 0.375000
+1.00000 0.125000 0.375000
+0.875000 0.00000 0.500000
+1.00000 0.00000 0.500000
+0.875000 0.125000 0.500000
+1.00000 0.125000 0.500000
+0.875000 0.125000 0.375000
+1.00000 0.125000 0.375000
+0.875000 0.250000 0.375000
+1.00000 0.250000 0.375000
+0.875000 0.125000 0.500000
+1.00000 0.125000 0.500000
+0.875000 0.250000 0.500000
+1.00000 0.250000 0.500000
+0.875000 0.250000 0.250000
+1.00000 0.250000 0.250000
+0.875000 0.375000 0.250000
+1.00000 0.375000 0.250000
+0.875000 0.250000 0.375000
+1.00000 0.250000 0.375000
+0.875000 0.375000 0.375000
+1.00000 0.375000 0.375000
+0.875000 0.375000 0.250000
+1.00000 0.375000 0.250000
+0.875000 0.500000 0.250000
+1.00000 0.500000 0.250000
+0.875000 0.375000 0.375000
+1.00000 0.375000 0.375000
+0.875000 0.500000 0.375000
+1.00000 0.500000 0.375000
+0.875000 0.250000 0.375000
+1.00000 0.250000 0.375000
+0.875000 0.375000 0.375000
+1.00000 0.375000 0.375000
+0.875000 0.250000 0.500000
+1.00000 0.250000 0.500000
+0.875000 0.375000 0.500000
+1.00000 0.375000 0.500000
+0.750000 0.375000 0.375000
+0.875000 0.375000 0.375000
+0.750000 0.500000 0.375000
+0.875000 0.500000 0.375000
+0.750000 0.375000 0.500000
+0.875000 0.375000 0.500000
+0.750000 0.500000 0.500000
+0.875000 0.500000 0.500000
+0.875000 0.375000 0.375000
+1.00000 0.375000 0.375000
+0.875000 0.500000 0.375000
+1.00000 0.500000 0.375000
+0.875000 0.375000 0.500000
+1.00000 0.375000 0.500000
+0.875000 0.500000 0.500000
+1.00000 0.500000 0.500000
+0.00000 0.500000 0.00000
+0.125000 0.500000 0.00000
+0.00000 0.625000 0.00000
+0.125000 0.625000 0.00000
+0.00000 0.500000 0.125000
+0.125000 0.500000 0.125000
+0.00000 0.625000 0.125000
+0.125000 0.625000 0.125000
+0.125000 0.500000 0.00000
+0.250000 0.500000 0.00000
+0.125000 0.625000 0.00000
+0.250000 0.625000 0.00000
+0.125000 0.500000 0.125000
+0.250000 0.500000 0.125000
+0.125000 0.625000 0.125000
+0.250000 0.625000 0.125000
+0.00000 0.625000 0.00000
+0.125000 0.625000 0.00000
+0.00000 0.750000 0.00000
+0.125000 0.750000 0.00000
+0.00000 0.625000 0.125000
+0.125000 0.625000 0.125000
+0.00000 0.750000 0.125000
+0.125000 0.750000 0.125000
+0.00000 0.500000 0.125000
+0.125000 0.500000 0.125000
+0.00000 0.625000 0.125000
+0.125000 0.625000 0.125000
+0.00000 0.500000 0.250000
+0.125000 0.500000 0.250000
+0.00000 0.625000 0.250000
+0.125000 0.625000 0.250000
+0.125000 0.500000 0.125000
+0.250000 0.500000 0.125000
+0.125000 0.625000 0.125000
+0.250000 0.625000 0.125000
+0.125000 0.500000 0.250000
+0.250000 0.500000 0.250000
+0.125000 0.625000 0.250000
+0.250000 0.625000 0.250000
+0.00000 0.625000 0.125000
+0.125000 0.625000 0.125000
+0.00000 0.750000 0.125000
+0.125000 0.750000 0.125000
+0.00000 0.625000 0.250000
+0.125000 0.625000 0.250000
+0.00000 0.750000 0.250000
+0.125000 0.750000 0.250000
+0.125000 0.625000 0.125000
+0.250000 0.625000 0.125000
+0.125000 0.750000 0.125000
+0.250000 0.750000 0.125000
+0.125000 0.625000 0.250000
+0.250000 0.625000 0.250000
+0.125000 0.750000 0.250000
+0.250000 0.750000 0.250000
+0.250000 0.500000 0.00000
+0.375000 0.500000 0.00000
+0.250000 0.625000 0.00000
+0.375000 0.625000 0.00000
+0.250000 0.500000 0.125000
+0.375000 0.500000 0.125000
+0.250000 0.625000 0.125000
+0.375000 0.625000 0.125000
+0.375000 0.500000 0.00000
+0.500000 0.500000 0.00000
+0.375000 0.625000 0.00000
+0.500000 0.625000 0.00000
+0.375000 0.500000 0.125000
+0.500000 0.500000 0.125000
+0.375000 0.625000 0.125000
+0.500000 0.625000 0.125000
+0.250000 0.625000 0.00000
+0.375000 0.625000 0.00000
+0.250000 0.750000 0.00000
+0.375000 0.750000 0.00000
+0.250000 0.625000 0.125000
+0.375000 0.625000 0.125000
+0.250000 0.750000 0.125000
+0.375000 0.750000 0.125000
+0.375000 0.625000 0.00000
+0.500000 0.625000 0.00000
+0.375000 0.750000 0.00000
+0.500000 0.750000 0.00000
+0.375000 0.625000 0.125000
+0.500000 0.625000 0.125000
+0.375000 0.750000 0.125000
+0.500000 0.750000 0.125000
+0.375000 0.500000 0.125000
+0.500000 0.500000 0.125000
+0.375000 0.625000 0.125000
+0.500000 0.625000 0.125000
+0.375000 0.500000 0.250000
+0.500000 0.500000 0.250000
+0.375000 0.625000 0.250000
+0.500000 0.625000 0.250000
+0.250000 0.625000 0.125000
+0.375000 0.625000 0.125000
+0.250000 0.750000 0.125000
+0.375000 0.750000 0.125000
+0.250000 0.625000 0.250000
+0.375000 0.625000 0.250000
+0.250000 0.750000 0.250000
+0.375000 0.750000 0.250000
+0.375000 0.625000 0.125000
+0.500000 0.625000 0.125000
+0.375000 0.750000 0.125000
+0.500000 0.750000 0.125000
+0.375000 0.625000 0.250000
+0.500000 0.625000 0.250000
+0.375000 0.750000 0.250000
+0.500000 0.750000 0.250000
+0.250000 0.500000 0.250000
+0.375000 0.500000 0.250000
+0.250000 0.625000 0.250000
+0.375000 0.625000 0.250000
+0.250000 0.500000 0.375000
+0.375000 0.500000 0.375000
+0.250000 0.625000 0.375000
+0.375000 0.625000 0.375000
+0.375000 0.500000 0.250000
+0.500000 0.500000 0.250000
+0.375000 0.625000 0.250000
+0.500000 0.625000 0.250000
+0.375000 0.500000 0.375000
+0.500000 0.500000 0.375000
+0.375000 0.625000 0.375000
+0.500000 0.625000 0.375000
+0.250000 0.625000 0.250000
+0.375000 0.625000 0.250000
+0.250000 0.750000 0.250000
+0.375000 0.750000 0.250000
+0.250000 0.625000 0.375000
+0.375000 0.625000 0.375000
+0.250000 0.750000 0.375000
+0.375000 0.750000 0.375000
+0.375000 0.625000 0.250000
+0.500000 0.625000 0.250000
+0.375000 0.750000 0.250000
+0.500000 0.750000 0.250000
+0.375000 0.625000 0.375000
+0.500000 0.625000 0.375000
+0.375000 0.750000 0.375000
+0.500000 0.750000 0.375000
+0.250000 0.500000 0.375000
+0.375000 0.500000 0.375000
+0.250000 0.625000 0.375000
+0.375000 0.625000 0.375000
+0.250000 0.500000 0.500000
+0.375000 0.500000 0.500000
+0.250000 0.625000 0.500000
+0.375000 0.625000 0.500000
+0.250000 0.625000 0.375000
+0.375000 0.625000 0.375000
+0.250000 0.750000 0.375000
+0.375000 0.750000 0.375000
+0.250000 0.625000 0.500000
+0.375000 0.625000 0.500000
+0.250000 0.750000 0.500000
+0.375000 0.750000 0.500000
+0.375000 0.625000 0.375000
+0.500000 0.625000 0.375000
+0.375000 0.750000 0.375000
+0.500000 0.750000 0.375000
+0.375000 0.625000 0.500000
+0.500000 0.625000 0.500000
+0.375000 0.750000 0.500000
+0.500000 0.750000 0.500000
+0.00000 0.750000 0.250000
+0.125000 0.750000 0.250000
+0.00000 0.875000 0.250000
+0.125000 0.875000 0.250000
+0.00000 0.750000 0.375000
+0.125000 0.750000 0.375000
+0.00000 0.875000 0.375000
+0.125000 0.875000 0.375000
+0.125000 0.750000 0.250000
+0.250000 0.750000 0.250000
+0.125000 0.875000 0.250000
+0.250000 0.875000 0.250000
+0.125000 0.750000 0.375000
+0.250000 0.750000 0.375000
+0.125000 0.875000 0.375000
+0.250000 0.875000 0.375000
+0.00000 0.875000 0.250000
+0.125000 0.875000 0.250000
+0.00000 1.00000 0.250000
+0.125000 1.00000 0.250000
+0.00000 0.875000 0.375000
+0.125000 0.875000 0.375000
+0.00000 1.00000 0.375000
+0.125000 1.00000 0.375000
+0.00000 0.750000 0.375000
+0.125000 0.750000 0.375000
+0.00000 0.875000 0.375000
+0.125000 0.875000 0.375000
+0.00000 0.750000 0.500000
+0.125000 0.750000 0.500000
+0.00000 0.875000 0.500000
+0.125000 0.875000 0.500000
+0.125000 0.750000 0.375000
+0.250000 0.750000 0.375000
+0.125000 0.875000 0.375000
+0.250000 0.875000 0.375000
+0.125000 0.750000 0.500000
+0.250000 0.750000 0.500000
+0.125000 0.875000 0.500000
+0.250000 0.875000 0.500000
+0.750000 0.750000 0.250000
+0.875000 0.750000 0.250000
+0.750000 0.875000 0.250000
+0.875000 0.875000 0.250000
+0.750000 0.750000 0.375000
+0.875000 0.750000 0.375000
+0.750000 0.875000 0.375000
+0.875000 0.875000 0.375000
+0.875000 0.750000 0.250000
+1.00000 0.750000 0.250000
+0.875000 0.875000 0.250000
+1.00000 0.875000 0.250000
+0.875000 0.750000 0.375000
+1.00000 0.750000 0.375000
+0.875000 0.875000 0.375000
+1.00000 0.875000 0.375000
+0.750000 0.875000 0.250000
+0.875000 0.875000 0.250000
+0.750000 1.00000 0.250000
+0.875000 1.00000 0.250000
+0.750000 0.875000 0.375000
+0.875000 0.875000 0.375000
+0.750000 1.00000 0.375000
+0.875000 1.00000 0.375000
+0.875000 0.875000 0.250000
+1.00000 0.875000 0.250000
+0.875000 1.00000 0.250000
+1.00000 1.00000 0.250000
+0.875000 0.875000 0.375000
+1.00000 0.875000 0.375000
+0.875000 1.00000 0.375000
+1.00000 1.00000 0.375000
+0.750000 0.750000 0.375000
+0.875000 0.750000 0.375000
+0.750000 0.875000 0.375000
+0.875000 0.875000 0.375000
+0.750000 0.750000 0.500000
+0.875000 0.750000 0.500000
+0.750000 0.875000 0.500000
+0.875000 0.875000 0.500000
+0.875000 0.750000 0.375000
+1.00000 0.750000 0.375000
+0.875000 0.875000 0.375000
+1.00000 0.875000 0.375000
+0.875000 0.750000 0.500000
+1.00000 0.750000 0.500000
+0.875000 0.875000 0.500000
+1.00000 0.875000 0.500000
+0.750000 0.875000 0.375000
+0.875000 0.875000 0.375000
+0.750000 1.00000 0.375000
+0.875000 1.00000 0.375000
+0.750000 0.875000 0.500000
+0.875000 0.875000 0.500000
+0.750000 1.00000 0.500000
+0.875000 1.00000 0.500000
+0.00000 0.00000 0.500000
+0.125000 0.00000 0.500000
+0.00000 0.125000 0.500000
+0.125000 0.125000 0.500000
+0.00000 0.00000 0.625000
+0.125000 0.00000 0.625000
+0.00000 0.125000 0.625000
+0.125000 0.125000 0.625000
+0.125000 0.00000 0.500000
+0.250000 0.00000 0.500000
+0.125000 0.125000 0.500000
+0.250000 0.125000 0.500000
+0.125000 0.00000 0.625000
+0.250000 0.00000 0.625000
+0.125000 0.125000 0.625000
+0.250000 0.125000 0.625000
+0.00000 0.125000 0.500000
+0.125000 0.125000 0.500000
+0.00000 0.250000 0.500000
+0.125000 0.250000 0.500000
+0.00000 0.125000 0.625000
+0.125000 0.125000 0.625000
+0.00000 0.250000 0.625000
+0.125000 0.250000 0.625000
+0.125000 0.125000 0.500000
+0.250000 0.125000 0.500000
+0.125000 0.250000 0.500000
+0.250000 0.250000 0.500000
+0.125000 0.125000 0.625000
+0.250000 0.125000 0.625000
+0.125000 0.250000 0.625000
+0.250000 0.250000 0.625000
+0.00000 0.00000 0.625000
+0.125000 0.00000 0.625000
+0.00000 0.125000 0.625000
+0.125000 0.125000 0.625000
+0.00000 0.00000 0.750000
+0.125000 0.00000 0.750000
+0.00000 0.125000 0.750000
+0.125000 0.125000 0.750000
+0.125000 0.00000 0.625000
+0.250000 0.00000 0.625000
+0.125000 0.125000 0.625000
+0.250000 0.125000 0.625000
+0.125000 0.00000 0.750000
+0.250000 0.00000 0.750000
+0.125000 0.125000 0.750000
+0.250000 0.125000 0.750000
+0.00000 0.125000 0.625000
+0.125000 0.125000 0.625000
+0.00000 0.250000 0.625000
+0.125000 0.250000 0.625000
+0.00000 0.125000 0.750000
+0.125000 0.125000 0.750000
+0.00000 0.250000 0.750000
+0.125000 0.250000 0.750000
+0.125000 0.125000 0.625000
+0.250000 0.125000 0.625000
+0.125000 0.250000 0.625000
+0.250000 0.250000 0.625000
+0.125000 0.125000 0.750000
+0.250000 0.125000 0.750000
+0.125000 0.250000 0.750000
+0.250000 0.250000 0.750000
+0.375000 0.00000 0.500000
+0.500000 0.00000 0.500000
+0.375000 0.125000 0.500000
+0.500000 0.125000 0.500000
+0.375000 0.00000 0.625000
+0.500000 0.00000 0.625000
+0.375000 0.125000 0.625000
+0.500000 0.125000 0.625000
+0.250000 0.125000 0.500000
+0.375000 0.125000 0.500000
+0.250000 0.250000 0.500000
+0.375000 0.250000 0.500000
+0.250000 0.125000 0.625000
+0.375000 0.125000 0.625000
+0.250000 0.250000 0.625000
+0.375000 0.250000 0.625000
+0.375000 0.125000 0.500000
+0.500000 0.125000 0.500000
+0.375000 0.250000 0.500000
+0.500000 0.250000 0.500000
+0.375000 0.125000 0.625000
+0.500000 0.125000 0.625000
+0.375000 0.250000 0.625000
+0.500000 0.250000 0.625000
+0.250000 0.00000 0.625000
+0.375000 0.00000 0.625000
+0.250000 0.125000 0.625000
+0.375000 0.125000 0.625000
+0.250000 0.00000 0.750000
+0.375000 0.00000 0.750000
+0.250000 0.125000 0.750000
+0.375000 0.125000 0.750000
+0.375000 0.00000 0.625000
+0.500000 0.00000 0.625000
+0.375000 0.125000 0.625000
+0.500000 0.125000 0.625000
+0.375000 0.00000 0.750000
+0.500000 0.00000 0.750000
+0.375000 0.125000 0.750000
+0.500000 0.125000 0.750000
+0.250000 0.125000 0.625000
+0.375000 0.125000 0.625000
+0.250000 0.250000 0.625000
+0.375000 0.250000 0.625000
+0.250000 0.125000 0.750000
+0.375000 0.125000 0.750000
+0.250000 0.250000 0.750000
+0.375000 0.250000 0.750000
+0.375000 0.125000 0.625000
+0.500000 0.125000 0.625000
+0.375000 0.250000 0.625000
+0.500000 0.250000 0.625000
+0.375000 0.125000 0.750000
+0.500000 0.125000 0.750000
+0.375000 0.250000 0.750000
+0.500000 0.250000 0.750000
+0.500000 0.00000 0.500000
+0.625000 0.00000 0.500000
+0.500000 0.125000 0.500000
+0.625000 0.125000 0.500000
+0.500000 0.00000 0.625000
+0.625000 0.00000 0.625000
+0.500000 0.125000 0.625000
+0.625000 0.125000 0.625000
+0.500000 0.125000 0.500000
+0.625000 0.125000 0.500000
+0.500000 0.250000 0.500000
+0.625000 0.250000 0.500000
+0.500000 0.125000 0.625000
+0.625000 0.125000 0.625000
+0.500000 0.250000 0.625000
+0.625000 0.250000 0.625000
+0.625000 0.125000 0.500000
+0.750000 0.125000 0.500000
+0.625000 0.250000 0.500000
+0.750000 0.250000 0.500000
+0.625000 0.125000 0.625000
+0.750000 0.125000 0.625000
+0.625000 0.250000 0.625000
+0.750000 0.250000 0.625000
+0.500000 0.00000 0.625000
+0.625000 0.00000 0.625000
+0.500000 0.125000 0.625000
+0.625000 0.125000 0.625000
+0.500000 0.00000 0.750000
+0.625000 0.00000 0.750000
+0.500000 0.125000 0.750000
+0.625000 0.125000 0.750000
+0.625000 0.00000 0.625000
+0.750000 0.00000 0.625000
+0.625000 0.125000 0.625000
+0.750000 0.125000 0.625000
+0.625000 0.00000 0.750000
+0.750000 0.00000 0.750000
+0.625000 0.125000 0.750000
+0.750000 0.125000 0.750000
+0.500000 0.125000 0.625000
+0.625000 0.125000 0.625000
+0.500000 0.250000 0.625000
+0.625000 0.250000 0.625000
+0.500000 0.125000 0.750000
+0.625000 0.125000 0.750000
+0.500000 0.250000 0.750000
+0.625000 0.250000 0.750000
+0.625000 0.125000 0.625000
+0.750000 0.125000 0.625000
+0.625000 0.250000 0.625000
+0.750000 0.250000 0.625000
+0.625000 0.125000 0.750000
+0.750000 0.125000 0.750000
+0.625000 0.250000 0.750000
+0.750000 0.250000 0.750000
+0.500000 0.250000 0.500000
+0.625000 0.250000 0.500000
+0.500000 0.375000 0.500000
+0.625000 0.375000 0.500000
+0.500000 0.250000 0.625000
+0.625000 0.250000 0.625000
+0.500000 0.375000 0.625000
+0.625000 0.375000 0.625000
+0.625000 0.250000 0.500000
+0.750000 0.250000 0.500000
+0.625000 0.375000 0.500000
+0.750000 0.375000 0.500000
+0.625000 0.250000 0.625000
+0.750000 0.250000 0.625000
+0.625000 0.375000 0.625000
+0.750000 0.375000 0.625000
+0.625000 0.375000 0.500000
+0.750000 0.375000 0.500000
+0.625000 0.500000 0.500000
+0.750000 0.500000 0.500000
+0.625000 0.375000 0.625000
+0.750000 0.375000 0.625000
+0.625000 0.500000 0.625000
+0.750000 0.500000 0.625000
+0.500000 0.250000 0.625000
+0.625000 0.250000 0.625000
+0.500000 0.375000 0.625000
+0.625000 0.375000 0.625000
+0.500000 0.250000 0.750000
+0.625000 0.250000 0.750000
+0.500000 0.375000 0.750000
+0.625000 0.375000 0.750000
+0.625000 0.250000 0.625000
+0.750000 0.250000 0.625000
+0.625000 0.375000 0.625000
+0.750000 0.375000 0.625000
+0.625000 0.250000 0.750000
+0.750000 0.250000 0.750000
+0.625000 0.375000 0.750000
+0.750000 0.375000 0.750000
+0.500000 0.375000 0.625000
+0.625000 0.375000 0.625000
+0.500000 0.500000 0.625000
+0.625000 0.500000 0.625000
+0.500000 0.375000 0.750000
+0.625000 0.375000 0.750000
+0.500000 0.500000 0.750000
+0.625000 0.500000 0.750000
+0.625000 0.375000 0.625000
+0.750000 0.375000 0.625000
+0.625000 0.500000 0.625000
+0.750000 0.500000 0.625000
+0.625000 0.375000 0.750000
+0.750000 0.375000 0.750000
+0.625000 0.500000 0.750000
+0.750000 0.500000 0.750000
+0.750000 0.250000 0.500000
+0.875000 0.250000 0.500000
+0.750000 0.375000 0.500000
+0.875000 0.375000 0.500000
+0.750000 0.250000 0.625000
+0.875000 0.250000 0.625000
+0.750000 0.375000 0.625000
+0.875000 0.375000 0.625000
+0.875000 0.250000 0.500000
+1.00000 0.250000 0.500000
+0.875000 0.375000 0.500000
+1.00000 0.375000 0.500000
+0.875000 0.250000 0.625000
+1.00000 0.250000 0.625000
+0.875000 0.375000 0.625000
+1.00000 0.375000 0.625000
+0.750000 0.375000 0.500000
+0.875000 0.375000 0.500000
+0.750000 0.500000 0.500000
+0.875000 0.500000 0.500000
+0.750000 0.375000 0.625000
+0.875000 0.375000 0.625000
+0.750000 0.500000 0.625000
+0.875000 0.500000 0.625000
+0.750000 0.250000 0.625000
+0.875000 0.250000 0.625000
+0.750000 0.375000 0.625000
+0.875000 0.375000 0.625000
+0.750000 0.250000 0.750000
+0.875000 0.250000 0.750000
+0.750000 0.375000 0.750000
+0.875000 0.375000 0.750000
+0.875000 0.250000 0.625000
+1.00000 0.250000 0.625000
+0.875000 0.375000 0.625000
+1.00000 0.375000 0.625000
+0.875000 0.250000 0.750000
+1.00000 0.250000 0.750000
+0.875000 0.375000 0.750000
+1.00000 0.375000 0.750000
+0.750000 0.375000 0.625000
+0.875000 0.375000 0.625000
+0.750000 0.500000 0.625000
+0.875000 0.500000 0.625000
+0.750000 0.375000 0.750000
+0.875000 0.375000 0.750000
+0.750000 0.500000 0.750000
+0.875000 0.500000 0.750000
+0.875000 0.375000 0.625000
+1.00000 0.375000 0.625000
+0.875000 0.500000 0.625000
+1.00000 0.500000 0.625000
+0.875000 0.375000 0.750000
+1.00000 0.375000 0.750000
+0.875000 0.500000 0.750000
+1.00000 0.500000 0.750000
+0.250000 0.500000 0.500000
+0.375000 0.500000 0.500000
+0.250000 0.625000 0.500000
+0.375000 0.625000 0.500000
+0.250000 0.500000 0.625000
+0.375000 0.500000 0.625000
+0.250000 0.625000 0.625000
+0.375000 0.625000 0.625000
+0.375000 0.500000 0.500000
+0.500000 0.500000 0.500000
+0.375000 0.625000 0.500000
+0.500000 0.625000 0.500000
+0.375000 0.500000 0.625000
+0.500000 0.500000 0.625000
+0.375000 0.625000 0.625000
+0.500000 0.625000 0.625000
+0.250000 0.625000 0.500000
+0.375000 0.625000 0.500000
+0.250000 0.750000 0.500000
+0.375000 0.750000 0.500000
+0.250000 0.625000 0.625000
+0.375000 0.625000 0.625000
+0.250000 0.750000 0.625000
+0.375000 0.750000 0.625000
+0.375000 0.625000 0.500000
+0.500000 0.625000 0.500000
+0.375000 0.750000 0.500000
+0.500000 0.750000 0.500000
+0.375000 0.625000 0.625000
+0.500000 0.625000 0.625000
+0.375000 0.750000 0.625000
+0.500000 0.750000 0.625000
+0.375000 0.500000 0.625000
+0.500000 0.500000 0.625000
+0.375000 0.625000 0.625000
+0.500000 0.625000 0.625000
+0.375000 0.500000 0.750000
+0.500000 0.500000 0.750000
+0.375000 0.625000 0.750000
+0.500000 0.625000 0.750000
+0.250000 0.625000 0.625000
+0.375000 0.625000 0.625000
+0.250000 0.750000 0.625000
+0.375000 0.750000 0.625000
+0.250000 0.625000 0.750000
+0.375000 0.625000 0.750000
+0.250000 0.750000 0.750000
+0.375000 0.750000 0.750000
+0.375000 0.625000 0.625000
+0.500000 0.625000 0.625000
+0.375000 0.750000 0.625000
+0.500000 0.750000 0.625000
+0.375000 0.625000 0.750000
+0.500000 0.625000 0.750000
+0.375000 0.750000 0.750000
+0.500000 0.750000 0.750000
+0.00000 0.750000 0.500000
+0.125000 0.750000 0.500000
+0.00000 0.875000 0.500000
+0.125000 0.875000 0.500000
+0.00000 0.750000 0.625000
+0.125000 0.750000 0.625000
+0.00000 0.875000 0.625000
+0.125000 0.875000 0.625000
+0.125000 0.750000 0.500000
+0.250000 0.750000 0.500000
+0.125000 0.875000 0.500000
+0.250000 0.875000 0.500000
+0.125000 0.750000 0.625000
+0.250000 0.750000 0.625000
+0.125000 0.875000 0.625000
+0.250000 0.875000 0.625000
+0.00000 0.875000 0.500000
+0.125000 0.875000 0.500000
+0.00000 1.00000 0.500000
+0.125000 1.00000 0.500000
+0.00000 0.875000 0.625000
+0.125000 0.875000 0.625000
+0.00000 1.00000 0.625000
+0.125000 1.00000 0.625000
+0.125000 0.875000 0.500000
+0.250000 0.875000 0.500000
+0.125000 1.00000 0.500000
+0.250000 1.00000 0.500000
+0.125000 0.875000 0.625000
+0.250000 0.875000 0.625000
+0.125000 1.00000 0.625000
+0.250000 1.00000 0.625000
+0.00000 0.750000 0.625000
+0.125000 0.750000 0.625000
+0.00000 0.875000 0.625000
+0.125000 0.875000 0.625000
+0.00000 0.750000 0.750000
+0.125000 0.750000 0.750000
+0.00000 0.875000 0.750000
+0.125000 0.875000 0.750000
+0.00000 0.875000 0.625000
+0.125000 0.875000 0.625000
+0.00000 1.00000 0.625000
+0.125000 1.00000 0.625000
+0.00000 0.875000 0.750000
+0.125000 0.875000 0.750000
+0.00000 1.00000 0.750000
+0.125000 1.00000 0.750000
+0.125000 0.875000 0.625000
+0.250000 0.875000 0.625000
+0.125000 1.00000 0.625000
+0.250000 1.00000 0.625000
+0.125000 0.875000 0.750000
+0.250000 0.875000 0.750000
+0.125000 1.00000 0.750000
+0.250000 1.00000 0.750000
+0.250000 0.750000 0.500000
+0.375000 0.750000 0.500000
+0.250000 0.875000 0.500000
+0.375000 0.875000 0.500000
+0.250000 0.750000 0.625000
+0.375000 0.750000 0.625000
+0.250000 0.875000 0.625000
+0.375000 0.875000 0.625000
+0.375000 0.750000 0.500000
+0.500000 0.750000 0.500000
+0.375000 0.875000 0.500000
+0.500000 0.875000 0.500000
+0.375000 0.750000 0.625000
+0.500000 0.750000 0.625000
+0.375000 0.875000 0.625000
+0.500000 0.875000 0.625000
+0.250000 0.875000 0.500000
+0.375000 0.875000 0.500000
+0.250000 1.00000 0.500000
+0.375000 1.00000 0.500000
+0.250000 0.875000 0.625000
+0.375000 0.875000 0.625000
+0.250000 1.00000 0.625000
+0.375000 1.00000 0.625000
+0.375000 0.875000 0.500000
+0.500000 0.875000 0.500000
+0.375000 1.00000 0.500000
+0.500000 1.00000 0.500000
+0.375000 0.875000 0.625000
+0.500000 0.875000 0.625000
+0.375000 1.00000 0.625000
+0.500000 1.00000 0.625000
+0.250000 0.750000 0.625000
+0.375000 0.750000 0.625000
+0.250000 0.875000 0.625000
+0.375000 0.875000 0.625000
+0.250000 0.750000 0.750000
+0.375000 0.750000 0.750000
+0.250000 0.875000 0.750000
+0.375000 0.875000 0.750000
+0.375000 0.750000 0.625000
+0.500000 0.750000 0.625000
+0.375000 0.875000 0.625000
+0.500000 0.875000 0.625000
+0.375000 0.750000 0.750000
+0.500000 0.750000 0.750000
+0.375000 0.875000 0.750000
+0.500000 0.875000 0.750000
+0.375000 0.875000 0.625000
+0.500000 0.875000 0.625000
+0.375000 1.00000 0.625000
+0.500000 1.00000 0.625000
+0.375000 0.875000 0.750000
+0.500000 0.875000 0.750000
+0.375000 1.00000 0.750000
+0.500000 1.00000 0.750000
+0.500000 0.750000 0.500000
+0.625000 0.750000 0.500000
+0.500000 0.875000 0.500000
+0.625000 0.875000 0.500000
+0.500000 0.750000 0.625000
+0.625000 0.750000 0.625000
+0.500000 0.875000 0.625000
+0.625000 0.875000 0.625000
+0.625000 0.750000 0.500000
+0.750000 0.750000 0.500000
+0.625000 0.875000 0.500000
+0.750000 0.875000 0.500000
+0.625000 0.750000 0.625000
+0.750000 0.750000 0.625000
+0.625000 0.875000 0.625000
+0.750000 0.875000 0.625000
+0.500000 0.875000 0.500000
+0.625000 0.875000 0.500000
+0.500000 1.00000 0.500000
+0.625000 1.00000 0.500000
+0.500000 0.875000 0.625000
+0.625000 0.875000 0.625000
+0.500000 1.00000 0.625000
+0.625000 1.00000 0.625000
+0.625000 0.875000 0.500000
+0.750000 0.875000 0.500000
+0.625000 1.00000 0.500000
+0.750000 1.00000 0.500000
+0.625000 0.875000 0.625000
+0.750000 0.875000 0.625000
+0.625000 1.00000 0.625000
+0.750000 1.00000 0.625000
+0.500000 0.750000 0.625000
+0.625000 0.750000 0.625000
+0.500000 0.875000 0.625000
+0.625000 0.875000 0.625000
+0.500000 0.750000 0.750000
+0.625000 0.750000 0.750000
+0.500000 0.875000 0.750000
+0.625000 0.875000 0.750000
+0.625000 0.750000 0.625000
+0.750000 0.750000 0.625000
+0.625000 0.875000 0.625000
+0.750000 0.875000 0.625000
+0.625000 0.750000 0.750000
+0.750000 0.750000 0.750000
+0.625000 0.875000 0.750000
+0.750000 0.875000 0.750000
+0.500000 0.875000 0.625000
+0.625000 0.875000 0.625000
+0.500000 1.00000 0.625000
+0.625000 1.00000 0.625000
+0.500000 0.875000 0.750000
+0.625000 0.875000 0.750000
+0.500000 1.00000 0.750000
+0.625000 1.00000 0.750000
+0.250000 0.00000 0.00000
+0.375000 0.00000 0.00000
+0.250000 0.125000 0.00000
+0.375000 0.125000 0.00000
+0.250000 0.00000 0.125000
+0.375000 0.00000 0.125000
+0.250000 0.125000 0.125000
+0.375000 0.125000 0.125000
+0.375000 0.00000 0.00000
+0.500000 0.00000 0.00000
+0.375000 0.125000 0.00000
+0.500000 0.125000 0.00000
+0.375000 0.00000 0.125000
+0.500000 0.00000 0.125000
+0.375000 0.125000 0.125000
+0.500000 0.125000 0.125000
+0.250000 0.125000 0.00000
+0.375000 0.125000 0.00000
+0.250000 0.250000 0.00000
+0.375000 0.250000 0.00000
+0.250000 0.125000 0.125000
+0.375000 0.125000 0.125000
+0.250000 0.250000 0.125000
+0.375000 0.250000 0.125000
+0.375000 0.125000 0.00000
+0.500000 0.125000 0.00000
+0.375000 0.250000 0.00000
+0.500000 0.250000 0.00000
+0.375000 0.125000 0.125000
+0.500000 0.125000 0.125000
+0.375000 0.250000 0.125000
+0.500000 0.250000 0.125000
+0.250000 0.00000 0.125000
+0.375000 0.00000 0.125000
+0.250000 0.125000 0.125000
+0.375000 0.125000 0.125000
+0.250000 0.00000 0.250000
+0.375000 0.00000 0.250000
+0.250000 0.125000 0.250000
+0.375000 0.125000 0.250000
+0.375000 0.00000 0.125000
+0.500000 0.00000 0.125000
+0.375000 0.125000 0.125000
+0.500000 0.125000 0.125000
+0.375000 0.00000 0.250000
+0.500000 0.00000 0.250000
+0.375000 0.125000 0.250000
+0.500000 0.125000 0.250000
+0.250000 0.125000 0.125000
+0.375000 0.125000 0.125000
+0.250000 0.250000 0.125000
+0.375000 0.250000 0.125000
+0.250000 0.125000 0.250000
+0.375000 0.125000 0.250000
+0.250000 0.250000 0.250000
+0.375000 0.250000 0.250000
+0.375000 0.125000 0.125000
+0.500000 0.125000 0.125000
+0.375000 0.250000 0.125000
+0.500000 0.250000 0.125000
+0.375000 0.125000 0.250000
+0.500000 0.125000 0.250000
+0.375000 0.250000 0.250000
+0.500000 0.250000 0.250000
+0.00000 0.250000 0.250000
+0.125000 0.250000 0.250000
+0.00000 0.375000 0.250000
+0.125000 0.375000 0.250000
+0.00000 0.250000 0.375000
+0.125000 0.250000 0.375000
+0.00000 0.375000 0.375000
+0.125000 0.375000 0.375000
+0.125000 0.250000 0.250000
+0.250000 0.250000 0.250000
+0.125000 0.375000 0.250000
+0.250000 0.375000 0.250000
+0.125000 0.250000 0.375000
+0.250000 0.250000 0.375000
+0.125000 0.375000 0.375000
+0.250000 0.375000 0.375000
+0.00000 0.375000 0.250000
+0.125000 0.375000 0.250000
+0.00000 0.500000 0.250000
+0.125000 0.500000 0.250000
+0.00000 0.375000 0.375000
+0.125000 0.375000 0.375000
+0.00000 0.500000 0.375000
+0.125000 0.500000 0.375000
+0.125000 0.375000 0.250000
+0.250000 0.375000 0.250000
+0.125000 0.500000 0.250000
+0.250000 0.500000 0.250000
+0.125000 0.375000 0.375000
+0.250000 0.375000 0.375000
+0.125000 0.500000 0.375000
+0.250000 0.500000 0.375000
+0.00000 0.250000 0.375000
+0.125000 0.250000 0.375000
+0.00000 0.375000 0.375000
+0.125000 0.375000 0.375000
+0.00000 0.250000 0.500000
+0.125000 0.250000 0.500000
+0.00000 0.375000 0.500000
+0.125000 0.375000 0.500000
+0.125000 0.250000 0.375000
+0.250000 0.250000 0.375000
+0.125000 0.375000 0.375000
+0.250000 0.375000 0.375000
+0.125000 0.250000 0.500000
+0.250000 0.250000 0.500000
+0.125000 0.375000 0.500000
+0.250000 0.375000 0.500000
+0.00000 0.375000 0.375000
+0.125000 0.375000 0.375000
+0.00000 0.500000 0.375000
+0.125000 0.500000 0.375000
+0.00000 0.375000 0.500000
+0.125000 0.375000 0.500000
+0.00000 0.500000 0.500000
+0.125000 0.500000 0.500000
+0.125000 0.375000 0.375000
+0.250000 0.375000 0.375000
+0.125000 0.500000 0.375000
+0.250000 0.500000 0.375000
+0.125000 0.375000 0.500000
+0.250000 0.375000 0.500000
+0.125000 0.500000 0.500000
+0.250000 0.500000 0.500000
+0.250000 0.250000 0.250000
+0.375000 0.250000 0.250000
+0.250000 0.375000 0.250000
+0.375000 0.375000 0.250000
+0.250000 0.250000 0.375000
+0.375000 0.250000 0.375000
+0.250000 0.375000 0.375000
+0.375000 0.375000 0.375000
+0.375000 0.250000 0.250000
+0.500000 0.250000 0.250000
+0.375000 0.375000 0.250000
+0.500000 0.375000 0.250000
+0.375000 0.250000 0.375000
+0.500000 0.250000 0.375000
+0.375000 0.375000 0.375000
+0.500000 0.375000 0.375000
+0.250000 0.375000 0.250000
+0.375000 0.375000 0.250000
+0.250000 0.500000 0.250000
+0.375000 0.500000 0.250000
+0.250000 0.375000 0.375000
+0.375000 0.375000 0.375000
+0.250000 0.500000 0.375000
+0.375000 0.500000 0.375000
+0.375000 0.375000 0.250000
+0.500000 0.375000 0.250000
+0.375000 0.500000 0.250000
+0.500000 0.500000 0.250000
+0.375000 0.375000 0.375000
+0.500000 0.375000 0.375000
+0.375000 0.500000 0.375000
+0.500000 0.500000 0.375000
+0.250000 0.250000 0.375000
+0.375000 0.250000 0.375000
+0.250000 0.375000 0.375000
+0.375000 0.375000 0.375000
+0.250000 0.250000 0.500000
+0.375000 0.250000 0.500000
+0.250000 0.375000 0.500000
+0.375000 0.375000 0.500000
+0.375000 0.250000 0.375000
+0.500000 0.250000 0.375000
+0.375000 0.375000 0.375000
+0.500000 0.375000 0.375000
+0.375000 0.250000 0.500000
+0.500000 0.250000 0.500000
+0.375000 0.375000 0.500000
+0.500000 0.375000 0.500000
+0.250000 0.375000 0.375000
+0.375000 0.375000 0.375000
+0.250000 0.500000 0.375000
+0.375000 0.500000 0.375000
+0.250000 0.375000 0.500000
+0.375000 0.375000 0.500000
+0.250000 0.500000 0.500000
+0.375000 0.500000 0.500000
+0.375000 0.375000 0.375000
+0.500000 0.375000 0.375000
+0.375000 0.500000 0.375000
+0.500000 0.500000 0.375000
+0.375000 0.375000 0.500000
+0.500000 0.375000 0.500000
+0.375000 0.500000 0.500000
+0.500000 0.500000 0.500000
+0.500000 0.00000 0.00000
+0.625000 0.00000 0.00000
+0.500000 0.125000 0.00000
+0.625000 0.125000 0.00000
+0.500000 0.00000 0.125000
+0.625000 0.00000 0.125000
+0.500000 0.125000 0.125000
+0.625000 0.125000 0.125000
+0.625000 0.00000 0.00000
+0.750000 0.00000 0.00000
+0.625000 0.125000 0.00000
+0.750000 0.125000 0.00000
+0.625000 0.00000 0.125000
+0.750000 0.00000 0.125000
+0.625000 0.125000 0.125000
+0.750000 0.125000 0.125000
+0.500000 0.125000 0.00000
+0.625000 0.125000 0.00000
+0.500000 0.250000 0.00000
+0.625000 0.250000 0.00000
+0.500000 0.125000 0.125000
+0.625000 0.125000 0.125000
+0.500000 0.250000 0.125000
+0.625000 0.250000 0.125000
+0.625000 0.125000 0.00000
+0.750000 0.125000 0.00000
+0.625000 0.250000 0.00000
+0.750000 0.250000 0.00000
+0.625000 0.125000 0.125000
+0.750000 0.125000 0.125000
+0.625000 0.250000 0.125000
+0.750000 0.250000 0.125000
+0.500000 0.00000 0.125000
+0.625000 0.00000 0.125000
+0.500000 0.125000 0.125000
+0.625000 0.125000 0.125000
+0.500000 0.00000 0.250000
+0.625000 0.00000 0.250000
+0.500000 0.125000 0.250000
+0.625000 0.125000 0.250000
+0.625000 0.00000 0.125000
+0.750000 0.00000 0.125000
+0.625000 0.125000 0.125000
+0.750000 0.125000 0.125000
+0.625000 0.00000 0.250000
+0.750000 0.00000 0.250000
+0.625000 0.125000 0.250000
+0.750000 0.125000 0.250000
+0.500000 0.125000 0.125000
+0.625000 0.125000 0.125000
+0.500000 0.250000 0.125000
+0.625000 0.250000 0.125000
+0.500000 0.125000 0.250000
+0.625000 0.125000 0.250000
+0.500000 0.250000 0.250000
+0.625000 0.250000 0.250000
+0.625000 0.125000 0.125000
+0.750000 0.125000 0.125000
+0.625000 0.250000 0.125000
+0.750000 0.250000 0.125000
+0.625000 0.125000 0.250000
+0.750000 0.125000 0.250000
+0.625000 0.250000 0.250000
+0.750000 0.250000 0.250000
+0.750000 0.00000 0.00000
+0.875000 0.00000 0.00000
+0.750000 0.125000 0.00000
+0.875000 0.125000 0.00000
+0.750000 0.00000 0.125000
+0.875000 0.00000 0.125000
+0.750000 0.125000 0.125000
+0.875000 0.125000 0.125000
+0.875000 0.00000 0.00000
+1.00000 0.00000 0.00000
+0.875000 0.125000 0.00000
+1.00000 0.125000 0.00000
+0.875000 0.00000 0.125000
+1.00000 0.00000 0.125000
+0.875000 0.125000 0.125000
+1.00000 0.125000 0.125000
+0.750000 0.125000 0.00000
+0.875000 0.125000 0.00000
+0.750000 0.250000 0.00000
+0.875000 0.250000 0.00000
+0.750000 0.125000 0.125000
+0.875000 0.125000 0.125000
+0.750000 0.250000 0.125000
+0.875000 0.250000 0.125000
+0.875000 0.125000 0.00000
+1.00000 0.125000 0.00000
+0.875000 0.250000 0.00000
+1.00000 0.250000 0.00000
+0.875000 0.125000 0.125000
+1.00000 0.125000 0.125000
+0.875000 0.250000 0.125000
+1.00000 0.250000 0.125000
+0.750000 0.00000 0.125000
+0.875000 0.00000 0.125000
+0.750000 0.125000 0.125000
+0.875000 0.125000 0.125000
+0.750000 0.00000 0.250000
+0.875000 0.00000 0.250000
+0.750000 0.125000 0.250000
+0.875000 0.125000 0.250000
+0.875000 0.00000 0.125000
+1.00000 0.00000 0.125000
+0.875000 0.125000 0.125000
+1.00000 0.125000 0.125000
+0.875000 0.00000 0.250000
+1.00000 0.00000 0.250000
+0.875000 0.125000 0.250000
+1.00000 0.125000 0.250000
+0.750000 0.125000 0.125000
+0.875000 0.125000 0.125000
+0.750000 0.250000 0.125000
+0.875000 0.250000 0.125000
+0.750000 0.125000 0.250000
+0.875000 0.125000 0.250000
+0.750000 0.250000 0.250000
+0.875000 0.250000 0.250000
+0.875000 0.125000 0.125000
+1.00000 0.125000 0.125000
+0.875000 0.250000 0.125000
+1.00000 0.250000 0.125000
+0.875000 0.125000 0.250000
+1.00000 0.125000 0.250000
+0.875000 0.250000 0.250000
+1.00000 0.250000 0.250000
+0.500000 0.250000 0.00000
+0.625000 0.250000 0.00000
+0.500000 0.375000 0.00000
+0.625000 0.375000 0.00000
+0.500000 0.250000 0.125000
+0.625000 0.250000 0.125000
+0.500000 0.375000 0.125000
+0.625000 0.375000 0.125000
+0.625000 0.250000 0.00000
+0.750000 0.250000 0.00000
+0.625000 0.375000 0.00000
+0.750000 0.375000 0.00000
+0.625000 0.250000 0.125000
+0.750000 0.250000 0.125000
+0.625000 0.375000 0.125000
+0.750000 0.375000 0.125000
+0.500000 0.375000 0.00000
+0.625000 0.375000 0.00000
+0.500000 0.500000 0.00000
+0.625000 0.500000 0.00000
+0.500000 0.375000 0.125000
+0.625000 0.375000 0.125000
+0.500000 0.500000 0.125000
+0.625000 0.500000 0.125000
+0.625000 0.375000 0.00000
+0.750000 0.375000 0.00000
+0.625000 0.500000 0.00000
+0.750000 0.500000 0.00000
+0.625000 0.375000 0.125000
+0.750000 0.375000 0.125000
+0.625000 0.500000 0.125000
+0.750000 0.500000 0.125000
+0.500000 0.250000 0.125000
+0.625000 0.250000 0.125000
+0.500000 0.375000 0.125000
+0.625000 0.375000 0.125000
+0.500000 0.250000 0.250000
+0.625000 0.250000 0.250000
+0.500000 0.375000 0.250000
+0.625000 0.375000 0.250000
+0.625000 0.250000 0.125000
+0.750000 0.250000 0.125000
+0.625000 0.375000 0.125000
+0.750000 0.375000 0.125000
+0.625000 0.250000 0.250000
+0.750000 0.250000 0.250000
+0.625000 0.375000 0.250000
+0.750000 0.375000 0.250000
+0.500000 0.375000 0.125000
+0.625000 0.375000 0.125000
+0.500000 0.500000 0.125000
+0.625000 0.500000 0.125000
+0.500000 0.375000 0.250000
+0.625000 0.375000 0.250000
+0.500000 0.500000 0.250000
+0.625000 0.500000 0.250000
+0.625000 0.375000 0.125000
+0.750000 0.375000 0.125000
+0.625000 0.500000 0.125000
+0.750000 0.500000 0.125000
+0.625000 0.375000 0.250000
+0.750000 0.375000 0.250000
+0.625000 0.500000 0.250000
+0.750000 0.500000 0.250000
+0.00000 0.750000 0.00000
+0.125000 0.750000 0.00000
+0.00000 0.875000 0.00000
+0.125000 0.875000 0.00000
+0.00000 0.750000 0.125000
+0.125000 0.750000 0.125000
+0.00000 0.875000 0.125000
+0.125000 0.875000 0.125000
+0.125000 0.750000 0.00000
+0.250000 0.750000 0.00000
+0.125000 0.875000 0.00000
+0.250000 0.875000 0.00000
+0.125000 0.750000 0.125000
+0.250000 0.750000 0.125000
+0.125000 0.875000 0.125000
+0.250000 0.875000 0.125000
+0.00000 0.875000 0.00000
+0.125000 0.875000 0.00000
+0.00000 1.00000 0.00000
+0.125000 1.00000 0.00000
+0.00000 0.875000 0.125000
+0.125000 0.875000 0.125000
+0.00000 1.00000 0.125000
+0.125000 1.00000 0.125000
+0.125000 0.875000 0.00000
+0.250000 0.875000 0.00000
+0.125000 1.00000 0.00000
+0.250000 1.00000 0.00000
+0.125000 0.875000 0.125000
+0.250000 0.875000 0.125000
+0.125000 1.00000 0.125000
+0.250000 1.00000 0.125000
+0.00000 0.750000 0.125000
+0.125000 0.750000 0.125000
+0.00000 0.875000 0.125000
+0.125000 0.875000 0.125000
+0.00000 0.750000 0.250000
+0.125000 0.750000 0.250000
+0.00000 0.875000 0.250000
+0.125000 0.875000 0.250000
+0.125000 0.750000 0.125000
+0.250000 0.750000 0.125000
+0.125000 0.875000 0.125000
+0.250000 0.875000 0.125000
+0.125000 0.750000 0.250000
+0.250000 0.750000 0.250000
+0.125000 0.875000 0.250000
+0.250000 0.875000 0.250000
+0.00000 0.875000 0.125000
+0.125000 0.875000 0.125000
+0.00000 1.00000 0.125000
+0.125000 1.00000 0.125000
+0.00000 0.875000 0.250000
+0.125000 0.875000 0.250000
+0.00000 1.00000 0.250000
+0.125000 1.00000 0.250000
+0.125000 0.875000 0.125000
+0.250000 0.875000 0.125000
+0.125000 1.00000 0.125000
+0.250000 1.00000 0.125000
+0.125000 0.875000 0.250000
+0.250000 0.875000 0.250000
+0.125000 1.00000 0.250000
+0.250000 1.00000 0.250000
+0.250000 0.750000 0.00000
+0.375000 0.750000 0.00000
+0.250000 0.875000 0.00000
+0.375000 0.875000 0.00000
+0.250000 0.750000 0.125000
+0.375000 0.750000 0.125000
+0.250000 0.875000 0.125000
+0.375000 0.875000 0.125000
+0.375000 0.750000 0.00000
+0.500000 0.750000 0.00000
+0.375000 0.875000 0.00000
+0.500000 0.875000 0.00000
+0.375000 0.750000 0.125000
+0.500000 0.750000 0.125000
+0.375000 0.875000 0.125000
+0.500000 0.875000 0.125000
+0.250000 0.875000 0.00000
+0.375000 0.875000 0.00000
+0.250000 1.00000 0.00000
+0.375000 1.00000 0.00000
+0.250000 0.875000 0.125000
+0.375000 0.875000 0.125000
+0.250000 1.00000 0.125000
+0.375000 1.00000 0.125000
+0.375000 0.875000 0.00000
+0.500000 0.875000 0.00000
+0.375000 1.00000 0.00000
+0.500000 1.00000 0.00000
+0.375000 0.875000 0.125000
+0.500000 0.875000 0.125000
+0.375000 1.00000 0.125000
+0.500000 1.00000 0.125000
+0.250000 0.750000 0.125000
+0.375000 0.750000 0.125000
+0.250000 0.875000 0.125000
+0.375000 0.875000 0.125000
+0.250000 0.750000 0.250000
+0.375000 0.750000 0.250000
+0.250000 0.875000 0.250000
+0.375000 0.875000 0.250000
+0.375000 0.750000 0.125000
+0.500000 0.750000 0.125000
+0.375000 0.875000 0.125000
+0.500000 0.875000 0.125000
+0.375000 0.750000 0.250000
+0.500000 0.750000 0.250000
+0.375000 0.875000 0.250000
+0.500000 0.875000 0.250000
+0.250000 0.875000 0.125000
+0.375000 0.875000 0.125000
+0.250000 1.00000 0.125000
+0.375000 1.00000 0.125000
+0.250000 0.875000 0.250000
+0.375000 0.875000 0.250000
+0.250000 1.00000 0.250000
+0.375000 1.00000 0.250000
+0.375000 0.875000 0.125000
+0.500000 0.875000 0.125000
+0.375000 1.00000 0.125000
+0.500000 1.00000 0.125000
+0.375000 0.875000 0.250000
+0.500000 0.875000 0.250000
+0.375000 1.00000 0.250000
+0.500000 1.00000 0.250000
+0.00000 0.500000 0.250000
+0.125000 0.500000 0.250000
+0.00000 0.625000 0.250000
+0.125000 0.625000 0.250000
+0.00000 0.500000 0.375000
+0.125000 0.500000 0.375000
+0.00000 0.625000 0.375000
+0.125000 0.625000 0.375000
+0.125000 0.500000 0.250000
+0.250000 0.500000 0.250000
+0.125000 0.625000 0.250000
+0.250000 0.625000 0.250000
+0.125000 0.500000 0.375000
+0.250000 0.500000 0.375000
+0.125000 0.625000 0.375000
+0.250000 0.625000 0.375000
+0.00000 0.625000 0.250000
+0.125000 0.625000 0.250000
+0.00000 0.750000 0.250000
+0.125000 0.750000 0.250000
+0.00000 0.625000 0.375000
+0.125000 0.625000 0.375000
+0.00000 0.750000 0.375000
+0.125000 0.750000 0.375000
+0.125000 0.625000 0.250000
+0.250000 0.625000 0.250000
+0.125000 0.750000 0.250000
+0.250000 0.750000 0.250000
+0.125000 0.625000 0.375000
+0.250000 0.625000 0.375000
+0.125000 0.750000 0.375000
+0.250000 0.750000 0.375000
+0.00000 0.500000 0.375000
+0.125000 0.500000 0.375000
+0.00000 0.625000 0.375000
+0.125000 0.625000 0.375000
+0.00000 0.500000 0.500000
+0.125000 0.500000 0.500000
+0.00000 0.625000 0.500000
+0.125000 0.625000 0.500000
+0.125000 0.500000 0.375000
+0.250000 0.500000 0.375000
+0.125000 0.625000 0.375000
+0.250000 0.625000 0.375000
+0.125000 0.500000 0.500000
+0.250000 0.500000 0.500000
+0.125000 0.625000 0.500000
+0.250000 0.625000 0.500000
+0.00000 0.625000 0.375000
+0.125000 0.625000 0.375000
+0.00000 0.750000 0.375000
+0.125000 0.750000 0.375000
+0.00000 0.625000 0.500000
+0.125000 0.625000 0.500000
+0.00000 0.750000 0.500000
+0.125000 0.750000 0.500000
+0.125000 0.625000 0.375000
+0.250000 0.625000 0.375000
+0.125000 0.750000 0.375000
+0.250000 0.750000 0.375000
+0.125000 0.625000 0.500000
+0.250000 0.625000 0.500000
+0.125000 0.750000 0.500000
+0.250000 0.750000 0.500000
+0.500000 0.500000 0.00000
+0.625000 0.500000 0.00000
+0.500000 0.625000 0.00000
+0.625000 0.625000 0.00000
+0.500000 0.500000 0.125000
+0.625000 0.500000 0.125000
+0.500000 0.625000 0.125000
+0.625000 0.625000 0.125000
+0.625000 0.500000 0.00000
+0.750000 0.500000 0.00000
+0.625000 0.625000 0.00000
+0.750000 0.625000 0.00000
+0.625000 0.500000 0.125000
+0.750000 0.500000 0.125000
+0.625000 0.625000 0.125000
+0.750000 0.625000 0.125000
+0.500000 0.625000 0.00000
+0.625000 0.625000 0.00000
+0.500000 0.750000 0.00000
+0.625000 0.750000 0.00000
+0.500000 0.625000 0.125000
+0.625000 0.625000 0.125000
+0.500000 0.750000 0.125000
+0.625000 0.750000 0.125000
+0.625000 0.625000 0.00000
+0.750000 0.625000 0.00000
+0.625000 0.750000 0.00000
+0.750000 0.750000 0.00000
+0.625000 0.625000 0.125000
+0.750000 0.625000 0.125000
+0.625000 0.750000 0.125000
+0.750000 0.750000 0.125000
+0.500000 0.500000 0.125000
+0.625000 0.500000 0.125000
+0.500000 0.625000 0.125000
+0.625000 0.625000 0.125000
+0.500000 0.500000 0.250000
+0.625000 0.500000 0.250000
+0.500000 0.625000 0.250000
+0.625000 0.625000 0.250000
+0.625000 0.500000 0.125000
+0.750000 0.500000 0.125000
+0.625000 0.625000 0.125000
+0.750000 0.625000 0.125000
+0.625000 0.500000 0.250000
+0.750000 0.500000 0.250000
+0.625000 0.625000 0.250000
+0.750000 0.625000 0.250000
+0.500000 0.625000 0.125000
+0.625000 0.625000 0.125000
+0.500000 0.750000 0.125000
+0.625000 0.750000 0.125000
+0.500000 0.625000 0.250000
+0.625000 0.625000 0.250000
+0.500000 0.750000 0.250000
+0.625000 0.750000 0.250000
+0.625000 0.625000 0.125000
+0.750000 0.625000 0.125000
+0.625000 0.750000 0.125000
+0.750000 0.750000 0.125000
+0.625000 0.625000 0.250000
+0.750000 0.625000 0.250000
+0.625000 0.750000 0.250000
+0.750000 0.750000 0.250000
+0.750000 0.500000 0.00000
+0.875000 0.500000 0.00000
+0.750000 0.625000 0.00000
+0.875000 0.625000 0.00000
+0.750000 0.500000 0.125000
+0.875000 0.500000 0.125000
+0.750000 0.625000 0.125000
+0.875000 0.625000 0.125000
+0.875000 0.500000 0.00000
+1.00000 0.500000 0.00000
+0.875000 0.625000 0.00000
+1.00000 0.625000 0.00000
+0.875000 0.500000 0.125000
+1.00000 0.500000 0.125000
+0.875000 0.625000 0.125000
+1.00000 0.625000 0.125000
+0.750000 0.625000 0.00000
+0.875000 0.625000 0.00000
+0.750000 0.750000 0.00000
+0.875000 0.750000 0.00000
+0.750000 0.625000 0.125000
+0.875000 0.625000 0.125000
+0.750000 0.750000 0.125000
+0.875000 0.750000 0.125000
+0.875000 0.625000 0.00000
+1.00000 0.625000 0.00000
+0.875000 0.750000 0.00000
+1.00000 0.750000 0.00000
+0.875000 0.625000 0.125000
+1.00000 0.625000 0.125000
+0.875000 0.750000 0.125000
+1.00000 0.750000 0.125000
+0.750000 0.500000 0.125000
+0.875000 0.500000 0.125000
+0.750000 0.625000 0.125000
+0.875000 0.625000 0.125000
+0.750000 0.500000 0.250000
+0.875000 0.500000 0.250000
+0.750000 0.625000 0.250000
+0.875000 0.625000 0.250000
+0.875000 0.500000 0.125000
+1.00000 0.500000 0.125000
+0.875000 0.625000 0.125000
+1.00000 0.625000 0.125000
+0.875000 0.500000 0.250000
+1.00000 0.500000 0.250000
+0.875000 0.625000 0.250000
+1.00000 0.625000 0.250000
+0.750000 0.625000 0.125000
+0.875000 0.625000 0.125000
+0.750000 0.750000 0.125000
+0.875000 0.750000 0.125000
+0.750000 0.625000 0.250000
+0.875000 0.625000 0.250000
+0.750000 0.750000 0.250000
+0.875000 0.750000 0.250000
+0.875000 0.625000 0.125000
+1.00000 0.625000 0.125000
+0.875000 0.750000 0.125000
+1.00000 0.750000 0.125000
+0.875000 0.625000 0.250000
+1.00000 0.625000 0.250000
+0.875000 0.750000 0.250000
+1.00000 0.750000 0.250000
+0.500000 0.750000 0.00000
+0.625000 0.750000 0.00000
+0.500000 0.875000 0.00000
+0.625000 0.875000 0.00000
+0.500000 0.750000 0.125000
+0.625000 0.750000 0.125000
+0.500000 0.875000 0.125000
+0.625000 0.875000 0.125000
+0.625000 0.750000 0.00000
+0.750000 0.750000 0.00000
+0.625000 0.875000 0.00000
+0.750000 0.875000 0.00000
+0.625000 0.750000 0.125000
+0.750000 0.750000 0.125000
+0.625000 0.875000 0.125000
+0.750000 0.875000 0.125000
+0.500000 0.875000 0.00000
+0.625000 0.875000 0.00000
+0.500000 1.00000 0.00000
+0.625000 1.00000 0.00000
+0.500000 0.875000 0.125000
+0.625000 0.875000 0.125000
+0.500000 1.00000 0.125000
+0.625000 1.00000 0.125000
+0.625000 0.875000 0.00000
+0.750000 0.875000 0.00000
+0.625000 1.00000 0.00000
+0.750000 1.00000 0.00000
+0.625000 0.875000 0.125000
+0.750000 0.875000 0.125000
+0.625000 1.00000 0.125000
+0.750000 1.00000 0.125000
+0.500000 0.750000 0.125000
+0.625000 0.750000 0.125000
+0.500000 0.875000 0.125000
+0.625000 0.875000 0.125000
+0.500000 0.750000 0.250000
+0.625000 0.750000 0.250000
+0.500000 0.875000 0.250000
+0.625000 0.875000 0.250000
+0.625000 0.750000 0.125000
+0.750000 0.750000 0.125000
+0.625000 0.875000 0.125000
+0.750000 0.875000 0.125000
+0.625000 0.750000 0.250000
+0.750000 0.750000 0.250000
+0.625000 0.875000 0.250000
+0.750000 0.875000 0.250000
+0.500000 0.875000 0.125000
+0.625000 0.875000 0.125000
+0.500000 1.00000 0.125000
+0.625000 1.00000 0.125000
+0.500000 0.875000 0.250000
+0.625000 0.875000 0.250000
+0.500000 1.00000 0.250000
+0.625000 1.00000 0.250000
+0.625000 0.875000 0.125000
+0.750000 0.875000 0.125000
+0.625000 1.00000 0.125000
+0.750000 1.00000 0.125000
+0.625000 0.875000 0.250000
+0.750000 0.875000 0.250000
+0.625000 1.00000 0.250000
+0.750000 1.00000 0.250000
+0.500000 0.500000 0.250000
+0.625000 0.500000 0.250000
+0.500000 0.625000 0.250000
+0.625000 0.625000 0.250000
+0.500000 0.500000 0.375000
+0.625000 0.500000 0.375000
+0.500000 0.625000 0.375000
+0.625000 0.625000 0.375000
+0.625000 0.500000 0.250000
+0.750000 0.500000 0.250000
+0.625000 0.625000 0.250000
+0.750000 0.625000 0.250000
+0.625000 0.500000 0.375000
+0.750000 0.500000 0.375000
+0.625000 0.625000 0.375000
+0.750000 0.625000 0.375000
+0.500000 0.625000 0.250000
+0.625000 0.625000 0.250000
+0.500000 0.750000 0.250000
+0.625000 0.750000 0.250000
+0.500000 0.625000 0.375000
+0.625000 0.625000 0.375000
+0.500000 0.750000 0.375000
+0.625000 0.750000 0.375000
+0.625000 0.625000 0.250000
+0.750000 0.625000 0.250000
+0.625000 0.750000 0.250000
+0.750000 0.750000 0.250000
+0.625000 0.625000 0.375000
+0.750000 0.625000 0.375000
+0.625000 0.750000 0.375000
+0.750000 0.750000 0.375000
+0.500000 0.500000 0.375000
+0.625000 0.500000 0.375000
+0.500000 0.625000 0.375000
+0.625000 0.625000 0.375000
+0.500000 0.500000 0.500000
+0.625000 0.500000 0.500000
+0.500000 0.625000 0.500000
+0.625000 0.625000 0.500000
+0.625000 0.500000 0.375000
+0.750000 0.500000 0.375000
+0.625000 0.625000 0.375000
+0.750000 0.625000 0.375000
+0.625000 0.500000 0.500000
+0.750000 0.500000 0.500000
+0.625000 0.625000 0.500000
+0.750000 0.625000 0.500000
+0.500000 0.625000 0.375000
+0.625000 0.625000 0.375000
+0.500000 0.750000 0.375000
+0.625000 0.750000 0.375000
+0.500000 0.625000 0.500000
+0.625000 0.625000 0.500000
+0.500000 0.750000 0.500000
+0.625000 0.750000 0.500000
+0.625000 0.625000 0.375000
+0.750000 0.625000 0.375000
+0.625000 0.750000 0.375000
+0.750000 0.750000 0.375000
+0.625000 0.625000 0.500000
+0.750000 0.625000 0.500000
+0.625000 0.750000 0.500000
+0.750000 0.750000 0.500000
+0.750000 0.500000 0.250000
+0.875000 0.500000 0.250000
+0.750000 0.625000 0.250000
+0.875000 0.625000 0.250000
+0.750000 0.500000 0.375000
+0.875000 0.500000 0.375000
+0.750000 0.625000 0.375000
+0.875000 0.625000 0.375000
+0.875000 0.500000 0.250000
+1.00000 0.500000 0.250000
+0.875000 0.625000 0.250000
+1.00000 0.625000 0.250000
+0.875000 0.500000 0.375000
+1.00000 0.500000 0.375000
+0.875000 0.625000 0.375000
+1.00000 0.625000 0.375000
+0.750000 0.625000 0.250000
+0.875000 0.625000 0.250000
+0.750000 0.750000 0.250000
+0.875000 0.750000 0.250000
+0.750000 0.625000 0.375000
+0.875000 0.625000 0.375000
+0.750000 0.750000 0.375000
+0.875000 0.750000 0.375000
+0.875000 0.625000 0.250000
+1.00000 0.625000 0.250000
+0.875000 0.750000 0.250000
+1.00000 0.750000 0.250000
+0.875000 0.625000 0.375000
+1.00000 0.625000 0.375000
+0.875000 0.750000 0.375000
+1.00000 0.750000 0.375000
+0.750000 0.500000 0.375000
+0.875000 0.500000 0.375000
+0.750000 0.625000 0.375000
+0.875000 0.625000 0.375000
+0.750000 0.500000 0.500000
+0.875000 0.500000 0.500000
+0.750000 0.625000 0.500000
+0.875000 0.625000 0.500000
+0.875000 0.500000 0.375000
+1.00000 0.500000 0.375000
+0.875000 0.625000 0.375000
+1.00000 0.625000 0.375000
+0.875000 0.500000 0.500000
+1.00000 0.500000 0.500000
+0.875000 0.625000 0.500000
+1.00000 0.625000 0.500000
+0.750000 0.625000 0.375000
+0.875000 0.625000 0.375000
+0.750000 0.750000 0.375000
+0.875000 0.750000 0.375000
+0.750000 0.625000 0.500000
+0.875000 0.625000 0.500000
+0.750000 0.750000 0.500000
+0.875000 0.750000 0.500000
+0.875000 0.625000 0.375000
+1.00000 0.625000 0.375000
+0.875000 0.750000 0.375000
+1.00000 0.750000 0.375000
+0.875000 0.625000 0.500000
+1.00000 0.625000 0.500000
+0.875000 0.750000 0.500000
+1.00000 0.750000 0.500000
+0.500000 0.750000 0.250000
+0.625000 0.750000 0.250000
+0.500000 0.875000 0.250000
+0.625000 0.875000 0.250000
+0.500000 0.750000 0.375000
+0.625000 0.750000 0.375000
+0.500000 0.875000 0.375000
+0.625000 0.875000 0.375000
+0.625000 0.750000 0.250000
+0.750000 0.750000 0.250000
+0.625000 0.875000 0.250000
+0.750000 0.875000 0.250000
+0.625000 0.750000 0.375000
+0.750000 0.750000 0.375000
+0.625000 0.875000 0.375000
+0.750000 0.875000 0.375000
+0.500000 0.875000 0.250000
+0.625000 0.875000 0.250000
+0.500000 1.00000 0.250000
+0.625000 1.00000 0.250000
+0.500000 0.875000 0.375000
+0.625000 0.875000 0.375000
+0.500000 1.00000 0.375000
+0.625000 1.00000 0.375000
+0.625000 0.875000 0.250000
+0.750000 0.875000 0.250000
+0.625000 1.00000 0.250000
+0.750000 1.00000 0.250000
+0.625000 0.875000 0.375000
+0.750000 0.875000 0.375000
+0.625000 1.00000 0.375000
+0.750000 1.00000 0.375000
+0.500000 0.750000 0.375000
+0.625000 0.750000 0.375000
+0.500000 0.875000 0.375000
+0.625000 0.875000 0.375000
+0.500000 0.750000 0.500000
+0.625000 0.750000 0.500000
+0.500000 0.875000 0.500000
+0.625000 0.875000 0.500000
+0.625000 0.750000 0.375000
+0.750000 0.750000 0.375000
+0.625000 0.875000 0.375000
+0.750000 0.875000 0.375000
+0.625000 0.750000 0.500000
+0.750000 0.750000 0.500000
+0.625000 0.875000 0.500000
+0.750000 0.875000 0.500000
+0.500000 0.875000 0.375000
+0.625000 0.875000 0.375000
+0.500000 1.00000 0.375000
+0.625000 1.00000 0.375000
+0.500000 0.875000 0.500000
+0.625000 0.875000 0.500000
+0.500000 1.00000 0.500000
+0.625000 1.00000 0.500000
+0.625000 0.875000 0.375000
+0.750000 0.875000 0.375000
+0.625000 1.00000 0.375000
+0.750000 1.00000 0.375000
+0.625000 0.875000 0.500000
+0.750000 0.875000 0.500000
+0.625000 1.00000 0.500000
+0.750000 1.00000 0.500000
+0.00000 0.250000 0.500000
+0.125000 0.250000 0.500000
+0.00000 0.375000 0.500000
+0.125000 0.375000 0.500000
+0.00000 0.250000 0.625000
+0.125000 0.250000 0.625000
+0.00000 0.375000 0.625000
+0.125000 0.375000 0.625000
+0.125000 0.250000 0.500000
+0.250000 0.250000 0.500000
+0.125000 0.375000 0.500000
+0.250000 0.375000 0.500000
+0.125000 0.250000 0.625000
+0.250000 0.250000 0.625000
+0.125000 0.375000 0.625000
+0.250000 0.375000 0.625000
+0.00000 0.375000 0.500000
+0.125000 0.375000 0.500000
+0.00000 0.500000 0.500000
+0.125000 0.500000 0.500000
+0.00000 0.375000 0.625000
+0.125000 0.375000 0.625000
+0.00000 0.500000 0.625000
+0.125000 0.500000 0.625000
+0.125000 0.375000 0.500000
+0.250000 0.375000 0.500000
+0.125000 0.500000 0.500000
+0.250000 0.500000 0.500000
+0.125000 0.375000 0.625000
+0.250000 0.375000 0.625000
+0.125000 0.500000 0.625000
+0.250000 0.500000 0.625000
+0.00000 0.250000 0.625000
+0.125000 0.250000 0.625000
+0.00000 0.375000 0.625000
+0.125000 0.375000 0.625000
+0.00000 0.250000 0.750000
+0.125000 0.250000 0.750000
+0.00000 0.375000 0.750000
+0.125000 0.375000 0.750000
+0.125000 0.250000 0.625000
+0.250000 0.250000 0.625000
+0.125000 0.375000 0.625000
+0.250000 0.375000 0.625000
+0.125000 0.250000 0.750000
+0.250000 0.250000 0.750000
+0.125000 0.375000 0.750000
+0.250000 0.375000 0.750000
+0.00000 0.375000 0.625000
+0.125000 0.375000 0.625000
+0.00000 0.500000 0.625000
+0.125000 0.500000 0.625000
+0.00000 0.375000 0.750000
+0.125000 0.375000 0.750000
+0.00000 0.500000 0.750000
+0.125000 0.500000 0.750000
+0.125000 0.375000 0.625000
+0.250000 0.375000 0.625000
+0.125000 0.500000 0.625000
+0.250000 0.500000 0.625000
+0.125000 0.375000 0.750000
+0.250000 0.375000 0.750000
+0.125000 0.500000 0.750000
+0.250000 0.500000 0.750000
+0.250000 0.250000 0.500000
+0.375000 0.250000 0.500000
+0.250000 0.375000 0.500000
+0.375000 0.375000 0.500000
+0.250000 0.250000 0.625000
+0.375000 0.250000 0.625000
+0.250000 0.375000 0.625000
+0.375000 0.375000 0.625000
+0.375000 0.250000 0.500000
+0.500000 0.250000 0.500000
+0.375000 0.375000 0.500000
+0.500000 0.375000 0.500000
+0.375000 0.250000 0.625000
+0.500000 0.250000 0.625000
+0.375000 0.375000 0.625000
+0.500000 0.375000 0.625000
+0.250000 0.375000 0.500000
+0.375000 0.375000 0.500000
+0.250000 0.500000 0.500000
+0.375000 0.500000 0.500000
+0.250000 0.375000 0.625000
+0.375000 0.375000 0.625000
+0.250000 0.500000 0.625000
+0.375000 0.500000 0.625000
+0.375000 0.375000 0.500000
+0.500000 0.375000 0.500000
+0.375000 0.500000 0.500000
+0.500000 0.500000 0.500000
+0.375000 0.375000 0.625000
+0.500000 0.375000 0.625000
+0.375000 0.500000 0.625000
+0.500000 0.500000 0.625000
+0.250000 0.250000 0.625000
+0.375000 0.250000 0.625000
+0.250000 0.375000 0.625000
+0.375000 0.375000 0.625000
+0.250000 0.250000 0.750000
+0.375000 0.250000 0.750000
+0.250000 0.375000 0.750000
+0.375000 0.375000 0.750000
+0.375000 0.250000 0.625000
+0.500000 0.250000 0.625000
+0.375000 0.375000 0.625000
+0.500000 0.375000 0.625000
+0.375000 0.250000 0.750000
+0.500000 0.250000 0.750000
+0.375000 0.375000 0.750000
+0.500000 0.375000 0.750000
+0.250000 0.375000 0.625000
+0.375000 0.375000 0.625000
+0.250000 0.500000 0.625000
+0.375000 0.500000 0.625000
+0.250000 0.375000 0.750000
+0.375000 0.375000 0.750000
+0.250000 0.500000 0.750000
+0.375000 0.500000 0.750000
+0.375000 0.375000 0.625000
+0.500000 0.375000 0.625000
+0.375000 0.500000 0.625000
+0.500000 0.500000 0.625000
+0.375000 0.375000 0.750000
+0.500000 0.375000 0.750000
+0.375000 0.500000 0.750000
+0.500000 0.500000 0.750000
+0.00000 0.00000 0.750000
+0.125000 0.00000 0.750000
+0.00000 0.125000 0.750000
+0.125000 0.125000 0.750000
+0.00000 0.00000 0.875000
+0.125000 0.00000 0.875000
+0.00000 0.125000 0.875000
+0.125000 0.125000 0.875000
+0.125000 0.00000 0.750000
+0.250000 0.00000 0.750000
+0.125000 0.125000 0.750000
+0.250000 0.125000 0.750000
+0.125000 0.00000 0.875000
+0.250000 0.00000 0.875000
+0.125000 0.125000 0.875000
+0.250000 0.125000 0.875000
+0.00000 0.125000 0.750000
+0.125000 0.125000 0.750000
+0.00000 0.250000 0.750000
+0.125000 0.250000 0.750000
+0.00000 0.125000 0.875000
+0.125000 0.125000 0.875000
+0.00000 0.250000 0.875000
+0.125000 0.250000 0.875000
+0.125000 0.125000 0.750000
+0.250000 0.125000 0.750000
+0.125000 0.250000 0.750000
+0.250000 0.250000 0.750000
+0.125000 0.125000 0.875000
+0.250000 0.125000 0.875000
+0.125000 0.250000 0.875000
+0.250000 0.250000 0.875000
+0.00000 0.00000 0.875000
+0.125000 0.00000 0.875000
+0.00000 0.125000 0.875000
+0.125000 0.125000 0.875000
+0.00000 0.00000 1.00000
+0.125000 0.00000 1.00000
+0.00000 0.125000 1.00000
+0.125000 0.125000 1.00000
+0.125000 0.00000 0.875000
+0.250000 0.00000 0.875000
+0.125000 0.125000 0.875000
+0.250000 0.125000 0.875000
+0.125000 0.00000 1.00000
+0.250000 0.00000 1.00000
+0.125000 0.125000 1.00000
+0.250000 0.125000 1.00000
+0.00000 0.125000 0.875000
+0.125000 0.125000 0.875000
+0.00000 0.250000 0.875000
+0.125000 0.250000 0.875000
+0.00000 0.125000 1.00000
+0.125000 0.125000 1.00000
+0.00000 0.250000 1.00000
+0.125000 0.250000 1.00000
+0.125000 0.125000 0.875000
+0.250000 0.125000 0.875000
+0.125000 0.250000 0.875000
+0.250000 0.250000 0.875000
+0.125000 0.125000 1.00000
+0.250000 0.125000 1.00000
+0.125000 0.250000 1.00000
+0.250000 0.250000 1.00000
+0.250000 0.250000 0.750000
+0.375000 0.250000 0.750000
+0.250000 0.375000 0.750000
+0.375000 0.375000 0.750000
+0.250000 0.250000 0.875000
+0.375000 0.250000 0.875000
+0.250000 0.375000 0.875000
+0.375000 0.375000 0.875000
+0.375000 0.250000 0.750000
+0.500000 0.250000 0.750000
+0.375000 0.375000 0.750000
+0.500000 0.375000 0.750000
+0.375000 0.250000 0.875000
+0.500000 0.250000 0.875000
+0.375000 0.375000 0.875000
+0.500000 0.375000 0.875000
+0.250000 0.375000 0.750000
+0.375000 0.375000 0.750000
+0.250000 0.500000 0.750000
+0.375000 0.500000 0.750000
+0.250000 0.375000 0.875000
+0.375000 0.375000 0.875000
+0.250000 0.500000 0.875000
+0.375000 0.500000 0.875000
+0.375000 0.375000 0.750000
+0.500000 0.375000 0.750000
+0.375000 0.500000 0.750000
+0.500000 0.500000 0.750000
+0.375000 0.375000 0.875000
+0.500000 0.375000 0.875000
+0.375000 0.500000 0.875000
+0.500000 0.500000 0.875000
+0.250000 0.250000 0.875000
+0.375000 0.250000 0.875000
+0.250000 0.375000 0.875000
+0.375000 0.375000 0.875000
+0.250000 0.250000 1.00000
+0.375000 0.250000 1.00000
+0.250000 0.375000 1.00000
+0.375000 0.375000 1.00000
+0.375000 0.250000 0.875000
+0.500000 0.250000 0.875000
+0.375000 0.375000 0.875000
+0.500000 0.375000 0.875000
+0.375000 0.250000 1.00000
+0.500000 0.250000 1.00000
+0.375000 0.375000 1.00000
+0.500000 0.375000 1.00000
+0.250000 0.375000 0.875000
+0.375000 0.375000 0.875000
+0.250000 0.500000 0.875000
+0.375000 0.500000 0.875000
+0.250000 0.375000 1.00000
+0.375000 0.375000 1.00000
+0.250000 0.500000 1.00000
+0.375000 0.500000 1.00000
+0.375000 0.375000 0.875000
+0.500000 0.375000 0.875000
+0.375000 0.500000 0.875000
+0.500000 0.500000 0.875000
+0.375000 0.375000 1.00000
+0.500000 0.375000 1.00000
+0.375000 0.500000 1.00000
+0.500000 0.500000 1.00000
+0.750000 0.00000 0.500000
+0.875000 0.00000 0.500000
+0.750000 0.125000 0.500000
+0.875000 0.125000 0.500000
+0.750000 0.00000 0.625000
+0.875000 0.00000 0.625000
+0.750000 0.125000 0.625000
+0.875000 0.125000 0.625000
+0.875000 0.00000 0.500000
+1.00000 0.00000 0.500000
+0.875000 0.125000 0.500000
+1.00000 0.125000 0.500000
+0.875000 0.00000 0.625000
+1.00000 0.00000 0.625000
+0.875000 0.125000 0.625000
+1.00000 0.125000 0.625000
+0.750000 0.125000 0.500000
+0.875000 0.125000 0.500000
+0.750000 0.250000 0.500000
+0.875000 0.250000 0.500000
+0.750000 0.125000 0.625000
+0.875000 0.125000 0.625000
+0.750000 0.250000 0.625000
+0.875000 0.250000 0.625000
+0.875000 0.125000 0.500000
+1.00000 0.125000 0.500000
+0.875000 0.250000 0.500000
+1.00000 0.250000 0.500000
+0.875000 0.125000 0.625000
+1.00000 0.125000 0.625000
+0.875000 0.250000 0.625000
+1.00000 0.250000 0.625000
+0.750000 0.00000 0.625000
+0.875000 0.00000 0.625000
+0.750000 0.125000 0.625000
+0.875000 0.125000 0.625000
+0.750000 0.00000 0.750000
+0.875000 0.00000 0.750000
+0.750000 0.125000 0.750000
+0.875000 0.125000 0.750000
+0.875000 0.00000 0.625000
+1.00000 0.00000 0.625000
+0.875000 0.125000 0.625000
+1.00000 0.125000 0.625000
+0.875000 0.00000 0.750000
+1.00000 0.00000 0.750000
+0.875000 0.125000 0.750000
+1.00000 0.125000 0.750000
+0.750000 0.125000 0.625000
+0.875000 0.125000 0.625000
+0.750000 0.250000 0.625000
+0.875000 0.250000 0.625000
+0.750000 0.125000 0.750000
+0.875000 0.125000 0.750000
+0.750000 0.250000 0.750000
+0.875000 0.250000 0.750000
+0.875000 0.125000 0.625000
+1.00000 0.125000 0.625000
+0.875000 0.250000 0.625000
+1.00000 0.250000 0.625000
+0.875000 0.125000 0.750000
+1.00000 0.125000 0.750000
+0.875000 0.250000 0.750000
+1.00000 0.250000 0.750000
+0.00000 0.500000 0.500000
+0.125000 0.500000 0.500000
+0.00000 0.625000 0.500000
+0.125000 0.625000 0.500000
+0.00000 0.500000 0.625000
+0.125000 0.500000 0.625000
+0.00000 0.625000 0.625000
+0.125000 0.625000 0.625000
+0.125000 0.500000 0.500000
+0.250000 0.500000 0.500000
+0.125000 0.625000 0.500000
+0.250000 0.625000 0.500000
+0.125000 0.500000 0.625000
+0.250000 0.500000 0.625000
+0.125000 0.625000 0.625000
+0.250000 0.625000 0.625000
+0.00000 0.625000 0.500000
+0.125000 0.625000 0.500000
+0.00000 0.750000 0.500000
+0.125000 0.750000 0.500000
+0.00000 0.625000 0.625000
+0.125000 0.625000 0.625000
+0.00000 0.750000 0.625000
+0.125000 0.750000 0.625000
+0.125000 0.625000 0.500000
+0.250000 0.625000 0.500000
+0.125000 0.750000 0.500000
+0.250000 0.750000 0.500000
+0.125000 0.625000 0.625000
+0.250000 0.625000 0.625000
+0.125000 0.750000 0.625000
+0.250000 0.750000 0.625000
+0.00000 0.500000 0.625000
+0.125000 0.500000 0.625000
+0.00000 0.625000 0.625000
+0.125000 0.625000 0.625000
+0.00000 0.500000 0.750000
+0.125000 0.500000 0.750000
+0.00000 0.625000 0.750000
+0.125000 0.625000 0.750000
+0.125000 0.500000 0.625000
+0.250000 0.500000 0.625000
+0.125000 0.625000 0.625000
+0.250000 0.625000 0.625000
+0.125000 0.500000 0.750000
+0.250000 0.500000 0.750000
+0.125000 0.625000 0.750000
+0.250000 0.625000 0.750000
+0.00000 0.625000 0.625000
+0.125000 0.625000 0.625000
+0.00000 0.750000 0.625000
+0.125000 0.750000 0.625000
+0.00000 0.625000 0.750000
+0.125000 0.625000 0.750000
+0.00000 0.750000 0.750000
+0.125000 0.750000 0.750000
+0.125000 0.625000 0.625000
+0.250000 0.625000 0.625000
+0.125000 0.750000 0.625000
+0.250000 0.750000 0.625000
+0.125000 0.625000 0.750000
+0.250000 0.625000 0.750000
+0.125000 0.750000 0.750000
+0.250000 0.750000 0.750000
+0.00000 0.500000 0.750000
+0.125000 0.500000 0.750000
+0.00000 0.625000 0.750000
+0.125000 0.625000 0.750000
+0.00000 0.500000 0.875000
+0.125000 0.500000 0.875000
+0.00000 0.625000 0.875000
+0.125000 0.625000 0.875000
+0.125000 0.500000 0.750000
+0.250000 0.500000 0.750000
+0.125000 0.625000 0.750000
+0.250000 0.625000 0.750000
+0.125000 0.500000 0.875000
+0.250000 0.500000 0.875000
+0.125000 0.625000 0.875000
+0.250000 0.625000 0.875000
+0.00000 0.625000 0.750000
+0.125000 0.625000 0.750000
+0.00000 0.750000 0.750000
+0.125000 0.750000 0.750000
+0.00000 0.625000 0.875000
+0.125000 0.625000 0.875000
+0.00000 0.750000 0.875000
+0.125000 0.750000 0.875000
+0.125000 0.625000 0.750000
+0.250000 0.625000 0.750000
+0.125000 0.750000 0.750000
+0.250000 0.750000 0.750000
+0.125000 0.625000 0.875000
+0.250000 0.625000 0.875000
+0.125000 0.750000 0.875000
+0.250000 0.750000 0.875000
+0.00000 0.500000 0.875000
+0.125000 0.500000 0.875000
+0.00000 0.625000 0.875000
+0.125000 0.625000 0.875000
+0.00000 0.500000 1.00000
+0.125000 0.500000 1.00000
+0.00000 0.625000 1.00000
+0.125000 0.625000 1.00000
+0.125000 0.500000 0.875000
+0.250000 0.500000 0.875000
+0.125000 0.625000 0.875000
+0.250000 0.625000 0.875000
+0.125000 0.500000 1.00000
+0.250000 0.500000 1.00000
+0.125000 0.625000 1.00000
+0.250000 0.625000 1.00000
+0.00000 0.625000 0.875000
+0.125000 0.625000 0.875000
+0.00000 0.750000 0.875000
+0.125000 0.750000 0.875000
+0.00000 0.625000 1.00000
+0.125000 0.625000 1.00000
+0.00000 0.750000 1.00000
+0.125000 0.750000 1.00000
+0.125000 0.625000 0.875000
+0.250000 0.625000 0.875000
+0.125000 0.750000 0.875000
+0.250000 0.750000 0.875000
+0.125000 0.625000 1.00000
+0.250000 0.625000 1.00000
+0.125000 0.750000 1.00000
+0.250000 0.750000 1.00000
+0.250000 0.500000 0.750000
+0.375000 0.500000 0.750000
+0.250000 0.625000 0.750000
+0.375000 0.625000 0.750000
+0.250000 0.500000 0.875000
+0.375000 0.500000 0.875000
+0.250000 0.625000 0.875000
+0.375000 0.625000 0.875000
+0.375000 0.500000 0.750000
+0.500000 0.500000 0.750000
+0.375000 0.625000 0.750000
+0.500000 0.625000 0.750000
+0.375000 0.500000 0.875000
+0.500000 0.500000 0.875000
+0.375000 0.625000 0.875000
+0.500000 0.625000 0.875000
+0.250000 0.625000 0.750000
+0.375000 0.625000 0.750000
+0.250000 0.750000 0.750000
+0.375000 0.750000 0.750000
+0.250000 0.625000 0.875000
+0.375000 0.625000 0.875000
+0.250000 0.750000 0.875000
+0.375000 0.750000 0.875000
+0.375000 0.625000 0.750000
+0.500000 0.625000 0.750000
+0.375000 0.750000 0.750000
+0.500000 0.750000 0.750000
+0.375000 0.625000 0.875000
+0.500000 0.625000 0.875000
+0.375000 0.750000 0.875000
+0.500000 0.750000 0.875000
+0.250000 0.500000 0.875000
+0.375000 0.500000 0.875000
+0.250000 0.625000 0.875000
+0.375000 0.625000 0.875000
+0.250000 0.500000 1.00000
+0.375000 0.500000 1.00000
+0.250000 0.625000 1.00000
+0.375000 0.625000 1.00000
+0.375000 0.500000 0.875000
+0.500000 0.500000 0.875000
+0.375000 0.625000 0.875000
+0.500000 0.625000 0.875000
+0.375000 0.500000 1.00000
+0.500000 0.500000 1.00000
+0.375000 0.625000 1.00000
+0.500000 0.625000 1.00000
+0.250000 0.625000 0.875000
+0.375000 0.625000 0.875000
+0.250000 0.750000 0.875000
+0.375000 0.750000 0.875000
+0.250000 0.625000 1.00000
+0.375000 0.625000 1.00000
+0.250000 0.750000 1.00000
+0.375000 0.750000 1.00000
+0.375000 0.625000 0.875000
+0.500000 0.625000 0.875000
+0.375000 0.750000 0.875000
+0.500000 0.750000 0.875000
+0.375000 0.625000 1.00000
+0.500000 0.625000 1.00000
+0.375000 0.750000 1.00000
+0.500000 0.750000 1.00000
+0.00000 0.750000 0.750000
+0.125000 0.750000 0.750000
+0.00000 0.875000 0.750000
+0.125000 0.875000 0.750000
+0.00000 0.750000 0.875000
+0.125000 0.750000 0.875000
+0.00000 0.875000 0.875000
+0.125000 0.875000 0.875000
+0.125000 0.750000 0.750000
+0.250000 0.750000 0.750000
+0.125000 0.875000 0.750000
+0.250000 0.875000 0.750000
+0.125000 0.750000 0.875000
+0.250000 0.750000 0.875000
+0.125000 0.875000 0.875000
+0.250000 0.875000 0.875000
+0.00000 0.875000 0.750000
+0.125000 0.875000 0.750000
+0.00000 1.00000 0.750000
+0.125000 1.00000 0.750000
+0.00000 0.875000 0.875000
+0.125000 0.875000 0.875000
+0.00000 1.00000 0.875000
+0.125000 1.00000 0.875000
+0.125000 0.875000 0.750000
+0.250000 0.875000 0.750000
+0.125000 1.00000 0.750000
+0.250000 1.00000 0.750000
+0.125000 0.875000 0.875000
+0.250000 0.875000 0.875000
+0.125000 1.00000 0.875000
+0.250000 1.00000 0.875000
+0.00000 0.750000 0.875000
+0.125000 0.750000 0.875000
+0.00000 0.875000 0.875000
+0.125000 0.875000 0.875000
+0.00000 0.750000 1.00000
+0.125000 0.750000 1.00000
+0.00000 0.875000 1.00000
+0.125000 0.875000 1.00000
+0.125000 0.750000 0.875000
+0.250000 0.750000 0.875000
+0.125000 0.875000 0.875000
+0.250000 0.875000 0.875000
+0.125000 0.750000 1.00000
+0.250000 0.750000 1.00000
+0.125000 0.875000 1.00000
+0.250000 0.875000 1.00000
+0.00000 0.875000 0.875000
+0.125000 0.875000 0.875000
+0.00000 1.00000 0.875000
+0.125000 1.00000 0.875000
+0.00000 0.875000 1.00000
+0.125000 0.875000 1.00000
+0.00000 1.00000 1.00000
+0.125000 1.00000 1.00000
+0.125000 0.875000 0.875000
+0.250000 0.875000 0.875000
+0.125000 1.00000 0.875000
+0.250000 1.00000 0.875000
+0.125000 0.875000 1.00000
+0.250000 0.875000 1.00000
+0.125000 1.00000 1.00000
+0.250000 1.00000 1.00000
+0.250000 0.750000 0.750000
+0.375000 0.750000 0.750000
+0.250000 0.875000 0.750000
+0.375000 0.875000 0.750000
+0.250000 0.750000 0.875000
+0.375000 0.750000 0.875000
+0.250000 0.875000 0.875000
+0.375000 0.875000 0.875000
+0.375000 0.750000 0.750000
+0.500000 0.750000 0.750000
+0.375000 0.875000 0.750000
+0.500000 0.875000 0.750000
+0.375000 0.750000 0.875000
+0.500000 0.750000 0.875000
+0.375000 0.875000 0.875000
+0.500000 0.875000 0.875000
+0.250000 0.875000 0.750000
+0.375000 0.875000 0.750000
+0.250000 1.00000 0.750000
+0.375000 1.00000 0.750000
+0.250000 0.875000 0.875000
+0.375000 0.875000 0.875000
+0.250000 1.00000 0.875000
+0.375000 1.00000 0.875000
+0.375000 0.875000 0.750000
+0.500000 0.875000 0.750000
+0.375000 1.00000 0.750000
+0.500000 1.00000 0.750000
+0.375000 0.875000 0.875000
+0.500000 0.875000 0.875000
+0.375000 1.00000 0.875000
+0.500000 1.00000 0.875000
+0.250000 0.750000 0.875000
+0.375000 0.750000 0.875000
+0.250000 0.875000 0.875000
+0.375000 0.875000 0.875000
+0.250000 0.750000 1.00000
+0.375000 0.750000 1.00000
+0.250000 0.875000 1.00000
+0.375000 0.875000 1.00000
+0.375000 0.750000 0.875000
+0.500000 0.750000 0.875000
+0.375000 0.875000 0.875000
+0.500000 0.875000 0.875000
+0.375000 0.750000 1.00000
+0.500000 0.750000 1.00000
+0.375000 0.875000 1.00000
+0.500000 0.875000 1.00000
+0.250000 0.875000 0.875000
+0.375000 0.875000 0.875000
+0.250000 1.00000 0.875000
+0.375000 1.00000 0.875000
+0.250000 0.875000 1.00000
+0.375000 0.875000 1.00000
+0.250000 1.00000 1.00000
+0.375000 1.00000 1.00000
+0.375000 0.875000 0.875000
+0.500000 0.875000 0.875000
+0.375000 1.00000 0.875000
+0.500000 1.00000 0.875000
+0.375000 0.875000 1.00000
+0.500000 0.875000 1.00000
+0.375000 1.00000 1.00000
+0.500000 1.00000 1.00000
+0.500000 0.500000 0.500000
+0.625000 0.500000 0.500000
+0.500000 0.625000 0.500000
+0.625000 0.625000 0.500000
+0.500000 0.500000 0.625000
+0.625000 0.500000 0.625000
+0.500000 0.625000 0.625000
+0.625000 0.625000 0.625000
+0.625000 0.500000 0.500000
+0.750000 0.500000 0.500000
+0.625000 0.625000 0.500000
+0.750000 0.625000 0.500000
+0.625000 0.500000 0.625000
+0.750000 0.500000 0.625000
+0.625000 0.625000 0.625000
+0.750000 0.625000 0.625000
+0.500000 0.625000 0.500000
+0.625000 0.625000 0.500000
+0.500000 0.750000 0.500000
+0.625000 0.750000 0.500000
+0.500000 0.625000 0.625000
+0.625000 0.625000 0.625000
+0.500000 0.750000 0.625000
+0.625000 0.750000 0.625000
+0.625000 0.625000 0.500000
+0.750000 0.625000 0.500000
+0.625000 0.750000 0.500000
+0.750000 0.750000 0.500000
+0.625000 0.625000 0.625000
+0.750000 0.625000 0.625000
+0.625000 0.750000 0.625000
+0.750000 0.750000 0.625000
+0.500000 0.500000 0.625000
+0.625000 0.500000 0.625000
+0.500000 0.625000 0.625000
+0.625000 0.625000 0.625000
+0.500000 0.500000 0.750000
+0.625000 0.500000 0.750000
+0.500000 0.625000 0.750000
+0.625000 0.625000 0.750000
+0.625000 0.500000 0.625000
+0.750000 0.500000 0.625000
+0.625000 0.625000 0.625000
+0.750000 0.625000 0.625000
+0.625000 0.500000 0.750000
+0.750000 0.500000 0.750000
+0.625000 0.625000 0.750000
+0.750000 0.625000 0.750000
+0.500000 0.625000 0.625000
+0.625000 0.625000 0.625000
+0.500000 0.750000 0.625000
+0.625000 0.750000 0.625000
+0.500000 0.625000 0.750000
+0.625000 0.625000 0.750000
+0.500000 0.750000 0.750000
+0.625000 0.750000 0.750000
+0.625000 0.625000 0.625000
+0.750000 0.625000 0.625000
+0.625000 0.750000 0.625000
+0.750000 0.750000 0.625000
+0.625000 0.625000 0.750000
+0.750000 0.625000 0.750000
+0.625000 0.750000 0.750000
+0.750000 0.750000 0.750000
+0.750000 0.500000 0.500000
+0.875000 0.500000 0.500000
+0.750000 0.625000 0.500000
+0.875000 0.625000 0.500000
+0.750000 0.500000 0.625000
+0.875000 0.500000 0.625000
+0.750000 0.625000 0.625000
+0.875000 0.625000 0.625000
+0.875000 0.500000 0.500000
+1.00000 0.500000 0.500000
+0.875000 0.625000 0.500000
+1.00000 0.625000 0.500000
+0.875000 0.500000 0.625000
+1.00000 0.500000 0.625000
+0.875000 0.625000 0.625000
+1.00000 0.625000 0.625000
+0.750000 0.625000 0.500000
+0.875000 0.625000 0.500000
+0.750000 0.750000 0.500000
+0.875000 0.750000 0.500000
+0.750000 0.625000 0.625000
+0.875000 0.625000 0.625000
+0.750000 0.750000 0.625000
+0.875000 0.750000 0.625000
+0.875000 0.625000 0.500000
+1.00000 0.625000 0.500000
+0.875000 0.750000 0.500000
+1.00000 0.750000 0.500000
+0.875000 0.625000 0.625000
+1.00000 0.625000 0.625000
+0.875000 0.750000 0.625000
+1.00000 0.750000 0.625000
+0.750000 0.500000 0.625000
+0.875000 0.500000 0.625000
+0.750000 0.625000 0.625000
+0.875000 0.625000 0.625000
+0.750000 0.500000 0.750000
+0.875000 0.500000 0.750000
+0.750000 0.625000 0.750000
+0.875000 0.625000 0.750000
+0.875000 0.500000 0.625000
+1.00000 0.500000 0.625000
+0.875000 0.625000 0.625000
+1.00000 0.625000 0.625000
+0.875000 0.500000 0.750000
+1.00000 0.500000 0.750000
+0.875000 0.625000 0.750000
+1.00000 0.625000 0.750000
+0.750000 0.625000 0.625000
+0.875000 0.625000 0.625000
+0.750000 0.750000 0.625000
+0.875000 0.750000 0.625000
+0.750000 0.625000 0.750000
+0.875000 0.625000 0.750000
+0.750000 0.750000 0.750000
+0.875000 0.750000 0.750000
+0.875000 0.625000 0.625000
+1.00000 0.625000 0.625000
+0.875000 0.750000 0.625000
+1.00000 0.750000 0.625000
+0.875000 0.625000 0.750000
+1.00000 0.625000 0.750000
+0.875000 0.750000 0.750000
+1.00000 0.750000 0.750000
+0.750000 0.750000 0.500000
+0.875000 0.750000 0.500000
+0.750000 0.875000 0.500000
+0.875000 0.875000 0.500000
+0.750000 0.750000 0.625000
+0.875000 0.750000 0.625000
+0.750000 0.875000 0.625000
+0.875000 0.875000 0.625000
+0.875000 0.750000 0.500000
+1.00000 0.750000 0.500000
+0.875000 0.875000 0.500000
+1.00000 0.875000 0.500000
+0.875000 0.750000 0.625000
+1.00000 0.750000 0.625000
+0.875000 0.875000 0.625000
+1.00000 0.875000 0.625000
+0.750000 0.875000 0.500000
+0.875000 0.875000 0.500000
+0.750000 1.00000 0.500000
+0.875000 1.00000 0.500000
+0.750000 0.875000 0.625000
+0.875000 0.875000 0.625000
+0.750000 1.00000 0.625000
+0.875000 1.00000 0.625000
+0.875000 0.875000 0.500000
+1.00000 0.875000 0.500000
+0.875000 1.00000 0.500000
+1.00000 1.00000 0.500000
+0.875000 0.875000 0.625000
+1.00000 0.875000 0.625000
+0.875000 1.00000 0.625000
+1.00000 1.00000 0.625000
+0.750000 0.750000 0.625000
+0.875000 0.750000 0.625000
+0.750000 0.875000 0.625000
+0.875000 0.875000 0.625000
+0.750000 0.750000 0.750000
+0.875000 0.750000 0.750000
+0.750000 0.875000 0.750000
+0.875000 0.875000 0.750000
+0.875000 0.750000 0.625000
+1.00000 0.750000 0.625000
+0.875000 0.875000 0.625000
+1.00000 0.875000 0.625000
+0.875000 0.750000 0.750000
+1.00000 0.750000 0.750000
+0.875000 0.875000 0.750000
+1.00000 0.875000 0.750000
+0.750000 0.875000 0.625000
+0.875000 0.875000 0.625000
+0.750000 1.00000 0.625000
+0.875000 1.00000 0.625000
+0.750000 0.875000 0.750000
+0.875000 0.875000 0.750000
+0.750000 1.00000 0.750000
+0.875000 1.00000 0.750000
+0.875000 0.875000 0.625000
+1.00000 0.875000 0.625000
+0.875000 1.00000 0.625000
+1.00000 1.00000 0.625000
+0.875000 0.875000 0.750000
+1.00000 0.875000 0.750000
+0.875000 1.00000 0.750000
+1.00000 1.00000 0.750000
+0.750000 0.500000 0.750000
+0.875000 0.500000 0.750000
+0.750000 0.625000 0.750000
+0.875000 0.625000 0.750000
+0.750000 0.500000 0.875000
+0.875000 0.500000 0.875000
+0.750000 0.625000 0.875000
+0.875000 0.625000 0.875000
+0.875000 0.500000 0.750000
+1.00000 0.500000 0.750000
+0.875000 0.625000 0.750000
+1.00000 0.625000 0.750000
+0.875000 0.500000 0.875000
+1.00000 0.500000 0.875000
+0.875000 0.625000 0.875000
+1.00000 0.625000 0.875000
+0.750000 0.625000 0.750000
+0.875000 0.625000 0.750000
+0.750000 0.750000 0.750000
+0.875000 0.750000 0.750000
+0.750000 0.625000 0.875000
+0.875000 0.625000 0.875000
+0.750000 0.750000 0.875000
+0.875000 0.750000 0.875000
+0.875000 0.625000 0.750000
+1.00000 0.625000 0.750000
+0.875000 0.750000 0.750000
+1.00000 0.750000 0.750000
+0.875000 0.625000 0.875000
+1.00000 0.625000 0.875000
+0.875000 0.750000 0.875000
+1.00000 0.750000 0.875000
+0.750000 0.500000 0.875000
+0.875000 0.500000 0.875000
+0.750000 0.625000 0.875000
+0.875000 0.625000 0.875000
+0.750000 0.500000 1.00000
+0.875000 0.500000 1.00000
+0.750000 0.625000 1.00000
+0.875000 0.625000 1.00000
+0.875000 0.500000 0.875000
+1.00000 0.500000 0.875000
+0.875000 0.625000 0.875000
+1.00000 0.625000 0.875000
+0.875000 0.500000 1.00000
+1.00000 0.500000 1.00000
+0.875000 0.625000 1.00000
+1.00000 0.625000 1.00000
+0.750000 0.625000 0.875000
+0.875000 0.625000 0.875000
+0.750000 0.750000 0.875000
+0.875000 0.750000 0.875000
+0.750000 0.625000 1.00000
+0.875000 0.625000 1.00000
+0.750000 0.750000 1.00000
+0.875000 0.750000 1.00000
+0.875000 0.625000 0.875000
+1.00000 0.625000 0.875000
+0.875000 0.750000 0.875000
+1.00000 0.750000 0.875000
+0.875000 0.625000 1.00000
+1.00000 0.625000 1.00000
+0.875000 0.750000 1.00000
+1.00000 0.750000 1.00000
+0.500000 0.750000 0.750000
+0.625000 0.750000 0.750000
+0.500000 0.875000 0.750000
+0.625000 0.875000 0.750000
+0.500000 0.750000 0.875000
+0.625000 0.750000 0.875000
+0.500000 0.875000 0.875000
+0.625000 0.875000 0.875000
+0.625000 0.750000 0.750000
+0.750000 0.750000 0.750000
+0.625000 0.875000 0.750000
+0.750000 0.875000 0.750000
+0.625000 0.750000 0.875000
+0.750000 0.750000 0.875000
+0.625000 0.875000 0.875000
+0.750000 0.875000 0.875000
+0.500000 0.875000 0.750000
+0.625000 0.875000 0.750000
+0.500000 1.00000 0.750000
+0.625000 1.00000 0.750000
+0.500000 0.875000 0.875000
+0.625000 0.875000 0.875000
+0.500000 1.00000 0.875000
+0.625000 1.00000 0.875000
+0.625000 0.875000 0.750000
+0.750000 0.875000 0.750000
+0.625000 1.00000 0.750000
+0.750000 1.00000 0.750000
+0.625000 0.875000 0.875000
+0.750000 0.875000 0.875000
+0.625000 1.00000 0.875000
+0.750000 1.00000 0.875000
+0.500000 0.750000 0.875000
+0.625000 0.750000 0.875000
+0.500000 0.875000 0.875000
+0.625000 0.875000 0.875000
+0.500000 0.750000 1.00000
+0.625000 0.750000 1.00000
+0.500000 0.875000 1.00000
+0.625000 0.875000 1.00000
+0.625000 0.750000 0.875000
+0.750000 0.750000 0.875000
+0.625000 0.875000 0.875000
+0.750000 0.875000 0.875000
+0.625000 0.750000 1.00000
+0.750000 0.750000 1.00000
+0.625000 0.875000 1.00000
+0.750000 0.875000 1.00000
+0.500000 0.875000 0.875000
+0.625000 0.875000 0.875000
+0.500000 1.00000 0.875000
+0.625000 1.00000 0.875000
+0.500000 0.875000 1.00000
+0.625000 0.875000 1.00000
+0.500000 1.00000 1.00000
+0.625000 1.00000 1.00000
+0.625000 0.875000 0.875000
+0.750000 0.875000 0.875000
+0.625000 1.00000 0.875000
+0.750000 1.00000 0.875000
+0.625000 0.875000 1.00000
+0.750000 0.875000 1.00000
+0.625000 1.00000 1.00000
+0.750000 1.00000 1.00000
+0.750000 0.750000 0.750000
+0.875000 0.750000 0.750000
+0.750000 0.875000 0.750000
+0.875000 0.875000 0.750000
+0.750000 0.750000 0.875000
+0.875000 0.750000 0.875000
+0.750000 0.875000 0.875000
+0.875000 0.875000 0.875000
+0.875000 0.750000 0.750000
+1.00000 0.750000 0.750000
+0.875000 0.875000 0.750000
+1.00000 0.875000 0.750000
+0.875000 0.750000 0.875000
+1.00000 0.750000 0.875000
+0.875000 0.875000 0.875000
+1.00000 0.875000 0.875000
+0.750000 0.875000 0.750000
+0.875000 0.875000 0.750000
+0.750000 1.00000 0.750000
+0.875000 1.00000 0.750000
+0.750000 0.875000 0.875000
+0.875000 0.875000 0.875000
+0.750000 1.00000 0.875000
+0.875000 1.00000 0.875000
+0.875000 0.875000 0.750000
+1.00000 0.875000 0.750000
+0.875000 1.00000 0.750000
+1.00000 1.00000 0.750000
+0.875000 0.875000 0.875000
+1.00000 0.875000 0.875000
+0.875000 1.00000 0.875000
+1.00000 1.00000 0.875000
+0.750000 0.750000 0.875000
+0.875000 0.750000 0.875000
+0.750000 0.875000 0.875000
+0.875000 0.875000 0.875000
+0.750000 0.750000 1.00000
+0.875000 0.750000 1.00000
+0.750000 0.875000 1.00000
+0.875000 0.875000 1.00000
+0.875000 0.750000 0.875000
+1.00000 0.750000 0.875000
+0.875000 0.875000 0.875000
+1.00000 0.875000 0.875000
+0.875000 0.750000 1.00000
+1.00000 0.750000 1.00000
+0.875000 0.875000 1.00000
+1.00000 0.875000 1.00000
+0.750000 0.875000 0.875000
+0.875000 0.875000 0.875000
+0.750000 1.00000 0.875000
+0.875000 1.00000 0.875000
+0.750000 0.875000 1.00000
+0.875000 0.875000 1.00000
+0.750000 1.00000 1.00000
+0.875000 1.00000 1.00000
+0.875000 0.875000 0.875000
+1.00000 0.875000 0.875000
+0.875000 1.00000 0.875000
+1.00000 1.00000 0.875000
+0.875000 0.875000 1.00000
+1.00000 0.875000 1.00000
+0.875000 1.00000 1.00000
+1.00000 1.00000 1.00000
+0.125000 0.375000 0.00000
+0.187500 0.375000 0.00000
+0.125000 0.437500 0.00000
+0.187500 0.437500 0.00000
+0.125000 0.375000 0.0625000
+0.187500 0.375000 0.0625000
+0.125000 0.437500 0.0625000
+0.187500 0.437500 0.0625000
+0.187500 0.375000 0.00000
+0.250000 0.375000 0.00000
+0.187500 0.437500 0.00000
+0.250000 0.437500 0.00000
+0.187500 0.375000 0.0625000
+0.250000 0.375000 0.0625000
+0.187500 0.437500 0.0625000
+0.250000 0.437500 0.0625000
+0.125000 0.437500 0.00000
+0.187500 0.437500 0.00000
+0.125000 0.500000 0.00000
+0.187500 0.500000 0.00000
+0.125000 0.437500 0.0625000
+0.187500 0.437500 0.0625000
+0.125000 0.500000 0.0625000
+0.187500 0.500000 0.0625000
+0.187500 0.437500 0.00000
+0.250000 0.437500 0.00000
+0.187500 0.500000 0.00000
+0.250000 0.500000 0.00000
+0.187500 0.437500 0.0625000
+0.250000 0.437500 0.0625000
+0.187500 0.500000 0.0625000
+0.250000 0.500000 0.0625000
+0.125000 0.375000 0.0625000
+0.187500 0.375000 0.0625000
+0.125000 0.437500 0.0625000
+0.187500 0.437500 0.0625000
+0.125000 0.375000 0.125000
+0.187500 0.375000 0.125000
+0.125000 0.437500 0.125000
+0.187500 0.437500 0.125000
+0.187500 0.375000 0.0625000
+0.250000 0.375000 0.0625000
+0.187500 0.437500 0.0625000
+0.250000 0.437500 0.0625000
+0.187500 0.375000 0.125000
+0.250000 0.375000 0.125000
+0.187500 0.437500 0.125000
+0.250000 0.437500 0.125000
+0.125000 0.437500 0.0625000
+0.187500 0.437500 0.0625000
+0.125000 0.500000 0.0625000
+0.187500 0.500000 0.0625000
+0.125000 0.437500 0.125000
+0.187500 0.437500 0.125000
+0.125000 0.500000 0.125000
+0.187500 0.500000 0.125000
+0.187500 0.437500 0.0625000
+0.250000 0.437500 0.0625000
+0.187500 0.500000 0.0625000
+0.250000 0.500000 0.0625000
+0.187500 0.437500 0.125000
+0.250000 0.437500 0.125000
+0.187500 0.500000 0.125000
+0.250000 0.500000 0.125000
+0.312500 0.00000 0.375000
+0.375000 0.00000 0.375000
+0.312500 0.0625000 0.375000
+0.375000 0.0625000 0.375000
+0.312500 0.00000 0.437500
+0.375000 0.00000 0.437500
+0.312500 0.0625000 0.437500
+0.375000 0.0625000 0.437500
+0.250000 0.0625000 0.375000
+0.312500 0.0625000 0.375000
+0.250000 0.125000 0.375000
+0.312500 0.125000 0.375000
+0.250000 0.0625000 0.437500
+0.312500 0.0625000 0.437500
+0.250000 0.125000 0.437500
+0.312500 0.125000 0.437500
+0.312500 0.0625000 0.375000
+0.375000 0.0625000 0.375000
+0.312500 0.125000 0.375000
+0.375000 0.125000 0.375000
+0.312500 0.0625000 0.437500
+0.375000 0.0625000 0.437500
+0.312500 0.125000 0.437500
+0.375000 0.125000 0.437500
+0.250000 0.00000 0.437500
+0.312500 0.00000 0.437500
+0.250000 0.0625000 0.437500
+0.312500 0.0625000 0.437500
+0.250000 0.00000 0.500000
+0.312500 0.00000 0.500000
+0.250000 0.0625000 0.500000
+0.312500 0.0625000 0.500000
+0.312500 0.00000 0.437500
+0.375000 0.00000 0.437500
+0.312500 0.0625000 0.437500
+0.375000 0.0625000 0.437500
+0.312500 0.00000 0.500000
+0.375000 0.00000 0.500000
+0.312500 0.0625000 0.500000
+0.375000 0.0625000 0.500000
+0.250000 0.0625000 0.437500
+0.312500 0.0625000 0.437500
+0.250000 0.125000 0.437500
+0.312500 0.125000 0.437500
+0.250000 0.0625000 0.500000
+0.312500 0.0625000 0.500000
+0.250000 0.125000 0.500000
+0.312500 0.125000 0.500000
+0.312500 0.0625000 0.437500
+0.375000 0.0625000 0.437500
+0.312500 0.125000 0.437500
+0.375000 0.125000 0.437500
+0.312500 0.0625000 0.500000
+0.375000 0.0625000 0.500000
+0.312500 0.125000 0.500000
+0.375000 0.125000 0.500000
+0.625000 0.250000 0.375000
+0.687500 0.250000 0.375000
+0.625000 0.312500 0.375000
+0.687500 0.312500 0.375000
+0.625000 0.250000 0.437500
+0.687500 0.250000 0.437500
+0.625000 0.312500 0.437500
+0.687500 0.312500 0.437500
+0.625000 0.312500 0.375000
+0.687500 0.312500 0.375000
+0.625000 0.375000 0.375000
+0.687500 0.375000 0.375000
+0.625000 0.312500 0.437500
+0.687500 0.312500 0.437500
+0.625000 0.375000 0.437500
+0.687500 0.375000 0.437500
+0.687500 0.312500 0.375000
+0.750000 0.312500 0.375000
+0.687500 0.375000 0.375000
+0.750000 0.375000 0.375000
+0.687500 0.312500 0.437500
+0.750000 0.312500 0.437500
+0.687500 0.375000 0.437500
+0.750000 0.375000 0.437500
+0.625000 0.250000 0.437500
+0.687500 0.250000 0.437500
+0.625000 0.312500 0.437500
+0.687500 0.312500 0.437500
+0.625000 0.250000 0.500000
+0.687500 0.250000 0.500000
+0.625000 0.312500 0.500000
+0.687500 0.312500 0.500000
+0.687500 0.250000 0.437500
+0.750000 0.250000 0.437500
+0.687500 0.312500 0.437500
+0.750000 0.312500 0.437500
+0.687500 0.250000 0.500000
+0.750000 0.250000 0.500000
+0.687500 0.312500 0.500000
+0.750000 0.312500 0.500000
+0.625000 0.312500 0.437500
+0.687500 0.312500 0.437500
+0.625000 0.375000 0.437500
+0.687500 0.375000 0.437500
+0.625000 0.312500 0.500000
+0.687500 0.312500 0.500000
+0.625000 0.375000 0.500000
+0.687500 0.375000 0.500000
+0.687500 0.312500 0.437500
+0.750000 0.312500 0.437500
+0.687500 0.375000 0.437500
+0.750000 0.375000 0.437500
+0.687500 0.312500 0.500000
+0.750000 0.312500 0.500000
+0.687500 0.375000 0.500000
+0.750000 0.375000 0.500000
+0.250000 0.875000 0.375000
+0.312500 0.875000 0.375000
+0.250000 0.937500 0.375000
+0.312500 0.937500 0.375000
+0.250000 0.875000 0.437500
+0.312500 0.875000 0.437500
+0.250000 0.937500 0.437500
+0.312500 0.937500 0.437500
+0.312500 0.875000 0.375000
+0.375000 0.875000 0.375000
+0.312500 0.937500 0.375000
+0.375000 0.937500 0.375000
+0.312500 0.875000 0.437500
+0.375000 0.875000 0.437500
+0.312500 0.937500 0.437500
+0.375000 0.937500 0.437500
+0.312500 0.937500 0.375000
+0.375000 0.937500 0.375000
+0.312500 1.00000 0.375000
+0.375000 1.00000 0.375000
+0.312500 0.937500 0.437500
+0.375000 0.937500 0.437500
+0.312500 1.00000 0.437500
+0.375000 1.00000 0.437500
+0.250000 0.875000 0.437500
+0.312500 0.875000 0.437500
+0.250000 0.937500 0.437500
+0.312500 0.937500 0.437500
+0.250000 0.875000 0.500000
+0.312500 0.875000 0.500000
+0.250000 0.937500 0.500000
+0.312500 0.937500 0.500000
+0.312500 0.875000 0.437500
+0.375000 0.875000 0.437500
+0.312500 0.937500 0.437500
+0.375000 0.937500 0.437500
+0.312500 0.875000 0.500000
+0.375000 0.875000 0.500000
+0.312500 0.937500 0.500000
+0.375000 0.937500 0.500000
+0.250000 0.937500 0.437500
+0.312500 0.937500 0.437500
+0.250000 1.00000 0.437500
+0.312500 1.00000 0.437500
+0.250000 0.937500 0.500000
+0.312500 0.937500 0.500000
+0.250000 1.00000 0.500000
+0.312500 1.00000 0.500000
+0.312500 0.937500 0.437500
+0.375000 0.937500 0.437500
+0.312500 1.00000 0.437500
+0.375000 1.00000 0.437500
+0.312500 0.937500 0.500000
+0.375000 0.937500 0.500000
+0.312500 1.00000 0.500000
+0.375000 1.00000 0.500000
+0.125000 0.375000 0.125000
+0.187500 0.375000 0.125000
+0.125000 0.437500 0.125000
+0.187500 0.437500 0.125000
+0.125000 0.375000 0.187500
+0.187500 0.375000 0.187500
+0.125000 0.437500 0.187500
+0.187500 0.437500 0.187500
+0.187500 0.375000 0.125000
+0.250000 0.375000 0.125000
+0.187500 0.437500 0.125000
+0.250000 0.437500 0.125000
+0.187500 0.375000 0.187500
+0.250000 0.375000 0.187500
+0.187500 0.437500 0.187500
+0.250000 0.437500 0.187500
+0.125000 0.437500 0.125000
+0.187500 0.437500 0.125000
+0.125000 0.500000 0.125000
+0.187500 0.500000 0.125000
+0.125000 0.437500 0.187500
+0.187500 0.437500 0.187500
+0.125000 0.500000 0.187500
+0.187500 0.500000 0.187500
+0.187500 0.437500 0.125000
+0.250000 0.437500 0.125000
+0.187500 0.500000 0.125000
+0.250000 0.500000 0.125000
+0.187500 0.437500 0.187500
+0.250000 0.437500 0.187500
+0.187500 0.500000 0.187500
+0.250000 0.500000 0.187500
+0.125000 0.375000 0.187500
+0.187500 0.375000 0.187500
+0.125000 0.437500 0.187500
+0.187500 0.437500 0.187500
+0.125000 0.375000 0.250000
+0.187500 0.375000 0.250000
+0.125000 0.437500 0.250000
+0.187500 0.437500 0.250000
+0.187500 0.375000 0.187500
+0.250000 0.375000 0.187500
+0.187500 0.437500 0.187500
+0.250000 0.437500 0.187500
+0.187500 0.375000 0.250000
+0.250000 0.375000 0.250000
+0.187500 0.437500 0.250000
+0.250000 0.437500 0.250000
+0.125000 0.437500 0.187500
+0.187500 0.437500 0.187500
+0.125000 0.500000 0.187500
+0.187500 0.500000 0.187500
+0.125000 0.437500 0.250000
+0.187500 0.437500 0.250000
+0.125000 0.500000 0.250000
+0.187500 0.500000 0.250000
+0.187500 0.437500 0.187500
+0.250000 0.437500 0.187500
+0.187500 0.500000 0.187500
+0.250000 0.500000 0.187500
+0.187500 0.437500 0.250000
+0.250000 0.437500 0.250000
+0.187500 0.500000 0.250000
+0.250000 0.500000 0.250000
+0.250000 0.00000 0.250000
+0.312500 0.00000 0.250000
+0.250000 0.0625000 0.250000
+0.312500 0.0625000 0.250000
+0.250000 0.00000 0.312500
+0.312500 0.00000 0.312500
+0.250000 0.0625000 0.312500
+0.312500 0.0625000 0.312500
+0.312500 0.00000 0.250000
+0.375000 0.00000 0.250000
+0.312500 0.0625000 0.250000
+0.375000 0.0625000 0.250000
+0.312500 0.00000 0.312500
+0.375000 0.00000 0.312500
+0.312500 0.0625000 0.312500
+0.375000 0.0625000 0.312500
+0.250000 0.0625000 0.250000
+0.312500 0.0625000 0.250000
+0.250000 0.125000 0.250000
+0.312500 0.125000 0.250000
+0.250000 0.0625000 0.312500
+0.312500 0.0625000 0.312500
+0.250000 0.125000 0.312500
+0.312500 0.125000 0.312500
+0.312500 0.0625000 0.250000
+0.375000 0.0625000 0.250000
+0.312500 0.125000 0.250000
+0.375000 0.125000 0.250000
+0.312500 0.0625000 0.312500
+0.375000 0.0625000 0.312500
+0.312500 0.125000 0.312500
+0.375000 0.125000 0.312500
+0.250000 0.00000 0.312500
+0.312500 0.00000 0.312500
+0.250000 0.0625000 0.312500
+0.312500 0.0625000 0.312500
+0.250000 0.00000 0.375000
+0.312500 0.00000 0.375000
+0.250000 0.0625000 0.375000
+0.312500 0.0625000 0.375000
+0.312500 0.00000 0.312500
+0.375000 0.00000 0.312500
+0.312500 0.0625000 0.312500
+0.375000 0.0625000 0.312500
+0.312500 0.00000 0.375000
+0.375000 0.00000 0.375000
+0.312500 0.0625000 0.375000
+0.375000 0.0625000 0.375000
+0.250000 0.0625000 0.312500
+0.312500 0.0625000 0.312500
+0.250000 0.125000 0.312500
+0.312500 0.125000 0.312500
+0.250000 0.0625000 0.375000
+0.312500 0.0625000 0.375000
+0.250000 0.125000 0.375000
+0.312500 0.125000 0.375000
+0.312500 0.0625000 0.312500
+0.375000 0.0625000 0.312500
+0.312500 0.125000 0.312500
+0.375000 0.125000 0.312500
+0.312500 0.0625000 0.375000
+0.375000 0.0625000 0.375000
+0.312500 0.125000 0.375000
+0.375000 0.125000 0.375000
+0.625000 0.250000 0.250000
+0.687500 0.250000 0.250000
+0.625000 0.312500 0.250000
+0.687500 0.312500 0.250000
+0.625000 0.250000 0.312500
+0.687500 0.250000 0.312500
+0.625000 0.312500 0.312500
+0.687500 0.312500 0.312500
+0.687500 0.250000 0.250000
+0.750000 0.250000 0.250000
+0.687500 0.312500 0.250000
+0.750000 0.312500 0.250000
+0.687500 0.250000 0.312500
+0.750000 0.250000 0.312500
+0.687500 0.312500 0.312500
+0.750000 0.312500 0.312500
+0.625000 0.312500 0.250000
+0.687500 0.312500 0.250000
+0.625000 0.375000 0.250000
+0.687500 0.375000 0.250000
+0.625000 0.312500 0.312500
+0.687500 0.312500 0.312500
+0.625000 0.375000 0.312500
+0.687500 0.375000 0.312500
+0.687500 0.312500 0.250000
+0.750000 0.312500 0.250000
+0.687500 0.375000 0.250000
+0.750000 0.375000 0.250000
+0.687500 0.312500 0.312500
+0.750000 0.312500 0.312500
+0.687500 0.375000 0.312500
+0.750000 0.375000 0.312500
+0.625000 0.250000 0.312500
+0.687500 0.250000 0.312500
+0.625000 0.312500 0.312500
+0.687500 0.312500 0.312500
+0.625000 0.250000 0.375000
+0.687500 0.250000 0.375000
+0.625000 0.312500 0.375000
+0.687500 0.312500 0.375000
+0.687500 0.250000 0.312500
+0.750000 0.250000 0.312500
+0.687500 0.312500 0.312500
+0.750000 0.312500 0.312500
+0.687500 0.250000 0.375000
+0.750000 0.250000 0.375000
+0.687500 0.312500 0.375000
+0.750000 0.312500 0.375000
+0.625000 0.312500 0.312500
+0.687500 0.312500 0.312500
+0.625000 0.375000 0.312500
+0.687500 0.375000 0.312500
+0.625000 0.312500 0.375000
+0.687500 0.312500 0.375000
+0.625000 0.375000 0.375000
+0.687500 0.375000 0.375000
+0.687500 0.312500 0.312500
+0.750000 0.312500 0.312500
+0.687500 0.375000 0.312500
+0.750000 0.375000 0.312500
+0.687500 0.312500 0.375000
+0.750000 0.312500 0.375000
+0.687500 0.375000 0.375000
+0.750000 0.375000 0.375000
+0.250000 0.875000 0.250000
+0.312500 0.875000 0.250000
+0.250000 0.937500 0.250000
+0.312500 0.937500 0.250000
+0.250000 0.875000 0.312500
+0.312500 0.875000 0.312500
+0.250000 0.937500 0.312500
+0.312500 0.937500 0.312500
+0.312500 0.875000 0.250000
+0.375000 0.875000 0.250000
+0.312500 0.937500 0.250000
+0.375000 0.937500 0.250000
+0.312500 0.875000 0.312500
+0.375000 0.875000 0.312500
+0.312500 0.937500 0.312500
+0.375000 0.937500 0.312500
+0.250000 0.937500 0.250000
+0.312500 0.937500 0.250000
+0.250000 1.00000 0.250000
+0.312500 1.00000 0.250000
+0.250000 0.937500 0.312500
+0.312500 0.937500 0.312500
+0.250000 1.00000 0.312500
+0.312500 1.00000 0.312500
+0.312500 0.937500 0.250000
+0.375000 0.937500 0.250000
+0.312500 1.00000 0.250000
+0.375000 1.00000 0.250000
+0.312500 0.937500 0.312500
+0.375000 0.937500 0.312500
+0.312500 1.00000 0.312500
+0.375000 1.00000 0.312500
+0.250000 0.875000 0.312500
+0.312500 0.875000 0.312500
+0.250000 0.937500 0.312500
+0.312500 0.937500 0.312500
+0.250000 0.875000 0.375000
+0.312500 0.875000 0.375000
+0.250000 0.937500 0.375000
+0.312500 0.937500 0.375000
+0.312500 0.875000 0.312500
+0.375000 0.875000 0.312500
+0.312500 0.937500 0.312500
+0.375000 0.937500 0.312500
+0.312500 0.875000 0.375000
+0.375000 0.875000 0.375000
+0.312500 0.937500 0.375000
+0.375000 0.937500 0.375000
+0.250000 0.937500 0.312500
+0.312500 0.937500 0.312500
+0.250000 1.00000 0.312500
+0.312500 1.00000 0.312500
+0.250000 0.937500 0.375000
+0.312500 0.937500 0.375000
+0.250000 1.00000 0.375000
+0.312500 1.00000 0.375000
+0.312500 0.937500 0.312500
+0.375000 0.937500 0.312500
+0.312500 1.00000 0.312500
+0.375000 1.00000 0.312500
+0.312500 0.937500 0.375000
+0.375000 0.937500 0.375000
+0.312500 1.00000 0.375000
+0.375000 1.00000 0.375000
+0.375000 0.875000 0.250000
+0.437500 0.875000 0.250000
+0.375000 0.937500 0.250000
+0.437500 0.937500 0.250000
+0.375000 0.875000 0.312500
+0.437500 0.875000 0.312500
+0.375000 0.937500 0.312500
+0.437500 0.937500 0.312500
+0.437500 0.875000 0.250000
+0.500000 0.875000 0.250000
+0.437500 0.937500 0.250000
+0.500000 0.937500 0.250000
+0.437500 0.875000 0.312500
+0.500000 0.875000 0.312500
+0.437500 0.937500 0.312500
+0.500000 0.937500 0.312500
+0.375000 0.937500 0.250000
+0.437500 0.937500 0.250000
+0.375000 1.00000 0.250000
+0.437500 1.00000 0.250000
+0.375000 0.937500 0.312500
+0.437500 0.937500 0.312500
+0.375000 1.00000 0.312500
+0.437500 1.00000 0.312500
+0.437500 0.937500 0.250000
+0.500000 0.937500 0.250000
+0.437500 1.00000 0.250000
+0.500000 1.00000 0.250000
+0.437500 0.937500 0.312500
+0.500000 0.937500 0.312500
+0.437500 1.00000 0.312500
+0.500000 1.00000 0.312500
+0.375000 0.875000 0.312500
+0.437500 0.875000 0.312500
+0.375000 0.937500 0.312500
+0.437500 0.937500 0.312500
+0.375000 0.875000 0.375000
+0.437500 0.875000 0.375000
+0.375000 0.937500 0.375000
+0.437500 0.937500 0.375000
+0.437500 0.875000 0.312500
+0.500000 0.875000 0.312500
+0.437500 0.937500 0.312500
+0.500000 0.937500 0.312500
+0.437500 0.875000 0.375000
+0.500000 0.875000 0.375000
+0.437500 0.937500 0.375000
+0.500000 0.937500 0.375000
+0.375000 0.937500 0.312500
+0.437500 0.937500 0.312500
+0.375000 1.00000 0.312500
+0.437500 1.00000 0.312500
+0.375000 0.937500 0.375000
+0.437500 0.937500 0.375000
+0.375000 1.00000 0.375000
+0.437500 1.00000 0.375000
+0.437500 0.937500 0.312500
+0.500000 0.937500 0.312500
+0.437500 1.00000 0.312500
+0.500000 1.00000 0.312500
+0.437500 0.937500 0.375000
+0.500000 0.937500 0.375000
+0.437500 1.00000 0.375000
+0.500000 1.00000 0.375000
+0.125000 0.00000 0.125000
+0.187500 0.00000 0.125000
+0.125000 0.0625000 0.125000
+0.187500 0.0625000 0.125000
+0.125000 0.00000 0.187500
+0.187500 0.00000 0.187500
+0.125000 0.0625000 0.187500
+0.187500 0.0625000 0.187500
+0.187500 0.00000 0.125000
+0.250000 0.00000 0.125000
+0.187500 0.0625000 0.125000
+0.250000 0.0625000 0.125000
+0.187500 0.00000 0.187500
+0.250000 0.00000 0.187500
+0.187500 0.0625000 0.187500
+0.250000 0.0625000 0.187500
+0.125000 0.0625000 0.125000
+0.187500 0.0625000 0.125000
+0.125000 0.125000 0.125000
+0.187500 0.125000 0.125000
+0.125000 0.0625000 0.187500
+0.187500 0.0625000 0.187500
+0.125000 0.125000 0.187500
+0.187500 0.125000 0.187500
+0.187500 0.0625000 0.125000
+0.250000 0.0625000 0.125000
+0.187500 0.125000 0.125000
+0.250000 0.125000 0.125000
+0.187500 0.0625000 0.187500
+0.250000 0.0625000 0.187500
+0.187500 0.125000 0.187500
+0.250000 0.125000 0.187500
+0.125000 0.00000 0.187500
+0.187500 0.00000 0.187500
+0.125000 0.0625000 0.187500
+0.187500 0.0625000 0.187500
+0.125000 0.00000 0.250000
+0.187500 0.00000 0.250000
+0.125000 0.0625000 0.250000
+0.187500 0.0625000 0.250000
+0.187500 0.00000 0.187500
+0.250000 0.00000 0.187500
+0.187500 0.0625000 0.187500
+0.250000 0.0625000 0.187500
+0.187500 0.00000 0.250000
+0.250000 0.00000 0.250000
+0.187500 0.0625000 0.250000
+0.250000 0.0625000 0.250000
+0.125000 0.0625000 0.187500
+0.187500 0.0625000 0.187500
+0.125000 0.125000 0.187500
+0.187500 0.125000 0.187500
+0.125000 0.0625000 0.250000
+0.187500 0.0625000 0.250000
+0.125000 0.125000 0.250000
+0.187500 0.125000 0.250000
+0.187500 0.0625000 0.187500
+0.250000 0.0625000 0.187500
+0.187500 0.125000 0.187500
+0.250000 0.125000 0.187500
+0.187500 0.0625000 0.250000
+0.250000 0.0625000 0.250000
+0.187500 0.125000 0.250000
+0.250000 0.125000 0.250000
+0.250000 0.375000 0.125000
+0.312500 0.375000 0.125000
+0.250000 0.437500 0.125000
+0.312500 0.437500 0.125000
+0.250000 0.375000 0.187500
+0.312500 0.375000 0.187500
+0.250000 0.437500 0.187500
+0.312500 0.437500 0.187500
+0.312500 0.375000 0.125000
+0.375000 0.375000 0.125000
+0.312500 0.437500 0.125000
+0.375000 0.437500 0.125000
+0.312500 0.375000 0.187500
+0.375000 0.375000 0.187500
+0.312500 0.437500 0.187500
+0.375000 0.437500 0.187500
+0.250000 0.437500 0.125000
+0.312500 0.437500 0.125000
+0.250000 0.500000 0.125000
+0.312500 0.500000 0.125000
+0.250000 0.437500 0.187500
+0.312500 0.437500 0.187500
+0.250000 0.500000 0.187500
+0.312500 0.500000 0.187500
+0.312500 0.437500 0.125000
+0.375000 0.437500 0.125000
+0.312500 0.500000 0.125000
+0.375000 0.500000 0.125000
+0.312500 0.437500 0.187500
+0.375000 0.437500 0.187500
+0.312500 0.500000 0.187500
+0.375000 0.500000 0.187500
+0.250000 0.375000 0.187500
+0.312500 0.375000 0.187500
+0.250000 0.437500 0.187500
+0.312500 0.437500 0.187500
+0.250000 0.375000 0.250000
+0.312500 0.375000 0.250000
+0.250000 0.437500 0.250000
+0.312500 0.437500 0.250000
+0.312500 0.375000 0.187500
+0.375000 0.375000 0.187500
+0.312500 0.437500 0.187500
+0.375000 0.437500 0.187500
+0.312500 0.375000 0.250000
+0.375000 0.375000 0.250000
+0.312500 0.437500 0.250000
+0.375000 0.437500 0.250000
+0.250000 0.437500 0.187500
+0.312500 0.437500 0.187500
+0.250000 0.500000 0.187500
+0.312500 0.500000 0.187500
+0.250000 0.437500 0.250000
+0.312500 0.437500 0.250000
+0.250000 0.500000 0.250000
+0.312500 0.500000 0.250000
+0.312500 0.437500 0.187500
+0.375000 0.437500 0.187500
+0.312500 0.500000 0.187500
+0.375000 0.500000 0.187500
+0.312500 0.437500 0.250000
+0.375000 0.437500 0.250000
+0.312500 0.500000 0.250000
+0.375000 0.500000 0.250000
+0.125000 0.00000 0.250000
+0.187500 0.00000 0.250000
+0.125000 0.0625000 0.250000
+0.187500 0.0625000 0.250000
+0.125000 0.00000 0.312500
+0.187500 0.00000 0.312500
+0.125000 0.0625000 0.312500
+0.187500 0.0625000 0.312500
+0.187500 0.00000 0.250000
+0.250000 0.00000 0.250000
+0.187500 0.0625000 0.250000
+0.250000 0.0625000 0.250000
+0.187500 0.00000 0.312500
+0.250000 0.00000 0.312500
+0.187500 0.0625000 0.312500
+0.250000 0.0625000 0.312500
+0.125000 0.0625000 0.250000
+0.187500 0.0625000 0.250000
+0.125000 0.125000 0.250000
+0.187500 0.125000 0.250000
+0.125000 0.0625000 0.312500
+0.187500 0.0625000 0.312500
+0.125000 0.125000 0.312500
+0.187500 0.125000 0.312500
+0.187500 0.0625000 0.250000
+0.250000 0.0625000 0.250000
+0.187500 0.125000 0.250000
+0.250000 0.125000 0.250000
+0.187500 0.0625000 0.312500
+0.250000 0.0625000 0.312500
+0.187500 0.125000 0.312500
+0.250000 0.125000 0.312500
+0.125000 0.00000 0.312500
+0.187500 0.00000 0.312500
+0.125000 0.0625000 0.312500
+0.187500 0.0625000 0.312500
+0.125000 0.00000 0.375000
+0.187500 0.00000 0.375000
+0.125000 0.0625000 0.375000
+0.187500 0.0625000 0.375000
+0.187500 0.00000 0.312500
+0.250000 0.00000 0.312500
+0.187500 0.0625000 0.312500
+0.250000 0.0625000 0.312500
+0.187500 0.00000 0.375000
+0.250000 0.00000 0.375000
+0.187500 0.0625000 0.375000
+0.250000 0.0625000 0.375000
+0.125000 0.0625000 0.312500
+0.187500 0.0625000 0.312500
+0.125000 0.125000 0.312500
+0.187500 0.125000 0.312500
+0.125000 0.0625000 0.375000
+0.187500 0.0625000 0.375000
+0.125000 0.125000 0.375000
+0.187500 0.125000 0.375000
+0.187500 0.0625000 0.312500
+0.250000 0.0625000 0.312500
+0.187500 0.125000 0.312500
+0.250000 0.125000 0.312500
+0.187500 0.0625000 0.375000
+0.250000 0.0625000 0.375000
+0.187500 0.125000 0.375000
+0.250000 0.125000 0.375000
+0.125000 0.00000 0.375000
+0.187500 0.00000 0.375000
+0.125000 0.0625000 0.375000
+0.187500 0.0625000 0.375000
+0.125000 0.00000 0.437500
+0.187500 0.00000 0.437500
+0.125000 0.0625000 0.437500
+0.187500 0.0625000 0.437500
+0.187500 0.00000 0.375000
+0.250000 0.00000 0.375000
+0.187500 0.0625000 0.375000
+0.250000 0.0625000 0.375000
+0.187500 0.00000 0.437500
+0.250000 0.00000 0.437500
+0.187500 0.0625000 0.437500
+0.250000 0.0625000 0.437500
+0.125000 0.0625000 0.375000
+0.187500 0.0625000 0.375000
+0.125000 0.125000 0.375000
+0.187500 0.125000 0.375000
+0.125000 0.0625000 0.437500
+0.187500 0.0625000 0.437500
+0.125000 0.125000 0.437500
+0.187500 0.125000 0.437500
+0.187500 0.0625000 0.375000
+0.250000 0.0625000 0.375000
+0.187500 0.125000 0.375000
+0.250000 0.125000 0.375000
+0.187500 0.0625000 0.437500
+0.250000 0.0625000 0.437500
+0.187500 0.125000 0.437500
+0.250000 0.125000 0.437500
+0.125000 0.00000 0.437500
+0.187500 0.00000 0.437500
+0.125000 0.0625000 0.437500
+0.187500 0.0625000 0.437500
+0.125000 0.00000 0.500000
+0.187500 0.00000 0.500000
+0.125000 0.0625000 0.500000
+0.187500 0.0625000 0.500000
+0.187500 0.00000 0.437500
+0.250000 0.00000 0.437500
+0.187500 0.0625000 0.437500
+0.250000 0.0625000 0.437500
+0.187500 0.00000 0.500000
+0.250000 0.00000 0.500000
+0.187500 0.0625000 0.500000
+0.250000 0.0625000 0.500000
+0.125000 0.0625000 0.437500
+0.187500 0.0625000 0.437500
+0.125000 0.125000 0.437500
+0.187500 0.125000 0.437500
+0.125000 0.0625000 0.500000
+0.187500 0.0625000 0.500000
+0.125000 0.125000 0.500000
+0.187500 0.125000 0.500000
+0.187500 0.0625000 0.437500
+0.250000 0.0625000 0.437500
+0.187500 0.125000 0.437500
+0.250000 0.125000 0.437500
+0.187500 0.0625000 0.500000
+0.250000 0.0625000 0.500000
+0.187500 0.125000 0.500000
+0.250000 0.125000 0.500000
+0.125000 0.125000 0.375000
+0.187500 0.125000 0.375000
+0.125000 0.187500 0.375000
+0.187500 0.187500 0.375000
+0.125000 0.125000 0.437500
+0.187500 0.125000 0.437500
+0.125000 0.187500 0.437500
+0.187500 0.187500 0.437500
+0.187500 0.125000 0.375000
+0.250000 0.125000 0.375000
+0.187500 0.187500 0.375000
+0.250000 0.187500 0.375000
+0.187500 0.125000 0.437500
+0.250000 0.125000 0.437500
+0.187500 0.187500 0.437500
+0.250000 0.187500 0.437500
+0.125000 0.187500 0.375000
+0.187500 0.187500 0.375000
+0.125000 0.250000 0.375000
+0.187500 0.250000 0.375000
+0.125000 0.187500 0.437500
+0.187500 0.187500 0.437500
+0.125000 0.250000 0.437500
+0.187500 0.250000 0.437500
+0.187500 0.187500 0.375000
+0.250000 0.187500 0.375000
+0.187500 0.250000 0.375000
+0.250000 0.250000 0.375000
+0.187500 0.187500 0.437500
+0.250000 0.187500 0.437500
+0.187500 0.250000 0.437500
+0.250000 0.250000 0.437500
+0.125000 0.125000 0.437500
+0.187500 0.125000 0.437500
+0.125000 0.187500 0.437500
+0.187500 0.187500 0.437500
+0.125000 0.125000 0.500000
+0.187500 0.125000 0.500000
+0.125000 0.187500 0.500000
+0.187500 0.187500 0.500000
+0.187500 0.125000 0.437500
+0.250000 0.125000 0.437500
+0.187500 0.187500 0.437500
+0.250000 0.187500 0.437500
+0.187500 0.125000 0.500000
+0.250000 0.125000 0.500000
+0.187500 0.187500 0.500000
+0.250000 0.187500 0.500000
+0.125000 0.187500 0.437500
+0.187500 0.187500 0.437500
+0.125000 0.250000 0.437500
+0.187500 0.250000 0.437500
+0.125000 0.187500 0.500000
+0.187500 0.187500 0.500000
+0.125000 0.250000 0.500000
+0.187500 0.250000 0.500000
+0.187500 0.187500 0.437500
+0.250000 0.187500 0.437500
+0.187500 0.250000 0.437500
+0.250000 0.250000 0.437500
+0.187500 0.187500 0.500000
+0.250000 0.187500 0.500000
+0.187500 0.250000 0.500000
+0.250000 0.250000 0.500000
+0.500000 0.00000 0.250000
+0.562500 0.00000 0.250000
+0.500000 0.0625000 0.250000
+0.562500 0.0625000 0.250000
+0.500000 0.00000 0.312500
+0.562500 0.00000 0.312500
+0.500000 0.0625000 0.312500
+0.562500 0.0625000 0.312500
+0.562500 0.00000 0.250000
+0.625000 0.00000 0.250000
+0.562500 0.0625000 0.250000
+0.625000 0.0625000 0.250000
+0.562500 0.00000 0.312500
+0.625000 0.00000 0.312500
+0.562500 0.0625000 0.312500
+0.625000 0.0625000 0.312500
+0.500000 0.0625000 0.250000
+0.562500 0.0625000 0.250000
+0.500000 0.125000 0.250000
+0.562500 0.125000 0.250000
+0.500000 0.0625000 0.312500
+0.562500 0.0625000 0.312500
+0.500000 0.125000 0.312500
+0.562500 0.125000 0.312500
+0.562500 0.0625000 0.250000
+0.625000 0.0625000 0.250000
+0.562500 0.125000 0.250000
+0.625000 0.125000 0.250000
+0.562500 0.0625000 0.312500
+0.625000 0.0625000 0.312500
+0.562500 0.125000 0.312500
+0.625000 0.125000 0.312500
+0.500000 0.00000 0.312500
+0.562500 0.00000 0.312500
+0.500000 0.0625000 0.312500
+0.562500 0.0625000 0.312500
+0.500000 0.00000 0.375000
+0.562500 0.00000 0.375000
+0.500000 0.0625000 0.375000
+0.562500 0.0625000 0.375000
+0.562500 0.00000 0.312500
+0.625000 0.00000 0.312500
+0.562500 0.0625000 0.312500
+0.625000 0.0625000 0.312500
+0.562500 0.00000 0.375000
+0.625000 0.00000 0.375000
+0.562500 0.0625000 0.375000
+0.625000 0.0625000 0.375000
+0.500000 0.0625000 0.312500
+0.562500 0.0625000 0.312500
+0.500000 0.125000 0.312500
+0.562500 0.125000 0.312500
+0.500000 0.0625000 0.375000
+0.562500 0.0625000 0.375000
+0.500000 0.125000 0.375000
+0.562500 0.125000 0.375000
+0.562500 0.0625000 0.312500
+0.625000 0.0625000 0.312500
+0.562500 0.125000 0.312500
+0.625000 0.125000 0.312500
+0.562500 0.0625000 0.375000
+0.625000 0.0625000 0.375000
+0.562500 0.125000 0.375000
+0.625000 0.125000 0.375000
+0.625000 0.125000 0.250000
+0.687500 0.125000 0.250000
+0.625000 0.187500 0.250000
+0.687500 0.187500 0.250000
+0.625000 0.125000 0.312500
+0.687500 0.125000 0.312500
+0.625000 0.187500 0.312500
+0.687500 0.187500 0.312500
+0.687500 0.125000 0.250000
+0.750000 0.125000 0.250000
+0.687500 0.187500 0.250000
+0.750000 0.187500 0.250000
+0.687500 0.125000 0.312500
+0.750000 0.125000 0.312500
+0.687500 0.187500 0.312500
+0.750000 0.187500 0.312500
+0.625000 0.187500 0.250000
+0.687500 0.187500 0.250000
+0.625000 0.250000 0.250000
+0.687500 0.250000 0.250000
+0.625000 0.187500 0.312500
+0.687500 0.187500 0.312500
+0.625000 0.250000 0.312500
+0.687500 0.250000 0.312500
+0.687500 0.187500 0.250000
+0.750000 0.187500 0.250000
+0.687500 0.250000 0.250000
+0.750000 0.250000 0.250000
+0.687500 0.187500 0.312500
+0.750000 0.187500 0.312500
+0.687500 0.250000 0.312500
+0.750000 0.250000 0.312500
+0.625000 0.125000 0.312500
+0.687500 0.125000 0.312500
+0.625000 0.187500 0.312500
+0.687500 0.187500 0.312500
+0.625000 0.125000 0.375000
+0.687500 0.125000 0.375000
+0.625000 0.187500 0.375000
+0.687500 0.187500 0.375000
+0.687500 0.125000 0.312500
+0.750000 0.125000 0.312500
+0.687500 0.187500 0.312500
+0.750000 0.187500 0.312500
+0.687500 0.125000 0.375000
+0.750000 0.125000 0.375000
+0.687500 0.187500 0.375000
+0.750000 0.187500 0.375000
+0.625000 0.187500 0.312500
+0.687500 0.187500 0.312500
+0.625000 0.250000 0.312500
+0.687500 0.250000 0.312500
+0.625000 0.187500 0.375000
+0.687500 0.187500 0.375000
+0.625000 0.250000 0.375000
+0.687500 0.250000 0.375000
+0.687500 0.187500 0.312500
+0.750000 0.187500 0.312500
+0.687500 0.250000 0.312500
+0.750000 0.250000 0.312500
+0.687500 0.187500 0.375000
+0.750000 0.187500 0.375000
+0.687500 0.250000 0.375000
+0.750000 0.250000 0.375000
+0.625000 0.125000 0.375000
+0.687500 0.125000 0.375000
+0.625000 0.187500 0.375000
+0.687500 0.187500 0.375000
+0.625000 0.125000 0.437500
+0.687500 0.125000 0.437500
+0.625000 0.187500 0.437500
+0.687500 0.187500 0.437500
+0.687500 0.125000 0.375000
+0.750000 0.125000 0.375000
+0.687500 0.187500 0.375000
+0.750000 0.187500 0.375000
+0.687500 0.125000 0.437500
+0.750000 0.125000 0.437500
+0.687500 0.187500 0.437500
+0.750000 0.187500 0.437500
+0.625000 0.187500 0.375000
+0.687500 0.187500 0.375000
+0.625000 0.250000 0.375000
+0.687500 0.250000 0.375000
+0.625000 0.187500 0.437500
+0.687500 0.187500 0.437500
+0.625000 0.250000 0.437500
+0.687500 0.250000 0.437500
+0.687500 0.187500 0.375000
+0.750000 0.187500 0.375000
+0.687500 0.250000 0.375000
+0.750000 0.250000 0.375000
+0.687500 0.187500 0.437500
+0.750000 0.187500 0.437500
+0.687500 0.250000 0.437500
+0.750000 0.250000 0.437500
+0.625000 0.125000 0.437500
+0.687500 0.125000 0.437500
+0.625000 0.187500 0.437500
+0.687500 0.187500 0.437500
+0.625000 0.125000 0.500000
+0.687500 0.125000 0.500000
+0.625000 0.187500 0.500000
+0.687500 0.187500 0.500000
+0.687500 0.125000 0.437500
+0.750000 0.125000 0.437500
+0.687500 0.187500 0.437500
+0.750000 0.187500 0.437500
+0.687500 0.125000 0.500000
+0.750000 0.125000 0.500000
+0.687500 0.187500 0.500000
+0.750000 0.187500 0.500000
+0.625000 0.187500 0.437500
+0.687500 0.187500 0.437500
+0.625000 0.250000 0.437500
+0.687500 0.250000 0.437500
+0.625000 0.187500 0.500000
+0.687500 0.187500 0.500000
+0.625000 0.250000 0.500000
+0.687500 0.250000 0.500000
+0.687500 0.187500 0.437500
+0.750000 0.187500 0.437500
+0.687500 0.250000 0.437500
+0.750000 0.250000 0.437500
+0.687500 0.187500 0.500000
+0.750000 0.187500 0.500000
+0.687500 0.250000 0.500000
+0.750000 0.250000 0.500000
+0.875000 0.00000 0.250000
+0.937500 0.00000 0.250000
+0.875000 0.0625000 0.250000
+0.937500 0.0625000 0.250000
+0.875000 0.00000 0.312500
+0.937500 0.00000 0.312500
+0.875000 0.0625000 0.312500
+0.937500 0.0625000 0.312500
+0.937500 0.00000 0.250000
+1.00000 0.00000 0.250000
+0.937500 0.0625000 0.250000
+1.00000 0.0625000 0.250000
+0.937500 0.00000 0.312500
+1.00000 0.00000 0.312500
+0.937500 0.0625000 0.312500
+1.00000 0.0625000 0.312500
+0.875000 0.0625000 0.250000
+0.937500 0.0625000 0.250000
+0.875000 0.125000 0.250000
+0.937500 0.125000 0.250000
+0.875000 0.0625000 0.312500
+0.937500 0.0625000 0.312500
+0.875000 0.125000 0.312500
+0.937500 0.125000 0.312500
+0.937500 0.0625000 0.250000
+1.00000 0.0625000 0.250000
+0.937500 0.125000 0.250000
+1.00000 0.125000 0.250000
+0.937500 0.0625000 0.312500
+1.00000 0.0625000 0.312500
+0.937500 0.125000 0.312500
+1.00000 0.125000 0.312500
+0.875000 0.00000 0.312500
+0.937500 0.00000 0.312500
+0.875000 0.0625000 0.312500
+0.937500 0.0625000 0.312500
+0.875000 0.00000 0.375000
+0.937500 0.00000 0.375000
+0.875000 0.0625000 0.375000
+0.937500 0.0625000 0.375000
+0.937500 0.00000 0.312500
+1.00000 0.00000 0.312500
+0.937500 0.0625000 0.312500
+1.00000 0.0625000 0.312500
+0.937500 0.00000 0.375000
+1.00000 0.00000 0.375000
+0.937500 0.0625000 0.375000
+1.00000 0.0625000 0.375000
+0.875000 0.0625000 0.312500
+0.937500 0.0625000 0.312500
+0.875000 0.125000 0.312500
+0.937500 0.125000 0.312500
+0.875000 0.0625000 0.375000
+0.937500 0.0625000 0.375000
+0.875000 0.125000 0.375000
+0.937500 0.125000 0.375000
+0.937500 0.0625000 0.312500
+1.00000 0.0625000 0.312500
+0.937500 0.125000 0.312500
+1.00000 0.125000 0.312500
+0.937500 0.0625000 0.375000
+1.00000 0.0625000 0.375000
+0.937500 0.125000 0.375000
+1.00000 0.125000 0.375000
+0.750000 0.125000 0.375000
+0.812500 0.125000 0.375000
+0.750000 0.187500 0.375000
+0.812500 0.187500 0.375000
+0.750000 0.125000 0.437500
+0.812500 0.125000 0.437500
+0.750000 0.187500 0.437500
+0.812500 0.187500 0.437500
+0.812500 0.125000 0.375000
+0.875000 0.125000 0.375000
+0.812500 0.187500 0.375000
+0.875000 0.187500 0.375000
+0.812500 0.125000 0.437500
+0.875000 0.125000 0.437500
+0.812500 0.187500 0.437500
+0.875000 0.187500 0.437500
+0.750000 0.187500 0.375000
+0.812500 0.187500 0.375000
+0.750000 0.250000 0.375000
+0.812500 0.250000 0.375000
+0.750000 0.187500 0.437500
+0.812500 0.187500 0.437500
+0.750000 0.250000 0.437500
+0.812500 0.250000 0.437500
+0.812500 0.187500 0.375000
+0.875000 0.187500 0.375000
+0.812500 0.250000 0.375000
+0.875000 0.250000 0.375000
+0.812500 0.187500 0.437500
+0.875000 0.187500 0.437500
+0.812500 0.250000 0.437500
+0.875000 0.250000 0.437500
+0.750000 0.125000 0.437500
+0.812500 0.125000 0.437500
+0.750000 0.187500 0.437500
+0.812500 0.187500 0.437500
+0.750000 0.125000 0.500000
+0.812500 0.125000 0.500000
+0.750000 0.187500 0.500000
+0.812500 0.187500 0.500000
+0.812500 0.125000 0.437500
+0.875000 0.125000 0.437500
+0.812500 0.187500 0.437500
+0.875000 0.187500 0.437500
+0.812500 0.125000 0.500000
+0.875000 0.125000 0.500000
+0.812500 0.187500 0.500000
+0.875000 0.187500 0.500000
+0.750000 0.187500 0.437500
+0.812500 0.187500 0.437500
+0.750000 0.250000 0.437500
+0.812500 0.250000 0.437500
+0.750000 0.187500 0.500000
+0.812500 0.187500 0.500000
+0.750000 0.250000 0.500000
+0.812500 0.250000 0.500000
+0.812500 0.187500 0.437500
+0.875000 0.187500 0.437500
+0.812500 0.250000 0.437500
+0.875000 0.250000 0.437500
+0.812500 0.187500 0.500000
+0.875000 0.187500 0.500000
+0.812500 0.250000 0.500000
+0.875000 0.250000 0.500000
+0.750000 0.250000 0.250000
+0.812500 0.250000 0.250000
+0.750000 0.312500 0.250000
+0.812500 0.312500 0.250000
+0.750000 0.250000 0.312500
+0.812500 0.250000 0.312500
+0.750000 0.312500 0.312500
+0.812500 0.312500 0.312500
+0.812500 0.250000 0.250000
+0.875000 0.250000 0.250000
+0.812500 0.312500 0.250000
+0.875000 0.312500 0.250000
+0.812500 0.250000 0.312500
+0.875000 0.250000 0.312500
+0.812500 0.312500 0.312500
+0.875000 0.312500 0.312500
+0.750000 0.312500 0.250000
+0.812500 0.312500 0.250000
+0.750000 0.375000 0.250000
+0.812500 0.375000 0.250000
+0.750000 0.312500 0.312500
+0.812500 0.312500 0.312500
+0.750000 0.375000 0.312500
+0.812500 0.375000 0.312500
+0.812500 0.312500 0.250000
+0.875000 0.312500 0.250000
+0.812500 0.375000 0.250000
+0.875000 0.375000 0.250000
+0.812500 0.312500 0.312500
+0.875000 0.312500 0.312500
+0.812500 0.375000 0.312500
+0.875000 0.375000 0.312500
+0.750000 0.250000 0.312500
+0.812500 0.250000 0.312500
+0.750000 0.312500 0.312500
+0.812500 0.312500 0.312500
+0.750000 0.250000 0.375000
+0.812500 0.250000 0.375000
+0.750000 0.312500 0.375000
+0.812500 0.312500 0.375000
+0.812500 0.250000 0.312500
+0.875000 0.250000 0.312500
+0.812500 0.312500 0.312500
+0.875000 0.312500 0.312500
+0.812500 0.250000 0.375000
+0.875000 0.250000 0.375000
+0.812500 0.312500 0.375000
+0.875000 0.312500 0.375000
+0.750000 0.312500 0.312500
+0.812500 0.312500 0.312500
+0.750000 0.375000 0.312500
+0.812500 0.375000 0.312500
+0.750000 0.312500 0.375000
+0.812500 0.312500 0.375000
+0.750000 0.375000 0.375000
+0.812500 0.375000 0.375000
+0.812500 0.312500 0.312500
+0.875000 0.312500 0.312500
+0.812500 0.375000 0.312500
+0.875000 0.375000 0.312500
+0.812500 0.312500 0.375000
+0.875000 0.312500 0.375000
+0.812500 0.375000 0.375000
+0.875000 0.375000 0.375000
+0.750000 0.375000 0.250000
+0.812500 0.375000 0.250000
+0.750000 0.437500 0.250000
+0.812500 0.437500 0.250000
+0.750000 0.375000 0.312500
+0.812500 0.375000 0.312500
+0.750000 0.437500 0.312500
+0.812500 0.437500 0.312500
+0.812500 0.375000 0.250000
+0.875000 0.375000 0.250000
+0.812500 0.437500 0.250000
+0.875000 0.437500 0.250000
+0.812500 0.375000 0.312500
+0.875000 0.375000 0.312500
+0.812500 0.437500 0.312500
+0.875000 0.437500 0.312500
+0.750000 0.437500 0.250000
+0.812500 0.437500 0.250000
+0.750000 0.500000 0.250000
+0.812500 0.500000 0.250000
+0.750000 0.437500 0.312500
+0.812500 0.437500 0.312500
+0.750000 0.500000 0.312500
+0.812500 0.500000 0.312500
+0.812500 0.437500 0.250000
+0.875000 0.437500 0.250000
+0.812500 0.500000 0.250000
+0.875000 0.500000 0.250000
+0.812500 0.437500 0.312500
+0.875000 0.437500 0.312500
+0.812500 0.500000 0.312500
+0.875000 0.500000 0.312500
+0.750000 0.375000 0.312500
+0.812500 0.375000 0.312500
+0.750000 0.437500 0.312500
+0.812500 0.437500 0.312500
+0.750000 0.375000 0.375000
+0.812500 0.375000 0.375000
+0.750000 0.437500 0.375000
+0.812500 0.437500 0.375000
+0.812500 0.375000 0.312500
+0.875000 0.375000 0.312500
+0.812500 0.437500 0.312500
+0.875000 0.437500 0.312500
+0.812500 0.375000 0.375000
+0.875000 0.375000 0.375000
+0.812500 0.437500 0.375000
+0.875000 0.437500 0.375000
+0.750000 0.437500 0.312500
+0.812500 0.437500 0.312500
+0.750000 0.500000 0.312500
+0.812500 0.500000 0.312500
+0.750000 0.437500 0.375000
+0.812500 0.437500 0.375000
+0.750000 0.500000 0.375000
+0.812500 0.500000 0.375000
+0.812500 0.437500 0.312500
+0.875000 0.437500 0.312500
+0.812500 0.500000 0.312500
+0.875000 0.500000 0.312500
+0.812500 0.437500 0.375000
+0.875000 0.437500 0.375000
+0.812500 0.500000 0.375000
+0.875000 0.500000 0.375000
+0.750000 0.250000 0.375000
+0.812500 0.250000 0.375000
+0.750000 0.312500 0.375000
+0.812500 0.312500 0.375000
+0.750000 0.250000 0.437500
+0.812500 0.250000 0.437500
+0.750000 0.312500 0.437500
+0.812500 0.312500 0.437500
+0.812500 0.250000 0.375000
+0.875000 0.250000 0.375000
+0.812500 0.312500 0.375000
+0.875000 0.312500 0.375000
+0.812500 0.250000 0.437500
+0.875000 0.250000 0.437500
+0.812500 0.312500 0.437500
+0.875000 0.312500 0.437500
+0.750000 0.312500 0.375000
+0.812500 0.312500 0.375000
+0.750000 0.375000 0.375000
+0.812500 0.375000 0.375000
+0.750000 0.312500 0.437500
+0.812500 0.312500 0.437500
+0.750000 0.375000 0.437500
+0.812500 0.375000 0.437500
+0.812500 0.312500 0.375000
+0.875000 0.312500 0.375000
+0.812500 0.375000 0.375000
+0.875000 0.375000 0.375000
+0.812500 0.312500 0.437500
+0.875000 0.312500 0.437500
+0.812500 0.375000 0.437500
+0.875000 0.375000 0.437500
+0.750000 0.250000 0.437500
+0.812500 0.250000 0.437500
+0.750000 0.312500 0.437500
+0.812500 0.312500 0.437500
+0.750000 0.250000 0.500000
+0.812500 0.250000 0.500000
+0.750000 0.312500 0.500000
+0.812500 0.312500 0.500000
+0.812500 0.250000 0.437500
+0.875000 0.250000 0.437500
+0.812500 0.312500 0.437500
+0.875000 0.312500 0.437500
+0.812500 0.250000 0.500000
+0.875000 0.250000 0.500000
+0.812500 0.312500 0.500000
+0.875000 0.312500 0.500000
+0.750000 0.312500 0.437500
+0.812500 0.312500 0.437500
+0.750000 0.375000 0.437500
+0.812500 0.375000 0.437500
+0.750000 0.312500 0.500000
+0.812500 0.312500 0.500000
+0.750000 0.375000 0.500000
+0.812500 0.375000 0.500000
+0.812500 0.312500 0.437500
+0.875000 0.312500 0.437500
+0.812500 0.375000 0.437500
+0.875000 0.375000 0.437500
+0.812500 0.312500 0.500000
+0.875000 0.312500 0.500000
+0.812500 0.375000 0.500000
+0.875000 0.375000 0.500000
+0.125000 0.625000 0.00000
+0.187500 0.625000 0.00000
+0.125000 0.687500 0.00000
+0.187500 0.687500 0.00000
+0.125000 0.625000 0.0625000
+0.187500 0.625000 0.0625000
+0.125000 0.687500 0.0625000
+0.187500 0.687500 0.0625000
+0.187500 0.625000 0.00000
+0.250000 0.625000 0.00000
+0.187500 0.687500 0.00000
+0.250000 0.687500 0.00000
+0.187500 0.625000 0.0625000
+0.250000 0.625000 0.0625000
+0.187500 0.687500 0.0625000
+0.250000 0.687500 0.0625000
+0.125000 0.687500 0.00000
+0.187500 0.687500 0.00000
+0.125000 0.750000 0.00000
+0.187500 0.750000 0.00000
+0.125000 0.687500 0.0625000
+0.187500 0.687500 0.0625000
+0.125000 0.750000 0.0625000
+0.187500 0.750000 0.0625000
+0.187500 0.687500 0.00000
+0.250000 0.687500 0.00000
+0.187500 0.750000 0.00000
+0.250000 0.750000 0.00000
+0.187500 0.687500 0.0625000
+0.250000 0.687500 0.0625000
+0.187500 0.750000 0.0625000
+0.250000 0.750000 0.0625000
+0.125000 0.625000 0.0625000
+0.187500 0.625000 0.0625000
+0.125000 0.687500 0.0625000
+0.187500 0.687500 0.0625000
+0.125000 0.625000 0.125000
+0.187500 0.625000 0.125000
+0.125000 0.687500 0.125000
+0.187500 0.687500 0.125000
+0.187500 0.625000 0.0625000
+0.250000 0.625000 0.0625000
+0.187500 0.687500 0.0625000
+0.250000 0.687500 0.0625000
+0.187500 0.625000 0.125000
+0.250000 0.625000 0.125000
+0.187500 0.687500 0.125000
+0.250000 0.687500 0.125000
+0.125000 0.687500 0.0625000
+0.187500 0.687500 0.0625000
+0.125000 0.750000 0.0625000
+0.187500 0.750000 0.0625000
+0.125000 0.687500 0.125000
+0.187500 0.687500 0.125000
+0.125000 0.750000 0.125000
+0.187500 0.750000 0.125000
+0.187500 0.687500 0.0625000
+0.250000 0.687500 0.0625000
+0.187500 0.750000 0.0625000
+0.250000 0.750000 0.0625000
+0.187500 0.687500 0.125000
+0.250000 0.687500 0.125000
+0.187500 0.750000 0.125000
+0.250000 0.750000 0.125000
+0.250000 0.500000 0.125000
+0.312500 0.500000 0.125000
+0.250000 0.562500 0.125000
+0.312500 0.562500 0.125000
+0.250000 0.500000 0.187500
+0.312500 0.500000 0.187500
+0.250000 0.562500 0.187500
+0.312500 0.562500 0.187500
+0.312500 0.500000 0.125000
+0.375000 0.500000 0.125000
+0.312500 0.562500 0.125000
+0.375000 0.562500 0.125000
+0.312500 0.500000 0.187500
+0.375000 0.500000 0.187500
+0.312500 0.562500 0.187500
+0.375000 0.562500 0.187500
+0.250000 0.562500 0.125000
+0.312500 0.562500 0.125000
+0.250000 0.625000 0.125000
+0.312500 0.625000 0.125000
+0.250000 0.562500 0.187500
+0.312500 0.562500 0.187500
+0.250000 0.625000 0.187500
+0.312500 0.625000 0.187500
+0.312500 0.562500 0.125000
+0.375000 0.562500 0.125000
+0.312500 0.625000 0.125000
+0.375000 0.625000 0.125000
+0.312500 0.562500 0.187500
+0.375000 0.562500 0.187500
+0.312500 0.625000 0.187500
+0.375000 0.625000 0.187500
+0.250000 0.500000 0.187500
+0.312500 0.500000 0.187500
+0.250000 0.562500 0.187500
+0.312500 0.562500 0.187500
+0.250000 0.500000 0.250000
+0.312500 0.500000 0.250000
+0.250000 0.562500 0.250000
+0.312500 0.562500 0.250000
+0.312500 0.500000 0.187500
+0.375000 0.500000 0.187500
+0.312500 0.562500 0.187500
+0.375000 0.562500 0.187500
+0.312500 0.500000 0.250000
+0.375000 0.500000 0.250000
+0.312500 0.562500 0.250000
+0.375000 0.562500 0.250000
+0.250000 0.562500 0.187500
+0.312500 0.562500 0.187500
+0.250000 0.625000 0.187500
+0.312500 0.625000 0.187500
+0.250000 0.562500 0.250000
+0.312500 0.562500 0.250000
+0.250000 0.625000 0.250000
+0.312500 0.625000 0.250000
+0.312500 0.562500 0.187500
+0.375000 0.562500 0.187500
+0.312500 0.625000 0.187500
+0.375000 0.625000 0.187500
+0.312500 0.562500 0.250000
+0.375000 0.562500 0.250000
+0.312500 0.625000 0.250000
+0.375000 0.625000 0.250000
+0.375000 0.500000 0.375000
+0.437500 0.500000 0.375000
+0.375000 0.562500 0.375000
+0.437500 0.562500 0.375000
+0.375000 0.500000 0.437500
+0.437500 0.500000 0.437500
+0.375000 0.562500 0.437500
+0.437500 0.562500 0.437500
+0.437500 0.500000 0.375000
+0.500000 0.500000 0.375000
+0.437500 0.562500 0.375000
+0.500000 0.562500 0.375000
+0.437500 0.500000 0.437500
+0.500000 0.500000 0.437500
+0.437500 0.562500 0.437500
+0.500000 0.562500 0.437500
+0.375000 0.562500 0.375000
+0.437500 0.562500 0.375000
+0.375000 0.625000 0.375000
+0.437500 0.625000 0.375000
+0.375000 0.562500 0.437500
+0.437500 0.562500 0.437500
+0.375000 0.625000 0.437500
+0.437500 0.625000 0.437500
+0.437500 0.562500 0.375000
+0.500000 0.562500 0.375000
+0.437500 0.625000 0.375000
+0.500000 0.625000 0.375000
+0.437500 0.562500 0.437500
+0.500000 0.562500 0.437500
+0.437500 0.625000 0.437500
+0.500000 0.625000 0.437500
+0.375000 0.500000 0.437500
+0.437500 0.500000 0.437500
+0.375000 0.562500 0.437500
+0.437500 0.562500 0.437500
+0.375000 0.500000 0.500000
+0.437500 0.500000 0.500000
+0.375000 0.562500 0.500000
+0.437500 0.562500 0.500000
+0.437500 0.500000 0.437500
+0.500000 0.500000 0.437500
+0.437500 0.562500 0.437500
+0.500000 0.562500 0.437500
+0.437500 0.500000 0.500000
+0.500000 0.500000 0.500000
+0.437500 0.562500 0.500000
+0.500000 0.562500 0.500000
+0.375000 0.562500 0.437500
+0.437500 0.562500 0.437500
+0.375000 0.625000 0.437500
+0.437500 0.625000 0.437500
+0.375000 0.562500 0.500000
+0.437500 0.562500 0.500000
+0.375000 0.625000 0.500000
+0.437500 0.625000 0.500000
+0.437500 0.562500 0.437500
+0.500000 0.562500 0.437500
+0.437500 0.625000 0.437500
+0.500000 0.625000 0.437500
+0.437500 0.562500 0.500000
+0.500000 0.562500 0.500000
+0.437500 0.625000 0.500000
+0.500000 0.625000 0.500000
+0.125000 0.875000 0.250000
+0.187500 0.875000 0.250000
+0.125000 0.937500 0.250000
+0.187500 0.937500 0.250000
+0.125000 0.875000 0.312500
+0.187500 0.875000 0.312500
+0.125000 0.937500 0.312500
+0.187500 0.937500 0.312500
+0.187500 0.875000 0.250000
+0.250000 0.875000 0.250000
+0.187500 0.937500 0.250000
+0.250000 0.937500 0.250000
+0.187500 0.875000 0.312500
+0.250000 0.875000 0.312500
+0.187500 0.937500 0.312500
+0.250000 0.937500 0.312500
+0.125000 0.937500 0.250000
+0.187500 0.937500 0.250000
+0.125000 1.00000 0.250000
+0.187500 1.00000 0.250000
+0.125000 0.937500 0.312500
+0.187500 0.937500 0.312500
+0.125000 1.00000 0.312500
+0.187500 1.00000 0.312500
+0.187500 0.937500 0.250000
+0.250000 0.937500 0.250000
+0.187500 1.00000 0.250000
+0.250000 1.00000 0.250000
+0.187500 0.937500 0.312500
+0.250000 0.937500 0.312500
+0.187500 1.00000 0.312500
+0.250000 1.00000 0.312500
+0.125000 0.875000 0.312500
+0.187500 0.875000 0.312500
+0.125000 0.937500 0.312500
+0.187500 0.937500 0.312500
+0.125000 0.875000 0.375000
+0.187500 0.875000 0.375000
+0.125000 0.937500 0.375000
+0.187500 0.937500 0.375000
+0.187500 0.875000 0.312500
+0.250000 0.875000 0.312500
+0.187500 0.937500 0.312500
+0.250000 0.937500 0.312500
+0.187500 0.875000 0.375000
+0.250000 0.875000 0.375000
+0.187500 0.937500 0.375000
+0.250000 0.937500 0.375000
+0.125000 0.937500 0.312500
+0.187500 0.937500 0.312500
+0.125000 1.00000 0.312500
+0.187500 1.00000 0.312500
+0.125000 0.937500 0.375000
+0.187500 0.937500 0.375000
+0.125000 1.00000 0.375000
+0.187500 1.00000 0.375000
+0.187500 0.937500 0.312500
+0.250000 0.937500 0.312500
+0.187500 1.00000 0.312500
+0.250000 1.00000 0.312500
+0.187500 0.937500 0.375000
+0.250000 0.937500 0.375000
+0.187500 1.00000 0.375000
+0.250000 1.00000 0.375000
+0.00000 0.875000 0.375000
+0.0625000 0.875000 0.375000
+0.00000 0.937500 0.375000
+0.0625000 0.937500 0.375000
+0.00000 0.875000 0.437500
+0.0625000 0.875000 0.437500
+0.00000 0.937500 0.437500
+0.0625000 0.937500 0.437500
+0.0625000 0.875000 0.375000
+0.125000 0.875000 0.375000
+0.0625000 0.937500 0.375000
+0.125000 0.937500 0.375000
+0.0625000 0.875000 0.437500
+0.125000 0.875000 0.437500
+0.0625000 0.937500 0.437500
+0.125000 0.937500 0.437500
+0.00000 0.937500 0.375000
+0.0625000 0.937500 0.375000
+0.00000 1.00000 0.375000
+0.0625000 1.00000 0.375000
+0.00000 0.937500 0.437500
+0.0625000 0.937500 0.437500
+0.00000 1.00000 0.437500
+0.0625000 1.00000 0.437500
+0.0625000 0.937500 0.375000
+0.125000 0.937500 0.375000
+0.0625000 1.00000 0.375000
+0.125000 1.00000 0.375000
+0.0625000 0.937500 0.437500
+0.125000 0.937500 0.437500
+0.0625000 1.00000 0.437500
+0.125000 1.00000 0.437500
+0.00000 0.875000 0.437500
+0.0625000 0.875000 0.437500
+0.00000 0.937500 0.437500
+0.0625000 0.937500 0.437500
+0.00000 0.875000 0.500000
+0.0625000 0.875000 0.500000
+0.00000 0.937500 0.500000
+0.0625000 0.937500 0.500000
+0.0625000 0.875000 0.437500
+0.125000 0.875000 0.437500
+0.0625000 0.937500 0.437500
+0.125000 0.937500 0.437500
+0.0625000 0.875000 0.500000
+0.125000 0.875000 0.500000
+0.0625000 0.937500 0.500000
+0.125000 0.937500 0.500000
+0.00000 0.937500 0.437500
+0.0625000 0.937500 0.437500
+0.00000 1.00000 0.437500
+0.0625000 1.00000 0.437500
+0.00000 0.937500 0.500000
+0.0625000 0.937500 0.500000
+0.00000 1.00000 0.500000
+0.0625000 1.00000 0.500000
+0.0625000 0.937500 0.437500
+0.125000 0.937500 0.437500
+0.0625000 1.00000 0.437500
+0.125000 1.00000 0.437500
+0.0625000 0.937500 0.500000
+0.125000 0.937500 0.500000
+0.0625000 1.00000 0.500000
+0.125000 1.00000 0.500000
+0.125000 0.875000 0.375000
+0.187500 0.875000 0.375000
+0.125000 0.937500 0.375000
+0.187500 0.937500 0.375000
+0.125000 0.875000 0.437500
+0.187500 0.875000 0.437500
+0.125000 0.937500 0.437500
+0.187500 0.937500 0.437500
+0.187500 0.875000 0.375000
+0.250000 0.875000 0.375000
+0.187500 0.937500 0.375000
+0.250000 0.937500 0.375000
+0.187500 0.875000 0.437500
+0.250000 0.875000 0.437500
+0.187500 0.937500 0.437500
+0.250000 0.937500 0.437500
+0.125000 0.937500 0.375000
+0.187500 0.937500 0.375000
+0.125000 1.00000 0.375000
+0.187500 1.00000 0.375000
+0.125000 0.937500 0.437500
+0.187500 0.937500 0.437500
+0.125000 1.00000 0.437500
+0.187500 1.00000 0.437500
+0.187500 0.937500 0.375000
+0.250000 0.937500 0.375000
+0.187500 1.00000 0.375000
+0.250000 1.00000 0.375000
+0.187500 0.937500 0.437500
+0.250000 0.937500 0.437500
+0.187500 1.00000 0.437500
+0.250000 1.00000 0.437500
+0.125000 0.875000 0.437500
+0.187500 0.875000 0.437500
+0.125000 0.937500 0.437500
+0.187500 0.937500 0.437500
+0.125000 0.875000 0.500000
+0.187500 0.875000 0.500000
+0.125000 0.937500 0.500000
+0.187500 0.937500 0.500000
+0.187500 0.875000 0.437500
+0.250000 0.875000 0.437500
+0.187500 0.937500 0.437500
+0.250000 0.937500 0.437500
+0.187500 0.875000 0.500000
+0.250000 0.875000 0.500000
+0.187500 0.937500 0.500000
+0.250000 0.937500 0.500000
+0.125000 0.937500 0.437500
+0.187500 0.937500 0.437500
+0.125000 1.00000 0.437500
+0.187500 1.00000 0.437500
+0.125000 0.937500 0.500000
+0.187500 0.937500 0.500000
+0.125000 1.00000 0.500000
+0.187500 1.00000 0.500000
+0.187500 0.937500 0.437500
+0.250000 0.937500 0.437500
+0.187500 1.00000 0.437500
+0.250000 1.00000 0.437500
+0.187500 0.937500 0.500000
+0.250000 0.937500 0.500000
+0.187500 1.00000 0.500000
+0.250000 1.00000 0.500000
+0.875000 0.875000 0.375000
+0.937500 0.875000 0.375000
+0.875000 0.937500 0.375000
+0.937500 0.937500 0.375000
+0.875000 0.875000 0.437500
+0.937500 0.875000 0.437500
+0.875000 0.937500 0.437500
+0.937500 0.937500 0.437500
+0.937500 0.875000 0.375000
+1.00000 0.875000 0.375000
+0.937500 0.937500 0.375000
+1.00000 0.937500 0.375000
+0.937500 0.875000 0.437500
+1.00000 0.875000 0.437500
+0.937500 0.937500 0.437500
+1.00000 0.937500 0.437500
+0.875000 0.937500 0.375000
+0.937500 0.937500 0.375000
+0.875000 1.00000 0.375000
+0.937500 1.00000 0.375000
+0.875000 0.937500 0.437500
+0.937500 0.937500 0.437500
+0.875000 1.00000 0.437500
+0.937500 1.00000 0.437500
+0.937500 0.937500 0.375000
+1.00000 0.937500 0.375000
+0.937500 1.00000 0.375000
+1.00000 1.00000 0.375000
+0.937500 0.937500 0.437500
+1.00000 0.937500 0.437500
+0.937500 1.00000 0.437500
+1.00000 1.00000 0.437500
+0.875000 0.875000 0.437500
+0.937500 0.875000 0.437500
+0.875000 0.937500 0.437500
+0.937500 0.937500 0.437500
+0.875000 0.875000 0.500000
+0.937500 0.875000 0.500000
+0.875000 0.937500 0.500000
+0.937500 0.937500 0.500000
+0.937500 0.875000 0.437500
+1.00000 0.875000 0.437500
+0.937500 0.937500 0.437500
+1.00000 0.937500 0.437500
+0.937500 0.875000 0.500000
+1.00000 0.875000 0.500000
+0.937500 0.937500 0.500000
+1.00000 0.937500 0.500000
+0.875000 0.937500 0.437500
+0.937500 0.937500 0.437500
+0.875000 1.00000 0.437500
+0.937500 1.00000 0.437500
+0.875000 0.937500 0.500000
+0.937500 0.937500 0.500000
+0.875000 1.00000 0.500000
+0.937500 1.00000 0.500000
+0.937500 0.937500 0.437500
+1.00000 0.937500 0.437500
+0.937500 1.00000 0.437500
+1.00000 1.00000 0.437500
+0.937500 0.937500 0.500000
+1.00000 0.937500 0.500000
+0.937500 1.00000 0.500000
+1.00000 1.00000 0.500000
+0.250000 0.00000 0.500000
+0.312500 0.00000 0.500000
+0.250000 0.0625000 0.500000
+0.312500 0.0625000 0.500000
+0.250000 0.00000 0.562500
+0.312500 0.00000 0.562500
+0.250000 0.0625000 0.562500
+0.312500 0.0625000 0.562500
+0.312500 0.00000 0.500000
+0.375000 0.00000 0.500000
+0.312500 0.0625000 0.500000
+0.375000 0.0625000 0.500000
+0.312500 0.00000 0.562500
+0.375000 0.00000 0.562500
+0.312500 0.0625000 0.562500
+0.375000 0.0625000 0.562500
+0.250000 0.0625000 0.500000
+0.312500 0.0625000 0.500000
+0.250000 0.125000 0.500000
+0.312500 0.125000 0.500000
+0.250000 0.0625000 0.562500
+0.312500 0.0625000 0.562500
+0.250000 0.125000 0.562500
+0.312500 0.125000 0.562500
+0.312500 0.0625000 0.500000
+0.375000 0.0625000 0.500000
+0.312500 0.125000 0.500000
+0.375000 0.125000 0.500000
+0.312500 0.0625000 0.562500
+0.375000 0.0625000 0.562500
+0.312500 0.125000 0.562500
+0.375000 0.125000 0.562500
+0.250000 0.00000 0.562500
+0.312500 0.00000 0.562500
+0.250000 0.0625000 0.562500
+0.312500 0.0625000 0.562500
+0.250000 0.00000 0.625000
+0.312500 0.00000 0.625000
+0.250000 0.0625000 0.625000
+0.312500 0.0625000 0.625000
+0.312500 0.00000 0.562500
+0.375000 0.00000 0.562500
+0.312500 0.0625000 0.562500
+0.375000 0.0625000 0.562500
+0.312500 0.00000 0.625000
+0.375000 0.00000 0.625000
+0.312500 0.0625000 0.625000
+0.375000 0.0625000 0.625000
+0.250000 0.0625000 0.562500
+0.312500 0.0625000 0.562500
+0.250000 0.125000 0.562500
+0.312500 0.125000 0.562500
+0.250000 0.0625000 0.625000
+0.312500 0.0625000 0.625000
+0.250000 0.125000 0.625000
+0.312500 0.125000 0.625000
+0.312500 0.0625000 0.562500
+0.375000 0.0625000 0.562500
+0.312500 0.125000 0.562500
+0.375000 0.125000 0.562500
+0.312500 0.0625000 0.625000
+0.375000 0.0625000 0.625000
+0.312500 0.125000 0.625000
+0.375000 0.125000 0.625000
+0.625000 0.00000 0.500000
+0.687500 0.00000 0.500000
+0.625000 0.0625000 0.500000
+0.687500 0.0625000 0.500000
+0.625000 0.00000 0.562500
+0.687500 0.00000 0.562500
+0.625000 0.0625000 0.562500
+0.687500 0.0625000 0.562500
+0.687500 0.00000 0.500000
+0.750000 0.00000 0.500000
+0.687500 0.0625000 0.500000
+0.750000 0.0625000 0.500000
+0.687500 0.00000 0.562500
+0.750000 0.00000 0.562500
+0.687500 0.0625000 0.562500
+0.750000 0.0625000 0.562500
+0.625000 0.0625000 0.500000
+0.687500 0.0625000 0.500000
+0.625000 0.125000 0.500000
+0.687500 0.125000 0.500000
+0.625000 0.0625000 0.562500
+0.687500 0.0625000 0.562500
+0.625000 0.125000 0.562500
+0.687500 0.125000 0.562500
+0.687500 0.0625000 0.500000
+0.750000 0.0625000 0.500000
+0.687500 0.125000 0.500000
+0.750000 0.125000 0.500000
+0.687500 0.0625000 0.562500
+0.750000 0.0625000 0.562500
+0.687500 0.125000 0.562500
+0.750000 0.125000 0.562500
+0.625000 0.00000 0.562500
+0.687500 0.00000 0.562500
+0.625000 0.0625000 0.562500
+0.687500 0.0625000 0.562500
+0.625000 0.00000 0.625000
+0.687500 0.00000 0.625000
+0.625000 0.0625000 0.625000
+0.687500 0.0625000 0.625000
+0.687500 0.00000 0.562500
+0.750000 0.00000 0.562500
+0.687500 0.0625000 0.562500
+0.750000 0.0625000 0.562500
+0.687500 0.00000 0.625000
+0.750000 0.00000 0.625000
+0.687500 0.0625000 0.625000
+0.750000 0.0625000 0.625000
+0.625000 0.0625000 0.562500
+0.687500 0.0625000 0.562500
+0.625000 0.125000 0.562500
+0.687500 0.125000 0.562500
+0.625000 0.0625000 0.625000
+0.687500 0.0625000 0.625000
+0.625000 0.125000 0.625000
+0.687500 0.125000 0.625000
+0.687500 0.0625000 0.562500
+0.750000 0.0625000 0.562500
+0.687500 0.125000 0.562500
+0.750000 0.125000 0.562500
+0.687500 0.0625000 0.625000
+0.750000 0.0625000 0.625000
+0.687500 0.125000 0.625000
+0.750000 0.125000 0.625000
+0.500000 0.375000 0.500000
+0.562500 0.375000 0.500000
+0.500000 0.437500 0.500000
+0.562500 0.437500 0.500000
+0.500000 0.375000 0.562500
+0.562500 0.375000 0.562500
+0.500000 0.437500 0.562500
+0.562500 0.437500 0.562500
+0.562500 0.375000 0.500000
+0.625000 0.375000 0.500000
+0.562500 0.437500 0.500000
+0.625000 0.437500 0.500000
+0.562500 0.375000 0.562500
+0.625000 0.375000 0.562500
+0.562500 0.437500 0.562500
+0.625000 0.437500 0.562500
+0.500000 0.437500 0.500000
+0.562500 0.437500 0.500000
+0.500000 0.500000 0.500000
+0.562500 0.500000 0.500000
+0.500000 0.437500 0.562500
+0.562500 0.437500 0.562500
+0.500000 0.500000 0.562500
+0.562500 0.500000 0.562500
+0.562500 0.437500 0.500000
+0.625000 0.437500 0.500000
+0.562500 0.500000 0.500000
+0.625000 0.500000 0.500000
+0.562500 0.437500 0.562500
+0.625000 0.437500 0.562500
+0.562500 0.500000 0.562500
+0.625000 0.500000 0.562500
+0.500000 0.375000 0.562500
+0.562500 0.375000 0.562500
+0.500000 0.437500 0.562500
+0.562500 0.437500 0.562500
+0.500000 0.375000 0.625000
+0.562500 0.375000 0.625000
+0.500000 0.437500 0.625000
+0.562500 0.437500 0.625000
+0.562500 0.375000 0.562500
+0.625000 0.375000 0.562500
+0.562500 0.437500 0.562500
+0.625000 0.437500 0.562500
+0.562500 0.375000 0.625000
+0.625000 0.375000 0.625000
+0.562500 0.437500 0.625000
+0.625000 0.437500 0.625000
+0.500000 0.437500 0.562500
+0.562500 0.437500 0.562500
+0.500000 0.500000 0.562500
+0.562500 0.500000 0.562500
+0.500000 0.437500 0.625000
+0.562500 0.437500 0.625000
+0.500000 0.500000 0.625000
+0.562500 0.500000 0.625000
+0.562500 0.437500 0.562500
+0.625000 0.437500 0.562500
+0.562500 0.500000 0.562500
+0.625000 0.500000 0.562500
+0.562500 0.437500 0.625000
+0.625000 0.437500 0.625000
+0.562500 0.500000 0.625000
+0.625000 0.500000 0.625000
+0.875000 0.375000 0.500000
+0.937500 0.375000 0.500000
+0.875000 0.437500 0.500000
+0.937500 0.437500 0.500000
+0.875000 0.375000 0.562500
+0.937500 0.375000 0.562500
+0.875000 0.437500 0.562500
+0.937500 0.437500 0.562500
+0.937500 0.375000 0.500000
+1.00000 0.375000 0.500000
+0.937500 0.437500 0.500000
+1.00000 0.437500 0.500000
+0.937500 0.375000 0.562500
+1.00000 0.375000 0.562500
+0.937500 0.437500 0.562500
+1.00000 0.437500 0.562500
+0.875000 0.437500 0.500000
+0.937500 0.437500 0.500000
+0.875000 0.500000 0.500000
+0.937500 0.500000 0.500000
+0.875000 0.437500 0.562500
+0.937500 0.437500 0.562500
+0.875000 0.500000 0.562500
+0.937500 0.500000 0.562500
+0.937500 0.437500 0.500000
+1.00000 0.437500 0.500000
+0.937500 0.500000 0.500000
+1.00000 0.500000 0.500000
+0.937500 0.437500 0.562500
+1.00000 0.437500 0.562500
+0.937500 0.500000 0.562500
+1.00000 0.500000 0.562500
+0.875000 0.375000 0.562500
+0.937500 0.375000 0.562500
+0.875000 0.437500 0.562500
+0.937500 0.437500 0.562500
+0.875000 0.375000 0.625000
+0.937500 0.375000 0.625000
+0.875000 0.437500 0.625000
+0.937500 0.437500 0.625000
+0.937500 0.375000 0.562500
+1.00000 0.375000 0.562500
+0.937500 0.437500 0.562500
+1.00000 0.437500 0.562500
+0.937500 0.375000 0.625000
+1.00000 0.375000 0.625000
+0.937500 0.437500 0.625000
+1.00000 0.437500 0.625000
+0.875000 0.437500 0.562500
+0.937500 0.437500 0.562500
+0.875000 0.500000 0.562500
+0.937500 0.500000 0.562500
+0.875000 0.437500 0.625000
+0.937500 0.437500 0.625000
+0.875000 0.500000 0.625000
+0.937500 0.500000 0.625000
+0.937500 0.437500 0.562500
+1.00000 0.437500 0.562500
+0.937500 0.500000 0.562500
+1.00000 0.500000 0.562500
+0.937500 0.437500 0.625000
+1.00000 0.437500 0.625000
+0.937500 0.500000 0.625000
+1.00000 0.500000 0.625000
+0.250000 0.500000 0.625000
+0.312500 0.500000 0.625000
+0.250000 0.562500 0.625000
+0.312500 0.562500 0.625000
+0.250000 0.500000 0.687500
+0.312500 0.500000 0.687500
+0.250000 0.562500 0.687500
+0.312500 0.562500 0.687500
+0.312500 0.500000 0.625000
+0.375000 0.500000 0.625000
+0.312500 0.562500 0.625000
+0.375000 0.562500 0.625000
+0.312500 0.500000 0.687500
+0.375000 0.500000 0.687500
+0.312500 0.562500 0.687500
+0.375000 0.562500 0.687500
+0.250000 0.562500 0.625000
+0.312500 0.562500 0.625000
+0.250000 0.625000 0.625000
+0.312500 0.625000 0.625000
+0.250000 0.562500 0.687500
+0.312500 0.562500 0.687500
+0.250000 0.625000 0.687500
+0.312500 0.625000 0.687500
+0.312500 0.562500 0.625000
+0.375000 0.562500 0.625000
+0.312500 0.625000 0.625000
+0.375000 0.625000 0.625000
+0.312500 0.562500 0.687500
+0.375000 0.562500 0.687500
+0.312500 0.625000 0.687500
+0.375000 0.625000 0.687500
+0.250000 0.500000 0.687500
+0.312500 0.500000 0.687500
+0.250000 0.562500 0.687500
+0.312500 0.562500 0.687500
+0.250000 0.500000 0.750000
+0.312500 0.500000 0.750000
+0.250000 0.562500 0.750000
+0.312500 0.562500 0.750000
+0.312500 0.500000 0.687500
+0.375000 0.500000 0.687500
+0.312500 0.562500 0.687500
+0.375000 0.562500 0.687500
+0.312500 0.500000 0.750000
+0.375000 0.500000 0.750000
+0.312500 0.562500 0.750000
+0.375000 0.562500 0.750000
+0.250000 0.562500 0.687500
+0.312500 0.562500 0.687500
+0.250000 0.625000 0.687500
+0.312500 0.625000 0.687500
+0.250000 0.562500 0.750000
+0.312500 0.562500 0.750000
+0.250000 0.625000 0.750000
+0.312500 0.625000 0.750000
+0.312500 0.562500 0.687500
+0.375000 0.562500 0.687500
+0.312500 0.625000 0.687500
+0.375000 0.625000 0.687500
+0.312500 0.562500 0.750000
+0.375000 0.562500 0.750000
+0.312500 0.625000 0.750000
+0.375000 0.625000 0.750000
+0.125000 0.750000 0.625000
+0.187500 0.750000 0.625000
+0.125000 0.812500 0.625000
+0.187500 0.812500 0.625000
+0.125000 0.750000 0.687500
+0.187500 0.750000 0.687500
+0.125000 0.812500 0.687500
+0.187500 0.812500 0.687500
+0.187500 0.750000 0.625000
+0.250000 0.750000 0.625000
+0.187500 0.812500 0.625000
+0.250000 0.812500 0.625000
+0.187500 0.750000 0.687500
+0.250000 0.750000 0.687500
+0.187500 0.812500 0.687500
+0.250000 0.812500 0.687500
+0.125000 0.812500 0.625000
+0.187500 0.812500 0.625000
+0.125000 0.875000 0.625000
+0.187500 0.875000 0.625000
+0.125000 0.812500 0.687500
+0.187500 0.812500 0.687500
+0.125000 0.875000 0.687500
+0.187500 0.875000 0.687500
+0.187500 0.812500 0.625000
+0.250000 0.812500 0.625000
+0.187500 0.875000 0.625000
+0.250000 0.875000 0.625000
+0.187500 0.812500 0.687500
+0.250000 0.812500 0.687500
+0.187500 0.875000 0.687500
+0.250000 0.875000 0.687500
+0.125000 0.750000 0.687500
+0.187500 0.750000 0.687500
+0.125000 0.812500 0.687500
+0.187500 0.812500 0.687500
+0.125000 0.750000 0.750000
+0.187500 0.750000 0.750000
+0.125000 0.812500 0.750000
+0.187500 0.812500 0.750000
+0.187500 0.750000 0.687500
+0.250000 0.750000 0.687500
+0.187500 0.812500 0.687500
+0.250000 0.812500 0.687500
+0.187500 0.750000 0.750000
+0.250000 0.750000 0.750000
+0.187500 0.812500 0.750000
+0.250000 0.812500 0.750000
+0.125000 0.812500 0.687500
+0.187500 0.812500 0.687500
+0.125000 0.875000 0.687500
+0.187500 0.875000 0.687500
+0.125000 0.812500 0.750000
+0.187500 0.812500 0.750000
+0.125000 0.875000 0.750000
+0.187500 0.875000 0.750000
+0.187500 0.812500 0.687500
+0.250000 0.812500 0.687500
+0.187500 0.875000 0.687500
+0.250000 0.875000 0.687500
+0.187500 0.812500 0.750000
+0.250000 0.812500 0.750000
+0.187500 0.875000 0.750000
+0.250000 0.875000 0.750000
+0.250000 0.875000 0.625000
+0.312500 0.875000 0.625000
+0.250000 0.937500 0.625000
+0.312500 0.937500 0.625000
+0.250000 0.875000 0.687500
+0.312500 0.875000 0.687500
+0.250000 0.937500 0.687500
+0.312500 0.937500 0.687500
+0.312500 0.875000 0.625000
+0.375000 0.875000 0.625000
+0.312500 0.937500 0.625000
+0.375000 0.937500 0.625000
+0.312500 0.875000 0.687500
+0.375000 0.875000 0.687500
+0.312500 0.937500 0.687500
+0.375000 0.937500 0.687500
+0.250000 0.937500 0.625000
+0.312500 0.937500 0.625000
+0.250000 1.00000 0.625000
+0.312500 1.00000 0.625000
+0.250000 0.937500 0.687500
+0.312500 0.937500 0.687500
+0.250000 1.00000 0.687500
+0.312500 1.00000 0.687500
+0.312500 0.937500 0.625000
+0.375000 0.937500 0.625000
+0.312500 1.00000 0.625000
+0.375000 1.00000 0.625000
+0.312500 0.937500 0.687500
+0.375000 0.937500 0.687500
+0.312500 1.00000 0.687500
+0.375000 1.00000 0.687500
+0.250000 0.875000 0.687500
+0.312500 0.875000 0.687500
+0.250000 0.937500 0.687500
+0.312500 0.937500 0.687500
+0.250000 0.875000 0.750000
+0.312500 0.875000 0.750000
+0.250000 0.937500 0.750000
+0.312500 0.937500 0.750000
+0.312500 0.875000 0.687500
+0.375000 0.875000 0.687500
+0.312500 0.937500 0.687500
+0.375000 0.937500 0.687500
+0.312500 0.875000 0.750000
+0.375000 0.875000 0.750000
+0.312500 0.937500 0.750000
+0.375000 0.937500 0.750000
+0.250000 0.937500 0.687500
+0.312500 0.937500 0.687500
+0.250000 1.00000 0.687500
+0.312500 1.00000 0.687500
+0.250000 0.937500 0.750000
+0.312500 0.937500 0.750000
+0.250000 1.00000 0.750000
+0.312500 1.00000 0.750000
+0.312500 0.937500 0.687500
+0.375000 0.937500 0.687500
+0.312500 1.00000 0.687500
+0.375000 1.00000 0.687500
+0.312500 0.937500 0.750000
+0.375000 0.937500 0.750000
+0.312500 1.00000 0.750000
+0.375000 1.00000 0.750000
+0.625000 0.875000 0.625000
+0.687500 0.875000 0.625000
+0.625000 0.937500 0.625000
+0.687500 0.937500 0.625000
+0.625000 0.875000 0.687500
+0.687500 0.875000 0.687500
+0.625000 0.937500 0.687500
+0.687500 0.937500 0.687500
+0.687500 0.875000 0.625000
+0.750000 0.875000 0.625000
+0.687500 0.937500 0.625000
+0.750000 0.937500 0.625000
+0.687500 0.875000 0.687500
+0.750000 0.875000 0.687500
+0.687500 0.937500 0.687500
+0.750000 0.937500 0.687500
+0.625000 0.937500 0.625000
+0.687500 0.937500 0.625000
+0.625000 1.00000 0.625000
+0.687500 1.00000 0.625000
+0.625000 0.937500 0.687500
+0.687500 0.937500 0.687500
+0.625000 1.00000 0.687500
+0.687500 1.00000 0.687500
+0.687500 0.937500 0.625000
+0.750000 0.937500 0.625000
+0.687500 1.00000 0.625000
+0.750000 1.00000 0.625000
+0.687500 0.937500 0.687500
+0.750000 0.937500 0.687500
+0.687500 1.00000 0.687500
+0.750000 1.00000 0.687500
+0.625000 0.875000 0.687500
+0.687500 0.875000 0.687500
+0.625000 0.937500 0.687500
+0.687500 0.937500 0.687500
+0.625000 0.875000 0.750000
+0.687500 0.875000 0.750000
+0.625000 0.937500 0.750000
+0.687500 0.937500 0.750000
+0.687500 0.875000 0.687500
+0.750000 0.875000 0.687500
+0.687500 0.937500 0.687500
+0.750000 0.937500 0.687500
+0.687500 0.875000 0.750000
+0.750000 0.875000 0.750000
+0.687500 0.937500 0.750000
+0.750000 0.937500 0.750000
+0.625000 0.937500 0.687500
+0.687500 0.937500 0.687500
+0.625000 1.00000 0.687500
+0.687500 1.00000 0.687500
+0.625000 0.937500 0.750000
+0.687500 0.937500 0.750000
+0.625000 1.00000 0.750000
+0.687500 1.00000 0.750000
+0.687500 0.937500 0.687500
+0.750000 0.937500 0.687500
+0.687500 1.00000 0.687500
+0.750000 1.00000 0.687500
+0.687500 0.937500 0.750000
+0.750000 0.937500 0.750000
+0.687500 1.00000 0.750000
+0.750000 1.00000 0.750000
+0.250000 0.00000 0.375000
+0.281250 0.00000 0.375000
+0.250000 0.0312500 0.375000
+0.281250 0.0312500 0.375000
+0.250000 0.00000 0.406250
+0.281250 0.00000 0.406250
+0.250000 0.0312500 0.406250
+0.281250 0.0312500 0.406250
+0.281250 0.00000 0.375000
+0.312500 0.00000 0.375000
+0.281250 0.0312500 0.375000
+0.312500 0.0312500 0.375000
+0.281250 0.00000 0.406250
+0.312500 0.00000 0.406250
+0.281250 0.0312500 0.406250
+0.312500 0.0312500 0.406250
+0.250000 0.0312500 0.375000
+0.281250 0.0312500 0.375000
+0.250000 0.0625000 0.375000
+0.281250 0.0625000 0.375000
+0.250000 0.0312500 0.406250
+0.281250 0.0312500 0.406250
+0.250000 0.0625000 0.406250
+0.281250 0.0625000 0.406250
+0.281250 0.0312500 0.375000
+0.312500 0.0312500 0.375000
+0.281250 0.0625000 0.375000
+0.312500 0.0625000 0.375000
+0.281250 0.0312500 0.406250
+0.312500 0.0312500 0.406250
+0.281250 0.0625000 0.406250
+0.312500 0.0625000 0.406250
+0.250000 0.00000 0.406250
+0.281250 0.00000 0.406250
+0.250000 0.0312500 0.406250
+0.281250 0.0312500 0.406250
+0.250000 0.00000 0.437500
+0.281250 0.00000 0.437500
+0.250000 0.0312500 0.437500
+0.281250 0.0312500 0.437500
+0.281250 0.00000 0.406250
+0.312500 0.00000 0.406250
+0.281250 0.0312500 0.406250
+0.312500 0.0312500 0.406250
+0.281250 0.00000 0.437500
+0.312500 0.00000 0.437500
+0.281250 0.0312500 0.437500
+0.312500 0.0312500 0.437500
+0.250000 0.0312500 0.406250
+0.281250 0.0312500 0.406250
+0.250000 0.0625000 0.406250
+0.281250 0.0625000 0.406250
+0.250000 0.0312500 0.437500
+0.281250 0.0312500 0.437500
+0.250000 0.0625000 0.437500
+0.281250 0.0625000 0.437500
+0.281250 0.0312500 0.406250
+0.312500 0.0312500 0.406250
+0.281250 0.0625000 0.406250
+0.312500 0.0625000 0.406250
+0.281250 0.0312500 0.437500
+0.312500 0.0312500 0.437500
+0.281250 0.0625000 0.437500
+0.312500 0.0625000 0.437500
+0.687500 0.250000 0.375000
+0.718750 0.250000 0.375000
+0.687500 0.281250 0.375000
+0.718750 0.281250 0.375000
+0.687500 0.250000 0.406250
+0.718750 0.250000 0.406250
+0.687500 0.281250 0.406250
+0.718750 0.281250 0.406250
+0.718750 0.250000 0.375000
+0.750000 0.250000 0.375000
+0.718750 0.281250 0.375000
+0.750000 0.281250 0.375000
+0.718750 0.250000 0.406250
+0.750000 0.250000 0.406250
+0.718750 0.281250 0.406250
+0.750000 0.281250 0.406250
+0.687500 0.281250 0.375000
+0.718750 0.281250 0.375000
+0.687500 0.312500 0.375000
+0.718750 0.312500 0.375000
+0.687500 0.281250 0.406250
+0.718750 0.281250 0.406250
+0.687500 0.312500 0.406250
+0.718750 0.312500 0.406250
+0.718750 0.281250 0.375000
+0.750000 0.281250 0.375000
+0.718750 0.312500 0.375000
+0.750000 0.312500 0.375000
+0.718750 0.281250 0.406250
+0.750000 0.281250 0.406250
+0.718750 0.312500 0.406250
+0.750000 0.312500 0.406250
+0.687500 0.250000 0.406250
+0.718750 0.250000 0.406250
+0.687500 0.281250 0.406250
+0.718750 0.281250 0.406250
+0.687500 0.250000 0.437500
+0.718750 0.250000 0.437500
+0.687500 0.281250 0.437500
+0.718750 0.281250 0.437500
+0.718750 0.250000 0.406250
+0.750000 0.250000 0.406250
+0.718750 0.281250 0.406250
+0.750000 0.281250 0.406250
+0.718750 0.250000 0.437500
+0.750000 0.250000 0.437500
+0.718750 0.281250 0.437500
+0.750000 0.281250 0.437500
+0.687500 0.281250 0.406250
+0.718750 0.281250 0.406250
+0.687500 0.312500 0.406250
+0.718750 0.312500 0.406250
+0.687500 0.281250 0.437500
+0.718750 0.281250 0.437500
+0.687500 0.312500 0.437500
+0.718750 0.312500 0.437500
+0.718750 0.281250 0.406250
+0.750000 0.281250 0.406250
+0.718750 0.312500 0.406250
+0.750000 0.312500 0.406250
+0.718750 0.281250 0.437500
+0.750000 0.281250 0.437500
+0.718750 0.312500 0.437500
+0.750000 0.312500 0.437500
+0.250000 0.937500 0.375000
+0.281250 0.937500 0.375000
+0.250000 0.968750 0.375000
+0.281250 0.968750 0.375000
+0.250000 0.937500 0.406250
+0.281250 0.937500 0.406250
+0.250000 0.968750 0.406250
+0.281250 0.968750 0.406250
+0.281250 0.937500 0.375000
+0.312500 0.937500 0.375000
+0.281250 0.968750 0.375000
+0.312500 0.968750 0.375000
+0.281250 0.937500 0.406250
+0.312500 0.937500 0.406250
+0.281250 0.968750 0.406250
+0.312500 0.968750 0.406250
+0.250000 0.968750 0.375000
+0.281250 0.968750 0.375000
+0.250000 1.00000 0.375000
+0.281250 1.00000 0.375000
+0.250000 0.968750 0.406250
+0.281250 0.968750 0.406250
+0.250000 1.00000 0.406250
+0.281250 1.00000 0.406250
+0.281250 0.968750 0.375000
+0.312500 0.968750 0.375000
+0.281250 1.00000 0.375000
+0.312500 1.00000 0.375000
+0.281250 0.968750 0.406250
+0.312500 0.968750 0.406250
+0.281250 1.00000 0.406250
+0.312500 1.00000 0.406250
+0.250000 0.937500 0.406250
+0.281250 0.937500 0.406250
+0.250000 0.968750 0.406250
+0.281250 0.968750 0.406250
+0.250000 0.937500 0.437500
+0.281250 0.937500 0.437500
+0.250000 0.968750 0.437500
+0.281250 0.968750 0.437500
+0.281250 0.937500 0.406250
+0.312500 0.937500 0.406250
+0.281250 0.968750 0.406250
+0.312500 0.968750 0.406250
+0.281250 0.937500 0.437500
+0.312500 0.937500 0.437500
+0.281250 0.968750 0.437500
+0.312500 0.968750 0.437500
+0.250000 0.968750 0.406250
+0.281250 0.968750 0.406250
+0.250000 1.00000 0.406250
+0.281250 1.00000 0.406250
+0.250000 0.968750 0.437500
+0.281250 0.968750 0.437500
+0.250000 1.00000 0.437500
+0.281250 1.00000 0.437500
+0.281250 0.968750 0.406250
+0.312500 0.968750 0.406250
+0.281250 1.00000 0.406250
+0.312500 1.00000 0.406250
+0.281250 0.968750 0.437500
+0.312500 0.968750 0.437500
+0.281250 1.00000 0.437500
+0.312500 1.00000 0.437500
+
+CELLS 736 6624
+8      0       1       3       2       4       5       7       6
+8      8       9       11      10      12      13      15      14
+8      16      17      19      18      20      21      23      22
+8      24      25      27      26      28      29      31      30
+8      32      33      35      34      36      37      39      38
+8      40      41      43      42      44      45      47      46
+8      48      49      51      50      52      53      55      54
+8      56      57      59      58      60      61      63      62
+8      64      65      67      66      68      69      71      70
+8      72      73      75      74      76      77      79      78
+8      80      81      83      82      84      85      87      86
+8      88      89      91      90      92      93      95      94
+8      96      97      99      98      100     101     103     102
+8      104     105     107     106     108     109     111     110
+8      112     113     115     114     116     117     119     118
+8      120     121     123     122     124     125     127     126
+8      128     129     131     130     132     133     135     134
+8      136     137     139     138     140     141     143     142
+8      144     145     147     146     148     149     151     150
+8      152     153     155     154     156     157     159     158
+8      160     161     163     162     164     165     167     166
+8      168     169     171     170     172     173     175     174
+8      176     177     179     178     180     181     183     182
+8      184     185     187     186     188     189     191     190
+8      192     193     195     194     196     197     199     198
+8      200     201     203     202     204     205     207     206
+8      208     209     211     210     212     213     215     214
+8      216     217     219     218     220     221     223     222
+8      224     225     227     226     228     229     231     230
+8      232     233     235     234     236     237     239     238
+8      240     241     243     242     244     245     247     246
+8      248     249     251     250     252     253     255     254
+8      256     257     259     258     260     261     263     262
+8      264     265     267     266     268     269     271     270
+8      272     273     275     274     276     277     279     278
+8      280     281     283     282     284     285     287     286
+8      288     289     291     290     292     293     295     294
+8      296     297     299     298     300     301     303     302
+8      304     305     307     306     308     309     311     310
+8      312     313     315     314     316     317     319     318
+8      320     321     323     322     324     325     327     326
+8      328     329     331     330     332     333     335     334
+8      336     337     339     338     340     341     343     342
+8      344     345     347     346     348     349     351     350
+8      352     353     355     354     356     357     359     358
+8      360     361     363     362     364     365     367     366
+8      368     369     371     370     372     373     375     374
+8      376     377     379     378     380     381     383     382
+8      384     385     387     386     388     389     391     390
+8      392     393     395     394     396     397     399     398
+8      400     401     403     402     404     405     407     406
+8      408     409     411     410     412     413     415     414
+8      416     417     419     418     420     421     423     422
+8      424     425     427     426     428     429     431     430
+8      432     433     435     434     436     437     439     438
+8      440     441     443     442     444     445     447     446
+8      448     449     451     450     452     453     455     454
+8      456     457     459     458     460     461     463     462
+8      464     465     467     466     468     469     471     470
+8      472     473     475     474     476     477     479     478
+8      480     481     483     482     484     485     487     486
+8      488     489     491     490     492     493     495     494
+8      496     497     499     498     500     501     503     502
+8      504     505     507     506     508     509     511     510
+8      512     513     515     514     516     517     519     518
+8      520     521     523     522     524     525     527     526
+8      528     529     531     530     532     533     535     534
+8      536     537     539     538     540     541     543     542
+8      544     545     547     546     548     549     551     550
+8      552     553     555     554     556     557     559     558
+8      560     561     563     562     564     565     567     566
+8      568     569     571     570     572     573     575     574
+8      576     577     579     578     580     581     583     582
+8      584     585     587     586     588     589     591     590
+8      592     593     595     594     596     597     599     598
+8      600     601     603     602     604     605     607     606
+8      608     609     611     610     612     613     615     614
+8      616     617     619     618     620     621     623     622
+8      624     625     627     626     628     629     631     630
+8      632     633     635     634     636     637     639     638
+8      640     641     643     642     644     645     647     646
+8      648     649     651     650     652     653     655     654
+8      656     657     659     658     660     661     663     662
+8      664     665     667     666     668     669     671     670
+8      672     673     675     674     676     677     679     678
+8      680     681     683     682     684     685     687     686
+8      688     689     691     690     692     693     695     694
+8      696     697     699     698     700     701     703     702
+8      704     705     707     706     708     709     711     710
+8      712     713     715     714     716     717     719     718
+8      720     721     723     722     724     725     727     726
+8      728     729     731     730     732     733     735     734
+8      736     737     739     738     740     741     743     742
+8      744     745     747     746     748     749     751     750
+8      752     753     755     754     756     757     759     758
+8      760     761     763     762     764     765     767     766
+8      768     769     771     770     772     773     775     774
+8      776     777     779     778     780     781     783     782
+8      784     785     787     786     788     789     791     790
+8      792     793     795     794     796     797     799     798
+8      800     801     803     802     804     805     807     806
+8      808     809     811     810     812     813     815     814
+8      816     817     819     818     820     821     823     822
+8      824     825     827     826     828     829     831     830
+8      832     833     835     834     836     837     839     838
+8      840     841     843     842     844     845     847     846
+8      848     849     851     850     852     853     855     854
+8      856     857     859     858     860     861     863     862
+8      864     865     867     866     868     869     871     870
+8      872     873     875     874     876     877     879     878
+8      880     881     883     882     884     885     887     886
+8      888     889     891     890     892     893     895     894
+8      896     897     899     898     900     901     903     902
+8      904     905     907     906     908     909     911     910
+8      912     913     915     914     916     917     919     918
+8      920     921     923     922     924     925     927     926
+8      928     929     931     930     932     933     935     934
+8      936     937     939     938     940     941     943     942
+8      944     945     947     946     948     949     951     950
+8      952     953     955     954     956     957     959     958
+8      960     961     963     962     964     965     967     966
+8      968     969     971     970     972     973     975     974
+8      976     977     979     978     980     981     983     982
+8      984     985     987     986     988     989     991     990
+8      992     993     995     994     996     997     999     998
+8      1000    1001    1003    1002    1004    1005    1007    1006
+8      1008    1009    1011    1010    1012    1013    1015    1014
+8      1016    1017    1019    1018    1020    1021    1023    1022
+8      1024    1025    1027    1026    1028    1029    1031    1030
+8      1032    1033    1035    1034    1036    1037    1039    1038
+8      1040    1041    1043    1042    1044    1045    1047    1046
+8      1048    1049    1051    1050    1052    1053    1055    1054
+8      1056    1057    1059    1058    1060    1061    1063    1062
+8      1064    1065    1067    1066    1068    1069    1071    1070
+8      1072    1073    1075    1074    1076    1077    1079    1078
+8      1080    1081    1083    1082    1084    1085    1087    1086
+8      1088    1089    1091    1090    1092    1093    1095    1094
+8      1096    1097    1099    1098    1100    1101    1103    1102
+8      1104    1105    1107    1106    1108    1109    1111    1110
+8      1112    1113    1115    1114    1116    1117    1119    1118
+8      1120    1121    1123    1122    1124    1125    1127    1126
+8      1128    1129    1131    1130    1132    1133    1135    1134
+8      1136    1137    1139    1138    1140    1141    1143    1142
+8      1144    1145    1147    1146    1148    1149    1151    1150
+8      1152    1153    1155    1154    1156    1157    1159    1158
+8      1160    1161    1163    1162    1164    1165    1167    1166
+8      1168    1169    1171    1170    1172    1173    1175    1174
+8      1176    1177    1179    1178    1180    1181    1183    1182
+8      1184    1185    1187    1186    1188    1189    1191    1190
+8      1192    1193    1195    1194    1196    1197    1199    1198
+8      1200    1201    1203    1202    1204    1205    1207    1206
+8      1208    1209    1211    1210    1212    1213    1215    1214
+8      1216    1217    1219    1218    1220    1221    1223    1222
+8      1224    1225    1227    1226    1228    1229    1231    1230
+8      1232    1233    1235    1234    1236    1237    1239    1238
+8      1240    1241    1243    1242    1244    1245    1247    1246
+8      1248    1249    1251    1250    1252    1253    1255    1254
+8      1256    1257    1259    1258    1260    1261    1263    1262
+8      1264    1265    1267    1266    1268    1269    1271    1270
+8      1272    1273    1275    1274    1276    1277    1279    1278
+8      1280    1281    1283    1282    1284    1285    1287    1286
+8      1288    1289    1291    1290    1292    1293    1295    1294
+8      1296    1297    1299    1298    1300    1301    1303    1302
+8      1304    1305    1307    1306    1308    1309    1311    1310
+8      1312    1313    1315    1314    1316    1317    1319    1318
+8      1320    1321    1323    1322    1324    1325    1327    1326
+8      1328    1329    1331    1330    1332    1333    1335    1334
+8      1336    1337    1339    1338    1340    1341    1343    1342
+8      1344    1345    1347    1346    1348    1349    1351    1350
+8      1352    1353    1355    1354    1356    1357    1359    1358
+8      1360    1361    1363    1362    1364    1365    1367    1366
+8      1368    1369    1371    1370    1372    1373    1375    1374
+8      1376    1377    1379    1378    1380    1381    1383    1382
+8      1384    1385    1387    1386    1388    1389    1391    1390
+8      1392    1393    1395    1394    1396    1397    1399    1398
+8      1400    1401    1403    1402    1404    1405    1407    1406
+8      1408    1409    1411    1410    1412    1413    1415    1414
+8      1416    1417    1419    1418    1420    1421    1423    1422
+8      1424    1425    1427    1426    1428    1429    1431    1430
+8      1432    1433    1435    1434    1436    1437    1439    1438
+8      1440    1441    1443    1442    1444    1445    1447    1446
+8      1448    1449    1451    1450    1452    1453    1455    1454
+8      1456    1457    1459    1458    1460    1461    1463    1462
+8      1464    1465    1467    1466    1468    1469    1471    1470
+8      1472    1473    1475    1474    1476    1477    1479    1478
+8      1480    1481    1483    1482    1484    1485    1487    1486
+8      1488    1489    1491    1490    1492    1493    1495    1494
+8      1496    1497    1499    1498    1500    1501    1503    1502
+8      1504    1505    1507    1506    1508    1509    1511    1510
+8      1512    1513    1515    1514    1516    1517    1519    1518
+8      1520    1521    1523    1522    1524    1525    1527    1526
+8      1528    1529    1531    1530    1532    1533    1535    1534
+8      1536    1537    1539    1538    1540    1541    1543    1542
+8      1544    1545    1547    1546    1548    1549    1551    1550
+8      1552    1553    1555    1554    1556    1557    1559    1558
+8      1560    1561    1563    1562    1564    1565    1567    1566
+8      1568    1569    1571    1570    1572    1573    1575    1574
+8      1576    1577    1579    1578    1580    1581    1583    1582
+8      1584    1585    1587    1586    1588    1589    1591    1590
+8      1592    1593    1595    1594    1596    1597    1599    1598
+8      1600    1601    1603    1602    1604    1605    1607    1606
+8      1608    1609    1611    1610    1612    1613    1615    1614
+8      1616    1617    1619    1618    1620    1621    1623    1622
+8      1624    1625    1627    1626    1628    1629    1631    1630
+8      1632    1633    1635    1634    1636    1637    1639    1638
+8      1640    1641    1643    1642    1644    1645    1647    1646
+8      1648    1649    1651    1650    1652    1653    1655    1654
+8      1656    1657    1659    1658    1660    1661    1663    1662
+8      1664    1665    1667    1666    1668    1669    1671    1670
+8      1672    1673    1675    1674    1676    1677    1679    1678
+8      1680    1681    1683    1682    1684    1685    1687    1686
+8      1688    1689    1691    1690    1692    1693    1695    1694
+8      1696    1697    1699    1698    1700    1701    1703    1702
+8      1704    1705    1707    1706    1708    1709    1711    1710
+8      1712    1713    1715    1714    1716    1717    1719    1718
+8      1720    1721    1723    1722    1724    1725    1727    1726
+8      1728    1729    1731    1730    1732    1733    1735    1734
+8      1736    1737    1739    1738    1740    1741    1743    1742
+8      1744    1745    1747    1746    1748    1749    1751    1750
+8      1752    1753    1755    1754    1756    1757    1759    1758
+8      1760    1761    1763    1762    1764    1765    1767    1766
+8      1768    1769    1771    1770    1772    1773    1775    1774
+8      1776    1777    1779    1778    1780    1781    1783    1782
+8      1784    1785    1787    1786    1788    1789    1791    1790
+8      1792    1793    1795    1794    1796    1797    1799    1798
+8      1800    1801    1803    1802    1804    1805    1807    1806
+8      1808    1809    1811    1810    1812    1813    1815    1814
+8      1816    1817    1819    1818    1820    1821    1823    1822
+8      1824    1825    1827    1826    1828    1829    1831    1830
+8      1832    1833    1835    1834    1836    1837    1839    1838
+8      1840    1841    1843    1842    1844    1845    1847    1846
+8      1848    1849    1851    1850    1852    1853    1855    1854
+8      1856    1857    1859    1858    1860    1861    1863    1862
+8      1864    1865    1867    1866    1868    1869    1871    1870
+8      1872    1873    1875    1874    1876    1877    1879    1878
+8      1880    1881    1883    1882    1884    1885    1887    1886
+8      1888    1889    1891    1890    1892    1893    1895    1894
+8      1896    1897    1899    1898    1900    1901    1903    1902
+8      1904    1905    1907    1906    1908    1909    1911    1910
+8      1912    1913    1915    1914    1916    1917    1919    1918
+8      1920    1921    1923    1922    1924    1925    1927    1926
+8      1928    1929    1931    1930    1932    1933    1935    1934
+8      1936    1937    1939    1938    1940    1941    1943    1942
+8      1944    1945    1947    1946    1948    1949    1951    1950
+8      1952    1953    1955    1954    1956    1957    1959    1958
+8      1960    1961    1963    1962    1964    1965    1967    1966
+8      1968    1969    1971    1970    1972    1973    1975    1974
+8      1976    1977    1979    1978    1980    1981    1983    1982
+8      1984    1985    1987    1986    1988    1989    1991    1990
+8      1992    1993    1995    1994    1996    1997    1999    1998
+8      2000    2001    2003    2002    2004    2005    2007    2006
+8      2008    2009    2011    2010    2012    2013    2015    2014
+8      2016    2017    2019    2018    2020    2021    2023    2022
+8      2024    2025    2027    2026    2028    2029    2031    2030
+8      2032    2033    2035    2034    2036    2037    2039    2038
+8      2040    2041    2043    2042    2044    2045    2047    2046
+8      2048    2049    2051    2050    2052    2053    2055    2054
+8      2056    2057    2059    2058    2060    2061    2063    2062
+8      2064    2065    2067    2066    2068    2069    2071    2070
+8      2072    2073    2075    2074    2076    2077    2079    2078
+8      2080    2081    2083    2082    2084    2085    2087    2086
+8      2088    2089    2091    2090    2092    2093    2095    2094
+8      2096    2097    2099    2098    2100    2101    2103    2102
+8      2104    2105    2107    2106    2108    2109    2111    2110
+8      2112    2113    2115    2114    2116    2117    2119    2118
+8      2120    2121    2123    2122    2124    2125    2127    2126
+8      2128    2129    2131    2130    2132    2133    2135    2134
+8      2136    2137    2139    2138    2140    2141    2143    2142
+8      2144    2145    2147    2146    2148    2149    2151    2150
+8      2152    2153    2155    2154    2156    2157    2159    2158
+8      2160    2161    2163    2162    2164    2165    2167    2166
+8      2168    2169    2171    2170    2172    2173    2175    2174
+8      2176    2177    2179    2178    2180    2181    2183    2182
+8      2184    2185    2187    2186    2188    2189    2191    2190
+8      2192    2193    2195    2194    2196    2197    2199    2198
+8      2200    2201    2203    2202    2204    2205    2207    2206
+8      2208    2209    2211    2210    2212    2213    2215    2214
+8      2216    2217    2219    2218    2220    2221    2223    2222
+8      2224    2225    2227    2226    2228    2229    2231    2230
+8      2232    2233    2235    2234    2236    2237    2239    2238
+8      2240    2241    2243    2242    2244    2245    2247    2246
+8      2248    2249    2251    2250    2252    2253    2255    2254
+8      2256    2257    2259    2258    2260    2261    2263    2262
+8      2264    2265    2267    2266    2268    2269    2271    2270
+8      2272    2273    2275    2274    2276    2277    2279    2278
+8      2280    2281    2283    2282    2284    2285    2287    2286
+8      2288    2289    2291    2290    2292    2293    2295    2294
+8      2296    2297    2299    2298    2300    2301    2303    2302
+8      2304    2305    2307    2306    2308    2309    2311    2310
+8      2312    2313    2315    2314    2316    2317    2319    2318
+8      2320    2321    2323    2322    2324    2325    2327    2326
+8      2328    2329    2331    2330    2332    2333    2335    2334
+8      2336    2337    2339    2338    2340    2341    2343    2342
+8      2344    2345    2347    2346    2348    2349    2351    2350
+8      2352    2353    2355    2354    2356    2357    2359    2358
+8      2360    2361    2363    2362    2364    2365    2367    2366
+8      2368    2369    2371    2370    2372    2373    2375    2374
+8      2376    2377    2379    2378    2380    2381    2383    2382
+8      2384    2385    2387    2386    2388    2389    2391    2390
+8      2392    2393    2395    2394    2396    2397    2399    2398
+8      2400    2401    2403    2402    2404    2405    2407    2406
+8      2408    2409    2411    2410    2412    2413    2415    2414
+8      2416    2417    2419    2418    2420    2421    2423    2422
+8      2424    2425    2427    2426    2428    2429    2431    2430
+8      2432    2433    2435    2434    2436    2437    2439    2438
+8      2440    2441    2443    2442    2444    2445    2447    2446
+8      2448    2449    2451    2450    2452    2453    2455    2454
+8      2456    2457    2459    2458    2460    2461    2463    2462
+8      2464    2465    2467    2466    2468    2469    2471    2470
+8      2472    2473    2475    2474    2476    2477    2479    2478
+8      2480    2481    2483    2482    2484    2485    2487    2486
+8      2488    2489    2491    2490    2492    2493    2495    2494
+8      2496    2497    2499    2498    2500    2501    2503    2502
+8      2504    2505    2507    2506    2508    2509    2511    2510
+8      2512    2513    2515    2514    2516    2517    2519    2518
+8      2520    2521    2523    2522    2524    2525    2527    2526
+8      2528    2529    2531    2530    2532    2533    2535    2534
+8      2536    2537    2539    2538    2540    2541    2543    2542
+8      2544    2545    2547    2546    2548    2549    2551    2550
+8      2552    2553    2555    2554    2556    2557    2559    2558
+8      2560    2561    2563    2562    2564    2565    2567    2566
+8      2568    2569    2571    2570    2572    2573    2575    2574
+8      2576    2577    2579    2578    2580    2581    2583    2582
+8      2584    2585    2587    2586    2588    2589    2591    2590
+8      2592    2593    2595    2594    2596    2597    2599    2598
+8      2600    2601    2603    2602    2604    2605    2607    2606
+8      2608    2609    2611    2610    2612    2613    2615    2614
+8      2616    2617    2619    2618    2620    2621    2623    2622
+8      2624    2625    2627    2626    2628    2629    2631    2630
+8      2632    2633    2635    2634    2636    2637    2639    2638
+8      2640    2641    2643    2642    2644    2645    2647    2646
+8      2648    2649    2651    2650    2652    2653    2655    2654
+8      2656    2657    2659    2658    2660    2661    2663    2662
+8      2664    2665    2667    2666    2668    2669    2671    2670
+8      2672    2673    2675    2674    2676    2677    2679    2678
+8      2680    2681    2683    2682    2684    2685    2687    2686
+8      2688    2689    2691    2690    2692    2693    2695    2694
+8      2696    2697    2699    2698    2700    2701    2703    2702
+8      2704    2705    2707    2706    2708    2709    2711    2710
+8      2712    2713    2715    2714    2716    2717    2719    2718
+8      2720    2721    2723    2722    2724    2725    2727    2726
+8      2728    2729    2731    2730    2732    2733    2735    2734
+8      2736    2737    2739    2738    2740    2741    2743    2742
+8      2744    2745    2747    2746    2748    2749    2751    2750
+8      2752    2753    2755    2754    2756    2757    2759    2758
+8      2760    2761    2763    2762    2764    2765    2767    2766
+8      2768    2769    2771    2770    2772    2773    2775    2774
+8      2776    2777    2779    2778    2780    2781    2783    2782
+8      2784    2785    2787    2786    2788    2789    2791    2790
+8      2792    2793    2795    2794    2796    2797    2799    2798
+8      2800    2801    2803    2802    2804    2805    2807    2806
+8      2808    2809    2811    2810    2812    2813    2815    2814
+8      2816    2817    2819    2818    2820    2821    2823    2822
+8      2824    2825    2827    2826    2828    2829    2831    2830
+8      2832    2833    2835    2834    2836    2837    2839    2838
+8      2840    2841    2843    2842    2844    2845    2847    2846
+8      2848    2849    2851    2850    2852    2853    2855    2854
+8      2856    2857    2859    2858    2860    2861    2863    2862
+8      2864    2865    2867    2866    2868    2869    2871    2870
+8      2872    2873    2875    2874    2876    2877    2879    2878
+8      2880    2881    2883    2882    2884    2885    2887    2886
+8      2888    2889    2891    2890    2892    2893    2895    2894
+8      2896    2897    2899    2898    2900    2901    2903    2902
+8      2904    2905    2907    2906    2908    2909    2911    2910
+8      2912    2913    2915    2914    2916    2917    2919    2918
+8      2920    2921    2923    2922    2924    2925    2927    2926
+8      2928    2929    2931    2930    2932    2933    2935    2934
+8      2936    2937    2939    2938    2940    2941    2943    2942
+8      2944    2945    2947    2946    2948    2949    2951    2950
+8      2952    2953    2955    2954    2956    2957    2959    2958
+8      2960    2961    2963    2962    2964    2965    2967    2966
+8      2968    2969    2971    2970    2972    2973    2975    2974
+8      2976    2977    2979    2978    2980    2981    2983    2982
+8      2984    2985    2987    2986    2988    2989    2991    2990
+8      2992    2993    2995    2994    2996    2997    2999    2998
+8      3000    3001    3003    3002    3004    3005    3007    3006
+8      3008    3009    3011    3010    3012    3013    3015    3014
+8      3016    3017    3019    3018    3020    3021    3023    3022
+8      3024    3025    3027    3026    3028    3029    3031    3030
+8      3032    3033    3035    3034    3036    3037    3039    3038
+8      3040    3041    3043    3042    3044    3045    3047    3046
+8      3048    3049    3051    3050    3052    3053    3055    3054
+8      3056    3057    3059    3058    3060    3061    3063    3062
+8      3064    3065    3067    3066    3068    3069    3071    3070
+8      3072    3073    3075    3074    3076    3077    3079    3078
+8      3080    3081    3083    3082    3084    3085    3087    3086
+8      3088    3089    3091    3090    3092    3093    3095    3094
+8      3096    3097    3099    3098    3100    3101    3103    3102
+8      3104    3105    3107    3106    3108    3109    3111    3110
+8      3112    3113    3115    3114    3116    3117    3119    3118
+8      3120    3121    3123    3122    3124    3125    3127    3126
+8      3128    3129    3131    3130    3132    3133    3135    3134
+8      3136    3137    3139    3138    3140    3141    3143    3142
+8      3144    3145    3147    3146    3148    3149    3151    3150
+8      3152    3153    3155    3154    3156    3157    3159    3158
+8      3160    3161    3163    3162    3164    3165    3167    3166
+8      3168    3169    3171    3170    3172    3173    3175    3174
+8      3176    3177    3179    3178    3180    3181    3183    3182
+8      3184    3185    3187    3186    3188    3189    3191    3190
+8      3192    3193    3195    3194    3196    3197    3199    3198
+8      3200    3201    3203    3202    3204    3205    3207    3206
+8      3208    3209    3211    3210    3212    3213    3215    3214
+8      3216    3217    3219    3218    3220    3221    3223    3222
+8      3224    3225    3227    3226    3228    3229    3231    3230
+8      3232    3233    3235    3234    3236    3237    3239    3238
+8      3240    3241    3243    3242    3244    3245    3247    3246
+8      3248    3249    3251    3250    3252    3253    3255    3254
+8      3256    3257    3259    3258    3260    3261    3263    3262
+8      3264    3265    3267    3266    3268    3269    3271    3270
+8      3272    3273    3275    3274    3276    3277    3279    3278
+8      3280    3281    3283    3282    3284    3285    3287    3286
+8      3288    3289    3291    3290    3292    3293    3295    3294
+8      3296    3297    3299    3298    3300    3301    3303    3302
+8      3304    3305    3307    3306    3308    3309    3311    3310
+8      3312    3313    3315    3314    3316    3317    3319    3318
+8      3320    3321    3323    3322    3324    3325    3327    3326
+8      3328    3329    3331    3330    3332    3333    3335    3334
+8      3336    3337    3339    3338    3340    3341    3343    3342
+8      3344    3345    3347    3346    3348    3349    3351    3350
+8      3352    3353    3355    3354    3356    3357    3359    3358
+8      3360    3361    3363    3362    3364    3365    3367    3366
+8      3368    3369    3371    3370    3372    3373    3375    3374
+8      3376    3377    3379    3378    3380    3381    3383    3382
+8      3384    3385    3387    3386    3388    3389    3391    3390
+8      3392    3393    3395    3394    3396    3397    3399    3398
+8      3400    3401    3403    3402    3404    3405    3407    3406
+8      3408    3409    3411    3410    3412    3413    3415    3414
+8      3416    3417    3419    3418    3420    3421    3423    3422
+8      3424    3425    3427    3426    3428    3429    3431    3430
+8      3432    3433    3435    3434    3436    3437    3439    3438
+8      3440    3441    3443    3442    3444    3445    3447    3446
+8      3448    3449    3451    3450    3452    3453    3455    3454
+8      3456    3457    3459    3458    3460    3461    3463    3462
+8      3464    3465    3467    3466    3468    3469    3471    3470
+8      3472    3473    3475    3474    3476    3477    3479    3478
+8      3480    3481    3483    3482    3484    3485    3487    3486
+8      3488    3489    3491    3490    3492    3493    3495    3494
+8      3496    3497    3499    3498    3500    3501    3503    3502
+8      3504    3505    3507    3506    3508    3509    3511    3510
+8      3512    3513    3515    3514    3516    3517    3519    3518
+8      3520    3521    3523    3522    3524    3525    3527    3526
+8      3528    3529    3531    3530    3532    3533    3535    3534
+8      3536    3537    3539    3538    3540    3541    3543    3542
+8      3544    3545    3547    3546    3548    3549    3551    3550
+8      3552    3553    3555    3554    3556    3557    3559    3558
+8      3560    3561    3563    3562    3564    3565    3567    3566
+8      3568    3569    3571    3570    3572    3573    3575    3574
+8      3576    3577    3579    3578    3580    3581    3583    3582
+8      3584    3585    3587    3586    3588    3589    3591    3590
+8      3592    3593    3595    3594    3596    3597    3599    3598
+8      3600    3601    3603    3602    3604    3605    3607    3606
+8      3608    3609    3611    3610    3612    3613    3615    3614
+8      3616    3617    3619    3618    3620    3621    3623    3622
+8      3624    3625    3627    3626    3628    3629    3631    3630
+8      3632    3633    3635    3634    3636    3637    3639    3638
+8      3640    3641    3643    3642    3644    3645    3647    3646
+8      3648    3649    3651    3650    3652    3653    3655    3654
+8      3656    3657    3659    3658    3660    3661    3663    3662
+8      3664    3665    3667    3666    3668    3669    3671    3670
+8      3672    3673    3675    3674    3676    3677    3679    3678
+8      3680    3681    3683    3682    3684    3685    3687    3686
+8      3688    3689    3691    3690    3692    3693    3695    3694
+8      3696    3697    3699    3698    3700    3701    3703    3702
+8      3704    3705    3707    3706    3708    3709    3711    3710
+8      3712    3713    3715    3714    3716    3717    3719    3718
+8      3720    3721    3723    3722    3724    3725    3727    3726
+8      3728    3729    3731    3730    3732    3733    3735    3734
+8      3736    3737    3739    3738    3740    3741    3743    3742
+8      3744    3745    3747    3746    3748    3749    3751    3750
+8      3752    3753    3755    3754    3756    3757    3759    3758
+8      3760    3761    3763    3762    3764    3765    3767    3766
+8      3768    3769    3771    3770    3772    3773    3775    3774
+8      3776    3777    3779    3778    3780    3781    3783    3782
+8      3784    3785    3787    3786    3788    3789    3791    3790
+8      3792    3793    3795    3794    3796    3797    3799    3798
+8      3800    3801    3803    3802    3804    3805    3807    3806
+8      3808    3809    3811    3810    3812    3813    3815    3814
+8      3816    3817    3819    3818    3820    3821    3823    3822
+8      3824    3825    3827    3826    3828    3829    3831    3830
+8      3832    3833    3835    3834    3836    3837    3839    3838
+8      3840    3841    3843    3842    3844    3845    3847    3846
+8      3848    3849    3851    3850    3852    3853    3855    3854
+8      3856    3857    3859    3858    3860    3861    3863    3862
+8      3864    3865    3867    3866    3868    3869    3871    3870
+8      3872    3873    3875    3874    3876    3877    3879    3878
+8      3880    3881    3883    3882    3884    3885    3887    3886
+8      3888    3889    3891    3890    3892    3893    3895    3894
+8      3896    3897    3899    3898    3900    3901    3903    3902
+8      3904    3905    3907    3906    3908    3909    3911    3910
+8      3912    3913    3915    3914    3916    3917    3919    3918
+8      3920    3921    3923    3922    3924    3925    3927    3926
+8      3928    3929    3931    3930    3932    3933    3935    3934
+8      3936    3937    3939    3938    3940    3941    3943    3942
+8      3944    3945    3947    3946    3948    3949    3951    3950
+8      3952    3953    3955    3954    3956    3957    3959    3958
+8      3960    3961    3963    3962    3964    3965    3967    3966
+8      3968    3969    3971    3970    3972    3973    3975    3974
+8      3976    3977    3979    3978    3980    3981    3983    3982
+8      3984    3985    3987    3986    3988    3989    3991    3990
+8      3992    3993    3995    3994    3996    3997    3999    3998
+8      4000    4001    4003    4002    4004    4005    4007    4006
+8      4008    4009    4011    4010    4012    4013    4015    4014
+8      4016    4017    4019    4018    4020    4021    4023    4022
+8      4024    4025    4027    4026    4028    4029    4031    4030
+8      4032    4033    4035    4034    4036    4037    4039    4038
+8      4040    4041    4043    4042    4044    4045    4047    4046
+8      4048    4049    4051    4050    4052    4053    4055    4054
+8      4056    4057    4059    4058    4060    4061    4063    4062
+8      4064    4065    4067    4066    4068    4069    4071    4070
+8      4072    4073    4075    4074    4076    4077    4079    4078
+8      4080    4081    4083    4082    4084    4085    4087    4086
+8      4088    4089    4091    4090    4092    4093    4095    4094
+8      4096    4097    4099    4098    4100    4101    4103    4102
+8      4104    4105    4107    4106    4108    4109    4111    4110
+8      4112    4113    4115    4114    4116    4117    4119    4118
+8      4120    4121    4123    4122    4124    4125    4127    4126
+8      4128    4129    4131    4130    4132    4133    4135    4134
+8      4136    4137    4139    4138    4140    4141    4143    4142
+8      4144    4145    4147    4146    4148    4149    4151    4150
+8      4152    4153    4155    4154    4156    4157    4159    4158
+8      4160    4161    4163    4162    4164    4165    4167    4166
+8      4168    4169    4171    4170    4172    4173    4175    4174
+8      4176    4177    4179    4178    4180    4181    4183    4182
+8      4184    4185    4187    4186    4188    4189    4191    4190
+8      4192    4193    4195    4194    4196    4197    4199    4198
+8      4200    4201    4203    4202    4204    4205    4207    4206
+8      4208    4209    4211    4210    4212    4213    4215    4214
+8      4216    4217    4219    4218    4220    4221    4223    4222
+8      4224    4225    4227    4226    4228    4229    4231    4230
+8      4232    4233    4235    4234    4236    4237    4239    4238
+8      4240    4241    4243    4242    4244    4245    4247    4246
+8      4248    4249    4251    4250    4252    4253    4255    4254
+8      4256    4257    4259    4258    4260    4261    4263    4262
+8      4264    4265    4267    4266    4268    4269    4271    4270
+8      4272    4273    4275    4274    4276    4277    4279    4278
+8      4280    4281    4283    4282    4284    4285    4287    4286
+8      4288    4289    4291    4290    4292    4293    4295    4294
+8      4296    4297    4299    4298    4300    4301    4303    4302
+8      4304    4305    4307    4306    4308    4309    4311    4310
+8      4312    4313    4315    4314    4316    4317    4319    4318
+8      4320    4321    4323    4322    4324    4325    4327    4326
+8      4328    4329    4331    4330    4332    4333    4335    4334
+8      4336    4337    4339    4338    4340    4341    4343    4342
+8      4344    4345    4347    4346    4348    4349    4351    4350
+8      4352    4353    4355    4354    4356    4357    4359    4358
+8      4360    4361    4363    4362    4364    4365    4367    4366
+8      4368    4369    4371    4370    4372    4373    4375    4374
+8      4376    4377    4379    4378    4380    4381    4383    4382
+8      4384    4385    4387    4386    4388    4389    4391    4390
+8      4392    4393    4395    4394    4396    4397    4399    4398
+8      4400    4401    4403    4402    4404    4405    4407    4406
+8      4408    4409    4411    4410    4412    4413    4415    4414
+8      4416    4417    4419    4418    4420    4421    4423    4422
+8      4424    4425    4427    4426    4428    4429    4431    4430
+8      4432    4433    4435    4434    4436    4437    4439    4438
+8      4440    4441    4443    4442    4444    4445    4447    4446
+8      4448    4449    4451    4450    4452    4453    4455    4454
+8      4456    4457    4459    4458    4460    4461    4463    4462
+8      4464    4465    4467    4466    4468    4469    4471    4470
+8      4472    4473    4475    4474    4476    4477    4479    4478
+8      4480    4481    4483    4482    4484    4485    4487    4486
+8      4488    4489    4491    4490    4492    4493    4495    4494
+8      4496    4497    4499    4498    4500    4501    4503    4502
+8      4504    4505    4507    4506    4508    4509    4511    4510
+8      4512    4513    4515    4514    4516    4517    4519    4518
+8      4520    4521    4523    4522    4524    4525    4527    4526
+8      4528    4529    4531    4530    4532    4533    4535    4534
+8      4536    4537    4539    4538    4540    4541    4543    4542
+8      4544    4545    4547    4546    4548    4549    4551    4550
+8      4552    4553    4555    4554    4556    4557    4559    4558
+8      4560    4561    4563    4562    4564    4565    4567    4566
+8      4568    4569    4571    4570    4572    4573    4575    4574
+8      4576    4577    4579    4578    4580    4581    4583    4582
+8      4584    4585    4587    4586    4588    4589    4591    4590
+8      4592    4593    4595    4594    4596    4597    4599    4598
+8      4600    4601    4603    4602    4604    4605    4607    4606
+8      4608    4609    4611    4610    4612    4613    4615    4614
+8      4616    4617    4619    4618    4620    4621    4623    4622
+8      4624    4625    4627    4626    4628    4629    4631    4630
+8      4632    4633    4635    4634    4636    4637    4639    4638
+8      4640    4641    4643    4642    4644    4645    4647    4646
+8      4648    4649    4651    4650    4652    4653    4655    4654
+8      4656    4657    4659    4658    4660    4661    4663    4662
+8      4664    4665    4667    4666    4668    4669    4671    4670
+8      4672    4673    4675    4674    4676    4677    4679    4678
+8      4680    4681    4683    4682    4684    4685    4687    4686
+8      4688    4689    4691    4690    4692    4693    4695    4694
+8      4696    4697    4699    4698    4700    4701    4703    4702
+8      4704    4705    4707    4706    4708    4709    4711    4710
+8      4712    4713    4715    4714    4716    4717    4719    4718
+8      4720    4721    4723    4722    4724    4725    4727    4726
+8      4728    4729    4731    4730    4732    4733    4735    4734
+8      4736    4737    4739    4738    4740    4741    4743    4742
+8      4744    4745    4747    4746    4748    4749    4751    4750
+8      4752    4753    4755    4754    4756    4757    4759    4758
+8      4760    4761    4763    4762    4764    4765    4767    4766
+8      4768    4769    4771    4770    4772    4773    4775    4774
+8      4776    4777    4779    4778    4780    4781    4783    4782
+8      4784    4785    4787    4786    4788    4789    4791    4790
+8      4792    4793    4795    4794    4796    4797    4799    4798
+8      4800    4801    4803    4802    4804    4805    4807    4806
+8      4808    4809    4811    4810    4812    4813    4815    4814
+8      4816    4817    4819    4818    4820    4821    4823    4822
+8      4824    4825    4827    4826    4828    4829    4831    4830
+8      4832    4833    4835    4834    4836    4837    4839    4838
+8      4840    4841    4843    4842    4844    4845    4847    4846
+8      4848    4849    4851    4850    4852    4853    4855    4854
+8      4856    4857    4859    4858    4860    4861    4863    4862
+8      4864    4865    4867    4866    4868    4869    4871    4870
+8      4872    4873    4875    4874    4876    4877    4879    4878
+8      4880    4881    4883    4882    4884    4885    4887    4886
+8      4888    4889    4891    4890    4892    4893    4895    4894
+8      4896    4897    4899    4898    4900    4901    4903    4902
+8      4904    4905    4907    4906    4908    4909    4911    4910
+8      4912    4913    4915    4914    4916    4917    4919    4918
+8      4920    4921    4923    4922    4924    4925    4927    4926
+8      4928    4929    4931    4930    4932    4933    4935    4934
+8      4936    4937    4939    4938    4940    4941    4943    4942
+8      4944    4945    4947    4946    4948    4949    4951    4950
+8      4952    4953    4955    4954    4956    4957    4959    4958
+8      4960    4961    4963    4962    4964    4965    4967    4966
+8      4968    4969    4971    4970    4972    4973    4975    4974
+8      4976    4977    4979    4978    4980    4981    4983    4982
+8      4984    4985    4987    4986    4988    4989    4991    4990
+8      4992    4993    4995    4994    4996    4997    4999    4998
+8      5000    5001    5003    5002    5004    5005    5007    5006
+8      5008    5009    5011    5010    5012    5013    5015    5014
+8      5016    5017    5019    5018    5020    5021    5023    5022
+8      5024    5025    5027    5026    5028    5029    5031    5030
+8      5032    5033    5035    5034    5036    5037    5039    5038
+8      5040    5041    5043    5042    5044    5045    5047    5046
+8      5048    5049    5051    5050    5052    5053    5055    5054
+8      5056    5057    5059    5058    5060    5061    5063    5062
+8      5064    5065    5067    5066    5068    5069    5071    5070
+8      5072    5073    5075    5074    5076    5077    5079    5078
+8      5080    5081    5083    5082    5084    5085    5087    5086
+8      5088    5089    5091    5090    5092    5093    5095    5094
+8      5096    5097    5099    5098    5100    5101    5103    5102
+8      5104    5105    5107    5106    5108    5109    5111    5110
+8      5112    5113    5115    5114    5116    5117    5119    5118
+8      5120    5121    5123    5122    5124    5125    5127    5126
+8      5128    5129    5131    5130    5132    5133    5135    5134
+8      5136    5137    5139    5138    5140    5141    5143    5142
+8      5144    5145    5147    5146    5148    5149    5151    5150
+8      5152    5153    5155    5154    5156    5157    5159    5158
+8      5160    5161    5163    5162    5164    5165    5167    5166
+8      5168    5169    5171    5170    5172    5173    5175    5174
+8      5176    5177    5179    5178    5180    5181    5183    5182
+8      5184    5185    5187    5186    5188    5189    5191    5190
+8      5192    5193    5195    5194    5196    5197    5199    5198
+8      5200    5201    5203    5202    5204    5205    5207    5206
+8      5208    5209    5211    5210    5212    5213    5215    5214
+8      5216    5217    5219    5218    5220    5221    5223    5222
+8      5224    5225    5227    5226    5228    5229    5231    5230
+8      5232    5233    5235    5234    5236    5237    5239    5238
+8      5240    5241    5243    5242    5244    5245    5247    5246
+8      5248    5249    5251    5250    5252    5253    5255    5254
+8      5256    5257    5259    5258    5260    5261    5263    5262
+8      5264    5265    5267    5266    5268    5269    5271    5270
+8      5272    5273    5275    5274    5276    5277    5279    5278
+8      5280    5281    5283    5282    5284    5285    5287    5286
+8      5288    5289    5291    5290    5292    5293    5295    5294
+8      5296    5297    5299    5298    5300    5301    5303    5302
+8      5304    5305    5307    5306    5308    5309    5311    5310
+8      5312    5313    5315    5314    5316    5317    5319    5318
+8      5320    5321    5323    5322    5324    5325    5327    5326
+8      5328    5329    5331    5330    5332    5333    5335    5334
+8      5336    5337    5339    5338    5340    5341    5343    5342
+8      5344    5345    5347    5346    5348    5349    5351    5350
+8      5352    5353    5355    5354    5356    5357    5359    5358
+8      5360    5361    5363    5362    5364    5365    5367    5366
+8      5368    5369    5371    5370    5372    5373    5375    5374
+8      5376    5377    5379    5378    5380    5381    5383    5382
+8      5384    5385    5387    5386    5388    5389    5391    5390
+8      5392    5393    5395    5394    5396    5397    5399    5398
+8      5400    5401    5403    5402    5404    5405    5407    5406
+8      5408    5409    5411    5410    5412    5413    5415    5414
+8      5416    5417    5419    5418    5420    5421    5423    5422
+8      5424    5425    5427    5426    5428    5429    5431    5430
+8      5432    5433    5435    5434    5436    5437    5439    5438
+8      5440    5441    5443    5442    5444    5445    5447    5446
+8      5448    5449    5451    5450    5452    5453    5455    5454
+8      5456    5457    5459    5458    5460    5461    5463    5462
+8      5464    5465    5467    5466    5468    5469    5471    5470
+8      5472    5473    5475    5474    5476    5477    5479    5478
+8      5480    5481    5483    5482    5484    5485    5487    5486
+8      5488    5489    5491    5490    5492    5493    5495    5494
+8      5496    5497    5499    5498    5500    5501    5503    5502
+8      5504    5505    5507    5506    5508    5509    5511    5510
+8      5512    5513    5515    5514    5516    5517    5519    5518
+8      5520    5521    5523    5522    5524    5525    5527    5526
+8      5528    5529    5531    5530    5532    5533    5535    5534
+8      5536    5537    5539    5538    5540    5541    5543    5542
+8      5544    5545    5547    5546    5548    5549    5551    5550
+8      5552    5553    5555    5554    5556    5557    5559    5558
+8      5560    5561    5563    5562    5564    5565    5567    5566
+8      5568    5569    5571    5570    5572    5573    5575    5574
+8      5576    5577    5579    5578    5580    5581    5583    5582
+8      5584    5585    5587    5586    5588    5589    5591    5590
+8      5592    5593    5595    5594    5596    5597    5599    5598
+8      5600    5601    5603    5602    5604    5605    5607    5606
+8      5608    5609    5611    5610    5612    5613    5615    5614
+8      5616    5617    5619    5618    5620    5621    5623    5622
+8      5624    5625    5627    5626    5628    5629    5631    5630
+8      5632    5633    5635    5634    5636    5637    5639    5638
+8      5640    5641    5643    5642    5644    5645    5647    5646
+8      5648    5649    5651    5650    5652    5653    5655    5654
+8      5656    5657    5659    5658    5660    5661    5663    5662
+8      5664    5665    5667    5666    5668    5669    5671    5670
+8      5672    5673    5675    5674    5676    5677    5679    5678
+8      5680    5681    5683    5682    5684    5685    5687    5686
+8      5688    5689    5691    5690    5692    5693    5695    5694
+8      5696    5697    5699    5698    5700    5701    5703    5702
+8      5704    5705    5707    5706    5708    5709    5711    5710
+8      5712    5713    5715    5714    5716    5717    5719    5718
+8      5720    5721    5723    5722    5724    5725    5727    5726
+8      5728    5729    5731    5730    5732    5733    5735    5734
+8      5736    5737    5739    5738    5740    5741    5743    5742
+8      5744    5745    5747    5746    5748    5749    5751    5750
+8      5752    5753    5755    5754    5756    5757    5759    5758
+8      5760    5761    5763    5762    5764    5765    5767    5766
+8      5768    5769    5771    5770    5772    5773    5775    5774
+8      5776    5777    5779    5778    5780    5781    5783    5782
+8      5784    5785    5787    5786    5788    5789    5791    5790
+8      5792    5793    5795    5794    5796    5797    5799    5798
+8      5800    5801    5803    5802    5804    5805    5807    5806
+8      5808    5809    5811    5810    5812    5813    5815    5814
+8      5816    5817    5819    5818    5820    5821    5823    5822
+8      5824    5825    5827    5826    5828    5829    5831    5830
+8      5832    5833    5835    5834    5836    5837    5839    5838
+8      5840    5841    5843    5842    5844    5845    5847    5846
+8      5848    5849    5851    5850    5852    5853    5855    5854
+8      5856    5857    5859    5858    5860    5861    5863    5862
+8      5864    5865    5867    5866    5868    5869    5871    5870
+8      5872    5873    5875    5874    5876    5877    5879    5878
+8      5880    5881    5883    5882    5884    5885    5887    5886
+
+CELL_TYPES 736
+ 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+POINT_DATA 5888
+SCALARS partitions double 1
+LOOKUP_TABLE default
+4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 3.00000 
index c961df819274ef0b5dbe0e787fcc48ec3230c70b..ef37ca2046a016c9758b4900e5b45f7f451029db 100644 (file)
@@ -1,7 +1,7 @@
 // ---------------------------------------------------------------------
 // $Id$
 //
-// Copyright (C) 2004 - 2013 by the deal.II authors
+// Copyright (C) 2004 - 2014 by the deal.II authors
 //
 // This file is part of the deal.II library.
 //
@@ -25,6 +25,7 @@
 #include <deal.II/base/exceptions.h>
 #include <deal.II/base/utilities.h>
 #include <deal.II/base/thread_management.h>
+#include <deal.II/base/multithread_info.h>
 #include <cmath>
 #include <cstdlib>
 #include <fstream>
 #include <iomanip>
 
 
+// implicitly use the deal.II namespace everywhere, without us having to say
+// so in each and every testcase
+using namespace dealii;
+
+
+// ------------------------------ Utility functions used in tests -----------------------
+
 // Cygwin has a different implementation for rand() which causes many tests to fail.
 // This here is a reimplementation that gives the same sequence of numbers as a program
 // that uses rand() on a typical linux machine.
@@ -89,7 +97,7 @@ void srand(int seed) throw()
 
 // given the name of a file, copy it to deallog
 // and then delete it
-inline void cat_file(const char *filename)
+void cat_file(const char *filename)
 {
   std::ifstream in(filename);
   Assert (in, dealii::ExcIO());
@@ -106,47 +114,104 @@ inline void cat_file(const char *filename)
 }
 
 
+/*
+ * Some tests (notably base/thread*, base/task*) create output that
+ * comes out in random order. To make the output of these tests comparable,
+ * we need to sort them.
+ *
+ * This function does just that with the file given. All streams writing
+ * to this should be closed when calling this function.
+ */
+void sort_file_contents (const std::string &filename)
+{
+  int error = std::system ((std::string ("LC_ALL=C sort ") + filename + " -o " + filename).c_str());
+  Assert (error == 0, ExcInternalError());
+}
+
+
+
+/*
+ * Replace all occurences of ' &' by '& ' from the given file to hopefully be
+ * more compiler independent with respect to __PRETTY_FUNCTION__
+ *
+ * Also, while GCC prepends the name by "virtual " if the function is virtual,
+ * Intel's ICC does not do that, so filter that out as well.
+ */
+void unify_pretty_function (const std::string &filename)
+{
+  int error = std::system ((std::string ("sed -i -e 's/ \\&/ \\& /g' -e 's/ & ,/\\&,/g' -e 's/ \\& )/\\&)/g' -e 's/ \\& /\\& /g' -e 's/^DEAL::virtual /DEAL::/g' ") + filename).c_str());
+
+  Assert (error == 0, ExcInternalError());
+}
+
+
+// ------------------------------ Functions used in initializing subsystems -------------------
+
+
+/*
+ * If we run 64 tests at the same time on a 64-core system, and
+ * each of them runs 64 threads, then we get astronomical loads.
+ * Limit concurrency to a fixed (small) number of threads, independent
+ * of the core count.
+ *
+ * Note that we can't do this if we run in MPI mode because then
+ * MPI_InitFinalize already calls this function. Since every test
+ * calls MPI_InitFinalize itself, we can't adjust the thread count
+ * for this here.
+ */
+#ifndef DEAL_II_WITH_MPI
+struct LimitConcurrency
+{
+  LimitConcurrency ()
+  {
+    multithread_info.set_thread_limit (5);
+  }
+} limit_concurrency;
+#endif
+
+
 
 #ifdef DEAL_II_WITH_PETSC
 #include <petscsys.h>
 
-inline void check_petsc_allocations()
+namespace
 {
-  PetscStageLog stageLog;
-  PetscLogGetStageLog(&stageLog);
+  void check_petsc_allocations()
+  {
+    PetscStageLog stageLog;
+    PetscLogGetStageLog(&stageLog);
 
-  // I don't quite understand petsc and it looks like stageLog->stageInfo->classLog->classInfo[i].id
-  // is always -1, so we look it up in stageLog->classLog, make sure it has the same number of entries:
-  Assert(stageLog->stageInfo->classLog->numClasses == stageLog->classLog->numClasses, dealii::ExcInternalError());
+    // I don't quite understand petsc and it looks like
+    // stageLog->stageInfo->classLog->classInfo[i].id is always -1, so we look
+    // it up in stageLog->classLog, make sure it has the same number of entries:
+    Assert(stageLog->stageInfo->classLog->numClasses == stageLog->classLog->numClasses,
+          dealii::ExcInternalError());
 
-  bool errors = false;
-  for (int i=0;i<stageLog->stageInfo->classLog->numClasses;++i)
-    {
-      if (stageLog->stageInfo->classLog->classInfo[i].destructions !=
-          stageLog->stageInfo->classLog->classInfo[i].creations)
-        {
-          errors = true;
-          std::cerr << "ERROR: PETSc objects leaking of type '"
-                    << stageLog->classLog->classInfo[i].name << "'"
-                    << " with "
-                    << stageLog->stageInfo->classLog->classInfo[i].creations
-                    << " creations and only "
-                    << stageLog->stageInfo->classLog->classInfo[i].destructions
-                    << " destructions." << std::endl;
-        }
-    }
+    bool errors = false;
+    for (int i=0;i<stageLog->stageInfo->classLog->numClasses;++i)
+      {
+       if (stageLog->stageInfo->classLog->classInfo[i].destructions !=
+           stageLog->stageInfo->classLog->classInfo[i].creations)
+         {
+           errors = true;
+           std::cerr << "ERROR: PETSc objects leaking of type '"
+                     << stageLog->classLog->classInfo[i].name << "'"
+                     << " with "
+                     << stageLog->stageInfo->classLog->classInfo[i].creations
+                     << " creations and only "
+                     << stageLog->stageInfo->classLog->classInfo[i].destructions
+                     << " destructions." << std::endl;
+         }
+      }
 
-  if (errors)
-    throw dealii::ExcMessage("PETSc memory leak");
+    if (errors)
+      throw dealii::ExcMessage("PETSc memory leak");
+  }
 }
 #endif
 
 
-// implicitly use the deal.II namespace everywhere, without us having to say
-// so in each and every testcase
-using namespace dealii;
-
-// Function for initialize deallog. Normally, it should be called at
+// Function to initialize deallog. Normally, it should be called at
 // the beginning of main() like
 //
 // initlog();
@@ -157,7 +222,6 @@ using namespace dealii;
 std::string deallogname;
 std::ofstream deallogfile;
 
-inline
 void
 initlog(bool console=false)
 {
@@ -271,40 +335,55 @@ struct MPILogInitAll
 
 
 
-/*
- * Some tests (notably base/thread*, base/task*) create output that
- * comes out in random order. To make the output of these tests comparable,
- * we need to sort them.
- *
- * This function does just that with the file given. All streams writing
- * to this should be closed when calling this function.
- */
-void sort_file_contents (const std::string &filename)
+/* Override the tbb assertion handler in order to print a stacktrace:*/
+
+#ifdef TBB_DO_ASSERT
+
+#include <tbb/tbb_stddef.h>
+
+DEAL_II_NAMESPACE_OPEN
+namespace deal_II_exceptions
 {
-  int error = std::system ((std::string ("LC_ALL=C sort ") + filename + " -o " + filename).c_str());
-  Assert (error == 0, ExcInternalError());
+  extern bool abort_on_exception;
+  extern bool show_stacktrace;
 }
+DEAL_II_NAMESPACE_CLOSE
 
 
-
-/*
- * Replace all occurences of ' &' by '& ' from the given file to hopefully be
- * more compiler independent with respect to __PRETTY_FUNCTION__
- *
- * Also, while GCC prepends the name by "virtual " if the function is virtual,
- * Intel's ICC does not do that, so filter that out as well.
- */
-void unify_pretty_function (const std::string &filename)
+void new_tbb_assertion_handler(const char *file, int line, const char *expr,
+                               const char *comment)
 {
-  int error = std::system ((std::string ("sed -i -e 's/ \\&/ \\& /g' -e 's/ & ,/\\&,/g' -e 's/ \\& )/\\&)/g' -e 's/ \\& /\\& /g' -e 's/^DEAL::virtual /DEAL::/g' ") + filename).c_str());
+  // Print out the original assertion message
+  std::cerr << "TBB assertion:" << std::endl;
+  std::cerr << "Assertion " << expr << " failed on line " << line << " of file "
+            << file << std::endl;
+  std::cerr << "Detailed description: " << comment << std::endl;
 
-  Assert (error == 0, ExcInternalError());
+  // Reenable abort and stacktraces:
+  deal_II_exceptions::abort_on_exception = true;
+  deal_II_exceptions::show_stacktrace = true;
+
+  // And abort with a deal.II exception:
+  Assert(false, ExcMessage("TBB Exception, see above"));
 }
 
+struct SetTBBAssertionHandler
+{
+  SetTBBAssertionHandler ()
+  {
+    ::tbb::set_assertion_handler(new_tbb_assertion_handler);
+  }
+} set_tbb_assertion_handler;
+
+#endif /*TBB_DO_ASSERT*/
+
+
+// ------------------------------ Adjust global variables in deal.II -----------------------
+
 
 DEAL_II_NAMESPACE_OPEN
 /*
- * Now, change some global behaviour of deal.II and supporting libraries:
+ * Now, change some global behavior of deal.II and supporting libraries:
  */
 
 /* Disable stack traces: */
@@ -343,47 +422,6 @@ struct SetGrainSizes
   }
 } set_grain_sizes;
 
-
-/* Override the tbb assertion handler in order to print a stacktrace:*/
-
-#ifdef TBB_DO_ASSERT
-
-#include <tbb/tbb_stddef.h>
-
-namespace deal_II_exceptions
-{
-  extern bool abort_on_exception;
-  extern bool show_stacktrace;
-}
-
-void new_tbb_assertion_handler(const char *file, int line, const char *expr,
-                               const char *comment)
-{
-  // Print out the original assertion message
-  std::cerr << "TBB assertion:" << std::endl;
-  std::cerr << "Assertion " << expr << " failed on line " << line << " of file "
-            << file << std::endl;
-  std::cerr << "Detailed description: " << comment << std::endl;
-
-  // Reenable abort and stacktraces:
-  deal_II_exceptions::abort_on_exception = true;
-  deal_II_exceptions::show_stacktrace = true;
-
-  // And abort with a deal.II exception:
-  Assert(false, ExcMessage("TBB Exception, see above"));
-}
-
-struct SetTBBAssertionHandler
-{
-  SetTBBAssertionHandler ()
-  {
-    ::tbb::set_assertion_handler(new_tbb_assertion_handler);
-  }
-} set_tbb_assertion_handler;
-
-#endif /*TBB_DO_ASSERT*/
-
-
 DEAL_II_NAMESPACE_CLOSE
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.